[
  {
    "path": ".editorconfig",
    "content": "; This file is for unifying the coding style for different editors and IDEs.\n; More information at https://editorconfig.org\n\nroot = true\n\n[*]\ncharset = utf-8\nindent_size = 4\nindent_style = space\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[*.md]\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": ".gitignore",
    "content": "\n"
  },
  {
    "path": ".htaccess",
    "content": "Options +FollowSymLinks\nRewriteEngine on\n\n<IfModule mod_rewrite.c>\n RewriteCond %{REQUEST_FILENAME} !-f\n RewriteCond %{REQUEST_FILENAME} !-d\n RewriteRule ^page/([a-zA-Z0-9]+)/? pages.php?page=$1 [L]\n RewriteRule ^archive archive.php [L] \n RewriteRule ^profile profile.php [L] \n RewriteRule ^user/([^/]+)/?$ user.php?user=$1 [L]\n RewriteRule ^contact contact.php [L]\n RewriteRule ^download/(.*)$  paste.php?download&id=$1 [L]\n RewriteRule ^raw/(.*)$  paste.php?raw&id=$1 [L]\n RewriteRule ^embed/(.*)$  paste.php?embed&id=$1 [L]\n</IfModule>\n\n<IfModule mod_rewrite.c>\n RewriteCond %{REQUEST_FILENAME} !-f\n RewriteCond %{REQUEST_FILENAME} !-d\n RewriteRule ^(.*)$  paste.php?id=$1 [L] \n</IfModule>\n"
  },
  {
    "path": "README.md",
    "content": "Paste 3.1\n=======\nIn progress: 3.2\n* improvements\n* integration of https://github.com/scrivo/highlight.php\n* (geshi or highlight in config.php)\n* theme picker if highlight.php enabled \n* improved the layout for paste views, fixed some line number css bugs\n* added a \"we has cookies\" footer/just comment it out in /theme/default/footer.php if not required\n* live demo: https://paste.boxlabs.uk\n\nNew version 3.1\n* Account deletion\n* reCAPTCHA v3 with server side integration and token handling (and v2 support)\n* \tSelect reCAPTCHA in admin/configuration.php\n*\tSelect v2 or v3 depending on your keys\n* \tDefault score can be set in /includes/recaptcha.php but 0.8 will catch 99% of bots, balancing false negatives.\n* \tPastes and user account login/register are gated, with v3 users are no longer required to enter a captcha.\n* If signed up with OAuth2, ability to change username once in /profile.php - Support more platforms in future.\n* Search feature, archive/pagination\n* Improved admin panel with Bootstrap 5\n* Ability to add/remove admins\n* Fixed SMTP for user account emails/verification - Plain SMTP server or use OAuth2 for Google Mail\n* CSRF session tokens, improve security, stay logged in for 30 days with \"Remember Me\"\n* PHP version must be 8.1 or above - time to drag Paste into the future. \n* Clean up the codebase, remove obsolete functions and added more comments\n* /tmp folder has gone bye bye - improved admin panel statistics, daily unique paste views\n\nPrevious version - 3.0\n* PHP 8.4> compatibility\n* Replace mysqli with pdo\n* New default theme, upgrade paste2 theme from bootstrap 3 to 5\n* Dark mode\n* Admin panel changes\n* Google OAuth2 SMTP/User accounts\n* Security and bug fixes \n* Improved installer, checks for existing database and updates schema as appropriate.\n* Improved database schema\n* Update Parsedown for Markdown\n* All pastes encrypted in the database with AES-256 by default\n\n[![Download PASTE](https://a.fsdn.com/con/app/sf-download-button)](https://sourceforge.net/projects/phpaste/files/latest/download)\n\n[![Download PASTE](https://img.shields.io/sourceforge/dw/phpaste.svg)](https://sourceforge.net/projects/phpaste/files/latest/download)\n[![Download PASTE](https://img.shields.io/sourceforge/dt/phpaste.svg)](https://sourceforge.net/projects/phpaste/files/latest/download)\n\nPaste is forked from the original source pastebin.com used before it was bought.\nThe original source is available from the previous owner's **[GitHub repository](https://github.com/lordelph/pastebin)**\n\nA public version can be found **[here](https://paste.boxlabs.uk/)**\n\n<table style=\"padding:10px\">\n  <tr>\n    <td><img src=\"https://i.imgur.com/Yrjl8w1.png\" align=\"left\" alt=\"1\" width = 279px height = 496px></td>\n    <td><img src=\"https://i.imgur.com/VleCHjh.png\" alt=\"2\" width = 288px height = 512px></td>  \n  </tr>\n</table>\n\nIRC: If you would like support or want to contribute to Paste connect to irc.collectiveirc.net in channel #PASTE\n\nAny bugs can be reported at:\nhttps://github.com/boxlabss/PASTE/issues/new\n\nRequirements\n===\n - PHP 8.1 or higher with `pdo_mysql`, `openssl`, and `curl` extensions\n  - MySQL or MariaDB\n  - Composer for dependency management\n  - Web server (e.g., Apache/Nginx) with HTTPS enabled (if OAuth enabled as below)\n\nSee docs/CHANGELOG\n---\nInstall\n===\n* Create a database for PASTE.\n* Upload all files to a webfolder\n* Point your browser to http(s)://example.com/install\n* Input some settings, DELETE the install folder and you're ready to go.\n* To configure OAuth, first you need to use composer to install phpmailer and google api/oauth2 client\n  - Install Composer dependencies:\n    ```bash\n    cd /oauth\n    composer require google/apiclient:^2.12 league/oauth2-client:^2.7\n    cd /mail\n    composer require phpmailer/phpmailer:^6.9\n    ```\n   - Enter database details (host, name, user, password) and OAuth settings (enable or disable Google/Facebook).\n   - This generates `config.php` with dynamic `G_REDIRECT_URI` based on your domain.\n   \n **Set Up Google OAuth for User Logins**:\n   - Go to [Google Cloud Console](https://console.developers.google.com).\n   - Create a project and enable the Google+ API.\n   - Create OAuth 2.0 credentials (Web application).\n   - Set the Authorized Redirect URI to: `<baseurl>oauth/google.php` (e.g., `https://yourdomain.com/oauth/google.php`), where `<baseurl>` is from `site_info.baseurl`.\n   - Update `config.php` with:\n     ```php\n     define('G_CLIENT_ID', 'your_client_id');\n     define('G_CLIENT_SECRET', 'your_client_secret');\n     ```\n   - Ensure `enablegoog` is set to `yes` in `config.php`.\n **Set Up Gmail SMTP with OAuth2**:\n   - In [Google Cloud Console](https://console.developers.google.com), enable the Gmail API.\n   - Create or reuse OAuth 2.0 credentials.\n   - Set the Authorized Redirect URI to: `<baseurl>oauth/google_smtp.php` (e.g., `https://yourdomain.com/oauth/google_smtp.php`), where `<baseurl>` is from `site_info.baseurl`.\n   - Log in to `/admin/configuration.php` as an admin.\n   - Enter the Client ID and Client Secret under \"Google OAuth 2.0 Setup for Gmail SMTP\".\n   - Click \"Authorize Gmail SMTP\" to authenticate and save the refresh token in the `mail` table.\n   - Configure SMTP settings (host: `smtp.gmail.com`, port: `587`, socket: `tls`, auth: `true`, protocol: `2`).\n\nDevelopment setup\n===\n* Set up git\n* Fork this repository\n* Create a database for PASTE.\n* Check out the current master branch of your fork\n* Point your browser to http(s)://example.com/install and follow the instructions on screen or import docs/paste.mysqlschema.sql into your database and copy docs/config.example.php to config.php and edit\n\nNow you can start coding and send in pull requests.\n\n---\n\nUpgrading\n===\n3.0/3.1 schema changes\nrun the installer to update database\n(backup first)\n\n\n* 2.1 to 2.2\nno changes to database\n\n* 2.0 to 2.1\n\nInsert the schema changes to your database using the CLI:\n```\nmysql -uuser -ppassword databasename < upgrade/2.0-to-2.1.sql\n```\nor upload & import upgrade/2.0-to-2.1.sql using phpMyAdmin\n\n* 1.9 to 2.0\n\nRun upgrade/1.9-to.2.0.php\n\n---\nClean URLs\n===\nSet mod_rewrite in config.php to 1\n\nFor Apache, just use .htaccess\n\nFor Nginx, use the example config in **[docs/nginx.example.conf](https://github.com/boxlabss/PASTE/blob/HEAD/docs/nginx.example.conf)**\n\n---\nChangelog\n===\nSee **[docs/CHANGELOG.md](https://github.com/boxlabss/PASTE/blob/HEAD/docs/CHANGELOG.md)**\n\n---\nPaste now supports pastes of upto 4GB in size, and this is configurable in config.php\n\nHowever, this relies on the value of post_max_size in your PHP configuration file.\n\n```php\n// Max paste size in MB. This value should always be below the value of\n// post_max_size in your PHP configuration settings (php.ini) or empty errors will occur.\n// The value we got on installation of Paste was: post_max_size = 1G\n// Otherwise, the maximum value that can be set is 4000 (4GB)\n$pastelimit = \"1\"; // 0.5 = 512 kilobytes, 1 = 1MB\n```\n\nEverything else can be configured using the admin panel.\n\n---\n\nCredits\n===\n\n* Paul Dixon for developing **[the original pastebin.com](https://github.com/lordelph/pastebin)**\n* **[Pat O'Brien](https://github.com/poblabs)** for numerous contributions to the project.\n* **[Viktoria Rei Bauer](https://github.com/ToeiRei)** for her contributions to the project.\n* Roberto Rodriguez (roberto.rodriguez.pino[AT]gmail.com) for PostgreSQL support on v1.9.\n\nThe Paste theme was built using Bootstrap 5\n"
  },
  {
    "path": "accountdeleted.php",
    "content": "<?php\r\n/*\r\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\r\n * demo: https://paste.boxlabs.uk/\r\n *\r\n * https://phpaste.sourceforge.io/\r\n *\r\n * This program is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 3\r\n * of the License, or (at your option) any later version.\r\n * \r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License in LICENCE for more details.\r\n */\r\n\r\ndeclare(strict_types=1);\r\n\r\nrequire_once 'includes/session.php';\r\nrequire_once 'config.php';\r\nrequire_once 'includes/functions.php';\r\n\r\n// DB + site info\r\ntry {\r\n    $stmt = $pdo->query(\"SELECT * FROM site_info WHERE id = 1\");\r\n    $site = $stmt->fetch() ?: [];\r\n} catch (Throwable $e) { $site = []; }\r\n\r\n$baseurl   = trim($site['baseurl'] ?? '');\r\n$site_name = trim($site['site_name'] ?? 'Paste');\r\n\r\n// Theme + language\r\ntry {\r\n    $iface = $pdo->query(\"SELECT * FROM interface WHERE id = 1\")->fetch() ?: [];\r\n} catch (Throwable $e) { $iface = []; }\r\n$default_lang  = trim($iface['lang'] ?? 'en.php');\r\n$default_theme = trim($iface['theme'] ?? 'default');\r\nrequire_once(\"langs/$default_lang\");\r\n\r\n// Page title + message (use errors.php to render)\r\n$p_title = $lang['accountdeleted'] ?? 'Account Deleted';\r\n$error   = $lang['goodbyemsg'] ?? 'Your account and all data have been permanently removed.';\r\n\r\n// Render with error theme\r\nrequire_once(\"theme/$default_theme/header.php\");\r\nrequire_once(\"theme/$default_theme/errors.php\");\r\nrequire_once(\"theme/$default_theme/footer.php\");\r\n"
  },
  {
    "path": "admin/admin.php",
    "content": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\nrequire_once('../includes/password.php');\nsession_start();\n\n$ip   = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';\n$date = date('Y-m-d H:i:s');\nrequire_once('../config.php');\n\n// Guard: admin session\nif (!isset($_SESSION['admin_login']) || !isset($_SESSION['admin_id'])) {\n    header(\"Location: index.php\");\n    exit();\n}\n\ntry {\n    $pdo = new PDO(\"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\", $dbuser, $dbpassword, [\n        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,\n        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\n        PDO::ATTR_EMULATE_PREPARES   => false,\n    ]);\n\n    // baseurl for sidebar links\n    $row = $pdo->query(\"SELECT baseurl FROM site_info WHERE id=1\")->fetch();\n    $baseurl = rtrim((string)($row['baseurl'] ?? ''), '/');\n\n    // Validate current admin\n    $st = $pdo->prepare(\"SELECT id,user,pass FROM admin WHERE id=?\");\n    $st->execute([$_SESSION['admin_id']]);\n    $me = $st->fetch();\n    if (!$me || $me['user'] !== $_SESSION['admin_login']) {\n        unset($_SESSION['admin_login'], $_SESSION['admin_id']);\n        header(\"Location: \" . htmlspecialchars($baseurl . '/admin/index.php', ENT_QUOTES, 'UTF-8'));\n        exit();\n    }\n    $current_admin_id = (int)$me['id'];\n    $adminid          = (string)$me['user'];\n    $password_hash    = (string)$me['pass'];\n\n    // Logout\n    if (isset($_GET['logout'])) {\n        $_SESSION = [];\n        session_destroy();\n        header(\"Location: \" . htmlspecialchars($baseurl . '/admin/index.php', ENT_QUOTES, 'UTF-8'));\n        exit();\n    }\n\n    // Log admin activity\n    $st = $pdo->query(\"SELECT MAX(id) last_id FROM admin_history\");\n    $last_id = $st->fetch()['last_id'] ?? null;\n    $last_ip = $last_date = null;\n    if ($last_id) {\n        $st = $pdo->prepare(\"SELECT ip,last_date FROM admin_history WHERE id=?\");\n        $st->execute([$last_id]);\n        $h = $st->fetch();\n        $last_ip   = $h['ip'] ?? null;\n        $last_date = $h['last_date'] ?? null;\n    }\n    if ($last_ip !== $ip || $last_date !== $date) {\n        $st = $pdo->prepare(\"INSERT INTO admin_history(last_date,ip) VALUES(?,?)\");\n        $st->execute([$date,$ip]);\n    }\n\n    // Messages\n    $msg = '';\n    $msg_type = 'info';\n\n    // Update my account\n    if ($_SERVER['REQUEST_METHOD']==='POST' && isset($_POST['update_admin'])) {\n        $new_user = trim((string)($_POST['adminid'] ?? ''));\n        $new_pass = (string)($_POST['password'] ?? '');\n\n        if ($new_user === '' || strlen($new_user) < 3 || strlen($new_user) > 50 || !preg_match('/^[a-zA-Z0-9]+$/', $new_user)) {\n            $msg = 'Error: Username must be 3–50 alphanumeric characters.'; $msg_type = 'danger';\n        } elseif ($new_pass !== '' && strlen($new_pass) < 8) {\n            $msg = 'Error: Password must be at least 8 characters.'; $msg_type = 'danger';\n        } else {\n            // unique username (except me)\n            $st = $pdo->prepare(\"SELECT COUNT(*) c FROM admin WHERE user=? AND id<>?\");\n            $st->execute([$new_user, $current_admin_id]);\n            if ((int)$st->fetch()['c'] > 0) {\n                $msg = 'Error: Username already exists.'; $msg_type = 'danger';\n            } else {\n                $password_hash_to_store = $password_hash;\n                if ($new_pass !== '') $password_hash_to_store = password_hash($new_pass, PASSWORD_DEFAULT);\n                $st = $pdo->prepare(\"UPDATE admin SET user=?, pass=? WHERE id=?\");\n                $st->execute([$new_user, $password_hash_to_store, $current_admin_id]);\n                $_SESSION['admin_login'] = $new_user;\n                $adminid = $new_user;\n                $password_hash = $password_hash_to_store;\n                $msg = 'Account details updated.'; $msg_type = 'success';\n            }\n        }\n    }\n\n    // Add admin\n    if ($_SERVER['REQUEST_METHOD']==='POST' && isset($_POST['add_admin'])) {\n        $new_username = trim((string)($_POST['new_username'] ?? ''));\n        $new_password = (string)($_POST['new_password'] ?? '');\n\n        if ($new_username === '' || $new_password === '') {\n            $msg = 'Error: Username and password are required.'; $msg_type = 'danger';\n        } elseif (strlen($new_username) < 3 || strlen($new_username) > 50 || !preg_match('/^[a-zA-Z0-9]+$/', $new_username)) {\n            $msg = 'Error: Username must be 3–50 alphanumeric characters.'; $msg_type = 'danger';\n        } elseif (strlen($new_password) < 8) {\n            $msg = 'Error: Password must be at least 8 characters.'; $msg_type = 'danger';\n        } else {\n            $st = $pdo->prepare(\"SELECT COUNT(*) c FROM admin WHERE user=?\");\n            $st->execute([$new_username]);\n            if ((int)$st->fetch()['c'] > 0) {\n                $msg = 'Error: Username already exists.'; $msg_type = 'danger';\n            } else {\n                $hash = password_hash($new_password, PASSWORD_DEFAULT);\n                $st = $pdo->prepare(\"INSERT INTO admin (user, pass) VALUES (?, ?)\");\n                $st->execute([$new_username, $hash]);\n                $msg = 'New admin added successfully.'; $msg_type = 'success';\n            }\n        }\n    }\n\n    // Delete admin (server-side guards: cannot delete id=1; cannot delete current admin)\n    if (isset($_GET['delete_admin']) && ctype_digit($_GET['delete_admin'])) {\n        $del_id = (int)$_GET['delete_admin'];\n        if ($del_id === 1) {\n            $msg = 'Error: You cannot delete the primary admin (ID 1).'; $msg_type = 'danger';\n        } elseif ($del_id === $current_admin_id) {\n            $msg = 'Error: You cannot delete your own account while logged in.'; $msg_type = 'danger';\n        } else {\n            $st = $pdo->prepare(\"DELETE FROM admin WHERE id=?\");\n            $st->execute([$del_id]);\n            $msg = 'Admin deleted successfully.'; $msg_type = 'success';\n        }\n    }\n\n    // Fetch admins\n    $admins = $pdo->query(\"SELECT id,user FROM admin ORDER BY id\")->fetchAll();\n\n    // History pagination\n    $rec_limit = 10;\n    $page   = isset($_GET['page']) ? max(1, (int)$_GET['page']) : 1;\n    $offset = ($page - 1) * $rec_limit;\n\n    $rec_count = (int)$pdo->query(\"SELECT COUNT(*) FROM admin_history\")->fetchColumn();\n    $total_pages = max(1, (int)ceil($rec_count / $rec_limit));\n\n    $st = $pdo->prepare(\"SELECT last_date,ip FROM admin_history ORDER BY id DESC LIMIT :lim OFFSET :off\");\n    $st->bindValue(':lim', $rec_limit, PDO::PARAM_INT);\n    $st->bindValue(':off', $offset, PDO::PARAM_INT);\n    $st->execute();\n    $history_rows = $st->fetchAll();\n\n} catch (PDOException $e) {\n    die(\"Unable to connect to database: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));\n}\n?>\n<!DOCTYPE html>\n<html lang=\"en\" data-bs-theme=\"dark\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<title>Paste - Admin Account</title>\n<link rel=\"shortcut icon\" href=\"favicon.ico\">\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\" rel=\"stylesheet\">\n<style>\n  :root{\n    --bg:#0f1115; --card:#141821; --muted:#7f8da3; --border:#1f2633; --accent:#0d6efd;\n  }\n  body{background:var(--bg);color:#fff;}\n  .navbar{background:#121826!important;position:sticky;top:0;z-index:1030}\n  .btn-soft{background:#101521;border:1px solid var(--border);color:#dbe5f5}\n  .btn-soft:hover{background:#0e1422;color:#fff}\n  .sidebar-desktop{position:sticky; top:1rem;background:#121826;border:1px solid var(--border);border-radius:12px;padding:12px}\n  .sidebar-desktop .list-group-item{background:transparent;color:#dbe5f5;border:0;border-radius:10px;padding:.65rem .8rem}\n  .sidebar-desktop .list-group-item:hover{background:#0e1422}\n  .sidebar-desktop .list-group-item.active{background:#0d6efd;color:#fff}\n  .card{background:var(--card);border:1px solid var(--border);border-radius:12px}\n  .form-control,.form-select{background:#0e1422;border-color:var(--border);color:#e6edf3}\n  .form-control:focus,.form-select:focus{border-color:var(--accent);box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}\n  .table{color:#e6edf3}\n  .table thead th{background:#101521;color:#c6d4f0;border-color:var(--border)}\n  .table td,.table th{border-color:var(--border)}\n  .pagination .page-link{color:#c6d4f0;background:#101521;border-color:var(--border)}\n  .pagination .page-item.active .page-link{background:#0d6efd;border-color:#0d6efd}\n  .offcanvas-nav{width:280px;background:#0f1523;color:#dbe5f5}\n  .offcanvas-nav .list-group-item{background:transparent;border:0;color:#dbe5f5}\n  .offcanvas-nav .list-group-item:hover{background:#0e1422}\n</style>\n<script>\ndocument.addEventListener('DOMContentLoaded', () => {\n  document.querySelectorAll('.delete-admin').forEach(a => {\n    a.addEventListener('click', e => {\n      e.preventDefault();\n      const id = a.getAttribute('data-id');\n      if (confirm(`Delete admin ID ${id}? This cannot be undone.`)) {\n        window.location.href = a.href;\n      }\n    });\n  });\n});\n</script>\n</head>\n<body>\n\n<nav class=\"navbar navbar-expand-lg navbar-dark\">\n  <div class=\"container-fluid\">\n    <div class=\"d-flex align-items-center gap-2\">\n      <button class=\"btn btn-soft d-lg-none\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#navOffcanvas\" aria-controls=\"navOffcanvas\">\n        <i class=\"bi bi-list\"></i>\n      </button>\n      <a class=\"navbar-brand\" href=\"../\">Paste</a>\n    </div>\n    <button class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNav\">\n      <span class=\"navbar-toggler-icon\"></span>\n    </button>\n    <div class=\"collapse navbar-collapse justify-content-end\" id=\"navbarNav\">\n      <ul class=\"navbar-nav\">\n        <li class=\"nav-item dropdown\">\n          <a class=\"nav-link dropdown-toggle\" href=\"#\" data-bs-toggle=\"dropdown\">\n            <?php echo htmlspecialchars($_SESSION['admin_login']); ?>\n          </a>\n          <ul class=\"dropdown-menu dropdown-menu-end\">\n            <li><a class=\"dropdown-item\" href=\"admin.php\">Settings</a></li>\n            <li><a class=\"dropdown-item\" href=\"?logout\">Logout</a></li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n  </div>\n</nav>\n\n<!-- Mobile offcanvas nav -->\n<div class=\"offcanvas offcanvas-start offcanvas-nav\" tabindex=\"-1\" id=\"navOffcanvas\">\n  <div class=\"offcanvas-header\">\n    <h5 class=\"offcanvas-title\">Admin Menu</h5>\n    <button class=\"btn-close btn-close-white\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\"></button>\n  </div>\n  <div class=\"offcanvas-body\">\n    <div class=\"list-group\">\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n      <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n    </div>\n  </div>\n</div>\n\n<div class=\"container-fluid my-2\">\n  <div class=\"row g-2\">\n    <!-- Desktop sidebar -->\n    <div class=\"col-lg-2 d-none d-lg-block\">\n      <div class=\"sidebar-desktop\">\n        <div class=\"list-group\">\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n          <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"col-lg-10\">\n      <?php if (!empty($msg)): ?>\n        <div class=\"alert alert-<?php echo htmlspecialchars($msg_type); ?> alert-dismissible fade show\" role=\"alert\">\n          <?php echo $msg; ?>\n          <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\n        </div>\n      <?php endif; ?>\n\n      <div class=\"card\">\n        <div class=\"card-body\">\n          <ul class=\"nav nav-tabs mb-3\" id=\"adminTabs\" role=\"tablist\">\n            <li class=\"nav-item\" role=\"presentation\">\n              <button class=\"nav-link active\" id=\"settings-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#settings\" type=\"button\" role=\"tab\" aria-controls=\"settings\" aria-selected=\"true\">Settings</button>\n            </li>\n            <li class=\"nav-item\" role=\"presentation\">\n              <button class=\"nav-link\" id=\"manage_admins-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#manage_admins\" type=\"button\" role=\"tab\" aria-controls=\"manage_admins\" aria-selected=\"false\">Manage Admins</button>\n            </li>\n            <li class=\"nav-item\" role=\"presentation\">\n              <button class=\"nav-link\" id=\"logs-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#logs\" type=\"button\" role=\"tab\" aria-controls=\"logs\" aria-selected=\"false\">Login History</button>\n            </li>\n          </ul>\n\n          <div class=\"tab-content\">\n            <!-- My Settings -->\n            <div class=\"tab-pane fade show active\" id=\"settings\" role=\"tabpanel\" aria-labelledby=\"settings-tab\">\n              <h4 class=\"card-title\">My Settings</h4>\n              <form action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>\" method=\"POST\" id=\"admin-form\" class=\"row g-2\">\n                <input type=\"hidden\" name=\"update_admin\" value=\"1\">\n                <div class=\"col-md-6\">\n                  <label for=\"adminid\" class=\"form-label\">Username</label>\n                  <input type=\"text\" class=\"form-control\" id=\"adminid\" name=\"adminid\"\n                         value=\"<?php echo htmlspecialchars($adminid); ?>\"\n                         placeholder=\"3–50 alphanumeric\" required>\n                </div>\n                <div class=\"col-md-6\">\n                  <label for=\"password\" class=\"form-label\">Password</label>\n                  <input type=\"password\" class=\"form-control\" id=\"password\" name=\"password\"\n                         placeholder=\"Leave blank to keep current\">\n                </div>\n                <div class=\"col-12\">\n                  <button type=\"submit\" class=\"btn btn-primary\"><i class=\"bi bi-save\"></i> Save</button>\n                </div>\n              </form>\n            </div>\n\n            <!-- Manage Admins -->\n            <div class=\"tab-pane fade\" id=\"manage_admins\" role=\"tabpanel\" aria-labelledby=\"manage_admins-tab\">\n              <h4 class=\"card-title\">Manage Admins</h4>\n\n              <h5 class=\"mt-2\">Add New Admin</h5>\n              <form action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>\" method=\"POST\" id=\"add-admin-form\" class=\"row g-2\">\n                <input type=\"hidden\" name=\"add_admin\" value=\"1\">\n                <div class=\"col-md-6\">\n                  <label for=\"new_username\" class=\"form-label\">Username</label>\n                  <input type=\"text\" class=\"form-control\" id=\"new_username\" name=\"new_username\" placeholder=\"3–50 alphanumeric\" required>\n                </div>\n                <div class=\"col-md-6\">\n                  <label for=\"new_password\" class=\"form-label\">Password</label>\n                  <input type=\"password\" class=\"form-control\" id=\"new_password\" name=\"new_password\" placeholder=\"Min 8 characters\" required>\n                </div>\n                <div class=\"col-12\">\n                  <button type=\"submit\" class=\"btn btn-primary\"><i class=\"bi bi-plus-circle\"></i> Add Admin</button>\n                </div>\n              </form>\n\n              <h5 class=\"mt-4\">Existing Admins</h5>\n              <div class=\"table-responsive\">\n                <table class=\"table table-hover table-bordered align-middle\">\n                  <thead>\n                    <tr>\n                      <th>ID</th>\n                      <th>Username</th>\n                      <th style=\"width:160px;\">Action</th>\n                    </tr>\n                  </thead>\n                  <tbody>\n                    <?php if (empty($admins)): ?>\n                      <tr><td colspan=\"3\" class=\"text-center\">No admins found</td></tr>\n                    <?php else: ?>\n                      <?php foreach ($admins as $a): ?>\n                        <tr>\n                          <td><?php echo (int)$a['id']; ?></td>\n                          <td><?php echo htmlspecialchars($a['user']); ?></td>\n                          <td>\n                            <?php\n                              $aid = (int)$a['id'];\n                              if ($aid === 1) {\n                                echo '<span class=\"badge bg-secondary\">Primary Admin</span>';\n                              } elseif ($aid === $current_admin_id) {\n                                echo '<span class=\"badge bg-info text-dark\">Current Admin</span>';\n                              } else {\n                                $href = '?delete_admin='.(int)$aid;\n                                echo '<a href=\"'.htmlspecialchars($href).'\" class=\"btn btn-danger btn-sm delete-admin\" data-id=\"'.(int)$aid.'\"><i class=\"bi bi-trash\"></i> Delete</a>';\n                              }\n                            ?>\n                          </td>\n                        </tr>\n                      <?php endforeach; ?>\n                    <?php endif; ?>\n                  </tbody>\n                </table>\n              </div>\n            </div>\n\n            <!-- Login History -->\n            <div class=\"tab-pane fade\" id=\"logs\" role=\"tabpanel\" aria-labelledby=\"logs-tab\">\n              <h4 class=\"card-title\">Login History</h4>\n              <?php if ($rec_count === 0): ?>\n                <p class=\"text-muted\">No login history available.</p>\n              <?php else: ?>\n                <div class=\"table-responsive\">\n                  <table class=\"table table-hover table-bordered align-middle\">\n                    <thead><tr><th>Login Date</th><th>IP</th></tr></thead>\n                    <tbody>\n                      <?php foreach ($history_rows as $r): ?>\n                        <tr>\n                          <td><?php echo htmlspecialchars($r['last_date']); ?></td>\n                          <td><?php echo htmlspecialchars($r['ip']); ?></td>\n                        </tr>\n                      <?php endforeach; ?>\n                    </tbody>\n                  </table>\n                </div>\n                <?php if ($total_pages > 1): ?>\n                  <nav aria-label=\"Login history\">\n                    <ul class=\"pagination justify-content-center\">\n                      <?php if ($page > 1): ?>\n                        <li class=\"page-item\"><a class=\"page-link\" href=\"?page=<?php echo $page-1; ?>\">&laquo;</a></li>\n                      <?php else: ?>\n                        <li class=\"page-item disabled\"><span class=\"page-link\">&laquo;</span></li>\n                      <?php endif; ?>\n                      <?php\n                        $start=max(1,$page-3); $end=min($total_pages,$page+3);\n                        for($i=$start;$i<=$end;$i++){\n                          $active=$i===$page?' active':'';\n                          echo \"<li class='page-item$active'><a class='page-link' href='?page=$i'>$i</a></li>\";\n                        }\n                      ?>\n                      <?php if ($page < $total_pages): ?>\n                        <li class=\"page-item\"><a class=\"page-link\" href=\"?page=<?php echo $page+1; ?>\">&raquo;</a></li>\n                      <?php else: ?>\n                        <li class=\"page-item disabled\"><span class=\"page-link\">&raquo;</span></li>\n                      <?php endif; ?>\n                    </ul>\n                  </nav>\n                <?php endif; ?>\n              <?php endif; ?>\n            </div>\n\n          </div>\n        </div>\n      </div>\n\n      <div class=\"text-muted small mt-3\">\n        Powered by <a class=\"text-decoration-none\" href=\"https://phpaste.sourceforge.io\" target=\"_blank\">Paste</a>\n      </div>\n    </div>\n  </div>\n</div>\n\n<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js\" crossorigin=\"anonymous\"></script>\n<?php\n$pdo = null;\n?>\n</body>\n</html>\n"
  },
  {
    "path": "admin/ads.php",
    "content": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\nsession_start();\n\n// Guard: admin session\nif (!isset($_SESSION['admin_login']) || !isset($_SESSION['admin_id'])) {\n    header(\"Location: ../index.php\");\n    exit();\n}\n\n$date = date('Y-m-d H:i:s');\n$ip   = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';\n\nrequire_once('../config.php'); // expects $dbhost,$dbuser,$dbpassword,$dbname\nrequire_once('../includes/functions.php');\n\n$msg = '';\n$msg_type = 'info';\n\ntry {\n    // PDO\n    $pdo = new PDO(\n        \"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\",\n        $dbuser,\n        $dbpassword,\n        [\n            PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,\n            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\n            PDO::ATTR_EMULATE_PREPARES   => false,\n        ]\n    );\n\n    // Fetch baseurl for sidebar links\n    $row = $pdo->query(\"SELECT baseurl FROM site_info WHERE id = 1\")->fetch();\n    $baseurl = rtrim((string)($row['baseurl'] ?? ''), '/');\n\n    // Validate admin id ↔ username\n    $st = $pdo->prepare(\"SELECT id, user FROM admin WHERE id = ?\");\n    $st->execute([$_SESSION['admin_id']]);\n    $adm = $st->fetch();\n    if (!$adm || $adm['user'] !== $_SESSION['admin_login']) {\n        unset($_SESSION['admin_login'], $_SESSION['admin_id']);\n        header(\"Location: \" . htmlspecialchars($baseurl . '/admin/index.php', ENT_QUOTES, 'UTF-8'));\n        exit();\n    }\n\n    // Log admin activity\n    $st = $pdo->query(\"SELECT MAX(id) AS last_id FROM admin_history\");\n    $last_id = $st->fetch()['last_id'] ?? null;\n    $last_ip = $last_date = null;\n    if ($last_id) {\n        $st = $pdo->prepare(\"SELECT ip, last_date FROM admin_history WHERE id = ?\");\n        $st->execute([$last_id]);\n        $h = $st->fetch();\n        $last_ip = $h['ip'] ?? null;\n        $last_date = $h['last_date'] ?? null;\n    }\n    if ($last_ip !== $ip || $last_date !== $date) {\n        $st = $pdo->prepare(\"INSERT INTO admin_history (last_date, ip) VALUES (?, ?)\");\n        $st->execute([$date, $ip]);\n    }\n\n    // Fetch current ad settings (ensure row exists)\n    $st = $pdo->query(\"SELECT text_ads, ads_1, ads_2 FROM ads WHERE id = 1\");\n    $adsRow = $st->fetch();\n    if (!$adsRow) {\n        $pdo->prepare(\"INSERT INTO ads (id, text_ads, ads_1, ads_2) VALUES (1, '', '', '')\")->execute();\n        $adsRow = ['text_ads' => '', 'ads_1' => '', 'ads_2' => ''];\n    }\n\n    $text_ads = (string)$adsRow['text_ads'];\n    $ads_1    = (string)$adsRow['ads_1'];\n    $ads_2    = (string)$adsRow['ads_2'];\n\n    // Save\n    if ($_SERVER['REQUEST_METHOD'] === 'POST') {\n        // Text Ads from WYSIWYG (hidden field)\n        $text_ads = isset($_POST['text_ads_html']) ? (string)$_POST['text_ads_html'] : '';\n\n        // Raw HTML/JS for ad slots (from CodeMirror’ed textareas)\n        $ads_1 = isset($_POST['ads_1']) ? (string)$_POST['ads_1'] : '';\n        $ads_2 = isset($_POST['ads_2']) ? (string)$_POST['ads_2'] : '';\n\n        $st = $pdo->prepare(\"UPDATE ads SET text_ads = ?, ads_1 = ?, ads_2 = ? WHERE id = 1\");\n        $st->execute([$text_ads, $ads_1, $ads_2]);\n\n        $msg = 'Ads saved successfully.';\n        $msg_type = 'success';\n    }\n\n} catch (PDOException $e) {\n    die(\"Unable to connect to database: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));\n}\n?>\n<!DOCTYPE html>\n<html lang=\"en\" data-bs-theme=\"dark\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<title>Paste - Ads</title>\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\" rel=\"stylesheet\">\n\n<!-- Quill 2 (BSD-3) -->\n<link href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css\" rel=\"stylesheet\">\n<script src=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.js\"></script>\n\n<!-- CodeMirror 5 -->\n<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/codemirror@5.65.16/lib/codemirror.css\">\n<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/codemirror@5.65.16/theme/material-darker.css\">\n<script src=\"https://cdn.jsdelivr.net/npm/codemirror@5.65.16/lib/codemirror.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/codemirror@5.65.16/mode/xml/xml.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/codemirror@5.65.16/mode/javascript/javascript.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/codemirror@5.65.16/mode/css/css.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/codemirror@5.65.16/mode/htmlmixed/htmlmixed.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/codemirror@5.65.16/addon/edit/closetag.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/codemirror@5.65.16/addon/edit/closebrackets.js\"></script>\n<script src=\"https://cdn.jsdelivr.net/npm/codemirror@5.65.16/addon/edit/matchbrackets.js\"></script>\n\n<style>\n  :root{\n    --bg: #0f1115;\n    --card:#141821;\n    --muted:#7f8da3;\n    --border:#1f2633;\n    --accent:#0d6efd;\n    --content:#0f1115;\n    --content-text:#e6edf3;\n    --toolbar:#101521;\n  }\n  body{background:var(--bg);color:#fff;}\n  .navbar{background:#121826!important;position:sticky;top:0;z-index:1030}\n  .navbar .navbar-brand{font-weight:600}\n\n  /* Desktop sidebar */\n  .sidebar-desktop{\n    position:sticky; top:1rem;\n    background:#121826;border:1px solid var(--border);\n    border-radius:12px;padding:12px;\n  }\n  .sidebar-desktop .list-group-item{\n    background:transparent;color:#dbe5f5;border:0;border-radius:10px;padding:.65rem .8rem;\n  }\n  .sidebar-desktop .list-group-item:hover{background:#0e1422}\n  .sidebar-desktop .list-group-item.active{background:#0d6efd;color:#fff}\n\n  .card{background:var(--card);border:1px solid var(--border);border-radius:12px}\n  .form-control,.form-select{background:#0e1422;border-color:var(--border);color:#e6edf3}\n  .form-control:focus,.form-select:focus{border-color:var(--accent);box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}\n  .btn-soft{background:#101521;border:1px solid var(--border);color:#dbe5f5}\n  .btn-soft:hover{background:#0e1422;color:#fff}\n\n  .footer { margin-top:24px; padding:12px; color:#9fb1d1 }\n\n  /* Quill adjustments */\n  .ql-container.ql-snow{\n    border:1px solid var(--border);\n    border-radius:8px;\n    background:var(--content);\n    color:var(--content-text);\n    min-height:200px;\n  }\n  .ql-toolbar.ql-snow{background:var(--toolbar);border:1px solid var(--border);border-radius:8px}\n\n  /* CodeMirror dark fit */\n  .CodeMirror {\n    height: 260px;\n    border: 1px solid var(--border);\n    border-radius: 8px;\n    background: #0e1422;\n    color: #e6edf3;\n    font-size: 14px;\n  }\n  .cm-s-material-darker .CodeMirror-gutters {\n    background: #0b101a;\n    border-right: 1px solid #1c2535;\n  }\n\n  .offcanvas-nav{width:280px;background:#0f1523;color:#dbe5f5}\n  .offcanvas-nav .list-group-item{background:transparent;border:0;color:#dbe5f5}\n  .offcanvas-nav .list-group-item:hover{background:#0e1422}\n</style>\n</head>\n<body>\n\n<nav class=\"navbar navbar-expand-lg navbar-dark\">\n  <div class=\"container-fluid\">\n    <div class=\"d-flex align-items-center gap-2\">\n      <!-- Mobile: open offcanvas -->\n      <button class=\"btn btn-soft d-lg-none\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#navOffcanvas\" aria-controls=\"navOffcanvas\">\n        <i class=\"bi bi-list\"></i>\n      </button>\n      <a class=\"navbar-brand\" href=\"../\">Paste</a>\n    </div>\n    <button class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNav\">\n      <span class=\"navbar-toggler-icon\"></span>\n    </button>\n    <div class=\"collapse navbar-collapse justify-content-end\" id=\"navbarNav\">\n      <ul class=\"navbar-nav\">\n        <li class=\"nav-item dropdown\">\n          <a class=\"nav-link dropdown-toggle\" href=\"#\" data-bs-toggle=\"dropdown\">\n            <?php echo htmlspecialchars($_SESSION['admin_login']); ?>\n          </a>\n          <ul class=\"dropdown-menu dropdown-menu-end\">\n            <li><a class=\"dropdown-item\" href=\"admin.php\">Settings</a></li>\n            <li><a class=\"dropdown-item\" href=\"?logout\">Logout</a></li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n  </div>\n</nav>\n\n<!-- Mobile offcanvas nav -->\n<div class=\"offcanvas offcanvas-start offcanvas-nav\" tabindex=\"-1\" id=\"navOffcanvas\">\n  <div class=\"offcanvas-header\">\n    <h5 class=\"offcanvas-title\">Admin Menu</h5>\n    <button type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\"></button>\n  </div>\n  <div class=\"offcanvas-body\">\n    <div class=\"list-group\">\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n      <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n    </div>\n  </div>\n</div>\n\n<div class=\"container-fluid my-2\">\n  <div class=\"row g-2\">\n    <!-- Desktop sidebar -->\n    <div class=\"col-lg-2 d-none d-lg-block\">\n      <div class=\"sidebar-desktop\">\n        <div class=\"list-group\">\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n          <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"col-lg-10\">\n      <?php if (!empty($msg)): ?>\n        <div class=\"alert alert-<?php echo htmlspecialchars($msg_type); ?> alert-dismissible fade show\" role=\"alert\">\n          <?php echo htmlspecialchars($msg); ?>\n          <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\n        </div>\n      <?php endif; ?>\n\n      <div class=\"card mb-3\">\n        <div class=\"card-body\">\n          <div class=\"d-flex align-items-center justify-content-between mb-2\">\n            <h4 class=\"card-title mb-0\">Manage Ads</h4>\n            <div class=\"d-flex gap-2\">\n              <button type=\"button\" class=\"btn btn-soft\" id=\"preview-textads\"><i class=\"bi bi-eye\"></i> Preview Text Ads</button>\n              <button type=\"button\" class=\"btn btn-soft\" id=\"preview-ads1\"><i class=\"bi bi-eye\"></i> Preview Sidebar Ad</button>\n              <button type=\"button\" class=\"btn btn-soft\" id=\"preview-ads2\"><i class=\"bi bi-eye\"></i> Preview Footer Ad</button>\n            </div>\n          </div>\n\n          <form method=\"POST\" action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>\" id=\"ads-form\">\n            <!-- Text Ads (WYSIWYG) -->\n            <div class=\"mb-3\">\n              <label class=\"form-label\">Text Ads (WYSIWYG)</label>\n              <div id=\"toolbar\">\n                <span class=\"ql-formats\">\n                  <select class=\"ql-header\">\n                    <option selected></option>\n                    <option value=\"2\">Heading</option>\n                    <option value=\"3\">Subheading</option>\n                  </select>\n                  <select class=\"ql-font\"></select>\n                  <select class=\"ql-size\"></select>\n                </span>\n                <span class=\"ql-formats\">\n                  <button class=\"ql-bold\"></button>\n                  <button class=\"ql-italic\"></button>\n                  <button class=\"ql-underline\"></button>\n                  <button class=\"ql-strike\"></button>\n                </span>\n                <span class=\"ql-formats\">\n                  <button class=\"ql-blockquote\"></button>\n                  <button class=\"ql-code-block\"></button>\n                </span>\n                <span class=\"ql-formats\">\n                  <button class=\"ql-list\" value=\"ordered\"></button>\n                  <button class=\"ql-list\" value=\"bullet\"></button>\n                  <button class=\"ql-indent\" value=\"-1\"></button>\n                  <button class=\"ql-indent\" value=\"1\"></button>\n                </span>\n                <span class=\"ql-formats\">\n                  <select class=\"ql-align\"></select>\n                </span>\n                <span class=\"ql-formats\">\n                  <button class=\"ql-link\"></button>\n                  <button class=\"ql-image\"></button>\n                </span>\n              </div>\n              <div id=\"textAdsEditor\"><?php echo $text_ads; ?></div>\n              <div class=\"text-muted small mt-1\">For third-party ad tags that use <code>&lt;script&gt;</code>, use the raw fields below.</div>\n              <textarea class=\"d-none\" name=\"text_ads_html\" id=\"text_ads_html\"></textarea>\n            </div>\n\n            <!-- Raw ad slots (CodeMirror) -->\n            <div class=\"mb-3\">\n              <label for=\"ads_1\" class=\"form-label\">Image/HTML Ad (Sidebar)</label>\n              <textarea class=\"form-control d-none\" id=\"ads_1\" name=\"ads_1\"><?php echo htmlspecialchars($ads_1); ?></textarea>\n              <div id=\"ads_1_cm\"></div>\n              <div class=\"text-muted small mt-1\">Appears in the sidebar (e.g., 300×250 / 300×600). Scripts allowed.</div>\n            </div>\n\n            <div class=\"mb-3\">\n              <label for=\"ads_2\" class=\"form-label\">Image/HTML Ad (Footer)</label>\n              <textarea class=\"form-control d-none\" id=\"ads_2\" name=\"ads_2\"><?php echo htmlspecialchars($ads_2); ?></textarea>\n              <div id=\"ads_2_cm\"></div>\n              <div class=\"text-muted small mt-1\">Appears in the footer. Scripts allowed.</div>\n            </div>\n\n            <div class=\"d-flex gap-2\">\n              <button type=\"submit\" class=\"btn btn-primary\"><i class=\"bi bi-save\"></i> Save</button>\n              <a href=\"../\" target=\"_blank\" class=\"btn btn-outline-secondary\"><i class=\"bi bi-box-arrow-up-right\"></i> View Site</a>\n            </div>\n          </form>\n        </div>\n      </div>\n\n      <div class=\"text-muted small mt-3\">\n        Powered by <a class=\"text-decoration-none\" href=\"https://phpaste.sourceforge.io\" target=\"_blank\">Paste</a>\n      </div>\n    </div>\n  </div>\n</div>\n\n<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js\" crossorigin=\"anonymous\"></script>\n<script>\n(function(){\n  // --- Quill (Text Ads)\n  const q = new Quill('#textAdsEditor', {\n    theme: 'snow',\n    modules: {\n      toolbar: '#toolbar',\n      history: { delay: 800, maxStack: 200 },\n      clipboard: true\n    },\n    placeholder: 'Write your text ad content here...'\n  });\n\n  // --- CodeMirror (raw ad slots)\n  function cmFromTextArea(textareaId, mountId){\n    const ta = document.getElementById(textareaId);\n    const mount = document.getElementById(mountId);\n    const cm = CodeMirror(mount, {\n      value: ta.value,\n      mode: 'htmlmixed',\n      theme: 'material-darker',\n      lineNumbers: true,\n      lineWrapping: true,\n      tabSize: 2,\n      autoCloseTags: true,\n      autoCloseBrackets: true,\n      matchBrackets: true,\n    });\n    // Keep textarea in sync so PHP receives latest content\n    cm.on('change', () => { ta.value = cm.getValue(); });\n    // Initial sync in case the value is unchanged\n    ta.value = cm.getValue();\n    return cm;\n  }\n\n  const cmAds1 = cmFromTextArea('ads_1', 'ads_1_cm');\n  const cmAds2 = cmFromTextArea('ads_2', 'ads_2_cm');\n\n  // Submit: ensure Quill HTML is posted\n  document.getElementById('ads-form').addEventListener('submit', function(){\n    document.getElementById('text_ads_html').value = q.root.innerHTML;\n    // CodeMirror textareas are already synced by 'change' handler\n  });\n\n  // Simple preview windows\n  function previewHtml(html){\n    const w = window.open('', '_blank', 'width=900,height=700');\n    if (!w) return;\n    const doc =\n      '<!doctype html><html><head><meta charset=\"utf-8\"><title>Preview</title>' +\n      '<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">' +\n      '<style>body{background:#0f1115;color:#e6edf3;font:15px/1.6 system-ui,Segoe UI,Roboto,sans-serif;padding:24px}</style>' +\n      '</head><body>' + html + '</body></html>';\n    w.document.open(); w.document.write(doc); w.document.close();\n  }\n\n  document.getElementById('preview-textads')?.addEventListener('click', () => {\n    previewHtml(q.root.innerHTML);\n  });\n  document.getElementById('preview-ads1')?.addEventListener('click', () => {\n    previewHtml(cmAds1.getValue());\n  });\n  document.getElementById('preview-ads2')?.addEventListener('click', () => {\n    previewHtml(cmAds2.getValue());\n  });\n})();\n</script>\n</body>\n</html>\n<?php\n// Optional: logout\nif (isset($_GET['logout'])) {\n    $_SESSION = [];\n    session_destroy();\n    header('Location: index.php');\n    exit();\n}\n$pdo = null;\n?>\n"
  },
  {
    "path": "admin/configuration.php",
    "content": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\ndeclare(strict_types=1);\n\nob_start();\nif (session_status() === PHP_SESSION_NONE) {\n    session_start([\n        'cookie_secure' => isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on',\n        'cookie_httponly' => true,\n        'use_strict_mode' => true,\n        'cookie_samesite' => 'Strict',\n    ]);\n}\nif (!isset($_SESSION['csrf_token'])) {\n    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));\n}\nerror_log(\"configuration.php: Session started, ID: \" . session_id() . \", CSRF token: {$_SESSION['csrf_token']}, HTTPS: \" . (isset($_SERVER['HTTPS']) ? 'on' : 'off'));\n\nif (!isset($_SESSION['admin_login']) || !isset($_SESSION['admin_id'])) {\n    error_log(\"configuration.php: Session validation failed - admin_login or admin_id not set. Session: \" . json_encode($_SESSION));\n    ob_end_clean();\n    header(\"Location: index.php\");\n    exit();\n}\n\nini_set('display_errors', '0');\nini_set('log_errors', '1');\n\n$date = date('Y-m-d H:i:s');\n$ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';\nrequire_once '../config.php';\nrequire_once '../mail/mail.php';\n\n$oauth_autoloader = __DIR__ . '/../oauth/vendor/autoload.php';\nif (!file_exists($oauth_autoloader)) {\n    error_log(\"configuration.php: OAuth autoloader not found\");\n    ob_end_clean();\n    die(\"OAuth autoloader not found. Run: <code>cd oauth && composer require google/apiclient:^2.17 league/oauth2-client:^2.7 league/oauth2-google:^4.0</code>\");\n}\nrequire_once $oauth_autoloader;\n\nuse Google\\Client as Google_Client;\n\n$required_classes = [\n    'Google\\Client' => 'google/apiclient:^2.17',\n    'PHPMailer\\PHPMailer\\PHPMailer' => 'phpmailer/phpmailer:^6.9',\n    'League\\OAuth2\\Client\\Provider\\Google' => 'league/oauth2-client:^2.7 league/oauth2-google:^4.0'\n];\nforeach ($required_classes as $class => $packages) {\n    if (!class_exists($class)) {\n        error_log(\"configuration.php: $class not found. Run: cd oauth && composer require $packages\");\n        ob_end_clean();\n        die('<div class=\"alert alert-danger text-center\">OAuth configuration error: ' . htmlspecialchars($class, ENT_QUOTES, 'UTF-8') . ' not found. Run: composer require ' . htmlspecialchars($packages, ENT_QUOTES, 'UTF-8') . '</div>');\n    }\n}\n\ntry {\n    $pdo = new PDO(\"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\", $dbuser, $dbpassword, [\n        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,\n        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\n        PDO::ATTR_EMULATE_PREPARES => false,\n    ]);\n\n    $stmt = $pdo->prepare(\"SELECT id FROM admin WHERE user = ?\");\n    $stmt->execute([$_SESSION['admin_login']]);\n    $admin = $stmt->fetch();\n    if (!$admin || $admin['id'] != $_SESSION['admin_id']) {\n        error_log(\"configuration.php: Invalid admin session for admin_login: {$_SESSION['admin_login']}, admin_id: {$_SESSION['admin_id']}\");\n        $_SESSION = [];\n        session_destroy();\n        ob_end_clean();\n        header('Location: index.php');\n        exit;\n    }\n\n    $stmt = $pdo->query(\"SELECT MAX(id) AS last_id FROM admin_history\");\n    $last_id = $stmt->fetch()['last_id'] ?? null;\n    if ($last_id) {\n        $stmt = $pdo->prepare(\"SELECT last_date, ip FROM admin_history WHERE id = ?\");\n        $stmt->execute([$last_id]);\n        $row = $stmt->fetch();\n        $last_date = $row['last_date'] ?? null;\n        $last_ip = $row['ip'] ?? null;\n    }\n    if (($last_ip ?? '') !== $ip || ($last_date ?? '') !== $date) {\n        $stmt = $pdo->prepare(\"INSERT INTO admin_history (last_date, ip) VALUES (?, ?)\");\n        $stmt->execute([$date, $ip]);\n    }\n\n    $stmt = $pdo->query(\"SELECT * FROM site_info WHERE id = 1\");\n    $row = $stmt->fetch() ?: [];\n    $title = trim($row['title'] ?? '');\n    $des = trim($row['des'] ?? '');\n    $baseurl = trim($row['baseurl'] ?? '');\n    $keyword = trim($row['keyword'] ?? '');\n    $site_name = trim($row['site_name'] ?? '');\n    $email = trim($row['email'] ?? '');\n    $twit = trim($row['twit'] ?? '');\n    $face = trim($row['face'] ?? '');\n    $gplus = trim($row['gplus'] ?? '');\n    $ga = trim($row['ga'] ?? '');\n    $additional_scripts = trim($row['additional_scripts'] ?? '');\n\n    $stmt = $pdo->query(\"SELECT * FROM captcha WHERE id = 1\");\n    $row = $stmt->fetch() ?: [];\n    $cap_e = $row['cap_e'] ?? '';\n    $mode = $row['mode'] ?? '';\n    $recaptcha_version = $row['recaptcha_version'] ?? 'v2';\n    $mul = $row['mul'] ?? '';\n    $allowed = $row['allowed'] ?? '';\n    $color = $row['color'] ?? '';\n    $recaptcha_sitekey = $row['recaptcha_sitekey'] ?? '';\n    $recaptcha_secretkey = $row['recaptcha_secretkey'] ?? '';\n\n    $stmt = $pdo->query(\"SELECT * FROM site_permissions WHERE id = 1\");\n    $row = $stmt->fetch() ?: [];\n    $disableguest = trim($row['disableguest'] ?? '');\n    $siteprivate = trim($row['siteprivate'] ?? '');\n\n    $stmt = $pdo->query(\"SELECT * FROM mail WHERE id = 1\");\n    $row = $stmt->fetch() ?: [];\n    $required_fields = ['verification', 'smtp_host', 'smtp_username', 'smtp_password', 'smtp_port', 'protocol', 'auth', 'socket', 'oauth_client_id', 'oauth_client_secret', 'oauth_refresh_token'];\n    foreach ($required_fields as $field) {\n        if (!array_key_exists($field, $row)) {\n            $row[$field] = '';\n        }\n    }\n    $verification = trim($row['verification'] ?? '');\n    $smtp_host = trim($row['smtp_host'] ?? '');\n    $smtp_username = trim($row['smtp_username'] ?? '');\n    $smtp_password = trim($row['smtp_password'] ?? '');\n    $smtp_port = trim($row['smtp_port'] ?? '');\n    $protocol = trim($row['protocol'] ?? '');\n    $auth = trim($row['auth'] ?? '');\n    $socket = trim($row['socket'] ?? '');\n    $oauth_client_id = trim($row['oauth_client_id'] ?? '');\n    $oauth_client_secret = trim($row['oauth_client_secret'] ?? '');\n    $oauth_refresh_token = trim($row['oauth_refresh_token'] ?? '');\n    $oauth_status = $oauth_refresh_token ? 'OAuth refresh token is set.' : 'OAuth refresh token not set. Configure Gmail OAuth if using smtp.gmail.com.';\n    $redirect_uri = $baseurl ? rtrim($baseurl, '/') . '/oauth/google_smtp.php' : '';\n\n    $msg = '';\n    if ($_SERVER['REQUEST_METHOD'] == 'POST') {\n        error_log(\"configuration.php: POST request received with CSRF token: \" . ($_POST['csrf_token'] ?? 'none') . \", Session CSRF: {$_SESSION['csrf_token']}, Session ID: \" . session_id());\n        if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {\n            error_log(\"configuration.php: CSRF validation failed. Received: \" . ($_POST['csrf_token'] ?? 'none') . \", Expected: {$_SESSION['csrf_token']}, Session: \" . json_encode($_SESSION));\n            $msg = '<div class=\"alert alert-danger text-center\">CSRF validation failed. Please try again.</div>';\n            if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') {\n                ob_end_clean();\n                header('Content-Type: application/json; charset=utf-8');\n                echo json_encode(['status' => 'error', 'message' => $msg]);\n                exit;\n            }\n        } else {\n            error_log(\"configuration.php: CSRF validation passed\");\n            if (isset($_POST['test_recaptcha'])) {\n                error_log(\"configuration.php: Test reCAPTCHA requested\");\n                $recaptcha_sitekey = trim($_POST['recaptcha_sitekey'] ?? '');\n                $recaptcha_secretkey = trim($_POST['recaptcha_secretkey'] ?? '');\n                $recaptcha_version = trim($_POST['recaptcha_version'] ?? 'v2');\n                if (empty($recaptcha_sitekey) || empty($recaptcha_secretkey)) {\n                    $msg = '<div class=\"alert alert-danger text-center\">reCAPTCHA Site Key and Secret Key are required for testing.</div>';\n                    error_log(\"configuration.php: Missing reCAPTCHA keys for test\");\n                } else {\n                    $verify_url = \"https://www.google.com/recaptcha/api/siteverify?secret=\" . urlencode($recaptcha_secretkey) . \"&response=test\";\n                    $ch = curl_init($verify_url);\n                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);\n                    curl_setopt($ch, CURLOPT_TIMEOUT, 5);\n                    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);\n                    $response = curl_exec($ch);\n                    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);\n                    $curl_error = curl_error($ch);\n                    curl_close($ch);\n                    if ($response === false || $http_code != 200) {\n                        $msg = '<div class=\"alert alert-danger text-center\">Failed to verify reCAPTCHA keys: ' . htmlspecialchars($curl_error ?: 'No response', ENT_QUOTES, 'UTF-8') . '</div>';\n                        error_log(\"configuration.php: reCAPTCHA test failed: HTTP Code: $http_code, Error: \" . ($curl_error ?: 'No response'));\n                    } else {\n                        $response = json_decode($response, true);\n                        if (($response['success'] ?? null) === false && isset($response['error-codes']) && in_array('invalid-input-secret', $response['error-codes'])) {\n                            $msg = '<div class=\"alert alert-danger text-center\">Invalid reCAPTCHA Secret Key. Please verify your keys.</div>';\n                            error_log(\"configuration.php: reCAPTCHA test failed: Invalid secret key\");\n                        } else {\n                            if ($recaptcha_version === 'v3' && isset($response['score']) && $response['score'] < 0.5) {\n                                $msg = '<div class=\"alert alert-danger text-center\">reCAPTCHA v3 test failed: Score ' . htmlspecialchars((string)$response['score'], ENT_QUOTES, 'UTF-8') . ' is below threshold (0.5).</div>';\n                                error_log(\"configuration.php: reCAPTCHA v3 test failed: Score \" . $response['score']);\n                            } else {\n                                $msg = '<div class=\"alert alert-success text-center\">reCAPTCHA keys are valid' . ($recaptcha_version === 'v3' ? ' (Score: ' . htmlspecialchars((string)($response['score'] ?? 'N/A'), ENT_QUOTES, 'UTF-8') . ')' : '') . '.</div>';\n                                error_log(\"configuration.php: reCAPTCHA test successful\" . ($recaptcha_version === 'v3' ? \", Score: \" . $response['score'] : \"\"));\n                            }\n                        }\n                    }\n                }\n                if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') {\n                    ob_end_clean();\n                    header('Content-Type: application/json; charset=utf-8');\n                    echo json_encode(['message' => $msg]);\n                    exit;\n                }\n            } elseif (isset($_POST['test_smtp'])) {\n                error_log(\"configuration.php: Test SMTP requested\");\n                header('Content-Type: application/json; charset=utf-8');\n                if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {\n                    error_log(\"configuration.php: Invalid or missing admin email: $email\");\n                    ob_end_clean();\n                    echo json_encode(['status' => 'error', 'message' => '<div class=\"alert alert-danger text-center\">Invalid or missing Admin Email in Site Info. Please set a valid email address.</div>']);\n                    exit;\n                } elseif ($protocol === '2' && $smtp_host === 'smtp.gmail.com' && (empty($oauth_client_id) || empty($oauth_client_secret) || empty($oauth_refresh_token))) {\n                    error_log(\"configuration.php: Missing OAuth credentials for Gmail SMTP\");\n                    ob_end_clean();\n                    echo json_encode(['status' => 'error', 'message' => '<div class=\"alert alert-danger text-center\">OAuth credentials missing for Gmail SMTP. Please configure Client ID, Client Secret, and authorize Gmail SMTP.</div>']);\n                    exit;\n                } elseif ($protocol === '2' && $smtp_host !== 'smtp.gmail.com' && $auth === 'true' && (empty($smtp_username) || empty($smtp_password))) {\n                    error_log(\"configuration.php: Missing SMTP username or password for $smtp_host\");\n                    ob_end_clean();\n                    echo json_encode(['status' => 'error', 'message' => '<div class=\"alert alert-danger text-center\">SMTP Username and Password are required for non-Gmail SMTP servers with authentication.</div>']);\n                    exit;\n                } elseif ($protocol === '1' && !ini_get('sendmail_path')) {\n                    error_log(\"configuration.php: sendmail_path not configured in php.ini\");\n                    ob_end_clean();\n                    echo json_encode(['status' => 'error', 'message' => '<div class=\"alert alert-danger text-center\">PHP Mail selected, but sendmail_path is not configured in php.ini.</div>']);\n                    exit;\n                } else {\n                    $test_message = \"\n                        <html>\n                        <head><style>body { font-family: Arial, sans-serif; color: #333; }</style></head>\n                        <body>\n                            <div style='text-align: center;'>\n                                <img src='$baseurl/images/logo.png' alt='$site_name Logo'>\n                                <h2>Test Email from $site_name</h2>\n                            </div>\n                            <p>This is a test email sent from your Pastebin installation to verify mail settings.</p>\n                        </body>\n                        </html>\";\n                    $mail_result = send_mail($email, \"Test Email from $site_name\", $test_message, $site_name, $_SESSION['csrf_token']);\n                    error_log(\"configuration.php: Test SMTP result: \" . json_encode($mail_result));\n                    ob_end_clean();\n                    if (($mail_result['status'] ?? 'error') === 'success') {\n                        echo json_encode(['status' => 'success', 'message' => '<div class=\"alert alert-success text-center\">Test email sent successfully to ' . htmlspecialchars($email, ENT_QUOTES, 'UTF-8') . '.</div>']);\n                    } else {\n                        echo json_encode(['status' => 'error', 'message' => '<div class=\"alert alert-danger text-center\">Failed to send test email: ' . htmlspecialchars($mail_result['message'] ?? 'Unknown error', ENT_QUOTES, 'UTF-8') . '</div>']);\n                    }\n                    exit;\n                }\n            } elseif (isset($_POST['save_oauth_credentials'])) {\n                $client_id = trim($_POST['client_id'] ?? '');\n                $client_secret = trim($_POST['client_secret'] ?? '');\n                if (empty($client_id) || empty($client_secret)) {\n                    $msg = '<div class=\"alert alert-danger text-center\">Please fill in both Client ID and Client Secret.</div>';\n                    error_log(\"configuration.php: Missing OAuth Client ID or Secret\");\n                } elseif (!preg_match('/^[0-9a-zA-Z\\-]+\\.apps\\.googleusercontent\\.com$/', $client_id)) {\n                    $msg = '<div class=\"alert alert-danger text-center\">Invalid Client ID format. It should look like \\'1234567890-abcdef.apps.googleusercontent.com\\'.</div>';\n                    error_log(\"configuration.php: Invalid OAuth Client ID format: $client_id\");\n                } elseif (!preg_match('/^[0-9a-zA-Z\\-_]+$/', $client_secret)) {\n                    $msg = '<div class=\"alert alert-danger text-center\">Invalid Client Secret format. It should contain only letters, numbers, hyphens, and underscores.</div>';\n                    error_log(\"configuration.php: Invalid OAuth Client Secret format: $client_secret\");\n                } else {\n                    try {\n                        $stmt = $pdo->prepare(\"UPDATE mail SET oauth_client_id = ?, oauth_client_secret = ? WHERE id = 1\");\n                        $rows_affected = $stmt->execute([$client_id, $client_secret]);\n                        error_log(\"configuration.php: OAuth credentials update attempted. Rows affected: $rows_affected, client_id: $client_id\");\n                        if ($rows_affected === 0) {\n                            $msg = '<div class=\"alert alert-danger text-center\">Failed to update OAuth credentials in database. No rows affected.</div>';\n                        } else {\n                            $oauth_client_id = $client_id;\n                            $oauth_client_secret = $client_secret;\n                            $msg = '<div class=\"alert alert-success text-center\">OAuth credentials saved successfully.</div>';\n                        }\n                    } catch (PDOException $e) {\n                        error_log(\"configuration.php: OAuth credentials update error: \" . $e->getMessage());\n                        $msg = '<div class=\"alert alert-danger text-center\">' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';\n                    }\n                }\n            } elseif (isset($_POST['cap'])) {\n                $cap_e = trim($_POST['cap_e'] ?? '');\n                $mode = trim($_POST['mode'] ?? '');\n                $recaptcha_version = trim($_POST['recaptcha_version'] ?? 'v2');\n                $mul = trim($_POST['mul'] ?? '');\n                $allowed = trim($_POST['allowed'] ?? '');\n                $color = trim($_POST['color'] ?? '');\n                $recaptcha_sitekey = trim($_POST['recaptcha_sitekey'] ?? '');\n                $recaptcha_secretkey = trim($_POST['recaptcha_secretkey'] ?? '');\n                if ($cap_e == 'on' && $mode == 'reCAPTCHA' && (empty($recaptcha_sitekey) || empty($recaptcha_secretkey))) {\n                    $msg = '<div class=\"alert alert-danger text-center\">reCAPTCHA Site Key and Secret Key are required when reCAPTCHA is enabled.</div>';\n                    error_log(\"configuration.php: Missing reCAPTCHA keys for mode: $mode\");\n                } else {\n                    try {\n                        $stmt = $pdo->prepare(\"UPDATE captcha SET cap_e = ?, mode = ?, recaptcha_version = ?, mul = ?, allowed = ?, color = ?, recaptcha_sitekey = ?, recaptcha_secretkey = ? WHERE id = 1\");\n                        $stmt->execute([$cap_e, $mode, $recaptcha_version, $mul, $allowed, $color, $recaptcha_sitekey, $recaptcha_secretkey]);\n                        $msg = '<div class=\"alert alert-success text-center\">Captcha settings saved</div>';\n                        error_log(\"configuration.php: Captcha settings updated successfully\");\n                    } catch (PDOException $e) {\n                        error_log(\"configuration.php: Captcha update error: \" . $e->getMessage());\n                        $msg = '<div class=\"alert alert-danger text-center\">' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';\n                    }\n                }\n            } elseif (isset($_POST['manage'])) {\n                $site_name = filter_var(trim($_POST['site_name'] ?? ''), FILTER_SANITIZE_SPECIAL_CHARS);\n                $title = filter_var(trim($_POST['title'] ?? ''), FILTER_SANITIZE_SPECIAL_CHARS);\n                $baseurl = filter_var(trim($_POST['baseurl'] ?? ''), FILTER_SANITIZE_URL);\n                $des = filter_var(trim($_POST['des'] ?? ''), FILTER_SANITIZE_SPECIAL_CHARS);\n                $keyword = htmlspecialchars(trim($_POST['keyword'] ?? ''), ENT_QUOTES, 'UTF-8');\n                $email = filter_var(trim($_POST['email'] ?? ''), FILTER_SANITIZE_EMAIL);\n                $twit = htmlspecialchars(trim($_POST['twit'] ?? ''), ENT_QUOTES, 'UTF-8');\n                $face = htmlspecialchars(trim($_POST['face'] ?? ''), ENT_QUOTES, 'UTF-8');\n                $gplus = htmlspecialchars(trim($_POST['gplus'] ?? ''), ENT_QUOTES, 'UTF-8');\n                $ga = htmlspecialchars(trim($_POST['ga'] ?? ''), ENT_QUOTES, 'UTF-8');\n                $additional_scripts = filter_var(trim($_POST['additional_scripts'] ?? ''), FILTER_SANITIZE_SPECIAL_CHARS);\n                try {\n                    $stmt = $pdo->prepare(\"UPDATE site_info SET title = ?, des = ?, baseurl = ?, keyword = ?, site_name = ?, email = ?, twit = ?, face = ?, gplus = ?, ga = ?, additional_scripts = ? WHERE id = 1\");\n                    $stmt->execute([$title, $des, $baseurl, $keyword, $site_name, $email, $twit, $face, $gplus, $ga, $additional_scripts]);\n                    $msg = '<div class=\"alert alert-success text-center\">Configuration saved</div>';\n                    error_log(\"configuration.php: Site info updated successfully\");\n                } catch (PDOException $e) {\n                    error_log(\"configuration.php: Site info update error: \" . $e->getMessage());\n                    $msg = '<div class=\"alert alert-danger text-center\">' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';\n                }\n            } elseif (isset($_POST['permissions'])) {\n                $disableguest = trim($_POST['disableguest'] ?? '');\n                $siteprivate = trim($_POST['siteprivate'] ?? '');\n                try {\n                    $stmt = $pdo->prepare(\"UPDATE site_permissions SET disableguest = ?, siteprivate = ? WHERE id = 1\");\n                    $stmt->execute([$disableguest, $siteprivate]);\n                    $msg = '<div class=\"alert alert-success text-center\">Site permissions saved</div>';\n                    error_log(\"configuration.php: Site permissions updated successfully\");\n                } catch (PDOException $e) {\n                    error_log(\"configuration.php: Permissions update error: \" . $e->getMessage());\n                    $msg = '<div class=\"alert alert-danger text-center\">' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';\n                }\n            } elseif (isset($_POST['smtp_code'])) {\n                $verification = trim($_POST['verification'] ?? '');\n                $smtp_host = trim($_POST['smtp_host'] ?? '');\n                $smtp_port = trim($_POST['smtp_port'] ?? '');\n                $smtp_username = trim($_POST['smtp_user'] ?? '');\n                $smtp_password = trim($_POST['smtp_pass'] ?? '');\n                $socket = trim($_POST['socket'] ?? '');\n                $auth = trim($_POST['auth'] ?? '');\n                $protocol = trim($_POST['protocol'] ?? '');\n                if ($protocol === '2' && $smtp_host !== 'smtp.gmail.com' && $auth === 'true' && (empty($smtp_username) || empty($smtp_password))) {\n                    $msg = '<div class=\"alert alert-danger text-center\">SMTP Username and Password are required for non-Gmail SMTP servers with authentication.</div>';\n                    error_log(\"configuration.php: Missing SMTP username or password for $smtp_host\");\n                } elseif ($protocol === '1' && !ini_get('sendmail_path')) {\n                    $msg = '<div class=\"alert alert-danger text-center\">PHP Mail selected, but sendmail_path is not configured in php.ini.</div>';\n                    error_log(\"configuration.php: sendmail_path not configured in php.ini\");\n                } elseif ($protocol === '2' && empty($smtp_host)) {\n                    $msg = '<div class=\"alert alert-danger text-center\">SMTP Host is required for SMTP protocol.</div>';\n                    error_log(\"configuration.php: Missing SMTP host\");\n                } elseif ($protocol === '2' && empty($smtp_port)) {\n                    $msg = '<div class=\"alert alert-danger text-center\">SMTP Port is required for SMTP protocol.</div>';\n                    error_log(\"configuration.php: Missing SMTP port\");\n                } else {\n                    try {\n                        $stmt = $pdo->prepare(\"UPDATE mail SET verification = ?, smtp_host = ?, smtp_port = ?, smtp_username = ?, smtp_password = ?, socket = ?, protocol = ?, auth = ? WHERE id = 1\");\n                        $stmt->execute([$verification, $smtp_host, $smtp_port, $smtp_username, $smtp_password, $socket, $protocol, $auth]);\n                        $msg = '<div class=\"alert alert-success text-center\">Mail settings updated</div>';\n                        error_log(\"configuration.php: Mail settings updated successfully\");\n                    } catch (PDOException $e) {\n                        error_log(\"configuration.php: Mail settings update error: \" . $e->getMessage());\n                        $msg = '<div class=\"alert alert-danger text-center\">' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';\n                    }\n                }\n            }\n            if (strpos($msg, 'alert-success') !== false) {\n                $_SESSION['csrf_token'] = bin2hex(random_bytes(32));\n                error_log(\"configuration.php: CSRF token regenerated: {$_SESSION['csrf_token']}, Session ID: \" . session_id());\n            }\n        }\n        // For non-AJAX requests, fall through to render\n    }\n\n    if (isset($_GET['msg'])) {\n        $msg = '<div class=\"alert alert-success text-center\">' . htmlspecialchars(urldecode($_GET['msg'] ?? ''), ENT_QUOTES, 'UTF-8') . '</div>';\n    } elseif (isset($_GET['error'])) {\n        $msg = '<div class=\"alert alert-danger text-center\">' . htmlspecialchars(urldecode($_GET['error'] ?? ''), ENT_QUOTES, 'UTF-8') . '</div>';\n    }\n\n} catch (PDOException $e) {\n    error_log(\"configuration.php: Database error: \" . $e->getMessage());\n    ob_end_clean();\n    die(\"Unable to connect to database: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));\n} finally {\n    // Keep variables like $baseurl/$site_name in scope for HTML; we only close PDO connection here.\n    $pdo = null;\n}\n\n// --- Active tab persistence (server-side default) ---\n$activeTab = $_POST['active_tab'] ?? $_GET['tab'] ?? '';\n$validTabs = ['siteinfo','permissions','captcha','mail'];\nif (!in_array($activeTab, $validTabs, true)) {\n    // Also allow hash from URL if present (e.g. #mail) on first paint:\n    if (isset($_SERVER['REQUEST_URI']) && strpos($_SERVER['REQUEST_URI'], '#') !== false) {\n        $hash = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], '#') + 1);\n        if (in_array($hash, $validTabs, true)) {\n            $activeTab = $hash;\n        }\n    }\n    if (!$activeTab) $activeTab = 'siteinfo';\n}\n?>\n<!DOCTYPE html>\n<html lang=\"en\" data-bs-theme=\"dark\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Paste - Configuration</title>\n    <link rel=\"shortcut icon\" href=\"favicon.ico\">\n    <link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n    <link href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\" rel=\"stylesheet\">\n    <script src=\"https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js\"></script>\n    <style>\n      :root{\n        --bg:#0f1115; --card:#141821; --muted:#7f8da3; --border:#1f2633; --accent:#0d6efd;\n      }\n      body{background:var(--bg);color:#e6edf3;}\n      .navbar{background:#121826!important;position:sticky;top:0;z-index:1030}\n      .navbar .navbar-brand{font-weight:600}\n      .offcanvas-nav{width:280px;background:#0f1523;color:#dbe5f5}\n      .offcanvas-nav .list-group-item{background:transparent;border:0;color:#dbe5f5}\n      .offcanvas-nav .list-group-item:hover{background:#0e1422}\n      .sidebar-desktop{position:sticky; top:1rem; background:#121826;border:1px solid var(--border);border-radius:12px;padding:12px}\n      .sidebar-desktop .list-group-item{background:transparent;color:#dbe5f5;border:0;border-radius:10px;padding:.65rem .8rem}\n      .sidebar-desktop .list-group-item:hover{background:#0e1422}\n      .sidebar-desktop .list-group-item.active{background:#0d6efd;color:#fff}\n      .main-content{padding:16px}\n      .card{background:var(--card);border:1px solid var(--border);border-radius:12px}\n      .form-control,.form-select{background:#0e1422;border-color:var(--border);color:#e6edf3}\n      .form-control:focus,.form-select:focus{border-color:var(--accent);box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}\n      .btn-outline-primary{border-color:#0d6efd;color:#0d6efd}\n      .btn-outline-primary:hover{background:#0d6efd;color:#fff}\n      .nav-tabs .nav-link{color:#c6d4f0}\n      .nav-tabs .nav-link.active{color:#fff;background:#101521;border-color:var(--border) var(--border) transparent}\n      .table{color:#e6edf3}\n      .table thead th{background:#101521;color:#c6d4f0;border-color:var(--border)}\n      .table td,.table th{border-color:var(--border)}\n    </style>\n</head>\n<body>\n\n<nav class=\"navbar navbar-expand-lg navbar-dark\">\n  <div class=\"container-fluid\">\n    <div class=\"d-flex align-items-center gap-2\">\n      <button class=\"btn btn-outline-primary d-lg-none\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#navOffcanvas\" aria-controls=\"navOffcanvas\">\n        <i class=\"bi bi-list\"></i>\n      </button>\n      <a class=\"navbar-brand\" href=\"../\">Paste</a>\n    </div>\n    <button class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNav\">\n      <span class=\"navbar-toggler-icon\"></span>\n    </button>\n    <div class=\"collapse navbar-collapse justify-content-end\" id=\"navbarNav\">\n      <ul class=\"navbar-nav\">\n        <li class=\"nav-item dropdown\">\n          <a class=\"nav-link dropdown-toggle\" href=\"#\" data-bs-toggle=\"dropdown\">\n            <?php echo htmlspecialchars($_SESSION['admin_login'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\n          </a>\n          <ul class=\"dropdown-menu dropdown-menu-end\">\n            <li><a class=\"dropdown-item\" href=\"admin.php\">Settings</a></li>\n            <li><a class=\"dropdown-item\" href=\"?logout\">Logout</a></li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n  </div>\n</nav>\n\n<!-- Mobile offcanvas nav -->\n<div class=\"offcanvas offcanvas-start offcanvas-nav\" tabindex=\"-1\" id=\"navOffcanvas\">\n  <div class=\"offcanvas-header\">\n    <h5 class=\"offcanvas-title\">Admin Menu</h5>\n    <button type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\"></button>\n  </div>\n  <div class=\"offcanvas-body\">\n    <div class=\"list-group\">\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n      <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n    </div>\n  </div>\n</div>\n\n<div class=\"container-fluid my-2\">\n  <div class=\"row g-2\">\n    <!-- Desktop sidebar -->\n    <div class=\"col-lg-2 d-none d-lg-block\">\n      <div class=\"sidebar-desktop\">\n        <div class=\"list-group\">\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n          <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"col-lg-10\">\n      <div class=\"card\">\n        <div class=\"card-body\">\n          <div id=\"message-container\"><?php if (isset($msg)) echo $msg; ?></div>\n\n          <ul class=\"nav nav-tabs mb-3\" id=\"configTabs\" role=\"tablist\">\n            <li class=\"nav-item\" role=\"presentation\">\n              <button class=\"nav-link <?php echo $activeTab==='siteinfo'?'active':''; ?>\" id=\"siteinfo-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#siteinfo\" type=\"button\" role=\"tab\" aria-controls=\"siteinfo\" aria-selected=\"<?php echo $activeTab==='siteinfo'?'true':'false'; ?>\">Site Info</button>\n            </li>\n            <li class=\"nav-item\" role=\"presentation\">\n              <button class=\"nav-link <?php echo $activeTab==='permissions'?'active':''; ?>\" id=\"permissions-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#permissions\" type=\"button\" role=\"tab\" aria-controls=\"permissions\" aria-selected=\"<?php echo $activeTab==='permissions'?'true':'false'; ?>\">Permissions</button>\n            </li>\n            <li class=\"nav-item\" role=\"presentation\">\n              <button class=\"nav-link <?php echo $activeTab==='captcha'?'active':''; ?>\" id=\"captcha-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#captcha\" type=\"button\" role=\"tab\" aria-controls=\"captcha\" aria-selected=\"<?php echo $activeTab==='captcha'?'true':'false'; ?>\">Captcha Settings</button>\n            </li>\n            <li class=\"nav-item\" role=\"presentation\">\n              <button class=\"nav-link <?php echo $activeTab==='mail'?'active':''; ?>\" id=\"mail-tab\" data-bs-toggle=\"tab\" data-bs-target=\"#mail\" type=\"button\" role=\"tab\" aria-controls=\"mail\" aria-selected=\"<?php echo $activeTab==='mail'?'true':'false'; ?>\">Mail Settings</button>\n            </li>\n          </ul>\n\n          <div class=\"tab-content\">\n            <!-- Site Info -->\n            <div class=\"tab-pane fade <?php echo $activeTab==='siteinfo'?'show active':''; ?>\" id=\"siteinfo\" role=\"tabpanel\" aria-labelledby=\"siteinfo-tab\">\n              <form method=\"POST\" action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\" novalidate>\n                <input type=\"hidden\" name=\"csrf_token\" value=\"<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                <input type=\"hidden\" name=\"active_tab\" value=\"<?php echo htmlspecialchars($activeTab, ENT_QUOTES, 'UTF-8'); ?>\">\n                <div class=\"mb-3\">\n                  <label for=\"site_name\" class=\"form-label\">Site Name</label>\n                  <input type=\"text\" class=\"form-control\" id=\"site_name\" name=\"site_name\" placeholder=\"The name of your site\" value=\"<?php echo htmlspecialchars(isset($_POST['site_name']) ? $_POST['site_name'] : $site_name, ENT_QUOTES, 'UTF-8'); ?>\">\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"title\" class=\"form-label\">Site Title</label>\n                  <input type=\"text\" class=\"form-control\" id=\"title\" name=\"title\" placeholder=\"Site title tag\" value=\"<?php echo htmlspecialchars(isset($_POST['title']) ? $_POST['title'] : $title, ENT_QUOTES, 'UTF-8'); ?>\">\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"baseurl\" class=\"form-label\">Domain name</label>\n                  <input type=\"text\" class=\"form-control\" id=\"baseurl\" name=\"baseurl\" placeholder=\"eg: pastethis.in (no trailing slash)\" value=\"<?php echo htmlspecialchars(isset($_POST['baseurl']) ? $_POST['baseurl'] : $baseurl, ENT_QUOTES, 'UTF-8'); ?>\">\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"des\" class=\"form-label\">Site Description</label>\n                  <input type=\"text\" class=\"form-control\" id=\"des\" name=\"des\" placeholder=\"Site description\" value=\"<?php echo htmlspecialchars(isset($_POST['des']) ? $_POST['des'] : $des, ENT_QUOTES, 'UTF-8'); ?>\">\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"keyword\" class=\"form-label\">Site Keywords</label>\n                  <input type=\"text\" class=\"form-control\" id=\"keyword\" name=\"keyword\" placeholder=\"Keywords (separated by a comma)\" value=\"<?php echo htmlspecialchars($keyword ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"ga\" class=\"form-label\">Google Analytics</label>\n                  <input type=\"text\" class=\"form-control\" id=\"ga\" name=\"ga\" placeholder=\"Google Analytics ID\" value=\"<?php echo htmlspecialchars($ga ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"email\" class=\"form-label\">Admin Email</label>\n                  <input type=\"text\" class=\"form-control\" id=\"email\" name=\"email\" placeholder=\"Email\" value=\"<?php echo htmlspecialchars(isset($_POST['email']) ? $_POST['email'] : $email, ENT_QUOTES, 'UTF-8'); ?>\">\n                  <div class=\"form-text\">Used as the From address for emails and for receiving test emails.</div>\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"face\" class=\"form-label\">Facebook URL</label>\n                  <input type=\"text\" class=\"form-control\" id=\"face\" name=\"face\" placeholder=\"Facebook URL\" value=\"<?php echo htmlspecialchars($face ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"twit\" class=\"form-label\">Twitter URL</label>\n                  <input type=\"text\" class=\"form-control\" id=\"twit\" name=\"twit\" placeholder=\"Twitter URL\" value=\"<?php echo htmlspecialchars($twit ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"gplus\" class=\"form-label\">Google+ URL</label>\n                  <input type=\"text\" class=\"form-control\" id=\"gplus\" name=\"gplus\" placeholder=\"Google+ URL\" value=\"<?php echo htmlspecialchars($gplus ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"additional_scripts\" class=\"form-label\">Additional Site Scripts</label>\n                  <textarea class=\"form-control\" id=\"additional_scripts\" name=\"additional_scripts\" rows=\"8\"><?php echo htmlspecialchars(isset($_POST['additional_scripts']) ? $_POST['additional_scripts'] : $additional_scripts, ENT_QUOTES, 'UTF-8'); ?></textarea>\n                </div>\n                <input type=\"hidden\" name=\"manage\" value=\"manage\" />\n                <button type=\"submit\" class=\"btn btn-primary\">Save</button>\n              </form>\n            </div>\n\n            <!-- Permissions -->\n            <div class=\"tab-pane fade <?php echo $activeTab==='permissions'?'show active':''; ?>\" id=\"permissions\" role=\"tabpanel\" aria-labelledby=\"permissions-tab\">\n              <form method=\"POST\" action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                <input type=\"hidden\" name=\"csrf_token\" value=\"<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                <input type=\"hidden\" name=\"active_tab\" value=\"<?php echo htmlspecialchars($activeTab, ENT_QUOTES, 'UTF-8'); ?>\">\n                <div class=\"form-check mb-3\">\n                  <input class=\"form-check-input\" type=\"checkbox\" name=\"disableguest\" id=\"disableguest\" <?php if ($disableguest == 'on') echo 'checked'; ?>>\n                  <label class=\"form-check-label\" for=\"disableguest\">Only allow registered users to paste</label>\n                </div>\n                <div class=\"form-check mb-3\">\n                  <input class=\"form-check-input\" type=\"checkbox\" name=\"siteprivate\" id=\"siteprivate\" <?php if ($siteprivate == 'on') echo 'checked'; ?>>\n                  <label class=\"form-check-label\" for=\"siteprivate\">Make site private (no Recent Pastes for non-members)</label>\n                </div>\n                <input type=\"hidden\" name=\"permissions\" value=\"permissions\" />\n                <button type=\"submit\" class=\"btn btn-primary\">Save</button>\n              </form>\n            </div>\n\n            <!-- Captcha -->\n            <div class=\"tab-pane fade <?php echo $activeTab==='captcha'?'show active':''; ?>\" id=\"captcha\" role=\"tabpanel\" aria-labelledby=\"captcha-tab\">\n              <form id=\"captcha-form\" method=\"POST\" action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                <input type=\"hidden\" name=\"csrf_token\" value=\"<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                <input type=\"hidden\" name=\"active_tab\" value=\"<?php echo htmlspecialchars($activeTab, ENT_QUOTES, 'UTF-8'); ?>\">\n                <div class=\"form-check mb-3\">\n                  <input class=\"form-check-input\" type=\"checkbox\" name=\"cap_e\" id=\"cap_e\" <?php if ($cap_e == 'on') echo 'checked'; ?>>\n                  <label class=\"form-check-label\" for=\"cap_e\">Enable Captcha</label>\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"mode\" class=\"form-label\">Captcha Type</label>\n                  <select class=\"form-select\" id=\"mode\" name=\"mode\">\n                    <option value=\"Easy\" <?php if ($mode == 'Easy') echo 'selected'; ?>>Easy</option>\n                    <option value=\"Normal\" <?php if ($mode == 'Normal') echo 'selected'; ?>>Normal</option>\n                    <option value=\"Tough\" <?php if ($mode == 'Tough') echo 'selected'; ?>>Tough</option>\n                    <option value=\"reCAPTCHA\" <?php if ($mode == 'reCAPTCHA') echo 'selected'; ?>>reCAPTCHA</option>\n                  </select>\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"recaptcha_version\" class=\"form-label\">reCAPTCHA Version</label>\n                  <select class=\"form-select\" id=\"recaptcha_version\" name=\"recaptcha_version\">\n                    <option value=\"v2\" <?php if ($recaptcha_version == 'v2') echo 'selected'; ?>>reCAPTCHA v2</option>\n                    <option value=\"v3\" <?php if ($recaptcha_version == 'v3') echo 'selected'; ?>>reCAPTCHA v3</option>\n                  </select>\n                </div>\n                <div class=\"form-check mb-3\">\n                  <input class=\"form-check-input\" type=\"checkbox\" name=\"mul\" id=\"mul\" <?php if ($mul == 'on') echo 'checked'; ?>>\n                  <label class=\"form-check-label\" for=\"mul\">Multiplication Captcha</label>\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"allowed\" class=\"form-label\">Allowed Characters</label>\n                  <input type=\"text\" class=\"form-control\" id=\"allowed\" name=\"allowed\" value=\"<?php echo htmlspecialchars($allowed ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                  <div class=\"form-text\">Characters to use for non-reCAPTCHA captchas</div>\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"color\" class=\"form-label\">Captcha Color</label>\n                  <input type=\"color\" class=\"form-control form-control-color\" id=\"color\" name=\"color\" value=\"<?php echo htmlspecialchars($color ?? '#000000', ENT_QUOTES, 'UTF-8'); ?>\">\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"recaptcha_sitekey\" class=\"form-label\">reCAPTCHA Site Key</label>\n                  <input type=\"text\" class=\"form-control\" id=\"recaptcha_sitekey\" name=\"recaptcha_sitekey\" value=\"<?php echo htmlspecialchars($recaptcha_sitekey ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                  <div class=\"form-text\">Obtain from <a href=\"https://www.google.com/recaptcha/admin\" target=\"_blank\" rel=\"noopener\">Google reCAPTCHA Admin</a></div>\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"recaptcha_secretkey\" class=\"form-label\">reCAPTCHA Secret Key</label>\n                  <input type=\"text\" class=\"form-control\" id=\"recaptcha_secretkey\" name=\"recaptcha_secretkey\" value=\"<?php echo htmlspecialchars($recaptcha_secretkey ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                </div>\n                <input type=\"hidden\" name=\"cap\" value=\"cap\" />\n                <button type=\"submit\" class=\"btn btn-primary\">Save</button>\n                <button type=\"button\" id=\"test-recaptcha\" class=\"btn btn-outline-primary ms-2\">Test reCAPTCHA</button>\n              </form>\n            </div>\n\n            <!-- Mail -->\n            <div class=\"tab-pane fade <?php echo $activeTab==='mail'?'show active':''; ?>\" id=\"mail\" role=\"tabpanel\" aria-labelledby=\"mail-tab\">\n              <form id=\"mail-form\" method=\"POST\" action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                <input type=\"hidden\" name=\"csrf_token\" value=\"<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                <input type=\"hidden\" name=\"active_tab\" value=\"<?php echo htmlspecialchars($activeTab, ENT_QUOTES, 'UTF-8'); ?>\">\n                <div class=\"mb-3\">\n                  <label for=\"verification\" class=\"form-label\">Email Verification</label>\n                  <select class=\"form-select\" id=\"verification\" name=\"verification\">\n                    <option value=\"enabled\" <?php if ($verification == 'enabled') echo 'selected'; ?>>Enabled</option>\n                    <option value=\"disabled\" <?php if ($verification == 'disabled') echo 'selected'; ?>>Disabled</option>\n                  </select>\n                  <div class=\"form-text\">Send verification email when users register</div>\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"protocol\" class=\"form-label\">Mail Protocol</label>\n                  <select class=\"form-select\" id=\"protocol\" name=\"protocol\">\n                    <option value=\"1\" <?php if ($protocol == '1') echo 'selected'; ?>>PHP Mail</option>\n                    <option value=\"2\" <?php if ($protocol == '2') echo 'selected'; ?>>SMTP</option>\n                  </select>\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"smtp_host\" class=\"form-label\">SMTP Host</label>\n                  <input type=\"text\" class=\"form-control\" id=\"smtp_host\" name=\"smtp_host\" placeholder=\"smtp.gmail.com\" value=\"<?php echo htmlspecialchars($smtp_host ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"smtp_port\" class=\"form-label\">SMTP Port</label>\n                  <input type=\"text\" class=\"form-control\" id=\"smtp_port\" name=\"smtp_port\" placeholder=\"587\" value=\"<?php echo htmlspecialchars($smtp_port ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"smtp_user\" class=\"form-label\">SMTP Username</label>\n                  <input type=\"text\" class=\"form-control\" id=\"smtp_user\" name=\"smtp_user\" placeholder=\"username@domain.com\" value=\"<?php echo htmlspecialchars($smtp_username ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                  <div class=\"form-text\">Leave blank if using Gmail SMTP with OAuth</div>\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"smtp_pass\" class=\"form-label\">SMTP Password</label>\n                  <input type=\"password\" class=\"form-control\" id=\"smtp_pass\" name=\"smtp_pass\" placeholder=\"SMTP Password\" value=\"<?php echo htmlspecialchars($smtp_password ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                  <div class=\"form-text\">Leave blank if using Gmail SMTP with OAuth</div>\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"socket\" class=\"form-label\">SMTP Security</label>\n                  <select class=\"form-select\" id=\"socket\" name=\"socket\">\n                    <option value=\"tls\" <?php if ($socket == 'tls') echo 'selected'; ?>>TLS</option>\n                    <option value=\"ssl\" <?php if ($socket == 'ssl') echo 'selected'; ?>>SSL</option>\n                  </select>\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"auth\" class=\"form-label\">SMTP Auth</label>\n                  <select class=\"form-select\" id=\"auth\" name=\"auth\">\n                    <option value=\"true\" <?php if ($auth == 'true') echo 'selected'; ?>>True</option>\n                    <option value=\"false\" <?php if ($auth == 'false') echo 'selected'; ?>>False</option>\n                  </select>\n                </div>\n                <input type=\"hidden\" name=\"smtp_code\" value=\"smtp_code\" />\n                <button type=\"submit\" class=\"btn btn-primary\">Save</button>\n                <button type=\"button\" id=\"test-smtp\" class=\"btn btn-outline-primary ms-2\">Test SMTP</button>\n              </form>\n\n              <form method=\"POST\" action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\" class=\"mt-4\">\n                <input type=\"hidden\" name=\"csrf_token\" value=\"<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                <input type=\"hidden\" name=\"active_tab\" value=\"<?php echo htmlspecialchars($activeTab, ENT_QUOTES, 'UTF-8'); ?>\">\n                <div class=\"mb-3\">\n                  <label for=\"client_id\" class=\"form-label\">Client ID</label>\n                  <input type=\"text\" class=\"form-control\" id=\"client_id\" name=\"client_id\" placeholder=\"Client ID\" value=\"<?php echo htmlspecialchars($oauth_client_id ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                  <div class=\"form-text\">Obtain from <a href=\"https://console.developers.google.com\" target=\"_blank\" rel=\"noopener\">Google Cloud Console</a></div>\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"client_secret\" class=\"form-label\">Client Secret</label>\n                  <input type=\"text\" class=\"form-control\" id=\"client_secret\" name=\"client_secret\" placeholder=\"Client Secret\" value=\"<?php echo htmlspecialchars($oauth_client_secret ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                </div>\n                <div class=\"mb-3\">\n                  <label for=\"redirect_uri\" class=\"form-label\">Redirect URI</label>\n                  <input type=\"text\" class=\"form-control\" id=\"redirect_uri\" readonly value=\"<?php echo htmlspecialchars($redirect_uri ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                  <div class=\"form-text\">Use this URI in Google Cloud Console for OAuth configuration</div>\n                </div>\n                <div class=\"mb-3\">\n                  <label class=\"form-label\">OAuth Status</label>\n                  <div class=\"form-text\"><?php echo htmlspecialchars($oauth_status ?? '', ENT_QUOTES, 'UTF-8'); ?></div>\n                  <?php if (empty($oauth_refresh_token)): ?>\n                    <p class=\"mt-2\"><a href=\"../oauth/google_smtp.php\" class=\"btn btn-primary\">Authorize Gmail SMTP</a></p>\n                  <?php endif; ?>\n                </div>\n                <input type=\"hidden\" name=\"save_oauth_credentials\" value=\"save_oauth_credentials\" />\n                <button type=\"submit\" class=\"btn btn-primary\">Save OAuth Credentials</button>\n              </form>\n            </div>\n          </div><!-- /.tab-content -->\n        </div>\n      </div>\n\n      <div class=\"text-muted small mt-3\">\n        Powered by <a class=\"text-decoration-none\" href=\"https://phpaste.sourceforge.io\" target=\"_blank\">Paste</a>\n      </div>\n    </div><!-- /.col-lg-10 -->\n  </div><!-- /.row -->\n</div><!-- /.container -->\n\n<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js\" crossorigin=\"anonymous\"></script>\n<script>\n  // reCAPTCHA TEST\n  $('#test-recaptcha').on('click', function(e) {\n    e.preventDefault();\n    var $button = $(this);\n    $button.prop('disabled', true).text('Testing...');\n    var formData = $('#captcha-form').serialize() + '&test_recaptcha=1&csrf_token=' + encodeURIComponent($('input[name=\"csrf_token\"]').val());\n    $.ajax({\n      url: '<?php echo htmlspecialchars($_SERVER['PHP_SELF'] ?? '', ENT_QUOTES, 'UTF-8'); ?>',\n      type: 'POST',\n      data: formData,\n      dataType: 'json',\n      success: function(response) {\n        $('#message-container').html(response.message);\n        setTimeout(function() { $('#message-container').empty(); }, 6000);\n      },\n      error: function(xhr, status, error) {\n        $('#message-container').html('<div class=\"alert alert-danger text-center\">Failed to test reCAPTCHA: ' + error + '</div>');\n        setTimeout(function() { $('#message-container').empty(); }, 6000);\n      },\n      complete: function() {\n        $button.prop('disabled', false).text('Test reCAPTCHA');\n      }\n    });\n  });\n\n  // SMTP TEST\n  $('#test-smtp').on('click', function(e) {\n    e.preventDefault();\n    var $button = $(this);\n    $button.prop('disabled', true).text('Testing...');\n    var formData = $('#mail-form').serialize() + '&test_smtp=1&csrf_token=' + encodeURIComponent($('input[name=\"csrf_token\"]').val());\n    $.ajax({\n      url: '<?php echo htmlspecialchars($_SERVER['PHP_SELF'] ?? '', ENT_QUOTES, 'UTF-8'); ?>',\n      type: 'POST',\n      data: formData,\n      dataType: 'json',\n      success: function(response) {\n        $('#message-container').html(response.message);\n        setTimeout(function() { $('#message-container').empty(); }, 6000);\n      },\n      error: function(xhr, status, error) {\n        $('#message-container').html('<div class=\"alert alert-danger text-center\">Failed to test SMTP: ' + error + '</div>');\n        setTimeout(function() { $('#message-container').empty(); }, 6000);\n      },\n      complete: function() {\n        $button.prop('disabled', false).text('Test SMTP');\n      }\n    });\n  });\n\n  // Keep active tab after Save + support URL hashes\n  document.addEventListener('DOMContentLoaded', () => {\n    const tabs = document.getElementById('configTabs');\n    const setHiddenInputs = (tabId) => {\n      document.querySelectorAll('form input[name=\"active_tab\"]').forEach(i => i.value = tabId);\n    };\n    const initial = '<?php echo htmlspecialchars($activeTab, ENT_QUOTES, \"UTF-8\"); ?>';\n    setHiddenInputs(initial);\n\n    tabs?.addEventListener('shown.bs.tab', (e) => {\n      const id = e.target?.getAttribute('data-bs-target')?.replace('#','') || 'siteinfo';\n      setHiddenInputs(id);\n      history.replaceState(null, '', '#' + id);\n      try { localStorage.setItem('config.activeTab', id); } catch(e){}\n    });\n\n    // If URL has hash on load, Bootstrap will handle via markup; localStorage fallback not required here.\n  });\n</script>\n</body>\n</html>\n<?php\nif (isset($_GET['logout'])) {\n    error_log(\"configuration.php: Admin logout requested for admin_login: {$_SESSION['admin_login']}, Session ID: \" . session_id());\n    $_SESSION = [];\n    session_destroy();\n    ob_end_clean();\n    header('Location: index.php');\n    exit();\n}\nob_end_flush();\n"
  },
  {
    "path": "admin/css/bootstrap.css",
    "content": "/*!\n * Bootstrap v3.3.2 (http://getbootstrap.com)\n * Copyright 2011-2015 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\nhtml {\n  font-family: sans-serif;\n  -webkit-text-size-adjust: 100%;\n      -ms-text-size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  margin: .67em 0;\n  font-size: 2em;\n}\nmark {\n  color: #000;\n  background: #ff0;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\nsup {\n  top: -.5em;\n}\nsub {\n  bottom: -.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  height: 0;\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  margin: 0;\n  font: inherit;\n  color: inherit;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  padding: 0;\n  border: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: content-box;\n     -moz-box-sizing: content-box;\n          box-sizing: content-box;\n  -webkit-appearance: textfield;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  padding: .35em .625em .75em;\n  margin: 0 2px;\n  border: 1px solid #c0c0c0;\n}\nlegend {\n  padding: 0;\n  border: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-spacing: 0;\n  border-collapse: collapse;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    -webkit-box-shadow: none !important;\n            box-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  select {\n    background: #fff !important;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n\n  src: url('../fonts/glyphicons-halflings-regular.eot');\n  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\2a\";\n}\n.glyphicon-plus:before {\n  content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.glyphicon-king:before {\n  content: \"\\e211\";\n}\n.glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.glyphicon-tent:before {\n  content: \"\\26fa\";\n}\n.glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.glyphicon-hourglass:before {\n  content: \"\\231b\";\n}\n.glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.glyphicon-yen:before {\n  content: \"\\00a5\";\n}\n.glyphicon-ruble:before {\n  content: \"\\20bd\";\n}\n.glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.glyphicon-education:before {\n  content: \"\\e233\";\n}\n.glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.glyphicon-console:before {\n  content: \"\\e254\";\n}\n.glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n* {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333;\n  background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: all .2s ease-in-out;\n       -o-transition: all .2s ease-in-out;\n          transition: all .2s ease-in-out;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: normal;\n  line-height: 1;\n  color: #777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  padding: .2em;\n  background-color: #fcf8e3;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777;\n}\n.text-primary {\n  color: #337ab7;\n}\na.text-primary:hover {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid #eee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  margin-left: -5px;\n  list-style: none;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-right: 5px;\n  padding-left: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    overflow: hidden;\n    clear: left;\n    text-align: right;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #777;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid #eee;\n  border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: '\\00A0 \\2014';\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: bold;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  color: #333;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n.row {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  right: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9 {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n  .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;\n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-left: 0;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0;\n  }\n}\ntable {\n  background-color: transparent;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.table > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 22px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.table .table {\n  background-color: #fff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-bordered {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\ntable col[class*=\"col-\"] {\n  position: static;\n  display: table-column;\n  float: none;\n}\ntable td[class*=\"col-\"],\ntable th[class*=\"col-\"] {\n  position: static;\n  display: table-cell;\n  float: none;\n}\n.table > thead > tr > td.active,\n.table > tbody > tr > td.active,\n.table > tfoot > tr > td.active,\n.table > thead > tr > th.active,\n.table > tbody > tr > th.active,\n.table > tfoot > tr > th.active,\n.table > thead > tr.active > td,\n.table > tbody > tr.active > td,\n.table > tfoot > tr.active > td,\n.table > thead > tr.active > th,\n.table > tbody > tr.active > th,\n.table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.table-hover > tbody > tr > td.active:hover,\n.table-hover > tbody > tr > th.active:hover,\n.table-hover > tbody > tr.active:hover > td,\n.table-hover > tbody > tr:hover > .active,\n.table-hover > tbody > tr.active:hover > th {\n  background-color: #e8e8e8;\n}\n.table > thead > tr > td.success,\n.table > tbody > tr > td.success,\n.table > tfoot > tr > td.success,\n.table > thead > tr > th.success,\n.table > tbody > tr > th.success,\n.table > tfoot > tr > th.success,\n.table > thead > tr.success > td,\n.table > tbody > tr.success > td,\n.table > tfoot > tr.success > td,\n.table > thead > tr.success > th,\n.table > tbody > tr.success > th,\n.table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.table-hover > tbody > tr > td.success:hover,\n.table-hover > tbody > tr > th.success:hover,\n.table-hover > tbody > tr.success:hover > td,\n.table-hover > tbody > tr:hover > .success,\n.table-hover > tbody > tr.success:hover > th {\n  background-color: #d0e9c6;\n}\n.table > thead > tr > td.info,\n.table > tbody > tr > td.info,\n.table > tfoot > tr > td.info,\n.table > thead > tr > th.info,\n.table > tbody > tr > th.info,\n.table > tfoot > tr > th.info,\n.table > thead > tr.info > td,\n.table > tbody > tr.info > td,\n.table > tfoot > tr.info > td,\n.table > thead > tr.info > th,\n.table > tbody > tr.info > th,\n.table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.table-hover > tbody > tr > td.info:hover,\n.table-hover > tbody > tr > th.info:hover,\n.table-hover > tbody > tr.info:hover > td,\n.table-hover > tbody > tr:hover > .info,\n.table-hover > tbody > tr.info:hover > th {\n  background-color: #c4e3f3;\n}\n.table > thead > tr > td.warning,\n.table > tbody > tr > td.warning,\n.table > tfoot > tr > td.warning,\n.table > thead > tr > th.warning,\n.table > tbody > tr > th.warning,\n.table > tfoot > tr > th.warning,\n.table > thead > tr.warning > td,\n.table > tbody > tr.warning > td,\n.table > tfoot > tr.warning > td,\n.table > thead > tr.warning > th,\n.table > tbody > tr.warning > th,\n.table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.table-hover > tbody > tr > td.warning:hover,\n.table-hover > tbody > tr > th.warning:hover,\n.table-hover > tbody > tr.warning:hover > td,\n.table-hover > tbody > tr:hover > .warning,\n.table-hover > tbody > tr.warning:hover > th {\n  background-color: #faf2cc;\n}\n.table > thead > tr > td.danger,\n.table > tbody > tr > td.danger,\n.table > tfoot > tr > td.danger,\n.table > thead > tr > th.danger,\n.table > tbody > tr > th.danger,\n.table > tfoot > tr > th.danger,\n.table > thead > tr.danger > td,\n.table > tbody > tr.danger > td,\n.table > tfoot > tr.danger > td,\n.table > thead > tr.danger > th,\n.table > tbody > tr.danger > th,\n.table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.table-hover > tbody > tr > td.danger:hover,\n.table-hover > tbody > tr > th.danger:hover,\n.table-hover > tbody > tr.danger:hover > td,\n.table-hover > tbody > tr:hover > .danger,\n.table-hover > tbody > tr.danger:hover > th {\n  background-color: #ebcccc;\n}\n.table-responsive {\n  min-height: .01%;\n  overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n  .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .table-responsive > .table > thead > tr > th,\n  .table-responsive > .table > tbody > tr > th,\n  .table-responsive > .table > tfoot > tr > th,\n  .table-responsive > .table > thead > tr > td,\n  .table-responsive > .table > tbody > tr > td,\n  .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\nlegend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\nlabel {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: bold;\n}\ninput[type=\"search\"] {\n  -webkit-box-sizing: border-box;\n     -moz-box-sizing: border-box;\n          box-sizing: border-box;\n}\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9;\n  line-height: normal;\n}\ninput[type=\"file\"] {\n  display: block;\n}\ninput[type=\"range\"] {\n  display: block;\n  width: 100%;\n}\nselect[multiple],\nselect[size] {\n  height: auto;\n}\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\noutput {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n}\n.form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;\n       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;\n}\n.form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);\n}\n.form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.form-control:-ms-input-placeholder {\n  color: #999;\n}\n.form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.form-control[disabled],\n.form-control[readonly],\nfieldset[disabled] .form-control {\n  cursor: not-allowed;\n  background-color: #eee;\n  opacity: 1;\n}\ntextarea.form-control {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: none;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  input[type=\"date\"],\n  input[type=\"time\"],\n  input[type=\"datetime-local\"],\n  input[type=\"month\"] {\n    line-height: 34px;\n  }\n  input[type=\"date\"].input-sm,\n  input[type=\"time\"].input-sm,\n  input[type=\"datetime-local\"].input-sm,\n  input[type=\"month\"].input-sm,\n  .input-group-sm input[type=\"date\"],\n  .input-group-sm input[type=\"time\"],\n  .input-group-sm input[type=\"datetime-local\"],\n  .input-group-sm input[type=\"month\"] {\n    line-height: 30px;\n  }\n  input[type=\"date\"].input-lg,\n  input[type=\"time\"].input-lg,\n  input[type=\"datetime-local\"].input-lg,\n  input[type=\"month\"].input-lg,\n  .input-group-lg input[type=\"date\"],\n  .input-group-lg input[type=\"time\"],\n  .input-group-lg input[type=\"datetime-local\"],\n  .input-group-lg input[type=\"month\"] {\n    line-height: 46px;\n  }\n}\n.form-group {\n  margin-bottom: 15px;\n}\n.radio,\n.checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.radio label,\n.checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  cursor: pointer;\n}\n.radio input[type=\"radio\"],\n.radio-inline input[type=\"radio\"],\n.checkbox input[type=\"checkbox\"],\n.checkbox-inline input[type=\"checkbox\"] {\n  position: absolute;\n  margin-top: 4px \\9;\n  margin-left: -20px;\n}\n.radio + .radio,\n.checkbox + .checkbox {\n  margin-top: -5px;\n}\n.radio-inline,\n.checkbox-inline {\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: normal;\n  vertical-align: middle;\n  cursor: pointer;\n}\n.radio-inline + .radio-inline,\n.checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\ninput[type=\"radio\"][disabled],\ninput[type=\"checkbox\"][disabled],\ninput[type=\"radio\"].disabled,\ninput[type=\"checkbox\"].disabled,\nfieldset[disabled] input[type=\"radio\"],\nfieldset[disabled] input[type=\"checkbox\"] {\n  cursor: not-allowed;\n}\n.radio-inline.disabled,\n.checkbox-inline.disabled,\nfieldset[disabled] .radio-inline,\nfieldset[disabled] .checkbox-inline {\n  cursor: not-allowed;\n}\n.radio.disabled label,\n.checkbox.disabled label,\nfieldset[disabled] .radio label,\nfieldset[disabled] .checkbox label {\n  cursor: not-allowed;\n}\n.form-control-static {\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n}\n.form-control-static.input-lg,\n.form-control-static.input-sm {\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-sm {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-sm {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-sm,\nselect[multiple].input-sm {\n  height: auto;\n}\n.form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.form-group-sm .form-control {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.form-group-sm .form-control,\nselect[multiple].form-group-sm .form-control {\n  height: auto;\n}\n.form-group-sm .form-control-static {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.input-lg {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-lg {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-lg,\nselect[multiple].input-lg {\n  height: auto;\n}\n.form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.form-group-lg .form-control {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.form-group-lg .form-control,\nselect[multiple].form-group-lg .form-control {\n  height: auto;\n}\n.form-group-lg .form-control-static {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.has-feedback {\n  position: relative;\n}\n.has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.input-lg + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.input-sm + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.has-success .form-control {\n  border-color: #3c763d;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-success .form-control:focus {\n  border-color: #2b542c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;\n}\n.has-success .input-group-addon {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #3c763d;\n}\n.has-success .form-control-feedback {\n  color: #3c763d;\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.has-warning .form-control {\n  border-color: #8a6d3b;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-warning .form-control:focus {\n  border-color: #66512c;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;\n}\n.has-warning .input-group-addon {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #8a6d3b;\n}\n.has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n  color: #a94442;\n}\n.has-error .form-control {\n  border-color: #a94442;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\n}\n.has-error .form-control:focus {\n  border-color: #843534;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;\n}\n.has-error .input-group-addon {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #a94442;\n}\n.has-error .form-control-feedback {\n  color: #a94442;\n}\n.has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #737373;\n}\n@media (min-width: 768px) {\n  .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .form-inline .input-group .input-group-addon,\n  .form-inline .input-group .input-group-btn,\n  .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio,\n  .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .form-inline .radio label,\n  .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .form-inline .radio input[type=\"radio\"],\n  .form-inline .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox,\n.form-horizontal .radio-inline,\n.form-horizontal .checkbox-inline {\n  padding-top: 7px;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.form-horizontal .radio,\n.form-horizontal .checkbox {\n  min-height: 27px;\n}\n.form-horizontal .form-group {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .control-label {\n    padding-top: 7px;\n    margin-bottom: 0;\n    text-align: right;\n  }\n}\n.form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-lg .control-label {\n    padding-top: 14.333333px;\n  }\n}\n@media (min-width: 768px) {\n  .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n  }\n}\n.btn {\n  display: inline-block;\n  padding: 6px 12px;\n  margin-bottom: 0;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  -ms-touch-action: manipulation;\n      touch-action: manipulation;\n  cursor: pointer;\n  -webkit-user-select: none;\n     -moz-user-select: none;\n      -ms-user-select: none;\n          user-select: none;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.btn:hover,\n.btn:focus,\n.btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n  outline: 0;\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n  pointer-events: none;\n  cursor: not-allowed;\n  filter: alpha(opacity=65);\n  -webkit-box-shadow: none;\n          box-shadow: none;\n  opacity: .65;\n}\n.btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus,\n.btn-default.focus,\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  color: #333;\n  background-color: #e6e6e6;\n  border-color: #adadad;\n}\n.btn-default:active,\n.btn-default.active,\n.open > .dropdown-toggle.btn-default {\n  background-image: none;\n}\n.btn-default.disabled,\n.btn-default[disabled],\nfieldset[disabled] .btn-default,\n.btn-default.disabled:hover,\n.btn-default[disabled]:hover,\nfieldset[disabled] .btn-default:hover,\n.btn-default.disabled:focus,\n.btn-default[disabled]:focus,\nfieldset[disabled] .btn-default:focus,\n.btn-default.disabled.focus,\n.btn-default[disabled].focus,\nfieldset[disabled] .btn-default.focus,\n.btn-default.disabled:active,\n.btn-default[disabled]:active,\nfieldset[disabled] .btn-default:active,\n.btn-default.disabled.active,\n.btn-default[disabled].active,\nfieldset[disabled] .btn-default.active {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.btn-primary {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary.focus,\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  color: #fff;\n  background-color: #286090;\n  border-color: #204d74;\n}\n.btn-primary:active,\n.btn-primary.active,\n.open > .dropdown-toggle.btn-primary {\n  background-image: none;\n}\n.btn-primary.disabled,\n.btn-primary[disabled],\nfieldset[disabled] .btn-primary,\n.btn-primary.disabled:hover,\n.btn-primary[disabled]:hover,\nfieldset[disabled] .btn-primary:hover,\n.btn-primary.disabled:focus,\n.btn-primary[disabled]:focus,\nfieldset[disabled] .btn-primary:focus,\n.btn-primary.disabled.focus,\n.btn-primary[disabled].focus,\nfieldset[disabled] .btn-primary.focus,\n.btn-primary.disabled:active,\n.btn-primary[disabled]:active,\nfieldset[disabled] .btn-primary:active,\n.btn-primary.disabled.active,\n.btn-primary[disabled].active,\nfieldset[disabled] .btn-primary.active {\n  background-color: #337ab7;\n  border-color: #2e6da4;\n}\n.btn-primary .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success:hover,\n.btn-success:focus,\n.btn-success.focus,\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  color: #fff;\n  background-color: #449d44;\n  border-color: #398439;\n}\n.btn-success:active,\n.btn-success.active,\n.open > .dropdown-toggle.btn-success {\n  background-image: none;\n}\n.btn-success.disabled,\n.btn-success[disabled],\nfieldset[disabled] .btn-success,\n.btn-success.disabled:hover,\n.btn-success[disabled]:hover,\nfieldset[disabled] .btn-success:hover,\n.btn-success.disabled:focus,\n.btn-success[disabled]:focus,\nfieldset[disabled] .btn-success:focus,\n.btn-success.disabled.focus,\n.btn-success[disabled].focus,\nfieldset[disabled] .btn-success.focus,\n.btn-success.disabled:active,\n.btn-success[disabled]:active,\nfieldset[disabled] .btn-success:active,\n.btn-success.disabled.active,\n.btn-success[disabled].active,\nfieldset[disabled] .btn-success.active {\n  background-color: #5cb85c;\n  border-color: #4cae4c;\n}\n.btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info:hover,\n.btn-info:focus,\n.btn-info.focus,\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  color: #fff;\n  background-color: #31b0d5;\n  border-color: #269abc;\n}\n.btn-info:active,\n.btn-info.active,\n.open > .dropdown-toggle.btn-info {\n  background-image: none;\n}\n.btn-info.disabled,\n.btn-info[disabled],\nfieldset[disabled] .btn-info,\n.btn-info.disabled:hover,\n.btn-info[disabled]:hover,\nfieldset[disabled] .btn-info:hover,\n.btn-info.disabled:focus,\n.btn-info[disabled]:focus,\nfieldset[disabled] .btn-info:focus,\n.btn-info.disabled.focus,\n.btn-info[disabled].focus,\nfieldset[disabled] .btn-info.focus,\n.btn-info.disabled:active,\n.btn-info[disabled]:active,\nfieldset[disabled] .btn-info:active,\n.btn-info.disabled.active,\n.btn-info[disabled].active,\nfieldset[disabled] .btn-info.active {\n  background-color: #5bc0de;\n  border-color: #46b8da;\n}\n.btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning.focus,\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  color: #fff;\n  background-color: #ec971f;\n  border-color: #d58512;\n}\n.btn-warning:active,\n.btn-warning.active,\n.open > .dropdown-toggle.btn-warning {\n  background-image: none;\n}\n.btn-warning.disabled,\n.btn-warning[disabled],\nfieldset[disabled] .btn-warning,\n.btn-warning.disabled:hover,\n.btn-warning[disabled]:hover,\nfieldset[disabled] .btn-warning:hover,\n.btn-warning.disabled:focus,\n.btn-warning[disabled]:focus,\nfieldset[disabled] .btn-warning:focus,\n.btn-warning.disabled.focus,\n.btn-warning[disabled].focus,\nfieldset[disabled] .btn-warning.focus,\n.btn-warning.disabled:active,\n.btn-warning[disabled]:active,\nfieldset[disabled] .btn-warning:active,\n.btn-warning.disabled.active,\n.btn-warning[disabled].active,\nfieldset[disabled] .btn-warning.active {\n  background-color: #f0ad4e;\n  border-color: #eea236;\n}\n.btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger.focus,\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  color: #fff;\n  background-color: #c9302c;\n  border-color: #ac2925;\n}\n.btn-danger:active,\n.btn-danger.active,\n.open > .dropdown-toggle.btn-danger {\n  background-image: none;\n}\n.btn-danger.disabled,\n.btn-danger[disabled],\nfieldset[disabled] .btn-danger,\n.btn-danger.disabled:hover,\n.btn-danger[disabled]:hover,\nfieldset[disabled] .btn-danger:hover,\n.btn-danger.disabled:focus,\n.btn-danger[disabled]:focus,\nfieldset[disabled] .btn-danger:focus,\n.btn-danger.disabled.focus,\n.btn-danger[disabled].focus,\nfieldset[disabled] .btn-danger.focus,\n.btn-danger.disabled:active,\n.btn-danger[disabled]:active,\nfieldset[disabled] .btn-danger:active,\n.btn-danger.disabled.active,\n.btn-danger[disabled].active,\nfieldset[disabled] .btn-danger.active {\n  background-color: #d9534f;\n  border-color: #d43f3a;\n}\n.btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.btn-link {\n  font-weight: normal;\n  color: #337ab7;\n  border-radius: 0;\n}\n.btn-link,\n.btn-link:active,\n.btn-link.active,\n.btn-link[disabled],\nfieldset[disabled] .btn-link {\n  background-color: transparent;\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn-link,\n.btn-link:hover,\n.btn-link:focus,\n.btn-link:active {\n  border-color: transparent;\n}\n.btn-link:hover,\n.btn-link:focus {\n  color: #23527c;\n  text-decoration: underline;\n  background-color: transparent;\n}\n.btn-link[disabled]:hover,\nfieldset[disabled] .btn-link:hover,\n.btn-link[disabled]:focus,\nfieldset[disabled] .btn-link:focus {\n  color: #777;\n  text-decoration: none;\n}\n.btn-lg,\n.btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.btn-sm,\n.btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-xs,\n.btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.btn-block {\n  display: block;\n  width: 100%;\n}\n.btn-block + .btn-block {\n  margin-top: 5px;\n}\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n.fade {\n  opacity: 0;\n  -webkit-transition: opacity .15s linear;\n       -o-transition: opacity .15s linear;\n          transition: opacity .15s linear;\n}\n.fade.in {\n  opacity: 1;\n}\n.collapse {\n  display: none;\n  visibility: hidden;\n}\n.collapse.in {\n  display: block;\n  visibility: visible;\n}\ntr.collapse.in {\n  display: table-row;\n}\ntbody.collapse.in {\n  display: table-row-group;\n}\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  -webkit-transition-timing-function: ease;\n       -o-transition-timing-function: ease;\n          transition-timing-function: ease;\n  -webkit-transition-duration: .35s;\n       -o-transition-duration: .35s;\n          transition-duration: .35s;\n  -webkit-transition-property: height, visibility;\n       -o-transition-property: height, visibility;\n          transition-property: height, visibility;\n}\n.caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px solid;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.dropup,\n.dropdown {\n  position: relative;\n}\n.dropdown-toggle:focus {\n  outline: 0;\n}\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  font-size: 14px;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .15);\n  border-radius: 4px;\n  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);\n}\n.dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: normal;\n  line-height: 1.42857143;\n  color: #333;\n  white-space: nowrap;\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  color: #262626;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #337ab7;\n  outline: 0;\n}\n.dropdown-menu > .disabled > a,\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  color: #777;\n}\n.dropdown-menu > .disabled > a:hover,\n.dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.open > .dropdown-menu {\n  display: block;\n}\n.open > a {\n  outline: 0;\n}\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n.dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n.dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.42857143;\n  color: #777;\n  white-space: nowrap;\n}\n.dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 990;\n}\n.pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.dropup .caret,\n.navbar-fixed-bottom .dropdown .caret {\n  content: \"\";\n  border-top: 0;\n  border-bottom: 4px solid;\n}\n.dropup .dropdown-menu,\n.navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n  .navbar-right .dropdown-menu-left {\n    right: auto;\n    left: 0;\n  }\n}\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover,\n.btn-group > .btn:focus,\n.btn-group-vertical > .btn:focus,\n.btn-group > .btn:active,\n.btn-group-vertical > .btn:active,\n.btn-group > .btn.active,\n.btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.btn-toolbar {\n  margin-left: -5px;\n}\n.btn-toolbar .btn-group,\n.btn-toolbar .input-group {\n  float: left;\n}\n.btn-toolbar > .btn,\n.btn-toolbar > .btn-group,\n.btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn:last-child:not(:first-child),\n.btn-group > .dropdown-toggle:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group > .btn-group {\n  float: left;\n}\n.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group .dropdown-toggle:active,\n.btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.btn-group > .btn-lg + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n.btn-group.open .dropdown-toggle {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);\n}\n.btn-group.open .dropdown-toggle.btn-link {\n  -webkit-box-shadow: none;\n          box-shadow: none;\n}\n.btn .caret {\n  margin-left: 0;\n}\n.btn-lg .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.dropup .btn-lg .caret {\n  border-width: 0 5px 5px;\n}\n.btn-group-vertical > .btn,\n.btn-group-vertical > .btn-group,\n.btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-left-radius: 4px;\n}\n.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.btn-group-justified > .btn,\n.btn-group-justified > .btn-group {\n  display: table-cell;\n  float: none;\n  width: 1%;\n}\n.btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n[data-toggle=\"buttons\"] > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"radio\"],\n[data-toggle=\"buttons\"] > .btn input[type=\"checkbox\"],\n[data-toggle=\"buttons\"] > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.input-group[class*=\"col-\"] {\n  float: none;\n  padding-right: 0;\n  padding-left: 0;\n}\n.input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-addon,\n.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\nselect.input-group-lg > .form-control,\nselect.input-group-lg > .input-group-addon,\nselect.input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  line-height: 46px;\n}\ntextarea.input-group-lg > .form-control,\ntextarea.input-group-lg > .input-group-addon,\ntextarea.input-group-lg > .input-group-btn > .btn,\nselect[multiple].input-group-lg > .form-control,\nselect[multiple].input-group-lg > .input-group-addon,\nselect[multiple].input-group-lg > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-addon,\n.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\nselect.input-group-sm > .form-control,\nselect.input-group-sm > .input-group-addon,\nselect.input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  line-height: 30px;\n}\ntextarea.input-group-sm > .form-control,\ntextarea.input-group-sm > .input-group-addon,\ntextarea.input-group-sm > .input-group-btn > .btn,\nselect[multiple].input-group-sm > .form-control,\nselect[multiple].input-group-sm > .input-group-addon,\nselect[multiple].input-group-sm > .input-group-btn > .btn {\n  height: auto;\n}\n.input-group-addon,\n.input-group-btn,\n.input-group .form-control {\n  display: table-cell;\n}\n.input-group-addon:not(:first-child):not(:last-child),\n.input-group-btn:not(:first-child):not(:last-child),\n.input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.input-group-addon,\n.input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1;\n  color: #555;\n  text-align: center;\n  background-color: #eee;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.input-group-addon.input-sm {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.input-group-addon.input-lg {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.input-group-addon input[type=\"radio\"],\n.input-group-addon input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n.input-group .form-control:first-child,\n.input-group-addon:first-child,\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group > .btn,\n.input-group-btn:first-child > .dropdown-toggle,\n.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.input-group-addon:first-child {\n  border-right: 0;\n}\n.input-group .form-control:last-child,\n.input-group-addon:last-child,\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group > .btn,\n.input-group-btn:last-child > .dropdown-toggle,\n.input-group-btn:first-child > .btn:not(:first-child),\n.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.input-group-addon:last-child {\n  border-left: 0;\n}\n.input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.input-group-btn > .btn {\n  position: relative;\n}\n.input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.input-group-btn > .btn:hover,\n.input-group-btn > .btn:focus,\n.input-group-btn > .btn:active {\n  z-index: 2;\n}\n.input-group-btn:first-child > .btn,\n.input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.input-group-btn:last-child > .btn,\n.input-group-btn:last-child > .btn-group {\n  margin-left: -1px;\n}\n.nav {\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.nav > li {\n  position: relative;\n  display: block;\n}\n.nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.nav > li > a:hover,\n.nav > li > a:focus {\n  text-decoration: none;\n}\n.nav > li.disabled > a {\n  color: #777;\n}\n.nav > li.disabled > a:hover,\n.nav > li.disabled > a:focus {\n  color: #777;\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n}\n.nav .open > a,\n.nav .open > a:hover,\n.nav .open > a:focus {\n  background-color: #eee;\n  border-color: #337ab7;\n}\n.nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.nav > li > a > img {\n  max-width: none;\n}\n.nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.42857143;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.nav-tabs > li > a:hover {\n  border-color: #eee #eee #ddd;\n}\n.nav-tabs > li.active > a,\n.nav-tabs > li.active > a:hover,\n.nav-tabs > li.active > a:focus {\n  color: #555;\n  cursor: default;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n.nav-tabs.nav-justified {\n  width: 100%;\n  border-bottom: 0;\n}\n.nav-tabs.nav-justified > li {\n  float: none;\n}\n.nav-tabs.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-tabs.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs.nav-justified > .active > a,\n.nav-tabs.nav-justified > .active > a:hover,\n.nav-tabs.nav-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs.nav-justified > .active > a,\n  .nav-tabs.nav-justified > .active > a:hover,\n  .nav-tabs.nav-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.nav-pills > li {\n  float: left;\n}\n.nav-pills > li > a {\n  border-radius: 4px;\n}\n.nav-pills > li + li {\n  margin-left: 2px;\n}\n.nav-pills > li.active > a,\n.nav-pills > li.active > a:hover,\n.nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: #337ab7;\n}\n.nav-stacked > li {\n  float: none;\n}\n.nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.nav-justified {\n  width: 100%;\n}\n.nav-justified > li {\n  float: none;\n}\n.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.nav-tabs-justified {\n  border-bottom: 0;\n}\n.nav-tabs-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.nav-tabs-justified > .active > a,\n.nav-tabs-justified > .active > a:hover,\n.nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .nav-tabs-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .nav-tabs-justified > .active > a,\n  .nav-tabs-justified > .active > a:hover,\n  .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.tab-content > .tab-pane {\n  display: none;\n  visibility: hidden;\n}\n.tab-content > .active {\n  display: block;\n  visibility: visible;\n}\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n@media (min-width: 768px) {\n  .navbar {\n    border-radius: 4px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-header {\n    float: left;\n  }\n}\n.navbar-collapse {\n  padding-right: 15px;\n  padding-left: 15px;\n  overflow-x: visible;\n  -webkit-overflow-scrolling: touch;\n  border-top: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);\n}\n.navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n    visibility: visible !important;\n  }\n  .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-static-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n.navbar-fixed-top .navbar-collapse,\n.navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .navbar-fixed-top .navbar-collapse,\n  .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n.container > .navbar-header,\n.container-fluid > .navbar-header,\n.container > .navbar-collapse,\n.container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .container > .navbar-header,\n  .container-fluid > .navbar-header,\n  .container > .navbar-collapse,\n  .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n@media (min-width: 768px) {\n  .navbar-fixed-top,\n  .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.navbar-brand {\n  float: left;\n  height: 50px;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.navbar-brand:hover,\n.navbar-brand:focus {\n  text-decoration: none;\n}\n.navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .navbar-brand,\n  .navbar > .container-fluid .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-top: 8px;\n  margin-right: 15px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.navbar-toggle:focus {\n  outline: 0;\n}\n.navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .navbar-toggle {\n    display: none;\n  }\n}\n.navbar-nav {\n  margin: 7.5px -15px;\n}\n.navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n  .navbar-nav .open .dropdown-menu > li > a,\n  .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .navbar-nav > li {\n    float: left;\n  }\n  .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.navbar-form {\n  padding: 10px 15px;\n  margin-top: 8px;\n  margin-right: -15px;\n  margin-bottom: 8px;\n  margin-left: -15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);\n}\n@media (min-width: 768px) {\n  .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .navbar-form .input-group .input-group-addon,\n  .navbar-form .input-group .input-group-btn,\n  .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio,\n  .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .navbar-form .radio label,\n  .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .navbar-form .radio input[type=\"radio\"],\n  .navbar-form .checkbox input[type=\"checkbox\"] {\n    position: relative;\n    margin-left: 0;\n  }\n  .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-form {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    -webkit-box-shadow: none;\n            box-shadow: none;\n  }\n}\n.navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.navbar-btn.btn-sm {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.navbar-btn.btn-xs {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .navbar-text {\n    float: left;\n    margin-right: 15px;\n    margin-left: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .navbar-left {\n    float: left !important;\n  }\n  .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.navbar-default {\n  background-color: #f8f8f8;\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-brand {\n  color: #777;\n}\n.navbar-default .navbar-brand:hover,\n.navbar-default .navbar-brand:focus {\n  color: #5e5e5e;\n  background-color: transparent;\n}\n.navbar-default .navbar-text {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.navbar-default .navbar-nav > li > a:hover,\n.navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.navbar-default .navbar-nav > .active > a,\n.navbar-default .navbar-nav > .active > a:hover,\n.navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .disabled > a,\n.navbar-default .navbar-nav > .disabled > a:hover,\n.navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.navbar-default .navbar-toggle:hover,\n.navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.navbar-default .navbar-collapse,\n.navbar-default .navbar-form {\n  border-color: #e7e7e7;\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .open > a:hover,\n.navbar-default .navbar-nav > .open > a:focus {\n  color: #555;\n  background-color: #e7e7e7;\n}\n@media (max-width: 767px) {\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: #e7e7e7;\n  }\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.navbar-default .navbar-link {\n  color: #777;\n}\n.navbar-default .navbar-link:hover {\n  color: #333;\n}\n.navbar-default .btn-link {\n  color: #777;\n}\n.navbar-default .btn-link:hover,\n.navbar-default .btn-link:focus {\n  color: #333;\n}\n.navbar-default .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-default .btn-link:hover,\n.navbar-default .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.navbar-inverse {\n  background-color: #222;\n  border-color: #080808;\n}\n.navbar-inverse .navbar-brand {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-brand:hover,\n.navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-text {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-nav > li > a:hover,\n.navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-nav > .active > a,\n.navbar-inverse .navbar-nav > .active > a:hover,\n.navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n.navbar-inverse .navbar-nav > .disabled > a,\n.navbar-inverse .navbar-nav > .disabled > a:hover,\n.navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.navbar-inverse .navbar-toggle:hover,\n.navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.navbar-inverse .navbar-collapse,\n.navbar-inverse .navbar-form {\n  border-color: #101010;\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .open > a:hover,\n.navbar-inverse .navbar-nav > .open > a:focus {\n  color: #fff;\n  background-color: #080808;\n}\n@media (max-width: 767px) {\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: #9d9d9d;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: #080808;\n  }\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,\n  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.navbar-inverse .navbar-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.navbar-inverse .btn-link {\n  color: #9d9d9d;\n}\n.navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.navbar-inverse .btn-link[disabled]:hover,\nfieldset[disabled] .navbar-inverse .btn-link:hover,\n.navbar-inverse .btn-link[disabled]:focus,\nfieldset[disabled] .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.breadcrumb > li {\n  display: inline-block;\n}\n.breadcrumb > li + li:before {\n  padding: 0 5px;\n  color: #ccc;\n  content: \"/\\00a0\";\n}\n.breadcrumb > .active {\n  color: #777;\n}\n.pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.pagination > li {\n  display: inline;\n}\n.pagination > li > a,\n.pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  margin-left: -1px;\n  line-height: 1.42857143;\n  color: #337ab7;\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.pagination > li:first-child > a,\n.pagination > li:first-child > span {\n  margin-left: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.pagination > li:last-child > a,\n.pagination > li:last-child > span {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.pagination > li > a:hover,\n.pagination > li > span:hover,\n.pagination > li > a:focus,\n.pagination > li > span:focus {\n  color: #23527c;\n  background-color: #eee;\n  border-color: #ddd;\n}\n.pagination > .active > a,\n.pagination > .active > span,\n.pagination > .active > a:hover,\n.pagination > .active > span:hover,\n.pagination > .active > a:focus,\n.pagination > .active > span:focus {\n  z-index: 2;\n  color: #fff;\n  cursor: default;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.pagination > .disabled > span,\n.pagination > .disabled > span:hover,\n.pagination > .disabled > span:focus,\n.pagination > .disabled > a,\n.pagination > .disabled > a:hover,\n.pagination > .disabled > a:focus {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #fff;\n  border-color: #ddd;\n}\n.pagination-lg > li > a,\n.pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n}\n.pagination-lg > li:first-child > a,\n.pagination-lg > li:first-child > span {\n  border-top-left-radius: 6px;\n  border-bottom-left-radius: 6px;\n}\n.pagination-lg > li:last-child > a,\n.pagination-lg > li:last-child > span {\n  border-top-right-radius: 6px;\n  border-bottom-right-radius: 6px;\n}\n.pagination-sm > li > a,\n.pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n}\n.pagination-sm > li:first-child > a,\n.pagination-sm > li:first-child > span {\n  border-top-left-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.pagination-sm > li:last-child > a,\n.pagination-sm > li:last-child > span {\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.pager {\n  padding-left: 0;\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n}\n.pager li {\n  display: inline;\n}\n.pager li > a,\n.pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.pager li > a:hover,\n.pager li > a:focus {\n  text-decoration: none;\n  background-color: #eee;\n}\n.pager .next > a,\n.pager .next > span {\n  float: right;\n}\n.pager .previous > a,\n.pager .previous > span {\n  float: left;\n}\n.pager .disabled > a,\n.pager .disabled > a:hover,\n.pager .disabled > a:focus,\n.pager .disabled > span {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #fff;\n}\n.label {\n  display: inline;\n  padding: .2em .6em .3em;\n  font-size: 75%;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: .25em;\n}\na.label:hover,\na.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.label:empty {\n  display: none;\n}\n.btn .label {\n  position: relative;\n  top: -1px;\n}\n.label-default {\n  background-color: #777;\n}\n.label-default[href]:hover,\n.label-default[href]:focus {\n  background-color: #5e5e5e;\n}\n.label-primary {\n  background-color: #337ab7;\n}\n.label-primary[href]:hover,\n.label-primary[href]:focus {\n  background-color: #286090;\n}\n.label-success {\n  background-color: #5cb85c;\n}\n.label-success[href]:hover,\n.label-success[href]:focus {\n  background-color: #449d44;\n}\n.label-info {\n  background-color: #5bc0de;\n}\n.label-info[href]:hover,\n.label-info[href]:focus {\n  background-color: #31b0d5;\n}\n.label-warning {\n  background-color: #f0ad4e;\n}\n.label-warning[href]:hover,\n.label-warning[href]:focus {\n  background-color: #ec971f;\n}\n.label-danger {\n  background-color: #d9534f;\n}\n.label-danger[href]:hover,\n.label-danger[href]:focus {\n  background-color: #c9302c;\n}\n.badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  background-color: #777;\n  border-radius: 10px;\n}\n.badge:empty {\n  display: none;\n}\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .badge {\n  top: 0;\n  padding: 1px 5px;\n}\na.badge:hover,\na.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.list-group-item.active > .badge,\n.nav-pills > .active > a > .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.list-group-item > .badge {\n  float: right;\n}\n.list-group-item > .badge + .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .badge {\n  margin-left: 3px;\n}\n.jumbotron {\n  padding: 30px 15px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: #eee;\n}\n.jumbotron h1,\n.jumbotron .h1 {\n  color: inherit;\n}\n.jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.jumbotron > hr {\n  border-top-color: #d5d5d5;\n}\n.container .jumbotron,\n.container-fluid .jumbotron {\n  border-radius: 6px;\n}\n.jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .jumbotron {\n    padding: 48px 0;\n  }\n  .container .jumbotron,\n  .container-fluid .jumbotron {\n    padding-right: 60px;\n    padding-left: 60px;\n  }\n  .jumbotron h1,\n  .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.42857143;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  -webkit-transition: border .2s ease-in-out;\n       -o-transition: border .2s ease-in-out;\n          transition: border .2s ease-in-out;\n}\n.thumbnail > img,\n.thumbnail a > img {\n  margin-right: auto;\n  margin-left: auto;\n}\na.thumbnail:hover,\na.thumbnail:focus,\na.thumbnail.active {\n  border-color: #337ab7;\n}\n.thumbnail .caption {\n  padding: 9px;\n  color: #333;\n}\n.alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.alert .alert-link {\n  font-weight: bold;\n}\n.alert > p,\n.alert > ul {\n  margin-bottom: 0;\n}\n.alert > p + p {\n  margin-top: 5px;\n}\n.alert-dismissable,\n.alert-dismissible {\n  padding-right: 35px;\n}\n.alert-dismissable .close,\n.alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.alert-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.alert-success hr {\n  border-top-color: #c9e2b3;\n}\n.alert-success .alert-link {\n  color: #2b542c;\n}\n.alert-info {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.alert-info hr {\n  border-top-color: #a6e1ec;\n}\n.alert-info .alert-link {\n  color: #245269;\n}\n.alert-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.alert-warning hr {\n  border-top-color: #f7e1b5;\n}\n.alert-warning .alert-link {\n  color: #66512c;\n}\n.alert-danger {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.alert-danger hr {\n  border-top-color: #e4b9c0;\n}\n.alert-danger .alert-link {\n  color: #843534;\n}\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@-o-keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n          box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);\n}\n.progress-bar {\n  float: left;\n  width: 0;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: #337ab7;\n  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);\n  -webkit-transition: width .6s ease;\n       -o-transition: width .6s ease;\n          transition: width .6s ease;\n}\n.progress-striped .progress-bar,\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  -webkit-background-size: 40px 40px;\n          background-size: 40px 40px;\n}\n.progress.active .progress-bar,\n.progress-bar.active {\n  -webkit-animation: progress-bar-stripes 2s linear infinite;\n       -o-animation: progress-bar-stripes 2s linear infinite;\n          animation: progress-bar-stripes 2s linear infinite;\n}\n.progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .progress-bar-success {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .progress-bar-info {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .progress-bar-warning {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .progress-bar-danger {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);\n}\n.media {\n  margin-top: 15px;\n}\n.media:first-child {\n  margin-top: 0;\n}\n.media,\n.media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.media-body {\n  width: 10000px;\n}\n.media-object {\n  display: block;\n}\n.media-right,\n.media > .pull-right {\n  padding-left: 10px;\n}\n.media-left,\n.media > .pull-left {\n  padding-right: 10px;\n}\n.media-left,\n.media-right,\n.media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.media-middle {\n  vertical-align: middle;\n}\n.media-bottom {\n  vertical-align: bottom;\n}\n.media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.list-group {\n  padding-left: 0;\n  margin-bottom: 20px;\n}\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.list-group-item:first-child {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\na.list-group-item {\n  color: #555;\n}\na.list-group-item .list-group-item-heading {\n  color: #333;\n}\na.list-group-item:hover,\na.list-group-item:focus {\n  color: #555;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.list-group-item.disabled,\n.list-group-item.disabled:hover,\n.list-group-item.disabled:focus {\n  color: #777;\n  cursor: not-allowed;\n  background-color: #eee;\n}\n.list-group-item.disabled .list-group-item-heading,\n.list-group-item.disabled:hover .list-group-item-heading,\n.list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.list-group-item.disabled .list-group-item-text,\n.list-group-item.disabled:hover .list-group-item-text,\n.list-group-item.disabled:focus .list-group-item-text {\n  color: #777;\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.list-group-item.active .list-group-item-heading,\n.list-group-item.active:hover .list-group-item-heading,\n.list-group-item.active:focus .list-group-item-heading,\n.list-group-item.active .list-group-item-heading > small,\n.list-group-item.active:hover .list-group-item-heading > small,\n.list-group-item.active:focus .list-group-item-heading > small,\n.list-group-item.active .list-group-item-heading > .small,\n.list-group-item.active:hover .list-group-item-heading > .small,\n.list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.list-group-item.active .list-group-item-text,\n.list-group-item.active:hover .list-group-item-text,\n.list-group-item.active:focus .list-group-item-text {\n  color: #c7ddef;\n}\n.list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\na.list-group-item-success {\n  color: #3c763d;\n}\na.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-success:hover,\na.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: #d0e9c6;\n}\na.list-group-item-success.active,\na.list-group-item-success.active:hover,\na.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\na.list-group-item-info {\n  color: #31708f;\n}\na.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-info:hover,\na.list-group-item-info:focus {\n  color: #31708f;\n  background-color: #c4e3f3;\n}\na.list-group-item-info.active,\na.list-group-item-info.active:hover,\na.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\na.list-group-item-warning {\n  color: #8a6d3b;\n}\na.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-warning:hover,\na.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: #faf2cc;\n}\na.list-group-item-warning.active,\na.list-group-item-warning.active:hover,\na.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\na.list-group-item-danger {\n  color: #a94442;\n}\na.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\na.list-group-item-danger:hover,\na.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: #ebcccc;\n}\na.list-group-item-danger.active,\na.list-group-item-danger.active:hover,\na.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: 0 1px 1px rgba(0, 0, 0, .05);\n}\n.panel-body {\n  padding: 15px;\n}\n.panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.panel-title > a,\n.panel-title > small,\n.panel-title > .small,\n.panel-title > small > a,\n.panel-title > .small > a {\n  color: inherit;\n}\n.panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .list-group,\n.panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.panel > .list-group .list-group-item,\n.panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.panel > .list-group:first-child .list-group-item:first-child,\n.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .list-group:last-child .list-group-item:last-child,\n.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.list-group + .panel-footer {\n  border-top-width: 0;\n}\n.panel > .table,\n.panel > .table-responsive > .table,\n.panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.panel > .table caption,\n.panel > .table-responsive > .table caption,\n.panel > .panel-collapse > .table caption {\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.panel > .table:first-child,\n.panel > .table-responsive:first-child > .table:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.panel > .table:last-child,\n.panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.panel > .panel-body + .table,\n.panel > .panel-body + .table-responsive,\n.panel > .table + .panel-body,\n.panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.panel > .table > tbody:first-child > tr:first-child th,\n.panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.panel > .table-bordered,\n.panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.panel > .table-bordered > thead > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.panel > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.panel > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.panel > .table-bordered > thead > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.panel > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.panel > .table-bordered > tfoot > tr > td:first-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.panel > .table-bordered > thead > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.panel > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.panel > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.panel > .table-bordered > thead > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.panel > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.panel > .table-bordered > tfoot > tr > td:last-child,\n.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.panel > .table-bordered > thead > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.panel > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.panel > .table-bordered > thead > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.panel > .table-bordered > tbody > tr:first-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.panel > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.panel > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.panel > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.panel > .table-bordered > tfoot > tr:last-child > th,\n.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.panel > .table-responsive {\n  margin-bottom: 0;\n  border: 0;\n}\n.panel-group {\n  margin-bottom: 20px;\n}\n.panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.panel-group .panel-heading {\n  border-bottom: 0;\n}\n.panel-group .panel-heading + .panel-collapse > .panel-body,\n.panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.panel-group .panel-footer {\n  border-top: 0;\n}\n.panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.panel-default {\n  border-color: #ddd;\n}\n.panel-default > .panel-heading {\n  color: #333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333;\n}\n.panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.panel-primary {\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading {\n  color: #fff;\n  background-color: #337ab7;\n  border-color: #337ab7;\n}\n.panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #337ab7;\n}\n.panel-primary > .panel-heading .badge {\n  color: #337ab7;\n  background-color: #fff;\n}\n.panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #337ab7;\n}\n.panel-success {\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #d6e9c6;\n}\n.panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #d6e9c6;\n}\n.panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #d6e9c6;\n}\n.panel-info {\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: #bce8f1;\n}\n.panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #bce8f1;\n}\n.panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #bce8f1;\n}\n.panel-warning {\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #faebcc;\n}\n.panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #faebcc;\n}\n.panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #faebcc;\n}\n.panel-danger {\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #ebccd1;\n}\n.panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ebccd1;\n}\n.panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ebccd1;\n}\n.embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n.embed-responsive.embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.embed-responsive.embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid #e3e3e3;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);\n}\n.well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, .15);\n}\n.well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  filter: alpha(opacity=20);\n  opacity: .2;\n}\n.close:hover,\n.close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\nbutton.close {\n  -webkit-appearance: none;\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n}\n.modal-open {\n  overflow: hidden;\n}\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  display: none;\n  overflow: hidden;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.modal.fade .modal-dialog {\n  -webkit-transition: -webkit-transform .3s ease-out;\n       -o-transition:      -o-transform .3s ease-out;\n          transition:         transform .3s ease-out;\n  -webkit-transform: translate(0, -25%);\n      -ms-transform: translate(0, -25%);\n       -o-transform: translate(0, -25%);\n          transform: translate(0, -25%);\n}\n.modal.in .modal-dialog {\n  -webkit-transform: translate(0, 0);\n      -ms-transform: translate(0, 0);\n       -o-transform: translate(0, 0);\n          transform: translate(0, 0);\n}\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.modal-content {\n  position: relative;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  outline: 0;\n  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);\n}\n.modal-backdrop {\n  position: absolute;\n  top: 0;\n  right: 0;\n  left: 0;\n  background-color: #000;\n}\n.modal-backdrop.fade {\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.modal-backdrop.in {\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.modal-header {\n  min-height: 16.42857143px;\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.modal-header .close {\n  margin-top: -2px;\n}\n.modal-title {\n  margin: 0;\n  line-height: 1.42857143;\n}\n.modal-body {\n  position: relative;\n  padding: 15px;\n}\n.modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n.modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .modal-content {\n    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);\n  }\n  .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .modal-lg {\n    width: 900px;\n  }\n}\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 12px;\n  font-weight: normal;\n  line-height: 1.4;\n  visibility: visible;\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.tooltip.in {\n  filter: alpha(opacity=90);\n  opacity: .9;\n}\n.tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n.tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n.tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n.tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n.tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  text-decoration: none;\n  background-color: #000;\n  border-radius: 4px;\n}\n.tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-left .tooltip-arrow {\n  right: 5px;\n  bottom: 0;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  font-weight: normal;\n  line-height: 1.42857143;\n  text-align: left;\n  white-space: normal;\n  background-color: #fff;\n  -webkit-background-clip: padding-box;\n          background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, .2);\n  border-radius: 6px;\n  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n          box-shadow: 0 5px 10px rgba(0, 0, 0, .2);\n}\n.popover.top {\n  margin-top: -10px;\n}\n.popover.right {\n  margin-left: 10px;\n}\n.popover.bottom {\n  margin-top: 10px;\n}\n.popover.left {\n  margin-left: -10px;\n}\n.popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-radius: 5px 5px 0 0;\n}\n.popover-content {\n  padding: 9px 14px;\n}\n.popover > .arrow,\n.popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.popover > .arrow {\n  border-width: 11px;\n}\n.popover > .arrow:after {\n  content: \"\";\n  border-width: 10px;\n}\n.popover.top > .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999;\n  border-top-color: rgba(0, 0, 0, .25);\n  border-bottom-width: 0;\n}\n.popover.top > .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-color: #fff;\n  border-bottom-width: 0;\n}\n.popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999;\n  border-right-color: rgba(0, 0, 0, .25);\n  border-left-width: 0;\n}\n.popover.right > .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  content: \" \";\n  border-right-color: #fff;\n  border-left-width: 0;\n}\n.popover.bottom > .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999;\n  border-bottom-color: rgba(0, 0, 0, .25);\n}\n.popover.bottom > .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999;\n  border-left-color: rgba(0, 0, 0, .25);\n}\n.popover.left > .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  content: \" \";\n  border-right-width: 0;\n  border-left-color: #fff;\n}\n.carousel {\n  position: relative;\n}\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.carousel-inner > .item {\n  position: relative;\n  display: none;\n  -webkit-transition: .6s ease-in-out left;\n       -o-transition: .6s ease-in-out left;\n          transition: .6s ease-in-out left;\n}\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .carousel-inner > .item {\n    -webkit-transition: -webkit-transform .6s ease-in-out;\n         -o-transition:      -o-transform .6s ease-in-out;\n            transition:         transform .6s ease-in-out;\n\n    -webkit-backface-visibility: hidden;\n            backface-visibility: hidden;\n    -webkit-perspective: 1000;\n            perspective: 1000;\n  }\n  .carousel-inner > .item.next,\n  .carousel-inner > .item.active.right {\n    left: 0;\n    -webkit-transform: translate3d(100%, 0, 0);\n            transform: translate3d(100%, 0, 0);\n  }\n  .carousel-inner > .item.prev,\n  .carousel-inner > .item.active.left {\n    left: 0;\n    -webkit-transform: translate3d(-100%, 0, 0);\n            transform: translate3d(-100%, 0, 0);\n  }\n  .carousel-inner > .item.next.left,\n  .carousel-inner > .item.prev.right,\n  .carousel-inner > .item.active {\n    left: 0;\n    -webkit-transform: translate3d(0, 0, 0);\n            transform: translate3d(0, 0, 0);\n  }\n}\n.carousel-inner > .active,\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  display: block;\n}\n.carousel-inner > .active {\n  left: 0;\n}\n.carousel-inner > .next,\n.carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.carousel-inner > .next {\n  left: 100%;\n}\n.carousel-inner > .prev {\n  left: -100%;\n}\n.carousel-inner > .next.left,\n.carousel-inner > .prev.right {\n  left: 0;\n}\n.carousel-inner > .active.left {\n  left: -100%;\n}\n.carousel-inner > .active.right {\n  left: 100%;\n}\n.carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 15%;\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n  filter: alpha(opacity=50);\n  opacity: .5;\n}\n.carousel-control.left {\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control.right {\n  right: 0;\n  left: auto;\n  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  background-image:      -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));\n  background-image:         linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);\n  background-repeat: repeat-x;\n}\n.carousel-control:hover,\n.carousel-control:focus {\n  color: #fff;\n  text-decoration: none;\n  filter: alpha(opacity=90);\n  outline: 0;\n  opacity: .9;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-left,\n.carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  z-index: 5;\n  display: inline-block;\n}\n.carousel-control .icon-prev,\n.carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.carousel-control .icon-next,\n.carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.carousel-control .icon-prev,\n.carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  margin-top: -10px;\n  font-family: serif;\n  line-height: 1;\n}\n.carousel-control .icon-prev:before {\n  content: '\\2039';\n}\n.carousel-control .icon-next:before {\n  content: '\\203a';\n}\n.carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n}\n.carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #000 \\9;\n  background-color: rgba(0, 0, 0, 0);\n  border: 1px solid #fff;\n  border-radius: 10px;\n}\n.carousel-indicators .active {\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  background-color: #fff;\n}\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, .6);\n}\n.carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-prev,\n  .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -15px;\n    font-size: 30px;\n  }\n  .carousel-control .glyphicon-chevron-left,\n  .carousel-control .icon-prev {\n    margin-left: -15px;\n  }\n  .carousel-control .glyphicon-chevron-right,\n  .carousel-control .icon-next {\n    margin-right: -15px;\n  }\n  .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n  .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.clearfix:before,\n.clearfix:after,\n.dl-horizontal dd:before,\n.dl-horizontal dd:after,\n.container:before,\n.container:after,\n.container-fluid:before,\n.container-fluid:after,\n.row:before,\n.row:after,\n.form-horizontal .form-group:before,\n.form-horizontal .form-group:after,\n.btn-toolbar:before,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:before,\n.btn-group-vertical > .btn-group:after,\n.nav:before,\n.nav:after,\n.navbar:before,\n.navbar:after,\n.navbar-header:before,\n.navbar-header:after,\n.navbar-collapse:before,\n.navbar-collapse:after,\n.pager:before,\n.pager:after,\n.panel-body:before,\n.panel-body:after,\n.modal-footer:before,\n.modal-footer:after {\n  display: table;\n  content: \" \";\n}\n.clearfix:after,\n.dl-horizontal dd:after,\n.container:after,\n.container-fluid:after,\n.row:after,\n.form-horizontal .form-group:after,\n.btn-toolbar:after,\n.btn-group-vertical > .btn-group:after,\n.nav:after,\n.navbar:after,\n.navbar-header:after,\n.navbar-collapse:after,\n.pager:after,\n.panel-body:after,\n.modal-footer:after {\n  clear: both;\n}\n.center-block {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n.pull-right {\n  float: right !important;\n}\n.pull-left {\n  float: left !important;\n}\n.hide {\n  display: none !important;\n}\n.show {\n  display: block !important;\n}\n.invisible {\n  visibility: hidden;\n}\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.hidden {\n  display: none !important;\n  visibility: hidden !important;\n}\n.affix {\n  position: fixed;\n}\n@-ms-viewport {\n  width: device-width;\n}\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n  display: none !important;\n}\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .visible-xs {\n    display: block !important;\n  }\n  table.visible-xs {\n    display: table;\n  }\n  tr.visible-xs {\n    display: table-row !important;\n  }\n  th.visible-xs,\n  td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm {\n    display: block !important;\n  }\n  table.visible-sm {\n    display: table;\n  }\n  tr.visible-sm {\n    display: table-row !important;\n  }\n  th.visible-sm,\n  td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md {\n    display: block !important;\n  }\n  table.visible-md {\n    display: table;\n  }\n  tr.visible-md {\n    display: table-row !important;\n  }\n  th.visible-md,\n  td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg {\n    display: block !important;\n  }\n  table.visible-lg {\n    display: table;\n  }\n  tr.visible-lg {\n    display: table-row !important;\n  }\n  th.visible-lg,\n  td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .hidden-lg {\n    display: none !important;\n  }\n}\n.visible-print {\n  display: none !important;\n}\n@media print {\n  .visible-print {\n    display: block !important;\n  }\n  table.visible-print {\n    display: table;\n  }\n  tr.visible-print {\n    display: table-row !important;\n  }\n  th.visible-print,\n  td.visible-print {\n    display: table-cell !important;\n  }\n}\n.visible-print-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-block {\n    display: block !important;\n  }\n}\n.visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline {\n    display: inline !important;\n  }\n}\n.visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .hidden-print {\n    display: none !important;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */\n"
  },
  {
    "path": "admin/css/index.php",
    "content": ""
  },
  {
    "path": "admin/css/paste.css",
    "content": "/* Fonts */\n\t/* Open Sans */\n\t@import url(//fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,600,700,800,300);\n\n/* Bootstrap Main CSS File (unedited) */\n@import url('bootstrap.min.css');\n\n/* Admin Style */\n@import url('style.min.css');\n\n/* Responsive Style */\n@import url('responsive.css');\n\n/* Font Awesome */\n@import url('font-awesome.min.css');\n\n/* Bootstrap Checkbox */\n@import url('bootstrap-checkbox.min.css');\n\n/* Bootstrap Select */\n@import url('bootstrap-select.min.css');"
  },
  {
    "path": "admin/css/responsive.css",
    "content": "@media screen and (min-width: 1024px) {\n\t.searchform{display: none;}\n\t.sidebar{display: block !important;}\n\t.captcha input {min-width:100px;}\n\n}\n\n@media screen and (max-width: 760px) {\n\t.page-header .right{display: none;}\n\t.sidebar{display: none; width: 100%;}\n\t.container-default, .container-widget{margin-left:-20px; margin-right: -20px;}\n\t.container-padding, .container-no-padding{margin-left:-40px; margin-right: -40px;}\n\t.profile-left .btn{display: none;}\n\t.captcha input {min-width:100px;}\n\n}\n\n@media screen and (max-width: 428px) {\n\t.topmenu {display: none;}\n\t.login-form {width:90%;}\n\t.captcha input {min-width:20%;}\n}"
  },
  {
    "path": "admin/css/style.css",
    "content": "/* Paste admin style.css unminified */\n\nbody {\n    background: #f5f5f5;\n    color: #58666e;\n    margin: 0;\n    line-height: 1.7em;\n    font-size: 13px;\n    font-family: 'Open-Sans', sans-serif;\n    outline: 0;\n    text-Shadow: 0 0 1px rgba(0, 0, 0, 0.2)\n}\n::-moz-selection {\n    background: #D5EAFF\n}\n::selection {\n    background: #D5EAFF\n}\na {\n    color: #399bff;\n    text-decoration: none\n}\na:hover,\na:focus {\n    text-decoration: none\n}\nb,\nstrong {\n    font-weight: 600\n}\n.col-xs-1,\n.col-sm-1,\n.col-md-1,\n.col-lg-1,\n.col-xs-2,\n.col-sm-2,\n.col-md-2,\n.col-lg-2,\n.col-xs-3,\n.col-sm-3,\n.col-md-3,\n.col-lg-3,\n.col-xs-4,\n.col-sm-4,\n.col-md-4,\n.col-lg-4,\n.col-xs-5,\n.col-sm-5,\n.col-md-5,\n.col-lg-5,\n.col-xs-6,\n.col-sm-6,\n.col-md-6,\n.col-lg-6,\n.col-xs-7,\n.col-sm-7,\n.col-md-7,\n.col-lg-7,\n.col-xs-8,\n.col-sm-8,\n.col-md-8,\n.col-lg-8,\n.col-xs-9,\n.col-sm-9,\n.col-md-9,\n.col-lg-9,\n.col-xs-10,\n.col-sm-10,\n.col-md-10,\n.col-lg-10,\n.col-xs-11,\n.col-sm-11,\n.col-md-11,\n.col-lg-11,\n.col-xs-12,\n.col-sm-12,\n.col-md-12,\n.col-lg-12 {\n    padding-right: 15px;\n    padding-left: 15px\n}\n.row {\n    margin-right: -15px;\n    margin-left: -15px\n}\n.container-widget .col-xs-1,\n.container-widget .col-sm-1,\n.container-widget .col-md-1,\n.container-widget .col-lg-1,\n.container-widget .col-xs-2,\n.container-widget .col-sm-2,\n.container-widget .col-md-2,\n.container-widget .col-lg-2,\n.container-widget .col-xs-3,\n.container-widget .col-sm-3,\n.container-widget .col-md-3,\n.container-widget .col-lg-3,\n.container-widget .col-xs-4,\n.container-widget .col-sm-4,\n.container-widget .col-md-4,\n.container-widget .col-lg-4,\n.container-widget .col-xs-5,\n.container-widget .col-sm-5,\n.container-widget .col-md-5,\n.container-widget .col-lg-5,\n.container-widget .col-xs-6,\n.container-widget .col-sm-6,\n.container-widget .col-md-6,\n.container-widget .col-lg-6,\n.container-widget .col-xs-7,\n.container-widget .col-sm-7,\n.container-widget .col-md-7,\n.container-widget .col-lg-7,\n.container-widget .col-xs-8,\n.container-widget .col-sm-8,\n.container-widget .col-md-8,\n.container-widget .col-lg-8,\n.container-widget .col-xs-9,\n.container-widget .col-sm-9,\n.container-widget .col-md-9,\n.container-widget .col-lg-9,\n.container-widget .col-xs-10,\n.container-widget .col-sm-10,\n.container-widget .col-md-10,\n.container-widget .col-lg-10,\n.container-widget .col-xs-11,\n.container-widget .col-sm-11,\n.container-widget .col-md-11,\n.container-widget .col-lg-11,\n.container-widget .col-xs-12,\n.container-widget .col-sm-12,\n.container-widget .col-md-12,\n.container-widget .col-lg-12 {\n    padding-right: 5px;\n    padding-left: 5px\n}\n.container-widget .row {\n    margin-right: -5px;\n    margin-left: -5px\n}\n.container-widget .panel {\n    margin-bottom: 10px\n}\n.container-widget .widget {\n    margin-bottom: 10px\n}\n.container-default {\n    padding: 0\n}\n.container-widget {\n    padding: 0;\n    margin-left: -5px;\n    margin-right: -5px\n}\n.container-padding {\n    padding-left: 20px;\n    padding-right: 20px\n}\n.container-no-padding {\n    padding: 0px;\n    margin: -20px -30px 0 -30px\n}\n#top {\n    height: 50px;\n    background: #399bff;\n    color: #fff;\n    width: 100%;\n    position: fixed;\n    z-index: 900;\n    top: 0\n}\n.applogo {\n    width: auto;\n    max-width: 250px;\n    height: 50px;\n    color: #fff;\n    position: relative;\n    padding: 13px 0 0 0px;\n    margin-left: 50px;\n    float: left;\n    text-align: left\n}\n.applogo .logo {\n    color: #eee;\n    font-size: 35px;\n    font-family: 'Open-Sans', sans-serif\n}\n.searchform {\n    width: 220px;\n    margin: 0 20px;\n    float: left;\n    padding-top: 10px;\n    position: relative\n}\n.searchbox {\n    border-radius: 999px;\n    border: none;\n    height: 32px;\n    width: 220px;\n    padding-left: 20px;\n    padding-right: 36px;\n    background: rgba(255, 255, 255, 0.95);\n    color: #37363e;\n    box-shadow: inset none\n}\n.searchbox:focus {\n    background: #fff;\n    box-shadow: none;\n    border-top: none\n}\n.searchbutton {\n    border: none;\n    color: rgba(0, 0, 0, 0.5);\n    background: none;\n    position: absolute;\n    top: 18px;\n    font-size: 16px;\n    right: 15px\n}\n.topmenu {\n    float: left;\n    padding-top: 4px;\n    padding-left: 0;\n    font-weight: 600;\n}\n.topmenu .link {\n    display: inline-block;\n    padding-left: 8px;\n    height: 25px\n}\n.topmenu .link a {\n    display: block\n}\n.topmenu .pastebutton {\n    color: #FFFFFF;\n}\n.topmenu .pastebutton:hover {\n    color: #404B5F;\n}\n.topmenu a {\n    color: rgba(255, 255, 255, 0.9);\n    padding: 7px\n}\n.topmenu a:hover {\n    color: #fff\n}\n.topmenu li {\n    display: inline\n}\n.top-right {\n    line-height: 1.8em;\n    float: right;\n    padding-right: 50px;\n    padding-left: 10px;\n    padding-top: 14px;\n    font-weight: 600\n}\n.top-right .link {\n    display: inline-block;\n    padding-left: 8px;\n    height: 30px\n}\n.top-right .link a {\n    display: block\n}\n.top-right .dropdown-menu {\n    min-width: 135px\n}\n.top-right .dropdown-menu .list-title {\n    text-align: center\n}\n.top-right .dropdown-menu li {\n    position: relative;\n    display: block\n}\n.top-right a {\n    color: #fff\n}\n.top-right .profilebox {\n    color: rgba(255, 255, 255, 0.95)\n}\n.top-right .profilebox img {\n    width: 32px;\n    height: 31px;\n    float: left;\n    border-radius: 100%;\n    margin-right: 7px;\n    margin-top: -4px\n}\n.top-right .profilebox .caret {\n    margin-left: 5px;\n    color: rgba(255, 255, 255, 0.5)\n}\n.top-right .profilebox:hover {\n    color: #fff\n}\n.top-right .pastebutton {\n    background: #fff;\n    color: #404B5F;\n    padding: 4px 16px;\n    border-radius: 999px\n}\n.top-right .pastebutton:hover {\n    background: rgba(255, 255, 255, 0.95)\n}\n.guestmsg .text {\n    font-size: 14px;\n    color: #fff;\n    line-height: 1.6em;\n    font-weight: 300;\n}\n.guestmsg .text-body {\n\tfont-size: 12px;\n    color: #fff;\n\topacity: 0.8;\n}\n.guestmsg .text-body a {\n\tcolor: #fff;\n}\n.content {\n    padding-left: 30px;\n    padding-right: 30px;\n    padding-top: 60px;\n    background: #f5f5f5\n}\n.footer {\n    border-top: 1px solid #e2e2e2;\n    margin-left: -30px;\n    margin-right: -30px;\n    margin-bottom: 0;\n    padding: 10px;\n    font-size: 11px;\n    color: #666;\n    background: #f5f5f5\n}\n.footer .col-md-6 {\n    margin-bottom: 0\n}\n.page-header {\n    background: #fff;\n    margin: -20px -30px 20px -30px;\n    padding: 20px;\n    border-bottom: none;\n    position: relative\n}\n.page-header .title {\n    padding: 0;\n    margin: 0;\n    font-family: 'Open-Sans', sans-serif;\n    font-size: 20px;\n    line-height: normal;\n    font-weight: normal;\n    color: #37363e;\n    padding-bottom: 6px\n}\n.page-header .right {\n    position: absolute;\n    right: 20px;\n    bottom: 20px;\n    min-width: 500px;\n    text-align: right\n}\n.page-header .right .btn-group {\n    float: right\n}\n.page-header .right .btn {\n    padding-left: 14px;\n    padding-right: 14px;\n    font-size: 13px\n}\n.page-header .right .btn .fa {\n    margin: 0 4px\n}\n.page-header .right .btn .no-border {\n    border: none\n}\n.page-header .right .btn-group .btn {\n    border: 1px solid #E8EBED\n}\n.page-header .pagination {\n    margin: 0\n}\n.page-header .widget-inline-list {\n    right: 0;\n    bottom: -25px;\n    position: relative !important\n}\n.fa-item {\n    padding: 6px 0;\n    position: relative;\n    padding-left: 50px;\n    font-size: 13px;\n    color: #37363e;\n    border-radius: 3px;\n    border: 5px solid #fff\n}\n.fa-item .fa {\n    position: absolute;\n    left: 10px;\n    font-size: 20px;\n    color: #444;\n    display: block;\n    width: 40px;\n    text-align: center\n}\n.fa-item:hover {\n    color: #000;\n    background: #f2f2f2;\n    border-color: #f2f2f2\n}\n#paste {\n\tline-height:1\n}\n#paste li {\n\tpadding:1px\n}\n\n.paste-alert {\n    color: #fff;\n    position: relative;\n    border-radius: 3px;\n    text-align: left;\n    margin-bottom: 10px;\n    padding: 12px;\n    padding-right: 30px\n}\n.paste-alert a {\n    color: inherit;\n    text-decoration: underline;\n    font-weight: 600\n}\n.paste-alert h4 {\n    font-size: 14px;\n    margin: 0;\n    color: inherit;\n    font-weight: 600;\n    line-height: normal\n}\n.paste-alert .img {\n    width: 40px;\n    height: 40px;\n    position: absolute;\n    border-radius: 3px;\n    left: 12px;\n    top: 12px\n}\n.paste-alert-img {\n    padding-left: 65px;\n    min-height: 64px\n}\n.paste-alert-icon {\n    padding-left: 40px\n}\n.paste-alert-icon .fa {\n    display: block;\n    width: 20px;\n    text-align: center;\n    position: absolute;\n    font-size: 15px;\n    left: 12px;\n    top: 17px\n}\n.paste-alert .closed {\n    position: absolute;\n    right: 3px;\n    text-decoration: none;\n    font-weight: bold;\n    top: 0px;\n    font-size: 20px;\n    color: rgba(255, 255, 255, 0.5);\n    padding: 4px\n}\n.paste-alert .closed:hover {\n    color: #fff\n}\n.paste-alert-click {\n    cursor: pointer;\n    padding-right: 12px\n}\n.paste-alert .primary {\n    outline: 0;\n    border: none;\n    background: rgba(0, 0, 0, 0.4);\n    color: inherit;\n    border-radius: 3px;\n    padding: 4px 10px\n}\n.paste-alert .cancel {\n    outline: 0;\n    border: none;\n    background: rgba(255, 255, 255, 0.4);\n    color: rgba(0, 0, 0, 0.8);\n    border-radius: 3px;\n    padding: 4px 10px\n}\n.paste-alert .primary:hover,\n.paste-alert .cancel:hover {\n    opacity: 0.9\n}\n.paste-alert-top,\n.paste-alert-bottom,\n.paste-alert-top-left,\n.paste-alert-top-right,\n.paste-alert-bottom-left,\n.paste-alert-bottom-right,\n.paste-alert-fullscreen {\n    box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.1);\n    position: fixed;\n    display: none;\n    z-index: 1000\n}\n.paste-alert-top {\n    top: 0;\n    left: 0;\n    right: 0\n}\n.paste-alert-bottom {\n    bottom: 0;\n    left: 0;\n    right: 0\n}\n.paste-alert-top-left {\n    top: 80px;\n    left: 20px\n}\n.paste-alert-top-right {\n    top: 80px;\n    right: 20px\n}\n.paste-alert-bottom-left {\n    bottom: 20px;\n    left: 20px\n}\n.paste-alert-bottom-right {\n    bottom: 20px;\n    right: 20px\n}\n.paste-alert-fullsize {\n    top: 50%;\n    left: 50%;\n    margin: -20px\n}\n.alert1 {\n    background: #399bff\n}\n.alert2 {\n    background: #33577b\n}\n.alert3 {\n    background: #26a65b\n}\n.alert4 {\n    background: #51b7a3\n}\n.alert5 {\n    background: #f39c12\n}\n.alert6 {\n    background: #ef4836\n}\n.alert7 {\n    background: #9a80b9\n}\n.alert8 {\n    background: #a2ded0;\n    color: #444\n}\n.alert8 .closed {\n    color: inherit\n}\n.alert8 a:hover.closed {\n    color: inherit\n}\n.alert9 {\n    background: #d2527f\n}\n.alert10 {\n    background: #c78568\n}\n.alert11 {\n    background: #e99844\n}\n.alert1-light {\n    background: #d2e8ff;\n    color: #00356c\n}\n.alert2-light {\n    background: #7ea3c9;\n    color: #152433\n}\n.alert3-light {\n    background: #83e3aa;\n    color: #13532e\n}\n.alert4-light {\n    background: #bde4dc;\n    color: #2f7365\n}\n.alert5-light {\n    background: #fad9a4;\n    color: #976008\n}\n.alert6-light {\n    background: #fac9c4;\n    color: #b11e0e\n}\n.alert7-light {\n    background: #e8e3ef;\n    color: #674b88\n}\n.alert8-light {\n    background: #edf9f6;\n    color: #2f8571\n}\n.alert9-light {\n    background: #f2cbd9;\n    color: #97274e\n}\n.alert10-light {\n    background: #f0dfd8;\n    color: #935336\n}\n.alert11-light {\n    background: #f9e3cd;\n    color: #b26515\n}\n.alert1-light .closed,\n.alert2-light .closed,\n.alert3-light .closed,\n.alert4-light .closed,\n.alert5-light .closed,\n.alert6-light .closed,\n.alert7-light .closed,\n.alert8-light .closed,\n.alert9-light .closed,\n.alert10-light .closed,\n.alert11-light .closed {\n    color: inherit;\n    opacity: 0.6\n}\n.alert1-light .closed:hover {\n    color: inherit;\n    opacity: 0.8\n}\n.changelogs .version {\n    font-size: 13px;\n    font-family: 'Open-Sans', sans-serif\n}\n.changelogs .date {\n    font-size: 12px;\n    position: absolute;\n    right: 20px;\n    top: 20px\n}\n.changelogs .update {\n    position: relative;\n    background: #fff;\n    padding: 20px;\n    border: 1px solid #e4e4e4;\n    border-radius: 3px;\n    margin-bottom: 20px\n}\n.changelogs .list {\n    font-size: 12px;\n    margin-top: 10px;\n    background: #f2f2f2;\n    padding: 6px 10px;\n    border-radius: 3px;\n    border-left: 2px solid #ccc\n}\n.changelogs .list h4 {\n    margin: 0px;\n    font-size: 14px\n}\n.changelogs .list:hover {\n    background: #eee\n}\n.login-form {\n    width: 360px;\n    padding-top: 100px;\n    margin: 0px auto;\n    text-shadow: none\n}\n.login-form form {\n    background: #fff;\n    border: 1px solid #ddd;\n    border-radius: 3px\n}\n.login-form form img {\n    margin-bottom: 18px\n}\n.login-form form .profile {\n    border-radius: 999px\n}\n.login-form form .top {\n    border-bottom: 1px solid #ddd;\n    text-align: center;\n    padding: 30px 0\n}\n.login-form form .top .icon {\n    width: 100px;\n    height: 100px\n}\n.login-form form .top h1,\n.login-form form .top h4 {\n    margin: 0\n}\n.login-form form .top h1 {\n    color: #37363E;\n    font-size: 30px;\n    font-family: 'Open-Sans', sans-serif;\n    font-weight: bold;\n    margin-top: -14px\n}\n.login-form form .top h4 {\n    font-weight: normal;\n    color: #76757B;\n    font-size: 15px\n}\n.login-form form .form-area {\n    padding: 40px\n}\n.login-form form .form-area .group {\n    position: relative;\n    margin-bottom: 20px\n}\n.login-form form .form-area .form-control {\n    padding-left: 38px;\n    height: 40px\n}\n.login-form form .form-area .fa {\n    position: absolute;\n    top: 11px;\n    left: 13px;\n    font-size: 16px;\n    color: #C3C3C3\n}\n.login-form form .form-area .btn {\n    height: 42px;\n    font-weight: 600\n}\n.login-form form .form-area .checkbox {\n    margin-bottom: 20px\n}\n.login-form .footer-links {\n    color: #76757B;\n    padding: 10px 5px\n}\n.login-form .footer-links a {\n    color: #76757B\n}\n.login-form .footer-links a:hover {\n    color: #37363e\n}\n.error-pages {\n    text-align: center;\n    padding-top: 100px\n}\n.error-pages .icon {\n    border-radius: 4px;\n    margin-bottom: 20px\n}\n.error-pages h1 {\n    color: #37363e;\n    font-family: 'Open-Sans', sans-serif;\n    font-size: 28px\n}\n.error-pages h4 {\n    color: #767279;\n    font-weight: normal;\n    font-size: 16px;\n    margin-top: 10px\n}\n.error-pages form {\n    width: 400px;\n    margin: 0px auto;\n    margin-top: 30px;\n    position: relative\n}\n.error-pages form .form-control {\n    padding-left: 34px;\n    height: 40px\n}\n.error-pages form .fa {\n    position: absolute;\n    left: 10px;\n    top: 11px;\n    font-size: 16px\n}\n.error-pages .bottom-links {\n    margin-top: 30px\n}\n.error-pages .bottom-links a {\n    margin: 0px 6px\n}\n.checkbox-primary input[type=\"checkbox\"]:checked+label::before {\n    background-color: #399bff;\n    border-color: #399bff\n}\n.checkbox-primary input[type=\"checkbox\"]:checked+label::after {\n    color: #fff\n}\n.checkbox-danger input[type=\"checkbox\"]:checked+label::before {\n    background-color: #ef4836;\n    border-color: #ef4836\n}\n.checkbox-danger input[type=\"checkbox\"]:checked+label::after {\n    color: #fff\n}\n.checkbox-info input[type=\"checkbox\"]:checked+label::before {\n    background-color: #51b7a3;\n    border-color: #51b7a3\n}\n.checkbox-info input[type=\"checkbox\"]:checked+label::after {\n    color: #fff\n}\n.checkbox-warning input[type=\"checkbox\"]:checked+label::before {\n    background-color: #f39c12;\n    border-color: #f39c12\n}\n.checkbox-warning input[type=\"checkbox\"]:checked+label::after {\n    color: #fff\n}\n.checkbox-success input[type=\"checkbox\"]:checked+label::before {\n    background-color: #26a65b;\n    border-color: #26a65b\n}\n.checkbox-success input[type=\"checkbox\"]:checked+label::after {\n    color: #fff\n}\n.radio-primary input[type=\"radio\"]+label::after {\n    background-color: #399bff\n}\n.radio-primary input[type=\"radio\"]:checked+label::before {\n    border-color: #399bff\n}\n.radio-primary input[type=\"radio\"]:checked+label::after {\n    background-color: #399bff\n}\n.radio-danger input[type=\"radio\"]+label::after {\n    background-color: #ef4836\n}\n.radio-danger input[type=\"radio\"]:checked+label::before {\n    border-color: #ef4836\n}\n.radio-danger input[type=\"radio\"]:checked+label::after {\n    background-color: #ef4836\n}\n.radio-info input[type=\"radio\"]+label::after {\n    background-color: #51b7a3\n}\n.radio-info input[type=\"radio\"]:checked+label::before {\n    border-color: #51b7a3\n}\n.radio-info input[type=\"radio\"]:checked+label::after {\n    background-color: #51b7a3\n}\n.radio-warning input[type=\"radio\"]+label::after {\n    background-color: #f39c12\n}\n.radio-warning input[type=\"radio\"]:checked+label::before {\n    border-color: #f39c12\n}\n.radio-warning input[type=\"radio\"]:checked+label::after {\n    background-color: #f39c12\n}\n.radio-success input[type=\"radio\"]+label::after {\n    background-color: #26a65b\n}\n.radio-success input[type=\"radio\"]:checked+label::before {\n    border-color: #26a65b\n}\n.radio-success input[type=\"radio\"]:checked+label::after {\n    background-color: #26a65b\n}\na:focus,\ninput,\ninput[type=\"file\"]:focus,\ninput[type=\"radio\"]:focus,\ninput[type=\"checkbox\"]:focus,\n.btn:focus,\n.btn:active:focus,\n.btn.active:focus,\n.btn.focus,\n.btn:active.focus,\n.btn.active.focus {\n    outline: 0px\n}\nmark {\n    background: #FBDDAC;\n    padding: 2px 4px;\n    border-radius: 3px\n}\ncode {\n    background: #EDF6FF;\n    padding: 2px 2px;\n    color: #000;\n    border: 1px solid #C3E1FF\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n    font-family: inherit;\n    font-weight: 400;\n    line-height: 1.6;\n    color: #37363e\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n    margin-top: 20px;\n    margin-bottom: 10px;\n    letter-spacing: -0.02em\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n    margin-top: 15px;\n    margin-bottom: 10px\n}\nh1,\n.h1 {\n    font-size: 2.25em\n}\nh2,\n.h2 {\n    font-size: 2em\n}\nh3,\n.h3 {\n    font-size: 1.75em\n}\nh4,\n.h4 {\n    font-size: 1.5em\n}\nh5,\n.h5 {\n    font-size: 1.25em\n}\nh6,\n.h6 {\n    font-size: 1em\n}\n.text-st {\n    color: #666\n}\n.lead {\n    line-height: 1.7em\n}\nblockquote {\n    background: #f2f2f2;\n    padding: 16px 20px;\n    border-radius: 3px;\n    border-left: 5px solid #ccc\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n    display: block;\n    font-size: 80%;\n    line-height: 1.42857143;\n    color: inherit;\n    opacity: 0.6\n}\n.blockquote-reverse,\nblockquote.pull-right {\n    border-right: 5px solid #ccc\n}\ndt,\ndd {\n    line-height: inherit\n}\n.font-title {\n    font-family: 'Open-Sans', sans-serif\n}\n.font-w-300 {\n    font-weight: 300\n}\n.font-w-400 {\n    font-weight: 400\n}\n.font-w-600 {\n    font-weight: 600\n}\n.font-w-700 {\n    font-weight: 700\n}\n.font-w-800 {\n    font-weight: 800\n}\n.font-title-tab {\n    font-family: 'Open-Sans', sans-serif;\n    text-transform: uppercase;\n    font-weight: bold;\n    font-size: 12px\n}\n.btn {\n    font-size: 14px;\n    padding: 7px 20px 7px 20px;\n    border: none;\n    background: #e4e4e4;\n    color: inherit;\n    border-radius: 3px\n}\n.btn:hover {\n    background-color: #eee;\n    color: #666\n}\n.btn:active,\n.btn.active {\n    background-image: none;\n    outline: 0;\n    -webkit-box-shadow: none;\n    box-shadow: none\n}\n.btn.disabled,\n.btn[disabled],\nfieldset[disabled] .btn {\n    pointer-events: none;\n    cursor: not-allowed;\n    filter: alpha(opacity=65);\n    -webkit-box-shadow: none;\n    box-shadow: none;\n    opacity: .65\n}\n.btn-xs {\n    font-size: 11px;\n    padding: 3px 8px\n}\n.btn-sm {\n    font-size: 12px;\n    padding: 5px 14px\n}\n.btn-lg {\n    font-size: 16px;\n    padding: 10px 30px\n}\n.btn-xl {\n    font-size: 20px;\n    padding: 14px 30px\n}\n.btn .fa {\n    font-size: 15px;\n    margin-right: 5px\n}\n.btn-icon {\n    padding-left: 10px;\n    padding-right: 10px\n}\n.btn-icon .fa {\n    margin: 0;\n    font-size: normal\n}\n.btn-rounded {\n    border-radius: 999px\n}\n.btn-square {\n    border-radius: 0\n}\n.btndiv .btn {\n    margin-bottom: 10px\n}\n.btn-default {\n    background-color: #399bff;\n    color: #fff\n}\n.btn-default:hover,\n.btn-default:focus,\n.btn-default.focus,\n.btn-default:active,\n.btn-default.active,\n.open>.dropdown-toggle.btn-default {\n    background-color: #4da5ff;\n    color: #fff\n}\n.btn-default:active,\n.btn-default.active,\n.open>.dropdown-toggle.btn-default {\n    background: #208eff;\n    box-shadow: none;\n    color: #fff\n}\n.btn-default .badge {\n    color: #399bff;\n    background-color: #fff\n}\n.btn-primary {\n    background-color: #33577b;\n    color: #fff\n}\n.btn-primary:hover,\n.btn-primary:focus,\n.btn-primary.focus,\n.btn-primary:active,\n.btn-primary.active,\n.open>.dropdown-toggle.btn-primary {\n    background-color: #396189;\n    color: #fff\n}\n.btn-primary:active,\n.btn-primary.active,\n.open>.dropdown-toggle.btn-primary {\n    background: #2c4a69;\n    box-shadow: none;\n    color: #fff\n}\n.btn-primary .badge {\n    color: #33577b;\n    background-color: #fff\n}\n.btn-white {\n    background-color: #e4e4e4;\n    color: #666\n}\n.btn-white:hover,\n.btn-white:focus,\n.btn-white.focus,\n.btn-white:active,\n.btn-white.active,\n.open>.dropdown-toggle.btn-white {\n    background-color: #eee;\n    color: #666\n}\n.btn-white:active,\n.btn-white.active,\n.open>.dropdown-toggle.btn-white {\n    background: #d7d7d7;\n    box-shadow: none;\n    color: #666\n}\n.btn-white .badge {\n    color: #e4e4e4;\n    background-color: #fff\n}\n.btn-toggle {\n    background-color: #e4e4e4;\n    color: #666;\n    border-size: 4px;\n    border-size: 5px\n}\n.btn-toggle:hover,\n.btn-toggle:focus,\n.btn-toggle.focus,\n.btn-toggle:active,\n.btn-toggle.active,\n.open>.dropdown-toggle.btn-toggle {\n    background-color: #eee;\n    color: #666\n}\n.btn-toggle:active,\n.btn-toggle.active,\n.open>.dropdown-toggle.btn-toggle {\n    background: #d7d7d7;\n    box-shadow: none;\n    color: #666\n}\n.btn-toggle .badge {\n    color: #e4e4e4;\n    background-color: #fff\n}\n.btn-light {\n    background-color: #fff;\n    color: inherit;\n    border: 1px solid #BDC4C9\n}\n.btn-light:hover,\n.btn-light:focus,\n.btn-light.focus,\n.btn-light:active,\n.btn-light.active,\n.open>.dropdown-toggle.btn-light {\n    background-color: #f9f9f9;\n    color: inherit\n}\n.btn-light:active,\n.btn-light.active,\n.open>.dropdown-toggle.btn-default {\n    box-shadow: none;\n    color: inherit\n}\n.btn-success {\n    background-color: #26a65b;\n    color: #fff\n}\n.btn-success:hover,\n.btn-success:focus,\n.btn-success.focus,\n.btn-success:active,\n.btn-success.active,\n.open>.dropdown-toggle.btn-success {\n    background-color: #2ab764;\n    color: #fff\n}\n.btn-success:active,\n.btn-success.active,\n.open>.dropdown-toggle.btn-success {\n    background: #219150;\n    box-shadow: none;\n    color: #fff\n}\n.btn-success .badge {\n    color: #26a65b;\n    background-color: #fff\n}\n.btn-info {\n    background-color: #51b7a3;\n    color: #fff\n}\n.btn-info:hover,\n.btn-info:focus,\n.btn-info.focus,\n.btn-info:active,\n.btn-info.active,\n.open>.dropdown-toggle.btn-info {\n    background-color: #5fbdab;\n    color: #fff\n}\n.btn-info:active,\n.btn-info.active,\n.open>.dropdown-toggle.btn-info {\n    background: #46a995;\n    box-shadow: none;\n    color: #fff\n}\n.btn-info .badge {\n    color: #51b7a3;\n    background-color: #fff\n}\n.btn-warning {\n    background-color: #f39c12;\n    color: #fff\n}\n.btn-warning:hover,\n.btn-warning:focus,\n.btn-warning.focus,\n.btn-warning:active,\n.btn-warning.active,\n.open>.dropdown-toggle.btn-warning {\n    background-color: #f4a425;\n    color: #fff\n}\n.btn-warning:active,\n.btn-warning.active,\n.open>.dropdown-toggle.btn-warning {\n    background: #e08e0b;\n    box-shadow: none;\n    color: #fff\n}\n.btn-warning .badge {\n    color: #f39c12;\n    background-color: #fff\n}\n.btn-danger {\n    background-color: #ef4836;\n    color: #fff\n}\n.btn-danger:hover,\n.btn-danger:focus,\n.btn-danger.focus,\n.btn-danger:active,\n.btn-danger.active,\n.open>.dropdown-toggle.btn-danger {\n    background-color: #f15949;\n    color: #fff\n}\n.btn-danger:active,\n.btn-danger.active,\n.open>.dropdown-toggle.btn-danger {\n    background: #ed321e;\n    box-shadow: none;\n    color: #fff\n}\n.btn-danger .badge {\n    color: #ef4836;\n    background-color: #fff\n}\n.btn-option1 {\n    background-color: #9a80b9;\n    color: #fff\n}\n.btn-option1:hover,\n.btn-option1:focus,\n.btn-option1.focus,\n.btn-option1:active,\n.btn-option1.active,\n.open>.dropdown-toggle.btn-option1 {\n    background-color: #a48dc0;\n    color: #fff\n}\n.btn-option1:active,\n.btn-option1.active,\n.open>.dropdown-toggle.btn-option1 {\n    background: #8d70b0;\n    box-shadow: none;\n    color: #fff\n}\n.btn-option1 .badge {\n    color: #9a80b9;\n    background-color: #fff\n}\n.btn-option2 {\n    background-color: #a2ded0;\n    color: #333\n}\n.btn-option2:hover,\n.btn-option2:focus,\n.btn-option2.focus,\n.btn-option2:active,\n.btn-option2.active,\n.open>.dropdown-toggle.btn-option2 {\n    background-color: #b1e3d8;\n    color: #333\n}\n.btn-option2:active,\n.btn-option2.active,\n.open>.dropdown-toggle.btn-option2 {\n    background: #8fd7c6;\n    box-shadow: none;\n    color: #333\n}\n.btn-option2 .badge {\n    color: #a2ded0;\n    background-color: #fff\n}\n.btn-option3 {\n    background-color: #d2527f;\n    color: #fff\n}\n.btn-option3:hover,\n.btn-option3:focus,\n.btn-option3.focus,\n.btn-option3:active,\n.btn-option3.active,\n.open>.dropdown-toggle.btn-option3 {\n    background-color: #d6628b;\n    color: #fff\n}\n.btn-option3:active,\n.btn-option3.active,\n.open>.dropdown-toggle.btn-option3 {\n    background: #cd3e70;\n    box-shadow: none;\n    color: #fff\n}\n.btn-option3 .badge {\n    color: #d2527f;\n    background-color: #fff\n}\n.btn-option4 {\n    background-color: #c78568;\n    color: #fff\n}\n.btn-option4:hover,\n.btn-option4:focus,\n.btn-option4.focus,\n.btn-option4:active,\n.btn-option4.active,\n.open>.dropdown-toggle.btn-option4 {\n    background-color: #cd9177;\n    color: #fff\n}\n.btn-option4:active,\n.btn-option4.active,\n.open>.dropdown-toggle.btn-option4 {\n    background: #c07655;\n    box-shadow: none;\n    color: #fff\n}\n.btn-option4 .badge {\n    color: #c78568;\n    background-color: #fff\n}\n.btn-option5 {\n    background-color: #e99844;\n    color: #fff\n}\n.btn-option5:hover,\n.btn-option5:focus,\n.btn-option5.focus,\n.btn-option5:active,\n.btn-option5.active,\n.open>.dropdown-toggle.btn-option4 {\n    background-color: #eba256;\n    color: #fff\n}\n.btn-option5:active,\n.btn-option5.active,\n.open>.dropdown-toggle.btn-option5 {\n    background: #e68b2d;\n    box-shadow: none;\n    color: #fff\n}\n.btn-option5 .badge {\n    color: #e99844;\n    background-color: #fff\n}\n.label {\n    font-size: inherit;\n    padding: 1px 6px;\n    font-weight: 600;\n    border-radius: 4px\n}\n.label-default {\n    background: #399bff\n}\n.label-primary {\n    background: #33577b\n}\n.label-success {\n    background: #26a65b\n}\n.label-info {\n    background: #51b7a3\n}\n.label-warning {\n    background: #f39c12\n}\n.label-danger {\n    background: #ef4836\n}\n.has-success .help-block,\n.has-success .control-label,\n.has-success .radio,\n.has-success .checkbox,\n.has-success .radio-inline,\n.has-success .checkbox-inline,\n.has-success.radio label,\n.has-success.checkbox label,\n.has-success.radio-inline label,\n.has-success.checkbox-inline label {\n    color: #26a65b\n}\n.has-success .form-control {\n    border-color: #26a65b;\n    box-shadow: none\n}\n.has-success .form-control:focus {\n    border-color: #26a65b;\n    box-shadow: none\n}\n.has-success .input-group-addon {\n    color: #26a65b;\n    background-color: #26a65b;\n    border-color: #26a65b\n}\n.has-success .form-control-feedback {\n    color: #26a65b\n}\n.has-warning .help-block,\n.has-warning .control-label,\n.has-warning .radio,\n.has-warning .checkbox,\n.has-warning .radio-inline,\n.has-warning .checkbox-inline,\n.has-warning.radio label,\n.has-warning.checkbox label,\n.has-warning.radio-inline label,\n.has-warning.checkbox-inline label {\n    color: #f39c12\n}\n.has-warning .form-control {\n    border-color: #f39c12;\n    box-shadow: none\n}\n.has-warning .form-control:focus {\n    border-color: #f39c12;\n    box-shadow: none\n}\n.has-warning .input-group-addon {\n    color: #f39c12;\n    background-color: #f39c12;\n    border-color: #f39c12\n}\n.has-warning .form-control-feedback {\n    color: #f39c12\n}\n.has-error .help-block,\n.has-error .control-label,\n.has-error .radio,\n.has-error .checkbox,\n.has-error .radio-inline,\n.has-error .checkbox-inline,\n.has-error.radio label,\n.has-error.checkbox label,\n.has-error.radio-inline label,\n.has-error.checkbox-inline label {\n    color: #ef4836\n}\n.has-error .form-control {\n    border-color: #ef4836;\n    box-shadow: none\n}\n.has-error .form-control:focus {\n    border-color: #ef4836;\n    box-shadow: none\n}\n.has-error .input-group-addon {\n    color: #ef4836;\n    background-color: #ef4836;\n    border-color: #ef4836\n}\n.has-error .form-control-feedback {\n    color: #ef4836\n}\ninput,\nselect {\n    height: 34px;\n    border-radius: 3px;\n    padding-left: 10px;\n    font-size: 14px;\n    background: #fff;\n    border: 1px solid #BDC4C9;\n    box-shadow: inset 0px 1px 0px #F1F0F1\n}\n.form-control {\n    height: 34px;\n    border-radius: 3px;\n    padding-left: 10px;\n    font-size: 14px;\n    background: #fff;\n    border: 1px solid #BDC4C9;\n    display: block;\n    box-shadow: inset 0px 1px 0px #F1F0F1\n}\n.form-control:focus {\n    background: #f7f7f7;\n    border-color: #BDC4C9;\n    box-shadow: none;\n    border-top: 1px solid #B7B7B7\n}\n.form-label {\n    font-weight: 500\n}\n.fieldset-form fieldset {\n    padding: 20px;\n    margin: 0 2px;\n    border-radius: 3px;\n    border: 1px solid #ccc;\n    padding-top: 10px\n}\n.fieldset-form legend {\n    width: auto;\n    padding: 0px 10px;\n    margin-bottom: 20px;\n    font-size: 16px;\n    line-height: inherit;\n    color: #333;\n    border: 0;\n    font-weight: 600;\n    border-bottom: none\n}\n.form-control-line {\n    border-left: 0;\n    border-top: 0;\n    border-right: 0;\n    padding-left: 0;\n    border-radius: 0;\n    box-shadow: none\n}\n.form-control-line:focus {\n    border-top: 0;\n    background: none;\n    border-color: #666\n}\n.form-control-radius {\n    border-radius: 999px\n}\n.form-group {\n    margin-bottom: 18px\n}\n.form-inline label {\n    margin-right: 5px\n}\n.form-inline .checkbox-inline,\n.form-inline .radio-inline {\n    padding-left: 0;\n    margin-right: 5px\n}\n.form-inline .checkbox-inline label,\n.form-inline .radio-inline label {\n    padding-left: 5px\n}\n.form-inline .form-group {\n    padding-right: 10px\n}\n.input-group-addon {\n    background: #f7f7f7;\n    border-color: #BDC4C9;\n    font-weight: 600;\n    padding-left: 17px;\n    padding-right: 17px\n}\n.input-sm {\n    height: 30px;\n    font-size: 12px;\n    line-height: 1.5\n}\n.input-lg {\n    height: 46px;\n    padding: 10px 16px;\n    font-size: 18px;\n    line-height: 1.3333333;\n    border-radius: 3px\n}\n.breadcrumb {\n    background: none;\n    padding: 0;\n    margin: 0;\n    font-weight: 600\n}\n.breadcrumb .active {\n    font-weight: normal;\n    color: #999\n}\n.dropdown-menu {\n    min-width: 100px;\n    font-size: inherit;\n    -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.09);\n    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.09)\n}\n.dropdown-header {\n    font-weight: normal;\n    text-transform: uppercase;\n    font-size: 10px;\n    padding-left: 15px;\n    font-family: 'Open-Sans', sans-serif;\n    padding-top: 5px\n}\n.dropdown-menu li {\n    position: relative\n}\n.dropdown-menu>li>a {\n    padding: 9px 20px;\n    color: #3D464D\n}\n.dropdown-menu .divider {\n    margin: 4px 0\n}\n.dropdown-menu-list li a {\n    padding-left: 40px\n}\n.dropdown-menu-list .badge {\n    right: 20px;\n    font-weight: normal;\n    margin-left: 5px;\n    padding: 2px 6px;\n    font-size: 11px\n}\n.dropdown-menu-list .falist {\n    position: absolute;\n    left: 15px;\n    top: 11px;\n    font-size: 15px\n}\n.dropdown-menu a {\n    cursor: pointer\n}\n.tab-content {\n    background: #fff;\n    padding: 20px\n}\n.nav-tabs {\n    border-bottom: none;\n    background: #E9E9E9;\n    padding: 0\n}\n.nav-tabs>li {\n    float: left;\n    margin-bottom: -1px;\n    margin-right: -2px\n}\n.nav-tabs>li>a {\n    margin-right: 2px;\n    line-height: 1.42857143;\n    color: inherit;\n    border: none;\n    border-radius: 0\n}\n.nav-tabs>li>a:hover {\n    border-color: none;\n    background: rgba(0, 0, 0, 0.1)\n}\n.nav-tabs>li.active>a,\n.nav-tabs>li.active>a:hover,\n.nav-tabs>li.active>a:focus {\n    color: #555;\n    cursor: default;\n    background-color: #fff;\n    border: none;\n    border-bottom-color: transparent\n}\n.nav-pills {\n    padding-bottom: 10px\n}\n.nav-pills>li {\n    float: left\n}\n.nav-pills>li>a {\n    border-radius: 3px;\n    padding: 4px 10px\n}\n.nav-pills>li+li {\n    margin-left: 2px\n}\n.nav-pills>li.active>a,\n.nav-pills>li.active>a:hover,\n.nav-pills>li.active>a:focus {\n    color: #fff;\n    background-color: #399bff\n}\n.nav-stacked li {\n    width: 100%;\n    display: block\n}\n.nav-justified {\n    padding: 0;\n    margin-bottom: -1px;\n    border-bottom: none\n}\n@media (min-width: 768px) {\n    .nav-tabs.nav-justified>li>a {\n        margin-bottom: 0\n    }\n}\n.nav-tabs.nav-justified>li>a {\n    border-radius: 0px\n}\n.nav-tabs.nav-justified>.active>a,\n.nav-tabs.nav-justified>.active>a:hover,\n.nav-tabs.nav-justified>.active>a:focus {\n    border: none\n}\n@media (min-width: 768px) {\n    .nav-tabs.nav-justified>li>a {\n        border-bottom: 1px solid #fff;\n        border-radius: none\n    }\n}\n.nav-line {\n    border-bottom: none;\n    background: none;\n    padding: 0\n}\n.nav-line>li {\n    float: left;\n    margin-bottom: -1px\n}\n.nav-line>li>a:hover {\n    border-color: none;\n    background: none;\n    border-bottom: 3px solid #e4e4e4;\n    color: #37363e\n}\n.nav-line>li.active>a,\n.nav-line>li.active>a:hover,\n.nav-line>li.active>a:focus {\n    color: inherit;\n    cursor: default;\n    background-color: transparent;\n    border-bottom: 3px solid #399bff\n}\n.nav-icon .fa {\n    font-size: 16px;\n    color: inherit\n}\n.nav-pills>li>a {\n    border-radius: 3px;\n    padding: 4px 14px\n}\n.tabs-left>.nav-tabs>li,\n.tabs-right>.nav-tabs>li {\n    float: none;\n    margin: 0\n}\n.tabs-left>.nav-tabs>li>a,\n.tabs-right>.nav-tabs>li>a {\n    min-width: 74px;\n    margin-right: 0;\n    margin-bottom: 3px\n}\n.tabs-left>.nav-tabs {\n    float: left;\n    margin-right: 29px\n}\n.tabs-right>.nav-tabs {\n    float: right;\n    margin-left: 29px;\n    text-align: right\n}\n.tabcolor5-bg li a,\n.tabcolor6-bg li a,\n.tabcolor7-bg li a,\n.tabcolor8-bg li a,\n.tabcolor9-bg li a,\n.tabcolor10-bg li a {\n    color: #fff\n}\n.tabcolor5-bg {\n    background: #399bff\n}\n.tabcolor6-bg {\n    background: #33577b\n}\n.tabcolor7-bg {\n    background: #26a65b\n}\n.tabcolor8-bg {\n    background: #51b7a3\n}\n.tabcolor9-bg {\n    background: #f39c12\n}\n.tabcolor10-bg {\n    background: #ef4836\n}\n.panel {\n    box-shadow: none;\n    border: 1px solid #e5e5e5;\n    background: #fff;\n    padding: 20px;\n    margin-bottom: 20px;\n    position: relative\n}\n.panel-footer {\n    margin: -20px;\n    margin-top: 20px;\n    background: #f9f9f9\n}\n.panel-transparent {\n    background: none;\n    border: none\n}\n.panel-transparent .panel-title {\n    background: none;\n    border: none\n}\n.panel-default>.panel-heading {\n    background-color: inherit;\n    border-bottom: 0;\n    color: #3D464D\n}\n.panel-title {\n    font-family: 'Open-Sans', sans-serif;\n    color: #58666e;\n    font-size: 13px;\n    font-weight: bold;\n    text-transform: uppercase;\n    padding: 16px 20px;\n    margin: -20px;\n    background: #fff;\n    margin-bottom: 5px;\n    border-bottom: none;\n    border-top-left-radius: 3px;\n    border-top-right-radius: 3px\n}\n.panel-body,\n.panel-heading {\n    padding: 0;\n    color: inherit;\n    background-color: transparent;\n    border-color: none\n}\n.panel-heading {\n    background: transparent;\n    border-bottom: transparent\n}\n.panel .badge {\n    font-size: 11px;\n    font-family: 'Open-Sans', sans-serif;\n    text-transform: none;\n    padding: 4px 10px;\n    margin-left: 5px;\n    font-weight: normal\n}\n.panel-footer {\n    background: rgba(0, 0, 0, 0.01);\n    border-top: 1px solid inherit\n}\n.panel-title .badge {\n    color: #fff;\n    background-color: rgba(0, 0, 0, 0.2)\n}\n.panel-heading {\n    font-size: 20px;\n    padding-bottom: 15px;\n    font-weight: 300\n}\n.panel .list-group {\n    margin: -20px;\n    margin-top: 20px;\n    background: transparent\n}\n.panel .list-group li {\n    border: 1px solid rgba(255, 255, 255, 0.2);\n    border-left: 0;\n    background: transparent;\n    border-right: 0\n}\n.panel .list-group-item:first-child {\n    border-top-left-radius: 0px;\n    border-top-right-radius: 0px\n}\n.panel .list-group-item:last-child {\n    margin-bottom: 0;\n    border-bottom-right-radius: 0px;\n    border-bottom-left-radius: 0px;\n    border-bottom: 0\n}\n.panel-collapse {\n    padding-bottom: 0\n}\n.panel-collapse .panel-title {\n    padding-bottom: 0;\n    margin-bottom: 0\n}\n.panel-collapse .panel-body {\n    padding: 10px 0 20px 0\n}\n.panel-widget {\n    overflow: hidden;\n}\n.panel-default {\n    border-color: #ddd\n}\n.panel-default .badge {\n    color: inherit;\n    background-color: rgba(0, 0, 0, 0.2)\n}\n.panel-default .list-group {\n    margin: -20px;\n    margin-top: 20px\n}\n.panel-default .list-group li {\n    border: 1px solid #ddd;\n    border-left: 0;\n    border-right: 0\n}\n.panel-default .list-group-item:first-child {\n    border-top-left-radius: 0px;\n    border-top-right-radius: 0px\n}\n.panel-default .list-group-item:last-child {\n    margin-bottom: 0;\n    border-bottom-right-radius: 0px;\n    border-bottom-left-radius: 0px;\n    border-bottom: 0\n}\n.panel-primary {\n    border-color: #399bff;\n    background: #399bff;\n    color: #fff\n}\n.panel-primary>.panel-heading {\n    color: inherit;\n    background: transparent;\n    border-bottom: transparent\n}\n.panel-primary>.panel-heading+.panel-collapse>.panel-body {\n    border-top-color: #399bff\n}\n.panel-primary .panel-title {\n    color: #fff;\n    background: #399bff;\n    border-bottom: 1px solid rgba(255, 255, 255, 0.1)\n}\n.panel-primary .panel-footer {\n    border-top: 1px solid rgba(255, 255, 255, 0.1);\n    background: rgba(255, 255, 255, 0.04)\n}\n.panel-primary>.panel-footer+.panel-collapse>.panel-body {\n    border-bottom-color: #399bff\n}\n.panel-success {\n    border-color: #26a65b;\n    background: #26a65b;\n    color: #fff\n}\n.panel-success>.panel-heading {\n    color: inherit;\n    background: transparent;\n    border-bottom: transparent\n}\n.panel-success>.panel-heading+.panel-collapse>.panel-body {\n    border-top-color: #26a65b\n}\n.panel-success .panel-title {\n    color: #fff;\n    background: #26a65b;\n    border-bottom: 1px solid rgba(255, 255, 255, 0.1)\n}\n.panel-success .panel-footer {\n    border-top: 1px solid rgba(255, 255, 255, 0.1);\n    background: rgba(255, 255, 255, 0.04)\n}\n.panel-success>.panel-footer+.panel-collapse>.panel-body {\n    border-bottom-color: #26a65b\n}\n.panel-info {\n    border-color: #51b7a3;\n    background: #51b7a3;\n    color: #fff\n}\n.panel-info>.panel-heading {\n    color: inherit;\n    background: transparent;\n    border-bottom: transparent\n}\n.panel-info>.panel-heading+.panel-collapse>.panel-body {\n    border-top-color: #51b7a3\n}\n.panel-info .panel-title {\n    color: #fff;\n    background: #51b7a3;\n    border-bottom: 1px solid rgba(255, 255, 255, 0.1)\n}\n.panel-info .panel-footer {\n    border-top: 1px solid rgba(255, 255, 255, 0.1);\n    background: rgba(255, 255, 255, 0.04)\n}\n.panel-info>.panel-footer+.panel-collapse>.panel-body {\n    border-bottom-color: #51b7a3\n}\n.panel-warning {\n    border-color: #f39c12;\n    background: #f39c12;\n    color: #fff\n}\n.panel-warning>.panel-heading {\n    color: inherit;\n    background: transparent;\n    border-bottom: transparent\n}\n.panel-warning>.panel-heading+.panel-collapse>.panel-body {\n    border-top-color: #f39c12\n}\n.panel-warning .panel-title {\n    color: #fff;\n    background: #f39c12;\n    border-bottom: 1px solid rgba(255, 255, 255, 0.1)\n}\n.panel-warning .panel-footer {\n    border-top: 1px solid rgba(255, 255, 255, 0.1);\n    background: rgba(255, 255, 255, 0.04)\n}\n.panel-warning>.panel-footer+.panel-collapse>.panel-body {\n    border-bottom-color: #f39c12\n}\n.panel-danger {\n    border-color: #ef4836;\n    background: #ef4836;\n    color: #fff\n}\n.panel-danger>.panel-heading {\n    color: inherit;\n    background: transparent;\n    border-bottom: transparent\n}\n.panel-danger>.panel-heading+.panel-collapse>.panel-body {\n    border-top-color: #ef4836\n}\n.panel-danger .panel-title {\n    color: #fff;\n    background: #ef4836;\n    border-bottom: 1px solid rgba(255, 255, 255, 0.1)\n}\n.panel-danger .panel-footer {\n    border-top: 1px solid rgba(255, 255, 255, 0.1);\n    background: rgba(255, 255, 255, 0.04)\n}\n.panel-danger>.panel-footer+.panel-collapse>.panel-body {\n    border-bottom-color: #ef4836\n}\n.panel-dark {\n    border-color: #3d464d;\n    background: #3d464d;\n    color: #fff\n}\n.panel-dark>.panel-heading {\n    color: inherit;\n    background: transparent;\n    border-bottom: transparent\n}\n.panel-dark>.panel-heading+.panel-collapse>.panel-body {\n    border-top-color: #3d464d\n}\n.panel-dark .panel-title {\n    color: #fff;\n    background: #3d464d;\n    border-bottom: 1px solid rgba(255, 255, 255, 0.1)\n}\n.panel-dark .panel-footer {\n    border-top: 1px solid rgba(255, 255, 255, 0.1);\n    background: rgba(255, 255, 255, 0.04)\n}\n.panel-dark>.panel-footer+.panel-collapse>.panel-body {\n    border-bottom-color: #3d464d\n}\n.panel-tools {\n    font-family: 'Open-Sans', sans-serif;\n    position: absolute;\n    right: 16px;\n    top: 13px;\n    text-transform: none;\n    font-weight: 600;\n    font-size: inherit;\n    z-index: 1\n}\n.panel-tools li {\n    display: inline-block\n}\n.panel-tools a {\n    padding: 3px 8px;\n    display: block;\n    color: inherit;\n    border-radius: 3px\n}\n.panel-tools a:hover {\n    color: rgba(0, 0, 0, 0.6);\n    background: rgba(0, 0, 0, 0.09)\n}\n.panel-tools .icon {\n    font-size: 14px;\n    color: rgba(0, 0, 0, 0.5);\n    border-radius: 3px;\n    cursor: pointer\n}\n.panel-tools .icon a {\n    color: rgba(0, 0, 0, 0.4)\n}\n.panel-tools .dropdown-menu {\n    -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n    font-size: 13px\n}\n.panel-tools .dropdown-menu li {\n    display: list-item\n}\n.panel-tools .dropdown-menu a {\n    display: block\n}\n.panel-search {\n    margin: -20px;\n    padding: 15px 20px;\n    position: relative;\n    color: #333;\n    display: none;\n    background: rgba(255, 255, 255, 0.1);\n    margin-bottom: 20px;\n    border-bottom: 1px solid rgba(0, 0, 0, 0.1)\n}\n.panel-search input {\n    background: #fff;\n    border-radius: 999px;\n    padding-left: 35px\n}\n.panel-search input:focus {\n    background: #fff\n}\n.panel-search .icon {\n    position: absolute;\n    left: 35px;\n    top: 25px\n}\n.panel-fullsize {\n    position: fixed;\n    width: 100%;\n    height: 100vh;\n    overflow: auto;\n    top: 0;\n    left: 0;\n    z-index: 9999\n}\n.panel-tools-hover {\n    display: none\n}\n.panel:hover .panel-tools-hover {\n    display: block\n}\n.panel-title .titleicon {\n    margin-right: 10px\n}\n.panel-closed .panel-title {\n    margin-bottom: -20px\n}\n.panel-closed .panel-body {\n    display: none\n}\n.widget-tools {\n    font-family: 'Open-Sans', sans-serif;\n    position: absolute;\n    right: 15px;\n    top: 13px;\n    text-transform: none;\n    font-weight: 600;\n    font-size: inherit;\n    z-index: 1\n}\n.widget-tools li {\n    display: inline-block\n}\n.widget-tools a {\n    padding: 3px 8px;\n    display: block;\n    color: inherit;\n    border-radius: 3px\n}\n.widget-tools a:hover {\n    color: rgba(0, 0, 0, 0.6);\n    background: rgba(0, 0, 0, 0.09)\n}\n.widget-tools .icon {\n    font-size: 14px;\n    color: rgba(0, 0, 0, 0.5);\n    border-radius: 3px;\n    cursor: pointer\n}\n.widget-tools .icon a {\n    color: rgba(0, 0, 0, 0.4)\n}\n.widget-tools .dropdown-menu {\n    -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);\n    font-size: 13px\n}\n.widget-tools .dropdown-menu li {\n    display: list-item\n}\n.widget-tools .dropdown-menu a {\n    display: block\n}\n.widget-fullsize {\n    position: fixed;\n    width: 100%;\n    height: 100vh;\n    overflow: auto;\n    top: 0;\n    left: 0;\n    z-index: 9999\n}\n.widget-tools-hover {\n    display: none\n}\n.widget:hover .widget-tools-hover {\n    display: block\n}\n.modal {\n    z-index: 999\n}\n.modal-sm {\n    max-width: 400px\n}\n.modal-lg {\n    min-width: 90%\n}\n.modal .close {\n    width: 26px;\n    border-radius: 4px;\n    font-size: 23px;\n    background: #ccc;\n    color: #000;\n    text-shadow: none;\n    opacity: 0.4;\n    outline: 0\n}\n.modal .close:hover {\n    opacity: 0.6\n}\n.modal-title {\n    font-family: 'Open-Sans', sans-serif;\n    font-size: 16px\n}\n.modalicon {\n    background: #fff;\n    border-radius: 3px;\n    text-align: center;\n    height: 300px;\n    display: table-cell;\n    width: 100%;\n    position: relative;\n    vertical-align: middle;\n    border: 2px solid #e2e2e2\n}\n.modalicon img {\n    border-radius: 3px\n}\n.modalicon:hover {\n    border-color: #ccc\n}\n.progress {\n    height: 18px;\n    background: rgba(0, 0, 0, 0.15);\n    box-shadow: none\n}\n.progress-bar {\n    background: #399bff;\n    font-size: 12px;\n    font-weight: 600;\n    line-height: normal\n}\n.progress-bar-success {\n    background: #26a65b\n}\n.progress-bar-info {\n    background: #51b7a3\n}\n.progress-bar-warning {\n    background: #f39c12\n}\n.progress-bar-danger {\n    background: #ef4836\n}\n.progress-bar-transparent {\n    background: transparent;\n    color: inherit\n}\n.progress-small {\n    height: 9px\n}\n.progress-large {\n    height: 26px\n}\n.progress-extralarge {\n    height: 36px\n}\n.table {\n    margin: 0\n}\n.table-hover>tbody>tr:hover {\n    background-color: #EFF7FF\n}\nthead {\n    font-weight: 600;\n    font-family: 'Open-Sans', sans-serif;\n    text-transform: uppercase;\n    font-size: 12px;\n    color: #37363e\n}\nthead .fa {\n    font-size: 16px;\n    margin: 0\n}\ntable td {\n    display: table-cell;\n    vertical-align: middle\n}\n.table>thead>tr>th,\n.table>tbody>tr>th,\n.table>tfoot>tr>th,\n.table>thead>tr>td,\n.table>tbody>tr>td,\n.table>tfoot>tr>td {\n    padding: 15px;\n    line-height: 1.7\n}\n.doc-grid {\n    padding: 10px 20px\n}\n.doc-grid div {\n    border: 1px solid #ccc;\n    text-align: center;\n    font-size: 16px;\n    padding: 20px 0;\n    background: #fff\n}\n.quick-menu {\n\tpadding: 0;\n\tmargin-bottom: 10px;\n\tbackground: #fff;\n\tfont-family: 'Montserrat',sans-serif\n}\n\n.quick-menu .label {\n\tposition: absolute;\n\tpadding: 4px 6px;\n\ttop: -10px;\n\tright: 10px\n}\n\n.quick-menu li {\n\tdisplay: block;\n\ttext-align: center;\n\tpadding: 0;\n\tposition: relative;\n\tfont-size: 13px\n}\n\n.quick-menu li .fa {\n\tdisplay: block;\n\tfont-size: 28px;\n\tmargin-bottom: 5px\n}\n\n.quick-menu a {\n\tcolor: #58666e;\n\tdisplay: block;\n\tpadding: 18px 0;\n\ttext-shadow: none;\n}\n\n.quick-menu a .fa {\n\tcolor: #399bff\n}\n\n.menu-active a {\n\tbackground: #399bff !important;\n\tcolor: #FFF !important;\n\tmargin-left:-5px;\n\tborder-radius: 3px\n}\n\n.menu-active, .menu-active i {\n\tcolor: #FFF !important\n}\n\n.topstats {\n\tbackground: #fff;\n\tpadding: 0;\n\tcolor: #76747A;\n\tposition: relative;\n\tfont-size: 12px;\n\tborder-radius: 3px;\n\ttext-shadow: none;\n\tpadding: 12px 0\n}\n\n.topstats li {\n\tdisplay: block;\n\ttext-align: center;\n\tmargin: 10px 0\n}\n\n.topstats .title {\n\tcolor: #37363e;\n\tfont-weight: 600;\n\tfont-size: 13px\n}\n\n.topstats .title .fa {\n\tfont-size: 15px;\n\tcolor: #000;\n\tmargin-right: 4px;\n\topacity: 0.4\n}\n\n.topstats h3 {\n\tfont-size: 28px;\n\tfont-weight: bold;\n\tfont-family: 'Montserrat',sans-serif;\n\tletter-spacing: -1px;\n\tline-height: normal;\n\tmargin: 1px 0\n}\n\n.topstats h3 small {\n\tcolor: #37363e\n}\n\n.topstats .diff b {\n\tfont-weight: bold\n}\n\n.topstats .diff .fa {\n\tmargin-right: 2px\n}\n\n.topstats .arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  top: -18px;\n  right: 5px;\n  border-style: solid;\n  border-width: 0 10px 10px 10px;\n  border-color: transparent transparent #fff transparent\n}\n\n.widget {\n    overflow: hidden;\n    margin-bottom: 10px;\n    background: #fff;\n    border-radius: 3px;\n    padding: 20px;\n    position: relative\n}\n.widget .widget-title {\n    color: #37363e;\n    font-size: 12px;\n    font-weight: bold;\n    padding: 16px 20px;\n    background: #fff;\n    margin-bottom: 5px;\n    border-bottom: none;\n    border-top-left-radius: 3px;\n    border-top-right-radius: 3px;\n    margin: -20px;\n    margin-bottom: 20px\n}\n.widget .widget-title h5 {\n    font-size: 12px;\n    z-index: 1;\n    margin: 0;\n    color: #58666e\n}\n.widget .widget-title h2 {\n    font-family: 'Open-Sans', sans-serif;\n    font-size: 12px;\n    margin: 0;\n    font-weight: bold;\n    text-transform: uppercase\n}\n.widget-inline-list {\n    display: block;\n    padding-left: 0;\n    color: #58666e\n}\n.widget-inline-list li {\n    display: block;\n    float: left;\n    text-align: center;\n    padding: 15px 0\n}\n.widget-inline-list li span {\n    font-size: 18px;\n    display: block;\n    color: inherit;\n    font-family: 'Open-Sans', sans-serif;\n    font-weight: 600\n}\n.widget-inline-list .chart {\n    display: block;\n    margin-top: 5px\n}\n.widget-inline-list .col-1 {\n    width: 8.3333333%\n}\n.widget-inline-list .col-2 {\n    width: 16.666666%\n}\n.widget-inline-list .col-3 {\n    width: 25%\n}\n.widget-inline-list .col-4 {\n    width: 33.333333%\n}\n.widget-inline-list .col-6 {\n    width: 50%\n}\n.widget-inline-list .col-12 {\n    width: 100%\n}\n.color1 {\n    color: #37363e\n}\n.color2 {\n    color: #58666e\n}\n.color3 {\n    color: #e4e4e4\n}\n.color4 {\n    color: #f5f5f5\n}\n.color5 {\n    color: #399bff\n}\n.color6 {\n    color: #33577b\n}\n.color7 {\n    color: #26a65b\n}\n.color8 {\n    color: #51b7a3\n}\n.color9 {\n    color: #f39c12\n}\n.color10 {\n    color: #ef4836\n}\n.color11 {\n    color: #9a80b9\n}\n.color12 {\n    color: #a2ded0\n}\n.color13 {\n    color: #d2527f\n}\n.color14 {\n    color: #c78568\n}\n.color15 {\n    color: #e99844\n}\n.color0-bg {\n    background: #3d464d\n}\n.color1-bg {\n    background: #37363e\n}\n.color2-bg {\n    background: #58666e\n}\n.color3-bg {\n    background: #e4e4e4\n}\n.color4-bg {\n    background: #f5f5f5\n}\n.color5-bg {\n    background: #399bff\n}\n.color6-bg {\n    background: #33577b\n}\n.color7-bg {\n    background: #26a65b\n}\n.color8-bg {\n    background: #51b7a3\n}\n.color9-bg {\n    background: #f39c12\n}\n.color10-bg {\n    background: #ef4836\n}\n.color11-bg {\n    background: #9a80b9\n}\n.color12-bg {\n    background: #a2ded0\n}\n.color13-bg {\n    background: #d2527f\n}\n.color14-bg {\n    background: #c78568\n}\n.color15-bg {\n    background: #e99844\n}\n.color-up {\n    color: #26a65b\n}\n.color-down {\n    color: #ef4836\n}\n.color-fix {\n    color: #399bff\n}"
  },
  {
    "path": "admin/dashboard.php",
    "content": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\nsession_start();\nrequire_once('../config.php');\n\n// Fetch $baseurl from site_info\ntry {\n    $pdo = new PDO(\"mysql:host=$dbhost;dbname=$dbname\", $dbuser, $dbpassword);\n    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n    $stmt = $pdo->query(\"SELECT baseurl FROM site_info WHERE id = 1\");\n    $row = $stmt->fetch(PDO::FETCH_ASSOC);\n    $baseurl = $row['baseurl'] ?? '';\n} catch (PDOException $e) {\n    error_log(\"dashboard.php: Failed to fetch baseurl: \" . $e->getMessage());\n    die(\"Unable to fetch site configuration: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));\n}\n\nif (!isset($_SESSION['admin_login']) || !isset($_SESSION['admin_id'])) {\n    error_log(\"dashboard.php: Session validation failed - admin_login or admin_id not set. Session: \" . json_encode($_SESSION));\n    header(\"Location: \" . htmlspecialchars($baseurl . 'admin/index.php', ENT_QUOTES, 'UTF-8'));\n    exit();\n}\n\ntry {\n    // Validate admin\n    $stmt = $pdo->prepare(\"SELECT id, user FROM admin WHERE id = ?\");\n    $stmt->execute([$_SESSION['admin_id']]);\n    $row = $stmt->fetch(PDO::FETCH_ASSOC);\n    if (!$row || $row['user'] !== $_SESSION['admin_login']) {\n        error_log(\"dashboard.php: Admin validation failed - id: {$_SESSION['admin_id']}, user: {$_SESSION['admin_login']}, found: \" . ($row ? json_encode($row) : 'null'));\n        unset($_SESSION['admin_login'], $_SESSION['admin_id']);\n        header(\"Location: \" . htmlspecialchars($baseurl . 'admin/index.php', ENT_QUOTES, 'UTF-8'));\n        exit();\n    }\n} catch (PDOException $e) {\n    error_log(\"dashboard.php: Database connection failed: \" . $e->getMessage());\n    die(\"Unable to connect to database: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));\n}\n\nif (isset($_GET['logout'])) {\n    unset($_SESSION['admin_login'], $_SESSION['admin_id']);\n    session_destroy();\n    header(\"Location: \" . htmlspecialchars($baseurl . 'admin/index.php', ENT_QUOTES, 'UTF-8'));\n    exit();\n}\n\n$date = date('Y-m-d H:i:s');\n$ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';\nrequire_once('../includes/functions.php');\n\n// Log admin activity\n$last_ip = null; $last_date = null;\n$stmt = $pdo->query(\"SELECT MAX(id) AS last_id FROM admin_history\");\n$last_id = $stmt->fetch(PDO::FETCH_ASSOC)['last_id'] ?? null;\n\nif ($last_id) {\n    $stmt = $pdo->prepare(\"SELECT last_date, ip FROM admin_history WHERE id = ?\");\n    $stmt->execute([$last_id]);\n    $row = $stmt->fetch(PDO::FETCH_ASSOC);\n    if ($row) { $last_date = $row['last_date'] ?? ''; $last_ip = $row['ip'] ?? ''; }\n}\nif ($last_ip !== $ip || $last_date !== $date) {\n    try {\n        $stmt = $pdo->prepare(\"INSERT INTO admin_history (last_date, ip) VALUES (?, ?)\");\n        $stmt->execute([$date, $ip]);\n    } catch (PDOException $e) { error_log(\"dashboard.php: Failed to log admin activity: \" . $e->getMessage()); }\n}\n\n// Stats\n$stmt = $pdo->query(\"SELECT SUM(tpage) AS total_page, SUM(tvisit) AS total_visit FROM page_view\");\n$row = $stmt->fetch(PDO::FETCH_ASSOC);\n$total_page = (int) ($row['total_page'] ?? 0);\n$total_visit = (int) ($row['total_visit'] ?? 0);\n\n$stmt = $pdo->query(\"SELECT MAX(id) AS last_id FROM page_view\");\n$page_last_id = $stmt->fetch(PDO::FETCH_ASSOC)['last_id'] ?? null;\n\n$today_page = 0; $today_visit = 0;\nif ($page_last_id) {\n    $stmt = $pdo->prepare(\"SELECT tpage, tvisit FROM page_view WHERE id = ?\");\n    $stmt->execute([$page_last_id]);\n    $row = $stmt->fetch(PDO::FETCH_ASSOC);\n    $today_page = (int) ($row['tpage'] ?? 0);\n    $today_visit = (int) ($row['tvisit'] ?? 0);\n}\n\n// Count today's users & pastes\n$c_date = date('Y-m-d');\n$stmt = $pdo->prepare(\"SELECT COUNT(id) AS count FROM users WHERE DATE(date) = ?\");\n$stmt->execute([$c_date]);\n$today_users_count = (int) ($stmt->fetch(PDO::FETCH_ASSOC)['count'] ?? 0);\n\n$stmt = $pdo->prepare(\"SELECT COUNT(id) AS count FROM pastes WHERE s_date = ?\");\n$stmt->execute([$c_date]);\n$today_pastes_count = (int) ($stmt->fetch(PDO::FETCH_ASSOC)['count'] ?? 0);\n\n// Recent past 7 page_view rows (labels)\n$ldate = []; $tpage = []; $tvisit = [];\nfor ($loop = 0; $loop <= 6; $loop++) {\n    $myid = $page_last_id - $loop;\n    $stmt = $pdo->prepare(\"SELECT date, tpage, tvisit FROM page_view WHERE id = ?\");\n    $stmt->execute([$myid]);\n    $row = $stmt->fetch(PDO::FETCH_ASSOC);\n    if ($row) {\n        $sdate = $row['date'];\n        $sdate = str_replace(date('Y'), '', $sdate);\n        $sdate = str_replace(['January','February','March','April','August','September','October','November','December'],\n                             ['Jan','Feb','Mar','Apr','Aug','Sep','Oct','Nov','Dec'], $sdate);\n        $ldate[$loop] = $sdate;\n        $tpage[$loop] = (int) ($row['tpage'] ?? 0);\n        $tvisit[$loop] = (int) ($row['tvisit'] ?? 0);\n    }\n}\n\n// Mail logs (last 10)\n$stmt = $pdo->prepare(\"\n  SELECT\n    ml.id,\n    ml.email,\n    ml.sent_at,\n    ml.type,             -- 'verification' | 'reset' | 'test'\n    u.username\n  FROM mail_log ml\n  LEFT JOIN users u ON u.email_id = ml.email\n  ORDER BY ml.sent_at DESC\n  LIMIT 10\n\");\n$stmt->execute();\n$mail_logs = $stmt->fetchAll(PDO::FETCH_ASSOC);\n\n?>\n<!DOCTYPE html>\n<html lang=\"en\" data-bs-theme=\"dark\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>Paste - Dashboard</title>\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\" rel=\"stylesheet\">\n<style>\n  :root{\n    --bg:#0f1115; --card:#141821; --muted:#7f8da3; --border:#1f2633; --accent:#0d6efd;\n  }\n  body{background:var(--bg);color:#e6edf3;}\n  .navbar{background:#121826!important;position:sticky;top:0;z-index:1030}\n  .navbar .navbar-brand{font-weight:600}\n  .sidebar-desktop{position:sticky; top:1rem; background:#121826;border:1px solid var(--border);border-radius:12px;padding:12px}\n  .sidebar-desktop .list-group-item{background:transparent;color:#dbe5f5;border:0;border-radius:10px;padding:.65rem .8rem}\n  .sidebar-desktop .list-group-item:hover{background:#0e1422}\n  .sidebar-desktop .list-group-item.active{background:#0d6efd;color:#fff}\n  .card{background:var(--card);border:1px solid var(--border);border-radius:12px}\n  .table{color:#e6edf3}\n  .table thead th{background:#101521;color:#c6d4f0;border-color:var(--border)}\n  .table td,.table th{border-color:var(--border)}\n  .badge{background:#0d6efd}\n  .btn-soft{background:#101521;border:1px solid var(--border);color:#dbe5f5}\n  .btn-soft:hover{background:#0e1422;color:#fff}\n  .offcanvas-nav{width:280px;background:#0f1523;color:#dbe5f5}\n  .offcanvas-nav .list-group-item{background:transparent;border:0;color:#dbe5f5}\n  .offcanvas-nav .list-group-item:hover{background:#0e1422}\n</style>\n</head>\n<body>\n\n<nav class=\"navbar navbar-expand-lg navbar-dark\">\n  <div class=\"container-fluid\">\n    <div class=\"d-flex align-items-center gap-2\">\n      <button class=\"btn btn-soft d-lg-none\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#navOffcanvas\" aria-controls=\"navOffcanvas\">\n        <i class=\"bi bi-list\"></i>\n      </button>\n      <a class=\"navbar-brand\" href=\"../\">Paste</a>\n    </div>\n    <button class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNav\">\n      <span class=\"navbar-toggler-icon\"></span>\n    </button>\n    <div class=\"collapse navbar-collapse justify-content-end\" id=\"navbarNav\">\n      <ul class=\"navbar-nav\">\n        <li class=\"nav-item dropdown\">\n          <a class=\"nav-link dropdown-toggle\" href=\"#\" data-bs-toggle=\"dropdown\">\n            <?php echo htmlspecialchars($_SESSION['admin_login'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\n          </a>\n          <ul class=\"dropdown-menu dropdown-menu-end\">\n            <li><a class=\"dropdown-item\" href=\"admin.php\">Settings</a></li>\n            <li><a class=\"dropdown-item\" href=\"?logout\">Logout</a></li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n  </div>\n</nav>\n\n<!-- Mobile offcanvas nav -->\n<div class=\"offcanvas offcanvas-start offcanvas-nav\" tabindex=\"-1\" id=\"navOffcanvas\">\n  <div class=\"offcanvas-header\">\n    <h5 class=\"offcanvas-title\">Admin Menu</h5>\n    <button type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\"></button>\n  </div>\n  <div class=\"offcanvas-body\">\n    <div class=\"list-group\">\n      <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n    </div>\n  </div>\n</div>\n\n<div class=\"container-fluid my-2\">\n  <div class=\"row g-2\">\n    <!-- Desktop sidebar -->\n    <div class=\"col-lg-2 d-none d-lg-block\">\n      <div class=\"sidebar-desktop\">\n        <div class=\"list-group\">\n          <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"col-lg-10\">\n      <!-- Overview -->\n      <div class=\"card mb-3\">\n        <div class=\"card-body\">\n          <div class=\"d-flex align-items-center justify-content-between mb-2\">\n            <h4 class=\"card-title mb-0\">Overview</h4>\n            <a class=\"btn btn-soft btn-sm\" href=\"<?php echo htmlspecialchars($baseurl.'admin/stats.php'); ?>\"><i class=\"bi bi-graph-up\"></i> View stats</a>\n          </div>\n          <div class=\"row g-2\">\n            <div class=\"col-md-3\">\n              <div class=\"card h-100 text-center\">\n                <div class=\"card-body\">\n                  <div class=\"small text-secondary\">Views (today)</div>\n                  <div class=\"display-6\"><?php echo htmlspecialchars($today_page, ENT_QUOTES, 'UTF-8'); ?></div>\n                </div>\n              </div>\n            </div>\n            <div class=\"col-md-3\">\n              <div class=\"card h-100 text-center\">\n                <div class=\"card-body\">\n                  <div class=\"small text-secondary\">Pastes (today)</div>\n                  <div class=\"display-6\"><?php echo htmlspecialchars($today_pastes_count, ENT_QUOTES, 'UTF-8'); ?></div>\n                </div>\n              </div>\n            </div>\n            <div class=\"col-md-3\">\n              <div class=\"card h-100 text-center\">\n                <div class=\"card-body\">\n                  <div class=\"small text-secondary\">Users (today)</div>\n                  <div class=\"display-6\"><?php echo htmlspecialchars($today_users_count, ENT_QUOTES, 'UTF-8'); ?></div>\n                </div>\n              </div>\n            </div>\n            <div class=\"col-md-3\">\n              <div class=\"card h-100 text-center\">\n                <div class=\"card-body\">\n                  <div class=\"small text-secondary\">Unique Views (today)</div>\n                  <div class=\"display-6\"><?php echo htmlspecialchars($today_visit, ENT_QUOTES, 'UTF-8'); ?></div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <!-- Recent Pastes & Recent Users -->\n      <div class=\"row g-2\">\n        <div class=\"col-lg-6\">\n          <div class=\"card h-100\">\n            <div class=\"card-body\">\n              <h4 class=\"card-title\">Recent Pastes</h4>\n              <div class=\"table-responsive\">\n                <table class=\"table table-hover table-bordered align-middle\">\n                  <thead>\n                    <tr>\n                      <th>ID</th><th>Username</th><th>Date</th><th>IP</th><th>Views</th>\n                    </tr>\n                  </thead>\n                  <tbody>\n                    <?php\n                    $stmt = $pdo->prepare(\"\n                        SELECT p.id, p.title, p.member, p.s_date, p.ip, \n                               COALESCE(COUNT(pv.id), 0) AS views, \n                               UNIX_TIMESTAMP(p.date) AS now_time\n                        FROM pastes p\n                        LEFT JOIN paste_views pv ON p.id = pv.paste_id\n                        GROUP BY p.id, p.title, p.member, p.s_date, p.ip, p.date\n                        ORDER BY now_time DESC LIMIT 7\n                    \");\n                    $stmt->execute();\n                    if ($stmt->rowCount() > 0) {\n                      while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {\n                        $p_id = trim($row['id'] ?? '');\n                        $p_member = trim($row['member'] ?? 'Guest');\n                        $p_date = trim($row['s_date'] ?? '');\n                        $p_ip = trim($row['ip'] ?? '');\n                        $p_view = (int) ($row['views'] ?? 0);\n                        echo \"<tr>\n                                <td>\".htmlspecialchars($p_id, ENT_QUOTES, 'UTF-8').\"</td>\n                                <td>\".htmlspecialchars($p_member, ENT_QUOTES, 'UTF-8').\"</td>\n                                <td>\".htmlspecialchars($p_date, ENT_QUOTES, 'UTF-8').\"</td>\n                                <td><span class='badge'>\".htmlspecialchars($p_ip, ENT_QUOTES, 'UTF-8').\"</span></td>\n                                <td>\".htmlspecialchars($p_view, ENT_QUOTES, 'UTF-8').\"</td>\n                              </tr>\";\n                      }\n                    } else {\n                      echo \"<tr><td colspan='5' class='text-center'>No recent pastes found.</td></tr>\";\n                    }\n                    ?>\n                  </tbody>\n                </table>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <div class=\"col-lg-6\">\n          <div class=\"card h-100\">\n            <div class=\"card-body\">\n              <h4 class=\"card-title\">Recent Users</h4>\n              <div class=\"table-responsive\">\n                <table class=\"table table-hover table-bordered align-middle\">\n                  <thead>\n                    <tr><th>ID</th><th>Username</th><th>Date</th><th>IP</th></tr>\n                  </thead>\n                  <tbody>\n                    <?php\n                    $stmt = $pdo->query(\"SELECT MAX(id) AS last_id FROM users\");\n                    $last_id = $stmt->fetch(PDO::FETCH_ASSOC)['last_id'] ?? null;\n                    if ($last_id) {\n                      for ($uloop = 0; $uloop <= 6; $uloop++) {\n                        $r_my_id = $last_id - $uloop;\n                        $stmt = $pdo->prepare(\"SELECT username, date, ip FROM users WHERE id = ?\");\n                        $stmt->execute([$r_my_id]);\n                        $row = $stmt->fetch(PDO::FETCH_ASSOC);\n                        if ($row) {\n                          $u_date = $row['date'] ?? '';\n                          $ip = htmlspecialchars($row['ip'] ?? '', ENT_QUOTES, 'UTF-8');\n                          $username = htmlspecialchars($row['username'] ?? '', ENT_QUOTES, 'UTF-8');\n                          echo \"<tr>\n                                  <td>\".htmlspecialchars($r_my_id, ENT_QUOTES, 'UTF-8').\"</td>\n                                  <td>$username</td>\n                                  <td>\".htmlspecialchars($u_date, ENT_QUOTES, 'UTF-8').\"</td>\n                                  <td><span class='badge'>$ip</span></td>\n                                </tr>\";\n                        }\n                      }\n                    } else {\n                      echo \"<tr><td colspan='4' class='text-center'>No recent users found.</td></tr>\";\n                    }\n                    ?>\n                  </tbody>\n                </table>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <!-- Admin history & Version info -->\n      <div class=\"row g-2 mt-0\">\n        <div class=\"col-lg-6\">\n          <div class=\"card h-100\">\n            <div class=\"card-body\">\n              <h4 class=\"card-title\">Admin History</h4>\n              <div class=\"table-responsive\">\n                <table class=\"table table-hover table-bordered align-middle\">\n                  <thead>\n                    <tr><th>ID</th><th>Last Login Date</th><th>IP</th></tr>\n                  </thead>\n                  <tbody>\n                    <?php\n                    $stmt = $pdo->query(\"SELECT MAX(id) AS last_id FROM admin_history\");\n                    $last_id = $stmt->fetch(PDO::FETCH_ASSOC)['last_id'] ?? null;\n\n                    if ($last_id) {\n                      for ($cloop = 0; $cloop <= 6; $cloop++) {\n                        $c_my_id = $last_id - $cloop;\n                        $stmt = $pdo->prepare(\"SELECT last_date, ip FROM admin_history WHERE id = ?\");\n                        $stmt->execute([$c_my_id]);\n                        $row = $stmt->fetch(PDO::FETCH_ASSOC);\n                        if ($row) {\n                          $last_date = $row['last_date'] ?? '';\n                          $ip = htmlspecialchars($row['ip'] ?? '', ENT_QUOTES, 'UTF-8');\n                          echo \"<tr>\n                                  <td>\".htmlspecialchars($c_my_id, ENT_QUOTES, 'UTF-8').\"</td>\n                                  <td>\".htmlspecialchars($last_date, ENT_QUOTES, 'UTF-8').\"</td>\n                                  <td><span class='badge'>$ip</span></td>\n                                </tr>\";\n                        }\n                      }\n                    } else {\n                      echo \"<tr><td colspan='3' class='text-center'>No admin history found.</td></tr>\";\n                    }\n                    ?>\n                  </tbody>\n                </table>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <div class=\"col-lg-6\">\n          <div class=\"card h-100\">\n            <div class=\"card-body\">\n              <h4 class=\"card-title\">Version Information</h4>\n              <p class=\"mb-1\">\n                <?php\n                $latestversion = @file_get_contents('https://raw.githubusercontent.com/boxlabss/PASTE/releases/version');\n                echo \"Latest version: \" . htmlspecialchars($latestversion !== false ? $latestversion : 'Unknown', ENT_QUOTES, 'UTF-8') . \n                     \" &mdash; Installed version: \" . htmlspecialchars($currentversion ?? 'Unknown', ENT_QUOTES, 'UTF-8');\n                ?>\n              </p>\n              <div class=\"small text-secondary\">\n                <?php\n                if (!empty($currentversion) && !empty($latestversion) && $currentversion == $latestversion) {\n                    echo 'You have the latest version.';\n                } else {\n                    echo 'Your Paste installation is outdated. Get the latest version from \n                          <a class=\"link-primary\" href=\"https://sourceforge.net/projects/phpaste/files/latest/download\" target=\"_blank\" rel=\"noopener\">SourceForge</a>.';\n                }\n                ?>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <!-- Mail logs -->\n      <div class=\"card mt-3\">\n        <div class=\"card-body\">\n          <h4 class=\"card-title\">Recent Mail Logs</h4>\n          <div class=\"table-responsive\">\n            <table class=\"table table-hover table-bordered align-middle\">\n\t\t\t\t<thead>\n\t\t\t\t  <tr><th>ID</th><th>Username</th><th>Email</th><th>Type</th><th>Sent</th></tr>\n\t\t\t\t</thead>\n\t\t\t\t<tbody>\n\t\t\t\t<?php if ($mail_logs): foreach ($mail_logs as $row): ?>\n\t\t\t\t  <tr>\n\t\t\t\t\t<td><?= htmlspecialchars($row['id']) ?></td>\n\t\t\t\t\t<td><?= htmlspecialchars($row['username'] ?? '') ?></td>\n\t\t\t\t\t<td><?= htmlspecialchars($row['email']) ?></td>\n\t\t\t\t\t<td>\n\t\t\t\t\t  <?php\n\t\t\t\t\t\t$icon = match ($row['type']) {\n\t\t\t\t\t\t  'verification' => '<i class=\"bi bi-envelope-check me-2\"></i>',\n\t\t\t\t\t\t  'reset'        => '<i class=\"bi bi-key me-2\"></i>',\n\t\t\t\t\t\t  default        => '<i class=\"bi bi-envelope me-2\"></i>',\n\t\t\t\t\t\t};\n\t\t\t\t\t\techo $icon . htmlspecialchars(ucfirst($row['type']));\n\t\t\t\t\t  ?>\n\t\t\t\t\t</td>\n\t\t\t\t\t<td><?= htmlspecialchars($row['sent_at']) ?></td>\n\t\t\t\t  </tr>\n\t\t\t\t<?php endforeach; else: ?>\n\t\t\t\t  <tr><td colspan=\"5\" class=\"text-center\">No recent mail logs found.</td></tr>\n\t\t\t\t<?php endif; ?>\n\t\t\t\t</tbody>\n            </table>\n          </div>\n          <div class=\"text-muted small mt-2\">\n            <a class=\"text-decoration-none\" href=\"https://github.com/jordansamuel/PASTE\" target=\"_blank\" rel=\"noopener\">Updates</a>\n            &mdash;\n            <a class=\"text-decoration-none\" href=\"https://github.com/jordansamuel/PASTE/issues\" target=\"_blank\" rel=\"noopener\">Bugs</a>\n            <span class=\"float-end\">Powered by <a class=\"text-decoration-none\" href=\"https://phpaste.sourceforge.io\" target=\"_blank\" rel=\"noopener\">Paste</a></span>\n          </div>\n        </div>\n      </div>\n\n    </div><!-- /col-lg-10 -->\n  </div><!-- /row -->\n</div><!-- /container -->\n\n<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js\" crossorigin=\"anonymous\"></script>\n</body>\n</html>\n<?php $pdo = null; ?>\n"
  },
  {
    "path": "admin/index.php",
    "content": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\nrequire_once('../includes/password.php'); \nsession_start();\nrequire_once('../config.php');\n\n// Check if admin is already logged in\nif (isset($_SESSION['admin_login']) && isset($_SESSION['admin_id'])) {\n    try {\n        $pdo = new PDO(\"mysql:host=$dbhost;dbname=$dbname\", $dbuser, $dbpassword);\n        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n        $stmt = $pdo->prepare('SELECT id, user FROM admin WHERE id = ?');\n        $stmt->execute([$_SESSION['admin_id']]);\n        $row = $stmt->fetch(PDO::FETCH_ASSOC);\n        if ($row && $row['user'] === $_SESSION['admin_login']) {\n            error_log(\"index.php: Admin already logged in - user: {$_SESSION['admin_login']}, redirecting to dashboard.php\");\n            header(\"Location: dashboard.php\");\n            exit();\n        } else {\n            error_log(\"index.php: Session validation failed - id: {$_SESSION['admin_id']}, user: {$_SESSION['admin_login']}, found: \" . ($row ? json_encode($row) : 'null'));\n            unset($_SESSION['admin_login'], $_SESSION['admin_id']);\n        }\n        $pdo = null;\n    } catch (PDOException $e) {\n        error_log(\"index.php: Database connection failed during session validation: \" . $e->getMessage());\n        unset($_SESSION['admin_login'], $_SESSION['admin_id']);\n    }\n}\n\ntry {\n    $pdo = new PDO(\"mysql:host=$dbhost;dbname=$dbname\", $dbuser, $dbpassword);\n    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n\n    if ($_SERVER['REQUEST_METHOD'] == 'POST') {\n        $username = trim($_POST['username'] ?? '');\n        $password = trim($_POST['password'] ?? '');\n        if ($username === '' || $password === '') {\n            error_log(\"index.php: Login failed - username or password empty. Username: '$username'\");\n            $msg = '<div class=\"alert alert-warning text-center mb-3\">Username and password are required</div>';\n        } else {\n            $stmt = $pdo->prepare('SELECT id, user, pass FROM admin WHERE user = :user LIMIT 1');\n            $stmt->execute(['user' => $username]);\n            $row = $stmt->fetch(PDO::FETCH_ASSOC);\n\n            if ($row && password_verify($password, $row['pass'])) {\n                $_SESSION['admin_login'] = $row['user'];\n                $_SESSION['admin_id'] = $row['id'];\n                error_log(\"index.php: Login successful for user: '$username', redirecting to dashboard.php\");\n                header(\"Location: dashboard.php\");\n                exit();\n            } else {\n                error_log(\"index.php: Login failed - invalid username or password. Username: '$username', Row: \" . ($row ? json_encode($row) : 'null'));\n                $msg = '<div class=\"alert alert-danger text-center mb-3\">Wrong User/Password</div>';\n            }\n        }\n    }\n} catch (PDOException $e) {\n    error_log(\"index.php: Database connection failed: \" . $e->getMessage());\n    $msg = '<div class=\"alert alert-danger text-center mb-3\">Unable to connect to database: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';\n}\n?>\n<!DOCTYPE html>\n<html lang=\"en\" data-bs-theme=\"dark\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>Paste - Login</title>\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\" rel=\"stylesheet\">\n<style>\n  :root{\n    --bg:#0f1115; --card:#141821; --muted:#7f8da3; --border:#1f2633; --accent:#0d6efd;\n  }\n  body{background:var(--bg);color:#e6edf3;}\n  .navbar{background:#121826!important}\n  .card{background:var(--card);border:1px solid var(--border);border-radius:12px}\n  .form-control{background:#0e1422;border-color:var(--border);color:#e6edf3}\n  .form-control:focus{border-color:var(--accent);box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}\n  .btn-soft{background:#101521;border:1px solid var(--border);color:#dbe5f5}\n  .btn-soft:hover{background:#0e1422;color:#fff}\n  .login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}\n  .brand{font-weight:600}\n</style>\n</head>\n<body>\n<nav class=\"navbar navbar-dark\">\n  <div class=\"container-fluid\">\n    <a class=\"navbar-brand brand\" href=\"../\">Paste</a>\n  </div>\n</nav>\n\n<div class=\"login-wrap\">\n  <div class=\"card shadow-sm\" style=\"max-width:460px;width:100%;\">\n    <div class=\"card-body p-4\">\n      <div class=\"d-flex align-items-center justify-content-between mb-3\">\n        <h4 class=\"mb-0\">Admin Login</h4>\n        <i class=\"bi bi-shield-lock\"></i>\n      </div>\n      <?php if (isset($msg)) echo $msg; ?>\n      <form action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>\" method=\"post\" novalidate>\n        <div class=\"mb-3\">\n          <label for=\"username\" class=\"form-label\">Username</label>\n          <input type=\"text\" class=\"form-control\" id=\"username\" name=\"username\" autocomplete=\"username\" required>\n        </div>\n        <div class=\"mb-3\">\n          <label for=\"password\" class=\"form-label d-flex justify-content-between\">\n            <span>Password</span>\n            <a class=\"link-secondary small text-decoration-none\" href=\"../forgot.php\">Forgot?</a>\n          </label>\n          <input type=\"password\" class=\"form-control\" id=\"password\" name=\"password\" autocomplete=\"current-password\" required>\n        </div>\n        <div class=\"d-grid gap-2\">\n          <button type=\"submit\" class=\"btn btn-primary\"><i class=\"bi bi-box-arrow-in-right me-1\"></i>Login</button>\n          <a class=\"btn btn-soft\" href=\"<?php echo htmlspecialchars('../', ENT_QUOTES, 'UTF-8'); ?>\">Back to site</a>\n        </div>\n      </form>\n    </div>\n  </div>\n</div>\n\n<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js\" crossorigin=\"anonymous\"></script>\n</body>\n</html>\n<?php $pdo = null; ?>\n"
  },
  {
    "path": "admin/interface.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n\nsession_start();\n\n/* Early logout (before any output) */\nif (isset($_GET['logout'])) {\n    $_SESSION = [];\n    session_destroy();\n    header('Location: index.php');\n    exit();\n}\n\n/* Guard: admin session */\nif (!isset($_SESSION['admin_login']) || !isset($_SESSION['admin_id'])) {\n    header(\"Location: ../index.php\");\n    exit();\n}\n\n$date = date('Y-m-d H:i:s');\n$ip   = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';\n\nrequire_once('../config.php');\n\n// PHP < 8 polyfill\nif (!function_exists('str_starts_with')) {\n    function str_starts_with($haystack, $needle) {\n        return $needle === '' || strncmp($haystack, $needle, strlen($needle)) === 0;\n    }\n}\n\n// Only show highlight.php language list if that engine is active\n$isHighlight = ($highlighter ?? 'highlight') === 'highlight';\n\ntry {\n    $pdo = new PDO(\n        \"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\",\n        $dbuser,\n        $dbpassword,\n        [\n            PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,\n            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\n            PDO::ATTR_EMULATE_PREPARES   => false,\n        ]\n    );\n\n    // baseurl for sidebar links\n    $row = $pdo->query(\"SELECT baseurl FROM site_info WHERE id=1\")->fetch();\n    $baseurl = rtrim((string)($row['baseurl'] ?? ''), '/');\n\n    // validate admin username\n    $st = $pdo->prepare(\"SELECT id,user FROM admin WHERE id=?\");\n    $st->execute([$_SESSION['admin_id']]);\n    $adm = $st->fetch();\n    if (!$adm || $adm['user'] !== ($_SESSION['admin_login'] ?? '')) {\n        unset($_SESSION['admin_login'], $_SESSION['admin_id']);\n        header(\"Location: \" . htmlspecialchars($baseurl . '/admin/index.php', ENT_QUOTES, 'UTF-8'));\n        exit();\n    }\n\n    // log admin activity avoid duplicate row if identical ip+time\n    $st = $pdo->query(\"SELECT MAX(id) last_id FROM admin_history\");\n    $last_id = $st->fetch()['last_id'] ?? null;\n    $last_ip = $last_date = null;\n    if ($last_id) {\n        $st = $pdo->prepare(\"SELECT ip,last_date FROM admin_history WHERE id=?\");\n        $st->execute([$last_id]);\n        $h = $st->fetch() ?: [];\n        $last_ip   = $h['ip'] ?? null;\n        $last_date = $h['last_date'] ?? null;\n    }\n    if ($last_ip !== $ip || $last_date !== $date) {\n        $st = $pdo->prepare(\"INSERT INTO admin_history(last_date,ip) VALUES(?,?)\");\n        $st->execute([$date,$ip]);\n    }\n\n    // read current interface settings\n    $st = $pdo->prepare(\"SELECT theme, lang FROM interface WHERE id=1\");\n    $st->execute();\n    $iface   = $st->fetch() ?: ['theme'=>'default','lang'=>'en.php'];\n    $d_theme = trim((string)$iface['theme']);\n    $d_lang  = trim((string)$iface['lang']);\n\n    $msg = '';\n    // save updates\n    if ($_SERVER['REQUEST_METHOD'] === 'POST') {\n        $d_lang  = trim((string)($_POST['lang']  ?? $d_lang));\n        $d_theme = trim((string)($_POST['theme'] ?? $d_theme));\n\n        $st = $pdo->prepare(\"UPDATE interface SET lang=?, theme=? WHERE id=1\");\n        $st->execute([$d_lang, $d_theme]);\n        $msg = '<div class=\"alert alert-success alert-dismissible fade show\" role=\"alert\">\n                    Interface settings saved.\n                    <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\n                </div>';\n    }\n\n    // Build language choices from /langs\n    $langs = [];\n    $langDir = __DIR__ . '/../langs';\n    if (is_dir($langDir)) {\n        foreach (scandir($langDir) ?: [] as $f) {\n            if ($f === '.' || $f === '..' || $f === 'index.php') continue;\n            if (is_file(\"$langDir/$f\")) $langs[] = $f;\n        }\n        sort($langs, SORT_NATURAL|SORT_FLAG_CASE);\n    }\n\n    // Build themes (directories with index.php)\n    $themes = [];\n    $themeDir = __DIR__ . '/../theme';\n    if (is_dir($themeDir)) {\n        foreach (scandir($themeDir) ?: [] as $t) {\n            if ($t === '.' || $t === '..') continue;\n            $path = \"$themeDir/$t\";\n            if (is_dir($path) && file_exists(\"$path/index.php\")) $themes[] = $t;\n        }\n        sort($themes, SORT_NATURAL|SORT_FLAG_CASE);\n    }\n\n    // Check currently enabled theme has css/paste.css\n    $themeCssAbs    = __DIR__ . \"/../theme/{$d_theme}/css/paste.css\";\n    $themeCssExists = is_file($themeCssAbs);\n\n    // -------- highlight.php language discovery (only when engine is \"highlight\") ----------\n    $hl_langs   = [];\n    $hl_count   = 0;\n    $hl_dir_disp = '';\n\n    if ($isHighlight) {\n        require_once __DIR__ . '/../includes/Highlight/list_languages.php';\n        $hl_dir_abs  = highlight_lang_dir();\n        $hl_langs    = highlight_supported_languages($hl_dir_abs);\n        $hl_count    = count($hl_langs);\n\n        // Pretty display path (relative-ish)\n        $projectRoot = realpath(__DIR__ . '/..');\n        $hl_dir_disp = ($projectRoot && str_starts_with($hl_dir_abs, $projectRoot))\n            ? '..' . substr($hl_dir_abs, strlen($projectRoot))\n            : $hl_dir_abs;\n    }\n\n} catch (PDOException $e) {\n    die(\"Unable to connect to database: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));\n}\n?>\n<!DOCTYPE html>\n<html lang=\"en\" data-bs-theme=\"dark\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Paste - Interface</title>\n    <link rel=\"shortcut icon\" href=\"favicon.ico\">\n    <link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n    <link href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\" rel=\"stylesheet\">\n    <style>\n      :root{\n        --bg: #0f1115; --card:#141821; --muted:#7f8da3; --border:#1f2633; --accent:#0d6efd;\n      }\n      body{background:var(--bg);color:#fff;}\n      .navbar{background:#121826!important;position:sticky;top:0;z-index:1030}\n      .btn-soft{background:#101521;border:1px solid var(--border);color:#dbe5f5}\n      .btn-soft:hover{background:#0e1422;color:#fff}\n      .sidebar-desktop{position:sticky; top:1rem;background:#121826;border:1px solid var(--border);border-radius:12px;padding:12px}\n      .sidebar-desktop .list-group-item{background:transparent;color:#dbe5f5;border:0;border-radius:10px;padding:.65rem .8rem}\n      .sidebar-desktop .list-group-item:hover{background:#0e1422}\n      .sidebar-desktop .list-group-item.active{background:#0d6efd;color:#fff}\n      .card{background:var(--card);border:1px solid var(--border);border-radius:12px}\n      .form-control,.form-select{background:#0e1422;border-color:var(--border);color:#e6edf3}\n      .form-control:focus,.form-select:focus{border-color:var(--accent);box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}\n      .offcanvas-nav{width:280px;background:#0f1523;color:#dbe5f5}\n      .offcanvas-nav .list-group-item{background:transparent;border:0;color:#dbe5f5}\n      .offcanvas-nav .list-group-item:hover{background:#0e1422}\n      /* tiny list styling for languages table */\n      .lang-list{max-height:380px;overflow:auto;border:1px solid var(--border);border-radius:10px}\n      .sticky-top-sm{position:sticky;top:0;background:var(--card);z-index:1}\n      .code{font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;}\n    </style>\n</head>\n<body>\n<nav class=\"navbar navbar-expand-lg navbar-dark\">\n  <div class=\"container-fluid\">\n    <div class=\"d-flex align-items-center gap-2\">\n      <button class=\"btn btn-soft d-lg-none\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#navOffcanvas\" aria-controls=\"navOffcanvas\">\n        <i class=\"bi bi-list\"></i>\n      </button>\n      <a class=\"navbar-brand\" href=\"../\">Paste</a>\n    </div>\n    <button class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNav\">\n      <span class=\"navbar-toggler-icon\"></span>\n    </button>\n    <div class=\"collapse navbar-collapse justify-content-end\" id=\"navbarNav\">\n      <ul class=\"navbar-nav\">\n        <li class=\"nav-item dropdown\">\n          <a class=\"nav-link dropdown-toggle\" href=\"#\" data-bs-toggle=\"dropdown\">\n            <?php echo htmlspecialchars($_SESSION['admin_login'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\n          </a>\n          <ul class=\"dropdown-menu dropdown-menu-end\">\n            <li><a class=\"dropdown-item\" href=\"admin.php\">Settings</a></li>\n            <li><a class=\"dropdown-item\" href=\"?logout\">Logout</a></li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n  </div>\n</nav>\n\n<!-- Mobile offcanvas nav -->\n<div class=\"offcanvas offcanvas-start offcanvas-nav\" tabindex=\"-1\" id=\"navOffcanvas\">\n  <div class=\"offcanvas-header\">\n    <h5 class=\"offcanvas-title\">Admin Menu</h5>\n    <button class=\"btn-close btn-close-white\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\"></button>\n  </div>\n  <div class=\"offcanvas-body\">\n    <div class=\"list-group\">\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/dashboard.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/configuration.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n      <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/interface.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/admin.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/pastes.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/users.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/ipbans.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/stats.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/ads.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/pages.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/sitemap.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/tasks.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n    </div>\n  </div>\n</div>\n\n<div class=\"container-fluid my-2\">\n  <div class=\"row g-2\">\n    <!-- Desktop sidebar -->\n    <div class=\"col-lg-2 d-none d-lg-block\">\n      <div class=\"sidebar-desktop\">\n        <div class=\"list-group\">\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/dashboard.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/configuration.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n          <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/interface.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/admin.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/pastes.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/users.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/ipbans.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/stats.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/ads.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/pages.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/sitemap.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/tasks.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"col-lg-10\">\n      <!-- any save message -->\n      <?php if (!empty($msg)) echo $msg; ?>\n\n      <!-- THEME CSS WARNING -->\n      <?php if (!$themeCssExists): ?>\n        <div class=\"alert alert-warning d-flex align-items-center\" role=\"alert\">\n          <i class=\"bi bi-exclamation-triangle me-2\"></i>\n          <div>\n            The selected theme <strong><?php echo htmlspecialchars($d_theme, ENT_QUOTES, 'UTF-8'); ?></strong> is missing\n            <code>../theme/<?php echo htmlspecialchars($d_theme, ENT_QUOTES, 'UTF-8'); ?>/css/paste.css</code>.\n            Please add it or choose a different theme.\n          </div>\n        </div>\n      <?php endif; ?>\n\n      <div class=\"card mb-2\">\n        <div class=\"card-body\">\n          <h4 class=\"card-title mb-3\">Interface Settings</h4>\n          <form action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'); ?>\" method=\"post\" class=\"row g-2\">\n            <div class=\"col-md-6\">\n              <label for=\"lang\" class=\"form-label\">Language</label>\n              <select class=\"form-select\" name=\"lang\" id=\"lang\">\n                <?php\n                  if (empty($langs)) {\n                      echo '<option value=\"en.php\">en</option>';\n                  } else {\n                      foreach ($langs as $f) {\n                          $sel   = ($d_lang === $f) ? 'selected' : '';\n                          $label = htmlspecialchars(pathinfo($f, PATHINFO_FILENAME), ENT_QUOTES, 'UTF-8');\n                          echo '<option value=\"'.htmlspecialchars($f, ENT_QUOTES, 'UTF-8').'\" '.$sel.'>'.$label.'</option>';\n                      }\n                  }\n                ?>\n              </select>\n            </div>\n            <div class=\"col-md-6\">\n              <label for=\"theme\" class=\"form-label\">Theme</label>\n              <select class=\"form-select\" name=\"theme\" id=\"theme\">\n                <?php\n                  if (empty($themes)) {\n                      echo '<option value=\"default\">default</option>';\n                  } else {\n                      foreach ($themes as $t) {\n                          $sel = ($d_theme === $t) ? 'selected' : '';\n                          echo '<option value=\"'.htmlspecialchars($t, ENT_QUOTES, 'UTF-8').'\" '.$sel.'>'.htmlspecialchars($t, ENT_QUOTES, 'UTF-8').'</option>';\n                      }\n                  }\n                ?>\n              </select>\n              <div class=\"form-text\">\n                Theme stylesheet must exist at <code>../theme/{themename}/css/paste.css</code>.\n              </div>\n            </div>\n            <div class=\"col-12\">\n              <button type=\"submit\" class=\"btn btn-primary\"><i class=\"bi bi-save\"></i> Save</button>\n            </div>\n          </form>\n        </div>\n      </div>\n\n      <?php if ($isHighlight): ?>\n      <!-- Highlight.php languages card (only when highlight engine is active) -->\n      <div class=\"card\">\n        <div class=\"card-body\">\n          <h4 class=\"card-title mb-3\">\n            Code Highlighting (highlight.php)\n            <span class=\"badge text-bg-primary ms-2\">Active</span>\n          </h4>\n\n          <div class=\"d-flex flex-wrap align-items-center gap-2 mb-2\">\n            <div>\n              <span class=\"text-muted\">Languages folder:</span>\n              <code class=\"code\"><?php echo htmlspecialchars($hl_dir_disp, ENT_QUOTES, 'UTF-8'); ?></code>\n            </div>\n            <span class=\"badge text-bg-secondary\"><?php echo (int)$hl_count; ?> languages</span>\n            <button type=\"button\" class=\"btn btn-soft btn-sm\" onclick=\"location.reload()\">\n              <i class=\"bi bi-arrow-clockwise\"></i> Rescan\n            </button>\n          </div>\n\n          <div class=\"mb-2\">\n            <input type=\"search\" id=\"hl-search\" class=\"form-control\" placeholder=\"Filter languages… (e.g. php, c++, json)\">\n          </div>\n\n          <div class=\"lang-list\">\n            <table class=\"table table-sm align-middle mb-0\">\n              <thead class=\"sticky-top-sm\">\n                <tr>\n                  <th style=\"width: 38%\">Name</th>\n                  <th style=\"width: 32%\">ID</th>\n                  <th>File</th>\n                </tr>\n              </thead>\n              <tbody id=\"hl-rows\">\n                <?php foreach ($hl_langs as $L): ?>\n                <tr>\n                  <td><?php echo htmlspecialchars($L['name'] ?? '', ENT_QUOTES, 'UTF-8'); ?></td>\n                  <td><code class=\"code\"><?php echo htmlspecialchars($L['id'] ?? '', ENT_QUOTES, 'UTF-8'); ?></code></td>\n                  <td class=\"text-muted\"><span class=\"code\"><?php echo htmlspecialchars($L['filename'] ?? '', ENT_QUOTES, 'UTF-8'); ?></span></td>\n                </tr>\n                <?php endforeach; ?>\n                <?php if (empty($hl_langs)): ?>\n                <tr><td colspan=\"3\" class=\"text-warning\">No languages found. Make sure you’ve copied <code>scrivo/highlight.php</code> into <code>includes/Highlight/</code>.</td></tr>\n                <?php endif; ?>\n              </tbody>\n            </table>\n          </div>\n\n          <div class=\"form-text mt-2\">\n            This list is read directly from <code>includes/Highlight/languages</code> at runtime.\n          </div>\n        </div>\n      </div>\n      <?php else: ?>\n      <!-- GeSHi info card when highlight.php is not active -->\n      <div class=\"card\">\n        <div class=\"card-body\">\n          <h4 class=\"card-title mb-2\">\n            Code Highlighting\n            <span class=\"badge text-bg-secondary ms-2\">GeSHi active</span>\n          </h4>\n          <p class=\"mb-0 text-muted\">\n            You’re using the GeSHi highlighter. Switch to Highlight.php in <code>config.php</code> to see the language list:\n          </p>\n          <pre class=\"code mt-2 mb-0\"><code>$highlighter = 'highlight'; // or leave as 'geshi'</code></pre>\n        </div>\n      </div>\n      <?php endif; ?>\n\n      <div class=\"text-muted small mt-3\">\n        Powered by <a class=\"text-decoration-none\" href=\"https://phpaste.sourceforge.io\" target=\"_blank\">Paste</a>\n      </div>\n    </div>\n  </div>\n</div>\n\n<?php if ($isHighlight): ?>\n<script>\ndocument.addEventListener('DOMContentLoaded', () => {\n  const q = document.getElementById('hl-search');\n  const rows = document.querySelectorAll('#hl-rows tr');\n  if (!q || !rows.length) return;\n  q.addEventListener('input', () => {\n    const needle = q.value.trim().toLowerCase();\n    rows.forEach(tr => {\n      const text = tr.innerText.toLowerCase();\n      tr.style.display = text.includes(needle) ? '' : 'none';\n    });\n  });\n});\n</script>\n<?php endif; ?>\n<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js\" crossorigin=\"anonymous\"></script>\n</body>\n</html>\n<?php\n$pdo = null;\n"
  },
  {
    "path": "admin/ipbans.php",
    "content": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\nsession_start();\n\nif (!isset($_SESSION['admin_login']) || !isset($_SESSION['admin_id'])) {\n    header(\"Location: ../index.php\");\n    exit();\n}\n\n$date = date('Y-m-d H:i:s');\n$ip   = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';\n\nrequire_once('../config.php');\n\ntry {\n    $pdo = new PDO(\n        \"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\",\n        $dbuser,\n        $dbpassword,\n        [\n            PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,\n            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\n            PDO::ATTR_EMULATE_PREPARES   => false,\n        ]\n    );\n\n    // Base URL\n    $baseurl = rtrim((string)($pdo->query(\"SELECT baseurl FROM site_info WHERE id=1\")->fetch()['baseurl'] ?? ''), '/') . '/';\n    if (!$baseurl) {\n        throw new Exception('Base URL missing. Go to /admin/configuration.php');\n    }\n\n    // Log admin activity (lightweight)\n    $last = $pdo->query(\"SELECT MAX(id) last_id FROM admin_history\")->fetch();\n    if ($last && $last['last_id']) {\n        $st = $pdo->prepare(\"SELECT last_date, ip FROM admin_history WHERE id=?\");\n        $st->execute([$last['last_id']]);\n        $row = $st->fetch();\n        $last_date = $row['last_date'] ?? null;\n        $last_ip   = $row['ip'] ?? null;\n    }\n    if (($last_ip ?? '') !== $ip || ($last_date ?? '') !== $date) {\n        $pdo->prepare(\"INSERT INTO admin_history (last_date, ip) VALUES (?, ?)\")->execute([$date, $ip]);\n    }\n\n} catch (Throwable $e) {\n    die(\"Unable to connect to database: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));\n}\n\n/* Actions */\n$msg = '';\n\nif ($_SERVER['REQUEST_METHOD'] === 'POST' || isset($_GET['banip'])) {\n    $ban_ip = isset($_POST['ban_ip']) ? trim((string)$_POST['ban_ip']) : (isset($_GET['banip']) ? trim((string)$_GET['banip']) : '');\n    if ($ban_ip === '') {\n        $msg = '<div class=\"alert alert-danger text-center\">Please enter an IP to ban.</div>';\n    } else {\n        try {\n            // If already banned, just update last_date (keeps “last seen” fresh)\n            $exists = $pdo->prepare(\"SELECT id FROM ban_user WHERE ip = ? LIMIT 1\");\n            $exists->execute([$ban_ip]);\n            if ($row = $exists->fetch()) {\n                $pdo->prepare(\"UPDATE ban_user SET last_date=? WHERE id=?\")->execute([$date, (int)$row['id']]);\n                $msg = '<div class=\"alert alert-warning text-center\">'.htmlspecialchars($ban_ip).' is already banned — updated date.</div>';\n            } else {\n                // Insert including last_date to avoid NOT NULL errors\n                $pdo->prepare(\"INSERT INTO ban_user (last_date, ip) VALUES (?, ?)\")->execute([$date, $ban_ip]);\n                $msg = '<div class=\"alert alert-success text-center\">'.htmlspecialchars($ban_ip).' added to the banlist.</div>';\n            }\n        } catch (PDOException $e) {\n            $msg = '<div class=\"alert alert-danger text-center\">Error banning IP: '.htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8').'</div>';\n        }\n    }\n}\n\nif (isset($_GET['delete'])) {\n    $delete = (int)filter_var($_GET['delete'], FILTER_SANITIZE_NUMBER_INT);\n    try {\n        $pdo->prepare(\"DELETE FROM ban_user WHERE id = ?\")->execute([$delete]);\n        $msg = '<div class=\"alert alert-success text-center\">IP removed from the banlist.</div>';\n    } catch (PDOException $e) {\n        $msg = '<div class=\"alert alert-danger text-center\">Error removing IP: '.htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8').'</div>';\n    }\n}\n\n/* Pagination */\n$per_page = 20;\n$page     = isset($_GET['page']) ? max(1, (int)$_GET['page']) : 1;\n$offset   = ($page - 1) * $per_page;\n\n$total_ips = (int)($pdo->query(\"SELECT COUNT(*) AS total FROM ban_user\")->fetch()['total'] ?? 0);\n$total_pages = max(1, (int)ceil($total_ips / $per_page));\n\n$per_page_safe = (int)$per_page;\n$offset_safe   = (int)$offset;\n\n$st = $pdo->prepare(\"SELECT id, last_date, ip FROM ban_user ORDER BY id DESC LIMIT $per_page_safe OFFSET $offset_safe\");\n$st->execute();\n$ips = $st->fetchAll();\n\n?>\n<!DOCTYPE html>\n<html lang=\"en\" data-bs-theme=\"dark\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<title>Paste - IP Bans</title>\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\" rel=\"stylesheet\">\n<style>\n  :root{\n    --bg: #0f1115;\n    --card:#141821;\n    --muted:#7f8da3;\n    --border:#1f2633;\n    --accent:#0d6efd;\n  }\n  body{background:var(--bg);color:#fff;}\n  .navbar{background:#121826!important;position:sticky;top:0;z-index:1030}\n  .navbar .navbar-brand{font-weight:600}\n\n  /* Desktop sidebar */\n  .sidebar-desktop{\n    position:sticky; top:1rem;\n    background:#121826;border:1px solid var(--border);\n    border-radius:12px;padding:12px;\n  }\n  .sidebar-desktop .list-group-item{\n    background:transparent;color:#dbe5f5;border:0;border-radius:10px;padding:.65rem .8rem;\n  }\n  .sidebar-desktop .list-group-item:hover{background:#0e1422}\n  .sidebar-desktop .list-group-item.active{background:#0d6efd;color:#fff}\n\n  .card{background:var(--card);border:1px solid var(--border);border-radius:12px}\n  .form-control{background:#0e1422;border-color:var(--border);color:#e6edf3}\n  .form-control:focus{border-color:var(--accent);box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}\n  .table{color:#e6edf3}\n  .table thead th{background:#101521;color:#c6d4f0;border-color:var(--border)}\n  .table td,.table th{border-color:var(--border)}\n  .pagination .page-link{color:#c6d4f0;background:#101521;border-color:var(--border)}\n  .pagination .page-item.active .page-link{background:#0d6efd;border-color:#0d6efd}\n  .btn-soft{background:#101521;border:1px solid var(--border);color:#dbe5f5}\n  .btn-soft:hover{background:#0e1422;color:#fff}\n\n  /* Offcanvas */\n  .offcanvas-nav{width:280px;background:#0f1523;color:#dbe5f5}\n  .offcanvas-nav .list-group-item{background:transparent;border:0;color:#dbe5f5}\n  .offcanvas-nav .list-group-item:hover{background:#0e1422}\n</style>\n<script>\ndocument.addEventListener('DOMContentLoaded', function(){\n  // Delete confirm (no jQuery)\n  document.querySelectorAll('.delete-ip').forEach(a => {\n    a.addEventListener('click', (e) => {\n      e.preventDefault();\n      if (confirm('Delete this IP from the banlist?')) {\n        window.location.href = a.getAttribute('href');\n      }\n    });\n  });\n});\n</script>\n</head>\n<body>\n\n<nav class=\"navbar navbar-expand-lg navbar-dark\">\n  <div class=\"container-fluid\">\n    <div class=\"d-flex align-items-center gap-2\">\n      <!-- Mobile: open offcanvas -->\n      <button class=\"btn btn-soft d-lg-none\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#navOffcanvas\" aria-controls=\"navOffcanvas\">\n        <i class=\"bi bi-list\"></i>\n      </button>\n      <a class=\"navbar-brand\" href=\"../\">Paste</a>\n    </div>\n    <button class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNav\">\n      <span class=\"navbar-toggler-icon\"></span>\n    </button>\n    <div class=\"collapse navbar-collapse justify-content-end\" id=\"navbarNav\">\n      <ul class=\"navbar-nav\">\n        <li class=\"nav-item dropdown\">\n          <a class=\"nav-link dropdown-toggle\" href=\"#\" data-bs-toggle=\"dropdown\">\n            <?php echo htmlspecialchars($_SESSION['admin_login']); ?>\n          </a>\n          <ul class=\"dropdown-menu dropdown-menu-end\">\n            <li><a class=\"dropdown-item\" href=\"admin.php\">Settings</a></li>\n            <li><a class=\"dropdown-item\" href=\"?logout\">Logout</a></li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n  </div>\n</nav>\n\n<!-- Mobile offcanvas nav -->\n<div class=\"offcanvas offcanvas-start offcanvas-nav\" tabindex=\"-1\" id=\"navOffcanvas\">\n  <div class=\"offcanvas-header\">\n    <h5 class=\"offcanvas-title\">Admin Menu</h5>\n    <button type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\"></button>\n  </div>\n  <div class=\"offcanvas-body\">\n    <div class=\"list-group\">\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n      <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n    </div>\n  </div>\n</div>\n\n<div class=\"container-fluid my-2\">\n  <div class=\"row g-2\">\n    <!-- Desktop sidebar -->\n    <div class=\"col-lg-2 d-none d-lg-block\">\n      <div class=\"sidebar-desktop\">\n        <div class=\"list-group\">\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n          <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"col-lg-10\">\n      <?php if ($msg) echo $msg; ?>\n\n      <div class=\"card mb-3\">\n        <div class=\"card-body\">\n          <h4 class=\"card-title\">Ban an IP</h4>\n          <form method=\"POST\" action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>\" class=\"row g-2\">\n            <div class=\"col-sm-8 col-md-9\">\n              <input type=\"text\" class=\"form-control\" name=\"ban_ip\" placeholder=\"Enter an IP address\">\n            </div>\n            <div class=\"col-sm-4 col-md-3 d-grid\">\n              <button class=\"btn btn-primary\" type=\"submit\">Add</button>\n            </div>\n            <input type=\"hidden\" name=\"banip\" value=\"banip\">\n          </form>\n        </div>\n      </div>\n\n      <div class=\"card mb-3\">\n        <div class=\"card-body\">\n          <h4 class=\"card-title\">Banlist</h4>\n          <div class=\"table-responsive\">\n            <table class=\"table table-hover table-bordered align-middle\">\n              <thead>\n                <tr>\n                  <th>Date Added</th>\n                  <th>IP</th>\n                  <th style=\"width:120px\">Delete</th>\n                </tr>\n              </thead>\n              <tbody>\n                <?php if (!empty($ips)): ?>\n                  <?php foreach ($ips as $r): ?>\n                    <tr>\n                      <td><?php echo htmlspecialchars($r['last_date']); ?></td>\n                      <td><span class=\"badge bg-primary\"><?php echo htmlspecialchars($r['ip']); ?></span></td>\n                      <td><a href=\"?delete=<?php echo (int)$r['id']; ?>&page=<?php echo (int)$page; ?>\" class=\"btn btn-danger btn-sm delete-ip\">Delete</a></td>\n                    </tr>\n                  <?php endforeach; ?>\n                <?php else: ?>\n                  <tr><td colspan=\"3\" class=\"text-center\">No IPs found</td></tr>\n                <?php endif; ?>\n              </tbody>\n            </table>\n          </div>\n\n          <nav aria-label=\"Page navigation\">\n            <ul class=\"pagination justify-content-center\">\n              <?php\n              if ($page > 1) {\n                  echo '<li class=\"page-item\"><a class=\"page-link\" href=\"?page='.($page-1).'\">&laquo;</a></li>';\n              } else {\n                  echo '<li class=\"page-item disabled\"><span class=\"page-link\">&laquo;</span></li>';\n              }\n              $start = max(1, $page-3); $end = min($total_pages, $page+3);\n              for ($i=$start; $i<=$end; $i++){\n                  echo '<li class=\"page-item'.($i==$page?' active':'').'\"><a class=\"page-link\" href=\"?page='.$i.'\">'.$i.'</a></li>';\n              }\n              if ($page < $total_pages) {\n                  echo '<li class=\"page-item\"><a class=\"page-link\" href=\"?page='.($page+1).'\">&raquo;</a></li>';\n              } else {\n                  echo '<li class=\"page-item disabled\"><span class=\"page-link\">&raquo;</span></li>';\n              }\n              ?>\n            </ul>\n          </nav>\n        </div>\n      </div>\n\n      <div class=\"text-muted small mt-3\">\n        Powered by <a class=\"text-decoration-none\" href=\"https://phpaste.sourceforge.io\" target=\"_blank\">Paste</a>\n      </div>\n    </div>\n  </div>\n</div>\n\n<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js\" crossorigin=\"anonymous\"></script>\n<?php\n// logout handler\nif (isset($_GET['logout'])) {\n    $_SESSION = [];\n    session_destroy();\n    header('Location: index.php');\n    exit();\n}\n?>\n</body>\n</html>\n<?php $pdo = null; ?>\n"
  },
  {
    "path": "admin/js/bootstrap-select.js",
    "content": "/*!\n * Bootstrap-select v1.6.3 (http://silviomoreto.github.io/bootstrap-select/)\n *\n * Copyright 2013-2014 bootstrap-select\n * Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)\n */\n(function ($) {\n  'use strict';\n\n  // Case insensitive search\n  $.expr[':'].icontains = function (obj, index, meta) {\n    return icontains($(obj).text(), meta[3]);\n  };\n\n  // Case and accent insensitive search\n  $.expr[':'].aicontains = function (obj, index, meta) {\n    return icontains($(obj).data('normalizedText') || $(obj).text(), meta[3]);\n  };\n\n  /**\n   * Actual implementation of the case insensitive search.\n   * @access private\n   * @param {String} haystack\n   * @param {String} needle\n   * @returns {boolean}\n   */\n  function icontains(haystack, needle) {\n    return haystack.toUpperCase().indexOf(needle.toUpperCase()) > -1;\n  }\n\n  /**\n   * Remove all diatrics from the given text.\n   * @access private\n   * @param {String} text\n   * @returns {String}\n   */\n  function normalizeToBase(text) {\n    var rExps = [\n      {re: /[\\xC0-\\xC6]/g, ch: \"A\"},\n      {re: /[\\xE0-\\xE6]/g, ch: \"a\"},\n      {re: /[\\xC8-\\xCB]/g, ch: \"E\"},\n      {re: /[\\xE8-\\xEB]/g, ch: \"e\"},\n      {re: /[\\xCC-\\xCF]/g, ch: \"I\"},\n      {re: /[\\xEC-\\xEF]/g, ch: \"i\"},\n      {re: /[\\xD2-\\xD6]/g, ch: \"O\"},\n      {re: /[\\xF2-\\xF6]/g, ch: \"o\"},\n      {re: /[\\xD9-\\xDC]/g, ch: \"U\"},\n      {re: /[\\xF9-\\xFC]/g, ch: \"u\"},\n      {re: /[\\xC7-\\xE7]/g, ch: \"c\"},\n      {re: /[\\xD1]/g, ch: \"N\"},\n      {re: /[\\xF1]/g, ch: \"n\"}\n    ];\n    $.each(rExps, function () {\n      text = text.replace(this.re, this.ch);\n    });\n    return text;\n  }\n\n\n  function htmlEscape(html) {\n    var escapeMap = {\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '\"': '&quot;',\n      \"'\": '&#x27;',\n      '`': '&#x60;'\n    };\n    var source = '(?:' + Object.keys(escapeMap).join('|') + ')',\n        testRegexp = new RegExp(source),\n        replaceRegexp = new RegExp(source, 'g'),\n        string = html == null ? '' : '' + html;\n    return testRegexp.test(string) ? string.replace(replaceRegexp, function (match) {\n      return escapeMap[match];\n    }) : string;\n  }\n\n  var Selectpicker = function (element, options, e) {\n    if (e) {\n      e.stopPropagation();\n      e.preventDefault();\n    }\n\n    this.$element = $(element);\n    this.$newElement = null;\n    this.$button = null;\n    this.$menu = null;\n    this.$lis = null;\n    this.options = options;\n\n    // If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a\n    // data-attribute)\n    if (this.options.title === null) {\n      this.options.title = this.$element.attr('title');\n    }\n\n    //Expose public methods\n    this.val = Selectpicker.prototype.val;\n    this.render = Selectpicker.prototype.render;\n    this.refresh = Selectpicker.prototype.refresh;\n    this.setStyle = Selectpicker.prototype.setStyle;\n    this.selectAll = Selectpicker.prototype.selectAll;\n    this.deselectAll = Selectpicker.prototype.deselectAll;\n    this.destroy = Selectpicker.prototype.remove;\n    this.remove = Selectpicker.prototype.remove;\n    this.show = Selectpicker.prototype.show;\n    this.hide = Selectpicker.prototype.hide;\n\n    this.init();\n  };\n\n  Selectpicker.VERSION = '1.6.3';\n\n  // part of this is duplicated in i18n/defaults-en_US.js. Make sure to update both.\n  Selectpicker.DEFAULTS = {\n    noneSelectedText: 'Nothing selected',\n    noneResultsText: 'No results match',\n    countSelectedText: function (numSelected, numTotal) {\n      return (numSelected == 1) ? \"{0} item selected\" : \"{0} items selected\";\n    },\n    maxOptionsText: function (numAll, numGroup) {\n      var arr = [];\n\n      arr[0] = (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)';\n      arr[1] = (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)';\n\n      return arr;\n    },\n    selectAllText: 'Select All',\n    deselectAllText: 'Deselect All',\n    multipleSeparator: ', ',\n    style: 'btn-light',\n    size: 'auto',\n    title: null,\n    selectedTextFormat: 'values',\n    width: false,\n    container: false,\n    hideDisabled: false,\n    showSubtext: false,\n    showIcon: true,\n    showContent: true,\n    dropupAuto: true,\n    header: false,\n    liveSearch: false,\n    actionsBox: false,\n    iconBase: 'fa',\n    tickIcon: 'fa-check',\n    maxOptions: false,\n    mobile: false,\n    selectOnTab: false,\n    dropdownAlignRight: false,\n    searchAccentInsensitive: false\n  };\n\n  Selectpicker.prototype = {\n\n    constructor: Selectpicker,\n\n    init: function () {\n      var that = this,\n          id = this.$element.attr('id');\n\n      this.$element.hide();\n      this.multiple = this.$element.prop('multiple');\n      this.autofocus = this.$element.prop('autofocus');\n      this.$newElement = this.createView();\n      this.$element.after(this.$newElement);\n      this.$menu = this.$newElement.find('> .dropdown-menu');\n      this.$button = this.$newElement.find('> button');\n      this.$searchbox = this.$newElement.find('input');\n\n      if (this.options.dropdownAlignRight)\n        this.$menu.addClass('dropdown-menu-right');\n\n      if (typeof id !== 'undefined') {\n        this.$button.attr('data-id', id);\n        $('label[for=\"' + id + '\"]').click(function (e) {\n          e.preventDefault();\n          that.$button.focus();\n        });\n      }\n\n      this.checkDisabled();\n      this.clickListener();\n      if (this.options.liveSearch) this.liveSearchListener();\n      this.render();\n      this.liHeight();\n      this.setStyle();\n      this.setWidth();\n      if (this.options.container) this.selectPosition();\n      this.$menu.data('this', this);\n      this.$newElement.data('this', this);\n      if (this.options.mobile) this.mobile();\n    },\n\n    createDropdown: function () {\n      // Options\n      // If we are multiple, then add the show-tick class by default\n      var multiple = this.multiple ? ' show-tick' : '',\n          inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '',\n          autofocus = this.autofocus ? ' autofocus' : '',\n          btnSize = this.$element.parents().hasClass('form-group-lg') ? ' btn-lg' : (this.$element.parents().hasClass('form-group-sm') ? ' btn-sm' : '');\n      // Elements\n      var header = this.options.header ? '<div class=\"popover-title\"><button type=\"button\" class=\"close\" aria-hidden=\"true\">&times;</button>' + this.options.header + '</div>' : '';\n      var searchbox = this.options.liveSearch ? '<div class=\"bs-searchbox\"><input type=\"text\" class=\"input-block-level form-control\" autocomplete=\"off\" /></div>' : '';\n      var actionsbox = this.options.actionsBox ? '<div class=\"bs-actionsbox\">' +\n      '<div class=\"btn-group btn-block\">' +\n      '<button class=\"actions-btn bs-select-all btn btn-sm btn-default\">' +\n      this.options.selectAllText +\n      '</button>' +\n      '<button class=\"actions-btn bs-deselect-all btn btn-sm btn-default\">' +\n      this.options.deselectAllText +\n      '</button>' +\n      '</div>' +\n      '</div>' : '';\n      var drop =\n          '<div class=\"btn-group bootstrap-select' + multiple + inputGroup + '\">' +\n          '<button type=\"button\" class=\"btn dropdown-toggle selectpicker' + btnSize + '\" data-toggle=\"dropdown\"' + autofocus + '>' +\n          '<span class=\"filter-option pull-left\"></span>&nbsp;' +\n          '<span class=\"caret\"></span>' +\n          '</button>' +\n          '<div class=\"dropdown-menu open\">' +\n          header +\n          searchbox +\n          actionsbox +\n          '<ul class=\"dropdown-menu inner selectpicker\" role=\"menu\">' +\n          '</ul>' +\n          '</div>' +\n          '</div>';\n\n      return $(drop);\n    },\n\n    createView: function () {\n      var $drop = this.createDropdown();\n      var $li = this.createLi();\n      $drop.find('ul').append($li);\n      return $drop;\n    },\n\n    reloadLi: function () {\n      //Remove all children.\n      this.destroyLi();\n      //Re build\n      var $li = this.createLi();\n      this.$menu.find('ul').append($li);\n    },\n\n    destroyLi: function () {\n      this.$menu.find('li').remove();\n    },\n\n    createLi: function () {\n      var that = this,\n          _li = [],\n          optID = 0;\n\n      // Helper functions\n      /**\n       * @param content\n       * @param [index]\n       * @param [classes]\n       * @returns {string}\n       */\n      var generateLI = function (content, index, classes) {\n        return '<li' +\n        (typeof classes !== 'undefined' ? ' class=\"' + classes + '\"' : '') +\n        (typeof index !== 'undefined' | null === index ? ' data-original-index=\"' + index + '\"' : '') +\n        '>' + content + '</li>';\n      };\n\n      /**\n       * @param text\n       * @param [classes]\n       * @param [inline]\n       * @param [optgroup]\n       * @returns {string}\n       */\n      var generateA = function (text, classes, inline, optgroup) {\n        var normText = normalizeToBase(htmlEscape(text));\n        return '<a tabindex=\"0\"' +\n        (typeof classes !== 'undefined' ? ' class=\"' + classes + '\"' : '') +\n        (typeof inline !== 'undefined' ? ' style=\"' + inline + '\"' : '') +\n        (typeof optgroup !== 'undefined' ? 'data-optgroup=\"' + optgroup + '\"' : '') +\n        ' data-normalized-text=\"' + normText + '\"' +\n        '>' + text +\n        '<span class=\"' + that.options.iconBase + ' ' + that.options.tickIcon + ' check-mark\"></span>' +\n        '</a>';\n      };\n\n      this.$element.find('option').each(function () {\n        var $this = $(this);\n\n        // Get the class and text for the option\n        var optionClass = $this.attr('class') || '',\n            inline = $this.attr('style'),\n            text = $this.data('content') ? $this.data('content') : $this.html(),\n            subtext = typeof $this.data('subtext') !== 'undefined' ? '<small class=\"text-st\">' + $this.data('subtext') + '</small>' : '',\n            icon = typeof $this.data('icon') !== 'undefined' ? '<span class=\"' + that.options.iconBase + ' ' + $this.data('icon') + '\"></span> ' : '',\n            isDisabled = $this.is(':disabled') || $this.parent().is(':disabled'),\n            index = $this[0].index;\n        if (icon !== '' && isDisabled) {\n          icon = '<span>' + icon + '</span>';\n        }\n\n        if (!$this.data('content')) {\n          // Prepend any icon and append any subtext to the main text.\n          text = icon + '<span class=\"text\">' + text + subtext + '</span>';\n        }\n\n        if (that.options.hideDisabled && isDisabled) {\n          return;\n        }\n\n        if ($this.parent().is('optgroup') && $this.data('divider') !== true) {\n          if ($this.index() === 0) { // Is it the first option of the optgroup?\n            optID += 1;\n\n            // Get the opt group label\n            var label = $this.parent().attr('label');\n            var labelSubtext = typeof $this.parent().data('subtext') !== 'undefined' ? '<small class=\"muted text-muted\">' + $this.parent().data('subtext') + '</small>' : '';\n            var labelIcon = $this.parent().data('icon') ? '<span class=\"' + that.options.iconBase + ' ' + $this.parent().data('icon') + '\"></span> ' : '';\n            label = labelIcon + '<span class=\"text\">' + label + labelSubtext + '</span>';\n\n            if (index !== 0 && _li.length > 0) { // Is it NOT the first option of the select && are there elements in the dropdown?\n              _li.push(generateLI('', null, 'divider'));\n            }\n\n            _li.push(generateLI(label, null, 'dropdown-header'));\n          }\n\n          _li.push(generateLI(generateA(text, 'opt ' + optionClass, inline, optID), index));\n        } else if ($this.data('divider') === true) {\n          _li.push(generateLI('', index, 'divider'));\n        } else if ($this.data('hidden') === true) {\n          _li.push(generateLI(generateA(text, optionClass, inline), index, 'hide is-hidden'));\n        } else {\n          _li.push(generateLI(generateA(text, optionClass, inline), index));\n        }\n      });\n\n      //If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button\n      if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) {\n        this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected');\n      }\n\n      return $(_li.join(''));\n    },\n\n    findLis: function () {\n      if (this.$lis == null) this.$lis = this.$menu.find('li');\n      return this.$lis;\n    },\n\n    /**\n     * @param [updateLi] defaults to true\n     */\n    render: function (updateLi) {\n      var that = this;\n\n      //Update the LI to match the SELECT\n      if (updateLi !== false) {\n        this.$element.find('option').each(function (index) {\n          that.setDisabled(index, $(this).is(':disabled') || $(this).parent().is(':disabled'));\n          that.setSelected(index, $(this).is(':selected'));\n        });\n      }\n\n      this.tabIndex();\n      var notDisabled = this.options.hideDisabled ? ':not([disabled])' : '';\n      var selectedItems = this.$element.find('option:selected' + notDisabled).map(function () {\n        var $this = $(this);\n        var icon = $this.data('icon') && that.options.showIcon ? '<i class=\"' + that.options.iconBase + ' ' + $this.data('icon') + '\"></i> ' : '';\n        var subtext;\n        if (that.options.showSubtext && $this.attr('data-subtext') && !that.multiple) {\n          subtext = ' <small class=\"muted text-muted\">' + $this.data('subtext') + '</small>';\n        } else {\n          subtext = '';\n        }\n        if ($this.data('content') && that.options.showContent) {\n          return $this.data('content');\n        } else if (typeof $this.attr('title') !== 'undefined') {\n          return $this.attr('title');\n        } else {\n          return icon + $this.html() + subtext;\n        }\n      }).toArray();\n\n      //Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled\n      //Convert all the values into a comma delimited string\n      var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator);\n\n      //If this is multi select, and the selectText type is count, the show 1 of 2 selected etc..\n      if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) {\n        var max = this.options.selectedTextFormat.split('>');\n        if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) {\n          notDisabled = this.options.hideDisabled ? ', [disabled]' : '';\n          var totalCount = this.$element.find('option').not('[data-divider=\"true\"], [data-hidden=\"true\"]' + notDisabled).length,\n              tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText;\n          title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString());\n        }\n      }\n\n      this.options.title = this.$element.attr('title');\n\n      if (this.options.selectedTextFormat == 'static') {\n        title = this.options.title;\n      }\n\n      //If we dont have a title, then use the default, or if nothing is set at all, use the not selected text\n      if (!title) {\n        title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText;\n      }\n\n      this.$button.attr('title', htmlEscape(title));\n      this.$newElement.find('.filter-option').html(title);\n    },\n\n    /**\n     * @param [style]\n     * @param [status]\n     */\n    setStyle: function (style, status) {\n      if (this.$element.attr('class')) {\n        this.$newElement.addClass(this.$element.attr('class').replace(/selectpicker|mobile-device|validate\\[.*\\]/gi, ''));\n      }\n\n      var buttonClass = style ? style : this.options.style;\n\n      if (status == 'add') {\n        this.$button.addClass(buttonClass);\n      } else if (status == 'remove') {\n        this.$button.removeClass(buttonClass);\n      } else {\n        this.$button.removeClass(this.options.style);\n        this.$button.addClass(buttonClass);\n      }\n    },\n\n    liHeight: function () {\n      if (this.options.size === false) return;\n\n      var $selectClone = this.$menu.parent().clone().find('> .dropdown-toggle').prop('autofocus', false).end().appendTo('body'),\n          $menuClone = $selectClone.addClass('open').find('> .dropdown-menu'),\n          liHeight = $menuClone.find('li').not('.divider').not('.dropdown-header').filter(':visible').children('a').outerHeight(),\n          headerHeight = this.options.header ? $menuClone.find('.popover-title').outerHeight() : 0,\n          searchHeight = this.options.liveSearch ? $menuClone.find('.bs-searchbox').outerHeight() : 0,\n          actionsHeight = this.options.actionsBox ? $menuClone.find('.bs-actionsbox').outerHeight() : 0;\n\n      $selectClone.remove();\n\n      this.$newElement\n          .data('liHeight', liHeight)\n          .data('headerHeight', headerHeight)\n          .data('searchHeight', searchHeight)\n          .data('actionsHeight', actionsHeight);\n    },\n\n    setSize: function () {\n      this.findLis();\n      var that = this,\n          menu = this.$menu,\n          menuInner = menu.find('.inner'),\n          selectHeight = this.$newElement.outerHeight(),\n          liHeight = this.$newElement.data('liHeight'),\n          headerHeight = this.$newElement.data('headerHeight'),\n          searchHeight = this.$newElement.data('searchHeight'),\n          actionsHeight = this.$newElement.data('actionsHeight'),\n          divHeight = this.$lis.filter('.divider').outerHeight(true),\n          menuPadding = parseInt(menu.css('padding-top')) +\n              parseInt(menu.css('padding-bottom')) +\n              parseInt(menu.css('border-top-width')) +\n              parseInt(menu.css('border-bottom-width')),\n          notDisabled = this.options.hideDisabled ? ', .disabled' : '',\n          $window = $(window),\n          menuExtras = menuPadding + parseInt(menu.css('margin-top')) + parseInt(menu.css('margin-bottom')) + 2,\n          menuHeight,\n          selectOffsetTop,\n          selectOffsetBot,\n          posVert = function () {\n            // JQuery defines a scrollTop function, but in pure JS it's a property\n            //noinspection JSValidateTypes\n            selectOffsetTop = that.$newElement.offset().top - $window.scrollTop();\n            selectOffsetBot = $window.height() - selectOffsetTop - selectHeight;\n          };\n      posVert();\n      if (this.options.header) menu.css('padding-top', 0);\n\n      if (this.options.size == 'auto') {\n        var getSize = function () {\n          var minHeight,\n              lisVis = that.$lis.not('.hide');\n\n          posVert();\n          menuHeight = selectOffsetBot - menuExtras;\n\n          if (that.options.dropupAuto) {\n            that.$newElement.toggleClass('dropup', (selectOffsetTop > selectOffsetBot) && ((menuHeight - menuExtras) < menu.height()));\n          }\n          if (that.$newElement.hasClass('dropup')) {\n            menuHeight = selectOffsetTop - menuExtras;\n          }\n\n          if ((lisVis.length + lisVis.filter('.dropdown-header').length) > 3) {\n            minHeight = liHeight * 3 + menuExtras - 2;\n          } else {\n            minHeight = 0;\n          }\n\n          menu.css({\n            'max-height': menuHeight + 'px',\n            'overflow': 'hidden',\n            'min-height': minHeight + headerHeight + searchHeight + actionsHeight + 'px'\n          });\n          menuInner.css({\n            'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - menuPadding + 'px',\n            'overflow-y': 'auto',\n            'min-height': Math.max(minHeight - menuPadding, 0) + 'px'\n          });\n        };\n        getSize();\n        this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize);\n        $(window).off('resize.getSize').on('resize.getSize', getSize);\n        $(window).off('scroll.getSize').on('scroll.getSize', getSize);\n      } else if (this.options.size && this.options.size != 'auto' && menu.find('li' + notDisabled).length > this.options.size) {\n        var optIndex = this.$lis.not('.divider' + notDisabled).find(' > *').slice(0, this.options.size).last().parent().index();\n        var divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length;\n        menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding;\n        if (that.options.dropupAuto) {\n          //noinspection JSUnusedAssignment\n          this.$newElement.toggleClass('dropup', (selectOffsetTop > selectOffsetBot) && (menuHeight < menu.height()));\n        }\n        menu.css({'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + 'px', 'overflow': 'hidden'});\n        menuInner.css({'max-height': menuHeight - menuPadding + 'px', 'overflow-y': 'auto'});\n      }\n    },\n\n    setWidth: function () {\n      if (this.options.width == 'auto') {\n        this.$menu.css('min-width', '0');\n\n        // Get correct width if element hidden\n        var selectClone = this.$newElement.clone().appendTo('body');\n        var ulWidth = selectClone.find('> .dropdown-menu').css('width');\n        var btnWidth = selectClone.css('width', 'auto').find('> button').css('width');\n        selectClone.remove();\n\n        // Set width to whatever's larger, button title or longest option\n        this.$newElement.css('width', Math.max(parseInt(ulWidth), parseInt(btnWidth)) + 'px');\n      } else if (this.options.width == 'fit') {\n        // Remove inline min-width so width can be changed from 'auto'\n        this.$menu.css('min-width', '');\n        this.$newElement.css('width', '').addClass('fit-width');\n      } else if (this.options.width) {\n        // Remove inline min-width so width can be changed from 'auto'\n        this.$menu.css('min-width', '');\n        this.$newElement.css('width', this.options.width);\n      } else {\n        // Remove inline min-width/width so width can be changed\n        this.$menu.css('min-width', '');\n        this.$newElement.css('width', '');\n      }\n      // Remove fit-width class if width is changed programmatically\n      if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {\n        this.$newElement.removeClass('fit-width');\n      }\n    },\n\n    selectPosition: function () {\n      var that = this,\n          drop = '<div />',\n          $drop = $(drop),\n          pos,\n          actualHeight,\n          getPlacement = function ($element) {\n            $drop.addClass($element.attr('class').replace(/form-control/gi, '')).toggleClass('dropup', $element.hasClass('dropup'));\n            pos = $element.offset();\n            actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight;\n            $drop.css({\n              'top': pos.top + actualHeight,\n              'left': pos.left,\n              'width': $element[0].offsetWidth,\n              'position': 'absolute'\n            });\n          };\n      this.$newElement.on('click', function () {\n        if (that.isDisabled()) {\n          return;\n        }\n        getPlacement($(this));\n        $drop.appendTo(that.options.container);\n        $drop.toggleClass('open', !$(this).hasClass('open'));\n        $drop.append(that.$menu);\n      });\n      $(window).resize(function () {\n        getPlacement(that.$newElement);\n      });\n      $(window).on('scroll', function () {\n        getPlacement(that.$newElement);\n      });\n      $('html').on('click', function (e) {\n        if ($(e.target).closest(that.$newElement).length < 1) {\n          $drop.removeClass('open');\n        }\n      });\n    },\n\n    setSelected: function (index, selected) {\n      this.findLis();\n      this.$lis.filter('[data-original-index=\"' + index + '\"]').toggleClass('selected', selected);\n    },\n\n    setDisabled: function (index, disabled) {\n      this.findLis();\n      if (disabled) {\n        this.$lis.filter('[data-original-index=\"' + index + '\"]').addClass('disabled').find('a').attr('href', '#').attr('tabindex', -1);\n      } else {\n        this.$lis.filter('[data-original-index=\"' + index + '\"]').removeClass('disabled').find('a').removeAttr('href').attr('tabindex', 0);\n      }\n    },\n\n    isDisabled: function () {\n      return this.$element.is(':disabled');\n    },\n\n    checkDisabled: function () {\n      var that = this;\n\n      if (this.isDisabled()) {\n        this.$button.addClass('disabled').attr('tabindex', -1);\n      } else {\n        if (this.$button.hasClass('disabled')) {\n          this.$button.removeClass('disabled');\n        }\n\n        if (this.$button.attr('tabindex') == -1) {\n          if (!this.$element.data('tabindex')) this.$button.removeAttr('tabindex');\n        }\n      }\n\n      this.$button.click(function () {\n        return !that.isDisabled();\n      });\n    },\n\n    tabIndex: function () {\n      if (this.$element.is('[tabindex]')) {\n        this.$element.data('tabindex', this.$element.attr('tabindex'));\n        this.$button.attr('tabindex', this.$element.data('tabindex'));\n      }\n    },\n\n    clickListener: function () {\n      var that = this;\n\n      this.$newElement.on('touchstart.dropdown', '.dropdown-menu', function (e) {\n        e.stopPropagation();\n      });\n\n      this.$newElement.on('click', function () {\n        that.setSize();\n        if (!that.options.liveSearch && !that.multiple) {\n          setTimeout(function () {\n            that.$menu.find('.selected a').focus();\n          }, 10);\n        }\n      });\n\n      this.$menu.on('click', 'li a', function (e) {\n        var $this = $(this),\n            clickedIndex = $this.parent().data('originalIndex'),\n            prevValue = that.$element.val(),\n            prevIndex = that.$element.prop('selectedIndex');\n\n        // Don't close on multi choice menu\n        if (that.multiple) {\n          e.stopPropagation();\n        }\n\n        e.preventDefault();\n\n        //Don't run if we have been disabled\n        if (!that.isDisabled() && !$this.parent().hasClass('disabled')) {\n          var $options = that.$element.find('option'),\n              $option = $options.eq(clickedIndex),\n              state = $option.prop('selected'),\n              $optgroup = $option.parent('optgroup'),\n              maxOptions = that.options.maxOptions,\n              maxOptionsGrp = $optgroup.data('maxOptions') || false;\n\n          if (!that.multiple) { // Deselect all others if not multi select box\n            $options.prop('selected', false);\n            $option.prop('selected', true);\n            that.$menu.find('.selected').removeClass('selected');\n            that.setSelected(clickedIndex, true);\n          } else { // Toggle the one we have chosen if we are multi select.\n            $option.prop('selected', !state);\n            that.setSelected(clickedIndex, !state);\n            $this.blur();\n\n            if ((maxOptions !== false) || (maxOptionsGrp !== false)) {\n              var maxReached = maxOptions < $options.filter(':selected').length,\n                  maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length;\n\n              if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) {\n                if (maxOptions && maxOptions == 1) {\n                  $options.prop('selected', false);\n                  $option.prop('selected', true);\n                  that.$menu.find('.selected').removeClass('selected');\n                  that.setSelected(clickedIndex, true);\n                } else if (maxOptionsGrp && maxOptionsGrp == 1) {\n                  $optgroup.find('option:selected').prop('selected', false);\n                  $option.prop('selected', true);\n                  var optgroupID = $this.data('optgroup');\n\n                  that.$menu.find('.selected').has('a[data-optgroup=\"' + optgroupID + '\"]').removeClass('selected');\n\n                  that.setSelected(clickedIndex, true);\n                } else {\n                  var maxOptionsArr = (typeof that.options.maxOptionsText === 'function') ?\n                          that.options.maxOptionsText(maxOptions, maxOptionsGrp) : that.options.maxOptionsText,\n                      maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),\n                      maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),\n                      $notify = $('<div class=\"notify\"></div>');\n                  // If {var} is set in array, replace it\n                  /** @deprecated */\n                  if (maxOptionsArr[2]) {\n                    maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);\n                    maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);\n                  }\n\n                  $option.prop('selected', false);\n\n                  that.$menu.append($notify);\n\n                  if (maxOptions && maxReached) {\n                    $notify.append($('<div>' + maxTxt + '</div>'));\n                    that.$element.trigger('maxReached.bs.select');\n                  }\n\n                  if (maxOptionsGrp && maxReachedGrp) {\n                    $notify.append($('<div>' + maxTxtGrp + '</div>'));\n                    that.$element.trigger('maxReachedGrp.bs.select');\n                  }\n\n                  setTimeout(function () {\n                    that.setSelected(clickedIndex, false);\n                  }, 10);\n\n                  $notify.delay(750).fadeOut(300, function () {\n                    $(this).remove();\n                  });\n                }\n              }\n            }\n          }\n\n          if (!that.multiple) {\n            that.$button.focus();\n          } else if (that.options.liveSearch) {\n            that.$searchbox.focus();\n          }\n\n          // Trigger select 'change'\n          if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) {\n            that.$element.change();\n          }\n        }\n      });\n\n      this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function (e) {\n        if (e.target == this) {\n          e.preventDefault();\n          e.stopPropagation();\n          if (!that.options.liveSearch) {\n            that.$button.focus();\n          } else {\n            that.$searchbox.focus();\n          }\n        }\n      });\n\n      this.$menu.on('click', 'li.divider, li.dropdown-header', function (e) {\n        e.preventDefault();\n        e.stopPropagation();\n        if (!that.options.liveSearch) {\n          that.$button.focus();\n        } else {\n          that.$searchbox.focus();\n        }\n      });\n\n      this.$menu.on('click', '.popover-title .close', function () {\n        that.$button.focus();\n      });\n\n      this.$searchbox.on('click', function (e) {\n        e.stopPropagation();\n      });\n\n\n      this.$menu.on('click', '.actions-btn', function (e) {\n        if (that.options.liveSearch) {\n          that.$searchbox.focus();\n        } else {\n          that.$button.focus();\n        }\n\n        e.preventDefault();\n        e.stopPropagation();\n\n        if ($(this).is('.bs-select-all')) {\n          that.selectAll();\n        } else {\n          that.deselectAll();\n        }\n        that.$element.change();\n      });\n\n      this.$element.change(function () {\n        that.render(false);\n      });\n    },\n\n    liveSearchListener: function () {\n      var that = this,\n          no_results = $('<li class=\"no-results\"></li>');\n\n      this.$newElement.on('click.dropdown.data-api touchstart.dropdown.data-api', function () {\n        that.$menu.find('.active').removeClass('active');\n        if (!!that.$searchbox.val()) {\n          that.$searchbox.val('');\n          that.$lis.not('.is-hidden').removeClass('hide');\n          if (!!no_results.parent().length) no_results.remove();\n        }\n        if (!that.multiple) that.$menu.find('.selected').addClass('active');\n        setTimeout(function () {\n          that.$searchbox.focus();\n        }, 10);\n      });\n\n      this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function (e) {\n        e.stopPropagation();\n      });\n\n      this.$searchbox.on('input propertychange', function () {\n        if (that.$searchbox.val()) {\n\n          if (that.options.searchAccentInsensitive) {\n            that.$lis.not('.is-hidden').removeClass('hide').find('a').not(':aicontains(' + normalizeToBase(that.$searchbox.val()) + ')').parent().addClass('hide');\n          } else {\n            that.$lis.not('.is-hidden').removeClass('hide').find('a').not(':icontains(' + that.$searchbox.val() + ')').parent().addClass('hide');\n          }\n\n          if (!that.$menu.find('li').filter(':visible:not(.no-results)').length) {\n            if (!!no_results.parent().length) no_results.remove();\n            no_results.html(that.options.noneResultsText + ' \"' + htmlEscape(that.$searchbox.val()) + '\"').show();\n            that.$menu.find('li').last().after(no_results);\n          } else if (!!no_results.parent().length) {\n            no_results.remove();\n          }\n\n        } else {\n          that.$lis.not('.is-hidden').removeClass('hide');\n          if (!!no_results.parent().length) no_results.remove();\n        }\n\n        that.$menu.find('li.active').removeClass('active');\n        that.$menu.find('li').filter(':visible:not(.divider)').eq(0).addClass('active').find('a').focus();\n        $(this).focus();\n      });\n    },\n\n    val: function (value) {\n      if (typeof value !== 'undefined') {\n        this.$element.val(value);\n        this.render();\n\n        return this.$element;\n      } else {\n        return this.$element.val();\n      }\n    },\n\n    selectAll: function () {\n      this.findLis();\n      this.$lis.not('.divider').not('.disabled').not('.selected').filter(':visible').find('a').click();\n    },\n\n    deselectAll: function () {\n      this.findLis();\n      this.$lis.not('.divider').not('.disabled').filter('.selected').filter(':visible').find('a').click();\n    },\n\n    keydown: function (e) {\n      var $this = $(this),\n          $parent = ($this.is('input')) ? $this.parent().parent() : $this.parent(),\n          $items,\n          that = $parent.data('this'),\n          index,\n          next,\n          first,\n          last,\n          prev,\n          nextPrev,\n          prevIndex,\n          isActive,\n          keyCodeMap = {\n            32: ' ',\n            48: '0',\n            49: '1',\n            50: '2',\n            51: '3',\n            52: '4',\n            53: '5',\n            54: '6',\n            55: '7',\n            56: '8',\n            57: '9',\n            59: ';',\n            65: 'a',\n            66: 'b',\n            67: 'c',\n            68: 'd',\n            69: 'e',\n            70: 'f',\n            71: 'g',\n            72: 'h',\n            73: 'i',\n            74: 'j',\n            75: 'k',\n            76: 'l',\n            77: 'm',\n            78: 'n',\n            79: 'o',\n            80: 'p',\n            81: 'q',\n            82: 'r',\n            83: 's',\n            84: 't',\n            85: 'u',\n            86: 'v',\n            87: 'w',\n            88: 'x',\n            89: 'y',\n            90: 'z',\n            96: '0',\n            97: '1',\n            98: '2',\n            99: '3',\n            100: '4',\n            101: '5',\n            102: '6',\n            103: '7',\n            104: '8',\n            105: '9'\n          };\n\n      if (that.options.liveSearch) $parent = $this.parent().parent();\n\n      if (that.options.container) $parent = that.$menu;\n\n      $items = $('[role=menu] li a', $parent);\n\n      isActive = that.$menu.parent().hasClass('open');\n\n      if (!isActive && /([0-9]|[A-z])/.test(String.fromCharCode(e.keyCode))) {\n        if (!that.options.container) {\n          that.setSize();\n          that.$menu.parent().addClass('open');\n          isActive = true;\n        } else {\n          that.$newElement.trigger('click');\n        }\n        that.$searchbox.focus();\n      }\n\n      if (that.options.liveSearch) {\n        if (/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && that.$menu.find('.active').length === 0) {\n          e.preventDefault();\n          that.$menu.parent().removeClass('open');\n          that.$button.focus();\n        }\n        $items = $('[role=menu] li:not(.divider):not(.dropdown-header):visible', $parent);\n        if (!$this.val() && !/(38|40)/.test(e.keyCode.toString(10))) {\n          if ($items.filter('.active').length === 0) {\n            if (that.options.searchAccentInsensitive) {\n              $items = that.$newElement.find('li').filter(':aicontains(' + normalizeToBase(keyCodeMap[e.keyCode]) + ')');\n            } else {\n              $items = that.$newElement.find('li').filter(':icontains(' + keyCodeMap[e.keyCode] + ')');\n            }\n          }\n        }\n      }\n\n      if (!$items.length) return;\n\n      if (/(38|40)/.test(e.keyCode.toString(10))) {\n        index = $items.index($items.filter(':focus'));\n        first = $items.parent(':not(.disabled):visible').first().index();\n        last = $items.parent(':not(.disabled):visible').last().index();\n        next = $items.eq(index).parent().nextAll(':not(.disabled):visible').eq(0).index();\n        prev = $items.eq(index).parent().prevAll(':not(.disabled):visible').eq(0).index();\n        nextPrev = $items.eq(next).parent().prevAll(':not(.disabled):visible').eq(0).index();\n\n        if (that.options.liveSearch) {\n          $items.each(function (i) {\n            if ($(this).is(':not(.disabled)')) {\n              $(this).data('index', i);\n            }\n          });\n          index = $items.index($items.filter('.active'));\n          first = $items.filter(':not(.disabled):visible').first().data('index');\n          last = $items.filter(':not(.disabled):visible').last().data('index');\n          next = $items.eq(index).nextAll(':not(.disabled):visible').eq(0).data('index');\n          prev = $items.eq(index).prevAll(':not(.disabled):visible').eq(0).data('index');\n          nextPrev = $items.eq(next).prevAll(':not(.disabled):visible').eq(0).data('index');\n        }\n\n        prevIndex = $this.data('prevIndex');\n\n        if (e.keyCode == 38) {\n          if (that.options.liveSearch) index -= 1;\n          if (index != nextPrev && index > prev) index = prev;\n          if (index < first) index = first;\n          if (index == prevIndex) index = last;\n        }\n\n        if (e.keyCode == 40) {\n          if (that.options.liveSearch) index += 1;\n          if (index == -1) index = 0;\n          if (index != nextPrev && index < next) index = next;\n          if (index > last) index = last;\n          if (index == prevIndex) index = first;\n        }\n\n        $this.data('prevIndex', index);\n\n        if (!that.options.liveSearch) {\n          $items.eq(index).focus();\n        } else {\n          e.preventDefault();\n          if (!$this.is('.dropdown-toggle')) {\n            $items.removeClass('active');\n            $items.eq(index).addClass('active').find('a').focus();\n            $this.focus();\n          }\n        }\n\n      } else if (!$this.is('input')) {\n        var keyIndex = [],\n            count,\n            prevKey;\n\n        $items.each(function () {\n          if ($(this).parent().is(':not(.disabled)')) {\n            if ($.trim($(this).text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) {\n              keyIndex.push($(this).parent().index());\n            }\n          }\n        });\n\n        count = $(document).data('keycount');\n        count++;\n        $(document).data('keycount', count);\n\n        prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1);\n\n        if (prevKey != keyCodeMap[e.keyCode]) {\n          count = 1;\n          $(document).data('keycount', count);\n        } else if (count >= keyIndex.length) {\n          $(document).data('keycount', 0);\n          if (count > keyIndex.length) count = 1;\n        }\n\n        $items.eq(keyIndex[count - 1]).focus();\n      }\n\n      // Select focused option if \"Enter\", \"Spacebar\" or \"Tab\" (when selectOnTab is true) are pressed inside the menu.\n      if ((/(13|32)/.test(e.keyCode.toString(10)) || (/(^9$)/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) {\n        if (!/(32)/.test(e.keyCode.toString(10))) e.preventDefault();\n        if (!that.options.liveSearch) {\n          $(':focus').click();\n        } else if (!/(32)/.test(e.keyCode.toString(10))) {\n          that.$menu.find('.active a').click();\n          $this.focus();\n        }\n        $(document).data('keycount', 0);\n      }\n\n      if ((/(^9$|27)/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (/(27)/.test(e.keyCode.toString(10)) && !isActive)) {\n        that.$menu.parent().removeClass('open');\n        that.$button.focus();\n      }\n    },\n\n    mobile: function () {\n      this.$element.addClass('mobile-device').appendTo(this.$newElement);\n      if (this.options.container) this.$menu.hide();\n    },\n\n    refresh: function () {\n      this.$lis = null;\n      this.reloadLi();\n      this.render();\n      this.setWidth();\n      this.setStyle();\n      this.checkDisabled();\n      this.liHeight();\n    },\n\n    update: function () {\n      this.reloadLi();\n      this.setWidth();\n      this.setStyle();\n      this.checkDisabled();\n      this.liHeight();\n    },\n\n    hide: function () {\n      this.$newElement.hide();\n    },\n\n    show: function () {\n      this.$newElement.show();\n    },\n\n    remove: function () {\n      this.$newElement.remove();\n      this.$element.remove();\n    }\n  };\n\n  // SELECTPICKER PLUGIN DEFINITION\n  // ==============================\n  function Plugin(option, event) {\n    // get the args of the outer function..\n    var args = arguments;\n    // The arguments of the function are explicitly re-defined from the argument list, because the shift causes them\n    // to get lost\n    //noinspection JSDuplicatedDeclaration\n    var _option = option,\n        option = args[0],\n        event = args[1];\n    [].shift.apply(args);\n\n    // This fixes a bug in the js implementation on android 2.3 #715\n    if (typeof option == 'undefined') {\n      option = _option;\n    }\n\n    var value;\n    var chain = this.each(function () {\n      var $this = $(this);\n      if ($this.is('select')) {\n        var data = $this.data('selectpicker'),\n            options = typeof option == 'object' && option;\n\n        if (!data) {\n          var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options);\n          $this.data('selectpicker', (data = new Selectpicker(this, config, event)));\n        } else if (options) {\n          for (var i in options) {\n            if (options.hasOwnProperty(i)) {\n              data.options[i] = options[i];\n            }\n          }\n        }\n\n        if (typeof option == 'string') {\n          if (data[option] instanceof Function) {\n            value = data[option].apply(data, args);\n          } else {\n            value = data.options[option];\n          }\n        }\n      }\n    });\n\n    if (typeof value !== 'undefined') {\n      //noinspection JSUnusedAssignment\n      return value;\n    } else {\n      return chain;\n    }\n  }\n\n  var old = $.fn.selectpicker;\n  $.fn.selectpicker = Plugin;\n  $.fn.selectpicker.Constructor = Selectpicker;\n\n  // SELECTPICKER NO CONFLICT\n  // ========================\n  $.fn.selectpicker.noConflict = function () {\n    $.fn.selectpicker = old;\n    return this;\n  };\n\n  $(document)\n      .data('keycount', 0)\n      .on('keydown', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bs-searchbox input', Selectpicker.prototype.keydown)\n      .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=menu], .bs-searchbox input', function (e) {\n        e.stopPropagation();\n      });\n\n  // SELECTPICKER DATA-API\n  // =====================\n  $(window).on('load.bs.select.data-api', function () {\n    $('.selectpicker').each(function () {\n      var $selectpicker = $(this);\n      Plugin.call($selectpicker, $selectpicker.data());\n    })\n  });\n})(jQuery);"
  },
  {
    "path": "admin/js/bootstrap3-wysihtml5.js",
    "content": "/* jshint expr: true */\n!(function($, wysi) {\n  'use strict';\n\n  var templates = function(key, locale, options) {\n    return wysi.tpl[key]({locale: locale, options: options});\n  };\n\n  var Wysihtml5 = function(el, options) {\n    this.el = el;\n    var toolbarOpts = options || defaultOptions;\n    for(var t in toolbarOpts.customTemplates) {\n      wysi.tpl[t] = toolbarOpts.customTemplates[t];\n    }\n    this.toolbar = this.createToolbar(el, toolbarOpts);\n    this.editor =  this.createEditor(options);\n\n    window.editor = this.editor;\n\n    $('iframe.wysihtml5-sandbox').each(function(i, el){\n      $(el.contentWindow).off('focus.wysihtml5').on({\n        'focus.wysihtml5' : function(){\n          $('li.dropdown').removeClass('open');\n        }\n      });\n    });\n  };\n\n  Wysihtml5.prototype = {\n\n    constructor: Wysihtml5,\n\n    createEditor: function(options) {\n      options = options || {};\n\n      // Add the toolbar to a clone of the options object so multiple instances\n      // of the WYISYWG don't break because 'toolbar' is already defined\n      options = $.extend(true, {}, options);\n      options.toolbar = this.toolbar[0];\n\n      var editor = new wysi.Editor(this.el[0], options);\n\n      if(options && options.events) {\n        for(var eventName in options.events) {\n          editor.on(eventName, options.events[eventName]);\n        }\n      }\n      return editor;\n    },\n\n    createToolbar: function(el, options) {\n      var self = this;\n      var toolbar = $('<ul/>', {\n        'class' : 'wysihtml5-toolbar',\n        'style': 'display:none'\n      });\n      var culture = options.locale || defaultOptions.locale || 'en';\n      for(var key in defaultOptions) {\n        var value = false;\n\n        if(options[key] !== undefined) {\n          if(options[key] === true) {\n            value = true;\n          }\n        } else {\n          value = defaultOptions[key];\n        }\n\n        if(value === true) {\n          toolbar.append(templates(key, locale[culture], options));\n\n          if(key === 'html') {\n            this.initHtml(toolbar);\n          }\n\n          if(key === 'link') {\n            this.initInsertLink(toolbar);\n          }\n\n          if(key === 'image') {\n            this.initInsertImage(toolbar);\n          }\n        }\n      }\n\n      if(options.toolbar) {\n        for(key in options.toolbar) {\n          toolbar.append(options.toolbar[key]);\n        }\n      }\n\n      toolbar.find('a[data-wysihtml5-command=\"formatBlock\"]').click(function(e) {\n        var target = e.target || e.srcElement;\n        var el = $(target);\n        self.toolbar.find('.current-font').text(el.html());\n      });\n\n      toolbar.find('a[data-wysihtml5-command=\"foreColor\"]').click(function(e) {\n        var target = e.target || e.srcElement;\n        var el = $(target);\n        self.toolbar.find('.current-color').text(el.html());\n      });\n\n      this.el.before(toolbar);\n\n      return toolbar;\n    },\n\n    initHtml: function(toolbar) {\n      var changeViewSelector = 'a[data-wysihtml5-action=\"change_view\"]';\n      toolbar.find(changeViewSelector).click(function(e) {\n        toolbar.find('a.btn').not(changeViewSelector).toggleClass('disabled');\n      });\n    },\n\n    initInsertImage: function(toolbar) {\n      var self = this;\n      var insertImageModal = toolbar.find('.bootstrap-wysihtml5-insert-image-modal');\n      var urlInput = insertImageModal.find('.bootstrap-wysihtml5-insert-image-url');\n      var insertButton = insertImageModal.find('a.btn-primary');\n      var initialValue = urlInput.val();\n      var caretBookmark;\n\n      var insertImage = function() {\n        var url = urlInput.val();\n        urlInput.val(initialValue);\n        self.editor.currentView.element.focus();\n        if (caretBookmark) {\n          self.editor.composer.selection.setBookmark(caretBookmark);\n          caretBookmark = null;\n        }\n        self.editor.composer.commands.exec('insertImage', url);\n      };\n\n      urlInput.keypress(function(e) {\n        if(e.which == 13) {\n          insertImage();\n          insertImageModal.modal('hide');\n        }\n      });\n\n      insertButton.click(insertImage);\n\n      insertImageModal.on('shown', function() {\n        urlInput.focus();\n      });\n\n      insertImageModal.on('hide', function() {\n        self.editor.currentView.element.focus();\n      });\n\n      toolbar.find('a[data-wysihtml5-command=insertImage]').click(function() {\n        var activeButton = $(this).hasClass('wysihtml5-command-active');\n\n        if (!activeButton) {\n          self.editor.currentView.element.focus(false);\n          caretBookmark = self.editor.composer.selection.getBookmark();\n          insertImageModal.appendTo('body').modal('show');\n          insertImageModal.on('click.dismiss.modal', '[data-dismiss=\"modal\"]', function(e) {\n            e.stopPropagation();\n          });\n          return false;\n        }\n        else {\n          return true;\n        }\n      });\n    },\n\n    initInsertLink: function(toolbar) {\n      var self = this;\n      var insertLinkModal = toolbar.find('.bootstrap-wysihtml5-insert-link-modal');\n      var urlInput = insertLinkModal.find('.bootstrap-wysihtml5-insert-link-url');\n      var targetInput = insertLinkModal.find('.bootstrap-wysihtml5-insert-link-target');\n      var insertButton = insertLinkModal.find('a.btn-primary');\n      var initialValue = urlInput.val();\n      var caretBookmark;\n\n      var insertLink = function() {\n        var url = urlInput.val();\n        urlInput.val(initialValue);\n        self.editor.currentView.element.focus();\n        if (caretBookmark) {\n          self.editor.composer.selection.setBookmark(caretBookmark);\n          caretBookmark = null;\n        }\n\n        var newWindow = targetInput.prop('checked');\n        self.editor.composer.commands.exec('createLink', {\n          'href' : url,\n          'target' : (newWindow ? '_blank' : '_self'),\n          'rel' : (newWindow ? 'nofollow' : '')\n        });\n      };\n      var pressedEnter = false;\n\n      urlInput.keypress(function(e) {\n        if(e.which == 13) {\n          insertLink();\n          insertLinkModal.modal('hide');\n        }\n      });\n\n      insertButton.click(insertLink);\n\n      insertLinkModal.on('shown', function() {\n        urlInput.focus();\n      });\n\n      insertLinkModal.on('hide', function() {\n        self.editor.currentView.element.focus();\n      });\n\n      toolbar.find('a[data-wysihtml5-command=createLink]').click(function() {\n        var activeButton = $(this).hasClass('wysihtml5-command-active');\n\n        if (!activeButton) {\n          self.editor.currentView.element.focus(false);\n          caretBookmark = self.editor.composer.selection.getBookmark();\n          insertLinkModal.appendTo('body').modal('show');\n          insertLinkModal.on('click.dismiss.modal', '[data-dismiss=\"modal\"]', function(e) {\n            e.stopPropagation();\n          });\n          return false;\n        }\n        else {\n          return true;\n        }\n      });\n    }\n  };\n\n  // these define our public api\n  var methods = {\n    resetDefaults: function() {\n      $.fn.wysihtml5.defaultOptions = $.extend(true, {}, $.fn.wysihtml5.defaultOptionsCache);\n    },\n    bypassDefaults: function(options) {\n      return this.each(function () {\n        var $this = $(this);\n        $this.data('wysihtml5', new Wysihtml5($this, options));\n      });\n    },\n    shallowExtend: function (options) {\n      var settings = $.extend({}, $.fn.wysihtml5.defaultOptions, options || {}, $(this).data());\n      var that = this;\n      return methods.bypassDefaults.apply(that, [settings]);\n    },\n    deepExtend: function(options) {\n      var settings = $.extend(true, {}, $.fn.wysihtml5.defaultOptions, options || {});\n      var that = this;\n      return methods.bypassDefaults.apply(that, [settings]);\n    },\n    init: function(options) {\n      var that = this;\n      return methods.shallowExtend.apply(that, [options]);\n    }\n  };\n\n  $.fn.wysihtml5 = function ( method ) {\n    if ( methods[method] ) {\n      return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));\n    } else if ( typeof method === 'object' || ! method ) {\n      return methods.init.apply( this, arguments );\n    } else {\n      $.error( 'Method ' +  method + ' does not exist on jQuery.wysihtml5' );\n    }    \n  };\n\n  $.fn.wysihtml5.Constructor = Wysihtml5;\n\n  var defaultOptions = $.fn.wysihtml5.defaultOptions = {\n    'font-styles': true,\n    'color': false,\n    'emphasis': true,\n    'lists': true,\n    'html': false,\n    'link': true,\n    'image': true,\n    events: {},\n    parserRules: {\n      classes: {\n        'wysiwyg-color-silver' : 1,\n        'wysiwyg-color-gray' : 1,\n        'wysiwyg-color-white' : 1,\n        'wysiwyg-color-maroon' : 1,\n        'wysiwyg-color-red' : 1,\n        'wysiwyg-color-purple' : 1,\n        'wysiwyg-color-fuchsia' : 1,\n        'wysiwyg-color-green' : 1,\n        'wysiwyg-color-lime' : 1,\n        'wysiwyg-color-olive' : 1,\n        'wysiwyg-color-yellow' : 1,\n        'wysiwyg-color-navy' : 1,\n        'wysiwyg-color-blue' : 1,\n        'wysiwyg-color-teal' : 1,\n        'wysiwyg-color-aqua' : 1,\n        'wysiwyg-color-orange' : 1\n      },\n      tags: {\n        'b':  {},\n        'i':  {},\n        'strong': {},\n        'em': {},\n        'p': {},\n        'br': {},\n        'ol': {},\n        'ul': {},\n        'li': {},\n        'h1': {},\n        'h2': {},\n        'h3': {},\n        'h4': {},\n        'h5': {},\n        'h6': {},\n        'blockquote': {},\n        'u': 1,\n        'img': {\n          'check_attributes': {\n            'width': 'numbers',\n            'alt': 'alt',\n            'src': 'url',\n            'height': 'numbers'\n          }\n        },\n        'a':  {\n          check_attributes: {\n            'href': 'url' // important to avoid XSS\n          },\n          'set_attributes': {\n            'target': '_blank',\n            'rel': 'nofollow'\n          }\n        },\n        'span': 1,\n        'div': 1,\n        // to allow save and edit files with code tag hacks\n        'code': 1,\n        'pre': 1\n      }\n    },\n    locale: 'en'\n  };\n\n  if (typeof $.fn.wysihtml5.defaultOptionsCache === 'undefined') {\n    $.fn.wysihtml5.defaultOptionsCache = $.extend(true, {}, $.fn.wysihtml5.defaultOptions);\n  }\n\n  var locale = $.fn.wysihtml5.locale = {};\n})(window.jQuery, window.wysihtml5);\n"
  },
  {
    "path": "admin/js/index.php",
    "content": ""
  },
  {
    "path": "admin/js/jquery.dataTables.js",
    "content": "/*! DataTables 1.10.2\n * ©2008-2014 SpryMedia Ltd - datatables.net/license\n */\n\n/**\n * @summary     DataTables\n * @description Paginate, search and order HTML tables\n * @version     1.10.2\n * @file        jquery.dataTables.js\n * @author      SpryMedia Ltd (www.sprymedia.co.uk)\n * @contact     www.sprymedia.co.uk/contact\n * @copyright   Copyright 2008-2014 SpryMedia Ltd.\n *\n * This source file is free software, available under the following license:\n *   MIT license - http://datatables.net/license\n *\n * This source file is distributed in the hope that it will be useful, but\n * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY\n * or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.\n *\n * For details please refer to: http://www.datatables.net\n */\n\n/*jslint evil: true, undef: true, browser: true */\n/*globals $,require,jQuery,define,_selector_run,_selector_opts,_selector_first,_selector_row_indexes,_ext,_Api,_api_register,_api_registerPlural,_re_new_lines,_re_html,_re_formatted_numeric,_re_escape_regex,_empty,_intVal,_numToDecimal,_isNumber,_isHtml,_htmlNumeric,_pluck,_pluck_order,_range,_stripHtml,_unique,_fnBuildAjax,_fnAjaxUpdate,_fnAjaxParameters,_fnAjaxUpdateDraw,_fnAjaxDataSrc,_fnAddColumn,_fnColumnOptions,_fnAdjustColumnSizing,_fnVisibleToColumnIndex,_fnColumnIndexToVisible,_fnVisbleColumns,_fnGetColumns,_fnColumnTypes,_fnApplyColumnDefs,_fnHungarianMap,_fnCamelToHungarian,_fnLanguageCompat,_fnBrowserDetect,_fnAddData,_fnAddTr,_fnNodeToDataIndex,_fnNodeToColumnIndex,_fnGetCellData,_fnSetCellData,_fnSplitObjNotation,_fnGetObjectDataFn,_fnSetObjectDataFn,_fnGetDataMaster,_fnClearTable,_fnDeleteIndex,_fnInvalidateRow,_fnGetRowElements,_fnCreateTr,_fnBuildHead,_fnDrawHead,_fnDraw,_fnReDraw,_fnAddOptionsHtml,_fnDetectHeader,_fnGetUniqueThs,_fnFeatureHtmlFilter,_fnFilterComplete,_fnFilterCustom,_fnFilterColumn,_fnFilter,_fnFilterCreateSearch,_fnEscapeRegex,_fnFilterData,_fnFeatureHtmlInfo,_fnUpdateInfo,_fnInfoMacros,_fnInitialise,_fnInitComplete,_fnLengthChange,_fnFeatureHtmlLength,_fnFeatureHtmlPaginate,_fnPageChange,_fnFeatureHtmlProcessing,_fnProcessingDisplay,_fnFeatureHtmlTable,_fnScrollDraw,_fnApplyToChildren,_fnCalculateColumnWidths,_fnThrottle,_fnConvertToWidth,_fnScrollingWidthAdjust,_fnGetWidestNode,_fnGetMaxLenString,_fnStringToCss,_fnScrollBarWidth,_fnSortFlatten,_fnSort,_fnSortAria,_fnSortListener,_fnSortAttachListener,_fnSortingClasses,_fnSortData,_fnSaveState,_fnLoadState,_fnSettingsFromNode,_fnLog,_fnMap,_fnBindAction,_fnCallbackReg,_fnCallbackFire,_fnLengthOverflow,_fnRenderer,_fnDataSource,_fnRowAttributes*/\n\n(/** @lends <global> */function( window, document, undefined ) {\n\n(function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === 'function' && define.amd ) {\n\t\t// Define as an AMD module if possible\n\t\tdefine( 'datatables', ['jquery'], factory );\n\t}\n    else if ( typeof exports === 'object' ) {\n        // Node/CommonJS\n        factory( require( 'jquery' ) );\n    }\n\telse if ( jQuery && !jQuery.fn.dataTable ) {\n\t\t// Define using browser globals otherwise\n\t\t// Prevent multiple instantiations if the script is loaded twice\n\t\tfactory( jQuery );\n\t}\n}\n(/** @lends <global> */function( $ ) {\n\t\"use strict\";\n\n\t/**\n\t * DataTables is a plug-in for the jQuery Javascript library. It is a highly\n\t * flexible tool, based upon the foundations of progressive enhancement,\n\t * which will add advanced interaction controls to any HTML table. For a\n\t * full list of features please refer to\n\t * [DataTables.net](href=\"http://datatables.net).\n\t *\n\t * Note that the `DataTable` object is not a global variable but is aliased\n\t * to `jQuery.fn.DataTable` and `jQuery.fn.dataTable` through which it may\n\t * be  accessed.\n\t *\n\t *  @class\n\t *  @param {object} [init={}] Configuration object for DataTables. Options\n\t *    are defined by {@link DataTable.defaults}\n\t *  @requires jQuery 1.7+\n\t *\n\t *  @example\n\t *    // Basic initialisation\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable();\n\t *    } );\n\t *\n\t *  @example\n\t *    // Initialisation with configuration options - in this case, disable\n\t *    // pagination and sorting.\n\t *    $(document).ready( function {\n\t *      $('#example').dataTable( {\n\t *        \"paginate\": false,\n\t *        \"sort\": false\n\t *      } );\n\t *    } );\n\t */\n\tvar DataTable;\n\n\t\n\t/*\n\t * It is useful to have variables which are scoped locally so only the\n\t * DataTables functions can access them and they don't leak into global space.\n\t * At the same time these functions are often useful over multiple files in the\n\t * core and API, so we list, or at least document, all variables which are used\n\t * by DataTables as private variables here. This also ensures that there is no\n\t * clashing of variable names and that they can easily referenced for reuse.\n\t */\n\t\n\t\n\t// Defined else where\n\t//  _selector_run\n\t//  _selector_opts\n\t//  _selector_first\n\t//  _selector_row_indexes\n\t\n\tvar _ext; // DataTable.ext\n\tvar _Api; // DataTable.Api\n\tvar _api_register; // DataTable.Api.register\n\tvar _api_registerPlural; // DataTable.Api.registerPlural\n\t\n\tvar _re_dic = {};\n\tvar _re_new_lines = /[\\r\\n]/g;\n\tvar _re_html = /<.*?>/g;\n\tvar _re_date_start = /^[\\w\\+\\-]/;\n\tvar _re_date_end = /[\\w\\+\\-]$/;\n\t\n\t// Escape regular expression special characters\n\tvar _re_escape_regex = new RegExp( '(\\\\' + [ '/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\\\', '$', '^', '-' ].join('|\\\\') + ')', 'g' );\n\t\n\t// U+2009 is thin space and U+202F is narrow no-break space, both used in many\n\t// standards as thousands separators\n\tvar _re_formatted_numeric = /[',$£€¥%\\u2009\\u202F]/g;\n\t\n\t\n\tvar _empty = function ( d ) {\n\t\treturn !d || d === true || d === '-' ? true : false;\n\t};\n\t\n\t\n\tvar _intVal = function ( s ) {\n\t\tvar integer = parseInt( s, 10 );\n\t\treturn !isNaN(integer) && isFinite(s) ? integer : null;\n\t};\n\t\n\t// Convert from a formatted number with characters other than `.` as the\n\t// decimal place, to a Javascript number\n\tvar _numToDecimal = function ( num, decimalPoint ) {\n\t\t// Cache created regular expressions for speed as this function is called often\n\t\tif ( ! _re_dic[ decimalPoint ] ) {\n\t\t\t_re_dic[ decimalPoint ] = new RegExp( _fnEscapeRegex( decimalPoint ), 'g' );\n\t\t}\n\t\treturn typeof num === 'string' ?\n\t\t\tnum.replace( /\\./g, '' ).replace( _re_dic[ decimalPoint ], '.' ) :\n\t\t\tnum;\n\t};\n\t\n\t\n\tvar _isNumber = function ( d, decimalPoint, formatted ) {\n\t\tvar strType = typeof d === 'string';\n\t\n\t\tif ( decimalPoint && strType ) {\n\t\t\td = _numToDecimal( d, decimalPoint );\n\t\t}\n\t\n\t\tif ( formatted && strType ) {\n\t\t\td = d.replace( _re_formatted_numeric, '' );\n\t\t}\n\t\n\t\treturn _empty( d ) || (!isNaN( parseFloat(d) ) && isFinite( d ));\n\t};\n\t\n\t\n\t// A string without HTML in it can be considered to be HTML still\n\tvar _isHtml = function ( d ) {\n\t\treturn _empty( d ) || typeof d === 'string';\n\t};\n\t\n\t\n\tvar _htmlNumeric = function ( d, decimalPoint, formatted ) {\n\t\tif ( _empty( d ) ) {\n\t\t\treturn true;\n\t\t}\n\t\n\t\tvar html = _isHtml( d );\n\t\treturn ! html ?\n\t\t\tnull :\n\t\t\t_isNumber( _stripHtml( d ), decimalPoint, formatted ) ?\n\t\t\t\ttrue :\n\t\t\t\tnull;\n\t};\n\t\n\t\n\tvar _pluck = function ( a, prop, prop2 ) {\n\t\tvar out = [];\n\t\tvar i=0, ien=a.length;\n\t\n\t\t// Could have the test in the loop for slightly smaller code, but speed\n\t\t// is essential here\n\t\tif ( prop2 !== undefined ) {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tif ( a[i] && a[i][ prop ] ) {\n\t\t\t\t\tout.push( a[i][ prop ][ prop2 ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tif ( a[i] ) {\n\t\t\t\t\tout.push( a[i][ prop ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\t// Basically the same as _pluck, but rather than looping over `a` we use `order`\n\t// as the indexes to pick from `a`\n\tvar _pluck_order = function ( a, order, prop, prop2 )\n\t{\n\t\tvar out = [];\n\t\tvar i=0, ien=order.length;\n\t\n\t\t// Could have the test in the loop for slightly smaller code, but speed\n\t\t// is essential here\n\t\tif ( prop2 !== undefined ) {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tout.push( a[ order[i] ][ prop ][ prop2 ] );\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tfor ( ; i<ien ; i++ ) {\n\t\t\t\tout.push( a[ order[i] ][ prop ] );\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\tvar _range = function ( len, start )\n\t{\n\t\tvar out = [];\n\t\tvar end;\n\t\n\t\tif ( start === undefined ) {\n\t\t\tstart = 0;\n\t\t\tend = len;\n\t\t}\n\t\telse {\n\t\t\tend = start;\n\t\t\tstart = len;\n\t\t}\n\t\n\t\tfor ( var i=start ; i<end ; i++ ) {\n\t\t\tout.push( i );\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\tvar _stripHtml = function ( d ) {\n\t\treturn d.replace( _re_html, '' );\n\t};\n\t\n\t\n\t/**\n\t * Find the unique elements in a source array.\n\t *\n\t * @param  {array} src Source array\n\t * @return {array} Array of unique items\n\t * @ignore\n\t */\n\tvar _unique = function ( src )\n\t{\n\t\t// A faster unique method is to use object keys to identify used values,\n\t\t// but this doesn't work with arrays or objects, which we must also\n\t\t// consider. See jsperf.com/compare-array-unique-versions/4 for more\n\t\t// information.\n\t\tvar\n\t\t\tout = [],\n\t\t\tval,\n\t\t\ti, ien=src.length,\n\t\t\tj, k=0;\n\t\n\t\tagain: for ( i=0 ; i<ien ; i++ ) {\n\t\t\tval = src[i];\n\t\n\t\t\tfor ( j=0 ; j<k ; j++ ) {\n\t\t\t\tif ( out[j] === val ) {\n\t\t\t\t\tcontinue again;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tout.push( val );\n\t\t\tk++;\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\t\n\t/**\n\t * Create a mapping object that allows camel case parameters to be looked up\n\t * for their Hungarian counterparts. The mapping is stored in a private\n\t * parameter called `_hungarianMap` which can be accessed on the source object.\n\t *  @param {object} o\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnHungarianMap ( o )\n\t{\n\t\tvar\n\t\t\thungarian = 'a aa ai ao as b fn i m o s ',\n\t\t\tmatch,\n\t\t\tnewKey,\n\t\t\tmap = {};\n\t\n\t\t$.each( o, function (key, val) {\n\t\t\tmatch = key.match(/^([^A-Z]+?)([A-Z])/);\n\t\n\t\t\tif ( match && hungarian.indexOf(match[1]+' ') !== -1 )\n\t\t\t{\n\t\t\t\tnewKey = key.replace( match[0], match[2].toLowerCase() );\n\t\t\t\tmap[ newKey ] = key;\n\t\n\t\t\t\t//console.log( key, match );\n\t\t\t\tif ( match[1] === 'o' )\n\t\t\t\t{\n\t\t\t\t\t_fnHungarianMap( o[key] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t\n\t\to._hungarianMap = map;\n\t}\n\t\n\t\n\t/**\n\t * Convert from camel case parameters to Hungarian, based on a Hungarian map\n\t * created by _fnHungarianMap.\n\t *  @param {object} src The model object which holds all parameters that can be\n\t *    mapped.\n\t *  @param {object} user The object to convert from camel case to Hungarian.\n\t *  @param {boolean} force When set to `true`, properties which already have a\n\t *    Hungarian value in the `user` object will be overwritten. Otherwise they\n\t *    won't be.\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnCamelToHungarian ( src, user, force )\n\t{\n\t\tif ( ! src._hungarianMap ) {\n\t\t\t_fnHungarianMap( src );\n\t\t}\n\t\n\t\tvar hungarianKey;\n\t\n\t\t$.each( user, function (key, val) {\n\t\t\thungarianKey = src._hungarianMap[ key ];\n\t\n\t\t\tif ( hungarianKey !== undefined && (force || user[hungarianKey] === undefined) )\n\t\t\t{\n\t\t\t\t// For objects, we need to buzz down into the object to copy parameters\n\t\t\t\tif ( hungarianKey.charAt(0) === 'o' )\n\t\t\t\t{\n\t\t\t\t\t// Copy the camelCase options over to the hungarian\n\t\t\t\t\tif ( ! user[ hungarianKey ] ) {\n\t\t\t\t\t\tuser[ hungarianKey ] = {};\n\t\t\t\t\t}\n\t\t\t\t\t$.extend( true, user[hungarianKey], user[key] );\n\t\n\t\t\t\t\t_fnCamelToHungarian( src[hungarianKey], user[hungarianKey], force );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tuser[hungarianKey] = user[ key ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Language compatibility - when certain options are given, and others aren't, we\n\t * need to duplicate the values over, in order to provide backwards compatibility\n\t * with older language files.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnLanguageCompat( lang )\n\t{\n\t\tvar defaults = DataTable.defaults.oLanguage;\n\t\tvar zeroRecords = lang.sZeroRecords;\n\t\n\t\t/* Backwards compatibility - if there is no sEmptyTable given, then use the same as\n\t\t * sZeroRecords - assuming that is given.\n\t\t */\n\t\tif ( ! lang.sEmptyTable && zeroRecords &&\n\t\t\tdefaults.sEmptyTable === \"No data available in table\" )\n\t\t{\n\t\t\t_fnMap( lang, lang, 'sZeroRecords', 'sEmptyTable' );\n\t\t}\n\t\n\t\t/* Likewise with loading records */\n\t\tif ( ! lang.sLoadingRecords && zeroRecords &&\n\t\t\tdefaults.sLoadingRecords === \"Loading...\" )\n\t\t{\n\t\t\t_fnMap( lang, lang, 'sZeroRecords', 'sLoadingRecords' );\n\t\t}\n\t\n\t\t// Old parameter name of the thousands separator mapped onto the new\n\t\tif ( lang.sInfoThousands ) {\n\t\t\tlang.sThousands = lang.sInfoThousands;\n\t\t}\n\t\n\t\tvar decimal = lang.sDecimal;\n\t\tif ( decimal ) {\n\t\t\t_addNumericSort( decimal );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Map one parameter onto another\n\t *  @param {object} o Object to map\n\t *  @param {*} knew The new parameter name\n\t *  @param {*} old The old parameter name\n\t */\n\tvar _fnCompatMap = function ( o, knew, old ) {\n\t\tif ( o[ knew ] !== undefined ) {\n\t\t\to[ old ] = o[ knew ];\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * Provide backwards compatibility for the main DT options. Note that the new\n\t * options are mapped onto the old parameters, so this is an external interface\n\t * change only.\n\t *  @param {object} init Object to map\n\t */\n\tfunction _fnCompatOpts ( init )\n\t{\n\t\t_fnCompatMap( init, 'ordering',      'bSort' );\n\t\t_fnCompatMap( init, 'orderMulti',    'bSortMulti' );\n\t\t_fnCompatMap( init, 'orderClasses',  'bSortClasses' );\n\t\t_fnCompatMap( init, 'orderCellsTop', 'bSortCellsTop' );\n\t\t_fnCompatMap( init, 'order',         'aaSorting' );\n\t\t_fnCompatMap( init, 'orderFixed',    'aaSortingFixed' );\n\t\t_fnCompatMap( init, 'paging',        'bPaginate' );\n\t\t_fnCompatMap( init, 'pagingType',    'sPaginationType' );\n\t\t_fnCompatMap( init, 'pageLength',    'iDisplayLength' );\n\t\t_fnCompatMap( init, 'searching',     'bFilter' );\n\t\n\t\t// Column search objects are in an array, so it needs to be converted\n\t\t// element by element\n\t\tvar searchCols = init.aoSearchCols;\n\t\n\t\tif ( searchCols ) {\n\t\t\tfor ( var i=0, ien=searchCols.length ; i<ien ; i++ ) {\n\t\t\t\tif ( searchCols[i] ) {\n\t\t\t\t\t_fnCamelToHungarian( DataTable.models.oSearch, searchCols[i] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Provide backwards compatibility for column options. Note that the new options\n\t * are mapped onto the old parameters, so this is an external interface change\n\t * only.\n\t *  @param {object} init Object to map\n\t */\n\tfunction _fnCompatCols ( init )\n\t{\n\t\t_fnCompatMap( init, 'orderable',     'bSortable' );\n\t\t_fnCompatMap( init, 'orderData',     'aDataSort' );\n\t\t_fnCompatMap( init, 'orderSequence', 'asSorting' );\n\t\t_fnCompatMap( init, 'orderDataType', 'sortDataType' );\n\t}\n\t\n\t\n\t/**\n\t * Browser feature detection for capabilities, quirks\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnBrowserDetect( settings )\n\t{\n\t\tvar browser = settings.oBrowser;\n\t\n\t\t// Scrolling feature / quirks detection\n\t\tvar n = $('<div/>')\n\t\t\t.css( {\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\theight: 1,\n\t\t\t\twidth: 1,\n\t\t\t\toverflow: 'hidden'\n\t\t\t} )\n\t\t\t.append(\n\t\t\t\t$('<div/>')\n\t\t\t\t\t.css( {\n\t\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\t\ttop: 1,\n\t\t\t\t\t\tleft: 1,\n\t\t\t\t\t\twidth: 100,\n\t\t\t\t\t\toverflow: 'scroll'\n\t\t\t\t\t} )\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$('<div class=\"test\"/>')\n\t\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t\twidth: '100%',\n\t\t\t\t\t\t\t\theight: 10\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t)\n\t\t\t)\n\t\t\t.appendTo( 'body' );\n\t\n\t\tvar test = n.find('.test');\n\t\n\t\t// IE6/7 will oversize a width 100% element inside a scrolling element, to\n\t\t// include the width of the scrollbar, while other browsers ensure the inner\n\t\t// element is contained without forcing scrolling\n\t\tbrowser.bScrollOversize = test[0].offsetWidth === 100;\n\t\n\t\t// In rtl text layout, some browsers (most, but not all) will place the\n\t\t// scrollbar on the left, rather than the right.\n\t\tbrowser.bScrollbarLeft = test.offset().left !== 1;\n\t\n\t\tn.remove();\n\t}\n\t\n\t\n\t/**\n\t * Array.prototype reduce[Right] method, used for browsers which don't support\n\t * JS 1.6. Done this way to reduce code size, since we iterate either way\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnReduce ( that, fn, init, start, end, inc )\n\t{\n\t\tvar\n\t\t\ti = start,\n\t\t\tvalue,\n\t\t\tisSet = false;\n\t\n\t\tif ( init !== undefined ) {\n\t\t\tvalue = init;\n\t\t\tisSet = true;\n\t\t}\n\t\n\t\twhile ( i !== end ) {\n\t\t\tif ( ! that.hasOwnProperty(i) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\n\t\t\tvalue = isSet ?\n\t\t\t\tfn( value, that[i], i, that ) :\n\t\t\t\tthat[i];\n\t\n\t\t\tisSet = true;\n\t\t\ti += inc;\n\t\t}\n\t\n\t\treturn value;\n\t}\n\t\n\t/**\n\t * Add a column to the list used for the table with default values\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {node} nTh The th element for this column\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAddColumn( oSettings, nTh )\n\t{\n\t\t// Add column to aoColumns array\n\t\tvar oDefaults = DataTable.defaults.column;\n\t\tvar iCol = oSettings.aoColumns.length;\n\t\tvar oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, {\n\t\t\t\"nTh\": nTh ? nTh : document.createElement('th'),\n\t\t\t\"sTitle\":    oDefaults.sTitle    ? oDefaults.sTitle    : nTh ? nTh.innerHTML : '',\n\t\t\t\"aDataSort\": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol],\n\t\t\t\"mData\": oDefaults.mData ? oDefaults.mData : iCol,\n\t\t\tidx: iCol\n\t\t} );\n\t\toSettings.aoColumns.push( oCol );\n\t\n\t\t// Add search object for column specific search. Note that the `searchCols[ iCol ]`\n\t\t// passed into extend can be undefined. This allows the user to give a default\n\t\t// with only some of the parameters defined, and also not give a default\n\t\tvar searchCols = oSettings.aoPreSearchCols;\n\t\tsearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch, searchCols[ iCol ] );\n\t\n\t\t// Use the default column options function to initialise classes etc\n\t\t_fnColumnOptions( oSettings, iCol, null );\n\t}\n\t\n\t\n\t/**\n\t * Apply options for a column\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {int} iCol column index to consider\n\t *  @param {object} oOptions object with sType, bVisible and bSearchable etc\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnColumnOptions( oSettings, iCol, oOptions )\n\t{\n\t\tvar oCol = oSettings.aoColumns[ iCol ];\n\t\tvar oClasses = oSettings.oClasses;\n\t\tvar th = $(oCol.nTh);\n\t\n\t\t// Try to get width information from the DOM. We can't get it from CSS\n\t\t// as we'd need to parse the CSS stylesheet. `width` option can override\n\t\tif ( ! oCol.sWidthOrig ) {\n\t\t\t// Width attribute\n\t\t\toCol.sWidthOrig = th.attr('width') || null;\n\t\n\t\t\t// Style attribute\n\t\t\tvar t = (th.attr('style') || '').match(/width:\\s*(\\d+[pxem%]+)/);\n\t\t\tif ( t ) {\n\t\t\t\toCol.sWidthOrig = t[1];\n\t\t\t}\n\t\t}\n\t\n\t\t/* User specified column options */\n\t\tif ( oOptions !== undefined && oOptions !== null )\n\t\t{\n\t\t\t// Backwards compatibility\n\t\t\t_fnCompatCols( oOptions );\n\t\n\t\t\t// Map camel case parameters to their Hungarian counterparts\n\t\t\t_fnCamelToHungarian( DataTable.defaults.column, oOptions );\n\t\n\t\t\t/* Backwards compatibility for mDataProp */\n\t\t\tif ( oOptions.mDataProp !== undefined && !oOptions.mData )\n\t\t\t{\n\t\t\t\toOptions.mData = oOptions.mDataProp;\n\t\t\t}\n\t\n\t\t\tif ( oOptions.sType )\n\t\t\t{\n\t\t\t\toCol._sManualType = oOptions.sType;\n\t\t\t}\n\t\n\t\t\t// `class` is a reserved word in Javascript, so we need to provide\n\t\t\t// the ability to use a valid name for the camel case input\n\t\t\tif ( oOptions.className && ! oOptions.sClass )\n\t\t\t{\n\t\t\t\toOptions.sClass = oOptions.className;\n\t\t\t}\n\t\n\t\t\t$.extend( oCol, oOptions );\n\t\t\t_fnMap( oCol, oOptions, \"sWidth\", \"sWidthOrig\" );\n\t\n\t\t\t/* iDataSort to be applied (backwards compatibility), but aDataSort will take\n\t\t\t * priority if defined\n\t\t\t */\n\t\t\tif ( typeof oOptions.iDataSort === 'number' )\n\t\t\t{\n\t\t\t\toCol.aDataSort = [ oOptions.iDataSort ];\n\t\t\t}\n\t\t\t_fnMap( oCol, oOptions, \"aDataSort\" );\n\t\t}\n\t\n\t\t/* Cache the data get and set functions for speed */\n\t\tvar mDataSrc = oCol.mData;\n\t\tvar mData = _fnGetObjectDataFn( mDataSrc );\n\t\tvar mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null;\n\t\n\t\tvar attrTest = function( src ) {\n\t\t\treturn typeof src === 'string' && src.indexOf('@') !== -1;\n\t\t};\n\t\toCol._bAttrSrc = $.isPlainObject( mDataSrc ) && (\n\t\t\tattrTest(mDataSrc.sort) || attrTest(mDataSrc.type) || attrTest(mDataSrc.filter)\n\t\t);\n\t\n\t\toCol.fnGetData = function (rowData, type, meta) {\n\t\t\tvar innerData = mData( rowData, type, undefined, meta );\n\t\n\t\t\treturn mRender && type ?\n\t\t\t\tmRender( innerData, type, rowData, meta ) :\n\t\t\t\tinnerData;\n\t\t};\n\t\toCol.fnSetData = function ( rowData, val, meta ) {\n\t\t\treturn _fnSetObjectDataFn( mDataSrc )( rowData, val, meta );\n\t\t};\n\t\n\t\t/* Feature sorting overrides column specific when off */\n\t\tif ( !oSettings.oFeatures.bSort )\n\t\t{\n\t\t\toCol.bSortable = false;\n\t\t\tth.addClass( oClasses.sSortableNone ); // Have to add class here as order event isn't called\n\t\t}\n\t\n\t\t/* Check that the class assignment is correct for sorting */\n\t\tvar bAsc = $.inArray('asc', oCol.asSorting) !== -1;\n\t\tvar bDesc = $.inArray('desc', oCol.asSorting) !== -1;\n\t\tif ( !oCol.bSortable || (!bAsc && !bDesc) )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableNone;\n\t\t\toCol.sSortingClassJUI = \"\";\n\t\t}\n\t\telse if ( bAsc && !bDesc )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableAsc;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUIAscAllowed;\n\t\t}\n\t\telse if ( !bAsc && bDesc )\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortableDesc;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUIDescAllowed;\n\t\t}\n\t\telse\n\t\t{\n\t\t\toCol.sSortingClass = oClasses.sSortable;\n\t\t\toCol.sSortingClassJUI = oClasses.sSortJUI;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Adjust the table column widths for new data. Note: you would probably want to\n\t * do a redraw after calling this function!\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAdjustColumnSizing ( settings )\n\t{\n\t\t/* Not interested in doing column width calculation if auto-width is disabled */\n\t\tif ( settings.oFeatures.bAutoWidth !== false )\n\t\t{\n\t\t\tvar columns = settings.aoColumns;\n\t\n\t\t\t_fnCalculateColumnWidths( settings );\n\t\t\tfor ( var i=0 , iLen=columns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tcolumns[i].nTh.style.width = columns[i].sWidth;\n\t\t\t}\n\t\t}\n\t\n\t\tvar scroll = settings.oScroll;\n\t\tif ( scroll.sY !== '' || scroll.sX !== '')\n\t\t{\n\t\t\t_fnScrollDraw( settings );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'column-sizing', [settings] );\n\t}\n\t\n\t\n\t/**\n\t * Covert the index of a visible column to the index in the data array (take account\n\t * of hidden columns)\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {int} iMatch Visible column index to lookup\n\t *  @returns {int} i the data index\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnVisibleToColumnIndex( oSettings, iMatch )\n\t{\n\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\n\t\treturn typeof aiVis[iMatch] === 'number' ?\n\t\t\taiVis[iMatch] :\n\t\t\tnull;\n\t}\n\t\n\t\n\t/**\n\t * Covert the index of an index in the data array and convert it to the visible\n\t *   column index (take account of hidden columns)\n\t *  @param {int} iMatch Column index to lookup\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns {int} i the data index\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnColumnIndexToVisible( oSettings, iMatch )\n\t{\n\t\tvar aiVis = _fnGetColumns( oSettings, 'bVisible' );\n\t\tvar iPos = $.inArray( iMatch, aiVis );\n\t\n\t\treturn iPos !== -1 ? iPos : null;\n\t}\n\t\n\t\n\t/**\n\t * Get the number of visible columns\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns {int} i the number of visible columns\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnVisbleColumns( oSettings )\n\t{\n\t\treturn _fnGetColumns( oSettings, 'bVisible' ).length;\n\t}\n\t\n\t\n\t/**\n\t * Get an array of column indexes that match a given property\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {string} sParam Parameter in aoColumns to look for - typically\n\t *    bVisible or bSearchable\n\t *  @returns {array} Array of indexes with matched properties\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetColumns( oSettings, sParam )\n\t{\n\t\tvar a = [];\n\t\n\t\t$.map( oSettings.aoColumns, function(val, i) {\n\t\t\tif ( val[sParam] ) {\n\t\t\t\ta.push( i );\n\t\t\t}\n\t\t} );\n\t\n\t\treturn a;\n\t}\n\t\n\t\n\t/**\n\t * Calculate the 'type' of a column\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnColumnTypes ( settings )\n\t{\n\t\tvar columns = settings.aoColumns;\n\t\tvar data = settings.aoData;\n\t\tvar types = DataTable.ext.type.detect;\n\t\tvar i, ien, j, jen, k, ken;\n\t\tvar col, cell, detectedType, cache;\n\t\n\t\t// For each column, spin over the \n\t\tfor ( i=0, ien=columns.length ; i<ien ; i++ ) {\n\t\t\tcol = columns[i];\n\t\t\tcache = [];\n\t\n\t\t\tif ( ! col.sType && col._sManualType ) {\n\t\t\t\tcol.sType = col._sManualType;\n\t\t\t}\n\t\t\telse if ( ! col.sType ) {\n\t\t\t\tfor ( j=0, jen=types.length ; j<jen ; j++ ) {\n\t\t\t\t\tfor ( k=0, ken=data.length ; k<ken ; k++ ) {\n\t\t\t\t\t\t// Use a cache array so we only need to get the type data\n\t\t\t\t\t\t// from the formatter once (when using multiple detectors)\n\t\t\t\t\t\tif ( cache[k] === undefined ) {\n\t\t\t\t\t\t\tcache[k] = _fnGetCellData( settings, k, i, 'type' );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tdetectedType = types[j]( cache[k], settings );\n\t\n\t\t\t\t\t\t// Doesn't match, so break early, since this type can't\n\t\t\t\t\t\t// apply to this column. Also, HTML is a special case since\n\t\t\t\t\t\t// it is so similar to `string`. Just a single match is\n\t\t\t\t\t\t// needed for a column to be html type\n\t\t\t\t\t\tif ( ! detectedType || detectedType === 'html' ) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Type is valid for all data points in the column - use this\n\t\t\t\t\t// type\n\t\t\t\t\tif ( detectedType ) {\n\t\t\t\t\t\tcol.sType = detectedType;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t// Fall back - if no type was detected, always use string\n\t\t\t\tif ( ! col.sType ) {\n\t\t\t\t\tcol.sType = 'string';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Take the column definitions and static columns arrays and calculate how\n\t * they relate to column indexes. The callback function will then apply the\n\t * definition found for a column to a suitable configuration object.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {array} aoColDefs The aoColumnDefs array that is to be applied\n\t *  @param {array} aoCols The aoColumns array that defines columns individually\n\t *  @param {function} fn Callback function - takes two parameters, the calculated\n\t *    column index and the definition for that column.\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )\n\t{\n\t\tvar i, iLen, j, jLen, k, kLen, def;\n\t\tvar columns = oSettings.aoColumns;\n\t\n\t\t// Column definitions with aTargets\n\t\tif ( aoColDefs )\n\t\t{\n\t\t\t/* Loop over the definitions array - loop in reverse so first instance has priority */\n\t\t\tfor ( i=aoColDefs.length-1 ; i>=0 ; i-- )\n\t\t\t{\n\t\t\t\tdef = aoColDefs[i];\n\t\n\t\t\t\t/* Each definition can target multiple columns, as it is an array */\n\t\t\t\tvar aTargets = def.targets !== undefined ?\n\t\t\t\t\tdef.targets :\n\t\t\t\t\tdef.aTargets;\n\t\n\t\t\t\tif ( ! $.isArray( aTargets ) )\n\t\t\t\t{\n\t\t\t\t\taTargets = [ aTargets ];\n\t\t\t\t}\n\t\n\t\t\t\tfor ( j=0, jLen=aTargets.length ; j<jLen ; j++ )\n\t\t\t\t{\n\t\t\t\t\tif ( typeof aTargets[j] === 'number' && aTargets[j] >= 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Add columns that we don't yet know about */\n\t\t\t\t\t\twhile( columns.length <= aTargets[j] )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t_fnAddColumn( oSettings );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t/* Integer, basic index */\n\t\t\t\t\t\tfn( aTargets[j], def );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( typeof aTargets[j] === 'number' && aTargets[j] < 0 )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Negative integer, right to left column counting */\n\t\t\t\t\t\tfn( columns.length+aTargets[j], def );\n\t\t\t\t\t}\n\t\t\t\t\telse if ( typeof aTargets[j] === 'string' )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Class name matching on TH element */\n\t\t\t\t\t\tfor ( k=0, kLen=columns.length ; k<kLen ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif ( aTargets[j] == \"_all\" ||\n\t\t\t\t\t\t\t     $(columns[k].nTh).hasClass( aTargets[j] ) )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfn( k, def );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\t// Statically defined columns array\n\t\tif ( aoCols )\n\t\t{\n\t\t\tfor ( i=0, iLen=aoCols.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\tfn( i, aoCols[i] );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t/**\n\t * Add a data array to the table, creating DOM node etc. This is the parallel to\n\t * _fnGatherData, but for adding rows from a Javascript source, rather than a\n\t * DOM source.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {array} aData data array to be added\n\t *  @param {node} [nTr] TR element to add to the table - optional. If not given,\n\t *    DataTables will create a row automatically\n\t *  @param {array} [anTds] Array of TD|TH elements for the row - must be given\n\t *    if nTr is.\n\t *  @returns {int} >=0 if successful (index of new aoData entry), -1 if failed\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAddData ( oSettings, aDataIn, nTr, anTds )\n\t{\n\t\t/* Create the object for storing information about this new row */\n\t\tvar iRow = oSettings.aoData.length;\n\t\tvar oData = $.extend( true, {}, DataTable.models.oRow, {\n\t\t\tsrc: nTr ? 'dom' : 'data'\n\t\t} );\n\t\n\t\toData._aData = aDataIn;\n\t\toSettings.aoData.push( oData );\n\t\n\t\t/* Create the cells */\n\t\tvar nTd, sThisType;\n\t\tvar columns = oSettings.aoColumns;\n\t\tfor ( var i=0, iLen=columns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\t// When working with a row, the data source object must be populated. In\n\t\t\t// all other cases, the data source object is already populated, so we\n\t\t\t// don't overwrite it, which might break bindings etc\n\t\t\tif ( nTr ) {\n\t\t\t\t_fnSetCellData( oSettings, iRow, i, _fnGetCellData( oSettings, iRow, i ) );\n\t\t\t}\n\t\t\tcolumns[i].sType = null;\n\t\t}\n\t\n\t\t/* Add to the display array */\n\t\toSettings.aiDisplayMaster.push( iRow );\n\t\n\t\t/* Create the DOM information, or register it if already present */\n\t\tif ( nTr || ! oSettings.oFeatures.bDeferRender )\n\t\t{\n\t\t\t_fnCreateTr( oSettings, iRow, nTr, anTds );\n\t\t}\n\t\n\t\treturn iRow;\n\t}\n\t\n\t\n\t/**\n\t * Add one or more TR elements to the table. Generally we'd expect to\n\t * use this for reading data from a DOM sourced table, but it could be\n\t * used for an TR element. Note that if a TR is given, it is used (i.e.\n\t * it is not cloned).\n\t *  @param {object} settings dataTables settings object\n\t *  @param {array|node|jQuery} trs The TR element(s) to add to the table\n\t *  @returns {array} Array of indexes for the added rows\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAddTr( settings, trs )\n\t{\n\t\tvar row;\n\t\n\t\t// Allow an individual node to be passed in\n\t\tif ( ! (trs instanceof $) ) {\n\t\t\ttrs = $(trs);\n\t\t}\n\t\n\t\treturn trs.map( function (i, el) {\n\t\t\trow = _fnGetRowElements( settings, el );\n\t\t\treturn _fnAddData( settings, row.data, el, row.cells );\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Take a TR element and convert it to an index in aoData\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {node} n the TR element to find\n\t *  @returns {int} index if the node is found, null if not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnNodeToDataIndex( oSettings, n )\n\t{\n\t\treturn (n._DT_RowIndex!==undefined) ? n._DT_RowIndex : null;\n\t}\n\t\n\t\n\t/**\n\t * Take a TD element and convert it into a column data index (not the visible index)\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {int} iRow The row number the TD/TH can be found in\n\t *  @param {node} n The TD/TH element to find\n\t *  @returns {int} index if the node is found, -1 if not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnNodeToColumnIndex( oSettings, iRow, n )\n\t{\n\t\treturn $.inArray( n, oSettings.aoData[ iRow ].anCells );\n\t}\n\t\n\t\n\t/**\n\t * Get the data for a given cell from the internal cache, taking into account data mapping\n\t *  @param {object} settings dataTables settings object\n\t *  @param {int} rowIdx aoData row id\n\t *  @param {int} colIdx Column index\n\t *  @param {string} type data get type ('display', 'type' 'filter' 'sort')\n\t *  @returns {*} Cell data\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetCellData( settings, rowIdx, colIdx, type )\n\t{\n\t\tvar draw           = settings.iDraw;\n\t\tvar col            = settings.aoColumns[colIdx];\n\t\tvar rowData        = settings.aoData[rowIdx]._aData;\n\t\tvar defaultContent = col.sDefaultContent;\n\t\tvar cellData       = col.fnGetData( rowData, type, {\n\t\t\tsettings: settings,\n\t\t\trow:      rowIdx,\n\t\t\tcol:      colIdx\n\t\t} );\n\t\n\t\tif ( cellData === undefined ) {\n\t\t\tif ( settings.iDrawError != draw && defaultContent === null ) {\n\t\t\t\t_fnLog( settings, 0, \"Requested unknown parameter \"+\n\t\t\t\t\t(typeof col.mData=='function' ? '{function}' : \"'\"+col.mData+\"'\")+\n\t\t\t\t\t\" for row \"+rowIdx, 4 );\n\t\t\t\tsettings.iDrawError = draw;\n\t\t\t}\n\t\t\treturn defaultContent;\n\t\t}\n\t\n\t\t/* When the data source is null, we can use default column data */\n\t\tif ( (cellData === rowData || cellData === null) && defaultContent !== null ) {\n\t\t\tcellData = defaultContent;\n\t\t}\n\t\telse if ( typeof cellData === 'function' ) {\n\t\t\t// If the data source is a function, then we run it and use the return,\n\t\t\t// executing in the scope of the data object (for instances)\n\t\t\treturn cellData.call( rowData );\n\t\t}\n\t\n\t\tif ( cellData === null && type == 'display' ) {\n\t\t\treturn '';\n\t\t}\n\t\treturn cellData;\n\t}\n\t\n\t\n\t/**\n\t * Set the value for a specific cell, into the internal data cache\n\t *  @param {object} settings dataTables settings object\n\t *  @param {int} rowIdx aoData row id\n\t *  @param {int} colIdx Column index\n\t *  @param {*} val Value to set\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSetCellData( settings, rowIdx, colIdx, val )\n\t{\n\t\tvar col     = settings.aoColumns[colIdx];\n\t\tvar rowData = settings.aoData[rowIdx]._aData;\n\t\n\t\tcol.fnSetData( rowData, val, {\n\t\t\tsettings: settings,\n\t\t\trow:      rowIdx,\n\t\t\tcol:      colIdx\n\t\t}  );\n\t}\n\t\n\t\n\t// Private variable that is used to match action syntax in the data property object\n\tvar __reArray = /\\[.*?\\]$/;\n\tvar __reFn = /\\(\\)$/;\n\t\n\t/**\n\t * Split string on periods, taking into account escaped periods\n\t * @param  {string} str String to split\n\t * @return {array} Split string\n\t */\n\tfunction _fnSplitObjNotation( str )\n\t{\n\t\treturn $.map( str.match(/(\\\\.|[^\\.])+/g), function ( s ) {\n\t\t\treturn s.replace(/\\\\./g, '.');\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Return a function that can be used to get data from a source object, taking\n\t * into account the ability to use nested objects as a source\n\t *  @param {string|int|function} mSource The data source for the object\n\t *  @returns {function} Data get function\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetObjectDataFn( mSource )\n\t{\n\t\tif ( $.isPlainObject( mSource ) )\n\t\t{\n\t\t\t/* Build an object of get functions, and wrap them in a single call */\n\t\t\tvar o = {};\n\t\t\t$.each( mSource, function (key, val) {\n\t\t\t\tif ( val ) {\n\t\t\t\t\to[key] = _fnGetObjectDataFn( val );\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\treturn function (data, type, row, meta) {\n\t\t\t\tvar t = o[type] || o._;\n\t\t\t\treturn t !== undefined ?\n\t\t\t\t\tt(data, type, row, meta) :\n\t\t\t\t\tdata;\n\t\t\t};\n\t\t}\n\t\telse if ( mSource === null )\n\t\t{\n\t\t\t/* Give an empty string for rendering / sorting etc */\n\t\t\treturn function (data) { // type, row and meta also passed, but not used\n\t\t\t\treturn data;\n\t\t\t};\n\t\t}\n\t\telse if ( typeof mSource === 'function' )\n\t\t{\n\t\t\treturn function (data, type, row, meta) {\n\t\t\t\treturn mSource( data, type, row, meta );\n\t\t\t};\n\t\t}\n\t\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 ||\n\t\t\t      mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) )\n\t\t{\n\t\t\t/* If there is a . in the source string then the data source is in a\n\t\t\t * nested object so we loop over the data for each level to get the next\n\t\t\t * level down. On each loop we test for undefined, and if found immediately\n\t\t\t * return. This allows entire objects to be missing and sDefaultContent to\n\t\t\t * be used if defined, rather than throwing an error\n\t\t\t */\n\t\t\tvar fetchData = function (data, type, src) {\n\t\t\t\tvar arrayNotation, funcNotation, out, innerSrc;\n\t\n\t\t\t\tif ( src !== \"\" )\n\t\t\t\t{\n\t\t\t\t\tvar a = _fnSplitObjNotation( src );\n\t\n\t\t\t\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t\t\t\t{\n\t\t\t\t\t\t// Check if we are dealing with special notation\n\t\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\t\t\t\tfuncNotation = a[i].match(__reFn);\n\t\n\t\t\t\t\t\tif ( arrayNotation )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Array notation\n\t\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\n\t\t\t\t\t\t\t// Condition allows simply [] to be passed in\n\t\t\t\t\t\t\tif ( a[i] !== \"\" ) {\n\t\t\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tout = [];\n\t\n\t\t\t\t\t\t\t// Get the remainder of the nested object to get\n\t\t\t\t\t\t\ta.splice( 0, i+1 );\n\t\t\t\t\t\t\tinnerSrc = a.join('.');\n\t\n\t\t\t\t\t\t\t// Traverse each entry in the array getting the properties requested\n\t\t\t\t\t\t\tfor ( var j=0, jLen=data.length ; j<jLen ; j++ ) {\n\t\t\t\t\t\t\t\tout.push( fetchData( data[j], type, innerSrc ) );\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t// If a string is given in between the array notation indicators, that\n\t\t\t\t\t\t\t// is used to join the strings together, otherwise an array is returned\n\t\t\t\t\t\t\tvar join = arrayNotation[0].substring(1, arrayNotation[0].length-1);\n\t\t\t\t\t\t\tdata = (join===\"\") ? out : out.join(join);\n\t\n\t\t\t\t\t\t\t// The inner call to fetchData has already traversed through the remainder\n\t\t\t\t\t\t\t// of the source requested, so we exit from the loop\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ( funcNotation )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// Function call\n\t\t\t\t\t\t\ta[i] = a[i].replace(__reFn, '');\n\t\t\t\t\t\t\tdata = data[ a[i] ]();\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif ( data === null || data[ a[i] ] === undefined )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn data;\n\t\t\t};\n\t\n\t\t\treturn function (data, type) { // row and meta also passed, but not used\n\t\t\t\treturn fetchData( data, type, mSource );\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Array or flat object mapping */\n\t\t\treturn function (data, type) { // row and meta also passed, but not used\n\t\t\t\treturn data[mSource];\n\t\t\t};\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Return a function that can be used to set data from a source object, taking\n\t * into account the ability to use nested objects as a source\n\t *  @param {string|int|function} mSource The data source for the object\n\t *  @returns {function} Data set function\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSetObjectDataFn( mSource )\n\t{\n\t\tif ( $.isPlainObject( mSource ) )\n\t\t{\n\t\t\t/* Unlike get, only the underscore (global) option is used for for\n\t\t\t * setting data since we don't know the type here. This is why an object\n\t\t\t * option is not documented for `mData` (which is read/write), but it is\n\t\t\t * for `mRender` which is read only.\n\t\t\t */\n\t\t\treturn _fnSetObjectDataFn( mSource._ );\n\t\t}\n\t\telse if ( mSource === null )\n\t\t{\n\t\t\t/* Nothing to do when the data source is null */\n\t\t\treturn function () {};\n\t\t}\n\t\telse if ( typeof mSource === 'function' )\n\t\t{\n\t\t\treturn function (data, val, meta) {\n\t\t\t\tmSource( data, 'set', val, meta );\n\t\t\t};\n\t\t}\n\t\telse if ( typeof mSource === 'string' && (mSource.indexOf('.') !== -1 ||\n\t\t\t      mSource.indexOf('[') !== -1 || mSource.indexOf('(') !== -1) )\n\t\t{\n\t\t\t/* Like the get, we need to get data from a nested object */\n\t\t\tvar setData = function (data, val, src) {\n\t\t\t\tvar a = _fnSplitObjNotation( src ), b;\n\t\t\t\tvar aLast = a[a.length-1];\n\t\t\t\tvar arrayNotation, funcNotation, o, innerSrc;\n\t\n\t\t\t\tfor ( var i=0, iLen=a.length-1 ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\t// Check if we are dealing with an array notation request\n\t\t\t\t\tarrayNotation = a[i].match(__reArray);\n\t\t\t\t\tfuncNotation = a[i].match(__reFn);\n\t\n\t\t\t\t\tif ( arrayNotation )\n\t\t\t\t\t{\n\t\t\t\t\t\ta[i] = a[i].replace(__reArray, '');\n\t\t\t\t\t\tdata[ a[i] ] = [];\n\t\n\t\t\t\t\t\t// Get the remainder of the nested object to set so we can recurse\n\t\t\t\t\t\tb = a.slice();\n\t\t\t\t\t\tb.splice( 0, i+1 );\n\t\t\t\t\t\tinnerSrc = b.join('.');\n\t\n\t\t\t\t\t\t// Traverse each entry in the array setting the properties requested\n\t\t\t\t\t\tfor ( var j=0, jLen=val.length ; j<jLen ; j++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\to = {};\n\t\t\t\t\t\t\tsetData( o, val[j], innerSrc );\n\t\t\t\t\t\t\tdata[ a[i] ].push( o );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t// The inner call to setData has already traversed through the remainder\n\t\t\t\t\t\t// of the source and has set the data, thus we can exit here\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( funcNotation )\n\t\t\t\t\t{\n\t\t\t\t\t\t// Function call\n\t\t\t\t\t\ta[i] = a[i].replace(__reFn, '');\n\t\t\t\t\t\tdata = data[ a[i] ]( val );\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// If the nested object doesn't currently exist - since we are\n\t\t\t\t\t// trying to set the value - create it\n\t\t\t\t\tif ( data[ a[i] ] === null || data[ a[i] ] === undefined )\n\t\t\t\t\t{\n\t\t\t\t\t\tdata[ a[i] ] = {};\n\t\t\t\t\t}\n\t\t\t\t\tdata = data[ a[i] ];\n\t\t\t\t}\n\t\n\t\t\t\t// Last item in the input - i.e, the actual set\n\t\t\t\tif ( aLast.match(__reFn ) )\n\t\t\t\t{\n\t\t\t\t\t// Function call\n\t\t\t\t\tdata = data[ aLast.replace(__reFn, '') ]( val );\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t// If array notation is used, we just want to strip it and use the property name\n\t\t\t\t\t// and assign the value. If it isn't used, then we get the result we want anyway\n\t\t\t\t\tdata[ aLast.replace(__reArray, '') ] = val;\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t\treturn function (data, val) { // meta is also passed in, but not used\n\t\t\t\treturn setData( data, val, mSource );\n\t\t\t};\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Array or flat object mapping */\n\t\t\treturn function (data, val) { // meta is also passed in, but not used\n\t\t\t\tdata[mSource] = val;\n\t\t\t};\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Return an array with the full table data\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns array {array} aData Master data array\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetDataMaster ( settings )\n\t{\n\t\treturn _pluck( settings.aoData, '_aData' );\n\t}\n\t\n\t\n\t/**\n\t * Nuke the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnClearTable( settings )\n\t{\n\t\tsettings.aoData.length = 0;\n\t\tsettings.aiDisplayMaster.length = 0;\n\t\tsettings.aiDisplay.length = 0;\n\t}\n\t\n\t\n\t /**\n\t * Take an array of integers (index array) and remove a target integer (value - not\n\t * the key!)\n\t *  @param {array} a Index array to target\n\t *  @param {int} iTarget value to find\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnDeleteIndex( a, iTarget, splice )\n\t{\n\t\tvar iTargetIndex = -1;\n\t\n\t\tfor ( var i=0, iLen=a.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tif ( a[i] == iTarget )\n\t\t\t{\n\t\t\t\tiTargetIndex = i;\n\t\t\t}\n\t\t\telse if ( a[i] > iTarget )\n\t\t\t{\n\t\t\t\ta[i]--;\n\t\t\t}\n\t\t}\n\t\n\t\tif ( iTargetIndex != -1 && splice === undefined )\n\t\t{\n\t\t\ta.splice( iTargetIndex, 1 );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Mark cached data as invalid such that a re-read of the data will occur when\n\t * the cached data is next requested. Also update from the data source object.\n\t *\n\t * @param {object} settings DataTables settings object\n\t * @param  {int}    rowIdx   Row index to invalidate\n\t * @memberof DataTable#oApi\n\t *\n\t * @todo For the modularisation of v1.11 this will need to become a callback, so\n\t *   the sort and filter methods can subscribe to it. That will required\n\t *   initialisation options for sorting, which is why it is not already baked in\n\t */\n\tfunction _fnInvalidateRow( settings, rowIdx, src, column )\n\t{\n\t\tvar row = settings.aoData[ rowIdx ];\n\t\tvar i, ien;\n\t\n\t\t// Are we reading last data from DOM or the data object?\n\t\tif ( src === 'dom' || ((! src || src === 'auto') && row.src === 'dom') ) {\n\t\t\t// Read the data from the DOM\n\t\t\trow._aData = _fnGetRowElements( settings, row ).data;\n\t\t}\n\t\telse {\n\t\t\t// Reading from data object, update the DOM\n\t\t\tvar cells = row.anCells;\n\t\t\tvar cell;\n\t\n\t\t\tif ( cells ) {\n\t\t\t\tfor ( i=0, ien=cells.length ; i<ien ; i++ ) {\n\t\t\t\t\tcell = cells[i];\n\t\n\t\t\t\t\t// This is very frustrating, but in IE if you just write directly\n\t\t\t\t\t// to innerHTML, and elements that are overwritten are GC'ed,\n\t\t\t\t\t// even if there is a reference to them elsewhere\n\t\t\t\t\twhile ( cell.childNodes.length ) {\n\t\t\t\t\t\tcell.removeChild( cell.firstChild );\n\t\t\t\t\t}\n\t\n\t\t\t\t\tcells[i].innerHTML = _fnGetCellData( settings, rowIdx, i, 'display' );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\trow._aSortData = null;\n\t\trow._aFilterData = null;\n\t\n\t\t// Invalidate the type for a specific column (if given) or all columns since\n\t\t// the data might have changed\n\t\tvar cols = settings.aoColumns;\n\t\tif ( column !== undefined ) {\n\t\t\tcols[ column ].sType = null;\n\t\t}\n\t\telse {\n\t\t\tfor ( i=0, ien=cols.length ; i<ien ; i++ ) {\n\t\t\t\tcols[i].sType = null;\n\t\t\t}\n\t\t}\n\t\n\t\t// Update DataTables special `DT_*` attributes for the row\n\t\t_fnRowAttributes( row );\n\t}\n\t\n\t\n\t/**\n\t * Build a data source object from an HTML row, reading the contents of the\n\t * cells that are in the row.\n\t *\n\t * @param {object} settings DataTables settings object\n\t * @param {node|object} TR element from which to read data or existing row\n\t *   object from which to re-read the data from the cells\n\t * @returns {object} Object with two parameters: `data` the data read, in\n\t *   document order, and `cells` and array of nodes (they can be useful to the\n\t *   caller, so rather than needing a second traversal to get them, just return\n\t *   them from here).\n\t * @memberof DataTable#oApi\n\t */\n\tfunction _fnGetRowElements( settings, row )\n\t{\n\t\tvar\n\t\t\td = [],\n\t\t\ttds = [],\n\t\t\ttd = row.firstChild,\n\t\t\tname, col, o, i=0, contents,\n\t\t\tcolumns = settings.aoColumns;\n\t\n\t\tvar attr = function ( str, data, td  ) {\n\t\t\tif ( typeof str === 'string' ) {\n\t\t\t\tvar idx = str.indexOf('@');\n\t\n\t\t\t\tif ( idx !== -1 ) {\n\t\t\t\t\tvar src = str.substring( idx+1 );\n\t\t\t\t\to[ '@'+src ] = td.getAttribute( src );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\n\t\tvar cellProcess = function ( cell ) {\n\t\t\tcol = columns[i];\n\t\t\tcontents = $.trim(cell.innerHTML);\n\t\n\t\t\tif ( col && col._bAttrSrc ) {\n\t\t\t\to = {\n\t\t\t\t\tdisplay: contents\n\t\t\t\t};\n\t\n\t\t\t\tattr( col.mData.sort, o, cell );\n\t\t\t\tattr( col.mData.type, o, cell );\n\t\t\t\tattr( col.mData.filter, o, cell );\n\t\n\t\t\t\td.push( o );\n\t\t\t}\n\t\t\telse {\n\t\t\t\td.push( contents );\n\t\t\t}\n\t\n\t\t\ti++;\n\t\t};\n\t\n\t\tif ( td ) {\n\t\t\t// `tr` element passed in\n\t\t\twhile ( td ) {\n\t\t\t\tname = td.nodeName.toUpperCase();\n\t\n\t\t\t\tif ( name == \"TD\" || name == \"TH\" ) {\n\t\t\t\t\tcellProcess( td );\n\t\t\t\t\ttds.push( td );\n\t\t\t\t}\n\t\n\t\t\t\ttd = td.nextSibling;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// Existing row object passed in\n\t\t\ttds = row.anCells;\n\t\t\t\n\t\t\tfor ( var j=0, jen=tds.length ; j<jen ; j++ ) {\n\t\t\t\tcellProcess( tds[j] );\n\t\t\t}\n\t\t}\n\t\n\t\treturn {\n\t\t\tdata: d,\n\t\t\tcells: tds\n\t\t};\n\t}\n\t/**\n\t * Create a new TR element (and it's TD children) for a row\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {int} iRow Row to consider\n\t *  @param {node} [nTrIn] TR element to add to the table - optional. If not given,\n\t *    DataTables will create a row automatically\n\t *  @param {array} [anTds] Array of TD|TH elements for the row - must be given\n\t *    if nTr is.\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnCreateTr ( oSettings, iRow, nTrIn, anTds )\n\t{\n\t\tvar\n\t\t\trow = oSettings.aoData[iRow],\n\t\t\trowData = row._aData,\n\t\t\tcells = [],\n\t\t\tnTr, nTd, oCol,\n\t\t\ti, iLen;\n\t\n\t\tif ( row.nTr === null )\n\t\t{\n\t\t\tnTr = nTrIn || document.createElement('tr');\n\t\n\t\t\trow.nTr = nTr;\n\t\t\trow.anCells = cells;\n\t\n\t\t\t/* Use a private property on the node to allow reserve mapping from the node\n\t\t\t * to the aoData array for fast look up\n\t\t\t */\n\t\t\tnTr._DT_RowIndex = iRow;\n\t\n\t\t\t/* Special parameters can be given by the data source to be used on the row */\n\t\t\t_fnRowAttributes( row );\n\t\n\t\t\t/* Process each column */\n\t\t\tfor ( i=0, iLen=oSettings.aoColumns.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\toCol = oSettings.aoColumns[i];\n\t\n\t\t\t\tnTd = nTrIn ? anTds[i] : document.createElement( oCol.sCellType );\n\t\t\t\tcells.push( nTd );\n\t\n\t\t\t\t// Need to create the HTML if new, or if a rendering function is defined\n\t\t\t\tif ( !nTrIn || oCol.mRender || oCol.mData !== i )\n\t\t\t\t{\n\t\t\t\t\tnTd.innerHTML = _fnGetCellData( oSettings, iRow, i, 'display' );\n\t\t\t\t}\n\t\n\t\t\t\t/* Add user defined class */\n\t\t\t\tif ( oCol.sClass )\n\t\t\t\t{\n\t\t\t\t\tnTd.className += ' '+oCol.sClass;\n\t\t\t\t}\n\t\n\t\t\t\t// Visibility - add or remove as required\n\t\t\t\tif ( oCol.bVisible && ! nTrIn )\n\t\t\t\t{\n\t\t\t\t\tnTr.appendChild( nTd );\n\t\t\t\t}\n\t\t\t\telse if ( ! oCol.bVisible && nTrIn )\n\t\t\t\t{\n\t\t\t\t\tnTd.parentNode.removeChild( nTd );\n\t\t\t\t}\n\t\n\t\t\t\tif ( oCol.fnCreatedCell )\n\t\t\t\t{\n\t\t\t\t\toCol.fnCreatedCell.call( oSettings.oInstance,\n\t\t\t\t\t\tnTd, _fnGetCellData( oSettings, iRow, i ), rowData, iRow, i\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t_fnCallbackFire( oSettings, 'aoRowCreatedCallback', null, [nTr, rowData, iRow] );\n\t\t}\n\t\n\t\t// Remove once webkit bug 131819 and Chromium bug 365619 have been resolved\n\t\t// and deployed\n\t\trow.nTr.setAttribute( 'role', 'row' );\n\t}\n\t\n\t\n\t/**\n\t * Add attributes to a row based on the special `DT_*` parameters in a data\n\t * source object.\n\t *  @param {object} DataTables row object for the row to be modified\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnRowAttributes( row )\n\t{\n\t\tvar tr = row.nTr;\n\t\tvar data = row._aData;\n\t\n\t\tif ( tr ) {\n\t\t\tif ( data.DT_RowId ) {\n\t\t\t\ttr.id = data.DT_RowId;\n\t\t\t}\n\t\n\t\t\tif ( data.DT_RowClass ) {\n\t\t\t\t// Remove any classes added by DT_RowClass before\n\t\t\t\tvar a = data.DT_RowClass.split(' ');\n\t\t\t\trow.__rowc = row.__rowc ?\n\t\t\t\t\t_unique( row.__rowc.concat( a ) ) :\n\t\t\t\t\ta;\n\t\n\t\t\t\t$(tr)\n\t\t\t\t\t.removeClass( row.__rowc.join(' ') )\n\t\t\t\t\t.addClass( data.DT_RowClass );\n\t\t\t}\n\t\n\t\t\tif ( data.DT_RowData ) {\n\t\t\t\t$(tr).data( data.DT_RowData );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Create the HTML header for the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnBuildHead( oSettings )\n\t{\n\t\tvar i, ien, cell, row, column;\n\t\tvar thead = oSettings.nTHead;\n\t\tvar tfoot = oSettings.nTFoot;\n\t\tvar createHeader = $('th, td', thead).length === 0;\n\t\tvar classes = oSettings.oClasses;\n\t\tvar columns = oSettings.aoColumns;\n\t\n\t\tif ( createHeader ) {\n\t\t\trow = $('<tr/>').appendTo( thead );\n\t\t}\n\t\n\t\tfor ( i=0, ien=columns.length ; i<ien ; i++ ) {\n\t\t\tcolumn = columns[i];\n\t\t\tcell = $( column.nTh ).addClass( column.sClass );\n\t\n\t\t\tif ( createHeader ) {\n\t\t\t\tcell.appendTo( row );\n\t\t\t}\n\t\n\t\t\t// 1.11 move into sorting\n\t\t\tif ( oSettings.oFeatures.bSort ) {\n\t\t\t\tcell.addClass( column.sSortingClass );\n\t\n\t\t\t\tif ( column.bSortable !== false ) {\n\t\t\t\t\tcell\n\t\t\t\t\t\t.attr( 'tabindex', oSettings.iTabIndex )\n\t\t\t\t\t\t.attr( 'aria-controls', oSettings.sTableId );\n\t\n\t\t\t\t\t_fnSortAttachListener( oSettings, column.nTh, i );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif ( column.sTitle != cell.html() ) {\n\t\t\t\tcell.html( column.sTitle );\n\t\t\t}\n\t\n\t\t\t_fnRenderer( oSettings, 'header' )(\n\t\t\t\toSettings, cell, column, classes\n\t\t\t);\n\t\t}\n\t\n\t\tif ( createHeader ) {\n\t\t\t_fnDetectHeader( oSettings.aoHeader, thead );\n\t\t}\n\t\t\n\t\t/* ARIA role for the rows */\n\t \t$(thead).find('>tr').attr('role', 'row');\n\t\n\t\t/* Deal with the footer - add classes if required */\n\t\t$(thead).find('>tr>th, >tr>td').addClass( classes.sHeaderTH );\n\t\t$(tfoot).find('>tr>th, >tr>td').addClass( classes.sFooterTH );\n\t\n\t\t// Cache the footer cells. Note that we only take the cells from the first\n\t\t// row in the footer. If there is more than one row the user wants to\n\t\t// interact with, they need to use the table().foot() method. Note also this\n\t\t// allows cells to be used for multiple columns using colspan\n\t\tif ( tfoot !== null ) {\n\t\t\tvar cells = oSettings.aoFooter[0];\n\t\n\t\t\tfor ( i=0, ien=cells.length ; i<ien ; i++ ) {\n\t\t\t\tcolumn = columns[i];\n\t\t\t\tcolumn.nTf = cells[i].cell;\n\t\n\t\t\t\tif ( column.sClass ) {\n\t\t\t\t\t$(column.nTf).addClass( column.sClass );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Draw the header (or footer) element based on the column visibility states. The\n\t * methodology here is to use the layout array from _fnDetectHeader, modified for\n\t * the instantaneous column visibility, to construct the new layout. The grid is\n\t * traversed over cell at a time in a rows x columns grid fashion, although each\n\t * cell insert can cover multiple elements in the grid - which is tracks using the\n\t * aApplied array. Cell inserts in the grid will only occur where there isn't\n\t * already a cell in that position.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param array {objects} aoSource Layout array from _fnDetectHeader\n\t *  @param {boolean} [bIncludeHidden=false] If true then include the hidden columns in the calc,\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnDrawHead( oSettings, aoSource, bIncludeHidden )\n\t{\n\t\tvar i, iLen, j, jLen, k, kLen, n, nLocalTr;\n\t\tvar aoLocal = [];\n\t\tvar aApplied = [];\n\t\tvar iColumns = oSettings.aoColumns.length;\n\t\tvar iRowspan, iColspan;\n\t\n\t\tif ( ! aoSource )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\n\t\tif (  bIncludeHidden === undefined )\n\t\t{\n\t\t\tbIncludeHidden = false;\n\t\t}\n\t\n\t\t/* Make a copy of the master layout array, but without the visible columns in it */\n\t\tfor ( i=0, iLen=aoSource.length ; i<iLen ; i++ )\n\t\t{\n\t\t\taoLocal[i] = aoSource[i].slice();\n\t\t\taoLocal[i].nTr = aoSource[i].nTr;\n\t\n\t\t\t/* Remove any columns which are currently hidden */\n\t\t\tfor ( j=iColumns-1 ; j>=0 ; j-- )\n\t\t\t{\n\t\t\t\tif ( !oSettings.aoColumns[j].bVisible && !bIncludeHidden )\n\t\t\t\t{\n\t\t\t\t\taoLocal[i].splice( j, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t/* Prep the applied array - it needs an element for each row */\n\t\t\taApplied.push( [] );\n\t\t}\n\t\n\t\tfor ( i=0, iLen=aoLocal.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnLocalTr = aoLocal[i].nTr;\n\t\n\t\t\t/* All cells are going to be replaced, so empty out the row */\n\t\t\tif ( nLocalTr )\n\t\t\t{\n\t\t\t\twhile( (n = nLocalTr.firstChild) )\n\t\t\t\t{\n\t\t\t\t\tnLocalTr.removeChild( n );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tfor ( j=0, jLen=aoLocal[i].length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\tiRowspan = 1;\n\t\t\t\tiColspan = 1;\n\t\n\t\t\t\t/* Check to see if there is already a cell (row/colspan) covering our target\n\t\t\t\t * insert point. If there is, then there is nothing to do.\n\t\t\t\t */\n\t\t\t\tif ( aApplied[i][j] === undefined )\n\t\t\t\t{\n\t\t\t\t\tnLocalTr.appendChild( aoLocal[i][j].cell );\n\t\t\t\t\taApplied[i][j] = 1;\n\t\n\t\t\t\t\t/* Expand the cell to cover as many rows as needed */\n\t\t\t\t\twhile ( aoLocal[i+iRowspan] !== undefined &&\n\t\t\t\t\t        aoLocal[i][j].cell == aoLocal[i+iRowspan][j].cell )\n\t\t\t\t\t{\n\t\t\t\t\t\taApplied[i+iRowspan][j] = 1;\n\t\t\t\t\t\tiRowspan++;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* Expand the cell to cover as many columns as needed */\n\t\t\t\t\twhile ( aoLocal[i][j+iColspan] !== undefined &&\n\t\t\t\t\t        aoLocal[i][j].cell == aoLocal[i][j+iColspan].cell )\n\t\t\t\t\t{\n\t\t\t\t\t\t/* Must update the applied array over the rows for the columns */\n\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taApplied[i+k][j+iColspan] = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tiColspan++;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* Do the actual expansion in the DOM */\n\t\t\t\t\t$(aoLocal[i][j].cell)\n\t\t\t\t\t\t.attr('rowspan', iRowspan)\n\t\t\t\t\t\t.attr('colspan', iColspan);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Insert the required TR nodes into the table for display\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnDraw( oSettings )\n\t{\n\t\t/* Provide a pre-callback function which can be used to cancel the draw is false is returned */\n\t\tvar aPreDraw = _fnCallbackFire( oSettings, 'aoPreDrawCallback', 'preDraw', [oSettings] );\n\t\tif ( $.inArray( false, aPreDraw ) !== -1 )\n\t\t{\n\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar i, iLen, n;\n\t\tvar anRows = [];\n\t\tvar iRowCount = 0;\n\t\tvar asStripeClasses = oSettings.asStripeClasses;\n\t\tvar iStripes = asStripeClasses.length;\n\t\tvar iOpenRows = oSettings.aoOpenRows.length;\n\t\tvar oLang = oSettings.oLanguage;\n\t\tvar iInitDisplayStart = oSettings.iInitDisplayStart;\n\t\tvar bServerSide = _fnDataSource( oSettings ) == 'ssp';\n\t\tvar aiDisplay = oSettings.aiDisplay;\n\t\n\t\toSettings.bDrawing = true;\n\t\n\t\t/* Check and see if we have an initial draw position from state saving */\n\t\tif ( iInitDisplayStart !== undefined && iInitDisplayStart !== -1 )\n\t\t{\n\t\t\toSettings._iDisplayStart = bServerSide ?\n\t\t\t\tiInitDisplayStart :\n\t\t\t\tiInitDisplayStart >= oSettings.fnRecordsDisplay() ?\n\t\t\t\t\t0 :\n\t\t\t\t\tiInitDisplayStart;\n\t\n\t\t\toSettings.iInitDisplayStart = -1;\n\t\t}\n\t\n\t\tvar iDisplayStart = oSettings._iDisplayStart;\n\t\tvar iDisplayEnd = oSettings.fnDisplayEnd();\n\t\n\t\t/* Server-side processing draw intercept */\n\t\tif ( oSettings.bDeferLoading )\n\t\t{\n\t\t\toSettings.bDeferLoading = false;\n\t\t\toSettings.iDraw++;\n\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t}\n\t\telse if ( !bServerSide )\n\t\t{\n\t\t\toSettings.iDraw++;\n\t\t}\n\t\telse if ( !oSettings.bDestroying && !_fnAjaxUpdate( oSettings ) )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( aiDisplay.length !== 0 )\n\t\t{\n\t\t\tvar iStart = bServerSide ? 0 : iDisplayStart;\n\t\t\tvar iEnd = bServerSide ? oSettings.aoData.length : iDisplayEnd;\n\t\n\t\t\tfor ( var j=iStart ; j<iEnd ; j++ )\n\t\t\t{\n\t\t\t\tvar iDataIndex = aiDisplay[j];\n\t\t\t\tvar aoData = oSettings.aoData[ iDataIndex ];\n\t\t\t\tif ( aoData.nTr === null )\n\t\t\t\t{\n\t\t\t\t\t_fnCreateTr( oSettings, iDataIndex );\n\t\t\t\t}\n\t\n\t\t\t\tvar nRow = aoData.nTr;\n\t\n\t\t\t\t/* Remove the old striping classes and then add the new one */\n\t\t\t\tif ( iStripes !== 0 )\n\t\t\t\t{\n\t\t\t\t\tvar sStripe = asStripeClasses[ iRowCount % iStripes ];\n\t\t\t\t\tif ( aoData._sRowStripe != sStripe )\n\t\t\t\t\t{\n\t\t\t\t\t\t$(nRow).removeClass( aoData._sRowStripe ).addClass( sStripe );\n\t\t\t\t\t\taoData._sRowStripe = sStripe;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\t/* Row callback functions - might want to manipulate the row */\n\t\t\t\t_fnCallbackFire( oSettings, 'aoRowCallback', null,\n\t\t\t\t\t[nRow, aoData._aData, iRowCount, j] );\n\t\n\t\t\t\tanRows.push( nRow );\n\t\t\t\tiRowCount++;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t/* Table is empty - create a row with an empty message in it */\n\t\t\tvar sZero = oLang.sZeroRecords;\n\t\t\tif ( oSettings.iDraw == 1 &&  _fnDataSource( oSettings ) == 'ajax' )\n\t\t\t{\n\t\t\t\tsZero = oLang.sLoadingRecords;\n\t\t\t}\n\t\t\telse if ( oLang.sEmptyTable && oSettings.fnRecordsTotal() === 0 )\n\t\t\t{\n\t\t\t\tsZero = oLang.sEmptyTable;\n\t\t\t}\n\t\n\t\t\tanRows[ 0 ] = $( '<tr/>', { 'class': iStripes ? asStripeClasses[0] : '' } )\n\t\t\t\t.append( $('<td />', {\n\t\t\t\t\t'valign':  'top',\n\t\t\t\t\t'colSpan': _fnVisbleColumns( oSettings ),\n\t\t\t\t\t'class':   oSettings.oClasses.sRowEmpty\n\t\t\t\t} ).html( sZero ) )[0];\n\t\t}\n\t\n\t\t/* Header and footer callbacks */\n\t\t_fnCallbackFire( oSettings, 'aoHeaderCallback', 'header', [ $(oSettings.nTHead).children('tr')[0],\n\t\t\t_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );\n\t\n\t\t_fnCallbackFire( oSettings, 'aoFooterCallback', 'footer', [ $(oSettings.nTFoot).children('tr')[0],\n\t\t\t_fnGetDataMaster( oSettings ), iDisplayStart, iDisplayEnd, aiDisplay ] );\n\t\n\t\tvar body = $(oSettings.nTBody);\n\t\n\t\tbody.children().detach();\n\t\tbody.append( $(anRows) );\n\t\n\t\t/* Call all required callback functions for the end of a draw */\n\t\t_fnCallbackFire( oSettings, 'aoDrawCallback', 'draw', [oSettings] );\n\t\n\t\t/* Draw is complete, sorting and filtering must be as well */\n\t\toSettings.bSorted = false;\n\t\toSettings.bFiltered = false;\n\t\toSettings.bDrawing = false;\n\t}\n\t\n\t\n\t/**\n\t * Redraw the table - taking account of the various features which are enabled\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {boolean} [holdPosition] Keep the current paging position. By default\n\t *    the paging is reset to the first page\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnReDraw( settings, holdPosition )\n\t{\n\t\tvar\n\t\t\tfeatures = settings.oFeatures,\n\t\t\tsort     = features.bSort,\n\t\t\tfilter   = features.bFilter;\n\t\n\t\tif ( sort ) {\n\t\t\t_fnSort( settings );\n\t\t}\n\t\n\t\tif ( filter ) {\n\t\t\t_fnFilterComplete( settings, settings.oPreviousSearch );\n\t\t}\n\t\telse {\n\t\t\t// No filtering, so we want to just use the display master\n\t\t\tsettings.aiDisplay = settings.aiDisplayMaster.slice();\n\t\t}\n\t\n\t\tif ( holdPosition !== true ) {\n\t\t\tsettings._iDisplayStart = 0;\n\t\t}\n\t\n\t\t// Let any modules know about the draw hold position state (used by\n\t\t// scrolling internally)\n\t\tsettings._drawHold = holdPosition;\n\t\n\t\t_fnDraw( settings );\n\t\n\t\tsettings._drawHold = false;\n\t}\n\t\n\t\n\t/**\n\t * Add the options to the page HTML for the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAddOptionsHtml ( oSettings )\n\t{\n\t\tvar classes = oSettings.oClasses;\n\t\tvar table = $(oSettings.nTable);\n\t\tvar holding = $('<div/>').insertBefore( table ); // Holding element for speed\n\t\tvar features = oSettings.oFeatures;\n\t\n\t\t// All DataTables are wrapped in a div\n\t\tvar insert = $('<div/>', {\n\t\t\tid:      oSettings.sTableId+'_wrapper',\n\t\t\t'class': classes.sWrapper + (oSettings.nTFoot ? '' : ' '+classes.sNoFooter)\n\t\t} );\n\t\n\t\toSettings.nHolding = holding[0];\n\t\toSettings.nTableWrapper = insert[0];\n\t\toSettings.nTableReinsertBefore = oSettings.nTable.nextSibling;\n\t\n\t\t/* Loop over the user set positioning and place the elements as needed */\n\t\tvar aDom = oSettings.sDom.split('');\n\t\tvar featureNode, cOption, nNewNode, cNext, sAttr, j;\n\t\tfor ( var i=0 ; i<aDom.length ; i++ )\n\t\t{\n\t\t\tfeatureNode = null;\n\t\t\tcOption = aDom[i];\n\t\n\t\t\tif ( cOption == '<' )\n\t\t\t{\n\t\t\t\t/* New container div */\n\t\t\t\tnNewNode = $('<div/>')[0];\n\t\n\t\t\t\t/* Check to see if we should append an id and/or a class name to the container */\n\t\t\t\tcNext = aDom[i+1];\n\t\t\t\tif ( cNext == \"'\" || cNext == '\"' )\n\t\t\t\t{\n\t\t\t\t\tsAttr = \"\";\n\t\t\t\t\tj = 2;\n\t\t\t\t\twhile ( aDom[i+j] != cNext )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr += aDom[i+j];\n\t\t\t\t\t\tj++;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* Replace jQuery UI constants @todo depreciated */\n\t\t\t\t\tif ( sAttr == \"H\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr = classes.sJUIHeader;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sAttr == \"F\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tsAttr = classes.sJUIFooter;\n\t\t\t\t\t}\n\t\n\t\t\t\t\t/* The attribute can be in the format of \"#id.class\", \"#id\" or \"class\" This logic\n\t\t\t\t\t * breaks the string into parts and applies them as needed\n\t\t\t\t\t */\n\t\t\t\t\tif ( sAttr.indexOf('.') != -1 )\n\t\t\t\t\t{\n\t\t\t\t\t\tvar aSplit = sAttr.split('.');\n\t\t\t\t\t\tnNewNode.id = aSplit[0].substr(1, aSplit[0].length-1);\n\t\t\t\t\t\tnNewNode.className = aSplit[1];\n\t\t\t\t\t}\n\t\t\t\t\telse if ( sAttr.charAt(0) == \"#\" )\n\t\t\t\t\t{\n\t\t\t\t\t\tnNewNode.id = sAttr.substr(1, sAttr.length-1);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnNewNode.className = sAttr;\n\t\t\t\t\t}\n\t\n\t\t\t\t\ti += j; /* Move along the position array */\n\t\t\t\t}\n\t\n\t\t\t\tinsert.append( nNewNode );\n\t\t\t\tinsert = $(nNewNode);\n\t\t\t}\n\t\t\telse if ( cOption == '>' )\n\t\t\t{\n\t\t\t\t/* End container div */\n\t\t\t\tinsert = insert.parent();\n\t\t\t}\n\t\t\t// @todo Move options into their own plugins?\n\t\t\telse if ( cOption == 'l' && features.bPaginate && features.bLengthChange )\n\t\t\t{\n\t\t\t\t/* Length */\n\t\t\t\tfeatureNode = _fnFeatureHtmlLength( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'f' && features.bFilter )\n\t\t\t{\n\t\t\t\t/* Filter */\n\t\t\t\tfeatureNode = _fnFeatureHtmlFilter( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'r' && features.bProcessing )\n\t\t\t{\n\t\t\t\t/* pRocessing */\n\t\t\t\tfeatureNode = _fnFeatureHtmlProcessing( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 't' )\n\t\t\t{\n\t\t\t\t/* Table */\n\t\t\t\tfeatureNode = _fnFeatureHtmlTable( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption ==  'i' && features.bInfo )\n\t\t\t{\n\t\t\t\t/* Info */\n\t\t\t\tfeatureNode = _fnFeatureHtmlInfo( oSettings );\n\t\t\t}\n\t\t\telse if ( cOption == 'p' && features.bPaginate )\n\t\t\t{\n\t\t\t\t/* Pagination */\n\t\t\t\tfeatureNode = _fnFeatureHtmlPaginate( oSettings );\n\t\t\t}\n\t\t\telse if ( DataTable.ext.feature.length !== 0 )\n\t\t\t{\n\t\t\t\t/* Plug-in features */\n\t\t\t\tvar aoFeatures = DataTable.ext.feature;\n\t\t\t\tfor ( var k=0, kLen=aoFeatures.length ; k<kLen ; k++ )\n\t\t\t\t{\n\t\t\t\t\tif ( cOption == aoFeatures[k].cFeature )\n\t\t\t\t\t{\n\t\t\t\t\t\tfeatureNode = aoFeatures[k].fnInit( oSettings );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t/* Add to the 2D features array */\n\t\t\tif ( featureNode )\n\t\t\t{\n\t\t\t\tvar aanFeatures = oSettings.aanFeatures;\n\t\n\t\t\t\tif ( ! aanFeatures[cOption] )\n\t\t\t\t{\n\t\t\t\t\taanFeatures[cOption] = [];\n\t\t\t\t}\n\t\n\t\t\t\taanFeatures[cOption].push( featureNode );\n\t\t\t\tinsert.append( featureNode );\n\t\t\t}\n\t\t}\n\t\n\t\t/* Built our DOM structure - replace the holding div with what we want */\n\t\tholding.replaceWith( insert );\n\t}\n\t\n\t\n\t/**\n\t * Use the DOM source to create up an array of header cells. The idea here is to\n\t * create a layout grid (array) of rows x columns, which contains a reference\n\t * to the cell that that point in the grid (regardless of col/rowspan), such that\n\t * any column / row could be removed and the new grid constructed\n\t *  @param array {object} aLayout Array to store the calculated layout in\n\t *  @param {node} nThead The header/footer element for the table\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnDetectHeader ( aLayout, nThead )\n\t{\n\t\tvar nTrs = $(nThead).children('tr');\n\t\tvar nTr, nCell;\n\t\tvar i, k, l, iLen, jLen, iColShifted, iColumn, iColspan, iRowspan;\n\t\tvar bUnique;\n\t\tvar fnShiftCol = function ( a, i, j ) {\n\t\t\tvar k = a[i];\n\t                while ( k[j] ) {\n\t\t\t\tj++;\n\t\t\t}\n\t\t\treturn j;\n\t\t};\n\t\n\t\taLayout.splice( 0, aLayout.length );\n\t\n\t\t/* We know how many rows there are in the layout - so prep it */\n\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t{\n\t\t\taLayout.push( [] );\n\t\t}\n\t\n\t\t/* Calculate a layout array */\n\t\tfor ( i=0, iLen=nTrs.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tnTr = nTrs[i];\n\t\t\tiColumn = 0;\n\t\n\t\t\t/* For every cell in the row... */\n\t\t\tnCell = nTr.firstChild;\n\t\t\twhile ( nCell ) {\n\t\t\t\tif ( nCell.nodeName.toUpperCase() == \"TD\" ||\n\t\t\t\t     nCell.nodeName.toUpperCase() == \"TH\" )\n\t\t\t\t{\n\t\t\t\t\t/* Get the col and rowspan attributes from the DOM and sanitise them */\n\t\t\t\t\tiColspan = nCell.getAttribute('colspan') * 1;\n\t\t\t\t\tiRowspan = nCell.getAttribute('rowspan') * 1;\n\t\t\t\t\tiColspan = (!iColspan || iColspan===0 || iColspan===1) ? 1 : iColspan;\n\t\t\t\t\tiRowspan = (!iRowspan || iRowspan===0 || iRowspan===1) ? 1 : iRowspan;\n\t\n\t\t\t\t\t/* There might be colspan cells already in this row, so shift our target\n\t\t\t\t\t * accordingly\n\t\t\t\t\t */\n\t\t\t\t\tiColShifted = fnShiftCol( aLayout, i, iColumn );\n\t\n\t\t\t\t\t/* Cache calculation for unique columns */\n\t\t\t\t\tbUnique = iColspan === 1 ? true : false;\n\t\n\t\t\t\t\t/* If there is col / rowspan, copy the information into the layout grid */\n\t\t\t\t\tfor ( l=0 ; l<iColspan ; l++ )\n\t\t\t\t\t{\n\t\t\t\t\t\tfor ( k=0 ; k<iRowspan ; k++ )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\taLayout[i+k][iColShifted+l] = {\n\t\t\t\t\t\t\t\t\"cell\": nCell,\n\t\t\t\t\t\t\t\t\"unique\": bUnique\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\taLayout[i+k].nTr = nTr;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnCell = nCell.nextSibling;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Get an array of unique th elements, one for each column\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {node} nHeader automatically detect the layout from this node - optional\n\t *  @param {array} aLayout thead/tfoot layout from _fnDetectHeader - optional\n\t *  @returns array {node} aReturn list of unique th's\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetUniqueThs ( oSettings, nHeader, aLayout )\n\t{\n\t\tvar aReturn = [];\n\t\tif ( !aLayout )\n\t\t{\n\t\t\taLayout = oSettings.aoHeader;\n\t\t\tif ( nHeader )\n\t\t\t{\n\t\t\t\taLayout = [];\n\t\t\t\t_fnDetectHeader( aLayout, nHeader );\n\t\t\t}\n\t\t}\n\t\n\t\tfor ( var i=0, iLen=aLayout.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tfor ( var j=0, jLen=aLayout[i].length ; j<jLen ; j++ )\n\t\t\t{\n\t\t\t\tif ( aLayout[i][j].unique &&\n\t\t\t\t\t (!aReturn[j] || !oSettings.bSortCellsTop) )\n\t\t\t\t{\n\t\t\t\t\taReturn[j] = aLayout[i][j].cell;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn aReturn;\n\t}\n\t\n\t\n\t\n\t/**\n\t * Create an Ajax call based on the table's settings, taking into account that\n\t * parameters can have multiple forms, and backwards compatibility.\n\t *\n\t * @param {object} oSettings dataTables settings object\n\t * @param {array} data Data to send to the server, required by\n\t *     DataTables - may be augmented by developer callbacks\n\t * @param {function} fn Callback function to run when data is obtained\n\t */\n\tfunction _fnBuildAjax( oSettings, data, fn )\n\t{\n\t\t// Compatibility with 1.9-, allow fnServerData and event to manipulate\n\t\t_fnCallbackFire( oSettings, 'aoServerParams', 'serverParams', [data] );\n\t\n\t\t// Convert to object based for 1.10+ if using the old array scheme which can\n\t\t// come from server-side processing or serverParams\n\t\tif ( data && $.isArray(data) ) {\n\t\t\tvar tmp = {};\n\t\t\tvar rbracket = /(.*?)\\[\\]$/;\n\t\n\t\t\t$.each( data, function (key, val) {\n\t\t\t\tvar match = val.name.match(rbracket);\n\t\n\t\t\t\tif ( match ) {\n\t\t\t\t\t// Support for arrays\n\t\t\t\t\tvar name = match[0];\n\t\n\t\t\t\t\tif ( ! tmp[ name ] ) {\n\t\t\t\t\t\ttmp[ name ] = [];\n\t\t\t\t\t}\n\t\t\t\t\ttmp[ name ].push( val.value );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\ttmp[val.name] = val.value;\n\t\t\t\t}\n\t\t\t} );\n\t\t\tdata = tmp;\n\t\t}\n\t\n\t\tvar ajaxData;\n\t\tvar ajax = oSettings.ajax;\n\t\tvar instance = oSettings.oInstance;\n\t\n\t\tif ( $.isPlainObject( ajax ) && ajax.data )\n\t\t{\n\t\t\tajaxData = ajax.data;\n\t\n\t\t\tvar newData = $.isFunction( ajaxData ) ?\n\t\t\t\tajaxData( data ) :  // fn can manipulate data or return an object\n\t\t\t\tajaxData;           // object or array to merge\n\t\n\t\t\t// If the function returned an object, use that alone\n\t\t\tdata = $.isFunction( ajaxData ) && newData ?\n\t\t\t\tnewData :\n\t\t\t\t$.extend( true, data, newData );\n\t\n\t\t\t// Remove the data property as we've resolved it already and don't want\n\t\t\t// jQuery to do it again (it is restored at the end of the function)\n\t\t\tdelete ajax.data;\n\t\t}\n\t\n\t\tvar baseAjax = {\n\t\t\t\"data\": data,\n\t\t\t\"success\": function (json) {\n\t\t\t\tvar error = json.error || json.sError;\n\t\t\t\tif ( error ) {\n\t\t\t\t\toSettings.oApi._fnLog( oSettings, 0, error );\n\t\t\t\t}\n\t\n\t\t\t\toSettings.json = json;\n\t\t\t\t_fnCallbackFire( oSettings, null, 'xhr', [oSettings, json] );\n\t\t\t\tfn( json );\n\t\t\t},\n\t\t\t\"dataType\": \"json\",\n\t\t\t\"cache\": false,\n\t\t\t\"type\": oSettings.sServerMethod,\n\t\t\t\"error\": function (xhr, error, thrown) {\n\t\t\t\tvar log = oSettings.oApi._fnLog;\n\t\n\t\t\t\tif ( error == \"parsererror\" ) {\n\t\t\t\t\tlog( oSettings, 0, 'Invalid JSON response', 1 );\n\t\t\t\t}\n\t\t\t\telse if ( xhr.readyState === 4 ) {\n\t\t\t\t\tlog( oSettings, 0, 'Ajax error', 7 );\n\t\t\t\t}\n\t\n\t\t\t\t_fnProcessingDisplay( oSettings, false );\n\t\t\t}\n\t\t};\n\t\n\t\t// Store the data submitted for the API\n\t\toSettings.oAjaxData = data;\n\t\n\t\t// Allow plug-ins and external processes to modify the data\n\t\t_fnCallbackFire( oSettings, null, 'preXhr', [oSettings, data] );\n\t\n\t\tif ( oSettings.fnServerData )\n\t\t{\n\t\t\t// DataTables 1.9- compatibility\n\t\t\toSettings.fnServerData.call( instance,\n\t\t\t\toSettings.sAjaxSource,\n\t\t\t\t$.map( data, function (val, key) { // Need to convert back to 1.9 trad format\n\t\t\t\t\treturn { name: key, value: val };\n\t\t\t\t} ),\n\t\t\t\tfn,\n\t\t\t\toSettings\n\t\t\t);\n\t\t}\n\t\telse if ( oSettings.sAjaxSource || typeof ajax === 'string' )\n\t\t{\n\t\t\t// DataTables 1.9- compatibility\n\t\t\toSettings.jqXHR = $.ajax( $.extend( baseAjax, {\n\t\t\t\turl: ajax || oSettings.sAjaxSource\n\t\t\t} ) );\n\t\t}\n\t\telse if ( $.isFunction( ajax ) )\n\t\t{\n\t\t\t// Is a function - let the caller define what needs to be done\n\t\t\toSettings.jqXHR = ajax.call( instance, data, fn, oSettings );\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Object to extend the base settings\n\t\t\toSettings.jqXHR = $.ajax( $.extend( baseAjax, ajax ) );\n\t\n\t\t\t// Restore for next time around\n\t\t\tajax.data = ajaxData;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Update the table using an Ajax call\n\t *  @param {object} settings dataTables settings object\n\t *  @returns {boolean} Block the table drawing or not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAjaxUpdate( settings )\n\t{\n\t\tif ( settings.bAjaxDataGet ) {\n\t\t\tsettings.iDraw++;\n\t\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t\t_fnBuildAjax(\n\t\t\t\tsettings,\n\t\t\t\t_fnAjaxParameters( settings ),\n\t\t\t\tfunction(json) {\n\t\t\t\t\t_fnAjaxUpdateDraw( settings, json );\n\t\t\t\t}\n\t\t\t);\n\t\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\t\n\t\n\t/**\n\t * Build up the parameters in an object needed for a server-side processing\n\t * request. Note that this is basically done twice, is different ways - a modern\n\t * method which is used by default in DataTables 1.10 which uses objects and\n\t * arrays, or the 1.9- method with is name / value pairs. 1.9 method is used if\n\t * the sAjaxSource option is used in the initialisation, or the legacyAjax\n\t * option is set.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns {bool} block the table drawing or not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAjaxParameters( settings )\n\t{\n\t\tvar\n\t\t\tcolumns = settings.aoColumns,\n\t\t\tcolumnCount = columns.length,\n\t\t\tfeatures = settings.oFeatures,\n\t\t\tpreSearch = settings.oPreviousSearch,\n\t\t\tpreColSearch = settings.aoPreSearchCols,\n\t\t\ti, data = [], dataProp, column, columnSearch,\n\t\t\tsort = _fnSortFlatten( settings ),\n\t\t\tdisplayStart = settings._iDisplayStart,\n\t\t\tdisplayLength = features.bPaginate !== false ?\n\t\t\t\tsettings._iDisplayLength :\n\t\t\t\t-1;\n\t\n\t\tvar param = function ( name, value ) {\n\t\t\tdata.push( { 'name': name, 'value': value } );\n\t\t};\n\t\n\t\t// DataTables 1.9- compatible method\n\t\tparam( 'sEcho',          settings.iDraw );\n\t\tparam( 'iColumns',       columnCount );\n\t\tparam( 'sColumns',       _pluck( columns, 'sName' ).join(',') );\n\t\tparam( 'iDisplayStart',  displayStart );\n\t\tparam( 'iDisplayLength', displayLength );\n\t\n\t\t// DataTables 1.10+ method\n\t\tvar d = {\n\t\t\tdraw:    settings.iDraw,\n\t\t\tcolumns: [],\n\t\t\torder:   [],\n\t\t\tstart:   displayStart,\n\t\t\tlength:  displayLength,\n\t\t\tsearch:  {\n\t\t\t\tvalue: preSearch.sSearch,\n\t\t\t\tregex: preSearch.bRegex\n\t\t\t}\n\t\t};\n\t\n\t\tfor ( i=0 ; i<columnCount ; i++ ) {\n\t\t\tcolumn = columns[i];\n\t\t\tcolumnSearch = preColSearch[i];\n\t\t\tdataProp = typeof column.mData==\"function\" ? 'function' : column.mData ;\n\t\n\t\t\td.columns.push( {\n\t\t\t\tdata:       dataProp,\n\t\t\t\tname:       column.sName,\n\t\t\t\tsearchable: column.bSearchable,\n\t\t\t\torderable:  column.bSortable,\n\t\t\t\tsearch:     {\n\t\t\t\t\tvalue: columnSearch.sSearch,\n\t\t\t\t\tregex: columnSearch.bRegex\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\tparam( \"mDataProp_\"+i, dataProp );\n\t\n\t\t\tif ( features.bFilter ) {\n\t\t\t\tparam( 'sSearch_'+i,     columnSearch.sSearch );\n\t\t\t\tparam( 'bRegex_'+i,      columnSearch.bRegex );\n\t\t\t\tparam( 'bSearchable_'+i, column.bSearchable );\n\t\t\t}\n\t\n\t\t\tif ( features.bSort ) {\n\t\t\t\tparam( 'bSortable_'+i, column.bSortable );\n\t\t\t}\n\t\t}\n\t\n\t\tif ( features.bFilter ) {\n\t\t\tparam( 'sSearch', preSearch.sSearch );\n\t\t\tparam( 'bRegex', preSearch.bRegex );\n\t\t}\n\t\n\t\tif ( features.bSort ) {\n\t\t\t$.each( sort, function ( i, val ) {\n\t\t\t\td.order.push( { column: val.col, dir: val.dir } );\n\t\n\t\t\t\tparam( 'iSortCol_'+i, val.col );\n\t\t\t\tparam( 'sSortDir_'+i, val.dir );\n\t\t\t} );\n\t\n\t\t\tparam( 'iSortingCols', sort.length );\n\t\t}\n\t\n\t\t// If the legacy.ajax parameter is null, then we automatically decide which\n\t\t// form to use, based on sAjaxSource\n\t\tvar legacy = DataTable.ext.legacy.ajax;\n\t\tif ( legacy === null ) {\n\t\t\treturn settings.sAjaxSource ? data : d;\n\t\t}\n\t\n\t\t// Otherwise, if legacy has been specified then we use that to decide on the\n\t\t// form\n\t\treturn legacy ? data : d;\n\t}\n\t\n\t\n\t/**\n\t * Data the data from the server (nuking the old) and redraw the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {object} json json data return from the server.\n\t *  @param {string} json.sEcho Tracking flag for DataTables to match requests\n\t *  @param {int} json.iTotalRecords Number of records in the data set, not accounting for filtering\n\t *  @param {int} json.iTotalDisplayRecords Number of records in the data set, accounting for filtering\n\t *  @param {array} json.aaData The data to display on this page\n\t *  @param {string} [json.sColumns] Column ordering (sName, comma separated)\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnAjaxUpdateDraw ( settings, json )\n\t{\n\t\t// v1.10 uses camelCase variables, while 1.9 uses Hungarian notation.\n\t\t// Support both\n\t\tvar compat = function ( old, modern ) {\n\t\t\treturn json[old] !== undefined ? json[old] : json[modern];\n\t\t};\n\t\n\t\tvar draw            = compat( 'sEcho',                'draw' );\n\t\tvar recordsTotal    = compat( 'iTotalRecords',        'recordsTotal' );\n\t\tvar rocordsFiltered = compat( 'iTotalDisplayRecords', 'recordsFiltered' );\n\t\n\t\tif ( draw ) {\n\t\t\t// Protect against out of sequence returns\n\t\t\tif ( draw*1 < settings.iDraw ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsettings.iDraw = draw * 1;\n\t\t}\n\t\n\t\t_fnClearTable( settings );\n\t\tsettings._iRecordsTotal   = parseInt(recordsTotal, 10);\n\t\tsettings._iRecordsDisplay = parseInt(rocordsFiltered, 10);\n\t\n\t\tvar data = _fnAjaxDataSrc( settings, json );\n\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t_fnAddData( settings, data[i] );\n\t\t}\n\t\tsettings.aiDisplay = settings.aiDisplayMaster.slice();\n\t\n\t\tsettings.bAjaxDataGet = false;\n\t\t_fnDraw( settings );\n\t\n\t\tif ( ! settings._bInitComplete ) {\n\t\t\t_fnInitComplete( settings, json );\n\t\t}\n\t\n\t\tsettings.bAjaxDataGet = true;\n\t\t_fnProcessingDisplay( settings, false );\n\t}\n\t\n\t\n\t/**\n\t * Get the data from the JSON data source to use for drawing a table. Using\n\t * `_fnGetObjectDataFn` allows the data to be sourced from a property of the\n\t * source object, or from a processing function.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param  {object} json Data source object / array from the server\n\t *  @return {array} Array of data to use\n\t */\n\tfunction _fnAjaxDataSrc ( oSettings, json )\n\t{\n\t\tvar dataSrc = $.isPlainObject( oSettings.ajax ) && oSettings.ajax.dataSrc !== undefined ?\n\t\t\toSettings.ajax.dataSrc :\n\t\t\toSettings.sAjaxDataProp; // Compatibility with 1.9-.\n\t\n\t\t// Compatibility with 1.9-. In order to read from aaData, check if the\n\t\t// default has been changed, if not, check for aaData\n\t\tif ( dataSrc === 'data' ) {\n\t\t\treturn json.aaData || json[dataSrc];\n\t\t}\n\t\n\t\treturn dataSrc !== \"\" ?\n\t\t\t_fnGetObjectDataFn( dataSrc )( json ) :\n\t\t\tjson;\n\t}\n\t\n\t\n\t/**\n\t * Generate the node required for filtering text\n\t *  @returns {node} Filter control element\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlFilter ( settings )\n\t{\n\t\tvar classes = settings.oClasses;\n\t\tvar tableId = settings.sTableId;\n\t\tvar language = settings.oLanguage;\n\t\tvar previousSearch = settings.oPreviousSearch;\n\t\tvar features = settings.aanFeatures;\n\t\tvar input = '<input type=\"search\" class=\"'+classes.sFilterInput+'\"/>';\n\t\n\t\tvar str = language.sSearch;\n\t\tstr = str.match(/_INPUT_/) ?\n\t\t\tstr.replace('_INPUT_', input) :\n\t\t\tstr+input;\n\t\n\t\tvar filter = $('<div/>', {\n\t\t\t\t'id': ! features.f ? tableId+'_filter' : null,\n\t\t\t\t'class': classes.sFilter\n\t\t\t} )\n\t\t\t.append( $('<label/>' ).append( str ) );\n\t\n\t\tvar searchFn = function() {\n\t\t\t/* Update all other filter input elements for the new display */\n\t\t\tvar n = features.f;\n\t\t\tvar val = !this.value ? \"\" : this.value; // mental IE8 fix :-(\n\t\n\t\t\t/* Now do the filter */\n\t\t\tif ( val != previousSearch.sSearch ) {\n\t\t\t\t_fnFilterComplete( settings, {\n\t\t\t\t\t\"sSearch\": val,\n\t\t\t\t\t\"bRegex\": previousSearch.bRegex,\n\t\t\t\t\t\"bSmart\": previousSearch.bSmart ,\n\t\t\t\t\t\"bCaseInsensitive\": previousSearch.bCaseInsensitive\n\t\t\t\t} );\n\t\n\t\t\t\t// Need to redraw, without resorting\n\t\t\t\tsettings._iDisplayStart = 0;\n\t\t\t\t_fnDraw( settings );\n\t\t\t}\n\t\t};\n\t\tvar jqFilter = $('input', filter)\n\t\t\t.val( previousSearch.sSearch )\n\t\t\t.attr( 'placeholder', language.sSearchPlaceholder )\n\t\t\t.bind(\n\t\t\t\t'keyup.DT search.DT input.DT paste.DT cut.DT',\n\t\t\t\t_fnDataSource( settings ) === 'ssp' ?\n\t\t\t\t\t_fnThrottle( searchFn, 400 ):\n\t\t\t\t\tsearchFn\n\t\t\t)\n\t\t\t.bind( 'keypress.DT', function(e) {\n\t\t\t\t/* Prevent form submission */\n\t\t\t\tif ( e.keyCode == 13 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} )\n\t\t\t.attr('aria-controls', tableId);\n\t\n\t\t// Update the input elements whenever the table is filtered\n\t\t$(settings.nTable).on( 'search.dt.DT', function ( ev, s ) {\n\t\t\tif ( settings === s ) {\n\t\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t\t// inside an iframe or frame...\n\t\t\t\ttry {\n\t\t\t\t\tif ( jqFilter[0] !== document.activeElement ) {\n\t\t\t\t\t\tjqFilter.val( previousSearch.sSearch );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch ( e ) {}\n\t\t\t}\n\t\t} );\n\t\n\t\treturn filter[0];\n\t}\n\t\n\t\n\t/**\n\t * Filter the table using both the global filter and column based filtering\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {object} oSearch search information\n\t *  @param {int} [iForce] force a research of the master array (1) or not (undefined or 0)\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterComplete ( oSettings, oInput, iForce )\n\t{\n\t\tvar oPrevSearch = oSettings.oPreviousSearch;\n\t\tvar aoPrevSearch = oSettings.aoPreSearchCols;\n\t\tvar fnSaveFilter = function ( oFilter ) {\n\t\t\t/* Save the filtering values */\n\t\t\toPrevSearch.sSearch = oFilter.sSearch;\n\t\t\toPrevSearch.bRegex = oFilter.bRegex;\n\t\t\toPrevSearch.bSmart = oFilter.bSmart;\n\t\t\toPrevSearch.bCaseInsensitive = oFilter.bCaseInsensitive;\n\t\t};\n\t\tvar fnRegex = function ( o ) {\n\t\t\t// Backwards compatibility with the bEscapeRegex option\n\t\t\treturn o.bEscapeRegex !== undefined ? !o.bEscapeRegex : o.bRegex;\n\t\t};\n\t\n\t\t// Resolve any column types that are unknown due to addition or invalidation\n\t\t// @todo As per sort - can this be moved into an event handler?\n\t\t_fnColumnTypes( oSettings );\n\t\n\t\t/* In server-side processing all filtering is done by the server, so no point hanging around here */\n\t\tif ( _fnDataSource( oSettings ) != 'ssp' )\n\t\t{\n\t\t\t/* Global filter */\n\t\t\t_fnFilter( oSettings, oInput.sSearch, iForce, fnRegex(oInput), oInput.bSmart, oInput.bCaseInsensitive );\n\t\t\tfnSaveFilter( oInput );\n\t\n\t\t\t/* Now do the individual column filter */\n\t\t\tfor ( var i=0 ; i<aoPrevSearch.length ; i++ )\n\t\t\t{\n\t\t\t\t_fnFilterColumn( oSettings, aoPrevSearch[i].sSearch, i, fnRegex(aoPrevSearch[i]),\n\t\t\t\t\taoPrevSearch[i].bSmart, aoPrevSearch[i].bCaseInsensitive );\n\t\t\t}\n\t\n\t\t\t/* Custom filtering */\n\t\t\t_fnFilterCustom( oSettings );\n\t\t}\n\t\telse\n\t\t{\n\t\t\tfnSaveFilter( oInput );\n\t\t}\n\t\n\t\t/* Tell the draw function we have been filtering */\n\t\toSettings.bFiltered = true;\n\t\t_fnCallbackFire( oSettings, null, 'search', [oSettings] );\n\t}\n\t\n\t\n\t/**\n\t * Apply custom filtering functions\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterCustom( settings )\n\t{\n\t\tvar filters = DataTable.ext.search;\n\t\tvar displayRows = settings.aiDisplay;\n\t\tvar row, rowIdx;\n\t\n\t\tfor ( var i=0, ien=filters.length ; i<ien ; i++ ) {\n\t\t\tvar rows = [];\n\t\n\t\t\t// Loop over each row and see if it should be included\n\t\t\tfor ( var j=0, jen=displayRows.length ; j<jen ; j++ ) {\n\t\t\t\trowIdx = displayRows[ j ];\n\t\t\t\trow = settings.aoData[ rowIdx ];\n\t\n\t\t\t\tif ( filters[i]( settings, row._aFilterData, rowIdx, row._aData, j ) ) {\n\t\t\t\t\trows.push( rowIdx );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// So the array reference doesn't break set the results into the\n\t\t\t// existing array\n\t\t\tdisplayRows.length = 0;\n\t\t\tdisplayRows.push.apply( displayRows, rows );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Filter the table on a per-column basis\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {string} sInput string to filter on\n\t *  @param {int} iColumn column to filter\n\t *  @param {bool} bRegex treat search string as a regular expression or not\n\t *  @param {bool} bSmart use smart filtering or not\n\t *  @param {bool} bCaseInsensitive Do case insenstive matching or not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, caseInsensitive )\n\t{\n\t\tif ( searchStr === '' ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar data;\n\t\tvar display = settings.aiDisplay;\n\t\tvar rpSearch = _fnFilterCreateSearch( searchStr, regex, smart, caseInsensitive );\n\t\n\t\tfor ( var i=display.length-1 ; i>=0 ; i-- ) {\n\t\t\tdata = settings.aoData[ display[i] ]._aFilterData[ colIdx ];\n\t\n\t\t\tif ( ! rpSearch.test( data ) ) {\n\t\t\t\tdisplay.splice( i, 1 );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Filter the data table based on user input and draw the table\n\t *  @param {object} settings dataTables settings object\n\t *  @param {string} input string to filter on\n\t *  @param {int} force optional - force a research of the master array (1) or not (undefined or 0)\n\t *  @param {bool} regex treat as a regular expression or not\n\t *  @param {bool} smart perform smart filtering or not\n\t *  @param {bool} caseInsensitive Do case insenstive matching or not\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFilter( settings, input, force, regex, smart, caseInsensitive )\n\t{\n\t\tvar rpSearch = _fnFilterCreateSearch( input, regex, smart, caseInsensitive );\n\t\tvar prevSearch = settings.oPreviousSearch.sSearch;\n\t\tvar displayMaster = settings.aiDisplayMaster;\n\t\tvar display, invalidated, i;\n\t\n\t\t// Need to take account of custom filtering functions - always filter\n\t\tif ( DataTable.ext.search.length !== 0 ) {\n\t\t\tforce = true;\n\t\t}\n\t\n\t\t// Check if any of the rows were invalidated\n\t\tinvalidated = _fnFilterData( settings );\n\t\n\t\t// If the input is blank - we just want the full data set\n\t\tif ( input.length <= 0 ) {\n\t\t\tsettings.aiDisplay = displayMaster.slice();\n\t\t}\n\t\telse {\n\t\t\t// New search - start from the master array\n\t\t\tif ( invalidated ||\n\t\t\t\t force ||\n\t\t\t\t prevSearch.length > input.length ||\n\t\t\t\t input.indexOf(prevSearch) !== 0 ||\n\t\t\t\t settings.bSorted // On resort, the display master needs to be\n\t\t\t\t                  // re-filtered since indexes will have changed\n\t\t\t) {\n\t\t\t\tsettings.aiDisplay = displayMaster.slice();\n\t\t\t}\n\t\n\t\t\t// Search the display array\n\t\t\tdisplay = settings.aiDisplay;\n\t\n\t\t\tfor ( i=display.length-1 ; i>=0 ; i-- ) {\n\t\t\t\tif ( ! rpSearch.test( settings.aoData[ display[i] ]._sFilterRow ) ) {\n\t\t\t\t\tdisplay.splice( i, 1 );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Build a regular expression object suitable for searching a table\n\t *  @param {string} sSearch string to search for\n\t *  @param {bool} bRegex treat as a regular expression or not\n\t *  @param {bool} bSmart perform smart filtering or not\n\t *  @param {bool} bCaseInsensitive Do case insensitive matching or not\n\t *  @returns {RegExp} constructed object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFilterCreateSearch( search, regex, smart, caseInsensitive )\n\t{\n\t\tsearch = regex ?\n\t\t\tsearch :\n\t\t\t_fnEscapeRegex( search );\n\t\t\n\t\tif ( smart ) {\n\t\t\t/* For smart filtering we want to allow the search to work regardless of\n\t\t\t * word order. We also want double quoted text to be preserved, so word\n\t\t\t * order is important - a la google. So this is what we want to\n\t\t\t * generate:\n\t\t\t * \n\t\t\t * ^(?=.*?\\bone\\b)(?=.*?\\btwo three\\b)(?=.*?\\bfour\\b).*$\n\t\t\t */\n\t\t\tvar a = $.map( search.match( /\"[^\"]+\"|[^ ]+/g ) || '', function ( word ) {\n\t\t\t\treturn word.charAt(0) === '\"' ?\n\t\t\t\t\tword.match( /^\"(.*)\"$/ )[1] :\n\t\t\t\t\tword;\n\t\t\t} );\n\t\n\t\t\tsearch = '^(?=.*?'+a.join( ')(?=.*?' )+').*$';\n\t\t}\n\t\n\t\treturn new RegExp( search, caseInsensitive ? 'i' : '' );\n\t}\n\t\n\t\n\t/**\n\t * scape a string such that it can be used in a regular expression\n\t *  @param {string} sVal string to escape\n\t *  @returns {string} escaped string\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnEscapeRegex ( sVal )\n\t{\n\t\treturn sVal.replace( _re_escape_regex, '\\\\$1' );\n\t}\n\t\n\t\n\t\n\tvar __filter_div = $('<div>')[0];\n\tvar __filter_div_textContent = __filter_div.textContent !== undefined;\n\t\n\t// Update the filtering data for each row if needed (by invalidation or first run)\n\tfunction _fnFilterData ( settings )\n\t{\n\t\tvar columns = settings.aoColumns;\n\t\tvar column;\n\t\tvar i, j, ien, jen, filterData, cellData, row;\n\t\tvar fomatters = DataTable.ext.type.search;\n\t\tvar wasInvalidated = false;\n\t\n\t\tfor ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\trow = settings.aoData[i];\n\t\n\t\t\tif ( ! row._aFilterData ) {\n\t\t\t\tfilterData = [];\n\t\n\t\t\t\tfor ( j=0, jen=columns.length ; j<jen ; j++ ) {\n\t\t\t\t\tcolumn = columns[j];\n\t\n\t\t\t\t\tif ( column.bSearchable ) {\n\t\t\t\t\t\tcellData = _fnGetCellData( settings, i, j, 'filter' );\n\t\n\t\t\t\t\t\tif ( fomatters[ column.sType ] ) {\n\t\t\t\t\t\t\tcellData = fomatters[ column.sType ]( cellData );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t// Search in DataTables 1.10 is string based. In 1.11 this\n\t\t\t\t\t\t// should be altered to also allow strict type checking.\n\t\t\t\t\t\tif ( cellData === null ) {\n\t\t\t\t\t\t\tcellData = '';\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif ( typeof cellData !== 'string' && cellData.toString ) {\n\t\t\t\t\t\t\tcellData = cellData.toString();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tcellData = '';\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// If it looks like there is an HTML entity in the string,\n\t\t\t\t\t// attempt to decode it so sorting works as expected. Note that\n\t\t\t\t\t// we could use a single line of jQuery to do this, but the DOM\n\t\t\t\t\t// method used here is much faster http://jsperf.com/html-decode\n\t\t\t\t\tif ( cellData.indexOf && cellData.indexOf('&') !== -1 ) {\n\t\t\t\t\t\t__filter_div.innerHTML = cellData;\n\t\t\t\t\t\tcellData = __filter_div_textContent ?\n\t\t\t\t\t\t\t__filter_div.textContent :\n\t\t\t\t\t\t\t__filter_div.innerText;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tif ( cellData.replace ) {\n\t\t\t\t\t\tcellData = cellData.replace(/[\\r\\n]/g, '');\n\t\t\t\t\t}\n\t\n\t\t\t\t\tfilterData.push( cellData );\n\t\t\t\t}\n\t\n\t\t\t\trow._aFilterData = filterData;\n\t\t\t\trow._sFilterRow = filterData.join('  ');\n\t\t\t\twasInvalidated = true;\n\t\t\t}\n\t\t}\n\t\n\t\treturn wasInvalidated;\n\t}\n\t\n\t\n\t/**\n\t * Convert from the internal Hungarian notation to camelCase for external\n\t * interaction\n\t *  @param {object} obj Object to convert\n\t *  @returns {object} Inverted object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSearchToCamel ( obj )\n\t{\n\t\treturn {\n\t\t\tsearch:          obj.sSearch,\n\t\t\tsmart:           obj.bSmart,\n\t\t\tregex:           obj.bRegex,\n\t\t\tcaseInsensitive: obj.bCaseInsensitive\n\t\t};\n\t}\n\t\n\t\n\t\n\t/**\n\t * Convert from camelCase notation to the internal Hungarian. We could use the\n\t * Hungarian convert function here, but this is cleaner\n\t *  @param {object} obj Object to convert\n\t *  @returns {object} Inverted object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSearchToHung ( obj )\n\t{\n\t\treturn {\n\t\t\tsSearch:          obj.search,\n\t\t\tbSmart:           obj.smart,\n\t\t\tbRegex:           obj.regex,\n\t\t\tbCaseInsensitive: obj.caseInsensitive\n\t\t};\n\t}\n\t\n\t/**\n\t * Generate the node required for the info display\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns {node} Information element\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlInfo ( settings )\n\t{\n\t\tvar\n\t\t\ttid = settings.sTableId,\n\t\t\tnodes = settings.aanFeatures.i,\n\t\t\tn = $('<div/>', {\n\t\t\t\t'class': settings.oClasses.sInfo,\n\t\t\t\t'id': ! nodes ? tid+'_info' : null\n\t\t\t} );\n\t\n\t\tif ( ! nodes ) {\n\t\t\t// Update display on each draw\n\t\t\tsettings.aoDrawCallback.push( {\n\t\t\t\t\"fn\": _fnUpdateInfo,\n\t\t\t\t\"sName\": \"information\"\n\t\t\t} );\n\t\n\t\t\tn\n\t\t\t\t.attr( 'role', 'status' )\n\t\t\t\t.attr( 'aria-live', 'polite' );\n\t\n\t\t\t// Table is described by our info div\n\t\t\t$(settings.nTable).attr( 'aria-describedby', tid+'_info' );\n\t\t}\n\t\n\t\treturn n[0];\n\t}\n\t\n\t\n\t/**\n\t * Update the information elements in the display\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnUpdateInfo ( settings )\n\t{\n\t\t/* Show information about the table */\n\t\tvar nodes = settings.aanFeatures.i;\n\t\tif ( nodes.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar\n\t\t\tlang  = settings.oLanguage,\n\t\t\tstart = settings._iDisplayStart+1,\n\t\t\tend   = settings.fnDisplayEnd(),\n\t\t\tmax   = settings.fnRecordsTotal(),\n\t\t\ttotal = settings.fnRecordsDisplay(),\n\t\t\tout   = total ?\n\t\t\t\tlang.sInfo :\n\t\t\t\tlang.sInfoEmpty;\n\t\n\t\tif ( total !== max ) {\n\t\t\t/* Record set after filtering */\n\t\t\tout += ' ' + lang.sInfoFiltered;\n\t\t}\n\t\n\t\t// Convert the macros\n\t\tout += lang.sInfoPostFix;\n\t\tout = _fnInfoMacros( settings, out );\n\t\n\t\tvar callback = lang.fnInfoCallback;\n\t\tif ( callback !== null ) {\n\t\t\tout = callback.call( settings.oInstance,\n\t\t\t\tsettings, start, end, max, total, out\n\t\t\t);\n\t\t}\n\t\n\t\t$(nodes).html( out );\n\t}\n\t\n\t\n\tfunction _fnInfoMacros ( settings, str )\n\t{\n\t\t// When infinite scrolling, we are always starting at 1. _iDisplayStart is used only\n\t\t// internally\n\t\tvar\n\t\t\tformatter  = settings.fnFormatNumber,\n\t\t\tstart      = settings._iDisplayStart+1,\n\t\t\tlen        = settings._iDisplayLength,\n\t\t\tvis        = settings.fnRecordsDisplay(),\n\t\t\tall        = len === -1;\n\t\n\t\treturn str.\n\t\t\treplace(/_START_/g, formatter.call( settings, start ) ).\n\t\t\treplace(/_END_/g,   formatter.call( settings, settings.fnDisplayEnd() ) ).\n\t\t\treplace(/_MAX_/g,   formatter.call( settings, settings.fnRecordsTotal() ) ).\n\t\t\treplace(/_TOTAL_/g, formatter.call( settings, vis ) ).\n\t\t\treplace(/_PAGE_/g,  formatter.call( settings, all ? 1 : Math.ceil( start / len ) ) ).\n\t\t\treplace(/_PAGES_/g, formatter.call( settings, all ? 1 : Math.ceil( vis / len ) ) );\n\t}\n\t\n\t\n\t\n\t/**\n\t * Draw the table for the first time, adding all required features\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnInitialise ( settings )\n\t{\n\t\tvar i, iLen, iAjaxStart=settings.iInitDisplayStart;\n\t\tvar columns = settings.aoColumns, column;\n\t\tvar features = settings.oFeatures;\n\t\n\t\t/* Ensure that the table data is fully initialised */\n\t\tif ( ! settings.bInitialised ) {\n\t\t\tsetTimeout( function(){ _fnInitialise( settings ); }, 200 );\n\t\t\treturn;\n\t\t}\n\t\n\t\t/* Show the display HTML options */\n\t\t_fnAddOptionsHtml( settings );\n\t\n\t\t/* Build and draw the header / footer for the table */\n\t\t_fnBuildHead( settings );\n\t\t_fnDrawHead( settings, settings.aoHeader );\n\t\t_fnDrawHead( settings, settings.aoFooter );\n\t\n\t\t/* Okay to show that something is going on now */\n\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t/* Calculate sizes for columns */\n\t\tif ( features.bAutoWidth ) {\n\t\t\t_fnCalculateColumnWidths( settings );\n\t\t}\n\t\n\t\tfor ( i=0, iLen=columns.length ; i<iLen ; i++ ) {\n\t\t\tcolumn = columns[i];\n\t\n\t\t\tif ( column.sWidth ) {\n\t\t\t\tcolumn.nTh.style.width = _fnStringToCss( column.sWidth );\n\t\t\t}\n\t\t}\n\t\n\t\t// If there is default sorting required - let's do it. The sort function\n\t\t// will do the drawing for us. Otherwise we draw the table regardless of the\n\t\t// Ajax source - this allows the table to look initialised for Ajax sourcing\n\t\t// data (show 'loading' message possibly)\n\t\t_fnReDraw( settings );\n\t\n\t\t// Server-side processing init complete is done by _fnAjaxUpdateDraw\n\t\tvar dataSrc = _fnDataSource( settings );\n\t\tif ( dataSrc != 'ssp' ) {\n\t\t\t// if there is an ajax source load the data\n\t\t\tif ( dataSrc == 'ajax' ) {\n\t\t\t\t_fnBuildAjax( settings, [], function(json) {\n\t\t\t\t\tvar aData = _fnAjaxDataSrc( settings, json );\n\t\n\t\t\t\t\t// Got the data - add it to the table\n\t\t\t\t\tfor ( i=0 ; i<aData.length ; i++ ) {\n\t\t\t\t\t\t_fnAddData( settings, aData[i] );\n\t\t\t\t\t}\n\t\n\t\t\t\t\t// Reset the init display for cookie saving. We've already done\n\t\t\t\t\t// a filter, and therefore cleared it before. So we need to make\n\t\t\t\t\t// it appear 'fresh'\n\t\t\t\t\tsettings.iInitDisplayStart = iAjaxStart;\n\t\n\t\t\t\t\t_fnReDraw( settings );\n\t\n\t\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t\t_fnInitComplete( settings, json );\n\t\t\t\t}, settings );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t_fnInitComplete( settings );\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Draw the table for the first time, adding all required features\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {object} [json] JSON from the server that completed the table, if using Ajax source\n\t *    with client-side processing (optional)\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnInitComplete ( settings, json )\n\t{\n\t\tsettings._bInitComplete = true;\n\t\n\t\t// On an Ajax load we now have data and therefore want to apply the column\n\t\t// sizing\n\t\tif ( json ) {\n\t\t\t_fnAdjustColumnSizing( settings );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, 'aoInitComplete', 'init', [settings, json] );\n\t}\n\t\n\t\n\tfunction _fnLengthChange ( settings, val )\n\t{\n\t\tvar len = parseInt( val, 10 );\n\t\tsettings._iDisplayLength = len;\n\t\n\t\t_fnLengthOverflow( settings );\n\t\n\t\t// Fire length change event\n\t\t_fnCallbackFire( settings, null, 'length', [settings, len] );\n\t}\n\t\n\t\n\t/**\n\t * Generate the node required for user display length changing\n\t *  @param {object} settings dataTables settings object\n\t *  @returns {node} Display length feature node\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlLength ( settings )\n\t{\n\t\tvar\n\t\t\tclasses  = settings.oClasses,\n\t\t\ttableId  = settings.sTableId,\n\t\t\tmenu     = settings.aLengthMenu,\n\t\t\td2       = $.isArray( menu[0] ),\n\t\t\tlengths  = d2 ? menu[0] : menu,\n\t\t\tlanguage = d2 ? menu[1] : menu;\n\t\n\t\tvar select = $('<select/>', {\n\t\t\t'name':          tableId+'_length',\n\t\t\t'aria-controls': tableId,\n\t\t\t'class':         classes.sLengthSelect\n\t\t} );\n\t\n\t\tfor ( var i=0, ien=lengths.length ; i<ien ; i++ ) {\n\t\t\tselect[0][ i ] = new Option( language[i], lengths[i] );\n\t\t}\n\t\n\t\tvar div = $('<div><label/></div>').addClass( classes.sLength );\n\t\tif ( ! settings.aanFeatures.l ) {\n\t\t\tdiv[0].id = tableId+'_length';\n\t\t}\n\t\n\t\tdiv.children().append(\n\t\t\tsettings.oLanguage.sLengthMenu.replace( '_MENU_', select[0].outerHTML )\n\t\t);\n\t\n\t\t// Can't use `select` variable as user might provide their own and the\n\t\t// reference is broken by the use of outerHTML\n\t\t$('select', div)\n\t\t\t.val( settings._iDisplayLength )\n\t\t\t.bind( 'change.DT', function(e) {\n\t\t\t\t_fnLengthChange( settings, $(this).val() );\n\t\t\t\t_fnDraw( settings );\n\t\t\t} );\n\t\n\t\t// Update node value whenever anything changes the table's length\n\t\t$(settings.nTable).bind( 'length.dt.DT', function (e, s, len) {\n\t\t\tif ( settings === s ) {\n\t\t\t\t$('select', div).val( len );\n\t\t\t}\n\t\t} );\n\t\n\t\treturn div[0];\n\t}\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Note that most of the paging logic is done in\n\t * DataTable.ext.pager\n\t */\n\t\n\t/**\n\t * Generate the node required for default pagination\n\t *  @param {object} oSettings dataTables settings object\n\t *  @returns {node} Pagination feature node\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlPaginate ( settings )\n\t{\n\t\tvar\n\t\t\ttype   = settings.sPaginationType,\n\t\t\tplugin = DataTable.ext.pager[ type ],\n\t\t\tmodern = typeof plugin === 'function',\n\t\t\tredraw = function( settings ) {\n\t\t\t\t_fnDraw( settings );\n\t\t\t},\n\t\t\tnode = $('<div/>').addClass( settings.oClasses.sPaging + type )[0],\n\t\t\tfeatures = settings.aanFeatures;\n\t\n\t\tif ( ! modern ) {\n\t\t\tplugin.fnInit( settings, node, redraw );\n\t\t}\n\t\n\t\t/* Add a draw callback for the pagination on first instance, to update the paging display */\n\t\tif ( ! features.p )\n\t\t{\n\t\t\tnode.id = settings.sTableId+'_paginate';\n\t\n\t\t\tsettings.aoDrawCallback.push( {\n\t\t\t\t\"fn\": function( settings ) {\n\t\t\t\t\tif ( modern ) {\n\t\t\t\t\t\tvar\n\t\t\t\t\t\t\tstart      = settings._iDisplayStart,\n\t\t\t\t\t\t\tlen        = settings._iDisplayLength,\n\t\t\t\t\t\t\tvisRecords = settings.fnRecordsDisplay(),\n\t\t\t\t\t\t\tall        = len === -1,\n\t\t\t\t\t\t\tpage = all ? 0 : Math.ceil( start / len ),\n\t\t\t\t\t\t\tpages = all ? 1 : Math.ceil( visRecords / len ),\n\t\t\t\t\t\t\tbuttons = plugin(page, pages),\n\t\t\t\t\t\t\ti, ien;\n\t\n\t\t\t\t\t\tfor ( i=0, ien=features.p.length ; i<ien ; i++ ) {\n\t\t\t\t\t\t\t_fnRenderer( settings, 'pageButton' )(\n\t\t\t\t\t\t\t\tsettings, features.p[i], i, buttons, page, pages\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tplugin.fnUpdate( settings, redraw );\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"sName\": \"pagination\"\n\t\t\t} );\n\t\t}\n\t\n\t\treturn node;\n\t}\n\t\n\t\n\t/**\n\t * Alter the display settings to change the page\n\t *  @param {object} settings DataTables settings object\n\t *  @param {string|int} action Paging action to take: \"first\", \"previous\",\n\t *    \"next\" or \"last\" or page number to jump to (integer)\n\t *  @param [bool] redraw Automatically draw the update or not\n\t *  @returns {bool} true page has changed, false - no change\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnPageChange ( settings, action, redraw )\n\t{\n\t\tvar\n\t\t\tstart     = settings._iDisplayStart,\n\t\t\tlen       = settings._iDisplayLength,\n\t\t\trecords   = settings.fnRecordsDisplay();\n\t\n\t\tif ( records === 0 || len === -1 )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t\telse if ( typeof action === \"number\" )\n\t\t{\n\t\t\tstart = action * len;\n\t\n\t\t\tif ( start > records )\n\t\t\t{\n\t\t\t\tstart = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"first\" )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t\telse if ( action == \"previous\" )\n\t\t{\n\t\t\tstart = len >= 0 ?\n\t\t\t\tstart - len :\n\t\t\t\t0;\n\t\n\t\t\tif ( start < 0 )\n\t\t\t{\n\t\t\t  start = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"next\" )\n\t\t{\n\t\t\tif ( start + len < records )\n\t\t\t{\n\t\t\t\tstart += len;\n\t\t\t}\n\t\t}\n\t\telse if ( action == \"last\" )\n\t\t{\n\t\t\tstart = Math.floor( (records-1) / len) * len;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t_fnLog( settings, 0, \"Unknown paging action: \"+action, 5 );\n\t\t}\n\t\n\t\tvar changed = settings._iDisplayStart !== start;\n\t\tsettings._iDisplayStart = start;\n\t\n\t\tif ( changed ) {\n\t\t\t_fnCallbackFire( settings, null, 'page', [settings] );\n\t\n\t\t\tif ( redraw ) {\n\t\t\t\t_fnDraw( settings );\n\t\t\t}\n\t\t}\n\t\n\t\treturn changed;\n\t}\n\t\n\t\n\t\n\t/**\n\t * Generate the node required for the processing node\n\t *  @param {object} settings dataTables settings object\n\t *  @returns {node} Processing element\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlProcessing ( settings )\n\t{\n\t\treturn $('<div/>', {\n\t\t\t\t'id': ! settings.aanFeatures.r ? settings.sTableId+'_processing' : null,\n\t\t\t\t'class': settings.oClasses.sProcessing\n\t\t\t} )\n\t\t\t.html( settings.oLanguage.sProcessing )\n\t\t\t.insertBefore( settings.nTable )[0];\n\t}\n\t\n\t\n\t/**\n\t * Display or hide the processing indicator\n\t *  @param {object} settings dataTables settings object\n\t *  @param {bool} show Show the processing indicator (true) or not (false)\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnProcessingDisplay ( settings, show )\n\t{\n\t\tif ( settings.oFeatures.bProcessing ) {\n\t\t\t$(settings.aanFeatures.r).css( 'display', show ? 'block' : 'none' );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'processing', [settings, show] );\n\t}\n\t\n\t/**\n\t * Add any control elements for the table - specifically scrolling\n\t *  @param {object} settings dataTables settings object\n\t *  @returns {node} Node to add to the DOM\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnFeatureHtmlTable ( settings )\n\t{\n\t\tvar table = $(settings.nTable);\n\t\n\t\t// Add the ARIA grid role to the table\n\t\ttable.attr( 'role', 'grid' );\n\t\n\t\t// Scrolling from here on in\n\t\tvar scroll = settings.oScroll;\n\t\n\t\tif ( scroll.sX === '' && scroll.sY === '' ) {\n\t\t\treturn settings.nTable;\n\t\t}\n\t\n\t\tvar scrollX = scroll.sX;\n\t\tvar scrollY = scroll.sY;\n\t\tvar classes = settings.oClasses;\n\t\tvar caption = table.children('caption');\n\t\tvar captionSide = caption.length ? caption[0]._captionSide : null;\n\t\tvar headerClone = $( table[0].cloneNode(false) );\n\t\tvar footerClone = $( table[0].cloneNode(false) );\n\t\tvar footer = table.children('tfoot');\n\t\tvar _div = '<div/>';\n\t\tvar size = function ( s ) {\n\t\t\treturn !s ? null : _fnStringToCss( s );\n\t\t};\n\t\n\t\t// This is fairly messy, but with x scrolling enabled, if the table has a\n\t\t// width attribute, regardless of any width applied using the column width\n\t\t// options, the browser will shrink or grow the table as needed to fit into\n\t\t// that 100%. That would make the width options useless. So we remove it.\n\t\t// This is okay, under the assumption that width:100% is applied to the\n\t\t// table in CSS (it is in the default stylesheet) which will set the table\n\t\t// width as appropriate (the attribute and css behave differently...)\n\t\tif ( scroll.sX && table.attr('width') === '100%' ) {\n\t\t\ttable.removeAttr('width');\n\t\t}\n\t\n\t\tif ( ! footer.length ) {\n\t\t\tfooter = null;\n\t\t}\n\t\n\t\t/*\n\t\t * The HTML structure that we want to generate in this function is:\n\t\t *  div - scroller\n\t\t *    div - scroll head\n\t\t *      div - scroll head inner\n\t\t *        table - scroll head table\n\t\t *          thead - thead\n\t\t *    div - scroll body\n\t\t *      table - table (master table)\n\t\t *        thead - thead clone for sizing\n\t\t *        tbody - tbody\n\t\t *    div - scroll foot\n\t\t *      div - scroll foot inner\n\t\t *        table - scroll foot table\n\t\t *          tfoot - tfoot\n\t\t */\n\t\tvar scroller = $( _div, { 'class': classes.sScrollWrapper } )\n\t\t\t.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollHead } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tposition: 'relative',\n\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\twidth: scrollX ? size(scrollX) : '100%'\n\t\t\t\t\t} )\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$(_div, { 'class': classes.sScrollHeadInner } )\n\t\t\t\t\t\t\t.css( {\n\t\t\t\t\t\t\t\t'box-sizing': 'content-box',\n\t\t\t\t\t\t\t\twidth: scroll.sXInner || '100%'\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\theaderClone\n\t\t\t\t\t\t\t\t\t.removeAttr('id')\n\t\t\t\t\t\t\t\t\t.css( 'margin-left', 0 )\n\t\t\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\t\t\ttable.children('thead')\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.append( captionSide === 'top' ? caption : null )\n\t\t\t)\n\t\t\t.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollBody } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\toverflow: 'auto',\n\t\t\t\t\t\theight: size( scrollY ),\n\t\t\t\t\t\twidth: size( scrollX )\n\t\t\t\t\t} )\n\t\t\t\t\t.append( table )\n\t\t\t);\n\t\n\t\tif ( footer ) {\n\t\t\tscroller.append(\n\t\t\t\t$(_div, { 'class': classes.sScrollFoot } )\n\t\t\t\t\t.css( {\n\t\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\t\tborder: 0,\n\t\t\t\t\t\twidth: scrollX ? size(scrollX) : '100%'\n\t\t\t\t\t} )\n\t\t\t\t\t.append(\n\t\t\t\t\t\t$(_div, { 'class': classes.sScrollFootInner } )\n\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\tfooterClone\n\t\t\t\t\t\t\t\t\t.removeAttr('id')\n\t\t\t\t\t\t\t\t\t.css( 'margin-left', 0 )\n\t\t\t\t\t\t\t\t\t.append(\n\t\t\t\t\t\t\t\t\t\ttable.children('tfoot')\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t\t.append( captionSide === 'bottom' ? caption : null )\n\t\t\t);\n\t\t}\n\t\n\t\tvar children = scroller.children();\n\t\tvar scrollHead = children[0];\n\t\tvar scrollBody = children[1];\n\t\tvar scrollFoot = footer ? children[2] : null;\n\t\n\t\t// When the body is scrolled, then we also want to scroll the headers\n\t\tif ( scrollX ) {\n\t\t\t$(scrollBody).scroll( function (e) {\n\t\t\t\tvar scrollLeft = this.scrollLeft;\n\t\n\t\t\t\tscrollHead.scrollLeft = scrollLeft;\n\t\n\t\t\t\tif ( footer ) {\n\t\t\t\t\tscrollFoot.scrollLeft = scrollLeft;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\n\t\tsettings.nScrollHead = scrollHead;\n\t\tsettings.nScrollBody = scrollBody;\n\t\tsettings.nScrollFoot = scrollFoot;\n\t\n\t\t// On redraw - align columns\n\t\tsettings.aoDrawCallback.push( {\n\t\t\t\"fn\": _fnScrollDraw,\n\t\t\t\"sName\": \"scrolling\"\n\t\t} );\n\t\n\t\treturn scroller[0];\n\t}\n\t\n\t\n\t\n\t/**\n\t * Update the header, footer and body tables for resizing - i.e. column\n\t * alignment.\n\t *\n\t * Welcome to the most horrible function DataTables. The process that this\n\t * function follows is basically:\n\t *   1. Re-create the table inside the scrolling div\n\t *   2. Take live measurements from the DOM\n\t *   3. Apply the measurements to align the columns\n\t *   4. Clean up\n\t *\n\t *  @param {object} settings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnScrollDraw ( settings )\n\t{\n\t\t// Given that this is such a monster function, a lot of variables are use\n\t\t// to try and keep the minimised size as small as possible\n\t\tvar\n\t\t\tscroll         = settings.oScroll,\n\t\t\tscrollX        = scroll.sX,\n\t\t\tscrollXInner   = scroll.sXInner,\n\t\t\tscrollY        = scroll.sY,\n\t\t\tbarWidth       = scroll.iBarWidth,\n\t\t\tdivHeader      = $(settings.nScrollHead),\n\t\t\tdivHeaderStyle = divHeader[0].style,\n\t\t\tdivHeaderInner = divHeader.children('div'),\n\t\t\tdivHeaderInnerStyle = divHeaderInner[0].style,\n\t\t\tdivHeaderTable = divHeaderInner.children('table'),\n\t\t\tdivBodyEl      = settings.nScrollBody,\n\t\t\tdivBody        = $(divBodyEl),\n\t\t\tdivBodyStyle   = divBodyEl.style,\n\t\t\tdivFooter      = $(settings.nScrollFoot),\n\t\t\tdivFooterInner = divFooter.children('div'),\n\t\t\tdivFooterTable = divFooterInner.children('table'),\n\t\t\theader         = $(settings.nTHead),\n\t\t\ttable          = $(settings.nTable),\n\t\t\ttableEl        = table[0],\n\t\t\ttableStyle     = tableEl.style,\n\t\t\tfooter         = settings.nTFoot ? $(settings.nTFoot) : null,\n\t\t\tbrowser        = settings.oBrowser,\n\t\t\tie67           = browser.bScrollOversize,\n\t\t\theaderTrgEls, footerTrgEls,\n\t\t\theaderSrcEls, footerSrcEls,\n\t\t\theaderCopy, footerCopy,\n\t\t\theaderWidths=[], footerWidths=[],\n\t\t\theaderContent=[],\n\t\t\tidx, correction, sanityWidth,\n\t\t\tzeroOut = function(nSizer) {\n\t\t\t\tvar style = nSizer.style;\n\t\t\t\tstyle.paddingTop = \"0\";\n\t\t\t\tstyle.paddingBottom = \"0\";\n\t\t\t\tstyle.borderTopWidth = \"0\";\n\t\t\t\tstyle.borderBottomWidth = \"0\";\n\t\t\t\tstyle.height = 0;\n\t\t\t};\n\t\n\t\t/*\n\t\t * 1. Re-create the table inside the scrolling div\n\t\t */\n\t\n\t\t// Remove the old minimised thead and tfoot elements in the inner table\n\t\ttable.children('thead, tfoot').remove();\n\t\n\t\t// Clone the current header and footer elements and then place it into the inner table\n\t\theaderCopy = header.clone().prependTo( table );\n\t\theaderTrgEls = header.find('tr'); // original header is in its own table\n\t\theaderSrcEls = headerCopy.find('tr');\n\t\theaderCopy.find('th, td').removeAttr('tabindex');\n\t\n\t\tif ( footer ) {\n\t\t\tfooterCopy = footer.clone().prependTo( table );\n\t\t\tfooterTrgEls = footer.find('tr'); // the original tfoot is in its own table and must be sized\n\t\t\tfooterSrcEls = footerCopy.find('tr');\n\t\t}\n\t\n\t\n\t\t/*\n\t\t * 2. Take live measurements from the DOM - do not alter the DOM itself!\n\t\t */\n\t\n\t\t// Remove old sizing and apply the calculated column widths\n\t\t// Get the unique column headers in the newly created (cloned) header. We want to apply the\n\t\t// calculated sizes to this header\n\t\tif ( ! scrollX )\n\t\t{\n\t\t\tdivBodyStyle.width = '100%';\n\t\t\tdivHeader[0].style.width = '100%';\n\t\t}\n\t\n\t\t$.each( _fnGetUniqueThs( settings, headerCopy ), function ( i, el ) {\n\t\t\tidx = _fnVisibleToColumnIndex( settings, i );\n\t\t\tel.style.width = settings.aoColumns[idx].sWidth;\n\t\t} );\n\t\n\t\tif ( footer ) {\n\t\t\t_fnApplyToChildren( function(n) {\n\t\t\t\tn.style.width = \"\";\n\t\t\t}, footerSrcEls );\n\t\t}\n\t\n\t\t// If scroll collapse is enabled, when we put the headers back into the body for sizing, we\n\t\t// will end up forcing the scrollbar to appear, making our measurements wrong for when we\n\t\t// then hide it (end of this function), so add the header height to the body scroller.\n\t\tif ( scroll.bCollapse && scrollY !== \"\" ) {\n\t\t\tdivBodyStyle.height = (divBody[0].offsetHeight + header[0].offsetHeight)+\"px\";\n\t\t}\n\t\n\t\t// Size the table as a whole\n\t\tsanityWidth = table.outerWidth();\n\t\tif ( scrollX === \"\" ) {\n\t\t\t// No x scrolling\n\t\t\ttableStyle.width = \"100%\";\n\t\n\t\t\t// IE7 will make the width of the table when 100% include the scrollbar\n\t\t\t// - which is shouldn't. When there is a scrollbar we need to take this\n\t\t\t// into account.\n\t\t\tif ( ie67 && (table.find('tbody').height() > divBodyEl.offsetHeight ||\n\t\t\t\tdivBody.css('overflow-y') == \"scroll\")\n\t\t\t) {\n\t\t\t\ttableStyle.width = _fnStringToCss( table.outerWidth() - barWidth);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// x scrolling\n\t\t\tif ( scrollXInner !== \"\" ) {\n\t\t\t\t// x scroll inner has been given - use it\n\t\t\t\ttableStyle.width = _fnStringToCss(scrollXInner);\n\t\t\t}\n\t\t\telse if ( sanityWidth == divBody.width() && divBody.height() < table.height() ) {\n\t\t\t\t// There is y-scrolling - try to take account of the y scroll bar\n\t\t\t\ttableStyle.width = _fnStringToCss( sanityWidth-barWidth );\n\t\t\t\tif ( table.outerWidth() > sanityWidth-barWidth ) {\n\t\t\t\t\t// Not possible to take account of it\n\t\t\t\t\ttableStyle.width = _fnStringToCss( sanityWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// When all else fails\n\t\t\t\ttableStyle.width = _fnStringToCss( sanityWidth );\n\t\t\t}\n\t\t}\n\t\n\t\t// Recalculate the sanity width - now that we've applied the required width,\n\t\t// before it was a temporary variable. This is required because the column\n\t\t// width calculation is done before this table DOM is created.\n\t\tsanityWidth = table.outerWidth();\n\t\n\t\t// Hidden header should have zero height, so remove padding and borders. Then\n\t\t// set the width based on the real headers\n\t\n\t\t// Apply all styles in one pass\n\t\t_fnApplyToChildren( zeroOut, headerSrcEls );\n\t\n\t\t// Read all widths in next pass\n\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\theaderContent.push( nSizer.innerHTML );\n\t\t\theaderWidths.push( _fnStringToCss( $(nSizer).css('width') ) );\n\t\t}, headerSrcEls );\n\t\n\t\t// Apply all widths in final pass\n\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\tnToSize.style.width = headerWidths[i];\n\t\t}, headerTrgEls );\n\t\n\t\t$(headerSrcEls).height(0);\n\t\n\t\t/* Same again with the footer if we have one */\n\t\tif ( footer )\n\t\t{\n\t\t\t_fnApplyToChildren( zeroOut, footerSrcEls );\n\t\n\t\t\t_fnApplyToChildren( function(nSizer) {\n\t\t\t\tfooterWidths.push( _fnStringToCss( $(nSizer).css('width') ) );\n\t\t\t}, footerSrcEls );\n\t\n\t\t\t_fnApplyToChildren( function(nToSize, i) {\n\t\t\t\tnToSize.style.width = footerWidths[i];\n\t\t\t}, footerTrgEls );\n\t\n\t\t\t$(footerSrcEls).height(0);\n\t\t}\n\t\n\t\n\t\t/*\n\t\t * 3. Apply the measurements\n\t\t */\n\t\n\t\t// \"Hide\" the header and footer that we used for the sizing. We need to keep\n\t\t// the content of the cell so that the width applied to the header and body\n\t\t// both match, but we want to hide it completely. We want to also fix their\n\t\t// width to what they currently are\n\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\tnSizer.innerHTML = '<div class=\"dataTables_sizing\" style=\"height:0;overflow:hidden;\">'+headerContent[i]+'</div>';\n\t\t\tnSizer.style.width = headerWidths[i];\n\t\t}, headerSrcEls );\n\t\n\t\tif ( footer )\n\t\t{\n\t\t\t_fnApplyToChildren( function(nSizer, i) {\n\t\t\t\tnSizer.innerHTML = \"\";\n\t\t\t\tnSizer.style.width = footerWidths[i];\n\t\t\t}, footerSrcEls );\n\t\t}\n\t\n\t\t// Sanity check that the table is of a sensible width. If not then we are going to get\n\t\t// misalignment - try to prevent this by not allowing the table to shrink below its min width\n\t\tif ( table.outerWidth() < sanityWidth )\n\t\t{\n\t\t\t// The min width depends upon if we have a vertical scrollbar visible or not */\n\t\t\tcorrection = ((divBodyEl.scrollHeight > divBodyEl.offsetHeight ||\n\t\t\t\tdivBody.css('overflow-y') == \"scroll\")) ?\n\t\t\t\t\tsanityWidth+barWidth :\n\t\t\t\t\tsanityWidth;\n\t\n\t\t\t// IE6/7 are a law unto themselves...\n\t\t\tif ( ie67 && (divBodyEl.scrollHeight >\n\t\t\t\tdivBodyEl.offsetHeight || divBody.css('overflow-y') == \"scroll\")\n\t\t\t) {\n\t\t\t\ttableStyle.width = _fnStringToCss( correction-barWidth );\n\t\t\t}\n\t\n\t\t\t// And give the user a warning that we've stopped the table getting too small\n\t\t\tif ( scrollX === \"\" || scrollXInner !== \"\" ) {\n\t\t\t\t_fnLog( settings, 1, 'Possible column misalignment', 6 );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tcorrection = '100%';\n\t\t}\n\t\n\t\t// Apply to the container elements\n\t\tdivBodyStyle.width = _fnStringToCss( correction );\n\t\tdivHeaderStyle.width = _fnStringToCss( correction );\n\t\n\t\tif ( footer ) {\n\t\t\tsettings.nScrollFoot.style.width = _fnStringToCss( correction );\n\t\t}\n\t\n\t\n\t\t/*\n\t\t * 4. Clean up\n\t\t */\n\t\tif ( ! scrollY ) {\n\t\t\t/* IE7< puts a vertical scrollbar in place (when it shouldn't be) due to subtracting\n\t\t\t * the scrollbar height from the visible display, rather than adding it on. We need to\n\t\t\t * set the height in order to sort this. Don't want to do it in any other browsers.\n\t\t\t */\n\t\t\tif ( ie67 ) {\n\t\t\t\tdivBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+barWidth );\n\t\t\t}\n\t\t}\n\t\n\t\tif ( scrollY && scroll.bCollapse ) {\n\t\t\tdivBodyStyle.height = _fnStringToCss( scrollY );\n\t\n\t\t\tvar iExtra = (scrollX && tableEl.offsetWidth > divBodyEl.offsetWidth) ?\n\t\t\t\tbarWidth :\n\t\t\t\t0;\n\t\n\t\t\tif ( tableEl.offsetHeight < divBodyEl.offsetHeight ) {\n\t\t\t\tdivBodyStyle.height = _fnStringToCss( tableEl.offsetHeight+iExtra );\n\t\t\t}\n\t\t}\n\t\n\t\t/* Finally set the width's of the header and footer tables */\n\t\tvar iOuterWidth = table.outerWidth();\n\t\tdivHeaderTable[0].style.width = _fnStringToCss( iOuterWidth );\n\t\tdivHeaderInnerStyle.width = _fnStringToCss( iOuterWidth );\n\t\n\t\t// Figure out if there are scrollbar present - if so then we need a the header and footer to\n\t\t// provide a bit more space to allow \"overflow\" scrolling (i.e. past the scrollbar)\n\t\tvar bScrolling = table.height() > divBodyEl.clientHeight || divBody.css('overflow-y') == \"scroll\";\n\t\tvar padding = 'padding' + (browser.bScrollbarLeft ? 'Left' : 'Right' );\n\t\tdivHeaderInnerStyle[ padding ] = bScrolling ? barWidth+\"px\" : \"0px\";\n\t\n\t\tif ( footer ) {\n\t\t\tdivFooterTable[0].style.width = _fnStringToCss( iOuterWidth );\n\t\t\tdivFooterInner[0].style.width = _fnStringToCss( iOuterWidth );\n\t\t\tdivFooterInner[0].style[padding] = bScrolling ? barWidth+\"px\" : \"0px\";\n\t\t}\n\t\n\t\t/* Adjust the position of the header in case we loose the y-scrollbar */\n\t\tdivBody.scroll();\n\t\n\t\t// If sorting or filtering has occurred, jump the scrolling back to the top\n\t\t// only if we aren't holding the position\n\t\tif ( (settings.bSorted || settings.bFiltered) && ! settings._drawHold ) {\n\t\t\tdivBodyEl.scrollTop = 0;\n\t\t}\n\t}\n\t\n\t\n\t\n\t/**\n\t * Apply a given function to the display child nodes of an element array (typically\n\t * TD children of TR rows\n\t *  @param {function} fn Method to apply to the objects\n\t *  @param array {nodes} an1 List of elements to look through for display children\n\t *  @param array {nodes} an2 Another list (identical structure to the first) - optional\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnApplyToChildren( fn, an1, an2 )\n\t{\n\t\tvar index=0, i=0, iLen=an1.length;\n\t\tvar nNode1, nNode2;\n\t\n\t\twhile ( i < iLen ) {\n\t\t\tnNode1 = an1[i].firstChild;\n\t\t\tnNode2 = an2 ? an2[i].firstChild : null;\n\t\n\t\t\twhile ( nNode1 ) {\n\t\t\t\tif ( nNode1.nodeType === 1 ) {\n\t\t\t\t\tif ( an2 ) {\n\t\t\t\t\t\tfn( nNode1, nNode2, index );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tfn( nNode1, index );\n\t\t\t\t\t}\n\t\n\t\t\t\t\tindex++;\n\t\t\t\t}\n\t\n\t\t\t\tnNode1 = nNode1.nextSibling;\n\t\t\t\tnNode2 = an2 ? nNode2.nextSibling : null;\n\t\t\t}\n\t\n\t\t\ti++;\n\t\t}\n\t}\n\t\n\t\n\t\n\tvar __re_html_remove = /<.*?>/g;\n\t\n\t\n\t/**\n\t * Calculate the width of columns for the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnCalculateColumnWidths ( oSettings )\n\t{\n\t\tvar\n\t\t\ttable = oSettings.nTable,\n\t\t\tcolumns = oSettings.aoColumns,\n\t\t\tscroll = oSettings.oScroll,\n\t\t\tscrollY = scroll.sY,\n\t\t\tscrollX = scroll.sX,\n\t\t\tscrollXInner = scroll.sXInner,\n\t\t\tcolumnCount = columns.length,\n\t\t\tvisibleColumns = _fnGetColumns( oSettings, 'bVisible' ),\n\t\t\theaderCells = $('th', oSettings.nTHead),\n\t\t\ttableWidthAttr = table.getAttribute('width'),\n\t\t\ttableContainer = table.parentNode,\n\t\t\tuserInputs = false,\n\t\t\ti, column, columnIdx, width, outerWidth;\n\t\n\t\t/* Convert any user input sizes into pixel sizes */\n\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\tcolumn = columns[ visibleColumns[i] ];\n\t\n\t\t\tif ( column.sWidth !== null ) {\n\t\t\t\tcolumn.sWidth = _fnConvertToWidth( column.sWidthOrig, tableContainer );\n\t\n\t\t\t\tuserInputs = true;\n\t\t\t}\n\t\t}\n\t\n\t\t/* If the number of columns in the DOM equals the number that we have to\n\t\t * process in DataTables, then we can use the offsets that are created by\n\t\t * the web- browser. No custom sizes can be set in order for this to happen,\n\t\t * nor scrolling used\n\t\t */\n\t\tif ( ! userInputs && ! scrollX && ! scrollY &&\n\t\t    columnCount == _fnVisbleColumns( oSettings ) &&\n\t\t\tcolumnCount == headerCells.length\n\t\t) {\n\t\t\tfor ( i=0 ; i<columnCount ; i++ ) {\n\t\t\t\tcolumns[i].sWidth = _fnStringToCss( headerCells.eq(i).width() );\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// Otherwise construct a single row table with the widest node in the\n\t\t\t// data, assign any user defined widths, then insert it into the DOM and\n\t\t\t// allow the browser to do all the hard work of calculating table widths\n\t\t\tvar tmpTable = $(table).clone() // don't use cloneNode - IE8 will remove events on the main table\n\t\t\t\t.empty()\n\t\t\t\t.css( 'visibility', 'hidden' )\n\t\t\t\t.removeAttr( 'id' )\n\t\t\t\t.append( $(oSettings.nTHead).clone( false ) )\n\t\t\t\t.append( $(oSettings.nTFoot).clone( false ) )\n\t\t\t\t.append( $('<tbody><tr/></tbody>') );\n\t\n\t\t\t// Remove any assigned widths from the footer (from scrolling)\n\t\t\ttmpTable.find('tfoot th, tfoot td').css('width', '');\n\t\n\t\t\tvar tr = tmpTable.find( 'tbody tr' );\n\t\n\t\t\t// Apply custom sizing to the cloned header\n\t\t\theaderCells = _fnGetUniqueThs( oSettings, tmpTable.find('thead')[0] );\n\t\n\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\tcolumn = columns[ visibleColumns[i] ];\n\t\n\t\t\t\theaderCells[i].style.width = column.sWidthOrig !== null && column.sWidthOrig !== '' ?\n\t\t\t\t\t_fnStringToCss( column.sWidthOrig ) :\n\t\t\t\t\t'';\n\t\t\t}\n\t\n\t\t\t// Find the widest cell for each column and put it into the table\n\t\t\tif ( oSettings.aoData.length ) {\n\t\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\t\tcolumnIdx = visibleColumns[i];\n\t\t\t\t\tcolumn = columns[ columnIdx ];\n\t\n\t\t\t\t\t$( _fnGetWidestNode( oSettings, columnIdx ) )\n\t\t\t\t\t\t.clone( false )\n\t\t\t\t\t\t.append( column.sContentPadding )\n\t\t\t\t\t\t.appendTo( tr );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Table has been built, attach to the document so we can work with it\n\t\t\ttmpTable.appendTo( tableContainer );\n\t\n\t\t\t// When scrolling (X or Y) we want to set the width of the table as \n\t\t\t// appropriate. However, when not scrolling leave the table width as it\n\t\t\t// is. This results in slightly different, but I think correct behaviour\n\t\t\tif ( scrollX && scrollXInner ) {\n\t\t\t\ttmpTable.width( scrollXInner );\n\t\t\t}\n\t\t\telse if ( scrollX ) {\n\t\t\t\ttmpTable.css( 'width', 'auto' );\n\t\n\t\t\t\tif ( tmpTable.width() < tableContainer.offsetWidth ) {\n\t\t\t\t\ttmpTable.width( tableContainer.offsetWidth );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( scrollY ) {\n\t\t\t\ttmpTable.width( tableContainer.offsetWidth );\n\t\t\t}\n\t\t\telse if ( tableWidthAttr ) {\n\t\t\t\ttmpTable.width( tableWidthAttr );\n\t\t\t}\n\t\n\t\t\t// Take into account the y scrollbar\n\t\t\t_fnScrollingWidthAdjust( oSettings, tmpTable[0] );\n\t\n\t\t\t// Browsers need a bit of a hand when a width is assigned to any columns\n\t\t\t// when x-scrolling as they tend to collapse the table to the min-width,\n\t\t\t// even if we sent the column widths. So we need to keep track of what\n\t\t\t// the table width should be by summing the user given values, and the\n\t\t\t// automatic values\n\t\t\tif ( scrollX )\n\t\t\t{\n\t\t\t\tvar total = 0;\n\t\n\t\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\t\tcolumn = columns[ visibleColumns[i] ];\n\t\t\t\t\touterWidth = $(headerCells[i]).outerWidth();\n\t\n\t\t\t\t\ttotal += column.sWidthOrig === null ?\n\t\t\t\t\t\touterWidth :\n\t\t\t\t\t\tparseInt( column.sWidth, 10 ) + outerWidth - $(headerCells[i]).width();\n\t\t\t\t}\n\t\n\t\t\t\ttmpTable.width( _fnStringToCss( total ) );\n\t\t\t\ttable.style.width = _fnStringToCss( total );\n\t\t\t}\n\t\n\t\t\t// Get the width of each column in the constructed table\n\t\t\tfor ( i=0 ; i<visibleColumns.length ; i++ ) {\n\t\t\t\tcolumn = columns[ visibleColumns[i] ];\n\t\t\t\twidth = $(headerCells[i]).width();\n\t\n\t\t\t\tif ( width ) {\n\t\t\t\t\tcolumn.sWidth = _fnStringToCss( width );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\ttable.style.width = _fnStringToCss( tmpTable.css('width') );\n\t\n\t\t\t// Finished with the table - ditch it\n\t\t\ttmpTable.remove();\n\t\t}\n\t\n\t\t// If there is a width attr, we want to attach an event listener which\n\t\t// allows the table sizing to automatically adjust when the window is\n\t\t// resized. Use the width attr rather than CSS, since we can't know if the\n\t\t// CSS is a relative value or absolute - DOM read is always px.\n\t\tif ( tableWidthAttr ) {\n\t\t\ttable.style.width = _fnStringToCss( tableWidthAttr );\n\t\t}\n\t\n\t\tif ( (tableWidthAttr || scrollX) && ! oSettings._reszEvt ) {\n\t\t\t$(window).bind('resize.DT-'+oSettings.sInstance, _fnThrottle( function () {\n\t\t\t\t_fnAdjustColumnSizing( oSettings );\n\t\t\t} ) );\n\t\n\t\t\toSettings._reszEvt = true;\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Throttle the calls to a function. Arguments and context are maintained for\n\t * the throttled function\n\t *  @param {function} fn Function to be called\n\t *  @param {int} [freq=200] call frequency in mS\n\t *  @returns {function} wrapped function\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnThrottle( fn, freq ) {\n\t\tvar\n\t\t\tfrequency = freq || 200,\n\t\t\tlast,\n\t\t\ttimer;\n\t\n\t\treturn function () {\n\t\t\tvar\n\t\t\t\tthat = this,\n\t\t\t\tnow  = +new Date(),\n\t\t\t\targs = arguments;\n\t\n\t\t\tif ( last && now < last + frequency ) {\n\t\t\t\tclearTimeout( timer );\n\t\n\t\t\t\ttimer = setTimeout( function () {\n\t\t\t\t\tlast = undefined;\n\t\t\t\t\tfn.apply( that, args );\n\t\t\t\t}, frequency );\n\t\t\t}\n\t\t\telse if ( last ) {\n\t\t\t\tlast = now;\n\t\t\t\tfn.apply( that, args );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlast = now;\n\t\t\t}\n\t\t};\n\t}\n\t\n\t\n\t/**\n\t * Convert a CSS unit width to pixels (e.g. 2em)\n\t *  @param {string} width width to be converted\n\t *  @param {node} parent parent to get the with for (required for relative widths) - optional\n\t *  @returns {int} width in pixels\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnConvertToWidth ( width, parent )\n\t{\n\t\tif ( ! width ) {\n\t\t\treturn 0;\n\t\t}\n\t\n\t\tvar n = $('<div/>')\n\t\t\t.css( 'width', _fnStringToCss( width ) )\n\t\t\t.appendTo( parent || document.body );\n\t\n\t\tvar val = n[0].offsetWidth;\n\t\tn.remove();\n\t\n\t\treturn val;\n\t}\n\t\n\t\n\t/**\n\t * Adjust a table's width to take account of vertical scroll bar\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {node} n table node\n\t *  @memberof DataTable#oApi\n\t */\n\t\n\tfunction _fnScrollingWidthAdjust ( settings, n )\n\t{\n\t\tvar scroll = settings.oScroll;\n\t\n\t\tif ( scroll.sX || scroll.sY ) {\n\t\t\t// When y-scrolling only, we want to remove the width of the scroll bar\n\t\t\t// so the table + scroll bar will fit into the area available, otherwise\n\t\t\t// we fix the table at its current size with no adjustment\n\t\t\tvar correction = ! scroll.sX ? scroll.iBarWidth : 0;\n\t\t\tn.style.width = _fnStringToCss( $(n).outerWidth() - correction );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Get the widest node\n\t *  @param {object} settings dataTables settings object\n\t *  @param {int} colIdx column of interest\n\t *  @returns {node} widest table node\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetWidestNode( settings, colIdx )\n\t{\n\t\tvar idx = _fnGetMaxLenString( settings, colIdx );\n\t\tif ( idx < 0 ) {\n\t\t\treturn null;\n\t\t}\n\t\n\t\tvar data = settings.aoData[ idx ];\n\t\treturn ! data.nTr ? // Might not have been created when deferred rendering\n\t\t\t$('<td/>').html( _fnGetCellData( settings, idx, colIdx, 'display' ) )[0] :\n\t\t\tdata.anCells[ colIdx ];\n\t}\n\t\n\t\n\t/**\n\t * Get the maximum strlen for each data column\n\t *  @param {object} settings dataTables settings object\n\t *  @param {int} colIdx column of interest\n\t *  @returns {string} max string length for each column\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnGetMaxLenString( settings, colIdx )\n\t{\n\t\tvar s, max=-1, maxIdx = -1;\n\t\n\t\tfor ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\ts = _fnGetCellData( settings, i, colIdx, 'display' )+'';\n\t\t\ts = s.replace( __re_html_remove, '' );\n\t\n\t\t\tif ( s.length > max ) {\n\t\t\t\tmax = s.length;\n\t\t\t\tmaxIdx = i;\n\t\t\t}\n\t\t}\n\t\n\t\treturn maxIdx;\n\t}\n\t\n\t\n\t/**\n\t * Append a CSS unit (only if required) to a string\n\t *  @param {string} value to css-ify\n\t *  @returns {string} value with css unit\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnStringToCss( s )\n\t{\n\t\tif ( s === null ) {\n\t\t\treturn '0px';\n\t\t}\n\t\n\t\tif ( typeof s == 'number' ) {\n\t\t\treturn s < 0 ?\n\t\t\t\t'0px' :\n\t\t\t\ts+'px';\n\t\t}\n\t\n\t\t// Check it has a unit character already\n\t\treturn s.match(/\\d$/) ?\n\t\t\ts+'px' :\n\t\t\ts;\n\t}\n\t\n\t\n\t/**\n\t * Get the width of a scroll bar in this browser being used\n\t *  @returns {int} width in pixels\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnScrollBarWidth ()\n\t{\n\t\t// On first run a static variable is set, since this is only needed once.\n\t\t// Subsequent runs will just use the previously calculated value\n\t\tif ( ! DataTable.__scrollbarWidth ) {\n\t\t\tvar inner = $('<p/>').css( {\n\t\t\t\twidth: '100%',\n\t\t\t\theight: 200,\n\t\t\t\tpadding: 0\n\t\t\t} )[0];\n\t\n\t\t\tvar outer = $('<div/>')\n\t\t\t\t.css( {\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\ttop: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t\twidth: 200,\n\t\t\t\t\theight: 150,\n\t\t\t\t\tpadding: 0,\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t\tvisibility: 'hidden'\n\t\t\t\t} )\n\t\t\t\t.append( inner )\n\t\t\t\t.appendTo( 'body' );\n\t\n\t\t\tvar w1 = inner.offsetWidth;\n\t\t\touter.css( 'overflow', 'scroll' );\n\t\t\tvar w2 = inner.offsetWidth;\n\t\n\t\t\tif ( w1 === w2 ) {\n\t\t\t\tw2 = outer[0].clientWidth;\n\t\t\t}\n\t\n\t\t\touter.remove();\n\t\n\t\t\tDataTable.__scrollbarWidth = w1 - w2;\n\t\t}\n\t\n\t\treturn DataTable.__scrollbarWidth;\n\t}\n\t\n\t\n\t\n\tfunction _fnSortFlatten ( settings )\n\t{\n\t\tvar\n\t\t\ti, iLen, k, kLen,\n\t\t\taSort = [],\n\t\t\taiOrig = [],\n\t\t\taoColumns = settings.aoColumns,\n\t\t\taDataSort, iCol, sType, srcCol,\n\t\t\tfixed = settings.aaSortingFixed,\n\t\t\tfixedObj = $.isPlainObject( fixed ),\n\t\t\tnestedSort = [],\n\t\t\tadd = function ( a ) {\n\t\t\t\tif ( a.length && ! $.isArray( a[0] ) ) {\n\t\t\t\t\t// 1D array\n\t\t\t\t\tnestedSort.push( a );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// 2D array\n\t\t\t\t\tnestedSort.push.apply( nestedSort, a );\n\t\t\t\t}\n\t\t\t};\n\t\n\t\t// Build the sort array, with pre-fix and post-fix options if they have been\n\t\t// specified\n\t\tif ( $.isArray( fixed ) ) {\n\t\t\tadd( fixed );\n\t\t}\n\t\n\t\tif ( fixedObj && fixed.pre ) {\n\t\t\tadd( fixed.pre );\n\t\t}\n\t\n\t\tadd( settings.aaSorting );\n\t\n\t\tif (fixedObj && fixed.post ) {\n\t\t\tadd( fixed.post );\n\t\t}\n\t\n\t\tfor ( i=0 ; i<nestedSort.length ; i++ )\n\t\t{\n\t\t\tsrcCol = nestedSort[i][0];\n\t\t\taDataSort = aoColumns[ srcCol ].aDataSort;\n\t\n\t\t\tfor ( k=0, kLen=aDataSort.length ; k<kLen ; k++ )\n\t\t\t{\n\t\t\t\tiCol = aDataSort[k];\n\t\t\t\tsType = aoColumns[ iCol ].sType || 'string';\n\t\n\t\t\t\taSort.push( {\n\t\t\t\t\tsrc:       srcCol,\n\t\t\t\t\tcol:       iCol,\n\t\t\t\t\tdir:       nestedSort[i][1],\n\t\t\t\t\tindex:     nestedSort[i][2],\n\t\t\t\t\ttype:      sType,\n\t\t\t\t\tformatter: DataTable.ext.type.order[ sType+\"-pre\" ]\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\n\t\treturn aSort;\n\t}\n\t\n\t/**\n\t * Change the order of the table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t *  @todo This really needs split up!\n\t */\n\tfunction _fnSort ( oSettings )\n\t{\n\t\tvar\n\t\t\ti, ien, iLen, j, jLen, k, kLen,\n\t\t\tsDataType, nTh,\n\t\t\taiOrig = [],\n\t\t\toExtSort = DataTable.ext.type.order,\n\t\t\taoData = oSettings.aoData,\n\t\t\taoColumns = oSettings.aoColumns,\n\t\t\taDataSort, data, iCol, sType, oSort,\n\t\t\tformatters = 0,\n\t\t\tsortCol,\n\t\t\tdisplayMaster = oSettings.aiDisplayMaster,\n\t\t\taSort;\n\t\n\t\t// Resolve any column types that are unknown due to addition or invalidation\n\t\t// @todo Can this be moved into a 'data-ready' handler which is called when\n\t\t//   data is going to be used in the table?\n\t\t_fnColumnTypes( oSettings );\n\t\n\t\taSort = _fnSortFlatten( oSettings );\n\t\n\t\tfor ( i=0, ien=aSort.length ; i<ien ; i++ ) {\n\t\t\tsortCol = aSort[i];\n\t\n\t\t\t// Track if we can use the fast sort algorithm\n\t\t\tif ( sortCol.formatter ) {\n\t\t\t\tformatters++;\n\t\t\t}\n\t\n\t\t\t// Load the data needed for the sort, for each cell\n\t\t\t_fnSortData( oSettings, sortCol.col );\n\t\t}\n\t\n\t\t/* No sorting required if server-side or no sorting array */\n\t\tif ( _fnDataSource( oSettings ) != 'ssp' && aSort.length !== 0 )\n\t\t{\n\t\t\t// Create a value - key array of the current row positions such that we can use their\n\t\t\t// current position during the sort, if values match, in order to perform stable sorting\n\t\t\tfor ( i=0, iLen=displayMaster.length ; i<iLen ; i++ ) {\n\t\t\t\taiOrig[ displayMaster[i] ] = i;\n\t\t\t}\n\t\n\t\t\t/* Do the sort - here we want multi-column sorting based on a given data source (column)\n\t\t\t * and sorting function (from oSort) in a certain direction. It's reasonably complex to\n\t\t\t * follow on it's own, but this is what we want (example two column sorting):\n\t\t\t *  fnLocalSorting = function(a,b){\n\t\t\t *    var iTest;\n\t\t\t *    iTest = oSort['string-asc']('data11', 'data12');\n\t\t\t *      if (iTest !== 0)\n\t\t\t *        return iTest;\n\t\t\t *    iTest = oSort['numeric-desc']('data21', 'data22');\n\t\t\t *    if (iTest !== 0)\n\t\t\t *      return iTest;\n\t\t\t *    return oSort['numeric-asc']( aiOrig[a], aiOrig[b] );\n\t\t\t *  }\n\t\t\t * Basically we have a test for each sorting column, if the data in that column is equal,\n\t\t\t * test the next column. If all columns match, then we use a numeric sort on the row\n\t\t\t * positions in the original data array to provide a stable sort.\n\t\t\t *\n\t\t\t * Note - I know it seems excessive to have two sorting methods, but the first is around\n\t\t\t * 15% faster, so the second is only maintained for backwards compatibility with sorting\n\t\t\t * methods which do not have a pre-sort formatting function.\n\t\t\t */\n\t\t\tif ( formatters === aSort.length ) {\n\t\t\t\t// All sort types have formatting functions\n\t\t\t\tdisplayMaster.sort( function ( a, b ) {\n\t\t\t\t\tvar\n\t\t\t\t\t\tx, y, k, test, sort,\n\t\t\t\t\t\tlen=aSort.length,\n\t\t\t\t\t\tdataA = aoData[a]._aSortData,\n\t\t\t\t\t\tdataB = aoData[b]._aSortData;\n\t\n\t\t\t\t\tfor ( k=0 ; k<len ; k++ ) {\n\t\t\t\t\t\tsort = aSort[k];\n\t\n\t\t\t\t\t\tx = dataA[ sort.col ];\n\t\t\t\t\t\ty = dataB[ sort.col ];\n\t\n\t\t\t\t\t\ttest = x<y ? -1 : x>y ? 1 : 0;\n\t\t\t\t\t\tif ( test !== 0 ) {\n\t\t\t\t\t\t\treturn sort.dir === 'asc' ? test : -test;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tx = aiOrig[a];\n\t\t\t\t\ty = aiOrig[b];\n\t\t\t\t\treturn x<y ? -1 : x>y ? 1 : 0;\n\t\t\t\t} );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Depreciated - remove in 1.11 (providing a plug-in option)\n\t\t\t\t// Not all sort types have formatting methods, so we have to call their sorting\n\t\t\t\t// methods.\n\t\t\t\tdisplayMaster.sort( function ( a, b ) {\n\t\t\t\t\tvar\n\t\t\t\t\t\tx, y, k, l, test, sort, fn,\n\t\t\t\t\t\tlen=aSort.length,\n\t\t\t\t\t\tdataA = aoData[a]._aSortData,\n\t\t\t\t\t\tdataB = aoData[b]._aSortData;\n\t\n\t\t\t\t\tfor ( k=0 ; k<len ; k++ ) {\n\t\t\t\t\t\tsort = aSort[k];\n\t\n\t\t\t\t\t\tx = dataA[ sort.col ];\n\t\t\t\t\t\ty = dataB[ sort.col ];\n\t\n\t\t\t\t\t\tfn = oExtSort[ sort.type+\"-\"+sort.dir ] || oExtSort[ \"string-\"+sort.dir ];\n\t\t\t\t\t\ttest = fn( x, y );\n\t\t\t\t\t\tif ( test !== 0 ) {\n\t\t\t\t\t\t\treturn test;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\n\t\t\t\t\tx = aiOrig[a];\n\t\t\t\t\ty = aiOrig[b];\n\t\t\t\t\treturn x<y ? -1 : x>y ? 1 : 0;\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t\n\t\t/* Tell the draw function that we have sorted the data */\n\t\toSettings.bSorted = true;\n\t}\n\t\n\t\n\tfunction _fnSortAria ( settings )\n\t{\n\t\tvar label;\n\t\tvar nextSort;\n\t\tvar columns = settings.aoColumns;\n\t\tvar aSort = _fnSortFlatten( settings );\n\t\tvar oAria = settings.oLanguage.oAria;\n\t\n\t\t// ARIA attributes - need to loop all columns, to update all (removing old\n\t\t// attributes as needed)\n\t\tfor ( var i=0, iLen=columns.length ; i<iLen ; i++ )\n\t\t{\n\t\t\tvar col = columns[i];\n\t\t\tvar asSorting = col.asSorting;\n\t\t\tvar sTitle = col.sTitle.replace( /<.*?>/g, \"\" );\n\t\t\tvar th = col.nTh;\n\t\n\t\t\t// IE7 is throwing an error when setting these properties with jQuery's\n\t\t\t// attr() and removeAttr() methods...\n\t\t\tth.removeAttribute('aria-sort');\n\t\n\t\t\t/* In ARIA only the first sorting column can be marked as sorting - no multi-sort option */\n\t\t\tif ( col.bSortable ) {\n\t\t\t\tif ( aSort.length > 0 && aSort[0].col == i ) {\n\t\t\t\t\tth.setAttribute('aria-sort', aSort[0].dir==\"asc\" ? \"ascending\" : \"descending\" );\n\t\t\t\t\tnextSort = asSorting[ aSort[0].index+1 ] || asSorting[0];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnextSort = asSorting[0];\n\t\t\t\t}\n\t\n\t\t\t\tlabel = sTitle + ( nextSort === \"asc\" ?\n\t\t\t\t\toAria.sSortAscending :\n\t\t\t\t\toAria.sSortDescending\n\t\t\t\t);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlabel = sTitle;\n\t\t\t}\n\t\n\t\t\tth.setAttribute('aria-label', label);\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Function to run on user sort request\n\t *  @param {object} settings dataTables settings object\n\t *  @param {node} attachTo node to attach the handler to\n\t *  @param {int} colIdx column sorting index\n\t *  @param {boolean} [append=false] Append the requested sort to the existing\n\t *    sort if true (i.e. multi-column sort)\n\t *  @param {function} [callback] callback function\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSortListener ( settings, colIdx, append, callback )\n\t{\n\t\tvar col = settings.aoColumns[ colIdx ];\n\t\tvar sorting = settings.aaSorting;\n\t\tvar asSorting = col.asSorting;\n\t\tvar nextSortIdx;\n\t\tvar next = function ( a ) {\n\t\t\tvar idx = a._idx;\n\t\t\tif ( idx === undefined ) {\n\t\t\t\tidx = $.inArray( a[1], asSorting );\n\t\t\t}\n\t\n\t\t\treturn idx+1 >= asSorting.length ? 0 : idx+1;\n\t\t};\n\t\n\t\t// Convert to 2D array if needed\n\t\tif ( typeof sorting[0] === 'number' ) {\n\t\t\tsorting = settings.aaSorting = [ sorting ];\n\t\t}\n\t\n\t\t// If appending the sort then we are multi-column sorting\n\t\tif ( append && settings.oFeatures.bSortMulti ) {\n\t\t\t// Are we already doing some kind of sort on this column?\n\t\t\tvar sortIdx = $.inArray( colIdx, _pluck(sorting, '0') );\n\t\n\t\t\tif ( sortIdx !== -1 ) {\n\t\t\t\t// Yes, modify the sort\n\t\t\t\tnextSortIdx = next( sorting[sortIdx] );\n\t\n\t\t\t\tsorting[sortIdx][1] = asSorting[ nextSortIdx ];\n\t\t\t\tsorting[sortIdx]._idx = nextSortIdx;\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// No sort on this column yet\n\t\t\t\tsorting.push( [ colIdx, asSorting[0], 0 ] );\n\t\t\t\tsorting[sorting.length-1]._idx = 0;\n\t\t\t}\n\t\t}\n\t\telse if ( sorting.length && sorting[0][0] == colIdx ) {\n\t\t\t// Single column - already sorting on this column, modify the sort\n\t\t\tnextSortIdx = next( sorting[0] );\n\t\n\t\t\tsorting.length = 1;\n\t\t\tsorting[0][1] = asSorting[ nextSortIdx ];\n\t\t\tsorting[0]._idx = nextSortIdx;\n\t\t}\n\t\telse {\n\t\t\t// Single column - sort only on this column\n\t\t\tsorting.length = 0;\n\t\t\tsorting.push( [ colIdx, asSorting[0] ] );\n\t\t\tsorting[0]._idx = 0;\n\t\t}\n\t\n\t\t// Run the sort by calling a full redraw\n\t\t_fnReDraw( settings );\n\t\n\t\t// callback used for async user interaction\n\t\tif ( typeof callback == 'function' ) {\n\t\t\tcallback( settings );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Attach a sort handler (click) to a node\n\t *  @param {object} settings dataTables settings object\n\t *  @param {node} attachTo node to attach the handler to\n\t *  @param {int} colIdx column sorting index\n\t *  @param {function} [callback] callback function\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSortAttachListener ( settings, attachTo, colIdx, callback )\n\t{\n\t\tvar col = settings.aoColumns[ colIdx ];\n\t\n\t\t_fnBindAction( attachTo, {}, function (e) {\n\t\t\t/* If the column is not sortable - don't to anything */\n\t\t\tif ( col.bSortable === false ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t// If processing is enabled use a timeout to allow the processing\n\t\t\t// display to be shown - otherwise to it synchronously\n\t\t\tif ( settings.oFeatures.bProcessing ) {\n\t\t\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t\t\tsetTimeout( function() {\n\t\t\t\t\t_fnSortListener( settings, colIdx, e.shiftKey, callback );\n\t\n\t\t\t\t\t// In server-side processing, the draw callback will remove the\n\t\t\t\t\t// processing display\n\t\t\t\t\tif ( _fnDataSource( settings ) !== 'ssp' ) {\n\t\t\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t\t\t}\n\t\t\t\t}, 0 );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_fnSortListener( settings, colIdx, e.shiftKey, callback );\n\t\t\t}\n\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Set the sorting classes on table's body, Note: it is safe to call this function\n\t * when bSort and bSortClasses are false\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSortingClasses( settings )\n\t{\n\t\tvar oldSort = settings.aLastSort;\n\t\tvar sortClass = settings.oClasses.sSortColumn;\n\t\tvar sort = _fnSortFlatten( settings );\n\t\tvar features = settings.oFeatures;\n\t\tvar i, ien, colIdx;\n\t\n\t\tif ( features.bSort && features.bSortClasses ) {\n\t\t\t// Remove old sorting classes\n\t\t\tfor ( i=0, ien=oldSort.length ; i<ien ; i++ ) {\n\t\t\t\tcolIdx = oldSort[i].src;\n\t\n\t\t\t\t// Remove column sorting\n\t\t\t\t$( _pluck( settings.aoData, 'anCells', colIdx ) )\n\t\t\t\t\t.removeClass( sortClass + (i<2 ? i+1 : 3) );\n\t\t\t}\n\t\n\t\t\t// Add new column sorting\n\t\t\tfor ( i=0, ien=sort.length ; i<ien ; i++ ) {\n\t\t\t\tcolIdx = sort[i].src;\n\t\n\t\t\t\t$( _pluck( settings.aoData, 'anCells', colIdx ) )\n\t\t\t\t\t.addClass( sortClass + (i<2 ? i+1 : 3) );\n\t\t\t}\n\t\t}\n\t\n\t\tsettings.aLastSort = sort;\n\t}\n\t\n\t\n\t// Get the data to sort a column, be it from cache, fresh (populating the\n\t// cache), or from a sort formatter\n\tfunction _fnSortData( settings, idx )\n\t{\n\t\t// Custom sorting function - provided by the sort data type\n\t\tvar column = settings.aoColumns[ idx ];\n\t\tvar customSort = DataTable.ext.order[ column.sSortDataType ];\n\t\tvar customData;\n\t\n\t\tif ( customSort ) {\n\t\t\tcustomData = customSort.call( settings.oInstance, settings, idx,\n\t\t\t\t_fnColumnIndexToVisible( settings, idx )\n\t\t\t);\n\t\t}\n\t\n\t\t// Use / populate cache\n\t\tvar row, cellData;\n\t\tvar formatter = DataTable.ext.type.order[ column.sType+\"-pre\" ];\n\t\n\t\tfor ( var i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\trow = settings.aoData[i];\n\t\n\t\t\tif ( ! row._aSortData ) {\n\t\t\t\trow._aSortData = [];\n\t\t\t}\n\t\n\t\t\tif ( ! row._aSortData[idx] || customSort ) {\n\t\t\t\tcellData = customSort ?\n\t\t\t\t\tcustomData[i] : // If there was a custom sort function, use data from there\n\t\t\t\t\t_fnGetCellData( settings, i, idx, 'sort' );\n\t\n\t\t\t\trow._aSortData[ idx ] = formatter ?\n\t\t\t\t\tformatter( cellData ) :\n\t\t\t\t\tcellData;\n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n\t\n\t/**\n\t * Save the state of a table\n\t *  @param {object} oSettings dataTables settings object\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSaveState ( settings )\n\t{\n\t\tif ( !settings.oFeatures.bStateSave || settings.bDestroying )\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\n\t\t/* Store the interesting variables */\n\t\tvar state = {\n\t\t\ttime:    +new Date(),\n\t\t\tstart:   settings._iDisplayStart,\n\t\t\tlength:  settings._iDisplayLength,\n\t\t\torder:   $.extend( true, [], settings.aaSorting ),\n\t\t\tsearch:  _fnSearchToCamel( settings.oPreviousSearch ),\n\t\t\tcolumns: $.map( settings.aoColumns, function ( col, i ) {\n\t\t\t\treturn {\n\t\t\t\t\tvisible: col.bVisible,\n\t\t\t\t\tsearch: _fnSearchToCamel( settings.aoPreSearchCols[i] )\n\t\t\t\t};\n\t\t\t} )\n\t\t};\n\t\n\t\t_fnCallbackFire( settings, \"aoStateSaveParams\", 'stateSaveParams', [settings, state] );\n\t\n\t\tsettings.oSavedState = state;\n\t\tsettings.fnStateSaveCallback.call( settings.oInstance, settings, state );\n\t}\n\t\n\t\n\t/**\n\t * Attempt to load a saved table state\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {object} oInit DataTables init object so we can override settings\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnLoadState ( settings, oInit )\n\t{\n\t\tvar i, ien;\n\t\tvar columns = settings.aoColumns;\n\t\n\t\tif ( ! settings.oFeatures.bStateSave ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar state = settings.fnStateLoadCallback.call( settings.oInstance, settings );\n\t\tif ( ! state || ! state.time ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\t/* Allow custom and plug-in manipulation functions to alter the saved data set and\n\t\t * cancelling of loading by returning false\n\t\t */\n\t\tvar abStateLoad = _fnCallbackFire( settings, 'aoStateLoadParams', 'stateLoadParams', [settings, state] );\n\t\tif ( $.inArray( false, abStateLoad ) !== -1 ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\t/* Reject old data */\n\t\tvar duration = settings.iStateDuration;\n\t\tif ( duration > 0 && state.time < +new Date() - (duration*1000) ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\t// Number of columns have changed - all bets are off, no restore of settings\n\t\tif ( columns.length !== state.columns.length ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\t// Store the saved state so it might be accessed at any time\n\t\tsettings.oLoadedState = $.extend( true, {}, state );\n\t\n\t\t// Restore key features - todo - for 1.11 this needs to be done by\n\t\t// subscribed events\n\t\tsettings._iDisplayStart    = state.start;\n\t\tsettings.iInitDisplayStart = state.start;\n\t\tsettings._iDisplayLength   = state.length;\n\t\tsettings.aaSorting = [];\n\t\n\t\t// Order\n\t\t$.each( state.order, function ( i, col ) {\n\t\t\tsettings.aaSorting.push( col[0] >= columns.length ?\n\t\t\t\t[ 0, col[1] ] :\n\t\t\t\tcol\n\t\t\t);\n\t\t} );\n\t\n\t\t// Search\n\t\t$.extend( settings.oPreviousSearch, _fnSearchToHung( state.search ) );\n\t\n\t\t// Columns\n\t\tfor ( i=0, ien=state.columns.length ; i<ien ; i++ ) {\n\t\t\tvar col = state.columns[i];\n\t\n\t\t\t// Visibility\n\t\t\tcolumns[i].bVisible = col.visible;\n\t\n\t\t\t// Search\n\t\t\t$.extend( settings.aoPreSearchCols[i], _fnSearchToHung( col.search ) );\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, 'aoStateLoaded', 'stateLoaded', [settings, state] );\n\t}\n\t\n\t\n\t/**\n\t * Return the settings object for a particular table\n\t *  @param {node} table table we are using as a dataTable\n\t *  @returns {object} Settings object - or null if not found\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnSettingsFromNode ( table )\n\t{\n\t\tvar settings = DataTable.settings;\n\t\tvar idx = $.inArray( table, _pluck( settings, 'nTable' ) );\n\t\n\t\treturn idx !== -1 ?\n\t\t\tsettings[ idx ] :\n\t\t\tnull;\n\t}\n\t\n\t\n\t/**\n\t * Log an error message\n\t *  @param {object} settings dataTables settings object\n\t *  @param {int} level log error messages, or display them to the user\n\t *  @param {string} msg error message\n\t *  @param {int} tn Technical note id to get more information about the error.\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnLog( settings, level, msg, tn )\n\t{\n\t\tmsg = 'DataTables warning: '+\n\t\t\t(settings!==null ? 'table id='+settings.sTableId+' - ' : '')+msg;\n\t\n\t\tif ( tn ) {\n\t\t\tmsg += '. For more information about this error, please see '+\n\t\t\t'http://datatables.net/tn/'+tn;\n\t\t}\n\t\n\t\tif ( ! level  ) {\n\t\t\t// Backwards compatibility pre 1.10\n\t\t\tvar ext = DataTable.ext;\n\t\t\tvar type = ext.sErrMode || ext.errMode;\n\t\n\t\t\tif ( type == 'alert' ) {\n\t\t\t\talert( msg );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(msg);\n\t\t\t}\n\t\t}\n\t\telse if ( window.console && console.log ) {\n\t\t\tconsole.log( msg );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * See if a property is defined on one object, if so assign it to the other object\n\t *  @param {object} ret target object\n\t *  @param {object} src source object\n\t *  @param {string} name property\n\t *  @param {string} [mappedName] name to map too - optional, name used if not given\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnMap( ret, src, name, mappedName )\n\t{\n\t\tif ( $.isArray( name ) ) {\n\t\t\t$.each( name, function (i, val) {\n\t\t\t\tif ( $.isArray( val ) ) {\n\t\t\t\t\t_fnMap( ret, src, val[0], val[1] );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t_fnMap( ret, src, val );\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( mappedName === undefined ) {\n\t\t\tmappedName = name;\n\t\t}\n\t\n\t\tif ( src[name] !== undefined ) {\n\t\t\tret[mappedName] = src[name];\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Extend objects - very similar to jQuery.extend, but deep copy objects, and\n\t * shallow copy arrays. The reason we need to do this, is that we don't want to\n\t * deep copy array init values (such as aaSorting) since the dev wouldn't be\n\t * able to override them, but we do want to deep copy arrays.\n\t *  @param {object} out Object to extend\n\t *  @param {object} extender Object from which the properties will be applied to\n\t *      out\n\t *  @param {boolean} breakRefs If true, then arrays will be sliced to take an\n\t *      independent copy with the exception of the `data` or `aaData` parameters\n\t *      if they are present. This is so you can pass in a collection to\n\t *      DataTables and have that used as your data source without breaking the\n\t *      references\n\t *  @returns {object} out Reference, just for convenience - out === the return.\n\t *  @memberof DataTable#oApi\n\t *  @todo This doesn't take account of arrays inside the deep copied objects.\n\t */\n\tfunction _fnExtend( out, extender, breakRefs )\n\t{\n\t\tvar val;\n\t\n\t\tfor ( var prop in extender ) {\n\t\t\tif ( extender.hasOwnProperty(prop) ) {\n\t\t\t\tval = extender[prop];\n\t\n\t\t\t\tif ( $.isPlainObject( val ) ) {\n\t\t\t\t\tif ( ! $.isPlainObject( out[prop] ) ) {\n\t\t\t\t\t\tout[prop] = {};\n\t\t\t\t\t}\n\t\t\t\t\t$.extend( true, out[prop], val );\n\t\t\t\t}\n\t\t\t\telse if ( breakRefs && prop !== 'data' && prop !== 'aaData' && $.isArray(val) ) {\n\t\t\t\t\tout[prop] = val.slice();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tout[prop] = val;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t}\n\t\n\t\n\t/**\n\t * Bind an event handers to allow a click or return key to activate the callback.\n\t * This is good for accessibility since a return on the keyboard will have the\n\t * same effect as a click, if the element has focus.\n\t *  @param {element} n Element to bind the action to\n\t *  @param {object} oData Data object to pass to the triggered function\n\t *  @param {function} fn Callback function for when the event is triggered\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnBindAction( n, oData, fn )\n\t{\n\t\t$(n)\n\t\t\t.bind( 'click.DT', oData, function (e) {\n\t\t\t\t\tn.blur(); // Remove focus outline for mouse users\n\t\t\t\t\tfn(e);\n\t\t\t\t} )\n\t\t\t.bind( 'keypress.DT', oData, function (e){\n\t\t\t\t\tif ( e.which === 13 ) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tfn(e);\n\t\t\t\t\t}\n\t\t\t\t} )\n\t\t\t.bind( 'selectstart.DT', function () {\n\t\t\t\t\t/* Take the brutal approach to cancelling text selection */\n\t\t\t\t\treturn false;\n\t\t\t\t} );\n\t}\n\t\n\t\n\t/**\n\t * Register a callback function. Easily allows a callback function to be added to\n\t * an array store of callback functions that can then all be called together.\n\t *  @param {object} oSettings dataTables settings object\n\t *  @param {string} sStore Name of the array storage for the callbacks in oSettings\n\t *  @param {function} fn Function to be called back\n\t *  @param {string} sName Identifying name for the callback (i.e. a label)\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnCallbackReg( oSettings, sStore, fn, sName )\n\t{\n\t\tif ( fn )\n\t\t{\n\t\t\toSettings[sStore].push( {\n\t\t\t\t\"fn\": fn,\n\t\t\t\t\"sName\": sName\n\t\t\t} );\n\t\t}\n\t}\n\t\n\t\n\t/**\n\t * Fire callback functions and trigger events. Note that the loop over the\n\t * callback array store is done backwards! Further note that you do not want to\n\t * fire off triggers in time sensitive applications (for example cell creation)\n\t * as its slow.\n\t *  @param {object} settings dataTables settings object\n\t *  @param {string} callbackArr Name of the array storage for the callbacks in\n\t *      oSettings\n\t *  @param {string} event Name of the jQuery custom event to trigger. If null no\n\t *      trigger is fired\n\t *  @param {array} args Array of arguments to pass to the callback function /\n\t *      trigger\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnCallbackFire( settings, callbackArr, e, args )\n\t{\n\t\tvar ret = [];\n\t\n\t\tif ( callbackArr ) {\n\t\t\tret = $.map( settings[callbackArr].slice().reverse(), function (val, i) {\n\t\t\t\treturn val.fn.apply( settings.oInstance, args );\n\t\t\t} );\n\t\t}\n\t\n\t\tif ( e !== null ) {\n\t\t\t$(settings.nTable).trigger( e+'.dt', args );\n\t\t}\n\t\n\t\treturn ret;\n\t}\n\t\n\t\n\tfunction _fnLengthOverflow ( settings )\n\t{\n\t\tvar\n\t\t\tstart = settings._iDisplayStart,\n\t\t\tend = settings.fnDisplayEnd(),\n\t\t\tlen = settings._iDisplayLength;\n\t\n\t\t/* If we have space to show extra rows (backing up from the end point - then do so */\n\t\tif ( end === settings.fnRecordsDisplay() )\n\t\t{\n\t\t\tstart = end - len;\n\t\t}\n\t\n\t\tif ( len === -1 || start < 0 )\n\t\t{\n\t\t\tstart = 0;\n\t\t}\n\t\n\t\tsettings._iDisplayStart = start;\n\t}\n\t\n\t\n\tfunction _fnRenderer( settings, type )\n\t{\n\t\tvar renderer = settings.renderer;\n\t\tvar host = DataTable.ext.renderer[type];\n\t\n\t\tif ( $.isPlainObject( renderer ) && renderer[type] ) {\n\t\t\t// Specific renderer for this type. If available use it, otherwise use\n\t\t\t// the default.\n\t\t\treturn host[renderer[type]] || host._;\n\t\t}\n\t\telse if ( typeof renderer === 'string' ) {\n\t\t\t// Common renderer - if there is one available for this type use it,\n\t\t\t// otherwise use the default\n\t\t\treturn host[renderer] || host._;\n\t\t}\n\t\n\t\t// Use the default\n\t\treturn host._;\n\t}\n\t\n\t\n\t/**\n\t * Detect the data source being used for the table. Used to simplify the code\n\t * a little (ajax) and to make it compress a little smaller.\n\t *\n\t *  @param {object} settings dataTables settings object\n\t *  @returns {string} Data source\n\t *  @memberof DataTable#oApi\n\t */\n\tfunction _fnDataSource ( settings )\n\t{\n\t\tif ( settings.oFeatures.bServerSide ) {\n\t\t\treturn 'ssp';\n\t\t}\n\t\telse if ( settings.ajax || settings.sAjaxSource ) {\n\t\t\treturn 'ajax';\n\t\t}\n\t\treturn 'dom';\n\t}\n\t\n\n\tDataTable = function( options )\n\t{\n\t\t/**\n\t\t * Perform a jQuery selector action on the table's TR elements (from the tbody) and\n\t\t * return the resulting jQuery object.\n\t\t *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t *  @param {string} [oOpts.filter=none] Select TR elements that meet the current filter\n\t\t *    criterion (\"applied\") or all TR elements (i.e. no filter).\n\t\t *  @param {string} [oOpts.order=current] Order of the TR elements in the processed array.\n\t\t *    Can be either 'current', whereby the current sorting of the table is used, or\n\t\t *    'original' whereby the original order the data was read into the table is used.\n\t\t *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be\n\t\t *    'current' and filter is 'applied', regardless of what they might be given as.\n\t\t *  @returns {object} jQuery object, filtered by the given selector.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Highlight every second row\n\t\t *      oTable.$('tr:odd').css('backgroundColor', 'blue');\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Filter to rows with 'Webkit' in them, add a background colour and then\n\t\t *      // remove the filter, thus highlighting the 'Webkit' rows only.\n\t\t *      oTable.fnFilter('Webkit');\n\t\t *      oTable.$('tr', {\"search\": \"applied\"}).css('backgroundColor', 'blue');\n\t\t *      oTable.fnFilter('');\n\t\t *    } );\n\t\t */\n\t\tthis.$ = function ( sSelector, oOpts )\n\t\t{\n\t\t\treturn this.api(true).$( sSelector, oOpts );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Almost identical to $ in operation, but in this case returns the data for the matched\n\t\t * rows - as such, the jQuery selector used should match TR row nodes or TD/TH cell nodes\n\t\t * rather than any descendants, so the data can be obtained for the row/cell. If matching\n\t\t * rows are found, the data returned is the original data array/object that was used to\n\t\t * create the row (or a generated array if from a DOM source).\n\t\t *\n\t\t * This method is often useful in-combination with $ where both functions are given the\n\t\t * same parameters and the array indexes will match identically.\n\t\t *  @param {string|node|jQuery} sSelector jQuery selector or node collection to act on\n\t\t *  @param {object} [oOpts] Optional parameters for modifying the rows to be included\n\t\t *  @param {string} [oOpts.filter=none] Select elements that meet the current filter\n\t\t *    criterion (\"applied\") or all elements (i.e. no filter).\n\t\t *  @param {string} [oOpts.order=current] Order of the data in the processed array.\n\t\t *    Can be either 'current', whereby the current sorting of the table is used, or\n\t\t *    'original' whereby the original order the data was read into the table is used.\n\t\t *  @param {string} [oOpts.page=all] Limit the selection to the currently displayed page\n\t\t *    (\"current\") or not (\"all\"). If 'current' is given, then order is assumed to be\n\t\t *    'current' and filter is 'applied', regardless of what they might be given as.\n\t\t *  @returns {array} Data for the matched elements. If any elements, as a result of the\n\t\t *    selector, were not TR, TD or TH elements in the DataTable, they will have a null\n\t\t *    entry in the array.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Get the data from the first row in the table\n\t\t *      var data = oTable._('tr:first');\n\t\t *\n\t\t *      // Do something useful with the data\n\t\t *      alert( \"First cell is: \"+data[0] );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Filter to 'Webkit' and get all data for\n\t\t *      oTable.fnFilter('Webkit');\n\t\t *      var data = oTable._('tr', {\"search\": \"applied\"});\n\t\t *\n\t\t *      // Do something with the data\n\t\t *      alert( data.length+\" rows matched the search\" );\n\t\t *    } );\n\t\t */\n\t\tthis._ = function ( sSelector, oOpts )\n\t\t{\n\t\t\treturn this.api(true).rows( sSelector, oOpts ).data();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Create a DataTables Api instance, with the currently selected tables for\n\t\t * the Api's context.\n\t\t * @param {boolean} [traditional=false] Set the API instance's context to be\n\t\t *   only the table referred to by the `DataTable.ext.iApiIndex` option, as was\n\t\t *   used in the API presented by DataTables 1.9- (i.e. the traditional mode),\n\t\t *   or if all tables captured in the jQuery object should be used.\n\t\t * @return {DataTables.Api}\n\t\t */\n\t\tthis.api = function ( traditional )\n\t\t{\n\t\t\treturn traditional ?\n\t\t\t\tnew _Api(\n\t\t\t\t\t_fnSettingsFromNode( this[ _ext.iApiIndex ] )\n\t\t\t\t) :\n\t\t\t\tnew _Api( this );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Add a single new row or multiple rows of data to the table. Please note\n\t\t * that this is suitable for client-side processing only - if you are using\n\t\t * server-side processing (i.e. \"bServerSide\": true), then to add data, you\n\t\t * must add it to the data source, i.e. the server-side, through an Ajax call.\n\t\t *  @param {array|object} data The data to be added to the table. This can be:\n\t\t *    <ul>\n\t\t *      <li>1D array of data - add a single row with the data provided</li>\n\t\t *      <li>2D array of arrays - add multiple rows in a single call</li>\n\t\t *      <li>object - data object when using <i>mData</i></li>\n\t\t *      <li>array of objects - multiple data objects when using <i>mData</i></li>\n\t\t *    </ul>\n\t\t *  @param {bool} [redraw=true] redraw the table or not\n\t\t *  @returns {array} An array of integers, representing the list of indexes in\n\t\t *    <i>aoData</i> ({@link DataTable.models.oSettings}) that have been added to\n\t\t *    the table.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    // Global var for counter\n\t\t *    var giCount = 2;\n\t\t *\n\t\t *    $(document).ready(function() {\n\t\t *      $('#example').dataTable();\n\t\t *    } );\n\t\t *\n\t\t *    function fnClickAddRow() {\n\t\t *      $('#example').dataTable().fnAddData( [\n\t\t *        giCount+\".1\",\n\t\t *        giCount+\".2\",\n\t\t *        giCount+\".3\",\n\t\t *        giCount+\".4\" ]\n\t\t *      );\n\t\t *\n\t\t *      giCount++;\n\t\t *    }\n\t\t */\n\t\tthis.fnAddData = function( data, redraw )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\t/* Check if we want to add multiple rows or not */\n\t\t\tvar rows = $.isArray(data) && ( $.isArray(data[0]) || $.isPlainObject(data[0]) ) ?\n\t\t\t\tapi.rows.add( data ) :\n\t\t\t\tapi.row.add( data );\n\t\t\n\t\t\tif ( redraw === undefined || redraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\n\t\t\treturn rows.flatten().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will make DataTables recalculate the column sizes, based on the data\n\t\t * contained in the table and the sizes applied to the columns (in the DOM, CSS or\n\t\t * through the sWidth parameter). This can be useful when the width of the table's\n\t\t * parent element changes (for example a window resize).\n\t\t *  @param {boolean} [bRedraw=true] Redraw the table or not, you will typically want to\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable( {\n\t\t *        \"sScrollY\": \"200px\",\n\t\t *        \"bPaginate\": false\n\t\t *      } );\n\t\t *\n\t\t *      $(window).bind('resize', function () {\n\t\t *        oTable.fnAdjustColumnSizing();\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\tthis.fnAdjustColumnSizing = function ( bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).columns.adjust();\n\t\t\tvar settings = api.settings()[0];\n\t\t\tvar scroll = settings.oScroll;\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw( false );\n\t\t\t}\n\t\t\telse if ( scroll.sX !== \"\" || scroll.sY !== \"\" ) {\n\t\t\t\t/* If not redrawing, but scrolling, we want to apply the new column sizes anyway */\n\t\t\t\t_fnScrollDraw( settings );\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Quickly and simply clear a table\n\t\t *  @param {bool} [bRedraw=true] redraw the table or not\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Immediately 'nuke' the current rows (perhaps waiting for an Ajax callback...)\n\t\t *      oTable.fnClearTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnClearTable = function( bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).clear();\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * The exact opposite of 'opening' a row, this function will close any rows which\n\t\t * are currently 'open'.\n\t\t *  @param {node} nTr the table row to 'close'\n\t\t *  @returns {int} 0 on success, or 1 if failed (can't find the row)\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *\n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *\n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnClose = function( nTr )\n\t\t{\n\t\t\tthis.api( true ).row( nTr ).child.hide();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Remove a row for the table\n\t\t *  @param {mixed} target The index of the row from aoData to be deleted, or\n\t\t *    the TR element you want to delete\n\t\t *  @param {function|null} [callBack] Callback function\n\t\t *  @param {bool} [redraw=true] Redraw the table or not\n\t\t *  @returns {array} The row that was deleted\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Immediately remove the first row\n\t\t *      oTable.fnDeleteRow( 0 );\n\t\t *    } );\n\t\t */\n\t\tthis.fnDeleteRow = function( target, callback, redraw )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\tvar rows = api.rows( target );\n\t\t\tvar settings = rows.settings()[0];\n\t\t\tvar data = settings.aoData[ rows[0][0] ];\n\t\t\n\t\t\trows.remove();\n\t\t\n\t\t\tif ( callback ) {\n\t\t\t\tcallback.call( this, settings, data );\n\t\t\t}\n\t\t\n\t\t\tif ( redraw === undefined || redraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\n\t\t\treturn data;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Restore the table to it's original state in the DOM by removing all of DataTables\n\t\t * enhancements, alterations to the DOM structure of the table and event listeners.\n\t\t *  @param {boolean} [remove=false] Completely remove the table from the DOM\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      // This example is fairly pointless in reality, but shows how fnDestroy can be used\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnDestroy();\n\t\t *    } );\n\t\t */\n\t\tthis.fnDestroy = function ( remove )\n\t\t{\n\t\t\tthis.api( true ).destroy( remove );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Redraw the table\n\t\t *  @param {bool} [complete=true] Re-filter and resort (if enabled) the table before the draw.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Re-draw the table - you wouldn't want to do it here, but it's an example :-)\n\t\t *      oTable.fnDraw();\n\t\t *    } );\n\t\t */\n\t\tthis.fnDraw = function( complete )\n\t\t{\n\t\t\t// Note that this isn't an exact match to the old call to _fnDraw - it takes\n\t\t\t// into account the new data, but can old position.\n\t\t\tthis.api( true ).draw( ! complete );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Filter the input based on data\n\t\t *  @param {string} sInput String to filter the table on\n\t\t *  @param {int|null} [iColumn] Column to limit filtering to\n\t\t *  @param {bool} [bRegex=false] Treat as regular expression or not\n\t\t *  @param {bool} [bSmart=true] Perform smart filtering or not\n\t\t *  @param {bool} [bShowGlobal=true] Show the input global filter in it's input box(es)\n\t\t *  @param {bool} [bCaseInsensitive=true] Do case-insensitive matching (true) or not (false)\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Sometime later - filter...\n\t\t *      oTable.fnFilter( 'test string' );\n\t\t *    } );\n\t\t */\n\t\tthis.fnFilter = function( sInput, iColumn, bRegex, bSmart, bShowGlobal, bCaseInsensitive )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( iColumn === null || iColumn === undefined ) {\n\t\t\t\tapi.search( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tapi.column( iColumn ).search( sInput, bRegex, bSmart, bCaseInsensitive );\n\t\t\t}\n\t\t\n\t\t\tapi.draw();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the data for the whole table, an individual row or an individual cell based on the\n\t\t * provided parameters.\n\t\t *  @param {int|node} [src] A TR row node, TD/TH cell node or an integer. If given as\n\t\t *    a TR node then the data source for the whole row will be returned. If given as a\n\t\t *    TD/TH cell node then iCol will be automatically calculated and the data for the\n\t\t *    cell returned. If given as an integer, then this is treated as the aoData internal\n\t\t *    data index for the row (see fnGetPosition) and the data for that row used.\n\t\t *  @param {int} [col] Optional column index that you want the data of.\n\t\t *  @returns {array|object|string} If mRow is undefined, then the data for all rows is\n\t\t *    returned. If mRow is defined, just data for that row, and is iCol is\n\t\t *    defined, only data for the designated cell is returned.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    // Row data\n\t\t *    $(document).ready(function() {\n\t\t *      oTable = $('#example').dataTable();\n\t\t *\n\t\t *      oTable.$('tr').click( function () {\n\t\t *        var data = oTable.fnGetData( this );\n\t\t *        // ... do something with the array / object of data for the row\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Individual cell data\n\t\t *    $(document).ready(function() {\n\t\t *      oTable = $('#example').dataTable();\n\t\t *\n\t\t *      oTable.$('td').click( function () {\n\t\t *        var sData = oTable.fnGetData( this );\n\t\t *        alert( 'The cell clicked on had the value of '+sData );\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetData = function( src, col )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( src !== undefined ) {\n\t\t\t\tvar type = src.nodeName ? src.nodeName.toLowerCase() : '';\n\t\t\n\t\t\t\treturn col !== undefined || type == 'td' || type == 'th' ?\n\t\t\t\t\tapi.cell( src, col ).data() :\n\t\t\t\t\tapi.row( src ).data() || null;\n\t\t\t}\n\t\t\n\t\t\treturn api.data().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get an array of the TR nodes that are used in the table's body. Note that you will\n\t\t * typically want to use the '$' API method in preference to this as it is more\n\t\t * flexible.\n\t\t *  @param {int} [iRow] Optional row index for the TR element you want\n\t\t *  @returns {array|node} If iRow is undefined, returns an array of all TR elements\n\t\t *    in the table's body, or iRow is defined, just the TR element requested.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Get the nodes from the table\n\t\t *      var nNodes = oTable.fnGetNodes( );\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetNodes = function( iRow )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\treturn iRow !== undefined ?\n\t\t\t\tapi.row( iRow ).node() :\n\t\t\t\tapi.rows().nodes().flatten().toArray();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the array indexes of a particular cell from it's DOM element\n\t\t * and column index including hidden columns\n\t\t *  @param {node} node this can either be a TR, TD or TH in the table's body\n\t\t *  @returns {int} If nNode is given as a TR, then a single index is returned, or\n\t\t *    if given as a cell, an array of [row index, column index (visible),\n\t\t *    column index (all)] is given.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      $('#example tbody td').click( function () {\n\t\t *        // Get the position of the current data from the node\n\t\t *        var aPos = oTable.fnGetPosition( this );\n\t\t *\n\t\t *        // Get the data array for this row\n\t\t *        var aData = oTable.fnGetData( aPos[0] );\n\t\t *\n\t\t *        // Update the data array and return the value\n\t\t *        aData[ aPos[1] ] = 'clicked';\n\t\t *        this.innerHTML = 'clicked';\n\t\t *      } );\n\t\t *\n\t\t *      // Init DataTables\n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnGetPosition = function( node )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\tvar nodeName = node.nodeName.toUpperCase();\n\t\t\n\t\t\tif ( nodeName == 'TR' ) {\n\t\t\t\treturn api.row( node ).index();\n\t\t\t}\n\t\t\telse if ( nodeName == 'TD' || nodeName == 'TH' ) {\n\t\t\t\tvar cell = api.cell( node ).index();\n\t\t\n\t\t\t\treturn [\n\t\t\t\t\tcell.row,\n\t\t\t\t\tcell.columnVisible,\n\t\t\t\t\tcell.column\n\t\t\t\t];\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Check to see if a row is 'open' or not.\n\t\t *  @param {node} nTr the table row to check\n\t\t *  @returns {boolean} true if the row is currently open, false otherwise\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *\n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *\n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnIsOpen = function( nTr )\n\t\t{\n\t\t\treturn this.api( true ).row( nTr ).child.isShown();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * This function will place a new row directly after a row which is currently\n\t\t * on display on the page, with the HTML contents that is passed into the\n\t\t * function. This can be used, for example, to ask for confirmation that a\n\t\t * particular record should be deleted.\n\t\t *  @param {node} nTr The table row to 'open'\n\t\t *  @param {string|node|jQuery} mHtml The HTML to put into the row\n\t\t *  @param {string} sClass Class to give the new TD cell\n\t\t *  @returns {node} The row opened. Note that if the table row passed in as the\n\t\t *    first parameter, is not found in the table, this method will silently\n\t\t *    return.\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable;\n\t\t *\n\t\t *      // 'open' an information row when a row is clicked on\n\t\t *      $('#example tbody tr').click( function () {\n\t\t *        if ( oTable.fnIsOpen(this) ) {\n\t\t *          oTable.fnClose( this );\n\t\t *        } else {\n\t\t *          oTable.fnOpen( this, \"Temporary row opened\", \"info_row\" );\n\t\t *        }\n\t\t *      } );\n\t\t *\n\t\t *      oTable = $('#example').dataTable();\n\t\t *    } );\n\t\t */\n\t\tthis.fnOpen = function( nTr, mHtml, sClass )\n\t\t{\n\t\t\treturn this.api( true )\n\t\t\t\t.row( nTr )\n\t\t\t\t.child( mHtml, sClass )\n\t\t\t\t.show()\n\t\t\t\t.child()[0];\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Change the pagination - provides the internal logic for pagination in a simple API\n\t\t * function. With this function you can have a DataTables table go to the next,\n\t\t * previous, first or last pages.\n\t\t *  @param {string|int} mAction Paging action to take: \"first\", \"previous\", \"next\" or \"last\"\n\t\t *    or page number to jump to (integer), note that page 0 is the first page.\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnPageChange( 'next' );\n\t\t *    } );\n\t\t */\n\t\tthis.fnPageChange = function ( mAction, bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).page( mAction );\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw(false);\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Show a particular column\n\t\t *  @param {int} iCol The column whose display should be changed\n\t\t *  @param {bool} bShow Show (true) or hide (false) the column\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Hide the second column after initialisation\n\t\t *      oTable.fnSetColumnVis( 1, false );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSetColumnVis = function ( iCol, bShow, bRedraw )\n\t\t{\n\t\t\tvar api = this.api( true ).column( iCol ).visible( bShow );\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.columns.adjust().draw();\n\t\t\t}\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Get the settings for a particular table for external manipulation\n\t\t *  @returns {object} DataTables settings object. See\n\t\t *    {@link DataTable.models.oSettings}\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      var oSettings = oTable.fnSettings();\n\t\t *\n\t\t *      // Show an example parameter from the settings\n\t\t *      alert( oSettings._iDisplayStart );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSettings = function()\n\t\t{\n\t\t\treturn _fnSettingsFromNode( this[_ext.iApiIndex] );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Sort the table by a particular column\n\t\t *  @param {int} iCol the data index to sort on. Note that this will not match the\n\t\t *    'display index' if you have hidden data entries\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Sort immediately with columns 0 and 1\n\t\t *      oTable.fnSort( [ [0,'asc'], [1,'asc'] ] );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSort = function( aaSort )\n\t\t{\n\t\t\tthis.api( true ).order( aaSort ).draw();\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Attach a sort listener to an element for a given column\n\t\t *  @param {node} nNode the element to attach the sort listener to\n\t\t *  @param {int} iColumn the column that a click on this node will sort on\n\t\t *  @param {function} [fnCallback] callback function when sort is run\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *\n\t\t *      // Sort on column 1, when 'sorter' is clicked on\n\t\t *      oTable.fnSortListener( document.getElementById('sorter'), 1 );\n\t\t *    } );\n\t\t */\n\t\tthis.fnSortListener = function( nNode, iColumn, fnCallback )\n\t\t{\n\t\t\tthis.api( true ).order.listener( nNode, iColumn, fnCallback );\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Update a table cell or row - this method will accept either a single value to\n\t\t * update the cell with, an array of values with one element for each column or\n\t\t * an object in the same format as the original data source. The function is\n\t\t * self-referencing in order to make the multi column updates easier.\n\t\t *  @param {object|array|string} mData Data to update the cell/row with\n\t\t *  @param {node|int} mRow TR element you want to update or the aoData index\n\t\t *  @param {int} [iColumn] The column to update, give as null or undefined to\n\t\t *    update a whole row.\n\t\t *  @param {bool} [bRedraw=true] Redraw the table or not\n\t\t *  @param {bool} [bAction=true] Perform pre-draw actions or not\n\t\t *  @returns {int} 0 on success, 1 on error\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      oTable.fnUpdate( 'Example update', 0, 0 ); // Single cell\n\t\t *      oTable.fnUpdate( ['a', 'b', 'c', 'd', 'e'], $('tbody tr')[0] ); // Row\n\t\t *    } );\n\t\t */\n\t\tthis.fnUpdate = function( mData, mRow, iColumn, bRedraw, bAction )\n\t\t{\n\t\t\tvar api = this.api( true );\n\t\t\n\t\t\tif ( iColumn === undefined || iColumn === null ) {\n\t\t\t\tapi.row( mRow ).data( mData );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tapi.cell( mRow, iColumn ).data( mData );\n\t\t\t}\n\t\t\n\t\t\tif ( bAction === undefined || bAction ) {\n\t\t\t\tapi.columns.adjust();\n\t\t\t}\n\t\t\n\t\t\tif ( bRedraw === undefined || bRedraw ) {\n\t\t\t\tapi.draw();\n\t\t\t}\n\t\t\treturn 0;\n\t\t};\n\t\t\n\t\t\n\t\t/**\n\t\t * Provide a common method for plug-ins to check the version of DataTables being used, in order\n\t\t * to ensure compatibility.\n\t\t *  @param {string} sVersion Version string to check for, in the format \"X.Y.Z\". Note that the\n\t\t *    formats \"X\" and \"X.Y\" are also acceptable.\n\t\t *  @returns {boolean} true if this version of DataTables is greater or equal to the required\n\t\t *    version, or false if this version of DataTales is not suitable\n\t\t *  @method\n\t\t *  @dtopt API\n\t\t *  @deprecated Since v1.10\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready(function() {\n\t\t *      var oTable = $('#example').dataTable();\n\t\t *      alert( oTable.fnVersionCheck( '1.9.0' ) );\n\t\t *    } );\n\t\t */\n\t\tthis.fnVersionCheck = _ext.fnVersionCheck;\n\t\t\n\n\t\tvar _that = this;\n\t\tvar emptyInit = options === undefined;\n\t\tvar len = this.length;\n\n\t\tif ( emptyInit ) {\n\t\t\toptions = {};\n\t\t}\n\n\t\tthis.oApi = this.internal = _ext.internal;\n\n\t\t// Extend with old style plug-in API methods\n\t\tfor ( var fn in DataTable.ext.internal ) {\n\t\t\tif ( fn ) {\n\t\t\t\tthis[fn] = _fnExternApiFunc(fn);\n\t\t\t}\n\t\t}\n\n\t\tthis.each(function() {\n\t\t\t// For each initialisation we want to give it a clean initialisation\n\t\t\t// object that can be bashed around\n\t\t\tvar o = {};\n\t\t\tvar oInit = len > 1 ? // optimisation for single table case\n\t\t\t\t_fnExtend( o, options, true ) :\n\t\t\t\toptions;\n\n\t\t\t/*global oInit,_that,emptyInit*/\n\t\t\tvar i=0, iLen, j, jLen, k, kLen;\n\t\t\tvar sId = this.getAttribute( 'id' );\n\t\t\tvar bInitHandedOff = false;\n\t\t\tvar defaults = DataTable.defaults;\n\t\t\t\n\t\t\t\n\t\t\t/* Sanity check */\n\t\t\tif ( this.nodeName.toLowerCase() != 'table' )\n\t\t\t{\n\t\t\t\t_fnLog( null, 0, 'Non-table node initialisation ('+this.nodeName+')', 2 );\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\t/* Backwards compatibility for the defaults */\n\t\t\t_fnCompatOpts( defaults );\n\t\t\t_fnCompatCols( defaults.column );\n\t\t\t\n\t\t\t/* Convert the camel-case defaults to Hungarian */\n\t\t\t_fnCamelToHungarian( defaults, defaults, true );\n\t\t\t_fnCamelToHungarian( defaults.column, defaults.column, true );\n\t\t\t\n\t\t\t/* Setting up the initialisation object */\n\t\t\t_fnCamelToHungarian( defaults, oInit );\n\t\t\t\n\t\t\t/* Check to see if we are re-initialising a table */\n\t\t\tvar allSettings = DataTable.settings;\n\t\t\tfor ( i=0, iLen=allSettings.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t/* Base check on table node */\n\t\t\t\tif ( allSettings[i].nTable == this )\n\t\t\t\t{\n\t\t\t\t\tvar bRetrieve = oInit.bRetrieve !== undefined ? oInit.bRetrieve : defaults.bRetrieve;\n\t\t\t\t\tvar bDestroy = oInit.bDestroy !== undefined ? oInit.bDestroy : defaults.bDestroy;\n\t\t\t\n\t\t\t\t\tif ( emptyInit || bRetrieve )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn allSettings[i].oInstance;\n\t\t\t\t\t}\n\t\t\t\t\telse if ( bDestroy )\n\t\t\t\t\t{\n\t\t\t\t\t\tallSettings[i].oInstance.fnDestroy();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t_fnLog( allSettings[i], 0, 'Cannot reinitialise DataTable', 3 );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\n\t\t\t\t/* If the element we are initialising has the same ID as a table which was previously\n\t\t\t\t * initialised, but the table nodes don't match (from before) then we destroy the old\n\t\t\t\t * instance by simply deleting it. This is under the assumption that the table has been\n\t\t\t\t * destroyed by other methods. Anyone using non-id selectors will need to do this manually\n\t\t\t\t */\n\t\t\t\tif ( allSettings[i].sTableId == this.id )\n\t\t\t\t{\n\t\t\t\t\tallSettings.splice( i, 1 );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Ensure the table has an ID - required for accessibility */\n\t\t\tif ( sId === null || sId === \"\" )\n\t\t\t{\n\t\t\t\tsId = \"DataTables_Table_\"+(DataTable.ext._unique++);\n\t\t\t\tthis.id = sId;\n\t\t\t}\n\t\t\t\n\t\t\t/* Create the settings object for this table and set some of the default parameters */\n\t\t\tvar oSettings = $.extend( true, {}, DataTable.models.oSettings, {\n\t\t\t\t\"nTable\":        this,\n\t\t\t\t\"oApi\":          _that.internal,\n\t\t\t\t\"oInit\":         oInit,\n\t\t\t\t\"sDestroyWidth\": $(this)[0].style.width,\n\t\t\t\t\"sInstance\":     sId,\n\t\t\t\t\"sTableId\":      sId\n\t\t\t} );\n\t\t\tallSettings.push( oSettings );\n\t\t\t\n\t\t\t// Need to add the instance after the instance after the settings object has been added\n\t\t\t// to the settings array, so we can self reference the table instance if more than one\n\t\t\toSettings.oInstance = (_that.length===1) ? _that : $(this).dataTable();\n\t\t\t\n\t\t\t// Backwards compatibility, before we apply all the defaults\n\t\t\t_fnCompatOpts( oInit );\n\t\t\t\n\t\t\tif ( oInit.oLanguage )\n\t\t\t{\n\t\t\t\t_fnLanguageCompat( oInit.oLanguage );\n\t\t\t}\n\t\t\t\n\t\t\t// If the length menu is given, but the init display length is not, use the length menu\n\t\t\tif ( oInit.aLengthMenu && ! oInit.iDisplayLength )\n\t\t\t{\n\t\t\t\toInit.iDisplayLength = $.isArray( oInit.aLengthMenu[0] ) ?\n\t\t\t\t\toInit.aLengthMenu[0][0] : oInit.aLengthMenu[0];\n\t\t\t}\n\t\t\t\n\t\t\t// Apply the defaults and init options to make a single init object will all\n\t\t\t// options defined from defaults and instance options.\n\t\t\toInit = _fnExtend( $.extend( true, {}, defaults ), oInit );\n\t\t\t\n\t\t\t\n\t\t\t// Map the initialisation options onto the settings object\n\t\t\t_fnMap( oSettings.oFeatures, oInit, [\n\t\t\t\t\"bPaginate\",\n\t\t\t\t\"bLengthChange\",\n\t\t\t\t\"bFilter\",\n\t\t\t\t\"bSort\",\n\t\t\t\t\"bSortMulti\",\n\t\t\t\t\"bInfo\",\n\t\t\t\t\"bProcessing\",\n\t\t\t\t\"bAutoWidth\",\n\t\t\t\t\"bSortClasses\",\n\t\t\t\t\"bServerSide\",\n\t\t\t\t\"bDeferRender\"\n\t\t\t] );\n\t\t\t_fnMap( oSettings, oInit, [\n\t\t\t\t\"asStripeClasses\",\n\t\t\t\t\"ajax\",\n\t\t\t\t\"fnServerData\",\n\t\t\t\t\"fnFormatNumber\",\n\t\t\t\t\"sServerMethod\",\n\t\t\t\t\"aaSorting\",\n\t\t\t\t\"aaSortingFixed\",\n\t\t\t\t\"aLengthMenu\",\n\t\t\t\t\"sPaginationType\",\n\t\t\t\t\"sAjaxSource\",\n\t\t\t\t\"sAjaxDataProp\",\n\t\t\t\t\"iStateDuration\",\n\t\t\t\t\"sDom\",\n\t\t\t\t\"bSortCellsTop\",\n\t\t\t\t\"iTabIndex\",\n\t\t\t\t\"fnStateLoadCallback\",\n\t\t\t\t\"fnStateSaveCallback\",\n\t\t\t\t\"renderer\",\n\t\t\t\t[ \"iCookieDuration\", \"iStateDuration\" ], // backwards compat\n\t\t\t\t[ \"oSearch\", \"oPreviousSearch\" ],\n\t\t\t\t[ \"aoSearchCols\", \"aoPreSearchCols\" ],\n\t\t\t\t[ \"iDisplayLength\", \"_iDisplayLength\" ],\n\t\t\t\t[ \"bJQueryUI\", \"bJUI\" ]\n\t\t\t] );\n\t\t\t_fnMap( oSettings.oScroll, oInit, [\n\t\t\t\t[ \"sScrollX\", \"sX\" ],\n\t\t\t\t[ \"sScrollXInner\", \"sXInner\" ],\n\t\t\t\t[ \"sScrollY\", \"sY\" ],\n\t\t\t\t[ \"bScrollCollapse\", \"bCollapse\" ]\n\t\t\t] );\n\t\t\t_fnMap( oSettings.oLanguage, oInit, \"fnInfoCallback\" );\n\t\t\t\n\t\t\t/* Callback functions which are array driven */\n\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback',       oInit.fnDrawCallback,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoServerParams',       oInit.fnServerParams,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateSaveParams',    oInit.fnStateSaveParams,   'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoadParams',    oInit.fnStateLoadParams,   'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoStateLoaded',        oInit.fnStateLoaded,       'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCallback',        oInit.fnRowCallback,       'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoRowCreatedCallback', oInit.fnCreatedRow,        'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoHeaderCallback',     oInit.fnHeaderCallback,    'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoFooterCallback',     oInit.fnFooterCallback,    'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoInitComplete',       oInit.fnInitComplete,      'user' );\n\t\t\t_fnCallbackReg( oSettings, 'aoPreDrawCallback',    oInit.fnPreDrawCallback,   'user' );\n\t\t\t\n\t\t\tvar oClasses = oSettings.oClasses;\n\t\t\t\n\t\t\t// @todo Remove in 1.11\n\t\t\tif ( oInit.bJQueryUI )\n\t\t\t{\n\t\t\t\t/* Use the JUI classes object for display. You could clone the oStdClasses object if\n\t\t\t\t * you want to have multiple tables with multiple independent classes\n\t\t\t\t */\n\t\t\t\t$.extend( oClasses, DataTable.ext.oJUIClasses, oInit.oClasses );\n\t\t\t\n\t\t\t\tif ( oInit.sDom === defaults.sDom && defaults.sDom === \"lfrtip\" )\n\t\t\t\t{\n\t\t\t\t\t/* Set the DOM to use a layout suitable for jQuery UI's theming */\n\t\t\t\t\toSettings.sDom = '<\"H\"lfr>t<\"F\"ip>';\n\t\t\t\t}\n\t\t\t\n\t\t\t\tif ( ! oSettings.renderer ) {\n\t\t\t\t\toSettings.renderer = 'jqueryui';\n\t\t\t\t}\n\t\t\t\telse if ( $.isPlainObject( oSettings.renderer ) && ! oSettings.renderer.header ) {\n\t\t\t\t\toSettings.renderer.header = 'jqueryui';\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$.extend( oClasses, DataTable.ext.classes, oInit.oClasses );\n\t\t\t}\n\t\t\t$(this).addClass( oClasses.sTable );\n\t\t\t\n\t\t\t/* Calculate the scroll bar width and cache it for use later on */\n\t\t\tif ( oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\" )\n\t\t\t{\n\t\t\t\toSettings.oScroll.iBarWidth = _fnScrollBarWidth();\n\t\t\t}\n\t\t\tif ( oSettings.oScroll.sX === true ) { // Easy initialisation of x-scrolling\n\t\t\t\toSettings.oScroll.sX = '100%';\n\t\t\t}\n\t\t\t\n\t\t\tif ( oSettings.iInitDisplayStart === undefined )\n\t\t\t{\n\t\t\t\t/* Display start point, taking into account the save saving */\n\t\t\t\toSettings.iInitDisplayStart = oInit.iDisplayStart;\n\t\t\t\toSettings._iDisplayStart = oInit.iDisplayStart;\n\t\t\t}\n\t\t\t\n\t\t\tif ( oInit.iDeferLoading !== null )\n\t\t\t{\n\t\t\t\toSettings.bDeferLoading = true;\n\t\t\t\tvar tmp = $.isArray( oInit.iDeferLoading );\n\t\t\t\toSettings._iRecordsDisplay = tmp ? oInit.iDeferLoading[0] : oInit.iDeferLoading;\n\t\t\t\toSettings._iRecordsTotal = tmp ? oInit.iDeferLoading[1] : oInit.iDeferLoading;\n\t\t\t}\n\t\t\t\n\t\t\t/* Language definitions */\n\t\t\tif ( oInit.oLanguage.sUrl !== \"\" )\n\t\t\t{\n\t\t\t\t/* Get the language definitions from a file - because this Ajax call makes the language\n\t\t\t\t * get async to the remainder of this function we use bInitHandedOff to indicate that\n\t\t\t\t * _fnInitialise will be fired by the returned Ajax handler, rather than the constructor\n\t\t\t\t */\n\t\t\t\toSettings.oLanguage.sUrl = oInit.oLanguage.sUrl;\n\t\t\t\t$.getJSON( oSettings.oLanguage.sUrl, null, function( json ) {\n\t\t\t\t\t_fnLanguageCompat( json );\n\t\t\t\t\t_fnCamelToHungarian( defaults.oLanguage, json );\n\t\t\t\t\t$.extend( true, oSettings.oLanguage, oInit.oLanguage, json );\n\t\t\t\t\t_fnInitialise( oSettings );\n\t\t\t\t} );\n\t\t\t\tbInitHandedOff = true;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t$.extend( true, oSettings.oLanguage, oInit.oLanguage );\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * Stripes\n\t\t\t */\n\t\t\tif ( oInit.asStripeClasses === null )\n\t\t\t{\n\t\t\t\toSettings.asStripeClasses =[\n\t\t\t\t\toClasses.sStripeOdd,\n\t\t\t\t\toClasses.sStripeEven\n\t\t\t\t];\n\t\t\t}\n\t\t\t\n\t\t\t/* Remove row stripe classes if they are already on the table row */\n\t\t\tvar stripeClasses = oSettings.asStripeClasses;\n\t\t\tvar rowOne = $('tbody tr:eq(0)', this);\n\t\t\tif ( $.inArray( true, $.map( stripeClasses, function(el, i) {\n\t\t\t\treturn rowOne.hasClass(el);\n\t\t\t} ) ) !== -1 ) {\n\t\t\t\t$('tbody tr', this).removeClass( stripeClasses.join(' ') );\n\t\t\t\toSettings.asDestroyStripes = stripeClasses.slice();\n\t\t\t}\n\t\t\t\n\t\t\t/*\n\t\t\t * Columns\n\t\t\t * See if we should load columns automatically or use defined ones\n\t\t\t */\n\t\t\tvar anThs = [];\n\t\t\tvar aoColumnsInit;\n\t\t\tvar nThead = this.getElementsByTagName('thead');\n\t\t\tif ( nThead.length !== 0 )\n\t\t\t{\n\t\t\t\t_fnDetectHeader( oSettings.aoHeader, nThead[0] );\n\t\t\t\tanThs = _fnGetUniqueThs( oSettings );\n\t\t\t}\n\t\t\t\n\t\t\t/* If not given a column array, generate one with nulls */\n\t\t\tif ( oInit.aoColumns === null )\n\t\t\t{\n\t\t\t\taoColumnsInit = [];\n\t\t\t\tfor ( i=0, iLen=anThs.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\taoColumnsInit.push( null );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\taoColumnsInit = oInit.aoColumns;\n\t\t\t}\n\t\t\t\n\t\t\t/* Add the columns */\n\t\t\tfor ( i=0, iLen=aoColumnsInit.length ; i<iLen ; i++ )\n\t\t\t{\n\t\t\t\t_fnAddColumn( oSettings, anThs ? anThs[i] : null );\n\t\t\t}\n\t\t\t\n\t\t\t/* Apply the column definitions */\n\t\t\t_fnApplyColumnDefs( oSettings, oInit.aoColumnDefs, aoColumnsInit, function (iCol, oDef) {\n\t\t\t\t_fnColumnOptions( oSettings, iCol, oDef );\n\t\t\t} );\n\t\t\t\n\t\t\t/* HTML5 attribute detection - build an mData object automatically if the\n\t\t\t * attributes are found\n\t\t\t */\n\t\t\tif ( rowOne.length ) {\n\t\t\t\tvar a = function ( cell, name ) {\n\t\t\t\t\treturn cell.getAttribute( 'data-'+name ) ? name : null;\n\t\t\t\t};\n\t\t\t\n\t\t\t\t$.each( _fnGetRowElements( oSettings, rowOne[0] ).cells, function (i, cell) {\n\t\t\t\t\tvar col = oSettings.aoColumns[i];\n\t\t\t\n\t\t\t\t\tif ( col.mData === i ) {\n\t\t\t\t\t\tvar sort = a( cell, 'sort' ) || a( cell, 'order' );\n\t\t\t\t\t\tvar filter = a( cell, 'filter' ) || a( cell, 'search' );\n\t\t\t\n\t\t\t\t\t\tif ( sort !== null || filter !== null ) {\n\t\t\t\t\t\t\tcol.mData = {\n\t\t\t\t\t\t\t\t_:      i+'.display',\n\t\t\t\t\t\t\t\tsort:   sort !== null   ? i+'.@data-'+sort   : undefined,\n\t\t\t\t\t\t\t\ttype:   sort !== null   ? i+'.@data-'+sort   : undefined,\n\t\t\t\t\t\t\t\tfilter: filter !== null ? i+'.@data-'+filter : undefined\n\t\t\t\t\t\t\t};\n\t\t\t\n\t\t\t\t\t\t\t_fnColumnOptions( oSettings, i );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\tvar features = oSettings.oFeatures;\n\t\t\t\n\t\t\t/* Must be done after everything which can be overridden by the state saving! */\n\t\t\tif ( oInit.bStateSave )\n\t\t\t{\n\t\t\t\tfeatures.bStateSave = true;\n\t\t\t\t_fnLoadState( oSettings, oInit );\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', _fnSaveState, 'state_save' );\n\t\t\t}\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * Sorting\n\t\t\t * @todo For modularisation (1.11) this needs to do into a sort start up handler\n\t\t\t */\n\t\t\t\n\t\t\t// If aaSorting is not defined, then we use the first indicator in asSorting\n\t\t\t// in case that has been altered, so the default sort reflects that option\n\t\t\tif ( oInit.aaSorting === undefined )\n\t\t\t{\n\t\t\t\tvar sorting = oSettings.aaSorting;\n\t\t\t\tfor ( i=0, iLen=sorting.length ; i<iLen ; i++ )\n\t\t\t\t{\n\t\t\t\t\tsorting[i][1] = oSettings.aoColumns[ i ].asSorting[0];\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\t/* Do a first pass on the sorting classes (allows any size changes to be taken into\n\t\t\t * account, and also will apply sorting disabled classes if disabled\n\t\t\t */\n\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\n\t\t\tif ( features.bSort )\n\t\t\t{\n\t\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', function () {\n\t\t\t\t\tif ( oSettings.bSorted ) {\n\t\t\t\t\t\tvar aSort = _fnSortFlatten( oSettings );\n\t\t\t\t\t\tvar sortedColumns = {};\n\t\t\t\n\t\t\t\t\t\t$.each( aSort, function (i, val) {\n\t\t\t\t\t\t\tsortedColumns[ val.src ] = val.dir;\n\t\t\t\t\t\t} );\n\t\t\t\n\t\t\t\t\t\t_fnCallbackFire( oSettings, null, 'order', [oSettings, aSort, sortedColumns] );\n\t\t\t\t\t\t_fnSortAria( oSettings );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t\t\n\t\t\t_fnCallbackReg( oSettings, 'aoDrawCallback', function () {\n\t\t\t\tif ( oSettings.bSorted || _fnDataSource( oSettings ) === 'ssp' || features.bDeferRender ) {\n\t\t\t\t\t_fnSortingClasses( oSettings );\n\t\t\t\t}\n\t\t\t}, 'sc' );\n\t\t\t\n\t\t\t\n\t\t\t/*\n\t\t\t * Final init\n\t\t\t * Cache the header, body and footer as required, creating them if needed\n\t\t\t */\n\t\t\t\n\t\t\t/* Browser support detection */\n\t\t\t_fnBrowserDetect( oSettings );\n\t\t\t\n\t\t\t// Work around for Webkit bug 83867 - store the caption-side before removing from doc\n\t\t\tvar captions = $(this).children('caption').each( function () {\n\t\t\t\tthis._captionSide = $(this).css('caption-side');\n\t\t\t} );\n\t\t\t\n\t\t\tvar thead = $(this).children('thead');\n\t\t\tif ( thead.length === 0 )\n\t\t\t{\n\t\t\t\tthead = $('<thead/>').appendTo(this);\n\t\t\t}\n\t\t\toSettings.nTHead = thead[0];\n\t\t\t\n\t\t\tvar tbody = $(this).children('tbody');\n\t\t\tif ( tbody.length === 0 )\n\t\t\t{\n\t\t\t\ttbody = $('<tbody/>').appendTo(this);\n\t\t\t}\n\t\t\toSettings.nTBody = tbody[0];\n\t\t\t\n\t\t\tvar tfoot = $(this).children('tfoot');\n\t\t\tif ( tfoot.length === 0 && captions.length > 0 && (oSettings.oScroll.sX !== \"\" || oSettings.oScroll.sY !== \"\") )\n\t\t\t{\n\t\t\t\t// If we are a scrolling table, and no footer has been given, then we need to create\n\t\t\t\t// a tfoot element for the caption element to be appended to\n\t\t\t\ttfoot = $('<tfoot/>').appendTo(this);\n\t\t\t}\n\t\t\t\n\t\t\tif ( tfoot.length === 0 || tfoot.children().length === 0 ) {\n\t\t\t\t$(this).addClass( oClasses.sNoFooter );\n\t\t\t}\n\t\t\telse if ( tfoot.length > 0 ) {\n\t\t\t\toSettings.nTFoot = tfoot[0];\n\t\t\t\t_fnDetectHeader( oSettings.aoFooter, oSettings.nTFoot );\n\t\t\t}\n\t\t\t\n\t\t\t/* Check if there is data passing into the constructor */\n\t\t\tif ( oInit.aaData )\n\t\t\t{\n\t\t\t\tfor ( i=0 ; i<oInit.aaData.length ; i++ )\n\t\t\t\t{\n\t\t\t\t\t_fnAddData( oSettings, oInit.aaData[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if ( oSettings.bDeferLoading || _fnDataSource( oSettings ) == 'dom' )\n\t\t\t{\n\t\t\t\t/* Grab the data from the page - only do this when deferred loading or no Ajax\n\t\t\t\t * source since there is no point in reading the DOM data if we are then going\n\t\t\t\t * to replace it with Ajax data\n\t\t\t\t */\n\t\t\t\t_fnAddTr( oSettings, $(oSettings.nTBody).children('tr') );\n\t\t\t}\n\t\t\t\n\t\t\t/* Copy the data index array */\n\t\t\toSettings.aiDisplay = oSettings.aiDisplayMaster.slice();\n\t\t\t\n\t\t\t/* Initialisation complete - table can be drawn */\n\t\t\toSettings.bInitialised = true;\n\t\t\t\n\t\t\t/* Check if we need to initialise the table (it might not have been handed off to the\n\t\t\t * language processor)\n\t\t\t */\n\t\t\tif ( bInitHandedOff === false )\n\t\t\t{\n\t\t\t\t_fnInitialise( oSettings );\n\t\t\t}\n\t\t} );\n\t\t_that = null;\n\t\treturn this;\n\t};\n\n\t\n\t\n\t/**\n\t * Computed structure of the DataTables API, defined by the options passed to\n\t * `DataTable.Api.register()` when building the API.\n\t *\n\t * The structure is built in order to speed creation and extension of the Api\n\t * objects since the extensions are effectively pre-parsed.\n\t *\n\t * The array is an array of objects with the following structure, where this\n\t * base array represents the Api prototype base:\n\t *\n\t *     [\n\t *       {\n\t *         name:      'data'                -- string   - Property name\n\t *         val:       function () {},       -- function - Api method (or undefined if just an object\n\t *         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result\n\t *         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property\n\t *       },\n\t *       {\n\t *         name:     'row'\n\t *         val:       {},\n\t *         methodExt: [ ... ],\n\t *         propExt:   [\n\t *           {\n\t *             name:      'data'\n\t *             val:       function () {},\n\t *             methodExt: [ ... ],\n\t *             propExt:   [ ... ]\n\t *           },\n\t *           ...\n\t *         ]\n\t *       }\n\t *     ]\n\t *\n\t * @type {Array}\n\t * @ignore\n\t */\n\tvar __apiStruct = [];\n\t\n\t\n\t/**\n\t * `Array.prototype` reference.\n\t *\n\t * @type object\n\t * @ignore\n\t */\n\tvar __arrayProto = Array.prototype;\n\t\n\t\n\t/**\n\t * Abstraction for `context` parameter of the `Api` constructor to allow it to\n\t * take several different forms for ease of use.\n\t *\n\t * Each of the input parameter types will be converted to a DataTables settings\n\t * object where possible.\n\t *\n\t * @param  {string|node|jQuery|object} mixed DataTable identifier. Can be one\n\t *   of:\n\t *\n\t *   * `string` - jQuery selector. Any DataTables' matching the given selector\n\t *     with be found and used.\n\t *   * `node` - `TABLE` node which has already been formed into a DataTable.\n\t *   * `jQuery` - A jQuery object of `TABLE` nodes.\n\t *   * `object` - DataTables settings object\n\t *   * `DataTables.Api` - API instance\n\t * @return {array|null} Matching DataTables settings objects. `null` or\n\t *   `undefined` is returned if no matching DataTable is found.\n\t * @ignore\n\t */\n\tvar _toSettings = function ( mixed )\n\t{\n\t\tvar idx, jq;\n\t\tvar settings = DataTable.settings;\n\t\tvar tables = $.map( settings, function (el, i) {\n\t\t\treturn el.nTable;\n\t\t} );\n\t\n\t\tif ( ! mixed ) {\n\t\t\treturn [];\n\t\t}\n\t\telse if ( mixed.nTable && mixed.oApi ) {\n\t\t\t// DataTables settings object\n\t\t\treturn [ mixed ];\n\t\t}\n\t\telse if ( mixed.nodeName && mixed.nodeName.toLowerCase() === 'table' ) {\n\t\t\t// Table node\n\t\t\tidx = $.inArray( mixed, tables );\n\t\t\treturn idx !== -1 ? [ settings[idx] ] : null;\n\t\t}\n\t\telse if ( mixed && typeof mixed.settings === 'function' ) {\n\t\t\treturn mixed.settings().toArray();\n\t\t}\n\t\telse if ( typeof mixed === 'string' ) {\n\t\t\t// jQuery selector\n\t\t\tjq = $(mixed);\n\t\t}\n\t\telse if ( mixed instanceof $ ) {\n\t\t\t// jQuery object (also DataTables instance)\n\t\t\tjq = mixed;\n\t\t}\n\t\n\t\tif ( jq ) {\n\t\t\treturn jq.map( function(i) {\n\t\t\t\tidx = $.inArray( this, tables );\n\t\t\t\treturn idx !== -1 ? settings[idx] : null;\n\t\t\t} ).toArray();\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * DataTables API class - used to control and interface with  one or more\n\t * DataTables enhanced tables.\n\t *\n\t * The API class is heavily based on jQuery, presenting a chainable interface\n\t * that you can use to interact with tables. Each instance of the API class has\n\t * a \"context\" - i.e. the tables that it will operate on. This could be a single\n\t * table, all tables on a page or a sub-set thereof.\n\t *\n\t * Additionally the API is designed to allow you to easily work with the data in\n\t * the tables, retrieving and manipulating it as required. This is done by\n\t * presenting the API class as an array like interface. The contents of the\n\t * array depend upon the actions requested by each method (for example\n\t * `rows().nodes()` will return an array of nodes, while `rows().data()` will\n\t * return an array of objects or arrays depending upon your table's\n\t * configuration). The API object has a number of array like methods (`push`,\n\t * `pop`, `reverse` etc) as well as additional helper methods (`each`, `pluck`,\n\t * `unique` etc) to assist your working with the data held in a table.\n\t *\n\t * Most methods (those which return an Api instance) are chainable, which means\n\t * the return from a method call also has all of the methods available that the\n\t * top level object had. For example, these two calls are equivalent:\n\t *\n\t *     // Not chained\n\t *     api.row.add( {...} );\n\t *     api.draw();\n\t *\n\t *     // Chained\n\t *     api.row.add( {...} ).draw();\n\t *\n\t * @class DataTable.Api\n\t * @param {array|object|string|jQuery} context DataTable identifier. This is\n\t *   used to define which DataTables enhanced tables this API will operate on.\n\t *   Can be one of:\n\t *\n\t *   * `string` - jQuery selector. Any DataTables' matching the given selector\n\t *     with be found and used.\n\t *   * `node` - `TABLE` node which has already been formed into a DataTable.\n\t *   * `jQuery` - A jQuery object of `TABLE` nodes.\n\t *   * `object` - DataTables settings object\n\t * @param {array} [data] Data to initialise the Api instance with.\n\t *\n\t * @example\n\t *   // Direct initialisation during DataTables construction\n\t *   var api = $('#example').DataTable();\n\t *\n\t * @example\n\t *   // Initialisation using a DataTables jQuery object\n\t *   var api = $('#example').dataTable().api();\n\t *\n\t * @example\n\t *   // Initialisation as a constructor\n\t *   var api = new $.fn.DataTable.Api( 'table.dataTable' );\n\t */\n\t_Api = function ( context, data )\n\t{\n\t\tif ( ! this instanceof _Api ) {\n\t\t\tthrow 'DT API must be constructed as a new object';\n\t\t\t// or should it do the 'new' for the caller?\n\t\t\t// return new _Api.apply( this, arguments );\n\t\t}\n\t\n\t\tvar settings = [];\n\t\tvar ctxSettings = function ( o ) {\n\t\t\tvar a = _toSettings( o );\n\t\t\tif ( a ) {\n\t\t\t\tsettings.push.apply( settings, a );\n\t\t\t}\n\t\t};\n\t\n\t\tif ( $.isArray( context ) ) {\n\t\t\tfor ( var i=0, ien=context.length ; i<ien ; i++ ) {\n\t\t\t\tctxSettings( context[i] );\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tctxSettings( context );\n\t\t}\n\t\n\t\t// Remove duplicates\n\t\tthis.context = _unique( settings );\n\t\n\t\t// Initial data\n\t\tif ( data ) {\n\t\t\tthis.push.apply( this, data.toArray ? data.toArray() : data );\n\t\t}\n\t\n\t\t// selector\n\t\tthis.selector = {\n\t\t\trows: null,\n\t\t\tcols: null,\n\t\t\topts: null\n\t\t};\n\t\n\t\t_Api.extend( this, this, __apiStruct );\n\t};\n\t\n\tDataTable.Api = _Api;\n\t\n\t_Api.prototype = /** @lends DataTables.Api */{\n\t\t/**\n\t\t * Return a new Api instance, comprised of the data held in the current\n\t\t * instance, join with the other array(s) and/or value(s).\n\t\t *\n\t\t * An alias for `Array.prototype.concat`.\n\t\t *\n\t\t * @type method\n\t\t * @param {*} value1 Arrays and/or values to concatenate.\n\t\t * @param {*} [...] Additional arrays and/or values to concatenate.\n\t\t * @returns {DataTables.Api} New API instance, comprising of the combined\n\t\t *   array.\n\t\t */\n\t\tconcat:  __arrayProto.concat,\n\t\n\t\n\t\tcontext: [], // array of table settings objects\n\t\n\t\n\t\teach: function ( fn )\n\t\t{\n\t\t\tfor ( var i=0, ien=this.length ; i<ien; i++ ) {\n\t\t\t\tfn.call( this, this[i], i, this );\n\t\t\t}\n\t\n\t\t\treturn this;\n\t\t},\n\t\n\t\n\t\teq: function ( idx )\n\t\t{\n\t\t\tvar ctx = this.context;\n\t\n\t\t\treturn ctx.length > idx ?\n\t\t\t\tnew _Api( ctx[idx], this[idx] ) :\n\t\t\t\tnull;\n\t\t},\n\t\n\t\n\t\tfilter: function ( fn )\n\t\t{\n\t\t\tvar a = [];\n\t\n\t\t\tif ( __arrayProto.filter ) {\n\t\t\t\ta = __arrayProto.filter.call( this, fn, this );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Compatibility for browsers without EMCA-252-5 (JS 1.6)\n\t\t\t\tfor ( var i=0, ien=this.length ; i<ien ; i++ ) {\n\t\t\t\t\tif ( fn.call( this, this[i], i, this ) ) {\n\t\t\t\t\t\ta.push( this[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn new _Api( this.context, a );\n\t\t},\n\t\n\t\n\t\tflatten: function ()\n\t\t{\n\t\t\tvar a = [];\n\t\t\treturn new _Api( this.context, a.concat.apply( a, this.toArray() ) );\n\t\t},\n\t\n\t\n\t\tjoin:    __arrayProto.join,\n\t\n\t\n\t\tindexOf: __arrayProto.indexOf || function (obj, start)\n\t\t{\n\t\t\tfor ( var i=(start || 0), ien=this.length ; i<ien ; i++ ) {\n\t\t\t\tif ( this[i] === obj ) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t},\n\t\n\t\t// Internal only at the moment - relax?\n\t\titerator: function ( flatten, type, fn ) {\n\t\t\tvar\n\t\t\t\ta = [], ret,\n\t\t\t\ti, ien, j, jen,\n\t\t\t\tcontext = this.context,\n\t\t\t\trows, items, item,\n\t\t\t\tselector = this.selector;\n\t\n\t\t\t// Argument shifting\n\t\t\tif ( typeof flatten === 'string' ) {\n\t\t\t\tfn = type;\n\t\t\t\ttype = flatten;\n\t\t\t\tflatten = false;\n\t\t\t}\n\t\n\t\t\tfor ( i=0, ien=context.length ; i<ien ; i++ ) {\n\t\t\t\tif ( type === 'table' ) {\n\t\t\t\t\tret = fn( context[i], i );\n\t\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\ta.push( ret );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ( type === 'columns' || type === 'rows' ) {\n\t\t\t\t\t// this has same length as context - one entry for each table\n\t\t\t\t\tret = fn( context[i], this[i], i );\n\t\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\ta.push( ret );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if ( type === 'column' || type === 'column-rows' || type === 'row' || type === 'cell' ) {\n\t\t\t\t\t// columns and rows share the same structure.\n\t\t\t\t\t// 'this' is an array of column indexes for each context\n\t\t\t\t\titems = this[i];\n\t\n\t\t\t\t\tif ( type === 'column-rows' ) {\n\t\t\t\t\t\trows = _selector_row_indexes( context[i], selector.opts );\n\t\t\t\t\t}\n\t\n\t\t\t\t\tfor ( j=0, jen=items.length ; j<jen ; j++ ) {\n\t\t\t\t\t\titem = items[j];\n\t\n\t\t\t\t\t\tif ( type === 'cell' ) {\n\t\t\t\t\t\t\tret = fn( context[i], item.row, item.column, i, j );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tret = fn( context[i], item, i, j, rows );\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\t\ta.push( ret );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\tif ( a.length ) {\n\t\t\t\tvar api = new _Api( context, flatten ? a.concat.apply( [], a ) : a );\n\t\t\t\tvar apiSelector = api.selector;\n\t\t\t\tapiSelector.rows = selector.rows;\n\t\t\t\tapiSelector.cols = selector.cols;\n\t\t\t\tapiSelector.opts = selector.opts;\n\t\t\t\treturn api;\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\n\t\n\t\tlastIndexOf: __arrayProto.lastIndexOf || function (obj, start)\n\t\t{\n\t\t\t// Bit cheeky...\n\t\t\treturn this.indexOf.apply( this.toArray.reverse(), arguments );\n\t\t},\n\t\n\t\n\t\tlength:  0,\n\t\n\t\n\t\tmap: function ( fn )\n\t\t{\n\t\t\tvar a = [];\n\t\n\t\t\tif ( __arrayProto.map ) {\n\t\t\t\ta = __arrayProto.map.call( this, fn, this );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Compatibility for browsers without EMCA-252-5 (JS 1.6)\n\t\t\t\tfor ( var i=0, ien=this.length ; i<ien ; i++ ) {\n\t\t\t\t\ta.push( fn.call( this, this[i], i ) );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn new _Api( this.context, a );\n\t\t},\n\t\n\t\n\t\tpluck: function ( prop )\n\t\t{\n\t\t\treturn this.map( function ( el ) {\n\t\t\t\treturn el[ prop ];\n\t\t\t} );\n\t\t},\n\t\n\t\tpop:     __arrayProto.pop,\n\t\n\t\n\t\tpush:    __arrayProto.push,\n\t\n\t\n\t\t// Does not return an API instance\n\t\treduce: __arrayProto.reduce || function ( fn, init )\n\t\t{\n\t\t\treturn _fnReduce( this, fn, init, 0, this.length, 1 );\n\t\t},\n\t\n\t\n\t\treduceRight: __arrayProto.reduceRight || function ( fn, init )\n\t\t{\n\t\t\treturn _fnReduce( this, fn, init, this.length-1, -1, -1 );\n\t\t},\n\t\n\t\n\t\treverse: __arrayProto.reverse,\n\t\n\t\n\t\t// Object with rows, columns and opts\n\t\tselector: null,\n\t\n\t\n\t\tshift:   __arrayProto.shift,\n\t\n\t\n\t\tsort:    __arrayProto.sort, // ? name - order?\n\t\n\t\n\t\tsplice:  __arrayProto.splice,\n\t\n\t\n\t\ttoArray: function ()\n\t\t{\n\t\t\treturn __arrayProto.slice.call( this );\n\t\t},\n\t\n\t\n\t\tto$: function ()\n\t\t{\n\t\t\treturn $( this );\n\t\t},\n\t\n\t\n\t\ttoJQuery: function ()\n\t\t{\n\t\t\treturn $( this );\n\t\t},\n\t\n\t\n\t\tunique: function ()\n\t\t{\n\t\t\treturn new _Api( this.context, _unique(this) );\n\t\t},\n\t\n\t\n\t\tunshift: __arrayProto.unshift\n\t};\n\t\n\t\n\t_Api.extend = function ( scope, obj, ext )\n\t{\n\t\t// Only extend API instances and static properties of the API\n\t\tif ( ! obj || ( ! (obj instanceof _Api) && ! obj.__dt_wrapper ) ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar\n\t\t\ti, ien,\n\t\t\tj, jen,\n\t\t\tstruct, inner,\n\t\t\tmethodScoping = function ( scope, fn, struc ) {\n\t\t\t\treturn function () {\n\t\t\t\t\tvar ret = fn.apply( scope, arguments );\n\t\n\t\t\t\t\t// Method extension\n\t\t\t\t\t_Api.extend( ret, ret, struc.methodExt );\n\t\t\t\t\treturn ret;\n\t\t\t\t};\n\t\t\t};\n\t\n\t\tfor ( i=0, ien=ext.length ; i<ien ; i++ ) {\n\t\t\tstruct = ext[i];\n\t\n\t\t\t// Value\n\t\t\tobj[ struct.name ] = typeof struct.val === 'function' ?\n\t\t\t\tmethodScoping( scope, struct.val, struct ) :\n\t\t\t\t$.isPlainObject( struct.val ) ?\n\t\t\t\t\t{} :\n\t\t\t\t\tstruct.val;\n\t\n\t\t\tobj[ struct.name ].__dt_wrapper = true;\n\t\n\t\t\t// Property extension\n\t\t\t_Api.extend( scope, obj[ struct.name ], struct.propExt );\n\t\t}\n\t};\n\t\n\t\n\t// @todo - Is there need for an augment function?\n\t// _Api.augment = function ( inst, name )\n\t// {\n\t// \t// Find src object in the structure from the name\n\t// \tvar parts = name.split('.');\n\t\n\t// \t_Api.extend( inst, obj );\n\t// };\n\t\n\t\n\t//     [\n\t//       {\n\t//         name:      'data'                -- string   - Property name\n\t//         val:       function () {},       -- function - Api method (or undefined if just an object\n\t//         methodExt: [ ... ],              -- array    - Array of Api object definitions to extend the method result\n\t//         propExt:   [ ... ]               -- array    - Array of Api object definitions to extend the property\n\t//       },\n\t//       {\n\t//         name:     'row'\n\t//         val:       {},\n\t//         methodExt: [ ... ],\n\t//         propExt:   [\n\t//           {\n\t//             name:      'data'\n\t//             val:       function () {},\n\t//             methodExt: [ ... ],\n\t//             propExt:   [ ... ]\n\t//           },\n\t//           ...\n\t//         ]\n\t//       }\n\t//     ]\n\t\n\t_Api.register = _api_register = function ( name, val )\n\t{\n\t\tif ( $.isArray( name ) ) {\n\t\t\tfor ( var j=0, jen=name.length ; j<jen ; j++ ) {\n\t\t\t\t_Api.register( name[j], val );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\t\n\t\tvar\n\t\t\ti, ien,\n\t\t\their = name.split('.'),\n\t\t\tstruct = __apiStruct,\n\t\t\tkey, method;\n\t\n\t\tvar find = function ( src, name ) {\n\t\t\tfor ( var i=0, ien=src.length ; i<ien ; i++ ) {\n\t\t\t\tif ( src[i].name === name ) {\n\t\t\t\t\treturn src[i];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t};\n\t\n\t\tfor ( i=0, ien=heir.length ; i<ien ; i++ ) {\n\t\t\tmethod = heir[i].indexOf('()') !== -1;\n\t\t\tkey = method ?\n\t\t\t\their[i].replace('()', '') :\n\t\t\t\their[i];\n\t\n\t\t\tvar src = find( struct, key );\n\t\t\tif ( ! src ) {\n\t\t\t\tsrc = {\n\t\t\t\t\tname:      key,\n\t\t\t\t\tval:       {},\n\t\t\t\t\tmethodExt: [],\n\t\t\t\t\tpropExt:   []\n\t\t\t\t};\n\t\t\t\tstruct.push( src );\n\t\t\t}\n\t\n\t\t\tif ( i === ien-1 ) {\n\t\t\t\tsrc.val = val;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tstruct = method ?\n\t\t\t\t\tsrc.methodExt :\n\t\t\t\t\tsrc.propExt;\n\t\t\t}\n\t\t}\n\t};\n\t\n\t\n\t_Api.registerPlural = _api_registerPlural = function ( pluralName, singularName, val ) {\n\t\t_Api.register( pluralName, val );\n\t\n\t\t_Api.register( singularName, function () {\n\t\t\tvar ret = val.apply( this, arguments );\n\t\n\t\t\tif ( ret === this ) {\n\t\t\t\t// Returned item is the API instance that was passed in, return it\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\telse if ( ret instanceof _Api ) {\n\t\t\t\t// New API instance returned, want the value from the first item\n\t\t\t\t// in the returned array for the singular result.\n\t\t\t\treturn ret.length ?\n\t\t\t\t\t$.isArray( ret[0] ) ?\n\t\t\t\t\t\tnew _Api( ret.context, ret[0] ) : // Array results are 'enhanced'\n\t\t\t\t\t\tret[0] :\n\t\t\t\t\tundefined;\n\t\t\t}\n\t\n\t\t\t// Non-API return - just fire it back\n\t\t\treturn ret;\n\t\t} );\n\t};\n\t\n\t\n\t/**\n\t * Selector for HTML tables. Apply the given selector to the give array of\n\t * DataTables settings objects.\n\t *\n\t * @param {string|integer} [selector] jQuery selector string or integer\n\t * @param  {array} Array of DataTables settings objects to be filtered\n\t * @return {array}\n\t * @ignore\n\t */\n\tvar __table_selector = function ( selector, a )\n\t{\n\t\t// Integer is used to pick out a table by index\n\t\tif ( typeof selector === 'number' ) {\n\t\t\treturn [ a[ selector ] ];\n\t\t}\n\t\n\t\t// Perform a jQuery selector on the table nodes\n\t\tvar nodes = $.map( a, function (el, i) {\n\t\t\treturn el.nTable;\n\t\t} );\n\t\n\t\treturn $(nodes)\n\t\t\t.filter( selector )\n\t\t\t.map( function (i) {\n\t\t\t\t// Need to translate back from the table node to the settings\n\t\t\t\tvar idx = $.inArray( this, nodes );\n\t\t\t\treturn a[ idx ];\n\t\t\t} )\n\t\t\t.toArray();\n\t};\n\t\n\t\n\t\n\t/**\n\t * Context selector for the API's context (i.e. the tables the API instance\n\t * refers to.\n\t *\n\t * @name    DataTable.Api#tables\n\t * @param {string|integer} [selector] Selector to pick which tables the iterator\n\t *   should operate on. If not given, all tables in the current context are\n\t *   used. This can be given as a jQuery selector (for example `':gt(0)'`) to\n\t *   select multiple tables or as an integer to select a single table.\n\t * @returns {DataTable.Api} Returns a new API instance if a selector is given.\n\t */\n\t_api_register( 'tables()', function ( selector ) {\n\t\t// A new instance is created if there was a selector specified\n\t\treturn selector ?\n\t\t\tnew _Api( __table_selector( selector, this.context ) ) :\n\t\t\tthis;\n\t} );\n\t\n\t\n\t_api_register( 'table()', function ( selector ) {\n\t\tvar tables = this.tables( selector );\n\t\tvar ctx = tables.context;\n\t\n\t\t// Truncate to the first matched table\n\t\treturn ctx.length ?\n\t\t\tnew _Api( ctx[0] ) :\n\t\t\ttables;\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().nodes()', 'table().node()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTable;\n\t\t} );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().body()', 'table().body()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTBody;\n\t\t} );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().header()', 'table().header()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTHead;\n\t\t} );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().footer()', 'table().footer()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTFoot;\n\t\t} );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'tables().containers()', 'table().container()' , function () {\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\treturn ctx.nTableWrapper;\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Redraw the tables in the current context.\n\t *\n\t * @param {boolean} [reset=true] Reset (default) or hold the current paging\n\t *   position. A full re-sort and re-filter is performed when this method is\n\t *   called, which is why the pagination reset is the default action.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'draw()', function ( resetPaging ) {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnReDraw( settings, resetPaging===false );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Get the current page index.\n\t *\n\t * @return {integer} Current page index (zero based)\n\t *//**\n\t * Set the current page.\n\t *\n\t * Note that if you attempt to show a page which does not exist, DataTables will\n\t * not throw an error, but rather reset the paging.\n\t *\n\t * @param {integer|string} action The paging action to take. This can be one of:\n\t *  * `integer` - The page index to jump to\n\t *  * `string` - An action to take:\n\t *    * `first` - Jump to first page.\n\t *    * `next` - Jump to the next page\n\t *    * `previous` - Jump to previous page\n\t *    * `last` - Jump to the last page.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'page()', function ( action ) {\n\t\tif ( action === undefined ) {\n\t\t\treturn this.page.info().page; // not an expensive call\n\t\t}\n\t\n\t\t// else, have an action to take on all tables\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnPageChange( settings, action );\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Paging information for the first table in the current context.\n\t *\n\t * If you require paging information for another table, use the `table()` method\n\t * with a suitable selector.\n\t *\n\t * @return {object} Object with the following properties set:\n\t *  * `page` - Current page index (zero based - i.e. the first page is `0`)\n\t *  * `pages` - Total number of pages\n\t *  * `start` - Display index for the first record shown on the current page\n\t *  * `end` - Display index for the last record shown on the current page\n\t *  * `length` - Display length (number of records). Note that generally `start\n\t *    + length = end`, but this is not always true, for example if there are\n\t *    only 2 records to show on the final page, with a length of 10.\n\t *  * `recordsTotal` - Full data set length\n\t *  * `recordsDisplay` - Data set length once the current filtering criterion\n\t *    are applied.\n\t */\n\t_api_register( 'page.info()', function ( action ) {\n\t\tif ( this.context.length === 0 ) {\n\t\t\treturn undefined;\n\t\t}\n\t\n\t\tvar\n\t\t\tsettings   = this.context[0],\n\t\t\tstart      = settings._iDisplayStart,\n\t\t\tlen        = settings._iDisplayLength,\n\t\t\tvisRecords = settings.fnRecordsDisplay(),\n\t\t\tall        = len === -1;\n\t\n\t\treturn {\n\t\t\t\"page\":           all ? 0 : Math.floor( start / len ),\n\t\t\t\"pages\":          all ? 1 : Math.ceil( visRecords / len ),\n\t\t\t\"start\":          start,\n\t\t\t\"end\":            settings.fnDisplayEnd(),\n\t\t\t\"length\":         len,\n\t\t\t\"recordsTotal\":   settings.fnRecordsTotal(),\n\t\t\t\"recordsDisplay\": visRecords\n\t\t};\n\t} );\n\t\n\t\n\t/**\n\t * Get the current page length.\n\t *\n\t * @return {integer} Current page length. Note `-1` indicates that all records\n\t *   are to be shown.\n\t *//**\n\t * Set the current page length.\n\t *\n\t * @param {integer} Page length to set. Use `-1` to show all records.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'page.len()', function ( len ) {\n\t\t// Note that we can't call this function 'length()' because `length`\n\t\t// is a Javascript property of functions which defines how many arguments\n\t\t// the function expects.\n\t\tif ( len === undefined ) {\n\t\t\treturn this.context.length !== 0 ?\n\t\t\t\tthis.context[0]._iDisplayLength :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// else, set the page length\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnLengthChange( settings, len );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\tvar __reload = function ( settings, holdPosition, callback ) {\n\t\tif ( _fnDataSource( settings ) == 'ssp' ) {\n\t\t\t_fnReDraw( settings, holdPosition );\n\t\t}\n\t\telse {\n\t\t\t// Trigger xhr\n\t\t\t_fnProcessingDisplay( settings, true );\n\t\n\t\t\t_fnBuildAjax( settings, [], function( json ) {\n\t\t\t\t_fnClearTable( settings );\n\t\n\t\t\t\tvar data = _fnAjaxDataSrc( settings, json );\n\t\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\t\t_fnAddData( settings, data[i] );\n\t\t\t\t}\n\t\n\t\t\t\t_fnReDraw( settings, holdPosition );\n\t\t\t\t_fnProcessingDisplay( settings, false );\n\t\t\t} );\n\t\t}\n\t\n\t\t// Use the draw event to trigger a callback, regardless of if it is an async\n\t\t// or sync draw\n\t\tif ( callback ) {\n\t\t\tvar api = new _Api( settings );\n\t\n\t\t\tapi.one( 'draw', function () {\n\t\t\t\tcallback( api.ajax.json() );\n\t\t\t} );\n\t\t}\n\t};\n\t\n\t\n\t/**\n\t * Get the JSON response from the last Ajax request that DataTables made to the\n\t * server. Note that this returns the JSON from the first table in the current\n\t * context.\n\t *\n\t * @return {object} JSON received from the server.\n\t */\n\t_api_register( 'ajax.json()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( ctx.length > 0 ) {\n\t\t\treturn ctx[0].json;\n\t\t}\n\t\n\t\t// else return undefined;\n\t} );\n\t\n\t\n\t/**\n\t * Get the data submitted in the last Ajax request\n\t */\n\t_api_register( 'ajax.params()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( ctx.length > 0 ) {\n\t\t\treturn ctx[0].oAjaxData;\n\t\t}\n\t\n\t\t// else return undefined;\n\t} );\n\t\n\t\n\t/**\n\t * Reload tables from the Ajax data source. Note that this function will\n\t * automatically re-draw the table when the remote data has been loaded.\n\t *\n\t * @param {boolean} [reset=true] Reset (default) or hold the current paging\n\t *   position. A full re-sort and re-filter is performed when this method is\n\t *   called, which is why the pagination reset is the default action.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.reload()', function ( callback, resetPaging ) {\n\t\treturn this.iterator( 'table', function (settings) {\n\t\t\t__reload( settings, resetPaging===false, callback );\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Get the current Ajax URL. Note that this returns the URL from the first\n\t * table in the current context.\n\t *\n\t * @return {string} Current Ajax source URL\n\t *//**\n\t * Set the Ajax URL. Note that this will set the URL for all tables in the\n\t * current context.\n\t *\n\t * @param {string} url URL to set.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.url()', function ( url ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( url === undefined ) {\n\t\t\t// get\n\t\t\tif ( ctx.length === 0 ) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tctx = ctx[0];\n\t\n\t\t\treturn ctx.ajax ?\n\t\t\t\t$.isPlainObject( ctx.ajax ) ?\n\t\t\t\t\tctx.ajax.url :\n\t\t\t\t\tctx.ajax :\n\t\t\t\tctx.sAjaxSource;\n\t\t}\n\t\n\t\t// set\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tif ( $.isPlainObject( settings.ajax ) ) {\n\t\t\t\tsettings.ajax.url = url;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsettings.ajax = url;\n\t\t\t}\n\t\t\t// No need to consider sAjaxSource here since DataTables gives priority\n\t\t\t// to `ajax` over `sAjaxSource`. So setting `ajax` here, renders any\n\t\t\t// value of `sAjaxSource` redundant.\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Load data from the newly set Ajax URL. Note that this method is only\n\t * available when `ajax.url()` is used to set a URL. Additionally, this method\n\t * has the same effect as calling `ajax.reload()` but is provided for\n\t * convenience when setting a new URL. Like `ajax.reload()` it will\n\t * automatically redraw the table once the remote data has been loaded.\n\t *\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'ajax.url().load()', function ( callback, resetPaging ) {\n\t\t// Same as a reload, but makes sense to present it for easy access after a\n\t\t// url change\n\t\treturn this.iterator( 'table', function ( ctx ) {\n\t\t\t__reload( ctx, resetPaging===false, callback );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t\n\tvar _selector_run = function ( selector, select )\n\t{\n\t\tvar\n\t\t\tout = [], res,\n\t\t\ta, i, ien, j, jen;\n\t\n\t\t// Can't just check for isArray here, as an API or jQuery instance might be\n\t\t// given with their array like look\n\t\tif ( ! selector || typeof selector === 'string' || selector.length === undefined ) {\n\t\t\tselector = [ selector ];\n\t\t}\n\t\n\t\tfor ( i=0, ien=selector.length ; i<ien ; i++ ) {\n\t\t\ta = selector[i] && selector[i].split ?\n\t\t\t\tselector[i].split(',') :\n\t\t\t\t[ selector[i] ];\n\t\n\t\t\tfor ( j=0, jen=a.length ; j<jen ; j++ ) {\n\t\t\t\tres = select( typeof a[j] === 'string' ? $.trim(a[j]) : a[j] );\n\t\n\t\t\t\tif ( res && res.length ) {\n\t\t\t\t\tout.push.apply( out, res );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn out;\n\t};\n\t\n\t\n\tvar _selector_opts = function ( opts )\n\t{\n\t\tif ( ! opts ) {\n\t\t\topts = {};\n\t\t}\n\t\n\t\t// Backwards compatibility for 1.9- which used the terminology filter rather\n\t\t// than search\n\t\tif ( opts.filter && ! opts.search ) {\n\t\t\topts.search = opts.filter;\n\t\t}\n\t\n\t\treturn {\n\t\t\tsearch: opts.search || 'none',\n\t\t\torder:  opts.order  || 'current',\n\t\t\tpage:   opts.page   || 'all'\n\t\t};\n\t};\n\t\n\t\n\tvar _selector_first = function ( inst )\n\t{\n\t\t// Reduce the API instance to the first item found\n\t\tfor ( var i=0, ien=inst.length ; i<ien ; i++ ) {\n\t\t\tif ( inst[i].length > 0 ) {\n\t\t\t\t// Assign the first element to the first item in the instance\n\t\t\t\t// and truncate the instance and context\n\t\t\t\tinst[0] = inst[i];\n\t\t\t\tinst.length = 1;\n\t\t\t\tinst.context = [ inst.context[i] ];\n\t\n\t\t\t\treturn inst;\n\t\t\t}\n\t\t}\n\t\n\t\t// Not found - return an empty instance\n\t\tinst.length = 0;\n\t\treturn inst;\n\t};\n\t\n\t\n\tvar _selector_row_indexes = function ( settings, opts )\n\t{\n\t\tvar\n\t\t\ti, ien, tmp, a=[],\n\t\t\tdisplayFiltered = settings.aiDisplay,\n\t\t\tdisplayMaster = settings.aiDisplayMaster;\n\t\n\t\tvar\n\t\t\tsearch = opts.search,  // none, applied, removed\n\t\t\torder  = opts.order,   // applied, current, index (original - compatibility with 1.9)\n\t\t\tpage   = opts.page;    // all, current\n\t\n\t\tif ( _fnDataSource( settings ) == 'ssp' ) {\n\t\t\t// In server-side processing mode, most options are irrelevant since\n\t\t\t// rows not shown don't exist and the index order is the applied order\n\t\t\t// Removed is a special case - for consistency just return an empty\n\t\t\t// array\n\t\t\treturn search === 'removed' ?\n\t\t\t\t[] :\n\t\t\t\t_range( 0, displayMaster.length );\n\t\t}\n\t\telse if ( page == 'current' ) {\n\t\t\t// Current page implies that order=current and fitler=applied, since it is\n\t\t\t// fairly senseless otherwise, regardless of what order and search actually\n\t\t\t// are\n\t\t\tfor ( i=settings._iDisplayStart, ien=settings.fnDisplayEnd() ; i<ien ; i++ ) {\n\t\t\t\ta.push( displayFiltered[i] );\n\t\t\t}\n\t\t}\n\t\telse if ( order == 'current' || order == 'applied' ) {\n\t\t\ta = search == 'none' ?\n\t\t\t\tdisplayMaster.slice() :                      // no search\n\t\t\t\tsearch == 'applied' ?\n\t\t\t\t\tdisplayFiltered.slice() :                // applied search\n\t\t\t\t\t$.map( displayMaster, function (el, i) { // removed search\n\t\t\t\t\t\treturn $.inArray( el, displayFiltered ) === -1 ? el : null;\n\t\t\t\t\t} );\n\t\t}\n\t\telse if ( order == 'index' || order == 'original' ) {\n\t\t\tfor ( i=0, ien=settings.aoData.length ; i<ien ; i++ ) {\n\t\t\t\tif ( search == 'none' ) {\n\t\t\t\t\ta.push( i );\n\t\t\t\t}\n\t\t\t\telse { // applied | removed\n\t\t\t\t\ttmp = $.inArray( i, displayFiltered );\n\t\n\t\t\t\t\tif ((tmp === -1 && search == 'removed') ||\n\t\t\t\t\t\t(tmp >= 0   && search == 'applied') )\n\t\t\t\t\t{\n\t\t\t\t\t\ta.push( i );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\treturn a;\n\t};\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Rows\n\t *\n\t * {}          - no selector - use all available rows\n\t * {integer}   - row aoData index\n\t * {node}      - TR node\n\t * {string}    - jQuery selector to apply to the TR elements\n\t * {array}     - jQuery array of nodes, or simply an array of TR nodes\n\t *\n\t */\n\t\n\t\n\tvar __row_selector = function ( settings, selector, opts )\n\t{\n\t\treturn _selector_run( selector, function ( sel ) {\n\t\t\tvar selInt = _intVal( sel );\n\t\n\t\t\t// Short cut - selector is a number and no options provided (default is\n\t\t\t// all records, so no need to check if the index is in there, since it\n\t\t\t// must be - dev error if the index doesn't exist).\n\t\t\tif ( selInt !== null && ! opts ) {\n\t\t\t\treturn [ selInt ];\n\t\t\t}\n\t\n\t\t\tvar rows = _selector_row_indexes( settings, opts );\n\t\n\t\t\tif ( selInt !== null && $.inArray( selInt, rows ) !== -1 ) {\n\t\t\t\t// Selector - integer\n\t\t\t\treturn [ selInt ];\n\t\t\t}\n\t\t\telse if ( ! sel ) {\n\t\t\t\t// Selector - none\n\t\t\t\treturn rows;\n\t\t\t}\n\t\n\t\t\t// Get nodes in the order from the `rows` array (can't use `pluck`) @todo - use pluck_order\n\t\t\tvar nodes = [];\n\t\t\tfor ( var i=0, ien=rows.length ; i<ien ; i++ ) {\n\t\t\t\tnodes.push( settings.aoData[ rows[i] ].nTr );\n\t\t\t}\n\t\n\t\t\tif ( sel.nodeName ) {\n\t\t\t\t// Selector - node\n\t\t\t\tif ( $.inArray( sel, nodes ) !== -1 ) {\n\t\t\t\t\treturn [ sel._DT_RowIndex ];// sel is a TR node that is in the table\n\t\t\t\t\t\t\t\t\t\t\t// and DataTables adds a prop for fast lookup\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Selector - jQuery selector string, array of nodes or jQuery object/\n\t\t\t// As jQuery's .filter() allows jQuery objects to be passed in filter,\n\t\t\t// it also allows arrays, so this will cope with all three options\n\t\t\treturn $(nodes)\n\t\t\t\t.filter( sel )\n\t\t\t\t.map( function () {\n\t\t\t\t\treturn this._DT_RowIndex;\n\t\t\t\t} )\n\t\t\t\t.toArray();\n\t\t} );\n\t};\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_register( 'rows()', function ( selector, opts ) {\n\t\t// argument shifting\n\t\tif ( selector === undefined ) {\n\t\t\tselector = '';\n\t\t}\n\t\telse if ( $.isPlainObject( selector ) ) {\n\t\t\topts = selector;\n\t\t\tselector = '';\n\t\t}\n\t\n\t\topts = _selector_opts( opts );\n\t\n\t\tvar inst = this.iterator( 'table', function ( settings ) {\n\t\t\treturn __row_selector( settings, selector, opts );\n\t\t} );\n\t\n\t\t// Want argument shifting here and in __row_selector?\n\t\tinst.selector.rows = selector;\n\t\tinst.selector.opts = opts;\n\t\n\t\treturn inst;\n\t} );\n\t\n\t\n\t_api_register( 'rows().nodes()', function () {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\treturn settings.aoData[ row ].nTr || undefined;\n\t\t} );\n\t} );\n\t\n\t_api_register( 'rows().data()', function () {\n\t\treturn this.iterator( true, 'rows', function ( settings, rows ) {\n\t\t\treturn _pluck_order( settings.aoData, rows, '_aData' );\n\t\t} );\n\t} );\n\t\n\t_api_registerPlural( 'rows().cache()', 'row().cache()', function ( type ) {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\tvar r = settings.aoData[ row ];\n\t\t\treturn type === 'search' ? r._aFilterData : r._aSortData;\n\t\t} );\n\t} );\n\t\n\t_api_registerPlural( 'rows().invalidate()', 'row().invalidate()', function ( src ) {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\t_fnInvalidateRow( settings, row, src );\n\t\t} );\n\t} );\n\t\n\t_api_registerPlural( 'rows().indexes()', 'row().index()', function () {\n\t\treturn this.iterator( 'row', function ( settings, row ) {\n\t\t\treturn row;\n\t\t} );\n\t} );\n\t\n\t_api_registerPlural( 'rows().remove()', 'row().remove()', function () {\n\t\tvar that = this;\n\t\n\t\treturn this.iterator( 'row', function ( settings, row, thatIdx ) {\n\t\t\tvar data = settings.aoData;\n\t\n\t\t\tdata.splice( row, 1 );\n\t\n\t\t\t// Update the _DT_RowIndex parameter on all rows in the table\n\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\tif ( data[i].nTr !== null ) {\n\t\t\t\t\tdata[i].nTr._DT_RowIndex = i;\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\t// Remove the target row from the search array\n\t\t\tvar displayIndex = $.inArray( row, settings.aiDisplay );\n\t\n\t\t\t// Delete from the display arrays\n\t\t\t_fnDeleteIndex( settings.aiDisplayMaster, row );\n\t\t\t_fnDeleteIndex( settings.aiDisplay, row );\n\t\t\t_fnDeleteIndex( that[ thatIdx ], row, false ); // maintain local indexes\n\t\n\t\t\t// Check for an 'overflow' they case for displaying the table\n\t\t\t_fnLengthOverflow( settings );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'rows.add()', function ( rows ) {\n\t\tvar newRows = this.iterator( 'table', function ( settings ) {\n\t\t\t\tvar row, i, ien;\n\t\t\t\tvar out = [];\n\t\n\t\t\t\tfor ( i=0, ien=rows.length ; i<ien ; i++ ) {\n\t\t\t\t\trow = rows[i];\n\t\n\t\t\t\t\tif ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {\n\t\t\t\t\t\tout.push( _fnAddTr( settings, row )[0] );\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tout.push( _fnAddData( settings, row ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn out;\n\t\t\t} );\n\t\n\t\t// Return an Api.rows() extended instance, so rows().nodes() etc can be used\n\t\tvar modRows = this.rows( -1 );\n\t\tmodRows.pop();\n\t\tmodRows.push.apply( modRows, newRows.toArray() );\n\t\n\t\treturn modRows;\n\t} );\n\t\n\t\n\t\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_register( 'row()', function ( selector, opts ) {\n\t\treturn _selector_first( this.rows( selector, opts ) );\n\t} );\n\t\n\t\n\t_api_register( 'row().data()', function ( data ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( data === undefined ) {\n\t\t\t// Get\n\t\t\treturn ctx.length && this.length ?\n\t\t\t\tctx[0].aoData[ this[0] ]._aData :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// Set\n\t\tctx[0].aoData[ this[0] ]._aData = data;\n\t\n\t\t// Automatically invalidate\n\t\t_fnInvalidateRow( ctx[0], this[0], 'data' );\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( 'row().node()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\treturn ctx.length && this.length ?\n\t\t\tctx[0].aoData[ this[0] ].nTr || null :\n\t\t\tnull;\n\t} );\n\t\n\t\n\t_api_register( 'row.add()', function ( row ) {\n\t\t// Allow a jQuery object to be passed in - only a single row is added from\n\t\t// it though - the first element in the set\n\t\tif ( row instanceof $ && row.length ) {\n\t\t\trow = row[0];\n\t\t}\n\t\n\t\tvar rows = this.iterator( 'table', function ( settings ) {\n\t\t\tif ( row.nodeName && row.nodeName.toUpperCase() === 'TR' ) {\n\t\t\t\treturn _fnAddTr( settings, row )[0];\n\t\t\t}\n\t\t\treturn _fnAddData( settings, row );\n\t\t} );\n\t\n\t\t// Return an Api.rows() extended instance, with the newly added row selected\n\t\treturn this.row( rows[0] );\n\t} );\n\t\n\t\n\t\n\tvar __details_add = function ( ctx, row, data, klass )\n\t{\n\t\t// Convert to array of TR elements\n\t\tvar rows = [];\n\t\tvar addRow = function ( r, k ) {\n\t\t\t// If we get a TR element, then just add it directly - up to the dev\n\t\t\t// to add the correct number of columns etc\n\t\t\tif ( r.nodeName && r.nodeName.toLowerCase() === 'tr' ) {\n\t\t\t\trows.push( r );\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Otherwise create a row with a wrapper\n\t\t\t\tvar created = $('<tr><td/></tr>').addClass( k );\n\t\t\t\t$('td', created)\n\t\t\t\t\t.addClass( k )\n\t\t\t\t\t.html( r )\n\t\t\t\t\t[0].colSpan = _fnVisbleColumns( ctx );\n\t\n\t\t\t\trows.push( created[0] );\n\t\t\t}\n\t\t};\n\t\n\t\tif ( $.isArray( data ) || data instanceof $ ) {\n\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\taddRow( data[i], klass );\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\taddRow( data, klass );\n\t\t}\n\t\n\t\tif ( row._details ) {\n\t\t\trow._details.remove();\n\t\t}\n\t\n\t\trow._details = $(rows);\n\t\n\t\t// If the children were already shown, that state should be retained\n\t\tif ( row._detailsShow ) {\n\t\t\trow._details.insertAfter( row.nTr );\n\t\t}\n\t};\n\t\n\t\n\tvar __details_remove = function ( api )\n\t{\n\t\tvar ctx = api.context;\n\t\n\t\tif ( ctx.length && api.length ) {\n\t\t\tvar row = ctx[0].aoData[ api[0] ];\n\t\n\t\t\tif ( row._details ) {\n\t\t\t\trow._details.remove();\n\t\n\t\t\t\trow._detailsShow = undefined;\n\t\t\t\trow._details = undefined;\n\t\t\t}\n\t\t}\n\t};\n\t\n\t\n\tvar __details_display = function ( api, show ) {\n\t\tvar ctx = api.context;\n\t\n\t\tif ( ctx.length && api.length ) {\n\t\t\tvar row = ctx[0].aoData[ api[0] ];\n\t\n\t\t\tif ( row._details ) {\n\t\t\t\trow._detailsShow = show;\n\t\n\t\t\t\tif ( show ) {\n\t\t\t\t\trow._details.insertAfter( row.nTr );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\trow._details.detach();\n\t\t\t\t}\n\t\n\t\t\t\t__details_events( ctx[0] );\n\t\t\t}\n\t\t}\n\t};\n\t\n\t\n\tvar __details_events = function ( settings )\n\t{\n\t\tvar api = new _Api( settings );\n\t\tvar namespace = '.dt.DT_details';\n\t\tvar drawEvent = 'draw'+namespace;\n\t\tvar colvisEvent = 'column-visibility'+namespace;\n\t\tvar destroyEvent = 'destroy'+namespace;\n\t\tvar data = settings.aoData;\n\t\n\t\tapi.off( drawEvent +' '+ colvisEvent +' '+ destroyEvent );\n\t\n\t\tif ( _pluck( data, '_details' ).length > 0 ) {\n\t\t\t// On each draw, insert the required elements into the document\n\t\t\tapi.on( drawEvent, function ( e, ctx ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tapi.rows( {page:'current'} ).eq(0).each( function (idx) {\n\t\t\t\t\t// Internal data grab\n\t\t\t\t\tvar row = data[ idx ];\n\t\n\t\t\t\t\tif ( row._detailsShow ) {\n\t\t\t\t\t\trow._details.insertAfter( row.nTr );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t} );\n\t\n\t\t\t// Column visibility change - update the colspan\n\t\t\tapi.on( colvisEvent, function ( e, ctx, idx, vis ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t// Update the colspan for the details rows (note, only if it already has\n\t\t\t\t// a colspan)\n\t\t\t\tvar row, visible = _fnVisbleColumns( ctx );\n\t\n\t\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\t\trow = data[i];\n\t\n\t\t\t\t\tif ( row._details ) {\n\t\t\t\t\t\trow._details.children('td[colspan]').attr('colspan', visible );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\n\t\t\t// Table destroyed - nuke any child rows\n\t\t\tapi.on( destroyEvent, function ( e, ctx ) {\n\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\tfor ( var i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\t\tif ( data[i]._details ) {\n\t\t\t\t\t\t__details_remove( data[i] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t};\n\t\n\t// Strings for the method names to help minification\n\tvar _emp = '';\n\tvar _child_obj = _emp+'row().child';\n\tvar _child_mth = _child_obj+'()';\n\t\n\t// data can be:\n\t//  tr\n\t//  string\n\t//  jQuery or array of any of the above\n\t_api_register( _child_mth, function ( data, klass ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( data === undefined ) {\n\t\t\t// get\n\t\t\treturn ctx.length && this.length ?\n\t\t\t\tctx[0].aoData[ this[0] ]._details :\n\t\t\t\tundefined;\n\t\t}\n\t\telse if ( data === true ) {\n\t\t\t// show\n\t\t\tthis.child.show();\n\t\t}\n\t\telse if ( data === false ) {\n\t\t\t// remove\n\t\t\t__details_remove( this );\n\t\t}\n\t\telse if ( ctx.length && this.length ) {\n\t\t\t// set\n\t\t\t__details_add( ctx[0], ctx[0].aoData[ this[0] ], data, klass );\n\t\t}\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( [\n\t\t_child_obj+'.show()',\n\t\t_child_mth+'.show()' // only when `child()` was called with parameters (without\n\t], function ( show ) {   // it returns an object and this method is not executed)\n\t\t__details_display( this, true );\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( [\n\t\t_child_obj+'.hide()',\n\t\t_child_mth+'.hide()' // only when `child()` was called with parameters (without\n\t], function () {         // it returns an object and this method is not executed)\n\t\t__details_display( this, false );\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( [\n\t\t_child_obj+'.remove()',\n\t\t_child_mth+'.remove()' // only when `child()` was called with parameters (without\n\t], function () {           // it returns an object and this method is not executed)\n\t\t__details_remove( this );\n\t\treturn this;\n\t} );\n\t\n\t\n\t_api_register( _child_obj+'.isShown()', function () {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( ctx.length && this.length ) {\n\t\t\t// _detailsShown as false or undefined will fall through to return false\n\t\t\treturn ctx[0].aoData[ this[0] ]._detailsShow || false;\n\t\t}\n\t\treturn false;\n\t} );\n\t\n\t\n\t\n\t/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\t * Columns\n\t *\n\t * {integer}           - column index (>=0 count from left, <0 count from right)\n\t * \"{integer}:visIdx\"  - visible column index (i.e. translate to column index)  (>=0 count from left, <0 count from right)\n\t * \"{integer}:visible\" - alias for {integer}:visIdx  (>=0 count from left, <0 count from right)\n\t * \"{string}:name\"     - column name\n\t * \"{string}\"          - jQuery selector on column header nodes\n\t *\n\t */\n\t\n\t// can be an array of these items, comma separated list, or an array of comma\n\t// separated lists\n\t\n\tvar __re_column_selector = /^(.+):(name|visIdx|visible)$/;\n\t\n\tvar __column_selector = function ( settings, selector, opts )\n\t{\n\t\tvar\n\t\t\tcolumns = settings.aoColumns,\n\t\t\tnames = _pluck( columns, 'sName' ),\n\t\t\tnodes = _pluck( columns, 'nTh' );\n\t\n\t\treturn _selector_run( selector, function ( s ) {\n\t\t\tvar selInt = _intVal( s );\n\t\n\t\t\tif ( s === '' ) {\n\t\t\t\t// All columns\n\t\t\t\treturn _range( columns.length );\n\t\t\t}\n\t\t\telse if ( selInt !== null ) {\n\t\t\t\t// Integer selector\n\t\t\t\treturn [ selInt >= 0 ?\n\t\t\t\t\tselInt : // Count from left\n\t\t\t\t\tcolumns.length + selInt // Count from right (+ because its a negative value)\n\t\t\t\t];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tvar match = typeof s === 'string' ?\n\t\t\t\t\ts.match( __re_column_selector ) :\n\t\t\t\t\t'';\n\t\n\t\t\t\tif ( match ) {\n\t\t\t\t\tswitch( match[2] ) {\n\t\t\t\t\t\tcase 'visIdx':\n\t\t\t\t\t\tcase 'visible':\n\t\t\t\t\t\t\tvar idx = parseInt( match[1], 10 );\n\t\t\t\t\t\t\t// Visible index given, convert to column index\n\t\t\t\t\t\t\tif ( idx < 0 ) {\n\t\t\t\t\t\t\t\t// Counting from the right\n\t\t\t\t\t\t\t\tvar visColumns = $.map( columns, function (col,i) {\n\t\t\t\t\t\t\t\t\treturn col.bVisible ? i : null;\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\treturn [ visColumns[ visColumns.length + idx ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Counting from the left\n\t\t\t\t\t\t\treturn [ _fnVisibleToColumnIndex( settings, idx ) ];\n\t\n\t\t\t\t\t\tcase 'name':\n\t\t\t\t\t\t\t// match by name. `names` is column index complete and in order\n\t\t\t\t\t\t\treturn $.map( names, function (name, i) {\n\t\t\t\t\t\t\t\treturn name === match[1] ? i : null;\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// jQuery selector on the TH elements for the columns\n\t\t\t\t\treturn $( nodes )\n\t\t\t\t\t\t.filter( s )\n\t\t\t\t\t\t.map( function () {\n\t\t\t\t\t\t\treturn $.inArray( this, nodes ); // `nodes` is column index complete and in order\n\t\t\t\t\t\t} )\n\t\t\t\t\t\t.toArray();\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t};\n\t\n\t\n\t\n\t\n\t\n\tvar __setColumnVis = function ( settings, column, vis, recalc ) {\n\t\tvar\n\t\t\tcols = settings.aoColumns,\n\t\t\tcol  = cols[ column ],\n\t\t\tdata = settings.aoData,\n\t\t\trow, cells, i, ien, tr;\n\t\n\t\t// Get\n\t\tif ( vis === undefined ) {\n\t\t\treturn col.bVisible;\n\t\t}\n\t\n\t\t// Set\n\t\t// No change\n\t\tif ( col.bVisible === vis ) {\n\t\t\treturn;\n\t\t}\n\t\n\t\tif ( vis ) {\n\t\t\t// Insert column\n\t\t\t// Need to decide if we should use appendChild or insertBefore\n\t\t\tvar insertBefore = $.inArray( true, _pluck(cols, 'bVisible'), column+1 );\n\t\n\t\t\tfor ( i=0, ien=data.length ; i<ien ; i++ ) {\n\t\t\t\ttr = data[i].nTr;\n\t\t\t\tcells = data[i].anCells;\n\t\n\t\t\t\tif ( tr ) {\n\t\t\t\t\t// insertBefore can act like appendChild if 2nd arg is null\n\t\t\t\t\ttr.insertBefore( cells[ column ], cells[ insertBefore ] || null );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t// Remove column\n\t\t\t$( _pluck( settings.aoData, 'anCells', column ) ).detach();\n\t\t}\n\t\n\t\t// Common actions\n\t\tcol.bVisible = vis;\n\t\t_fnDrawHead( settings, settings.aoHeader );\n\t\t_fnDrawHead( settings, settings.aoFooter );\n\t\n\t\tif ( recalc === undefined || recalc ) {\n\t\t\t// Automatically adjust column sizing\n\t\t\t_fnAdjustColumnSizing( settings );\n\t\n\t\t\t// Realign columns for scrolling\n\t\t\tif ( settings.oScroll.sX || settings.oScroll.sY ) {\n\t\t\t\t_fnScrollDraw( settings );\n\t\t\t}\n\t\t}\n\t\n\t\t_fnCallbackFire( settings, null, 'column-visibility', [settings, column, vis] );\n\t\n\t\t_fnSaveState( settings );\n\t};\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_register( 'columns()', function ( selector, opts ) {\n\t\t// argument shifting\n\t\tif ( selector === undefined ) {\n\t\t\tselector = '';\n\t\t}\n\t\telse if ( $.isPlainObject( selector ) ) {\n\t\t\topts = selector;\n\t\t\tselector = '';\n\t\t}\n\t\n\t\topts = _selector_opts( opts );\n\t\n\t\tvar inst = this.iterator( 'table', function ( settings ) {\n\t\t\treturn __column_selector( settings, selector, opts );\n\t\t} );\n\t\n\t\t// Want argument shifting here and in _row_selector?\n\t\tinst.selector.cols = selector;\n\t\tinst.selector.opts = opts;\n\t\n\t\treturn inst;\n\t} );\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_registerPlural( 'columns().header()', 'column().header()', function ( selector, opts ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn settings.aoColumns[column].nTh;\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_registerPlural( 'columns().footer()', 'column().footer()', function ( selector, opts ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn settings.aoColumns[column].nTf;\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_registerPlural( 'columns().data()', 'column().data()', function () {\n\t\treturn this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {\n\t\t\tvar a = [];\n\t\t\tfor ( var row=0, ien=rows.length ; row<ien ; row++ ) {\n\t\t\t\ta.push( _fnGetCellData( settings, rows[row], column, '' ) );\n\t\t\t}\n\t\t\treturn a;\n\t\t} );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'columns().cache()', 'column().cache()', function ( type ) {\n\t\treturn this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {\n\t\t\treturn _pluck_order( settings.aoData, rows,\n\t\t\t\ttype === 'search' ? '_aFilterData' : '_aSortData', column\n\t\t\t);\n\t\t} );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'columns().nodes()', 'column().nodes()', function () {\n\t\treturn this.iterator( 'column-rows', function ( settings, column, i, j, rows ) {\n\t\t\treturn _pluck_order( settings.aoData, rows, 'anCells', column ) ;\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t_api_registerPlural( 'columns().visible()', 'column().visible()', function ( vis, calc ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn vis === undefined ?\n\t\t\t\tsettings.aoColumns[ column ].bVisible :\n\t\t\t\t__setColumnVis( settings, column, vis, calc );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t_api_registerPlural( 'columns().indexes()', 'column().index()', function ( type ) {\n\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\treturn type === 'visible' ?\n\t\t\t\t_fnColumnIndexToVisible( settings, column ) :\n\t\t\t\tcolumn;\n\t\t} );\n\t} );\n\t\n\t\n\t// _api_register( 'columns().show()', function () {\n\t// \tvar selector = this.selector;\n\t// \treturn this.columns( selector.cols, selector.opts ).visible( true );\n\t// } );\n\t\n\t\n\t// _api_register( 'columns().hide()', function () {\n\t// \tvar selector = this.selector;\n\t// \treturn this.columns( selector.cols, selector.opts ).visible( false );\n\t// } );\n\t\n\t\n\t\n\t_api_register( 'columns.adjust()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnAdjustColumnSizing( settings );\n\t\t} );\n\t} );\n\t\n\t\n\t// Convert from one column index type, to another type\n\t_api_register( 'column.index()', function ( type, idx ) {\n\t\tif ( this.context.length !== 0 ) {\n\t\t\tvar ctx = this.context[0];\n\t\n\t\t\tif ( type === 'fromVisible' || type === 'toData' ) {\n\t\t\t\treturn _fnVisibleToColumnIndex( ctx, idx );\n\t\t\t}\n\t\t\telse if ( type === 'fromData' || type === 'toVisible' ) {\n\t\t\t\treturn _fnColumnIndexToVisible( ctx, idx );\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t\n\t_api_register( 'column()', function ( selector, opts ) {\n\t\treturn _selector_first( this.columns( selector, opts ) );\n\t} );\n\t\n\t\n\t\n\t\n\tvar __cell_selector = function ( settings, selector, opts )\n\t{\n\t\tvar data = settings.aoData;\n\t\tvar rows = _selector_row_indexes( settings, opts );\n\t\tvar cells = _pluck_order( data, rows, 'anCells' );\n\t\tvar allCells = $( [].concat.apply([], cells) );\n\t\tvar row;\n\t\tvar columns = settings.aoColumns.length;\n\t\tvar a, i, ien, j;\n\t\n\t\treturn _selector_run( selector, function ( s ) {\n\t\t\tif ( s === null || s === undefined ) {\n\t\t\t\t// All cells\n\t\t\t\ta = [];\n\t\n\t\t\t\tfor ( i=0, ien=rows.length ; i<ien ; i++ ) {\n\t\t\t\t\trow = rows[i];\n\t\n\t\t\t\t\tfor ( j=0 ; j<columns ; j++ ) {\n\t\t\t\t\t\ta.push( {\n\t\t\t\t\t\t\trow: row,\n\t\t\t\t\t\t\tcolumn: j\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\n\t\t\t\treturn a;\n\t\t\t}\n\t\t\telse if ( $.isPlainObject( s ) ) {\n\t\t\t\treturn [s];\n\t\t\t}\n\t\n\t\t\t// jQuery filtered cells\n\t\t\treturn allCells\n\t\t\t\t.filter( s )\n\t\t\t\t.map( function (i, el) {\n\t\t\t\t\trow = el.parentNode._DT_RowIndex;\n\t\n\t\t\t\t\treturn {\n\t\t\t\t\t\trow: row,\n\t\t\t\t\t\tcolumn: $.inArray( el, data[ row ].anCells )\n\t\t\t\t\t};\n\t\t\t\t} )\n\t\t\t\t.toArray();\n\t\t} );\n\t};\n\t\n\t\n\t\n\t\n\t_api_register( 'cells()', function ( rowSelector, columnSelector, opts ) {\n\t\t// Argument shifting\n\t\tif ( $.isPlainObject( rowSelector ) ) {\n\t\t\t// Indexes\n\t\t\tif ( typeof rowSelector.row !== undefined ) {\n\t\t\t\topts = columnSelector;\n\t\t\t\tcolumnSelector = null;\n\t\t\t}\n\t\t\telse {\n\t\t\t\topts = rowSelector;\n\t\t\t\trowSelector = null;\n\t\t\t}\n\t\t}\n\t\tif ( $.isPlainObject( columnSelector ) ) {\n\t\t\topts = columnSelector;\n\t\t\tcolumnSelector = null;\n\t\t}\n\t\n\t\t// Cell selector\n\t\tif ( columnSelector === null || columnSelector === undefined ) {\n\t\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t\treturn __cell_selector( settings, rowSelector, _selector_opts( opts ) );\n\t\t\t} );\n\t\t}\n\t\n\t\t// Row + column selector\n\t\tvar columns = this.columns( columnSelector, opts );\n\t\tvar rows = this.rows( rowSelector, opts );\n\t\tvar a, i, ien, j, jen;\n\t\n\t\tvar cells = this.iterator( 'table', function ( settings, idx ) {\n\t\t\ta = [];\n\t\n\t\t\tfor ( i=0, ien=rows[idx].length ; i<ien ; i++ ) {\n\t\t\t\tfor ( j=0, jen=columns[idx].length ; j<jen ; j++ ) {\n\t\t\t\t\ta.push( {\n\t\t\t\t\t\trow:    rows[idx][i],\n\t\t\t\t\t\tcolumn: columns[idx][j]\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\n\t\t\treturn a;\n\t\t} );\n\t\n\t\t$.extend( cells.selector, {\n\t\t\tcols: columnSelector,\n\t\t\trows: rowSelector,\n\t\t\topts: opts\n\t\t} );\n\t\n\t\treturn cells;\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().nodes()', 'cell().node()', function () {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn settings.aoData[ row ].anCells[ column ];\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'cells().data()', function () {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn _fnGetCellData( settings, row, column );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().cache()', 'cell().cache()', function ( type ) {\n\t\ttype = type === 'search' ? '_aFilterData' : '_aSortData';\n\t\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn settings.aoData[ row ][ type ][ column ];\n\t\t} );\n\t} );\n\t\n\t\n\t_api_registerPlural( 'cells().indexes()', 'cell().index()', function () {\n\t\treturn this.iterator( 'cell', function ( settings, row, column ) {\n\t\t\treturn {\n\t\t\t\trow: row,\n\t\t\t\tcolumn: column,\n\t\t\t\tcolumnVisible: _fnColumnIndexToVisible( settings, column )\n\t\t\t};\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( [\n\t\t'cells().invalidate()',\n\t\t'cell().invalidate()'\n\t], function ( src ) {\n\t\tvar selector = this.selector;\n\t\n\t\t// Use the rows method of the instance to perform the invalidation, rather\n\t\t// than doing it here. This avoids needing to handle duplicate rows from\n\t\t// the cells.\n\t\tthis.rows( selector.rows, selector.opts ).invalidate( src );\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t\n\t\n\t_api_register( 'cell()', function ( rowSelector, columnSelector, opts ) {\n\t\treturn _selector_first( this.cells( rowSelector, columnSelector, opts ) );\n\t} );\n\t\n\t\n\t\n\t_api_register( 'cell().data()', function ( data ) {\n\t\tvar ctx = this.context;\n\t\tvar cell = this[0];\n\t\n\t\tif ( data === undefined ) {\n\t\t\t// Get\n\t\t\treturn ctx.length && cell.length ?\n\t\t\t\t_fnGetCellData( ctx[0], cell[0].row, cell[0].column ) :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// Set\n\t\t_fnSetCellData( ctx[0], cell[0].row, cell[0].column, data );\n\t\t_fnInvalidateRow( ctx[0], cell[0].row, 'data', cell[0].column );\n\t\n\t\treturn this;\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Get current ordering (sorting) that has been applied to the table.\n\t *\n\t * @returns {array} 2D array containing the sorting information for the first\n\t *   table in the current context. Each element in the parent array represents\n\t *   a column being sorted upon (i.e. multi-sorting with two columns would have\n\t *   2 inner arrays). The inner arrays may have 2 or 3 elements. The first is\n\t *   the column index that the sorting condition applies to, the second is the\n\t *   direction of the sort (`desc` or `asc`) and, optionally, the third is the\n\t *   index of the sorting order from the `column.sorting` initialisation array.\n\t *//**\n\t * Set the ordering for the table.\n\t *\n\t * @param {integer} order Column index to sort upon.\n\t * @param {string} direction Direction of the sort to be applied (`asc` or `desc`)\n\t * @returns {DataTables.Api} this\n\t *//**\n\t * Set the ordering for the table.\n\t *\n\t * @param {array} order 1D array of sorting information to be applied.\n\t * @param {array} [...] Optional additional sorting conditions\n\t * @returns {DataTables.Api} this\n\t *//**\n\t * Set the ordering for the table.\n\t *\n\t * @param {array} order 2D array of sorting information to be applied.\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'order()', function ( order, dir ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( order === undefined ) {\n\t\t\t// get\n\t\t\treturn ctx.length !== 0 ?\n\t\t\t\tctx[0].aaSorting :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// set\n\t\tif ( typeof order === 'number' ) {\n\t\t\t// Simple column / direction passed in\n\t\t\torder = [ [ order, dir ] ];\n\t\t}\n\t\telse if ( ! $.isArray( order[0] ) ) {\n\t\t\t// Arguments passed in (list of 1D arrays)\n\t\t\torder = Array.prototype.slice.call( arguments );\n\t\t}\n\t\t// otherwise a 2D array was passed in\n\t\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tsettings.aaSorting = order.slice();\n\t\t} );\n\t} );\n\t\n\t\n\t/**\n\t * Attach a sort listener to an element for a given column\n\t *\n\t * @param {node|jQuery|string} node Identifier for the element(s) to attach the\n\t *   listener to. This can take the form of a single DOM node, a jQuery\n\t *   collection of nodes or a jQuery selector which will identify the node(s).\n\t * @param {integer} column the column that a click on this node will sort on\n\t * @param {function} [callback] callback function when sort is run\n\t * @returns {DataTables.Api} this\n\t */\n\t_api_register( 'order.listener()', function ( node, column, callback ) {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnSortAttachListener( settings, node, column, callback );\n\t\t} );\n\t} );\n\t\n\t\n\t// Order by the selected column(s)\n\t_api_register( [\n\t\t'columns().order()',\n\t\t'column().order()'\n\t], function ( dir ) {\n\t\tvar that = this;\n\t\n\t\treturn this.iterator( 'table', function ( settings, i ) {\n\t\t\tvar sort = [];\n\t\n\t\t\t$.each( that[i], function (j, col) {\n\t\t\t\tsort.push( [ col, dir ] );\n\t\t\t} );\n\t\n\t\t\tsettings.aaSorting = sort;\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t_api_register( 'search()', function ( input, regex, smart, caseInsen ) {\n\t\tvar ctx = this.context;\n\t\n\t\tif ( input === undefined ) {\n\t\t\t// get\n\t\t\treturn ctx.length !== 0 ?\n\t\t\t\tctx[0].oPreviousSearch.sSearch :\n\t\t\t\tundefined;\n\t\t}\n\t\n\t\t// set\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tif ( ! settings.oFeatures.bFilter ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\n\t\t\t_fnFilterComplete( settings, $.extend( {}, settings.oPreviousSearch, {\n\t\t\t\t\"sSearch\": input+\"\",\n\t\t\t\t\"bRegex\":  regex === null ? false : regex,\n\t\t\t\t\"bSmart\":  smart === null ? true  : smart,\n\t\t\t\t\"bCaseInsensitive\": caseInsen === null ? true : caseInsen\n\t\t\t} ), 1 );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_registerPlural(\n\t\t'columns().search()',\n\t\t'column().search()',\n\t\tfunction ( input, regex, smart, caseInsen ) {\n\t\t\treturn this.iterator( 'column', function ( settings, column ) {\n\t\t\t\tvar preSearch = settings.aoPreSearchCols;\n\t\n\t\t\t\tif ( input === undefined ) {\n\t\t\t\t\t// get\n\t\t\t\t\treturn preSearch[ column ].sSearch;\n\t\t\t\t}\n\t\n\t\t\t\t// set\n\t\t\t\tif ( ! settings.oFeatures.bFilter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\n\t\t\t\t$.extend( preSearch[ column ], {\n\t\t\t\t\t\"sSearch\": input+\"\",\n\t\t\t\t\t\"bRegex\":  regex === null ? false : regex,\n\t\t\t\t\t\"bSmart\":  smart === null ? true  : smart,\n\t\t\t\t\t\"bCaseInsensitive\": caseInsen === null ? true : caseInsen\n\t\t\t\t} );\n\t\n\t\t\t\t_fnFilterComplete( settings, settings.oPreviousSearch, 1 );\n\t\t\t} );\n\t\t}\n\t);\n\t\n\t/*\n\t * State API methods\n\t */\n\t\n\t_api_register( 'state()', function () {\n\t\treturn this.context.length ?\n\t\t\tthis.context[0].oSavedState :\n\t\t\tnull;\n\t} );\n\t\n\t\n\t_api_register( 'state.clear()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t// Save an empty object\n\t\t\tsettings.fnStateSaveCallback.call( settings.oInstance, settings, {} );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'state.loaded()', function () {\n\t\treturn this.context.length ?\n\t\t\tthis.context[0].oLoadedState :\n\t\t\tnull;\n\t} );\n\t\n\t\n\t_api_register( 'state.save()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnSaveState( settings );\n\t\t} );\n\t} );\n\t\n\t\n\t\n\t/**\n\t * Provide a common method for plug-ins to check the version of DataTables being\n\t * used, in order to ensure compatibility.\n\t *\n\t *  @param {string} version Version string to check for, in the format \"X.Y.Z\".\n\t *    Note that the formats \"X\" and \"X.Y\" are also acceptable.\n\t *  @returns {boolean} true if this version of DataTables is greater or equal to\n\t *    the required version, or false if this version of DataTales is not\n\t *    suitable\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    alert( $.fn.dataTable.versionCheck( '1.9.0' ) );\n\t */\n\tDataTable.versionCheck = DataTable.fnVersionCheck = function( version )\n\t{\n\t\tvar aThis = DataTable.version.split('.');\n\t\tvar aThat = version.split('.');\n\t\tvar iThis, iThat;\n\t\n\t\tfor ( var i=0, iLen=aThat.length ; i<iLen ; i++ ) {\n\t\t\tiThis = parseInt( aThis[i], 10 ) || 0;\n\t\t\tiThat = parseInt( aThat[i], 10 ) || 0;\n\t\n\t\t\t// Parts are the same, keep comparing\n\t\t\tif (iThis === iThat) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\n\t\t\t// Parts are different, return immediately\n\t\t\treturn iThis > iThat;\n\t\t}\n\t\n\t\treturn true;\n\t};\n\t\n\t\n\t/**\n\t * Check if a `<table>` node is a DataTable table already or not.\n\t *\n\t *  @param {node|jquery|string} table Table node, jQuery object or jQuery\n\t *      selector for the table to test. Note that if more than more than one\n\t *      table is passed on, only the first will be checked\n\t *  @returns {boolean} true the table given is a DataTable, or false otherwise\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    if ( ! $.fn.DataTable.isDataTable( '#example' ) ) {\n\t *      $('#example').dataTable();\n\t *    }\n\t */\n\tDataTable.isDataTable = DataTable.fnIsDataTable = function ( table )\n\t{\n\t\tvar t = $(table).get(0);\n\t\tvar is = false;\n\t\n\t\t$.each( DataTable.settings, function (i, o) {\n\t\t\tif ( o.nTable === t || o.nScrollHead === t || o.nScrollFoot === t ) {\n\t\t\t\tis = true;\n\t\t\t}\n\t\t} );\n\t\n\t\treturn is;\n\t};\n\t\n\t\n\t/**\n\t * Get all DataTable tables that have been initialised - optionally you can\n\t * select to get only currently visible tables.\n\t *\n\t *  @param {boolean} [visible=false] Flag to indicate if you want all (default)\n\t *    or visible tables only.\n\t *  @returns {array} Array of `table` nodes (not DataTable instances) which are\n\t *    DataTables\n\t *  @static\n\t *  @dtopt API-Static\n\t *\n\t *  @example\n\t *    $.each( $.fn.dataTable.tables(true), function () {\n\t *      $(table).DataTable().columns.adjust();\n\t *    } );\n\t */\n\tDataTable.tables = DataTable.fnTables = function ( visible )\n\t{\n\t\treturn jQuery.map( DataTable.settings, function (o) {\n\t\t\tif ( !visible || (visible && $(o.nTable).is(':visible')) ) {\n\t\t\t\treturn o.nTable;\n\t\t\t}\n\t\t} );\n\t};\n\t\n\t\n\t/**\n\t * Convert from camel case parameters to Hungarian notation. This is made public\n\t * for the extensions to provide the same ability as DataTables core to accept\n\t * either the 1.9 style Hungarian notation, or the 1.10+ style camelCase\n\t * parameters.\n\t *\n\t *  @param {object} src The model object which holds all parameters that can be\n\t *    mapped.\n\t *  @param {object} user The object to convert from camel case to Hungarian.\n\t *  @param {boolean} force When set to `true`, properties which already have a\n\t *    Hungarian value in the `user` object will be overwritten. Otherwise they\n\t *    won't be.\n\t */\n\tDataTable.camelToHungarian = _fnCamelToHungarian;\n\t\n\t\n\t\n\t/**\n\t *\n\t */\n\t_api_register( '$()', function ( selector, opts ) {\n\t\tvar\n\t\t\trows   = this.rows( opts ).nodes(), // Get all rows\n\t\t\tjqRows = $(rows);\n\t\n\t\treturn $( [].concat(\n\t\t\tjqRows.filter( selector ).toArray(),\n\t\t\tjqRows.find( selector ).toArray()\n\t\t) );\n\t} );\n\t\n\t\n\t// jQuery functions to operate on the tables\n\t$.each( [ 'on', 'one', 'off' ], function (i, key) {\n\t\t_api_register( key+'()', function ( /* event, handler */ ) {\n\t\t\tvar args = Array.prototype.slice.call(arguments);\n\t\n\t\t\t// Add the `dt` namespace automatically if it isn't already present\n\t\t\tif ( ! args[0].match(/\\.dt\\b/) ) {\n\t\t\t\targs[0] += '.dt';\n\t\t\t}\n\t\n\t\t\tvar inst = $( this.tables().nodes() );\n\t\t\tinst[key].apply( inst, args );\n\t\t\treturn this;\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'clear()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\t_fnClearTable( settings );\n\t\t} );\n\t} );\n\t\n\t\n\t_api_register( 'settings()', function () {\n\t\treturn new _Api( this.context, this.context );\n\t} );\n\t\n\t\n\t_api_register( 'data()', function () {\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\treturn _pluck( settings.aoData, '_aData' );\n\t\t} ).flatten();\n\t} );\n\t\n\t\n\t_api_register( 'destroy()', function ( remove ) {\n\t\tremove = remove || false;\n\t\n\t\treturn this.iterator( 'table', function ( settings ) {\n\t\t\tvar orig      = settings.nTableWrapper.parentNode;\n\t\t\tvar classes   = settings.oClasses;\n\t\t\tvar table     = settings.nTable;\n\t\t\tvar tbody     = settings.nTBody;\n\t\t\tvar thead     = settings.nTHead;\n\t\t\tvar tfoot     = settings.nTFoot;\n\t\t\tvar jqTable   = $(table);\n\t\t\tvar jqTbody   = $(tbody);\n\t\t\tvar jqWrapper = $(settings.nTableWrapper);\n\t\t\tvar rows      = $.map( settings.aoData, function (r) { return r.nTr; } );\n\t\t\tvar i, ien;\n\t\n\t\t\t// Flag to note that the table is currently being destroyed - no action\n\t\t\t// should be taken\n\t\t\tsettings.bDestroying = true;\n\t\n\t\t\t// Fire off the destroy callbacks for plug-ins etc\n\t\t\t_fnCallbackFire( settings, \"aoDestroyCallback\", \"destroy\", [settings] );\n\t\n\t\t\t// If not being removed from the document, make all columns visible\n\t\t\tif ( ! remove ) {\n\t\t\t\tnew _Api( settings ).columns().visible( true );\n\t\t\t}\n\t\n\t\t\t// Blitz all `DT` namespaced events (these are internal events, the\n\t\t\t// lowercase, `dt` events are user subscribed and they are responsible\n\t\t\t// for removing them\n\t\t\tjqWrapper.unbind('.DT').find(':not(tbody *)').unbind('.DT');\n\t\t\t$(window).unbind('.DT-'+settings.sInstance);\n\t\n\t\t\t// When scrolling we had to break the table up - restore it\n\t\t\tif ( table != thead.parentNode ) {\n\t\t\t\tjqTable.children('thead').detach();\n\t\t\t\tjqTable.append( thead );\n\t\t\t}\n\t\n\t\t\tif ( tfoot && table != tfoot.parentNode ) {\n\t\t\t\tjqTable.children('tfoot').detach();\n\t\t\t\tjqTable.append( tfoot );\n\t\t\t}\n\t\n\t\t\t// Remove the DataTables generated nodes, events and classes\n\t\t\tjqTable.detach();\n\t\t\tjqWrapper.detach();\n\t\n\t\t\tsettings.aaSorting = [];\n\t\t\tsettings.aaSortingFixed = [];\n\t\t\t_fnSortingClasses( settings );\n\t\n\t\t\t$( rows ).removeClass( settings.asStripeClasses.join(' ') );\n\t\n\t\t\t$('th, td', thead).removeClass( classes.sSortable+' '+\n\t\t\t\tclasses.sSortableAsc+' '+classes.sSortableDesc+' '+classes.sSortableNone\n\t\t\t);\n\t\n\t\t\tif ( settings.bJUI ) {\n\t\t\t\t$('th span.'+classes.sSortIcon+ ', td span.'+classes.sSortIcon, thead).detach();\n\t\t\t\t$('th, td', thead).each( function () {\n\t\t\t\t\tvar wrapper = $('div.'+classes.sSortJUIWrapper, this);\n\t\t\t\t\t$(this).append( wrapper.contents() );\n\t\t\t\t\twrapper.detach();\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\tif ( ! remove && orig ) {\n\t\t\t\t// insertBefore acts like appendChild if !arg[1]\n\t\t\t\torig.insertBefore( table, settings.nTableReinsertBefore );\n\t\t\t}\n\t\n\t\t\t// Add the TR elements back into the table in their original order\n\t\t\tjqTbody.children().detach();\n\t\t\tjqTbody.append( rows );\n\t\n\t\t\t// Restore the width of the original table - was read from the style property,\n\t\t\t// so we can restore directly to that\n\t\t\tjqTable\n\t\t\t\t.css( 'width', settings.sDestroyWidth )\n\t\t\t\t.removeClass( classes.sTable );\n\t\n\t\t\t// If the were originally stripe classes - then we add them back here.\n\t\t\t// Note this is not fool proof (for example if not all rows had stripe\n\t\t\t// classes - but it's a good effort without getting carried away\n\t\t\tien = settings.asDestroyStripes.length;\n\t\n\t\t\tif ( ien ) {\n\t\t\t\tjqTbody.children().each( function (i) {\n\t\t\t\t\t$(this).addClass( settings.asDestroyStripes[i % ien] );\n\t\t\t\t} );\n\t\t\t}\n\t\n\t\t\t/* Remove the settings object from the settings array */\n\t\t\tvar idx = $.inArray( settings, DataTable.settings );\n\t\t\tif ( idx !== -1 ) {\n\t\t\t\tDataTable.settings.splice( idx, 1 );\n\t\t\t}\n\t\t} );\n\t} );\n\t\n\n\t/**\n\t * Version string for plug-ins to check compatibility. Allowed format is\n\t * `a.b.c-d` where: a:int, b:int, c:int, d:string(dev|beta|alpha). `d` is used\n\t * only for non-release builds. See http://semver.org/ for more information.\n\t *  @member\n\t *  @type string\n\t *  @default Version number\n\t */\n\tDataTable.version = \"1.10.2\";\n\n\t/**\n\t * Private data store, containing all of the settings objects that are\n\t * created for the tables on a given page.\n\t *\n\t * Note that the `DataTable.settings` object is aliased to\n\t * `jQuery.fn.dataTableExt` through which it may be accessed and\n\t * manipulated, or `jQuery.fn.dataTable.settings`.\n\t *  @member\n\t *  @type array\n\t *  @default []\n\t *  @private\n\t */\n\tDataTable.settings = [];\n\n\t/**\n\t * Object models container, for the various models that DataTables has\n\t * available to it. These models define the objects that are used to hold\n\t * the active state and configuration of the table.\n\t *  @namespace\n\t */\n\tDataTable.models = {};\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * search information for the global filter and individual column filters.\n\t *  @namespace\n\t */\n\tDataTable.models.oSearch = {\n\t\t/**\n\t\t * Flag to indicate if the filtering should be case insensitive or not\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bCaseInsensitive\": true,\n\t\n\t\t/**\n\t\t * Applied search term\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sSearch\": \"\",\n\t\n\t\t/**\n\t\t * Flag to indicate if the search term should be interpreted as a\n\t\t * regular expression (true) or not (false) and therefore and special\n\t\t * regex characters escaped.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bRegex\": false,\n\t\n\t\t/**\n\t\t * Flag to indicate if DataTables is to use its smart filtering or not.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bSmart\": true\n\t};\n\t\n\t\n\t\n\t\n\t/**\n\t * Template object for the way in which DataTables holds information about\n\t * each individual row. This is the object format used for the settings\n\t * aoData array.\n\t *  @namespace\n\t */\n\tDataTable.models.oRow = {\n\t\t/**\n\t\t * TR element for the row\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTr\": null,\n\t\n\t\t/**\n\t\t * Array of TD elements for each row. This is null until the row has been\n\t\t * created.\n\t\t *  @type array nodes\n\t\t *  @default []\n\t\t */\n\t\t\"anCells\": null,\n\t\n\t\t/**\n\t\t * Data object from the original data source for the row. This is either\n\t\t * an array if using the traditional form of DataTables, or an object if\n\t\t * using mData options. The exact type will depend on the passed in\n\t\t * data from the data source, or will be an array if using DOM a data\n\t\t * source.\n\t\t *  @type array|object\n\t\t *  @default []\n\t\t */\n\t\t\"_aData\": [],\n\t\n\t\t/**\n\t\t * Sorting data cache - this array is ostensibly the same length as the\n\t\t * number of columns (although each index is generated only as it is\n\t\t * needed), and holds the data that is used for sorting each column in the\n\t\t * row. We do this cache generation at the start of the sort in order that\n\t\t * the formatting of the sort data need be done only once for each cell\n\t\t * per sort. This array should not be read from or written to by anything\n\t\t * other than the master sorting methods.\n\t\t *  @type array\n\t\t *  @default null\n\t\t *  @private\n\t\t */\n\t\t\"_aSortData\": null,\n\t\n\t\t/**\n\t\t * Per cell filtering data cache. As per the sort data cache, used to\n\t\t * increase the performance of the filtering in DataTables\n\t\t *  @type array\n\t\t *  @default null\n\t\t *  @private\n\t\t */\n\t\t\"_aFilterData\": null,\n\t\n\t\t/**\n\t\t * Filtering data cache. This is the same as the cell filtering cache, but\n\t\t * in this case a string rather than an array. This is easily computed with\n\t\t * a join on `_aFilterData`, but is provided as a cache so the join isn't\n\t\t * needed on every search (memory traded for performance)\n\t\t *  @type array\n\t\t *  @default null\n\t\t *  @private\n\t\t */\n\t\t\"_sFilterRow\": null,\n\t\n\t\t/**\n\t\t * Cache of the class name that DataTables has applied to the row, so we\n\t\t * can quickly look at this variable rather than needing to do a DOM check\n\t\t * on className for the nTr property.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *  @private\n\t\t */\n\t\t\"_sRowStripe\": \"\",\n\t\n\t\t/**\n\t\t * Denote if the original data source was from the DOM, or the data source\n\t\t * object. This is used for invalidating data, so DataTables can\n\t\t * automatically read data from the original source, unless uninstructed\n\t\t * otherwise.\n\t\t *  @type string\n\t\t *  @default null\n\t\t *  @private\n\t\t */\n\t\t\"src\": null\n\t};\n\t\n\t\n\t/**\n\t * Template object for the column information object in DataTables. This object\n\t * is held in the settings aoColumns array and contains all the information that\n\t * DataTables needs about each individual column.\n\t *\n\t * Note that this object is related to {@link DataTable.defaults.column}\n\t * but this one is the internal data store for DataTables's cache of columns.\n\t * It should NOT be manipulated outside of DataTables. Any configuration should\n\t * be done through the initialisation options.\n\t *  @namespace\n\t */\n\tDataTable.models.oColumn = {\n\t\t/**\n\t\t * Column index. This could be worked out on-the-fly with $.inArray, but it\n\t\t * is faster to just hold it as a variable\n\t\t *  @type integer\n\t\t *  @default null\n\t\t */\n\t\t\"idx\": null,\n\t\n\t\t/**\n\t\t * A list of the columns that sorting should occur on when this column\n\t\t * is sorted. That this property is an array allows multi-column sorting\n\t\t * to be defined for a column (for example first name / last name columns\n\t\t * would benefit from this). The values are integers pointing to the\n\t\t * columns to be sorted on (typically it will be a single integer pointing\n\t\t * at itself, but that doesn't need to be the case).\n\t\t *  @type array\n\t\t */\n\t\t\"aDataSort\": null,\n\t\n\t\t/**\n\t\t * Define the sorting directions that are applied to the column, in sequence\n\t\t * as the column is repeatedly sorted upon - i.e. the first value is used\n\t\t * as the sorting direction when the column if first sorted (clicked on).\n\t\t * Sort it again (click again) and it will move on to the next index.\n\t\t * Repeat until loop.\n\t\t *  @type array\n\t\t */\n\t\t\"asSorting\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is searchable, and thus should be included\n\t\t * in the filtering or not.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSearchable\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is sortable or not.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortable\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if the column is currently visible in the table or not\n\t\t *  @type boolean\n\t\t */\n\t\t\"bVisible\": null,\n\t\n\t\t/**\n\t\t * Store for manual type assignment using the `column.type` option. This\n\t\t * is held in store so we can manipulate the column's `sType` property.\n\t\t *  @type string\n\t\t *  @default null\n\t\t *  @private\n\t\t */\n\t\t\"_sManualType\": null,\n\t\n\t\t/**\n\t\t * Flag to indicate if HTML5 data attributes should be used as the data\n\t\t * source for filtering or sorting. True is either are.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @private\n\t\t */\n\t\t\"_bAttrSrc\": false,\n\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t *  @type function\n\t\t *  @param {element} nTd The TD node that has been created\n\t\t *  @param {*} sData The Data for the cell\n\t\t *  @param {array|object} oData The data for the whole row\n\t\t *  @param {int} iRow The row index for the aoData data store\n\t\t *  @default null\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\n\t\t/**\n\t\t * Function to get data from a cell in a column. You should <b>never</b>\n\t\t * access data directly through _aData internally in DataTables - always use\n\t\t * the method attached to this property. It allows mData to function as\n\t\t * required. This function is automatically assigned by the column\n\t\t * initialisation method\n\t\t *  @type function\n\t\t *  @param {array|object} oData The data array/object for the array\n\t\t *    (i.e. aoData[]._aData)\n\t\t *  @param {string} sSpecific The specific data type you want to get -\n\t\t *    'display', 'type' 'filter' 'sort'\n\t\t *  @returns {*} The data for the cell from the given row's data\n\t\t *  @default null\n\t\t */\n\t\t\"fnGetData\": null,\n\t\n\t\t/**\n\t\t * Function to set data for a cell in the column. You should <b>never</b>\n\t\t * set the data directly to _aData internally in DataTables - always use\n\t\t * this method. It allows mData to function as required. This function\n\t\t * is automatically assigned by the column initialisation method\n\t\t *  @type function\n\t\t *  @param {array|object} oData The data array/object for the array\n\t\t *    (i.e. aoData[]._aData)\n\t\t *  @param {*} sValue Value to set\n\t\t *  @default null\n\t\t */\n\t\t\"fnSetData\": null,\n\t\n\t\t/**\n\t\t * Property to read the value for the cells in the column from the data\n\t\t * source array / object. If null, then the default content is used, if a\n\t\t * function is given then the return from the function is used.\n\t\t *  @type function|int|string|null\n\t\t *  @default null\n\t\t */\n\t\t\"mData\": null,\n\t\n\t\t/**\n\t\t * Partner property to mData which is used (only when defined) to get\n\t\t * the data - i.e. it is basically the same as mData, but without the\n\t\t * 'set' option, and also the data fed to it is the result from mData.\n\t\t * This is the rendering method to match the data method of mData.\n\t\t *  @type function|int|string|null\n\t\t *  @default null\n\t\t */\n\t\t\"mRender\": null,\n\t\n\t\t/**\n\t\t * Unique header TH/TD element for this column - this is what the sorting\n\t\t * listener is attached to (if sorting is enabled.)\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTh\": null,\n\t\n\t\t/**\n\t\t * Unique footer TH/TD element for this column (if there is one). Not used\n\t\t * in DataTables as such, but can be used for plug-ins to reference the\n\t\t * footer for each column.\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTf\": null,\n\t\n\t\t/**\n\t\t * The class to apply to all TD elements in the table's TBODY for the column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sClass\": null,\n\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer\n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t *  @type string\n\t\t */\n\t\t\"sContentPadding\": null,\n\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because mData\n\t\t * is set to null, or because the data source itself is null).\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\n\t\t/**\n\t\t * Name for the column, allowing reference to the column by name as well as\n\t\t * by index (needs a lookup to work by name).\n\t\t *  @type string\n\t\t */\n\t\t\"sName\": null,\n\t\n\t\t/**\n\t\t * Custom sorting data type - defines which of the available plug-ins in\n\t\t * afnSortData the custom sorting will use - if any is defined.\n\t\t *  @type string\n\t\t *  @default std\n\t\t */\n\t\t\"sSortDataType\": 'std',\n\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sSortingClass\": null,\n\t\n\t\t/**\n\t\t * Class to be applied to the header element when sorting on this column -\n\t\t * when jQuery UI theming is used.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sSortingClassJUI\": null,\n\t\n\t\t/**\n\t\t * Title of the column - what is seen in the TH element (nTh).\n\t\t *  @type string\n\t\t */\n\t\t\"sTitle\": null,\n\t\n\t\t/**\n\t\t * Column sorting and filtering type\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sType\": null,\n\t\n\t\t/**\n\t\t * Width of the column\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sWidth\": null,\n\t\n\t\t/**\n\t\t * Width of the column when it was first \"encountered\"\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sWidthOrig\": null\n\t};\n\t\n\t\n\t/*\n\t * Developer note: The properties of the object below are given in Hungarian\n\t * notation, that was used as the interface for DataTables prior to v1.10, however\n\t * from v1.10 onwards the primary interface is camel case. In order to avoid\n\t * breaking backwards compatibility utterly with this change, the Hungarian\n\t * version is still, internally the primary interface, but is is not documented\n\t * - hence the @name tags in each doc comment. This allows a Javascript function\n\t * to create a map from Hungarian notation to camel case (going the other direction\n\t * would require each property to be listed, which would at around 3K to the size\n\t * of DataTables, while this method is about a 0.5K hit.\n\t *\n\t * Ultimately this does pave the way for Hungarian notation to be dropped\n\t * completely, but that is a massive amount of work and will break current\n\t * installs (therefore is on-hold until v2).\n\t */\n\t\n\t/**\n\t * Initialisation options that can be given to DataTables at initialisation\n\t * time.\n\t *  @namespace\n\t */\n\tDataTable.defaults = {\n\t\t/**\n\t\t * An array of data to use for the table, passed in at initialisation which\n\t\t * will be used in preference to any data which is already in the DOM. This is\n\t\t * particularly useful for constructing tables purely in Javascript, for\n\t\t * example with a custom Ajax call.\n\t\t *  @type array\n\t\t *  @default null\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.data\n\t\t *\n\t\t *  @example\n\t\t *    // Using a 2D array data source\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"data\": [\n\t\t *          ['Trident', 'Internet Explorer 4.0', 'Win 95+', 4, 'X'],\n\t\t *          ['Trident', 'Internet Explorer 5.0', 'Win 95+', 5, 'C'],\n\t\t *        ],\n\t\t *        \"columns\": [\n\t\t *          { \"title\": \"Engine\" },\n\t\t *          { \"title\": \"Browser\" },\n\t\t *          { \"title\": \"Platform\" },\n\t\t *          { \"title\": \"Version\" },\n\t\t *          { \"title\": \"Grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using an array of objects as a data source (`data`)\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"data\": [\n\t\t *          {\n\t\t *            \"engine\":   \"Trident\",\n\t\t *            \"browser\":  \"Internet Explorer 4.0\",\n\t\t *            \"platform\": \"Win 95+\",\n\t\t *            \"version\":  4,\n\t\t *            \"grade\":    \"X\"\n\t\t *          },\n\t\t *          {\n\t\t *            \"engine\":   \"Trident\",\n\t\t *            \"browser\":  \"Internet Explorer 5.0\",\n\t\t *            \"platform\": \"Win 95+\",\n\t\t *            \"version\":  5,\n\t\t *            \"grade\":    \"C\"\n\t\t *          }\n\t\t *        ],\n\t\t *        \"columns\": [\n\t\t *          { \"title\": \"Engine\",   \"data\": \"engine\" },\n\t\t *          { \"title\": \"Browser\",  \"data\": \"browser\" },\n\t\t *          { \"title\": \"Platform\", \"data\": \"platform\" },\n\t\t *          { \"title\": \"Version\",  \"data\": \"version\" },\n\t\t *          { \"title\": \"Grade\",    \"data\": \"grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aaData\": null,\n\t\n\t\n\t\t/**\n\t\t * If ordering is enabled, then DataTables will perform a first pass sort on\n\t\t * initialisation. You can define which column(s) the sort is performed\n\t\t * upon, and the sorting direction, with this variable. The `sorting` array\n\t\t * should contain an array for each column to be sorted initially containing\n\t\t * the column's index and a direction string ('asc' or 'desc').\n\t\t *  @type array\n\t\t *  @default [[0,'asc']]\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.order\n\t\t *\n\t\t *  @example\n\t\t *    // Sort by 3rd column first, and then 4th column\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"order\": [[2,'asc'], [3,'desc']]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *    // No initial sorting\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"order\": []\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aaSorting\": [[0,'asc']],\n\t\n\t\n\t\t/**\n\t\t * This parameter is basically identical to the `sorting` parameter, but\n\t\t * cannot be overridden by user interaction with the table. What this means\n\t\t * is that you could have a column (visible or hidden) which the sorting\n\t\t * will always be forced on first - any sorting after that (from the user)\n\t\t * will then be performed as required. This can be useful for grouping rows\n\t\t * together.\n\t\t *  @type array\n\t\t *  @default null\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.orderFixed\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"orderFixed\": [[0,'asc']]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"aaSortingFixed\": [],\n\t\n\t\n\t\t/**\n\t\t * DataTables can be instructed to load data to display in the table from a\n\t\t * Ajax source. This option defines how that Ajax call is made and where to.\n\t\t *\n\t\t * The `ajax` property has three different modes of operation, depending on\n\t\t * how it is defined. These are:\n\t\t *\n\t\t * * `string` - Set the URL from where the data should be loaded from.\n\t\t * * `object` - Define properties for `jQuery.ajax`.\n\t\t * * `function` - Custom data get function\n\t\t *\n\t\t * `string`\n\t\t * --------\n\t\t *\n\t\t * As a string, the `ajax` property simply defines the URL from which\n\t\t * DataTables will load data.\n\t\t *\n\t\t * `object`\n\t\t * --------\n\t\t *\n\t\t * As an object, the parameters in the object are passed to\n\t\t * [jQuery.ajax](http://api.jquery.com/jQuery.ajax/) allowing fine control\n\t\t * of the Ajax request. DataTables has a number of default parameters which\n\t\t * you can override using this option. Please refer to the jQuery\n\t\t * documentation for a full description of the options available, although\n\t\t * the following parameters provide additional options in DataTables or\n\t\t * require special consideration:\n\t\t *\n\t\t * * `data` - As with jQuery, `data` can be provided as an object, but it\n\t\t *   can also be used as a function to manipulate the data DataTables sends\n\t\t *   to the server. The function takes a single parameter, an object of\n\t\t *   parameters with the values that DataTables has readied for sending. An\n\t\t *   object may be returned which will be merged into the DataTables\n\t\t *   defaults, or you can add the items to the object that was passed in and\n\t\t *   not return anything from the function. This supersedes `fnServerParams`\n\t\t *   from DataTables 1.9-.\n\t\t *\n\t\t * * `dataSrc` - By default DataTables will look for the property `data` (or\n\t\t *   `aaData` for compatibility with DataTables 1.9-) when obtaining data\n\t\t *   from an Ajax source or for server-side processing - this parameter\n\t\t *   allows that property to be changed. You can use Javascript dotted\n\t\t *   object notation to get a data source for multiple levels of nesting, or\n\t\t *   it my be used as a function. As a function it takes a single parameter,\n\t\t *   the JSON returned from the server, which can be manipulated as\n\t\t *   required, with the returned value being that used by DataTables as the\n\t\t *   data source for the table. This supersedes `sAjaxDataProp` from\n\t\t *   DataTables 1.9-.\n\t\t *\n\t\t * * `success` - Should not be overridden it is used internally in\n\t\t *   DataTables. To manipulate / transform the data returned by the server\n\t\t *   use `ajax.dataSrc`, or use `ajax` as a function (see below).\n\t\t *\n\t\t * `function`\n\t\t * ----------\n\t\t *\n\t\t * As a function, making the Ajax call is left up to yourself allowing\n\t\t * complete control of the Ajax request. Indeed, if desired, a method other\n\t\t * than Ajax could be used to obtain the required data, such as Web storage\n\t\t * or an AIR database.\n\t\t *\n\t\t * The function is given four parameters and no return is required. The\n\t\t * parameters are:\n\t\t *\n\t\t * 1. _object_ - Data to send to the server\n\t\t * 2. _function_ - Callback function that must be executed when the required\n\t\t *    data has been obtained. That data should be passed into the callback\n\t\t *    as the only parameter\n\t\t * 3. _object_ - DataTables settings object for the table\n\t\t *\n\t\t * Note that this supersedes `fnServerData` from DataTables 1.9-.\n\t\t *\n\t\t *  @type string|object|function\n\t\t *  @default null\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.ajax\n\t\t *  @since 1.10.0\n\t\t *\n\t\t * @example\n\t\t *   // Get JSON data from a file via Ajax.\n\t\t *   // Note DataTables expects data in the form `{ data: [ ...data... ] }` by default).\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": \"data.json\"\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Get JSON data from a file via Ajax, using `dataSrc` to change\n\t\t *   // `data` to `tableData` (i.e. `{ tableData: [ ...data... ] }`)\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": {\n\t\t *       \"url\": \"data.json\",\n\t\t *       \"dataSrc\": \"tableData\"\n\t\t *     }\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Get JSON data from a file via Ajax, using `dataSrc` to read data\n\t\t *   // from a plain array rather than an array in an object\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": {\n\t\t *       \"url\": \"data.json\",\n\t\t *       \"dataSrc\": \"\"\n\t\t *     }\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Manipulate the data returned from the server - add a link to data\n\t\t *   // (note this can, should, be done using `render` for the column - this\n\t\t *   // is just a simple example of how the data can be manipulated).\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": {\n\t\t *       \"url\": \"data.json\",\n\t\t *       \"dataSrc\": function ( json ) {\n\t\t *         for ( var i=0, ien=json.length ; i<ien ; i++ ) {\n\t\t *           json[i][0] = '<a href=\"/message/'+json[i][0]+'>View message</a>';\n\t\t *         }\n\t\t *         return json;\n\t\t *       }\n\t\t *     }\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Add data to the request\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": {\n\t\t *       \"url\": \"data.json\",\n\t\t *       \"data\": function ( d ) {\n\t\t *         return {\n\t\t *           \"extra_search\": $('#extra').val()\n\t\t *         };\n\t\t *       }\n\t\t *     }\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Send request as POST\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": {\n\t\t *       \"url\": \"data.json\",\n\t\t *       \"type\": \"POST\"\n\t\t *     }\n\t\t *   } );\n\t\t *\n\t\t * @example\n\t\t *   // Get the data from localStorage (could interface with a form for\n\t\t *   // adding, editing and removing rows).\n\t\t *   $('#example').dataTable( {\n\t\t *     \"ajax\": function (data, callback, settings) {\n\t\t *       callback(\n\t\t *         JSON.parse( localStorage.getItem('dataTablesData') )\n\t\t *       );\n\t\t *     }\n\t\t *   } );\n\t\t */\n\t\t\"ajax\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to readily specify the entries in the length drop\n\t\t * down menu that DataTables shows when pagination is enabled. It can be\n\t\t * either a 1D array of options which will be used for both the displayed\n\t\t * option and the value, or a 2D array which will use the array in the first\n\t\t * position as the value, and the array in the second position as the\n\t\t * displayed options (useful for language strings such as 'All').\n\t\t *\n\t\t * Note that the `pageLength` property will be automatically set to the\n\t\t * first value given in this array, unless `pageLength` is also provided.\n\t\t *  @type array\n\t\t *  @default [ 10, 25, 50, 100 ]\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.lengthMenu\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"lengthMenu\": [[10, 25, 50, -1], [10, 25, 50, \"All\"]]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aLengthMenu\": [ 10, 25, 50, 100 ],\n\t\n\t\n\t\t/**\n\t\t * The `columns` option in the initialisation parameter allows you to define\n\t\t * details about the way individual columns behave. For a full list of\n\t\t * column options that can be set, please see\n\t\t * {@link DataTable.defaults.column}. Note that if you use `columns` to\n\t\t * define your columns, you must have an entry in the array for every single\n\t\t * column that you have in your table (these can be null if you don't which\n\t\t * to specify any options).\n\t\t *  @member\n\t\t *\n\t\t *  @name DataTable.defaults.column\n\t\t */\n\t\t\"aoColumns\": null,\n\t\n\t\t/**\n\t\t * Very similar to `columns`, `columnDefs` allows you to target a specific\n\t\t * column, multiple columns, or all columns, using the `targets` property of\n\t\t * each object in the array. This allows great flexibility when creating\n\t\t * tables, as the `columnDefs` arrays can be of any length, targeting the\n\t\t * columns you specifically want. `columnDefs` may use any of the column\n\t\t * options available: {@link DataTable.defaults.column}, but it _must_\n\t\t * have `targets` defined in each object in the array. Values in the `targets`\n\t\t * array may be:\n\t\t *   <ul>\n\t\t *     <li>a string - class name will be matched on the TH for the column</li>\n\t\t *     <li>0 or a positive integer - column index counting from the left</li>\n\t\t *     <li>a negative integer - column index counting from the right</li>\n\t\t *     <li>the string \"_all\" - all columns (i.e. assign a default)</li>\n\t\t *   </ul>\n\t\t *  @member\n\t\t *\n\t\t *  @name DataTable.defaults.columnDefs\n\t\t */\n\t\t\"aoColumnDefs\": null,\n\t\n\t\n\t\t/**\n\t\t * Basically the same as `search`, this parameter defines the individual column\n\t\t * filtering state at initialisation time. The array must be of the same size\n\t\t * as the number of columns, and each element be an object with the parameters\n\t\t * `search` and `escapeRegex` (the latter is optional). 'null' is also\n\t\t * accepted and the default will be used.\n\t\t *  @type array\n\t\t *  @default []\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.searchCols\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"searchCols\": [\n\t\t *          null,\n\t\t *          { \"search\": \"My filter\" },\n\t\t *          null,\n\t\t *          { \"search\": \"^[0-9]\", \"escapeRegex\": false }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"aoSearchCols\": [],\n\t\n\t\n\t\t/**\n\t\t * An array of CSS classes that should be applied to displayed rows. This\n\t\t * array may be of any length, and DataTables will apply each class\n\t\t * sequentially, looping when required.\n\t\t *  @type array\n\t\t *  @default null <i>Will take the values determined by the `oClasses.stripe*`\n\t\t *    options</i>\n\t\t *\n\t\t *  @dtopt Option\n\t\t *  @name DataTable.defaults.stripeClasses\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stripeClasses\": [ 'strip1', 'strip2', 'strip3' ]\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable automatic column width calculation. This can be disabled\n\t\t * as an optimisation (it takes some time to calculate the widths) if the\n\t\t * tables widths are passed in using `columns`.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.autoWidth\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"autoWidth\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bAutoWidth\": true,\n\t\n\t\n\t\t/**\n\t\t * Deferred rendering can provide DataTables with a huge speed boost when you\n\t\t * are using an Ajax or JS data source for the table. This option, when set to\n\t\t * true, will cause DataTables to defer the creation of the table elements for\n\t\t * each row until they are needed for a draw - saving a significant amount of\n\t\t * time.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.deferRender\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"ajax\": \"sources/arrays.txt\",\n\t\t *        \"deferRender\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bDeferRender\": false,\n\t\n\t\n\t\t/**\n\t\t * Replace a DataTable which matches the given selector and replace it with\n\t\t * one which has the properties of the new initialisation object passed. If no\n\t\t * table matches the selector, then the new DataTable will be constructed as\n\t\t * per normal.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.destroy\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"srollY\": \"200px\",\n\t\t *        \"paginate\": false\n\t\t *      } );\n\t\t *\n\t\t *      // Some time later....\n\t\t *      $('#example').dataTable( {\n\t\t *        \"filter\": false,\n\t\t *        \"destroy\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bDestroy\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering of data. Filtering in DataTables is \"smart\" in\n\t\t * that it allows the end user to input multiple words (space separated) and\n\t\t * will match a row containing those words, even if not in the order that was\n\t\t * specified (this allow matching across multiple columns). Note that if you\n\t\t * wish to use filtering in DataTables this must remain 'true' - to remove the\n\t\t * default filtering input box and retain filtering abilities, please use\n\t\t * {@link DataTable.defaults.dom}.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.searching\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"searching\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bFilter\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the table information display. This shows information\n\t\t * about the data that is currently visible on the page, including information\n\t\t * about filtered data if that action is being performed.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.info\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"info\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bInfo\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable jQuery UI ThemeRoller support (required as ThemeRoller requires some\n\t\t * slightly different and additional mark-up from what DataTables has\n\t\t * traditionally used).\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.jQueryUI\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"jQueryUI\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bJQueryUI\": false,\n\t\n\t\n\t\t/**\n\t\t * Allows the end user to select the size of a formatted page from a select\n\t\t * menu (sizes are 10, 25, 50 and 100). Requires pagination (`paginate`).\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.lengthChange\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"lengthChange\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bLengthChange\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable pagination.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.paging\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"paging\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bPaginate\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of a 'processing' indicator when the table is\n\t\t * being processed (e.g. a sort). This is particularly useful for tables with\n\t\t * large amounts of data where it can take a noticeable amount of time to sort\n\t\t * the entries.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.processing\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"processing\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bProcessing\": false,\n\t\n\t\n\t\t/**\n\t\t * Retrieve the DataTables object for the given selector. Note that if the\n\t\t * table has already been initialised, this parameter will cause DataTables\n\t\t * to simply return the object that has already been set up - it will not take\n\t\t * account of any changes you might have made to the initialisation object\n\t\t * passed to DataTables (setting this parameter to true is an acknowledgement\n\t\t * that you understand this). `destroy` can be used to reinitialise a table if\n\t\t * you need.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.retrieve\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      initTable();\n\t\t *      tableActions();\n\t\t *    } );\n\t\t *\n\t\t *    function initTable ()\n\t\t *    {\n\t\t *      return $('#example').dataTable( {\n\t\t *        \"scrollY\": \"200px\",\n\t\t *        \"paginate\": false,\n\t\t *        \"retrieve\": true\n\t\t *      } );\n\t\t *    }\n\t\t *\n\t\t *    function tableActions ()\n\t\t *    {\n\t\t *      var table = initTable();\n\t\t *      // perform API operations with oTable\n\t\t *    }\n\t\t */\n\t\t\"bRetrieve\": false,\n\t\n\t\n\t\t/**\n\t\t * When vertical (y) scrolling is enabled, DataTables will force the height of\n\t\t * the table's viewport to the given height at all times (useful for layout).\n\t\t * However, this can look odd when filtering data down to a small data set,\n\t\t * and the footer is left \"floating\" further down. This parameter (when\n\t\t * enabled) will cause DataTables to collapse the table's viewport down when\n\t\t * the result set will fit within the given Y height.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.scrollCollapse\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"scrollY\": \"200\",\n\t\t *        \"scrollCollapse\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bScrollCollapse\": false,\n\t\n\t\n\t\t/**\n\t\t * Configure DataTables to use server-side processing. Note that the\n\t\t * `ajax` parameter must also be given in order to give DataTables a\n\t\t * source to obtain the required data for each draw.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.serverSide\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"serverSide\": true,\n\t\t *        \"ajax\": \"xhr.php\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bServerSide\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable sorting of columns. Sorting of individual columns can be\n\t\t * disabled by the `sortable` option for each column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.ordering\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"ordering\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSort\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or display DataTables' ability to sort multiple columns at the\n\t\t * same time (activated by shift-click by the user).\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.orderMulti\n\t\t *\n\t\t *  @example\n\t\t *    // Disable multiple column sorting ability\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"orderMulti\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortMulti\": true,\n\t\n\t\n\t\t/**\n\t\t * Allows control over whether DataTables should use the top (true) unique\n\t\t * cell that is found for a single column, or the bottom (false - default).\n\t\t * This is useful when using complex headers.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.orderCellsTop\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"orderCellsTop\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortCellsTop\": false,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the addition of the classes `sorting\\_1`, `sorting\\_2` and\n\t\t * `sorting\\_3` to the columns which are currently being sorted on. This is\n\t\t * presented as a feature switch as it can increase processing time (while\n\t\t * classes are removed and added) so for large data sets you might want to\n\t\t * turn this off.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.orderClasses\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"orderClasses\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortClasses\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable state saving. When enabled HTML5 `localStorage` will be\n\t\t * used to save table display information such as pagination information,\n\t\t * display length, filtering and sorting. As such when the end user reloads\n\t\t * the page the display display will match what thy had previously set up.\n\t\t *\n\t\t * Due to the use of `localStorage` the default state saving is not supported\n\t\t * in IE6 or 7. If state saving is required in those browsers, use\n\t\t * `stateSaveCallback` to provide a storage solution such as cookies.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.stateSave\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function () {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"bStateSave\": false,\n\t\n\t\n\t\t/**\n\t\t * This function is called when a TR element is created (and all TD child\n\t\t * elements have been inserted), or registered if using a DOM source, allowing\n\t\t * manipulation of the TR element (adding classes etc).\n\t\t *  @type function\n\t\t *  @param {node} row \"TR\" element for the current row\n\t\t *  @param {array} data Raw data array for this row\n\t\t *  @param {int} dataIndex The index of this row in the internal aoData array\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.createdRow\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"createdRow\": function( row, data, dataIndex ) {\n\t\t *          // Bold the grade for all 'A' grade browsers\n\t\t *          if ( data[4] == \"A\" )\n\t\t *          {\n\t\t *            $('td:eq(4)', row).html( '<b>A</b>' );\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnCreatedRow\": null,\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify any aspect you want about the created DOM.\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.drawCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"drawCallback\": function( settings ) {\n\t\t *          alert( 'DataTables has redrawn the table' );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Identical to fnHeaderCallback() but for the table footer this function\n\t\t * allows you to modify the table footer on every 'draw' event.\n\t\t *  @type function\n\t\t *  @param {node} foot \"TR\" element for the footer\n\t\t *  @param {array} data Full table data (as derived from the original HTML)\n\t\t *  @param {int} start Index for the current display starting point in the\n\t\t *    display array\n\t\t *  @param {int} end Index for the current display ending point in the\n\t\t *    display array\n\t\t *  @param {array int} display Index array to translate the visual position\n\t\t *    to the full data array\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.footerCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"footerCallback\": function( tfoot, data, start, end, display ) {\n\t\t *          tfoot.getElementsByTagName('th')[0].innerHTML = \"Starting index is \"+start;\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnFooterCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * When rendering large numbers in the information element for the table\n\t\t * (i.e. \"Showing 1 to 10 of 57 entries\") DataTables will render large numbers\n\t\t * to have a comma separator for the 'thousands' units (e.g. 1 million is\n\t\t * rendered as \"1,000,000\") to help readability for the end user. This\n\t\t * function will override the default method DataTables uses.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {int} toFormat number to be formatted\n\t\t *  @returns {string} formatted string for DataTables to show the number\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.formatNumber\n\t\t *\n\t\t *  @example\n\t\t *    // Format a number using a single quote for the separator (note that\n\t\t *    // this can also be done with the language.thousands option)\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"formatNumber\": function ( toFormat ) {\n\t\t *          return toFormat.toString().replace(\n\t\t *            /\\B(?=(\\d{3})+(?!\\d))/g, \"'\"\n\t\t *          );\n\t\t *        };\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnFormatNumber\": function ( toFormat ) {\n\t\t\treturn toFormat.toString().replace(\n\t\t\t\t/\\B(?=(\\d{3})+(?!\\d))/g,\n\t\t\t\tthis.oLanguage.sThousands\n\t\t\t);\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This function is called on every 'draw' event, and allows you to\n\t\t * dynamically modify the header row. This can be used to calculate and\n\t\t * display useful information about the table.\n\t\t *  @type function\n\t\t *  @param {node} head \"TR\" element for the header\n\t\t *  @param {array} data Full table data (as derived from the original HTML)\n\t\t *  @param {int} start Index for the current display starting point in the\n\t\t *    display array\n\t\t *  @param {int} end Index for the current display ending point in the\n\t\t *    display array\n\t\t *  @param {array int} display Index array to translate the visual position\n\t\t *    to the full data array\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.headerCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"fheaderCallback\": function( head, data, start, end, display ) {\n\t\t *          head.getElementsByTagName('th')[0].innerHTML = \"Displaying \"+(end-start)+\" records\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnHeaderCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * The information element can be used to convey information about the current\n\t\t * state of the table. Although the internationalisation options presented by\n\t\t * DataTables are quite capable of dealing with most customisations, there may\n\t\t * be times where you wish to customise the string further. This callback\n\t\t * allows you to do exactly that.\n\t\t *  @type function\n\t\t *  @param {object} oSettings DataTables settings object\n\t\t *  @param {int} start Starting position in data for the draw\n\t\t *  @param {int} end End position in data for the draw\n\t\t *  @param {int} max Total number of rows in the table (regardless of\n\t\t *    filtering)\n\t\t *  @param {int} total Total number of rows in the data set, after filtering\n\t\t *  @param {string} pre The string that DataTables has formatted using it's\n\t\t *    own rules\n\t\t *  @returns {string} The string to be displayed in the information element.\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.infoCallback\n\t\t *\n\t\t *  @example\n\t\t *    $('#example').dataTable( {\n\t\t *      \"infoCallback\": function( settings, start, end, max, total, pre ) {\n\t\t *        return start +\" to \"+ end;\n\t\t *      }\n\t\t *    } );\n\t\t */\n\t\t\"fnInfoCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * Called when the table has been initialised. Normally DataTables will\n\t\t * initialise sequentially and there will be no need for this function,\n\t\t * however, this does not hold true when using external language information\n\t\t * since that is obtained using an async XHR call.\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @param {object} json The JSON object request from the server - only\n\t\t *    present if client-side Ajax sourced data is used\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.initComplete\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"initComplete\": function(settings, json) {\n\t\t *          alert( 'DataTables has finished its initialisation.' );\n\t\t *        }\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"fnInitComplete\": null,\n\t\n\t\n\t\t/**\n\t\t * Called at the very start of each table draw and can be used to cancel the\n\t\t * draw by returning false, any other return (including undefined) results in\n\t\t * the full draw occurring).\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @returns {boolean} False will cancel the draw, anything else (including no\n\t\t *    return) will allow it to complete.\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.preDrawCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"preDrawCallback\": function( settings ) {\n\t\t *          if ( $('#test').val() == 1 ) {\n\t\t *            return false;\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnPreDrawCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * This function allows you to 'post process' each row after it have been\n\t\t * generated for each table draw, but before it is rendered on screen. This\n\t\t * function might be used for setting the row class name etc.\n\t\t *  @type function\n\t\t *  @param {node} row \"TR\" element for the current row\n\t\t *  @param {array} data Raw data array for this row\n\t\t *  @param {int} displayIndex The display index for the current table draw\n\t\t *  @param {int} displayIndexFull The index of the data in the full list of\n\t\t *    rows (after filtering)\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.rowCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"rowCallback\": function( row, data, displayIndex, displayIndexFull ) {\n\t\t *          // Bold the grade for all 'A' grade browsers\n\t\t *          if ( data[4] == \"A\" ) {\n\t\t *            $('td:eq(4)', row).html( '<b>A</b>' );\n\t\t *          }\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnRowCallback\": null,\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * This parameter allows you to override the default function which obtains\n\t\t * the data from the server so something more suitable for your application.\n\t\t * For example you could use POST data, or pull information from a Gears or\n\t\t * AIR database.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {string} source HTTP source to obtain the data from (`ajax`)\n\t\t *  @param {array} data A key/value pair object containing the data to send\n\t\t *    to the server\n\t\t *  @param {function} callback to be called on completion of the data get\n\t\t *    process that will draw the data on the page.\n\t\t *  @param {object} settings DataTables settings object\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.serverData\n\t\t *\n\t\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"fnServerData\": null,\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t *  It is often useful to send extra data to the server when making an Ajax\n\t\t * request - for example custom filtering information, and this callback\n\t\t * function makes it trivial to send extra information to the server. The\n\t\t * passed in parameter is the data set that has been constructed by\n\t\t * DataTables, and you can add to this or modify it as you require.\n\t\t *  @type function\n\t\t *  @param {array} data Data array (array of objects which are name/value\n\t\t *    pairs) that has been constructed by DataTables and will be sent to the\n\t\t *    server. In the case of Ajax sourced data with server-side processing\n\t\t *    this will be an empty array, for server-side processing there will be a\n\t\t *    significant number of parameters!\n\t\t *  @returns {undefined} Ensure that you modify the data array passed in,\n\t\t *    as this is passed by reference.\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.serverParams\n\t\t *\n\t\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"fnServerParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Load the table state. With this function you can define from where, and how, the\n\t\t * state of a table is loaded. By default DataTables will load from `localStorage`\n\t\t * but you might wish to use a server-side database or cookies.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @return {object} The DataTables state object to be loaded\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.stateLoadCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateLoadCallback\": function (settings) {\n\t\t *          var o;\n\t\t *\n\t\t *          // Send an Ajax request to the server to get the data. Note that\n\t\t *          // this is a synchronous request.\n\t\t *          $.ajax( {\n\t\t *            \"url\": \"/state_load\",\n\t\t *            \"async\": false,\n\t\t *            \"dataType\": \"json\",\n\t\t *            \"success\": function (json) {\n\t\t *              o = json;\n\t\t *            }\n\t\t *          } );\n\t\t *\n\t\t *          return o;\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoadCallback\": function ( settings ) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(\n\t\t\t\t\t(settings.iStateDuration === -1 ? sessionStorage : localStorage).getItem(\n\t\t\t\t\t\t'DataTables_'+settings.sInstance+'_'+location.pathname\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t} catch (e) {}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the saved state prior to loading that state.\n\t\t * This callback is called when the table is loading state from the stored data, but\n\t\t * prior to the settings object being modified by the saved state. Note that for\n\t\t * plug-in authors, you should use the `stateLoadParams` event to load parameters for\n\t\t * a plug-in.\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @param {object} data The state object that is to be loaded\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.stateLoadParams\n\t\t *\n\t\t *  @example\n\t\t *    // Remove a saved filter, so filtering is never loaded\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateLoadParams\": function (settings, data) {\n\t\t *          data.oSearch.sSearch = \"\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Disallow state loading by returning false\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateLoadParams\": function (settings, data) {\n\t\t *          return false;\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoadParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Callback that is called when the state has been loaded from the state saving method\n\t\t * and the DataTables settings object has been modified as a result of the loaded state.\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @param {object} data The state object that was loaded\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.stateLoaded\n\t\t *\n\t\t *  @example\n\t\t *    // Show an alert with the filtering value that was saved\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateLoaded\": function (settings, data) {\n\t\t *          alert( 'Saved filter was: '+data.oSearch.sSearch );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateLoaded\": null,\n\t\n\t\n\t\t/**\n\t\t * Save the table state. This function allows you to define where and how the state\n\t\t * information for the table is stored By default DataTables will use `localStorage`\n\t\t * but you might wish to use a server-side database or cookies.\n\t\t *  @type function\n\t\t *  @member\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @param {object} data The state object to be saved\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.stateSaveCallback\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateSaveCallback\": function (settings, data) {\n\t\t *          // Send an Ajax request to the server with the state object\n\t\t *          $.ajax( {\n\t\t *            \"url\": \"/state_save\",\n\t\t *            \"data\": data,\n\t\t *            \"dataType\": \"json\",\n\t\t *            \"method\": \"POST\"\n\t\t *            \"success\": function () {}\n\t\t *          } );\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateSaveCallback\": function ( settings, data ) {\n\t\t\ttry {\n\t\t\t\t(settings.iStateDuration === -1 ? sessionStorage : localStorage).setItem(\n\t\t\t\t\t'DataTables_'+settings.sInstance+'_'+location.pathname,\n\t\t\t\t\tJSON.stringify( data )\n\t\t\t\t);\n\t\t\t} catch (e) {}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Callback which allows modification of the state to be saved. Called when the table\n\t\t * has changed state a new state save is required. This method allows modification of\n\t\t * the state saving object prior to actually doing the save, including addition or\n\t\t * other state properties or modification. Note that for plug-in authors, you should\n\t\t * use the `stateSaveParams` event to save parameters for a plug-in.\n\t\t *  @type function\n\t\t *  @param {object} settings DataTables settings object\n\t\t *  @param {object} data The state object to be saved\n\t\t *\n\t\t *  @dtopt Callbacks\n\t\t *  @name DataTable.defaults.stateSaveParams\n\t\t *\n\t\t *  @example\n\t\t *    // Remove a saved filter, so filtering is never saved\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateSave\": true,\n\t\t *        \"stateSaveParams\": function (settings, data) {\n\t\t *          data.oSearch.sSearch = \"\";\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"fnStateSaveParams\": null,\n\t\n\t\n\t\t/**\n\t\t * Duration for which the saved state information is considered valid. After this period\n\t\t * has elapsed the state will be returned to the default.\n\t\t * Value is given in seconds.\n\t\t *  @type int\n\t\t *  @default 7200 <i>(2 hours)</i>\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.stateDuration\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"stateDuration\": 60*60*24; // 1 day\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iStateDuration\": 7200,\n\t\n\t\n\t\t/**\n\t\t * When enabled DataTables will not make a request to the server for the first\n\t\t * page draw - rather it will use the data already on the page (no sorting etc\n\t\t * will be applied to it), thus saving on an XHR at load time. `deferLoading`\n\t\t * is used to indicate that deferred loading is required, but it is also used\n\t\t * to tell DataTables how many records there are in the full table (allowing\n\t\t * the information element and pagination to be displayed correctly). In the case\n\t\t * where a filtering is applied to the table on initial load, this can be\n\t\t * indicated by giving the parameter as an array, where the first element is\n\t\t * the number of records available after filtering and the second element is the\n\t\t * number of records without filtering (allowing the table information element\n\t\t * to be shown correctly).\n\t\t *  @type int | array\n\t\t *  @default null\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.deferLoading\n\t\t *\n\t\t *  @example\n\t\t *    // 57 records available in the table, no filtering applied\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"serverSide\": true,\n\t\t *        \"ajax\": \"scripts/server_processing.php\",\n\t\t *        \"deferLoading\": 57\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // 57 records after filtering, 100 without filtering (an initial filter applied)\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"serverSide\": true,\n\t\t *        \"ajax\": \"scripts/server_processing.php\",\n\t\t *        \"deferLoading\": [ 57, 100 ],\n\t\t *        \"search\": {\n\t\t *          \"search\": \"my_filter\"\n\t\t *        }\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iDeferLoading\": null,\n\t\n\t\n\t\t/**\n\t\t * Number of rows to display on a single page when using pagination. If\n\t\t * feature enabled (`lengthChange`) then the end user will be able to override\n\t\t * this to a custom setting using a pop-up menu.\n\t\t *  @type int\n\t\t *  @default 10\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.pageLength\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"pageLength\": 50\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iDisplayLength\": 10,\n\t\n\t\n\t\t/**\n\t\t * Define the starting point for data display when using DataTables with\n\t\t * pagination. Note that this parameter is the number of records, rather than\n\t\t * the page number, so if you have 10 records per page and want to start on\n\t\t * the third page, it should be \"20\".\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.displayStart\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"displayStart\": 20\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"iDisplayStart\": 0,\n\t\n\t\n\t\t/**\n\t\t * By default DataTables allows keyboard navigation of the table (sorting, paging,\n\t\t * and filtering) by adding a `tabindex` attribute to the required elements. This\n\t\t * allows you to tab through the controls and press the enter key to activate them.\n\t\t * The tabindex is default 0, meaning that the tab follows the flow of the document.\n\t\t * You can overrule this using this parameter if you wish. Use a value of -1 to\n\t\t * disable built-in keyboard navigation.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.tabIndex\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"tabIndex\": 1\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\n\t\t/**\n\t\t * Classes that DataTables assigns to the various components and features\n\t\t * that it adds to the HTML table. This allows classes to be configured\n\t\t * during initialisation in addition to through the static\n\t\t * {@link DataTable.ext.oStdClasses} object).\n\t\t *  @namespace\n\t\t *  @name DataTable.defaults.classes\n\t\t */\n\t\t\"oClasses\": {},\n\t\n\t\n\t\t/**\n\t\t * All strings that DataTables uses in the user interface that it creates\n\t\t * are defined in this object, allowing you to modified them individually or\n\t\t * completely replace them all as required.\n\t\t *  @namespace\n\t\t *  @name DataTable.defaults.language\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Strings that are used for WAI-ARIA labels and controls only (these are not\n\t\t\t * actually visible on the page, but will be read by screenreaders, and thus\n\t\t\t * must be internationalised as well).\n\t\t\t *  @namespace\n\t\t\t *  @name DataTable.defaults.language.aria\n\t\t\t */\n\t\t\t\"oAria\": {\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted ascending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default : activate to sort column ascending\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.aria.sortAscending\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"aria\": {\n\t\t\t\t *            \"sortAscending\": \" - click/return to sort ascending\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sSortAscending\": \": activate to sort column ascending\",\n\t\n\t\t\t\t/**\n\t\t\t\t * ARIA label that is added to the table headers when the column may be\n\t\t\t\t * sorted descending by activing the column (click or return when focused).\n\t\t\t\t * Note that the column header is prefixed to this string.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default : activate to sort column ascending\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.aria.sortDescending\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"aria\": {\n\t\t\t\t *            \"sortDescending\": \" - click/return to sort descending\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sSortDescending\": \": activate to sort column descending\"\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * Pagination string used by DataTables for the built-in pagination\n\t\t\t * control types.\n\t\t\t *  @namespace\n\t\t\t *  @name DataTable.defaults.language.paginate\n\t\t\t */\n\t\t\t\"oPaginate\": {\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the first page.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default First\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.paginate.first\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"paginate\": {\n\t\t\t\t *            \"first\": \"First page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sFirst\": \"First\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use when using the 'full_numbers' type of pagination for the\n\t\t\t\t * button to take the user to the last page.\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Last\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.paginate.last\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"paginate\": {\n\t\t\t\t *            \"last\": \"Last page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sLast\": \"Last\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'next' pagination button (to take the user to the\n\t\t\t\t * next page).\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Next\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.paginate.next\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"paginate\": {\n\t\t\t\t *            \"next\": \"Next page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sNext\": \"Next\",\n\t\n\t\n\t\t\t\t/**\n\t\t\t\t * Text to use for the 'previous' pagination button (to take the user to\n\t\t\t\t * the previous page).\n\t\t\t\t *  @type string\n\t\t\t\t *  @default Previous\n\t\t\t\t *\n\t\t\t\t *  @dtopt Language\n\t\t\t\t *  @name DataTable.defaults.language.paginate.previous\n\t\t\t\t *\n\t\t\t\t *  @example\n\t\t\t\t *    $(document).ready( function() {\n\t\t\t\t *      $('#example').dataTable( {\n\t\t\t\t *        \"language\": {\n\t\t\t\t *          \"paginate\": {\n\t\t\t\t *            \"previous\": \"Previous page\"\n\t\t\t\t *          }\n\t\t\t\t *        }\n\t\t\t\t *      } );\n\t\t\t\t *    } );\n\t\t\t\t */\n\t\t\t\t\"sPrevious\": \"Previous\"\n\t\t\t},\n\t\n\t\t\t/**\n\t\t\t * This string is shown in preference to `zeroRecords` when the table is\n\t\t\t * empty of data (regardless of filtering). Note that this is an optional\n\t\t\t * parameter - if it is not given, the value of `zeroRecords` will be used\n\t\t\t * instead (either the default or given value).\n\t\t\t *  @type string\n\t\t\t *  @default No data available in table\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.emptyTable\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"emptyTable\": \"No data available in table\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sEmptyTable\": \"No data available in table\",\n\t\n\t\n\t\t\t/**\n\t\t\t * This string gives information to the end user about the information\n\t\t\t * that is current on display on the page. The following tokens can be\n\t\t\t * used in the string and will be dynamically replaced as the table\n\t\t\t * display updates. This tokens can be placed anywhere in the string, or\n\t\t\t * removed as needed by the language requires:\n\t\t\t *\n\t\t\t * * `\\_START\\_` - Display index of the first record on the current page\n\t\t\t * * `\\_END\\_` - Display index of the last record on the current page\n\t\t\t * * `\\_TOTAL\\_` - Number of records in the table after filtering\n\t\t\t * * `\\_MAX\\_` - Number of records in the table without filtering\n\t\t\t * * `\\_PAGE\\_` - Current page number\n\t\t\t * * `\\_PAGES\\_` - Total number of pages of data in the table\n\t\t\t *\n\t\t\t *  @type string\n\t\t\t *  @default Showing _START_ to _END_ of _TOTAL_ entries\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.info\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"info\": \"Showing page _PAGE_ of _PAGES_\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfo\": \"Showing _START_ to _END_ of _TOTAL_ entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Display information string for when the table is empty. Typically the\n\t\t\t * format of this string should match `info`.\n\t\t\t *  @type string\n\t\t\t *  @default Showing 0 to 0 of 0 entries\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.infoEmpty\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"infoEmpty\": \"No entries to show\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoEmpty\": \"Showing 0 to 0 of 0 entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * When a user filters the information in a table, this string is appended\n\t\t\t * to the information (`info`) to give an idea of how strong the filtering\n\t\t\t * is. The variable _MAX_ is dynamically updated.\n\t\t\t *  @type string\n\t\t\t *  @default (filtered from _MAX_ total entries)\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.infoFiltered\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"infoFiltered\": \" - filtering from _MAX_ records\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoFiltered\": \"(filtered from _MAX_ total entries)\",\n\t\n\t\n\t\t\t/**\n\t\t\t * If can be useful to append extra information to the info string at times,\n\t\t\t * and this variable does exactly that. This information will be appended to\n\t\t\t * the `info` (`infoEmpty` and `infoFiltered` in whatever combination they are\n\t\t\t * being used) at all times.\n\t\t\t *  @type string\n\t\t\t *  @default <i>Empty string</i>\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.infoPostFix\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"infoPostFix\": \"All records shown are derived from real information.\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sInfoPostFix\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * This decimal place operator is a little different from the other\n\t\t\t * language options since DataTables doesn't output floating point\n\t\t\t * numbers, so it won't ever use this for display of a number. Rather,\n\t\t\t * what this parameter does is modify the sort methods of the table so\n\t\t\t * that numbers which are in a format which has a character other than\n\t\t\t * a period (`.`) as a decimal place will be sorted numerically.\n\t\t\t *\n\t\t\t * Note that numbers with different decimal places cannot be shown in\n\t\t\t * the same table and still be sortable, the table must be consistent.\n\t\t\t * However, multiple different tables on the page can use different\n\t\t\t * decimal place characters.\n\t\t\t *  @type string\n\t\t\t *  @default \n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.decimal\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"decimal\": \",\"\n\t\t\t *          \"thousands\": \".\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sDecimal\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * DataTables has a build in number formatter (`formatNumber`) which is\n\t\t\t * used to format large numbers that are used in the table information.\n\t\t\t * By default a comma is used, but this can be trivially changed to any\n\t\t\t * character you wish with this parameter.\n\t\t\t *  @type string\n\t\t\t *  @default ,\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.thousands\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"thousands\": \"'\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sThousands\": \",\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Detail the action that will be taken when the drop down menu for the\n\t\t\t * pagination length option is changed. The '_MENU_' variable is replaced\n\t\t\t * with a default select list of 10, 25, 50 and 100, and can be replaced\n\t\t\t * with a custom select box if required.\n\t\t\t *  @type string\n\t\t\t *  @default Show _MENU_ entries\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.lengthMenu\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Language change only\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"lengthMenu\": \"Display _MENU_ records\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Language and options change\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"lengthMenu\": 'Display <select>'+\n\t\t\t *            '<option value=\"10\">10</option>'+\n\t\t\t *            '<option value=\"20\">20</option>'+\n\t\t\t *            '<option value=\"30\">30</option>'+\n\t\t\t *            '<option value=\"40\">40</option>'+\n\t\t\t *            '<option value=\"50\">50</option>'+\n\t\t\t *            '<option value=\"-1\">All</option>'+\n\t\t\t *            '</select> records'\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sLengthMenu\": \"Show _MENU_ entries\",\n\t\n\t\n\t\t\t/**\n\t\t\t * When using Ajax sourced data and during the first draw when DataTables is\n\t\t\t * gathering the data, this message is shown in an empty row in the table to\n\t\t\t * indicate to the end user the the data is being loaded. Note that this\n\t\t\t * parameter is not used when loading data by server-side processing, just\n\t\t\t * Ajax sourced data with client-side processing.\n\t\t\t *  @type string\n\t\t\t *  @default Loading...\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.loadingRecords\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"loadingRecords\": \"Please wait - loading...\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sLoadingRecords\": \"Loading...\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Text which is displayed when the table is processing a user action\n\t\t\t * (usually a sort command or similar).\n\t\t\t *  @type string\n\t\t\t *  @default Processing...\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.processing\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"processing\": \"DataTables is currently busy\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sProcessing\": \"Processing...\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Details the actions that will be taken when the user types into the\n\t\t\t * filtering input text box. The variable \"_INPUT_\", if used in the string,\n\t\t\t * is replaced with the HTML text box for the filtering input allowing\n\t\t\t * control over where it appears in the string. If \"_INPUT_\" is not given\n\t\t\t * then the input box is appended to the string automatically.\n\t\t\t *  @type string\n\t\t\t *  @default Search:\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.search\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Input text box will be appended at the end automatically\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"search\": \"Filter records:\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Specify where the filter should appear\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"search\": \"Apply filter _INPUT_ to table\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sSearch\": \"Search:\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Assign a `placeholder` attribute to the search `input` element\n\t\t\t *  @type string\n\t\t\t *  @default \n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.searchPlaceholder\n\t\t\t */\n\t\t\t\"sSearchPlaceholder\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * All of the language information can be stored in a file on the\n\t\t\t * server-side, which DataTables will look up if this parameter is passed.\n\t\t\t * It must store the URL of the language file, which is in a JSON format,\n\t\t\t * and the object has the same properties as the oLanguage object in the\n\t\t\t * initialiser object (i.e. the above parameters). Please refer to one of\n\t\t\t * the example language files to see how this works in action.\n\t\t\t *  @type string\n\t\t\t *  @default <i>Empty string - i.e. disabled</i>\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.url\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"url\": \"http://www.sprymedia.co.uk/dataTables/lang.txt\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sUrl\": \"\",\n\t\n\t\n\t\t\t/**\n\t\t\t * Text shown inside the table records when the is no information to be\n\t\t\t * displayed after filtering. `emptyTable` is shown when there is simply no\n\t\t\t * information in the table at all (regardless of filtering).\n\t\t\t *  @type string\n\t\t\t *  @default No matching records found\n\t\t\t *\n\t\t\t *  @dtopt Language\n\t\t\t *  @name DataTable.defaults.language.zeroRecords\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $(document).ready( function() {\n\t\t\t *      $('#example').dataTable( {\n\t\t\t *        \"language\": {\n\t\t\t *          \"zeroRecords\": \"No records to display\"\n\t\t\t *        }\n\t\t\t *      } );\n\t\t\t *    } );\n\t\t\t */\n\t\t\t\"sZeroRecords\": \"No matching records found\"\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * This parameter allows you to have define the global filtering state at\n\t\t * initialisation time. As an object the `search` parameter must be\n\t\t * defined, but all other parameters are optional. When `regex` is true,\n\t\t * the search string will be treated as a regular expression, when false\n\t\t * (default) it will be treated as a straight string. When `smart`\n\t\t * DataTables will use it's smart filtering methods (to word match at\n\t\t * any point in the data), when false this will not be done.\n\t\t *  @namespace\n\t\t *  @extends DataTable.models.oSearch\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.search\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"search\": {\"search\": \"Initial search\"}\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"oSearch\": $.extend( {}, DataTable.models.oSearch ),\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * By default DataTables will look for the property `data` (or `aaData` for\n\t\t * compatibility with DataTables 1.9-) when obtaining data from an Ajax\n\t\t * source or for server-side processing - this parameter allows that\n\t\t * property to be changed. You can use Javascript dotted object notation to\n\t\t * get a data source for multiple levels of nesting.\n\t\t *  @type string\n\t\t *  @default data\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.ajaxDataProp\n\t\t *\n\t\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sAjaxDataProp\": \"data\",\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * You can instruct DataTables to load data from an external\n\t\t * source using this parameter (use aData if you want to pass data in you\n\t\t * already have). Simply provide a url a JSON object can be obtained from.\n\t\t *  @type string\n\t\t *  @default null\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.ajaxSource\n\t\t *\n\t\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\n\t\n\t\t/**\n\t\t * This initialisation variable allows you to specify exactly where in the\n\t\t * DOM you want DataTables to inject the various controls it adds to the page\n\t\t * (for example you might want the pagination controls at the top of the\n\t\t * table). DIV elements (with or without a custom class) can also be added to\n\t\t * aid styling. The follow syntax is used:\n\t\t *   <ul>\n\t\t *     <li>The following options are allowed:\n\t\t *       <ul>\n\t\t *         <li>'l' - Length changing</li>\n\t\t *         <li>'f' - Filtering input</li>\n\t\t *         <li>'t' - The table!</li>\n\t\t *         <li>'i' - Information</li>\n\t\t *         <li>'p' - Pagination</li>\n\t\t *         <li>'r' - pRocessing</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>The following constants are allowed:\n\t\t *       <ul>\n\t\t *         <li>'H' - jQueryUI theme \"header\" classes ('fg-toolbar ui-widget-header ui-corner-tl ui-corner-tr ui-helper-clearfix')</li>\n\t\t *         <li>'F' - jQueryUI theme \"footer\" classes ('fg-toolbar ui-widget-header ui-corner-bl ui-corner-br ui-helper-clearfix')</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>The following syntax is expected:\n\t\t *       <ul>\n\t\t *         <li>'&lt;' and '&gt;' - div elements</li>\n\t\t *         <li>'&lt;\"class\" and '&gt;' - div with a class</li>\n\t\t *         <li>'&lt;\"#id\" and '&gt;' - div with an ID</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *     <li>Examples:\n\t\t *       <ul>\n\t\t *         <li>'&lt;\"wrapper\"flipt&gt;'</li>\n\t\t *         <li>'&lt;lf&lt;t&gt;ip&gt;'</li>\n\t\t *       </ul>\n\t\t *     </li>\n\t\t *   </ul>\n\t\t *  @type string\n\t\t *  @default lfrtip <i>(when `jQueryUI` is false)</i> <b>or</b>\n\t\t *    <\"H\"lfr>t<\"F\"ip> <i>(when `jQueryUI` is true)</i>\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.dom\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"dom\": '&lt;\"top\"i&gt;rt&lt;\"bottom\"flp&gt;&lt;\"clear\"&gt;'\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sDom\": \"lfrtip\",\n\t\n\t\n\t\t/**\n\t\t * DataTables features four different built-in options for the buttons to\n\t\t * display for pagination control:\n\t\t *\n\t\t * * `simple` - 'Previous' and 'Next' buttons only\n\t\t * * 'simple_numbers` - 'Previous' and 'Next' buttons, plus page numbers\n\t\t * * `full` - 'First', 'Previous', 'Next' and 'Last' buttons\n\t\t * * `full_numbers` - 'First', 'Previous', 'Next' and 'Last' buttons, plus\n\t\t *   page numbers\n\t\t *  \n\t\t * Further methods can be added using {@link DataTable.ext.oPagination}.\n\t\t *  @type string\n\t\t *  @default simple_numbers\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.pagingType\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"pagingType\": \"full_numbers\"\n\t\t *      } );\n\t\t *    } )\n\t\t */\n\t\t\"sPaginationType\": \"simple_numbers\",\n\t\n\t\n\t\t/**\n\t\t * Enable horizontal scrolling. When a table is too wide to fit into a\n\t\t * certain layout, or you have a large number of columns in the table, you\n\t\t * can enable x-scrolling to show the table in a viewport, which can be\n\t\t * scrolled. This property can be `true` which will allow the table to\n\t\t * scroll horizontally when needed, or any CSS unit, or a number (in which\n\t\t * case it will be treated as a pixel measurement). Setting as simply `true`\n\t\t * is recommended.\n\t\t *  @type boolean|string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.scrollX\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"scrollX\": true,\n\t\t *        \"scrollCollapse\": true\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollX\": \"\",\n\t\n\t\n\t\t/**\n\t\t * This property can be used to force a DataTable to use more width than it\n\t\t * might otherwise do when x-scrolling is enabled. For example if you have a\n\t\t * table which requires to be well spaced, this parameter is useful for\n\t\t * \"over-sizing\" the table, and thus forcing scrolling. This property can by\n\t\t * any CSS unit, or a number (in which case it will be treated as a pixel\n\t\t * measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @name DataTable.defaults.scrollXInner\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"scrollX\": \"100%\",\n\t\t *        \"scrollXInner\": \"110%\"\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollXInner\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Enable vertical scrolling. Vertical scrolling will constrain the DataTable\n\t\t * to the given height, and enable scrolling for any data which overflows the\n\t\t * current viewport. This can be used as an alternative to paging to display\n\t\t * a lot of data in a small area (although paging and scrolling can both be\n\t\t * enabled at the same time). This property can be any CSS unit, or a number\n\t\t * (in which case it will be treated as a pixel measurement).\n\t\t *  @type string\n\t\t *  @default <i>blank string - i.e. disabled</i>\n\t\t *\n\t\t *  @dtopt Features\n\t\t *  @name DataTable.defaults.scrollY\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"scrollY\": \"200px\",\n\t\t *        \"paginate\": false\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sScrollY\": \"\",\n\t\n\t\n\t\t/**\n\t\t * __Deprecated__ The functionality provided by this parameter has now been\n\t\t * superseded by that provided through `ajax`, which should be used instead.\n\t\t *\n\t\t * Set the HTTP method that is used to make the Ajax call for server-side\n\t\t * processing or Ajax sourced data.\n\t\t *  @type string\n\t\t *  @default GET\n\t\t *\n\t\t *  @dtopt Options\n\t\t *  @dtopt Server-side\n\t\t *  @name DataTable.defaults.serverMethod\n\t\t *\n\t\t *  @deprecated 1.10. Please use `ajax` for this functionality now.\n\t\t */\n\t\t\"sServerMethod\": \"GET\",\n\t\n\t\n\t\t/**\n\t\t * DataTables makes use of renderers when displaying HTML elements for\n\t\t * a table. These renderers can be added or modified by plug-ins to\n\t\t * generate suitable mark-up for a site. For example the Bootstrap\n\t\t * integration plug-in for DataTables uses a paging button renderer to\n\t\t * display pagination buttons in the mark-up required by Bootstrap.\n\t\t *\n\t\t * For further information about the renderers available see\n\t\t * DataTable.ext.renderer\n\t\t *  @type string|object\n\t\t *  @default null\n\t\t *\n\t\t *  @name DataTable.defaults.renderer\n\t\t *\n\t\t */\n\t\t\"renderer\": null\n\t};\n\t\n\t_fnHungarianMap( DataTable.defaults );\n\t\n\t\n\t\n\t/*\n\t * Developer note - See note in model.defaults.js about the use of Hungarian\n\t * notation and camel case.\n\t */\n\t\n\t/**\n\t * Column options that can be given to DataTables at initialisation time.\n\t *  @namespace\n\t */\n\tDataTable.defaults.column = {\n\t\t/**\n\t\t * Define which column(s) an order will occur on for this column. This\n\t\t * allows a column's ordering to take multiple columns into account when\n\t\t * doing a sort or use the data from a different column. For example first\n\t\t * name / last name columns make sense to do a multi-column sort over the\n\t\t * two columns.\n\t\t *  @type array|int\n\t\t *  @default null <i>Takes the value of the column index automatically</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.orderData\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"orderData\": [ 0, 1 ], \"targets\": [ 0 ] },\n\t\t *          { \"orderData\": [ 1, 0 ], \"targets\": [ 1 ] },\n\t\t *          { \"orderData\": 2, \"targets\": [ 2 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"orderData\": [ 0, 1 ] },\n\t\t *          { \"orderData\": [ 1, 0 ] },\n\t\t *          { \"orderData\": 2 },\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"aDataSort\": null,\n\t\t\"iDataSort\": -1,\n\t\n\t\n\t\t/**\n\t\t * You can control the default ordering direction, and even alter the\n\t\t * behaviour of the sort handler (i.e. only allow ascending ordering etc)\n\t\t * using this parameter.\n\t\t *  @type array\n\t\t *  @default [ 'asc', 'desc' ]\n\t\t *\n\t\t *  @name DataTable.defaults.column.orderSequence\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"orderSequence\": [ \"asc\" ], \"targets\": [ 1 ] },\n\t\t *          { \"orderSequence\": [ \"desc\", \"asc\", \"asc\" ], \"targets\": [ 2 ] },\n\t\t *          { \"orderSequence\": [ \"desc\" ], \"targets\": [ 3 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          null,\n\t\t *          { \"orderSequence\": [ \"asc\" ] },\n\t\t *          { \"orderSequence\": [ \"desc\", \"asc\", \"asc\" ] },\n\t\t *          { \"orderSequence\": [ \"desc\" ] },\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"asSorting\": [ 'asc', 'desc' ],\n\t\n\t\n\t\t/**\n\t\t * Enable or disable filtering on the data in this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @name DataTable.defaults.column.searchable\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"searchable\": false, \"targets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"searchable\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bSearchable\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable ordering on this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @name DataTable.defaults.column.orderable\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"orderable\": false, \"targets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"orderable\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bSortable\": true,\n\t\n\t\n\t\t/**\n\t\t * Enable or disable the display of this column.\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t *\n\t\t *  @name DataTable.defaults.column.visible\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"visible\": false, \"targets\": [ 0 ] }\n\t\t *        ] } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"visible\": false },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ] } );\n\t\t *    } );\n\t\t */\n\t\t\"bVisible\": true,\n\t\n\t\n\t\t/**\n\t\t * Developer definable function that is called whenever a cell is created (Ajax source,\n\t\t * etc) or processed for input (DOM source). This can be used as a compliment to mRender\n\t\t * allowing you to modify the DOM element (add background colour for example) when the\n\t\t * element is available.\n\t\t *  @type function\n\t\t *  @param {element} td The TD node that has been created\n\t\t *  @param {*} cellData The Data for the cell\n\t\t *  @param {array|object} rowData The data for the whole row\n\t\t *  @param {int} row The row index for the aoData data store\n\t\t *  @param {int} col The column index for aoColumns\n\t\t *\n\t\t *  @name DataTable.defaults.column.createdCell\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [3],\n\t\t *          \"createdCell\": function (td, cellData, rowData, row, col) {\n\t\t *            if ( cellData == \"1.7\" ) {\n\t\t *              $(td).css('color', 'blue')\n\t\t *            }\n\t\t *          }\n\t\t *        } ]\n\t\t *      });\n\t\t *    } );\n\t\t */\n\t\t\"fnCreatedCell\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter has been replaced by `data` in DataTables to ensure naming\n\t\t * consistency. `dataProp` can still be used, as there is backwards\n\t\t * compatibility in DataTables for this option, but it is strongly\n\t\t * recommended that you use `data` in preference to `dataProp`.\n\t\t *  @name DataTable.defaults.column.dataProp\n\t\t */\n\t\n\t\n\t\t/**\n\t\t * This property can be used to read data from any data source property,\n\t\t * including deeply nested objects / properties. `data` can be given in a\n\t\t * number of different ways which effect its behaviour:\n\t\t *\n\t\t * * `integer` - treated as an array index for the data source. This is the\n\t\t *   default that DataTables uses (incrementally increased for each column).\n\t\t * * `string` - read an object property from the data source. There are\n\t\t *   three 'special' options that can be used in the string to alter how\n\t\t *   DataTables reads the data from the source object:\n\t\t *    * `.` - Dotted Javascript notation. Just as you use a `.` in\n\t\t *      Javascript to read from nested objects, so to can the options\n\t\t *      specified in `data`. For example: `browser.version` or\n\t\t *      `browser.name`. If your object parameter name contains a period, use\n\t\t *      `\\\\` to escape it - i.e. `first\\\\.name`.\n\t\t *    * `[]` - Array notation. DataTables can automatically combine data\n\t\t *      from and array source, joining the data with the characters provided\n\t\t *      between the two brackets. For example: `name[, ]` would provide a\n\t\t *      comma-space separated list from the source array. If no characters\n\t\t *      are provided between the brackets, the original array source is\n\t\t *      returned.\n\t\t *    * `()` - Function notation. Adding `()` to the end of a parameter will\n\t\t *      execute a function of the name given. For example: `browser()` for a\n\t\t *      simple function on the data source, `browser.version()` for a\n\t\t *      function in a nested property or even `browser().version` to get an\n\t\t *      object property if the function called returns an object. Note that\n\t\t *      function notation is recommended for use in `render` rather than\n\t\t *      `data` as it is much simpler to use as a renderer.\n\t\t * * `null` - use the original data source for the row rather than plucking\n\t\t *   data directly from it. This action has effects on two other\n\t\t *   initialisation options:\n\t\t *    * `defaultContent` - When null is given as the `data` option and\n\t\t *      `defaultContent` is specified for the column, the value defined by\n\t\t *      `defaultContent` will be used for the cell.\n\t\t *    * `render` - When null is used for the `data` option and the `render`\n\t\t *      option is specified for the column, the whole data source for the\n\t\t *      row is used for the renderer.\n\t\t * * `function` - the function given will be executed whenever DataTables\n\t\t *   needs to set or get the data for a cell in the column. The function\n\t\t *   takes three parameters:\n\t\t *    * Parameters:\n\t\t *      * `{array|object}` The data source for the row\n\t\t *      * `{string}` The type call data requested - this will be 'set' when\n\t\t *        setting data or 'filter', 'display', 'type', 'sort' or undefined\n\t\t *        when gathering data. Note that when `undefined` is given for the\n\t\t *        type DataTables expects to get the raw data for the object back<\n\t\t *      * `{*}` Data to set when the second parameter is 'set'.\n\t\t *    * Return:\n\t\t *      * The return value from the function is not required when 'set' is\n\t\t *        the type of call, but otherwise the return is what will be used\n\t\t *        for the data requested.\n\t\t *\n\t\t * Note that `data` is a getter and setter option. If you just require\n\t\t * formatting of data for output, you will likely want to use `render` which\n\t\t * is simply a getter and thus simpler to use.\n\t\t *\n\t\t * Note that prior to DataTables 1.9.2 `data` was called `mDataProp`. The\n\t\t * name change reflects the flexibility of this property and is consistent\n\t\t * with the naming of mRender. If 'mDataProp' is given, then it will still\n\t\t * be used by DataTables, as it automatically maps the old name to the new\n\t\t * if required.\n\t\t *\n\t\t *  @type string|int|function|null\n\t\t *  @default null <i>Use automatically calculated column index</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.data\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Read table data from objects\n\t\t *    // JSON structure for each row:\n\t\t *    //   {\n\t\t *    //      \"engine\": {value},\n\t\t *    //      \"browser\": {value},\n\t\t *    //      \"platform\": {value},\n\t\t *    //      \"version\": {value},\n\t\t *    //      \"grade\": {value}\n\t\t *    //   }\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"ajaxSource\": \"sources/objects.txt\",\n\t\t *        \"columns\": [\n\t\t *          { \"data\": \"engine\" },\n\t\t *          { \"data\": \"browser\" },\n\t\t *          { \"data\": \"platform\" },\n\t\t *          { \"data\": \"version\" },\n\t\t *          { \"data\": \"grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Read information from deeply nested objects\n\t\t *    // JSON structure for each row:\n\t\t *    //   {\n\t\t *    //      \"engine\": {value},\n\t\t *    //      \"browser\": {value},\n\t\t *    //      \"platform\": {\n\t\t *    //         \"inner\": {value}\n\t\t *    //      },\n\t\t *    //      \"details\": [\n\t\t *    //         {value}, {value}\n\t\t *    //      ]\n\t\t *    //   }\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"ajaxSource\": \"sources/deep.txt\",\n\t\t *        \"columns\": [\n\t\t *          { \"data\": \"engine\" },\n\t\t *          { \"data\": \"browser\" },\n\t\t *          { \"data\": \"platform.inner\" },\n\t\t *          { \"data\": \"platform.details.0\" },\n\t\t *          { \"data\": \"platform.details.1\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `data` as a function to provide different information for\n\t\t *    // sorting, filtering and display. In this case, currency (price)\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": function ( source, type, val ) {\n\t\t *            if (type === 'set') {\n\t\t *              source.price = val;\n\t\t *              // Store the computed dislay and filter values for efficiency\n\t\t *              source.price_display = val==\"\" ? \"\" : \"$\"+numberFormat(val);\n\t\t *              source.price_filter  = val==\"\" ? \"\" : \"$\"+numberFormat(val)+\" \"+val;\n\t\t *              return;\n\t\t *            }\n\t\t *            else if (type === 'display') {\n\t\t *              return source.price_display;\n\t\t *            }\n\t\t *            else if (type === 'filter') {\n\t\t *              return source.price_filter;\n\t\t *            }\n\t\t *            // 'sort', 'type' and undefined all just use the integer\n\t\t *            return source.price;\n\t\t *          }\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using default content\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": null,\n\t\t *          \"defaultContent\": \"Click to edit\"\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using array notation - outputting a list from an array\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": \"name[, ]\"\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t */\n\t\t\"mData\": null,\n\t\n\t\n\t\t/**\n\t\t * This property is the rendering partner to `data` and it is suggested that\n\t\t * when you want to manipulate data for display (including filtering,\n\t\t * sorting etc) without altering the underlying data for the table, use this\n\t\t * property. `render` can be considered to be the the read only companion to\n\t\t * `data` which is read / write (then as such more complex). Like `data`\n\t\t * this option can be given in a number of different ways to effect its\n\t\t * behaviour:\n\t\t *\n\t\t * * `integer` - treated as an array index for the data source. This is the\n\t\t *   default that DataTables uses (incrementally increased for each column).\n\t\t * * `string` - read an object property from the data source. There are\n\t\t *   three 'special' options that can be used in the string to alter how\n\t\t *   DataTables reads the data from the source object:\n\t\t *    * `.` - Dotted Javascript notation. Just as you use a `.` in\n\t\t *      Javascript to read from nested objects, so to can the options\n\t\t *      specified in `data`. For example: `browser.version` or\n\t\t *      `browser.name`. If your object parameter name contains a period, use\n\t\t *      `\\\\` to escape it - i.e. `first\\\\.name`.\n\t\t *    * `[]` - Array notation. DataTables can automatically combine data\n\t\t *      from and array source, joining the data with the characters provided\n\t\t *      between the two brackets. For example: `name[, ]` would provide a\n\t\t *      comma-space separated list from the source array. If no characters\n\t\t *      are provided between the brackets, the original array source is\n\t\t *      returned.\n\t\t *    * `()` - Function notation. Adding `()` to the end of a parameter will\n\t\t *      execute a function of the name given. For example: `browser()` for a\n\t\t *      simple function on the data source, `browser.version()` for a\n\t\t *      function in a nested property or even `browser().version` to get an\n\t\t *      object property if the function called returns an object.\n\t\t * * `object` - use different data for the different data types requested by\n\t\t *   DataTables ('filter', 'display', 'type' or 'sort'). The property names\n\t\t *   of the object is the data type the property refers to and the value can\n\t\t *   defined using an integer, string or function using the same rules as\n\t\t *   `render` normally does. Note that an `_` option _must_ be specified.\n\t\t *   This is the default value to use if you haven't specified a value for\n\t\t *   the data type requested by DataTables.\n\t\t * * `function` - the function given will be executed whenever DataTables\n\t\t *   needs to set or get the data for a cell in the column. The function\n\t\t *   takes three parameters:\n\t\t *    * Parameters:\n\t\t *      * {array|object} The data source for the row (based on `data`)\n\t\t *      * {string} The type call data requested - this will be 'filter',\n\t\t *        'display', 'type' or 'sort'.\n\t\t *      * {array|object} The full data source for the row (not based on\n\t\t *        `data`)\n\t\t *    * Return:\n\t\t *      * The return value from the function is what will be used for the\n\t\t *        data requested.\n\t\t *\n\t\t *  @type string|int|function|object|null\n\t\t *  @default null Use the data source value.\n\t\t *\n\t\t *  @name DataTable.defaults.column.render\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Create a comma separated list from an array of objects\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"ajaxSource\": \"sources/deep.txt\",\n\t\t *        \"columns\": [\n\t\t *          { \"data\": \"engine\" },\n\t\t *          { \"data\": \"browser\" },\n\t\t *          {\n\t\t *            \"data\": \"platform\",\n\t\t *            \"render\": \"[, ].name\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Execute a function to obtain data\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": null, // Use the full data source object for the renderer's source\n\t\t *          \"render\": \"browserName()\"\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // As an object, extracting different data for the different types\n\t\t *    // This would be used with a data source such as:\n\t\t *    //   { \"phone\": 5552368, \"phone_filter\": \"5552368 555-2368\", \"phone_display\": \"555-2368\" }\n\t\t *    // Here the `phone` integer is used for sorting and type detection, while `phone_filter`\n\t\t *    // (which has both forms) is used for filtering for if a user inputs either format, while\n\t\t *    // the formatted phone number is the one that is shown in the table.\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": null, // Use the full data source object for the renderer's source\n\t\t *          \"render\": {\n\t\t *            \"_\": \"phone\",\n\t\t *            \"filter\": \"phone_filter\",\n\t\t *            \"display\": \"phone_display\"\n\t\t *          }\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Use as a function to create a link from the data source\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"data\": \"download_link\",\n\t\t *          \"render\": function ( data, type, full ) {\n\t\t *            return '<a href=\"'+data+'\">Download</a>';\n\t\t *          }\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"mRender\": null,\n\t\n\t\n\t\t/**\n\t\t * Change the cell type created for the column - either TD cells or TH cells. This\n\t\t * can be useful as TH cells have semantic meaning in the table body, allowing them\n\t\t * to act as a header for a row (you may wish to add scope='row' to the TH elements).\n\t\t *  @type string\n\t\t *  @default td\n\t\t *\n\t\t *  @name DataTable.defaults.column.cellType\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Make the first column use TH cells\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [ {\n\t\t *          \"targets\": [ 0 ],\n\t\t *          \"cellType\": \"th\"\n\t\t *        } ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sCellType\": \"td\",\n\t\n\t\n\t\t/**\n\t\t * Class to give to each cell in this column.\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.class\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"class\": \"my_class\", \"targets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"class\": \"my_class\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sClass\": \"\",\n\t\n\t\t/**\n\t\t * When DataTables calculates the column widths to assign to each column,\n\t\t * it finds the longest string in each column and then constructs a\n\t\t * temporary table and reads the widths from that. The problem with this\n\t\t * is that \"mmm\" is much wider then \"iiii\", but the latter is a longer\n\t\t * string - thus the calculation can go wrong (doing it properly and putting\n\t\t * it into an DOM object and measuring that is horribly(!) slow). Thus as\n\t\t * a \"work around\" we provide this option. It will append its value to the\n\t\t * text that is found to be the longest string for the column - i.e. padding.\n\t\t * Generally you shouldn't need this!\n\t\t *  @type string\n\t\t *  @default <i>Empty string<i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.contentPadding\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          {\n\t\t *            \"contentPadding\": \"mmm\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sContentPadding\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Allows a default value to be given for a column's data, and will be used\n\t\t * whenever a null data source is encountered (this can be because `data`\n\t\t * is set to null, or because the data source itself is null).\n\t\t *  @type string\n\t\t *  @default null\n\t\t *\n\t\t *  @name DataTable.defaults.column.defaultContent\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          {\n\t\t *            \"data\": null,\n\t\t *            \"defaultContent\": \"Edit\",\n\t\t *            \"targets\": [ -1 ]\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          {\n\t\t *            \"data\": null,\n\t\t *            \"defaultContent\": \"Edit\"\n\t\t *          }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sDefaultContent\": null,\n\t\n\t\n\t\t/**\n\t\t * This parameter is only used in DataTables' server-side processing. It can\n\t\t * be exceptionally useful to know what columns are being displayed on the\n\t\t * client side, and to map these to database fields. When defined, the names\n\t\t * also allow DataTables to reorder information from the server if it comes\n\t\t * back in an unexpected order (i.e. if you switch your columns around on the\n\t\t * client-side, your server-side code does not also need updating).\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.name\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"name\": \"engine\", \"targets\": [ 0 ] },\n\t\t *          { \"name\": \"browser\", \"targets\": [ 1 ] },\n\t\t *          { \"name\": \"platform\", \"targets\": [ 2 ] },\n\t\t *          { \"name\": \"version\", \"targets\": [ 3 ] },\n\t\t *          { \"name\": \"grade\", \"targets\": [ 4 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"name\": \"engine\" },\n\t\t *          { \"name\": \"browser\" },\n\t\t *          { \"name\": \"platform\" },\n\t\t *          { \"name\": \"version\" },\n\t\t *          { \"name\": \"grade\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sName\": \"\",\n\t\n\t\n\t\t/**\n\t\t * Defines a data source type for the ordering which can be used to read\n\t\t * real-time information from the table (updating the internally cached\n\t\t * version) prior to ordering. This allows ordering to occur on user\n\t\t * editable elements such as form inputs.\n\t\t *  @type string\n\t\t *  @default std\n\t\t *\n\t\t *  @name DataTable.defaults.column.orderDataType\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"orderDataType\": \"dom-text\", \"targets\": [ 2, 3 ] },\n\t\t *          { \"type\": \"numeric\", \"targets\": [ 3 ] },\n\t\t *          { \"orderDataType\": \"dom-select\", \"targets\": [ 4 ] },\n\t\t *          { \"orderDataType\": \"dom-checkbox\", \"targets\": [ 5 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          null,\n\t\t *          null,\n\t\t *          { \"orderDataType\": \"dom-text\" },\n\t\t *          { \"orderDataType\": \"dom-text\", \"type\": \"numeric\" },\n\t\t *          { \"orderDataType\": \"dom-select\" },\n\t\t *          { \"orderDataType\": \"dom-checkbox\" }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sSortDataType\": \"std\",\n\t\n\t\n\t\t/**\n\t\t * The title of this column.\n\t\t *  @type string\n\t\t *  @default null <i>Derived from the 'TH' value for this column in the\n\t\t *    original HTML table.</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.title\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"title\": \"My column title\", \"targets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"title\": \"My column title\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sTitle\": null,\n\t\n\t\n\t\t/**\n\t\t * The type allows you to specify how the data for this column will be\n\t\t * ordered. Four types (string, numeric, date and html (which will strip\n\t\t * HTML tags before ordering)) are currently available. Note that only date\n\t\t * formats understood by Javascript's Date() object will be accepted as type\n\t\t * date. For example: \"Mar 26, 2008 5:03 PM\". May take the values: 'string',\n\t\t * 'numeric', 'date' or 'html' (by default). Further types can be adding\n\t\t * through plug-ins.\n\t\t *  @type string\n\t\t *  @default null <i>Auto-detected from raw data</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.type\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"type\": \"html\", \"targets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"type\": \"html\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sType\": null,\n\t\n\t\n\t\t/**\n\t\t * Defining the width of the column, this parameter may take any CSS value\n\t\t * (3em, 20px etc). DataTables applies 'smart' widths to columns which have not\n\t\t * been given a specific width through this interface ensuring that the table\n\t\t * remains readable.\n\t\t *  @type string\n\t\t *  @default null <i>Automatic</i>\n\t\t *\n\t\t *  @name DataTable.defaults.column.width\n\t\t *  @dtopt Columns\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columnDefs`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columnDefs\": [\n\t\t *          { \"width\": \"20%\", \"targets\": [ 0 ] }\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t *\n\t\t *  @example\n\t\t *    // Using `columns`\n\t\t *    $(document).ready( function() {\n\t\t *      $('#example').dataTable( {\n\t\t *        \"columns\": [\n\t\t *          { \"width\": \"20%\" },\n\t\t *          null,\n\t\t *          null,\n\t\t *          null,\n\t\t *          null\n\t\t *        ]\n\t\t *      } );\n\t\t *    } );\n\t\t */\n\t\t\"sWidth\": null\n\t};\n\t\n\t_fnHungarianMap( DataTable.defaults.column );\n\t\n\t\n\t\n\t/**\n\t * DataTables settings object - this holds all the information needed for a\n\t * given table, including configuration, data and current application of the\n\t * table options. DataTables does not have a single instance for each DataTable\n\t * with the settings attached to that instance, but rather instances of the\n\t * DataTable \"class\" are created on-the-fly as needed (typically by a\n\t * $().dataTable() call) and the settings object is then applied to that\n\t * instance.\n\t *\n\t * Note that this object is related to {@link DataTable.defaults} but this\n\t * one is the internal data store for DataTables's cache of columns. It should\n\t * NOT be manipulated outside of DataTables. Any configuration should be done\n\t * through the initialisation options.\n\t *  @namespace\n\t *  @todo Really should attach the settings object to individual instances so we\n\t *    don't need to create new instances on each $().dataTable() call (if the\n\t *    table already exists). It would also save passing oSettings around and\n\t *    into every single function. However, this is a very significant\n\t *    architecture change for DataTables and will almost certainly break\n\t *    backwards compatibility with older installations. This is something that\n\t *    will be done in 2.0.\n\t */\n\tDataTable.models.oSettings = {\n\t\t/**\n\t\t * Primary features of DataTables and their enablement state.\n\t\t *  @namespace\n\t\t */\n\t\t\"oFeatures\": {\n\t\n\t\t\t/**\n\t\t\t * Flag to say if DataTables should automatically try to calculate the\n\t\t\t * optimum table and columns widths (true) or not (false).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bAutoWidth\": null,\n\t\n\t\t\t/**\n\t\t\t * Delay the creation of TR and TD elements until they are actually\n\t\t\t * needed by a driven page draw. This can give a significant speed\n\t\t\t * increase for Ajax source and Javascript source data, but makes no\n\t\t\t * difference at all fro DOM and server-side processing tables.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bDeferRender\": null,\n\t\n\t\t\t/**\n\t\t\t * Enable filtering on the table or not. Note that if this is disabled\n\t\t\t * then there is no filtering at all on the table, including fnFilter.\n\t\t\t * To just remove the filtering input use sDom and remove the 'f' option.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bFilter\": null,\n\t\n\t\t\t/**\n\t\t\t * Table information element (the 'Showing x of y records' div) enable\n\t\t\t * flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bInfo\": null,\n\t\n\t\t\t/**\n\t\t\t * Present a user control allowing the end user to change the page size\n\t\t\t * when pagination is enabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bLengthChange\": null,\n\t\n\t\t\t/**\n\t\t\t * Pagination enabled or not. Note that if this is disabled then length\n\t\t\t * changing must also be disabled.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bPaginate\": null,\n\t\n\t\t\t/**\n\t\t\t * Processing indicator enable flag whenever DataTables is enacting a\n\t\t\t * user request - typically an Ajax request for server-side processing.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bProcessing\": null,\n\t\n\t\t\t/**\n\t\t\t * Server-side processing enabled flag - when enabled DataTables will\n\t\t\t * get all data from the server for every draw - there is no filtering,\n\t\t\t * sorting or paging done on the client-side.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bServerSide\": null,\n\t\n\t\t\t/**\n\t\t\t * Sorting enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bSort\": null,\n\t\n\t\t\t/**\n\t\t\t * Multi-column sorting\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bSortMulti\": null,\n\t\n\t\t\t/**\n\t\t\t * Apply a class to the columns which are being sorted to provide a\n\t\t\t * visual highlight or not. This can slow things down when enabled since\n\t\t\t * there is a lot of DOM interaction.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bSortClasses\": null,\n\t\n\t\t\t/**\n\t\t\t * State saving enablement flag.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bStateSave\": null\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Scrolling settings for a table.\n\t\t *  @namespace\n\t\t */\n\t\t\"oScroll\": {\n\t\t\t/**\n\t\t\t * When the table is shorter in height than sScrollY, collapse the\n\t\t\t * table container down to the height of the table (when true).\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type boolean\n\t\t\t */\n\t\t\t\"bCollapse\": null,\n\t\n\t\t\t/**\n\t\t\t * Width of the scrollbar for the web-browser's platform. Calculated\n\t\t\t * during table initialisation.\n\t\t\t *  @type int\n\t\t\t *  @default 0\n\t\t\t */\n\t\t\t\"iBarWidth\": 0,\n\t\n\t\t\t/**\n\t\t\t * Viewport width for horizontal scrolling. Horizontal scrolling is\n\t\t\t * disabled if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t */\n\t\t\t\"sX\": null,\n\t\n\t\t\t/**\n\t\t\t * Width to expand the table to when using x-scrolling. Typically you\n\t\t\t * should not need to use this.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t *  @deprecated\n\t\t\t */\n\t\t\t\"sXInner\": null,\n\t\n\t\t\t/**\n\t\t\t * Viewport height for vertical scrolling. Vertical scrolling is disabled\n\t\t\t * if an empty string.\n\t\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t\t * set a default use {@link DataTable.defaults}.\n\t\t\t *  @type string\n\t\t\t */\n\t\t\t\"sY\": null\n\t\t},\n\t\n\t\t/**\n\t\t * Language information for the table.\n\t\t *  @namespace\n\t\t *  @extends DataTable.defaults.oLanguage\n\t\t */\n\t\t\"oLanguage\": {\n\t\t\t/**\n\t\t\t * Information callback function. See\n\t\t\t * {@link DataTable.defaults.fnInfoCallback}\n\t\t\t *  @type function\n\t\t\t *  @default null\n\t\t\t */\n\t\t\t\"fnInfoCallback\": null\n\t\t},\n\t\n\t\t/**\n\t\t * Browser support parameters\n\t\t *  @namespace\n\t\t */\n\t\t\"oBrowser\": {\n\t\t\t/**\n\t\t\t * Indicate if the browser incorrectly calculates width:100% inside a\n\t\t\t * scrolling element (IE6/7)\n\t\t\t *  @type boolean\n\t\t\t *  @default false\n\t\t\t */\n\t\t\t\"bScrollOversize\": false,\n\t\n\t\t\t/**\n\t\t\t * Determine if the vertical scrollbar is on the right or left of the\n\t\t\t * scrolling container - needed for rtl language layout, although not\n\t\t\t * all browsers move the scrollbar (Safari).\n\t\t\t *  @type boolean\n\t\t\t *  @default false\n\t\t\t */\n\t\t\t\"bScrollbarLeft\": false\n\t\t},\n\t\n\t\n\t\t\"ajax\": null,\n\t\n\t\n\t\t/**\n\t\t * Array referencing the nodes which are used for the features. The\n\t\t * parameters of this object match what is allowed by sDom - i.e.\n\t\t *   <ul>\n\t\t *     <li>'l' - Length changing</li>\n\t\t *     <li>'f' - Filtering input</li>\n\t\t *     <li>'t' - The table!</li>\n\t\t *     <li>'i' - Information</li>\n\t\t *     <li>'p' - Pagination</li>\n\t\t *     <li>'r' - pRocessing</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aanFeatures\": [],\n\t\n\t\t/**\n\t\t * Store data information - see {@link DataTable.models.oRow} for detailed\n\t\t * information.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoData\": [],\n\t\n\t\t/**\n\t\t * Array of indexes which are in the current display (after filtering etc)\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aiDisplay\": [],\n\t\n\t\t/**\n\t\t * Array of indexes for display - no filtering\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aiDisplayMaster\": [],\n\t\n\t\t/**\n\t\t * Store information about each column that is in use\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoColumns\": [],\n\t\n\t\t/**\n\t\t * Store information about the table's header\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoHeader\": [],\n\t\n\t\t/**\n\t\t * Store information about the table's footer\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoFooter\": [],\n\t\n\t\t/**\n\t\t * Store the applied global search information in case we want to force a\n\t\t * research or compare the old search to a new one.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @namespace\n\t\t *  @extends DataTable.models.oSearch\n\t\t */\n\t\t\"oPreviousSearch\": {},\n\t\n\t\t/**\n\t\t * Store the applied search for each column - see\n\t\t * {@link DataTable.models.oSearch} for the format that is used for the\n\t\t * filtering information for each column.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoPreSearchCols\": [],\n\t\n\t\t/**\n\t\t * Sorting that is applied to the table. Note that the inner arrays are\n\t\t * used in the following manner:\n\t\t * <ul>\n\t\t *   <li>Index 0 - column number</li>\n\t\t *   <li>Index 1 - current sorting direction</li>\n\t\t * </ul>\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @todo These inner arrays should really be objects\n\t\t */\n\t\t\"aaSorting\": null,\n\t\n\t\t/**\n\t\t * Sorting that is always applied to the table (i.e. prefixed in front of\n\t\t * aaSorting).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aaSortingFixed\": [],\n\t\n\t\t/**\n\t\t * Classes to use for the striping of a table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asStripeClasses\": null,\n\t\n\t\t/**\n\t\t * If restoring a table - we should restore its striping classes as well\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"asDestroyStripes\": [],\n\t\n\t\t/**\n\t\t * If restoring a table - we should restore its width\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"sDestroyWidth\": 0,\n\t\n\t\t/**\n\t\t * Callback functions array for every time a row is inserted (i.e. on a draw).\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoRowCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for the header on each draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoHeaderCallback\": [],\n\t\n\t\t/**\n\t\t * Callback function for the footer on each draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoFooterCallback\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for draw callback functions\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoDrawCallback\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for row created function\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoRowCreatedCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for just before the table is redrawn. A return of\n\t\t * false will be used to cancel the draw.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoPreDrawCallback\": [],\n\t\n\t\t/**\n\t\t * Callback functions for when the table has been initialised.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoInitComplete\": [],\n\t\n\t\n\t\t/**\n\t\t * Callbacks for modifying the settings to be stored for state saving, prior to\n\t\t * saving state.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateSaveParams\": [],\n\t\n\t\t/**\n\t\t * Callbacks for modifying the settings that have been stored for state saving\n\t\t * prior to using the stored values to restore the state.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoadParams\": [],\n\t\n\t\t/**\n\t\t * Callbacks for operating on the settings object once the saved state has been\n\t\t * loaded\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoaded\": [],\n\t\n\t\t/**\n\t\t * Cache the table ID for quick access\n\t\t *  @type string\n\t\t *  @default <i>Empty string</i>\n\t\t */\n\t\t\"sTableId\": \"\",\n\t\n\t\t/**\n\t\t * The TABLE node for the main table\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTable\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the thead element\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTHead\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the tfoot element - if it exists\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTFoot\": null,\n\t\n\t\t/**\n\t\t * Permanent ref to the tbody element\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTBody\": null,\n\t\n\t\t/**\n\t\t * Cache the wrapper node (contains all DataTables controlled elements)\n\t\t *  @type node\n\t\t *  @default null\n\t\t */\n\t\t\"nTableWrapper\": null,\n\t\n\t\t/**\n\t\t * Indicate if when using server-side processing the loading of data\n\t\t * should be deferred until the second draw.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bDeferLoading\": false,\n\t\n\t\t/**\n\t\t * Indicate if all required information has been read in\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bInitialised\": false,\n\t\n\t\t/**\n\t\t * Information about open rows. Each object in the array has the parameters\n\t\t * 'nTr' and 'nParent'\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoOpenRows\": [],\n\t\n\t\t/**\n\t\t * Dictate the positioning of DataTables' control elements - see\n\t\t * {@link DataTable.model.oInit.sDom}.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sDom\": null,\n\t\n\t\t/**\n\t\t * Which type of pagination should be used.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default two_button\n\t\t */\n\t\t\"sPaginationType\": \"two_button\",\n\t\n\t\t/**\n\t\t * The state duration (for `stateSave`) in seconds.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iStateDuration\": 0,\n\t\n\t\t/**\n\t\t * Array of callback functions for state saving. Each array element is an\n\t\t * object with the following parameters:\n\t\t *   <ul>\n\t\t *     <li>function:fn - function to call. Takes two parameters, oSettings\n\t\t *       and the JSON string to save that has been thus far created. Returns\n\t\t *       a JSON string to be inserted into a json object\n\t\t *       (i.e. '\"param\": [ 0, 1, 2]')</li>\n\t\t *     <li>string:sName - name of callback</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateSave\": [],\n\t\n\t\t/**\n\t\t * Array of callback functions for state loading. Each array element is an\n\t\t * object with the following parameters:\n\t\t *   <ul>\n\t\t *     <li>function:fn - function to call. Takes two parameters, oSettings\n\t\t *       and the object stored. May return false to cancel state loading</li>\n\t\t *     <li>string:sName - name of callback</li>\n\t\t *   </ul>\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoStateLoad\": [],\n\t\n\t\t/**\n\t\t * State that was saved. Useful for back reference\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oSavedState\": null,\n\t\n\t\t/**\n\t\t * State that was loaded. Useful for back reference\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oLoadedState\": null,\n\t\n\t\t/**\n\t\t * Source url for AJAX data for the table.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sAjaxSource\": null,\n\t\n\t\t/**\n\t\t * Property from a given object from which to read the table data from. This\n\t\t * can be an empty string (when not server-side processing), in which case\n\t\t * it is  assumed an an array is given directly.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sAjaxDataProp\": null,\n\t\n\t\t/**\n\t\t * Note if draw should be blocked while getting data\n\t\t *  @type boolean\n\t\t *  @default true\n\t\t */\n\t\t\"bAjaxDataGet\": true,\n\t\n\t\t/**\n\t\t * The last jQuery XHR object that was used for server-side data gathering.\n\t\t * This can be used for working with the XHR information in one of the\n\t\t * callbacks\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"jqXHR\": null,\n\t\n\t\t/**\n\t\t * JSON returned from the server in the last Ajax request\n\t\t *  @type object\n\t\t *  @default undefined\n\t\t */\n\t\t\"json\": undefined,\n\t\n\t\t/**\n\t\t * Data submitted as part of the last Ajax request\n\t\t *  @type object\n\t\t *  @default undefined\n\t\t */\n\t\t\"oAjaxData\": undefined,\n\t\n\t\t/**\n\t\t * Function to get the server-side data.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t */\n\t\t\"fnServerData\": null,\n\t\n\t\t/**\n\t\t * Functions which are called prior to sending an Ajax request so extra\n\t\t * parameters can easily be sent to the server\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoServerParams\": [],\n\t\n\t\t/**\n\t\t * Send the XHR HTTP method - GET or POST (could be PUT or DELETE if\n\t\t * required).\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type string\n\t\t */\n\t\t\"sServerMethod\": null,\n\t\n\t\t/**\n\t\t * Format numbers for display.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type function\n\t\t */\n\t\t\"fnFormatNumber\": null,\n\t\n\t\t/**\n\t\t * List of options that can be used for the user selectable length menu.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aLengthMenu\": null,\n\t\n\t\t/**\n\t\t * Counter for the draws that the table does. Also used as a tracker for\n\t\t * server-side processing\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"iDraw\": 0,\n\t\n\t\t/**\n\t\t * Indicate if a redraw is being done - useful for Ajax\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t */\n\t\t\"bDrawing\": false,\n\t\n\t\t/**\n\t\t * Draw index (iDraw) of the last error when parsing the returned data\n\t\t *  @type int\n\t\t *  @default -1\n\t\t */\n\t\t\"iDrawError\": -1,\n\t\n\t\t/**\n\t\t * Paging display length\n\t\t *  @type int\n\t\t *  @default 10\n\t\t */\n\t\t\"_iDisplayLength\": 10,\n\t\n\t\t/**\n\t\t * Paging start point - aiDisplay index\n\t\t *  @type int\n\t\t *  @default 0\n\t\t */\n\t\t\"_iDisplayStart\": 0,\n\t\n\t\t/**\n\t\t * Server-side processing - number of records in the result set\n\t\t * (i.e. before filtering), Use fnRecordsTotal rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t *  @type int\n\t\t *  @default 0\n\t\t *  @private\n\t\t */\n\t\t\"_iRecordsTotal\": 0,\n\t\n\t\t/**\n\t\t * Server-side processing - number of records in the current display set\n\t\t * (i.e. after filtering). Use fnRecordsDisplay rather than\n\t\t * this property to get the value of the number of records, regardless of\n\t\t * the server-side processing setting.\n\t\t *  @type boolean\n\t\t *  @default 0\n\t\t *  @private\n\t\t */\n\t\t\"_iRecordsDisplay\": 0,\n\t\n\t\t/**\n\t\t * Flag to indicate if jQuery UI marking and classes should be used.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bJUI\": null,\n\t\n\t\t/**\n\t\t * The classes to use for the table\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oClasses\": {},\n\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw\n\t\t * callback if filtering has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @deprecated\n\t\t */\n\t\t\"bFiltered\": false,\n\t\n\t\t/**\n\t\t * Flag attached to the settings object so you can check in the draw\n\t\t * callback if sorting has been done in the draw. Deprecated in favour of\n\t\t * events.\n\t\t *  @type boolean\n\t\t *  @default false\n\t\t *  @deprecated\n\t\t */\n\t\t\"bSorted\": false,\n\t\n\t\t/**\n\t\t * Indicate that if multiple rows are in the header and there is more than\n\t\t * one unique cell per column, if the top one (true) or bottom one (false)\n\t\t * should be used for sorting / title by DataTables.\n\t\t * Note that this parameter will be set by the initialisation routine. To\n\t\t * set a default use {@link DataTable.defaults}.\n\t\t *  @type boolean\n\t\t */\n\t\t\"bSortCellsTop\": null,\n\t\n\t\t/**\n\t\t * Initialisation object that is used for the table\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oInit\": null,\n\t\n\t\t/**\n\t\t * Destroy callback functions - for plug-ins to attach themselves to the\n\t\t * destroy so they can clean up markup and events.\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aoDestroyCallback\": [],\n\t\n\t\n\t\t/**\n\t\t * Get the number of records in the current record set, before filtering\n\t\t *  @type function\n\t\t */\n\t\t\"fnRecordsTotal\": function ()\n\t\t{\n\t\t\treturn _fnDataSource( this ) == 'ssp' ?\n\t\t\t\tthis._iRecordsTotal * 1 :\n\t\t\t\tthis.aiDisplayMaster.length;\n\t\t},\n\t\n\t\t/**\n\t\t * Get the number of records in the current record set, after filtering\n\t\t *  @type function\n\t\t */\n\t\t\"fnRecordsDisplay\": function ()\n\t\t{\n\t\t\treturn _fnDataSource( this ) == 'ssp' ?\n\t\t\t\tthis._iRecordsDisplay * 1 :\n\t\t\t\tthis.aiDisplay.length;\n\t\t},\n\t\n\t\t/**\n\t\t * Get the display end point - aiDisplay index\n\t\t *  @type function\n\t\t */\n\t\t\"fnDisplayEnd\": function ()\n\t\t{\n\t\t\tvar\n\t\t\t\tlen      = this._iDisplayLength,\n\t\t\t\tstart    = this._iDisplayStart,\n\t\t\t\tcalc     = start + len,\n\t\t\t\trecords  = this.aiDisplay.length,\n\t\t\t\tfeatures = this.oFeatures,\n\t\t\t\tpaginate = features.bPaginate;\n\t\n\t\t\tif ( features.bServerSide ) {\n\t\t\t\treturn paginate === false || len === -1 ?\n\t\t\t\t\tstart + records :\n\t\t\t\t\tMath.min( start+len, this._iRecordsDisplay );\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn ! paginate || calc>records || len===-1 ?\n\t\t\t\t\trecords :\n\t\t\t\t\tcalc;\n\t\t\t}\n\t\t},\n\t\n\t\t/**\n\t\t * The DataTables object for this table\n\t\t *  @type object\n\t\t *  @default null\n\t\t */\n\t\t\"oInstance\": null,\n\t\n\t\t/**\n\t\t * Unique identifier for each instance of the DataTables object. If there\n\t\t * is an ID on the table node, then it takes that value, otherwise an\n\t\t * incrementing internal counter is used.\n\t\t *  @type string\n\t\t *  @default null\n\t\t */\n\t\t\"sInstance\": null,\n\t\n\t\t/**\n\t\t * tabindex attribute value that is added to DataTables control elements, allowing\n\t\t * keyboard navigation of the table and its controls.\n\t\t */\n\t\t\"iTabIndex\": 0,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollHead\": null,\n\t\n\t\t/**\n\t\t * DIV container for the footer scrolling table if scrolling\n\t\t */\n\t\t\"nScrollFoot\": null,\n\t\n\t\t/**\n\t\t * Last applied sort\n\t\t *  @type array\n\t\t *  @default []\n\t\t */\n\t\t\"aLastSort\": [],\n\t\n\t\t/**\n\t\t * Stored plug-in instances\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\t\"oPlugins\": {}\n\t};\n\n\t/**\n\t * Extension object for DataTables that is used to provide all extension\n\t * options.\n\t *\n\t * Note that the `DataTable.ext` object is available through\n\t * `jQuery.fn.dataTable.ext` where it may be accessed and manipulated. It is\n\t * also aliased to `jQuery.fn.dataTableExt` for historic reasons.\n\t *  @namespace\n\t *  @extends DataTable.models.ext\n\t */\n\t\n\t\n\t/**\n\t * DataTables extensions\n\t * \n\t * This namespace acts as a collection area for plug-ins that can be used to\n\t * extend DataTables capabilities. Indeed many of the build in methods\n\t * use this method to provide their own capabilities (sorting methods for\n\t * example).\n\t *\n\t * Note that this namespace is aliased to `jQuery.fn.dataTableExt` for legacy\n\t * reasons\n\t *\n\t *  @namespace\n\t */\n\tDataTable.ext = _ext = {\n\t\t/**\n\t\t * Element class names\n\t\t *\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\tclasses: {},\n\t\n\t\n\t\t/**\n\t\t * Error reporting.\n\t\t * \n\t\t * How should DataTables report an error. Can take the value 'alert' or\n\t\t * 'throw'\n\t\t *\n\t\t *  @type string\n\t\t *  @default alert\n\t\t */\n\t\terrMode: \"alert\",\n\t\n\t\n\t\t/**\n\t\t * Feature plug-ins.\n\t\t * \n\t\t * This is an array of objects which describe the feature plug-ins that are\n\t\t * available to DataTables. These feature plug-ins are then available for\n\t\t * use through the `dom` initialisation option.\n\t\t * \n\t\t * Each feature plug-in is described by an object which must have the\n\t\t * following properties:\n\t\t * \n\t\t * * `fnInit` - function that is used to initialise the plug-in,\n\t\t * * `cFeature` - a character so the feature can be enabled by the `dom`\n\t\t *   instillation option. This is case sensitive.\n\t\t *\n\t\t * The `fnInit` function has the following input parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t *    {@link DataTable.models.oSettings}\n\t\t *\n\t\t * And the following return is expected:\n\t\t * \n\t\t * * {node|null} The element which contains your feature. Note that the\n\t\t *   return may also be void if your plug-in does not require to inject any\n\t\t *   DOM elements into DataTables control (`dom`) - for example this might\n\t\t *   be useful when developing a plug-in which allows table control via\n\t\t *   keyboard entry\n\t\t *\n\t\t *  @type array\n\t\t *\n\t\t *  @example\n\t\t *    $.fn.dataTable.ext.features.push( {\n\t\t *      \"fnInit\": function( oSettings ) {\n\t\t *        return new TableTools( { \"oDTSettings\": oSettings } );\n\t\t *      },\n\t\t *      \"cFeature\": \"T\"\n\t\t *    } );\n\t\t */\n\t\tfeature: [],\n\t\n\t\n\t\t/**\n\t\t * Row searching.\n\t\t * \n\t\t * This method of searching is complimentary to the default type based\n\t\t * searching, and a lot more comprehensive as it allows you complete control\n\t\t * over the searching logic. Each element in this array is a function\n\t\t * (parameters described below) that is called for every row in the table,\n\t\t * and your logic decides if it should be included in the searching data set\n\t\t * or not.\n\t\t *\n\t\t * Searching functions have the following input parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t *    {@link DataTable.models.oSettings}\n\t\t * 2. `{array|object}` Data for the row to be processed (same as the\n\t\t *    original format that was passed in as the data source, or an array\n\t\t *    from a DOM data source\n\t\t * 3. `{int}` Row index ({@link DataTable.models.oSettings.aoData}), which\n\t\t *    can be useful to retrieve the `TR` element if you need DOM interaction.\n\t\t *\n\t\t * And the following return is expected:\n\t\t *\n\t\t * * {boolean} Include the row in the searched result set (true) or not\n\t\t *   (false)\n\t\t *\n\t\t * Note that as with the main search ability in DataTables, technically this\n\t\t * is \"filtering\", since it is subtractive. However, for consistency in\n\t\t * naming we call it searching here.\n\t\t *\n\t\t *  @type array\n\t\t *  @default []\n\t\t *\n\t\t *  @example\n\t\t *    // The following example shows custom search being applied to the\n\t\t *    // fourth column (i.e. the data[3] index) based on two input values\n\t\t *    // from the end-user, matching the data in a certain range.\n\t\t *    $.fn.dataTable.ext.search.push(\n\t\t *      function( settings, data, dataIndex ) {\n\t\t *        var min = document.getElementById('min').value * 1;\n\t\t *        var max = document.getElementById('max').value * 1;\n\t\t *        var version = data[3] == \"-\" ? 0 : data[3]*1;\n\t\t *\n\t\t *        if ( min == \"\" && max == \"\" ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( min == \"\" && version < max ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( min < version && \"\" == max ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        else if ( min < version && version < max ) {\n\t\t *          return true;\n\t\t *        }\n\t\t *        return false;\n\t\t *      }\n\t\t *    );\n\t\t */\n\t\tsearch: [],\n\t\n\t\n\t\t/**\n\t\t * Internal functions, exposed for used in plug-ins.\n\t\t * \n\t\t * Please note that you should not need to use the internal methods for\n\t\t * anything other than a plug-in (and even then, try to avoid if possible).\n\t\t * The internal function may change between releases.\n\t\t *\n\t\t *  @type object\n\t\t *  @default {}\n\t\t */\n\t\tinternal: {},\n\t\n\t\n\t\t/**\n\t\t * Legacy configuration options. Enable and disable legacy options that\n\t\t * are available in DataTables.\n\t\t *\n\t\t *  @type object\n\t\t */\n\t\tlegacy: {\n\t\t\t/**\n\t\t\t * Enable / disable DataTables 1.9 compatible server-side processing\n\t\t\t * requests\n\t\t\t *\n\t\t\t *  @type boolean\n\t\t\t *  @default null\n\t\t\t */\n\t\t\tajax: null\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Pagination plug-in methods.\n\t\t * \n\t\t * Each entry in this object is a function and defines which buttons should\n\t\t * be shown by the pagination rendering method that is used for the table:\n\t\t * {@link DataTable.ext.renderer.pageButton}. The renderer addresses how the\n\t\t * buttons are displayed in the document, while the functions here tell it\n\t\t * what buttons to display. This is done by returning an array of button\n\t\t * descriptions (what each button will do).\n\t\t *\n\t\t * Pagination types (the four built in options and any additional plug-in\n\t\t * options defined here) can be used through the `paginationType`\n\t\t * initialisation parameter.\n\t\t *\n\t\t * The functions defined take two parameters:\n\t\t *\n\t\t * 1. `{int} page` The current page index\n\t\t * 2. `{int} pages` The number of pages in the table\n\t\t *\n\t\t * Each function is expected to return an array where each element of the\n\t\t * array can be one of:\n\t\t *\n\t\t * * `first` - Jump to first page when activated\n\t\t * * `last` - Jump to last page when activated\n\t\t * * `previous` - Show previous page when activated\n\t\t * * `next` - Show next page when activated\n\t\t * * `{int}` - Show page of the index given\n\t\t * * `{array}` - A nested array containing the above elements to add a\n\t\t *   containing 'DIV' element (might be useful for styling).\n\t\t *\n\t\t * Note that DataTables v1.9- used this object slightly differently whereby\n\t\t * an object with two functions would be defined for each plug-in. That\n\t\t * ability is still supported by DataTables 1.10+ to provide backwards\n\t\t * compatibility, but this option of use is now decremented and no longer\n\t\t * documented in DataTables 1.10+.\n\t\t *\n\t\t *  @type object\n\t\t *  @default {}\n\t\t *\n\t\t *  @example\n\t\t *    // Show previous, next and current page buttons only\n\t\t *    $.fn.dataTableExt.oPagination.current = function ( page, pages ) {\n\t\t *      return [ 'previous', page, 'next' ];\n\t\t *    };\n\t\t */\n\t\tpager: {},\n\t\n\t\n\t\trenderer: {\n\t\t\tpageButton: {},\n\t\t\theader: {}\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * Ordering plug-ins - custom data source\n\t\t * \n\t\t * The extension options for ordering of data available here is complimentary\n\t\t * to the default type based ordering that DataTables typically uses. It\n\t\t * allows much greater control over the the data that is being used to\n\t\t * order a column, but is necessarily therefore more complex.\n\t\t * \n\t\t * This type of ordering is useful if you want to do ordering based on data\n\t\t * live from the DOM (for example the contents of an 'input' element) rather\n\t\t * than just the static string that DataTables knows of.\n\t\t * \n\t\t * The way these plug-ins work is that you create an array of the values you\n\t\t * wish to be ordering for the column in question and then return that\n\t\t * array. The data in the array much be in the index order of the rows in\n\t\t * the table (not the currently ordering order!). Which order data gathering\n\t\t * function is run here depends on the `dt-init columns.orderDataType`\n\t\t * parameter that is used for the column (if any).\n\t\t *\n\t\t * The functions defined take two parameters:\n\t\t *\n\t\t * 1. `{object}` DataTables settings object: see\n\t\t *    {@link DataTable.models.oSettings}\n\t\t * 2. `{int}` Target column index\n\t\t *\n\t\t * Each function is expected to return an array:\n\t\t *\n\t\t * * `{array}` Data for the column to be ordering upon\n\t\t *\n\t\t *  @type array\n\t\t *\n\t\t *  @example\n\t\t *    // Ordering using `input` node values\n\t\t *    $.fn.dataTable.ext.order['dom-text'] = function  ( settings, col )\n\t\t *    {\n\t\t *      return this.api().column( col, {order:'index'} ).nodes().map( function ( td, i ) {\n\t\t *        return $('input', td).val();\n\t\t *      } );\n\t\t *    }\n\t\t */\n\t\torder: {},\n\t\n\t\n\t\t/**\n\t\t * Type based plug-ins.\n\t\t *\n\t\t * Each column in DataTables has a type assigned to it, either by automatic\n\t\t * detection or by direct assignment using the `type` option for the column.\n\t\t * The type of a column will effect how it is ordering and search (plug-ins\n\t\t * can also make use of the column type if required).\n\t\t *\n\t\t * @namespace\n\t\t */\n\t\ttype: {\n\t\t\t/**\n\t\t\t * Type detection functions.\n\t\t\t *\n\t\t\t * The functions defined in this object are used to automatically detect\n\t\t\t * a column's type, making initialisation of DataTables super easy, even\n\t\t\t * when complex data is in the table.\n\t\t\t *\n\t\t\t * The functions defined take two parameters:\n\t\t\t *\n\t\t     *  1. `{*}` Data from the column cell to be analysed\n\t\t     *  2. `{settings}` DataTables settings object. This can be used to\n\t\t     *     perform context specific type detection - for example detection\n\t\t     *     based on language settings such as using a comma for a decimal\n\t\t     *     place. Generally speaking the options from the settings will not\n\t\t     *     be required\n\t\t\t *\n\t\t\t * Each function is expected to return:\n\t\t\t *\n\t\t\t * * `{string|null}` Data type detected, or null if unknown (and thus\n\t\t\t *   pass it on to the other type detection functions.\n\t\t\t *\n\t\t\t *  @type array\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Currency type detection plug-in:\n\t\t\t *    $.fn.dataTable.ext.type.detect.push(\n\t\t\t *      function ( data, settings ) {\n\t\t\t *        // Check the numeric part\n\t\t\t *        if ( ! $.isNumeric( data.substring(1) ) ) {\n\t\t\t *          return null;\n\t\t\t *        }\n\t\t\t *\n\t\t\t *        // Check prefixed by currency\n\t\t\t *        if ( data.charAt(0) == '$' || data.charAt(0) == '&pound;' ) {\n\t\t\t *          return 'currency';\n\t\t\t *        }\n\t\t\t *        return null;\n\t\t\t *      }\n\t\t\t *    );\n\t\t\t */\n\t\t\tdetect: [],\n\t\n\t\n\t\t\t/**\n\t\t\t * Type based search formatting.\n\t\t\t *\n\t\t\t * The type based searching functions can be used to pre-format the\n\t\t\t * data to be search on. For example, it can be used to strip HTML\n\t\t\t * tags or to de-format telephone numbers for numeric only searching.\n\t\t\t *\n\t\t\t * Note that is a search is not defined for a column of a given type,\n\t\t\t * no search formatting will be performed.\n\t\t\t * \n\t\t\t * Pre-processing of searching data plug-ins - When you assign the sType\n\t\t\t * for a column (or have it automatically detected for you by DataTables\n\t\t\t * or a type detection plug-in), you will typically be using this for\n\t\t\t * custom sorting, but it can also be used to provide custom searching\n\t\t\t * by allowing you to pre-processing the data and returning the data in\n\t\t\t * the format that should be searched upon. This is done by adding\n\t\t\t * functions this object with a parameter name which matches the sType\n\t\t\t * for that target column. This is the corollary of <i>afnSortData</i>\n\t\t\t * for searching data.\n\t\t\t *\n\t\t\t * The functions defined take a single parameter:\n\t\t\t *\n\t\t     *  1. `{*}` Data from the column cell to be prepared for searching\n\t\t\t *\n\t\t\t * Each function is expected to return:\n\t\t\t *\n\t\t\t * * `{string|null}` Formatted string that will be used for the searching.\n\t\t\t *\n\t\t\t *  @type object\n\t\t\t *  @default {}\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    $.fn.dataTable.ext.type.search['title-numeric'] = function ( d ) {\n\t\t\t *      return d.replace(/\\n/g,\" \").replace( /<.*?>/g, \"\" );\n\t\t\t *    }\n\t\t\t */\n\t\t\tsearch: {},\n\t\n\t\n\t\t\t/**\n\t\t\t * Type based ordering.\n\t\t\t *\n\t\t\t * The column type tells DataTables what ordering to apply to the table\n\t\t\t * when a column is sorted upon. The order for each type that is defined,\n\t\t\t * is defined by the functions available in this object.\n\t\t\t *\n\t\t\t * Each ordering option can be described by three properties added to\n\t\t\t * this object:\n\t\t\t *\n\t\t\t * * `{type}-pre` - Pre-formatting function\n\t\t\t * * `{type}-asc` - Ascending order function\n\t\t\t * * `{type}-desc` - Descending order function\n\t\t\t *\n\t\t\t * All three can be used together, only `{type}-pre` or only\n\t\t\t * `{type}-asc` and `{type}-desc` together. It is generally recommended\n\t\t\t * that only `{type}-pre` is used, as this provides the optimal\n\t\t\t * implementation in terms of speed, although the others are provided\n\t\t\t * for compatibility with existing Javascript sort functions.\n\t\t\t *\n\t\t\t * `{type}-pre`: Functions defined take a single parameter:\n\t\t\t *\n\t\t     *  1. `{*}` Data from the column cell to be prepared for ordering\n\t\t\t *\n\t\t\t * And return:\n\t\t\t *\n\t\t\t * * `{*}` Data to be sorted upon\n\t\t\t *\n\t\t\t * `{type}-asc` and `{type}-desc`: Functions are typical Javascript sort\n\t\t\t * functions, taking two parameters:\n\t\t\t *\n\t\t     *  1. `{*}` Data to compare to the second parameter\n\t\t     *  2. `{*}` Data to compare to the first parameter\n\t\t\t *\n\t\t\t * And returning:\n\t\t\t *\n\t\t\t * * `{*}` Ordering match: <0 if first parameter should be sorted lower\n\t\t\t *   than the second parameter, ===0 if the two parameters are equal and\n\t\t\t *   >0 if the first parameter should be sorted height than the second\n\t\t\t *   parameter.\n\t\t\t * \n\t\t\t *  @type object\n\t\t\t *  @default {}\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Numeric ordering of formatted numbers with a pre-formatter\n\t\t\t *    $.extend( $.fn.dataTable.ext.type.order, {\n\t\t\t *      \"string-pre\": function(x) {\n\t\t\t *        a = (a === \"-\" || a === \"\") ? 0 : a.replace( /[^\\d\\-\\.]/g, \"\" );\n\t\t\t *        return parseFloat( a );\n\t\t\t *      }\n\t\t\t *    } );\n\t\t\t *\n\t\t\t *  @example\n\t\t\t *    // Case-sensitive string ordering, with no pre-formatting method\n\t\t\t *    $.extend( $.fn.dataTable.ext.order, {\n\t\t\t *      \"string-case-asc\": function(x,y) {\n\t\t\t *        return ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t\t *      },\n\t\t\t *      \"string-case-desc\": function(x,y) {\n\t\t\t *        return ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t\t *      }\n\t\t\t *    } );\n\t\t\t */\n\t\t\torder: {}\n\t\t},\n\t\n\t\t/**\n\t\t * Unique DataTables instance counter\n\t\t *\n\t\t * @type int\n\t\t * @private\n\t\t */\n\t\t_unique: 0,\n\t\n\t\n\t\t//\n\t\t// Depreciated\n\t\t// The following properties are retained for backwards compatiblity only.\n\t\t// The should not be used in new projects and will be removed in a future\n\t\t// version\n\t\t//\n\t\n\t\t/**\n\t\t * Version check function.\n\t\t *  @type function\n\t\t *  @depreciated Since 1.10\n\t\t */\n\t\tfnVersionCheck: DataTable.fnVersionCheck,\n\t\n\t\n\t\t/**\n\t\t * Index for what 'this' index API functions should use\n\t\t *  @type int\n\t\t *  @deprecated Since v1.10\n\t\t */\n\t\tiApiIndex: 0,\n\t\n\t\n\t\t/**\n\t\t * jQuery UI class container\n\t\t *  @type object\n\t\t *  @deprecated Since v1.10\n\t\t */\n\t\toJUIClasses: {},\n\t\n\t\n\t\t/**\n\t\t * Software version\n\t\t *  @type string\n\t\t *  @deprecated Since v1.10\n\t\t */\n\t\tsVersion: DataTable.version\n\t};\n\t\n\t\n\t//\n\t// Backwards compatibility. Alias to pre 1.10 Hungarian notation counter parts\n\t//\n\t$.extend( _ext, {\n\t\tafnFiltering: _ext.search,\n\t\taTypes:       _ext.type.detect,\n\t\tofnSearch:    _ext.type.search,\n\t\toSort:        _ext.type.order,\n\t\tafnSortData:  _ext.order,\n\t\taoFeatures:   _ext.feature,\n\t\toApi:         _ext.internal,\n\t\toStdClasses:  _ext.classes,\n\t\toPagination:  _ext.pager\n\t} );\n\t\n\t\n\t$.extend( DataTable.ext.classes, {\n\t\t\"sTable\": \"dataTable\",\n\t\t\"sNoFooter\": \"no-footer\",\n\t\n\t\t/* Paging buttons */\n\t\t\"sPageButton\": \"paginate_button\",\n\t\t\"sPageButtonActive\": \"current\",\n\t\t\"sPageButtonDisabled\": \"disabled\",\n\t\n\t\t/* Striping classes */\n\t\t\"sStripeOdd\": \"odd\",\n\t\t\"sStripeEven\": \"even\",\n\t\n\t\t/* Empty row */\n\t\t\"sRowEmpty\": \"dataTables_empty\",\n\t\n\t\t/* Features */\n\t\t\"sWrapper\": \"dataTables_wrapper\",\n\t\t\"sFilter\": \"dataTables_filter\",\n\t\t\"sInfo\": \"dataTables_info\",\n\t\t\"sPaging\": \"dataTables_paginate paging_\", /* Note that the type is postfixed */\n\t\t\"sLength\": \"dataTables_length\",\n\t\t\"sProcessing\": \"dataTables_processing\",\n\t\n\t\t/* Sorting */\n\t\t\"sSortAsc\": \"sorting_asc\",\n\t\t\"sSortDesc\": \"sorting_desc\",\n\t\t\"sSortable\": \"sorting\", /* Sortable in both directions */\n\t\t\"sSortableAsc\": \"sorting_asc_disabled\",\n\t\t\"sSortableDesc\": \"sorting_desc_disabled\",\n\t\t\"sSortableNone\": \"sorting_disabled\",\n\t\t\"sSortColumn\": \"sorting_\", /* Note that an int is postfixed for the sorting order */\n\t\n\t\t/* Filtering */\n\t\t\"sFilterInput\": \"\",\n\t\n\t\t/* Page length */\n\t\t\"sLengthSelect\": \"\",\n\t\n\t\t/* Scrolling */\n\t\t\"sScrollWrapper\": \"dataTables_scroll\",\n\t\t\"sScrollHead\": \"dataTables_scrollHead\",\n\t\t\"sScrollHeadInner\": \"dataTables_scrollHeadInner\",\n\t\t\"sScrollBody\": \"dataTables_scrollBody\",\n\t\t\"sScrollFoot\": \"dataTables_scrollFoot\",\n\t\t\"sScrollFootInner\": \"dataTables_scrollFootInner\",\n\t\n\t\t/* Misc */\n\t\t\"sHeaderTH\": \"\",\n\t\t\"sFooterTH\": \"\",\n\t\n\t\t// Deprecated\n\t\t\"sSortJUIAsc\": \"\",\n\t\t\"sSortJUIDesc\": \"\",\n\t\t\"sSortJUI\": \"\",\n\t\t\"sSortJUIAscAllowed\": \"\",\n\t\t\"sSortJUIDescAllowed\": \"\",\n\t\t\"sSortJUIWrapper\": \"\",\n\t\t\"sSortIcon\": \"\",\n\t\t\"sJUIHeader\": \"\",\n\t\t\"sJUIFooter\": \"\"\n\t} );\n\t\n\t\n\t(function() {\n\t\n\t// Reused strings for better compression. Closure compiler appears to have a\n\t// weird edge case where it is trying to expand strings rather than use the\n\t// variable version. This results in about 200 bytes being added, for very\n\t// little preference benefit since it this run on script load only.\n\tvar _empty = '';\n\t_empty = '';\n\t\n\tvar _stateDefault = _empty + 'ui-state-default';\n\tvar _sortIcon     = _empty + 'css_right ui-icon ui-icon-';\n\tvar _headerFooter = _empty + 'fg-toolbar ui-toolbar ui-widget-header ui-helper-clearfix';\n\t\n\t$.extend( DataTable.ext.oJUIClasses, DataTable.ext.classes, {\n\t\t/* Full numbers paging buttons */\n\t\t\"sPageButton\":         \"fg-button ui-button \"+_stateDefault,\n\t\t\"sPageButtonActive\":   \"ui-state-disabled\",\n\t\t\"sPageButtonDisabled\": \"ui-state-disabled\",\n\t\n\t\t/* Features */\n\t\t\"sPaging\": \"dataTables_paginate fg-buttonset ui-buttonset fg-buttonset-multi \"+\n\t\t\t\"ui-buttonset-multi paging_\", /* Note that the type is postfixed */\n\t\n\t\t/* Sorting */\n\t\t\"sSortAsc\":            _stateDefault+\" sorting_asc\",\n\t\t\"sSortDesc\":           _stateDefault+\" sorting_desc\",\n\t\t\"sSortable\":           _stateDefault+\" sorting\",\n\t\t\"sSortableAsc\":        _stateDefault+\" sorting_asc_disabled\",\n\t\t\"sSortableDesc\":       _stateDefault+\" sorting_desc_disabled\",\n\t\t\"sSortableNone\":       _stateDefault+\" sorting_disabled\",\n\t\t\"sSortJUIAsc\":         _sortIcon+\"triangle-1-n\",\n\t\t\"sSortJUIDesc\":        _sortIcon+\"triangle-1-s\",\n\t\t\"sSortJUI\":            _sortIcon+\"carat-2-n-s\",\n\t\t\"sSortJUIAscAllowed\":  _sortIcon+\"carat-1-n\",\n\t\t\"sSortJUIDescAllowed\": _sortIcon+\"carat-1-s\",\n\t\t\"sSortJUIWrapper\":     \"DataTables_sort_wrapper\",\n\t\t\"sSortIcon\":           \"DataTables_sort_icon\",\n\t\n\t\t/* Scrolling */\n\t\t\"sScrollHead\": \"dataTables_scrollHead \"+_stateDefault,\n\t\t\"sScrollFoot\": \"dataTables_scrollFoot \"+_stateDefault,\n\t\n\t\t/* Misc */\n\t\t\"sHeaderTH\":  _stateDefault,\n\t\t\"sFooterTH\":  _stateDefault,\n\t\t\"sJUIHeader\": _headerFooter+\" ui-corner-tl ui-corner-tr\",\n\t\t\"sJUIFooter\": _headerFooter+\" ui-corner-bl ui-corner-br\"\n\t} );\n\t\n\t}());\n\t\n\t\n\t\n\tvar extPagination = DataTable.ext.pager;\n\t\n\tfunction _numbers ( page, pages ) {\n\t\tvar\n\t\t\tnumbers = [],\n\t\t\tbuttons = extPagination.numbers_length,\n\t\t\thalf = Math.floor( buttons / 2 ),\n\t\t\ti = 1;\n\t\n\t\tif ( pages <= buttons ) {\n\t\t\tnumbers = _range( 0, pages );\n\t\t}\n\t\telse if ( page <= half ) {\n\t\t\tnumbers = _range( 0, buttons-2 );\n\t\t\tnumbers.push( 'ellipsis' );\n\t\t\tnumbers.push( pages-1 );\n\t\t}\n\t\telse if ( page >= pages - 1 - half ) {\n\t\t\tnumbers = _range( pages-(buttons-2), pages );\n\t\t\tnumbers.splice( 0, 0, 'ellipsis' ); // no unshift in ie6\n\t\t\tnumbers.splice( 0, 0, 0 );\n\t\t}\n\t\telse {\n\t\t\tnumbers = _range( page-1, page+2 );\n\t\t\tnumbers.push( 'ellipsis' );\n\t\t\tnumbers.push( pages-1 );\n\t\t\tnumbers.splice( 0, 0, 'ellipsis' );\n\t\t\tnumbers.splice( 0, 0, 0 );\n\t\t}\n\t\n\t\tnumbers.DT_el = 'span';\n\t\treturn numbers;\n\t}\n\t\n\t\n\t$.extend( extPagination, {\n\t\tsimple: function ( page, pages ) {\n\t\t\treturn [ 'previous', 'next' ];\n\t\t},\n\t\n\t\tfull: function ( page, pages ) {\n\t\t\treturn [  'first', 'previous', 'next', 'last' ];\n\t\t},\n\t\n\t\tsimple_numbers: function ( page, pages ) {\n\t\t\treturn [ 'previous', _numbers(page, pages), 'next' ];\n\t\t},\n\t\n\t\tfull_numbers: function ( page, pages ) {\n\t\t\treturn [ 'first', 'previous', _numbers(page, pages), 'next', 'last' ];\n\t\t},\n\t\n\t\t// For testing and plug-ins to use\n\t\t_numbers: _numbers,\n\t\tnumbers_length: 7\n\t} );\n\t\n\t\n\t$.extend( true, DataTable.ext.renderer, {\n\t\tpageButton: {\n\t\t\t_: function ( settings, host, idx, buttons, page, pages ) {\n\t\t\t\tvar classes = settings.oClasses;\n\t\t\t\tvar lang = settings.oLanguage.oPaginate;\n\t\t\t\tvar btnDisplay, btnClass, counter=0;\n\t\n\t\t\t\tvar attach = function( container, buttons ) {\n\t\t\t\t\tvar i, ien, node, button;\n\t\t\t\t\tvar clickHandler = function ( e ) {\n\t\t\t\t\t\t_fnPageChange( settings, e.data.action, true );\n\t\t\t\t\t};\n\t\n\t\t\t\t\tfor ( i=0, ien=buttons.length ; i<ien ; i++ ) {\n\t\t\t\t\t\tbutton = buttons[i];\n\t\n\t\t\t\t\t\tif ( $.isArray( button ) ) {\n\t\t\t\t\t\t\tvar inner = $( '<'+(button.DT_el || 'div')+'/>' )\n\t\t\t\t\t\t\t\t.appendTo( container );\n\t\t\t\t\t\t\tattach( inner, button );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tbtnDisplay = '';\n\t\t\t\t\t\t\tbtnClass = '';\n\t\n\t\t\t\t\t\t\tswitch ( button ) {\n\t\t\t\t\t\t\t\tcase 'ellipsis':\n\t\t\t\t\t\t\t\t\tcontainer.append('<span>&hellip;</span>');\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'first':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sFirst;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'previous':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sPrevious;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page > 0 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'next':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sNext;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tcase 'last':\n\t\t\t\t\t\t\t\t\tbtnDisplay = lang.sLast;\n\t\t\t\t\t\t\t\t\tbtnClass = button + (page < pages-1 ?\n\t\t\t\t\t\t\t\t\t\t'' : ' '+classes.sPageButtonDisabled);\n\t\t\t\t\t\t\t\t\tbreak;\n\t\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\tbtnDisplay = button + 1;\n\t\t\t\t\t\t\t\t\tbtnClass = page === button ?\n\t\t\t\t\t\t\t\t\t\tclasses.sPageButtonActive : '';\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\tif ( btnDisplay ) {\n\t\t\t\t\t\t\t\tnode = $('<a>', {\n\t\t\t\t\t\t\t\t\t\t'class': classes.sPageButton+' '+btnClass,\n\t\t\t\t\t\t\t\t\t\t'aria-controls': settings.sTableId,\n\t\t\t\t\t\t\t\t\t\t'data-dt-idx': counter,\n\t\t\t\t\t\t\t\t\t\t'tabindex': settings.iTabIndex,\n\t\t\t\t\t\t\t\t\t\t'id': idx === 0 && typeof button === 'string' ?\n\t\t\t\t\t\t\t\t\t\t\tsettings.sTableId +'_'+ button :\n\t\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t.html( btnDisplay )\n\t\t\t\t\t\t\t\t\t.appendTo( container );\n\t\n\t\t\t\t\t\t\t\t_fnBindAction(\n\t\t\t\t\t\t\t\t\tnode, {action: button}, clickHandler\n\t\t\t\t\t\t\t\t);\n\t\n\t\t\t\t\t\t\t\tcounter++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\t\n\t\t\t\t// IE9 throws an 'unknown error' if document.activeElement is used\n\t\t\t\t// inside an iframe or frame. Try / catch the error. Not good for\n\t\t\t\t// accessibility, but neither are frames.\n\t\t\t\ttry {\n\t\t\t\t\t// Because this approach is destroying and recreating the paging\n\t\t\t\t\t// elements, focus is lost on the select button which is bad for\n\t\t\t\t\t// accessibility. So we want to restore focus once the draw has\n\t\t\t\t\t// completed\n\t\t\t\t\tvar activeEl = $(document.activeElement).data('dt-idx');\n\t\n\t\t\t\t\tattach( $(host).empty(), buttons );\n\t\n\t\t\t\t\tif ( activeEl !== null ) {\n\t\t\t\t\t\t$(host).find( '[data-dt-idx='+activeEl+']' ).focus();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (e) {}\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t\n\t\n\tvar __numericReplace = function ( d, decimalPlace, re1, re2 ) {\n\t\tif ( !d || d === '-' ) {\n\t\t\treturn -Infinity;\n\t\t}\n\t\n\t\t// If a decimal place other than `.` is used, it needs to be given to the\n\t\t// function so we can detect it and replace with a `.` which is the only\n\t\t// decimal place Javascript recognises - it is not locale aware.\n\t\tif ( decimalPlace ) {\n\t\t\td = _numToDecimal( d, decimalPlace );\n\t\t}\n\t\n\t\tif ( d.replace ) {\n\t\t\tif ( re1 ) {\n\t\t\t\td = d.replace( re1, '' );\n\t\t\t}\n\t\n\t\t\tif ( re2 ) {\n\t\t\t\td = d.replace( re2, '' );\n\t\t\t}\n\t\t}\n\t\n\t\treturn d * 1;\n\t};\n\t\n\t\n\t// Add the numeric 'deformatting' functions for sorting. This is done in a\n\t// function to provide an easy ability for the language options to add\n\t// additional methods if a non-period decimal place is used.\n\tfunction _addNumericSort ( decimalPlace ) {\n\t\t$.each(\n\t\t\t{\n\t\t\t\t// Plain numbers\n\t\t\t\t\"num\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace );\n\t\t\t\t},\n\t\n\t\t\t\t// Formatted numbers\n\t\t\t\t\"num-fmt\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_formatted_numeric );\n\t\t\t\t},\n\t\n\t\t\t\t// HTML numeric\n\t\t\t\t\"html-num\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_html );\n\t\t\t\t},\n\t\n\t\t\t\t// HTML numeric, formatted\n\t\t\t\t\"html-num-fmt\": function ( d ) {\n\t\t\t\t\treturn __numericReplace( d, decimalPlace, _re_html, _re_formatted_numeric );\n\t\t\t\t}\n\t\t\t},\n\t\t\tfunction ( key, fn ) {\n\t\t\t\t_ext.type.order[ key+decimalPlace+'-pre' ] = fn;\n\t\t\t}\n\t\t);\n\t}\n\t\n\t\n\t// Default sort methods\n\t$.extend( _ext.type.order, {\n\t\t// Dates\n\t\t\"date-pre\": function ( d ) {\n\t\t\treturn Date.parse( d ) || 0;\n\t\t},\n\t\n\t\t// html\n\t\t\"html-pre\": function ( a ) {\n\t\t\treturn _empty(a) ?\n\t\t\t\t'' :\n\t\t\t\ta.replace ?\n\t\t\t\t\ta.replace( /<.*?>/g, \"\" ).toLowerCase() :\n\t\t\t\t\ta+'';\n\t\t},\n\t\n\t\t// string\n\t\t\"string-pre\": function ( a ) {\n\t\t\t// This is a little complex, but faster than always calling toString,\n\t\t\t// http://jsperf.com/tostring-v-check\n\t\t\treturn _empty(a) ?\n\t\t\t\t'' :\n\t\t\t\ttypeof a === 'string' ?\n\t\t\t\t\ta.toLowerCase() :\n\t\t\t\t\t! a.toString ?\n\t\t\t\t\t\t'' :\n\t\t\t\t\t\ta.toString();\n\t\t},\n\t\n\t\t// string-asc and -desc are retained only for compatibility with the old\n\t\t// sort methods\n\t\t\"string-asc\": function ( x, y ) {\n\t\t\treturn ((x < y) ? -1 : ((x > y) ? 1 : 0));\n\t\t},\n\t\n\t\t\"string-desc\": function ( x, y ) {\n\t\t\treturn ((x < y) ? 1 : ((x > y) ? -1 : 0));\n\t\t}\n\t} );\n\t\n\t\n\t// Numeric sorting types - order doesn't matter here\n\t_addNumericSort( '' );\n\t\n\t\n\t// Built in type detection. See model.ext.aTypes for information about\n\t// what is required from this methods.\n\t$.extend( DataTable.ext.type.detect, [\n\t\t// Plain numbers - first since V8 detects some plain numbers as dates\n\t\t// e.g. Date.parse('55') (but not all, e.g. Date.parse('22')...).\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _isNumber( d, decimal ) ? 'num'+decimal : null;\n\t\t},\n\t\n\t\t// Dates (only those recognised by the browser's Date.parse)\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\t// V8 will remove any unknown characters at the start and end of the\n\t\t\t// expression, leading to false matches such as `$245.12` or `10%` being\n\t\t\t// a valid date. See forum thread 18941 for detail.\n\t\t\tif ( d && ( ! _re_date_start.test(d) || ! _re_date_end.test(d) ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\tvar parsed = Date.parse(d);\n\t\t\treturn (parsed !== null && !isNaN(parsed)) || _empty(d) ? 'date' : null;\n\t\t},\n\t\n\t\t// Formatted numbers\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _isNumber( d, decimal, true ) ? 'num-fmt'+decimal : null;\n\t\t},\n\t\n\t\t// HTML numeric\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _htmlNumeric( d, decimal ) ? 'html-num'+decimal : null;\n\t\t},\n\t\n\t\t// HTML numeric, formatted\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\tvar decimal = settings.oLanguage.sDecimal;\n\t\t\treturn _htmlNumeric( d, decimal, true ) ? 'html-num-fmt'+decimal : null;\n\t\t},\n\t\n\t\t// HTML (this is strict checking - there must be html)\n\t\tfunction ( d, settings )\n\t\t{\n\t\t\treturn _empty( d ) || (typeof d === 'string' && d.indexOf('<') !== -1) ?\n\t\t\t\t'html' : null;\n\t\t}\n\t] );\n\t\n\t\n\t\n\t// Filter formatting functions. See model.ext.ofnSearch for information about\n\t// what is required from these methods.\n\t\n\t\n\t$.extend( DataTable.ext.type.search, {\n\t\thtml: function ( data ) {\n\t\t\treturn _empty(data) ?\n\t\t\t\tdata :\n\t\t\t\ttypeof data === 'string' ?\n\t\t\t\t\tdata\n\t\t\t\t\t\t.replace( _re_new_lines, \" \" )\n\t\t\t\t\t\t.replace( _re_html, \"\" ) :\n\t\t\t\t\t'';\n\t\t},\n\t\n\t\tstring: function ( data ) {\n\t\t\treturn _empty(data) ?\n\t\t\t\tdata :\n\t\t\t\ttypeof data === 'string' ?\n\t\t\t\t\tdata.replace( _re_new_lines, \" \" ) :\n\t\t\t\t\tdata;\n\t\t}\n\t} );\n\t\n\t\n\t\n\t$.extend( true, DataTable.ext.renderer, {\n\t\theader: {\n\t\t\t_: function ( settings, cell, column, classes ) {\n\t\t\t\t// No additional mark-up required\n\t\t\t\t// Attach a sort listener to update on sort - note that using the\n\t\t\t\t// `DT` namespace will allow the event to be removed automatically\n\t\t\t\t// on destroy, while the `dt` namespaced event is the one we are\n\t\t\t\t// listening for\n\t\t\t\t$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {\n\t\t\t\t\tif ( settings !== ctx ) { // need to check this this is the host\n\t\t\t\t\t\treturn;               // table, not a nested one\n\t\t\t\t\t}\n\t\n\t\t\t\t\tvar colIdx = column.idx;\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.removeClass(\n\t\t\t\t\t\t\tcolumn.sSortingClass +' '+\n\t\t\t\t\t\t\tclasses.sSortAsc +' '+\n\t\t\t\t\t\t\tclasses.sSortDesc\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClass\n\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t},\n\t\n\t\t\tjqueryui: function ( settings, cell, column, classes ) {\n\t\t\t\tvar colIdx = column.idx;\n\t\n\t\t\t\t$('<div/>')\n\t\t\t\t\t.addClass( classes.sSortJUIWrapper )\n\t\t\t\t\t.append( cell.contents() )\n\t\t\t\t\t.append( $('<span/>')\n\t\t\t\t\t\t.addClass( classes.sSortIcon+' '+column.sSortingClassJUI )\n\t\t\t\t\t)\n\t\t\t\t\t.appendTo( cell );\n\t\n\t\t\t\t// Attach a sort listener to update on sort\n\t\t\t\t$(settings.nTable).on( 'order.dt.DT', function ( e, ctx, sorting, columns ) {\n\t\t\t\t\tif ( settings !== ctx ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.removeClass( classes.sSortAsc +\" \"+classes.sSortDesc )\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClass\n\t\t\t\t\t\t);\n\t\n\t\t\t\t\tcell\n\t\t\t\t\t\t.find( 'span.'+classes.sSortIcon )\n\t\t\t\t\t\t.removeClass(\n\t\t\t\t\t\t\tclasses.sSortJUIAsc +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIDesc +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUI +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIAscAllowed +\" \"+\n\t\t\t\t\t\t\tclasses.sSortJUIDescAllowed\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.addClass( columns[ colIdx ] == 'asc' ?\n\t\t\t\t\t\t\tclasses.sSortJUIAsc : columns[ colIdx ] == 'desc' ?\n\t\t\t\t\t\t\t\tclasses.sSortJUIDesc :\n\t\t\t\t\t\t\t\tcolumn.sSortingClassJUI\n\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t} );\n\t\n\t/*\n\t * Public helper functions. These aren't used internally by DataTables, or\n\t * called by any of the options passed into DataTables, but they can be used\n\t * externally by developers working with DataTables. They are helper functions\n\t * to make working with DataTables a little bit easier.\n\t */\n\t\n\t/**\n\t * Helpers for `columns.render`.\n\t *\n\t * The options defined here can be used with the `columns.render` initialisation\n\t * option to provide a display renderer. The following functions are defined:\n\t *\n\t * * `number` - Will format numeric data (defined by `columns.data`) for\n\t *   display, retaining the original unformatted data for sorting and filtering.\n\t *   It takes 4 parameters:\n\t *   * `string` - Thousands grouping separator\n\t *   * `string` - Decimal point indicator\n\t *   * `integer` - Number of decimal points to show\n\t *   * `string` (optional) - Prefix.\n\t *\n\t * @example\n\t *   // Column definition using the number renderer\n\t *   {\n\t *     data: \"salary\",\n\t *     render: $.fn.dataTable.render.number( '\\'', '.', 0, '$' )\n\t *   }\n\t *\n\t * @namespace\n\t */\n\tDataTable.render = {\n\t\tnumber: function ( thousands, decimal, precision, prefix ) {\n\t\t\treturn {\n\t\t\t\tdisplay: function ( d ) {\n\t\t\t\t\tvar negative = d < 0 ? '-' : '';\n\t\t\t\t\td = Math.abs( parseFloat( d ) );\n\t\n\t\t\t\t\tvar intPart = parseInt( d, 10 );\n\t\t\t\t\tvar floatPart = precision ?\n\t\t\t\t\t\tdecimal+(d - intPart).toFixed( precision ).substring( 2 ):\n\t\t\t\t\t\t'';\n\t\n\t\t\t\t\treturn negative + (prefix||'') +\n\t\t\t\t\t\tintPart.toString().replace(\n\t\t\t\t\t\t\t/\\B(?=(\\d{3})+(?!\\d))/g, thousands\n\t\t\t\t\t\t) +\n\t\t\t\t\t\tfloatPart;\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t};\n\t\n\t\n\t/*\n\t * This is really a good bit rubbish this method of exposing the internal methods\n\t * publicly... - To be fixed in 2.0 using methods on the prototype\n\t */\n\t\n\t\n\t/**\n\t * Create a wrapper function for exporting an internal functions to an external API.\n\t *  @param {string} fn API function name\n\t *  @returns {function} wrapped function\n\t *  @memberof DataTable#internal\n\t */\n\tfunction _fnExternApiFunc (fn)\n\t{\n\t\treturn function() {\n\t\t\tvar args = [_fnSettingsFromNode( this[DataTable.ext.iApiIndex] )].concat(\n\t\t\t\tArray.prototype.slice.call(arguments)\n\t\t\t);\n\t\t\treturn DataTable.ext.internal[fn].apply( this, args );\n\t\t};\n\t}\n\t\n\t\n\t/**\n\t * Reference to internal functions for use by plug-in developers. Note that\n\t * these methods are references to internal functions and are considered to be\n\t * private. If you use these methods, be aware that they are liable to change\n\t * between versions.\n\t *  @namespace\n\t */\n\t$.extend( DataTable.ext.internal, {\n\t\t_fnExternApiFunc: _fnExternApiFunc,\n\t\t_fnBuildAjax: _fnBuildAjax,\n\t\t_fnAjaxUpdate: _fnAjaxUpdate,\n\t\t_fnAjaxParameters: _fnAjaxParameters,\n\t\t_fnAjaxUpdateDraw: _fnAjaxUpdateDraw,\n\t\t_fnAjaxDataSrc: _fnAjaxDataSrc,\n\t\t_fnAddColumn: _fnAddColumn,\n\t\t_fnColumnOptions: _fnColumnOptions,\n\t\t_fnAdjustColumnSizing: _fnAdjustColumnSizing,\n\t\t_fnVisibleToColumnIndex: _fnVisibleToColumnIndex,\n\t\t_fnColumnIndexToVisible: _fnColumnIndexToVisible,\n\t\t_fnVisbleColumns: _fnVisbleColumns,\n\t\t_fnGetColumns: _fnGetColumns,\n\t\t_fnColumnTypes: _fnColumnTypes,\n\t\t_fnApplyColumnDefs: _fnApplyColumnDefs,\n\t\t_fnHungarianMap: _fnHungarianMap,\n\t\t_fnCamelToHungarian: _fnCamelToHungarian,\n\t\t_fnLanguageCompat: _fnLanguageCompat,\n\t\t_fnBrowserDetect: _fnBrowserDetect,\n\t\t_fnAddData: _fnAddData,\n\t\t_fnAddTr: _fnAddTr,\n\t\t_fnNodeToDataIndex: _fnNodeToDataIndex,\n\t\t_fnNodeToColumnIndex: _fnNodeToColumnIndex,\n\t\t_fnGetCellData: _fnGetCellData,\n\t\t_fnSetCellData: _fnSetCellData,\n\t\t_fnSplitObjNotation: _fnSplitObjNotation,\n\t\t_fnGetObjectDataFn: _fnGetObjectDataFn,\n\t\t_fnSetObjectDataFn: _fnSetObjectDataFn,\n\t\t_fnGetDataMaster: _fnGetDataMaster,\n\t\t_fnClearTable: _fnClearTable,\n\t\t_fnDeleteIndex: _fnDeleteIndex,\n\t\t_fnInvalidateRow: _fnInvalidateRow,\n\t\t_fnGetRowElements: _fnGetRowElements,\n\t\t_fnCreateTr: _fnCreateTr,\n\t\t_fnBuildHead: _fnBuildHead,\n\t\t_fnDrawHead: _fnDrawHead,\n\t\t_fnDraw: _fnDraw,\n\t\t_fnReDraw: _fnReDraw,\n\t\t_fnAddOptionsHtml: _fnAddOptionsHtml,\n\t\t_fnDetectHeader: _fnDetectHeader,\n\t\t_fnGetUniqueThs: _fnGetUniqueThs,\n\t\t_fnFeatureHtmlFilter: _fnFeatureHtmlFilter,\n\t\t_fnFilterComplete: _fnFilterComplete,\n\t\t_fnFilterCustom: _fnFilterCustom,\n\t\t_fnFilterColumn: _fnFilterColumn,\n\t\t_fnFilter: _fnFilter,\n\t\t_fnFilterCreateSearch: _fnFilterCreateSearch,\n\t\t_fnEscapeRegex: _fnEscapeRegex,\n\t\t_fnFilterData: _fnFilterData,\n\t\t_fnFeatureHtmlInfo: _fnFeatureHtmlInfo,\n\t\t_fnUpdateInfo: _fnUpdateInfo,\n\t\t_fnInfoMacros: _fnInfoMacros,\n\t\t_fnInitialise: _fnInitialise,\n\t\t_fnInitComplete: _fnInitComplete,\n\t\t_fnLengthChange: _fnLengthChange,\n\t\t_fnFeatureHtmlLength: _fnFeatureHtmlLength,\n\t\t_fnFeatureHtmlPaginate: _fnFeatureHtmlPaginate,\n\t\t_fnPageChange: _fnPageChange,\n\t\t_fnFeatureHtmlProcessing: _fnFeatureHtmlProcessing,\n\t\t_fnProcessingDisplay: _fnProcessingDisplay,\n\t\t_fnFeatureHtmlTable: _fnFeatureHtmlTable,\n\t\t_fnScrollDraw: _fnScrollDraw,\n\t\t_fnApplyToChildren: _fnApplyToChildren,\n\t\t_fnCalculateColumnWidths: _fnCalculateColumnWidths,\n\t\t_fnThrottle: _fnThrottle,\n\t\t_fnConvertToWidth: _fnConvertToWidth,\n\t\t_fnScrollingWidthAdjust: _fnScrollingWidthAdjust,\n\t\t_fnGetWidestNode: _fnGetWidestNode,\n\t\t_fnGetMaxLenString: _fnGetMaxLenString,\n\t\t_fnStringToCss: _fnStringToCss,\n\t\t_fnScrollBarWidth: _fnScrollBarWidth,\n\t\t_fnSortFlatten: _fnSortFlatten,\n\t\t_fnSort: _fnSort,\n\t\t_fnSortAria: _fnSortAria,\n\t\t_fnSortListener: _fnSortListener,\n\t\t_fnSortAttachListener: _fnSortAttachListener,\n\t\t_fnSortingClasses: _fnSortingClasses,\n\t\t_fnSortData: _fnSortData,\n\t\t_fnSaveState: _fnSaveState,\n\t\t_fnLoadState: _fnLoadState,\n\t\t_fnSettingsFromNode: _fnSettingsFromNode,\n\t\t_fnLog: _fnLog,\n\t\t_fnMap: _fnMap,\n\t\t_fnBindAction: _fnBindAction,\n\t\t_fnCallbackReg: _fnCallbackReg,\n\t\t_fnCallbackFire: _fnCallbackFire,\n\t\t_fnLengthOverflow: _fnLengthOverflow,\n\t\t_fnRenderer: _fnRenderer,\n\t\t_fnDataSource: _fnDataSource,\n\t\t_fnRowAttributes: _fnRowAttributes,\n\t\t_fnCalculateEnd: function () {} // Used by a lot of plug-ins, but redundant\n\t\t                                // in 1.10, so this dead-end function is\n\t\t                                // added to prevent errors\n\t} );\n\t\n\n\t// jQuery access\n\t$.fn.dataTable = DataTable;\n\n\t// Legacy aliases\n\t$.fn.dataTableSettings = DataTable.settings;\n\t$.fn.dataTableExt = DataTable.ext;\n\n\t// With a capital `D` we return a DataTables API instance rather than a\n\t// jQuery object\n\t$.fn.DataTable = function ( opts ) {\n\t\treturn $(this).dataTable( opts ).api();\n\t};\n\n\t// All properties that are available to $.fn.dataTable should also be\n\t// available on $.fn.DataTable\n\t$.each( DataTable, function ( prop, val ) {\n\t\t$.fn.DataTable[ prop ] = val;\n\t} );\n\n\n\t// Information about events fired by DataTables - for documentation.\n\t/**\n\t * Draw event, fired whenever the table is redrawn on the page, at the same\n\t * point as fnDrawCallback. This may be useful for binding events or\n\t * performing calculations when the table is altered at all.\n\t *  @name DataTable#draw.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Search event, fired when the searching applied to the table (using the\n\t * built-in global search, or column filters) is altered.\n\t *  @name DataTable#search.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Page change event, fired when the paging of the table is altered.\n\t *  @name DataTable#page.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Order event, fired when the ordering applied to the table is altered.\n\t *  @name DataTable#order.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * DataTables initialisation complete event, fired when the table is fully\n\t * drawn, including Ajax data loaded, if Ajax data is required.\n\t *  @name DataTable#init.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The JSON object request from the server - only\n\t *    present if client-side Ajax sourced data is used</li></ol>\n\t */\n\n\t/**\n\t * State save event, fired when the table has changed state a new state save\n\t * is required. This event allows modification of the state saving object\n\t * prior to actually doing the save, including addition or other state\n\t * properties (for plug-ins) or modification of a DataTables core property.\n\t *  @name DataTable#stateSaveParams.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The state information to be saved\n\t */\n\n\t/**\n\t * State load event, fired when the table is loading state from the stored\n\t * data, but prior to the settings object being modified by the saved state\n\t * - allowing modification of the saved state is required or loading of\n\t * state for a plug-in.\n\t *  @name DataTable#stateLoadParams.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * State loaded event, fired when state has been loaded from stored data and\n\t * the settings object has been modified by the loaded data.\n\t *  @name DataTable#stateLoaded.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {object} json The saved state information\n\t */\n\n\t/**\n\t * Processing event, fired when DataTables is doing some kind of processing\n\t * (be it, order, searcg or anything else). It can be used to indicate to\n\t * the end user that there is something happening, or that something has\n\t * finished.\n\t *  @name DataTable#processing.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} oSettings DataTables settings object\n\t *  @param {boolean} bShow Flag for if DataTables is doing processing or not\n\t */\n\n\t/**\n\t * Ajax (XHR) event, fired whenever an Ajax request is completed from a\n\t * request to made to the server for new data. This event is called before\n\t * DataTables processed the returned data, so it can also be used to pre-\n\t * process the data returned from the server, if needed.\n\t *\n\t * Note that this trigger is called in `fnServerData`, if you override\n\t * `fnServerData` and which to use this event, you need to trigger it in you\n\t * success function.\n\t *  @name DataTable#xhr.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t *  @param {object} json JSON returned from the server\n\t *\n\t *  @example\n\t *     // Use a custom property returned from the server in another DOM element\n\t *     $('#table').dataTable().on('xhr.dt', function (e, settings, json) {\n\t *       $('#status').html( json.status );\n\t *     } );\n\t *\n\t *  @example\n\t *     // Pre-process the data returned from the server\n\t *     $('#table').dataTable().on('xhr.dt', function (e, settings, json) {\n\t *       for ( var i=0, ien=json.aaData.length ; i<ien ; i++ ) {\n\t *         json.aaData[i].sum = json.aaData[i].one + json.aaData[i].two;\n\t *       }\n\t *       // Note no return - manipulate the data directly in the JSON object.\n\t *     } );\n\t */\n\n\t/**\n\t * Destroy event, fired when the DataTable is destroyed by calling fnDestroy\n\t * or passing the bDestroy:true parameter in the initialisation object. This\n\t * can be used to remove bound events, added DOM nodes, etc.\n\t *  @name DataTable#destroy.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Page length change event, fired when number of records to show on each\n\t * page (the length) is changed.\n\t *  @name DataTable#length.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t *  @param {integer} len New length\n\t */\n\n\t/**\n\t * Column sizing has changed.\n\t *  @name DataTable#column-sizing.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t */\n\n\t/**\n\t * Column visibility has changed.\n\t *  @name DataTable#column-visibility.dt\n\t *  @event\n\t *  @param {event} e jQuery event object\n\t *  @param {object} o DataTables settings object {@link DataTable.models.oSettings}\n\t *  @param {int} column Column index\n\t *  @param {bool} vis `false` if column now hidden, or `true` if visible\n\t */\n\n\treturn $.fn.dataTable;\n}));\n\n}(window, document));\n\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/CHANGES.md",
    "content": "CKEditor 4 Changelog\r\n====================\r\n\r\n## CKEditor 4.4.2\r\n\r\nImportant Notes:\r\n\r\n* The CKEditor testing environment is now publicly available. Read more about how to set up the environment and execute tests in the [CKEditor Testing Environment](http://docs.ckeditor.com/#!/guide/dev_tests) guide.\r\n\tPlease note that the [`tests/`](https://github.com/ckeditor/ckeditor-dev/tree/master/tests) directory which contains editor tests is not available in release packages. It can only be found in the development version of CKEditor on [GitHub](https://github.com/ckeditor/ckeditor-dev/).\r\n\r\nNew Features:\r\n\r\n* [#11909](http://dev.ckeditor.com/ticket/11909): Introduced a parameter to prevent the [`editor.setData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setData) method from recording undo snapshots.\r\n\r\nFixed Issues:\r\n\r\n* [#11757](http://dev.ckeditor.com/ticket/11757): Fixed: Imperfections in the [Moono](http://ckeditor.com/addon/moono) skin. Thanks to [danyaPostfactum](https://github.com/danyaPostfactum)!\r\n* [#10091](http://dev.ckeditor.com/ticket/10091): Blockquote should be treated like an object by the styles system. Thanks to [dan-james-deeson](https://github.com/dan-james-deeson)!\r\n* [#11478](http://dev.ckeditor.com/ticket/11478): Fixed: Issue with passing jQuery objects to [adapter](http://docs.ckeditor.com/#!/guide/dev_jquery) configuration.\r\n* [#10867](http://dev.ckeditor.com/ticket/10867): Fixed: Issue with setting encoded URI as image link.\r\n* [#11983](http://dev.ckeditor.com/ticket/11983): Fixed: Clicking a nested widget does not focus it. Additionally, performance of the [`widget.repository.getByElement()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-method-getByElement) method was improved.\r\n* [#12000](http://dev.ckeditor.com/ticket/12000): Fixed: Nested widgets should be initialized on [`editor.setData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setData) and [`nestedEditable.setData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.nestedEditable-method-setData).\r\n* [#12022](http://dev.ckeditor.com/ticket/12022): Fixed: Outer widget's drag handler is not created at all if it has any nested widgets inside.\r\n* [#11960](http://dev.ckeditor.com/ticket/11960): [Blink/WebKit] Fixed: The caret should be scrolled into view on *Backspace* and *Delete* (covers only the merging blocks case).\r\n* [#11306](http://dev.ckeditor.com/ticket/11306): [OSX][Blink/WebKit] Fixed: No widget entries in the context menu on widget right-click.\r\n* [#11957](http://dev.ckeditor.com/ticket/11957): Fixed: Alignment labels in the [Enhanced Image](http://ckeditor.com/addon/image2) dialog window are not translated.\r\n* [#11980](http://dev.ckeditor.com/ticket/11980): [Blink/WebKit] Fixed: `<span>` elements created when joining adjacent elements (non-collapsed selection).\r\n* [#12009](http://dev.ckeditor.com/ticket/12009): [Nested widgets] Integration with the [Magic Line](http://ckeditor.com/addon/magicline) plugin.\r\n* [#11387](http://dev.ckeditor.com/ticket/11387): Fixed: `role=\"radiogroup\"` should be applied only to radio inputs' container.\r\n* [#7975](http://dev.ckeditor.com/ticket/7975): [IE8] Fixed: Errors when trying to select an empty table cell.\r\n* [#11947](http://dev.ckeditor.com/ticket/11947): [Firefox+IE11] Fixed: *Shift+Enter* in lists produces two line breaks.\r\n* [#11972](http://dev.ckeditor.com/ticket/11972): Fixed: Feature detection in the [`element.setText()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-setText) method should not trigger the layout engine.\r\n* [#7634](http://dev.ckeditor.com/ticket/7634): Fixed: The [Flash Dialog](http://ckeditor.com/addon/flash) plugin omits the `allowFullScreen` parameter in the editor data if set to `true`.\r\n* [#11910](http://dev.ckeditor.com/ticket/11910): Fixed: [Enhanced Image](http://ckeditor.com/addon/image2) does not take [`config.baseHref`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-baseHref) into account when updating image dimensions.\r\n* [#11753](http://dev.ckeditor.com/ticket/11753): Fixed: Wrong [`checkDirty()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-checkDirty) method value after focusing or blurring a widget.\r\n* [#11830](http://dev.ckeditor.com/ticket/11830): Fixed: Impossible to pass some arguments to [CKBuilder](https://github.com/ckeditor/ckbuilder) when using the `/dev/builder/build.sh` script.\r\n* [#11945](http://dev.ckeditor.com/ticket/11945): Fixed: [Form Elements](http://ckeditor.com/addon/forms) plugin should not change a core method.\r\n* [#11384](http://dev.ckeditor.com/ticket/11384): [IE9+] Fixed: `IndexSizeError` thrown when pasting into a non-empty selection anchored in one text node.\r\n\r\n## CKEditor 4.4.1\r\n\r\nNew Features:\r\n\r\n* [#9661](http://dev.ckeditor.com/ticket/9661): Added the option to [configure](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-linkJavaScriptLinksAllowed) anchor tags with JavaScript code in the `href` attribute.\r\n\r\nFixed Issues:\r\n\r\n* [#11861](http://dev.ckeditor.com/ticket/11861): [Webkit/Blink] Fixed: Span elements created while joining adjacent elements. **Note:** This patch only covers cases when *Backspace* or *Delete* is pressed on a collapsed (empty) selection. The remaining case, with a non-empty selection, will be fixed in the next release.\r\n* [#10714](http://dev.ckeditor.com/ticket/10714): [iOS] Fixed: Selection and drop-downs are broken if a touch event listener is used due to a [Webkit bug](https://bugs.webkit.org/show_bug.cgi?id=128924). Thanks to [Arty Gus](https://github.com/artygus)!\r\n* [#11911](http://dev.ckeditor.com/ticket/11911): Fixed setting the `dir` attribute for a preloaded language in [CKEDITOR.lang](http://docs.ckeditor.com/#!/api/CKEDITOR.lang). Thanks to [Akash Mohapatra](https://github.com/akashmohapatra)!\r\n* [#11926](http://dev.ckeditor.com/ticket/11926): Fixed: [Code Snippet](http://ckeditor.com/addon/codesnippet) does not decode HTML entities when loading code from the `<code>` element.\r\n* [#11223](http://dev.ckeditor.com/ticket/11223): Fixed: Issue when [Protected Source](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-protectedSource) was not working in the `<title>` element.\r\n* [#11859](http://dev.ckeditor.com/ticket/11859): Fixed: Removed the [Source Dialog](http://ckeditor.com/addon/sourcedialog) plugin dependency from the [Code Snippet](http://ckeditor.com/addon/codesnippet) sample.\r\n* [#11754](http://dev.ckeditor.com/ticket/11754): [Chrome] Fixed: Infinite loop when content includes not closed attributes.\r\n* [#11848](http://dev.ckeditor.com/ticket/11848): [IE] Fixed: [`editor.insertElement()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertElement) throwing an exception when there was no selection in the editor.\r\n* [#11801](http://dev.ckeditor.com/ticket/11801): Fixed: Editor anchors unavailable when linking the [Enhanced Image](http://ckeditor.com/addon/image2) widget.\r\n* [#11626](http://dev.ckeditor.com/ticket/11626): Fixed: [Table Resize](http://ckeditor.com/addon/tableresize) sets invalid column width.\r\n* [#11872](http://dev.ckeditor.com/ticket/11872): Made [`element.addClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-addClass) chainable symmetrically to [`element.removeClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-removeClass).\r\n* [#11813](http://dev.ckeditor.com/ticket/11813): Fixed: Link lost while pasting a captioned image and restoring an undo snapshot ([Enhanced Image](http://ckeditor.com/addon/image2)).\r\n* [#11814](http://dev.ckeditor.com/ticket/11814): Fixed: _Link_ and _Unlink_ entries persistently displayed in the [Enhanced Image](http://ckeditor.com/addon/image2) context menu.\r\n* [#11839](http://dev.ckeditor.com/ticket/11839): [IE9] Fixed: The caret jumps out of the editable area when resizing the editor in the source mode.\r\n* [#11822](http://dev.ckeditor.com/ticket/11822): [Webkit] Fixed: Editing anchors by double-click is broken in some cases.\r\n* [#11823](http://dev.ckeditor.com/ticket/11823): [IE8] Fixed: [Table Resize](http://ckeditor.com/addon/tableresize) throws an error over scrollbar.\r\n* [#11788](http://dev.ckeditor.com/ticket/11788): Fixed: It is not possible to change the language back to _Not set_ in the [Code Snippet](http://ckeditor.com/addon/codesnippet) dialog window.\r\n* [#11788](http://dev.ckeditor.com/ticket/11788): Fixed: [Filter](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.filter) rules are not applied inside elements with the `contenteditable` attribute set to `true`.\r\n* [#11798](http://dev.ckeditor.com/ticket/11798): Fixed: Inserting a non-editable element inside a table cell breaks the table.\r\n* [#11793](http://dev.ckeditor.com/ticket/11793): Fixed: Drop-down is not \"on\" when clicking it while the editor is blurred.\r\n* [#11850](http://dev.ckeditor.com/ticket/11850): Fixed: Fake objects with the `contenteditable` attribute set to `false` are not downcasted properly.\r\n* [#11811](http://dev.ckeditor.com/ticket/11811): Fixed: Widget's data is not encoded correctly when passed to an attribute.\r\n* [#11777](http://dev.ckeditor.com/ticket/11777): Fixed encoding ampersand in the [Mathematical Formulas](http://ckeditor.com/addon/mathjax) plugin.\r\n* [#11880](http://dev.ckeditor.com/ticket/11880): [IE8-9] Fixed: Linked image has a default thick border.\r\n\r\nOther Changes:\r\n\r\n* [#11807](http://dev.ckeditor.com/ticket/11807): Updated jQuery version used in the sample to 1.11.0 and tested CKEditor jQuery Adapter with version 1.11.0 and 2.1.0.\r\n* [#9504](http://dev.ckeditor.com/ticket/9504): Stopped using deprecated `attribute.specified` in all browsers except Internet Explorer.\r\n* [#11809](http://dev.ckeditor.com/ticket/11809): Changed tab size in `<pre>` to 4 spaces.\r\n\r\n## CKEditor 4.4\r\n\r\n**Important Notes:**\r\n\r\n* Marked the [`editor.beforePaste`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-beforePaste) event as deprecated.\r\n* The default class of captioned images has changed to `image` (was: `caption`). Please note that once edited in CKEditor 4.4+, all existing images of the `caption` class (`<figure class=\"caption\">`) will be [filtered out](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) unless the [`config.image2_captionedClass`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-image2_captionedClass) option is set to `caption`. For backward compatibility (i.e. when upgrading), it is highly recommended to use this setting, which also helps prevent CSS conflicts, etc. This does not apply to new CKEditor integrations.\r\n* Widgets without defined buttons are no longer registered automatically to the [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter). Before CKEditor 4.4 widgets were registered to the ACF which was an incorrect behavior ([#11567](http://dev.ckeditor.com/ticket/11567)). This change should not have any impact on standard scenarios, but if your button does not execute the widget command, you need to set [`allowedContent`](http://docs.ckeditor.com/#!/api/CKEDITOR.feature-property-allowedContent) and [`requiredContent`](http://docs.ckeditor.com/#!/api/CKEDITOR.feature-property-requiredContent) properties for it manually, because the editor will not be able to find them.\r\n* The [Show Borders](http://ckeditor.com/addon/showborders) plugin was added to the Standard installation package in order to ensure that unstyled tables are still visible for the user ([#11665](http://dev.ckeditor.com/ticket/11665)).\r\n* Since CKEditor 4.4 the editor instance should be passed to [`CKEDITOR.style`](http://docs.ckeditor.com/#!/api/CKEDITOR.style) methods to ensure full compatibility with other features (e.g. applying styles to widgets requires that). We ensured backward compatibility though, so the [`CKEDITOR.style`](http://docs.ckeditor.com/#!/api/CKEDITOR.style) will work even when the editor instance is not provided.\r\n\r\nNew Features:\r\n\r\n* [#11297](http://dev.ckeditor.com/ticket/11297): Styles can now be applied to widgets. The definition of a style which can be applied to a specific widget must contain two additional properties &mdash; `type` and `widget`. Read more in the [Widget Styles](http://docs.ckeditor.com/#!/guide/dev_styles-section-widget-styles) section of the \"Syles Drop-down\" guide. Note that by default, widgets support only classes and no other attributes or styles. Related changes and features:\r\n  * Introduced the [`CKEDITOR.style.addCustomHandler()`](http://docs.ckeditor.com/#!/api/CKEDITOR.style-static-method-addCustomHandler) method for registering custom style handlers.\r\n  * The [`CKEDITOR.style.apply()`](http://docs.ckeditor.com/#!/api/CKEDITOR.style-method-apply) and [`CKEDITOR.style.remove()`](http://docs.ckeditor.com/#!/api/CKEDITOR.style-method-remove) methods are now called with an editor instance instead of the document so they can be reused by the [`CKEDITOR.editor.applyStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-applyStyle) and [`CKEDITOR.editor.removeStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-removeStyle) methods. Backward compatibility was preserved, but from CKEditor 4.4 it is highly recommended to pass an editor instead of a document to these methods.\r\n  * Many new methods and properties were introduced in the [Widget API](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget) to make the handling of styles by widgets fully customizable. See: [`widget.definition.styleableElements`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.definition-property-styleableElements), [`widget.definition.styleToAllowedContentRule`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.definition-property-styleToAllowedContentRules), [`widget.addClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-addClass), [`widget.removeClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-removeClass), [`widget.getClasses()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-getClasses), [`widget.hasClass()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-hasClass), [`widget.applyStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-applyStyle), [`widget.removeStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-removeStyle), [`widget.checkStyleActive()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-method-checkStyleActive).\r\n  * Integration with the [Allowed Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) required an introduction of the [`CKEDITOR.style.toAllowedContent()`](http://docs.ckeditor.com/#!/api/CKEDITOR.style-method-toAllowedContentRules) method which can be implemented by the custom style handler and if exists, it is used by the [`CKEDITOR.filter`](http://docs.ckeditor.com/#!/api/CKEDITOR.filter) to translate a style to [allowed content rules](http://docs.ckeditor.com/#!/api/CKEDITOR.filter.allowedContentRules).\r\n* [#11300](http://dev.ckeditor.com/ticket/11300): Various changes in the [Enhanced Image](http://ckeditor.com/addon/image2) plugin:\r\n  * Introduced the [`config.image2_captionedClass`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-image2_captionedClass) option to configure the class of captioned images.\r\n  * Introduced the [`config.image2_alignClasses`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-image2_alignClasses) option to configure the way images are aligned with CSS classes.\r\n  If this setting is defined, the editor produces classes instead of inline styles for aligned images.\r\n  * Default image caption can be translated (customized) with the `editor.lang.image2.captionPlaceholder` string.\r\n* [#11341](http://dev.ckeditor.com/ticket/11341): [Enhanced Image](http://ckeditor.com/addon/image2) plugin: It is now possible to add a link to any image type.\r\n* [#10202](http://dev.ckeditor.com/ticket/10202): Introduced wildcard support in the [Allowed Content Rules](http://docs.ckeditor.com/#!/guide/dev_allowed_content_rules) format.\r\n* [#10276](http://dev.ckeditor.com/ticket/10276): Introduced blacklisting in the [Allowed Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter).\r\n* [#10480](http://dev.ckeditor.com/ticket/10480): Introduced code snippets with code highlighting. There are two versions available so far &mdash; the default [Code Snippet](http://ckeditor.com/addon/codesnippet) which uses the [highlight.js](http://highlightjs.org) library and the [Code Snippet GeSHi](http://ckeditor.com/addon/codesnippetgeshi) which uses the [GeSHi](http://qbnz.com/highlighter/) library.\r\n* [#11737](http://dev.ckeditor.com/ticket/11737): Introduced an option to prevent [filtering](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) of an element that matches custom criteria (see [`filter.addElementCallback()`](http://docs.ckeditor.com/#!/api/CKEDITOR.filter-method-addElementCallback)).\r\n* [#11532](http://dev.ckeditor.com/ticket/11532): Introduced the [`editor.addContentsCss()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-addContentsCss) method that can be used for [adding custom CSS files](http://docs.ckeditor.com/#!/guide/plugin_sdk_styles).\r\n* [#11536](http://dev.ckeditor.com/ticket/11536): Added the [`CKEDITOR.tools.htmlDecode()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-htmlDecode) method for decoding HTML entities.\r\n* [#11225](http://dev.ckeditor.com/ticket/11225): Introduced the [`CKEDITOR.tools.transparentImageData`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-property-transparentImageData) property which contains transparent image data to be used in CSS or as image source.\r\n\r\nOther Changes:\r\n\r\n* [#11377](http://dev.ckeditor.com/ticket/11377): Unified internal representation of empty anchors using the [fake objects](http://ckeditor.com/addon/fakeobjects).\r\n* [#11422](http://dev.ckeditor.com/ticket/11422): Removed Firefox 3.x, Internet Explorer 6 and Opera 12.x leftovers in code.\r\n* [#5217](http://dev.ckeditor.com/ticket/5217): Setting data (including switching between modes) creates a new undo snapshot. Besides that:\r\n  * Introduced the [`editable.status`](http://docs.ckeditor.com/#!/api/CKEDITOR.editable-property-status) property.\r\n  * Introduced a new `forceUpdate` option for the [`editor.lockSnapshot`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-lockSnapshot) event.\r\n  * Fixed: Selection not being unlocked in inline editor after setting data ([#11500](http://dev.ckeditor.com/ticket/11500)).\r\n* The [WebSpellChecker](http://ckeditor.com/addon/wsc) plugin was updated to the latest version.\r\n\r\nFixed Issues:\r\n\r\n* [#10190](http://dev.ckeditor.com/ticket/10190): Fixed: Removing block style with [`editor.removeStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-removeStyle) should result in a paragraph and not a div.\r\n* [#11727](http://dev.ckeditor.com/ticket/11727): Fixed: The editor tries to select a non-editable image which was clicked.\r\n\r\n## CKEditor 4.3.5\r\n\r\nNew Features:\r\n\r\n* Added new translation: Tatar.\r\n\r\nFixed Issues:\r\n\r\n* [#11677](http://dev.ckeditor.com/ticket/11677): Fixed: Undo/Redo keystrokes are blocked in the source mode.\r\n* [#11717](http://dev.ckeditor.com/ticket/11717): [Document Properties](http://ckeditor.com/addon/docprops) plugin requires the [Color Dialog](http://ckeditor.com/addon/colordialog) plugin to work.\r\n\r\n## CKEditor 4.3.4\r\n\r\nFixed Issues:\r\n\r\n* [#11597](http://dev.ckeditor.com/ticket/11597): [IE11] Fixed: Error thrown when trying to open the [preview](http://ckeditor.com/addon/preview) using the keyboard.\r\n* [#11544](http://dev.ckeditor.com/ticket/11544): [Placeholders](http://ckeditor.com/addon/placeholder) will no longer be upcasted in parents not accepting `<span>` elements.\r\n* [#8663](http://dev.ckeditor.com/ticket/8663): Fixed [`element.renameNode()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-renameNode) not clearing the [`element.getName()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.element-method-getName) cache.\r\n* [#11574](http://dev.ckeditor.com/ticket/11574): Fixed: *Backspace* destroying the DOM structure if an inline editable is placed in a list item.\r\n* [#11603](http://dev.ckeditor.com/ticket/11603): Fixed: [Table Resize](http://ckeditor.com/addon/tableresize) attaches to tables outside the editable.\r\n* [#9205](http://dev.ckeditor.com/ticket/9205), [#7805](http://dev.ckeditor.com/ticket/7805), [#8216](http://dev.ckeditor.com/ticket/8216): Fixed: `{cke_protected_1}` appearing in data in various cases where HTML comments are placed next to `\"` or `'`.\r\n* [#11635](http://dev.ckeditor.com/ticket/11635): Fixed: Some attributes are not protected before the content is passed through the fix bin.\r\n* [#11660](http://dev.ckeditor.com/ticket/11660): [IE] Fixed: Table content is lost when some extra markup is inside the table.\r\n* [#11641](http://dev.ckeditor.com/ticket/11641): Fixed: Switching between modes in the classic editor removes content styles for the inline editor.\r\n* [#11568](http://dev.ckeditor.com/ticket/11568): Fixed: [Styles](http://ckeditor.com/addon/stylescombo) drop-down list is not enabled on selection change.\r\n\r\n## CKEditor 4.3.3\r\n\r\nFixed Issues:\r\n\r\n* [#11500](http://dev.ckeditor.com/ticket/11500): [Webkit/Blink] Fixed: Selection lost when setting data in another inline editor. Additionally, [`selection.removeAllRanges()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.selection-method-removeAllRanges) is now scoped to selection's [root](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.selection-property-root).\r\n* [#11104](http://dev.ckeditor.com/ticket/11104): [IE] Fixed: Various issues with scrolling and selection when focusing widgets.\r\n* [#11487](http://dev.ckeditor.com/ticket/11487): Moving mouse over the [Enhanced Image](http://ckeditor.com/addon/image2) widget will no longer change the value returned by the [`editor.checkDirty()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-checkDirty) method.\r\n* [#8673](http://dev.ckeditor.com/ticket/8673): [WebKit] Fixed: Cannot select and remove the [Page Break](http://ckeditor.com/addon/pagebreak).\r\n* [#11413](http://dev.ckeditor.com/ticket/11413): Fixed: Incorrect [`editor.execCommand()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-execCommand) behavior.\r\n* [#11438](http://dev.ckeditor.com/ticket/11438): Splitting table cells vertically is no longer changing table structure.\r\n* [#8899](http://dev.ckeditor.com/ticket/8899): Fixed: Links in the [About CKEditor](http://ckeditor.com/addon/about) dialog window now open in a new browser window or tab.\r\n* [#11490](http://dev.ckeditor.com/ticket/11490): Fixed: [Menu button](http://ckeditor.com/addon/menubutton) panel not showing in the source mode.\r\n* [#11417](http://dev.ckeditor.com/ticket/11417): The [`widget.doubleclick`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget-event-doubleclick) event is not canceled anymore after editing was triggered.\r\n* [#11253](http://dev.ckeditor.com/ticket/11253): [IE] Fixed: Clipped upload button in the [Enhanced Image](http://ckeditor.com/addon/image2) dialog window.\r\n* [#11359](http://dev.ckeditor.com/ticket/11359): Standardized the way anchors are discovered by the [Link](http://ckeditor.com/addon/link) plugin.\r\n* [#11058](http://dev.ckeditor.com/ticket/11058): [IE8] Fixed: Error when deleting a table row.\r\n* [#11508](http://dev.ckeditor.com/ticket/11508): Fixed: [`htmlDataProcessor`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlDataProcessor) discovering protected attributes within other attributes' values.\r\n* [#11533](http://dev.ckeditor.com/ticket/11533): Widgets: Avoid recurring upcasts if the DOM structure was modified during an upcast.\r\n* [#11400](http://dev.ckeditor.com/ticket/11400): Fixed: The [`domObject.removeAllListeners()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.domObject-method-removeAllListeners) method does not remove custom listeners completely.\r\n* [#11493](http://dev.ckeditor.com/ticket/11493): Fixed: The [`selection.getRanges()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.selection-method-getRanges) method does not override cached ranges when used with the `onlyEditables` argument.\r\n* [#11390](http://dev.ckeditor.com/ticket/11390): [IE] All [XML](http://ckeditor.com/addon/xml) plugin [methods](http://docs.ckeditor.com/#!/api/CKEDITOR.xml) now work in IE10+.\r\n* [#11542](http://dev.ckeditor.com/ticket/11542): [IE11] Fixed: Blurry toolbar icons when Right-to-Left UI language is set.\r\n* [#11504](http://dev.ckeditor.com/ticket/11504): Fixed: When [`config.fullPage`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-fullPage) is set to `true`, entities are not encoded in editor output.\r\n* [#11004](http://dev.ckeditor.com/ticket/11004): Integrated [Enhanced Image](http://ckeditor.com/addon/image2) dialog window with [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter).\r\n* [#11439](http://dev.ckeditor.com/ticket/11439): Fixed: Properties get cloned in the Cell Properties dialog window if multiple cells are selected.\r\n\r\n## CKEditor 4.3.2\r\n\r\nFixed Issues:\r\n\r\n* [#11331](http://dev.ckeditor.com/ticket/11331): A menu button will have a changed label when selected instead of using the `aria-pressed` attribute.\r\n* [#11177](http://dev.ckeditor.com/ticket/11177): Widget drag handler improvements:\r\n  * [#11176](http://dev.ckeditor.com/ticket/11176): Fixed: Initial position is not updated when the widget data object is empty.\r\n  * [#11001](http://dev.ckeditor.com/ticket/11001): Fixed: Multiple synchronous layout recalculations are caused by initial drag handler positioning causing performance issues.\r\n  * [#11161](http://dev.ckeditor.com/ticket/11161): Fixed: Drag handler is not repositioned in various situations.\r\n  * [#11281](http://dev.ckeditor.com/ticket/11281): Fixed: Drag handler and mask are duplicated after widget reinitialization.\r\n* [#11207](http://dev.ckeditor.com/ticket/11207): [Firefox] Fixed: Misplaced [Enhanced Image](http://ckeditor.com/addon/image2) resizer in the inline editor.\r\n* [#11102](http://dev.ckeditor.com/ticket/11102): `CKEDITOR.template` improvements:\r\n  * [#11102](http://dev.ckeditor.com/ticket/11102): Added newline character support.\r\n  * [#11216](http://dev.ckeditor.com/ticket/11216): Added \"\\\\'\" substring support.\r\n* [#11121](http://dev.ckeditor.com/ticket/11121): [Firefox] Fixed: High Contrast mode is enabled when the editor is loaded in a hidden iframe.\r\n* [#11350](http://dev.ckeditor.com/ticket/11350): The default value of [`config.contentsCss`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-contentsCss) is affected by [`CKEDITOR.getUrl()`](http://docs.ckeditor.com/#!/api/CKEDITOR-method-getUrl).\r\n* [#11097](http://dev.ckeditor.com/ticket/11097): Improved the [Autogrow](http://ckeditor.com/addon/autogrow) plugin performance when dealing with very big tables.\r\n* [#11290](http://dev.ckeditor.com/ticket/11290): Removed redundant code in the [Source Dialog](http://ckeditor.com/addon/sourcedialog) plugin.\r\n* [#11133](http://dev.ckeditor.com/ticket/11133): [Page Break](http://ckeditor.com/addon/pagebreak) becomes editable if pasted.\r\n* [#11126](http://dev.ckeditor.com/ticket/11126): Fixed: Native Undo executed once the bottom of the snapshot stack is reached.\r\n* [#11131](http://dev.ckeditor.com/ticket/11131): [Div Editing Area](http://ckeditor.com/addon/divarea): Fixed: Error thrown when switching to source mode if the selection was in widget's nested editable.\r\n* [#11139](http://dev.ckeditor.com/ticket/11139): [Div Editing Area](http://ckeditor.com/addon/divarea): Fixed: Elements Path is not cleared after switching to source mode.\r\n* [#10778](http://dev.ckeditor.com/ticket/10778): Fixed a bug with range enlargement. The range no longer expands to visible whitespace.\r\n* [#11146](http://dev.ckeditor.com/ticket/11146): [IE] Fixed: Preview window switches Internet Explorer to Quirks Mode.\r\n* [#10762](http://dev.ckeditor.com/ticket/10762): [IE] Fixed: JavaScript code displayed in preview window's URL bar.\r\n* [#11186](http://dev.ckeditor.com/ticket/11186): Introduced the [`widgets.repository.addUpcastCallback()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-method-addUpcastCallback) method that allows to block upcasting given element to a widget.\r\n* [#11307](http://dev.ckeditor.com/ticket/11307): Fixed: Paste as Plain Text conflict with the [MooTools](http://mootools.net) library.\r\n* [#11140](http://dev.ckeditor.com/ticket/11140): [IE11] Fixed: Anchors are not draggable.\r\n* [#11379](http://dev.ckeditor.com/ticket/11379): Changed default contents `line-height` to unitless values to avoid huge text overlapping (like in [#9696](http://dev.ckeditor.com/ticket/9696)).\r\n* [#10787](http://dev.ckeditor.com/ticket/10787): [Firefox] Fixed: Broken replacement of text while pasting into `div`-based editor.\r\n* [#10884](http://dev.ckeditor.com/ticket/10884): Widgets integration with the [Show Blocks](http://ckeditor.com/addon/showblocks) plugin.\r\n* [#11021](http://dev.ckeditor.com/ticket/11021): Fixed: An error thrown when selecting entire editable contents while fake selection is on.\r\n* [#11086](http://dev.ckeditor.com/ticket/11086): [IE8] Re-enable inline widgets drag&drop in Internet Explorer 8.\r\n* [#11372](http://dev.ckeditor.com/ticket/11372): Widgets: Special characters encoded twice in nested editables.\r\n* [#10068](http://dev.ckeditor.com/ticket/10068): Fixed: Support for protocol-relative URLs.\r\n* [#11283](http://dev.ckeditor.com/ticket/11283): [Enhanced Image](http://ckeditor.com/addon/image2): A `<div>` element with `text-align: center` and an image inside is not recognised correctly.\r\n* [#11196](http://dev.ckeditor.com/ticket/11196): [Accessibility Instructions](http://ckeditor.com/addon/a11yhelp): Allowed additional keyboard button labels to be translated in the dialog window.\r\n\r\n## CKEditor 4.3.1\r\n\r\n**Important Notes:**\r\n\r\n* To match the naming convention, the `language` button is now `Language` ([#11201](http://dev.ckeditor.com/ticket/11201)).\r\n* [Enhanced Image](http://ckeditor.com/addon/image2) button, context menu, command, and icon names match those of the [Image](http://ckeditor.com/addon/image) plugin ([#11222](http://dev.ckeditor.com/ticket/11222)).\r\n\r\nFixed Issues:\r\n\r\n* [#11244](http://dev.ckeditor.com/ticket/11244): Changed: The [`widget.repository.checkWidgets()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-method-checkWidgets) method now fires the [`widget.repository.checkWidgets`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-event-checkWidgets) event, so from CKEditor 4.3.1 it is preferred to use the method rather than fire the event.\r\n* [#11171](http://dev.ckeditor.com/ticket/11171): Fixed: [`editor.insertElement()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertElement) and [`editor.insertText()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertText) methods do not call the [`widget.repository.checkWidgets()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.repository-method-checkWidgets) method.\r\n* [#11085](http://dev.ckeditor.com/ticket/11085): [IE8] Replaced preview generated by the [Mathematical Formulas](http://ckeditor.com/addon/mathjax) widget with a placeholder.\r\n* [#11044](http://dev.ckeditor.com/ticket/11044): Enhanced WAI-ARIA support for the [Language](http://ckeditor.com/addon/language) plugin drop-down menu.\r\n* [#11075](http://dev.ckeditor.com/ticket/11075): With drop-down menu button focused, pressing the *Down Arrow* key will now open the menu and focus its first option.\r\n* [#11165](http://dev.ckeditor.com/ticket/11165): Fixed: The [File Browser](http://ckeditor.com/addon/filebrowser) plugin cannot be removed from the editor.\r\n* [#11159](http://dev.ckeditor.com/ticket/11159): [IE9-10] [Enhanced Image](http://ckeditor.com/addon/image2): Fixed buggy discovery of image dimensions.\r\n* [#11101](http://dev.ckeditor.com/ticket/11101): Drop-down lists no longer break when given double quotes.\r\n* [#11077](http://dev.ckeditor.com/ticket/11077): [Enhanced Image](http://ckeditor.com/addon/image2): Empty undo step recorded when resizing the image.\r\n* [#10853](http://dev.ckeditor.com/ticket/10853): [Enhanced Image](http://ckeditor.com/addon/image2): Widget has paragraph wrapper when de-captioning unaligned image.\r\n* [#11198](http://dev.ckeditor.com/ticket/11198): Widgets: Drag handler is not fully visible when an inline widget is in a heading.\r\n* [#11132](http://dev.ckeditor.com/ticket/11132): [Firefox] Fixed: Caret is lost after drag and drop of an inline widget.\r\n* [#11182](http://dev.ckeditor.com/ticket/11182): [IE10-11] Fixed: Editor crashes (IE11) or works with minor issues (IE10) if a page is loaded in Quirks Mode. See [`env.quirks`](http://docs.ckeditor.com/#!/api/CKEDITOR.env-property-quirks) for more details.\r\n* [#11204](http://dev.ckeditor.com/ticket/11204): Added `figure` and `figcaption` styles to the `contents.css` file so [Enhanced Image](http://ckeditor.com/addon/image2) looks nicer.\r\n* [#11202](http://dev.ckeditor.com/ticket/11202): Fixed: No newline in [BBCode](http://ckeditor.com/addon/bbcode) mode.\r\n* [#10890](http://dev.ckeditor.com/ticket/10890): Fixed: Error thrown when pressing the *Delete* key in a list item.\r\n* [#10055](http://dev.ckeditor.com/ticket/10055): [IE8-10] Fixed: *Delete* pressed on a selected image causes the browser to go back.\r\n* [#11183](http://dev.ckeditor.com/ticket/11183): Fixed: Inserting a horizontal rule or a table in multiple row selection causes a browser crash. Additionally, the [`editor.insertElement()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertElement) method does not insert the element into every range of a selection any more.\r\n* [#11042](http://dev.ckeditor.com/ticket/11042): Fixed: Selection made on an element containing a non-editable element was not auto faked.\r\n* [#11125](http://dev.ckeditor.com/ticket/11125): Fixed: Keyboard navigation through menu and drop-down items will now cycle.\r\n* [#11011](http://dev.ckeditor.com/ticket/11011): Fixed: The [`editor.applyStyle()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-applyStyle) method removes attributes from nested elements.\r\n* [#11179](http://dev.ckeditor.com/ticket/11179): Fixed: [`editor.destroy()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-destroy) does not cleanup content generated by the [Table Resize](http://ckeditor.com/addon/tableresize) plugin for inline editors.\r\n* [#11237](http://dev.ckeditor.com/ticket/11237): Fixed: Table border attribute value is deleted when pasting content from Microsoft Word.\r\n* [#11250](http://dev.ckeditor.com/ticket/11250): Fixed: HTML entities inside the `<textarea>` element are not encoded.\r\n* [#11260](http://dev.ckeditor.com/ticket/11260): Fixed: Initially disabled buttons are not read by JAWS as disabled.\r\n* [#11200](http://dev.ckeditor.com/ticket/11200):  Added [Clipboard](http://ckeditor.com/addon/clipboard) plugin as a dependency for [Widget](http://ckeditor.com/addon/widget) to fix drag and drop.\r\n\r\n## CKEditor 4.3\r\n\r\nNew Features:\r\n\r\n* [#10612](http://dev.ckeditor.com/ticket/10612): Internet Explorer 11 support.\r\n* [#10869](http://dev.ckeditor.com/ticket/10869): Widgets: Added better integration with the [Elements Path](http://ckeditor.com/addon/elementspath) plugin.\r\n* [#10886](http://dev.ckeditor.com/ticket/10886): Widgets: Added tooltip to the drag handle.\r\n* [#10933](http://dev.ckeditor.com/ticket/10933): Widgets: Introduced drag and drop of block widgets with the [Line Utilities](http://ckeditor.com/addon/lineutils) plugin.\r\n* [#10936](http://dev.ckeditor.com/ticket/10936): Widget System changes for easier integration with other dialog systems.\r\n* [#10895](http://dev.ckeditor.com/ticket/10895): [Enhanced Image](http://ckeditor.com/addon/image2): Added file browser integration.\r\n* [#11002](http://dev.ckeditor.com/ticket/11002): Added the [`draggable`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget.definition-property-draggable) option to disable drag and drop support for widgets.\r\n* [#10937](http://dev.ckeditor.com/ticket/10937): [Mathematical Formulas](http://ckeditor.com/addon/mathjax) widget improvements:\r\n  * loading indicator ([#10948](http://dev.ckeditor.com/ticket/10948)),\r\n  * applying paragraph changes (like font color change) to iframe ([#10841](http://dev.ckeditor.com/ticket/10841)),\r\n  * Firefox and IE9 clipboard fixes ([#10857](http://dev.ckeditor.com/ticket/10857)),\r\n  * fixing same origin policy issue ([#10840](http://dev.ckeditor.com/ticket/10840)),\r\n  * fixing undo bugs ([#10842](http://dev.ckeditor.com/ticket/10842), [#10930](http://dev.ckeditor.com/ticket/10930)),\r\n  * fixing other minor bugs.\r\n* [#10862](http://dev.ckeditor.com/ticket/10862): [Placeholder](http://ckeditor.com/addon/placeholder) plugin was rewritten as a widget.\r\n* [#10822](http://dev.ckeditor.com/ticket/10822): Added styles system integration with non-editable elements (for example widgets) and their nested editables. Styles cannot change non-editable content and are applied in nested editable only if allowed by its type and content filter.\r\n* [#10856](http://dev.ckeditor.com/ticket/10856): Menu buttons will now toggle the visibility of their panels when clicked multiple times. [Language](http://ckeditor.com/addon/language) plugin fixes: Added active language highlighting, added an option to remove the language.\r\n* [#10028](http://dev.ckeditor.com/ticket/10028): New [`config.dialog_noConfirmCancel`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-dialog_noConfirmCancel) configuration option that eliminates the need to confirm closing of a dialog window when the user changed any of its fields.\r\n* [#10848](http://dev.ckeditor.com/ticket/10848): Integrate remaining plugins ([Styles](http://ckeditor.com/addon/stylescombo), [Format](http://ckeditor.com/addon/format), [Font](http://ckeditor.com/addon/font), [Color Button](http://ckeditor.com/addon/colorbutton), [Language](http://ckeditor.com/addon/language) and [Indent](http://ckeditor.com/addon/indent)) with [active filter](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-activeFilter).\r\n* [#10855](http://dev.ckeditor.com/ticket/10855): Change the extension of emoticons in the [BBCode](http://ckeditor.com/addon/bbcode) sample from GIF to PNG.\r\n\r\nFixed Issues:\r\n\r\n* [#10831](http://dev.ckeditor.com/ticket/10831): [Enhanced Image](http://ckeditor.com/addon/image2): Merged `image2inline` and `image2block` into one `image2` widget.\r\n* [#10835](http://dev.ckeditor.com/ticket/10835): [Enhanced Image](http://ckeditor.com/addon/image2): Improved visibility of the resize handle.\r\n* [#10836](http://dev.ckeditor.com/ticket/10836): [Enhanced Image](http://ckeditor.com/addon/image2): Preserve custom mouse cursor while resizing the image.\r\n* [#10939](http://dev.ckeditor.com/ticket/10939): [Firefox] [Enhanced Image](http://ckeditor.com/addon/image2): hovering the image causes it to change.\r\n* [#10866](http://dev.ckeditor.com/ticket/10866): Fixed: Broken *Tab* key navigation in the [Enhanced Image](http://ckeditor.com/addon/image2) dialog window.\r\n* [#10833](http://dev.ckeditor.com/ticket/10833): Fixed: *Lock ratio* option should be on by default in the [Enhanced Image](http://ckeditor.com/addon/image2) dialog window.\r\n* [#10881](http://dev.ckeditor.com/ticket/10881): Various improvements to *Enter* key behavior in nested editables.\r\n* [#10879](http://dev.ckeditor.com/ticket/10879): [Remove Format](http://ckeditor.com/addon/removeformat) should not leak from a nested editable.\r\n* [#10877](http://dev.ckeditor.com/ticket/10877): Fixed: [WebSpellChecker](http://ckeditor.com/addon/wsc) fails to apply changes if a nested editable was focused.\r\n* [#10877](http://dev.ckeditor.com/ticket/10877): Fixed: [SCAYT](http://ckeditor.com/addon/wsc) blocks typing in nested editables.\r\n* [#11079](http://dev.ckeditor.com/ticket/11079): Add button icons to the [Placeholder](http://ckeditor.com/addon/placeholder) sample.\r\n* [#10870](http://dev.ckeditor.com/ticket/10870): The `paste` command is no longer being disabled when the clipboard is empty.\r\n* [#10854](http://dev.ckeditor.com/ticket/10854): Fixed: Firefox prepends `<br>` to `<body>`, so it is stripped by the HTML data processor.\r\n* [#10823](http://dev.ckeditor.com/ticket/10823): Fixed: [Link](http://ckeditor.com/addon/link) plugin does not work with non-editable content.\r\n* [#10828](http://dev.ckeditor.com/ticket/10828): [Magic Line](http://ckeditor.com/addon/magicline) integration with the Widget System.\r\n* [#10865](http://dev.ckeditor.com/ticket/10865): Improved hiding copybin, so copying widgets works smoothly.\r\n* [#11066](http://dev.ckeditor.com/ticket/11066): Widget's private parts use CSS reset.\r\n* [#11027](http://dev.ckeditor.com/ticket/11027): Fixed: Block commands break on widgets; added the [`contentDomInvalidated`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-contentDomInvalidated) event.\r\n* [#10430](http://dev.ckeditor.com/ticket/10430): Resolve dependence of the [Image](http://ckeditor.com/addon/image) plugin on the [Form Elements](http://ckeditor.com/addon/forms) plugin.\r\n* [#10911](http://dev.ckeditor.com/ticket/10911): Fixed: Browser *Alt* hotkeys will no longer be blocked while a widget is focused.\r\n* [#11082](http://dev.ckeditor.com/ticket/11082): Fixed: Selected widget is not copied or cut when using toolbar buttons or context menu.\r\n* [#11083](http://dev.ckeditor.com/ticket/11083): Fixed list and div element application to block widgets.\r\n* [#10887](http://dev.ckeditor.com/ticket/10887): Internet Explorer 8 compatibility issues related to the Widget System.\r\n* [#11074](http://dev.ckeditor.com/ticket/11074): Temporarily disabled inline widget drag and drop, because of seriously buggy native `range#moveToPoint` method.\r\n* [#11098](http://dev.ckeditor.com/ticket/11098): Fixed: Wrong selection position after undoing widget drag and drop.\r\n* [#11110](http://dev.ckeditor.com/ticket/11110): Fixed: IFrame and Flash objects are being incorrectly pasted in certain conditions.\r\n* [#11129](http://dev.ckeditor.com/ticket/11129): Page break is lost when loading data.\r\n* [#11123](http://dev.ckeditor.com/ticket/11123): [Firefox] Widget is destroyed after being dragged outside of `<body>`.\r\n* [#11124](http://dev.ckeditor.com/ticket/11124): Fixed the [Elements Path](http://ckeditor.com/addon/elementspath) in an editor using the [Div Editing Area](http://ckeditor.com/addon/divarea).\r\n\r\n## CKEditor 4.3 Beta\r\n\r\nNew Features:\r\n\r\n* [#9764](http://dev.ckeditor.com/ticket/9764): Widget System.\r\n  * [Widget plugin](http://ckeditor.com/addon/widget) introducing the [Widget API](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.widget).\r\n  * New [`editor.enterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-enterMode) and [`editor.shiftEnterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-shiftEnterMode) properties &ndash; normalized versions of [`config.enterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enterMode) and [`config.shiftEnterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-shiftEnterMode).\r\n  * Dynamic editor settings. Starting from CKEditor 4.3 Beta, *Enter* mode values and [content filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) instances may be changed dynamically (for example when the caret was placed in an element in which editor features should be adjusted). When you are implementing a new editor feature, you should base its behavior on [dynamic](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-activeEnterMode) or [static](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-enterMode) *Enter* mode values depending on whether this feature works in selection context or globally on editor content.\r\n      * Dynamic *Enter* mode values &ndash; [`editor.setActiveEnterMode()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setActiveEnterMode) method, [`editor.activeEnterModeChange`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-activeEnterModeChange) event, and two properties: [`editor.activeEnterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-activeEnterMode) and [`editor.activeShiftEnterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-activeShiftEnterMode).\r\n      * Dynamic content filter instances &ndash; [`editor.setActiveFilter()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setActiveFilter) method, [`editor.activeFilterChange`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-activeFilterChange) event, and [`editor.activeFilter`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-activeFilter) property.\r\n  * \"Fake\" selection was introduced. It makes it possible to virtually select any element when the real selection remains hidden. See the  [`selection.fake()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.selection-method-fake) method.\r\n  * Default [`htmlParser.filter`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.filter) rules are not applied to non-editable elements (elements with `contenteditable` attribute set to `false` and their descendants) anymore. To add a rule which will be applied to all elements you need to pass an additional argument to the [`filter.addRules()`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.filter-method-addRules) method.\r\n  * Dozens of new methods were introduced &ndash; most interesting ones:\r\n      * [`document.find()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.document-method-find),\r\n      * [`document.findOne()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.document-method-findOne),\r\n      * [`editable.insertElementIntoRange()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editable-method-insertElementIntoRange),\r\n      * [`range.moveToClosestEditablePosition()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-moveToClosestEditablePosition),\r\n      * New methods for [`htmlParser.node`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.node) and [`htmlParser.element`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.element).\r\n* [#10659](http://dev.ckeditor.com/ticket/10659): New [Enhanced Image](http://ckeditor.com/addon/image2) plugin that introduces a widget with integrated image captions, an option to center images, and dynamic \"click and drag\" resizing.\r\n* [#10664](http://dev.ckeditor.com/ticket/10664): New [Mathematical Formulas](http://ckeditor.com/addon/mathjax) plugin that introduces the MathJax widget.\r\n* [#7987](https://dev.ckeditor.com/ticket/7987): New [Language](http://ckeditor.com/addon/language) plugin that implements Language toolbar button to support [WCAG 3.1.2 Language of Parts](http://www.w3.org/TR/UNDERSTANDING-WCAG20/meaning-other-lang-id.html).\r\n* [#10708](http://dev.ckeditor.com/ticket/10708): New [smileys](http://ckeditor.com/addon/smiley).\r\n\r\n## CKEditor 4.2.3\r\n\r\nFixed Issues:\r\n\r\n* [#10994](http://dev.ckeditor.com/ticket/10994): Fixed: Loading external jQuery library when opening the [jQuery Adapter](http://docs.ckeditor.com/#!/guide/dev_jquery) sample directly from file.\r\n* [#10975](http://dev.ckeditor.com/ticket/10975): [IE] Fixed: Error thrown while opening the color palette.\r\n* [#9929](http://dev.ckeditor.com/ticket/9929): [Blink/WebKit] Fixed: A non-breaking space is created once a character is deleted and a regular space is typed.\r\n* [#10963](http://dev.ckeditor.com/ticket/10963): Fixed: JAWS issue with the keyboard shortcut for [Magic Line](http://ckeditor.com/addon/magicline).\r\n* [#11096](http://dev.ckeditor.com/ticket/11096): Fixed: TypeError: Object has no method 'is'.\r\n\r\n## CKEditor 4.2.2\r\n\r\nFixed Issues:\r\n\r\n* [#9314](http://dev.ckeditor.com/ticket/9314): Fixed: Incorrect error message on closing a dialog window without saving changs.\r\n* [#10308](http://dev.ckeditor.com/ticket/10308): [IE10] Fixed: Unspecified error when deleting a row.\r\n* [#10945](http://dev.ckeditor.com/ticket/10945): [Chrome] Fixed: Clicking with a mouse inside the editor does not show the caret.\r\n* [#10912](http://dev.ckeditor.com/ticket/10912): Prevent default action when content of a non-editable link is clicked.\r\n* [#10913](http://dev.ckeditor.com/ticket/10913): Fixed [`CKEDITOR.plugins.addExternal()`](http://docs.ckeditor.com/#!/api/CKEDITOR.resourceManager-method-addExternal) not handling paths including file name specified.\r\n* [#10666](http://dev.ckeditor.com/ticket/10666): Fixed [`CKEDITOR.tools.isArray()`](http://docs.ckeditor.com/#!/api/CKEDITOR.tools-method-isArray) not working cross frame.\r\n* [#10910](http://dev.ckeditor.com/ticket/10910): [IE9] Fixed JavaScript error thrown in Compatibility Mode when clicking and/or typing in the editing area.\r\n* [#10868](http://dev.ckeditor.com/ticket/10868): [IE8] Prevent the browser from crashing when applying the Inline Quotation style.\r\n* [#10915](http://dev.ckeditor.com/ticket/10915): Fixed: Invalid CSS filter in the Kama skin.\r\n* [#10914](http://dev.ckeditor.com/ticket/10914): Plugins [Indent List](http://ckeditor.com/addon/indentlist) and [Indent Block](http://ckeditor.com/addon/indentblock) are now included in the build configuration.\r\n* [#10812](http://dev.ckeditor.com/ticket/10812): Fixed [`range.createBookmark2()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dom.range-method-createBookmark2) incorrectly normalizing offsets. This bug was causing many issues: [#10850](http://dev.ckeditor.com/ticket/10850), [#10842](http://dev.ckeditor.com/ticket/10842).\r\n* [#10951](http://dev.ckeditor.com/ticket/10951): Reviewed and optimized focus handling on panels (combo, menu buttons, color buttons, and context menu) to enhance accessibility. Fixed [#10705](http://dev.ckeditor.com/ticket/10705), [#10706](http://dev.ckeditor.com/ticket/10706) and [#10707](http://dev.ckeditor.com/ticket/10707).\r\n* [#10704](http://dev.ckeditor.com/ticket/10704): Fixed a JAWS issue with the Select Color dialog window title not being announced.\r\n* [#10753](http://dev.ckeditor.com/ticket/10753): The floating toolbar in inline instances now has a dedicated accessibility label.\r\n\r\n## CKEditor 4.2.1\r\n\r\nFixed Issues:\r\n\r\n* [#10301](http://dev.ckeditor.com/ticket/10301): [IE9-10] Undo fails after 3+ consecutive paste actions with a JavaScript error.\r\n* [#10689](http://dev.ckeditor.com/ticket/10689): Save toolbar button saves only the first editor instance.\r\n* [#10368](http://dev.ckeditor.com/ticket/10368): Move language reading direction definition (`dir`) from main language file to core.\r\n* [#9330](http://dev.ckeditor.com/ticket/9330): Fixed pasting anchors from MS Word.\r\n* [#8103](http://dev.ckeditor.com/ticket/8103): Fixed pasting nested lists from MS Word.\r\n* [#9958](http://dev.ckeditor.com/ticket/9958): [IE9] Pressing the \"OK\" button will trigger the `onbeforeunload` event in the popup dialog.\r\n* [#10662](http://dev.ckeditor.com/ticket/10662): Fixed styles from the Styles drop-down list not registering to the ACF in case when the [Shared Spaces plugin](http://ckeditor.com/addon/sharedspace) is used.\r\n* [#9654](http://dev.ckeditor.com/ticket/9654): Problems with Internet Explorer 10 Quirks Mode.\r\n* [#9816](http://dev.ckeditor.com/ticket/9816): Floating toolbar does not reposition vertically in several cases.\r\n* [#10646](http://dev.ckeditor.com/ticket/10646): Removing a selected sublist or nested table with *Backspace/Delete* removes the parent element.\r\n* [#10623](http://dev.ckeditor.com/ticket/10623): [WebKit] Page is scrolled when opening a drop-down list.\r\n* [#10004](http://dev.ckeditor.com/ticket/10004): [ChromeVox] Button names are not announced.\r\n* [#10731](http://dev.ckeditor.com/ticket/10731): [WebSpellChecker](http://ckeditor.com/addon/wsc) plugin breaks cloning of editor configuration.\r\n* It is now possible to set per instance [WebSpellChecker](http://ckeditor.com/addon/wsc) plugin configuration instead of setting the configuration globally.\r\n\r\n## CKEditor 4.2\r\n\r\n**Important Notes:**\r\n\r\n* Dropped compatibility support for Internet Explorer 7 and Firefox 3.6.\r\n\r\n* Both the Basic and the Standard distribution packages will not contain the new [Indent Block](http://ckeditor.com/addon/indentblock) plugin. Because of this the [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) might remove block indentations from existing contents. If you want to prevent this, either [add an appropriate ACF rule to your filter](http://docs.ckeditor.com/#!/guide/dev_allowed_content_rules) or create a custom build based on the Basic/Standard package and add the Indent Block plugin in [CKBuilder](http://ckeditor.com/builder).\r\n\r\nNew Features:\r\n\r\n* [#10027](http://dev.ckeditor.com/ticket/10027): Separated list and block indentation into two plugins: [Indent List](http://ckeditor.com/addon/indentlist) and [Indent Block](http://ckeditor.com/addon/indentblock).\r\n* [#8244](http://dev.ckeditor.com/ticket/8244): Use *(Shift+)Tab* to indent and outdent lists.\r\n* [#10281](http://dev.ckeditor.com/ticket/10281): The [jQuery Adapter](http://docs.ckeditor.com/#!/guide/dev_jquery) is now available. Several jQuery-related issues fixed: [#8261](http://dev.ckeditor.com/ticket/8261), [#9077](http://dev.ckeditor.com/ticket/9077), [#8710](http://dev.ckeditor.com/ticket/8710), [#8530](http://dev.ckeditor.com/ticket/8530), [#9019](http://dev.ckeditor.com/ticket/9019), [#6181](http://dev.ckeditor.com/ticket/6181), [#7876](http://dev.ckeditor.com/ticket/7876), [#6906](http://dev.ckeditor.com/ticket/6906).\r\n* [#10042](http://dev.ckeditor.com/ticket/10042): Introduced [`config.title`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-title) setting to change the human-readable title of the editor.\r\n* [#9794](http://dev.ckeditor.com/ticket/9794): Added [`editor.onChange`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-change) event.\r\n* [#9923](http://dev.ckeditor.com/ticket/9923): HiDPI support in the editor UI. HiDPI icons for [Moono skin](http://ckeditor.com/addon/moono) added.\r\n* [#8031](http://dev.ckeditor.com/ticket/8031): Handle `required` attributes on `<textarea>` elements &mdash; introduced [`editor.required`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-required) event.\r\n* [#10280](http://dev.ckeditor.com/ticket/10280): Ability to replace `<textarea>` elements with the inline editor.\r\n\r\nFixed Issues:\r\n\r\n* [#10599](http://dev.ckeditor.com/ticket/10599): [Indent](http://ckeditor.com/addon/indent) plugin is no longer required by the [List](http://ckeditor.com/addon/list) plugin.\r\n* [#10370](http://dev.ckeditor.com/ticket/10370): Inconsistency in data events between framed and inline editors.\r\n* [#10438](http://dev.ckeditor.com/ticket/10438): [FF, IE] No selection is done on an editable element on executing [`editor.setData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setData).\r\n\r\n## CKEditor 4.1.3\r\n\r\nNew Features:\r\n\r\n* Added new translation: Indonesian.\r\n\r\nFixed Issues:\r\n\r\n* [#10644](http://dev.ckeditor.com/ticket/10644): Fixed a critical bug when pasting plain text in Blink-based browsers.\r\n* [#5189](http://dev.ckeditor.com/ticket/5189): [Find/Replace](http://ckeditor.com/addon/find) dialog window: rename \"Cancel\" button to \"Close\".\r\n* [#10562](http://dev.ckeditor.com/ticket/10562): [Housekeeping] Unified CSS gradient filter formats in the [Moono](http://ckeditor.com/addon/moono) skin.\r\n* [#10537](http://dev.ckeditor.com/ticket/10537): Advanced Content Filter should register a default rule for [`config.shiftEnterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-shiftEnterMode).\r\n* [#10610](http://dev.ckeditor.com/ticket/10610): [`CKEDITOR.dialog.addIframe()`](http://docs.ckeditor.com/#!/api/CKEDITOR.dialog-static-method-addIframe) incorrectly sets the iframe size in dialog windows.\r\n\r\n## CKEditor 4.1.2\r\n\r\nNew Features:\r\n\r\n* Added new translation: Sinhala.\r\n\r\nFixed Issues:\r\n\r\n* [#10339](http://dev.ckeditor.com/ticket/10339): Fixed: Error thrown when inserted data was totally stripped out after filtering and processing.\r\n* [#10298](http://dev.ckeditor.com/ticket/10298): Fixed: Data processor breaks attributes containing protected parts.\r\n* [#10367](http://dev.ckeditor.com/ticket/10367): Fixed: [`editable.insertText()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editable-method-insertText) loses characters when `RegExp` replace controls are being inserted.\r\n* [#10165](http://dev.ckeditor.com/ticket/10165): [IE] Access denied error when `document.domain` has been altered.\r\n* [#9761](http://dev.ckeditor.com/ticket/9761): Update the *Backspace* key state in [`keystrokeHandler.blockedKeystrokes`](http://docs.ckeditor.com/#!/api/CKEDITOR.keystrokeHandler-property-blockedKeystrokes) when calling [`editor.setReadOnly()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setReadOnly).\r\n* [#6504](http://dev.ckeditor.com/ticket/6504): Fixed: Race condition while loading several [`config.customConfig`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-customConfig) files.\r\n* [#10146](http://dev.ckeditor.com/ticket/10146): [Firefox] Empty lines are being removed while [`config.enterMode`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enterMode) is [`CKEDITOR.ENTER_BR`](http://docs.ckeditor.com/#!/api/CKEDITOR-property-ENTER_BR).\r\n* [#10360](http://dev.ckeditor.com/ticket/10360): Fixed: ARIA `role=\"application\"` should not be used for dialog windows.\r\n* [#10361](http://dev.ckeditor.com/ticket/10361): Fixed: ARIA `role=\"application\"` should not be used for floating panels.\r\n* [#10510](http://dev.ckeditor.com/ticket/10510): Introduced unique voice labels to differentiate between different editor instances.\r\n* [#9945](http://dev.ckeditor.com/ticket/9945): [iOS] Scrolling not possible on iPad.\r\n* [#10389](http://dev.ckeditor.com/ticket/10389): Fixed: Invalid HTML in the \"Text and Table\" template.\r\n* [WebSpellChecker](http://ckeditor.com/addon/wsc) plugin user interface was changed to match CKEditor 4 style.\r\n\r\n## CKEditor 4.1.1\r\n\r\nNew Features:\r\n\r\n* Added new translation: Albanian.\r\n\r\nFixed Issues:\r\n\r\n* [#10172](http://dev.ckeditor.com/ticket/10172): Pressing *Delete* or *Backspace* in an empty table cell moves the cursor to the next/previous cell.\r\n* [#10219](http://dev.ckeditor.com/ticket/10219): Error thrown when destroying an editor instance in parallel with a `mouseup` event.\r\n* [#10265](http://dev.ckeditor.com/ticket/10265): Wrong loop type in the [File Browser](http://ckeditor.com/addon/filebrowser) plugin.\r\n* [#10249](http://dev.ckeditor.com/ticket/10249): Wrong undo/redo states at start.\r\n* [#10268](http://dev.ckeditor.com/ticket/10268): [Show Blocks](http://ckeditor.com/addon/showblocks) does not recover after switching to Source view.\r\n* [#9995](http://dev.ckeditor.com/ticket/9995): HTML code in the `<textarea>` should not be modified by the [`htmlDataProcessor`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlDataProcessor).\r\n* [#10320](http://dev.ckeditor.com/ticket/10320): [Justify](http://ckeditor.com/addon/justify) plugin should add elements to Advanced Content Filter based on current [Enter mode](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enterMode).\r\n* [#10260](http://dev.ckeditor.com/ticket/10260): Fixed: Advanced Content Filter blocks [`tabSpaces`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-tabSpaces). Unified `data-cke-*` attributes filtering.\r\n* [#10315](http://dev.ckeditor.com/ticket/10315): [WebKit] [Undo manager](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.undo.UndoManager) should not record snapshots after a filling character was added/removed.\r\n* [#10291](http://dev.ckeditor.com/ticket/10291): [WebKit] Space after a filling character should be secured.\r\n* [#10330](http://dev.ckeditor.com/ticket/10330): [WebKit] The filling character is not removed on `keydown` in specific cases.\r\n* [#10285](http://dev.ckeditor.com/ticket/10285): Fixed: Styled text pasted from MS Word causes an infinite loop.\r\n* [#10131](http://dev.ckeditor.com/ticket/10131): Fixed: [`undoManager.update()`](http://docs.ckeditor.com/#!/api/CKEDITOR.plugins.undo.UndoManager-method-update) does not refresh the command state.\r\n* [#10337](http://dev.ckeditor.com/ticket/10337): Fixed: Unable to remove `<s>` using [Remove Format](http://ckeditor.com/addon/removeformat).\r\n\r\n## CKEditor 4.1\r\n\r\nFixed Issues:\r\n\r\n* [#10192](http://dev.ckeditor.com/ticket/10192): Closing lists with the *Enter* key does not work with [Advanced Content Filter](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) in several cases.\r\n* [#10191](http://dev.ckeditor.com/ticket/10191): Fixed allowed content rules unification, so the [`filter.allowedContent`](http://docs.ckeditor.com/#!/api/CKEDITOR.filter-property-allowedContent) property always contains rules in the same format.\r\n* [#10224](http://dev.ckeditor.com/ticket/10224): Advanced Content Filter does not remove non-empty `<a>` elements anymore.\r\n* Minor issues in plugin integration with Advanced Content Filter:\r\n  * [#10166](http://dev.ckeditor.com/ticket/10166): Added transformation from the `align` attribute to `float` style to preserve backward compatibility after the introduction of Advanced Content Filter.\r\n  * [#10195](http://dev.ckeditor.com/ticket/10195): [Image](http://ckeditor.com/addon/image) plugin no longer registers rules for links to Advanced Content Filter.\r\n  * [#10213](http://dev.ckeditor.com/ticket/10213): [Justify](http://ckeditor.com/addon/justify) plugin is now correctly registering rules to Advanced Content Filter when [`config.justifyClasses`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-justifyClasses) is defined.\r\n\r\n## CKEditor 4.1 RC\r\n\r\nNew Features:\r\n\r\n* [#9829](http://dev.ckeditor.com/ticket/9829): Advanced Content Filter - data and features activation based on editor configuration.\r\n\r\n  Brand new data filtering system that works in 2 modes:\r\n\r\n  * Based on loaded features (toolbar items, plugins) - the data will be filtered according to what the editor in its\r\n  current configuration can handle.\r\n  * Based on [`config.allowedContent`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-allowedContent) rules - the data\r\n  will be filtered and the editor features (toolbar items, commands, keystrokes) will be enabled if they are allowed.\r\n\r\n  See the `datafiltering.html` sample, [guides](http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter) and [`CKEDITOR.filter` API documentation](http://docs.ckeditor.com/#!/api/CKEDITOR.filter).\r\n* [#9387](http://dev.ckeditor.com/ticket/9387): Reintroduced [Shared Spaces](http://ckeditor.com/addon/sharedspace) - the ability to display toolbar and bottom editor space in selected locations and to share them by different editor instances.\r\n* [#9907](http://dev.ckeditor.com/ticket/9907): Added the [`contentPreview`](http://docs.ckeditor.com/#!/api/CKEDITOR-event-contentPreview) event for preview data manipulation.\r\n* [#9713](http://dev.ckeditor.com/ticket/9713): Introduced the [Source Dialog](http://ckeditor.com/addon/sourcedialog) plugin that brings raw HTML editing for inline editor instances.\r\n* Included in [#9829](http://dev.ckeditor.com/ticket/9829): Introduced new events, [`toHtml`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-toHtml) and [`toDataFormat`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-toDataFormat), allowing for better integration with data processing.\r\n* [#9981](http://dev.ckeditor.com/ticket/9981): Added ability to filter [`htmlParser.fragment`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.fragment), [`htmlParser.element`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.element) etc. by many [`htmlParser.filter`](http://docs.ckeditor.com/#!/api/CKEDITOR.htmlParser.filter)s before writing structure to an HTML string.\r\n* Included in [#10103](http://dev.ckeditor.com/ticket/10103):\r\n  * Introduced the [`editor.status`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-status) property to make it easier to check the current status of the editor.\r\n  * Default [`command`](http://docs.ckeditor.com/#!/api/CKEDITOR.command) state is now [`CKEDITOR.TRISTATE_DISABLE`](http://docs.ckeditor.com/#!/api/CKEDITOR-property-TRISTATE_DISABLED). It will be activated on [`editor.instanceReady`](http://docs.ckeditor.com/#!/api/CKEDITOR-event-instanceReady) or immediately after being added if the editor is already initialized.\r\n* [#9796](http://dev.ckeditor.com/ticket/9796): Introduced `<s>` as a default tag for strikethrough, which replaces obsolete `<strike>` in HTML5.\r\n\r\n## CKEditor 4.0.3\r\n\r\nFixed Issues:\r\n\r\n* [#10196](http://dev.ckeditor.com/ticket/10196): Fixed context menus not opening with keyboard shortcuts when [Autogrow](http://ckeditor.com/addon/autogrow) is enabled.\r\n* [#10212](http://dev.ckeditor.com/ticket/10212): [IE7-10] Undo command throws errors after multiple switches between Source and WYSIWYG view.\r\n* [#10219](http://dev.ckeditor.com/ticket/10219): [Inline editor] Error thrown after calling [`editor.destroy()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-destroy).\r\n\r\n## CKEditor 4.0.2\r\n\r\nFixed Issues:\r\n\r\n* [#9779](http://dev.ckeditor.com/ticket/9779): Fixed overriding [`CKEDITOR.getUrl()`](http://docs.ckeditor.com/#!/api/CKEDITOR-method-getUrl) with `CKEDITOR_GETURL`.\r\n* [#9772](http://dev.ckeditor.com/ticket/9772): Custom buttons in the dialog window footer have different look and size ([Moono](http://ckeditor.com/addon/moono), [Kama](http://ckeditor.com/addon/kama) skins).\r\n* [#9029](http://dev.ckeditor.com/ticket/9029): Custom styles added with the [`stylesSet.add()`](http://docs.ckeditor.com/#!/api/CKEDITOR.stylesSet-method-add) are displayed in the wrong order.\r\n* [#9887](http://dev.ckeditor.com/ticket/9887): Disable [Magic Line](http://ckeditor.com/addon/magicline) when [`editor.readOnly`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-property-readOnly) is set.\r\n* [#9882](http://dev.ckeditor.com/ticket/9882): Fixed empty document title on [`editor.getData()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getData) if set via the Document Properties dialog window.\r\n* [#9773](http://dev.ckeditor.com/ticket/9773): Fixed rendering problems with selection fields in the Kama skin.\r\n* [#9851](http://dev.ckeditor.com/ticket/9851): The [`selectionChange`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-event-selectionChange) event is not fired when mouse selection ended outside editable.\r\n* [#9903](http://dev.ckeditor.com/ticket/9903): [Inline editor] Bad positioning of floating space with page horizontal scroll.\r\n* [#9872](http://dev.ckeditor.com/ticket/9872): [`editor.checkDirty()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-checkDirty) returns `true` when called onload. Removed the obsolete `editor.mayBeDirty` flag.\r\n* [#9893](http://dev.ckeditor.com/ticket/9893): [IE] Fixed broken toolbar when editing mixed direction content in Quirks mode.\r\n* [#9845](http://dev.ckeditor.com/ticket/9845): Fixed TAB navigation in the [Link](http://ckeditor.com/addon/link) dialog window when the Anchor option is used and no anchors are available.\r\n* [#9883](http://dev.ckeditor.com/ticket/9883): Maximizing was making the entire page editable with [divarea](http://ckeditor.com/addon/divarea)-based editors.\r\n* [#9940](http://dev.ckeditor.com/ticket/9940): [Firefox] Navigating back to a page with the editor was making the entire page editable.\r\n* [#9966](http://dev.ckeditor.com/ticket/9966): Fixed: Unable to type square brackets with French keyboard layout. Changed [Magic Line](http://ckeditor.com/addon/magicline) keystrokes.\r\n* [#9507](http://dev.ckeditor.com/ticket/9507): [Firefox] Selection is moved before editable position when the editor is focused for the first time.\r\n* [#9947](http://dev.ckeditor.com/ticket/9947): [WebKit] Editor overflows parent container in some edge cases.\r\n* [#10105](http://dev.ckeditor.com/ticket/10105): Fixed: Broken [sourcearea](http://ckeditor.com/addon/sourcearea) view when an RTL language is set.\r\n* [#10123](http://dev.ckeditor.com/ticket/10123): [WebKit] Fixed: Several dialog windows have broken layout since the latest WebKit release.\r\n* [#10152](http://dev.ckeditor.com/ticket/10152): Fixed: Invalid ARIA property used on menu items.\r\n\r\n## CKEditor 4.0.1.1\r\n\r\nFixed Issues:\r\n\r\n* Security update: Added protection against XSS attack and possible path disclosure in the PHP sample.\r\n\r\n## CKEditor 4.0.1\r\n\r\nFixed Issues:\r\n\r\n* [#9655](http://dev.ckeditor.com/ticket/9655): Support for IE Quirks Mode in the new [Moono skin](http://ckeditor.com/addon/moono).\r\n* Accessibility issues (mainly in inline editor): [#9364](http://dev.ckeditor.com/ticket/9364), [#9368](http://dev.ckeditor.com/ticket/9368), [#9369](http://dev.ckeditor.com/ticket/9369), [#9370](http://dev.ckeditor.com/ticket/9370), [#9541](http://dev.ckeditor.com/ticket/9541), [#9543](http://dev.ckeditor.com/ticket/9543), [#9841](http://dev.ckeditor.com/ticket/9841), [#9844](http://dev.ckeditor.com/ticket/9844).\r\n* [Magic Line](http://ckeditor.com/addon/magicline) plugin:\r\n    * [#9481](http://dev.ckeditor.com/ticket/9481): Added accessibility support for Magic Line.\r\n    * [#9509](http://dev.ckeditor.com/ticket/9509): Added Magic Line support for forms.\r\n    * [#9573](http://dev.ckeditor.com/ticket/9573): Magic Line does not disappear on `mouseout` in a specific case.\r\n* [#9754](http://dev.ckeditor.com/ticket/9754): [WebKit] Cutting & pasting simple unformatted text generates an inline wrapper in WebKit browsers.\r\n* [#9456](http://dev.ckeditor.com/ticket/9456): [Chrome] Properly paste bullet list style from MS Word.\r\n* [#9699](http://dev.ckeditor.com/ticket/9699), [#9758](http://dev.ckeditor.com/ticket/9758): Improved selection locking when selecting by dragging.\r\n* Context menu:\r\n    * [#9712](http://dev.ckeditor.com/ticket/9712): Opening the context menu destroys editor focus.\r\n    * [#9366](http://dev.ckeditor.com/ticket/9366): Context menu should be displayed over the floating toolbar.\r\n    * [#9706](http://dev.ckeditor.com/ticket/9706): Context menu generates a JavaScript error in inline mode when the editor is attached to a header element.\r\n* [#9800](http://dev.ckeditor.com/ticket/9800): Hide float panel when resizing the window.\r\n* [#9721](http://dev.ckeditor.com/ticket/9721): Padding in content of div-based editor puts the editing area under the bottom UI space.\r\n* [#9528](http://dev.ckeditor.com/ticket/9528): Host page `box-sizing` style should not influence the editor UI elements.\r\n* [#9503](http://dev.ckeditor.com/ticket/9503): [Form Elements](http://ckeditor.com/addon/forms) plugin adds context menu listeners only on supported input types. Added support for `tel`, `email`, `search` and `url` input types.\r\n* [#9769](http://dev.ckeditor.com/ticket/9769): Improved floating toolbar positioning in a narrow window.\r\n* [#9875](http://dev.ckeditor.com/ticket/9875): Table dialog window does not populate width correctly.\r\n* [#8675](http://dev.ckeditor.com/ticket/8675): Deleting cells in a nested table removes the outer table cell.\r\n* [#9815](http://dev.ckeditor.com/ticket/9815): Cannot edit dialog window fields in an editor initialized in the jQuery UI modal dialog.\r\n* [#8888](http://dev.ckeditor.com/ticket/8888): CKEditor dialog windows do not show completely in a small window.\r\n* [#9360](http://dev.ckeditor.com/ticket/9360): [Inline editor] Blocks shown for a `<div>` element stay permanently even after the user exits editing the `<div>`.\r\n* [#9531](http://dev.ckeditor.com/ticket/9531): [Firefox & Inline editor] Toolbar is lost when closing the Format drop-down list by clicking its button.\r\n* [#9553](http://dev.ckeditor.com/ticket/9553): Table width incorrectly set when the `border-width` style is specified.\r\n* [#9594](http://dev.ckeditor.com/ticket/9594): Cannot tab past CKEditor when it is in read-only mode.\r\n* [#9658](http://dev.ckeditor.com/ticket/9658): [IE9] Justify not working on selected images.\r\n* [#9686](http://dev.ckeditor.com/ticket/9686): Added missing contents styles for `<pre>` elements.\r\n* [#9709](http://dev.ckeditor.com/ticket/9709): [Paste from Word](http://ckeditor.com/addon/pastefromword) should not depend on configuration from other styles.\r\n* [#9726](http://dev.ckeditor.com/ticket/9726): Removed [Color Dialog](http://ckeditor.com/addon/colordialog) plugin dependency from [Table Tools](http://ckeditor.com/addon/tabletools).\r\n* [#9765](http://dev.ckeditor.com/ticket/9765): Toolbar Collapse command documented incorrectly in the [Accessibility Instructions](http://ckeditor.com/addon/a11yhelp) dialog window.\r\n* [#9771](http://dev.ckeditor.com/ticket/9771): [WebKit & Opera] Fixed scrolling issues when pasting.\r\n* [#9787](http://dev.ckeditor.com/ticket/9787): [IE9] `onChange` is not fired for checkboxes in dialogs.\r\n* [#9842](http://dev.ckeditor.com/ticket/9842): [Firefox 17] When opening a toolbar menu for the first time and pressing the *Down Arrow* key, focus goes to the next toolbar button instead of the menu options.\r\n* [#9847](http://dev.ckeditor.com/ticket/9847): [Elements Path](http://ckeditor.com/addon/elementspath) should not be initialized in the inline editor.\r\n* [#9853](http://dev.ckeditor.com/ticket/9853): [`editor.addRemoveFormatFilter()`](http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-addRemoveFormatFilter) is exposed before it really works.\r\n* [#8893](http://dev.ckeditor.com/ticket/8893): Value of the [`pasteFromWordCleanupFile`](http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-pasteFromWordCleanupFile) configuration option is now taken from the instance configuration.\r\n* [#9693](http://dev.ckeditor.com/ticket/9693): Removed \"Live Preview\" checkbox from UI color picker.\r\n\r\n\r\n## CKEditor 4.0\r\n\r\nThe first stable release of the new CKEditor 4 code line.\r\n\r\nThe CKEditor JavaScript API has been kept compatible with CKEditor 4, whenever\r\npossible. The list of relevant changes can be found in the [API Changes page of\r\nthe CKEditor 4 documentation][1].\r\n\r\n[1]: http://docs.ckeditor.com/#!/guide/dev_api_changes \"API Changes\"\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/LICENSE.md",
    "content": "Software License Agreement\r\n==========================\r\n\r\nCKEditor - The text editor for Internet - http://ckeditor.com\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\n\r\nLicensed under the terms of any of the following licenses at your\r\nchoice:\r\n\r\n - GNU General Public License Version 2 or later (the \"GPL\")\r\n   http://www.gnu.org/licenses/gpl.html\r\n   (See Appendix A)\r\n\r\n - GNU Lesser General Public License Version 2.1 or later (the \"LGPL\")\r\n   http://www.gnu.org/licenses/lgpl.html\r\n   (See Appendix B)\r\n\r\n - Mozilla Public License Version 1.1 or later (the \"MPL\")\r\n   http://www.mozilla.org/MPL/MPL-1.1.html\r\n   (See Appendix C)\r\n\r\nYou are not required to, but if you want to explicitly declare the\r\nlicense you have chosen to be bound to when using, reproducing,\r\nmodifying and distributing this software, just include a text file\r\ntitled \"legal.txt\" in your version of this software, indicating your\r\nlicense choice. In any case, your choice will not restrict any\r\nrecipient of your version of this software to use, reproduce, modify\r\nand distribute this software under any of the above licenses.\r\n\r\nSources of Intellectual Property Included in CKEditor\r\n-----------------------------------------------------\r\n\r\nWhere not otherwise indicated, all CKEditor content is authored by\r\nCKSource engineers and consists of CKSource-owned intellectual\r\nproperty. In some specific instances, CKEditor will incorporate work\r\ndone by developers outside of CKSource with their express permission.\r\n\r\nTrademarks\r\n----------\r\n\r\nCKEditor is a trademark of CKSource - Frederico Knabben. All other brand\r\nand product names are trademarks, registered trademarks or service\r\nmarks of their respective holders.\r\n\r\n---\r\n\r\nAppendix A: The GPL License\r\n---------------------------\r\n\r\nGNU GENERAL PUBLIC LICENSE\r\nVersion 2, June 1991\r\n\r\n Copyright (C) 1989, 1991 Free Software Foundation, Inc.,\r\n 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\r\n Everyone is permitted to copy and distribute verbatim copies\r\n of this license document, but changing it is not allowed.\r\n\r\nPreamble\r\n\r\n  The licenses for most software are designed to take away your\r\nfreedom to share and change it.  By contrast, the GNU General Public\r\nLicense is intended to guarantee your freedom to share and change free\r\nsoftware-to make sure the software is free for all its users.  This\r\nGeneral Public License applies to most of the Free Software\r\nFoundation's software and to any other program whose authors commit to\r\nusing it.  (Some other Free Software Foundation software is covered by\r\nthe GNU Lesser General Public License instead.)  You can apply it to\r\nyour programs, too.\r\n\r\n  When we speak of free software, we are referring to freedom, not\r\nprice.  Our General Public Licenses are designed to make sure that you\r\nhave the freedom to distribute copies of free software (and charge for\r\nthis service if you wish), that you receive source code or can get it\r\nif you want it, that you can change the software or use pieces of it\r\nin new free programs; and that you know you can do these things.\r\n\r\n  To protect your rights, we need to make restrictions that forbid\r\nanyone to deny you these rights or to ask you to surrender the rights.\r\nThese restrictions translate to certain responsibilities for you if you\r\ndistribute copies of the software, or if you modify it.\r\n\r\n  For example, if you distribute copies of such a program, whether\r\ngratis or for a fee, you must give the recipients all the rights that\r\nyou have.  You must make sure that they, too, receive or can get the\r\nsource code.  And you must show them these terms so they know their\r\nrights.\r\n\r\n  We protect your rights with two steps: (1) copyright the software, and\r\n(2) offer you this license which gives you legal permission to copy,\r\ndistribute and/or modify the software.\r\n\r\n  Also, for each author's protection and ours, we want to make certain\r\nthat everyone understands that there is no warranty for this free\r\nsoftware.  If the software is modified by someone else and passed on, we\r\nwant its recipients to know that what they have is not the original, so\r\nthat any problems introduced by others will not reflect on the original\r\nauthors' reputations.\r\n\r\n  Finally, any free program is threatened constantly by software\r\npatents.  We wish to avoid the danger that redistributors of a free\r\nprogram will individually obtain patent licenses, in effect making the\r\nprogram proprietary.  To prevent this, we have made it clear that any\r\npatent must be licensed for everyone's free use or not licensed at all.\r\n\r\n  The precise terms and conditions for copying, distribution and\r\nmodification follow.\r\n\r\nGNU GENERAL PUBLIC LICENSE\r\nTERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r\n\r\n  0. This License applies to any program or other work which contains\r\na notice placed by the copyright holder saying it may be distributed\r\nunder the terms of this General Public License.  The \"Program\", below,\r\nrefers to any such program or work, and a \"work based on the Program\"\r\nmeans either the Program or any derivative work under copyright law:\r\nthat is to say, a work containing the Program or a portion of it,\r\neither verbatim or with modifications and/or translated into another\r\nlanguage.  (Hereinafter, translation is included without limitation in\r\nthe term \"modification\".)  Each licensee is addressed as \"you\".\r\n\r\nActivities other than copying, distribution and modification are not\r\ncovered by this License; they are outside its scope.  The act of\r\nrunning the Program is not restricted, and the output from the Program\r\nis covered only if its contents constitute a work based on the\r\nProgram (independent of having been made by running the Program).\r\nWhether that is true depends on what the Program does.\r\n\r\n  1. You may copy and distribute verbatim copies of the Program's\r\nsource code as you receive it, in any medium, provided that you\r\nconspicuously and appropriately publish on each copy an appropriate\r\ncopyright notice and disclaimer of warranty; keep intact all the\r\nnotices that refer to this License and to the absence of any warranty;\r\nand give any other recipients of the Program a copy of this License\r\nalong with the Program.\r\n\r\nYou may charge a fee for the physical act of transferring a copy, and\r\nyou may at your option offer warranty protection in exchange for a fee.\r\n\r\n  2. You may modify your copy or copies of the Program or any portion\r\nof it, thus forming a work based on the Program, and copy and\r\ndistribute such modifications or work under the terms of Section 1\r\nabove, provided that you also meet all of these conditions:\r\n\r\n    a) You must cause the modified files to carry prominent notices\r\n    stating that you changed the files and the date of any change.\r\n\r\n    b) You must cause any work that you distribute or publish, that in\r\n    whole or in part contains or is derived from the Program or any\r\n    part thereof, to be licensed as a whole at no charge to all third\r\n    parties under the terms of this License.\r\n\r\n    c) If the modified program normally reads commands interactively\r\n    when run, you must cause it, when started running for such\r\n    interactive use in the most ordinary way, to print or display an\r\n    announcement including an appropriate copyright notice and a\r\n    notice that there is no warranty (or else, saying that you provide\r\n    a warranty) and that users may redistribute the program under\r\n    these conditions, and telling the user how to view a copy of this\r\n    License.  (Exception: if the Program itself is interactive but\r\n    does not normally print such an announcement, your work based on\r\n    the Program is not required to print an announcement.)\r\n\r\nThese requirements apply to the modified work as a whole.  If\r\nidentifiable sections of that work are not derived from the Program,\r\nand can be reasonably considered independent and separate works in\r\nthemselves, then this License, and its terms, do not apply to those\r\nsections when you distribute them as separate works.  But when you\r\ndistribute the same sections as part of a whole which is a work based\r\non the Program, the distribution of the whole must be on the terms of\r\nthis License, whose permissions for other licensees extend to the\r\nentire whole, and thus to each and every part regardless of who wrote it.\r\n\r\nThus, it is not the intent of this section to claim rights or contest\r\nyour rights to work written entirely by you; rather, the intent is to\r\nexercise the right to control the distribution of derivative or\r\ncollective works based on the Program.\r\n\r\nIn addition, mere aggregation of another work not based on the Program\r\nwith the Program (or with a work based on the Program) on a volume of\r\na storage or distribution medium does not bring the other work under\r\nthe scope of this License.\r\n\r\n  3. You may copy and distribute the Program (or a work based on it,\r\nunder Section 2) in object code or executable form under the terms of\r\nSections 1 and 2 above provided that you also do one of the following:\r\n\r\n    a) Accompany it with the complete corresponding machine-readable\r\n    source code, which must be distributed under the terms of Sections\r\n    1 and 2 above on a medium customarily used for software interchange; or,\r\n\r\n    b) Accompany it with a written offer, valid for at least three\r\n    years, to give any third party, for a charge no more than your\r\n    cost of physically performing source distribution, a complete\r\n    machine-readable copy of the corresponding source code, to be\r\n    distributed under the terms of Sections 1 and 2 above on a medium\r\n    customarily used for software interchange; or,\r\n\r\n    c) Accompany it with the information you received as to the offer\r\n    to distribute corresponding source code.  (This alternative is\r\n    allowed only for noncommercial distribution and only if you\r\n    received the program in object code or executable form with such\r\n    an offer, in accord with Subsection b above.)\r\n\r\nThe source code for a work means the preferred form of the work for\r\nmaking modifications to it.  For an executable work, complete source\r\ncode means all the source code for all modules it contains, plus any\r\nassociated interface definition files, plus the scripts used to\r\ncontrol compilation and installation of the executable.  However, as a\r\nspecial exception, the source code distributed need not include\r\nanything that is normally distributed (in either source or binary\r\nform) with the major components (compiler, kernel, and so on) of the\r\noperating system on which the executable runs, unless that component\r\nitself accompanies the executable.\r\n\r\nIf distribution of executable or object code is made by offering\r\naccess to copy from a designated place, then offering equivalent\r\naccess to copy the source code from the same place counts as\r\ndistribution of the source code, even though third parties are not\r\ncompelled to copy the source along with the object code.\r\n\r\n  4. You may not copy, modify, sublicense, or distribute the Program\r\nexcept as expressly provided under this License.  Any attempt\r\notherwise to copy, modify, sublicense or distribute the Program is\r\nvoid, and will automatically terminate your rights under this License.\r\nHowever, parties who have received copies, or rights, from you under\r\nthis License will not have their licenses terminated so long as such\r\nparties remain in full compliance.\r\n\r\n  5. You are not required to accept this License, since you have not\r\nsigned it.  However, nothing else grants you permission to modify or\r\ndistribute the Program or its derivative works.  These actions are\r\nprohibited by law if you do not accept this License.  Therefore, by\r\nmodifying or distributing the Program (or any work based on the\r\nProgram), you indicate your acceptance of this License to do so, and\r\nall its terms and conditions for copying, distributing or modifying\r\nthe Program or works based on it.\r\n\r\n  6. Each time you redistribute the Program (or any work based on the\r\nProgram), the recipient automatically receives a license from the\r\noriginal licensor to copy, distribute or modify the Program subject to\r\nthese terms and conditions.  You may not impose any further\r\nrestrictions on the recipients' exercise of the rights granted herein.\r\nYou are not responsible for enforcing compliance by third parties to\r\nthis License.\r\n\r\n  7. If, as a consequence of a court judgment or allegation of patent\r\ninfringement or for any other reason (not limited to patent issues),\r\nconditions are imposed on you (whether by court order, agreement or\r\notherwise) that contradict the conditions of this License, they do not\r\nexcuse you from the conditions of this License.  If you cannot\r\ndistribute so as to satisfy simultaneously your obligations under this\r\nLicense and any other pertinent obligations, then as a consequence you\r\nmay not distribute the Program at all.  For example, if a patent\r\nlicense would not permit royalty-free redistribution of the Program by\r\nall those who receive copies directly or indirectly through you, then\r\nthe only way you could satisfy both it and this License would be to\r\nrefrain entirely from distribution of the Program.\r\n\r\nIf any portion of this section is held invalid or unenforceable under\r\nany particular circumstance, the balance of the section is intended to\r\napply and the section as a whole is intended to apply in other\r\ncircumstances.\r\n\r\nIt is not the purpose of this section to induce you to infringe any\r\npatents or other property right claims or to contest validity of any\r\nsuch claims; this section has the sole purpose of protecting the\r\nintegrity of the free software distribution system, which is\r\nimplemented by public license practices.  Many people have made\r\ngenerous contributions to the wide range of software distributed\r\nthrough that system in reliance on consistent application of that\r\nsystem; it is up to the author/donor to decide if he or she is willing\r\nto distribute software through any other system and a licensee cannot\r\nimpose that choice.\r\n\r\nThis section is intended to make thoroughly clear what is believed to\r\nbe a consequence of the rest of this License.\r\n\r\n  8. If the distribution and/or use of the Program is restricted in\r\ncertain countries either by patents or by copyrighted interfaces, the\r\noriginal copyright holder who places the Program under this License\r\nmay add an explicit geographical distribution limitation excluding\r\nthose countries, so that distribution is permitted only in or among\r\ncountries not thus excluded.  In such case, this License incorporates\r\nthe limitation as if written in the body of this License.\r\n\r\n  9. The Free Software Foundation may publish revised and/or new versions\r\nof the General Public License from time to time.  Such new versions will\r\nbe similar in spirit to the present version, but may differ in detail to\r\naddress new problems or concerns.\r\n\r\nEach version is given a distinguishing version number.  If the Program\r\nspecifies a version number of this License which applies to it and \"any\r\nlater version\", you have the option of following the terms and conditions\r\neither of that version or of any later version published by the Free\r\nSoftware Foundation.  If the Program does not specify a version number of\r\nthis License, you may choose any version ever published by the Free Software\r\nFoundation.\r\n\r\n  10. If you wish to incorporate parts of the Program into other free\r\nprograms whose distribution conditions are different, write to the author\r\nto ask for permission.  For software which is copyrighted by the Free\r\nSoftware Foundation, write to the Free Software Foundation; we sometimes\r\nmake exceptions for this.  Our decision will be guided by the two goals\r\nof preserving the free status of all derivatives of our free software and\r\nof promoting the sharing and reuse of software generally.\r\n\r\nNO WARRANTY\r\n\r\n  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\r\nFOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\r\nOTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\r\nPROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\r\nOR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r\nMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\r\nTO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\r\nPROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\r\nREPAIR OR CORRECTION.\r\n\r\n  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\r\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\r\nREDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\r\nINCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\r\nOUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\r\nTO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\r\nYOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\r\nPROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\r\nPOSSIBILITY OF SUCH DAMAGES.\r\n\r\nEND OF TERMS AND CONDITIONS\r\n\r\n\r\nAppendix B: The LGPL License\r\n----------------------------\r\n\r\nGNU LESSER GENERAL PUBLIC LICENSE\r\nVersion 2.1, February 1999\r\n\r\n Copyright (C) 1991, 1999 Free Software Foundation, Inc.\r\n     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r\n Everyone is permitted to copy and distribute verbatim copies\r\n of this license document, but changing it is not allowed.\r\n\r\n[This is the first released version of the Lesser GPL.  It also counts\r\n as the successor of the GNU Library Public License, version 2, hence\r\n the version number 2.1.]\r\n\r\nPreamble\r\n\r\n  The licenses for most software are designed to take away your\r\nfreedom to share and change it.  By contrast, the GNU General Public\r\nLicenses are intended to guarantee your freedom to share and change\r\nfree software-to make sure the software is free for all its users.\r\n\r\n  This license, the Lesser General Public License, applies to some\r\nspecially designated software packages-typically libraries-of the\r\nFree Software Foundation and other authors who decide to use it.  You\r\ncan use it too, but we suggest you first think carefully about whether\r\nthis license or the ordinary General Public License is the better\r\nstrategy to use in any particular case, based on the explanations below.\r\n\r\n  When we speak of free software, we are referring to freedom of use,\r\nnot price.  Our General Public Licenses are designed to make sure that\r\nyou have the freedom to distribute copies of free software (and charge\r\nfor this service if you wish); that you receive source code or can get\r\nit if you want it; that you can change the software and use pieces of\r\nit in new free programs; and that you are informed that you can do\r\nthese things.\r\n\r\n  To protect your rights, we need to make restrictions that forbid\r\ndistributors to deny you these rights or to ask you to surrender these\r\nrights.  These restrictions translate to certain responsibilities for\r\nyou if you distribute copies of the library or if you modify it.\r\n\r\n  For example, if you distribute copies of the library, whether gratis\r\nor for a fee, you must give the recipients all the rights that we gave\r\nyou.  You must make sure that they, too, receive or can get the source\r\ncode.  If you link other code with the library, you must provide\r\ncomplete object files to the recipients, so that they can relink them\r\nwith the library after making changes to the library and recompiling\r\nit.  And you must show them these terms so they know their rights.\r\n\r\n  We protect your rights with a two-step method: (1) we copyright the\r\nlibrary, and (2) we offer you this license, which gives you legal\r\npermission to copy, distribute and/or modify the library.\r\n\r\n  To protect each distributor, we want to make it very clear that\r\nthere is no warranty for the free library.  Also, if the library is\r\nmodified by someone else and passed on, the recipients should know\r\nthat what they have is not the original version, so that the original\r\nauthor's reputation will not be affected by problems that might be\r\nintroduced by others.\r\n\r\n  Finally, software patents pose a constant threat to the existence of\r\nany free program.  We wish to make sure that a company cannot\r\neffectively restrict the users of a free program by obtaining a\r\nrestrictive license from a patent holder.  Therefore, we insist that\r\nany patent license obtained for a version of the library must be\r\nconsistent with the full freedom of use specified in this license.\r\n\r\n  Most GNU software, including some libraries, is covered by the\r\nordinary GNU General Public License.  This license, the GNU Lesser\r\nGeneral Public License, applies to certain designated libraries, and\r\nis quite different from the ordinary General Public License.  We use\r\nthis license for certain libraries in order to permit linking those\r\nlibraries into non-free programs.\r\n\r\n  When a program is linked with a library, whether statically or using\r\na shared library, the combination of the two is legally speaking a\r\ncombined work, a derivative of the original library.  The ordinary\r\nGeneral Public License therefore permits such linking only if the\r\nentire combination fits its criteria of freedom.  The Lesser General\r\nPublic License permits more lax criteria for linking other code with\r\nthe library.\r\n\r\n  We call this license the \"Lesser\" General Public License because it\r\ndoes Less to protect the user's freedom than the ordinary General\r\nPublic License.  It also provides other free software developers Less\r\nof an advantage over competing non-free programs.  These disadvantages\r\nare the reason we use the ordinary General Public License for many\r\nlibraries.  However, the Lesser license provides advantages in certain\r\nspecial circumstances.\r\n\r\n  For example, on rare occasions, there may be a special need to\r\nencourage the widest possible use of a certain library, so that it becomes\r\na de-facto standard.  To achieve this, non-free programs must be\r\nallowed to use the library.  A more frequent case is that a free\r\nlibrary does the same job as widely used non-free libraries.  In this\r\ncase, there is little to gain by limiting the free library to free\r\nsoftware only, so we use the Lesser General Public License.\r\n\r\n  In other cases, permission to use a particular library in non-free\r\nprograms enables a greater number of people to use a large body of\r\nfree software.  For example, permission to use the GNU C Library in\r\nnon-free programs enables many more people to use the whole GNU\r\noperating system, as well as its variant, the GNU/Linux operating\r\nsystem.\r\n\r\n  Although the Lesser General Public License is Less protective of the\r\nusers' freedom, it does ensure that the user of a program that is\r\nlinked with the Library has the freedom and the wherewithal to run\r\nthat program using a modified version of the Library.\r\n\r\n  The precise terms and conditions for copying, distribution and\r\nmodification follow.  Pay close attention to the difference between a\r\n\"work based on the library\" and a \"work that uses the library\".  The\r\nformer contains code derived from the library, whereas the latter must\r\nbe combined with the library in order to run.\r\n\r\nGNU LESSER GENERAL PUBLIC LICENSE\r\nTERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r\n\r\n  0. This License Agreement applies to any software library or other\r\nprogram which contains a notice placed by the copyright holder or\r\nother authorized party saying it may be distributed under the terms of\r\nthis Lesser General Public License (also called \"this License\").\r\nEach licensee is addressed as \"you\".\r\n\r\n  A \"library\" means a collection of software functions and/or data\r\nprepared so as to be conveniently linked with application programs\r\n(which use some of those functions and data) to form executables.\r\n\r\n  The \"Library\", below, refers to any such software library or work\r\nwhich has been distributed under these terms.  A \"work based on the\r\nLibrary\" means either the Library or any derivative work under\r\ncopyright law: that is to say, a work containing the Library or a\r\nportion of it, either verbatim or with modifications and/or translated\r\nstraightforwardly into another language.  (Hereinafter, translation is\r\nincluded without limitation in the term \"modification\".)\r\n\r\n  \"Source code\" for a work means the preferred form of the work for\r\nmaking modifications to it.  For a library, complete source code means\r\nall the source code for all modules it contains, plus any associated\r\ninterface definition files, plus the scripts used to control compilation\r\nand installation of the library.\r\n\r\n  Activities other than copying, distribution and modification are not\r\ncovered by this License; they are outside its scope.  The act of\r\nrunning a program using the Library is not restricted, and output from\r\nsuch a program is covered only if its contents constitute a work based\r\non the Library (independent of the use of the Library in a tool for\r\nwriting it).  Whether that is true depends on what the Library does\r\nand what the program that uses the Library does.\r\n\r\n  1. You may copy and distribute verbatim copies of the Library's\r\ncomplete source code as you receive it, in any medium, provided that\r\nyou conspicuously and appropriately publish on each copy an\r\nappropriate copyright notice and disclaimer of warranty; keep intact\r\nall the notices that refer to this License and to the absence of any\r\nwarranty; and distribute a copy of this License along with the\r\nLibrary.\r\n\r\n  You may charge a fee for the physical act of transferring a copy,\r\nand you may at your option offer warranty protection in exchange for a\r\nfee.\r\n\r\n  2. You may modify your copy or copies of the Library or any portion\r\nof it, thus forming a work based on the Library, and copy and\r\ndistribute such modifications or work under the terms of Section 1\r\nabove, provided that you also meet all of these conditions:\r\n\r\n    a) The modified work must itself be a software library.\r\n\r\n    b) You must cause the files modified to carry prominent notices\r\n    stating that you changed the files and the date of any change.\r\n\r\n    c) You must cause the whole of the work to be licensed at no\r\n    charge to all third parties under the terms of this License.\r\n\r\n    d) If a facility in the modified Library refers to a function or a\r\n    table of data to be supplied by an application program that uses\r\n    the facility, other than as an argument passed when the facility\r\n    is invoked, then you must make a good faith effort to ensure that,\r\n    in the event an application does not supply such function or\r\n    table, the facility still operates, and performs whatever part of\r\n    its purpose remains meaningful.\r\n\r\n    (For example, a function in a library to compute square roots has\r\n    a purpose that is entirely well-defined independent of the\r\n    application.  Therefore, Subsection 2d requires that any\r\n    application-supplied function or table used by this function must\r\n    be optional: if the application does not supply it, the square\r\n    root function must still compute square roots.)\r\n\r\nThese requirements apply to the modified work as a whole.  If\r\nidentifiable sections of that work are not derived from the Library,\r\nand can be reasonably considered independent and separate works in\r\nthemselves, then this License, and its terms, do not apply to those\r\nsections when you distribute them as separate works.  But when you\r\ndistribute the same sections as part of a whole which is a work based\r\non the Library, the distribution of the whole must be on the terms of\r\nthis License, whose permissions for other licensees extend to the\r\nentire whole, and thus to each and every part regardless of who wrote\r\nit.\r\n\r\nThus, it is not the intent of this section to claim rights or contest\r\nyour rights to work written entirely by you; rather, the intent is to\r\nexercise the right to control the distribution of derivative or\r\ncollective works based on the Library.\r\n\r\nIn addition, mere aggregation of another work not based on the Library\r\nwith the Library (or with a work based on the Library) on a volume of\r\na storage or distribution medium does not bring the other work under\r\nthe scope of this License.\r\n\r\n  3. You may opt to apply the terms of the ordinary GNU General Public\r\nLicense instead of this License to a given copy of the Library.  To do\r\nthis, you must alter all the notices that refer to this License, so\r\nthat they refer to the ordinary GNU General Public License, version 2,\r\ninstead of to this License.  (If a newer version than version 2 of the\r\nordinary GNU General Public License has appeared, then you can specify\r\nthat version instead if you wish.)  Do not make any other change in\r\nthese notices.\r\n\r\n  Once this change is made in a given copy, it is irreversible for\r\nthat copy, so the ordinary GNU General Public License applies to all\r\nsubsequent copies and derivative works made from that copy.\r\n\r\n  This option is useful when you wish to copy part of the code of\r\nthe Library into a program that is not a library.\r\n\r\n  4. You may copy and distribute the Library (or a portion or\r\nderivative of it, under Section 2) in object code or executable form\r\nunder the terms of Sections 1 and 2 above provided that you accompany\r\nit with the complete corresponding machine-readable source code, which\r\nmust be distributed under the terms of Sections 1 and 2 above on a\r\nmedium customarily used for software interchange.\r\n\r\n  If distribution of object code is made by offering access to copy\r\nfrom a designated place, then offering equivalent access to copy the\r\nsource code from the same place satisfies the requirement to\r\ndistribute the source code, even though third parties are not\r\ncompelled to copy the source along with the object code.\r\n\r\n  5. A program that contains no derivative of any portion of the\r\nLibrary, but is designed to work with the Library by being compiled or\r\nlinked with it, is called a \"work that uses the Library\".  Such a\r\nwork, in isolation, is not a derivative work of the Library, and\r\ntherefore falls outside the scope of this License.\r\n\r\n  However, linking a \"work that uses the Library\" with the Library\r\ncreates an executable that is a derivative of the Library (because it\r\ncontains portions of the Library), rather than a \"work that uses the\r\nlibrary\".  The executable is therefore covered by this License.\r\nSection 6 states terms for distribution of such executables.\r\n\r\n  When a \"work that uses the Library\" uses material from a header file\r\nthat is part of the Library, the object code for the work may be a\r\nderivative work of the Library even though the source code is not.\r\nWhether this is true is especially significant if the work can be\r\nlinked without the Library, or if the work is itself a library.  The\r\nthreshold for this to be true is not precisely defined by law.\r\n\r\n  If such an object file uses only numerical parameters, data\r\nstructure layouts and accessors, and small macros and small inline\r\nfunctions (ten lines or less in length), then the use of the object\r\nfile is unrestricted, regardless of whether it is legally a derivative\r\nwork.  (Executables containing this object code plus portions of the\r\nLibrary will still fall under Section 6.)\r\n\r\n  Otherwise, if the work is a derivative of the Library, you may\r\ndistribute the object code for the work under the terms of Section 6.\r\nAny executables containing that work also fall under Section 6,\r\nwhether or not they are linked directly with the Library itself.\r\n\r\n  6. As an exception to the Sections above, you may also combine or\r\nlink a \"work that uses the Library\" with the Library to produce a\r\nwork containing portions of the Library, and distribute that work\r\nunder terms of your choice, provided that the terms permit\r\nmodification of the work for the customer's own use and reverse\r\nengineering for debugging such modifications.\r\n\r\n  You must give prominent notice with each copy of the work that the\r\nLibrary is used in it and that the Library and its use are covered by\r\nthis License.  You must supply a copy of this License.  If the work\r\nduring execution displays copyright notices, you must include the\r\ncopyright notice for the Library among them, as well as a reference\r\ndirecting the user to the copy of this License.  Also, you must do one\r\nof these things:\r\n\r\n    a) Accompany the work with the complete corresponding\r\n    machine-readable source code for the Library including whatever\r\n    changes were used in the work (which must be distributed under\r\n    Sections 1 and 2 above); and, if the work is an executable linked\r\n    with the Library, with the complete machine-readable \"work that\r\n    uses the Library\", as object code and/or source code, so that the\r\n    user can modify the Library and then relink to produce a modified\r\n    executable containing the modified Library.  (It is understood\r\n    that the user who changes the contents of definitions files in the\r\n    Library will not necessarily be able to recompile the application\r\n    to use the modified definitions.)\r\n\r\n    b) Use a suitable shared library mechanism for linking with the\r\n    Library.  A suitable mechanism is one that (1) uses at run time a\r\n    copy of the library already present on the user's computer system,\r\n    rather than copying library functions into the executable, and (2)\r\n    will operate properly with a modified version of the library, if\r\n    the user installs one, as long as the modified version is\r\n    interface-compatible with the version that the work was made with.\r\n\r\n    c) Accompany the work with a written offer, valid for at\r\n    least three years, to give the same user the materials\r\n    specified in Subsection 6a, above, for a charge no more\r\n    than the cost of performing this distribution.\r\n\r\n    d) If distribution of the work is made by offering access to copy\r\n    from a designated place, offer equivalent access to copy the above\r\n    specified materials from the same place.\r\n\r\n    e) Verify that the user has already received a copy of these\r\n    materials or that you have already sent this user a copy.\r\n\r\n  For an executable, the required form of the \"work that uses the\r\nLibrary\" must include any data and utility programs needed for\r\nreproducing the executable from it.  However, as a special exception,\r\nthe materials to be distributed need not include anything that is\r\nnormally distributed (in either source or binary form) with the major\r\ncomponents (compiler, kernel, and so on) of the operating system on\r\nwhich the executable runs, unless that component itself accompanies\r\nthe executable.\r\n\r\n  It may happen that this requirement contradicts the license\r\nrestrictions of other proprietary libraries that do not normally\r\naccompany the operating system.  Such a contradiction means you cannot\r\nuse both them and the Library together in an executable that you\r\ndistribute.\r\n\r\n  7. You may place library facilities that are a work based on the\r\nLibrary side-by-side in a single library together with other library\r\nfacilities not covered by this License, and distribute such a combined\r\nlibrary, provided that the separate distribution of the work based on\r\nthe Library and of the other library facilities is otherwise\r\npermitted, and provided that you do these two things:\r\n\r\n    a) Accompany the combined library with a copy of the same work\r\n    based on the Library, uncombined with any other library\r\n    facilities.  This must be distributed under the terms of the\r\n    Sections above.\r\n\r\n    b) Give prominent notice with the combined library of the fact\r\n    that part of it is a work based on the Library, and explaining\r\n    where to find the accompanying uncombined form of the same work.\r\n\r\n  8. You may not copy, modify, sublicense, link with, or distribute\r\nthe Library except as expressly provided under this License.  Any\r\nattempt otherwise to copy, modify, sublicense, link with, or\r\ndistribute the Library is void, and will automatically terminate your\r\nrights under this License.  However, parties who have received copies,\r\nor rights, from you under this License will not have their licenses\r\nterminated so long as such parties remain in full compliance.\r\n\r\n  9. You are not required to accept this License, since you have not\r\nsigned it.  However, nothing else grants you permission to modify or\r\ndistribute the Library or its derivative works.  These actions are\r\nprohibited by law if you do not accept this License.  Therefore, by\r\nmodifying or distributing the Library (or any work based on the\r\nLibrary), you indicate your acceptance of this License to do so, and\r\nall its terms and conditions for copying, distributing or modifying\r\nthe Library or works based on it.\r\n\r\n  10. Each time you redistribute the Library (or any work based on the\r\nLibrary), the recipient automatically receives a license from the\r\noriginal licensor to copy, distribute, link with or modify the Library\r\nsubject to these terms and conditions.  You may not impose any further\r\nrestrictions on the recipients' exercise of the rights granted herein.\r\nYou are not responsible for enforcing compliance by third parties with\r\nthis License.\r\n\r\n  11. If, as a consequence of a court judgment or allegation of patent\r\ninfringement or for any other reason (not limited to patent issues),\r\nconditions are imposed on you (whether by court order, agreement or\r\notherwise) that contradict the conditions of this License, they do not\r\nexcuse you from the conditions of this License.  If you cannot\r\ndistribute so as to satisfy simultaneously your obligations under this\r\nLicense and any other pertinent obligations, then as a consequence you\r\nmay not distribute the Library at all.  For example, if a patent\r\nlicense would not permit royalty-free redistribution of the Library by\r\nall those who receive copies directly or indirectly through you, then\r\nthe only way you could satisfy both it and this License would be to\r\nrefrain entirely from distribution of the Library.\r\n\r\nIf any portion of this section is held invalid or unenforceable under any\r\nparticular circumstance, the balance of the section is intended to apply,\r\nand the section as a whole is intended to apply in other circumstances.\r\n\r\nIt is not the purpose of this section to induce you to infringe any\r\npatents or other property right claims or to contest validity of any\r\nsuch claims; this section has the sole purpose of protecting the\r\nintegrity of the free software distribution system which is\r\nimplemented by public license practices.  Many people have made\r\ngenerous contributions to the wide range of software distributed\r\nthrough that system in reliance on consistent application of that\r\nsystem; it is up to the author/donor to decide if he or she is willing\r\nto distribute software through any other system and a licensee cannot\r\nimpose that choice.\r\n\r\nThis section is intended to make thoroughly clear what is believed to\r\nbe a consequence of the rest of this License.\r\n\r\n  12. If the distribution and/or use of the Library is restricted in\r\ncertain countries either by patents or by copyrighted interfaces, the\r\noriginal copyright holder who places the Library under this License may add\r\nan explicit geographical distribution limitation excluding those countries,\r\nso that distribution is permitted only in or among countries not thus\r\nexcluded.  In such case, this License incorporates the limitation as if\r\nwritten in the body of this License.\r\n\r\n  13. The Free Software Foundation may publish revised and/or new\r\nversions of the Lesser General Public License from time to time.\r\nSuch new versions will be similar in spirit to the present version,\r\nbut may differ in detail to address new problems or concerns.\r\n\r\nEach version is given a distinguishing version number.  If the Library\r\nspecifies a version number of this License which applies to it and\r\n\"any later version\", you have the option of following the terms and\r\nconditions either of that version or of any later version published by\r\nthe Free Software Foundation.  If the Library does not specify a\r\nlicense version number, you may choose any version ever published by\r\nthe Free Software Foundation.\r\n\r\n  14. If you wish to incorporate parts of the Library into other free\r\nprograms whose distribution conditions are incompatible with these,\r\nwrite to the author to ask for permission.  For software which is\r\ncopyrighted by the Free Software Foundation, write to the Free\r\nSoftware Foundation; we sometimes make exceptions for this.  Our\r\ndecision will be guided by the two goals of preserving the free status\r\nof all derivatives of our free software and of promoting the sharing\r\nand reuse of software generally.\r\n\r\nNO WARRANTY\r\n\r\n  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\r\nWARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\r\nEXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\r\nOTHER PARTIES PROVIDE THE LIBRARY \"AS IS\" WITHOUT WARRANTY OF ANY\r\nKIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\r\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\r\nLIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\r\nTHE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\r\n\r\n  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\r\nWRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\r\nAND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\r\nFOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\r\nCONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\r\nLIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\r\nRENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\r\nFAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\r\nSUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r\nDAMAGES.\r\n\r\nEND OF TERMS AND CONDITIONS\r\n\r\n\r\nAppendix C: The MPL License\r\n---------------------------\r\n\r\nMOZILLA PUBLIC LICENSE\r\nVersion 1.1\r\n\r\n1. Definitions.\r\n\r\n     1.0.1. \"Commercial Use\" means distribution or otherwise making the\r\n     Covered Code available to a third party.\r\n\r\n     1.1. \"Contributor\" means each entity that creates or contributes to\r\n     the creation of Modifications.\r\n\r\n     1.2. \"Contributor Version\" means the combination of the Original\r\n     Code, prior Modifications used by a Contributor, and the Modifications\r\n     made by that particular Contributor.\r\n\r\n     1.3. \"Covered Code\" means the Original Code or Modifications or the\r\n     combination of the Original Code and Modifications, in each case\r\n     including portions thereof.\r\n\r\n     1.4. \"Electronic Distribution Mechanism\" means a mechanism generally\r\n     accepted in the software development community for the electronic\r\n     transfer of data.\r\n\r\n     1.5. \"Executable\" means Covered Code in any form other than Source\r\n     Code.\r\n\r\n     1.6. \"Initial Developer\" means the individual or entity identified\r\n     as the Initial Developer in the Source Code notice required by Exhibit\r\n     A.\r\n\r\n     1.7. \"Larger Work\" means a work which combines Covered Code or\r\n     portions thereof with code not governed by the terms of this License.\r\n\r\n     1.8. \"License\" means this document.\r\n\r\n     1.8.1. \"Licensable\" means having the right to grant, to the maximum\r\n     extent possible, whether at the time of the initial grant or\r\n     subsequently acquired, any and all of the rights conveyed herein.\r\n\r\n     1.9. \"Modifications\" means any addition to or deletion from the\r\n     substance or structure of either the Original Code or any previous\r\n     Modifications. When Covered Code is released as a series of files, a\r\n     Modification is:\r\n          A. Any addition to or deletion from the contents of a file\r\n          containing Original Code or previous Modifications.\r\n\r\n          B. Any new file that contains any part of the Original Code or\r\n          previous Modifications.\r\n\r\n     1.10. \"Original Code\" means Source Code of computer software code\r\n     which is described in the Source Code notice required by Exhibit A as\r\n     Original Code, and which, at the time of its release under this\r\n     License is not already Covered Code governed by this License.\r\n\r\n     1.10.1. \"Patent Claims\" means any patent claim(s), now owned or\r\n     hereafter acquired, including without limitation,  method, process,\r\n     and apparatus claims, in any patent Licensable by grantor.\r\n\r\n     1.11. \"Source Code\" means the preferred form of the Covered Code for\r\n     making modifications to it, including all modules it contains, plus\r\n     any associated interface definition files, scripts used to control\r\n     compilation and installation of an Executable, or source code\r\n     differential comparisons against either the Original Code or another\r\n     well known, available Covered Code of the Contributor's choice. The\r\n     Source Code can be in a compressed or archival form, provided the\r\n     appropriate decompression or de-archiving software is widely available\r\n     for no charge.\r\n\r\n     1.12. \"You\" (or \"Your\")  means an individual or a legal entity\r\n     exercising rights under, and complying with all of the terms of, this\r\n     License or a future version of this License issued under Section 6.1.\r\n     For legal entities, \"You\" includes any entity which controls, is\r\n     controlled by, or is under common control with You. For purposes of\r\n     this definition, \"control\" means (a) the power, direct or indirect,\r\n     to cause the direction or management of such entity, whether by\r\n     contract or otherwise, or (b) ownership of more than fifty percent\r\n     (50%) of the outstanding shares or beneficial ownership of such\r\n     entity.\r\n\r\n2. Source Code License.\r\n\r\n     2.1. The Initial Developer Grant.\r\n     The Initial Developer hereby grants You a world-wide, royalty-free,\r\n     non-exclusive license, subject to third party intellectual property\r\n     claims:\r\n          (a)  under intellectual property rights (other than patent or\r\n          trademark) Licensable by Initial Developer to use, reproduce,\r\n          modify, display, perform, sublicense and distribute the Original\r\n          Code (or portions thereof) with or without Modifications, and/or\r\n          as part of a Larger Work; and\r\n\r\n          (b) under Patents Claims infringed by the making, using or\r\n          selling of Original Code, to make, have made, use, practice,\r\n          sell, and offer for sale, and/or otherwise dispose of the\r\n          Original Code (or portions thereof).\r\n\r\n          (c) the licenses granted in this Section 2.1(a) and (b) are\r\n          effective on the date Initial Developer first distributes\r\n          Original Code under the terms of this License.\r\n\r\n          (d) Notwithstanding Section 2.1(b) above, no patent license is\r\n          granted: 1) for code that You delete from the Original Code; 2)\r\n          separate from the Original Code;  or 3) for infringements caused\r\n          by: i) the modification of the Original Code or ii) the\r\n          combination of the Original Code with other software or devices.\r\n\r\n     2.2. Contributor Grant.\r\n     Subject to third party intellectual property claims, each Contributor\r\n     hereby grants You a world-wide, royalty-free, non-exclusive license\r\n\r\n          (a)  under intellectual property rights (other than patent or\r\n          trademark) Licensable by Contributor, to use, reproduce, modify,\r\n          display, perform, sublicense and distribute the Modifications\r\n          created by such Contributor (or portions thereof) either on an\r\n          unmodified basis, with other Modifications, as Covered Code\r\n          and/or as part of a Larger Work; and\r\n\r\n          (b) under Patent Claims infringed by the making, using, or\r\n          selling of  Modifications made by that Contributor either alone\r\n          and/or in combination with its Contributor Version (or portions\r\n          of such combination), to make, use, sell, offer for sale, have\r\n          made, and/or otherwise dispose of: 1) Modifications made by that\r\n          Contributor (or portions thereof); and 2) the combination of\r\n          Modifications made by that Contributor with its Contributor\r\n          Version (or portions of such combination).\r\n\r\n          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are\r\n          effective on the date Contributor first makes Commercial Use of\r\n          the Covered Code.\r\n\r\n          (d)    Notwithstanding Section 2.2(b) above, no patent license is\r\n          granted: 1) for any code that Contributor has deleted from the\r\n          Contributor Version; 2)  separate from the Contributor Version;\r\n          3)  for infringements caused by: i) third party modifications of\r\n          Contributor Version or ii)  the combination of Modifications made\r\n          by that Contributor with other software  (except as part of the\r\n          Contributor Version) or other devices; or 4) under Patent Claims\r\n          infringed by Covered Code in the absence of Modifications made by\r\n          that Contributor.\r\n\r\n3. Distribution Obligations.\r\n\r\n     3.1. Application of License.\r\n     The Modifications which You create or to which You contribute are\r\n     governed by the terms of this License, including without limitation\r\n     Section 2.2. The Source Code version of Covered Code may be\r\n     distributed only under the terms of this License or a future version\r\n     of this License released under Section 6.1, and You must include a\r\n     copy of this License with every copy of the Source Code You\r\n     distribute. You may not offer or impose any terms on any Source Code\r\n     version that alters or restricts the applicable version of this\r\n     License or the recipients' rights hereunder. However, You may include\r\n     an additional document offering the additional rights described in\r\n     Section 3.5.\r\n\r\n     3.2. Availability of Source Code.\r\n     Any Modification which You create or to which You contribute must be\r\n     made available in Source Code form under the terms of this License\r\n     either on the same media as an Executable version or via an accepted\r\n     Electronic Distribution Mechanism to anyone to whom you made an\r\n     Executable version available; and if made available via Electronic\r\n     Distribution Mechanism, must remain available for at least twelve (12)\r\n     months after the date it initially became available, or at least six\r\n     (6) months after a subsequent version of that particular Modification\r\n     has been made available to such recipients. You are responsible for\r\n     ensuring that the Source Code version remains available even if the\r\n     Electronic Distribution Mechanism is maintained by a third party.\r\n\r\n     3.3. Description of Modifications.\r\n     You must cause all Covered Code to which You contribute to contain a\r\n     file documenting the changes You made to create that Covered Code and\r\n     the date of any change. You must include a prominent statement that\r\n     the Modification is derived, directly or indirectly, from Original\r\n     Code provided by the Initial Developer and including the name of the\r\n     Initial Developer in (a) the Source Code, and (b) in any notice in an\r\n     Executable version or related documentation in which You describe the\r\n     origin or ownership of the Covered Code.\r\n\r\n     3.4. Intellectual Property Matters\r\n          (a) Third Party Claims.\r\n          If Contributor has knowledge that a license under a third party's\r\n          intellectual property rights is required to exercise the rights\r\n          granted by such Contributor under Sections 2.1 or 2.2,\r\n          Contributor must include a text file with the Source Code\r\n          distribution titled \"LEGAL\" which describes the claim and the\r\n          party making the claim in sufficient detail that a recipient will\r\n          know whom to contact. If Contributor obtains such knowledge after\r\n          the Modification is made available as described in Section 3.2,\r\n          Contributor shall promptly modify the LEGAL file in all copies\r\n          Contributor makes available thereafter and shall take other steps\r\n          (such as notifying appropriate mailing lists or newsgroups)\r\n          reasonably calculated to inform those who received the Covered\r\n          Code that new knowledge has been obtained.\r\n\r\n          (b) Contributor APIs.\r\n          If Contributor's Modifications include an application programming\r\n          interface and Contributor has knowledge of patent licenses which\r\n          are reasonably necessary to implement that API, Contributor must\r\n          also include this information in the LEGAL file.\r\n\r\n               (c)    Representations.\r\n          Contributor represents that, except as disclosed pursuant to\r\n          Section 3.4(a) above, Contributor believes that Contributor's\r\n          Modifications are Contributor's original creation(s) and/or\r\n          Contributor has sufficient rights to grant the rights conveyed by\r\n          this License.\r\n\r\n     3.5. Required Notices.\r\n     You must duplicate the notice in Exhibit A in each file of the Source\r\n     Code.  If it is not possible to put such notice in a particular Source\r\n     Code file due to its structure, then You must include such notice in a\r\n     location (such as a relevant directory) where a user would be likely\r\n     to look for such a notice.  If You created one or more Modification(s)\r\n     You may add your name as a Contributor to the notice described in\r\n     Exhibit A.  You must also duplicate this License in any documentation\r\n     for the Source Code where You describe recipients' rights or ownership\r\n     rights relating to Covered Code.  You may choose to offer, and to\r\n     charge a fee for, warranty, support, indemnity or liability\r\n     obligations to one or more recipients of Covered Code. However, You\r\n     may do so only on Your own behalf, and not on behalf of the Initial\r\n     Developer or any Contributor. You must make it absolutely clear than\r\n     any such warranty, support, indemnity or liability obligation is\r\n     offered by You alone, and You hereby agree to indemnify the Initial\r\n     Developer and every Contributor for any liability incurred by the\r\n     Initial Developer or such Contributor as a result of warranty,\r\n     support, indemnity or liability terms You offer.\r\n\r\n     3.6. Distribution of Executable Versions.\r\n     You may distribute Covered Code in Executable form only if the\r\n     requirements of Section 3.1-3.5 have been met for that Covered Code,\r\n     and if You include a notice stating that the Source Code version of\r\n     the Covered Code is available under the terms of this License,\r\n     including a description of how and where You have fulfilled the\r\n     obligations of Section 3.2. The notice must be conspicuously included\r\n     in any notice in an Executable version, related documentation or\r\n     collateral in which You describe recipients' rights relating to the\r\n     Covered Code. You may distribute the Executable version of Covered\r\n     Code or ownership rights under a license of Your choice, which may\r\n     contain terms different from this License, provided that You are in\r\n     compliance with the terms of this License and that the license for the\r\n     Executable version does not attempt to limit or alter the recipient's\r\n     rights in the Source Code version from the rights set forth in this\r\n     License. If You distribute the Executable version under a different\r\n     license You must make it absolutely clear that any terms which differ\r\n     from this License are offered by You alone, not by the Initial\r\n     Developer or any Contributor. You hereby agree to indemnify the\r\n     Initial Developer and every Contributor for any liability incurred by\r\n     the Initial Developer or such Contributor as a result of any such\r\n     terms You offer.\r\n\r\n     3.7. Larger Works.\r\n     You may create a Larger Work by combining Covered Code with other code\r\n     not governed by the terms of this License and distribute the Larger\r\n     Work as a single product. In such a case, You must make sure the\r\n     requirements of this License are fulfilled for the Covered Code.\r\n\r\n4. Inability to Comply Due to Statute or Regulation.\r\n\r\n     If it is impossible for You to comply with any of the terms of this\r\n     License with respect to some or all of the Covered Code due to\r\n     statute, judicial order, or regulation then You must: (a) comply with\r\n     the terms of this License to the maximum extent possible; and (b)\r\n     describe the limitations and the code they affect. Such description\r\n     must be included in the LEGAL file described in Section 3.4 and must\r\n     be included with all distributions of the Source Code. Except to the\r\n     extent prohibited by statute or regulation, such description must be\r\n     sufficiently detailed for a recipient of ordinary skill to be able to\r\n     understand it.\r\n\r\n5. Application of this License.\r\n\r\n     This License applies to code to which the Initial Developer has\r\n     attached the notice in Exhibit A and to related Covered Code.\r\n\r\n6. Versions of the License.\r\n\r\n     6.1. New Versions.\r\n     Netscape Communications Corporation (\"Netscape\") may publish revised\r\n     and/or new versions of the License from time to time. Each version\r\n     will be given a distinguishing version number.\r\n\r\n     6.2. Effect of New Versions.\r\n     Once Covered Code has been published under a particular version of the\r\n     License, You may always continue to use it under the terms of that\r\n     version. You may also choose to use such Covered Code under the terms\r\n     of any subsequent version of the License published by Netscape. No one\r\n     other than Netscape has the right to modify the terms applicable to\r\n     Covered Code created under this License.\r\n\r\n     6.3. Derivative Works.\r\n     If You create or use a modified version of this License (which you may\r\n     only do in order to apply it to code which is not already Covered Code\r\n     governed by this License), You must (a) rename Your license so that\r\n     the phrases \"Mozilla\", \"MOZILLAPL\", \"MOZPL\", \"Netscape\",\r\n     \"MPL\", \"NPL\" or any confusingly similar phrase do not appear in your\r\n     license (except to note that your license differs from this License)\r\n     and (b) otherwise make it clear that Your version of the license\r\n     contains terms which differ from the Mozilla Public License and\r\n     Netscape Public License. (Filling in the name of the Initial\r\n     Developer, Original Code or Contributor in the notice described in\r\n     Exhibit A shall not of themselves be deemed to be modifications of\r\n     this License.)\r\n\r\n7. DISCLAIMER OF WARRANTY.\r\n\r\n     COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN \"AS IS\" BASIS,\r\n     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,\r\n     WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF\r\n     DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.\r\n     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE\r\n     IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,\r\n     YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE\r\n     COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER\r\n     OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF\r\n     ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.\r\n\r\n8. TERMINATION.\r\n\r\n     8.1.  This License and the rights granted hereunder will terminate\r\n     automatically if You fail to comply with terms herein and fail to cure\r\n     such breach within 30 days of becoming aware of the breach. All\r\n     sublicenses to the Covered Code which are properly granted shall\r\n     survive any termination of this License. Provisions which, by their\r\n     nature, must remain in effect beyond the termination of this License\r\n     shall survive.\r\n\r\n     8.2.  If You initiate litigation by asserting a patent infringement\r\n     claim (excluding declatory judgment actions) against Initial Developer\r\n     or a Contributor (the Initial Developer or Contributor against whom\r\n     You file such action is referred to as \"Participant\")  alleging that:\r\n\r\n     (a)  such Participant's Contributor Version directly or indirectly\r\n     infringes any patent, then any and all rights granted by such\r\n     Participant to You under Sections 2.1 and/or 2.2 of this License\r\n     shall, upon 60 days notice from Participant terminate prospectively,\r\n     unless if within 60 days after receipt of notice You either: (i)\r\n     agree in writing to pay Participant a mutually agreeable reasonable\r\n     royalty for Your past and future use of Modifications made by such\r\n     Participant, or (ii) withdraw Your litigation claim with respect to\r\n     the Contributor Version against such Participant.  If within 60 days\r\n     of notice, a reasonable royalty and payment arrangement are not\r\n     mutually agreed upon in writing by the parties or the litigation claim\r\n     is not withdrawn, the rights granted by Participant to You under\r\n     Sections 2.1 and/or 2.2 automatically terminate at the expiration of\r\n     the 60 day notice period specified above.\r\n\r\n     (b)  any software, hardware, or device, other than such Participant's\r\n     Contributor Version, directly or indirectly infringes any patent, then\r\n     any rights granted to You by such Participant under Sections 2.1(b)\r\n     and 2.2(b) are revoked effective as of the date You first made, used,\r\n     sold, distributed, or had made, Modifications made by that\r\n     Participant.\r\n\r\n     8.3.  If You assert a patent infringement claim against Participant\r\n     alleging that such Participant's Contributor Version directly or\r\n     indirectly infringes any patent where such claim is resolved (such as\r\n     by license or settlement) prior to the initiation of patent\r\n     infringement litigation, then the reasonable value of the licenses\r\n     granted by such Participant under Sections 2.1 or 2.2 shall be taken\r\n     into account in determining the amount or value of any payment or\r\n     license.\r\n\r\n     8.4.  In the event of termination under Sections 8.1 or 8.2 above,\r\n     all end user license agreements (excluding distributors and resellers)\r\n     which have been validly granted by You or any distributor hereunder\r\n     prior to termination shall survive termination.\r\n\r\n9. LIMITATION OF LIABILITY.\r\n\r\n     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT\r\n     (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL\r\n     DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,\r\n     OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR\r\n     ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY\r\n     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,\r\n     WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER\r\n     COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN\r\n     INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF\r\n     LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY\r\n     RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW\r\n     PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE\r\n     EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO\r\n     THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.\r\n\r\n10. U.S. GOVERNMENT END USERS.\r\n\r\n     The Covered Code is a \"commercial item,\" as that term is defined in\r\n     48 C.F.R. 2.101 (Oct. 1995), consisting of \"commercial computer\r\n     software\" and \"commercial computer software documentation,\" as such\r\n     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48\r\n     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),\r\n     all U.S. Government End Users acquire Covered Code with only those\r\n     rights set forth herein.\r\n\r\n11. MISCELLANEOUS.\r\n\r\n     This License represents the complete agreement concerning subject\r\n     matter hereof. If any provision of this License is held to be\r\n     unenforceable, such provision shall be reformed only to the extent\r\n     necessary to make it enforceable. This License shall be governed by\r\n     California law provisions (except to the extent applicable law, if\r\n     any, provides otherwise), excluding its conflict-of-law provisions.\r\n     With respect to disputes in which at least one party is a citizen of,\r\n     or an entity chartered or registered to do business in the United\r\n     States of America, any litigation relating to this License shall be\r\n     subject to the jurisdiction of the Federal Courts of the Northern\r\n     District of California, with venue lying in Santa Clara County,\r\n     California, with the losing party responsible for costs, including\r\n     without limitation, court costs and reasonable attorneys' fees and\r\n     expenses. The application of the United Nations Convention on\r\n     Contracts for the International Sale of Goods is expressly excluded.\r\n     Any law or regulation which provides that the language of a contract\r\n     shall be construed against the drafter shall not apply to this\r\n     License.\r\n\r\n12. RESPONSIBILITY FOR CLAIMS.\r\n\r\n     As between Initial Developer and the Contributors, each party is\r\n     responsible for claims and damages arising, directly or indirectly,\r\n     out of its utilization of rights under this License and You agree to\r\n     work with Initial Developer and Contributors to distribute such\r\n     responsibility on an equitable basis. Nothing herein is intended or\r\n     shall be deemed to constitute any admission of liability.\r\n\r\n13. MULTIPLE-LICENSED CODE.\r\n\r\n     Initial Developer may designate portions of the Covered Code as\r\n     \"Multiple-Licensed\".  \"Multiple-Licensed\" means that the Initial\r\n     Developer permits you to utilize portions of the Covered Code under\r\n     Your choice of the NPL or the alternative licenses, if any, specified\r\n     by the Initial Developer in the file described in Exhibit A.\r\n\r\nEXHIBIT A -Mozilla Public License.\r\n\r\n     ``The contents of this file are subject to the Mozilla Public License\r\n     Version 1.1 (the \"License\"); you may not use this file except in\r\n     compliance with the License. You may obtain a copy of the License at\r\n     http://www.mozilla.org/MPL/\r\n\r\n     Software distributed under the License is distributed on an \"AS IS\"\r\n     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the\r\n     License for the specific language governing rights and limitations\r\n     under the License.\r\n\r\n     The Original Code is ______________________________________.\r\n\r\n     The Initial Developer of the Original Code is ________________________.\r\n     Portions created by ______________________ are Copyright (C) ______\r\n     _______________________. All Rights Reserved.\r\n\r\n     Contributor(s): ______________________________________.\r\n\r\n     Alternatively, the contents of this file may be used under the terms\r\n     of the _____ license (the  \"[___] License\"), in which case the\r\n     provisions of [______] License are applicable instead of those\r\n     above.  If you wish to allow use of your version of this file only\r\n     under the terms of the [____] License and not to allow others to use\r\n     your version of this file under the MPL, indicate your decision by\r\n     deleting  the provisions above and replace  them with the notice and\r\n     other provisions required by the [___] License.  If you do not delete\r\n     the provisions above, a recipient may use your version of this file\r\n     under either the MPL or the [___] License.\"\r\n\r\n     [NOTE: The text of this Exhibit A may differ slightly from the text of\r\n     the notices in the Source Code files of the Original Code. You should\r\n     use the text of this Exhibit A rather than the text found in the\r\n     Original Code Source Code for Your Modifications.]\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/README.md",
    "content": "CKEditor 4\n==========\n\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.  \nhttp://ckeditor.com - See LICENSE.md for license information.\n\nCKEditor is a text editor to be used inside web pages. It's not a replacement\nfor desktop text editors like Word or OpenOffice, but a component to be used as\npart of web applications and websites.\n\n## Documentation\n\nThe full editor documentation is available online at the following address:\nhttp://docs.ckeditor.com\n\n## Installation\n\nInstalling CKEditor is an easy task. Just follow these simple steps:\n\n 1. **Download** the latest version from the CKEditor website:\n    http://ckeditor.com. You should have already completed this step, but be\n    sure you have the very latest version.\n 2. **Extract** (decompress) the downloaded file into the root of your website.\n\n**Note:** CKEditor is by default installed in the `ckeditor` folder. You can\nplace the files in whichever you want though.\n\n## Checking Your Installation\n\nThe editor comes with a few sample pages that can be used to verify that\ninstallation proceeded properly. Take a look at the `samples` directory.\n\nTo test your installation, just call the following page at your website:\n\n\thttp://<your site>/<CKEditor installation path>/samples/index.html\n\nFor example:\n\n\thttp://www.example.com/ckeditor/samples/index.html\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/adapters/index.php",
    "content": ""
  },
  {
    "path": "admin/js/plugins/ckeditor/adapters/jquery.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\n(function(a){CKEDITOR.config.jqueryOverrideVal=\"undefined\"==typeof CKEDITOR.config.jqueryOverrideVal?!0:CKEDITOR.config.jqueryOverrideVal;\"undefined\"!=typeof a&&(a.extend(a.fn,{ckeditorGet:function(){var a=this.eq(0).data(\"ckeditorInstance\");if(!a)throw\"CKEditor is not initialized yet, use ckeditor() with a callback.\";return a},ckeditor:function(g,d){if(!CKEDITOR.env.isCompatible)throw Error(\"The environment is incompatible.\");if(!a.isFunction(g))var k=d,d=g,g=k;var i=[],d=d||{};this.each(function(){var b=\na(this),c=b.data(\"ckeditorInstance\"),f=b.data(\"_ckeditorInstanceLock\"),h=this,j=new a.Deferred;i.push(j.promise());if(c&&!f)g&&g.apply(c,[this]),j.resolve();else if(f)c.once(\"instanceReady\",function(){setTimeout(function(){c.element?(c.element.$==h&&g&&g.apply(c,[h]),j.resolve()):setTimeout(arguments.callee,100)},0)},null,null,9999);else{if(d.autoUpdateElement||\"undefined\"==typeof d.autoUpdateElement&&CKEDITOR.config.autoUpdateElement)d.autoUpdateElementJquery=!0;d.autoUpdateElement=!1;b.data(\"_ckeditorInstanceLock\",\n!0);c=a(this).is(\"textarea\")?CKEDITOR.replace(h,d):CKEDITOR.inline(h,d);b.data(\"ckeditorInstance\",c);c.on(\"instanceReady\",function(d){var e=d.editor;setTimeout(function(){if(e.element){d.removeListener();e.on(\"dataReady\",function(){b.trigger(\"dataReady.ckeditor\",[e])});e.on(\"setData\",function(a){b.trigger(\"setData.ckeditor\",[e,a.data])});e.on(\"getData\",function(a){b.trigger(\"getData.ckeditor\",[e,a.data])},999);e.on(\"destroy\",function(){b.trigger(\"destroy.ckeditor\",[e])});e.on(\"save\",function(){a(h.form).submit();\nreturn!1},null,null,20);if(e.config.autoUpdateElementJquery&&b.is(\"textarea\")&&a(h.form).length){var c=function(){b.ckeditor(function(){e.updateElement()})};a(h.form).submit(c);a(h.form).bind(\"form-pre-serialize\",c);b.bind(\"destroy.ckeditor\",function(){a(h.form).unbind(\"submit\",c);a(h.form).unbind(\"form-pre-serialize\",c)})}e.on(\"destroy\",function(){b.removeData(\"ckeditorInstance\")});b.removeData(\"_ckeditorInstanceLock\");b.trigger(\"instanceReady.ckeditor\",[e]);g&&g.apply(e,[h]);j.resolve()}else setTimeout(arguments.callee,\n100)},0)},null,null,9999)}});var f=new a.Deferred;this.promise=f.promise();a.when.apply(this,i).then(function(){f.resolve()});this.editor=this.eq(0).data(\"ckeditorInstance\");return this}}),CKEDITOR.config.jqueryOverrideVal&&(a.fn.val=CKEDITOR.tools.override(a.fn.val,function(g){return function(d){if(arguments.length){var k=this,i=[],f=this.each(function(){var b=a(this),c=b.data(\"ckeditorInstance\");if(b.is(\"textarea\")&&c){var f=new a.Deferred;c.setData(d,function(){f.resolve()});i.push(f.promise());\nreturn!0}return g.call(b,d)});if(i.length){var b=new a.Deferred;a.when.apply(this,i).done(function(){b.resolveWith(k)});return b.promise()}return f}var f=a(this).eq(0),c=f.data(\"ckeditorInstance\");return f.is(\"textarea\")&&c?c.getData():g.call(f)}})))})(window.jQuery);"
  },
  {
    "path": "admin/js/plugins/ckeditor/build-config.js",
    "content": "﻿/**\r\n * @license Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\n * For licensing, see LICENSE.md or http://ckeditor.com/license\r\n */\r\n\r\n/**\r\n * This file was added automatically by CKEditor builder.\r\n * You may re-use it at any time to build CKEditor again.\r\n *\r\n * If you would like to build CKEditor online again\r\n * (for example to upgrade), visit one the following links:\r\n *\r\n * (1) http://ckeditor.com/builder\r\n *     Visit online builder to build CKEditor from scratch.\r\n *\r\n * (2) http://ckeditor.com/builder/60491947bad18cd75f0676ad044f6ad2\r\n *     Visit online builder to build CKEditor, starting with the same setup as before.\r\n *\r\n * (3) http://ckeditor.com/builder/download/60491947bad18cd75f0676ad044f6ad2\r\n *     Straight download link to the latest version of CKEditor (Optimized) with the same setup as before.\r\n *\r\n * NOTE:\r\n *    This file is not used by CKEditor, you may remove it.\r\n *    Changing this file will not change your CKEditor configuration.\r\n */\r\n\r\nvar CKBUILDER_CONFIG = {\r\n\tskin: 'moono',\r\n\tpreset: 'full',\r\n\tignore: [\r\n\t\t'.bender',\r\n\t\t'.DS_Store',\r\n\t\t'.gitignore',\r\n\t\t'.gitattributes',\r\n\t\t'.idea',\r\n\t\t'.mailmap',\r\n\t\t'bender.js',\r\n\t\t'bender-err.log',\r\n\t\t'bender-out.log',\r\n\t\t'dev',\r\n\t\t'node_modules',\r\n\t\t'package.json',\r\n\t\t'README.md',\r\n\t\t'tests'\r\n\t],\r\n\tplugins : {\n\t\t'a11yhelp' : 1,\n\t\t'about' : 1,\n\t\t'basicstyles' : 1,\n\t\t'bidi' : 1,\n\t\t'blockquote' : 1,\n\t\t'clipboard' : 1,\n\t\t'colorbutton' : 1,\n\t\t'colordialog' : 1,\n\t\t'contextmenu' : 1,\n\t\t'dialogadvtab' : 1,\n\t\t'div' : 1,\n\t\t'elementspath' : 1,\n\t\t'enterkey' : 1,\n\t\t'entities' : 1,\n\t\t'filebrowser' : 1,\n\t\t'find' : 1,\n\t\t'flash' : 1,\n\t\t'floatingspace' : 1,\n\t\t'font' : 1,\n\t\t'format' : 1,\n\t\t'forms' : 1,\n\t\t'horizontalrule' : 1,\n\t\t'htmlwriter' : 1,\n\t\t'iframe' : 1,\n\t\t'image' : 1,\n\t\t'indentblock' : 1,\n\t\t'indentlist' : 1,\n\t\t'justify' : 1,\n\t\t'language' : 1,\n\t\t'link' : 1,\n\t\t'list' : 1,\n\t\t'liststyle' : 1,\n\t\t'magicline' : 1,\n\t\t'maximize' : 1,\n\t\t'newpage' : 1,\n\t\t'pagebreak' : 1,\n\t\t'pastefromword' : 1,\n\t\t'pastetext' : 1,\n\t\t'preview' : 1,\n\t\t'print' : 1,\n\t\t'removeformat' : 1,\n\t\t'resize' : 1,\n\t\t'save' : 1,\n\t\t'scayt' : 1,\n\t\t'selectall' : 1,\n\t\t'showblocks' : 1,\n\t\t'showborders' : 1,\n\t\t'smiley' : 1,\n\t\t'sourcearea' : 1,\n\t\t'specialchar' : 1,\n\t\t'stylescombo' : 1,\n\t\t'tab' : 1,\n\t\t'table' : 1,\n\t\t'tabletools' : 1,\n\t\t'templates' : 1,\n\t\t'toolbar' : 1,\n\t\t'undo' : 1,\n\t\t'wsc' : 1,\n\t\t'wysiwygarea' : 1\n\t},\n\tlanguages : {\n\t\t'en' : 1\n\t}\n};"
  },
  {
    "path": "admin/js/plugins/ckeditor/ckeditor.js",
    "content": "﻿/*\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\nFor licensing, see LICENSE.html or http://ckeditor.com/license\n*/\n(function(){if(window.CKEDITOR&&window.CKEDITOR.dom)return;window.CKEDITOR||(window.CKEDITOR=function(){var a={timestamp:\"E5OD\",version:\"4.4.2\",revision:\"1567b48\",rnd:Math.floor(900*Math.random())+100,_:{pending:[]},status:\"unloaded\",basePath:function(){var a=window.CKEDITOR_BASEPATH||\"\";if(!a)for(var d=document.getElementsByTagName(\"script\"),e=0;e<d.length;e++){var b=d[e].src.match(/(^|.*[\\\\\\/])ckeditor(?:_basic)?(?:_source)?.js(?:\\?.*)?$/i);if(b){a=b[1];break}}-1==a.indexOf(\":/\")&&\"//\"!=a.slice(0,2)&&(a=0===a.indexOf(\"/\")?location.href.match(/^.*?:\\/\\/[^\\/]*/)[0]+\na:location.href.match(/^[^\\?]*\\/(?:)/)[0]+a);if(!a)throw'The CKEditor installation path could not be automatically detected. Please set the global variable \"CKEDITOR_BASEPATH\" before creating editor instances.';return a}(),getUrl:function(a){-1==a.indexOf(\":/\")&&0!==a.indexOf(\"/\")&&(a=this.basePath+a);this.timestamp&&(\"/\"!=a.charAt(a.length-1)&&!/[&?]t=/.test(a))&&(a+=(0<=a.indexOf(\"?\")?\"&\":\"?\")+\"t=\"+this.timestamp);return a},domReady:function(){function a(){try{document.addEventListener?(document.removeEventListener(\"DOMContentLoaded\",\na,!1),d()):document.attachEvent&&\"complete\"===document.readyState&&(document.detachEvent(\"onreadystatechange\",a),d())}catch(e){}}function d(){for(var a;a=e.shift();)a()}var e=[];return function(d){e.push(d);\"complete\"===document.readyState&&setTimeout(a,1);if(1==e.length)if(document.addEventListener)document.addEventListener(\"DOMContentLoaded\",a,!1),window.addEventListener(\"load\",a,!1);else if(document.attachEvent){document.attachEvent(\"onreadystatechange\",a);window.attachEvent(\"onload\",a);d=!1;try{d=\n!window.frameElement}catch(b){}if(document.documentElement.doScroll&&d){var c=function(){try{document.documentElement.doScroll(\"left\")}catch(d){setTimeout(c,1);return}a()};c()}}}}()},c=window.CKEDITOR_GETURL;if(c){var b=a.getUrl;a.getUrl=function(f){return c.call(a,f)||b.call(a,f)}}return a}());\nCKEDITOR.event||(CKEDITOR.event=function(){},CKEDITOR.event.implementOn=function(a){var c=CKEDITOR.event.prototype,b;for(b in c)a[b]==void 0&&(a[b]=c[b])},CKEDITOR.event.prototype=function(){function a(a){var d=c(this);return d[a]||(d[a]=new b(a))}var c=function(a){a=a.getPrivate&&a.getPrivate()||a._||(a._={});return a.events||(a.events={})},b=function(a){this.name=a;this.listeners=[]};b.prototype={getListenerIndex:function(a){for(var d=0,e=this.listeners;d<e.length;d++)if(e[d].fn==a)return d;return-1}};\nreturn{define:function(b,d){var e=a.call(this,b);CKEDITOR.tools.extend(e,d,true)},on:function(b,d,e,c,n){function h(a,m,o,p){a={name:b,sender:this,editor:a,data:m,listenerData:c,stop:o,cancel:p,removeListener:i};return d.call(e,a)===false?false:a.data}function i(){p.removeListener(b,d)}var m=a.call(this,b);if(m.getListenerIndex(d)<0){m=m.listeners;e||(e=this);isNaN(n)&&(n=10);var p=this;h.fn=d;h.priority=n;for(var s=m.length-1;s>=0;s--)if(m[s].priority<=n){m.splice(s+1,0,h);return{removeListener:i}}m.unshift(h)}return{removeListener:i}},\nonce:function(){var a=arguments[1];arguments[1]=function(d){d.removeListener();return a.apply(this,arguments)};return this.on.apply(this,arguments)},capture:function(){CKEDITOR.event.useCapture=1;var a=this.on.apply(this,arguments);CKEDITOR.event.useCapture=0;return a},fire:function(){var a=0,d=function(){a=1},e=0,b=function(){e=1};return function(n,h,i){var m=c(this)[n],n=a,p=e;a=e=0;if(m){var s=m.listeners;if(s.length)for(var s=s.slice(0),x,q=0;q<s.length;q++){if(m.errorProof)try{x=s[q].call(this,\ni,h,d,b)}catch(o){}else x=s[q].call(this,i,h,d,b);x===false?e=1:typeof x!=\"undefined\"&&(h=x);if(a||e)break}}h=e?false:typeof h==\"undefined\"?true:h;a=n;e=p;return h}}(),fireOnce:function(a,d,e){d=this.fire(a,d,e);delete c(this)[a];return d},removeListener:function(a,d){var e=c(this)[a];if(e){var b=e.getListenerIndex(d);b>=0&&e.listeners.splice(b,1)}},removeAllListeners:function(){var a=c(this),d;for(d in a)delete a[d]},hasListeners:function(a){return(a=c(this)[a])&&a.listeners.length>0}}}());\nCKEDITOR.editor||(CKEDITOR.editor=function(){CKEDITOR._.pending.push([this,arguments]);CKEDITOR.event.call(this)},CKEDITOR.editor.prototype.fire=function(a,c){a in{instanceReady:1,loaded:1}&&(this[a]=true);return CKEDITOR.event.prototype.fire.call(this,a,c,this)},CKEDITOR.editor.prototype.fireOnce=function(a,c){a in{instanceReady:1,loaded:1}&&(this[a]=true);return CKEDITOR.event.prototype.fireOnce.call(this,a,c,this)},CKEDITOR.event.implementOn(CKEDITOR.editor.prototype));\nCKEDITOR.env||(CKEDITOR.env=function(){var a=navigator.userAgent.toLowerCase(),c={ie:a.indexOf(\"trident/\")>-1,webkit:a.indexOf(\" applewebkit/\")>-1,air:a.indexOf(\" adobeair/\")>-1,mac:a.indexOf(\"macintosh\")>-1,quirks:document.compatMode==\"BackCompat\"&&(!document.documentMode||document.documentMode<10),mobile:a.indexOf(\"mobile\")>-1,iOS:/(ipad|iphone|ipod)/.test(a),isCustomDomain:function(){if(!this.ie)return false;var a=document.domain,e=window.location.hostname;return a!=e&&a!=\"[\"+e+\"]\"},secure:location.protocol==\n\"https:\"};c.gecko=navigator.product==\"Gecko\"&&!c.webkit&&!c.ie;if(c.webkit)a.indexOf(\"chrome\")>-1?c.chrome=true:c.safari=true;var b=0;if(c.ie){b=c.quirks||!document.documentMode?parseFloat(a.match(/msie (\\d+)/)[1]):document.documentMode;c.ie9Compat=b==9;c.ie8Compat=b==8;c.ie7Compat=b==7;c.ie6Compat=b<7||c.quirks}if(c.gecko){var f=a.match(/rv:([\\d\\.]+)/);if(f){f=f[1].split(\".\");b=f[0]*1E4+(f[1]||0)*100+(f[2]||0)*1}}c.air&&(b=parseFloat(a.match(/ adobeair\\/(\\d+)/)[1]));c.webkit&&(b=parseFloat(a.match(/ applewebkit\\/(\\d+)/)[1]));\nc.version=b;c.isCompatible=c.iOS&&b>=534||!c.mobile&&(c.ie&&b>6||c.gecko&&b>=2E4||c.air&&b>=1||c.webkit&&b>=522||false);c.hidpi=window.devicePixelRatio>=2;c.needsBrFiller=c.gecko||c.webkit||c.ie&&b>10;c.needsNbspFiller=c.ie&&b<11;c.cssClass=\"cke_browser_\"+(c.ie?\"ie\":c.gecko?\"gecko\":c.webkit?\"webkit\":\"unknown\");if(c.quirks)c.cssClass=c.cssClass+\" cke_browser_quirks\";if(c.ie)c.cssClass=c.cssClass+(\" cke_browser_ie\"+(c.quirks?\"6 cke_browser_iequirks\":c.version));if(c.air)c.cssClass=c.cssClass+\" cke_browser_air\";\nif(c.iOS)c.cssClass=c.cssClass+\" cke_browser_ios\";if(c.hidpi)c.cssClass=c.cssClass+\" cke_hidpi\";return c}());\n\"unloaded\"==CKEDITOR.status&&function(){CKEDITOR.event.implementOn(CKEDITOR);CKEDITOR.loadFullCore=function(){if(CKEDITOR.status!=\"basic_ready\")CKEDITOR.loadFullCore._load=1;else{delete CKEDITOR.loadFullCore;var a=document.createElement(\"script\");a.type=\"text/javascript\";a.src=CKEDITOR.basePath+\"ckeditor.js\";document.getElementsByTagName(\"head\")[0].appendChild(a)}};CKEDITOR.loadFullCoreTimeout=0;CKEDITOR.add=function(a){(this._.pending||(this._.pending=[])).push(a)};(function(){CKEDITOR.domReady(function(){var a=\nCKEDITOR.loadFullCore,c=CKEDITOR.loadFullCoreTimeout;if(a){CKEDITOR.status=\"basic_ready\";a&&a._load?a():c&&setTimeout(function(){CKEDITOR.loadFullCore&&CKEDITOR.loadFullCore()},c*1E3)}})})();CKEDITOR.status=\"basic_loaded\"}();CKEDITOR.dom={};\n(function(){var a=[],c=CKEDITOR.env.gecko?\"-moz-\":CKEDITOR.env.webkit?\"-webkit-\":CKEDITOR.env.ie?\"-ms-\":\"\",b=/&/g,f=/>/g,d=/</g,e=/\"/g,g=/&amp;/g,n=/&gt;/g,h=/&lt;/g,i=/&quot;/g;CKEDITOR.on(\"reset\",function(){a=[]});CKEDITOR.tools={arrayCompare:function(a,d){if(!a&&!d)return true;if(!a||!d||a.length!=d.length)return false;for(var e=0;e<a.length;e++)if(a[e]!=d[e])return false;return true},clone:function(a){var d;if(a&&a instanceof Array){d=[];for(var e=0;e<a.length;e++)d[e]=CKEDITOR.tools.clone(a[e]);\nreturn d}if(a===null||typeof a!=\"object\"||a instanceof String||a instanceof Number||a instanceof Boolean||a instanceof Date||a instanceof RegExp||a.nodeType||a.window===a)return a;d=new a.constructor;for(e in a)d[e]=CKEDITOR.tools.clone(a[e]);return d},capitalize:function(a,d){return a.charAt(0).toUpperCase()+(d?a.slice(1):a.slice(1).toLowerCase())},extend:function(a){var d=arguments.length,e,b;if(typeof(e=arguments[d-1])==\"boolean\")d--;else if(typeof(e=arguments[d-2])==\"boolean\"){b=arguments[d-1];\nd=d-2}for(var c=1;c<d;c++){var o=arguments[c],f;for(f in o)if(e===true||a[f]==void 0)if(!b||f in b)a[f]=o[f]}return a},prototypedCopy:function(a){var d=function(){};d.prototype=a;return new d},copy:function(a){var d={},e;for(e in a)d[e]=a[e];return d},isArray:function(a){return Object.prototype.toString.call(a)==\"[object Array]\"},isEmpty:function(a){for(var d in a)if(a.hasOwnProperty(d))return false;return true},cssVendorPrefix:function(a,d,e){if(e)return c+a+\":\"+d+\";\"+a+\":\"+d;e={};e[a]=d;e[c+a]=\nd;return e},cssStyleToDomStyle:function(){var a=document.createElement(\"div\").style,d=typeof a.cssFloat!=\"undefined\"?\"cssFloat\":typeof a.styleFloat!=\"undefined\"?\"styleFloat\":\"float\";return function(a){return a==\"float\"?d:a.replace(/-./g,function(a){return a.substr(1).toUpperCase()})}}(),buildStyleHtml:function(a){for(var a=[].concat(a),d,e=[],b=0;b<a.length;b++)if(d=a[b])/@import|[{}]/.test(d)?e.push(\"<style>\"+d+\"</style>\"):e.push('<link type=\"text/css\" rel=stylesheet href=\"'+d+'\">');return e.join(\"\")},\nhtmlEncode:function(a){return(\"\"+a).replace(b,\"&amp;\").replace(f,\"&gt;\").replace(d,\"&lt;\")},htmlDecode:function(a){return a.replace(g,\"&\").replace(n,\">\").replace(h,\"<\")},htmlEncodeAttr:function(a){return a.replace(e,\"&quot;\").replace(d,\"&lt;\").replace(f,\"&gt;\")},htmlDecodeAttr:function(a){return a.replace(i,'\"').replace(h,\"<\").replace(n,\">\")},getNextNumber:function(){var a=0;return function(){return++a}}(),getNextId:function(){return\"cke_\"+this.getNextNumber()},override:function(a,d){var e=d(a);e.prototype=\na.prototype;return e},setTimeout:function(a,d,e,b,c){c||(c=window);e||(e=c);return c.setTimeout(function(){b?a.apply(e,[].concat(b)):a.apply(e)},d||0)},trim:function(){var a=/(?:^[ \\t\\n\\r]+)|(?:[ \\t\\n\\r]+$)/g;return function(d){return d.replace(a,\"\")}}(),ltrim:function(){var a=/^[ \\t\\n\\r]+/g;return function(d){return d.replace(a,\"\")}}(),rtrim:function(){var a=/[ \\t\\n\\r]+$/g;return function(d){return d.replace(a,\"\")}}(),indexOf:function(a,d){if(typeof d==\"function\")for(var e=0,b=a.length;e<b;e++){if(d(a[e]))return e}else{if(a.indexOf)return a.indexOf(d);\ne=0;for(b=a.length;e<b;e++)if(a[e]===d)return e}return-1},search:function(a,d){var e=CKEDITOR.tools.indexOf(a,d);return e>=0?a[e]:null},bind:function(a,d){return function(){return a.apply(d,arguments)}},createClass:function(a){var d=a.$,e=a.base,b=a.privates||a._,c=a.proto,a=a.statics;!d&&(d=function(){e&&this.base.apply(this,arguments)});if(b)var o=d,d=function(){var a=this._||(this._={}),d;for(d in b){var e=b[d];a[d]=typeof e==\"function\"?CKEDITOR.tools.bind(e,this):e}o.apply(this,arguments)};if(e){d.prototype=\nthis.prototypedCopy(e.prototype);d.prototype.constructor=d;d.base=e;d.baseProto=e.prototype;d.prototype.base=function(){this.base=e.prototype.base;e.apply(this,arguments);this.base=arguments.callee}}c&&this.extend(d.prototype,c,true);a&&this.extend(d,a,true);return d},addFunction:function(d,e){return a.push(function(){return d.apply(e||this,arguments)})-1},removeFunction:function(d){a[d]=null},callFunction:function(d){var e=a[d];return e&&e.apply(window,Array.prototype.slice.call(arguments,1))},cssLength:function(){var a=\n/^-?\\d+\\.?\\d*px$/,d;return function(e){d=CKEDITOR.tools.trim(e+\"\")+\"px\";return a.test(d)?d:e||\"\"}}(),convertToPx:function(){var a;return function(d){if(!a){a=CKEDITOR.dom.element.createFromHtml('<div style=\"position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;\"></div>',CKEDITOR.document);CKEDITOR.document.getBody().append(a)}if(!/%$/.test(d)){a.setStyle(\"width\",d);return a.$.clientWidth}return d}}(),repeat:function(a,d){return Array(d+1).join(a)},tryThese:function(){for(var a,\nd=0,e=arguments.length;d<e;d++){var b=arguments[d];try{a=b();break}catch(c){}}return a},genKey:function(){return Array.prototype.slice.call(arguments).join(\"-\")},defer:function(a){return function(){var d=arguments,e=this;window.setTimeout(function(){a.apply(e,d)},0)}},normalizeCssText:function(a,d){var e=[],b,c=CKEDITOR.tools.parseCssText(a,true,d);for(b in c)e.push(b+\":\"+c[b]);e.sort();return e.length?e.join(\";\")+\";\":\"\"},convertRgbToHex:function(a){return a.replace(/(?:rgb\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\))/gi,\nfunction(a,d,e,b){a=[d,e,b];for(d=0;d<3;d++)a[d]=(\"0\"+parseInt(a[d],10).toString(16)).slice(-2);return\"#\"+a.join(\"\")})},parseCssText:function(a,d,e){var b={};if(e){e=new CKEDITOR.dom.element(\"span\");e.setAttribute(\"style\",a);a=CKEDITOR.tools.convertRgbToHex(e.getAttribute(\"style\")||\"\")}if(!a||a==\";\")return b;a.replace(/&quot;/g,'\"').replace(/\\s*([^:;\\s]+)\\s*:\\s*([^;]+)\\s*(?=;|$)/g,function(a,e,m){if(d){e=e.toLowerCase();e==\"font-family\"&&(m=m.toLowerCase().replace(/[\"']/g,\"\").replace(/\\s*,\\s*/g,\",\"));\nm=CKEDITOR.tools.trim(m)}b[e]=m});return b},writeCssText:function(a,d){var e,b=[];for(e in a)b.push(e+\":\"+a[e]);d&&b.sort();return b.join(\"; \")},objectCompare:function(a,d,e){var b;if(!a&&!d)return true;if(!a||!d)return false;for(b in a)if(a[b]!=d[b])return false;if(!e)for(b in d)if(a[b]!=d[b])return false;return true},objectKeys:function(a){var d=[],e;for(e in a)d.push(e);return d},convertArrayToObject:function(a,d){var e={};arguments.length==1&&(d=true);for(var b=0,c=a.length;b<c;++b)e[a[b]]=d;\nreturn e},fixDomain:function(){for(var a;;)try{a=window.parent.document.domain;break}catch(d){a=a?a.replace(/.+?(?:\\.|$)/,\"\"):document.domain;if(!a)break;document.domain=a}return!!a},eventsBuffer:function(a,d){function e(){c=(new Date).getTime();b=false;d()}var b,c=0;return{input:function(){if(!b){var d=(new Date).getTime()-c;d<a?b=setTimeout(e,a-d):e()}},reset:function(){b&&clearTimeout(b);b=c=0}}},enableHtml5Elements:function(a,d){for(var e=[\"abbr\",\"article\",\"aside\",\"audio\",\"bdi\",\"canvas\",\"data\",\n\"datalist\",\"details\",\"figcaption\",\"figure\",\"footer\",\"header\",\"hgroup\",\"mark\",\"meter\",\"nav\",\"output\",\"progress\",\"section\",\"summary\",\"time\",\"video\"],b=e.length,c;b--;){c=a.createElement(e[b]);d&&a.appendChild(c)}},checkIfAnyArrayItemMatches:function(a,d){for(var e=0,b=a.length;e<b;++e)if(a[e].match(d))return true;return false},checkIfAnyObjectPropertyMatches:function(a,d){for(var e in a)if(e.match(d))return true;return false},transparentImageData:\"data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==\"}})();\nCKEDITOR.dtd=function(){var a=CKEDITOR.tools.extend,c=function(a,d){for(var e=CKEDITOR.tools.clone(a),b=1;b<arguments.length;b++){var d=arguments[b],c;for(c in d)delete e[c]}return e},b={},f={},d={address:1,article:1,aside:1,blockquote:1,details:1,div:1,dl:1,fieldset:1,figure:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,hr:1,menu:1,nav:1,ol:1,p:1,pre:1,section:1,table:1,ul:1},e={command:1,link:1,meta:1,noscript:1,script:1,style:1},g={},n={\"#\":1},h={center:1,dir:1,noframes:1};\na(b,{a:1,abbr:1,area:1,audio:1,b:1,bdi:1,bdo:1,br:1,button:1,canvas:1,cite:1,code:1,command:1,datalist:1,del:1,dfn:1,em:1,embed:1,i:1,iframe:1,img:1,input:1,ins:1,kbd:1,keygen:1,label:1,map:1,mark:1,meter:1,noscript:1,object:1,output:1,progress:1,q:1,ruby:1,s:1,samp:1,script:1,select:1,small:1,span:1,strong:1,sub:1,sup:1,textarea:1,time:1,u:1,\"var\":1,video:1,wbr:1},n,{acronym:1,applet:1,basefont:1,big:1,font:1,isindex:1,strike:1,style:1,tt:1});a(f,d,b,h);c={a:c(b,{a:1,button:1}),abbr:b,address:f,\narea:g,article:a({style:1},f),aside:a({style:1},f),audio:a({source:1,track:1},f),b:b,base:g,bdi:b,bdo:b,blockquote:f,body:f,br:g,button:c(b,{a:1,button:1}),canvas:b,caption:f,cite:b,code:b,col:g,colgroup:{col:1},command:g,datalist:a({option:1},b),dd:f,del:b,details:a({summary:1},f),dfn:b,div:a({style:1},f),dl:{dt:1,dd:1},dt:f,em:b,embed:g,fieldset:a({legend:1},f),figcaption:f,figure:a({figcaption:1},f),footer:f,form:f,h1:b,h2:b,h3:b,h4:b,h5:b,h6:b,head:a({title:1,base:1},e),header:f,hgroup:{h1:1,\nh2:1,h3:1,h4:1,h5:1,h6:1},hr:g,html:a({head:1,body:1},f,e),i:b,iframe:n,img:g,input:g,ins:b,kbd:b,keygen:g,label:b,legend:b,li:f,link:g,map:f,mark:b,menu:a({li:1},f),meta:g,meter:c(b,{meter:1}),nav:f,noscript:a({link:1,meta:1,style:1},b),object:a({param:1},b),ol:{li:1},optgroup:{option:1},option:n,output:b,p:b,param:g,pre:b,progress:c(b,{progress:1}),q:b,rp:b,rt:b,ruby:a({rp:1,rt:1},b),s:b,samp:b,script:n,section:a({style:1},f),select:{optgroup:1,option:1},small:b,source:g,span:b,strong:b,style:n,\nsub:b,summary:b,sup:b,table:{caption:1,colgroup:1,thead:1,tfoot:1,tbody:1,tr:1},tbody:{tr:1},td:f,textarea:n,tfoot:{tr:1},th:f,thead:{tr:1},time:c(b,{time:1}),title:n,tr:{th:1,td:1},track:g,u:b,ul:{li:1},\"var\":b,video:a({source:1,track:1},f),wbr:g,acronym:b,applet:a({param:1},f),basefont:g,big:b,center:f,dialog:g,dir:{li:1},font:b,isindex:g,noframes:f,strike:b,tt:b};a(c,{$block:a({audio:1,dd:1,dt:1,figcaption:1,li:1,video:1},d,h),$blockLimit:{article:1,aside:1,audio:1,body:1,caption:1,details:1,dir:1,\ndiv:1,dl:1,fieldset:1,figcaption:1,figure:1,footer:1,form:1,header:1,hgroup:1,menu:1,nav:1,ol:1,section:1,table:1,td:1,th:1,tr:1,ul:1,video:1},$cdata:{script:1,style:1},$editable:{address:1,article:1,aside:1,blockquote:1,body:1,details:1,div:1,fieldset:1,figcaption:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,nav:1,p:1,pre:1,section:1},$empty:{area:1,base:1,basefont:1,br:1,col:1,command:1,dialog:1,embed:1,hr:1,img:1,input:1,isindex:1,keygen:1,link:1,meta:1,param:1,source:1,track:1,\nwbr:1},$inline:b,$list:{dl:1,ol:1,ul:1},$listItem:{dd:1,dt:1,li:1},$nonBodyContent:a({body:1,head:1,html:1},c.head),$nonEditable:{applet:1,audio:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,param:1,script:1,textarea:1,video:1},$object:{applet:1,audio:1,button:1,hr:1,iframe:1,img:1,input:1,object:1,select:1,table:1,textarea:1,video:1},$removeEmpty:{abbr:1,acronym:1,b:1,bdi:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,mark:1,meter:1,output:1,q:1,ruby:1,s:1,samp:1,\nsmall:1,span:1,strike:1,strong:1,sub:1,sup:1,time:1,tt:1,u:1,\"var\":1},$tabIndex:{a:1,area:1,button:1,input:1,object:1,select:1,textarea:1},$tableContent:{caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1},$transparent:{a:1,audio:1,canvas:1,del:1,ins:1,map:1,noscript:1,object:1,video:1},$intermediate:{caption:1,colgroup:1,dd:1,dt:1,figcaption:1,legend:1,li:1,optgroup:1,option:1,rp:1,rt:1,summary:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1}});return c}();\nCKEDITOR.dom.event=function(a){this.$=a};\nCKEDITOR.dom.event.prototype={getKey:function(){return this.$.keyCode||this.$.which},getKeystroke:function(){var a=this.getKey();if(this.$.ctrlKey||this.$.metaKey)a=a+CKEDITOR.CTRL;this.$.shiftKey&&(a=a+CKEDITOR.SHIFT);this.$.altKey&&(a=a+CKEDITOR.ALT);return a},preventDefault:function(a){var c=this.$;c.preventDefault?c.preventDefault():c.returnValue=false;a&&this.stopPropagation()},stopPropagation:function(){var a=this.$;a.stopPropagation?a.stopPropagation():a.cancelBubble=true},getTarget:function(){var a=\nthis.$.target||this.$.srcElement;return a?new CKEDITOR.dom.node(a):null},getPhase:function(){return this.$.eventPhase||2},getPageOffset:function(){var a=this.getTarget().getDocument().$;return{x:this.$.pageX||this.$.clientX+(a.documentElement.scrollLeft||a.body.scrollLeft),y:this.$.pageY||this.$.clientY+(a.documentElement.scrollTop||a.body.scrollTop)}}};CKEDITOR.CTRL=1114112;CKEDITOR.SHIFT=2228224;CKEDITOR.ALT=4456448;CKEDITOR.EVENT_PHASE_CAPTURING=1;CKEDITOR.EVENT_PHASE_AT_TARGET=2;\nCKEDITOR.EVENT_PHASE_BUBBLING=3;CKEDITOR.dom.domObject=function(a){if(a)this.$=a};\nCKEDITOR.dom.domObject.prototype=function(){var a=function(a,b){return function(f){typeof CKEDITOR!=\"undefined\"&&a.fire(b,new CKEDITOR.dom.event(f))}};return{getPrivate:function(){var a;if(!(a=this.getCustomData(\"_\")))this.setCustomData(\"_\",a={});return a},on:function(c){var b=this.getCustomData(\"_cke_nativeListeners\");if(!b){b={};this.setCustomData(\"_cke_nativeListeners\",b)}if(!b[c]){b=b[c]=a(this,c);this.$.addEventListener?this.$.addEventListener(c,b,!!CKEDITOR.event.useCapture):this.$.attachEvent&&\nthis.$.attachEvent(\"on\"+c,b)}return CKEDITOR.event.prototype.on.apply(this,arguments)},removeListener:function(a){CKEDITOR.event.prototype.removeListener.apply(this,arguments);if(!this.hasListeners(a)){var b=this.getCustomData(\"_cke_nativeListeners\"),f=b&&b[a];if(f){this.$.removeEventListener?this.$.removeEventListener(a,f,false):this.$.detachEvent&&this.$.detachEvent(\"on\"+a,f);delete b[a]}}},removeAllListeners:function(){var a=this.getCustomData(\"_cke_nativeListeners\"),b;for(b in a){var f=a[b];this.$.detachEvent?\nthis.$.detachEvent(\"on\"+b,f):this.$.removeEventListener&&this.$.removeEventListener(b,f,false);delete a[b]}CKEDITOR.event.prototype.removeAllListeners.call(this)}}}();\n(function(a){var c={};CKEDITOR.on(\"reset\",function(){c={}});a.equals=function(a){try{return a&&a.$===this.$}catch(c){return false}};a.setCustomData=function(a,f){var d=this.getUniqueId();(c[d]||(c[d]={}))[a]=f;return this};a.getCustomData=function(a){var f=this.$[\"data-cke-expando\"];return(f=f&&c[f])&&a in f?f[a]:null};a.removeCustomData=function(a){var f=this.$[\"data-cke-expando\"],f=f&&c[f],d,e;if(f){d=f[a];e=a in f;delete f[a]}return e?d:null};a.clearCustomData=function(){this.removeAllListeners();\nvar a=this.$[\"data-cke-expando\"];a&&delete c[a]};a.getUniqueId=function(){return this.$[\"data-cke-expando\"]||(this.$[\"data-cke-expando\"]=CKEDITOR.tools.getNextNumber())};CKEDITOR.event.implementOn(a)})(CKEDITOR.dom.domObject.prototype);\nCKEDITOR.dom.node=function(a){return a?new CKEDITOR.dom[a.nodeType==CKEDITOR.NODE_DOCUMENT?\"document\":a.nodeType==CKEDITOR.NODE_ELEMENT?\"element\":a.nodeType==CKEDITOR.NODE_TEXT?\"text\":a.nodeType==CKEDITOR.NODE_COMMENT?\"comment\":a.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT?\"documentFragment\":\"domObject\"](a):this};CKEDITOR.dom.node.prototype=new CKEDITOR.dom.domObject;CKEDITOR.NODE_ELEMENT=1;CKEDITOR.NODE_DOCUMENT=9;CKEDITOR.NODE_TEXT=3;CKEDITOR.NODE_COMMENT=8;CKEDITOR.NODE_DOCUMENT_FRAGMENT=11;\nCKEDITOR.POSITION_IDENTICAL=0;CKEDITOR.POSITION_DISCONNECTED=1;CKEDITOR.POSITION_FOLLOWING=2;CKEDITOR.POSITION_PRECEDING=4;CKEDITOR.POSITION_IS_CONTAINED=8;CKEDITOR.POSITION_CONTAINS=16;\nCKEDITOR.tools.extend(CKEDITOR.dom.node.prototype,{appendTo:function(a,c){a.append(this,c);return a},clone:function(a,c){var b=this.$.cloneNode(a),f=function(d){d[\"data-cke-expando\"]&&(d[\"data-cke-expando\"]=false);if(d.nodeType==CKEDITOR.NODE_ELEMENT){c||d.removeAttribute(\"id\",false);if(a)for(var d=d.childNodes,e=0;e<d.length;e++)f(d[e])}};f(b);return new CKEDITOR.dom.node(b)},hasPrevious:function(){return!!this.$.previousSibling},hasNext:function(){return!!this.$.nextSibling},insertAfter:function(a){a.$.parentNode.insertBefore(this.$,\na.$.nextSibling);return a},insertBefore:function(a){a.$.parentNode.insertBefore(this.$,a.$);return a},insertBeforeMe:function(a){this.$.parentNode.insertBefore(a.$,this.$);return a},getAddress:function(a){for(var c=[],b=this.getDocument().$.documentElement,f=this.$;f&&f!=b;){var d=f.parentNode;d&&c.unshift(this.getIndex.call({$:f},a));f=d}return c},getDocument:function(){return new CKEDITOR.dom.document(this.$.ownerDocument||this.$.parentNode.ownerDocument)},getIndex:function(a){var c=this.$,b=-1,\nf;if(!this.$.parentNode)return b;do if(!a||!(c!=this.$&&c.nodeType==CKEDITOR.NODE_TEXT&&(f||!c.nodeValue))){b++;f=c.nodeType==CKEDITOR.NODE_TEXT}while(c=c.previousSibling);return b},getNextSourceNode:function(a,c,b){if(b&&!b.call)var f=b,b=function(a){return!a.equals(f)};var a=!a&&this.getFirst&&this.getFirst(),d;if(!a){if(this.type==CKEDITOR.NODE_ELEMENT&&b&&b(this,true)===false)return null;a=this.getNext()}for(;!a&&(d=(d||this).getParent());){if(b&&b(d,true)===false)return null;a=d.getNext()}return!a||\nb&&b(a)===false?null:c&&c!=a.type?a.getNextSourceNode(false,c,b):a},getPreviousSourceNode:function(a,c,b){if(b&&!b.call)var f=b,b=function(a){return!a.equals(f)};var a=!a&&this.getLast&&this.getLast(),d;if(!a){if(this.type==CKEDITOR.NODE_ELEMENT&&b&&b(this,true)===false)return null;a=this.getPrevious()}for(;!a&&(d=(d||this).getParent());){if(b&&b(d,true)===false)return null;a=d.getPrevious()}return!a||b&&b(a)===false?null:c&&a.type!=c?a.getPreviousSourceNode(false,c,b):a},getPrevious:function(a){var c=\nthis.$,b;do b=(c=c.previousSibling)&&c.nodeType!=10&&new CKEDITOR.dom.node(c);while(b&&a&&!a(b));return b},getNext:function(a){var c=this.$,b;do b=(c=c.nextSibling)&&new CKEDITOR.dom.node(c);while(b&&a&&!a(b));return b},getParent:function(a){var c=this.$.parentNode;return c&&(c.nodeType==CKEDITOR.NODE_ELEMENT||a&&c.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT)?new CKEDITOR.dom.node(c):null},getParents:function(a){var c=this,b=[];do b[a?\"push\":\"unshift\"](c);while(c=c.getParent());return b},getCommonAncestor:function(a){if(a.equals(this))return this;\nif(a.contains&&a.contains(this))return a;var c=this.contains?this:this.getParent();do if(c.contains(a))return c;while(c=c.getParent());return null},getPosition:function(a){var c=this.$,b=a.$;if(c.compareDocumentPosition)return c.compareDocumentPosition(b);if(c==b)return CKEDITOR.POSITION_IDENTICAL;if(this.type==CKEDITOR.NODE_ELEMENT&&a.type==CKEDITOR.NODE_ELEMENT){if(c.contains){if(c.contains(b))return CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_PRECEDING;if(b.contains(c))return CKEDITOR.POSITION_IS_CONTAINED+\nCKEDITOR.POSITION_FOLLOWING}if(\"sourceIndex\"in c)return c.sourceIndex<0||b.sourceIndex<0?CKEDITOR.POSITION_DISCONNECTED:c.sourceIndex<b.sourceIndex?CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_FOLLOWING}for(var c=this.getAddress(),a=a.getAddress(),b=Math.min(c.length,a.length),f=0;f<=b-1;f++)if(c[f]!=a[f]){if(f<b)return c[f]<a[f]?CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_FOLLOWING;break}return c.length<a.length?CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_IS_CONTAINED+\nCKEDITOR.POSITION_FOLLOWING},getAscendant:function(a,c){var b=this.$,f;if(!c)b=b.parentNode;for(;b;){if(b.nodeName&&(f=b.nodeName.toLowerCase(),typeof a==\"string\"?f==a:f in a))return new CKEDITOR.dom.node(b);try{b=b.parentNode}catch(d){b=null}}return null},hasAscendant:function(a,c){var b=this.$;if(!c)b=b.parentNode;for(;b;){if(b.nodeName&&b.nodeName.toLowerCase()==a)return true;b=b.parentNode}return false},move:function(a,c){a.append(this.remove(),c)},remove:function(a){var c=this.$,b=c.parentNode;\nif(b){if(a)for(;a=c.firstChild;)b.insertBefore(c.removeChild(a),c);b.removeChild(c)}return this},replace:function(a){this.insertBefore(a);a.remove()},trim:function(){this.ltrim();this.rtrim()},ltrim:function(){for(var a;this.getFirst&&(a=this.getFirst());){if(a.type==CKEDITOR.NODE_TEXT){var c=CKEDITOR.tools.ltrim(a.getText()),b=a.getLength();if(c){if(c.length<b){a.split(b-c.length);this.$.removeChild(this.$.firstChild)}}else{a.remove();continue}}break}},rtrim:function(){for(var a;this.getLast&&(a=\nthis.getLast());){if(a.type==CKEDITOR.NODE_TEXT){var c=CKEDITOR.tools.rtrim(a.getText()),b=a.getLength();if(c){if(c.length<b){a.split(c.length);this.$.lastChild.parentNode.removeChild(this.$.lastChild)}}else{a.remove();continue}}break}if(CKEDITOR.env.needsBrFiller)(a=this.$.lastChild)&&(a.type==1&&a.nodeName.toLowerCase()==\"br\")&&a.parentNode.removeChild(a)},isReadOnly:function(){var a=this;this.type!=CKEDITOR.NODE_ELEMENT&&(a=this.getParent());if(a&&typeof a.$.isContentEditable!=\"undefined\")return!(a.$.isContentEditable||\na.data(\"cke-editable\"));for(;a;){if(a.data(\"cke-editable\"))break;if(a.getAttribute(\"contentEditable\")==\"false\")return true;if(a.getAttribute(\"contentEditable\")==\"true\")break;a=a.getParent()}return!a}});CKEDITOR.dom.window=function(a){CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.window.prototype=new CKEDITOR.dom.domObject;\nCKEDITOR.tools.extend(CKEDITOR.dom.window.prototype,{focus:function(){this.$.focus()},getViewPaneSize:function(){var a=this.$.document,c=a.compatMode==\"CSS1Compat\";return{width:(c?a.documentElement.clientWidth:a.body.clientWidth)||0,height:(c?a.documentElement.clientHeight:a.body.clientHeight)||0}},getScrollPosition:function(){var a=this.$;if(\"pageXOffset\"in a)return{x:a.pageXOffset||0,y:a.pageYOffset||0};a=a.document;return{x:a.documentElement.scrollLeft||a.body.scrollLeft||0,y:a.documentElement.scrollTop||\na.body.scrollTop||0}},getFrame:function(){var a=this.$.frameElement;return a?new CKEDITOR.dom.element.get(a):null}});CKEDITOR.dom.document=function(a){CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.document.prototype=new CKEDITOR.dom.domObject;\nCKEDITOR.tools.extend(CKEDITOR.dom.document.prototype,{type:CKEDITOR.NODE_DOCUMENT,appendStyleSheet:function(a){if(this.$.createStyleSheet)this.$.createStyleSheet(a);else{var c=new CKEDITOR.dom.element(\"link\");c.setAttributes({rel:\"stylesheet\",type:\"text/css\",href:a});this.getHead().append(c)}},appendStyleText:function(a){if(this.$.createStyleSheet){var c=this.$.createStyleSheet(\"\");c.cssText=a}else{var b=new CKEDITOR.dom.element(\"style\",this);b.append(new CKEDITOR.dom.text(a,this));this.getHead().append(b)}return c||\nb.$.sheet},createElement:function(a,c){var b=new CKEDITOR.dom.element(a,this);if(c){c.attributes&&b.setAttributes(c.attributes);c.styles&&b.setStyles(c.styles)}return b},createText:function(a){return new CKEDITOR.dom.text(a,this)},focus:function(){this.getWindow().focus()},getActive:function(){return new CKEDITOR.dom.element(this.$.activeElement)},getById:function(a){return(a=this.$.getElementById(a))?new CKEDITOR.dom.element(a):null},getByAddress:function(a,c){for(var b=this.$.documentElement,f=\n0;b&&f<a.length;f++){var d=a[f];if(c)for(var e=-1,g=0;g<b.childNodes.length;g++){var n=b.childNodes[g];if(!(c===true&&n.nodeType==3&&n.previousSibling&&n.previousSibling.nodeType==3)){e++;if(e==d){b=n;break}}}else b=b.childNodes[d]}return b?new CKEDITOR.dom.node(b):null},getElementsByTag:function(a,c){if((!CKEDITOR.env.ie||document.documentMode>8)&&c)a=c+\":\"+a;return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(a))},getHead:function(){var a=this.$.getElementsByTagName(\"head\")[0];return a=\na?new CKEDITOR.dom.element(a):this.getDocumentElement().append(new CKEDITOR.dom.element(\"head\"),true)},getBody:function(){return new CKEDITOR.dom.element(this.$.body)},getDocumentElement:function(){return new CKEDITOR.dom.element(this.$.documentElement)},getWindow:function(){return new CKEDITOR.dom.window(this.$.parentWindow||this.$.defaultView)},write:function(a){this.$.open(\"text/html\",\"replace\");CKEDITOR.env.ie&&(a=a.replace(/(?:^\\s*<!DOCTYPE[^>]*?>)|^/i,'$&\\n<script data-cke-temp=\"1\">('+CKEDITOR.tools.fixDomain+\n\")();<\\/script>\"));this.$.write(a);this.$.close()},find:function(a){return new CKEDITOR.dom.nodeList(this.$.querySelectorAll(a))},findOne:function(a){return(a=this.$.querySelector(a))?new CKEDITOR.dom.element(a):null},_getHtml5ShivFrag:function(){var a=this.getCustomData(\"html5ShivFrag\");if(!a){a=this.$.createDocumentFragment();CKEDITOR.tools.enableHtml5Elements(a,true);this.setCustomData(\"html5ShivFrag\",a)}return a}});CKEDITOR.dom.nodeList=function(a){this.$=a};\nCKEDITOR.dom.nodeList.prototype={count:function(){return this.$.length},getItem:function(a){if(a<0||a>=this.$.length)return null;return(a=this.$[a])?new CKEDITOR.dom.node(a):null}};CKEDITOR.dom.element=function(a,c){typeof a==\"string\"&&(a=(c?c.$:document).createElement(a));CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.element.get=function(a){return(a=typeof a==\"string\"?document.getElementById(a)||document.getElementsByName(a)[0]:a)&&(a.$?a:new CKEDITOR.dom.element(a))};\nCKEDITOR.dom.element.prototype=new CKEDITOR.dom.node;CKEDITOR.dom.element.createFromHtml=function(a,c){var b=new CKEDITOR.dom.element(\"div\",c);b.setHtml(a);return b.getFirst().remove()};\nCKEDITOR.dom.element.setMarker=function(a,c,b,f){var d=c.getCustomData(\"list_marker_id\")||c.setCustomData(\"list_marker_id\",CKEDITOR.tools.getNextNumber()).getCustomData(\"list_marker_id\"),e=c.getCustomData(\"list_marker_names\")||c.setCustomData(\"list_marker_names\",{}).getCustomData(\"list_marker_names\");a[d]=c;e[b]=1;return c.setCustomData(b,f)};CKEDITOR.dom.element.clearAllMarkers=function(a){for(var c in a)CKEDITOR.dom.element.clearMarkers(a,a[c],1)};\nCKEDITOR.dom.element.clearMarkers=function(a,c,b){var f=c.getCustomData(\"list_marker_names\"),d=c.getCustomData(\"list_marker_id\"),e;for(e in f)c.removeCustomData(e);c.removeCustomData(\"list_marker_names\");if(b){c.removeCustomData(\"list_marker_id\");delete a[d]}};\n(function(){function a(a){var e=true;if(!a.$.id){a.$.id=\"cke_tmp_\"+CKEDITOR.tools.getNextNumber();e=false}return function(){e||a.removeAttribute(\"id\")}}function c(a,e){return\"#\"+a.$.id+\" \"+e.split(/,\\s*/).join(\", #\"+a.$.id+\" \")}function b(a){for(var e=0,b=0,c=f[a].length;b<c;b++)e=e+(parseInt(this.getComputedStyle(f[a][b])||0,10)||0);return e}CKEDITOR.tools.extend(CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_ELEMENT,addClass:function(a){var e=this.$.className;e&&(RegExp(\"(?:^|\\\\s)\"+a+\"(?:\\\\s|$)\",\n\"\").test(e)||(e=e+(\" \"+a)));this.$.className=e||a;return this},removeClass:function(a){var e=this.getAttribute(\"class\");if(e){a=RegExp(\"(?:^|\\\\s+)\"+a+\"(?=\\\\s|$)\",\"i\");if(a.test(e))(e=e.replace(a,\"\").replace(/^\\s+/,\"\"))?this.setAttribute(\"class\",e):this.removeAttribute(\"class\")}return this},hasClass:function(a){return RegExp(\"(?:^|\\\\s+)\"+a+\"(?=\\\\s|$)\",\"\").test(this.getAttribute(\"class\"))},append:function(a,e){typeof a==\"string\"&&(a=this.getDocument().createElement(a));e?this.$.insertBefore(a.$,this.$.firstChild):\nthis.$.appendChild(a.$);return a},appendHtml:function(a){if(this.$.childNodes.length){var e=new CKEDITOR.dom.element(\"div\",this.getDocument());e.setHtml(a);e.moveChildren(this)}else this.setHtml(a)},appendText:function(a){this.$.text!=void 0?this.$.text=this.$.text+a:this.append(new CKEDITOR.dom.text(a))},appendBogus:function(a){if(a||CKEDITOR.env.needsBrFiller){for(a=this.getLast();a&&a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.rtrim(a.getText());)a=a.getPrevious();if(!a||!a.is||!a.is(\"br\")){a=this.getDocument().createElement(\"br\");\nCKEDITOR.env.gecko&&a.setAttribute(\"type\",\"_moz\");this.append(a)}}},breakParent:function(a){var e=new CKEDITOR.dom.range(this.getDocument());e.setStartAfter(this);e.setEndAfter(a);a=e.extractContents();e.insertNode(this.remove());a.insertAfterNode(this)},contains:CKEDITOR.env.ie||CKEDITOR.env.webkit?function(a){var e=this.$;return a.type!=CKEDITOR.NODE_ELEMENT?e.contains(a.getParent().$):e!=a.$&&e.contains(a.$)}:function(a){return!!(this.$.compareDocumentPosition(a.$)&16)},focus:function(){function a(){try{this.$.focus()}catch(d){}}\nreturn function(e){e?CKEDITOR.tools.setTimeout(a,100,this):a.call(this)}}(),getHtml:function(){var a=this.$.innerHTML;return CKEDITOR.env.ie?a.replace(/<\\?[^>]*>/g,\"\"):a},getOuterHtml:function(){if(this.$.outerHTML)return this.$.outerHTML.replace(/<\\?[^>]*>/,\"\");var a=this.$.ownerDocument.createElement(\"div\");a.appendChild(this.$.cloneNode(true));return a.innerHTML},getClientRect:function(){var a=CKEDITOR.tools.extend({},this.$.getBoundingClientRect());!a.width&&(a.width=a.right-a.left);!a.height&&\n(a.height=a.bottom-a.top);return a},setHtml:CKEDITOR.env.ie&&CKEDITOR.env.version<9?function(a){try{var e=this.$;if(this.getParent())return e.innerHTML=a;var b=this.getDocument()._getHtml5ShivFrag();b.appendChild(e);e.innerHTML=a;b.removeChild(e);return a}catch(c){this.$.innerHTML=\"\";e=new CKEDITOR.dom.element(\"body\",this.getDocument());e.$.innerHTML=a;for(e=e.getChildren();e.count();)this.append(e.getItem(0));return a}}:function(a){return this.$.innerHTML=a},setText:function(){var a=document.createElement(\"p\");\na.innerHTML=\"x\";a=a.textContent;return function(e){this.$[a?\"textContent\":\"innerText\"]=e}}(),getAttribute:function(){var a=function(a){return this.$.getAttribute(a,2)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(a){switch(a){case \"class\":a=\"className\";break;case \"http-equiv\":a=\"httpEquiv\";break;case \"name\":return this.$.name;case \"tabindex\":a=this.$.getAttribute(a,2);a!==0&&this.$.tabIndex===0&&(a=null);return a;case \"checked\":a=this.$.attributes.getNamedItem(a);\nreturn(a.specified?a.nodeValue:this.$.checked)?\"checked\":null;case \"hspace\":case \"value\":return this.$[a];case \"style\":return this.$.style.cssText;case \"contenteditable\":case \"contentEditable\":return this.$.attributes.getNamedItem(\"contentEditable\").specified?this.$.getAttribute(\"contentEditable\"):null}return this.$.getAttribute(a,2)}:a}(),getChildren:function(){return new CKEDITOR.dom.nodeList(this.$.childNodes)},getComputedStyle:CKEDITOR.env.ie?function(a){return this.$.currentStyle[CKEDITOR.tools.cssStyleToDomStyle(a)]}:\nfunction(a){var e=this.getWindow().$.getComputedStyle(this.$,null);return e?e.getPropertyValue(a):\"\"},getDtd:function(){var a=CKEDITOR.dtd[this.getName()];this.getDtd=function(){return a};return a},getElementsByTag:CKEDITOR.dom.document.prototype.getElementsByTag,getTabIndex:CKEDITOR.env.ie?function(){var a=this.$.tabIndex;a===0&&(!CKEDITOR.dtd.$tabIndex[this.getName()]&&parseInt(this.getAttribute(\"tabindex\"),10)!==0)&&(a=-1);return a}:CKEDITOR.env.webkit?function(){var a=this.$.tabIndex;if(a==void 0){a=\nparseInt(this.getAttribute(\"tabindex\"),10);isNaN(a)&&(a=-1)}return a}:function(){return this.$.tabIndex},getText:function(){return this.$.textContent||this.$.innerText||\"\"},getWindow:function(){return this.getDocument().getWindow()},getId:function(){return this.$.id||null},getNameAtt:function(){return this.$.name||null},getName:function(){var a=this.$.nodeName.toLowerCase();if(CKEDITOR.env.ie&&!(document.documentMode>8)){var e=this.$.scopeName;e!=\"HTML\"&&(a=e.toLowerCase()+\":\"+a)}return(this.getName=\nfunction(){return a})()},getValue:function(){return this.$.value},getFirst:function(a){var e=this.$.firstChild;(e=e&&new CKEDITOR.dom.node(e))&&(a&&!a(e))&&(e=e.getNext(a));return e},getLast:function(a){var e=this.$.lastChild;(e=e&&new CKEDITOR.dom.node(e))&&(a&&!a(e))&&(e=e.getPrevious(a));return e},getStyle:function(a){return this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]},is:function(){var a=this.getName();if(typeof arguments[0]==\"object\")return!!arguments[0][a];for(var e=0;e<arguments.length;e++)if(arguments[e]==\na)return true;return false},isEditable:function(a){var e=this.getName();if(this.isReadOnly()||this.getComputedStyle(\"display\")==\"none\"||this.getComputedStyle(\"visibility\")==\"hidden\"||CKEDITOR.dtd.$nonEditable[e]||CKEDITOR.dtd.$empty[e]||this.is(\"a\")&&(this.data(\"cke-saved-name\")||this.hasAttribute(\"name\"))&&!this.getChildCount())return false;if(a!==false){a=CKEDITOR.dtd[e]||CKEDITOR.dtd.span;return!(!a||!a[\"#\"])}return true},isIdentical:function(a){var e=this.clone(0,1),a=a.clone(0,1);e.removeAttributes([\"_moz_dirty\",\n\"data-cke-expando\",\"data-cke-saved-href\",\"data-cke-saved-name\"]);a.removeAttributes([\"_moz_dirty\",\"data-cke-expando\",\"data-cke-saved-href\",\"data-cke-saved-name\"]);if(e.$.isEqualNode){e.$.style.cssText=CKEDITOR.tools.normalizeCssText(e.$.style.cssText);a.$.style.cssText=CKEDITOR.tools.normalizeCssText(a.$.style.cssText);return e.$.isEqualNode(a.$)}e=e.getOuterHtml();a=a.getOuterHtml();if(CKEDITOR.env.ie&&CKEDITOR.env.version<9&&this.is(\"a\")){var b=this.getParent();if(b.type==CKEDITOR.NODE_ELEMENT){b=\nb.clone();b.setHtml(e);e=b.getHtml();b.setHtml(a);a=b.getHtml()}}return e==a},isVisible:function(){var a=(this.$.offsetHeight||this.$.offsetWidth)&&this.getComputedStyle(\"visibility\")!=\"hidden\",e,b;if(a&&CKEDITOR.env.webkit){e=this.getWindow();if(!e.equals(CKEDITOR.document.getWindow())&&(b=e.$.frameElement))a=(new CKEDITOR.dom.element(b)).isVisible()}return!!a},isEmptyInlineRemoveable:function(){if(!CKEDITOR.dtd.$removeEmpty[this.getName()])return false;for(var a=this.getChildren(),e=0,b=a.count();e<\nb;e++){var c=a.getItem(e);if(!(c.type==CKEDITOR.NODE_ELEMENT&&c.data(\"cke-bookmark\"))&&(c.type==CKEDITOR.NODE_ELEMENT&&!c.isEmptyInlineRemoveable()||c.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(c.getText())))return false}return true},hasAttributes:CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(){for(var a=this.$.attributes,e=0;e<a.length;e++){var b=a[e];switch(b.nodeName){case \"class\":if(this.getAttribute(\"class\"))return true;case \"data-cke-expando\":continue;default:if(b.specified)return true}}return false}:\nfunction(){var a=this.$.attributes,e=a.length,b={\"data-cke-expando\":1,_moz_dirty:1};return e>0&&(e>2||!b[a[0].nodeName]||e==2&&!b[a[1].nodeName])},hasAttribute:function(){function a(d){var b=this.$.attributes.getNamedItem(d);if(this.getName()==\"input\")switch(d){case \"class\":return this.$.className.length>0;case \"checked\":return!!this.$.checked;case \"value\":d=this.getAttribute(\"type\");return d==\"checkbox\"||d==\"radio\"?this.$.value!=\"on\":!!this.$.value}return!b?false:b.specified}return CKEDITOR.env.ie?\nCKEDITOR.env.version<8?function(e){return e==\"name\"?!!this.$.name:a.call(this,e)}:a:function(a){return!!this.$.attributes.getNamedItem(a)}}(),hide:function(){this.setStyle(\"display\",\"none\")},moveChildren:function(a,e){var b=this.$,a=a.$;if(b!=a){var c;if(e)for(;c=b.lastChild;)a.insertBefore(b.removeChild(c),a.firstChild);else for(;c=b.firstChild;)a.appendChild(b.removeChild(c))}},mergeSiblings:function(){function a(d,b,c){if(b&&b.type==CKEDITOR.NODE_ELEMENT){for(var f=[];b.data(\"cke-bookmark\")||b.isEmptyInlineRemoveable();){f.push(b);\nb=c?b.getNext():b.getPrevious();if(!b||b.type!=CKEDITOR.NODE_ELEMENT)return}if(d.isIdentical(b)){for(var i=c?d.getLast():d.getFirst();f.length;)f.shift().move(d,!c);b.moveChildren(d,!c);b.remove();i&&i.type==CKEDITOR.NODE_ELEMENT&&i.mergeSiblings()}}}return function(e){if(e===false||CKEDITOR.dtd.$removeEmpty[this.getName()]||this.is(\"a\")){a(this,this.getNext(),true);a(this,this.getPrevious())}}}(),show:function(){this.setStyles({display:\"\",visibility:\"\"})},setAttribute:function(){var a=function(a,\nd){this.$.setAttribute(a,d);return this};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(e,b){e==\"class\"?this.$.className=b:e==\"style\"?this.$.style.cssText=b:e==\"tabindex\"?this.$.tabIndex=b:e==\"checked\"?this.$.checked=b:e==\"contenteditable\"?a.call(this,\"contentEditable\",b):a.apply(this,arguments);return this}:CKEDITOR.env.ie8Compat&&CKEDITOR.env.secure?function(b,c){if(b==\"src\"&&c.match(/^http:\\/\\//))try{a.apply(this,arguments)}catch(f){}else a.apply(this,arguments);\nreturn this}:a}(),setAttributes:function(a){for(var b in a)this.setAttribute(b,a[b]);return this},setValue:function(a){this.$.value=a;return this},removeAttribute:function(){var a=function(a){this.$.removeAttribute(a)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(a){a==\"class\"?a=\"className\":a==\"tabindex\"?a=\"tabIndex\":a==\"contenteditable\"&&(a=\"contentEditable\");this.$.removeAttribute(a)}:a}(),removeAttributes:function(a){if(CKEDITOR.tools.isArray(a))for(var b=0;b<\na.length;b++)this.removeAttribute(a[b]);else for(b in a)a.hasOwnProperty(b)&&this.removeAttribute(b)},removeStyle:function(a){var b=this.$.style;if(!b.removeProperty&&(a==\"border\"||a==\"margin\"||a==\"padding\")){var c=[\"top\",\"left\",\"right\",\"bottom\"],f;a==\"border\"&&(f=[\"color\",\"style\",\"width\"]);for(var b=[],h=0;h<c.length;h++)if(f)for(var i=0;i<f.length;i++)b.push([a,c[h],f[i]].join(\"-\"));else b.push([a,c[h]].join(\"-\"));for(a=0;a<b.length;a++)this.removeStyle(b[a])}else{b.removeProperty?b.removeProperty(a):\nb.removeAttribute(CKEDITOR.tools.cssStyleToDomStyle(a));this.$.style.cssText||this.removeAttribute(\"style\")}},setStyle:function(a,b){this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]=b;return this},setStyles:function(a){for(var b in a)this.setStyle(b,a[b]);return this},setOpacity:function(a){if(CKEDITOR.env.ie&&CKEDITOR.env.version<9){a=Math.round(a*100);this.setStyle(\"filter\",a>=100?\"\":\"progid:DXImageTransform.Microsoft.Alpha(opacity=\"+a+\")\")}else this.setStyle(\"opacity\",a)},unselectable:function(){this.setStyles(CKEDITOR.tools.cssVendorPrefix(\"user-select\",\n\"none\"));if(CKEDITOR.env.ie){this.setAttribute(\"unselectable\",\"on\");for(var a,b=this.getElementsByTag(\"*\"),c=0,f=b.count();c<f;c++){a=b.getItem(c);a.setAttribute(\"unselectable\",\"on\")}}},getPositionedAncestor:function(){for(var a=this;a.getName()!=\"html\";){if(a.getComputedStyle(\"position\")!=\"static\")return a;a=a.getParent()}return null},getDocumentPosition:function(a){var b=0,c=0,f=this.getDocument(),h=f.getBody(),i=f.$.compatMode==\"BackCompat\";if(document.documentElement.getBoundingClientRect){var m=\nthis.$.getBoundingClientRect(),p=f.$.documentElement,s=p.clientTop||h.$.clientTop||0,x=p.clientLeft||h.$.clientLeft||0,q=true;if(CKEDITOR.env.ie){q=f.getDocumentElement().contains(this);f=f.getBody().contains(this);q=i&&f||!i&&q}if(q){b=m.left+(!i&&p.scrollLeft||h.$.scrollLeft);b=b-x;c=m.top+(!i&&p.scrollTop||h.$.scrollTop);c=c-s}}else{h=this;for(f=null;h&&!(h.getName()==\"body\"||h.getName()==\"html\");){b=b+(h.$.offsetLeft-h.$.scrollLeft);c=c+(h.$.offsetTop-h.$.scrollTop);if(!h.equals(this)){b=b+(h.$.clientLeft||\n0);c=c+(h.$.clientTop||0)}for(;f&&!f.equals(h);){b=b-f.$.scrollLeft;c=c-f.$.scrollTop;f=f.getParent()}f=h;h=(m=h.$.offsetParent)?new CKEDITOR.dom.element(m):null}}if(a){h=this.getWindow();f=a.getWindow();if(!h.equals(f)&&h.$.frameElement){a=(new CKEDITOR.dom.element(h.$.frameElement)).getDocumentPosition(a);b=b+a.x;c=c+a.y}}if(!document.documentElement.getBoundingClientRect&&CKEDITOR.env.gecko&&!i){b=b+(this.$.clientLeft?1:0);c=c+(this.$.clientTop?1:0)}return{x:b,y:c}},scrollIntoView:function(a){var b=\nthis.getParent();if(b){do{(b.$.clientWidth&&b.$.clientWidth<b.$.scrollWidth||b.$.clientHeight&&b.$.clientHeight<b.$.scrollHeight)&&!b.is(\"body\")&&this.scrollIntoParent(b,a,1);if(b.is(\"html\")){var c=b.getWindow();try{var f=c.$.frameElement;f&&(b=new CKEDITOR.dom.element(f))}catch(h){}}}while(b=b.getParent())}},scrollIntoParent:function(a,b,c){var f,h,i,m;function p(b,e){if(/body|html/.test(a.getName()))a.getWindow().$.scrollBy(b,e);else{a.$.scrollLeft=a.$.scrollLeft+b;a.$.scrollTop=a.$.scrollTop+e}}\nfunction s(a,b){var d={x:0,y:0};if(!a.is(q?\"body\":\"html\")){var e=a.$.getBoundingClientRect();d.x=e.left;d.y=e.top}e=a.getWindow();if(!e.equals(b)){e=s(CKEDITOR.dom.element.get(e.$.frameElement),b);d.x=d.x+e.x;d.y=d.y+e.y}return d}function x(a,b){return parseInt(a.getComputedStyle(\"margin-\"+b)||0,10)||0}!a&&(a=this.getWindow());i=a.getDocument();var q=i.$.compatMode==\"BackCompat\";a instanceof CKEDITOR.dom.window&&(a=q?i.getBody():i.getDocumentElement());i=a.getWindow();h=s(this,i);var o=s(a,i),u=this.$.offsetHeight;\nf=this.$.offsetWidth;var A=a.$.clientHeight,k=a.$.clientWidth;i=h.x-x(this,\"left\")-o.x||0;m=h.y-x(this,\"top\")-o.y||0;f=h.x+f+x(this,\"right\")-(o.x+k)||0;h=h.y+u+x(this,\"bottom\")-(o.y+A)||0;if(m<0||h>0)p(0,b===true?m:b===false?h:m<0?m:h);if(c&&(i<0||f>0))p(i<0?i:f,0)},setState:function(a,b,c){b=b||\"cke\";switch(a){case CKEDITOR.TRISTATE_ON:this.addClass(b+\"_on\");this.removeClass(b+\"_off\");this.removeClass(b+\"_disabled\");c&&this.setAttribute(\"aria-pressed\",true);c&&this.removeAttribute(\"aria-disabled\");\nbreak;case CKEDITOR.TRISTATE_DISABLED:this.addClass(b+\"_disabled\");this.removeClass(b+\"_off\");this.removeClass(b+\"_on\");c&&this.setAttribute(\"aria-disabled\",true);c&&this.removeAttribute(\"aria-pressed\");break;default:this.addClass(b+\"_off\");this.removeClass(b+\"_on\");this.removeClass(b+\"_disabled\");c&&this.removeAttribute(\"aria-pressed\");c&&this.removeAttribute(\"aria-disabled\")}},getFrameDocument:function(){var a=this.$;try{a.contentWindow.document}catch(b){a.src=a.src}return a&&new CKEDITOR.dom.document(a.contentWindow.document)},\ncopyAttributes:function(a,b){for(var c=this.$.attributes,b=b||{},f=0;f<c.length;f++){var h=c[f],i=h.nodeName.toLowerCase(),m;if(!(i in b))if(i==\"checked\"&&(m=this.getAttribute(i)))a.setAttribute(i,m);else if(!CKEDITOR.env.ie||this.hasAttribute(i)){m=this.getAttribute(i);if(m===null)m=h.nodeValue;a.setAttribute(i,m)}}if(this.$.style.cssText!==\"\")a.$.style.cssText=this.$.style.cssText},renameNode:function(a){if(this.getName()!=a){var b=this.getDocument(),a=new CKEDITOR.dom.element(a,b);this.copyAttributes(a);\nthis.moveChildren(a);this.getParent()&&this.$.parentNode.replaceChild(a.$,this.$);a.$[\"data-cke-expando\"]=this.$[\"data-cke-expando\"];this.$=a.$;delete this.getName}},getChild:function(){function a(b,d){var c=b.childNodes;if(d>=0&&d<c.length)return c[d]}return function(b){var c=this.$;if(b.slice)for(;b.length>0&&c;)c=a(c,b.shift());else c=a(c,b);return c?new CKEDITOR.dom.node(c):null}}(),getChildCount:function(){return this.$.childNodes.length},disableContextMenu:function(){this.on(\"contextmenu\",function(a){a.data.getTarget().hasClass(\"cke_enable_context_menu\")||\na.data.preventDefault()})},getDirection:function(a){return a?this.getComputedStyle(\"direction\")||this.getDirection()||this.getParent()&&this.getParent().getDirection(1)||this.getDocument().$.dir||\"ltr\":this.getStyle(\"direction\")||this.getAttribute(\"dir\")},data:function(a,b){a=\"data-\"+a;if(b===void 0)return this.getAttribute(a);b===false?this.removeAttribute(a):this.setAttribute(a,b);return null},getEditor:function(){var a=CKEDITOR.instances,b,c;for(b in a){c=a[b];if(c.element.equals(this)&&c.elementMode!=\nCKEDITOR.ELEMENT_MODE_APPENDTO)return c}return null},find:function(b){var e=a(this),b=new CKEDITOR.dom.nodeList(this.$.querySelectorAll(c(this,b)));e();return b},findOne:function(b){var e=a(this),b=this.$.querySelector(c(this,b));e();return b?new CKEDITOR.dom.element(b):null},forEach:function(a,b,c){if(!c&&(!b||this.type==b))var f=a(this);if(f!==false)for(var c=this.getChildren(),h=0;h<c.count();h++){f=c.getItem(h);f.type==CKEDITOR.NODE_ELEMENT?f.forEach(a,b):(!b||f.type==b)&&a(f)}}});var f={width:[\"border-left-width\",\n\"border-right-width\",\"padding-left\",\"padding-right\"],height:[\"border-top-width\",\"border-bottom-width\",\"padding-top\",\"padding-bottom\"]};CKEDITOR.dom.element.prototype.setSize=function(a,c,f){if(typeof c==\"number\"){if(f&&(!CKEDITOR.env.ie||!CKEDITOR.env.quirks))c=c-b.call(this,a);this.setStyle(a,c+\"px\")}};CKEDITOR.dom.element.prototype.getSize=function(a,c){var f=Math.max(this.$[\"offset\"+CKEDITOR.tools.capitalize(a)],this.$[\"client\"+CKEDITOR.tools.capitalize(a)])||0;c&&(f=f-b.call(this,a));return f}})();\nCKEDITOR.dom.documentFragment=function(a){a=a||CKEDITOR.document;this.$=a.type==CKEDITOR.NODE_DOCUMENT?a.$.createDocumentFragment():a};\nCKEDITOR.tools.extend(CKEDITOR.dom.documentFragment.prototype,CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,insertAfterNode:function(a){a=a.$;a.parentNode.insertBefore(this.$,a.nextSibling)}},!0,{append:1,appendBogus:1,getFirst:1,getLast:1,getParent:1,getNext:1,getPrevious:1,appendTo:1,moveChildren:1,insertBefore:1,insertAfterNode:1,replace:1,trim:1,type:1,ltrim:1,rtrim:1,getDocument:1,getChildCount:1,getChild:1,getChildren:1});\n(function(){function a(a,b){var c=this.range;if(this._.end)return null;if(!this._.start){this._.start=1;if(c.collapsed){this.end();return null}c.optimize()}var d,e=c.startContainer;d=c.endContainer;var f=c.startOffset,m=c.endOffset,k,l=this.guard,j=this.type,v=a?\"getPreviousSourceNode\":\"getNextSourceNode\";if(!a&&!this._.guardLTR){var g=d.type==CKEDITOR.NODE_ELEMENT?d:d.getParent(),r=d.type==CKEDITOR.NODE_ELEMENT?d.getChild(m):d.getNext();this._.guardLTR=function(a,b){return(!b||!g.equals(a))&&(!r||\n!a.equals(r))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}if(a&&!this._.guardRTL){var h=e.type==CKEDITOR.NODE_ELEMENT?e:e.getParent(),i=e.type==CKEDITOR.NODE_ELEMENT?f?e.getChild(f-1):null:e.getPrevious();this._.guardRTL=function(a,b){return(!b||!h.equals(a))&&(!i||!a.equals(i))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}var F=a?this._.guardRTL:this._.guardLTR;k=l?function(a,b){return F(a,b)===false?false:l(a,b)}:F;if(this.current)d=this.current[v](false,j,k);else{if(a)d.type==\nCKEDITOR.NODE_ELEMENT&&(d=m>0?d.getChild(m-1):k(d,true)===false?null:d.getPreviousSourceNode(true,j,k));else{d=e;if(d.type==CKEDITOR.NODE_ELEMENT&&!(d=d.getChild(f)))d=k(e,true)===false?null:e.getNextSourceNode(true,j,k)}d&&k(d)===false&&(d=null)}for(;d&&!this._.end;){this.current=d;if(!this.evaluator||this.evaluator(d)!==false){if(!b)return d}else if(b&&this.evaluator)return false;d=d[v](false,j,k)}this.end();return this.current=null}function c(b){for(var d,c=null;d=a.call(this,b);)c=d;return c}\nfunction b(a){if(i(a))return false;if(a.type==CKEDITOR.NODE_TEXT)return true;if(a.type==CKEDITOR.NODE_ELEMENT){if(a.is(CKEDITOR.dtd.$inline)||a.is(\"hr\")||a.getAttribute(\"contenteditable\")==\"false\")return true;var b;if(b=!CKEDITOR.env.needsBrFiller)if(b=a.is(m))a:{b=0;for(var d=a.getChildCount();b<d;++b)if(!i(a.getChild(b))){b=false;break a}b=true}if(b)return true}return false}CKEDITOR.dom.walker=CKEDITOR.tools.createClass({$:function(a){this.range=a;this._={}},proto:{end:function(){this._.end=1},\nnext:function(){return a.call(this)},previous:function(){return a.call(this,1)},checkForward:function(){return a.call(this,0,1)!==false},checkBackward:function(){return a.call(this,1,1)!==false},lastForward:function(){return c.call(this)},lastBackward:function(){return c.call(this,1)},reset:function(){delete this.current;this._={}}}});var f={block:1,\"list-item\":1,table:1,\"table-row-group\":1,\"table-header-group\":1,\"table-footer-group\":1,\"table-row\":1,\"table-column-group\":1,\"table-column\":1,\"table-cell\":1,\n\"table-caption\":1},d={absolute:1,fixed:1};CKEDITOR.dom.element.prototype.isBlockBoundary=function(a){return this.getComputedStyle(\"float\")==\"none\"&&!(this.getComputedStyle(\"position\")in d)&&f[this.getComputedStyle(\"display\")]?true:!!(this.is(CKEDITOR.dtd.$block)||a&&this.is(a))};CKEDITOR.dom.walker.blockBoundary=function(a){return function(b){return!(b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary(a))}};CKEDITOR.dom.walker.listItemBoundary=function(){return this.blockBoundary({br:1})};CKEDITOR.dom.walker.bookmark=\nfunction(a,b){function d(a){return a&&a.getName&&a.getName()==\"span\"&&a.data(\"cke-bookmark\")}return function(c){var e,f;e=c&&c.type!=CKEDITOR.NODE_ELEMENT&&(f=c.getParent())&&d(f);e=a?e:e||d(c);return!!(b^e)}};CKEDITOR.dom.walker.whitespaces=function(a){return function(b){var d;b&&b.type==CKEDITOR.NODE_TEXT&&(d=!CKEDITOR.tools.trim(b.getText())||CKEDITOR.env.webkit&&b.getText()==\"​\");return!!(a^d)}};CKEDITOR.dom.walker.invisible=function(a){var b=CKEDITOR.dom.walker.whitespaces();return function(d){if(b(d))d=\n1;else{d.type==CKEDITOR.NODE_TEXT&&(d=d.getParent());d=!d.$.offsetHeight}return!!(a^d)}};CKEDITOR.dom.walker.nodeType=function(a,b){return function(d){return!!(b^d.type==a)}};CKEDITOR.dom.walker.bogus=function(a){function b(a){return!g(a)&&!n(a)}return function(d){var c=CKEDITOR.env.needsBrFiller?d.is&&d.is(\"br\"):d.getText&&e.test(d.getText());if(c){c=d.getParent();d=d.getNext(b);c=c.isBlockBoundary()&&(!d||d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary())}return!!(a^c)}};CKEDITOR.dom.walker.temp=\nfunction(a){return function(b){b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent());b=b&&b.hasAttribute(\"data-cke-temp\");return!!(a^b)}};var e=/^[\\t\\r\\n ]*(?:&nbsp;|\\xa0)$/,g=CKEDITOR.dom.walker.whitespaces(),n=CKEDITOR.dom.walker.bookmark(),h=CKEDITOR.dom.walker.temp();CKEDITOR.dom.walker.ignored=function(a){return function(b){b=g(b)||n(b)||h(b);return!!(a^b)}};var i=CKEDITOR.dom.walker.ignored(),m=function(a){var b={},d;for(d in a)CKEDITOR.dtd[d][\"#\"]&&(b[d]=1);return b}(CKEDITOR.dtd.$block);CKEDITOR.dom.walker.editable=\nfunction(a){return function(d){return!!(a^b(d))}};CKEDITOR.dom.element.prototype.getBogus=function(){var a=this;do a=a.getPreviousSourceNode();while(n(a)||g(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.is(CKEDITOR.dtd.$inline)&&!a.is(CKEDITOR.dtd.$empty));return a&&(CKEDITOR.env.needsBrFiller?a.is&&a.is(\"br\"):a.getText&&e.test(a.getText()))?a:false}})();\nCKEDITOR.dom.range=function(a){this.endOffset=this.endContainer=this.startOffset=this.startContainer=null;this.collapsed=true;var c=a instanceof CKEDITOR.dom.document;this.document=c?a:a.getDocument();this.root=c?a.getBody():a};\n(function(){function a(){var a=false,b=CKEDITOR.dom.walker.whitespaces(),d=CKEDITOR.dom.walker.bookmark(true),c=CKEDITOR.dom.walker.bogus();return function(f){if(d(f)||b(f))return true;if(c(f)&&!a)return a=true;return f.type==CKEDITOR.NODE_TEXT&&(f.hasAscendant(\"pre\")||CKEDITOR.tools.trim(f.getText()).length)||f.type==CKEDITOR.NODE_ELEMENT&&!f.is(e)?false:true}}function c(a){var b=CKEDITOR.dom.walker.whitespaces(),d=CKEDITOR.dom.walker.bookmark(1);return function(c){return d(c)||b(c)?true:!a&&g(c)||\nc.type==CKEDITOR.NODE_ELEMENT&&c.is(CKEDITOR.dtd.$removeEmpty)}}function b(a){return function(){var b;return this[a?\"getPreviousNode\":\"getNextNode\"](function(a){!b&&i(a)&&(b=a);return h(a)&&!(g(a)&&a.equals(b))})}}var f=function(a){a.collapsed=a.startContainer&&a.endContainer&&a.startContainer.equals(a.endContainer)&&a.startOffset==a.endOffset},d=function(a,b,d,c){a.optimizeBookmark();var e=a.startContainer,f=a.endContainer,u=a.startOffset,g=a.endOffset,k,l;if(f.type==CKEDITOR.NODE_TEXT)f=f.split(g);\nelse if(f.getChildCount()>0)if(g>=f.getChildCount()){f=f.append(a.document.createText(\"\"));l=true}else f=f.getChild(g);if(e.type==CKEDITOR.NODE_TEXT){e.split(u);e.equals(f)&&(f=e.getNext())}else if(u)if(u>=e.getChildCount()){e=e.append(a.document.createText(\"\"));k=true}else e=e.getChild(u).getPrevious();else{e=e.append(a.document.createText(\"\"),1);k=true}var u=e.getParents(),g=f.getParents(),j,v,h;for(j=0;j<u.length;j++){v=u[j];h=g[j];if(!v.equals(h))break}for(var r=d,i,n,F,D=j;D<u.length;D++){i=\nu[D];r&&!i.equals(e)&&(n=r.append(i.clone()));for(i=i.getNext();i;){if(i.equals(g[D])||i.equals(f))break;F=i.getNext();if(b==2)r.append(i.clone(true));else{i.remove();b==1&&r.append(i)}i=F}r&&(r=n)}r=d;for(d=j;d<g.length;d++){i=g[d];b>0&&!i.equals(f)&&(n=r.append(i.clone()));if(!u[d]||i.$.parentNode!=u[d].$.parentNode)for(i=i.getPrevious();i;){if(i.equals(u[d])||i.equals(e))break;F=i.getPrevious();if(b==2)r.$.insertBefore(i.$.cloneNode(true),r.$.firstChild);else{i.remove();b==1&&r.$.insertBefore(i.$,\nr.$.firstChild)}i=F}r&&(r=n)}if(b==2){v=a.startContainer;if(v.type==CKEDITOR.NODE_TEXT){v.$.data=v.$.data+v.$.nextSibling.data;v.$.parentNode.removeChild(v.$.nextSibling)}a=a.endContainer;if(a.type==CKEDITOR.NODE_TEXT&&a.$.nextSibling){a.$.data=a.$.data+a.$.nextSibling.data;a.$.parentNode.removeChild(a.$.nextSibling)}}else{if(v&&h&&(e.$.parentNode!=v.$.parentNode||f.$.parentNode!=h.$.parentNode)){b=h.getIndex();k&&h.$.parentNode==e.$.parentNode&&b--;if(c&&v.type==CKEDITOR.NODE_ELEMENT){c=CKEDITOR.dom.element.createFromHtml('<span data-cke-bookmark=\"1\" style=\"display:none\">&nbsp;</span>',\na.document);c.insertAfter(v);v.mergeSiblings(false);a.moveToBookmark({startNode:c})}else a.setStart(h.getParent(),b)}a.collapse(true)}k&&e.remove();l&&f.$.parentNode&&f.remove()},e={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,\"var\":1},g=CKEDITOR.dom.walker.bogus(),n=/^[\\t\\r\\n ]*(?:&nbsp;|\\xa0)$/,h=CKEDITOR.dom.walker.editable(),i=CKEDITOR.dom.walker.ignored(true);CKEDITOR.dom.range.prototype=\n{clone:function(){var a=new CKEDITOR.dom.range(this.root);a.startContainer=this.startContainer;a.startOffset=this.startOffset;a.endContainer=this.endContainer;a.endOffset=this.endOffset;a.collapsed=this.collapsed;return a},collapse:function(a){if(a){this.endContainer=this.startContainer;this.endOffset=this.startOffset}else{this.startContainer=this.endContainer;this.startOffset=this.endOffset}this.collapsed=true},cloneContents:function(){var a=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||\nd(this,2,a);return a},deleteContents:function(a){this.collapsed||d(this,0,null,a)},extractContents:function(a){var b=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||d(this,1,b,a);return b},createBookmark:function(a){var b,d,c,e,f=this.collapsed;b=this.document.createElement(\"span\");b.data(\"cke-bookmark\",1);b.setStyle(\"display\",\"none\");b.setHtml(\"&nbsp;\");if(a){c=\"cke_bm_\"+CKEDITOR.tools.getNextNumber();b.setAttribute(\"id\",c+(f?\"C\":\"S\"))}if(!f){d=b.clone();d.setHtml(\"&nbsp;\");a&&d.setAttribute(\"id\",\nc+\"E\");e=this.clone();e.collapse();e.insertNode(d)}e=this.clone();e.collapse(true);e.insertNode(b);if(d){this.setStartAfter(b);this.setEndBefore(d)}else this.moveToPosition(b,CKEDITOR.POSITION_AFTER_END);return{startNode:a?c+(f?\"C\":\"S\"):b,endNode:a?c+\"E\":d,serializable:a,collapsed:f}},createBookmark2:function(){function a(b){var d=b.container,c=b.offset,e;e=d;var f=c;e=e.type!=CKEDITOR.NODE_ELEMENT||f===0||f==e.getChildCount()?0:e.getChild(f-1).type==CKEDITOR.NODE_TEXT&&e.getChild(f).type==CKEDITOR.NODE_TEXT;\nif(e){d=d.getChild(c-1);c=d.getLength()}d.type==CKEDITOR.NODE_ELEMENT&&c>1&&(c=d.getChild(c-1).getIndex(true)+1);if(d.type==CKEDITOR.NODE_TEXT){e=d;for(f=0;(e=e.getPrevious())&&e.type==CKEDITOR.NODE_TEXT;)f=f+e.getLength();c=c+f}b.container=d;b.offset=c}return function(b){var d=this.collapsed,c={container:this.startContainer,offset:this.startOffset},e={container:this.endContainer,offset:this.endOffset};if(b){a(c);d||a(e)}return{start:c.container.getAddress(b),end:d?null:e.container.getAddress(b),\nstartOffset:c.offset,endOffset:e.offset,normalized:b,collapsed:d,is2:true}}}(),moveToBookmark:function(a){if(a.is2){var b=this.document.getByAddress(a.start,a.normalized),d=a.startOffset,c=a.end&&this.document.getByAddress(a.end,a.normalized),a=a.endOffset;this.setStart(b,d);c?this.setEnd(c,a):this.collapse(true)}else{b=(d=a.serializable)?this.document.getById(a.startNode):a.startNode;a=d?this.document.getById(a.endNode):a.endNode;this.setStartBefore(b);b.remove();if(a){this.setEndBefore(a);a.remove()}else this.collapse(true)}},\ngetBoundaryNodes:function(){var a=this.startContainer,b=this.endContainer,d=this.startOffset,c=this.endOffset,e;if(a.type==CKEDITOR.NODE_ELEMENT){e=a.getChildCount();if(e>d)a=a.getChild(d);else if(e<1)a=a.getPreviousSourceNode();else{for(a=a.$;a.lastChild;)a=a.lastChild;a=new CKEDITOR.dom.node(a);a=a.getNextSourceNode()||a}}if(b.type==CKEDITOR.NODE_ELEMENT){e=b.getChildCount();if(e>c)b=b.getChild(c).getPreviousSourceNode(true);else if(e<1)b=b.getPreviousSourceNode();else{for(b=b.$;b.lastChild;)b=\nb.lastChild;b=new CKEDITOR.dom.node(b)}}a.getPosition(b)&CKEDITOR.POSITION_FOLLOWING&&(a=b);return{startNode:a,endNode:b}},getCommonAncestor:function(a,b){var d=this.startContainer,c=this.endContainer,d=d.equals(c)?a&&d.type==CKEDITOR.NODE_ELEMENT&&this.startOffset==this.endOffset-1?d.getChild(this.startOffset):d:d.getCommonAncestor(c);return b&&!d.is?d.getParent():d},optimize:function(){var a=this.startContainer,b=this.startOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setStartAfter(a):\nthis.setStartBefore(a));a=this.endContainer;b=this.endOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setEndAfter(a):this.setEndBefore(a))},optimizeBookmark:function(){var a=this.startContainer,b=this.endContainer;a.is&&(a.is(\"span\")&&a.data(\"cke-bookmark\"))&&this.setStartAt(a,CKEDITOR.POSITION_BEFORE_START);b&&(b.is&&b.is(\"span\")&&b.data(\"cke-bookmark\"))&&this.setEndAt(b,CKEDITOR.POSITION_AFTER_END)},trim:function(a,b){var d=this.startContainer,c=this.startOffset,e=this.collapsed;\nif((!a||e)&&d&&d.type==CKEDITOR.NODE_TEXT){if(c)if(c>=d.getLength()){c=d.getIndex()+1;d=d.getParent()}else{var f=d.split(c),c=d.getIndex()+1,d=d.getParent();if(this.startContainer.equals(this.endContainer))this.setEnd(f,this.endOffset-this.startOffset);else if(d.equals(this.endContainer))this.endOffset=this.endOffset+1}else{c=d.getIndex();d=d.getParent()}this.setStart(d,c);if(e){this.collapse(true);return}}d=this.endContainer;c=this.endOffset;if(!b&&!e&&d&&d.type==CKEDITOR.NODE_TEXT){if(c){c>=d.getLength()||\nd.split(c);c=d.getIndex()+1}else c=d.getIndex();d=d.getParent();this.setEnd(d,c)}},enlarge:function(a,b){function d(a){return a&&a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute(\"contenteditable\")?null:a}var c=RegExp(/[^\\s\\ufeff]/);switch(a){case CKEDITOR.ENLARGE_INLINE:var e=1;case CKEDITOR.ENLARGE_ELEMENT:if(this.collapsed)break;var f=this.getCommonAncestor(),u=this.root,i,k,l,j,v,g=false,r,h;r=this.startContainer;var n=this.startOffset;if(r.type==CKEDITOR.NODE_TEXT){if(n){r=!CKEDITOR.tools.trim(r.substring(0,\nn)).length&&r;g=!!r}if(r&&!(j=r.getPrevious()))l=r.getParent()}else{n&&(j=r.getChild(n-1)||r.getLast());j||(l=r)}for(l=d(l);l||j;){if(l&&!j){!v&&l.equals(f)&&(v=true);if(e?l.isBlockBoundary():!u.contains(l))break;if(!g||l.getComputedStyle(\"display\")!=\"inline\"){g=false;v?i=l:this.setStartBefore(l)}j=l.getPrevious()}for(;j;){r=false;if(j.type==CKEDITOR.NODE_COMMENT)j=j.getPrevious();else{if(j.type==CKEDITOR.NODE_TEXT){h=j.getText();c.test(h)&&(j=null);r=/[\\s\\ufeff]$/.test(h)}else if((j.$.offsetWidth>\n0||b&&j.is(\"br\"))&&!j.data(\"cke-bookmark\"))if(g&&CKEDITOR.dtd.$removeEmpty[j.getName()]){h=j.getText();if(c.test(h))j=null;else for(var n=j.$.getElementsByTagName(\"*\"),F=0,D;D=n[F++];)if(!CKEDITOR.dtd.$removeEmpty[D.nodeName.toLowerCase()]){j=null;break}j&&(r=!!h.length)}else j=null;r&&(g?v?i=l:l&&this.setStartBefore(l):g=true);if(j){r=j.getPrevious();if(!l&&!r){l=j;j=null;break}j=r}else l=null}}l&&(l=d(l.getParent()))}r=this.endContainer;n=this.endOffset;l=j=null;v=g=false;var L=function(a,b){var d=\nnew CKEDITOR.dom.range(u);d.setStart(a,b);d.setEndAt(u,CKEDITOR.POSITION_BEFORE_END);var d=new CKEDITOR.dom.walker(d),e;for(d.guard=function(a){return!(a.type==CKEDITOR.NODE_ELEMENT&&a.isBlockBoundary())};e=d.next();){if(e.type!=CKEDITOR.NODE_TEXT)return false;h=e!=a?e.getText():e.substring(b);if(c.test(h))return false}return true};if(r.type==CKEDITOR.NODE_TEXT)if(CKEDITOR.tools.trim(r.substring(n)).length)g=true;else{g=!r.getLength();if(n==r.getLength()){if(!(j=r.getNext()))l=r.getParent()}else L(r,\nn)&&(l=r.getParent())}else(j=r.getChild(n))||(l=r);for(;l||j;){if(l&&!j){!v&&l.equals(f)&&(v=true);if(e?l.isBlockBoundary():!u.contains(l))break;if(!g||l.getComputedStyle(\"display\")!=\"inline\"){g=false;v?k=l:l&&this.setEndAfter(l)}j=l.getNext()}for(;j;){r=false;if(j.type==CKEDITOR.NODE_TEXT){h=j.getText();L(j,0)||(j=null);r=/^[\\s\\ufeff]/.test(h)}else if(j.type==CKEDITOR.NODE_ELEMENT){if((j.$.offsetWidth>0||b&&j.is(\"br\"))&&!j.data(\"cke-bookmark\"))if(g&&CKEDITOR.dtd.$removeEmpty[j.getName()]){h=j.getText();\nif(c.test(h))j=null;else{n=j.$.getElementsByTagName(\"*\");for(F=0;D=n[F++];)if(!CKEDITOR.dtd.$removeEmpty[D.nodeName.toLowerCase()]){j=null;break}}j&&(r=!!h.length)}else j=null}else r=1;r&&g&&(v?k=l:this.setEndAfter(l));if(j){r=j.getNext();if(!l&&!r){l=j;j=null;break}j=r}else l=null}l&&(l=d(l.getParent()))}if(i&&k){f=i.contains(k)?k:i;this.setStartBefore(f);this.setEndAfter(f)}break;case CKEDITOR.ENLARGE_BLOCK_CONTENTS:case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:l=new CKEDITOR.dom.range(this.root);u=\nthis.root;l.setStartAt(u,CKEDITOR.POSITION_AFTER_START);l.setEnd(this.startContainer,this.startOffset);l=new CKEDITOR.dom.walker(l);var J,w,z=CKEDITOR.dom.walker.blockBoundary(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?{br:1}:null),t=null,E=function(a){if(a.type==CKEDITOR.NODE_ELEMENT&&a.getAttribute(\"contenteditable\")==\"false\")if(t){if(t.equals(a)){t=null;return}}else t=a;else if(t)return;var b=z(a);b||(J=a);return b},e=function(a){var b=E(a);!b&&(a.is&&a.is(\"br\"))&&(w=a);return b};l.guard=E;l=l.lastBackward();\nJ=J||u;this.setStartAt(J,!J.is(\"br\")&&(!l&&this.checkStartOfBlock()||l&&J.contains(l))?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_AFTER_END);if(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS){l=this.clone();l=new CKEDITOR.dom.walker(l);var y=CKEDITOR.dom.walker.whitespaces(),C=CKEDITOR.dom.walker.bookmark();l.evaluator=function(a){return!y(a)&&!C(a)};if((l=l.previous())&&l.type==CKEDITOR.NODE_ELEMENT&&l.is(\"br\"))break}l=this.clone();l.collapse();l.setEndAt(u,CKEDITOR.POSITION_BEFORE_END);l=new CKEDITOR.dom.walker(l);\nl.guard=a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?e:E;J=t=w=null;l=l.lastForward();J=J||u;this.setEndAt(J,!l&&this.checkEndOfBlock()||l&&J.contains(l)?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_BEFORE_START);w&&this.setEndAfter(w)}},shrink:function(a,b,d){if(!this.collapsed){var a=a||CKEDITOR.SHRINK_TEXT,c=this.clone(),e=this.startContainer,f=this.endContainer,u=this.startOffset,g=this.endOffset,k=1,l=1;if(e&&e.type==CKEDITOR.NODE_TEXT)if(u)if(u>=e.getLength())c.setStartAfter(e);else{c.setStartBefore(e);\nk=0}else c.setStartBefore(e);if(f&&f.type==CKEDITOR.NODE_TEXT)if(g)if(g>=f.getLength())c.setEndAfter(f);else{c.setEndAfter(f);l=0}else c.setEndBefore(f);var c=new CKEDITOR.dom.walker(c),j=CKEDITOR.dom.walker.bookmark();c.evaluator=function(b){return b.type==(a==CKEDITOR.SHRINK_ELEMENT?CKEDITOR.NODE_ELEMENT:CKEDITOR.NODE_TEXT)};var v;c.guard=function(b,c){if(j(b))return true;if(a==CKEDITOR.SHRINK_ELEMENT&&b.type==CKEDITOR.NODE_TEXT||c&&b.equals(v)||d===false&&b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary()||\nb.type==CKEDITOR.NODE_ELEMENT&&b.hasAttribute(\"contenteditable\"))return false;!c&&b.type==CKEDITOR.NODE_ELEMENT&&(v=b);return true};if(k)(e=c[a==CKEDITOR.SHRINK_ELEMENT?\"lastForward\":\"next\"]())&&this.setStartAt(e,b?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_START);if(l){c.reset();(c=c[a==CKEDITOR.SHRINK_ELEMENT?\"lastBackward\":\"previous\"]())&&this.setEndAt(c,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_END)}return!(!k&&!l)}},insertNode:function(a){this.optimizeBookmark();this.trim(false,\ntrue);var b=this.startContainer,d=b.getChild(this.startOffset);d?a.insertBefore(d):b.append(a);a.getParent()&&a.getParent().equals(this.endContainer)&&this.endOffset++;this.setStartBefore(a)},moveToPosition:function(a,b){this.setStartAt(a,b);this.collapse(true)},moveToRange:function(a){this.setStart(a.startContainer,a.startOffset);this.setEnd(a.endContainer,a.endOffset)},selectNodeContents:function(a){this.setStart(a,0);this.setEnd(a,a.type==CKEDITOR.NODE_TEXT?a.getLength():a.getChildCount())},setStart:function(a,\nb){if(a.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[a.getName()]){b=a.getIndex();a=a.getParent()}this.startContainer=a;this.startOffset=b;if(!this.endContainer){this.endContainer=a;this.endOffset=b}f(this)},setEnd:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[a.getName()]){b=a.getIndex()+1;a=a.getParent()}this.endContainer=a;this.endOffset=b;if(!this.startContainer){this.startContainer=a;this.startOffset=b}f(this)},setStartAfter:function(a){this.setStart(a.getParent(),a.getIndex()+\n1)},setStartBefore:function(a){this.setStart(a.getParent(),a.getIndex())},setEndAfter:function(a){this.setEnd(a.getParent(),a.getIndex()+1)},setEndBefore:function(a){this.setEnd(a.getParent(),a.getIndex())},setStartAt:function(a,b){switch(b){case CKEDITOR.POSITION_AFTER_START:this.setStart(a,0);break;case CKEDITOR.POSITION_BEFORE_END:a.type==CKEDITOR.NODE_TEXT?this.setStart(a,a.getLength()):this.setStart(a,a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setStartBefore(a);break;case CKEDITOR.POSITION_AFTER_END:this.setStartAfter(a)}f(this)},\nsetEndAt:function(a,b){switch(b){case CKEDITOR.POSITION_AFTER_START:this.setEnd(a,0);break;case CKEDITOR.POSITION_BEFORE_END:a.type==CKEDITOR.NODE_TEXT?this.setEnd(a,a.getLength()):this.setEnd(a,a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setEndBefore(a);break;case CKEDITOR.POSITION_AFTER_END:this.setEndAfter(a)}f(this)},fixBlock:function(a,b){var d=this.createBookmark(),c=this.document.createElement(b);this.collapse(a);this.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);this.extractContents().appendTo(c);\nc.trim();c.appendBogus();this.insertNode(c);this.moveToBookmark(d);return c},splitBlock:function(a){var b=new CKEDITOR.dom.elementPath(this.startContainer,this.root),d=new CKEDITOR.dom.elementPath(this.endContainer,this.root),c=b.block,e=d.block,f=null;if(!b.blockLimit.equals(d.blockLimit))return null;if(a!=\"br\"){if(!c){c=this.fixBlock(true,a);e=(new CKEDITOR.dom.elementPath(this.endContainer,this.root)).block}e||(e=this.fixBlock(false,a))}a=c&&this.checkStartOfBlock();b=e&&this.checkEndOfBlock();\nthis.deleteContents();if(c&&c.equals(e))if(b){f=new CKEDITOR.dom.elementPath(this.startContainer,this.root);this.moveToPosition(e,CKEDITOR.POSITION_AFTER_END);e=null}else if(a){f=new CKEDITOR.dom.elementPath(this.startContainer,this.root);this.moveToPosition(c,CKEDITOR.POSITION_BEFORE_START);c=null}else{e=this.splitElement(c);c.is(\"ul\",\"ol\")||c.appendBogus()}return{previousBlock:c,nextBlock:e,wasStartOfBlock:a,wasEndOfBlock:b,elementPath:f}},splitElement:function(a){if(!this.collapsed)return null;\nthis.setEndAt(a,CKEDITOR.POSITION_BEFORE_END);var b=this.extractContents(),d=a.clone(false);b.appendTo(d);d.insertAfter(a);this.moveToPosition(a,CKEDITOR.POSITION_AFTER_END);return d},removeEmptyBlocksAtEnd:function(){function a(c){return function(a){return b(a)||(d(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.isEmptyInlineRemoveable())||c.is(\"table\")&&a.is(\"caption\")?false:true}}var b=CKEDITOR.dom.walker.whitespaces(),d=CKEDITOR.dom.walker.bookmark(false);return function(b){for(var d=this.createBookmark(),\nc=this[b?\"endPath\":\"startPath\"](),e=c.block||c.blockLimit,f;e&&!e.equals(c.root)&&!e.getFirst(a(e));){f=e.getParent();this[b?\"setEndAt\":\"setStartAt\"](e,CKEDITOR.POSITION_AFTER_END);e.remove(1);e=f}this.moveToBookmark(d)}}(),startPath:function(){return new CKEDITOR.dom.elementPath(this.startContainer,this.root)},endPath:function(){return new CKEDITOR.dom.elementPath(this.endContainer,this.root)},checkBoundaryOfElement:function(a,b){var d=b==CKEDITOR.START,e=this.clone();e.collapse(d);e[d?\"setStartAt\":\n\"setEndAt\"](a,d?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END);e=new CKEDITOR.dom.walker(e);e.evaluator=c(d);return e[d?\"checkBackward\":\"checkForward\"]()},checkStartOfBlock:function(){var b=this.startContainer,d=this.startOffset;if(CKEDITOR.env.ie&&d&&b.type==CKEDITOR.NODE_TEXT){b=CKEDITOR.tools.ltrim(b.substring(0,d));n.test(b)&&this.trim(0,1)}this.trim();b=new CKEDITOR.dom.elementPath(this.startContainer,this.root);d=this.clone();d.collapse(true);d.setStartAt(b.block||b.blockLimit,\nCKEDITOR.POSITION_AFTER_START);b=new CKEDITOR.dom.walker(d);b.evaluator=a();return b.checkBackward()},checkEndOfBlock:function(){var b=this.endContainer,d=this.endOffset;if(CKEDITOR.env.ie&&b.type==CKEDITOR.NODE_TEXT){b=CKEDITOR.tools.rtrim(b.substring(d));n.test(b)&&this.trim(1,0)}this.trim();b=new CKEDITOR.dom.elementPath(this.endContainer,this.root);d=this.clone();d.collapse(false);d.setEndAt(b.block||b.blockLimit,CKEDITOR.POSITION_BEFORE_END);b=new CKEDITOR.dom.walker(d);b.evaluator=a();return b.checkForward()},\ngetPreviousNode:function(a,b,d){var c=this.clone();c.collapse(1);c.setStartAt(d||this.root,CKEDITOR.POSITION_AFTER_START);d=new CKEDITOR.dom.walker(c);d.evaluator=a;d.guard=b;return d.previous()},getNextNode:function(a,b,d){var c=this.clone();c.collapse();c.setEndAt(d||this.root,CKEDITOR.POSITION_BEFORE_END);d=new CKEDITOR.dom.walker(c);d.evaluator=a;d.guard=b;return d.next()},checkReadOnly:function(){function a(b,d){for(;b;){if(b.type==CKEDITOR.NODE_ELEMENT){if(b.getAttribute(\"contentEditable\")==\n\"false\"&&!b.data(\"cke-editable\"))return 0;if(b.is(\"html\")||b.getAttribute(\"contentEditable\")==\"true\"&&(b.contains(d)||b.equals(d)))break}b=b.getParent()}return 1}return function(){var b=this.startContainer,d=this.endContainer;return!(a(b,d)&&a(d,b))}}(),moveToElementEditablePosition:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&!a.isEditable(false)){this.moveToPosition(a,b?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START);return true}for(var d=0;a;){if(a.type==CKEDITOR.NODE_TEXT){b&&this.endContainer&&\nthis.checkEndOfBlock()&&n.test(a.getText())?this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START):this.moveToPosition(a,b?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START);d=1;break}if(a.type==CKEDITOR.NODE_ELEMENT)if(a.isEditable()){this.moveToPosition(a,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_START);d=1}else if(b&&a.is(\"br\")&&this.endContainer&&this.checkEndOfBlock())this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START);else if(a.getAttribute(\"contenteditable\")==\"false\"&&\na.is(CKEDITOR.dtd.$block)){this.setStartBefore(a);this.setEndAfter(a);return true}var c=a,e=d,f=void 0;c.type==CKEDITOR.NODE_ELEMENT&&c.isEditable(false)&&(f=c[b?\"getLast\":\"getFirst\"](i));!e&&!f&&(f=c[b?\"getPrevious\":\"getNext\"](i));a=f}return!!d},moveToClosestEditablePosition:function(a,b){var d=new CKEDITOR.dom.range(this.root),c=0,e,f=[CKEDITOR.POSITION_AFTER_END,CKEDITOR.POSITION_BEFORE_START];d.moveToPosition(a,f[b?0:1]);if(a.is(CKEDITOR.dtd.$block)){if(e=d[b?\"getNextEditableNode\":\"getPreviousEditableNode\"]()){c=\n1;if(e.type==CKEDITOR.NODE_ELEMENT&&e.is(CKEDITOR.dtd.$block)&&e.getAttribute(\"contenteditable\")==\"false\"){d.setStartAt(e,CKEDITOR.POSITION_BEFORE_START);d.setEndAt(e,CKEDITOR.POSITION_AFTER_END)}else d.moveToPosition(e,f[b?1:0])}}else c=1;c&&this.moveToRange(d);return!!c},moveToElementEditStart:function(a){return this.moveToElementEditablePosition(a)},moveToElementEditEnd:function(a){return this.moveToElementEditablePosition(a,true)},getEnclosedNode:function(){var a=this.clone();a.optimize();if(a.startContainer.type!=\nCKEDITOR.NODE_ELEMENT||a.endContainer.type!=CKEDITOR.NODE_ELEMENT)return null;var a=new CKEDITOR.dom.walker(a),b=CKEDITOR.dom.walker.bookmark(false,true),d=CKEDITOR.dom.walker.whitespaces(true);a.evaluator=function(a){return d(a)&&b(a)};var c=a.next();a.reset();return c&&c.equals(a.previous())?c:null},getTouchedStartNode:function(){var a=this.startContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.startOffset)||a},getTouchedEndNode:function(){var a=this.endContainer;\nreturn this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.endOffset-1)||a},getNextEditableNode:b(),getPreviousEditableNode:b(1),scrollIntoView:function(){var a=new CKEDITOR.dom.element.createFromHtml(\"<span>&nbsp;</span>\",this.document),b,d,c,e=this.clone();e.optimize();if(c=e.startContainer.type==CKEDITOR.NODE_TEXT){d=e.startContainer.getText();b=e.startContainer.split(e.startOffset);a.insertAfter(e.startContainer)}else e.insertNode(a);a.scrollIntoView();if(c){e.startContainer.setText(d);\nb.remove()}a.remove()}}})();CKEDITOR.POSITION_AFTER_START=1;CKEDITOR.POSITION_BEFORE_END=2;CKEDITOR.POSITION_BEFORE_START=3;CKEDITOR.POSITION_AFTER_END=4;CKEDITOR.ENLARGE_ELEMENT=1;CKEDITOR.ENLARGE_BLOCK_CONTENTS=2;CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS=3;CKEDITOR.ENLARGE_INLINE=4;CKEDITOR.START=1;CKEDITOR.END=2;CKEDITOR.SHRINK_ELEMENT=1;CKEDITOR.SHRINK_TEXT=2;\"use strict\";\n(function(){function a(a){if(!(arguments.length<1)){this.range=a;this.forceBrBreak=0;this.enlargeBr=1;this.enforceRealBlocks=0;this._||(this._={})}}function c(a,b,d){for(a=a.getNextSourceNode(b,null,d);!e(a);)a=a.getNextSourceNode(b,null,d);return a}function b(a){var b=[];a.forEach(function(a){if(a.getAttribute(\"contenteditable\")==\"true\"){b.push(a);return false}},CKEDITOR.NODE_ELEMENT,true);return b}function f(a,d,c,e){a:{e==void 0&&(e=b(c));for(var g;g=e.shift();)if(g.getDtd().p){e={element:g,remaining:e};\nbreak a}e=null}if(!e)return 0;if((g=CKEDITOR.filter.instances[e.element.data(\"cke-filter\")])&&!g.check(d))return f(a,d,c,e.remaining);d=new CKEDITOR.dom.range(e.element);d.selectNodeContents(e.element);d=d.createIterator();d.enlargeBr=a.enlargeBr;d.enforceRealBlocks=a.enforceRealBlocks;d.activeFilter=d.filter=g;a._.nestedEditable={element:e.element,container:c,remaining:e.remaining,iterator:d};return 1}var d=/^[\\r\\n\\t ]+$/,e=CKEDITOR.dom.walker.bookmark(false,true),g=CKEDITOR.dom.walker.whitespaces(true),\nn=function(a){return e(a)&&g(a)};a.prototype={getNextParagraph:function(a){var b,g,p,s,x,a=a||\"p\";if(this._.nestedEditable){if(b=this._.nestedEditable.iterator.getNextParagraph(a)){this.activeFilter=this._.nestedEditable.iterator.activeFilter;return b}this.activeFilter=this.filter;if(f(this,a,this._.nestedEditable.container,this._.nestedEditable.remaining)){this.activeFilter=this._.nestedEditable.iterator.activeFilter;return this._.nestedEditable.iterator.getNextParagraph(a)}this._.nestedEditable=\nnull}if(!this.range.root.getDtd()[a])return null;if(!this._.started){var q=this.range.clone();q.shrink(CKEDITOR.SHRINK_ELEMENT,true);g=q.endContainer.hasAscendant(\"pre\",true)||q.startContainer.hasAscendant(\"pre\",true);q.enlarge(this.forceBrBreak&&!g||!this.enlargeBr?CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:CKEDITOR.ENLARGE_BLOCK_CONTENTS);if(!q.collapsed){g=new CKEDITOR.dom.walker(q.clone());var o=CKEDITOR.dom.walker.bookmark(true,true);g.evaluator=o;this._.nextNode=g.next();g=new CKEDITOR.dom.walker(q.clone());\ng.evaluator=o;g=g.previous();this._.lastNode=g.getNextSourceNode(true);if(this._.lastNode&&this._.lastNode.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(this._.lastNode.getText())&&this._.lastNode.getParent().isBlockBoundary()){o=this.range.clone();o.moveToPosition(this._.lastNode,CKEDITOR.POSITION_AFTER_END);if(o.checkEndOfBlock()){o=new CKEDITOR.dom.elementPath(o.endContainer,o.root);this._.lastNode=(o.block||o.blockLimit).getNextSourceNode(true)}}if(!this._.lastNode||!q.root.contains(this._.lastNode)){this._.lastNode=\nthis._.docEndMarker=q.document.createText(\"\");this._.lastNode.insertAfter(g)}q=null}this._.started=1;g=q}o=this._.nextNode;q=this._.lastNode;for(this._.nextNode=null;o;){var u=0,A=o.hasAscendant(\"pre\"),k=o.type!=CKEDITOR.NODE_ELEMENT,l=0;if(k)o.type==CKEDITOR.NODE_TEXT&&d.test(o.getText())&&(k=0);else{var j=o.getName();if(CKEDITOR.dtd.$block[j]&&o.getAttribute(\"contenteditable\")==\"false\"){b=o;f(this,a,b);break}else if(o.isBlockBoundary(this.forceBrBreak&&!A&&{br:1})){if(j==\"br\")k=1;else if(!g&&!o.getChildCount()&&\nj!=\"hr\"){b=o;p=o.equals(q);break}if(g){g.setEndAt(o,CKEDITOR.POSITION_BEFORE_START);if(j!=\"br\")this._.nextNode=o}u=1}else{if(o.getFirst()){if(!g){g=this.range.clone();g.setStartAt(o,CKEDITOR.POSITION_BEFORE_START)}o=o.getFirst();continue}k=1}}if(k&&!g){g=this.range.clone();g.setStartAt(o,CKEDITOR.POSITION_BEFORE_START)}p=(!u||k)&&o.equals(q);if(g&&!u)for(;!o.getNext(n)&&!p;){j=o.getParent();if(j.isBlockBoundary(this.forceBrBreak&&!A&&{br:1})){u=1;k=0;p||j.equals(q);g.setEndAt(j,CKEDITOR.POSITION_BEFORE_END);\nbreak}o=j;k=1;p=o.equals(q);l=1}k&&g.setEndAt(o,CKEDITOR.POSITION_AFTER_END);o=c(o,l,q);if((p=!o)||u&&g)break}if(!b){if(!g){this._.docEndMarker&&this._.docEndMarker.remove();return this._.nextNode=null}b=new CKEDITOR.dom.elementPath(g.startContainer,g.root);o=b.blockLimit;u={div:1,th:1,td:1};b=b.block;if(!b&&o&&!this.enforceRealBlocks&&u[o.getName()]&&g.checkStartOfBlock()&&g.checkEndOfBlock()&&!o.equals(g.root))b=o;else if(!b||this.enforceRealBlocks&&b.getName()==\"li\"){b=this.range.document.createElement(a);\ng.extractContents().appendTo(b);b.trim();g.insertNode(b);s=x=true}else if(b.getName()!=\"li\"){if(!g.checkStartOfBlock()||!g.checkEndOfBlock()){b=b.clone(false);g.extractContents().appendTo(b);b.trim();x=g.splitBlock();s=!x.wasStartOfBlock;x=!x.wasEndOfBlock;g.insertNode(b)}}else if(!p)this._.nextNode=b.equals(q)?null:c(g.getBoundaryNodes().endNode,1,q)}if(s)(s=b.getPrevious())&&s.type==CKEDITOR.NODE_ELEMENT&&(s.getName()==\"br\"?s.remove():s.getLast()&&s.getLast().$.nodeName.toLowerCase()==\"br\"&&s.getLast().remove());\nif(x)(s=b.getLast())&&s.type==CKEDITOR.NODE_ELEMENT&&s.getName()==\"br\"&&(!CKEDITOR.env.needsBrFiller||s.getPrevious(e)||s.getNext(e))&&s.remove();if(!this._.nextNode)this._.nextNode=p||b.equals(q)||!q?null:c(b,1,q);return b}};CKEDITOR.dom.range.prototype.createIterator=function(){return new a(this)}})();\nCKEDITOR.command=function(a,c){this.uiItems=[];this.exec=function(b){if(this.state==CKEDITOR.TRISTATE_DISABLED||!this.checkAllowed())return false;this.editorFocus&&a.focus();return this.fire(\"exec\")===false?true:c.exec.call(this,a,b)!==false};this.refresh=function(a,b){if(!this.readOnly&&a.readOnly)return true;if(this.context&&!b.isContextFor(this.context)){this.disable();return true}if(!this.checkAllowed(true)){this.disable();return true}this.startDisabled||this.enable();this.modes&&!this.modes[a.mode]&&\nthis.disable();return this.fire(\"refresh\",{editor:a,path:b})===false?true:c.refresh&&c.refresh.apply(this,arguments)!==false};var b;this.checkAllowed=function(c){return!c&&typeof b==\"boolean\"?b:b=a.activeFilter.checkFeature(this)};CKEDITOR.tools.extend(this,c,{modes:{wysiwyg:1},editorFocus:1,contextSensitive:!!c.context,state:CKEDITOR.TRISTATE_DISABLED});CKEDITOR.event.call(this)};\nCKEDITOR.command.prototype={enable:function(){this.state==CKEDITOR.TRISTATE_DISABLED&&this.checkAllowed()&&this.setState(!this.preserveState||typeof this.previousState==\"undefined\"?CKEDITOR.TRISTATE_OFF:this.previousState)},disable:function(){this.setState(CKEDITOR.TRISTATE_DISABLED)},setState:function(a){if(this.state==a||a!=CKEDITOR.TRISTATE_DISABLED&&!this.checkAllowed())return false;this.previousState=this.state;this.state=a;this.fire(\"state\");return true},toggleState:function(){this.state==CKEDITOR.TRISTATE_OFF?\nthis.setState(CKEDITOR.TRISTATE_ON):this.state==CKEDITOR.TRISTATE_ON&&this.setState(CKEDITOR.TRISTATE_OFF)}};CKEDITOR.event.implementOn(CKEDITOR.command.prototype);CKEDITOR.ENTER_P=1;CKEDITOR.ENTER_BR=2;CKEDITOR.ENTER_DIV=3;\nCKEDITOR.config={customConfig:\"config.js\",autoUpdateElement:!0,language:\"\",defaultLanguage:\"en\",contentsLangDirection:\"\",enterMode:CKEDITOR.ENTER_P,forceEnterMode:!1,shiftEnterMode:CKEDITOR.ENTER_BR,docType:\"<!DOCTYPE html>\",bodyId:\"\",bodyClass:\"\",fullPage:!1,height:200,extraPlugins:\"\",removePlugins:\"\",protectedSource:[],tabIndex:0,width:\"\",baseFloatZIndex:1E4,blockedKeystrokes:[CKEDITOR.CTRL+66,CKEDITOR.CTRL+73,CKEDITOR.CTRL+85]};\n(function(){function a(a,b,d,c,e){var f,o,a=[];for(f in b){o=b[f];o=typeof o==\"boolean\"?{}:typeof o==\"function\"?{match:o}:L(o);if(f.charAt(0)!=\"$\")o.elements=f;if(d)o.featureName=d.toLowerCase();var j=o;j.elements=g(j.elements,/\\s+/)||null;j.propertiesOnly=j.propertiesOnly||j.elements===true;var k=/\\s*,\\s*/,l=void 0;for(l in t){j[l]=g(j[l],k)||null;var v=j,r=E[l],y=g(j[E[l]],k),q=j[l],w=[],u=true,h=void 0;y?u=false:y={};for(h in q)if(h.charAt(0)==\"!\"){h=h.slice(1);w.push(h);y[h]=true;u=false}for(;h=\nw.pop();){q[h]=q[\"!\"+h];delete q[\"!\"+h]}v[r]=(u?false:y)||null}j.match=j.match||null;c.push(o);a.push(o)}for(var b=e.elements,e=e.generic,i,d=0,c=a.length;d<c;++d){f=L(a[d]);o=f.classes===true||f.styles===true||f.attributes===true;j=f;l=r=k=void 0;for(k in t)j[k]=A(j[k]);v=true;for(l in E){k=E[l];r=j[k];y=[];q=void 0;for(q in r)q.indexOf(\"*\")>-1?y.push(RegExp(\"^\"+q.replace(/\\*/g,\".*\")+\"$\")):y.push(q);r=y;if(r.length){j[k]=r;v=false}}j.nothingRequired=v;j.noProperties=!(j.attributes||j.classes||j.styles);\nif(f.elements===true||f.elements===null)e[o?\"unshift\":\"push\"](f);else{j=f.elements;delete f.elements;for(i in j)if(b[i])b[i][o?\"unshift\":\"push\"](f);else b[i]=[f]}}}function c(a,d,c,e){if(!a.match||a.match(d))if(e||n(a,d)){if(!a.propertiesOnly)c.valid=true;if(!c.allAttributes)c.allAttributes=b(a.attributes,d.attributes,c.validAttributes);if(!c.allStyles)c.allStyles=b(a.styles,d.styles,c.validStyles);if(!c.allClasses){a=a.classes;d=d.classes;e=c.validClasses;if(a)if(a===true)a=true;else{for(var f=0,\no=d.length,j;f<o;++f){j=d[f];e[j]||(e[j]=a(j))}a=false}else a=false;c.allClasses=a}}}function b(a,b,d){if(!a)return false;if(a===true)return true;for(var c in b)d[c]||(d[c]=a(c));return false}function f(a,b,c){if(!a.match||a.match(b)){if(a.noProperties)return false;c.hadInvalidAttribute=d(a.attributes,b.attributes)||c.hadInvalidAttribute;c.hadInvalidStyle=d(a.styles,b.styles)||c.hadInvalidStyle;a=a.classes;b=b.classes;if(a){for(var e=false,f=a===true,o=b.length;o--;)if(f||a(b[o])){b.splice(o,1);e=\ntrue}a=e}else a=false;c.hadInvalidClass=a||c.hadInvalidClass}}function d(a,b){if(!a)return false;var d=false,c=a===true,e;for(e in b)if(c||a(e)){delete b[e];d=true}return d}function e(a,b,d){if(a.disabled||a.customConfig&&!d||!b)return false;a._.cachedChecks={};return true}function g(a,b){if(!a)return false;if(a===true)return a;if(typeof a==\"string\"){a=J(a);return a==\"*\"?true:CKEDITOR.tools.convertArrayToObject(a.split(b))}if(CKEDITOR.tools.isArray(a))return a.length?CKEDITOR.tools.convertArrayToObject(a):\nfalse;var d={},c=0,e;for(e in a){d[e]=a[e];c++}return c?d:false}function n(a,b){if(a.nothingRequired)return true;var d,c,e,f;if(e=a.requiredClasses){f=b.classes;for(d=0;d<e.length;++d){c=e[d];if(typeof c==\"string\"){if(CKEDITOR.tools.indexOf(f,c)==-1)return false}else if(!CKEDITOR.tools.checkIfAnyArrayItemMatches(f,c))return false}}return h(b.styles,a.requiredStyles)&&h(b.attributes,a.requiredAttributes)}function h(a,b){if(!b)return true;for(var d=0,c;d<b.length;++d){c=b[d];if(typeof c==\"string\"){if(!(c in\na))return false}else if(!CKEDITOR.tools.checkIfAnyObjectPropertyMatches(a,c))return false}return true}function i(a){if(!a)return{};for(var a=a.split(/\\s*,\\s*/).sort(),b={};a.length;)b[a.shift()]=w;return b}function m(a){for(var b,d,c,e,f={},o=1,a=J(a);b=a.match(y);){if(d=b[2]){c=p(d,\"styles\");e=p(d,\"attrs\");d=p(d,\"classes\")}else c=e=d=null;f[\"$\"+o++]={elements:b[1],classes:d,styles:c,attributes:e};a=a.slice(b[0].length)}return f}function p(a,b){var d=a.match(C[b]);return d?J(d[1]):null}function s(a){var b=\na.styleBackup=a.attributes.style,d=a.classBackup=a.attributes[\"class\"];if(!a.styles)a.styles=CKEDITOR.tools.parseCssText(b||\"\",1);if(!a.classes)a.classes=d?d.split(/\\s+/):[]}function x(a,b,d,e){var j=0,k;if(e.toHtml)b.name=b.name.replace(ba,\"$1\");if(e.doCallbacks&&a.elementCallbacks){a:for(var l=a.elementCallbacks,g=0,r=l.length,y;g<r;++g)if(y=l[g](b)){k=y;break a}if(k)return k}if(e.doTransform)if(k=a._.transformations[b.name]){s(b);for(l=0;l<k.length;++l)v(a,b,k[l]);o(b)}if(e.doFilter){a:{l=b.name;\ng=a._;a=g.allowedRules.elements[l];k=g.allowedRules.generic;l=g.disallowedRules.elements[l];g=g.disallowedRules.generic;r=e.skipRequired;y={valid:false,validAttributes:{},validClasses:{},validStyles:{},allAttributes:false,allClasses:false,allStyles:false,hadInvalidAttribute:false,hadInvalidClass:false,hadInvalidStyle:false};var q,w;if(!a&&!k)a=null;else{s(b);if(l){q=0;for(w=l.length;q<w;++q)if(f(l[q],b,y)===false){a=null;break a}}if(g){q=0;for(w=g.length;q<w;++q)f(g[q],b,y)}if(a){q=0;for(w=a.length;q<\nw;++q)c(a[q],b,y,r)}if(k){q=0;for(w=k.length;q<w;++q)c(k[q],b,y,r)}a=y}}if(!a){d.push(b);return D}if(!a.valid){d.push(b);return D}w=a.validAttributes;var h=a.validStyles;k=a.validClasses;var l=b.attributes,E=b.styles,g=b.classes,r=b.classBackup,i=b.styleBackup,t,z,C=[];y=[];var I=/^data-cke-/;q=false;delete l.style;delete l[\"class\"];delete b.classBackup;delete b.styleBackup;if(!a.allAttributes)for(t in l)if(!w[t])if(I.test(t)){if(t!=(z=t.replace(/^data-cke-saved-/,\"\"))&&!w[z]){delete l[t];q=true}}else{delete l[t];\nq=true}if(!a.allStyles||a.hadInvalidStyle){for(t in E)a.allStyles||h[t]?C.push(t+\":\"+E[t]):q=true;if(C.length)l.style=C.sort().join(\"; \")}else if(i)l.style=i;if(!a.allClasses||a.hadInvalidClass){for(t=0;t<g.length;++t)(a.allClasses||k[g[t]])&&y.push(g[t]);y.length&&(l[\"class\"]=y.sort().join(\" \"));r&&y.length<r.split(/\\s+/).length&&(q=true)}else r&&(l[\"class\"]=r);q&&(j=D);if(!e.skipFinalValidation&&!u(b)){d.push(b);return D}}if(e.toHtml)b.name=b.name.replace(ca,\"cke:$1\");return j}function q(a){var b=\n[],d;for(d in a)d.indexOf(\"*\")>-1&&b.push(d.replace(/\\*/g,\".*\"));return b.length?RegExp(\"^(?:\"+b.join(\"|\")+\")$\"):null}function o(a){var b=a.attributes,d;delete b.style;delete b[\"class\"];if(d=CKEDITOR.tools.writeCssText(a.styles,true))b.style=d;a.classes.length&&(b[\"class\"]=a.classes.sort().join(\" \"))}function u(a){switch(a.name){case \"a\":if(!a.children.length&&!a.attributes.name)return false;break;case \"img\":if(!a.attributes.src)return false}return true}function A(a){if(!a)return false;if(a===true)return true;\nvar b=q(a);return function(d){return d in a||b&&d.match(b)}}function k(){return new CKEDITOR.htmlParser.element(\"br\")}function l(a){return a.type==CKEDITOR.NODE_ELEMENT&&(a.name==\"br\"||F.$block[a.name])}function j(a,b,d){var c=a.name;if(F.$empty[c]||!a.children.length)if(c==\"hr\"&&b==\"br\")a.replaceWith(k());else{a.parent&&d.push({check:\"it\",el:a.parent});a.remove()}else if(F.$block[c]||c==\"tr\")if(b==\"br\"){if(a.previous&&!l(a.previous)){b=k();b.insertBefore(a)}if(a.next&&!l(a.next)){b=k();b.insertAfter(a)}a.replaceWithChildren()}else{var c=\na.children,e;b:{e=F[b];for(var f=0,o=c.length,j;f<o;++f){j=c[f];if(j.type==CKEDITOR.NODE_ELEMENT&&!e[j.name]){e=false;break b}}e=true}if(e){a.name=b;a.attributes={};d.push({check:\"parent-down\",el:a})}else{e=a.parent;for(var f=e.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||e.name==\"body\",g,o=c.length;o>0;){j=c[--o];if(f&&(j.type==CKEDITOR.NODE_TEXT||j.type==CKEDITOR.NODE_ELEMENT&&F.$inline[j.name])){if(!g){g=new CKEDITOR.htmlParser.element(b);g.insertAfter(a);d.push({check:\"parent-down\",el:g})}g.add(j,0)}else{g=\nnull;j.insertAfter(a);e.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT&&(j.type==CKEDITOR.NODE_ELEMENT&&!F[e.name][j.name])&&d.push({check:\"el-up\",el:j})}}a.remove()}}else if(c==\"style\")a.remove();else{a.parent&&d.push({check:\"it\",el:a.parent});a.replaceWithChildren()}}function v(a,b,d){var c,e;for(c=0;c<d.length;++c){e=d[c];if((!e.check||a.check(e.check,false))&&(!e.left||e.left(b))){e.right(b,G);break}}}function I(a,b){var d=b.getDefinition(),c=d.attributes,e=d.styles,f,o,j,k;if(a.name!=d.element)return false;\nfor(f in c)if(f==\"class\"){d=c[f].split(/\\s+/);for(j=a.classes.join(\"|\");k=d.pop();)if(j.indexOf(k)==-1)return false}else if(a.attributes[f]!=c[f])return false;for(o in e)if(a.styles[o]!=e[o])return false;return true}function r(a,b){var d,c;if(typeof a==\"string\")d=a;else if(a instanceof CKEDITOR.style)c=a;else{d=a[0];c=a[1]}return[{element:d,left:c,right:function(a,d){d.transform(a,b)}}]}function O(a){return function(b){return I(b,a)}}function S(a){return function(b,d){d[a](b)}}var F=CKEDITOR.dtd,\nD=1,L=CKEDITOR.tools.copy,J=CKEDITOR.tools.trim,w=\"cke-test\",z=[\"\",\"p\",\"br\",\"div\"];CKEDITOR.FILTER_SKIP_TREE=2;CKEDITOR.filter=function(a){this.allowedContent=[];this.disallowedContent=[];this.elementCallbacks=null;this.disabled=false;this.editor=null;this.id=CKEDITOR.tools.getNextNumber();this._={allowedRules:{elements:{},generic:[]},disallowedRules:{elements:{},generic:[]},transformations:{},cachedTests:{}};CKEDITOR.filter.instances[this.id]=this;if(a instanceof CKEDITOR.editor){a=this.editor=a;\nthis.customConfig=true;var b=a.config.allowedContent;if(b===true)this.disabled=true;else{if(!b)this.customConfig=false;this.allow(b,\"config\",1);this.allow(a.config.extraAllowedContent,\"extra\",1);this.allow(z[a.enterMode]+\" \"+z[a.shiftEnterMode],\"default\",1);this.disallow(a.config.disallowedContent)}}else{this.customConfig=false;this.allow(a,\"default\",1)}};CKEDITOR.filter.instances={};CKEDITOR.filter.prototype={allow:function(b,d,c){if(!e(this,b,c))return false;var f,o;if(typeof b==\"string\")b=m(b);\nelse if(b instanceof CKEDITOR.style){if(b.toAllowedContentRules)return this.allow(b.toAllowedContentRules(this.editor),d,c);f=b.getDefinition();b={};c=f.attributes;b[f.element]=f={styles:f.styles,requiredStyles:f.styles&&CKEDITOR.tools.objectKeys(f.styles)};if(c){c=L(c);f.classes=c[\"class\"]?c[\"class\"].split(/\\s+/):null;f.requiredClasses=f.classes;delete c[\"class\"];f.attributes=c;f.requiredAttributes=c&&CKEDITOR.tools.objectKeys(c)}}else if(CKEDITOR.tools.isArray(b)){for(f=0;f<b.length;++f)o=this.allow(b[f],\nd,c);return o}a(this,b,d,this.allowedContent,this._.allowedRules);return true},applyTo:function(a,b,d,c){if(this.disabled)return false;var e=this,f=[],o=this.editor&&this.editor.config.protectedSource,k,l=false,g={doFilter:!d,doTransform:true,doCallbacks:true,toHtml:b};a.forEach(function(a){if(a.type==CKEDITOR.NODE_ELEMENT){if(a.attributes[\"data-cke-filter\"]==\"off\")return false;if(!b||!(a.name==\"span\"&&~CKEDITOR.tools.objectKeys(a.attributes).join(\"|\").indexOf(\"data-cke-\"))){k=x(e,a,f,g);if(k&D)l=\ntrue;else if(k&2)return false}}else if(a.type==CKEDITOR.NODE_COMMENT&&a.value.match(/^\\{cke_protected\\}(?!\\{C\\})/)){var d;a:{var c=decodeURIComponent(a.value.replace(/^\\{cke_protected\\}/,\"\"));d=[];var j,v,r;if(o)for(v=0;v<o.length;++v)if((r=c.match(o[v]))&&r[0].length==c.length){d=true;break a}c=CKEDITOR.htmlParser.fragment.fromHtml(c);c.children.length==1&&(j=c.children[0]).type==CKEDITOR.NODE_ELEMENT&&x(e,j,d,g);d=!d.length}d||f.push(a)}},null,true);f.length&&(l=true);for(var v,a=[],c=z[c||(this.editor?\nthis.editor.enterMode:CKEDITOR.ENTER_P)];d=f.pop();)d.type==CKEDITOR.NODE_ELEMENT?j(d,c,a):d.remove();for(;v=a.pop();){d=v.el;if(d.parent)switch(v.check){case \"it\":F.$removeEmpty[d.name]&&!d.children.length?j(d,c,a):u(d)||j(d,c,a);break;case \"el-up\":d.parent.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT&&!F[d.parent.name][d.name]&&j(d,c,a);break;case \"parent-down\":d.parent.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT&&!F[d.parent.name][d.name]&&j(d.parent,c,a)}}return l},checkFeature:function(a){if(this.disabled||\n!a)return true;a.toFeature&&(a=a.toFeature(this.editor));return!a.requiredContent||this.check(a.requiredContent)},disable:function(){this.disabled=true},disallow:function(b){if(!e(this,b,true))return false;typeof b==\"string\"&&(b=m(b));a(this,b,null,this.disallowedContent,this._.disallowedRules);return true},addContentForms:function(a){if(!this.disabled&&a){var b,d,c=[],e;for(b=0;b<a.length&&!e;++b){d=a[b];if((typeof d==\"string\"||d instanceof CKEDITOR.style)&&this.check(d))e=d}if(e){for(b=0;b<a.length;++b)c.push(r(a[b],\ne));this.addTransformations(c)}}},addElementCallback:function(a){if(!this.elementCallbacks)this.elementCallbacks=[];this.elementCallbacks.push(a)},addFeature:function(a){if(this.disabled||!a)return true;a.toFeature&&(a=a.toFeature(this.editor));this.allow(a.allowedContent,a.name);this.addTransformations(a.contentTransformations);this.addContentForms(a.contentForms);return a.requiredContent&&(this.customConfig||this.disallowedContent.length)?this.check(a.requiredContent):true},addTransformations:function(a){var b,\nd;if(!this.disabled&&a){var c=this._.transformations,e;for(e=0;e<a.length;++e){b=a[e];var f=void 0,o=void 0,j=void 0,k=void 0,l=void 0,g=void 0;d=[];for(o=0;o<b.length;++o){j=b[o];if(typeof j==\"string\"){j=j.split(/\\s*:\\s*/);k=j[0];l=null;g=j[1]}else{k=j.check;l=j.left;g=j.right}if(!f){f=j;f=f.element?f.element:k?k.match(/^([a-z0-9]+)/i)[0]:f.left.getDefinition().element}l instanceof CKEDITOR.style&&(l=O(l));d.push({check:k==f?null:k,left:l,right:typeof g==\"string\"?S(g):g})}b=f;c[b]||(c[b]=[]);c[b].push(d)}}},\ncheck:function(a,b,d){if(this.disabled)return true;if(CKEDITOR.tools.isArray(a)){for(var c=a.length;c--;)if(this.check(a[c],b,d))return true;return false}var e,f;if(typeof a==\"string\"){f=a+\"<\"+(b===false?\"0\":\"1\")+(d?\"1\":\"0\")+\">\";if(f in this._.cachedChecks)return this._.cachedChecks[f];c=m(a).$1;e=c.styles;var j=c.classes;c.name=c.elements;c.classes=j=j?j.split(/\\s*,\\s*/):[];c.styles=i(e);c.attributes=i(c.attributes);c.children=[];j.length&&(c.attributes[\"class\"]=j.join(\" \"));if(e)c.attributes.style=\nCKEDITOR.tools.writeCssText(c.styles);e=c}else{c=a.getDefinition();e=c.styles;j=c.attributes||{};if(e){e=L(e);j.style=CKEDITOR.tools.writeCssText(e,true)}else e={};e={name:c.element,attributes:j,classes:j[\"class\"]?j[\"class\"].split(/\\s+/):[],styles:e,children:[]}}var j=CKEDITOR.tools.clone(e),k=[],l;if(b!==false&&(l=this._.transformations[e.name])){for(c=0;c<l.length;++c)v(this,e,l[c]);o(e)}x(this,j,k,{doFilter:true,doTransform:b!==false,skipRequired:!d,skipFinalValidation:!d});b=k.length>0?false:\nCKEDITOR.tools.objectCompare(e.attributes,j.attributes,true)?true:false;typeof a==\"string\"&&(this._.cachedChecks[f]=b);return b},getAllowedEnterMode:function(){var a=[\"p\",\"div\",\"br\"],b={p:CKEDITOR.ENTER_P,div:CKEDITOR.ENTER_DIV,br:CKEDITOR.ENTER_BR};return function(d,c){var e=a.slice(),f;if(this.check(z[d]))return d;for(c||(e=e.reverse());f=e.pop();)if(this.check(f))return b[f];return CKEDITOR.ENTER_BR}}()};var t={styles:1,attributes:1,classes:1},E={styles:\"requiredStyles\",attributes:\"requiredAttributes\",\nclasses:\"requiredClasses\"},y=/^([a-z0-9*\\s]+)((?:\\s*\\{[!\\w\\-,\\s\\*]+\\}\\s*|\\s*\\[[!\\w\\-,\\s\\*]+\\]\\s*|\\s*\\([!\\w\\-,\\s\\*]+\\)\\s*){0,3})(?:;\\s*|$)/i,C={styles:/{([^}]+)}/,attrs:/\\[([^\\]]+)\\]/,classes:/\\(([^\\)]+)\\)/},ba=/^cke:(object|embed|param)$/,ca=/^(object|embed|param)$/,G=CKEDITOR.filter.transformationsTools={sizeToStyle:function(a){this.lengthToStyle(a,\"width\");this.lengthToStyle(a,\"height\")},sizeToAttribute:function(a){this.lengthToAttribute(a,\"width\");this.lengthToAttribute(a,\"height\")},lengthToStyle:function(a,\nb,d){d=d||b;if(!(d in a.styles)){var c=a.attributes[b];if(c){/^\\d+$/.test(c)&&(c=c+\"px\");a.styles[d]=c}}delete a.attributes[b]},lengthToAttribute:function(a,b,d){d=d||b;if(!(d in a.attributes)){var c=a.styles[b],e=c&&c.match(/^(\\d+)(?:\\.\\d*)?px$/);e?a.attributes[d]=e[1]:c==w&&(a.attributes[d]=w)}delete a.styles[b]},alignmentToStyle:function(a){if(!(\"float\"in a.styles)){var b=a.attributes.align;if(b==\"left\"||b==\"right\")a.styles[\"float\"]=b}delete a.attributes.align},alignmentToAttribute:function(a){if(!(\"align\"in\na.attributes)){var b=a.styles[\"float\"];if(b==\"left\"||b==\"right\")a.attributes.align=b}delete a.styles[\"float\"]},matchesStyle:I,transform:function(a,b){if(typeof b==\"string\")a.name=b;else{var d=b.getDefinition(),c=d.styles,e=d.attributes,f,j,o,k;a.name=d.element;for(f in e)if(f==\"class\"){d=a.classes.join(\"|\");for(o=e[f].split(/\\s+/);k=o.pop();)d.indexOf(k)==-1&&a.classes.push(k)}else a.attributes[f]=e[f];for(j in c)a.styles[j]=c[j]}}}})();\n(function(){CKEDITOR.focusManager=function(a){if(a.focusManager)return a.focusManager;this.hasFocus=false;this.currentActive=null;this._={editor:a};return this};CKEDITOR.focusManager._={blurDelay:200};CKEDITOR.focusManager.prototype={focus:function(a){this._.timer&&clearTimeout(this._.timer);if(a)this.currentActive=a;if(!this.hasFocus&&!this._.locked){(a=CKEDITOR.currentInstance)&&a.focusManager.blur(1);this.hasFocus=true;(a=this._.editor.container)&&a.addClass(\"cke_focus\");this._.editor.fire(\"focus\")}},\nlock:function(){this._.locked=1},unlock:function(){delete this._.locked},blur:function(a){function c(){if(this.hasFocus){this.hasFocus=false;var a=this._.editor.container;a&&a.removeClass(\"cke_focus\");this._.editor.fire(\"blur\")}}if(!this._.locked){this._.timer&&clearTimeout(this._.timer);var b=CKEDITOR.focusManager._.blurDelay;a||!b?c.call(this):this._.timer=CKEDITOR.tools.setTimeout(function(){delete this._.timer;c.call(this)},b,this)}},add:function(a,c){var b=a.getCustomData(\"focusmanager\");if(!b||\nb!=this){b&&b.remove(a);var b=\"focus\",f=\"blur\";if(c)if(CKEDITOR.env.ie){b=\"focusin\";f=\"focusout\"}else CKEDITOR.event.useCapture=1;var d={blur:function(){a.equals(this.currentActive)&&this.blur()},focus:function(){this.focus(a)}};a.on(b,d.focus,this);a.on(f,d.blur,this);if(c)CKEDITOR.event.useCapture=0;a.setCustomData(\"focusmanager\",this);a.setCustomData(\"focusmanager_handlers\",d)}},remove:function(a){a.removeCustomData(\"focusmanager\");var c=a.removeCustomData(\"focusmanager_handlers\");a.removeListener(\"blur\",\nc.blur);a.removeListener(\"focus\",c.focus)}}})();CKEDITOR.keystrokeHandler=function(a){if(a.keystrokeHandler)return a.keystrokeHandler;this.keystrokes={};this.blockedKeystrokes={};this._={editor:a};return this};\n(function(){var a,c=function(b){var b=b.data,d=b.getKeystroke(),c=this.keystrokes[d],g=this._.editor;a=g.fire(\"key\",{keyCode:d,domEvent:b})===false;if(!a){c&&(a=g.execCommand(c,{from:\"keystrokeHandler\"})!==false);a||(a=!!this.blockedKeystrokes[d])}a&&b.preventDefault(true);return!a},b=function(b){if(a){a=false;b.data.preventDefault(true)}};CKEDITOR.keystrokeHandler.prototype={attach:function(a){a.on(\"keydown\",c,this);if(CKEDITOR.env.gecko&&CKEDITOR.env.mac)a.on(\"keypress\",b,this)}}})();\n(function(){CKEDITOR.lang={languages:{af:1,ar:1,bg:1,bn:1,bs:1,ca:1,cs:1,cy:1,da:1,de:1,el:1,\"en-au\":1,\"en-ca\":1,\"en-gb\":1,en:1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,\"fr-ca\":1,fr:1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,is:1,it:1,ja:1,ka:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,ms:1,nb:1,nl:1,no:1,pl:1,\"pt-br\":1,pt:1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,\"sr-latn\":1,sr:1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,\"zh-cn\":1,zh:1},rtl:{ar:1,fa:1,he:1,ku:1,ug:1},load:function(a,c,b){if(!a||!CKEDITOR.lang.languages[a])a=this.detect(c,\na);var f=this,c=function(){f[a].dir=f.rtl[a]?\"rtl\":\"ltr\";b(a,f[a])};this[a]?c():CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(\"lang/\"+a+\".js\"),c,this)},detect:function(a,c){var b=this.languages,c=c||navigator.userLanguage||navigator.language||a,f=c.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),d=f[1],f=f[2];b[d+\"-\"+f]?d=d+\"-\"+f:b[d]||(d=null);CKEDITOR.lang.detect=d?function(){return d}:function(a){return a};return d||a}}})();\nCKEDITOR.scriptLoader=function(){var a={},c={};return{load:function(b,f,d,e){var g=typeof b==\"string\";g&&(b=[b]);d||(d=CKEDITOR);var n=b.length,h=[],i=[],m=function(a){f&&(g?f.call(d,a):f.call(d,h,i))};if(n===0)m(true);else{var p=function(a,b){(b?h:i).push(a);if(--n<=0){e&&CKEDITOR.document.getDocumentElement().removeStyle(\"cursor\");m(b)}},s=function(b,d){a[b]=1;var e=c[b];delete c[b];for(var f=0;f<e.length;f++)e[f](b,d)},x=function(b){if(a[b])p(b,true);else{var d=c[b]||(c[b]=[]);d.push(p);if(!(d.length>\n1)){var e=new CKEDITOR.dom.element(\"script\");e.setAttributes({type:\"text/javascript\",src:b});if(f)if(CKEDITOR.env.ie&&CKEDITOR.env.version<11)e.$.onreadystatechange=function(){if(e.$.readyState==\"loaded\"||e.$.readyState==\"complete\"){e.$.onreadystatechange=null;s(b,true)}};else{e.$.onload=function(){setTimeout(function(){s(b,true)},0)};e.$.onerror=function(){s(b,false)}}e.appendTo(CKEDITOR.document.getHead())}}};e&&CKEDITOR.document.getDocumentElement().setStyle(\"cursor\",\"wait\");for(var q=0;q<n;q++)x(b[q])}},\nqueue:function(){function a(){var b;(b=c[0])&&this.load(b.scriptUrl,b.callback,CKEDITOR,0)}var c=[];return function(d,e){var g=this;c.push({scriptUrl:d,callback:function(){e&&e.apply(this,arguments);c.shift();a.call(g)}});c.length==1&&a.call(this)}}()}}();CKEDITOR.resourceManager=function(a,c){this.basePath=a;this.fileName=c;this.registered={};this.loaded={};this.externals={};this._={waitingList:{}}};\nCKEDITOR.resourceManager.prototype={add:function(a,c){if(this.registered[a])throw'[CKEDITOR.resourceManager.add] The resource name \"'+a+'\" is already registered.';var b=this.registered[a]=c||{};b.name=a;b.path=this.getPath(a);CKEDITOR.fire(a+CKEDITOR.tools.capitalize(this.fileName)+\"Ready\",b);return this.get(a)},get:function(a){return this.registered[a]||null},getPath:function(a){var c=this.externals[a];return CKEDITOR.getUrl(c&&c.dir||this.basePath+a+\"/\")},getFilePath:function(a){var c=this.externals[a];\nreturn CKEDITOR.getUrl(this.getPath(a)+(c?c.file:this.fileName+\".js\"))},addExternal:function(a,c,b){for(var a=a.split(\",\"),f=0;f<a.length;f++){var d=a[f];b||(c=c.replace(/[^\\/]+$/,function(a){b=a;return\"\"}));this.externals[d]={dir:c,file:b||this.fileName+\".js\"}}},load:function(a,c,b){CKEDITOR.tools.isArray(a)||(a=a?[a]:[]);for(var f=this.loaded,d=this.registered,e=[],g={},n={},h=0;h<a.length;h++){var i=a[h];if(i)if(!f[i]&&!d[i]){var m=this.getFilePath(i);e.push(m);m in g||(g[m]=[]);g[m].push(i)}else n[i]=\nthis.get(i)}CKEDITOR.scriptLoader.load(e,function(a,d){if(d.length)throw'[CKEDITOR.resourceManager.load] Resource name \"'+g[d[0]].join(\",\")+'\" was not found at \"'+d[0]+'\".';for(var e=0;e<a.length;e++)for(var q=g[a[e]],o=0;o<q.length;o++){var u=q[o];n[u]=this.get(u);f[u]=1}c.call(b,n)},this)}};CKEDITOR.plugins=new CKEDITOR.resourceManager(\"plugins/\",\"plugin\");\nCKEDITOR.plugins.load=CKEDITOR.tools.override(CKEDITOR.plugins.load,function(a){var c={};return function(b,f,d){var e={},g=function(b){a.call(this,b,function(a){CKEDITOR.tools.extend(e,a);var b=[],n;for(n in a){var p=a[n],s=p&&p.requires;if(!c[n]){if(p.icons)for(var x=p.icons.split(\",\"),q=x.length;q--;)CKEDITOR.skin.addIcon(x[q],p.path+\"icons/\"+(CKEDITOR.env.hidpi&&p.hidpi?\"hidpi/\":\"\")+x[q]+\".png\");c[n]=1}if(s){s.split&&(s=s.split(\",\"));for(p=0;p<s.length;p++)e[s[p]]||b.push(s[p])}}if(b.length)g.call(this,\nb);else{for(n in e){p=e[n];if(p.onLoad&&!p.onLoad._called){p.onLoad()===false&&delete e[n];p.onLoad._called=1}}f&&f.call(d||window,e)}},this)};g.call(this,b)}});CKEDITOR.plugins.setLang=function(a,c,b){var f=this.get(a),a=f.langEntries||(f.langEntries={}),f=f.lang||(f.lang=[]);f.split&&(f=f.split(\",\"));CKEDITOR.tools.indexOf(f,c)==-1&&f.push(c);a[c]=b};CKEDITOR.ui=function(a){if(a.ui)return a.ui;this.items={};this.instances={};this.editor=a;this._={handlers:{}};return this};\nCKEDITOR.ui.prototype={add:function(a,c,b){b.name=a.toLowerCase();var f=this.items[a]={type:c,command:b.command||null,args:Array.prototype.slice.call(arguments,2)};CKEDITOR.tools.extend(f,b)},get:function(a){return this.instances[a]},create:function(a){var c=this.items[a],b=c&&this._.handlers[c.type],f=c&&c.command&&this.editor.getCommand(c.command),b=b&&b.create.apply(this,c.args);this.instances[a]=b;f&&f.uiItems.push(b);if(b&&!b.type)b.type=c.type;return b},addHandler:function(a,c){this._.handlers[a]=\nc},space:function(a){return CKEDITOR.document.getById(this.spaceId(a))},spaceId:function(a){return this.editor.id+\"_\"+a}};CKEDITOR.event.implementOn(CKEDITOR.ui);\n(function(){function a(a,e,f){CKEDITOR.event.call(this);a=a&&CKEDITOR.tools.clone(a);if(e!==void 0){if(e instanceof CKEDITOR.dom.element){if(!f)throw Error(\"One of the element modes must be specified.\");}else throw Error(\"Expect element of type CKEDITOR.dom.element.\");if(CKEDITOR.env.ie&&CKEDITOR.env.quirks&&f==CKEDITOR.ELEMENT_MODE_INLINE)throw Error(\"Inline element mode is not supported on IE quirks.\");if(!(f==CKEDITOR.ELEMENT_MODE_INLINE?e.is(CKEDITOR.dtd.$editable)||e.is(\"textarea\"):f==CKEDITOR.ELEMENT_MODE_REPLACE?\n!e.is(CKEDITOR.dtd.$nonBodyContent):1))throw Error('The specified element mode is not supported on element: \"'+e.getName()+'\".');this.element=e;this.elementMode=f;this.name=this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO&&(e.getId()||e.getNameAtt())}else this.elementMode=CKEDITOR.ELEMENT_MODE_NONE;this._={};this.commands={};this.templates={};this.name=this.name||c();this.id=CKEDITOR.tools.getNextId();this.status=\"unloaded\";this.config=CKEDITOR.tools.prototypedCopy(CKEDITOR.config);this.ui=new CKEDITOR.ui(this);\nthis.focusManager=new CKEDITOR.focusManager(this);this.keystrokeHandler=new CKEDITOR.keystrokeHandler(this);this.on(\"readOnly\",b);this.on(\"selectionChange\",function(a){d(this,a.data.path)});this.on(\"activeFilterChange\",function(){d(this,this.elementPath(),true)});this.on(\"mode\",b);this.on(\"instanceReady\",function(){this.config.startupFocus&&this.focus()});CKEDITOR.fire(\"instanceCreated\",null,this);CKEDITOR.add(this);CKEDITOR.tools.setTimeout(function(){g(this,a)},0,this)}function c(){do var a=\"editor\"+\n++s;while(CKEDITOR.instances[a]);return a}function b(){var a=this.commands,b;for(b in a)f(this,a[b])}function f(a,b){b[b.startDisabled?\"disable\":a.readOnly&&!b.readOnly?\"disable\":b.modes[a.mode]?\"enable\":\"disable\"]()}function d(a,b,d){if(b){var c,e,f=a.commands;for(e in f){c=f[e];(d||c.contextSensitive)&&c.refresh(a,b)}}}function e(a){var b=a.config.customConfig;if(!b)return false;var b=CKEDITOR.getUrl(b),d=x[b]||(x[b]={});if(d.fn){d.fn.call(a,a.config);(CKEDITOR.getUrl(a.config.customConfig)==b||\n!e(a))&&a.fireOnce(\"customConfigLoaded\")}else CKEDITOR.scriptLoader.queue(b,function(){d.fn=CKEDITOR.editorConfig?CKEDITOR.editorConfig:function(){};e(a)});return true}function g(a,b){a.on(\"customConfigLoaded\",function(){if(b){if(b.on)for(var d in b.on)a.on(d,b.on[d]);CKEDITOR.tools.extend(a.config,b,true);delete a.config.on}d=a.config;a.readOnly=!(!d.readOnly&&!(a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.element.is(\"textarea\")?a.element.hasAttribute(\"disabled\"):a.element.isReadOnly():a.elementMode==\nCKEDITOR.ELEMENT_MODE_REPLACE&&a.element.hasAttribute(\"disabled\")));a.blockless=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?!(a.element.is(\"textarea\")||CKEDITOR.dtd[a.element.getName()].p):false;a.tabIndex=d.tabIndex||a.element&&a.element.getAttribute(\"tabindex\")||0;a.activeEnterMode=a.enterMode=a.blockless?CKEDITOR.ENTER_BR:d.enterMode;a.activeShiftEnterMode=a.shiftEnterMode=a.blockless?CKEDITOR.ENTER_BR:d.shiftEnterMode;if(d.skin)CKEDITOR.skinName=d.skin;a.fireOnce(\"configLoaded\");a.dataProcessor=\nnew CKEDITOR.htmlDataProcessor(a);a.filter=a.activeFilter=new CKEDITOR.filter(a);n(a)});if(b&&b.customConfig!=void 0)a.config.customConfig=b.customConfig;e(a)||a.fireOnce(\"customConfigLoaded\")}function n(a){CKEDITOR.skin.loadPart(\"editor\",function(){h(a)})}function h(a){CKEDITOR.lang.load(a.config.language,a.config.defaultLanguage,function(b,d){var c=a.config.title;a.langCode=b;a.lang=CKEDITOR.tools.prototypedCopy(d);a.title=typeof c==\"string\"||c===false?c:[a.lang.editor,a.name].join(\", \");if(!a.config.contentsLangDirection)a.config.contentsLangDirection=\na.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.element.getDirection(1):a.lang.dir;a.fire(\"langLoaded\");i(a)})}function i(a){a.getStylesSet(function(b){a.once(\"loaded\",function(){a.fire(\"stylesSet\",{styles:b})},null,null,1);m(a)})}function m(a){var b=a.config,d=b.plugins,c=b.extraPlugins,e=b.removePlugins;if(c)var f=RegExp(\"(?:^|,)(?:\"+c.replace(/\\s*,\\s*/g,\"|\")+\")(?=,|$)\",\"g\"),d=d.replace(f,\"\"),d=d+(\",\"+c);if(e)var j=RegExp(\"(?:^|,)(?:\"+e.replace(/\\s*,\\s*/g,\"|\")+\")(?=,|$)\",\"g\"),d=d.replace(j,\"\");CKEDITOR.env.air&&\n(d=d+\",adobeair\");CKEDITOR.plugins.load(d.split(\",\"),function(d){var c=[],e=[],f=[];a.plugins=d;for(var k in d){var l=d[k],g=l.lang,h=null,u=l.requires,w;CKEDITOR.tools.isArray(u)&&(u=u.join(\",\"));if(u&&(w=u.match(j)))for(;u=w.pop();)CKEDITOR.tools.setTimeout(function(a,b){throw Error('Plugin \"'+a.replace(\",\",\"\")+'\" cannot be removed from the plugins list, because it\\'s required by \"'+b+'\" plugin.');},0,null,[u,k]);if(g&&!a.lang[k]){g.split&&(g=g.split(\",\"));if(CKEDITOR.tools.indexOf(g,a.langCode)>=\n0)h=a.langCode;else{h=a.langCode.replace(/-.*/,\"\");h=h!=a.langCode&&CKEDITOR.tools.indexOf(g,h)>=0?h:CKEDITOR.tools.indexOf(g,\"en\")>=0?\"en\":g[0]}if(!l.langEntries||!l.langEntries[h])f.push(CKEDITOR.getUrl(l.path+\"lang/\"+h+\".js\"));else{a.lang[k]=l.langEntries[h];h=null}}e.push(h);c.push(l)}CKEDITOR.scriptLoader.load(f,function(){for(var d=[\"beforeInit\",\"init\",\"afterInit\"],f=0;f<d.length;f++)for(var j=0;j<c.length;j++){var k=c[j];f===0&&(e[j]&&k.lang&&k.langEntries)&&(a.lang[k.name]=k.langEntries[e[j]]);\nif(k[d[f]])k[d[f]](a)}a.fireOnce(\"pluginsLoaded\");b.keystrokes&&a.setKeystroke(a.config.keystrokes);for(j=0;j<a.config.blockedKeystrokes.length;j++)a.keystrokeHandler.blockedKeystrokes[a.config.blockedKeystrokes[j]]=1;a.status=\"loaded\";a.fireOnce(\"loaded\");CKEDITOR.fire(\"instanceLoaded\",null,a)})})}function p(){var a=this.element;if(a&&this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO){var b=this.getData();this.config.htmlEncodeOutput&&(b=CKEDITOR.tools.htmlEncode(b));a.is(\"textarea\")?a.setValue(b):\na.setHtml(b);return true}return false}a.prototype=CKEDITOR.editor.prototype;CKEDITOR.editor=a;var s=0,x={};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{addCommand:function(a,b){b.name=a.toLowerCase();var d=new CKEDITOR.command(this,b);this.mode&&f(this,d);return this.commands[a]=d},_attachToForm:function(){var a=this,b=a.element,d=new CKEDITOR.dom.element(b.$.form);if(b.is(\"textarea\")&&d){var c=function(d){a.updateElement();a._.required&&(!b.getValue()&&a.fire(\"required\")===false)&&d.data.preventDefault()};\nd.on(\"submit\",c);if(d.$.submit&&d.$.submit.call&&d.$.submit.apply)d.$.submit=CKEDITOR.tools.override(d.$.submit,function(a){return function(){c();a.apply?a.apply(this):a()}});a.on(\"destroy\",function(){d.removeListener(\"submit\",c)})}},destroy:function(a){this.fire(\"beforeDestroy\");!a&&p.call(this);this.editable(null);this.status=\"destroyed\";this.fire(\"destroy\");this.removeAllListeners();CKEDITOR.remove(this);CKEDITOR.fire(\"instanceDestroyed\",null,this)},elementPath:function(a){if(!a){a=this.getSelection();\nif(!a)return null;a=a.getStartElement()}return a?new CKEDITOR.dom.elementPath(a,this.editable()):null},createRange:function(){var a=this.editable();return a?new CKEDITOR.dom.range(a):null},execCommand:function(a,b){var d=this.getCommand(a),c={name:a,commandData:b,command:d};if(d&&d.state!=CKEDITOR.TRISTATE_DISABLED&&this.fire(\"beforeCommandExec\",c)!==false){c.returnValue=d.exec(c.commandData);if(!d.async&&this.fire(\"afterCommandExec\",c)!==false)return c.returnValue}return false},getCommand:function(a){return this.commands[a]},\ngetData:function(a){!a&&this.fire(\"beforeGetData\");var b=this._.data;if(typeof b!=\"string\")b=(b=this.element)&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?b.is(\"textarea\")?b.getValue():b.getHtml():\"\";b={dataValue:b};!a&&this.fire(\"getData\",b);return b.dataValue},getSnapshot:function(){var a=this.fire(\"getSnapshot\");if(typeof a!=\"string\"){var b=this.element;b&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&(a=b.is(\"textarea\")?b.getValue():b.getHtml())}return a},loadSnapshot:function(a){this.fire(\"loadSnapshot\",\na)},setData:function(a,b,d){var c=true,e=b;if(b&&typeof b==\"object\"){d=b.internal;e=b.callback;c=!b.noSnapshot}!d&&c&&this.fire(\"saveSnapshot\");if(e||!d)this.once(\"dataReady\",function(a){!d&&c&&this.fire(\"saveSnapshot\");e&&e.call(a.editor)});a={dataValue:a};!d&&this.fire(\"setData\",a);this._.data=a.dataValue;!d&&this.fire(\"afterSetData\",a)},setReadOnly:function(a){a=a==void 0||a;if(this.readOnly!=a){this.readOnly=a;this.keystrokeHandler.blockedKeystrokes[8]=+a;this.editable().setReadOnly(a);this.fire(\"readOnly\")}},\ninsertHtml:function(a,b){this.fire(\"insertHtml\",{dataValue:a,mode:b})},insertText:function(a){this.fire(\"insertText\",a)},insertElement:function(a){this.fire(\"insertElement\",a)},focus:function(){this.fire(\"beforeFocus\")},checkDirty:function(){return this.status==\"ready\"&&this._.previousValue!==this.getSnapshot()},resetDirty:function(){this._.previousValue=this.getSnapshot()},updateElement:function(){return p.call(this)},setKeystroke:function(){for(var a=this.keystrokeHandler.keystrokes,b=CKEDITOR.tools.isArray(arguments[0])?\narguments[0]:[[].slice.call(arguments,0)],d,c,e=b.length;e--;){d=b[e];c=0;if(CKEDITOR.tools.isArray(d)){c=d[1];d=d[0]}c?a[d]=c:delete a[d]}},addFeature:function(a){return this.filter.addFeature(a)},setActiveFilter:function(a){if(!a)a=this.filter;if(this.activeFilter!==a){this.activeFilter=a;this.fire(\"activeFilterChange\");a===this.filter?this.setActiveEnterMode(null,null):this.setActiveEnterMode(a.getAllowedEnterMode(this.enterMode),a.getAllowedEnterMode(this.shiftEnterMode,true))}},setActiveEnterMode:function(a,\nb){a=a?this.blockless?CKEDITOR.ENTER_BR:a:this.enterMode;b=b?this.blockless?CKEDITOR.ENTER_BR:b:this.shiftEnterMode;if(this.activeEnterMode!=a||this.activeShiftEnterMode!=b){this.activeEnterMode=a;this.activeShiftEnterMode=b;this.fire(\"activeEnterModeChange\")}}})})();CKEDITOR.ELEMENT_MODE_NONE=0;CKEDITOR.ELEMENT_MODE_REPLACE=1;CKEDITOR.ELEMENT_MODE_APPENDTO=2;CKEDITOR.ELEMENT_MODE_INLINE=3;\nCKEDITOR.htmlParser=function(){this._={htmlPartsRegex:RegExp(\"<(?:(?:\\\\/([^>]+)>)|(?:!--([\\\\S|\\\\s]*?)--\\>)|(?:([^\\\\s>]+)\\\\s*((?:(?:\\\"[^\\\"]*\\\")|(?:'[^']*')|[^\\\"'>])*)\\\\/?>))\",\"g\")}};\n(function(){var a=/([\\w\\-:.]+)(?:(?:\\s*=\\s*(?:(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s>]+)))|(?=\\s|$))/g,c={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};CKEDITOR.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(b){for(var f,d,e=0,g;f=this._.htmlPartsRegex.exec(b);){d=f.index;if(d>e){e=b.substring(e,d);if(g)g.push(e);else this.onText(e)}e=\nthis._.htmlPartsRegex.lastIndex;if(d=f[1]){d=d.toLowerCase();if(g&&CKEDITOR.dtd.$cdata[d]){this.onCDATA(g.join(\"\"));g=null}if(!g){this.onTagClose(d);continue}}if(g)g.push(f[0]);else if(d=f[3]){d=d.toLowerCase();if(!/=\"/.test(d)){var n={},h;f=f[4];var i=!!(f&&f.charAt(f.length-1)==\"/\");if(f)for(;h=a.exec(f);){var m=h[1].toLowerCase();h=h[2]||h[3]||h[4]||\"\";n[m]=!h&&c[m]?m:CKEDITOR.tools.htmlDecodeAttr(h)}this.onTagOpen(d,n,i);!g&&CKEDITOR.dtd.$cdata[d]&&(g=[])}}else if(d=f[2])this.onComment(d)}if(b.length>\ne)this.onText(b.substring(e,b.length))}}})();\nCKEDITOR.htmlParser.basicWriter=CKEDITOR.tools.createClass({$:function(){this._={output:[]}},proto:{openTag:function(a){this._.output.push(\"<\",a)},openTagClose:function(a,c){c?this._.output.push(\" />\"):this._.output.push(\">\")},attribute:function(a,c){typeof c==\"string\"&&(c=CKEDITOR.tools.htmlEncodeAttr(c));this._.output.push(\" \",a,'=\"',c,'\"')},closeTag:function(a){this._.output.push(\"</\",a,\">\")},text:function(a){this._.output.push(a)},comment:function(a){this._.output.push(\"<\\!--\",a,\"--\\>\")},write:function(a){this._.output.push(a)},\nreset:function(){this._.output=[];this._.indent=false},getHtml:function(a){var c=this._.output.join(\"\");a&&this.reset();return c}}});\"use strict\";\n(function(){CKEDITOR.htmlParser.node=function(){};CKEDITOR.htmlParser.node.prototype={remove:function(){var a=this.parent.children,c=CKEDITOR.tools.indexOf(a,this),b=this.previous,f=this.next;b&&(b.next=f);f&&(f.previous=b);a.splice(c,1);this.parent=null},replaceWith:function(a){var c=this.parent.children,b=CKEDITOR.tools.indexOf(c,this),f=a.previous=this.previous,d=a.next=this.next;f&&(f.next=a);d&&(d.previous=a);c[b]=a;a.parent=this.parent;this.parent=null},insertAfter:function(a){var c=a.parent.children,\nb=CKEDITOR.tools.indexOf(c,a),f=a.next;c.splice(b+1,0,this);this.next=a.next;this.previous=a;a.next=this;f&&(f.previous=this);this.parent=a.parent},insertBefore:function(a){var c=a.parent.children,b=CKEDITOR.tools.indexOf(c,a);c.splice(b,0,this);this.next=a;(this.previous=a.previous)&&(a.previous.next=this);a.previous=this;this.parent=a.parent},getAscendant:function(a){var c=typeof a==\"function\"?a:typeof a==\"string\"?function(b){return b.name==a}:function(b){return b.name in a},b=this.parent;for(;b&&\nb.type==CKEDITOR.NODE_ELEMENT;){if(c(b))return b;b=b.parent}return null},wrapWith:function(a){this.replaceWith(a);a.add(this);return a},getIndex:function(){return CKEDITOR.tools.indexOf(this.parent.children,this)},getFilterContext:function(a){return a||{}}}})();\"use strict\";CKEDITOR.htmlParser.comment=function(a){this.value=a;this._={isBlockLike:false}};\nCKEDITOR.htmlParser.comment.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_COMMENT,filter:function(a,c){var b=this.value;if(!(b=a.onComment(c,b,this))){this.remove();return false}if(typeof b!=\"string\"){this.replaceWith(b);return false}this.value=b;return true},writeHtml:function(a,c){c&&this.filter(c);a.comment(this.value)}});\"use strict\";\n(function(){CKEDITOR.htmlParser.text=function(a){this.value=a;this._={isBlockLike:false}};CKEDITOR.htmlParser.text.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(a,c){if(!(this.value=a.onText(c,this.value,this))){this.remove();return false}},writeHtml:function(a,c){c&&this.filter(c);a.text(this.value)}})})();\"use strict\";\n(function(){CKEDITOR.htmlParser.cdata=function(a){this.value=a};CKEDITOR.htmlParser.cdata.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(){},writeHtml:function(a){a.write(this.value)}})})();\"use strict\";CKEDITOR.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:true,hasInlineStarted:false}};\n(function(){function a(a){return a.attributes[\"data-cke-survive\"]?false:a.name==\"a\"&&a.attributes.href||CKEDITOR.dtd.$removeEmpty[a.name]}var c=CKEDITOR.tools.extend({table:1,ul:1,ol:1,dl:1},CKEDITOR.dtd.table,CKEDITOR.dtd.ul,CKEDITOR.dtd.ol,CKEDITOR.dtd.dl),b={ol:1,ul:1},f=CKEDITOR.tools.extend({},{html:1},CKEDITOR.dtd.html,CKEDITOR.dtd.body,CKEDITOR.dtd.head,{style:1,script:1}),d={ul:\"li\",ol:\"li\",dl:\"dd\",table:\"tbody\",tbody:\"tr\",thead:\"tr\",tfoot:\"tr\",tr:\"td\"};CKEDITOR.htmlParser.fragment.fromHtml=\nfunction(e,g,n){function h(a){var b;if(u.length>0)for(var d=0;d<u.length;d++){var c=u[d],e=c.name,f=CKEDITOR.dtd[e],j=k.name&&CKEDITOR.dtd[k.name];if((!j||j[e])&&(!a||!f||f[a]||!CKEDITOR.dtd[a])){if(!b){i();b=1}c=c.clone();c.parent=k;k=c;u.splice(d,1);d--}else if(e==k.name){p(k,k.parent,1);d--}}}function i(){for(;A.length;)p(A.shift(),k)}function m(a){if(a._.isBlockLike&&a.name!=\"pre\"&&a.name!=\"textarea\"){var b=a.children.length,d=a.children[b-1],c;if(d&&d.type==CKEDITOR.NODE_TEXT)(c=CKEDITOR.tools.rtrim(d.value))?\nd.value=c:a.children.length=b-1}}function p(b,d,c){var d=d||k||o,e=k;if(b.previous===void 0){if(s(d,b)){k=d;q.onTagOpen(n,{});b.returnPoint=d=k}m(b);(!a(b)||b.children.length)&&d.add(b);b.name==\"pre\"&&(j=false);b.name==\"textarea\"&&(l=false)}if(b.returnPoint){k=b.returnPoint;delete b.returnPoint}else k=c?d:e}function s(a,b){if((a==o||a.name==\"body\")&&n&&(!a.name||CKEDITOR.dtd[a.name][n])){var d,c;return(d=b.attributes&&(c=b.attributes[\"data-cke-real-element-type\"])?c:b.name)&&d in CKEDITOR.dtd.$inline&&\n!(d in CKEDITOR.dtd.head)&&!b.isOrphan||b.type==CKEDITOR.NODE_TEXT}}function x(a,b){return a in CKEDITOR.dtd.$listItem||a in CKEDITOR.dtd.$tableContent?a==b||a==\"dt\"&&b==\"dd\"||a==\"dd\"&&b==\"dt\":false}var q=new CKEDITOR.htmlParser,o=g instanceof CKEDITOR.htmlParser.element?g:typeof g==\"string\"?new CKEDITOR.htmlParser.element(g):new CKEDITOR.htmlParser.fragment,u=[],A=[],k=o,l=o.name==\"textarea\",j=o.name==\"pre\";q.onTagOpen=function(d,e,g,o){e=new CKEDITOR.htmlParser.element(d,e);if(e.isUnknown&&g)e.isEmpty=\ntrue;e.isOptionalClose=o;if(a(e))u.push(e);else{if(d==\"pre\")j=true;else{if(d==\"br\"&&j){k.add(new CKEDITOR.htmlParser.text(\"\\n\"));return}d==\"textarea\"&&(l=true)}if(d==\"br\")A.push(e);else{for(;;){o=(g=k.name)?CKEDITOR.dtd[g]||(k._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):f;if(!e.isUnknown&&!k.isUnknown&&!o[d])if(k.isOptionalClose)q.onTagClose(g);else if(d in b&&g in b){g=k.children;(g=g[g.length-1])&&g.name==\"li\"||p(g=new CKEDITOR.htmlParser.element(\"li\"),k);!e.returnPoint&&(e.returnPoint=k);\nk=g}else if(d in CKEDITOR.dtd.$listItem&&!x(d,g))q.onTagOpen(d==\"li\"?\"ul\":\"dl\",{},0,1);else if(g in c&&!x(d,g)){!e.returnPoint&&(e.returnPoint=k);k=k.parent}else{g in CKEDITOR.dtd.$inline&&u.unshift(k);if(k.parent)p(k,k.parent,1);else{e.isOrphan=1;break}}else break}h(d);i();e.parent=k;e.isEmpty?p(e):k=e}}};q.onTagClose=function(a){for(var b=u.length-1;b>=0;b--)if(a==u[b].name){u.splice(b,1);return}for(var d=[],c=[],e=k;e!=o&&e.name!=a;){e._.isBlockLike||c.unshift(e);d.push(e);e=e.returnPoint||e.parent}if(e!=\no){for(b=0;b<d.length;b++){var f=d[b];p(f,f.parent)}k=e;e._.isBlockLike&&i();p(e,e.parent);if(e==k)k=k.parent;u=u.concat(c)}a==\"body\"&&(n=false)};q.onText=function(a){if((!k._.hasInlineStarted||A.length)&&!j&&!l){a=CKEDITOR.tools.ltrim(a);if(a.length===0)return}var b=k.name,e=b?CKEDITOR.dtd[b]||(k._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):f;if(!l&&!e[\"#\"]&&b in c){q.onTagOpen(d[b]||\"\");q.onText(a)}else{i();h();!j&&!l&&(a=a.replace(/[\\t\\r\\n ]{2,}|[\\t\\r\\n]/g,\" \"));a=new CKEDITOR.htmlParser.text(a);\nif(s(k,a))this.onTagOpen(n,{},0,1);k.add(a)}};q.onCDATA=function(a){k.add(new CKEDITOR.htmlParser.cdata(a))};q.onComment=function(a){i();h();k.add(new CKEDITOR.htmlParser.comment(a))};q.parse(e);for(i();k!=o;)p(k,k.parent,1);m(o);return o};CKEDITOR.htmlParser.fragment.prototype={type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,add:function(a,b){isNaN(b)&&(b=this.children.length);var d=b>0?this.children[b-1]:null;if(d){if(a._.isBlockLike&&d.type==CKEDITOR.NODE_TEXT){d.value=CKEDITOR.tools.rtrim(d.value);if(d.value.length===\n0){this.children.pop();this.add(a);return}}d.next=a}a.previous=d;a.parent=this;this.children.splice(b,0,a);if(!this._.hasInlineStarted)this._.hasInlineStarted=a.type==CKEDITOR.NODE_TEXT||a.type==CKEDITOR.NODE_ELEMENT&&!a._.isBlockLike},filter:function(a,b){b=this.getFilterContext(b);a.onRoot(b,this);this.filterChildren(a,false,b)},filterChildren:function(a,b,d){if(this.childrenFilteredBy!=a.id){d=this.getFilterContext(d);if(b&&!this.parent)a.onRoot(d,this);this.childrenFilteredBy=a.id;for(b=0;b<this.children.length;b++)this.children[b].filter(a,\nd)===false&&b--}},writeHtml:function(a,b){b&&this.filter(b);this.writeChildrenHtml(a)},writeChildrenHtml:function(a,b,d){var c=this.getFilterContext();if(d&&!this.parent&&b)b.onRoot(c,this);b&&this.filterChildren(b,false,c);b=0;d=this.children;for(c=d.length;b<c;b++)d[b].writeHtml(a)},forEach:function(a,b,d){if(!d&&(!b||this.type==b))var c=a(this);if(c!==false)for(var d=this.children,f=0;f<d.length;f++){c=d[f];c.type==CKEDITOR.NODE_ELEMENT?c.forEach(a,b):(!b||c.type==b)&&a(c)}},getFilterContext:function(a){return a||\n{}}}})();\"use strict\";\n(function(){function a(){this.rules=[]}function c(b,c,d,e){var g,n;for(g in c){(n=b[g])||(n=b[g]=new a);n.add(c[g],d,e)}}CKEDITOR.htmlParser.filter=CKEDITOR.tools.createClass({$:function(b){this.id=CKEDITOR.tools.getNextNumber();this.elementNameRules=new a;this.attributeNameRules=new a;this.elementsRules={};this.attributesRules={};this.textRules=new a;this.commentRules=new a;this.rootRules=new a;b&&this.addRules(b,10)},proto:{addRules:function(a,f){var d;if(typeof f==\"number\")d=f;else if(f&&\"priority\"in\nf)d=f.priority;typeof d!=\"number\"&&(d=10);typeof f!=\"object\"&&(f={});a.elementNames&&this.elementNameRules.addMany(a.elementNames,d,f);a.attributeNames&&this.attributeNameRules.addMany(a.attributeNames,d,f);a.elements&&c(this.elementsRules,a.elements,d,f);a.attributes&&c(this.attributesRules,a.attributes,d,f);a.text&&this.textRules.add(a.text,d,f);a.comment&&this.commentRules.add(a.comment,d,f);a.root&&this.rootRules.add(a.root,d,f)},applyTo:function(a){a.filter(this)},onElementName:function(a,c){return this.elementNameRules.execOnName(a,\nc)},onAttributeName:function(a,c){return this.attributeNameRules.execOnName(a,c)},onText:function(a,c,d){return this.textRules.exec(a,c,d)},onComment:function(a,c,d){return this.commentRules.exec(a,c,d)},onRoot:function(a,c){return this.rootRules.exec(a,c)},onElement:function(a,c){for(var d=[this.elementsRules[\"^\"],this.elementsRules[c.name],this.elementsRules.$],e,g=0;g<3;g++)if(e=d[g]){e=e.exec(a,c,this);if(e===false)return null;if(e&&e!=c)return this.onNode(a,e);if(c.parent&&!c.name)break}return c},\nonNode:function(a,c){var d=c.type;return d==CKEDITOR.NODE_ELEMENT?this.onElement(a,c):d==CKEDITOR.NODE_TEXT?new CKEDITOR.htmlParser.text(this.onText(a,c.value)):d==CKEDITOR.NODE_COMMENT?new CKEDITOR.htmlParser.comment(this.onComment(a,c.value)):null},onAttribute:function(a,c,d,e){return(d=this.attributesRules[d])?d.exec(a,e,c,this):e}}});CKEDITOR.htmlParser.filterRulesGroup=a;a.prototype={add:function(a,c,d){this.rules.splice(this.findIndex(c),0,{value:a,priority:c,options:d})},addMany:function(a,\nc,d){for(var e=[this.findIndex(c),0],g=0,n=a.length;g<n;g++)e.push({value:a[g],priority:c,options:d});this.rules.splice.apply(this.rules,e)},findIndex:function(a){for(var c=this.rules,d=c.length-1;d>=0&&a<c[d].priority;)d--;return d+1},exec:function(a,c){var d=c instanceof CKEDITOR.htmlParser.node||c instanceof CKEDITOR.htmlParser.fragment,e=Array.prototype.slice.call(arguments,1),g=this.rules,n=g.length,h,i,m,p;for(p=0;p<n;p++){if(d){h=c.type;i=c.name}m=g[p];if(!(a.nonEditable&&!m.options.applyToAll||\na.nestedEditable&&m.options.excludeNestedEditable)){m=m.value.apply(null,e);if(m===false||d&&m&&(m.name!=i||m.type!=h))return m;m!=void 0&&(e[0]=c=m)}}return c},execOnName:function(a,c){for(var d=0,e=this.rules,g=e.length,n;c&&d<g;d++){n=e[d];!(a.nonEditable&&!n.options.applyToAll||a.nestedEditable&&n.options.excludeNestedEditable)&&(c=c.replace(n.value[0],n.value[1]))}return c}}})();\n(function(){function a(a,c){function l(a){return a||CKEDITOR.env.needsNbspFiller?new CKEDITOR.htmlParser.text(\" \"):new CKEDITOR.htmlParser.element(\"br\",{\"data-cke-bogus\":1})}function o(a,d){return function(c){if(c.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var j=[],k=b(c),o,g;if(k)for(r(k,1)&&j.push(k);k;){if(e(k)&&(o=f(k))&&r(o))if((g=f(o))&&!e(g))j.push(o);else{l(v).insertAfter(o);o.remove()}k=k.previous}for(k=0;k<j.length;k++)j[k].remove();if(j=typeof d==\"function\"?d(c)!==false:d)if(!v&&!CKEDITOR.env.needsBrFiller&&\nc.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)j=false;else if(!v&&!CKEDITOR.env.needsBrFiller&&(document.documentMode>7||c.name in CKEDITOR.dtd.tr||c.name in CKEDITOR.dtd.$listItem))j=false;else{j=b(c);j=!j||c.name==\"form\"&&j.name==\"input\"}j&&c.add(l(a))}}}function r(a,b){if((!v||CKEDITOR.env.needsBrFiller)&&a.type==CKEDITOR.NODE_ELEMENT&&a.name==\"br\"&&!a.attributes[\"data-cke-eol\"])return true;var d;if(a.type==CKEDITOR.NODE_TEXT&&(d=a.value.match(u))){if(d.index){(new CKEDITOR.htmlParser.text(a.value.substring(0,\nd.index))).insertBefore(a);a.value=d[0]}if(!CKEDITOR.env.needsBrFiller&&v&&(!b||a.parent.name in h))return true;if(!v)if((d=a.previous)&&d.name==\"br\"||!d||e(d))return true}return false}var w={elements:{}},v=c==\"html\",h=CKEDITOR.tools.extend({},j),t;for(t in h)\"#\"in k[t]||delete h[t];for(t in h)w.elements[t]=o(v,a.config.fillEmptyBlocks!==false);w.root=o(v);w.elements.br=function(a){return function(b){if(b.parent.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var c=b.attributes;if(\"data-cke-bogus\"in c||\"data-cke-eol\"in\nc)delete c[\"data-cke-bogus\"];else{for(c=b.next;c&&d(c);)c=c.next;var j=f(b);!c&&e(b.parent)?g(b.parent,l(a)):e(c)&&(j&&!e(j))&&l(a).insertBefore(c)}}}}(v);return w}function c(a,b){return a!=CKEDITOR.ENTER_BR&&b!==false?a==CKEDITOR.ENTER_DIV?\"div\":\"p\":false}function b(a){for(a=a.children[a.children.length-1];a&&d(a);)a=a.previous;return a}function f(a){for(a=a.previous;a&&d(a);)a=a.previous;return a}function d(a){return a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(a.value)||a.type==CKEDITOR.NODE_ELEMENT&&\na.attributes[\"data-cke-bookmark\"]}function e(a){return a&&(a.type==CKEDITOR.NODE_ELEMENT&&a.name in j||a.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)}function g(a,b){var d=a.children[a.children.length-1];a.children.push(b);b.parent=a;if(d){d.next=b;b.previous=d}}function n(a){a=a.attributes;a.contenteditable!=\"false\"&&(a[\"data-cke-editable\"]=a.contenteditable?\"true\":1);a.contenteditable=\"false\"}function h(a){a=a.attributes;switch(a[\"data-cke-editable\"]){case \"true\":a.contenteditable=\"true\";break;case \"1\":delete a.contenteditable}}\nfunction i(a){return a.replace(S,function(a,b,d){return\"<\"+b+d.replace(F,function(a,b){return D.test(b)&&d.indexOf(\"data-cke-saved-\"+b)==-1?\" data-cke-saved-\"+a+\" data-cke-\"+CKEDITOR.rnd+\"-\"+a:a})+\">\"})}function m(a,b){return a.replace(b,function(a,b,d){a.indexOf(\"<textarea\")===0&&(a=b+x(d).replace(/</g,\"&lt;\").replace(/>/g,\"&gt;\")+\"</textarea>\");return\"<cke:encoded>\"+encodeURIComponent(a)+\"</cke:encoded>\"})}function p(a){return a.replace(w,function(a,b){return decodeURIComponent(b)})}function s(a){return a.replace(/<\\!--(?!{cke_protected})[\\s\\S]+?--\\>/g,\nfunction(a){return\"<\\!--\"+A+\"{C}\"+encodeURIComponent(a).replace(/--/g,\"%2D%2D\")+\"--\\>\"})}function x(a){return a.replace(/<\\!--\\{cke_protected\\}\\{C\\}([\\s\\S]+?)--\\>/g,function(a,b){return decodeURIComponent(b)})}function q(a,b){var d=b._.dataStore;return a.replace(/<\\!--\\{cke_protected\\}([\\s\\S]+?)--\\>/g,function(a,b){return decodeURIComponent(b)}).replace(/\\{cke_protected_(\\d+)\\}/g,function(a,b){return d&&d[b]||\"\"})}function o(a,b){for(var d=[],c=b.config.protectedSource,e=b._.dataStore||(b._.dataStore=\n{id:1}),f=/<\\!--\\{cke_temp(comment)?\\}(\\d*?)--\\>/g,c=[/<script[\\s\\S]*?<\\/script>/gi,/<noscript[\\s\\S]*?<\\/noscript>/gi].concat(c),a=a.replace(/<\\!--[\\s\\S]*?--\\>/g,function(a){return\"<\\!--{cke_tempcomment}\"+(d.push(a)-1)+\"--\\>\"}),j=0;j<c.length;j++)a=a.replace(c[j],function(a){a=a.replace(f,function(a,b,c){return d[c]});return/cke_temp(comment)?/.test(a)?a:\"<\\!--{cke_temp}\"+(d.push(a)-1)+\"--\\>\"});a=a.replace(f,function(a,b,c){return\"<\\!--\"+A+(b?\"{C}\":\"\")+encodeURIComponent(d[c]).replace(/--/g,\"%2D%2D\")+\n\"--\\>\"});a=a.replace(/<\\w+(?:\\s+(?:(?:[^\\s=>]+\\s*=\\s*(?:[^'\"\\s>]+|'[^']*'|\"[^\"]*\"))|[^\\s=>]+))+\\s*>/g,function(a){return a.replace(/<\\!--\\{cke_protected\\}([^>]*)--\\>/g,function(a,b){e[e.id]=decodeURIComponent(b);return\"{cke_protected_\"+e.id++ +\"}\"})});return a=a.replace(/<(title|iframe|textarea)([^>]*)>([\\s\\S]*?)<\\/\\1>/g,function(a,d,c,e){return\"<\"+d+c+\">\"+q(x(e),b)+\"</\"+d+\">\"})}CKEDITOR.htmlDataProcessor=function(b){var d,e,f=this;this.editor=b;this.dataFilter=d=new CKEDITOR.htmlParser.filter;this.htmlFilter=\ne=new CKEDITOR.htmlParser.filter;this.writer=new CKEDITOR.htmlParser.basicWriter;d.addRules(v);d.addRules(I,{applyToAll:true});d.addRules(a(b,\"data\"),{applyToAll:true});e.addRules(r);e.addRules(O,{applyToAll:true});e.addRules(a(b,\"html\"),{applyToAll:true});b.on(\"toHtml\",function(a){var a=a.data,d=a.dataValue,d=o(d,b),d=m(d,J),d=i(d),d=m(d,L),d=d.replace(z,\"$1cke:$2\"),d=d.replace(E,\"<cke:$1$2></cke:$1>\"),d=d.replace(/(<pre\\b[^>]*>)(\\r\\n|\\n)/g,\"$1$2$2\"),d=d.replace(/([^a-z0-9<\\-])(on\\w{3,})(?!>)/gi,\n\"$1data-cke-\"+CKEDITOR.rnd+\"-$2\"),e=a.context||b.editable().getName(),f;if(CKEDITOR.env.ie&&CKEDITOR.env.version<9&&e==\"pre\"){e=\"div\";d=\"<pre>\"+d+\"</pre>\";f=1}e=b.document.createElement(e);e.setHtml(\"a\"+d);d=e.getHtml().substr(1);d=d.replace(RegExp(\"data-cke-\"+CKEDITOR.rnd+\"-\",\"ig\"),\"\");f&&(d=d.replace(/^<pre>|<\\/pre>$/gi,\"\"));d=d.replace(t,\"$1$2\");d=p(d);d=x(d);a.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(d,a.context,a.fixForBody===false?false:c(a.enterMode,b.config.autoParagraph))},null,null,\n5);b.on(\"toHtml\",function(a){a.data.filter.applyTo(a.data.dataValue,true,a.data.dontFilter,a.data.enterMode)&&b.fire(\"dataFiltered\")},null,null,6);b.on(\"toHtml\",function(a){a.data.dataValue.filterChildren(f.dataFilter,true)},null,null,10);b.on(\"toHtml\",function(a){var a=a.data,b=a.dataValue,d=new CKEDITOR.htmlParser.basicWriter;b.writeChildrenHtml(d);b=d.getHtml(true);a.dataValue=s(b)},null,null,15);b.on(\"toDataFormat\",function(a){var d=a.data.dataValue;a.data.enterMode!=CKEDITOR.ENTER_BR&&(d=d.replace(/^<br *\\/?>/i,\n\"\"));a.data.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(d,a.data.context,c(a.data.enterMode,b.config.autoParagraph))},null,null,5);b.on(\"toDataFormat\",function(a){a.data.dataValue.filterChildren(f.htmlFilter,true)},null,null,10);b.on(\"toDataFormat\",function(a){a.data.filter.applyTo(a.data.dataValue,false,true)},null,null,11);b.on(\"toDataFormat\",function(a){var d=a.data.dataValue,c=f.writer;c.reset();d.writeChildrenHtml(c);d=c.getHtml(true);d=x(d);d=q(d,b);a.data.dataValue=d},null,null,15)};CKEDITOR.htmlDataProcessor.prototype=\n{toHtml:function(a,b,d,c){var e=this.editor,f,j,k;if(b&&typeof b==\"object\"){f=b.context;d=b.fixForBody;c=b.dontFilter;j=b.filter;k=b.enterMode}else f=b;!f&&f!==null&&(f=e.editable().getName());return e.fire(\"toHtml\",{dataValue:a,context:f,fixForBody:d,dontFilter:c,filter:j||e.filter,enterMode:k||e.enterMode}).dataValue},toDataFormat:function(a,b){var d,c,e;if(b){d=b.context;c=b.filter;e=b.enterMode}!d&&d!==null&&(d=this.editor.editable().getName());return this.editor.fire(\"toDataFormat\",{dataValue:a,\nfilter:c||this.editor.filter,context:d,enterMode:e||this.editor.enterMode}).dataValue}};var u=/(?:&nbsp;|\\xa0)$/,A=\"{cke_protected}\",k=CKEDITOR.dtd,l=[\"caption\",\"colgroup\",\"col\",\"thead\",\"tfoot\",\"tbody\"],j=CKEDITOR.tools.extend({},k.$blockLimit,k.$block),v={elements:{input:n,textarea:n}},I={attributeNames:[[/^on/,\"data-cke-pa-on\"],[/^data-cke-expando$/,\"\"]]},r={elements:{embed:function(a){var b=a.parent;if(b&&b.name==\"object\"){var d=b.attributes.width,b=b.attributes.height;if(d)a.attributes.width=\nd;if(b)a.attributes.height=b}},a:function(a){if(!a.children.length&&!a.attributes.name&&!a.attributes[\"data-cke-saved-name\"])return false}}},O={elementNames:[[/^cke:/,\"\"],[/^\\?xml:namespace$/,\"\"]],attributeNames:[[/^data-cke-(saved|pa)-/,\"\"],[/^data-cke-.*/,\"\"],[\"hidefocus\",\"\"]],elements:{$:function(a){var b=a.attributes;if(b){if(b[\"data-cke-temp\"])return false;for(var d=[\"name\",\"href\",\"src\"],c,e=0;e<d.length;e++){c=\"data-cke-saved-\"+d[e];c in b&&delete b[d[e]]}}return a},table:function(a){a.children.slice(0).sort(function(a,\nb){var d,c;if(a.type==CKEDITOR.NODE_ELEMENT&&b.type==a.type){d=CKEDITOR.tools.indexOf(l,a.name);c=CKEDITOR.tools.indexOf(l,b.name)}if(!(d>-1&&c>-1&&d!=c)){d=a.parent?a.getIndex():-1;c=b.parent?b.getIndex():-1}return d>c?1:-1})},param:function(a){a.children=[];a.isEmpty=true;return a},span:function(a){a.attributes[\"class\"]==\"Apple-style-span\"&&delete a.name},html:function(a){delete a.attributes.contenteditable;delete a.attributes[\"class\"]},body:function(a){delete a.attributes.spellcheck;delete a.attributes.contenteditable},\nstyle:function(a){var b=a.children[0];if(b&&b.value)b.value=CKEDITOR.tools.trim(b.value);if(!a.attributes.type)a.attributes.type=\"text/css\"},title:function(a){var b=a.children[0];!b&&g(a,b=new CKEDITOR.htmlParser.text);b.value=a.attributes[\"data-cke-title\"]||\"\"},input:h,textarea:h},attributes:{\"class\":function(a){return CKEDITOR.tools.ltrim(a.replace(/(?:^|\\s+)cke_[^\\s]*/g,\"\"))||false}}};if(CKEDITOR.env.ie)O.attributes.style=function(a){return a.replace(/(^|;)([^\\:]+)/g,function(a){return a.toLowerCase()})};\nvar S=/<(a|area|img|input|source)\\b([^>]*)>/gi,F=/([\\w-]+)\\s*=\\s*(?:(?:\"[^\"]*\")|(?:'[^']*')|(?:[^ \"'>]+))/gi,D=/^(href|src|name)$/i,L=/(?:<style(?=[ >])[^>]*>[\\s\\S]*?<\\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,J=/(<textarea(?=[ >])[^>]*>)([\\s\\S]*?)(?:<\\/textarea>)/gi,w=/<cke:encoded>([^<]*)<\\/cke:encoded>/gi,z=/(<\\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,t=/(<\\/?)cke:((?:html|body|head|title)[^>]*>)/gi,E=/<cke:(param|embed)([^>]*?)\\/?>(?!\\s*<\\/cke:\\1)/gi})();\"use strict\";\nCKEDITOR.htmlParser.element=function(a,c){this.name=a;this.attributes=c||{};this.children=[];var b=a||\"\",f=b.match(/^cke:(.*)/);f&&(b=f[1]);b=!(!CKEDITOR.dtd.$nonBodyContent[b]&&!CKEDITOR.dtd.$block[b]&&!CKEDITOR.dtd.$listItem[b]&&!CKEDITOR.dtd.$tableContent[b]&&!(CKEDITOR.dtd.$nonEditable[b]||b==\"br\"));this.isEmpty=!!CKEDITOR.dtd.$empty[a];this.isUnknown=!CKEDITOR.dtd[a];this._={isBlockLike:b,hasInlineStarted:this.isEmpty||!b}};\nCKEDITOR.htmlParser.cssStyle=function(a){var c={};((a instanceof CKEDITOR.htmlParser.element?a.attributes.style:a)||\"\").replace(/&quot;/g,'\"').replace(/\\s*([^ :;]+)\\s*:\\s*([^;]+)\\s*(?=;|$)/g,function(a,f,d){f==\"font-family\"&&(d=d.replace(/[\"']/g,\"\"));c[f.toLowerCase()]=d});return{rules:c,populate:function(a){var c=this.toString();if(c)a instanceof CKEDITOR.dom.element?a.setAttribute(\"style\",c):a instanceof CKEDITOR.htmlParser.element?a.attributes.style=c:a.style=c},toString:function(){var a=[],f;\nfor(f in c)c[f]&&a.push(f,\":\",c[f],\";\");return a.join(\"\")}}};\n(function(){function a(a){return function(b){return b.type==CKEDITOR.NODE_ELEMENT&&(typeof a==\"string\"?b.name==a:b.name in a)}}var c=function(a,b){a=a[0];b=b[0];return a<b?-1:a>b?1:0},b=CKEDITOR.htmlParser.fragment.prototype;CKEDITOR.htmlParser.element.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_ELEMENT,add:b.add,clone:function(){return new CKEDITOR.htmlParser.element(this.name,this.attributes)},filter:function(a,b){var c=this,g,n,b=c.getFilterContext(b);if(b.off)return true;\nif(!c.parent)a.onRoot(b,c);for(;;){g=c.name;if(!(n=a.onElementName(b,g))){this.remove();return false}c.name=n;if(!(c=a.onElement(b,c))){this.remove();return false}if(c!==this){this.replaceWith(c);return false}if(c.name==g)break;if(c.type!=CKEDITOR.NODE_ELEMENT){this.replaceWith(c);return false}if(!c.name){this.replaceWithChildren();return false}}g=c.attributes;var h,i;for(h in g){i=h;for(n=g[h];;)if(i=a.onAttributeName(b,h))if(i!=h){delete g[h];h=i}else break;else{delete g[h];break}i&&((n=a.onAttribute(b,\nc,i,n))===false?delete g[i]:g[i]=n)}c.isEmpty||this.filterChildren(a,false,b);return true},filterChildren:b.filterChildren,writeHtml:function(a,b){b&&this.filter(b);var e=this.name,g=[],n=this.attributes,h,i;a.openTag(e,n);for(h in n)g.push([h,n[h]]);a.sortAttributes&&g.sort(c);h=0;for(i=g.length;h<i;h++){n=g[h];a.attribute(n[0],n[1])}a.openTagClose(e,this.isEmpty);this.writeChildrenHtml(a);this.isEmpty||a.closeTag(e)},writeChildrenHtml:b.writeChildrenHtml,replaceWithChildren:function(){for(var a=\nthis.children,b=a.length;b;)a[--b].insertAfter(this);this.remove()},forEach:b.forEach,getFirst:function(b){if(!b)return this.children.length?this.children[0]:null;typeof b!=\"function\"&&(b=a(b));for(var d=0,c=this.children.length;d<c;++d)if(b(this.children[d]))return this.children[d];return null},getHtml:function(){var a=new CKEDITOR.htmlParser.basicWriter;this.writeChildrenHtml(a);return a.getHtml()},setHtml:function(a){for(var a=this.children=CKEDITOR.htmlParser.fragment.fromHtml(a).children,b=0,\nc=a.length;b<c;++b)a[b].parent=this},getOuterHtml:function(){var a=new CKEDITOR.htmlParser.basicWriter;this.writeHtml(a);return a.getHtml()},split:function(a){for(var b=this.children.splice(a,this.children.length-a),c=this.clone(),g=0;g<b.length;++g)b[g].parent=c;c.children=b;if(b[0])b[0].previous=null;if(a>0)this.children[a-1].next=null;this.parent.add(c,this.getIndex()+1);return c},addClass:function(a){if(!this.hasClass(a)){var b=this.attributes[\"class\"]||\"\";this.attributes[\"class\"]=b+(b?\" \":\"\")+\na}},removeClass:function(a){var b=this.attributes[\"class\"];if(b)(b=CKEDITOR.tools.trim(b.replace(RegExp(\"(?:\\\\s+|^)\"+a+\"(?:\\\\s+|$)\"),\" \")))?this.attributes[\"class\"]=b:delete this.attributes[\"class\"]},hasClass:function(a){var b=this.attributes[\"class\"];return!b?false:RegExp(\"(?:^|\\\\s)\"+a+\"(?=\\\\s|$)\").test(b)},getFilterContext:function(a){var b=[];a||(a={off:false,nonEditable:false,nestedEditable:false});!a.off&&this.attributes[\"data-cke-processor\"]==\"off\"&&b.push(\"off\",true);!a.nonEditable&&this.attributes.contenteditable==\n\"false\"?b.push(\"nonEditable\",true):a.nonEditable&&(!a.nestedEditable&&this.attributes.contenteditable==\"true\")&&b.push(\"nestedEditable\",true);if(b.length)for(var a=CKEDITOR.tools.copy(a),c=0;c<b.length;c=c+2)a[b[c]]=b[c+1];return a}},true)})();\n(function(){var a={},c=/{([^}]+)}/g,b=/([\\\\'])/g,f=/\\n/g,d=/\\r/g;CKEDITOR.template=function(e){if(a[e])this.output=a[e];else{var g=e.replace(b,\"\\\\$1\").replace(f,\"\\\\n\").replace(d,\"\\\\r\").replace(c,function(a,b){return\"',data['\"+b+\"']==undefined?'{\"+b+\"}':data['\"+b+\"'],'\"});this.output=a[e]=Function(\"data\",\"buffer\",\"return buffer?buffer.push('\"+g+\"'):['\"+g+\"'].join('');\")}}})();delete CKEDITOR.loadFullCore;CKEDITOR.instances={};CKEDITOR.document=new CKEDITOR.dom.document(document);\nCKEDITOR.add=function(a){CKEDITOR.instances[a.name]=a;a.on(\"focus\",function(){if(CKEDITOR.currentInstance!=a){CKEDITOR.currentInstance=a;CKEDITOR.fire(\"currentInstance\")}});a.on(\"blur\",function(){if(CKEDITOR.currentInstance==a){CKEDITOR.currentInstance=null;CKEDITOR.fire(\"currentInstance\")}});CKEDITOR.fire(\"instance\",null,a)};CKEDITOR.remove=function(a){delete CKEDITOR.instances[a.name]};\n(function(){var a={};CKEDITOR.addTemplate=function(c,b){var f=a[c];if(f)return f;f={name:c,source:b};CKEDITOR.fire(\"template\",f);return a[c]=new CKEDITOR.template(f.source)};CKEDITOR.getTemplate=function(c){return a[c]}})();(function(){var a=[];CKEDITOR.addCss=function(c){a.push(c)};CKEDITOR.getCss=function(){return a.join(\"\\n\")}})();CKEDITOR.on(\"instanceDestroyed\",function(){CKEDITOR.tools.isEmpty(this.instances)&&CKEDITOR.fire(\"reset\")});CKEDITOR.TRISTATE_ON=1;CKEDITOR.TRISTATE_OFF=2;\nCKEDITOR.TRISTATE_DISABLED=0;\n(function(){CKEDITOR.inline=function(a,c){if(!CKEDITOR.env.isCompatible)return null;a=CKEDITOR.dom.element.get(a);if(a.getEditor())throw'The editor instance \"'+a.getEditor().name+'\" is already attached to the provided element.';var b=new CKEDITOR.editor(c,a,CKEDITOR.ELEMENT_MODE_INLINE),f=a.is(\"textarea\")?a:null;if(f){b.setData(f.getValue(),null,true);a=CKEDITOR.dom.element.createFromHtml('<div contenteditable=\"'+!!b.readOnly+'\" class=\"cke_textarea_inline\">'+f.getValue()+\"</div>\",CKEDITOR.document);\na.insertAfter(f);f.hide();f.$.form&&b._attachToForm()}else b.setData(a.getHtml(),null,true);b.on(\"loaded\",function(){b.fire(\"uiReady\");b.editable(a);b.container=a;b.setData(b.getData(1));b.resetDirty();b.fire(\"contentDom\");b.mode=\"wysiwyg\";b.fire(\"mode\");b.status=\"ready\";b.fireOnce(\"instanceReady\");CKEDITOR.fire(\"instanceReady\",null,b)},null,null,1E4);b.on(\"destroy\",function(){if(f){b.container.clearCustomData();b.container.remove();f.show()}b.element.clearCustomData();delete b.element});return b};\nCKEDITOR.inlineAll=function(){var a,c,b;for(b in CKEDITOR.dtd.$editable)for(var f=CKEDITOR.document.getElementsByTag(b),d=0,e=f.count();d<e;d++){a=f.getItem(d);if(a.getAttribute(\"contenteditable\")==\"true\"){c={element:a,config:{}};CKEDITOR.fire(\"inline\",c)!==false&&CKEDITOR.inline(a,c.config)}}};CKEDITOR.domReady(function(){!CKEDITOR.disableAutoInline&&CKEDITOR.inlineAll()})})();CKEDITOR.replaceClass=\"ckeditor\";\n(function(){function a(a,e,f,n){if(!CKEDITOR.env.isCompatible)return null;a=CKEDITOR.dom.element.get(a);if(a.getEditor())throw'The editor instance \"'+a.getEditor().name+'\" is already attached to the provided element.';var h=new CKEDITOR.editor(e,a,n);if(n==CKEDITOR.ELEMENT_MODE_REPLACE){a.setStyle(\"visibility\",\"hidden\");h._.required=a.hasAttribute(\"required\");a.removeAttribute(\"required\")}f&&h.setData(f,null,true);h.on(\"loaded\",function(){b(h);n==CKEDITOR.ELEMENT_MODE_REPLACE&&(h.config.autoUpdateElement&&\na.$.form)&&h._attachToForm();h.setMode(h.config.startupMode,function(){h.resetDirty();h.status=\"ready\";h.fireOnce(\"instanceReady\");CKEDITOR.fire(\"instanceReady\",null,h)})});h.on(\"destroy\",c);return h}function c(){var a=this.container,b=this.element;if(a){a.clearCustomData();a.remove()}if(b){b.clearCustomData();if(this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE){b.show();this._.required&&b.setAttribute(\"required\",\"required\")}delete this.element}}function b(a){var b=a.name,c=a.element,n=a.elementMode,\nh=a.fire(\"uiSpace\",{space:\"top\",html:\"\"}).html,i=a.fire(\"uiSpace\",{space:\"bottom\",html:\"\"}).html;f||(f=CKEDITOR.addTemplate(\"maincontainer\",'<{outerEl} id=\"cke_{name}\" class=\"{id} cke cke_reset cke_chrome cke_editor_{name} cke_{langDir} '+CKEDITOR.env.cssClass+'\"  dir=\"{langDir}\" lang=\"{langCode}\" role=\"application\" aria-labelledby=\"cke_{name}_arialbl\"><span id=\"cke_{name}_arialbl\" class=\"cke_voice_label\">{voiceLabel}</span><{outerEl} class=\"cke_inner cke_reset\" role=\"presentation\">{topHtml}<{outerEl} id=\"{contentId}\" class=\"cke_contents cke_reset\" role=\"presentation\"></{outerEl}>{bottomHtml}</{outerEl}></{outerEl}>'));\nb=CKEDITOR.dom.element.createFromHtml(f.output({id:a.id,name:b,langDir:a.lang.dir,langCode:a.langCode,voiceLabel:[a.lang.editor,a.name].join(\", \"),topHtml:h?'<span id=\"'+a.ui.spaceId(\"top\")+'\" class=\"cke_top cke_reset_all\" role=\"presentation\" style=\"height:auto\">'+h+\"</span>\":\"\",contentId:a.ui.spaceId(\"contents\"),bottomHtml:i?'<span id=\"'+a.ui.spaceId(\"bottom\")+'\" class=\"cke_bottom cke_reset_all\" role=\"presentation\">'+i+\"</span>\":\"\",outerEl:CKEDITOR.env.ie?\"span\":\"div\"}));if(n==CKEDITOR.ELEMENT_MODE_REPLACE){c.hide();\nb.insertAfter(c)}else c.append(b);a.container=b;h&&a.ui.space(\"top\").unselectable();i&&a.ui.space(\"bottom\").unselectable();c=a.config.width;n=a.config.height;c&&b.setStyle(\"width\",CKEDITOR.tools.cssLength(c));n&&a.ui.space(\"contents\").setStyle(\"height\",CKEDITOR.tools.cssLength(n));b.disableContextMenu();CKEDITOR.env.webkit&&b.on(\"focus\",function(){a.focus()});a.fireOnce(\"uiReady\")}CKEDITOR.replace=function(b,c){return a(b,c,null,CKEDITOR.ELEMENT_MODE_REPLACE)};CKEDITOR.appendTo=function(b,c,f){return a(b,\nc,f,CKEDITOR.ELEMENT_MODE_APPENDTO)};CKEDITOR.replaceAll=function(){for(var a=document.getElementsByTagName(\"textarea\"),b=0;b<a.length;b++){var c=null,f=a[b];if(f.name||f.id){if(typeof arguments[0]==\"string\"){if(!RegExp(\"(?:^|\\\\s)\"+arguments[0]+\"(?:$|\\\\s)\").test(f.className))continue}else if(typeof arguments[0]==\"function\"){c={};if(arguments[0](f,c)===false)continue}this.replace(f,c)}}};CKEDITOR.editor.prototype.addMode=function(a,b){(this._.modes||(this._.modes={}))[a]=b};CKEDITOR.editor.prototype.setMode=\nfunction(a,b){var c=this,f=this._.modes;if(!(a==c.mode||!f||!f[a])){c.fire(\"beforeSetMode\",a);if(c.mode){var h=c.checkDirty(),f=c._.previousModeData,i,m=0;c.fire(\"beforeModeUnload\");c.editable(0);c._.previousMode=c.mode;c._.previousModeData=i=c.getData(1);if(c.mode==\"source\"&&f==i){c.fire(\"lockSnapshot\",{forceUpdate:true});m=1}c.ui.space(\"contents\").setHtml(\"\");c.mode=\"\"}else c._.previousModeData=c.getData(1);this._.modes[a](function(){c.mode=a;h!==void 0&&!h&&c.resetDirty();m?c.fire(\"unlockSnapshot\"):\na==\"wysiwyg\"&&c.fire(\"saveSnapshot\");setTimeout(function(){c.fire(\"mode\");b&&b.call(c)},0)})}};CKEDITOR.editor.prototype.resize=function(a,b,c,f){var h=this.container,i=this.ui.space(\"contents\"),m=CKEDITOR.env.webkit&&this.document&&this.document.getWindow().$.frameElement,f=f?h.getChild(1):h;f.setSize(\"width\",a,true);m&&(m.style.width=\"1%\");i.setStyle(\"height\",Math.max(b-(c?0:(f.$.offsetHeight||0)-(i.$.clientHeight||0)),0)+\"px\");m&&(m.style.width=\"100%\");this.fire(\"resize\")};CKEDITOR.editor.prototype.getResizable=\nfunction(a){return a?this.ui.space(\"contents\"):this.container};var f;CKEDITOR.domReady(function(){CKEDITOR.replaceClass&&CKEDITOR.replaceAll(CKEDITOR.replaceClass)})})();CKEDITOR.config.startupMode=\"wysiwyg\";\n(function(){function a(a){var b=a.editor,d=a.data.path,e=d.blockLimit,l=a.data.selection,j=l.getRanges()[0],g;if(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller)if(l=c(l,d)){l.appendBogus();g=CKEDITOR.env.ie}if(b.config.autoParagraph!==false&&b.activeEnterMode!=CKEDITOR.ENTER_BR&&b.editable().equals(e)&&!d.block&&j.collapsed&&!j.getCommonAncestor().isReadOnly()){d=j.clone();d.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);e=new CKEDITOR.dom.walker(d);e.guard=function(a){return!f(a)||a.type==\nCKEDITOR.NODE_COMMENT||a.isReadOnly()};if(!e.checkForward()||d.checkStartOfBlock()&&d.checkEndOfBlock()){b=j.fixBlock(true,b.activeEnterMode==CKEDITOR.ENTER_DIV?\"div\":\"p\");if(!CKEDITOR.env.needsBrFiller)(b=b.getFirst(f))&&(b.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(b.getText()).match(/^(?:&nbsp;|\\xa0)$/))&&b.remove();g=1;a.cancel()}}g&&j.select()}function c(a,b){if(a.isFake)return 0;var c=b.block||b.blockLimit,d=c&&c.getLast(f);if(c&&c.isBlockBoundary()&&(!d||!(d.type==CKEDITOR.NODE_ELEMENT&&\nd.isBlockBoundary()))&&!c.is(\"pre\")&&!c.getBogus())return c}function b(a){var b=a.data.getTarget();if(b.is(\"input\")){b=b.getAttribute(\"type\");(b==\"submit\"||b==\"reset\")&&a.data.preventDefault()}}function f(a){return p(a)&&s(a)}function d(a,b){return function(c){var d=CKEDITOR.dom.element.get(c.data.$.toElement||c.data.$.fromElement||c.data.$.relatedTarget);(!d||!b.equals(d)&&!b.contains(d))&&a.call(this,c)}}function e(a){var b,c=a.getRanges()[0],d=a.root,e={table:1,ul:1,ol:1,dl:1};if(c.startPath().contains(e)){var a=\nfunction(a){return function(c,d){d&&(c.type==CKEDITOR.NODE_ELEMENT&&c.is(e))&&(b=c);if(!d&&f(c)&&(!a||!i(c)))return false}},j=c.clone();j.collapse(1);j.setStartAt(d,CKEDITOR.POSITION_AFTER_START);d=new CKEDITOR.dom.walker(j);d.guard=a();d.checkBackward();if(b){j=c.clone();j.collapse();j.setEndAt(b,CKEDITOR.POSITION_AFTER_END);d=new CKEDITOR.dom.walker(j);d.guard=a(true);b=false;d.checkForward();return b}}return null}function g(a){a.editor.focus();a.editor.fire(\"saveSnapshot\")}function n(a){var b=\na.editor;b.getSelection().scrollIntoView();setTimeout(function(){b.fire(\"saveSnapshot\")},0)}function h(a,b,c){for(var d=a.getCommonAncestor(b),b=a=c?b:a;(a=a.getParent())&&!d.equals(a)&&a.getChildCount()==1;)b=a;b.remove()}CKEDITOR.editable=CKEDITOR.tools.createClass({base:CKEDITOR.dom.element,$:function(a,b){this.base(b.$||b);this.editor=a;this.status=\"unloaded\";this.hasFocus=false;this.setup()},proto:{focus:function(){var a;if(CKEDITOR.env.webkit&&!this.hasFocus){a=this.editor._.previousActive||\nthis.getDocument().getActive();if(this.contains(a)){a.focus();return}}try{this.$[CKEDITOR.env.ie&&this.getDocument().equals(CKEDITOR.document)?\"setActive\":\"focus\"]()}catch(b){if(!CKEDITOR.env.ie)throw b;}if(CKEDITOR.env.safari&&!this.isInline()){a=CKEDITOR.document.getActive();a.equals(this.getWindow().getFrame())||this.getWindow().focus()}},on:function(a,b){var c=Array.prototype.slice.call(arguments,0);if(CKEDITOR.env.ie&&/^focus|blur$/.exec(a)){a=a==\"focus\"?\"focusin\":\"focusout\";b=d(b,this);c[0]=\na;c[1]=b}return CKEDITOR.dom.element.prototype.on.apply(this,c)},attachListener:function(a,b,c,d,e,f){!this._.listeners&&(this._.listeners=[]);var g=Array.prototype.slice.call(arguments,1),g=a.on.apply(a,g);this._.listeners.push(g);return g},clearListeners:function(){var a=this._.listeners;try{for(;a.length;)a.pop().removeListener()}catch(b){}},restoreAttrs:function(){var a=this._.attrChanges,b,c;for(c in a)if(a.hasOwnProperty(c)){b=a[c];b!==null?this.setAttribute(c,b):this.removeAttribute(c)}},attachClass:function(a){var b=\nthis.getCustomData(\"classes\");if(!this.hasClass(a)){!b&&(b=[]);b.push(a);this.setCustomData(\"classes\",b);this.addClass(a)}},changeAttr:function(a,b){var c=this.getAttribute(a);if(b!==c){!this._.attrChanges&&(this._.attrChanges={});a in this._.attrChanges||(this._.attrChanges[a]=c);this.setAttribute(a,b)}},insertHtml:function(a,b){g(this);x(this,b||\"html\",a)},insertText:function(a){g(this);var b=this.editor,c=b.getSelection().getStartElement().hasAscendant(\"pre\",true)?CKEDITOR.ENTER_BR:b.activeEnterMode,\nb=c==CKEDITOR.ENTER_BR,d=CKEDITOR.tools,a=d.htmlEncode(a.replace(/\\r\\n/g,\"\\n\")),a=a.replace(/\\t/g,\"&nbsp;&nbsp; &nbsp;\"),c=c==CKEDITOR.ENTER_P?\"p\":\"div\";if(!b){var e=/\\n{2}/g;if(e.test(a))var f=\"<\"+c+\">\",v=\"</\"+c+\">\",a=f+a.replace(e,function(){return v+f})+v}a=a.replace(/\\n/g,\"<br>\");b||(a=a.replace(RegExp(\"<br>(?=</\"+c+\">)\"),function(a){return d.repeat(a,2)}));a=a.replace(/^ | $/g,\"&nbsp;\");a=a.replace(/(>|\\s) /g,function(a,b){return b+\"&nbsp;\"}).replace(/ (?=<)/g,\"&nbsp;\");x(this,\"text\",a)},insertElement:function(a,\nb){b?this.insertElementIntoRange(a,b):this.insertElementIntoSelection(a)},insertElementIntoRange:function(a,b){var c=this.editor,d=c.config.enterMode,e=a.getName(),f=CKEDITOR.dtd.$block[e];if(b.checkReadOnly())return false;b.deleteContents(1);b.startContainer.type==CKEDITOR.NODE_ELEMENT&&b.startContainer.is({tr:1,table:1,tbody:1,thead:1,tfoot:1})&&q(b);var g,h;if(f)for(;(g=b.getCommonAncestor(0,1))&&(h=CKEDITOR.dtd[g.getName()])&&(!h||!h[e]);)if(g.getName()in CKEDITOR.dtd.span)b.splitElement(g);else if(b.checkStartOfBlock()&&\nb.checkEndOfBlock()){b.setStartBefore(g);b.collapse(true);g.remove()}else b.splitBlock(d==CKEDITOR.ENTER_DIV?\"div\":\"p\",c.editable());b.insertNode(a);return true},insertElementIntoSelection:function(a){g(this);var b=this.editor,c=b.activeEnterMode,b=b.getSelection(),d=b.getRanges()[0],e=a.getName(),e=CKEDITOR.dtd.$block[e];if(this.insertElementIntoRange(a,d)){d.moveToPosition(a,CKEDITOR.POSITION_AFTER_END);if(e)if((e=a.getNext(function(a){return f(a)&&!i(a)}))&&e.type==CKEDITOR.NODE_ELEMENT&&e.is(CKEDITOR.dtd.$block))e.getDtd()[\"#\"]?\nd.moveToElementEditStart(e):d.moveToElementEditEnd(a);else if(!e&&c!=CKEDITOR.ENTER_BR){e=d.fixBlock(true,c==CKEDITOR.ENTER_DIV?\"div\":\"p\");d.moveToElementEditStart(e)}}b.selectRanges([d]);n(this)},setData:function(a,b){b||(a=this.editor.dataProcessor.toHtml(a));this.setHtml(a);if(this.status==\"unloaded\")this.status=\"ready\";this.editor.fire(\"dataReady\")},getData:function(a){var b=this.getHtml();a||(b=this.editor.dataProcessor.toDataFormat(b));return b},setReadOnly:function(a){this.setAttribute(\"contenteditable\",\n!a)},detach:function(){this.removeClass(\"cke_editable\");this.status=\"detached\";var a=this.editor;this._.detach();delete a.document;delete a.window},isInline:function(){return this.getDocument().equals(CKEDITOR.document)},setup:function(){var a=this.editor;this.attachListener(a,\"beforeGetData\",function(){var b=this.getData();this.is(\"textarea\")||a.config.ignoreEmptyParagraph!==false&&(b=b.replace(m,function(a,b){return b}));a.setData(b,null,1)},this);this.attachListener(a,\"getSnapshot\",function(a){a.data=\nthis.getData(1)},this);this.attachListener(a,\"afterSetData\",function(){this.setData(a.getData(1))},this);this.attachListener(a,\"loadSnapshot\",function(a){this.setData(a.data,1)},this);this.attachListener(a,\"beforeFocus\",function(){var b=a.getSelection();(b=b&&b.getNative())&&b.type==\"Control\"||this.focus()},this);this.attachListener(a,\"insertHtml\",function(a){this.insertHtml(a.data.dataValue,a.data.mode)},this);this.attachListener(a,\"insertElement\",function(a){this.insertElement(a.data)},this);this.attachListener(a,\n\"insertText\",function(a){this.insertText(a.data)},this);this.setReadOnly(a.readOnly);this.attachClass(\"cke_editable\");this.attachClass(a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?\"cke_editable_inline\":a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE||a.elementMode==CKEDITOR.ELEMENT_MODE_APPENDTO?\"cke_editable_themed\":\"\");this.attachClass(\"cke_contents_\"+a.config.contentsLangDirection);a.keystrokeHandler.blockedKeystrokes[8]=+a.readOnly;a.keystrokeHandler.attach(this);this.on(\"blur\",function(){this.hasFocus=\nfalse},null,null,-1);this.on(\"focus\",function(){this.hasFocus=true},null,null,-1);a.focusManager.add(this);if(this.equals(CKEDITOR.document.getActive())){this.hasFocus=true;a.once(\"contentDom\",function(){a.focusManager.focus()})}this.isInline()&&this.changeAttr(\"tabindex\",a.tabIndex);if(!this.is(\"textarea\")){a.document=this.getDocument();a.window=this.getWindow();var c=a.document;this.changeAttr(\"spellcheck\",!a.config.disableNativeSpellChecker);var d=a.config.contentsLangDirection;this.getDirection(1)!=\nd&&this.changeAttr(\"dir\",d);var k=CKEDITOR.getCss();if(k){d=c.getHead();if(!d.getCustomData(\"stylesheet\")){k=c.appendStyleText(k);k=new CKEDITOR.dom.element(k.ownerNode||k.owningElement);d.setCustomData(\"stylesheet\",k);k.data(\"cke-temp\",1)}}d=c.getCustomData(\"stylesheet_ref\")||0;c.setCustomData(\"stylesheet_ref\",d+1);this.setCustomData(\"cke_includeReadonly\",!a.config.disableReadonlyStyling);this.attachListener(this,\"click\",function(a){var a=a.data,b=(new CKEDITOR.dom.elementPath(a.getTarget(),this)).contains(\"a\");\nb&&(a.$.button!=2&&b.isReadOnly())&&a.preventDefault()});var l={8:1,46:1};this.attachListener(a,\"key\",function(b){if(a.readOnly)return true;var c=b.data.domEvent.getKey(),d;if(c in l){var b=a.getSelection(),f,k=b.getRanges()[0],g=k.startPath(),h,i,m,c=c==8;if(CKEDITOR.env.ie&&CKEDITOR.env.version<11&&(f=b.getSelectedElement())||(f=e(b))){a.fire(\"saveSnapshot\");k.moveToPosition(f,CKEDITOR.POSITION_BEFORE_START);f.remove();k.select();a.fire(\"saveSnapshot\");d=1}else if(k.collapsed)if((h=g.block)&&(m=\nh[c?\"getPrevious\":\"getNext\"](p))&&m.type==CKEDITOR.NODE_ELEMENT&&m.is(\"table\")&&k[c?\"checkStartOfBlock\":\"checkEndOfBlock\"]()){a.fire(\"saveSnapshot\");k[c?\"checkEndOfBlock\":\"checkStartOfBlock\"]()&&h.remove();k[\"moveToElementEdit\"+(c?\"End\":\"Start\")](m);k.select();a.fire(\"saveSnapshot\");d=1}else if(g.blockLimit&&g.blockLimit.is(\"td\")&&(i=g.blockLimit.getAscendant(\"table\"))&&k.checkBoundaryOfElement(i,c?CKEDITOR.START:CKEDITOR.END)&&(m=i[c?\"getPrevious\":\"getNext\"](p))){a.fire(\"saveSnapshot\");k[\"moveToElementEdit\"+\n(c?\"End\":\"Start\")](m);k.checkStartOfBlock()&&k.checkEndOfBlock()?m.remove():k.select();a.fire(\"saveSnapshot\");d=1}else if((i=g.contains([\"td\",\"th\",\"caption\"]))&&k.checkBoundaryOfElement(i,c?CKEDITOR.START:CKEDITOR.END))d=1}return!d});a.blockless&&(CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller)&&this.attachListener(this,\"keyup\",function(b){if(b.data.getKeystroke()in l&&!this.getFirst(f)){this.appendBogus();b=a.createRange();b.moveToPosition(this,CKEDITOR.POSITION_AFTER_START);b.select()}});this.attachListener(this,\n\"dblclick\",function(b){if(a.readOnly)return false;b={element:b.data.getTarget()};a.fire(\"doubleclick\",b)});CKEDITOR.env.ie&&this.attachListener(this,\"click\",b);CKEDITOR.env.ie||this.attachListener(this,\"mousedown\",function(b){var c=b.data.getTarget();if(c.is(\"img\",\"hr\",\"input\",\"textarea\",\"select\")&&!c.isReadOnly()){a.getSelection().selectElement(c);c.is(\"input\",\"textarea\",\"select\")&&b.data.preventDefault()}});CKEDITOR.env.gecko&&this.attachListener(this,\"mouseup\",function(b){if(b.data.$.button==2){b=\nb.data.getTarget();if(!b.getOuterHtml().replace(m,\"\")){var c=a.createRange();c.moveToElementEditStart(b);c.select(true)}}});if(CKEDITOR.env.webkit){this.attachListener(this,\"click\",function(a){a.data.getTarget().is(\"input\",\"select\")&&a.data.preventDefault()});this.attachListener(this,\"mouseup\",function(a){a.data.getTarget().is(\"input\",\"textarea\")&&a.data.preventDefault()})}CKEDITOR.env.webkit&&this.attachListener(a,\"key\",function(b){b=b.data.domEvent.getKey();if(b in l){var c=b==8,d=a.getSelection().getRanges()[0],\nb=d.startPath();if(d.collapsed){var e;a:{var f=b.block;if(f)if(d[c?\"checkStartOfBlock\":\"checkEndOfBlock\"]())if(!d.moveToClosestEditablePosition(f,!c)||!d.collapsed)e=false;else{if(d.startContainer.type==CKEDITOR.NODE_ELEMENT){var k=d.startContainer.getChild(d.startOffset-(c?1:0));if(k&&k.type==CKEDITOR.NODE_ELEMENT&&k.is(\"hr\")){a.fire(\"saveSnapshot\");k.remove();e=true;break a}}if((d=d.startPath().block)&&(!d||!d.contains(f))){a.fire(\"saveSnapshot\");var g;(g=(c?d:f).getBogus())&&g.remove();e=a.getSelection();\ng=e.createBookmarks();(c?f:d).moveChildren(c?d:f,false);b.lastElement.mergeSiblings();h(f,d,!c);e.selectBookmarks(g);e=true}}else e=false;else e=false}if(!e)return}else{c=d;e=b.block;g=c.endPath().block;if(!e||!g||e.equals(g))b=false;else{a.fire(\"saveSnapshot\");(f=e.getBogus())&&f.remove();c.deleteContents();if(g.getParent()){g.moveChildren(e,false);b.lastElement.mergeSiblings();h(e,g,true)}c=a.getSelection().getRanges()[0];c.collapse(1);c.select();b=true}if(!b)return}a.getSelection().scrollIntoView();\na.fire(\"saveSnapshot\");return false}},this,null,100)}}},_:{detach:function(){this.editor.setData(this.editor.getData(),0,1);this.clearListeners();this.restoreAttrs();var a;if(a=this.removeCustomData(\"classes\"))for(;a.length;)this.removeClass(a.pop());if(!this.is(\"textarea\")){a=this.getDocument();var b=a.getHead();if(b.getCustomData(\"stylesheet\")){var c=a.getCustomData(\"stylesheet_ref\");if(--c)a.setCustomData(\"stylesheet_ref\",c);else{a.removeCustomData(\"stylesheet_ref\");b.removeCustomData(\"stylesheet\").remove()}}}this.editor.fire(\"contentDomUnload\");\ndelete this.editor}}});CKEDITOR.editor.prototype.editable=function(a){var b=this._.editable;if(b&&a)return 0;if(arguments.length)b=this._.editable=a?a instanceof CKEDITOR.editable?a:new CKEDITOR.editable(this,a):(b&&b.detach(),null);return b};var i=CKEDITOR.dom.walker.bogus(),m=/(^|<body\\b[^>]*>)\\s*<(p|div|address|h\\d|center|pre)[^>]*>\\s*(?:<br[^>]*>|&nbsp;|\\u00A0|&#160;)?\\s*(:?<\\/\\2>)?\\s*(?=$|<\\/body>)/gi,p=CKEDITOR.dom.walker.whitespaces(true),s=CKEDITOR.dom.walker.bookmark(false,true);CKEDITOR.on(\"instanceLoaded\",\nfunction(b){var c=b.editor;c.on(\"insertElement\",function(a){a=a.data;if(a.type==CKEDITOR.NODE_ELEMENT&&(a.is(\"input\")||a.is(\"textarea\"))){a.getAttribute(\"contentEditable\")!=\"false\"&&a.data(\"cke-editable\",a.hasAttribute(\"contenteditable\")?\"true\":\"1\");a.setAttribute(\"contentEditable\",false)}});c.on(\"selectionChange\",function(b){if(!c.readOnly){var d=c.getSelection();if(d&&!d.isLocked){d=c.checkDirty();c.fire(\"lockSnapshot\");a(b);c.fire(\"unlockSnapshot\");!d&&c.resetDirty()}}})});CKEDITOR.on(\"instanceCreated\",\nfunction(a){var b=a.editor;b.on(\"mode\",function(){var a=b.editable();if(a&&a.isInline()){var c=b.title;a.changeAttr(\"role\",\"textbox\");a.changeAttr(\"aria-label\",c);c&&a.changeAttr(\"title\",c);if(c=this.ui.space(this.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?\"top\":\"contents\")){var d=CKEDITOR.tools.getNextId(),e=CKEDITOR.dom.element.createFromHtml('<span id=\"'+d+'\" class=\"cke_voice_label\">'+this.lang.common.editorHelp+\"</span>\");c.append(e);a.changeAttr(\"aria-describedby\",d)}}})});CKEDITOR.addCss(\".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}\");\nvar x=function(){function a(b){return b.type==CKEDITOR.NODE_ELEMENT}function b(c,d){var e,f,j,k,l=[],r=d.range.startContainer;e=d.range.startPath();for(var r=g[r.getName()],h=0,i=c.getChildren(),m=i.count(),n=-1,q=-1,p=0,s=e.contains(g.$list);h<m;++h){e=i.getItem(h);if(a(e)){j=e.getName();if(s&&j in CKEDITOR.dtd.$list)l=l.concat(b(e,d));else{k=!!r[j];if(j==\"br\"&&e.data(\"cke-eol\")&&(!h||h==m-1)){p=(f=h?l[h-1].node:i.getItem(h+1))&&(!a(f)||!f.is(\"br\"));f=f&&a(f)&&g.$block[f.getName()]}n==-1&&!k&&(n=\nh);k||(q=h);l.push({isElement:1,isLineBreak:p,isBlock:e.isBlockBoundary(),hasBlockSibling:f,node:e,name:j,allowed:k});f=p=0}}else l.push({isElement:0,node:e,allowed:1})}if(n>-1)l[n].firstNotAllowed=1;if(q>-1)l[q].lastNotAllowed=1;return l}function c(b,d){var e=[],f=b.getChildren(),j=f.count(),k,l=0,r=g[d],h=!b.is(g.$inline)||b.is(\"br\");for(h&&e.push(\" \");l<j;l++){k=f.getItem(l);a(k)&&!k.is(r)?e=e.concat(c(k,d)):e.push(k)}h&&e.push(\" \");return e}function d(b){return b&&a(b)&&(b.is(g.$removeEmpty)||\nb.is(\"a\")&&!b.isBlockBoundary())}function e(b,c,d,f){var j=b.clone(),k,g;j.setEndAt(c,CKEDITOR.POSITION_BEFORE_END);if((k=(new CKEDITOR.dom.walker(j)).next())&&a(k)&&h[k.getName()]&&(g=k.getPrevious())&&a(g)&&!g.getParent().equals(b.startContainer)&&d.contains(g)&&f.contains(k)&&k.isIdentical(g)){k.moveChildren(g);k.remove();e(b,c,d,f)}}function j(b,c){function d(b,c){if(c.isBlock&&c.isElement&&!c.node.is(\"br\")&&a(b)&&b.is(\"br\")){b.remove();return 1}}var e=c.endContainer.getChild(c.endOffset),f=c.endContainer.getChild(c.endOffset-\n1);e&&d(e,b[b.length-1]);if(f&&d(f,b[0])){c.setEnd(c.endContainer,c.endOffset-1);c.collapse()}}var g=CKEDITOR.dtd,h={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,ul:1,ol:1,li:1,pre:1,dl:1,blockquote:1},r={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},i=CKEDITOR.tools.extend({},g.$inline);delete i.br;return function(h,m,q){var p=h.editor;h.getDocument();var s=p.getSelection().getRanges()[0],w=false;if(m==\"unfiltered_html\"){m=\"html\";w=true}if(!s.checkReadOnly()){var z=(new CKEDITOR.dom.elementPath(s.startContainer,\ns.root)).blockLimit||s.root,m={type:m,dontFilter:w,editable:h,editor:p,range:s,blockLimit:z,mergeCandidates:[],zombies:[]},p=m.range,w=m.mergeCandidates,t,E,y,C;if(m.type==\"text\"&&p.shrink(CKEDITOR.SHRINK_ELEMENT,true,false)){t=CKEDITOR.dom.element.createFromHtml(\"<span>&nbsp;</span>\",p.document);p.insertNode(t);p.setStartAfter(t)}E=new CKEDITOR.dom.elementPath(p.startContainer);m.endPath=y=new CKEDITOR.dom.elementPath(p.endContainer);if(!p.collapsed){var z=y.block||y.blockLimit,I=p.getCommonAncestor();\nz&&(!z.equals(I)&&!z.contains(I)&&p.checkEndOfBlock())&&m.zombies.push(z);p.deleteContents()}for(;(C=a(p.startContainer)&&p.startContainer.getChild(p.startOffset-1))&&a(C)&&C.isBlockBoundary()&&E.contains(C);)p.moveToPosition(C,CKEDITOR.POSITION_BEFORE_END);e(p,m.blockLimit,E,y);if(t){p.setEndBefore(t);p.collapse();t.remove()}t=p.startPath();if(z=t.contains(d,false,1)){p.splitElement(z);m.inlineStylesRoot=z;m.inlineStylesPeak=t.lastElement}t=p.createBookmark();(z=t.startNode.getPrevious(f))&&a(z)&&\nd(z)&&w.push(z);(z=t.startNode.getNext(f))&&a(z)&&d(z)&&w.push(z);for(z=t.startNode;(z=z.getParent())&&d(z);)w.push(z);p.moveToBookmark(t);if(t=q){t=m.range;if(m.type==\"text\"&&m.inlineStylesRoot){C=m.inlineStylesPeak;p=C.getDocument().createText(\"{cke-peak}\");for(w=m.inlineStylesRoot.getParent();!C.equals(w);){p=p.appendTo(C.clone());C=C.getParent()}q=p.getOuterHtml().split(\"{cke-peak}\").join(q)}C=m.blockLimit.getName();if(/^\\s+|\\s+$/.test(q)&&\"span\"in CKEDITOR.dtd[C])var x='<span data-cke-marker=\"1\">&nbsp;</span>',\nq=x+q+x;q=m.editor.dataProcessor.toHtml(q,{context:null,fixForBody:false,dontFilter:m.dontFilter,filter:m.editor.activeFilter,enterMode:m.editor.activeEnterMode});C=t.document.createElement(\"body\");C.setHtml(q);if(x){C.getFirst().remove();C.getLast().remove()}if((x=t.startPath().block)&&!(x.getChildCount()==1&&x.getBogus()))a:{var G;if(C.getChildCount()==1&&a(G=C.getFirst())&&G.is(r)){x=G.getElementsByTag(\"*\");t=0;for(w=x.count();t<w;t++){p=x.getItem(t);if(!p.is(i))break a}G.moveChildren(G.getParent(1));\nG.remove()}}m.dataWrapper=C;t=q}if(t){G=m.range;var x=G.document,B,q=m.blockLimit;t=0;var K;C=[];var H,Q,w=p=0,M,T;E=G.startContainer;var z=m.endPath.elements[0],U;y=z.getPosition(E);I=!!z.getCommonAncestor(E)&&y!=CKEDITOR.POSITION_IDENTICAL&&!(y&CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED);E=b(m.dataWrapper,m);for(j(E,G);t<E.length;t++){y=E[t];if(B=y.isLineBreak){B=G;M=q;var N=void 0,W=void 0;if(y.hasBlockSibling)B=1;else{N=B.startContainer.getAscendant(g.$block,1);if(!N||!N.is({div:1,\np:1}))B=0;else{W=N.getPosition(M);if(W==CKEDITOR.POSITION_IDENTICAL||W==CKEDITOR.POSITION_CONTAINS)B=0;else{M=B.splitElement(N);B.moveToPosition(M,CKEDITOR.POSITION_AFTER_START);B=1}}}}if(B)w=t>0;else{B=G.startPath();if(!y.isBlock&&m.editor.config.autoParagraph!==false&&(m.editor.activeEnterMode!=CKEDITOR.ENTER_BR&&m.editor.editable().equals(B.blockLimit)&&!B.block)&&(Q=m.editor.activeEnterMode!=CKEDITOR.ENTER_BR&&m.editor.config.autoParagraph!==false?m.editor.activeEnterMode==CKEDITOR.ENTER_DIV?\n\"div\":\"p\":false)){Q=x.createElement(Q);Q.appendBogus();G.insertNode(Q);CKEDITOR.env.needsBrFiller&&(K=Q.getBogus())&&K.remove();G.moveToPosition(Q,CKEDITOR.POSITION_BEFORE_END)}if((B=G.startPath().block)&&!B.equals(H)){if(K=B.getBogus()){K.remove();C.push(B)}H=B}y.firstNotAllowed&&(p=1);if(p&&y.isElement){B=G.startContainer;for(M=null;B&&!g[B.getName()][y.name];){if(B.equals(q)){B=null;break}M=B;B=B.getParent()}if(B){if(M){T=G.splitElement(M);m.zombies.push(T);m.zombies.push(M)}}else{M=q.getName();\nU=!t;B=t==E.length-1;M=c(y.node,M);for(var N=[],W=M.length,X=0,Z=void 0,$=0,aa=-1;X<W;X++){Z=M[X];if(Z==\" \"){if(!$&&(!U||X)){N.push(new CKEDITOR.dom.text(\" \"));aa=N.length}$=1}else{N.push(Z);$=0}}B&&aa==N.length&&N.pop();U=N}}if(U){for(;B=U.pop();)G.insertNode(B);U=0}else G.insertNode(y.node);if(y.lastNotAllowed&&t<E.length-1){(T=I?z:T)&&G.setEndAt(T,CKEDITOR.POSITION_AFTER_START);p=0}G.collapse()}}m.dontMoveCaret=w;m.bogusNeededBlocks=C}K=m.range;var P;T=m.bogusNeededBlocks;for(U=K.createBookmark();H=\nm.zombies.pop();)if(H.getParent()){Q=K.clone();Q.moveToElementEditStart(H);Q.removeEmptyBlocksAtEnd()}if(T)for(;H=T.pop();)CKEDITOR.env.needsBrFiller?H.appendBogus():H.append(K.document.createText(\" \"));for(;H=m.mergeCandidates.pop();)H.mergeSiblings();K.moveToBookmark(U);if(!m.dontMoveCaret){for(H=a(K.startContainer)&&K.startContainer.getChild(K.startOffset-1);H&&a(H)&&!H.is(g.$empty);){if(H.isBlockBoundary())K.moveToPosition(H,CKEDITOR.POSITION_BEFORE_END);else{if(d(H)&&H.getHtml().match(/(\\s|&nbsp;)$/g)){P=\nnull;break}P=K.clone();P.moveToPosition(H,CKEDITOR.POSITION_BEFORE_END)}H=H.getLast(f)}P&&K.moveToRange(P)}s.select();n(h)}}}(),q=function(){function a(b){b=new CKEDITOR.dom.walker(b);b.guard=function(a,b){if(b)return false;if(a.type==CKEDITOR.NODE_ELEMENT)return a.is(CKEDITOR.dtd.$tableContent)};b.evaluator=function(a){return a.type==CKEDITOR.NODE_ELEMENT};return b}function b(a,c,d){c=a.getDocument().createElement(c);a.append(c,d);return c}function c(a){var b=a.count(),d;for(b;b-- >0;){d=a.getItem(b);\nif(!CKEDITOR.tools.trim(d.getHtml())){d.appendBogus();CKEDITOR.env.ie&&(CKEDITOR.env.version<9&&d.getChildCount())&&d.getFirst().remove()}}}return function(d){var e=d.startContainer,f=e.getAscendant(\"table\",1),g=false;c(f.getElementsByTag(\"td\"));c(f.getElementsByTag(\"th\"));f=d.clone();f.setStart(e,0);f=a(f).lastBackward();if(!f){f=d.clone();f.setEndAt(e,CKEDITOR.POSITION_BEFORE_END);f=a(f).lastForward();g=true}f||(f=e);if(f.is(\"table\")){d.setStartAt(f,CKEDITOR.POSITION_BEFORE_START);d.collapse(true);\nf.remove()}else{f.is({tbody:1,thead:1,tfoot:1})&&(f=b(f,\"tr\",g));f.is(\"tr\")&&(f=b(f,f.getParent().is(\"thead\")?\"th\":\"td\",g));(e=f.getBogus())&&e.remove();d.moveToPosition(f,g?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END)}}}()})();\n(function(){function a(){var a=this._.fakeSelection,b;if(a){b=this.getSelection(1);if(!b||!b.isHidden()){a.reset();a=0}}if(!a){a=b||this.getSelection(1);if(!a||a.getType()==CKEDITOR.SELECTION_NONE)return}this.fire(\"selectionCheck\",a);b=this.elementPath();if(!b.compare(this._.selectionPreviousPath)){if(CKEDITOR.env.webkit)this._.previousActive=this.document.getActive();this._.selectionPreviousPath=b;this.fire(\"selectionChange\",{selection:a,path:b})}}function c(){s=true;if(!p){b.call(this);p=CKEDITOR.tools.setTimeout(b,\n200,this)}}function b(){p=null;if(s){CKEDITOR.tools.setTimeout(a,0,this);s=false}}function f(a){function b(c,d){return!c||c.type==CKEDITOR.NODE_TEXT?false:a.clone()[\"moveToElementEdit\"+(d?\"End\":\"Start\")](c)}if(!(a.root instanceof CKEDITOR.editable))return false;var c=a.startContainer,d=a.getPreviousNode(x,null,c),e=a.getNextNode(x,null,c);return b(d)||b(e,1)||!d&&!e&&!(c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary()&&c.getBogus())?true:false}function d(a){return a.getCustomData(\"cke-fillingChar\")}\nfunction e(a,b){var c=a&&a.removeCustomData(\"cke-fillingChar\");if(c){if(b!==false){var d,e=a.getDocument().getSelection().getNative(),f=e&&e.type!=\"None\"&&e.getRangeAt(0);if(c.getLength()>1&&f&&f.intersectsNode(c.$)){d=[e.anchorOffset,e.focusOffset];f=e.focusNode==c.$&&e.focusOffset>0;e.anchorNode==c.$&&e.anchorOffset>0&&d[0]--;f&&d[1]--;var h;f=e;if(!f.isCollapsed){h=f.getRangeAt(0);h.setStart(f.anchorNode,f.anchorOffset);h.setEnd(f.focusNode,f.focusOffset);h=h.collapsed}h&&d.unshift(d.pop())}}c.setText(g(c.getText()));\nif(d){c=e.getRangeAt(0);c.setStart(c.startContainer,d[0]);c.setEnd(c.startContainer,d[1]);e.removeAllRanges();e.addRange(c)}}}function g(a){return a.replace(/\\u200B( )?/g,function(a){return a[1]?\" \":\"\"})}function n(a,b,c){var d=a.on(\"focus\",function(a){a.cancel()},null,null,-100);if(CKEDITOR.env.ie)var e=a.getDocument().on(\"selectionchange\",function(a){a.cancel()},null,null,-100);else{var f=new CKEDITOR.dom.range(a);f.moveToElementEditStart(a);var g=a.getDocument().$.createRange();g.setStart(f.startContainer.$,\nf.startOffset);g.collapse(1);b.removeAllRanges();b.addRange(g)}c&&a.focus();d.removeListener();e&&e.removeListener()}function h(a){var b=CKEDITOR.dom.element.createFromHtml('<div data-cke-hidden-sel=\"1\" data-cke-temp=\"1\" style=\"'+(CKEDITOR.env.ie?\"display:none\":\"position:fixed;top:0;left:-1000px\")+'\">&nbsp;</div>',a.document);a.fire(\"lockSnapshot\");a.editable().append(b);var c=a.getSelection(1),d=a.createRange(),e=c.root.on(\"selectionchange\",function(a){a.cancel()},null,null,0);d.setStartAt(b,CKEDITOR.POSITION_AFTER_START);\nd.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);c.selectRanges([d]);e.removeListener();a.fire(\"unlockSnapshot\");a._.hiddenSelectionContainer=b}function i(a){var b={37:1,39:1,8:1,46:1};return function(c){var d=c.data.getKeystroke();if(b[d]){var e=a.getSelection().getRanges(),f=e[0];if(e.length==1&&f.collapsed)if((d=f[d<38?\"getPreviousEditableNode\":\"getNextEditableNode\"]())&&d.type==CKEDITOR.NODE_ELEMENT&&d.getAttribute(\"contenteditable\")==\"false\"){a.getSelection().fake(d);c.data.preventDefault();c.cancel()}}}}\nfunction m(a){for(var b=0;b<a.length;b++){var c=a[b];c.getCommonAncestor().isReadOnly()&&a.splice(b,1);if(!c.collapsed){if(c.startContainer.isReadOnly())for(var d=c.startContainer,e;d;){if((e=d.type==CKEDITOR.NODE_ELEMENT)&&d.is(\"body\")||!d.isReadOnly())break;e&&d.getAttribute(\"contentEditable\")==\"false\"&&c.setStartAfter(d);d=d.getParent()}d=c.startContainer;e=c.endContainer;var f=c.startOffset,g=c.endOffset,h=c.clone();d&&d.type==CKEDITOR.NODE_TEXT&&(f>=d.getLength()?h.setStartAfter(d):h.setStartBefore(d));\ne&&e.type==CKEDITOR.NODE_TEXT&&(g?h.setEndAfter(e):h.setEndBefore(e));d=new CKEDITOR.dom.walker(h);d.evaluator=function(d){if(d.type==CKEDITOR.NODE_ELEMENT&&d.isReadOnly()){var e=c.clone();c.setEndBefore(d);c.collapsed&&a.splice(b--,1);if(!(d.getPosition(h.endContainer)&CKEDITOR.POSITION_CONTAINS)){e.setStartAfter(d);e.collapsed||a.splice(b+1,0,e)}return true}return false};d.next()}}return a}var p,s,x=CKEDITOR.dom.walker.invisible(1),q=function(){function a(b){return function(a){var c=a.editor.createRange();\nc.moveToClosestEditablePosition(a.selected,b)&&a.editor.getSelection().selectRanges([c]);return false}}function b(a){return function(b){var c=b.editor,d=c.createRange(),e;if(!(e=d.moveToClosestEditablePosition(b.selected,a)))e=d.moveToClosestEditablePosition(b.selected,!a);e&&c.getSelection().selectRanges([d]);c.fire(\"saveSnapshot\");b.selected.remove();if(!e){d.moveToElementEditablePosition(c.editable());c.getSelection().selectRanges([d])}c.fire(\"saveSnapshot\");return false}}var c=a(),d=a(1);return{37:c,\n38:c,39:d,40:d,8:b(),46:b(1)}}();CKEDITOR.on(\"instanceCreated\",function(b){function d(){var a=f.getSelection();a&&a.removeAllRanges()}var f=b.editor;f.on(\"contentDom\",function(){var b=f.document,d=CKEDITOR.document,g=f.editable(),k=b.getBody(),l=b.getDocumentElement(),h=g.isInline(),m,n;CKEDITOR.env.gecko&&g.attachListener(g,\"focus\",function(a){a.removeListener();if(m!==0)if((a=f.getSelection().getNative())&&a.isCollapsed&&a.anchorNode==g.$){a=f.createRange();a.moveToElementEditStart(g);a.select()}},\nnull,null,-2);g.attachListener(g,CKEDITOR.env.webkit?\"DOMFocusIn\":\"focus\",function(){m&&CKEDITOR.env.webkit&&(m=f._.previousActive&&f._.previousActive.equals(b.getActive()));f.unlockSelection(m);m=0},null,null,-1);g.attachListener(g,\"mousedown\",function(){m=0});if(CKEDITOR.env.ie||h){var q=function(){n=new CKEDITOR.dom.selection(f.getSelection());n.lock()};o?g.attachListener(g,\"beforedeactivate\",q,null,null,-1):g.attachListener(f,\"selectionCheck\",q,null,null,-1);g.attachListener(g,CKEDITOR.env.webkit?\n\"DOMFocusOut\":\"blur\",function(){f.lockSelection(n);m=1},null,null,-1);g.attachListener(g,\"mousedown\",function(){m=0})}if(CKEDITOR.env.ie&&!h){var w;g.attachListener(g,\"mousedown\",function(a){if(a.data.$.button==2){a=f.document.getSelection();if(!a||a.getType()==CKEDITOR.SELECTION_NONE)w=f.window.getScrollPosition()}});g.attachListener(g,\"mouseup\",function(a){if(a.data.$.button==2&&w){f.document.$.documentElement.scrollLeft=w.x;f.document.$.documentElement.scrollTop=w.y}w=null});if(b.$.compatMode!=\n\"BackCompat\"){if(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)l.on(\"mousedown\",function(a){function b(a){a=a.data.$;if(e){var c=k.$.createTextRange();try{c.moveToPoint(a.x,a.y)}catch(d){}e.setEndPoint(g.compareEndPoints(\"StartToStart\",c)<0?\"EndToEnd\":\"StartToStart\",c);e.select()}}function c(){l.removeListener(\"mousemove\",b);d.removeListener(\"mouseup\",c);l.removeListener(\"mouseup\",c);e.select()}a=a.data;if(a.getTarget().is(\"html\")&&a.$.y<l.$.clientHeight&&a.$.x<l.$.clientWidth){var e=k.$.createTextRange();\ntry{e.moveToPoint(a.$.x,a.$.y)}catch(f){}var g=e.duplicate();l.on(\"mousemove\",b);d.on(\"mouseup\",c);l.on(\"mouseup\",c)}});if(CKEDITOR.env.version>7&&CKEDITOR.env.version<11){l.on(\"mousedown\",function(a){if(a.data.getTarget().is(\"html\")){d.on(\"mouseup\",z);l.on(\"mouseup\",z)}});var z=function(){d.removeListener(\"mouseup\",z);l.removeListener(\"mouseup\",z);var a=CKEDITOR.document.$.selection,c=a.createRange();a.type!=\"None\"&&c.parentElement().ownerDocument==b.$&&c.select()}}}}g.attachListener(g,\"selectionchange\",\na,f);g.attachListener(g,\"keyup\",c,f);g.attachListener(g,CKEDITOR.env.webkit?\"DOMFocusIn\":\"focus\",function(){f.forceNextSelectionCheck();f.selectionChange(1)});if(h&&(CKEDITOR.env.webkit||CKEDITOR.env.gecko)){var t;g.attachListener(g,\"mousedown\",function(){t=1});g.attachListener(b.getDocumentElement(),\"mouseup\",function(){t&&c.call(f);t=0})}else g.attachListener(CKEDITOR.env.ie?g:b.getDocumentElement(),\"mouseup\",c,f);CKEDITOR.env.webkit&&g.attachListener(b,\"keydown\",function(a){switch(a.data.getKey()){case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:e(g)}},\nnull,null,-1);g.attachListener(g,\"keydown\",i(f),null,null,-1)});f.on(\"setData\",function(){f.unlockSelection();CKEDITOR.env.webkit&&d()});f.on(\"contentDomUnload\",function(){f.unlockSelection()});if(CKEDITOR.env.ie9Compat)f.on(\"beforeDestroy\",d,null,null,9);f.on(\"dataReady\",function(){delete f._.fakeSelection;delete f._.hiddenSelectionContainer;f.selectionChange(1)});f.on(\"loadSnapshot\",function(){var a=f.editable().getLast(function(a){return a.type==CKEDITOR.NODE_ELEMENT});a&&a.hasAttribute(\"data-cke-hidden-sel\")&&\na.remove()},null,null,100);f.on(\"key\",function(a){if(f.mode==\"wysiwyg\"){var b=f.getSelection();if(b.isFake){var c=q[a.data.keyCode];if(c)return c({editor:f,selected:b.getSelectedElement(),selection:b,keyEvent:a})}}})});CKEDITOR.on(\"instanceReady\",function(a){var b=a.editor;if(CKEDITOR.env.webkit){b.on(\"selectionChange\",function(){var a=b.editable(),c=d(a);c&&(c.getCustomData(\"ready\")?e(a):c.setCustomData(\"ready\",1))},null,null,-1);b.on(\"beforeSetMode\",function(){e(b.editable())},null,null,-1);var c,\nf,a=function(){var a=b.editable();if(a)if(a=d(a)){var e=b.document.$.defaultView.getSelection();e.type==\"Caret\"&&e.anchorNode==a.$&&(f=1);c=a.getText();a.setText(g(c))}},h=function(){var a=b.editable();if(a)if(a=d(a)){a.setText(c);if(f){b.document.$.defaultView.getSelection().setPosition(a.$,a.getLength());f=0}}};b.on(\"beforeUndoImage\",a);b.on(\"afterUndoImage\",h);b.on(\"beforeGetData\",a,null,null,0);b.on(\"getData\",h)}});CKEDITOR.editor.prototype.selectionChange=function(b){(b?a:c).call(this)};CKEDITOR.editor.prototype.getSelection=\nfunction(a){if((this._.savedSelection||this._.fakeSelection)&&!a)return this._.savedSelection||this._.fakeSelection;return(a=this.editable())&&this.mode==\"wysiwyg\"?new CKEDITOR.dom.selection(a):null};CKEDITOR.editor.prototype.lockSelection=function(a){a=a||this.getSelection(1);if(a.getType()!=CKEDITOR.SELECTION_NONE){!a.isLocked&&a.lock();this._.savedSelection=a;return true}return false};CKEDITOR.editor.prototype.unlockSelection=function(a){var b=this._.savedSelection;if(b){b.unlock(a);delete this._.savedSelection;\nreturn true}return false};CKEDITOR.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath};CKEDITOR.dom.document.prototype.getSelection=function(){return new CKEDITOR.dom.selection(this)};CKEDITOR.dom.range.prototype.select=function(){var a=this.root instanceof CKEDITOR.editable?this.root.editor.getSelection():new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a};CKEDITOR.SELECTION_NONE=1;CKEDITOR.SELECTION_TEXT=2;CKEDITOR.SELECTION_ELEMENT=3;var o=\ntypeof window.getSelection!=\"function\",u=1;CKEDITOR.dom.selection=function(a){if(a instanceof CKEDITOR.dom.selection)var b=a,a=a.root;var c=a instanceof CKEDITOR.dom.element;this.rev=b?b.rev:u++;this.document=a instanceof CKEDITOR.dom.document?a:a.getDocument();this.root=a=c?a:this.document.getBody();this.isLocked=0;this._={cache:{}};if(b){CKEDITOR.tools.extend(this._.cache,b._.cache);this.isFake=b.isFake;this.isLocked=b.isLocked;return this}b=o?this.document.$.selection:this.document.getWindow().$.getSelection();\nif(CKEDITOR.env.webkit)(b.type==\"None\"&&this.document.getActive().equals(a)||b.type==\"Caret\"&&b.anchorNode.nodeType==CKEDITOR.NODE_DOCUMENT)&&n(a,b);else if(CKEDITOR.env.gecko)b&&(this.document.getActive().equals(a)&&b.anchorNode&&b.anchorNode.nodeType==CKEDITOR.NODE_DOCUMENT)&&n(a,b,true);else if(CKEDITOR.env.ie){var d;try{d=this.document.getActive()}catch(e){}if(o)b.type==\"None\"&&(d&&d.equals(this.document.getDocumentElement()))&&n(a,null,true);else{(b=b&&b.anchorNode)&&(b=new CKEDITOR.dom.node(b));\nd&&(d.equals(this.document.getDocumentElement())&&b&&(a.equals(b)||a.contains(b)))&&n(a,null,true)}}d=this.getNative();var f,g;if(d)if(d.getRangeAt)f=(g=d.rangeCount&&d.getRangeAt(0))&&new CKEDITOR.dom.node(g.commonAncestorContainer);else{try{g=d.createRange()}catch(h){}f=g&&CKEDITOR.dom.element.get(g.item&&g.item(0)||g.parentElement())}if(!f||!(f.type==CKEDITOR.NODE_ELEMENT||f.type==CKEDITOR.NODE_TEXT)||!this.root.equals(f)&&!this.root.contains(f)){this._.cache.type=CKEDITOR.SELECTION_NONE;this._.cache.startElement=\nnull;this._.cache.selectedElement=null;this._.cache.selectedText=\"\";this._.cache.ranges=new CKEDITOR.dom.rangeList}return this};var A={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,thead:1,tfoot:1};CKEDITOR.dom.selection.prototype={getNative:function(){return this._.cache.nativeSel!==void 0?this._.cache.nativeSel:this._.cache.nativeSel=o?this.document.$.selection:this.document.getWindow().$.getSelection()},getType:o?function(){var a=\nthis._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_NONE;try{var c=this.getNative(),d=c.type;if(d==\"Text\")b=CKEDITOR.SELECTION_TEXT;if(d==\"Control\")b=CKEDITOR.SELECTION_ELEMENT;if(c.createRange().parentElement())b=CKEDITOR.SELECTION_TEXT}catch(e){}return a.type=b}:function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_TEXT,c=this.getNative();if(!c||!c.rangeCount)b=CKEDITOR.SELECTION_NONE;else if(c.rangeCount==1){var c=c.getRangeAt(0),d=c.startContainer;if(d==c.endContainer&&\nd.nodeType==1&&c.endOffset-c.startOffset==1&&A[d.childNodes[c.startOffset].nodeName.toLowerCase()])b=CKEDITOR.SELECTION_ELEMENT}return a.type=b},getRanges:function(){var a=o?function(){function a(b){return(new CKEDITOR.dom.node(b)).getIndex()}var b=function(b,c){b=b.duplicate();b.collapse(c);var d=b.parentElement();if(!d.hasChildNodes())return{container:d,offset:0};for(var e=d.children,f,g,k=b.duplicate(),j=0,h=e.length-1,w=-1,i,t;j<=h;){w=Math.floor((j+h)/2);f=e[w];k.moveToElementText(f);i=k.compareEndPoints(\"StartToStart\",\nb);if(i>0)h=w-1;else if(i<0)j=w+1;else return{container:d,offset:a(f)}}if(w==-1||w==e.length-1&&i<0){k.moveToElementText(d);k.setEndPoint(\"StartToStart\",b);k=k.text.replace(/(\\r\\n|\\r)/g,\"\\n\").length;e=d.childNodes;if(!k){f=e[e.length-1];return f.nodeType!=CKEDITOR.NODE_TEXT?{container:d,offset:e.length}:{container:f,offset:f.nodeValue.length}}for(d=e.length;k>0&&d>0;){g=e[--d];if(g.nodeType==CKEDITOR.NODE_TEXT){t=g;k=k-g.nodeValue.length}}return{container:t,offset:-k}}k.collapse(i>0?true:false);k.setEndPoint(i>\n0?\"StartToStart\":\"EndToStart\",b);k=k.text.replace(/(\\r\\n|\\r)/g,\"\\n\").length;if(!k)return{container:d,offset:a(f)+(i>0?0:1)};for(;k>0;)try{g=f[i>0?\"previousSibling\":\"nextSibling\"];if(g.nodeType==CKEDITOR.NODE_TEXT){k=k-g.nodeValue.length;t=g}f=g}catch(m){return{container:d,offset:a(f)}}return{container:t,offset:i>0?-k:t.nodeValue.length+k}};return function(){var a=this.getNative(),c=a&&a.createRange(),d=this.getType();if(!a)return[];if(d==CKEDITOR.SELECTION_TEXT){a=new CKEDITOR.dom.range(this.root);\nd=b(c,true);a.setStart(new CKEDITOR.dom.node(d.container),d.offset);d=b(c);a.setEnd(new CKEDITOR.dom.node(d.container),d.offset);a.endContainer.getPosition(a.startContainer)&CKEDITOR.POSITION_PRECEDING&&a.endOffset<=a.startContainer.getIndex()&&a.collapse();return[a]}if(d==CKEDITOR.SELECTION_ELEMENT){for(var d=[],e=0;e<c.length;e++){for(var f=c.item(e),g=f.parentNode,k=0,a=new CKEDITOR.dom.range(this.root);k<g.childNodes.length&&g.childNodes[k]!=f;k++);a.setStart(new CKEDITOR.dom.node(g),k);a.setEnd(new CKEDITOR.dom.node(g),\nk+1);d.push(a)}return d}return[]}}():function(){var a=[],b,c=this.getNative();if(!c)return a;for(var d=0;d<c.rangeCount;d++){var e=c.getRangeAt(d);b=new CKEDITOR.dom.range(this.root);b.setStart(new CKEDITOR.dom.node(e.startContainer),e.startOffset);b.setEnd(new CKEDITOR.dom.node(e.endContainer),e.endOffset);a.push(b)}return a};return function(b){var c=this._.cache,d=c.ranges;if(!d)c.ranges=d=new CKEDITOR.dom.rangeList(a.call(this));return!b?d:m(new CKEDITOR.dom.rangeList(d.slice()))}}(),getStartElement:function(){var a=\nthis._.cache;if(a.startElement!==void 0)return a.startElement;var b;switch(this.getType()){case CKEDITOR.SELECTION_ELEMENT:return this.getSelectedElement();case CKEDITOR.SELECTION_TEXT:var c=this.getRanges()[0];if(c){if(c.collapsed){b=c.startContainer;b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent())}else{for(c.optimize();;){b=c.startContainer;if(c.startOffset==(b.getChildCount?b.getChildCount():b.getLength())&&!b.isBlockBoundary())c.setStartAfter(b);else break}b=c.startContainer;if(b.type!=CKEDITOR.NODE_ELEMENT)return b.getParent();\nb=b.getChild(c.startOffset);if(!b||b.type!=CKEDITOR.NODE_ELEMENT)b=c.startContainer;else for(c=b.getFirst();c&&c.type==CKEDITOR.NODE_ELEMENT;){b=c;c=c.getFirst()}}b=b.$}}return a.startElement=b?new CKEDITOR.dom.element(b):null},getSelectedElement:function(){var a=this._.cache;if(a.selectedElement!==void 0)return a.selectedElement;var b=this,c=CKEDITOR.tools.tryThese(function(){return b.getNative().createRange().item(0)},function(){for(var a=b.getRanges()[0].clone(),c,d,e=2;e&&(!(c=a.getEnclosedNode())||\n!(c.type==CKEDITOR.NODE_ELEMENT&&A[c.getName()]&&(d=c)));e--)a.shrink(CKEDITOR.SHRINK_ELEMENT);return d&&d.$});return a.selectedElement=c?new CKEDITOR.dom.element(c):null},getSelectedText:function(){var a=this._.cache;if(a.selectedText!==void 0)return a.selectedText;var b=this.getNative(),b=o?b.type==\"Control\"?\"\":b.createRange().text:b.toString();return a.selectedText=b},lock:function(){this.getRanges();this.getStartElement();this.getSelectedElement();this.getSelectedText();this._.cache.nativeSel=\nnull;this.isLocked=1},unlock:function(a){if(this.isLocked){if(a)var b=this.getSelectedElement(),c=!b&&this.getRanges(),d=this.isFake;this.isLocked=0;this.reset();if(a)(a=b||c[0]&&c[0].getCommonAncestor())&&a.getAscendant(\"body\",1)&&(d?this.fake(b):b?this.selectElement(b):this.selectRanges(c))}},reset:function(){this._.cache={};this.isFake=0;var a=this.root.editor;if(a&&a._.fakeSelection&&this.rev==a._.fakeSelection.rev){delete a._.fakeSelection;var b=a._.hiddenSelectionContainer;if(b){var c=a.checkDirty();\na.fire(\"lockSnapshot\");b.remove();a.fire(\"unlockSnapshot\");!c&&a.resetDirty()}delete a._.hiddenSelectionContainer}this.rev=u++},selectElement:function(a){var b=new CKEDITOR.dom.range(this.root);b.setStartBefore(a);b.setEndAfter(a);this.selectRanges([b])},selectRanges:function(a){var b=this.root.editor,b=b&&b._.hiddenSelectionContainer;this.reset();if(b)for(var b=this.root,c,d=0;d<a.length;++d){c=a[d];if(c.endContainer.equals(b))c.endOffset=Math.min(c.endOffset,b.getChildCount())}if(a.length)if(this.isLocked){var g=\nCKEDITOR.document.getActive();this.unlock();this.selectRanges(a);this.lock();!g.equals(this.root)&&g.focus()}else{var h;a:{var i,m;if(a.length==1&&!(m=a[0]).collapsed&&(h=m.getEnclosedNode())&&h.type==CKEDITOR.NODE_ELEMENT){m=m.clone();m.shrink(CKEDITOR.SHRINK_ELEMENT,true);if((i=m.getEnclosedNode())&&i.type==CKEDITOR.NODE_ELEMENT)h=i;if(h.getAttribute(\"contenteditable\")==\"false\")break a}h=void 0}if(h)this.fake(h);else{if(o){m=CKEDITOR.dom.walker.whitespaces(true);i=/\\ufeff|\\u00a0/;b={table:1,tbody:1,\ntr:1};if(a.length>1){h=a[a.length-1];a[0].setEnd(h.endContainer,h.endOffset)}h=a[0];var a=h.collapsed,n,q,p;if((c=h.getEnclosedNode())&&c.type==CKEDITOR.NODE_ELEMENT&&c.getName()in A&&(!c.is(\"a\")||!c.getText()))try{p=c.$.createControlRange();p.addElement(c.$);p.select();return}catch(s){}if(h.startContainer.type==CKEDITOR.NODE_ELEMENT&&h.startContainer.getName()in b||h.endContainer.type==CKEDITOR.NODE_ELEMENT&&h.endContainer.getName()in b){h.shrink(CKEDITOR.NODE_ELEMENT,true);a=h.collapsed}p=h.createBookmark();\nb=p.startNode;if(!a)g=p.endNode;p=h.document.$.body.createTextRange();p.moveToElementText(b.$);p.moveStart(\"character\",1);if(g){i=h.document.$.body.createTextRange();i.moveToElementText(g.$);p.setEndPoint(\"EndToEnd\",i);p.moveEnd(\"character\",-1)}else{n=b.getNext(m);q=b.hasAscendant(\"pre\");n=!(n&&n.getText&&n.getText().match(i))&&(q||!b.hasPrevious()||b.getPrevious().is&&b.getPrevious().is(\"br\"));q=h.document.createElement(\"span\");q.setHtml(\"&#65279;\");q.insertBefore(b);n&&h.document.createText(\"﻿\").insertBefore(b)}h.setStartBefore(b);\nb.remove();if(a){if(n){p.moveStart(\"character\",-1);p.select();h.document.$.selection.clear()}else p.select();h.moveToPosition(q,CKEDITOR.POSITION_BEFORE_START);q.remove()}else{h.setEndBefore(g);g.remove();p.select()}}else{g=this.getNative();if(!g)return;this.removeAllRanges();for(p=0;p<a.length;p++){if(p<a.length-1){n=a[p];q=a[p+1];i=n.clone();i.setStart(n.endContainer,n.endOffset);i.setEnd(q.startContainer,q.startOffset);if(!i.collapsed){i.shrink(CKEDITOR.NODE_ELEMENT,true);h=i.getCommonAncestor();\ni=i.getEnclosedNode();if(h.isReadOnly()||i&&i.isReadOnly()){q.setStart(n.startContainer,n.startOffset);a.splice(p--,1);continue}}}h=a[p];q=this.document.$.createRange();if(h.collapsed&&CKEDITOR.env.webkit&&f(h)){n=this.root;e(n,false);i=n.getDocument().createText(\"​\");n.setCustomData(\"cke-fillingChar\",i);h.insertNode(i);if((n=i.getNext())&&!i.getPrevious()&&n.type==CKEDITOR.NODE_ELEMENT&&n.getName()==\"br\"){e(this.root);h.moveToPosition(n,CKEDITOR.POSITION_BEFORE_START)}else h.moveToPosition(i,CKEDITOR.POSITION_AFTER_END)}q.setStart(h.startContainer.$,\nh.startOffset);try{q.setEnd(h.endContainer.$,h.endOffset)}catch(w){if(w.toString().indexOf(\"NS_ERROR_ILLEGAL_VALUE\")>=0){h.collapse(1);q.setEnd(h.endContainer.$,h.endOffset)}else throw w;}g.addRange(q)}}this.reset();this.root.fire(\"selectionchange\")}}},fake:function(a){var b=this.root.editor;this.reset();h(b);var c=this._.cache,d=new CKEDITOR.dom.range(this.root);d.setStartBefore(a);d.setEndAfter(a);c.ranges=new CKEDITOR.dom.rangeList(d);c.selectedElement=c.startElement=a;c.type=CKEDITOR.SELECTION_ELEMENT;\nc.selectedText=c.nativeSel=null;this.isFake=1;this.rev=u++;b._.fakeSelection=this;this.root.fire(\"selectionchange\")},isHidden:function(){var a=this.getCommonAncestor();a&&a.type==CKEDITOR.NODE_TEXT&&(a=a.getParent());return!(!a||!a.data(\"cke-hidden-sel\"))},createBookmarks:function(a){a=this.getRanges().createBookmarks(a);this.isFake&&(a.isFake=1);return a},createBookmarks2:function(a){a=this.getRanges().createBookmarks2(a);this.isFake&&(a.isFake=1);return a},selectBookmarks:function(a){for(var b=\n[],c=0;c<a.length;c++){var d=new CKEDITOR.dom.range(this.root);d.moveToBookmark(a[c]);b.push(d)}a.isFake?this.fake(b[0].getEnclosedNode()):this.selectRanges(b);return this},getCommonAncestor:function(){var a=this.getRanges();return!a.length?null:a[0].startContainer.getCommonAncestor(a[a.length-1].endContainer)},scrollIntoView:function(){this.type!=CKEDITOR.SELECTION_NONE&&this.getRanges()[0].scrollIntoView()},removeAllRanges:function(){if(this.getType()!=CKEDITOR.SELECTION_NONE){var a=this.getNative();\ntry{a&&a[o?\"empty\":\"removeAllRanges\"]()}catch(b){}this.reset()}}}})();\"use strict\";CKEDITOR.STYLE_BLOCK=1;CKEDITOR.STYLE_INLINE=2;CKEDITOR.STYLE_OBJECT=3;\n(function(){function a(a,b){for(var c,d;a=a.getParent();){if(a.equals(b))break;if(a.getAttribute(\"data-nostyle\"))c=a;else if(!d){var e=a.getAttribute(\"contentEditable\");e==\"false\"?c=a:e==\"true\"&&(d=1)}}return c}function c(b){var d=b.document;if(b.collapsed){d=u(this,d);b.insertNode(d);b.moveToPosition(d,CKEDITOR.POSITION_BEFORE_END)}else{var e=this.element,g=this._.definition,h,i=g.ignoreReadonly,j=i||g.includeReadonly;j==void 0&&(j=b.root.getCustomData(\"cke_includeReadonly\"));var k=CKEDITOR.dtd[e];\nif(!k){h=true;k=CKEDITOR.dtd.span}b.enlarge(CKEDITOR.ENLARGE_INLINE,1);b.trim();var m=b.createBookmark(),l=m.startNode,n=m.endNode,p=l,q;if(!i){var o=b.getCommonAncestor(),i=a(l,o),o=a(n,o);i&&(p=i.getNextSourceNode(true));o&&(n=o)}for(p.getPosition(n)==CKEDITOR.POSITION_FOLLOWING&&(p=0);p;){i=false;if(p.equals(n)){p=null;i=true}else{var s=p.type==CKEDITOR.NODE_ELEMENT?p.getName():null,o=s&&p.getAttribute(\"contentEditable\")==\"false\",r=s&&p.getAttribute(\"data-nostyle\");if(s&&p.data(\"cke-bookmark\")){p=\np.getNextSourceNode(true);continue}if(o&&j&&CKEDITOR.dtd.$block[s])for(var v=p,A=f(v),D=void 0,I=A.length,O=0,v=I&&new CKEDITOR.dom.range(v.getDocument());O<I;++O){var D=A[O],S=CKEDITOR.filter.instances[D.data(\"cke-filter\")];if(S?S.check(this):1){v.selectNodeContents(D);c.call(this,v)}}A=s?!k[s]||r?0:o&&!j?0:(p.getPosition(n)|L)==L&&(!g.childRule||g.childRule(p)):1;if(A)if((A=p.getParent())&&((A.getDtd()||CKEDITOR.dtd.span)[e]||h)&&(!g.parentRule||g.parentRule(A))){if(!q&&(!s||!CKEDITOR.dtd.$removeEmpty[s]||\n(p.getPosition(n)|L)==L)){q=b.clone();q.setStartBefore(p)}s=p.type;if(s==CKEDITOR.NODE_TEXT||o||s==CKEDITOR.NODE_ELEMENT&&!p.getChildCount()){for(var s=p,P;(i=!s.getNext(F))&&(P=s.getParent(),k[P.getName()])&&(P.getPosition(l)|J)==J&&(!g.childRule||g.childRule(P));)s=P;q.setEndAfter(s)}}else i=true;else i=true;p=p.getNextSourceNode(r||o)}if(i&&q&&!q.collapsed){for(var i=u(this,d),o=i.hasAttributes(),r=q.getCommonAncestor(),s={},A={},D={},I={},V,R,Y;i&&r;){if(r.getName()==e){for(V in g.attributes)if(!I[V]&&\n(Y=r.getAttribute(R)))i.getAttribute(V)==Y?A[V]=1:I[V]=1;for(R in g.styles)if(!D[R]&&(Y=r.getStyle(R)))i.getStyle(R)==Y?s[R]=1:D[R]=1}r=r.getParent()}for(V in A)i.removeAttribute(V);for(R in s)i.removeStyle(R);o&&!i.hasAttributes()&&(i=null);if(i){q.extractContents().appendTo(i);q.insertNode(i);x.call(this,i);i.mergeSiblings();CKEDITOR.env.ie||i.$.normalize()}else{i=new CKEDITOR.dom.element(\"span\");q.extractContents().appendTo(i);q.insertNode(i);x.call(this,i);i.remove(true)}q=null}}b.moveToBookmark(m);\nb.shrink(CKEDITOR.SHRINK_TEXT);b.shrink(CKEDITOR.NODE_ELEMENT,true)}}function b(a){function b(){for(var a=new CKEDITOR.dom.elementPath(d.getParent()),c=new CKEDITOR.dom.elementPath(j.getParent()),e=null,f=null,g=0;g<a.elements.length;g++){var h=a.elements[g];if(h==a.block||h==a.blockLimit)break;k.checkElementRemovable(h)&&(e=h)}for(g=0;g<c.elements.length;g++){h=c.elements[g];if(h==c.block||h==c.blockLimit)break;k.checkElementRemovable(h)&&(f=h)}f&&j.breakParent(f);e&&d.breakParent(e)}a.enlarge(CKEDITOR.ENLARGE_INLINE,\n1);var c=a.createBookmark(),d=c.startNode;if(a.collapsed){for(var e=new CKEDITOR.dom.elementPath(d.getParent(),a.root),f,g=0,h;g<e.elements.length&&(h=e.elements[g]);g++){if(h==e.block||h==e.blockLimit)break;if(this.checkElementRemovable(h)){var i;if(a.collapsed&&(a.checkBoundaryOfElement(h,CKEDITOR.END)||(i=a.checkBoundaryOfElement(h,CKEDITOR.START)))){f=h;f.match=i?\"start\":\"end\"}else{h.mergeSiblings();h.is(this.element)?s.call(this,h):q(h,l(this)[h.getName()])}}}if(f){h=d;for(g=0;;g++){i=e.elements[g];\nif(i.equals(f))break;else if(i.match)continue;else i=i.clone();i.append(h);h=i}h[f.match==\"start\"?\"insertBefore\":\"insertAfter\"](f)}}else{var j=c.endNode,k=this;b();for(e=d;!e.equals(j);){f=e.getNextSourceNode();if(e.type==CKEDITOR.NODE_ELEMENT&&this.checkElementRemovable(e)){e.getName()==this.element?s.call(this,e):q(e,l(this)[e.getName()]);if(f.type==CKEDITOR.NODE_ELEMENT&&f.contains(d)){b();f=d.getNext()}}e=f}}a.moveToBookmark(c);a.shrink(CKEDITOR.NODE_ELEMENT,true)}function f(a){var b=[];a.forEach(function(a){if(a.getAttribute(\"contenteditable\")==\n\"true\"){b.push(a);return false}},CKEDITOR.NODE_ELEMENT,true);return b}function d(a){var b=a.getEnclosedNode()||a.getCommonAncestor(false,true);(a=(new CKEDITOR.dom.elementPath(b,a.root)).contains(this.element,1))&&!a.isReadOnly()&&A(a,this)}function e(a){var b=a.getCommonAncestor(true,true);if(a=(new CKEDITOR.dom.elementPath(b,a.root)).contains(this.element,1)){var b=this._.definition,c=b.attributes;if(c)for(var d in c)a.removeAttribute(d,c[d]);if(b.styles)for(var e in b.styles)b.styles.hasOwnProperty(e)&&\na.removeStyle(e)}}function g(a){var b=a.createBookmark(true),c=a.createIterator();c.enforceRealBlocks=true;if(this._.enterMode)c.enlargeBr=this._.enterMode!=CKEDITOR.ENTER_BR;for(var d,e=a.document,f;d=c.getNextParagraph();)if(!d.isReadOnly()&&(c.activeFilter?c.activeFilter.check(this):1)){f=u(this,e,d);h(d,f)}a.moveToBookmark(b)}function n(a){var b=a.createBookmark(1),c=a.createIterator();c.enforceRealBlocks=true;c.enlargeBr=this._.enterMode!=CKEDITOR.ENTER_BR;for(var d,e;d=c.getNextParagraph();)if(this.checkElementRemovable(d))if(d.is(\"pre\")){(e=\nthis._.enterMode==CKEDITOR.ENTER_BR?null:a.document.createElement(this._.enterMode==CKEDITOR.ENTER_P?\"p\":\"div\"))&&d.copyAttributes(e);h(d,e)}else s.call(this,d);a.moveToBookmark(b)}function h(a,b){var c=!b;if(c){b=a.getDocument().createElement(\"div\");a.copyAttributes(b)}var d=b&&b.is(\"pre\"),e=a.is(\"pre\"),f=!d&&e;if(d&&!e){e=b;(f=a.getBogus())&&f.remove();f=a.getHtml();f=m(f,/(?:^[ \\t\\n\\r]+)|(?:[ \\t\\n\\r]+$)/g,\"\");f=f.replace(/[ \\t\\r\\n]*(<br[^>]*>)[ \\t\\r\\n]*/gi,\"$1\");f=f.replace(/([ \\t\\n\\r]+|&nbsp;)/g,\n\" \");f=f.replace(/<br\\b[^>]*>/gi,\"\\n\");if(CKEDITOR.env.ie){var g=a.getDocument().createElement(\"div\");g.append(e);e.$.outerHTML=\"<pre>\"+f+\"</pre>\";e.copyAttributes(g.getFirst());e=g.getFirst().remove()}else e.setHtml(f);b=e}else f?b=p(c?[a.getHtml()]:i(a),b):a.moveChildren(b);b.replace(a);if(d){var c=b,h;if((h=c.getPrevious(D))&&h.type==CKEDITOR.NODE_ELEMENT&&h.is(\"pre\")){d=m(h.getHtml(),/\\n$/,\"\")+\"\\n\\n\"+m(c.getHtml(),/^\\n/,\"\");CKEDITOR.env.ie?c.$.outerHTML=\"<pre>\"+d+\"</pre>\":c.setHtml(d);h.remove()}}else c&&\no(b)}function i(a){a.getName();var b=[];m(a.getOuterHtml(),/(\\S\\s*)\\n(?:\\s|(<span[^>]+data-cke-bookmark.*?\\/span>))*\\n(?!$)/gi,function(a,b,c){return b+\"</pre>\"+c+\"<pre>\"}).replace(/<pre\\b.*?>([\\s\\S]*?)<\\/pre>/gi,function(a,c){b.push(c)});return b}function m(a,b,c){var d=\"\",e=\"\",a=a.replace(/(^<span[^>]+data-cke-bookmark.*?\\/span>)|(<span[^>]+data-cke-bookmark.*?\\/span>$)/gi,function(a,b,c){b&&(d=b);c&&(e=c);return\"\"});return d+a.replace(b,c)+e}function p(a,b){var c;a.length>1&&(c=new CKEDITOR.dom.documentFragment(b.getDocument()));\nfor(var d=0;d<a.length;d++){var e=a[d],e=e.replace(/(\\r\\n|\\r)/g,\"\\n\"),e=m(e,/^[ \\t]*\\n/,\"\"),e=m(e,/\\n$/,\"\"),e=m(e,/^[ \\t]+|[ \\t]+$/g,function(a,b){return a.length==1?\"&nbsp;\":b?\" \"+CKEDITOR.tools.repeat(\"&nbsp;\",a.length-1):CKEDITOR.tools.repeat(\"&nbsp;\",a.length-1)+\" \"}),e=e.replace(/\\n/g,\"<br>\"),e=e.replace(/[ \\t]{2,}/g,function(a){return CKEDITOR.tools.repeat(\"&nbsp;\",a.length-1)+\" \"});if(c){var f=b.clone();f.setHtml(e);c.append(f)}else b.setHtml(e)}return c||b}function s(a,b){var c=this._.definition,\nd=c.attributes,c=c.styles,e=l(this)[a.getName()],f=CKEDITOR.tools.isEmpty(d)&&CKEDITOR.tools.isEmpty(c),g;for(g in d)if(!((g==\"class\"||this._.definition.fullMatch)&&a.getAttribute(g)!=j(g,d[g]))&&!(b&&g.slice(0,5)==\"data-\")){f=a.hasAttribute(g);a.removeAttribute(g)}for(var h in c)if(!(this._.definition.fullMatch&&a.getStyle(h)!=j(h,c[h],true))){f=f||!!a.getStyle(h);a.removeStyle(h)}q(a,e,I[a.getName()]);f&&(this._.definition.alwaysRemoveElement?o(a,1):!CKEDITOR.dtd.$block[a.getName()]||this._.enterMode==\nCKEDITOR.ENTER_BR&&!a.hasAttributes()?o(a):a.renameNode(this._.enterMode==CKEDITOR.ENTER_P?\"p\":\"div\"))}function x(a){for(var b=l(this),c=a.getElementsByTag(this.element),d,e=c.count();--e>=0;){d=c.getItem(e);d.isReadOnly()||s.call(this,d,true)}for(var f in b)if(f!=this.element){c=a.getElementsByTag(f);for(e=c.count()-1;e>=0;e--){d=c.getItem(e);d.isReadOnly()||q(d,b[f])}}}function q(a,b,c){if(b=b&&b.attributes)for(var d=0;d<b.length;d++){var e=b[d][0],f;if(f=a.getAttribute(e)){var g=b[d][1];(g===null||\ng.test&&g.test(f)||typeof g==\"string\"&&f==g)&&a.removeAttribute(e)}}c||o(a)}function o(a,b){if(!a.hasAttributes()||b)if(CKEDITOR.dtd.$block[a.getName()]){var c=a.getPrevious(D),d=a.getNext(D);c&&(c.type==CKEDITOR.NODE_TEXT||!c.isBlockBoundary({br:1}))&&a.append(\"br\",1);d&&(d.type==CKEDITOR.NODE_TEXT||!d.isBlockBoundary({br:1}))&&a.append(\"br\");a.remove(true)}else{c=a.getFirst();d=a.getLast();a.remove(true);if(c){c.type==CKEDITOR.NODE_ELEMENT&&c.mergeSiblings();d&&(!c.equals(d)&&d.type==CKEDITOR.NODE_ELEMENT)&&\nd.mergeSiblings()}}}function u(a,b,c){var d;d=a.element;d==\"*\"&&(d=\"span\");d=new CKEDITOR.dom.element(d,b);c&&c.copyAttributes(d);d=A(d,a);b.getCustomData(\"doc_processing_style\")&&d.hasAttribute(\"id\")?d.removeAttribute(\"id\"):b.setCustomData(\"doc_processing_style\",1);return d}function A(a,b){var c=b._.definition,d=c.attributes,c=CKEDITOR.style.getStyleText(c);if(d)for(var e in d)a.setAttribute(e,d[e]);c&&a.setAttribute(\"style\",c);return a}function k(a,b){for(var c in a)a[c]=a[c].replace(S,function(a,\nc){return b[c]})}function l(a){if(a._.overrides)return a._.overrides;var b=a._.overrides={},c=a._.definition.overrides;if(c){CKEDITOR.tools.isArray(c)||(c=[c]);for(var d=0;d<c.length;d++){var e=c[d],f,g;if(typeof e==\"string\")f=e.toLowerCase();else{f=e.element?e.element.toLowerCase():a.element;g=e.attributes}e=b[f]||(b[f]={});if(g){var e=e.attributes=e.attributes||[],h;for(h in g)e.push([h.toLowerCase(),g[h]])}}}return b}function j(a,b,c){var d=new CKEDITOR.dom.element(\"span\");d[c?\"setStyle\":\"setAttribute\"](a,\nb);return d[c?\"getStyle\":\"getAttribute\"](a)}function v(a,b,c){for(var d=a.document,e=a.getRanges(),b=b?this.removeFromRange:this.applyToRange,f,g=e.createIterator();f=g.getNextRange();)b.call(this,f,c);a.selectRanges(e);d.removeCustomData(\"doc_processing_style\")}var I={address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,details:1,datagrid:1,datalist:1},r=\n{a:1,blockquote:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,th:1,ul:1,dl:1,dt:1,dd:1,form:1,audio:1,video:1},O=/\\s*(?:;\\s*|$)/,S=/#\\((.+?)\\)/g,F=CKEDITOR.dom.walker.bookmark(0,1),D=CKEDITOR.dom.walker.whitespaces(1);CKEDITOR.style=function(a,b){if(typeof a.type==\"string\")return new CKEDITOR.style.customHandlers[a.type](a);var c=a.attributes;if(c&&c.style){a.styles=CKEDITOR.tools.extend({},a.styles,CKEDITOR.tools.parseCssText(c.style));delete c.style}if(b){a=CKEDITOR.tools.clone(a);k(a.attributes,\nb);k(a.styles,b)}c=this.element=a.element?typeof a.element==\"string\"?a.element.toLowerCase():a.element:\"*\";this.type=a.type||(I[c]?CKEDITOR.STYLE_BLOCK:r[c]?CKEDITOR.STYLE_OBJECT:CKEDITOR.STYLE_INLINE);if(typeof this.element==\"object\")this.type=CKEDITOR.STYLE_OBJECT;this._={definition:a}};CKEDITOR.style.prototype={apply:function(a){if(a instanceof CKEDITOR.dom.document)return v.call(this,a.getSelection());if(this.checkApplicable(a.elementPath(),a)){var b=this._.enterMode;if(!b)this._.enterMode=a.activeEnterMode;\nv.call(this,a.getSelection(),0,a);this._.enterMode=b}},remove:function(a){if(a instanceof CKEDITOR.dom.document)return v.call(this,a.getSelection(),1);if(this.checkApplicable(a.elementPath(),a)){var b=this._.enterMode;if(!b)this._.enterMode=a.activeEnterMode;v.call(this,a.getSelection(),1,a);this._.enterMode=b}},applyToRange:function(a){this.applyToRange=this.type==CKEDITOR.STYLE_INLINE?c:this.type==CKEDITOR.STYLE_BLOCK?g:this.type==CKEDITOR.STYLE_OBJECT?d:null;return this.applyToRange(a)},removeFromRange:function(a){this.removeFromRange=\nthis.type==CKEDITOR.STYLE_INLINE?b:this.type==CKEDITOR.STYLE_BLOCK?n:this.type==CKEDITOR.STYLE_OBJECT?e:null;return this.removeFromRange(a)},applyToObject:function(a){A(a,this)},checkActive:function(a,b){switch(this.type){case CKEDITOR.STYLE_BLOCK:return this.checkElementRemovable(a.block||a.blockLimit,true,b);case CKEDITOR.STYLE_OBJECT:case CKEDITOR.STYLE_INLINE:for(var c=a.elements,d=0,e;d<c.length;d++){e=c[d];if(!(this.type==CKEDITOR.STYLE_INLINE&&(e==a.block||e==a.blockLimit))){if(this.type==\nCKEDITOR.STYLE_OBJECT){var f=e.getName();if(!(typeof this.element==\"string\"?f==this.element:f in this.element))continue}if(this.checkElementRemovable(e,true,b))return true}}}return false},checkApplicable:function(a,b,c){b&&b instanceof CKEDITOR.filter&&(c=b);if(c&&!c.check(this))return false;switch(this.type){case CKEDITOR.STYLE_OBJECT:return!!a.contains(this.element);case CKEDITOR.STYLE_BLOCK:return!!a.blockLimit.getDtd()[this.element]}return true},checkElementMatch:function(a,b){var c=this._.definition;\nif(!a||!c.ignoreReadonly&&a.isReadOnly())return false;var d=a.getName();if(typeof this.element==\"string\"?d==this.element:d in this.element){if(!b&&!a.hasAttributes())return true;if(d=c._AC)c=d;else{var d={},e=0,f=c.attributes;if(f)for(var g in f){e++;d[g]=f[g]}if(g=CKEDITOR.style.getStyleText(c)){d.style||e++;d.style=g}d._length=e;c=c._AC=d}if(c._length){for(var h in c)if(h!=\"_length\"){e=a.getAttribute(h)||\"\";if(h==\"style\")a:{d=c[h];typeof d==\"string\"&&(d=CKEDITOR.tools.parseCssText(d));typeof e==\n\"string\"&&(e=CKEDITOR.tools.parseCssText(e,true));g=void 0;for(g in d)if(!(g in e&&(e[g]==d[g]||d[g]==\"inherit\"||e[g]==\"inherit\"))){d=false;break a}d=true}else d=c[h]==e;if(d){if(!b)return true}else if(b)return false}if(b)return true}else return true}return false},checkElementRemovable:function(a,b,c){if(this.checkElementMatch(a,b,c))return true;if(b=l(this)[a.getName()]){var d;if(!(b=b.attributes))return true;for(c=0;c<b.length;c++){d=b[c][0];if(d=a.getAttribute(d)){var e=b[c][1];if(e===null||typeof e==\n\"string\"&&d==e||e.test(d))return true}}}return false},buildPreview:function(a){var b=this._.definition,c=[],d=b.element;d==\"bdo\"&&(d=\"span\");var c=[\"<\",d],e=b.attributes;if(e)for(var f in e)c.push(\" \",f,'=\"',e[f],'\"');(e=CKEDITOR.style.getStyleText(b))&&c.push(' style=\"',e,'\"');c.push(\">\",a||b.name,\"</\",d,\">\");return c.join(\"\")},getDefinition:function(){return this._.definition}};CKEDITOR.style.getStyleText=function(a){var b=a._ST;if(b)return b;var b=a.styles,c=a.attributes&&a.attributes.style||\"\",\nd=\"\";c.length&&(c=c.replace(O,\";\"));for(var e in b){var f=b[e],g=(e+\":\"+f).replace(O,\";\");f==\"inherit\"?d=d+g:c=c+g}c.length&&(c=CKEDITOR.tools.normalizeCssText(c,true));return a._ST=c+d};CKEDITOR.style.customHandlers={};CKEDITOR.style.addCustomHandler=function(a){var b=function(a){this._={definition:a};this.setup&&this.setup(a)};b.prototype=CKEDITOR.tools.extend(CKEDITOR.tools.prototypedCopy(CKEDITOR.style.prototype),{assignedTo:CKEDITOR.STYLE_OBJECT},a,true);return this.customHandlers[a.type]=b};\nvar L=CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED,J=CKEDITOR.POSITION_FOLLOWING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED})();CKEDITOR.styleCommand=function(a,c){this.requiredContent=this.allowedContent=this.style=a;CKEDITOR.tools.extend(this,c,true)};CKEDITOR.styleCommand.prototype.exec=function(a){a.focus();this.state==CKEDITOR.TRISTATE_OFF?a.applyStyle(this.style):this.state==CKEDITOR.TRISTATE_ON&&a.removeStyle(this.style)};\nCKEDITOR.stylesSet=new CKEDITOR.resourceManager(\"\",\"stylesSet\");CKEDITOR.addStylesSet=CKEDITOR.tools.bind(CKEDITOR.stylesSet.add,CKEDITOR.stylesSet);CKEDITOR.loadStylesSet=function(a,c,b){CKEDITOR.stylesSet.addExternal(a,c,\"\");CKEDITOR.stylesSet.load(a,b)};\nCKEDITOR.tools.extend(CKEDITOR.editor.prototype,{attachStyleStateChange:function(a,c){var b=this._.styleStateChangeCallbacks;if(!b){b=this._.styleStateChangeCallbacks=[];this.on(\"selectionChange\",function(a){for(var c=0;c<b.length;c++){var e=b[c],g=e.style.checkActive(a.data.path,this)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF;e.fn.call(this,g)}})}b.push({style:a,fn:c})},applyStyle:function(a){a.apply(this)},removeStyle:function(a){a.remove(this)},getStylesSet:function(a){if(this._.stylesDefinitions)a(this._.stylesDefinitions);\nelse{var c=this,b=c.config.stylesCombo_stylesSet||c.config.stylesSet;if(b===false)a(null);else if(b instanceof Array){c._.stylesDefinitions=b;a(b)}else{b||(b=\"default\");var b=b.split(\":\"),f=b[0];CKEDITOR.stylesSet.addExternal(f,b[1]?b.slice(1).join(\":\"):CKEDITOR.getUrl(\"styles.js\"),\"\");CKEDITOR.stylesSet.load(f,function(b){c._.stylesDefinitions=b[f];a(c._.stylesDefinitions)})}}}});\nCKEDITOR.dom.comment=function(a,c){typeof a==\"string\"&&(a=(c?c.$:document).createComment(a));CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.comment.prototype=new CKEDITOR.dom.node;CKEDITOR.tools.extend(CKEDITOR.dom.comment.prototype,{type:CKEDITOR.NODE_COMMENT,getOuterHtml:function(){return\"<\\!--\"+this.$.nodeValue+\"--\\>\"}});\"use strict\";\n(function(){var a={},c={},b;for(b in CKEDITOR.dtd.$blockLimit)b in CKEDITOR.dtd.$list||(a[b]=1);for(b in CKEDITOR.dtd.$block)b in CKEDITOR.dtd.$blockLimit||b in CKEDITOR.dtd.$empty||(c[b]=1);CKEDITOR.dom.elementPath=function(b,d){var e=null,g=null,n=[],h=b,i,d=d||b.getDocument().getBody();do if(h.type==CKEDITOR.NODE_ELEMENT){n.push(h);if(!this.lastElement){this.lastElement=h;if(h.is(CKEDITOR.dtd.$object)||h.getAttribute(\"contenteditable\")==\"false\")continue}if(h.equals(d))break;if(!g){i=h.getName();\nh.getAttribute(\"contenteditable\")==\"true\"?g=h:!e&&c[i]&&(e=h);if(a[i]){var m;if(m=!e){if(i=i==\"div\"){a:{i=h.getChildren();m=0;for(var p=i.count();m<p;m++){var s=i.getItem(m);if(s.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$block[s.getName()]){i=true;break a}}i=false}i=!i}m=i}m?e=h:g=h}}}while(h=h.getParent());g||(g=d);this.block=e;this.blockLimit=g;this.root=d;this.elements=n}})();\nCKEDITOR.dom.elementPath.prototype={compare:function(a){var c=this.elements,a=a&&a.elements;if(!a||c.length!=a.length)return false;for(var b=0;b<c.length;b++)if(!c[b].equals(a[b]))return false;return true},contains:function(a,c,b){var f;typeof a==\"string\"&&(f=function(b){return b.getName()==a});a instanceof CKEDITOR.dom.element?f=function(b){return b.equals(a)}:CKEDITOR.tools.isArray(a)?f=function(b){return CKEDITOR.tools.indexOf(a,b.getName())>-1}:typeof a==\"function\"?f=a:typeof a==\"object\"&&(f=\nfunction(b){return b.getName()in a});var d=this.elements,e=d.length;c&&e--;if(b){d=Array.prototype.slice.call(d,0);d.reverse()}for(c=0;c<e;c++)if(f(d[c]))return d[c];return null},isContextFor:function(a){var c;if(a in CKEDITOR.dtd.$block){c=this.contains(CKEDITOR.dtd.$intermediate)||this.root.equals(this.block)&&this.block||this.blockLimit;return!!c.getDtd()[a]}return true},direction:function(){return(this.block||this.blockLimit||this.root).getDirection(1)}};\nCKEDITOR.dom.text=function(a,c){typeof a==\"string\"&&(a=(c?c.$:document).createTextNode(a));this.$=a};CKEDITOR.dom.text.prototype=new CKEDITOR.dom.node;\nCKEDITOR.tools.extend(CKEDITOR.dom.text.prototype,{type:CKEDITOR.NODE_TEXT,getLength:function(){return this.$.nodeValue.length},getText:function(){return this.$.nodeValue},setText:function(a){this.$.nodeValue=a},split:function(a){var c=this.$.parentNode,b=c.childNodes.length,f=this.getLength(),d=this.getDocument(),e=new CKEDITOR.dom.text(this.$.splitText(a),d);if(c.childNodes.length==b)if(a>=f){e=d.createText(\"\");e.insertAfter(this)}else{a=d.createText(\"\");a.insertAfter(e);a.remove()}return e},substring:function(a,\nc){return typeof c!=\"number\"?this.$.nodeValue.substr(a):this.$.nodeValue.substring(a,c)}});\n(function(){function a(a,c,d){var e=a.serializable,g=c[d?\"endContainer\":\"startContainer\"],n=d?\"endOffset\":\"startOffset\",h=e?c.document.getById(a.startNode):a.startNode,a=e?c.document.getById(a.endNode):a.endNode;if(g.equals(h.getPrevious())){c.startOffset=c.startOffset-g.getLength()-a.getPrevious().getLength();g=a.getNext()}else if(g.equals(a.getPrevious())){c.startOffset=c.startOffset-g.getLength();g=a.getNext()}g.equals(h.getParent())&&c[n]++;g.equals(a.getParent())&&c[n]++;c[d?\"endContainer\":\"startContainer\"]=\ng;return c}CKEDITOR.dom.rangeList=function(a){if(a instanceof CKEDITOR.dom.rangeList)return a;a?a instanceof CKEDITOR.dom.range&&(a=[a]):a=[];return CKEDITOR.tools.extend(a,c)};var c={createIterator:function(){var a=this,c=CKEDITOR.dom.walker.bookmark(),d=[],e;return{getNextRange:function(g){e=e==void 0?0:e+1;var n=a[e];if(n&&a.length>1){if(!e)for(var h=a.length-1;h>=0;h--)d.unshift(a[h].createBookmark(true));if(g)for(var i=0;a[e+i+1];){for(var m=n.document,g=0,h=m.getById(d[i].endNode),m=m.getById(d[i+\n1].startNode);;){h=h.getNextSourceNode(false);if(m.equals(h))g=1;else if(c(h)||h.type==CKEDITOR.NODE_ELEMENT&&h.isBlockBoundary())continue;break}if(!g)break;i++}for(n.moveToBookmark(d.shift());i--;){h=a[++e];h.moveToBookmark(d.shift());n.setEnd(h.endContainer,h.endOffset)}}return n}}},createBookmarks:function(b){for(var c=[],d,e=0;e<this.length;e++){c.push(d=this[e].createBookmark(b,true));for(var g=e+1;g<this.length;g++){this[g]=a(d,this[g]);this[g]=a(d,this[g],true)}}return c},createBookmarks2:function(a){for(var c=\n[],d=0;d<this.length;d++)c.push(this[d].createBookmark2(a));return c},moveToBookmarks:function(a){for(var c=0;c<this.length;c++)this[c].moveToBookmark(a[c])}}})();\n(function(){function a(){return CKEDITOR.getUrl(CKEDITOR.skinName.split(\",\")[1]||\"skins/\"+CKEDITOR.skinName.split(\",\")[0]+\"/\")}function c(b){var c=CKEDITOR.skin[\"ua_\"+b],d=CKEDITOR.env;if(c)for(var c=c.split(\",\").sort(function(a,b){return a>b?-1:1}),e=0,f;e<c.length;e++){f=c[e];if(d.ie&&(f.replace(/^ie/,\"\")==d.version||d.quirks&&f==\"iequirks\"))f=\"ie\";if(d[f]){b=b+(\"_\"+c[e]);break}}return CKEDITOR.getUrl(a()+b+\".css\")}function b(a,b){if(!e[a]){CKEDITOR.document.appendStyleSheet(c(a));e[a]=1}b&&b()}\nfunction f(a){var b=a.getById(g);if(!b){b=a.getHead().append(\"style\");b.setAttribute(\"id\",g);b.setAttribute(\"type\",\"text/css\")}return b}function d(a,b,c){var d,e,f;if(CKEDITOR.env.webkit){b=b.split(\"}\").slice(0,-1);for(e=0;e<b.length;e++)b[e]=b[e].split(\"{\")}for(var g=0;g<a.length;g++)if(CKEDITOR.env.webkit)for(e=0;e<b.length;e++){f=b[e][1];for(d=0;d<c.length;d++)f=f.replace(c[d][0],c[d][1]);a[g].$.sheet.addRule(b[e][0],f)}else{f=b;for(d=0;d<c.length;d++)f=f.replace(c[d][0],c[d][1]);CKEDITOR.env.ie&&\nCKEDITOR.env.version<11?a[g].$.styleSheet.cssText=a[g].$.styleSheet.cssText+f:a[g].$.innerHTML=a[g].$.innerHTML+f}}var e={};CKEDITOR.skin={path:a,loadPart:function(c,d){CKEDITOR.skin.name!=CKEDITOR.skinName.split(\",\")[0]?CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(a()+\"skin.js\"),function(){b(c,d)}):b(c,d)},getPath:function(a){return CKEDITOR.getUrl(c(a))},icons:{},addIcon:function(a,b,c,d){a=a.toLowerCase();this.icons[a]||(this.icons[a]={path:b,offset:c||0,bgsize:d||\"16px\"})},getIconStyle:function(a,\nb,c,d,e){var f;if(a){a=a.toLowerCase();b&&(f=this.icons[a+\"-rtl\"]);f||(f=this.icons[a])}a=c||f&&f.path||\"\";d=d||f&&f.offset;e=e||f&&f.bgsize||\"16px\";return a&&\"background-image:url(\"+CKEDITOR.getUrl(a)+\");background-position:0 \"+d+\"px;background-size:\"+e+\";\"}};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{getUiColor:function(){return this.uiColor},setUiColor:function(a){var b=f(CKEDITOR.document);return(this.setUiColor=function(a){var c=CKEDITOR.skin.chameleon,e=[[h,a]];this.uiColor=a;d([b],c(this,\n\"editor\"),e);d(n,c(this,\"panel\"),e)}).call(this,a)}});var g=\"cke_ui_color\",n=[],h=/\\$color/g;CKEDITOR.on(\"instanceLoaded\",function(a){if(!CKEDITOR.env.ie||!CKEDITOR.env.quirks){var b=a.editor,a=function(a){a=(a.data[0]||a.data).element.getElementsByTag(\"iframe\").getItem(0).getFrameDocument();if(!a.getById(\"cke_ui_color\")){a=f(a);n.push(a);var c=b.getUiColor();c&&d([a],CKEDITOR.skin.chameleon(b,\"panel\"),[[h,c]])}};b.on(\"panelShow\",a);b.on(\"menuShow\",a);b.config.uiColor&&b.setUiColor(b.config.uiColor)}})})();\n(function(){if(CKEDITOR.env.webkit)CKEDITOR.env.hc=false;else{var a=CKEDITOR.dom.element.createFromHtml('<div style=\"width:0;height:0;position:absolute;left:-10000px;border:1px solid;border-color:red blue\"></div>',CKEDITOR.document);a.appendTo(CKEDITOR.document.getHead());try{var c=a.getComputedStyle(\"border-top-color\"),b=a.getComputedStyle(\"border-right-color\");CKEDITOR.env.hc=!!(c&&c==b)}catch(f){CKEDITOR.env.hc=false}a.remove()}if(CKEDITOR.env.hc)CKEDITOR.env.cssClass=CKEDITOR.env.cssClass+\" cke_hc\";\nCKEDITOR.document.appendStyleText(\".cke{visibility:hidden;}\");CKEDITOR.status=\"loaded\";CKEDITOR.fireOnce(\"loaded\");if(a=CKEDITOR._.pending){delete CKEDITOR._.pending;for(c=0;c<a.length;c++){CKEDITOR.editor.prototype.constructor.apply(a[c][0],a[c][1]);CKEDITOR.add(a[c][0])}}})();/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.skin.name=\"moono\";CKEDITOR.skin.ua_editor=\"ie,iequirks,ie7,ie8,gecko\";CKEDITOR.skin.ua_dialog=\"ie,iequirks,ie7,ie8\";\nCKEDITOR.skin.chameleon=function(){var b=function(){return function(b,e){for(var a=b.match(/[^#]./g),c=0;3>c;c++){var f=a,h=c,d;d=parseInt(a[c],16);d=(\"0\"+(0>e?0|d*(1+e):0|d+(255-d)*e).toString(16)).slice(-2);f[h]=d}return\"#\"+a.join(\"\")}}(),c=function(){var b=new CKEDITOR.template(\"background:#{to};background-image:-webkit-gradient(linear,lefttop,leftbottom,from({from}),to({to}));background-image:-moz-linear-gradient(top,{from},{to});background-image:-webkit-linear-gradient(top,{from},{to});background-image:-o-linear-gradient(top,{from},{to});background-image:-ms-linear-gradient(top,{from},{to});background-image:linear-gradient(top,{from},{to});filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='{from}',endColorstr='{to}');\");return function(c,\na){return b.output({from:c,to:a})}}(),f={editor:new CKEDITOR.template(\"{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ {defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_bottom [{defaultGradient}border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [{defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [{defaultGradient}outline-color:{defaultBorder};border-top-color:{defaultBorder};] {id} .cke_dialog_tab [{lightGradient}border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [{mediumGradient}] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} .cke_toolgroup [{lightGradient}border-color:{defaultBorder};] {id} a.cke_button_off:hover, {id} a.cke_button_off:focus, {id} a.cke_button_off:active [{mediumGradient}] {id} .cke_button_on [{ckeButtonOn}] {id} .cke_toolbar_separator [background-color: {ckeToolbarSeparator};] {id} .cke_combo_button [border-color:{defaultBorder};{lightGradient}] {id} a.cke_combo_button:hover, {id} a.cke_combo_button:focus, {id} .cke_combo_on a.cke_combo_button [border-color:{defaultBorder};{mediumGradient}] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover, {id} a.cke_path_item:focus, {id} a.cke_path_item:active [background-color:{elementsPathBg};] {id}.cke_panel [border-color:{defaultBorder};] \"),\npanel:new CKEDITOR.template(\".cke_panel_grouptitle [{lightGradient}border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:focus.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:focus.cke_colorauto, a:focus.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] \")};\nreturn function(g,e){var a=g.uiColor,a={id:\".\"+g.id,defaultBorder:b(a,-0.1),defaultGradient:c(b(a,0.9),a),lightGradient:c(b(a,1),b(a,0.7)),mediumGradient:c(b(a,0.8),b(a,0.5)),ckeButtonOn:c(b(a,0.6),b(a,0.7)),ckeResizer:b(a,-0.4),ckeToolbarSeparator:b(a,0.5),ckeColorauto:b(a,0.8),dialogBody:b(a,0.7),dialogTabSelected:c(\"#FFFFFF\",\"#FFFFFF\"),dialogTabSelectedBorder:\"#FFF\",elementsPathColor:b(a,-0.6),elementsPathBg:a,menubuttonIcon:b(a,0.5),menubuttonIconHover:b(a,0.3)};return f[e].output(a).replace(/\\[/g,\n\"{\").replace(/\\]/g,\"}\")}}();CKEDITOR.plugins.add(\"dialogui\",{onLoad:function(){var h=function(b){this._||(this._={});this._[\"default\"]=this._.initValue=b[\"default\"]||\"\";this._.required=b.required||!1;for(var a=[this._],d=1;d<arguments.length;d++)a.push(arguments[d]);a.push(!0);CKEDITOR.tools.extend.apply(CKEDITOR.tools,a);return this._},r={build:function(b,a,d){return new CKEDITOR.ui.dialog.textInput(b,a,d)}},l={build:function(b,a,d){return new CKEDITOR.ui.dialog[a.type](b,a,d)}},n={isChanged:function(){return this.getValue()!=\nthis.getInitValue()},reset:function(b){this.setValue(this.getInitValue(),b)},setInitValue:function(){this._.initValue=this.getValue()},resetInitValue:function(){this._.initValue=this._[\"default\"]},getInitValue:function(){return this._.initValue}},o=CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onChange:function(b,a){this._.domOnChangeRegistered||(b.on(\"load\",function(){this.getInputElement().on(\"change\",function(){b.parts.dialog.isVisible()&&this.fire(\"change\",{value:this.getValue()})},\nthis)},this),this._.domOnChangeRegistered=!0);this.on(\"change\",a)}},!0),s=/^on([A-Z]\\w+)/,p=function(b){for(var a in b)(s.test(a)||\"title\"==a||\"type\"==a)&&delete b[a];return b};CKEDITOR.tools.extend(CKEDITOR.ui.dialog,{labeledElement:function(b,a,d,f){if(!(4>arguments.length)){var c=h.call(this,a);c.labelId=CKEDITOR.tools.getNextId()+\"_label\";this._.children=[];var e={role:a.role||\"presentation\"};a.includeLabel&&(e[\"aria-labelledby\"]=c.labelId);CKEDITOR.ui.dialog.uiElement.call(this,b,a,d,\"div\",null,\ne,function(){var e=[],g=a.required?\" cke_required\":\"\";if(a.labelLayout!=\"horizontal\")e.push('<label class=\"cke_dialog_ui_labeled_label'+g+'\" ',' id=\"'+c.labelId+'\"',c.inputId?' for=\"'+c.inputId+'\"':\"\",(a.labelStyle?' style=\"'+a.labelStyle+'\"':\"\")+\">\",a.label,\"</label>\",'<div class=\"cke_dialog_ui_labeled_content\"',a.controlStyle?' style=\"'+a.controlStyle+'\"':\"\",' role=\"presentation\">',f.call(this,b,a),\"</div>\");else{g={type:\"hbox\",widths:a.widths,padding:0,children:[{type:\"html\",html:'<label class=\"cke_dialog_ui_labeled_label'+\ng+'\" id=\"'+c.labelId+'\" for=\"'+c.inputId+'\"'+(a.labelStyle?' style=\"'+a.labelStyle+'\"':\"\")+\">\"+CKEDITOR.tools.htmlEncode(a.label)+\"</span>\"},{type:\"html\",html:'<span class=\"cke_dialog_ui_labeled_content\"'+(a.controlStyle?' style=\"'+a.controlStyle+'\"':\"\")+\">\"+f.call(this,b,a)+\"</span>\"}]};CKEDITOR.dialog._.uiElementBuilders.hbox.build(b,g,e)}return e.join(\"\")})}},textInput:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);var f=this._.inputId=CKEDITOR.tools.getNextId()+\"_textInput\",c={\"class\":\"cke_dialog_ui_input_\"+\na.type,id:f,type:a.type};a.validate&&(this.validate=a.validate);a.maxLength&&(c.maxlength=a.maxLength);a.size&&(c.size=a.size);a.inputStyle&&(c.style=a.inputStyle);var e=this,k=!1;b.on(\"load\",function(){e.getInputElement().on(\"keydown\",function(a){a.data.getKeystroke()==13&&(k=true)});e.getInputElement().on(\"keyup\",function(a){if(a.data.getKeystroke()==13&&k){b.getButton(\"ok\")&&setTimeout(function(){b.getButton(\"ok\").click()},0);k=false}},null,null,1E3)});CKEDITOR.ui.dialog.labeledElement.call(this,\nb,a,d,function(){var b=['<div class=\"cke_dialog_ui_input_',a.type,'\" role=\"presentation\"'];a.width&&b.push('style=\"width:'+a.width+'\" ');b.push(\"><input \");c[\"aria-labelledby\"]=this._.labelId;this._.required&&(c[\"aria-required\"]=this._.required);for(var e in c)b.push(e+'=\"'+c[e]+'\" ');b.push(\" /></div>\");return b.join(\"\")})}},textarea:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);var f=this,c=this._.inputId=CKEDITOR.tools.getNextId()+\"_textarea\",e={};a.validate&&(this.validate=a.validate);\ne.rows=a.rows||5;e.cols=a.cols||20;e[\"class\"]=\"cke_dialog_ui_input_textarea \"+(a[\"class\"]||\"\");\"undefined\"!=typeof a.inputStyle&&(e.style=a.inputStyle);a.dir&&(e.dir=a.dir);CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){e[\"aria-labelledby\"]=this._.labelId;this._.required&&(e[\"aria-required\"]=this._.required);var a=['<div class=\"cke_dialog_ui_input_textarea\" role=\"presentation\"><textarea id=\"',c,'\" '],b;for(b in e)a.push(b+'=\"'+CKEDITOR.tools.htmlEncode(e[b])+'\" ');a.push(\">\",CKEDITOR.tools.htmlEncode(f._[\"default\"]),\n\"</textarea></div>\");return a.join(\"\")})}},checkbox:function(b,a,d){if(!(3>arguments.length)){var f=h.call(this,a,{\"default\":!!a[\"default\"]});a.validate&&(this.validate=a.validate);CKEDITOR.ui.dialog.uiElement.call(this,b,a,d,\"span\",null,null,function(){var c=CKEDITOR.tools.extend({},a,{id:a.id?a.id+\"_checkbox\":CKEDITOR.tools.getNextId()+\"_checkbox\"},true),e=[],d=CKEDITOR.tools.getNextId()+\"_label\",g={\"class\":\"cke_dialog_ui_checkbox_input\",type:\"checkbox\",\"aria-labelledby\":d};p(c);if(a[\"default\"])g.checked=\n\"checked\";if(typeof c.inputStyle!=\"undefined\")c.style=c.inputStyle;f.checkbox=new CKEDITOR.ui.dialog.uiElement(b,c,e,\"input\",null,g);e.push(' <label id=\"',d,'\" for=\"',g.id,'\"'+(a.labelStyle?' style=\"'+a.labelStyle+'\"':\"\")+\">\",CKEDITOR.tools.htmlEncode(a.label),\"</label>\");return e.join(\"\")})}},radio:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);this._[\"default\"]||(this._[\"default\"]=this._.initValue=a.items[0][1]);a.validate&&(this.validate=a.valdiate);var f=[],c=this;a.role=\"radiogroup\";\na.includeLabel=!0;CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){for(var e=[],d=[],g=(a.id?a.id:CKEDITOR.tools.getNextId())+\"_radio\",i=0;i<a.items.length;i++){var j=a.items[i],h=j[2]!==void 0?j[2]:j[0],l=j[1]!==void 0?j[1]:j[0],m=CKEDITOR.tools.getNextId()+\"_radio_input\",n=m+\"_label\",m=CKEDITOR.tools.extend({},a,{id:m,title:null,type:null},true),h=CKEDITOR.tools.extend({},m,{title:h},true),o={type:\"radio\",\"class\":\"cke_dialog_ui_radio_input\",name:g,value:l,\"aria-labelledby\":n},q=[];if(c._[\"default\"]==\nl)o.checked=\"checked\";p(m);p(h);if(typeof m.inputStyle!=\"undefined\")m.style=m.inputStyle;m.keyboardFocusable=true;f.push(new CKEDITOR.ui.dialog.uiElement(b,m,q,\"input\",null,o));q.push(\" \");new CKEDITOR.ui.dialog.uiElement(b,h,q,\"label\",null,{id:n,\"for\":o.id},j[0]);e.push(q.join(\"\"))}new CKEDITOR.ui.dialog.hbox(b,f,e,d);return d.join(\"\")});this._.children=f}},button:function(b,a,d){if(arguments.length){\"function\"==typeof a&&(a=a(b.getParentEditor()));h.call(this,a,{disabled:a.disabled||!1});CKEDITOR.event.implementOn(this);\nvar f=this;b.on(\"load\",function(){var a=this.getElement();(function(){a.on(\"click\",function(a){f.click();a.data.preventDefault()});a.on(\"keydown\",function(a){a.data.getKeystroke()in{32:1}&&(f.click(),a.data.preventDefault())})})();a.unselectable()},this);var c=CKEDITOR.tools.extend({},a);delete c.style;var e=CKEDITOR.tools.getNextId()+\"_label\";CKEDITOR.ui.dialog.uiElement.call(this,b,c,d,\"a\",null,{style:a.style,href:\"javascript:void(0)\",title:a.label,hidefocus:\"true\",\"class\":a[\"class\"],role:\"button\",\n\"aria-labelledby\":e},'<span id=\"'+e+'\" class=\"cke_dialog_ui_button\">'+CKEDITOR.tools.htmlEncode(a.label)+\"</span>\")}},select:function(b,a,d){if(!(3>arguments.length)){var f=h.call(this,a);a.validate&&(this.validate=a.validate);f.inputId=CKEDITOR.tools.getNextId()+\"_select\";CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){var c=CKEDITOR.tools.extend({},a,{id:a.id?a.id+\"_select\":CKEDITOR.tools.getNextId()+\"_select\"},true),e=[],d=[],g={id:f.inputId,\"class\":\"cke_dialog_ui_input_select\",\"aria-labelledby\":this._.labelId};\ne.push('<div class=\"cke_dialog_ui_input_',a.type,'\" role=\"presentation\"');a.width&&e.push('style=\"width:'+a.width+'\" ');e.push(\">\");if(a.size!=void 0)g.size=a.size;if(a.multiple!=void 0)g.multiple=a.multiple;p(c);for(var i=0,j;i<a.items.length&&(j=a.items[i]);i++)d.push('<option value=\"',CKEDITOR.tools.htmlEncode(j[1]!==void 0?j[1]:j[0]).replace(/\"/g,\"&quot;\"),'\" /> ',CKEDITOR.tools.htmlEncode(j[0]));if(typeof c.inputStyle!=\"undefined\")c.style=c.inputStyle;f.select=new CKEDITOR.ui.dialog.uiElement(b,\nc,e,\"select\",null,g,d.join(\"\"));e.push(\"</div>\");return e.join(\"\")})}},file:function(b,a,d){if(!(3>arguments.length)){void 0===a[\"default\"]&&(a[\"default\"]=\"\");var f=CKEDITOR.tools.extend(h.call(this,a),{definition:a,buttons:[]});a.validate&&(this.validate=a.validate);b.on(\"load\",function(){CKEDITOR.document.getById(f.frameId).getParent().addClass(\"cke_dialog_ui_input_file\")});CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){f.frameId=CKEDITOR.tools.getNextId()+\"_fileInput\";var b=['<iframe frameborder=\"0\" allowtransparency=\"0\" class=\"cke_dialog_ui_input_file\" role=\"presentation\" id=\"',\nf.frameId,'\" title=\"',a.label,'\" src=\"javascript:void('];b.push(CKEDITOR.env.ie?\"(function(){\"+encodeURIComponent(\"document.open();(\"+CKEDITOR.tools.fixDomain+\")();document.close();\")+\"})()\":\"0\");b.push(')\"></iframe>');return b.join(\"\")})}},fileButton:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);var f=this;a.validate&&(this.validate=a.validate);var c=CKEDITOR.tools.extend({},a),e=c.onClick;c.className=(c.className?c.className+\" \":\"\")+\"cke_dialog_ui_button\";c.onClick=function(c){var d=\na[\"for\"];if(!e||e.call(this,c)!==false){b.getContentElement(d[0],d[1]).submit();this.disable()}};b.on(\"load\",function(){b.getContentElement(a[\"for\"][0],a[\"for\"][1])._.buttons.push(f)});CKEDITOR.ui.dialog.button.call(this,b,c,d)}},html:function(){var b=/^\\s*<[\\w:]+\\s+([^>]*)?>/,a=/^(\\s*<[\\w:]+(?:\\s+[^>]*)?)((?:.|\\r|\\n)+)$/,d=/\\/$/;return function(f,c,e){if(!(3>arguments.length)){var k=[],g=c.html;\"<\"!=g.charAt(0)&&(g=\"<span>\"+g+\"</span>\");var i=c.focus;if(i){var j=this.focus;this.focus=function(){(\"function\"==\ntypeof i?i:j).call(this);this.fire(\"focus\")};c.isFocusable&&(this.isFocusable=this.isFocusable);this.keyboardFocusable=!0}CKEDITOR.ui.dialog.uiElement.call(this,f,c,k,\"span\",null,null,\"\");k=k.join(\"\").match(b);g=g.match(a)||[\"\",\"\",\"\"];d.test(g[1])&&(g[1]=g[1].slice(0,-1),g[2]=\"/\"+g[2]);e.push([g[1],\" \",k[1]||\"\",g[2]].join(\"\"))}}}(),fieldset:function(b,a,d,f,c){var e=c.label;this._={children:a};CKEDITOR.ui.dialog.uiElement.call(this,b,c,f,\"fieldset\",null,null,function(){var a=[];e&&a.push(\"<legend\"+\n(c.labelStyle?' style=\"'+c.labelStyle+'\"':\"\")+\">\"+e+\"</legend>\");for(var b=0;b<d.length;b++)a.push(d[b]);return a.join(\"\")})}},!0);CKEDITOR.ui.dialog.html.prototype=new CKEDITOR.ui.dialog.uiElement;CKEDITOR.ui.dialog.labeledElement.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{setLabel:function(b){var a=CKEDITOR.document.getById(this._.labelId);1>a.getChildCount()?(new CKEDITOR.dom.text(b,CKEDITOR.document)).appendTo(a):a.getChild(0).$.nodeValue=b;return this},getLabel:function(){var b=\nCKEDITOR.document.getById(this._.labelId);return!b||1>b.getChildCount()?\"\":b.getChild(0).getText()},eventProcessors:o},!0);CKEDITOR.ui.dialog.button.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{click:function(){return!this._.disabled?this.fire(\"click\",{dialog:this._.dialog}):!1},enable:function(){this._.disabled=!1;var b=this.getElement();b&&b.removeClass(\"cke_disabled\")},disable:function(){this._.disabled=!0;this.getElement().addClass(\"cke_disabled\")},isVisible:function(){return this.getElement().getFirst().isVisible()},\nisEnabled:function(){return!this._.disabled},eventProcessors:CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onClick:function(b,a){this.on(\"click\",function(){a.apply(this,arguments)})}},!0),accessKeyUp:function(){this.click()},accessKeyDown:function(){this.focus()},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.textInput.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return CKEDITOR.document.getById(this._.inputId)},\nfocus:function(){var b=this.selectParentTab();setTimeout(function(){var a=b.getInputElement();a&&a.$.focus()},0)},select:function(){var b=this.selectParentTab();setTimeout(function(){var a=b.getInputElement();a&&(a.$.focus(),a.$.select())},0)},accessKeyUp:function(){this.select()},setValue:function(b){!b&&(b=\"\");return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply(this,arguments)},keyboardFocusable:!0},n,!0);CKEDITOR.ui.dialog.textarea.prototype=new CKEDITOR.ui.dialog.textInput;CKEDITOR.ui.dialog.select.prototype=\nCKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return this._.select.getElement()},add:function(b,a,d){var f=new CKEDITOR.dom.element(\"option\",this.getDialog().getParentEditor().document),c=this.getInputElement().$;f.$.text=b;f.$.value=void 0===a||null===a?b:a;void 0===d||null===d?CKEDITOR.env.ie?c.add(f.$):c.add(f.$,null):c.add(f.$,d);return this},remove:function(b){this.getInputElement().$.remove(b);return this},clear:function(){for(var b=this.getInputElement().$;0<\nb.length;)b.remove(0);return this},keyboardFocusable:!0},n,!0);CKEDITOR.ui.dialog.checkbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getInputElement:function(){return this._.checkbox.getElement()},setValue:function(b,a){this.getInputElement().$.checked=b;!a&&this.fire(\"change\",{value:b})},getValue:function(){return this.getInputElement().$.checked},accessKeyUp:function(){this.setValue(!this.getValue())},eventProcessors:{onChange:function(b,a){if(!CKEDITOR.env.ie||8<CKEDITOR.env.version)return o.onChange.apply(this,\narguments);b.on(\"load\",function(){var a=this._.checkbox.getElement();a.on(\"propertychange\",function(b){b=b.data.$;\"checked\"==b.propertyName&&this.fire(\"change\",{value:a.$.checked})},this)},this);this.on(\"change\",a);return null}},keyboardFocusable:!0},n,!0);CKEDITOR.ui.dialog.radio.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{setValue:function(b,a){for(var d=this._.children,f,c=0;c<d.length&&(f=d[c]);c++)f.getElement().$.checked=f.getValue()==b;!a&&this.fire(\"change\",{value:b})},\ngetValue:function(){for(var b=this._.children,a=0;a<b.length;a++)if(b[a].getElement().$.checked)return b[a].getValue();return null},accessKeyUp:function(){var b=this._.children,a;for(a=0;a<b.length;a++)if(b[a].getElement().$.checked){b[a].getElement().focus();return}b[0].getElement().focus()},eventProcessors:{onChange:function(b,a){if(CKEDITOR.env.ie)b.on(\"load\",function(){for(var a=this._.children,b=this,c=0;c<a.length;c++)a[c].getElement().on(\"propertychange\",function(a){a=a.data.$;\"checked\"==a.propertyName&&\nthis.$.checked&&b.fire(\"change\",{value:this.getAttribute(\"value\")})})},this),this.on(\"change\",a);else return o.onChange.apply(this,arguments);return null}}},n,!0);CKEDITOR.ui.dialog.file.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,n,{getInputElement:function(){var b=CKEDITOR.document.getById(this._.frameId).getFrameDocument();return 0<b.$.forms.length?new CKEDITOR.dom.element(b.$.forms[0].elements[0]):this.getElement()},submit:function(){this.getInputElement().getParent().$.submit();\nreturn this},getAction:function(){return this.getInputElement().getParent().$.action},registerEvents:function(b){var a=/^on([A-Z]\\w+)/,d,f=function(a,b,c,d){a.on(\"formLoaded\",function(){a.getInputElement().on(c,d,a)})},c;for(c in b)if(d=c.match(a))this.eventProcessors[c]?this.eventProcessors[c].call(this,this._.dialog,b[c]):f(this,this._.dialog,d[1].toLowerCase(),b[c]);return this},reset:function(){function b(){d.$.open();var b=\"\";f.size&&(b=f.size-(CKEDITOR.env.ie?7:0));var h=a.frameId+\"_input\";\nd.$.write(['<html dir=\"'+g+'\" lang=\"'+i+'\"><head><title></title></head><body style=\"margin: 0; overflow: hidden; background: transparent;\">','<form enctype=\"multipart/form-data\" method=\"POST\" dir=\"'+g+'\" lang=\"'+i+'\" action=\"',CKEDITOR.tools.htmlEncode(f.action),'\"><label id=\"',a.labelId,'\" for=\"',h,'\" style=\"display:none\">',CKEDITOR.tools.htmlEncode(f.label),'</label><input style=\"width:100%\" id=\"',h,'\" aria-labelledby=\"',a.labelId,'\" type=\"file\" name=\"',CKEDITOR.tools.htmlEncode(f.id||\"cke_upload\"),\n'\" size=\"',CKEDITOR.tools.htmlEncode(0<b?b:\"\"),'\" /></form></body></html><script>',CKEDITOR.env.ie?\"(\"+CKEDITOR.tools.fixDomain+\")();\":\"\",\"window.parent.CKEDITOR.tools.callFunction(\"+e+\");\",\"window.onbeforeunload = function() {window.parent.CKEDITOR.tools.callFunction(\"+k+\")}\",\"<\\/script>\"].join(\"\"));d.$.close();for(b=0;b<c.length;b++)c[b].enable()}var a=this._,d=CKEDITOR.document.getById(a.frameId).getFrameDocument(),f=a.definition,c=a.buttons,e=this.formLoadedNumber,k=this.formUnloadNumber,g=a.dialog._.editor.lang.dir,\ni=a.dialog._.editor.langCode;e||(e=this.formLoadedNumber=CKEDITOR.tools.addFunction(function(){this.fire(\"formLoaded\")},this),k=this.formUnloadNumber=CKEDITOR.tools.addFunction(function(){this.getInputElement().clearCustomData()},this),this.getDialog()._.editor.on(\"destroy\",function(){CKEDITOR.tools.removeFunction(e);CKEDITOR.tools.removeFunction(k)}));CKEDITOR.env.gecko?setTimeout(b,500):b()},getValue:function(){return this.getInputElement().$.value||\"\"},setInitValue:function(){this._.initValue=\n\"\"},eventProcessors:{onChange:function(b,a){this._.domOnChangeRegistered||(this.on(\"formLoaded\",function(){this.getInputElement().on(\"change\",function(){this.fire(\"change\",{value:this.getValue()})},this)},this),this._.domOnChangeRegistered=!0);this.on(\"change\",a)}},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.fileButton.prototype=new CKEDITOR.ui.dialog.button;CKEDITOR.ui.dialog.fieldset.prototype=CKEDITOR.tools.clone(CKEDITOR.ui.dialog.hbox.prototype);CKEDITOR.dialog.addUIElement(\"text\",r);CKEDITOR.dialog.addUIElement(\"password\",\nr);CKEDITOR.dialog.addUIElement(\"textarea\",l);CKEDITOR.dialog.addUIElement(\"checkbox\",l);CKEDITOR.dialog.addUIElement(\"radio\",l);CKEDITOR.dialog.addUIElement(\"button\",l);CKEDITOR.dialog.addUIElement(\"select\",l);CKEDITOR.dialog.addUIElement(\"file\",l);CKEDITOR.dialog.addUIElement(\"fileButton\",l);CKEDITOR.dialog.addUIElement(\"html\",l);CKEDITOR.dialog.addUIElement(\"fieldset\",{build:function(b,a,d){for(var f=a.children,c,e=[],h=[],g=0;g<f.length&&(c=f[g]);g++){var i=[];e.push(i);h.push(CKEDITOR.dialog._.uiElementBuilders[c.type].build(b,\nc,i))}return new CKEDITOR.ui.dialog[a.type](b,h,e,d,a)}})}});CKEDITOR.DIALOG_RESIZE_NONE=0;CKEDITOR.DIALOG_RESIZE_WIDTH=1;CKEDITOR.DIALOG_RESIZE_HEIGHT=2;CKEDITOR.DIALOG_RESIZE_BOTH=3;\n(function(){function t(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId)+a,c=b-1;c>b-a;c--)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function u(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId),c=b+1;c<b+a;c++)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function G(a,b){for(var c=a.$.getElementsByTagName(\"input\"),\ne=0,d=c.length;e<d;e++){var g=new CKEDITOR.dom.element(c[e]);\"text\"==g.getAttribute(\"type\").toLowerCase()&&(b?(g.setAttribute(\"value\",g.getCustomData(\"fake_value\")||\"\"),g.removeCustomData(\"fake_value\")):(g.setCustomData(\"fake_value\",g.getAttribute(\"value\")),g.setAttribute(\"value\",\"\")))}}function P(a,b){var c=this.getInputElement();c&&(a?c.removeAttribute(\"aria-invalid\"):c.setAttribute(\"aria-invalid\",!0));a||(this.select?this.select():this.focus());b&&alert(b);this.fire(\"validated\",{valid:a,msg:b})}\nfunction Q(){var a=this.getInputElement();a&&a.removeAttribute(\"aria-invalid\")}function R(a){var a=CKEDITOR.dom.element.createFromHtml(CKEDITOR.addTemplate(\"dialog\",S).output({id:CKEDITOR.tools.getNextNumber(),editorId:a.id,langDir:a.lang.dir,langCode:a.langCode,editorDialogClass:\"cke_editor_\"+a.name.replace(/\\./g,\"\\\\.\")+\"_dialog\",closeTitle:a.lang.common.close,hidpi:CKEDITOR.env.hidpi?\"cke_hidpi\":\"\"})),b=a.getChild([0,0,0,0,0]),c=b.getChild(0),e=b.getChild(1);if(CKEDITOR.env.ie&&!CKEDITOR.env.quirks){var d=\n\"javascript:void(function(){\"+encodeURIComponent(\"document.open();(\"+CKEDITOR.tools.fixDomain+\")();document.close();\")+\"}())\";CKEDITOR.dom.element.createFromHtml('<iframe frameBorder=\"0\" class=\"cke_iframe_shim\" src=\"'+d+'\" tabIndex=\"-1\"></iframe>').appendTo(b.getParent())}c.unselectable();e.unselectable();return{element:a,parts:{dialog:a.getChild(0),title:c,close:e,tabs:b.getChild(2),contents:b.getChild([3,0,0,0]),footer:b.getChild([3,0,1,0])}}}function H(a,b,c){this.element=b;this.focusIndex=c;this.tabIndex=\n0;this.isFocusable=function(){return!b.getAttribute(\"disabled\")&&b.isVisible()};this.focus=function(){a._.currentFocusIndex=this.focusIndex;this.element.focus()};b.on(\"keydown\",function(a){a.data.getKeystroke()in{32:1,13:1}&&this.fire(\"click\")});b.on(\"focus\",function(){this.fire(\"mouseover\")});b.on(\"blur\",function(){this.fire(\"mouseout\")})}function T(a){function b(){a.layout()}var c=CKEDITOR.document.getWindow();c.on(\"resize\",b);a.on(\"hide\",function(){c.removeListener(\"resize\",b)})}function I(a,b){this._=\n{dialog:a};CKEDITOR.tools.extend(this,b)}function U(a){function b(b){var c=a.getSize(),i=CKEDITOR.document.getWindow().getViewPaneSize(),o=b.data.$.screenX,j=b.data.$.screenY,n=o-e.x,l=j-e.y;e={x:o,y:j};d.x+=n;d.y+=l;a.move(d.x+h[3]<f?-h[3]:d.x-h[1]>i.width-c.width-f?i.width-c.width+(\"rtl\"==g.lang.dir?0:h[1]):d.x,d.y+h[0]<f?-h[0]:d.y-h[2]>i.height-c.height-f?i.height-c.height+h[2]:d.y,1);b.data.preventDefault()}function c(){CKEDITOR.document.removeListener(\"mousemove\",b);CKEDITOR.document.removeListener(\"mouseup\",\nc);if(CKEDITOR.env.ie6Compat){var a=q.getChild(0).getFrameDocument();a.removeListener(\"mousemove\",b);a.removeListener(\"mouseup\",c)}}var e=null,d=null;a.getElement().getFirst();var g=a.getParentEditor(),f=g.config.dialog_magnetDistance,h=CKEDITOR.skin.margins||[0,0,0,0];\"undefined\"==typeof f&&(f=20);a.parts.title.on(\"mousedown\",function(f){e={x:f.data.$.screenX,y:f.data.$.screenY};CKEDITOR.document.on(\"mousemove\",b);CKEDITOR.document.on(\"mouseup\",c);d=a.getPosition();if(CKEDITOR.env.ie6Compat){var h=\nq.getChild(0).getFrameDocument();h.on(\"mousemove\",b);h.on(\"mouseup\",c)}f.data.preventDefault()},a)}function V(a){var b,c;function e(d){var e=\"rtl\"==h.lang.dir,j=o.width,C=o.height,D=j+(d.data.$.screenX-b)*(e?-1:1)*(a._.moved?1:2),n=C+(d.data.$.screenY-c)*(a._.moved?1:2),x=a._.element.getFirst(),x=e&&x.getComputedStyle(\"right\"),y=a.getPosition();y.y+n>i.height&&(n=i.height-y.y);if((e?x:y.x)+D>i.width)D=i.width-(e?x:y.x);if(f==CKEDITOR.DIALOG_RESIZE_WIDTH||f==CKEDITOR.DIALOG_RESIZE_BOTH)j=Math.max(g.minWidth||\n0,D-m);if(f==CKEDITOR.DIALOG_RESIZE_HEIGHT||f==CKEDITOR.DIALOG_RESIZE_BOTH)C=Math.max(g.minHeight||0,n-k);a.resize(j,C);a._.moved||a.layout();d.data.preventDefault()}function d(){CKEDITOR.document.removeListener(\"mouseup\",d);CKEDITOR.document.removeListener(\"mousemove\",e);j&&(j.remove(),j=null);if(CKEDITOR.env.ie6Compat){var a=q.getChild(0).getFrameDocument();a.removeListener(\"mouseup\",d);a.removeListener(\"mousemove\",e)}}var g=a.definition,f=g.resizable;if(f!=CKEDITOR.DIALOG_RESIZE_NONE){var h=a.getParentEditor(),\nm,k,i,o,j,n=CKEDITOR.tools.addFunction(function(f){o=a.getSize();var h=a.parts.contents;h.$.getElementsByTagName(\"iframe\").length&&(j=CKEDITOR.dom.element.createFromHtml('<div class=\"cke_dialog_resize_cover\" style=\"height: 100%; position: absolute; width: 100%;\"></div>'),h.append(j));k=o.height-a.parts.contents.getSize(\"height\",!(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.quirks));m=o.width-a.parts.contents.getSize(\"width\",1);b=f.screenX;c=f.screenY;i=CKEDITOR.document.getWindow().getViewPaneSize();\nCKEDITOR.document.on(\"mousemove\",e);CKEDITOR.document.on(\"mouseup\",d);CKEDITOR.env.ie6Compat&&(h=q.getChild(0).getFrameDocument(),h.on(\"mousemove\",e),h.on(\"mouseup\",d));f.preventDefault&&f.preventDefault()});a.on(\"load\",function(){var b=\"\";f==CKEDITOR.DIALOG_RESIZE_WIDTH?b=\" cke_resizer_horizontal\":f==CKEDITOR.DIALOG_RESIZE_HEIGHT&&(b=\" cke_resizer_vertical\");b=CKEDITOR.dom.element.createFromHtml('<div class=\"cke_resizer'+b+\" cke_resizer_\"+h.lang.dir+'\" title=\"'+CKEDITOR.tools.htmlEncode(h.lang.common.resize)+\n'\" onmousedown=\"CKEDITOR.tools.callFunction('+n+', event )\">'+(\"ltr\"==h.lang.dir?\"◢\":\"◣\")+\"</div>\");a.parts.footer.append(b,1)});h.on(\"destroy\",function(){CKEDITOR.tools.removeFunction(n)})}}function E(a){a.data.preventDefault(1)}function J(a){var b=CKEDITOR.document.getWindow(),c=a.config,e=c.dialog_backgroundCoverColor||\"white\",d=c.dialog_backgroundCoverOpacity,g=c.baseFloatZIndex,c=CKEDITOR.tools.genKey(e,d,g),f=w[c];f?f.show():(g=['<div tabIndex=\"-1\" style=\"position: ',CKEDITOR.env.ie6Compat?\n\"absolute\":\"fixed\",\"; z-index: \",g,\"; top: 0px; left: 0px; \",!CKEDITOR.env.ie6Compat?\"background-color: \"+e:\"\",'\" class=\"cke_dialog_background_cover\">'],CKEDITOR.env.ie6Compat&&(e=\"<html><body style=\\\\'background-color:\"+e+\";\\\\'></body></html>\",g.push('<iframe hidefocus=\"true\" frameborder=\"0\" id=\"cke_dialog_background_iframe\" src=\"javascript:'),g.push(\"void((function(){\"+encodeURIComponent(\"document.open();(\"+CKEDITOR.tools.fixDomain+\")();document.write( '\"+e+\"' );document.close();\")+\"})())\"),g.push('\" style=\"position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0)\"></iframe>')),\ng.push(\"</div>\"),f=CKEDITOR.dom.element.createFromHtml(g.join(\"\")),f.setOpacity(void 0!=d?d:0.5),f.on(\"keydown\",E),f.on(\"keypress\",E),f.on(\"keyup\",E),f.appendTo(CKEDITOR.document.getBody()),w[c]=f);a.focusManager.add(f);q=f;var a=function(){var a=b.getViewPaneSize();f.setStyles({width:a.width+\"px\",height:a.height+\"px\"})},h=function(){var a=b.getScrollPosition(),c=CKEDITOR.dialog._.currentTop;f.setStyles({left:a.x+\"px\",top:a.y+\"px\"});if(c){do{a=c.getPosition();c.move(a.x,a.y)}while(c=c._.parentDialog)\n}};F=a;b.on(\"resize\",a);a();(!CKEDITOR.env.mac||!CKEDITOR.env.webkit)&&f.focus();if(CKEDITOR.env.ie6Compat){var m=function(){h();arguments.callee.prevScrollHandler.apply(this,arguments)};b.$.setTimeout(function(){m.prevScrollHandler=window.onscroll||function(){};window.onscroll=m},0);h()}}function K(a){q&&(a.focusManager.remove(q),a=CKEDITOR.document.getWindow(),q.hide(),a.removeListener(\"resize\",F),CKEDITOR.env.ie6Compat&&a.$.setTimeout(function(){window.onscroll=window.onscroll&&window.onscroll.prevScrollHandler||\nnull},0),F=null)}var r=CKEDITOR.tools.cssLength,S='<div class=\"cke_reset_all {editorId} {editorDialogClass} {hidpi}\" dir=\"{langDir}\" lang=\"{langCode}\" role=\"dialog\" aria-labelledby=\"cke_dialog_title_{id}\"><table class=\"cke_dialog '+CKEDITOR.env.cssClass+' cke_{langDir}\" style=\"position:absolute\" role=\"presentation\"><tr><td role=\"presentation\"><div class=\"cke_dialog_body\" role=\"presentation\"><div id=\"cke_dialog_title_{id}\" class=\"cke_dialog_title\" role=\"presentation\"></div><a id=\"cke_dialog_close_button_{id}\" class=\"cke_dialog_close_button\" href=\"javascript:void(0)\" title=\"{closeTitle}\" role=\"button\"><span class=\"cke_label\">X</span></a><div id=\"cke_dialog_tabs_{id}\" class=\"cke_dialog_tabs\" role=\"tablist\"></div><table class=\"cke_dialog_contents\" role=\"presentation\"><tr><td id=\"cke_dialog_contents_{id}\" class=\"cke_dialog_contents_body\" role=\"presentation\"></td></tr><tr><td id=\"cke_dialog_footer_{id}\" class=\"cke_dialog_footer\" role=\"presentation\"></td></tr></table></div></td></tr></table></div>';\nCKEDITOR.dialog=function(a,b){function c(){var a=l._.focusList;a.sort(function(a,b){return a.tabIndex!=b.tabIndex?b.tabIndex-a.tabIndex:a.focusIndex-b.focusIndex});for(var b=a.length,c=0;c<b;c++)a[c].focusIndex=c}function e(a){var b=l._.focusList,a=a||0;if(!(1>b.length)){var c=l._.currentFocusIndex;try{b[c].getInputElement().$.blur()}catch(f){}for(var d=c=(c+a+b.length)%b.length;a&&!b[d].isFocusable()&&!(d=(d+a+b.length)%b.length,d==c););b[d].focus();\"text\"==b[d].type&&b[d].select()}}function d(b){if(l==\nCKEDITOR.dialog._.currentTop){var c=b.data.getKeystroke(),d=\"rtl\"==a.lang.dir;o=j=0;if(9==c||c==CKEDITOR.SHIFT+9)c=c==CKEDITOR.SHIFT+9,l._.tabBarMode?(c=c?t.call(l):u.call(l),l.selectPage(c),l._.tabs[c][0].focus()):e(c?-1:1),o=1;else if(c==CKEDITOR.ALT+121&&!l._.tabBarMode&&1<l.getPageCount())l._.tabBarMode=!0,l._.tabs[l._.currentTabId][0].focus(),o=1;else if((37==c||39==c)&&l._.tabBarMode)c=c==(d?39:37)?t.call(l):u.call(l),l.selectPage(c),l._.tabs[c][0].focus(),o=1;else if((13==c||32==c)&&l._.tabBarMode)this.selectPage(this._.currentTabId),\nthis._.tabBarMode=!1,this._.currentFocusIndex=-1,e(1),o=1;else if(13==c){c=b.data.getTarget();if(!c.is(\"a\",\"button\",\"select\",\"textarea\")&&(!c.is(\"input\")||\"button\"!=c.$.type))(c=this.getButton(\"ok\"))&&CKEDITOR.tools.setTimeout(c.click,0,c),o=1;j=1}else if(27==c)(c=this.getButton(\"cancel\"))?CKEDITOR.tools.setTimeout(c.click,0,c):!1!==this.fire(\"cancel\",{hide:!0}).hide&&this.hide(),j=1;else return;g(b)}}function g(a){o?a.data.preventDefault(1):j&&a.data.stopPropagation()}var f=CKEDITOR.dialog._.dialogDefinitions[b],\nh=CKEDITOR.tools.clone(W),m=a.config.dialog_buttonsOrder||\"OS\",k=a.lang.dir,i={},o,j;(\"OS\"==m&&CKEDITOR.env.mac||\"rtl\"==m&&\"ltr\"==k||\"ltr\"==m&&\"rtl\"==k)&&h.buttons.reverse();f=CKEDITOR.tools.extend(f(a),h);f=CKEDITOR.tools.clone(f);f=new L(this,f);h=R(a);this._={editor:a,element:h.element,name:b,contentSize:{width:0,height:0},size:{width:0,height:0},contents:{},buttons:{},accessKeyMap:{},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:!1,focusList:[],\ncurrentFocusIndex:0,hasFocus:!1};this.parts=h.parts;CKEDITOR.tools.setTimeout(function(){a.fire(\"ariaWidget\",this.parts.contents)},0,this);h={position:CKEDITOR.env.ie6Compat?\"absolute\":\"fixed\",top:0,visibility:\"hidden\"};h[\"rtl\"==k?\"right\":\"left\"]=0;this.parts.dialog.setStyles(h);CKEDITOR.event.call(this);this.definition=f=CKEDITOR.fire(\"dialogDefinition\",{name:b,definition:f},a).definition;if(!(\"removeDialogTabs\"in a._)&&a.config.removeDialogTabs){h=a.config.removeDialogTabs.split(\";\");for(k=0;k<\nh.length;k++)if(m=h[k].split(\":\"),2==m.length){var n=m[0];i[n]||(i[n]=[]);i[n].push(m[1])}a._.removeDialogTabs=i}if(a._.removeDialogTabs&&(i=a._.removeDialogTabs[b]))for(k=0;k<i.length;k++)f.removeContents(i[k]);if(f.onLoad)this.on(\"load\",f.onLoad);if(f.onShow)this.on(\"show\",f.onShow);if(f.onHide)this.on(\"hide\",f.onHide);if(f.onOk)this.on(\"ok\",function(b){a.fire(\"saveSnapshot\");setTimeout(function(){a.fire(\"saveSnapshot\")},0);!1===f.onOk.call(this,b)&&(b.data.hide=!1)});if(f.onCancel)this.on(\"cancel\",\nfunction(a){!1===f.onCancel.call(this,a)&&(a.data.hide=!1)});var l=this,p=function(a){var b=l._.contents,c=!1,d;for(d in b)for(var f in b[d])if(c=a.call(this,b[d][f]))return};this.on(\"ok\",function(a){p(function(b){if(b.validate){var c=b.validate(this),d=\"string\"==typeof c||!1===c;d&&(a.data.hide=!1,a.stop());P.call(b,!d,\"string\"==typeof c?c:void 0);return d}})},this,null,0);this.on(\"cancel\",function(b){p(function(c){if(c.isChanged())return!a.config.dialog_noConfirmCancel&&!confirm(a.lang.common.confirmCancel)&&\n(b.data.hide=!1),!0})},this,null,0);this.parts.close.on(\"click\",function(a){!1!==this.fire(\"cancel\",{hide:!0}).hide&&this.hide();a.data.preventDefault()},this);this.changeFocus=e;var v=this._.element;a.focusManager.add(v,1);this.on(\"show\",function(){v.on(\"keydown\",d,this);if(CKEDITOR.env.gecko)v.on(\"keypress\",g,this)});this.on(\"hide\",function(){v.removeListener(\"keydown\",d);CKEDITOR.env.gecko&&v.removeListener(\"keypress\",g);p(function(a){Q.apply(a)})});this.on(\"iframeAdded\",function(a){(new CKEDITOR.dom.document(a.data.iframe.$.contentWindow.document)).on(\"keydown\",\nd,this,null,0)});this.on(\"show\",function(){c();if(a.config.dialog_startupFocusTab&&1<l._.pageCount)l._.tabBarMode=!0,l._.tabs[l._.currentTabId][0].focus();else if(!this._.hasFocus)if(this._.currentFocusIndex=-1,f.onFocus){var b=f.onFocus.call(this);b&&b.focus()}else e(1)},this,null,4294967295);if(CKEDITOR.env.ie6Compat)this.on(\"load\",function(){var a=this.getElement(),b=a.getFirst();b.remove();b.appendTo(a)},this);U(this);V(this);(new CKEDITOR.dom.text(f.title,CKEDITOR.document)).appendTo(this.parts.title);\nfor(k=0;k<f.contents.length;k++)(i=f.contents[k])&&this.addPage(i);this.parts.tabs.on(\"click\",function(a){var b=a.data.getTarget();b.hasClass(\"cke_dialog_tab\")&&(b=b.$.id,this.selectPage(b.substring(4,b.lastIndexOf(\"_\"))),this._.tabBarMode&&(this._.tabBarMode=!1,this._.currentFocusIndex=-1,e(1)),a.data.preventDefault())},this);k=[];i=CKEDITOR.dialog._.uiElementBuilders.hbox.build(this,{type:\"hbox\",className:\"cke_dialog_footer_buttons\",widths:[],children:f.buttons},k).getChild();this.parts.footer.setHtml(k.join(\"\"));\nfor(k=0;k<i.length;k++)this._.buttons[i[k].id]=i[k]};CKEDITOR.dialog.prototype={destroy:function(){this.hide();this._.element.remove()},resize:function(){return function(a,b){if(!this._.contentSize||!(this._.contentSize.width==a&&this._.contentSize.height==b))CKEDITOR.dialog.fire(\"resize\",{dialog:this,width:a,height:b},this._.editor),this.fire(\"resize\",{width:a,height:b},this._.editor),this.parts.contents.setStyles({width:a+\"px\",height:b+\"px\"}),\"rtl\"==this._.editor.lang.dir&&this._.position&&(this._.position.x=\nCKEDITOR.document.getWindow().getViewPaneSize().width-this._.contentSize.width-parseInt(this._.element.getFirst().getStyle(\"right\"),10)),this._.contentSize={width:a,height:b}}}(),getSize:function(){var a=this._.element.getFirst();return{width:a.$.offsetWidth||0,height:a.$.offsetHeight||0}},move:function(a,b,c){var e=this._.element.getFirst(),d=\"rtl\"==this._.editor.lang.dir,g=\"fixed\"==e.getComputedStyle(\"position\");CKEDITOR.env.ie&&e.setStyle(\"zoom\",\"100%\");if(!g||!this._.position||!(this._.position.x==\na&&this._.position.y==b))this._.position={x:a,y:b},g||(g=CKEDITOR.document.getWindow().getScrollPosition(),a+=g.x,b+=g.y),d&&(g=this.getSize(),a=CKEDITOR.document.getWindow().getViewPaneSize().width-g.width-a),b={top:(0<b?b:0)+\"px\"},b[d?\"right\":\"left\"]=(0<a?a:0)+\"px\",e.setStyles(b),c&&(this._.moved=1)},getPosition:function(){return CKEDITOR.tools.extend({},this._.position)},show:function(){var a=this._.element,b=this.definition;!a.getParent()||!a.getParent().equals(CKEDITOR.document.getBody())?a.appendTo(CKEDITOR.document.getBody()):\na.setStyle(\"display\",\"block\");this.resize(this._.contentSize&&this._.contentSize.width||b.width||b.minWidth,this._.contentSize&&this._.contentSize.height||b.height||b.minHeight);this.reset();this.selectPage(this.definition.contents[0].id);null===CKEDITOR.dialog._.currentZIndex&&(CKEDITOR.dialog._.currentZIndex=this._.editor.config.baseFloatZIndex);this._.element.getFirst().setStyle(\"z-index\",CKEDITOR.dialog._.currentZIndex+=10);null===CKEDITOR.dialog._.currentTop?(CKEDITOR.dialog._.currentTop=this,\nthis._.parentDialog=null,J(this._.editor)):(this._.parentDialog=CKEDITOR.dialog._.currentTop,this._.parentDialog.getElement().getFirst().$.style.zIndex-=Math.floor(this._.editor.config.baseFloatZIndex/2),CKEDITOR.dialog._.currentTop=this);a.on(\"keydown\",M);a.on(\"keyup\",N);this._.hasFocus=!1;for(var c in b.contents)if(b.contents[c]){var a=b.contents[c],e=this._.tabs[a.id],d=a.requiredContent,g=0;if(e){for(var f in this._.contents[a.id]){var h=this._.contents[a.id][f];\"hbox\"==h.type||(\"vbox\"==h.type||\n!h.getInputElement())||(h.requiredContent&&!this._.editor.activeFilter.check(h.requiredContent)?h.disable():(h.enable(),g++))}!g||d&&!this._.editor.activeFilter.check(d)?e[0].addClass(\"cke_dialog_tab_disabled\"):e[0].removeClass(\"cke_dialog_tab_disabled\")}}CKEDITOR.tools.setTimeout(function(){this.layout();T(this);this.parts.dialog.setStyle(\"visibility\",\"\");this.fireOnce(\"load\",{});CKEDITOR.ui.fire(\"ready\",this);this.fire(\"show\",{});this._.editor.fire(\"dialogShow\",this);this._.parentDialog||this._.editor.focusManager.lock();\nthis.foreach(function(a){a.setInitValue&&a.setInitValue()})},100,this)},layout:function(){var a=this.parts.dialog,b=this.getSize(),c=CKEDITOR.document.getWindow().getViewPaneSize(),e=(c.width-b.width)/2,d=(c.height-b.height)/2;CKEDITOR.env.ie6Compat||(b.height+(0<d?d:0)>c.height||b.width+(0<e?e:0)>c.width?a.setStyle(\"position\",\"absolute\"):a.setStyle(\"position\",\"fixed\"));this.move(this._.moved?this._.position.x:e,this._.moved?this._.position.y:d)},foreach:function(a){for(var b in this._.contents)for(var c in this._.contents[b])a.call(this,\nthis._.contents[b][c]);return this},reset:function(){var a=function(a){a.reset&&a.reset(1)};return function(){this.foreach(a);return this}}(),setupContent:function(){var a=arguments;this.foreach(function(b){b.setup&&b.setup.apply(b,a)})},commitContent:function(){var a=arguments;this.foreach(function(b){CKEDITOR.env.ie&&this._.currentFocusIndex==b.focusIndex&&b.getInputElement().$.blur();b.commit&&b.commit.apply(b,a)})},hide:function(){if(this.parts.dialog.isVisible()){this.fire(\"hide\",{});this._.editor.fire(\"dialogHide\",\nthis);this.selectPage(this._.tabIdList[0]);var a=this._.element;a.setStyle(\"display\",\"none\");this.parts.dialog.setStyle(\"visibility\",\"hidden\");for(X(this);CKEDITOR.dialog._.currentTop!=this;)CKEDITOR.dialog._.currentTop.hide();if(this._.parentDialog){var b=this._.parentDialog.getElement().getFirst();b.setStyle(\"z-index\",parseInt(b.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2))}else K(this._.editor);if(CKEDITOR.dialog._.currentTop=this._.parentDialog)CKEDITOR.dialog._.currentZIndex-=\n10;else{CKEDITOR.dialog._.currentZIndex=null;a.removeListener(\"keydown\",M);a.removeListener(\"keyup\",N);var c=this._.editor;c.focus();setTimeout(function(){c.focusManager.unlock()},0)}delete this._.parentDialog;this.foreach(function(a){a.resetInitValue&&a.resetInitValue()})}},addPage:function(a){if(!a.requiredContent||this._.editor.filter.check(a.requiredContent)){for(var b=[],c=a.label?' title=\"'+CKEDITOR.tools.htmlEncode(a.label)+'\"':\"\",e=CKEDITOR.dialog._.uiElementBuilders.vbox.build(this,{type:\"vbox\",\nclassName:\"cke_dialog_page_contents\",children:a.elements,expand:!!a.expand,padding:a.padding,style:a.style||\"width: 100%;\"},b),d=this._.contents[a.id]={},g=e.getChild(),f=0;e=g.shift();)!e.notAllowed&&(\"hbox\"!=e.type&&\"vbox\"!=e.type)&&f++,d[e.id]=e,\"function\"==typeof e.getChild&&g.push.apply(g,e.getChild());f||(a.hidden=!0);b=CKEDITOR.dom.element.createFromHtml(b.join(\"\"));b.setAttribute(\"role\",\"tabpanel\");e=CKEDITOR.env;d=\"cke_\"+a.id+\"_\"+CKEDITOR.tools.getNextNumber();c=CKEDITOR.dom.element.createFromHtml(['<a class=\"cke_dialog_tab\"',\n0<this._.pageCount?\" cke_last\":\"cke_first\",c,a.hidden?' style=\"display:none\"':\"\",' id=\"',d,'\"',e.gecko&&!e.hc?\"\":' href=\"javascript:void(0)\"',' tabIndex=\"-1\" hidefocus=\"true\" role=\"tab\">',a.label,\"</a>\"].join(\"\"));b.setAttribute(\"aria-labelledby\",d);this._.tabs[a.id]=[c,b];this._.tabIdList.push(a.id);!a.hidden&&this._.pageCount++;this._.lastTab=c;this.updateStyle();b.setAttribute(\"name\",a.id);b.appendTo(this.parts.contents);c.unselectable();this.parts.tabs.append(c);a.accessKey&&(O(this,this,\"CTRL+\"+\na.accessKey,Y,Z),this._.accessKeyMap[\"CTRL+\"+a.accessKey]=a.id)}},selectPage:function(a){if(this._.currentTabId!=a&&!this._.tabs[a][0].hasClass(\"cke_dialog_tab_disabled\")&&!1!==this.fire(\"selectPage\",{page:a,currentPage:this._.currentTabId})){for(var b in this._.tabs){var c=this._.tabs[b][0],e=this._.tabs[b][1];b!=a&&(c.removeClass(\"cke_dialog_tab_selected\"),e.hide());e.setAttribute(\"aria-hidden\",b!=a)}var d=this._.tabs[a];d[0].addClass(\"cke_dialog_tab_selected\");CKEDITOR.env.ie6Compat||CKEDITOR.env.ie7Compat?\n(G(d[1]),d[1].show(),setTimeout(function(){G(d[1],1)},0)):d[1].show();this._.currentTabId=a;this._.currentTabIndex=CKEDITOR.tools.indexOf(this._.tabIdList,a)}},updateStyle:function(){this.parts.dialog[(1===this._.pageCount?\"add\":\"remove\")+\"Class\"](\"cke_single_page\")},hidePage:function(a){var b=this._.tabs[a]&&this._.tabs[a][0];b&&(1!=this._.pageCount&&b.isVisible())&&(a==this._.currentTabId&&this.selectPage(t.call(this)),b.hide(),this._.pageCount--,this.updateStyle())},showPage:function(a){if(a=this._.tabs[a]&&\nthis._.tabs[a][0])a.show(),this._.pageCount++,this.updateStyle()},getElement:function(){return this._.element},getName:function(){return this._.name},getContentElement:function(a,b){var c=this._.contents[a];return c&&c[b]},getValueOf:function(a,b){return this.getContentElement(a,b).getValue()},setValueOf:function(a,b,c){return this.getContentElement(a,b).setValue(c)},getButton:function(a){return this._.buttons[a]},click:function(a){return this._.buttons[a].click()},disableButton:function(a){return this._.buttons[a].disable()},\nenableButton:function(a){return this._.buttons[a].enable()},getPageCount:function(){return this._.pageCount},getParentEditor:function(){return this._.editor},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement()},addFocusable:function(a,b){if(\"undefined\"==typeof b)b=this._.focusList.length,this._.focusList.push(new H(this,a,b));else{this._.focusList.splice(b,0,new H(this,a,b));for(var c=b+1;c<this._.focusList.length;c++)this._.focusList[c].focusIndex++}}};\nCKEDITOR.tools.extend(CKEDITOR.dialog,{add:function(a,b){if(!this._.dialogDefinitions[a]||\"function\"==typeof b)this._.dialogDefinitions[a]=b},exists:function(a){return!!this._.dialogDefinitions[a]},getCurrent:function(){return CKEDITOR.dialog._.currentTop},isTabEnabled:function(a,b,c){a=a.config.removeDialogTabs;return!(a&&a.match(RegExp(\"(?:^|;)\"+b+\":\"+c+\"(?:$|;)\",\"i\")))},okButton:function(){var a=function(a,c){c=c||{};return CKEDITOR.tools.extend({id:\"ok\",type:\"button\",label:a.lang.common.ok,\"class\":\"cke_dialog_ui_button_ok\",\nonClick:function(a){a=a.data.dialog;!1!==a.fire(\"ok\",{hide:!0}).hide&&a.hide()}},c,!0)};a.type=\"button\";a.override=function(b){return CKEDITOR.tools.extend(function(c){return a(c,b)},{type:\"button\"},!0)};return a}(),cancelButton:function(){var a=function(a,c){c=c||{};return CKEDITOR.tools.extend({id:\"cancel\",type:\"button\",label:a.lang.common.cancel,\"class\":\"cke_dialog_ui_button_cancel\",onClick:function(a){a=a.data.dialog;!1!==a.fire(\"cancel\",{hide:!0}).hide&&a.hide()}},c,!0)};a.type=\"button\";a.override=\nfunction(b){return CKEDITOR.tools.extend(function(c){return a(c,b)},{type:\"button\"},!0)};return a}(),addUIElement:function(a,b){this._.uiElementBuilders[a]=b}});CKEDITOR.dialog._={uiElementBuilders:{},dialogDefinitions:{},currentTop:null,currentZIndex:null};CKEDITOR.event.implementOn(CKEDITOR.dialog);CKEDITOR.event.implementOn(CKEDITOR.dialog.prototype);var W={resizable:CKEDITOR.DIALOG_RESIZE_BOTH,minWidth:600,minHeight:400,buttons:[CKEDITOR.dialog.okButton,CKEDITOR.dialog.cancelButton]},z=function(a,\nb,c){for(var e=0,d;d=a[e];e++)if(d.id==b||c&&d[c]&&(d=z(d[c],b,c)))return d;return null},A=function(a,b,c,e,d){if(c){for(var g=0,f;f=a[g];g++){if(f.id==c)return a.splice(g,0,b),b;if(e&&f[e]&&(f=A(f[e],b,c,e,!0)))return f}if(d)return null}a.push(b);return b},B=function(a,b,c){for(var e=0,d;d=a[e];e++){if(d.id==b)return a.splice(e,1);if(c&&d[c]&&(d=B(d[c],b,c)))return d}return null},L=function(a,b){this.dialog=a;for(var c=b.contents,e=0,d;d=c[e];e++)c[e]=d&&new I(a,d);CKEDITOR.tools.extend(this,b)};\nL.prototype={getContents:function(a){return z(this.contents,a)},getButton:function(a){return z(this.buttons,a)},addContents:function(a,b){return A(this.contents,a,b)},addButton:function(a,b){return A(this.buttons,a,b)},removeContents:function(a){B(this.contents,a)},removeButton:function(a){B(this.buttons,a)}};I.prototype={get:function(a){return z(this.elements,a,\"children\")},add:function(a,b){return A(this.elements,a,b,\"children\")},remove:function(a){B(this.elements,a,\"children\")}};var F,w={},q,s=\n{},M=function(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey,e=a.data.$.shiftKey,d=String.fromCharCode(a.data.$.keyCode);if((b=s[(b?\"CTRL+\":\"\")+(c?\"ALT+\":\"\")+(e?\"SHIFT+\":\"\")+d])&&b.length)b=b[b.length-1],b.keydown&&b.keydown.call(b.uiElement,b.dialog,b.key),a.data.preventDefault()},N=function(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey,e=a.data.$.shiftKey,d=String.fromCharCode(a.data.$.keyCode);if((b=s[(b?\"CTRL+\":\"\")+(c?\"ALT+\":\"\")+(e?\"SHIFT+\":\"\")+d])&&b.length)b=b[b.length-\n1],b.keyup&&(b.keyup.call(b.uiElement,b.dialog,b.key),a.data.preventDefault())},O=function(a,b,c,e,d){(s[c]||(s[c]=[])).push({uiElement:a,dialog:b,key:c,keyup:d||a.accessKeyUp,keydown:e||a.accessKeyDown})},X=function(a){for(var b in s){for(var c=s[b],e=c.length-1;0<=e;e--)(c[e].dialog==a||c[e].uiElement==a)&&c.splice(e,1);0===c.length&&delete s[b]}},Z=function(a,b){a._.accessKeyMap[b]&&a.selectPage(a._.accessKeyMap[b])},Y=function(){};(function(){CKEDITOR.ui.dialog={uiElement:function(a,b,c,e,d,g,\nf){if(!(4>arguments.length)){var h=(e.call?e(b):e)||\"div\",m=[\"<\",h,\" \"],k=(d&&d.call?d(b):d)||{},i=(g&&g.call?g(b):g)||{},o=(f&&f.call?f.call(this,a,b):f)||\"\",j=this.domId=i.id||CKEDITOR.tools.getNextId()+\"_uiElement\";this.id=b.id;b.requiredContent&&!a.getParentEditor().filter.check(b.requiredContent)&&(k.display=\"none\",this.notAllowed=!0);i.id=j;var n={};b.type&&(n[\"cke_dialog_ui_\"+b.type]=1);b.className&&(n[b.className]=1);b.disabled&&(n.cke_disabled=1);for(var l=i[\"class\"]&&i[\"class\"].split?i[\"class\"].split(\" \"):\n[],j=0;j<l.length;j++)l[j]&&(n[l[j]]=1);l=[];for(j in n)l.push(j);i[\"class\"]=l.join(\" \");b.title&&(i.title=b.title);n=(b.style||\"\").split(\";\");b.align&&(l=b.align,k[\"margin-left\"]=\"left\"==l?0:\"auto\",k[\"margin-right\"]=\"right\"==l?0:\"auto\");for(j in k)n.push(j+\":\"+k[j]);b.hidden&&n.push(\"display:none\");for(j=n.length-1;0<=j;j--)\"\"===n[j]&&n.splice(j,1);0<n.length&&(i.style=(i.style?i.style+\"; \":\"\")+n.join(\"; \"));for(j in i)m.push(j+'=\"'+CKEDITOR.tools.htmlEncode(i[j])+'\" ');m.push(\">\",o,\"</\",h,\">\");\nc.push(m.join(\"\"));(this._||(this._={})).dialog=a;\"boolean\"==typeof b.isChanged&&(this.isChanged=function(){return b.isChanged});\"function\"==typeof b.isChanged&&(this.isChanged=b.isChanged);\"function\"==typeof b.setValue&&(this.setValue=CKEDITOR.tools.override(this.setValue,function(a){return function(c){a.call(this,b.setValue.call(this,c))}}));\"function\"==typeof b.getValue&&(this.getValue=CKEDITOR.tools.override(this.getValue,function(a){return function(){return b.getValue.call(this,a.call(this))}}));\nCKEDITOR.event.implementOn(this);this.registerEvents(b);this.accessKeyUp&&(this.accessKeyDown&&b.accessKey)&&O(this,a,\"CTRL+\"+b.accessKey);var p=this;a.on(\"load\",function(){var b=p.getInputElement();if(b){var c=p.type in{checkbox:1,ratio:1}&&CKEDITOR.env.ie&&CKEDITOR.env.version<8?\"cke_dialog_ui_focused\":\"\";b.on(\"focus\",function(){a._.tabBarMode=false;a._.hasFocus=true;p.fire(\"focus\");c&&this.addClass(c)});b.on(\"blur\",function(){p.fire(\"blur\");c&&this.removeClass(c)})}});CKEDITOR.tools.extend(this,\nb);this.keyboardFocusable&&(this.tabIndex=b.tabIndex||0,this.focusIndex=a._.focusList.push(this)-1,this.on(\"focus\",function(){a._.currentFocusIndex=p.focusIndex}))}},hbox:function(a,b,c,e,d){if(!(4>arguments.length)){this._||(this._={});var g=this._.children=b,f=d&&d.widths||null,h=d&&d.height||null,m,k={role:\"presentation\"};d&&d.align&&(k.align=d.align);CKEDITOR.ui.dialog.uiElement.call(this,a,d||{type:\"hbox\"},e,\"table\",{},k,function(){var a=['<tbody><tr class=\"cke_dialog_ui_hbox\">'];for(m=0;m<c.length;m++){var b=\n\"cke_dialog_ui_hbox_child\",e=[];0===m&&(b=\"cke_dialog_ui_hbox_first\");m==c.length-1&&(b=\"cke_dialog_ui_hbox_last\");a.push('<td class=\"',b,'\" role=\"presentation\" ');f?f[m]&&e.push(\"width:\"+r(f[m])):e.push(\"width:\"+Math.floor(100/c.length)+\"%\");h&&e.push(\"height:\"+r(h));d&&void 0!=d.padding&&e.push(\"padding:\"+r(d.padding));CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&g[m].align)&&e.push(\"text-align:\"+g[m].align);0<e.length&&a.push('style=\"'+e.join(\"; \")+'\" ');a.push(\">\",c[m],\"</td>\")}a.push(\"</tr></tbody>\");\nreturn a.join(\"\")})}},vbox:function(a,b,c,e,d){if(!(3>arguments.length)){this._||(this._={});var g=this._.children=b,f=d&&d.width||null,h=d&&d.heights||null;CKEDITOR.ui.dialog.uiElement.call(this,a,d||{type:\"vbox\"},e,\"div\",null,{role:\"presentation\"},function(){var b=['<table role=\"presentation\" cellspacing=\"0\" border=\"0\" '];b.push('style=\"');d&&d.expand&&b.push(\"height:100%;\");b.push(\"width:\"+r(f||\"100%\"),\";\");CKEDITOR.env.webkit&&b.push(\"float:none;\");b.push('\"');b.push('align=\"',CKEDITOR.tools.htmlEncode(d&&\nd.align||(\"ltr\"==a.getParentEditor().lang.dir?\"left\":\"right\")),'\" ');b.push(\"><tbody>\");for(var e=0;e<c.length;e++){var i=[];b.push('<tr><td role=\"presentation\" ');f&&i.push(\"width:\"+r(f||\"100%\"));h?i.push(\"height:\"+r(h[e])):d&&d.expand&&i.push(\"height:\"+Math.floor(100/c.length)+\"%\");d&&void 0!=d.padding&&i.push(\"padding:\"+r(d.padding));CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&g[e].align)&&i.push(\"text-align:\"+g[e].align);0<i.length&&b.push('style=\"',i.join(\"; \"),'\" ');b.push(' class=\"cke_dialog_ui_vbox_child\">',\nc[e],\"</td></tr>\")}b.push(\"</tbody></table>\");return b.join(\"\")})}}}})();CKEDITOR.ui.dialog.uiElement.prototype={getElement:function(){return CKEDITOR.document.getById(this.domId)},getInputElement:function(){return this.getElement()},getDialog:function(){return this._.dialog},setValue:function(a,b){this.getInputElement().setValue(a);!b&&this.fire(\"change\",{value:a});return this},getValue:function(){return this.getInputElement().getValue()},isChanged:function(){return!1},selectParentTab:function(){for(var a=\nthis.getInputElement();(a=a.getParent())&&-1==a.$.className.search(\"cke_dialog_page_contents\"););if(!a)return this;a=a.getAttribute(\"name\");this._.dialog._.currentTabId!=a&&this._.dialog.selectPage(a);return this},focus:function(){this.selectParentTab().getInputElement().focus();return this},registerEvents:function(a){var b=/^on([A-Z]\\w+)/,c,e=function(a,b,c,d){b.on(\"load\",function(){a.getInputElement().on(c,d,a)})},d;for(d in a)if(c=d.match(b))this.eventProcessors[d]?this.eventProcessors[d].call(this,\nthis._.dialog,a[d]):e(this,this._.dialog,c[1].toLowerCase(),a[d]);return this},eventProcessors:{onLoad:function(a,b){a.on(\"load\",b,this)},onShow:function(a,b){a.on(\"show\",b,this)},onHide:function(a,b){a.on(\"hide\",b,this)}},accessKeyDown:function(){this.focus()},accessKeyUp:function(){},disable:function(){var a=this.getElement();this.getInputElement().setAttribute(\"disabled\",\"true\");a.addClass(\"cke_disabled\")},enable:function(){var a=this.getElement();this.getInputElement().removeAttribute(\"disabled\");\na.removeClass(\"cke_disabled\")},isEnabled:function(){return!this.getElement().hasClass(\"cke_disabled\")},isVisible:function(){return this.getInputElement().isVisible()},isFocusable:function(){return!this.isEnabled()||!this.isVisible()?!1:!0}};CKEDITOR.ui.dialog.hbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getChild:function(a){if(1>arguments.length)return this._.children.concat();a.splice||(a=[a]);return 2>a.length?this._.children[a[0]]:this._.children[a[0]]&&this._.children[a[0]].getChild?\nthis._.children[a[0]].getChild(a.slice(1,a.length)):null}},!0);CKEDITOR.ui.dialog.vbox.prototype=new CKEDITOR.ui.dialog.hbox;(function(){var a={build:function(a,c,e){for(var d=c.children,g,f=[],h=[],m=0;m<d.length&&(g=d[m]);m++){var k=[];f.push(k);h.push(CKEDITOR.dialog._.uiElementBuilders[g.type].build(a,g,k))}return new CKEDITOR.ui.dialog[c.type](a,h,f,e,c)}};CKEDITOR.dialog.addUIElement(\"hbox\",a);CKEDITOR.dialog.addUIElement(\"vbox\",a)})();CKEDITOR.dialogCommand=function(a,b){this.dialogName=a;\nCKEDITOR.tools.extend(this,b,!0)};CKEDITOR.dialogCommand.prototype={exec:function(a){a.openDialog(this.dialogName)},canUndo:!1,editorFocus:1};(function(){var a=/^([a]|[^a])+$/,b=/^\\d*$/,c=/^\\d*(?:\\.\\d+)?$/,e=/^(((\\d*(\\.\\d+))|(\\d*))(px|\\%)?)?$/,d=/^(((\\d*(\\.\\d+))|(\\d*))(px|em|ex|in|cm|mm|pt|pc|\\%)?)?$/i,g=/^(\\s*[\\w-]+\\s*:\\s*[^:;]+(?:;|$))*$/;CKEDITOR.VALIDATE_OR=1;CKEDITOR.VALIDATE_AND=2;CKEDITOR.dialog.validate={functions:function(){var a=arguments;return function(){var b=this&&this.getValue?this.getValue():\na[0],c=void 0,d=CKEDITOR.VALIDATE_AND,e=[],g;for(g=0;g<a.length;g++)if(\"function\"==typeof a[g])e.push(a[g]);else break;g<a.length&&\"string\"==typeof a[g]&&(c=a[g],g++);g<a.length&&\"number\"==typeof a[g]&&(d=a[g]);var j=d==CKEDITOR.VALIDATE_AND?!0:!1;for(g=0;g<e.length;g++)j=d==CKEDITOR.VALIDATE_AND?j&&e[g](b):j||e[g](b);return!j?c:!0}},regex:function(a,b){return function(c){c=this&&this.getValue?this.getValue():c;return!a.test(c)?b:!0}},notEmpty:function(b){return this.regex(a,b)},integer:function(a){return this.regex(b,\na)},number:function(a){return this.regex(c,a)},cssLength:function(a){return this.functions(function(a){return d.test(CKEDITOR.tools.trim(a))},a)},htmlLength:function(a){return this.functions(function(a){return e.test(CKEDITOR.tools.trim(a))},a)},inlineStyle:function(a){return this.functions(function(a){return g.test(CKEDITOR.tools.trim(a))},a)},equals:function(a,b){return this.functions(function(b){return b==a},b)},notEqual:function(a,b){return this.functions(function(b){return b!=a},b)}};CKEDITOR.on(\"instanceDestroyed\",\nfunction(a){if(CKEDITOR.tools.isEmpty(CKEDITOR.instances)){for(var b;b=CKEDITOR.dialog._.currentTop;)b.hide();for(var c in w)w[c].remove();w={}}var a=a.editor._.storedDialogs,d;for(d in a)a[d].destroy()})})();CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{openDialog:function(a,b){var c=null,e=CKEDITOR.dialog._.dialogDefinitions[a];null===CKEDITOR.dialog._.currentTop&&J(this);if(\"function\"==typeof e)c=this._.storedDialogs||(this._.storedDialogs={}),c=c[a]||(c[a]=new CKEDITOR.dialog(this,a)),b&&b.call(c,\nc),c.show();else{if(\"failed\"==e)throw K(this),Error('[CKEDITOR.dialog.openDialog] Dialog \"'+a+'\" failed when loading definition.');\"string\"==typeof e&&CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(e),function(){\"function\"!=typeof CKEDITOR.dialog._.dialogDefinitions[a]&&(CKEDITOR.dialog._.dialogDefinitions[a]=\"failed\");this.openDialog(a,b)},this,0,1)}CKEDITOR.skin.loadPart(\"dialog\");return c}})})();\nCKEDITOR.plugins.add(\"dialog\",{requires:\"dialogui\",init:function(t){t.on(\"doubleclick\",function(u){u.data.dialog&&t.openDialog(u.data.dialog)},null,null,999)}});CKEDITOR.plugins.add(\"about\",{requires:\"dialog\",init:function(a){var b=a.addCommand(\"about\",new CKEDITOR.dialogCommand(\"about\"));b.modes={wysiwyg:1,source:1};b.canUndo=!1;b.readOnly=1;a.ui.addButton&&a.ui.addButton(\"About\",{label:a.lang.about.title,command:\"about\",toolbar:\"about\"});CKEDITOR.dialog.add(\"about\",this.path+\"dialogs/about.js\")}});(function(){CKEDITOR.plugins.add(\"a11yhelp\",{requires:\"dialog\",availableLangs:{ar:1,bg:1,ca:1,cs:1,cy:1,da:1,de:1,el:1,en:1,\"en-gb\":1,eo:1,es:1,et:1,fa:1,fi:1,fr:1,\"fr-ca\":1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,nb:1,nl:1,no:1,pl:1,pt:1,\"pt-br\":1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,sr:1,\"sr-latn\":1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,\"zh-cn\":1},init:function(b){var c=this;b.addCommand(\"a11yHelp\",{exec:function(){var a=b.langCode,a=c.availableLangs[a]?a:c.availableLangs[a.replace(/-.*/,\n\"\")]?a.replace(/-.*/,\"\"):\"en\";CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(c.path+\"dialogs/lang/\"+a+\".js\"),function(){b.lang.a11yhelp=c.langEntries[a];b.openDialog(\"a11yHelp\")})},modes:{wysiwyg:1,source:1},readOnly:1,canUndo:!1});b.setKeystroke(CKEDITOR.ALT+48,\"a11yHelp\");CKEDITOR.dialog.add(\"a11yHelp\",this.path+\"dialogs/a11yhelp.js\")}})})();(function(){function f(c){var a=this.att,c=c&&c.hasAttribute(a)&&c.getAttribute(a)||\"\";void 0!==c&&this.setValue(c)}function g(){for(var c,a=0;a<arguments.length;a++)if(arguments[a]instanceof CKEDITOR.dom.element){c=arguments[a];break}if(c){var a=this.att,b=this.getValue();b?c.setAttribute(a,b):c.removeAttribute(a,b)}}var i={id:1,dir:1,classes:1,styles:1};CKEDITOR.plugins.add(\"dialogadvtab\",{requires:\"dialog\",allowedContent:function(c){c||(c=i);var a=[];c.id&&a.push(\"id\");c.dir&&a.push(\"dir\");var b=\n\"\";a.length&&(b+=\"[\"+a.join(\",\")+\"]\");c.classes&&(b+=\"(*)\");c.styles&&(b+=\"{*}\");return b},createAdvancedTab:function(c,a,b){a||(a=i);var d=c.lang.common,h={id:\"advanced\",label:d.advancedTab,title:d.advancedTab,elements:[{type:\"vbox\",padding:1,children:[]}]},e=[];if(a.id||a.dir)a.id&&e.push({id:\"advId\",att:\"id\",type:\"text\",requiredContent:b?b+\"[id]\":null,label:d.id,setup:f,commit:g}),a.dir&&e.push({id:\"advLangDir\",att:\"dir\",type:\"select\",requiredContent:b?b+\"[dir]\":null,label:d.langDir,\"default\":\"\",\nstyle:\"width:100%\",items:[[d.notSet,\"\"],[d.langDirLTR,\"ltr\"],[d.langDirRTL,\"rtl\"]],setup:f,commit:g}),h.elements[0].children.push({type:\"hbox\",widths:[\"50%\",\"50%\"],children:[].concat(e)});if(a.styles||a.classes)e=[],a.styles&&e.push({id:\"advStyles\",att:\"style\",type:\"text\",requiredContent:b?b+\"{cke-xyz}\":null,label:d.styles,\"default\":\"\",validate:CKEDITOR.dialog.validate.inlineStyle(d.invalidInlineStyle),onChange:function(){},getStyle:function(a,c){var b=this.getValue().match(RegExp(\"(?:^|;)\\\\s*\"+a+\n\"\\\\s*:\\\\s*([^;]*)\",\"i\"));return b?b[1]:c},updateStyle:function(a,b){var d=this.getValue(),e=c.document.createElement(\"span\");e.setAttribute(\"style\",d);e.setStyle(a,b);d=CKEDITOR.tools.normalizeCssText(e.getAttribute(\"style\"));this.setValue(d,1)},setup:f,commit:g}),a.classes&&e.push({type:\"hbox\",widths:[\"45%\",\"55%\"],children:[{id:\"advCSSClasses\",att:\"class\",type:\"text\",requiredContent:b?b+\"(cke-xyz)\":null,label:d.cssClasses,\"default\":\"\",setup:f,commit:g}]}),h.elements[0].children.push({type:\"hbox\",\nwidths:[\"50%\",\"50%\"],children:[].concat(e)});return h}})})();CKEDITOR.plugins.add(\"basicstyles\",{init:function(c){var e=0,d=function(g,d,b,a){if(a){var a=new CKEDITOR.style(a),f=h[b];f.unshift(a);c.attachStyleStateChange(a,function(a){!c.readOnly&&c.getCommand(b).setState(a)});c.addCommand(b,new CKEDITOR.styleCommand(a,{contentForms:f}));c.ui.addButton&&c.ui.addButton(g,{label:d,command:b,toolbar:\"basicstyles,\"+(e+=10)})}},h={bold:[\"strong\",\"b\",[\"span\",function(a){a=a.styles[\"font-weight\"];return\"bold\"==a||700<=+a}]],italic:[\"em\",\"i\",[\"span\",function(a){return\"italic\"==\na.styles[\"font-style\"]}]],underline:[\"u\",[\"span\",function(a){return\"underline\"==a.styles[\"text-decoration\"]}]],strike:[\"s\",\"strike\",[\"span\",function(a){return\"line-through\"==a.styles[\"text-decoration\"]}]],subscript:[\"sub\"],superscript:[\"sup\"]},b=c.config,a=c.lang.basicstyles;d(\"Bold\",a.bold,\"bold\",b.coreStyles_bold);d(\"Italic\",a.italic,\"italic\",b.coreStyles_italic);d(\"Underline\",a.underline,\"underline\",b.coreStyles_underline);d(\"Strike\",a.strike,\"strike\",b.coreStyles_strike);d(\"Subscript\",a.subscript,\n\"subscript\",b.coreStyles_subscript);d(\"Superscript\",a.superscript,\"superscript\",b.coreStyles_superscript);c.setKeystroke([[CKEDITOR.CTRL+66,\"bold\"],[CKEDITOR.CTRL+73,\"italic\"],[CKEDITOR.CTRL+85,\"underline\"]])}});CKEDITOR.config.coreStyles_bold={element:\"strong\",overrides:\"b\"};CKEDITOR.config.coreStyles_italic={element:\"em\",overrides:\"i\"};CKEDITOR.config.coreStyles_underline={element:\"u\"};CKEDITOR.config.coreStyles_strike={element:\"s\",overrides:\"strike\"};CKEDITOR.config.coreStyles_subscript={element:\"sub\"};\nCKEDITOR.config.coreStyles_superscript={element:\"sup\"};(function(){function n(a,f,d,b){if(!a.isReadOnly()&&!a.equals(d.editable())){CKEDITOR.dom.element.setMarker(b,a,\"bidi_processed\",1);for(var b=a,c=d.editable();(b=b.getParent())&&!b.equals(c);)if(b.getCustomData(\"bidi_processed\")){a.removeStyle(\"direction\");a.removeAttribute(\"dir\");return}b=\"useComputedState\"in d.config?d.config.useComputedState:1;if((b?a.getComputedStyle(\"direction\"):a.getStyle(\"direction\")||a.hasAttribute(\"dir\"))!=f)a.removeStyle(\"direction\"),b?(a.removeAttribute(\"dir\"),f!=a.getComputedStyle(\"direction\")&&\na.setAttribute(\"dir\",f)):a.setAttribute(\"dir\",f),d.forceNextSelectionCheck()}}function r(a,f,d){var b=a.getCommonAncestor(!1,!0),a=a.clone();a.enlarge(d==CKEDITOR.ENTER_BR?CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:CKEDITOR.ENLARGE_BLOCK_CONTENTS);if(a.checkBoundaryOfElement(b,CKEDITOR.START)&&a.checkBoundaryOfElement(b,CKEDITOR.END)){for(var c;b&&b.type==CKEDITOR.NODE_ELEMENT&&(c=b.getParent())&&1==c.getChildCount()&&!(b.getName()in f);)b=c;return b.type==CKEDITOR.NODE_ELEMENT&&b.getName()in f&&b}}function m(a){return{context:\"p\",\nallowedContent:{\"h1 h2 h3 h4 h5 h6 table ul ol blockquote div tr p div li td\":{propertiesOnly:!0,attributes:\"dir\"}},requiredContent:\"p[dir]\",refresh:function(a,d){var b=a.config.useComputedState,c,b=void 0===b||b;if(!b){c=d.lastElement;for(var h=a.editable();c&&!(c.getName()in q||c.equals(h));){var e=c.getParent();if(!e)break;c=e}}c=c||d.block||d.blockLimit;c.equals(a.editable())&&(h=a.getSelection().getRanges()[0].getEnclosedNode())&&h.type==CKEDITOR.NODE_ELEMENT&&(c=h);c&&(b=b?c.getComputedStyle(\"direction\"):\nc.getStyle(\"direction\")||c.getAttribute(\"dir\"),a.getCommand(\"bidirtl\").setState(\"rtl\"==b?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF),a.getCommand(\"bidiltr\").setState(\"ltr\"==b?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF));b=(d.block||d.blockLimit||a.editable()).getDirection(1);if(b!=(a._.selDir||a.lang.dir))a._.selDir=b,a.fire(\"contentDirChanged\",b)},exec:function(f){var d=f.getSelection(),b=f.config.enterMode,c=d.getRanges();if(c&&c.length){for(var h={},e=d.createBookmarks(),c=c.createIterator(),g,\nj=0;g=c.getNextRange(1);){var i=g.getEnclosedNode();if(!i||i&&!(i.type==CKEDITOR.NODE_ELEMENT&&i.getName()in o))i=r(g,p,b);i&&n(i,a,f,h);var k=new CKEDITOR.dom.walker(g),l=e[j].startNode,m=e[j++].endNode;k.evaluator=function(a){return!!(a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in p&&!(a.getName()==(b==CKEDITOR.ENTER_P?\"p\":\"div\")&&a.getParent().type==CKEDITOR.NODE_ELEMENT&&\"blockquote\"==a.getParent().getName())&&a.getPosition(l)&CKEDITOR.POSITION_FOLLOWING&&(a.getPosition(m)&CKEDITOR.POSITION_PRECEDING+\nCKEDITOR.POSITION_CONTAINS)==CKEDITOR.POSITION_PRECEDING)};for(;i=k.next();)n(i,a,f,h);g=g.createIterator();for(g.enlargeBr=b!=CKEDITOR.ENTER_BR;i=g.getNextParagraph(b==CKEDITOR.ENTER_P?\"p\":\"div\");)n(i,a,f,h)}CKEDITOR.dom.element.clearAllMarkers(h);f.forceNextSelectionCheck();d.selectBookmarks(e);f.focus()}}}}function s(a){var f=a==j.setAttribute,d=a==j.removeAttribute,b=/\\bdirection\\s*:\\s*(.*?)\\s*(:?$|;)/;return function(c,h){if(!this.isReadOnly()){var e;if(e=c==(f||d?\"dir\":\"direction\")||\"style\"==\nc&&(d||b.test(h))){a:{e=this;for(var g=e.getDocument().getBody().getParent();e;){if(e.equals(g)){e=!1;break a}e=e.getParent()}e=!0}e=!e}if(e&&(e=this.getDirection(1),g=a.apply(this,arguments),e!=this.getDirection(1)))return this.getDocument().fire(\"dirChanged\",this),g}return a.apply(this,arguments)}}var p={table:1,ul:1,ol:1,blockquote:1,div:1},o={},q={};CKEDITOR.tools.extend(o,p,{tr:1,p:1,div:1,li:1});CKEDITOR.tools.extend(q,o,{td:1});CKEDITOR.plugins.add(\"bidi\",{init:function(a){function f(b,c,d,\ne,f){a.addCommand(d,new CKEDITOR.command(a,e));a.ui.addButton&&a.ui.addButton(b,{label:c,command:d,toolbar:\"bidi,\"+f})}if(!a.blockless){var d=a.lang.bidi;f(\"BidiLtr\",d.ltr,\"bidiltr\",m(\"ltr\"),10);f(\"BidiRtl\",d.rtl,\"bidirtl\",m(\"rtl\"),20);a.on(\"contentDom\",function(){a.document.on(\"dirChanged\",function(b){a.fire(\"dirChanged\",{node:b.data,dir:b.data.getDirection(1)})})});a.on(\"contentDirChanged\",function(b){var b=(a.lang.dir!=b.data?\"add\":\"remove\")+\"Class\",c=a.ui.space(a.config.toolbarLocation);if(c)c[b](\"cke_mixed_dir_content\")})}}});\nfor(var j=CKEDITOR.dom.element.prototype,l=[\"setStyle\",\"removeStyle\",\"setAttribute\",\"removeAttribute\"],k=0;k<l.length;k++)j[l[k]]=CKEDITOR.tools.override(j[l[k]],s)})();(function(){var k={exec:function(g){var a=g.getCommand(\"blockquote\").state,i=g.getSelection(),c=i&&i.getRanges()[0];if(c){var h=i.createBookmarks();if(CKEDITOR.env.ie){var e=h[0].startNode,b=h[0].endNode,d;if(e&&\"blockquote\"==e.getParent().getName())for(d=e;d=d.getNext();)if(d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()){e.move(d,!0);break}if(b&&\"blockquote\"==b.getParent().getName())for(d=b;d=d.getPrevious();)if(d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()){b.move(d);break}}var f=c.createIterator();\nf.enlargeBr=g.config.enterMode!=CKEDITOR.ENTER_BR;if(a==CKEDITOR.TRISTATE_OFF){for(e=[];a=f.getNextParagraph();)e.push(a);1>e.length&&(a=g.document.createElement(g.config.enterMode==CKEDITOR.ENTER_P?\"p\":\"div\"),b=h.shift(),c.insertNode(a),a.append(new CKEDITOR.dom.text(\"﻿\",g.document)),c.moveToBookmark(b),c.selectNodeContents(a),c.collapse(!0),b=c.createBookmark(),e.push(a),h.unshift(b));d=e[0].getParent();c=[];for(b=0;b<e.length;b++)a=e[b],d=d.getCommonAncestor(a.getParent());for(a={table:1,tbody:1,\ntr:1,ol:1,ul:1};a[d.getName()];)d=d.getParent();for(b=null;0<e.length;){for(a=e.shift();!a.getParent().equals(d);)a=a.getParent();a.equals(b)||c.push(a);b=a}for(;0<c.length;)if(a=c.shift(),\"blockquote\"==a.getName()){for(b=new CKEDITOR.dom.documentFragment(g.document);a.getFirst();)b.append(a.getFirst().remove()),e.push(b.getLast());b.replace(a)}else e.push(a);c=g.document.createElement(\"blockquote\");for(c.insertBefore(e[0]);0<e.length;)a=e.shift(),c.append(a)}else if(a==CKEDITOR.TRISTATE_ON){b=[];\nfor(d={};a=f.getNextParagraph();){for(e=c=null;a.getParent();){if(\"blockquote\"==a.getParent().getName()){c=a.getParent();e=a;break}a=a.getParent()}c&&(e&&!e.getCustomData(\"blockquote_moveout\"))&&(b.push(e),CKEDITOR.dom.element.setMarker(d,e,\"blockquote_moveout\",!0))}CKEDITOR.dom.element.clearAllMarkers(d);a=[];e=[];for(d={};0<b.length;)f=b.shift(),c=f.getParent(),f.getPrevious()?f.getNext()?(f.breakParent(f.getParent()),e.push(f.getNext())):f.remove().insertAfter(c):f.remove().insertBefore(c),c.getCustomData(\"blockquote_processed\")||\n(e.push(c),CKEDITOR.dom.element.setMarker(d,c,\"blockquote_processed\",!0)),a.push(f);CKEDITOR.dom.element.clearAllMarkers(d);for(b=e.length-1;0<=b;b--){c=e[b];a:{d=c;for(var f=0,k=d.getChildCount(),j=void 0;f<k&&(j=d.getChild(f));f++)if(j.type==CKEDITOR.NODE_ELEMENT&&j.isBlockBoundary()){d=!1;break a}d=!0}d&&c.remove()}if(g.config.enterMode==CKEDITOR.ENTER_BR)for(c=!0;a.length;)if(f=a.shift(),\"div\"==f.getName()){b=new CKEDITOR.dom.documentFragment(g.document);c&&(f.getPrevious()&&!(f.getPrevious().type==\nCKEDITOR.NODE_ELEMENT&&f.getPrevious().isBlockBoundary()))&&b.append(g.document.createElement(\"br\"));for(c=f.getNext()&&!(f.getNext().type==CKEDITOR.NODE_ELEMENT&&f.getNext().isBlockBoundary());f.getFirst();)f.getFirst().remove().appendTo(b);c&&b.append(g.document.createElement(\"br\"));b.replace(f);c=!1}}i.selectBookmarks(h);g.focus()}},refresh:function(g,a){this.setState(g.elementPath(a.block||a.blockLimit).contains(\"blockquote\",1)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)},context:\"blockquote\",\nallowedContent:\"blockquote\",requiredContent:\"blockquote\"};CKEDITOR.plugins.add(\"blockquote\",{init:function(g){g.blockless||(g.addCommand(\"blockquote\",k),g.ui.addButton&&g.ui.addButton(\"Blockquote\",{label:g.lang.blockquote.toolbar,command:\"blockquote\",toolbar:\"blocks,10\"}))}})})();(function(){function v(b){function a(){var e=b.editable();e.on(p,function(b){(!CKEDITOR.env.ie||!n)&&u(b)});CKEDITOR.env.ie&&e.on(\"paste\",function(e){q||(g(),e.data.preventDefault(),u(e),h(\"paste\")||b.openDialog(\"paste\"))});CKEDITOR.env.ie&&(e.on(\"contextmenu\",i,null,null,0),e.on(\"beforepaste\",function(b){b.data&&!b.data.$.ctrlKey&&i()},null,null,0));e.on(\"beforecut\",function(){!n&&j(b)});var a;e.attachListener(CKEDITOR.env.ie?e:b.document.getDocumentElement(),\"mouseup\",function(){a=setTimeout(function(){r()},\n0)});b.on(\"destroy\",function(){clearTimeout(a)});e.on(\"keyup\",r)}function c(e){return{type:e,canUndo:\"cut\"==e,startDisabled:!0,exec:function(){\"cut\"==this.type&&j();var e;var a=this.type;if(CKEDITOR.env.ie)e=h(a);else try{e=b.document.$.execCommand(a,!1,null)}catch(d){e=!1}e||alert(b.lang.clipboard[this.type+\"Error\"]);return e}}}function d(){return{canUndo:!1,async:!0,exec:function(b,a){var d=function(a,d){a&&f(a.type,a.dataValue,!!d);b.fire(\"afterCommandExec\",{name:\"paste\",command:c,returnValue:!!a})},\nc=this;\"string\"==typeof a?d({type:\"auto\",dataValue:a},1):b.getClipboardData(d)}}}function g(){q=1;setTimeout(function(){q=0},100)}function i(){n=1;setTimeout(function(){n=0},10)}function h(e){var a=b.document,d=a.getBody(),c=!1,j=function(){c=!0};d.on(e,j);(7<CKEDITOR.env.version?a.$:a.$.selection.createRange()).execCommand(e);d.removeListener(e,j);return c}function f(e,a,d){e={type:e};if(d&&!1===b.fire(\"beforePaste\",e)||!a)return!1;e.dataValue=a;return b.fire(\"paste\",e)}function j(){if(CKEDITOR.env.ie&&\n!CKEDITOR.env.quirks){var e=b.getSelection(),a,d,c;if(e.getType()==CKEDITOR.SELECTION_ELEMENT&&(a=e.getSelectedElement()))d=e.getRanges()[0],c=b.document.createText(\"\"),c.insertBefore(a),d.setStartBefore(c),d.setEndAfter(a),e.selectRanges([d]),setTimeout(function(){a.getParent()&&(c.remove(),e.selectElement(a))},0)}}function l(a,d){var c=b.document,j=b.editable(),l=function(b){b.cancel()},g;if(!c.getById(\"cke_pastebin\")){var i=b.getSelection(),s=i.createBookmarks();CKEDITOR.env.ie&&i.root.fire(\"selectionchange\");\nvar k=new CKEDITOR.dom.element((CKEDITOR.env.webkit||j.is(\"body\"))&&!CKEDITOR.env.ie?\"body\":\"div\",c);k.setAttributes({id:\"cke_pastebin\",\"data-cke-temp\":\"1\"});var f=0,c=c.getWindow();CKEDITOR.env.webkit?(j.append(k),k.addClass(\"cke_editable\"),j.is(\"body\")||(f=\"static\"!=j.getComputedStyle(\"position\")?j:CKEDITOR.dom.element.get(j.$.offsetParent),f=f.getDocumentPosition().y)):j.getAscendant(CKEDITOR.env.ie?\"body\":\"html\",1).append(k);k.setStyles({position:\"absolute\",top:c.getScrollPosition().y-f+10+\"px\",\nwidth:\"1px\",height:Math.max(1,c.getViewPaneSize().height-20)+\"px\",overflow:\"hidden\",margin:0,padding:0});(f=k.getParent().isReadOnly())?(k.setOpacity(0),k.setAttribute(\"contenteditable\",!0)):k.setStyle(\"ltr\"==b.config.contentsLangDirection?\"left\":\"right\",\"-1000px\");b.on(\"selectionChange\",l,null,null,0);if(CKEDITOR.env.webkit||CKEDITOR.env.gecko)g=j.once(\"blur\",l,null,null,-100);f&&k.focus();f=new CKEDITOR.dom.range(k);f.selectNodeContents(k);var h=f.select();CKEDITOR.env.ie&&(g=j.once(\"blur\",function(){b.lockSelection(h)}));\nvar m=CKEDITOR.document.getWindow().getScrollPosition().y;setTimeout(function(){if(CKEDITOR.env.webkit)CKEDITOR.document.getBody().$.scrollTop=m;g&&g.removeListener();CKEDITOR.env.ie&&j.focus();i.selectBookmarks(s);k.remove();var a;if(CKEDITOR.env.webkit&&(a=k.getFirst())&&a.is&&a.hasClass(\"Apple-style-span\"))k=a;b.removeListener(\"selectionChange\",l);d(k.getHtml())},0)}}function s(){if(CKEDITOR.env.ie){b.focus();g();var a=b.focusManager;a.lock();if(b.editable().fire(p)&&!h(\"paste\"))return a.unlock(),\n!1;a.unlock()}else try{if(b.editable().fire(p)&&!b.document.$.execCommand(\"Paste\",!1,null))throw 0;}catch(d){return!1}return!0}function o(a){if(\"wysiwyg\"==b.mode)switch(a.data.keyCode){case CKEDITOR.CTRL+86:case CKEDITOR.SHIFT+45:a=b.editable();g();!CKEDITOR.env.ie&&a.fire(\"beforepaste\");break;case CKEDITOR.CTRL+88:case CKEDITOR.SHIFT+46:b.fire(\"saveSnapshot\"),setTimeout(function(){b.fire(\"saveSnapshot\")},50)}}function u(a){var d={type:\"auto\"},c=b.fire(\"beforePaste\",d);l(a,function(b){b=b.replace(/<span[^>]+data-cke-bookmark[^<]*?<\\/span>/ig,\n\"\");c&&f(d.type,b,0,1)})}function r(){if(\"wysiwyg\"==b.mode){var a=m(\"paste\");b.getCommand(\"cut\").setState(m(\"cut\"));b.getCommand(\"copy\").setState(m(\"copy\"));b.getCommand(\"paste\").setState(a);b.fire(\"pasteState\",a)}}function m(a){if(t&&a in{paste:1,cut:1})return CKEDITOR.TRISTATE_DISABLED;if(\"paste\"==a)return CKEDITOR.TRISTATE_OFF;var a=b.getSelection(),d=a.getRanges();return a.getType()==CKEDITOR.SELECTION_NONE||1==d.length&&d[0].collapsed?CKEDITOR.TRISTATE_DISABLED:CKEDITOR.TRISTATE_OFF}var n=0,\nq=0,t=0,p=CKEDITOR.env.ie?\"beforepaste\":\"paste\";(function(){b.on(\"key\",o);b.on(\"contentDom\",a);b.on(\"selectionChange\",function(b){t=b.data.selection.getRanges()[0].checkReadOnly();r()});b.contextMenu&&b.contextMenu.addListener(function(b,a){t=a.getRanges()[0].checkReadOnly();return{cut:m(\"cut\"),copy:m(\"copy\"),paste:m(\"paste\")}})})();(function(){function a(d,c,j,e,l){var g=b.lang.clipboard[c];b.addCommand(c,j);b.ui.addButton&&b.ui.addButton(d,{label:g,command:c,toolbar:\"clipboard,\"+e});b.addMenuItems&&\nb.addMenuItem(c,{label:g,command:c,group:\"clipboard\",order:l})}a(\"Cut\",\"cut\",c(\"cut\"),10,1);a(\"Copy\",\"copy\",c(\"copy\"),20,4);a(\"Paste\",\"paste\",d(),30,8)})();b.getClipboardData=function(a,d){function c(a){a.removeListener();a.cancel();d(a.data)}function j(a){a.removeListener();a.cancel();i=!0;d({type:f,dataValue:a.data})}function l(){this.customTitle=a&&a.title}var g=!1,f=\"auto\",i=!1;d||(d=a,a=null);b.on(\"paste\",c,null,null,0);b.on(\"beforePaste\",function(a){a.removeListener();g=true;f=a.data.type},\nnull,null,1E3);!1===s()&&(b.removeListener(\"paste\",c),g&&b.fire(\"pasteDialog\",l)?(b.on(\"pasteDialogCommit\",j),b.on(\"dialogHide\",function(a){a.removeListener();a.data.removeListener(\"pasteDialogCommit\",j);setTimeout(function(){i||d(null)},10)})):d(null))}}function w(b){if(CKEDITOR.env.webkit){if(!b.match(/^[^<]*$/g)&&!b.match(/^(<div><br( ?\\/)?><\\/div>|<div>[^<]*<\\/div>)*$/gi))return\"html\"}else if(CKEDITOR.env.ie){if(!b.match(/^([^<]|<br( ?\\/)?>)*$/gi)&&!b.match(/^(<p>([^<]|<br( ?\\/)?>)*<\\/p>|(\\r\\n))*$/gi))return\"html\"}else if(CKEDITOR.env.gecko){if(!b.match(/^([^<]|<br( ?\\/)?>)*$/gi))return\"html\"}else return\"html\";\nreturn\"htmlifiedtext\"}function x(b,a){function c(a){return CKEDITOR.tools.repeat(\"</p><p>\",~~(a/2))+(1==a%2?\"<br>\":\"\")}a=a.replace(/\\s+/g,\" \").replace(/> +</g,\"><\").replace(/<br ?\\/>/gi,\"<br>\");a=a.replace(/<\\/?[A-Z]+>/g,function(a){return a.toLowerCase()});if(a.match(/^[^<]$/))return a;CKEDITOR.env.webkit&&-1<a.indexOf(\"<div>\")&&(a=a.replace(/^(<div>(<br>|)<\\/div>)(?!$|(<div>(<br>|)<\\/div>))/g,\"<br>\").replace(/^(<div>(<br>|)<\\/div>){2}(?!$)/g,\"<div></div>\"),a.match(/<div>(<br>|)<\\/div>/)&&(a=\"<p>\"+\na.replace(/(<div>(<br>|)<\\/div>)+/g,function(a){return c(a.split(\"</div><div>\").length+1)})+\"</p>\"),a=a.replace(/<\\/div><div>/g,\"<br>\"),a=a.replace(/<\\/?div>/g,\"\"));CKEDITOR.env.gecko&&b.enterMode!=CKEDITOR.ENTER_BR&&(CKEDITOR.env.gecko&&(a=a.replace(/^<br><br>$/,\"<br>\")),-1<a.indexOf(\"<br><br>\")&&(a=\"<p>\"+a.replace(/(<br>){2,}/g,function(a){return c(a.length/4)})+\"</p>\"));return o(b,a)}function y(){var b=new CKEDITOR.htmlParser.filter,a={blockquote:1,dl:1,fieldset:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,\nol:1,p:1,table:1,ul:1},c=CKEDITOR.tools.extend({br:0},CKEDITOR.dtd.$inline),d={p:1,br:1,\"cke:br\":1},g=CKEDITOR.dtd,i=CKEDITOR.tools.extend({area:1,basefont:1,embed:1,iframe:1,map:1,object:1,param:1},CKEDITOR.dtd.$nonBodyContent,CKEDITOR.dtd.$cdata),h=function(a){delete a.name;a.add(new CKEDITOR.htmlParser.text(\" \"))},f=function(a){for(var b=a,c;(b=b.next)&&b.name&&b.name.match(/^h\\d$/);){c=new CKEDITOR.htmlParser.element(\"cke:br\");c.isEmpty=!0;for(a.add(c);c=b.children.shift();)a.add(c)}};b.addRules({elements:{h1:f,\nh2:f,h3:f,h4:f,h5:f,h6:f,img:function(a){var a=CKEDITOR.tools.trim(a.attributes.alt||\"\"),b=\" \";a&&!a.match(/(^http|\\.(jpe?g|gif|png))/i)&&(b=\" [\"+a+\"] \");return new CKEDITOR.htmlParser.text(b)},td:h,th:h,$:function(b){var f=b.name,h;if(i[f])return!1;b.attributes={};if(\"br\"==f)return b;if(a[f])b.name=\"p\";else if(c[f])delete b.name;else if(g[f]){h=new CKEDITOR.htmlParser.element(\"cke:br\");h.isEmpty=!0;if(CKEDITOR.dtd.$empty[f])return h;b.add(h,0);h=h.clone();h.isEmpty=!0;b.add(h);delete b.name}d[b.name]||\ndelete b.name;return b}}},{applyToAll:!0});return b}function z(b,a,c){var a=new CKEDITOR.htmlParser.fragment.fromHtml(a),d=new CKEDITOR.htmlParser.basicWriter;a.writeHtml(d,c);var a=d.getHtml(),a=a.replace(/\\s*(<\\/?[a-z:]+ ?\\/?>)\\s*/g,\"$1\").replace(/(<cke:br \\/>){2,}/g,\"<cke:br />\").replace(/(<cke:br \\/>)(<\\/?p>|<br \\/>)/g,\"$2\").replace(/(<\\/?p>|<br \\/>)(<cke:br \\/>)/g,\"$1\").replace(/<(cke:)?br( \\/)?>/g,\"<br>\").replace(/<p><\\/p>/g,\"\"),g=0,a=a.replace(/<\\/?p>/g,function(a){if(\"<p>\"==a){if(1<++g)return\"</p><p>\"}else if(0<\n--g)return\"</p><p>\";return a}).replace(/<p><\\/p>/g,\"\");return o(b,a)}function o(b,a){b.enterMode==CKEDITOR.ENTER_BR?a=a.replace(/(<\\/p><p>)+/g,function(a){return CKEDITOR.tools.repeat(\"<br>\",2*(a.length/7))}).replace(/<\\/?p>/g,\"\"):b.enterMode==CKEDITOR.ENTER_DIV&&(a=a.replace(/<(\\/)?p>/g,\"<$1div>\"));return a}CKEDITOR.plugins.add(\"clipboard\",{requires:\"dialog\",init:function(b){var a;v(b);CKEDITOR.dialog.add(\"paste\",CKEDITOR.getUrl(this.path+\"dialogs/paste.js\"));b.on(\"paste\",function(a){var b=a.data.dataValue,\ng=CKEDITOR.dtd.$block;-1<b.indexOf(\"Apple-\")&&(b=b.replace(/<span class=\"Apple-converted-space\">&nbsp;<\\/span>/gi,\" \"),\"html\"!=a.data.type&&(b=b.replace(/<span class=\"Apple-tab-span\"[^>]*>([^<]*)<\\/span>/gi,function(a,b){return b.replace(/\\t/g,\"&nbsp;&nbsp; &nbsp;\")})),-1<b.indexOf('<br class=\"Apple-interchange-newline\">')&&(a.data.startsWithEOL=1,a.data.preSniffing=\"html\",b=b.replace(/<br class=\"Apple-interchange-newline\">/,\"\")),b=b.replace(/(<[^>]+) class=\"Apple-[^\"]*\"/gi,\"$1\"));if(b.match(/^<[^<]+cke_(editable|contents)/i)){var i,\nh,f=new CKEDITOR.dom.element(\"div\");for(f.setHtml(b);1==f.getChildCount()&&(i=f.getFirst())&&i.type==CKEDITOR.NODE_ELEMENT&&(i.hasClass(\"cke_editable\")||i.hasClass(\"cke_contents\"));)f=h=i;h&&(b=h.getHtml().replace(/<br>$/i,\"\"))}CKEDITOR.env.ie?b=b.replace(/^&nbsp;(?: |\\r\\n)?<(\\w+)/g,function(b,d){if(d.toLowerCase()in g){a.data.preSniffing=\"html\";return\"<\"+d}return b}):CKEDITOR.env.webkit?b=b.replace(/<\\/(\\w+)><div><br><\\/div>$/,function(b,d){if(d in g){a.data.endsWithEOL=1;return\"</\"+d+\">\"}return b}):\nCKEDITOR.env.gecko&&(b=b.replace(/(\\s)<br>$/,\"$1\"));a.data.dataValue=b},null,null,3);b.on(\"paste\",function(c){var c=c.data,d=c.type,g=c.dataValue,i,h=b.config.clipboard_defaultContentType||\"html\";i=\"html\"==d||\"html\"==c.preSniffing?\"html\":w(g);\"htmlifiedtext\"==i?g=x(b.config,g):\"text\"==d&&\"html\"==i&&(g=z(b.config,g,a||(a=y(b))));c.startsWithEOL&&(g='<br data-cke-eol=\"1\">'+g);c.endsWithEOL&&(g+='<br data-cke-eol=\"1\">');\"auto\"==d&&(d=\"html\"==i||\"html\"==h?\"html\":\"text\");c.type=d;c.dataValue=g;delete c.preSniffing;\ndelete c.startsWithEOL;delete c.endsWithEOL},null,null,6);b.on(\"paste\",function(a){a=a.data;b.insertHtml(a.dataValue,a.type);setTimeout(function(){b.fire(\"afterPaste\")},0)},null,null,1E3);b.on(\"pasteDialog\",function(a){setTimeout(function(){b.openDialog(\"paste\",a.data)},0)})}})})();(function(){var c='<a id=\"{id}\" class=\"cke_button cke_button__{name} cke_button_{state} {cls}\"'+(CKEDITOR.env.gecko&&!CKEDITOR.env.hc?\"\":\" href=\\\"javascript:void('{titleJs}')\\\"\")+' title=\"{title}\" tabindex=\"-1\" hidefocus=\"true\" role=\"button\" aria-labelledby=\"{id}_label\" aria-haspopup=\"{hasArrow}\" aria-disabled=\"{ariaDisabled}\"';CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(c+=' onkeypress=\"return false;\"');CKEDITOR.env.gecko&&(c+=' onblur=\"this.style.cssText = this.style.cssText;\"');var c=c+(' onkeydown=\"return CKEDITOR.tools.callFunction({keydownFn},event);\" onfocus=\"return CKEDITOR.tools.callFunction({focusFn},event);\" '+\n(CKEDITOR.env.ie?'onclick=\"return false;\" onmouseup':\"onclick\")+'=\"CKEDITOR.tools.callFunction({clickFn},this);return false;\"><span class=\"cke_button_icon cke_button__{iconName}_icon\" style=\"{style}\"'),c=c+'>&nbsp;</span><span id=\"{id}_label\" class=\"cke_button_label cke_button__{name}_label\" aria-hidden=\"false\">{label}</span>{arrowHtml}</a>',m=CKEDITOR.addTemplate(\"buttonArrow\",'<span class=\"cke_button_arrow\">'+(CKEDITOR.env.hc?\"&#9660;\":\"\")+\"</span>\"),n=CKEDITOR.addTemplate(\"button\",c);CKEDITOR.plugins.add(\"button\",\n{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_BUTTON,CKEDITOR.ui.button.handler)}});CKEDITOR.UI_BUTTON=\"button\";CKEDITOR.ui.button=function(a){CKEDITOR.tools.extend(this,a,{title:a.label,click:a.click||function(b){b.execCommand(a.command)}});this._={}};CKEDITOR.ui.button.handler={create:function(a){return new CKEDITOR.ui.button(a)}};CKEDITOR.ui.button.prototype={render:function(a,b){var c=CKEDITOR.env,i=this._.id=CKEDITOR.tools.getNextId(),f=\"\",e=this.command,k;this._.editor=a;var d={id:i,button:this,\neditor:a,focus:function(){CKEDITOR.document.getById(i).focus()},execute:function(){this.button.click(a)},attach:function(a){this.button.attach(a)}},o=CKEDITOR.tools.addFunction(function(a){if(d.onkey)return a=new CKEDITOR.dom.event(a),!1!==d.onkey(d,a.getKeystroke())}),p=CKEDITOR.tools.addFunction(function(a){var b;d.onfocus&&(b=!1!==d.onfocus(d,new CKEDITOR.dom.event(a)));return b}),l=0;d.clickFn=k=CKEDITOR.tools.addFunction(function(){l&&(a.unlockSelection(1),l=0);d.execute()});if(this.modes){var j=\n{},g=function(){var b=a.mode;b&&(b=this.modes[b]?void 0!=j[b]?j[b]:CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,b=a.readOnly&&!this.readOnly?CKEDITOR.TRISTATE_DISABLED:b,this.setState(b),this.refresh&&this.refresh())};a.on(\"beforeModeUnload\",function(){a.mode&&this._.state!=CKEDITOR.TRISTATE_DISABLED&&(j[a.mode]=this._.state)},this);a.on(\"activeFilterChange\",g,this);a.on(\"mode\",g,this);!this.readOnly&&a.on(\"readOnly\",g,this)}else if(e&&(e=a.getCommand(e)))e.on(\"state\",function(){this.setState(e.state)},\nthis),f+=e.state==CKEDITOR.TRISTATE_ON?\"on\":e.state==CKEDITOR.TRISTATE_DISABLED?\"disabled\":\"off\";if(this.directional)a.on(\"contentDirChanged\",function(b){var c=CKEDITOR.document.getById(this._.id),d=c.getFirst(),b=b.data;b!=a.lang.dir?c.addClass(\"cke_\"+b):c.removeClass(\"cke_ltr\").removeClass(\"cke_rtl\");d.setAttribute(\"style\",CKEDITOR.skin.getIconStyle(h,\"rtl\"==b,this.icon,this.iconOffset))},this);e||(f+=\"off\");var h=g=this.name||this.command;this.icon&&!/\\./.test(this.icon)&&(h=this.icon,this.icon=\nnull);c={id:i,name:g,iconName:h,label:this.label,cls:this.className||\"\",state:f,ariaDisabled:\"disabled\"==f?\"true\":\"false\",title:this.title,titleJs:c.gecko&&!c.hc?\"\":(this.title||\"\").replace(\"'\",\"\"),hasArrow:this.hasArrow?\"true\":\"false\",keydownFn:o,focusFn:p,clickFn:k,style:CKEDITOR.skin.getIconStyle(h,\"rtl\"==a.lang.dir,this.icon,this.iconOffset),arrowHtml:this.hasArrow?m.output():\"\"};n.output(c,b);if(this.onRender)this.onRender();return d},setState:function(a){if(this._.state==a)return!1;this._.state=\na;var b=CKEDITOR.document.getById(this._.id);return b?(b.setState(a,\"cke_button\"),a==CKEDITOR.TRISTATE_DISABLED?b.setAttribute(\"aria-disabled\",!0):b.removeAttribute(\"aria-disabled\"),this.hasArrow?(a=a==CKEDITOR.TRISTATE_ON?this._.editor.lang.button.selectedLabel.replace(/%1/g,this.label):this.label,CKEDITOR.document.getById(this._.id+\"_label\").setText(a)):a==CKEDITOR.TRISTATE_ON?b.setAttribute(\"aria-pressed\",!0):b.removeAttribute(\"aria-pressed\"),!0):!1},getState:function(){return this._.state},toFeature:function(a){if(this._.feature)return this._.feature;\nvar b=this;!this.allowedContent&&(!this.requiredContent&&this.command)&&(b=a.getCommand(this.command)||b);return this._.feature=b}};CKEDITOR.ui.prototype.addButton=function(a,b){this.add(a,CKEDITOR.UI_BUTTON,b)}})();CKEDITOR.plugins.add(\"panelbutton\",{requires:\"button\",onLoad:function(){function e(c){var a=this._;a.state!=CKEDITOR.TRISTATE_DISABLED&&(this.createPanel(c),a.on?a.panel.hide():a.panel.showBlock(this._.id,this.document.getById(this._.id),4))}CKEDITOR.ui.panelButton=CKEDITOR.tools.createClass({base:CKEDITOR.ui.button,$:function(c){var a=c.panel||{};delete c.panel;this.base(c);this.document=a.parent&&a.parent.getDocument()||CKEDITOR.document;a.block={attributes:a.attributes};this.hasArrow=a.toolbarRelated=\n!0;this.click=e;this._={panelDefinition:a}},statics:{handler:{create:function(c){return new CKEDITOR.ui.panelButton(c)}}},proto:{createPanel:function(c){var a=this._;if(!a.panel){var f=this._.panelDefinition,e=this._.panelDefinition.block,g=f.parent||CKEDITOR.document.getBody(),d=this._.panel=new CKEDITOR.ui.floatPanel(c,g,f),f=d.addBlock(a.id,e),b=this;d.onShow=function(){b.className&&this.element.addClass(b.className+\"_panel\");b.setState(CKEDITOR.TRISTATE_ON);a.on=1;b.editorFocus&&c.focus();if(b.onOpen)b.onOpen()};\nd.onHide=function(d){b.className&&this.element.getFirst().removeClass(b.className+\"_panel\");b.setState(b.modes&&b.modes[c.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);a.on=0;if(!d&&b.onClose)b.onClose()};d.onEscape=function(){d.hide(1);b.document.getById(a.id).focus()};if(this.onBlock)this.onBlock(d,f);f.onHide=function(){a.on=0;b.setState(CKEDITOR.TRISTATE_OFF)}}}}})},beforeInit:function(e){e.ui.addHandler(CKEDITOR.UI_PANELBUTTON,CKEDITOR.ui.panelButton.handler)}});\nCKEDITOR.UI_PANELBUTTON=\"panelbutton\";(function(){CKEDITOR.plugins.add(\"panel\",{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_PANEL,CKEDITOR.ui.panel.handler)}});CKEDITOR.UI_PANEL=\"panel\";CKEDITOR.ui.panel=function(a,b){b&&CKEDITOR.tools.extend(this,b);CKEDITOR.tools.extend(this,{className:\"\",css:[]});this.id=CKEDITOR.tools.getNextId();this.document=a;this.isFramed=this.forceIFrame||this.css.length;this._={blocks:{}}};CKEDITOR.ui.panel.handler={create:function(a){return new CKEDITOR.ui.panel(a)}};var f=CKEDITOR.addTemplate(\"panel\",\n'<div lang=\"{langCode}\" id=\"{id}\" dir={dir} class=\"cke cke_reset_all {editorId} cke_panel cke_panel {cls} cke_{dir}\" style=\"z-index:{z-index}\" role=\"presentation\">{frame}</div>'),g=CKEDITOR.addTemplate(\"panel-frame\",'<iframe id=\"{id}\" class=\"cke_panel_frame\" role=\"presentation\" frameborder=\"0\" src=\"{src}\"></iframe>'),h=CKEDITOR.addTemplate(\"panel-frame-inner\",'<!DOCTYPE html><html class=\"cke_panel_container {env}\" dir=\"{dir}\" lang=\"{langCode}\"><head>{css}</head><body class=\"cke_{dir}\" style=\"margin:0;padding:0\" onload=\"{onload}\"></body></html>');\nCKEDITOR.ui.panel.prototype={render:function(a,b){this.getHolderElement=function(){var a=this._.holder;if(!a){if(this.isFramed){var a=this.document.getById(this.id+\"_frame\"),b=a.getParent(),a=a.getFrameDocument();CKEDITOR.env.iOS&&b.setStyles({overflow:\"scroll\",\"-webkit-overflow-scrolling\":\"touch\"});b=CKEDITOR.tools.addFunction(CKEDITOR.tools.bind(function(){this.isLoaded=!0;if(this.onLoad)this.onLoad()},this));a.write(h.output(CKEDITOR.tools.extend({css:CKEDITOR.tools.buildStyleHtml(this.css),onload:\"window.parent.CKEDITOR.tools.callFunction(\"+\nb+\");\"},d)));a.getWindow().$.CKEDITOR=CKEDITOR;a.on(\"keydown\",function(a){var b=a.data.getKeystroke(),c=this.document.getById(this.id).getAttribute(\"dir\");this._.onKeyDown&&!1===this._.onKeyDown(b)?a.data.preventDefault():(27==b||b==(\"rtl\"==c?39:37))&&this.onEscape&&!1===this.onEscape(b)&&a.data.preventDefault()},this);a=a.getBody();a.unselectable();CKEDITOR.env.air&&CKEDITOR.tools.callFunction(b)}else a=this.document.getById(this.id);this._.holder=a}return a};var d={editorId:a.id,id:this.id,langCode:a.langCode,\ndir:a.lang.dir,cls:this.className,frame:\"\",env:CKEDITOR.env.cssClass,\"z-index\":a.config.baseFloatZIndex+1};if(this.isFramed){var e=CKEDITOR.env.air?\"javascript:void(0)\":CKEDITOR.env.ie?\"javascript:void(function(){\"+encodeURIComponent(\"document.open();(\"+CKEDITOR.tools.fixDomain+\")();document.close();\")+\"}())\":\"\";d.frame=g.output({id:this.id+\"_frame\",src:e})}e=f.output(d);b&&b.push(e);return e},addBlock:function(a,b){b=this._.blocks[a]=b instanceof CKEDITOR.ui.panel.block?b:new CKEDITOR.ui.panel.block(this.getHolderElement(),\nb);this._.currentBlock||this.showBlock(a);return b},getBlock:function(a){return this._.blocks[a]},showBlock:function(a){var a=this._.blocks[a],b=this._.currentBlock,d=!this.forceIFrame||CKEDITOR.env.ie?this._.holder:this.document.getById(this.id+\"_frame\");b&&b.hide();this._.currentBlock=a;CKEDITOR.fire(\"ariaWidget\",d);a._.focusIndex=-1;this._.onKeyDown=a.onKeyDown&&CKEDITOR.tools.bind(a.onKeyDown,a);a.show();return a},destroy:function(){this.element&&this.element.remove()}};CKEDITOR.ui.panel.block=\nCKEDITOR.tools.createClass({$:function(a,b){this.element=a.append(a.getDocument().createElement(\"div\",{attributes:{tabindex:-1,\"class\":\"cke_panel_block\"},styles:{display:\"none\"}}));b&&CKEDITOR.tools.extend(this,b);this.element.setAttributes({role:this.attributes.role||\"presentation\",\"aria-label\":this.attributes[\"aria-label\"],title:this.attributes.title||this.attributes[\"aria-label\"]});this.keys={};this._.focusIndex=-1;this.element.disableContextMenu()},_:{markItem:function(a){-1!=a&&(a=this.element.getElementsByTag(\"a\").getItem(this._.focusIndex=\na),CKEDITOR.env.webkit&&a.getDocument().getWindow().focus(),a.focus(),this.onMark&&this.onMark(a))}},proto:{show:function(){this.element.setStyle(\"display\",\"\")},hide:function(){(!this.onHide||!0!==this.onHide.call(this))&&this.element.setStyle(\"display\",\"none\")},onKeyDown:function(a,b){var d=this.keys[a];switch(d){case \"next\":for(var e=this._.focusIndex,d=this.element.getElementsByTag(\"a\"),c;c=d.getItem(++e);)if(c.getAttribute(\"_cke_focus\")&&c.$.offsetWidth){this._.focusIndex=e;c.focus();break}return!c&&\n!b?(this._.focusIndex=-1,this.onKeyDown(a,1)):!1;case \"prev\":e=this._.focusIndex;for(d=this.element.getElementsByTag(\"a\");0<e&&(c=d.getItem(--e));){if(c.getAttribute(\"_cke_focus\")&&c.$.offsetWidth){this._.focusIndex=e;c.focus();break}c=null}return!c&&!b?(this._.focusIndex=d.count(),this.onKeyDown(a,1)):!1;case \"click\":case \"mouseup\":return e=this._.focusIndex,(c=0<=e&&this.element.getElementsByTag(\"a\").getItem(e))&&(c.$[d]?c.$[d]():c.$[\"on\"+d]()),!1}return!0}}})})();CKEDITOR.plugins.add(\"floatpanel\",{requires:\"panel\"});\n(function(){function r(a,b,c,i,f){var f=CKEDITOR.tools.genKey(b.getUniqueId(),c.getUniqueId(),a.lang.dir,a.uiColor||\"\",i.css||\"\",f||\"\"),h=g[f];h||(h=g[f]=new CKEDITOR.ui.panel(b,i),h.element=c.append(CKEDITOR.dom.element.createFromHtml(h.render(a),b)),h.element.setStyles({display:\"none\",position:\"absolute\"}));return h}var g={};CKEDITOR.ui.floatPanel=CKEDITOR.tools.createClass({$:function(a,b,c,i){function f(){d.hide()}c.forceIFrame=1;c.toolbarRelated&&a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&&\n(b=CKEDITOR.document.getById(\"cke_\"+a.name));var h=b.getDocument(),i=r(a,h,b,c,i||0),j=i.element,l=j.getFirst(),d=this;j.disableContextMenu();this.element=j;this._={editor:a,panel:i,parentElement:b,definition:c,document:h,iframe:l,children:[],dir:a.lang.dir};a.on(\"mode\",f);a.on(\"resize\",f);if(!CKEDITOR.env.iOS)h.getWindow().on(\"resize\",f)},proto:{addBlock:function(a,b){return this._.panel.addBlock(a,b)},addListBlock:function(a,b){return this._.panel.addListBlock(a,b)},getBlock:function(a){return this._.panel.getBlock(a)},\nshowBlock:function(a,b,c,i,f,h){var j=this._.panel,l=j.showBlock(a);this.allowBlur(!1);a=this._.editor.editable();this._.returnFocus=a.hasFocus?a:new CKEDITOR.dom.element(CKEDITOR.document.$.activeElement);this._.hideTimeout=0;var d=this.element,a=this._.iframe,a=CKEDITOR.env.ie?a:new CKEDITOR.dom.window(a.$.contentWindow),g=d.getDocument(),o=this._.parentElement.getPositionedAncestor(),p=b.getDocumentPosition(g),g=o?o.getDocumentPosition(g):{x:0,y:0},m=\"rtl\"==this._.dir,e=p.x+(i||0)-g.x,k=p.y+(f||\n0)-g.y;if(m&&(1==c||4==c))e+=b.$.offsetWidth;else if(!m&&(2==c||3==c))e+=b.$.offsetWidth-1;if(3==c||4==c)k+=b.$.offsetHeight-1;this._.panel._.offsetParentId=b.getId();d.setStyles({top:k+\"px\",left:0,display:\"\"});d.setOpacity(0);d.getFirst().removeStyle(\"width\");this._.editor.focusManager.add(a);this._.blurSet||(CKEDITOR.event.useCapture=!0,a.on(\"blur\",function(a){function q(){delete this._.returnFocus;this.hide()}this.allowBlur()&&a.data.getPhase()==CKEDITOR.EVENT_PHASE_AT_TARGET&&(this.visible&&!this._.activeChild)&&\n(CKEDITOR.env.iOS?this._.hideTimeout||(this._.hideTimeout=CKEDITOR.tools.setTimeout(q,0,this)):q.call(this))},this),a.on(\"focus\",function(){this._.focused=!0;this.hideChild();this.allowBlur(!0)},this),CKEDITOR.env.iOS&&(a.on(\"touchstart\",function(){clearTimeout(this._.hideTimeout)},this),a.on(\"touchend\",function(){this._.hideTimeout=0;this.focus()},this)),CKEDITOR.event.useCapture=!1,this._.blurSet=1);j.onEscape=CKEDITOR.tools.bind(function(a){if(this.onEscape&&this.onEscape(a)===false)return false},\nthis);CKEDITOR.tools.setTimeout(function(){var a=CKEDITOR.tools.bind(function(){d.removeStyle(\"width\");if(l.autoSize){var a=l.element.getDocument(),a=(CKEDITOR.env.webkit?l.element:a.getBody()).$.scrollWidth;CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&a>0)&&(a=a+((d.$.offsetWidth||0)-(d.$.clientWidth||0)+3));d.setStyle(\"width\",a+10+\"px\");a=l.element.$.scrollHeight;CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&a>0)&&(a=a+((d.$.offsetHeight||0)-(d.$.clientHeight||0)+3));d.setStyle(\"height\",a+\"px\");j._.currentBlock.element.setStyle(\"display\",\n\"none\").removeStyle(\"display\")}else d.removeStyle(\"height\");m&&(e=e-d.$.offsetWidth);d.setStyle(\"left\",e+\"px\");var b=j.element.getWindow(),a=d.$.getBoundingClientRect(),b=b.getViewPaneSize(),c=a.width||a.right-a.left,f=a.height||a.bottom-a.top,i=m?a.right:b.width-a.left,g=m?b.width-a.right:a.left;m?i<c&&(e=g>c?e+c:b.width>c?e-a.left:e-a.right+b.width):i<c&&(e=g>c?e-c:b.width>c?e-a.right+b.width:e-a.left);c=a.top;b.height-a.top<f&&(k=c>f?k-f:b.height>f?k-a.bottom+b.height:k-a.top);if(CKEDITOR.env.ie){b=\na=new CKEDITOR.dom.element(d.$.offsetParent);b.getName()==\"html\"&&(b=b.getDocument().getBody());b.getComputedStyle(\"direction\")==\"rtl\"&&(e=CKEDITOR.env.ie8Compat?e-d.getDocument().getDocumentElement().$.scrollLeft*2:e-(a.$.scrollWidth-a.$.clientWidth))}var a=d.getFirst(),n;(n=a.getCustomData(\"activePanel\"))&&n.onHide&&n.onHide.call(this,1);a.setCustomData(\"activePanel\",this);d.setStyles({top:k+\"px\",left:e+\"px\"});d.setOpacity(1);h&&h()},this);j.isLoaded?a():j.onLoad=a;CKEDITOR.tools.setTimeout(function(){var a=\nCKEDITOR.env.webkit&&CKEDITOR.document.getWindow().getScrollPosition().y;this.focus();l.element.focus();if(CKEDITOR.env.webkit)CKEDITOR.document.getBody().$.scrollTop=a;this.allowBlur(true);this._.editor.fire(\"panelShow\",this)},0,this)},CKEDITOR.env.air?200:0,this);this.visible=1;this.onShow&&this.onShow.call(this)},focus:function(){if(CKEDITOR.env.webkit){var a=CKEDITOR.document.getActive();!a.equals(this._.iframe)&&a.$.blur()}(this._.lastFocused||this._.iframe.getFrameDocument().getWindow()).focus()},\nblur:function(){var a=this._.iframe.getFrameDocument().getActive();a.is(\"a\")&&(this._.lastFocused=a)},hide:function(a){if(this.visible&&(!this.onHide||!0!==this.onHide.call(this))){this.hideChild();CKEDITOR.env.gecko&&this._.iframe.getFrameDocument().$.activeElement.blur();this.element.setStyle(\"display\",\"none\");this.visible=0;this.element.getFirst().removeCustomData(\"activePanel\");if(a=a&&this._.returnFocus)CKEDITOR.env.webkit&&a.type&&a.getWindow().$.focus(),a.focus();delete this._.lastFocused;\nthis._.editor.fire(\"panelHide\",this)}},allowBlur:function(a){var b=this._.panel;void 0!=a&&(b.allowBlur=a);return b.allowBlur},showAsChild:function(a,b,c,g,f,h){this._.activeChild==a&&a._.panel._.offsetParentId==c.getId()||(this.hideChild(),a.onHide=CKEDITOR.tools.bind(function(){CKEDITOR.tools.setTimeout(function(){this._.focused||this.hide()},0,this)},this),this._.activeChild=a,this._.focused=!1,a.showBlock(b,c,g,f,h),this.blur(),(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)&&setTimeout(function(){a.element.getChild(0).$.style.cssText+=\n\"\"},100))},hideChild:function(a){var b=this._.activeChild;b&&(delete b.onHide,delete this._.activeChild,b.hide(),a&&this.focus())}}});CKEDITOR.on(\"instanceDestroyed\",function(){var a=CKEDITOR.tools.isEmpty(CKEDITOR.instances),b;for(b in g){var c=g[b];a?c.destroy():c.element.hide()}a&&(g={})})})();CKEDITOR.plugins.add(\"colorbutton\",{requires:\"panelbutton,floatpanel\",init:function(c){function m(l,g,e,h){var j=new CKEDITOR.style(i[\"colorButton_\"+g+\"Style\"]),k=CKEDITOR.tools.getNextId()+\"_colorBox\";c.ui.add(l,CKEDITOR.UI_PANELBUTTON,{label:e,title:e,modes:{wysiwyg:1},editorFocus:0,toolbar:\"colors,\"+h,allowedContent:j,requiredContent:j,panel:{css:CKEDITOR.skin.getPath(\"editor\"),attributes:{role:\"listbox\",\"aria-label\":f.panelTitle}},onBlock:function(a,b){b.autoSize=!0;b.element.addClass(\"cke_colorblock\");\nb.element.setHtml(o(a,g,k));b.element.getDocument().getBody().setStyle(\"overflow\",\"hidden\");CKEDITOR.ui.fire(\"ready\",this);var d=b.keys,e=\"rtl\"==c.lang.dir;d[e?37:39]=\"next\";d[40]=\"next\";d[9]=\"next\";d[e?39:37]=\"prev\";d[38]=\"prev\";d[CKEDITOR.SHIFT+9]=\"prev\";d[32]=\"click\"},refresh:function(){c.activeFilter.check(j)||this.setState(CKEDITOR.TRISTATE_DISABLED)},onOpen:function(){var a=c.getSelection(),a=a&&a.getStartElement(),a=c.elementPath(a),b;if(a){a=a.block||a.blockLimit||c.document.getBody();do b=\na&&a.getComputedStyle(\"back\"==g?\"background-color\":\"color\")||\"transparent\";while(\"back\"==g&&\"transparent\"==b&&a&&(a=a.getParent()));if(!b||\"transparent\"==b)b=\"#ffffff\";this._.panel._.iframe.getFrameDocument().getById(k).setStyle(\"background-color\",b);return b}}})}function o(l,g,e){var h=[],j=i.colorButton_colors.split(\",\"),k=CKEDITOR.tools.addFunction(function(a,b){if(\"?\"==a){var e=arguments.callee,d=function(a){this.removeListener(\"ok\",d);this.removeListener(\"cancel\",d);\"ok\"==a.name&&e(this.getContentElement(\"picker\",\n\"selectedColor\").getValue(),b)};c.openDialog(\"colordialog\",function(){this.on(\"ok\",d);this.on(\"cancel\",d)})}else{c.focus();l.hide();c.fire(\"saveSnapshot\");c.removeStyle(new CKEDITOR.style(i[\"colorButton_\"+b+\"Style\"],{color:\"inherit\"}));if(a){var f=i[\"colorButton_\"+b+\"Style\"];f.childRule=\"back\"==b?function(a){return n(a)}:function(a){return!(a.is(\"a\")||a.getElementsByTag(\"a\").count())||n(a)};c.applyStyle(new CKEDITOR.style(f,{color:a}))}c.fire(\"saveSnapshot\")}});h.push('<a class=\"cke_colorauto\" _cke_focus=1 hidefocus=true title=\"',\nf.auto,'\" onclick=\"CKEDITOR.tools.callFunction(',k,\",null,'\",g,\"');return false;\\\" href=\\\"javascript:void('\",f.auto,'\\')\" role=\"option\"><table role=\"presentation\" cellspacing=0 cellpadding=0 width=\"100%\"><tr><td><span class=\"cke_colorbox\" id=\"',e,'\"></span></td><td colspan=7 align=center>',f.auto,'</td></tr></table></a><table role=\"presentation\" cellspacing=0 cellpadding=0 width=\"100%\">');for(e=0;e<j.length;e++){0===e%8&&h.push(\"</tr><tr>\");var a=j[e].split(\"/\"),b=a[0],d=a[1]||b;a[1]||(b=\"#\"+b.replace(/^(.)(.)(.)$/,\n\"$1$1$2$2$3$3\"));a=c.lang.colorbutton.colors[d]||d;h.push('<td><a class=\"cke_colorbox\" _cke_focus=1 hidefocus=true title=\"',a,'\" onclick=\"CKEDITOR.tools.callFunction(',k,\",'\",b,\"','\",g,\"'); return false;\\\" href=\\\"javascript:void('\",a,'\\')\" role=\"option\"><span class=\"cke_colorbox\" style=\"background-color:#',d,'\"></span></a></td>')}(c.plugins.colordialog&&void 0===i.colorButton_enableMore||i.colorButton_enableMore)&&h.push('</tr><tr><td colspan=8 align=center><a class=\"cke_colormore\" _cke_focus=1 hidefocus=true title=\"',\nf.more,'\" onclick=\"CKEDITOR.tools.callFunction(',k,\",'?','\",g,\"');return false;\\\" href=\\\"javascript:void('\",f.more,\"')\\\"\",' role=\"option\">',f.more,\"</a></td>\");h.push(\"</tr></table>\");return h.join(\"\")}function n(c){return\"false\"==c.getAttribute(\"contentEditable\")||c.getAttribute(\"data-nostyle\")}var i=c.config,f=c.lang.colorbutton;CKEDITOR.env.hc||(m(\"TextColor\",\"fore\",f.textColorTitle,10),m(\"BGColor\",\"back\",f.bgColorTitle,20))}});CKEDITOR.config.colorButton_colors=\"000,800000,8B4513,2F4F4F,008080,000080,4B0082,696969,B22222,A52A2A,DAA520,006400,40E0D0,0000CD,800080,808080,F00,FF8C00,FFD700,008000,0FF,00F,EE82EE,A9A9A9,FFA07A,FFA500,FFFF00,00FF00,AFEEEE,ADD8E6,DDA0DD,D3D3D3,FFF0F5,FAEBD7,FFFFE0,F0FFF0,F0FFFF,F0F8FF,E6E6FA,FFF\";\nCKEDITOR.config.colorButton_foreStyle={element:\"span\",styles:{color:\"#(color)\"},overrides:[{element:\"font\",attributes:{color:null}}]};CKEDITOR.config.colorButton_backStyle={element:\"span\",styles:{\"background-color\":\"#(color)\"}};CKEDITOR.plugins.colordialog={requires:\"dialog\",init:function(b){var c=new CKEDITOR.dialogCommand(\"colordialog\");c.editorFocus=!1;b.addCommand(\"colordialog\",c);CKEDITOR.dialog.add(\"colordialog\",this.path+\"dialogs/colordialog.js\");b.getColorFromDialog=function(c,f){var d=function(a){this.removeListener(\"ok\",d);this.removeListener(\"cancel\",d);a=\"ok\"==a.name?this.getValueOf(\"picker\",\"selectedColor\"):null;c.call(f,a)},e=function(a){a.on(\"ok\",d);a.on(\"cancel\",d)};b.execCommand(\"colordialog\");if(b._.storedDialogs&&\nb._.storedDialogs.colordialog)e(b._.storedDialogs.colordialog);else CKEDITOR.on(\"dialogDefinition\",function(a){if(\"colordialog\"==a.data.name){var b=a.data.definition;a.removeListener();b.onLoad=CKEDITOR.tools.override(b.onLoad,function(a){return function(){e(this);b.onLoad=a;\"function\"==typeof a&&a.call(this)}})}})}}};CKEDITOR.plugins.add(\"colordialog\",CKEDITOR.plugins.colordialog);(function(){CKEDITOR.plugins.add(\"templates\",{requires:\"dialog\",init:function(a){CKEDITOR.dialog.add(\"templates\",CKEDITOR.getUrl(this.path+\"dialogs/templates.js\"));a.addCommand(\"templates\",new CKEDITOR.dialogCommand(\"templates\"));a.ui.addButton&&a.ui.addButton(\"Templates\",{label:a.lang.templates.button,command:\"templates\",toolbar:\"doctools,10\"})}});var c={},f={};CKEDITOR.addTemplates=function(a,d){c[a]=d};CKEDITOR.getTemplates=function(a){return c[a]};CKEDITOR.loadTemplates=function(a,d){for(var e=\n[],b=0,c=a.length;b<c;b++)f[a[b]]||(e.push(a[b]),f[a[b]]=1);e.length?CKEDITOR.scriptLoader.load(e,d):setTimeout(d,0)}})();CKEDITOR.config.templates_files=[CKEDITOR.getUrl(\"plugins/templates/templates/default.js\")];CKEDITOR.config.templates_replaceContent=!0;CKEDITOR.plugins.add(\"menu\",{requires:\"floatpanel\",beforeInit:function(g){for(var h=g.config.menu_groups.split(\",\"),m=g._.menuGroups={},l=g._.menuItems={},a=0;a<h.length;a++)m[h[a]]=a+1;g.addMenuGroup=function(b,a){m[b]=a||100};g.addMenuItem=function(a,c){m[c.group]&&(l[a]=new CKEDITOR.menuItem(this,a,c))};g.addMenuItems=function(a){for(var c in a)this.addMenuItem(c,a[c])};g.getMenuItem=function(a){return l[a]};g.removeMenuItem=function(a){delete l[a]}}});\n(function(){function g(a){a.sort(function(a,c){return a.group<c.group?-1:a.group>c.group?1:a.order<c.order?-1:a.order>c.order?1:0})}var h='<span class=\"cke_menuitem\"><a id=\"{id}\" class=\"cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}\" href=\"{href}\" title=\"{title}\" tabindex=\"-1\"_cke_focus=1 hidefocus=\"true\" role=\"{role}\" aria-haspopup=\"{hasPopup}\" aria-disabled=\"{disabled}\" {ariaChecked}';CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(h+=' onkeypress=\"return false;\"');CKEDITOR.env.gecko&&\n(h+=' onblur=\"this.style.cssText = this.style.cssText;\"');var h=h+(' onmouseover=\"CKEDITOR.tools.callFunction({hoverFn},{index});\" onmouseout=\"CKEDITOR.tools.callFunction({moveOutFn},{index});\" '+(CKEDITOR.env.ie?'onclick=\"return false;\" onmouseup':\"onclick\")+'=\"CKEDITOR.tools.callFunction({clickFn},{index}); return false;\">'),m=CKEDITOR.addTemplate(\"menuItem\",h+'<span class=\"cke_menubutton_inner\"><span class=\"cke_menubutton_icon\"><span class=\"cke_button_icon cke_button__{iconName}_icon\" style=\"{iconStyle}\"></span></span><span class=\"cke_menubutton_label\">{label}</span>{arrowHtml}</span></a></span>'),\nl=CKEDITOR.addTemplate(\"menuArrow\",'<span class=\"cke_menuarrow\"><span>{label}</span></span>');CKEDITOR.menu=CKEDITOR.tools.createClass({$:function(a,b){b=this._.definition=b||{};this.id=CKEDITOR.tools.getNextId();this.editor=a;this.items=[];this._.listeners=[];this._.level=b.level||1;var c=CKEDITOR.tools.extend({},b.panel,{css:[CKEDITOR.skin.getPath(\"editor\")],level:this._.level-1,block:{}}),k=c.block.attributes=c.attributes||{};!k.role&&(k.role=\"menu\");this._.panelDefinition=c},_:{onShow:function(){var a=\nthis.editor.getSelection(),b=a&&a.getStartElement(),c=this.editor.elementPath(),k=this._.listeners;this.removeAll();for(var e=0;e<k.length;e++){var j=k[e](b,a,c);if(j)for(var i in j){var f=this.editor.getMenuItem(i);if(f&&(!f.command||this.editor.getCommand(f.command).state))f.state=j[i],this.add(f)}}},onClick:function(a){this.hide();if(a.onClick)a.onClick();else a.command&&this.editor.execCommand(a.command)},onEscape:function(a){var b=this.parent;b?b._.panel.hideChild(1):27==a&&this.hide(1);return!1},\nonHide:function(){this.onHide&&this.onHide()},showSubMenu:function(a){var b=this._.subMenu,c=this.items[a];if(c=c.getItems&&c.getItems()){b?b.removeAll():(b=this._.subMenu=new CKEDITOR.menu(this.editor,CKEDITOR.tools.extend({},this._.definition,{level:this._.level+1},!0)),b.parent=this,b._.onClick=CKEDITOR.tools.bind(this._.onClick,this));for(var k in c){var e=this.editor.getMenuItem(k);e&&(e.state=c[k],b.add(e))}var j=this._.panel.getBlock(this.id).element.getDocument().getById(this.id+(\"\"+a));setTimeout(function(){b.show(j,\n2)},0)}else this._.panel.hideChild(1)}},proto:{add:function(a){a.order||(a.order=this.items.length);this.items.push(a)},removeAll:function(){this.items=[]},show:function(a,b,c,k){if(!this.parent&&(this._.onShow(),!this.items.length))return;var b=b||(\"rtl\"==this.editor.lang.dir?2:1),e=this.items,j=this.editor,i=this._.panel,f=this._.element;if(!i){i=this._.panel=new CKEDITOR.ui.floatPanel(this.editor,CKEDITOR.document.getBody(),this._.panelDefinition,this._.level);i.onEscape=CKEDITOR.tools.bind(function(a){if(!1===\nthis._.onEscape(a))return!1},this);i.onShow=function(){i._.panel.getHolderElement().getParent().addClass(\"cke cke_reset_all\")};i.onHide=CKEDITOR.tools.bind(function(){this._.onHide&&this._.onHide()},this);f=i.addBlock(this.id,this._.panelDefinition.block);f.autoSize=!0;var d=f.keys;d[40]=\"next\";d[9]=\"next\";d[38]=\"prev\";d[CKEDITOR.SHIFT+9]=\"prev\";d[\"rtl\"==j.lang.dir?37:39]=CKEDITOR.env.ie?\"mouseup\":\"click\";d[32]=CKEDITOR.env.ie?\"mouseup\":\"click\";CKEDITOR.env.ie&&(d[13]=\"mouseup\");f=this._.element=\nf.element;d=f.getDocument();d.getBody().setStyle(\"overflow\",\"hidden\");d.getElementsByTag(\"html\").getItem(0).setStyle(\"overflow\",\"hidden\");this._.itemOverFn=CKEDITOR.tools.addFunction(function(a){clearTimeout(this._.showSubTimeout);this._.showSubTimeout=CKEDITOR.tools.setTimeout(this._.showSubMenu,j.config.menu_subMenuDelay||400,this,[a])},this);this._.itemOutFn=CKEDITOR.tools.addFunction(function(){clearTimeout(this._.showSubTimeout)},this);this._.itemClickFn=CKEDITOR.tools.addFunction(function(a){var b=\nthis.items[a];if(b.state==CKEDITOR.TRISTATE_DISABLED)this.hide(1);else if(b.getItems)this._.showSubMenu(a);else this._.onClick(b)},this)}g(e);for(var d=j.elementPath(),d=['<div class=\"cke_menu'+(d&&d.direction()!=j.lang.dir?\" cke_mixed_dir_content\":\"\")+'\" role=\"presentation\">'],h=e.length,m=h&&e[0].group,l=0;l<h;l++){var n=e[l];m!=n.group&&(d.push('<div class=\"cke_menuseparator\" role=\"separator\"></div>'),m=n.group);n.render(this,l,d)}d.push(\"</div>\");f.setHtml(d.join(\"\"));CKEDITOR.ui.fire(\"ready\",\nthis);this.parent?this.parent._.panel.showAsChild(i,this.id,a,b,c,k):i.showBlock(this.id,a,b,c,k);j.fire(\"menuShow\",[i])},addListener:function(a){this._.listeners.push(a)},hide:function(a){this._.onHide&&this._.onHide();this._.panel&&this._.panel.hide(a)}}});CKEDITOR.menuItem=CKEDITOR.tools.createClass({$:function(a,b,c){CKEDITOR.tools.extend(this,c,{order:0,className:\"cke_menubutton__\"+b});this.group=a._.menuGroups[this.group];this.editor=a;this.name=b},proto:{render:function(a,b,c){var h=a.id+(\"\"+\nb),e=\"undefined\"==typeof this.state?CKEDITOR.TRISTATE_OFF:this.state,j=\"\",i=e==CKEDITOR.TRISTATE_ON?\"on\":e==CKEDITOR.TRISTATE_DISABLED?\"disabled\":\"off\";this.role in{menuitemcheckbox:1,menuitemradio:1}&&(j=' aria-checked=\"'+(e==CKEDITOR.TRISTATE_ON?\"true\":\"false\")+'\"');var f=this.getItems,d=\"&#\"+(\"rtl\"==this.editor.lang.dir?\"9668\":\"9658\")+\";\",g=this.name;this.icon&&!/\\./.test(this.icon)&&(g=this.icon);a={id:h,name:this.name,iconName:g,label:this.label,cls:this.className||\"\",state:i,hasPopup:f?\"true\":\n\"false\",disabled:e==CKEDITOR.TRISTATE_DISABLED,title:this.label,href:\"javascript:void('\"+(this.label||\"\").replace(\"'\")+\"')\",hoverFn:a._.itemOverFn,moveOutFn:a._.itemOutFn,clickFn:a._.itemClickFn,index:b,iconStyle:CKEDITOR.skin.getIconStyle(g,\"rtl\"==this.editor.lang.dir,g==this.icon?null:this.icon,this.iconOffset),arrowHtml:f?l.output({label:d}):\"\",role:this.role?this.role:\"menuitem\",ariaChecked:j};m.output(a,c)}}})})();CKEDITOR.config.menu_groups=\"clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div\";CKEDITOR.plugins.add(\"contextmenu\",{requires:\"menu\",onLoad:function(){CKEDITOR.plugins.contextMenu=CKEDITOR.tools.createClass({base:CKEDITOR.menu,$:function(a){this.base.call(this,a,{panel:{className:\"cke_menu_panel\",attributes:{\"aria-label\":a.lang.contextmenu.options}}})},proto:{addTarget:function(a,e){a.on(\"contextmenu\",function(a){var a=a.data,c=CKEDITOR.env.webkit?f:CKEDITOR.env.mac?a.$.metaKey:a.$.ctrlKey;if(!e||!c){a.preventDefault();if(CKEDITOR.env.mac&&CKEDITOR.env.webkit){var c=this.editor,\nb=(new CKEDITOR.dom.elementPath(a.getTarget(),c.editable())).contains(function(a){return a.hasAttribute(\"contenteditable\")},!0);b&&\"false\"==b.getAttribute(\"contenteditable\")&&c.getSelection().fake(b)}var b=a.getTarget().getDocument(),d=a.getTarget().getDocument().getDocumentElement(),c=!b.equals(CKEDITOR.document),b=b.getWindow().getScrollPosition(),g=c?a.$.clientX:a.$.pageX||b.x+a.$.clientX,h=c?a.$.clientY:a.$.pageY||b.y+a.$.clientY;CKEDITOR.tools.setTimeout(function(){this.open(d,null,g,h)},CKEDITOR.env.ie?\n200:0,this)}},this);if(CKEDITOR.env.webkit){var f,d=function(){f=0};a.on(\"keydown\",function(a){f=CKEDITOR.env.mac?a.data.$.metaKey:a.data.$.ctrlKey});a.on(\"keyup\",d);a.on(\"contextmenu\",d)}},open:function(a,e,f,d){this.editor.focus();a=a||CKEDITOR.document.getDocumentElement();this.editor.selectionChange(1);this.show(a,e,f,d)}}})},beforeInit:function(a){var e=a.contextMenu=new CKEDITOR.plugins.contextMenu(a);a.on(\"contentDom\",function(){e.addTarget(a.editable(),!1!==a.config.browserContextMenuOnCtrl)});\na.addCommand(\"contextMenu\",{exec:function(){a.contextMenu.open(a.document.getBody())}});a.setKeystroke(CKEDITOR.SHIFT+121,\"contextMenu\");a.setKeystroke(CKEDITOR.CTRL+CKEDITOR.SHIFT+121,\"contextMenu\")}});(function(){CKEDITOR.plugins.add(\"div\",{requires:\"dialog\",init:function(a){if(!a.blockless){var c=a.lang.div,b=\"div(*)\";CKEDITOR.dialog.isTabEnabled(a,\"editdiv\",\"advanced\")&&(b+=\";div[dir,id,lang,title]{*}\");a.addCommand(\"creatediv\",new CKEDITOR.dialogCommand(\"creatediv\",{allowedContent:b,requiredContent:\"div\",contextSensitive:!0,refresh:function(a,c){this.setState(\"div\"in(a.config.div_wrapTable?c.root:c.blockLimit).getDtd()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)}}));a.addCommand(\"editdiv\",\nnew CKEDITOR.dialogCommand(\"editdiv\",{requiredContent:\"div\"}));a.addCommand(\"removediv\",{requiredContent:\"div\",exec:function(a){function c(b){if((b=CKEDITOR.plugins.div.getSurroundDiv(a,b))&&!b.data(\"cke-div-added\"))f.push(b),b.data(\"cke-div-added\")}for(var b=a.getSelection(),g=b&&b.getRanges(),e,h=b.createBookmarks(),f=[],d=0;d<g.length;d++)e=g[d],e.collapsed?c(b.getStartElement()):(e=new CKEDITOR.dom.walker(e),e.evaluator=c,e.lastForward());for(d=0;d<f.length;d++)f[d].remove(!0);b.selectBookmarks(h)}});\na.ui.addButton&&a.ui.addButton(\"CreateDiv\",{label:c.toolbar,command:\"creatediv\",toolbar:\"blocks,50\"});a.addMenuItems&&(a.addMenuItems({editdiv:{label:c.edit,command:\"editdiv\",group:\"div\",order:1},removediv:{label:c.remove,command:\"removediv\",group:\"div\",order:5}}),a.contextMenu&&a.contextMenu.addListener(function(b){return!b||b.isReadOnly()?null:CKEDITOR.plugins.div.getSurroundDiv(a)?{editdiv:CKEDITOR.TRISTATE_OFF,removediv:CKEDITOR.TRISTATE_OFF}:null}));CKEDITOR.dialog.add(\"creatediv\",this.path+\n\"dialogs/div.js\");CKEDITOR.dialog.add(\"editdiv\",this.path+\"dialogs/div.js\")}}});CKEDITOR.plugins.div={getSurroundDiv:function(a,c){var b=a.elementPath(c);return a.elementPath(b.blockLimit).contains(function(a){return a.is(\"div\")&&!a.isReadOnly()},1)}}})();CKEDITOR.plugins.add(\"resize\",{init:function(b){var f,g,n,o,a=b.config,q=b.ui.spaceId(\"resizer\"),h=b.element?b.element.getDirection(1):\"ltr\";!a.resize_dir&&(a.resize_dir=\"vertical\");void 0==a.resize_maxWidth&&(a.resize_maxWidth=3E3);void 0==a.resize_maxHeight&&(a.resize_maxHeight=3E3);void 0==a.resize_minWidth&&(a.resize_minWidth=750);void 0==a.resize_minHeight&&(a.resize_minHeight=250);if(!1!==a.resize_enabled){var c=null,i=(\"both\"==a.resize_dir||\"horizontal\"==a.resize_dir)&&a.resize_minWidth!=a.resize_maxWidth,\nl=(\"both\"==a.resize_dir||\"vertical\"==a.resize_dir)&&a.resize_minHeight!=a.resize_maxHeight,j=function(d){var e=f,m=g,c=e+(d.data.$.screenX-n)*(\"rtl\"==h?-1:1),d=m+(d.data.$.screenY-o);i&&(e=Math.max(a.resize_minWidth,Math.min(c,a.resize_maxWidth)));l&&(m=Math.max(a.resize_minHeight,Math.min(d,a.resize_maxHeight)));b.resize(i?e:null,m)},k=function(){CKEDITOR.document.removeListener(\"mousemove\",j);CKEDITOR.document.removeListener(\"mouseup\",k);b.document&&(b.document.removeListener(\"mousemove\",j),b.document.removeListener(\"mouseup\",\nk))},p=CKEDITOR.tools.addFunction(function(d){c||(c=b.getResizable());f=c.$.offsetWidth||0;g=c.$.offsetHeight||0;n=d.screenX;o=d.screenY;a.resize_minWidth>f&&(a.resize_minWidth=f);a.resize_minHeight>g&&(a.resize_minHeight=g);CKEDITOR.document.on(\"mousemove\",j);CKEDITOR.document.on(\"mouseup\",k);b.document&&(b.document.on(\"mousemove\",j),b.document.on(\"mouseup\",k));d.preventDefault&&d.preventDefault()});b.on(\"destroy\",function(){CKEDITOR.tools.removeFunction(p)});b.on(\"uiSpace\",function(a){if(\"bottom\"==\na.data.space){var e=\"\";i&&!l&&(e=\" cke_resizer_horizontal\");!i&&l&&(e=\" cke_resizer_vertical\");var c='<span id=\"'+q+'\" class=\"cke_resizer'+e+\" cke_resizer_\"+h+'\" title=\"'+CKEDITOR.tools.htmlEncode(b.lang.common.resize)+'\" onmousedown=\"CKEDITOR.tools.callFunction('+p+', event)\">'+(\"ltr\"==h?\"◢\":\"◣\")+\"</span>\";\"ltr\"==h&&\"ltr\"==e?a.data.html+=c:a.data.html=c+a.data.html}},b,null,100);b.on(\"maximize\",function(a){b.ui.space(\"resizer\")[a.data==CKEDITOR.TRISTATE_ON?\"hide\":\"show\"]()})}}});(function(){function w(a){function d(){for(var b=g(),e=CKEDITOR.tools.clone(a.config.toolbarGroups)||n(a),f=0;f<e.length;f++){var k=e[f];if(\"/\"!=k){\"string\"==typeof k&&(k=e[f]={name:k});var i,d=k.groups;if(d)for(var h=0;h<d.length;h++)i=d[h],(i=b[i])&&c(k,i);(i=b[k.name])&&c(k,i)}}return e}function g(){var b={},c,f,e;for(c in a.ui.items)f=a.ui.items[c],e=f.toolbar||\"others\",e=e.split(\",\"),f=e[0],e=parseInt(e[1]||-1,10),b[f]||(b[f]=[]),b[f].push({name:c,order:e});for(f in b)b[f]=b[f].sort(function(b,\na){return b.order==a.order?0:0>a.order?-1:0>b.order?1:b.order<a.order?-1:1});return b}function c(c,e){if(e.length){c.items?c.items.push(a.ui.create(\"-\")):c.items=[];for(var f;f=e.shift();)if(f=\"string\"==typeof f?f:f.name,!b||-1==CKEDITOR.tools.indexOf(b,f))(f=a.ui.create(f))&&a.addFeature(f)&&c.items.push(f)}}function h(b){var a=[],e,d,h;for(e=0;e<b.length;++e)d=b[e],h={},\"/\"==d?a.push(d):CKEDITOR.tools.isArray(d)?(c(h,CKEDITOR.tools.clone(d)),a.push(h)):d.items&&(c(h,CKEDITOR.tools.clone(d.items)),\nh.name=d.name,a.push(h));return a}var b=a.config.removeButtons,b=b&&b.split(\",\"),e=a.config.toolbar;\"string\"==typeof e&&(e=a.config[\"toolbar_\"+e]);return a.toolbar=e?h(e):d()}function n(a){return a._.toolbarGroups||(a._.toolbarGroups=[{name:\"document\",groups:[\"mode\",\"document\",\"doctools\"]},{name:\"clipboard\",groups:[\"clipboard\",\"undo\"]},{name:\"editing\",groups:[\"find\",\"selection\",\"spellchecker\"]},{name:\"forms\"},\"/\",{name:\"basicstyles\",groups:[\"basicstyles\",\"cleanup\"]},{name:\"paragraph\",groups:[\"list\",\n\"indent\",\"blocks\",\"align\",\"bidi\"]},{name:\"links\"},{name:\"insert\"},\"/\",{name:\"styles\"},{name:\"colors\"},{name:\"tools\"},{name:\"others\"},{name:\"about\"}])}var u=function(){this.toolbars=[];this.focusCommandExecuted=!1};u.prototype.focus=function(){for(var a=0,d;d=this.toolbars[a++];)for(var g=0,c;c=d.items[g++];)if(c.focus){c.focus();return}};var x={modes:{wysiwyg:1,source:1},readOnly:1,exec:function(a){a.toolbox&&(a.toolbox.focusCommandExecuted=!0,CKEDITOR.env.ie||CKEDITOR.env.air?setTimeout(function(){a.toolbox.focus()},\n100):a.toolbox.focus())}};CKEDITOR.plugins.add(\"toolbar\",{requires:\"button\",init:function(a){var d,g=function(c,h){var b,e=\"rtl\"==a.lang.dir,j=a.config.toolbarGroupCycling,o=e?37:39,e=e?39:37,j=void 0===j||j;switch(h){case 9:case CKEDITOR.SHIFT+9:for(;!b||!b.items.length;)if(b=9==h?(b?b.next:c.toolbar.next)||a.toolbox.toolbars[0]:(b?b.previous:c.toolbar.previous)||a.toolbox.toolbars[a.toolbox.toolbars.length-1],b.items.length)for(c=b.items[d?b.items.length-1:0];c&&!c.focus;)(c=d?c.previous:c.next)||\n(b=0);c&&c.focus();return!1;case o:b=c;do b=b.next,!b&&j&&(b=c.toolbar.items[0]);while(b&&!b.focus);b?b.focus():g(c,9);return!1;case 40:return c.button&&c.button.hasArrow?(a.once(\"panelShow\",function(b){b.data._.panel._.currentBlock.onKeyDown(40)}),c.execute()):g(c,40==h?o:e),!1;case e:case 38:b=c;do b=b.previous,!b&&j&&(b=c.toolbar.items[c.toolbar.items.length-1]);while(b&&!b.focus);b?b.focus():(d=1,g(c,CKEDITOR.SHIFT+9),d=0);return!1;case 27:return a.focus(),!1;case 13:case 32:return c.execute(),\n!1}return!0};a.on(\"uiSpace\",function(c){if(c.data.space==a.config.toolbarLocation){c.removeListener();a.toolbox=new u;var d=CKEDITOR.tools.getNextId(),b=['<span id=\"',d,'\" class=\"cke_voice_label\">',a.lang.toolbar.toolbars,\"</span>\",'<span id=\"'+a.ui.spaceId(\"toolbox\")+'\" class=\"cke_toolbox\" role=\"group\" aria-labelledby=\"',d,'\" onmousedown=\"return false;\">'],d=!1!==a.config.toolbarStartupExpanded,e,j;a.config.toolbarCanCollapse&&a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE&&b.push('<span class=\"cke_toolbox_main\"'+\n(d?\">\":' style=\"display:none\">'));for(var o=a.toolbox.toolbars,f=w(a),k=0;k<f.length;k++){var i,l=0,r,m=f[k],s;if(m)if(e&&(b.push(\"</span>\"),j=e=0),\"/\"===m)b.push('<span class=\"cke_toolbar_break\"></span>');else{s=m.items||m;for(var t=0;t<s.length;t++){var p=s[t],n;if(p)if(p.type==CKEDITOR.UI_SEPARATOR)j=e&&p;else{n=!1!==p.canGroup;if(!l){i=CKEDITOR.tools.getNextId();l={id:i,items:[]};r=m.name&&(a.lang.toolbar.toolbarGroups[m.name]||m.name);b.push('<span id=\"',i,'\" class=\"cke_toolbar\"',r?' aria-labelledby=\"'+\ni+'_label\"':\"\",' role=\"toolbar\">');r&&b.push('<span id=\"',i,'_label\" class=\"cke_voice_label\">',r,\"</span>\");b.push('<span class=\"cke_toolbar_start\"></span>');var q=o.push(l)-1;0<q&&(l.previous=o[q-1],l.previous.next=l)}n?e||(b.push('<span class=\"cke_toolgroup\" role=\"presentation\">'),e=1):e&&(b.push(\"</span>\"),e=0);i=function(c){c=c.render(a,b);q=l.items.push(c)-1;if(q>0){c.previous=l.items[q-1];c.previous.next=c}c.toolbar=l;c.onkey=g;c.onfocus=function(){a.toolbox.focusCommandExecuted||a.focus()}};\nj&&(i(j),j=0);i(p)}}e&&(b.push(\"</span>\"),j=e=0);l&&b.push('<span class=\"cke_toolbar_end\"></span></span>')}}a.config.toolbarCanCollapse&&b.push(\"</span>\");if(a.config.toolbarCanCollapse&&a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var v=CKEDITOR.tools.addFunction(function(){a.execCommand(\"toolbarCollapse\")});a.on(\"destroy\",function(){CKEDITOR.tools.removeFunction(v)});a.addCommand(\"toolbarCollapse\",{readOnly:1,exec:function(b){var a=b.ui.space(\"toolbar_collapser\"),c=a.getPrevious(),e=b.ui.space(\"contents\"),\nd=c.getParent(),f=parseInt(e.$.style.height,10),h=d.$.offsetHeight,g=a.hasClass(\"cke_toolbox_collapser_min\");g?(c.show(),a.removeClass(\"cke_toolbox_collapser_min\"),a.setAttribute(\"title\",b.lang.toolbar.toolbarCollapse)):(c.hide(),a.addClass(\"cke_toolbox_collapser_min\"),a.setAttribute(\"title\",b.lang.toolbar.toolbarExpand));a.getFirst().setText(g?\"▲\":\"◀\");e.setStyle(\"height\",f-(d.$.offsetHeight-h)+\"px\");b.fire(\"resize\")},modes:{wysiwyg:1,source:1}});a.setKeystroke(CKEDITOR.ALT+(CKEDITOR.env.ie||CKEDITOR.env.webkit?\n189:109),\"toolbarCollapse\");b.push('<a title=\"'+(d?a.lang.toolbar.toolbarCollapse:a.lang.toolbar.toolbarExpand)+'\" id=\"'+a.ui.spaceId(\"toolbar_collapser\")+'\" tabIndex=\"-1\" class=\"cke_toolbox_collapser');d||b.push(\" cke_toolbox_collapser_min\");b.push('\" onclick=\"CKEDITOR.tools.callFunction('+v+')\">','<span class=\"cke_arrow\">&#9650;</span>',\"</a>\")}b.push(\"</span>\");c.data.html+=b.join(\"\")}});a.on(\"destroy\",function(){if(this.toolbox){var a,d=0,b,e,g;for(a=this.toolbox.toolbars;d<a.length;d++){e=a[d].items;\nfor(b=0;b<e.length;b++)g=e[b],g.clickFn&&CKEDITOR.tools.removeFunction(g.clickFn),g.keyDownFn&&CKEDITOR.tools.removeFunction(g.keyDownFn)}}});a.on(\"uiReady\",function(){var c=a.ui.space(\"toolbox\");c&&a.focusManager.add(c,1)});a.addCommand(\"toolbarFocus\",x);a.setKeystroke(CKEDITOR.ALT+121,\"toolbarFocus\");a.ui.add(\"-\",CKEDITOR.UI_SEPARATOR,{});a.ui.addHandler(CKEDITOR.UI_SEPARATOR,{create:function(){return{render:function(a,d){d.push('<span class=\"cke_toolbar_separator\" role=\"separator\"></span>');return{}}}}})}});\nCKEDITOR.ui.prototype.addToolbarGroup=function(a,d,g){var c=n(this.editor),h=0===d,b={name:a};if(g){if(g=CKEDITOR.tools.search(c,function(a){return a.name==g})){!g.groups&&(g.groups=[]);if(d&&(d=CKEDITOR.tools.indexOf(g.groups,d),0<=d)){g.groups.splice(d+1,0,a);return}h?g.groups.splice(0,0,a):g.groups.push(a);return}d=null}d&&(d=CKEDITOR.tools.indexOf(c,function(a){return a.name==d}));h?c.splice(0,0,a):\"number\"==typeof d?c.splice(d+1,0,b):c.push(a)}})();CKEDITOR.UI_SEPARATOR=\"separator\";\nCKEDITOR.config.toolbarLocation=\"top\";(function(){var k;function n(a,c){function j(d){d=i.list[d];if(d.equals(a.editable())||\"true\"==d.getAttribute(\"contenteditable\")){var e=a.createRange();e.selectNodeContents(d);e.select()}else a.getSelection().selectElement(d);a.focus()}function s(){l&&l.setHtml(o);delete i.list}var m=a.ui.spaceId(\"path\"),l,i=a._.elementsPath,n=i.idBase;c.html+='<span id=\"'+m+'_label\" class=\"cke_voice_label\">'+a.lang.elementspath.eleLabel+'</span><span id=\"'+m+'\" class=\"cke_path\" role=\"group\" aria-labelledby=\"'+m+\n'_label\">'+o+\"</span>\";a.on(\"uiReady\",function(){var d=a.ui.space(\"path\");d&&a.focusManager.add(d,1)});i.onClick=j;var t=CKEDITOR.tools.addFunction(j),u=CKEDITOR.tools.addFunction(function(d,e){var g=i.idBase,b,e=new CKEDITOR.dom.event(e);b=\"rtl\"==a.lang.dir;switch(e.getKeystroke()){case b?39:37:case 9:return(b=CKEDITOR.document.getById(g+(d+1)))||(b=CKEDITOR.document.getById(g+\"0\")),b.focus(),!1;case b?37:39:case CKEDITOR.SHIFT+9:return(b=CKEDITOR.document.getById(g+(d-1)))||(b=CKEDITOR.document.getById(g+\n(i.list.length-1))),b.focus(),!1;case 27:return a.focus(),!1;case 13:case 32:return j(d),!1}return!0});a.on(\"selectionChange\",function(){a.editable();for(var d=[],e=i.list=[],g=[],b=i.filters,c=!0,j=a.elementPath().elements,f,k=j.length;k--;){var h=j[k],p=0;f=h.data(\"cke-display-name\")?h.data(\"cke-display-name\"):h.data(\"cke-real-element-type\")?h.data(\"cke-real-element-type\"):h.getName();c=h.hasAttribute(\"contenteditable\")?\"true\"==h.getAttribute(\"contenteditable\"):c;!c&&!h.hasAttribute(\"contenteditable\")&&\n(p=1);for(var q=0;q<b.length;q++){var r=b[q](h,f);if(!1===r){p=1;break}f=r||f}p||(e.unshift(h),g.unshift(f))}e=e.length;for(b=0;b<e;b++)f=g[b],c=a.lang.elementspath.eleTitle.replace(/%1/,f),f=v.output({id:n+b,label:c,text:f,jsTitle:\"javascript:void('\"+f+\"')\",index:b,keyDownFn:u,clickFn:t}),d.unshift(f);l||(l=CKEDITOR.document.getById(m));g=l;g.setHtml(d.join(\"\")+o);a.fire(\"elementsPathUpdate\",{space:g})});a.on(\"readOnly\",s);a.on(\"contentDomUnload\",s);a.addCommand(\"elementsPathFocus\",k);a.setKeystroke(CKEDITOR.ALT+\n122,\"elementsPathFocus\")}k={editorFocus:!1,readOnly:1,exec:function(a){(a=CKEDITOR.document.getById(a._.elementsPath.idBase+\"0\"))&&a.focus(CKEDITOR.env.ie||CKEDITOR.env.air)}};var o='<span class=\"cke_path_empty\">&nbsp;</span>',c=\"\";CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(c+=' onkeypress=\"return false;\"');CKEDITOR.env.gecko&&(c+=' onblur=\"this.style.cssText = this.style.cssText;\"');var v=CKEDITOR.addTemplate(\"pathItem\",'<a id=\"{id}\" href=\"{jsTitle}\" tabindex=\"-1\" class=\"cke_path_item\" title=\"{label}\"'+\nc+' hidefocus=\"true\"  onkeydown=\"return CKEDITOR.tools.callFunction({keyDownFn},{index}, event );\" onclick=\"CKEDITOR.tools.callFunction({clickFn},{index}); return false;\" role=\"button\" aria-label=\"{label}\">{text}</a>');CKEDITOR.plugins.add(\"elementspath\",{init:function(a){a._.elementsPath={idBase:\"cke_elementspath_\"+CKEDITOR.tools.getNextNumber()+\"_\",filters:[]};a.on(\"uiSpace\",function(c){\"bottom\"==c.data.space&&n(a,c.data)})}})})();(function(){function l(c,e,b){b=c.config.forceEnterMode||b;\"wysiwyg\"==c.mode&&(e||(e=c.activeEnterMode),c.elementPath().isContextFor(\"p\")||(e=CKEDITOR.ENTER_BR,b=1),c.fire(\"saveSnapshot\"),e==CKEDITOR.ENTER_BR?o(c,e,null,b):p(c,e,null,b),c.fire(\"saveSnapshot\"))}function q(c){for(var c=c.getSelection().getRanges(!0),e=c.length-1;0<e;e--)c[e].deleteContents();return c[0]}CKEDITOR.plugins.add(\"enterkey\",{init:function(c){c.addCommand(\"enter\",{modes:{wysiwyg:1},editorFocus:!1,exec:function(c){l(c)}});\nc.addCommand(\"shiftEnter\",{modes:{wysiwyg:1},editorFocus:!1,exec:function(c){l(c,c.activeShiftEnterMode,1)}});c.setKeystroke([[13,\"enter\"],[CKEDITOR.SHIFT+13,\"shiftEnter\"]])}});var t=CKEDITOR.dom.walker.whitespaces(),u=CKEDITOR.dom.walker.bookmark();CKEDITOR.plugins.enterkey={enterBlock:function(c,e,b,h){if(b=b||q(c)){var f=b.document,j=b.checkStartOfBlock(),i=b.checkEndOfBlock(),a=c.elementPath(b.startContainer).block,k=e==CKEDITOR.ENTER_DIV?\"div\":\"p\",d;if(j&&i){if(a&&(a.is(\"li\")||a.getParent().is(\"li\"))){b=\na.getParent();d=b.getParent();var h=!a.hasPrevious(),m=!a.hasNext(),k=c.getSelection(),g=k.createBookmarks(),j=a.getDirection(1),i=a.getAttribute(\"class\"),n=a.getAttribute(\"style\"),l=d.getDirection(1)!=j,c=c.enterMode!=CKEDITOR.ENTER_BR||l||n||i;if(d.is(\"li\"))if(h||m)a[h?\"insertBefore\":\"insertAfter\"](d);else a.breakParent(d);else{if(c)if(d=f.createElement(e==CKEDITOR.ENTER_P?\"p\":\"div\"),l&&d.setAttribute(\"dir\",j),n&&d.setAttribute(\"style\",n),i&&d.setAttribute(\"class\",i),a.moveChildren(d),h||m)d[h?\n\"insertBefore\":\"insertAfter\"](b);else a.breakParent(b),d.insertAfter(b);else if(a.appendBogus(!0),h||m)for(;f=a[h?\"getFirst\":\"getLast\"]();)f[h?\"insertBefore\":\"insertAfter\"](b);else for(a.breakParent(b);f=a.getLast();)f.insertAfter(b);a.remove()}k.selectBookmarks(g);return}if(a&&a.getParent().is(\"blockquote\")){a.breakParent(a.getParent());a.getPrevious().getFirst(CKEDITOR.dom.walker.invisible(1))||a.getPrevious().remove();a.getNext().getFirst(CKEDITOR.dom.walker.invisible(1))||a.getNext().remove();\nb.moveToElementEditStart(a);b.select();return}}else if(a&&a.is(\"pre\")&&!i){o(c,e,b,h);return}if(i=b.splitBlock(k)){e=i.previousBlock;a=i.nextBlock;c=i.wasStartOfBlock;j=i.wasEndOfBlock;if(a)g=a.getParent(),g.is(\"li\")&&(a.breakParent(g),a.move(a.getNext(),1));else if(e&&(g=e.getParent())&&g.is(\"li\"))e.breakParent(g),g=e.getNext(),b.moveToElementEditStart(g),e.move(e.getPrevious());if(!c&&!j)a.is(\"li\")&&(d=b.clone(),d.selectNodeContents(a),d=new CKEDITOR.dom.walker(d),d.evaluator=function(a){return!(u(a)||\nt(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in CKEDITOR.dtd.$inline&&!(a.getName()in CKEDITOR.dtd.$empty))},(g=d.next())&&(g.type==CKEDITOR.NODE_ELEMENT&&g.is(\"ul\",\"ol\"))&&(CKEDITOR.env.needsBrFiller?f.createElement(\"br\"):f.createText(\" \")).insertBefore(g)),a&&b.moveToElementEditStart(a);else{if(e){if(e.is(\"li\")||!r.test(e.getName())&&!e.is(\"pre\"))d=e.clone()}else a&&(d=a.clone());d?h&&!d.is(\"li\")&&d.renameNode(k):g&&g.is(\"li\")?d=g:(d=f.createElement(k),e&&(m=e.getDirection())&&d.setAttribute(\"dir\",\nm));if(f=i.elementPath){h=0;for(k=f.elements.length;h<k;h++){g=f.elements[h];if(g.equals(f.block)||g.equals(f.blockLimit))break;CKEDITOR.dtd.$removeEmpty[g.getName()]&&(g=g.clone(),d.moveChildren(g),d.append(g))}}d.appendBogus();d.getParent()||b.insertNode(d);d.is(\"li\")&&d.removeAttribute(\"value\");if(CKEDITOR.env.ie&&c&&(!j||!e.getChildCount()))b.moveToElementEditStart(j?e:d),b.select();b.moveToElementEditStart(c&&!j?a:d)}b.select();b.scrollIntoView()}}},enterBr:function(c,e,b,h){if(b=b||q(c)){var f=\nb.document,j=b.checkEndOfBlock(),i=new CKEDITOR.dom.elementPath(c.getSelection().getStartElement()),a=i.block,k=a&&i.block.getName();!h&&\"li\"==k?p(c,e,b,h):(!h&&j&&r.test(k)?(j=a.getDirection())?(f=f.createElement(\"div\"),f.setAttribute(\"dir\",j),f.insertAfter(a),b.setStart(f,0)):(f.createElement(\"br\").insertAfter(a),CKEDITOR.env.gecko&&f.createText(\"\").insertAfter(a),b.setStartAt(a.getNext(),CKEDITOR.env.ie?CKEDITOR.POSITION_BEFORE_START:CKEDITOR.POSITION_AFTER_START)):(c=\"pre\"==k&&CKEDITOR.env.ie&&\n8>CKEDITOR.env.version?f.createText(\"\\r\"):f.createElement(\"br\"),b.deleteContents(),b.insertNode(c),CKEDITOR.env.needsBrFiller?(f.createText(\"﻿\").insertAfter(c),j&&(a||i.blockLimit).appendBogus(),c.getNext().$.nodeValue=\"\",b.setStartAt(c.getNext(),CKEDITOR.POSITION_AFTER_START)):b.setStartAt(c,CKEDITOR.POSITION_AFTER_END)),b.collapse(!0),b.select(),b.scrollIntoView())}}};var s=CKEDITOR.plugins.enterkey,o=s.enterBr,p=s.enterBlock,r=/^h[1-6]$/})();(function(){function j(a,b){var d={},e=[],f={nbsp:\" \",shy:\"­\",gt:\">\",lt:\"<\",amp:\"&\",apos:\"'\",quot:'\"'},a=a.replace(/\\b(nbsp|shy|gt|lt|amp|apos|quot)(?:,|$)/g,function(a,h){var c=b?\"&\"+h+\";\":f[h];d[c]=b?f[h]:\"&\"+h+\";\";e.push(c);return\"\"});if(!b&&a){var a=a.split(\",\"),c=document.createElement(\"div\"),g;c.innerHTML=\"&\"+a.join(\";&\")+\";\";g=c.innerHTML;c=null;for(c=0;c<g.length;c++){var i=g.charAt(c);d[i]=\"&\"+a[c]+\";\";e.push(i)}}d.regex=e.join(b?\"|\":\"\");return d}CKEDITOR.plugins.add(\"entities\",{afterInit:function(a){var b=\na.config;if(a=(a=a.dataProcessor)&&a.htmlFilter){var d=[];!1!==b.basicEntities&&d.push(\"nbsp,gt,lt,amp\");b.entities&&(d.length&&d.push(\"quot,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro\"),\nb.entities_latin&&d.push(\"Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml\"),b.entities_greek&&d.push(\"Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv\"),\nb.entities_additional&&d.push(b.entities_additional));var e=j(d.join(\",\")),f=e.regex?\"[\"+e.regex+\"]\":\"a^\";delete e.regex;b.entities&&b.entities_processNumerical&&(f=\"[^ -~]|\"+f);var f=RegExp(f,\"g\"),c=function(a){return b.entities_processNumerical==\"force\"||!e[a]?\"&#\"+a.charCodeAt(0)+\";\":e[a]},g=j(\"nbsp,gt,lt,amp,shy\",!0),i=RegExp(g.regex,\"g\"),k=function(a){return g[a]};a.addRules({text:function(a){return a.replace(i,k).replace(f,c)}},{applyToAll:!0,excludeNestedEditable:!0})}}})})();\nCKEDITOR.config.basicEntities=!0;CKEDITOR.config.entities=!0;CKEDITOR.config.entities_latin=!0;CKEDITOR.config.entities_greek=!0;CKEDITOR.config.entities_additional=\"#39\";CKEDITOR.plugins.add(\"popup\");\nCKEDITOR.tools.extend(CKEDITOR.editor.prototype,{popup:function(e,a,b,d){a=a||\"80%\";b=b||\"70%\";\"string\"==typeof a&&(1<a.length&&\"%\"==a.substr(a.length-1,1))&&(a=parseInt(window.screen.width*parseInt(a,10)/100,10));\"string\"==typeof b&&(1<b.length&&\"%\"==b.substr(b.length-1,1))&&(b=parseInt(window.screen.height*parseInt(b,10)/100,10));640>a&&(a=640);420>b&&(b=420);var f=parseInt((window.screen.height-b)/2,10),g=parseInt((window.screen.width-a)/2,10),d=(d||\"location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes\")+\",width=\"+\na+\",height=\"+b+\",top=\"+f+\",left=\"+g,c=window.open(\"\",null,d,!0);if(!c)return!1;try{-1==navigator.userAgent.toLowerCase().indexOf(\" chrome/\")&&(c.moveTo(g,f),c.resizeTo(a,b)),c.focus(),c.location.href=e}catch(h){window.open(e,null,d,!0)}return!0}});(function(){function g(a,c){var d=[];if(c)for(var b in c)d.push(b+\"=\"+encodeURIComponent(c[b]));else return a;return a+(-1!=a.indexOf(\"?\")?\"&\":\"?\")+d.join(\"&\")}function i(a){a+=\"\";return a.charAt(0).toUpperCase()+a.substr(1)}function k(){var a=this.getDialog(),c=a.getParentEditor();c._.filebrowserSe=this;var d=c.config[\"filebrowser\"+i(a.getName())+\"WindowWidth\"]||c.config.filebrowserWindowWidth||\"80%\",a=c.config[\"filebrowser\"+i(a.getName())+\"WindowHeight\"]||c.config.filebrowserWindowHeight||\"70%\",\nb=this.filebrowser.params||{};b.CKEditor=c.name;b.CKEditorFuncNum=c._.filebrowserFn;b.langCode||(b.langCode=c.langCode);b=g(this.filebrowser.url,b);c.popup(b,d,a,c.config.filebrowserWindowFeatures||c.config.fileBrowserWindowFeatures)}function l(){var a=this.getDialog();a.getParentEditor()._.filebrowserSe=this;return!a.getContentElement(this[\"for\"][0],this[\"for\"][1]).getInputElement().$.value||!a.getContentElement(this[\"for\"][0],this[\"for\"][1]).getAction()?!1:!0}function m(a,c,d){var b=d.params||{};\nb.CKEditor=a.name;b.CKEditorFuncNum=a._.filebrowserFn;b.langCode||(b.langCode=a.langCode);c.action=g(d.url,b);c.filebrowser=d}function j(a,c,d,b){if(b&&b.length)for(var e,g=b.length;g--;)if(e=b[g],(\"hbox\"==e.type||\"vbox\"==e.type||\"fieldset\"==e.type)&&j(a,c,d,e.children),e.filebrowser)if(\"string\"==typeof e.filebrowser&&(e.filebrowser={action:\"fileButton\"==e.type?\"QuickUpload\":\"Browse\",target:e.filebrowser}),\"Browse\"==e.filebrowser.action){var f=e.filebrowser.url;void 0===f&&(f=a.config[\"filebrowser\"+\ni(c)+\"BrowseUrl\"],void 0===f&&(f=a.config.filebrowserBrowseUrl));f&&(e.onClick=k,e.filebrowser.url=f,e.hidden=!1)}else if(\"QuickUpload\"==e.filebrowser.action&&e[\"for\"]&&(f=e.filebrowser.url,void 0===f&&(f=a.config[\"filebrowser\"+i(c)+\"UploadUrl\"],void 0===f&&(f=a.config.filebrowserUploadUrl)),f)){var h=e.onClick;e.onClick=function(a){var b=a.sender;return h&&h.call(b,a)===false?false:l.call(b,a)};e.filebrowser.url=f;e.hidden=!1;m(a,d.getContents(e[\"for\"][0]).get(e[\"for\"][1]),e.filebrowser)}}function h(a,\nc,d){if(-1!==d.indexOf(\";\")){for(var d=d.split(\";\"),b=0;b<d.length;b++)if(h(a,c,d[b]))return!0;return!1}return(a=a.getContents(c).get(d).filebrowser)&&a.url}function n(a,c){var d=this._.filebrowserSe.getDialog(),b=this._.filebrowserSe[\"for\"],e=this._.filebrowserSe.filebrowser.onSelect;b&&d.getContentElement(b[0],b[1]).reset();if(!(\"function\"==typeof c&&!1===c.call(this._.filebrowserSe))&&!(e&&!1===e.call(this._.filebrowserSe,a,c))&&(\"string\"==typeof c&&c&&alert(c),a&&(b=this._.filebrowserSe,d=b.getDialog(),\nb=b.filebrowser.target||null)))if(b=b.split(\":\"),e=d.getContentElement(b[0],b[1]))e.setValue(a),d.selectPage(b[0])}CKEDITOR.plugins.add(\"filebrowser\",{requires:\"popup\",init:function(a){a._.filebrowserFn=CKEDITOR.tools.addFunction(n,a);a.on(\"destroy\",function(){CKEDITOR.tools.removeFunction(this._.filebrowserFn)})}});CKEDITOR.on(\"dialogDefinition\",function(a){if(a.editor.plugins.filebrowser)for(var c=a.data.definition,d,b=0;b<c.contents.length;++b)if(d=c.contents[b])j(a.editor,a.data.name,c,d.elements),\nd.hidden&&d.filebrowser&&(d.hidden=!h(c,d.id,d.filebrowser))})})();CKEDITOR.plugins.add(\"find\",{requires:\"dialog\",init:function(a){var b=a.addCommand(\"find\",new CKEDITOR.dialogCommand(\"find\"));b.canUndo=!1;b.readOnly=1;a.addCommand(\"replace\",new CKEDITOR.dialogCommand(\"replace\")).canUndo=!1;a.ui.addButton&&(a.ui.addButton(\"Find\",{label:a.lang.find.find,command:\"find\",toolbar:\"find,10\"}),a.ui.addButton(\"Replace\",{label:a.lang.find.replace,command:\"replace\",toolbar:\"find,20\"}));CKEDITOR.dialog.add(\"find\",this.path+\"dialogs/find.js\");CKEDITOR.dialog.add(\"replace\",this.path+\n\"dialogs/find.js\")}});CKEDITOR.config.find_highlight={element:\"span\",styles:{\"background-color\":\"#004\",color:\"#fff\"}};(function(){function g(a,b){var c=j.exec(a),d=j.exec(b);if(c){if(!c[2]&&\"px\"==d[2])return d[1];if(\"px\"==c[2]&&!d[2])return d[1]+\"px\"}return b}var i=CKEDITOR.htmlParser.cssStyle,h=CKEDITOR.tools.cssLength,j=/^((?:\\d*(?:\\.\\d+))|(?:\\d+))(.*)?$/i,k={elements:{$:function(a){var b=a.attributes;if((b=(b=(b=b&&b[\"data-cke-realelement\"])&&new CKEDITOR.htmlParser.fragment.fromHtml(decodeURIComponent(b)))&&b.children[0])&&a.attributes[\"data-cke-resizable\"]){var c=(new i(a)).rules,a=b.attributes,d=c.width,c=\nc.height;d&&(a.width=g(a.width,d));c&&(a.height=g(a.height,c))}return b}}};CKEDITOR.plugins.add(\"fakeobjects\",{init:function(a){a.filter.allow(\"img[!data-cke-realelement,src,alt,title](*){*}\",\"fakeobjects\")},afterInit:function(a){(a=(a=a.dataProcessor)&&a.htmlFilter)&&a.addRules(k,{applyToAll:!0})}});CKEDITOR.editor.prototype.createFakeElement=function(a,b,c,d){var e=this.lang.fakeobjects,e=e[c]||e.unknown,b={\"class\":b,\"data-cke-realelement\":encodeURIComponent(a.getOuterHtml()),\"data-cke-real-node-type\":a.type,\nalt:e,title:e,align:a.getAttribute(\"align\")||\"\"};CKEDITOR.env.hc||(b.src=CKEDITOR.tools.transparentImageData);c&&(b[\"data-cke-real-element-type\"]=c);d&&(b[\"data-cke-resizable\"]=d,c=new i,d=a.getAttribute(\"width\"),a=a.getAttribute(\"height\"),d&&(c.rules.width=h(d)),a&&(c.rules.height=h(a)),c.populate(b));return this.document.createElement(\"img\",{attributes:b})};CKEDITOR.editor.prototype.createFakeParserElement=function(a,b,c,d){var e=this.lang.fakeobjects,e=e[c]||e.unknown,f;f=new CKEDITOR.htmlParser.basicWriter;\na.writeHtml(f);f=f.getHtml();b={\"class\":b,\"data-cke-realelement\":encodeURIComponent(f),\"data-cke-real-node-type\":a.type,alt:e,title:e,align:a.attributes.align||\"\"};CKEDITOR.env.hc||(b.src=CKEDITOR.tools.transparentImageData);c&&(b[\"data-cke-real-element-type\"]=c);d&&(b[\"data-cke-resizable\"]=d,d=a.attributes,a=new i,c=d.width,d=d.height,void 0!=c&&(a.rules.width=h(c)),void 0!=d&&(a.rules.height=h(d)),a.populate(b));return new CKEDITOR.htmlParser.element(\"img\",b)};CKEDITOR.editor.prototype.restoreRealElement=\nfunction(a){if(a.data(\"cke-real-node-type\")!=CKEDITOR.NODE_ELEMENT)return null;var b=CKEDITOR.dom.element.createFromHtml(decodeURIComponent(a.data(\"cke-realelement\")),this.document);if(a.data(\"cke-resizable\")){var c=a.getStyle(\"width\"),a=a.getStyle(\"height\");c&&b.setAttribute(\"width\",g(b.getAttribute(\"width\"),c));a&&b.setAttribute(\"height\",g(b.getAttribute(\"height\"),a))}return b}})();(function(){function d(a){a=a.attributes;return\"application/x-shockwave-flash\"==a.type||f.test(a.src||\"\")}function e(a,b){return a.createFakeParserElement(b,\"cke_flash\",\"flash\",!0)}var f=/\\.swf(?:$|\\?)/i;CKEDITOR.plugins.add(\"flash\",{requires:\"dialog,fakeobjects\",onLoad:function(){CKEDITOR.addCss(\"img.cke_flash{background-image: url(\"+CKEDITOR.getUrl(this.path+\"images/placeholder.png\")+\");background-position: center center;background-repeat: no-repeat;border: 1px solid #a9a9a9;width: 80px;height: 80px;}\")},\ninit:function(a){var b=\"object[classid,codebase,height,hspace,vspace,width];param[name,value];embed[height,hspace,pluginspage,src,type,vspace,width]\";CKEDITOR.dialog.isTabEnabled(a,\"flash\",\"properties\")&&(b+=\";object[align]; embed[allowscriptaccess,quality,scale,wmode]\");CKEDITOR.dialog.isTabEnabled(a,\"flash\",\"advanced\")&&(b+=\";object[id]{*}; embed[bgcolor]{*}(*)\");a.addCommand(\"flash\",new CKEDITOR.dialogCommand(\"flash\",{allowedContent:b,requiredContent:\"embed\"}));a.ui.addButton&&a.ui.addButton(\"Flash\",\n{label:a.lang.common.flash,command:\"flash\",toolbar:\"insert,20\"});CKEDITOR.dialog.add(\"flash\",this.path+\"dialogs/flash.js\");a.addMenuItems&&a.addMenuItems({flash:{label:a.lang.flash.properties,command:\"flash\",group:\"flash\"}});a.on(\"doubleclick\",function(a){var b=a.data.element;b.is(\"img\")&&\"flash\"==b.data(\"cke-real-element-type\")&&(a.data.dialog=\"flash\")});a.contextMenu&&a.contextMenu.addListener(function(a){if(a&&a.is(\"img\")&&!a.isReadOnly()&&\"flash\"==a.data(\"cke-real-element-type\"))return{flash:CKEDITOR.TRISTATE_OFF}})},\nafterInit:function(a){var b=a.dataProcessor;(b=b&&b.dataFilter)&&b.addRules({elements:{\"cke:object\":function(b){var c=b.attributes;if((!c.classid||!(\"\"+c.classid).toLowerCase())&&!d(b)){for(c=0;c<b.children.length;c++)if(\"cke:embed\"==b.children[c].name){if(!d(b.children[c]))break;return e(a,b)}return null}return e(a,b)},\"cke:embed\":function(b){return!d(b)?null:e(a,b)}}},5)}})})();CKEDITOR.tools.extend(CKEDITOR.config,{flashEmbedTagOnly:!1,flashAddEmbedTag:!0,flashConvertOnEdit:!1});(function(){function q(a){var i=a.config,l=a.fire(\"uiSpace\",{space:\"top\",html:\"\"}).html,o=function(){function f(a,c,e){b.setStyle(c,t(e));b.setStyle(\"position\",a)}function e(a){var b=r.getDocumentPosition();switch(a){case \"top\":f(\"absolute\",\"top\",b.y-m-n);break;case \"pin\":f(\"fixed\",\"top\",q);break;case \"bottom\":f(\"absolute\",\"top\",b.y+(c.height||c.bottom-c.top)+n)}j=a}var j,r,k,c,h,m,s,l=i.floatSpaceDockedOffsetX||0,n=i.floatSpaceDockedOffsetY||0,p=i.floatSpacePinnedOffsetX||0,q=i.floatSpacePinnedOffsetY||\n0;return function(d){if(r=a.editable())if(d&&\"focus\"==d.name&&b.show(),b.removeStyle(\"left\"),b.removeStyle(\"right\"),k=b.getClientRect(),c=r.getClientRect(),h=g.getViewPaneSize(),m=k.height,s=\"pageXOffset\"in g.$?g.$.pageXOffset:CKEDITOR.document.$.documentElement.scrollLeft,j){m+n<=c.top?e(\"top\"):m+n>h.height-c.bottom?e(\"pin\"):e(\"bottom\");var d=h.width/2,d=0<c.left&&c.right<h.width&&c.width>k.width?\"rtl\"==a.config.contentsLangDirection?\"right\":\"left\":d-c.left>c.right-d?\"left\":\"right\",f;k.width>h.width?\n(d=\"left\",f=0):(f=\"left\"==d?0<c.left?c.left:0:c.right<h.width?h.width-c.right:0,f+k.width>h.width&&(d=\"left\"==d?\"right\":\"left\",f=0));b.setStyle(d,t((\"pin\"==j?p:l)+f+(\"pin\"==j?0:\"left\"==d?s:-s)))}else j=\"pin\",e(\"pin\"),o(d)}}();if(l){var b=CKEDITOR.document.getBody().append(CKEDITOR.dom.element.createFromHtml(u.output({content:l,id:a.id,langDir:a.lang.dir,langCode:a.langCode,name:a.name,style:\"display:none;z-index:\"+(i.baseFloatZIndex-1),topId:a.ui.spaceId(\"top\"),voiceLabel:a.lang.editorPanel+\", \"+\na.name}))),p=CKEDITOR.tools.eventsBuffer(500,o),e=CKEDITOR.tools.eventsBuffer(100,o);b.unselectable();b.on(\"mousedown\",function(a){a=a.data;a.getTarget().hasAscendant(\"a\",1)||a.preventDefault()});a.on(\"focus\",function(b){o(b);a.on(\"change\",p.input);g.on(\"scroll\",e.input);g.on(\"resize\",e.input)});a.on(\"blur\",function(){b.hide();a.removeListener(\"change\",p.input);g.removeListener(\"scroll\",e.input);g.removeListener(\"resize\",e.input)});a.on(\"destroy\",function(){g.removeListener(\"scroll\",e.input);g.removeListener(\"resize\",\ne.input);b.clearCustomData();b.remove()});a.focusManager.hasFocus&&b.show();a.focusManager.add(b,1)}}var u=CKEDITOR.addTemplate(\"floatcontainer\",'<div id=\"cke_{name}\" class=\"cke {id} cke_reset_all cke_chrome cke_editor_{name} cke_float cke_{langDir} '+CKEDITOR.env.cssClass+'\" dir=\"{langDir}\" title=\"'+(CKEDITOR.env.gecko?\" \":\"\")+'\" lang=\"{langCode}\" role=\"application\" style=\"{style}\" aria-labelledby=\"cke_{name}_arialbl\"><span id=\"cke_{name}_arialbl\" class=\"cke_voice_label\">{voiceLabel}</span><div class=\"cke_inner\"><div id=\"{topId}\" class=\"cke_top\" role=\"presentation\">{content}</div></div></div>'),\ng=CKEDITOR.document.getWindow(),t=CKEDITOR.tools.cssLength;CKEDITOR.plugins.add(\"floatingspace\",{init:function(a){a.on(\"loaded\",function(){q(this)},null,null,20)}})})();CKEDITOR.plugins.add(\"listblock\",{requires:\"panel\",onLoad:function(){var f=CKEDITOR.addTemplate(\"panel-list\",'<ul role=\"presentation\" class=\"cke_panel_list\">{items}</ul>'),g=CKEDITOR.addTemplate(\"panel-list-item\",'<li id=\"{id}\" class=\"cke_panel_listItem\" role=presentation><a id=\"{id}_option\" _cke_focus=1 hidefocus=true title=\"{title}\" href=\"javascript:void(\\'{val}\\')\"  {onclick}=\"CKEDITOR.tools.callFunction({clickFn},\\'{val}\\'); return false;\" role=\"option\">{text}</a></li>'),h=CKEDITOR.addTemplate(\"panel-list-group\",\n'<h1 id=\"{id}\" class=\"cke_panel_grouptitle\" role=\"presentation\" >{label}</h1>'),i=/\\'/g;CKEDITOR.ui.panel.prototype.addListBlock=function(a,b){return this.addBlock(a,new CKEDITOR.ui.listBlock(this.getHolderElement(),b))};CKEDITOR.ui.listBlock=CKEDITOR.tools.createClass({base:CKEDITOR.ui.panel.block,$:function(a,b){var b=b||{},c=b.attributes||(b.attributes={});(this.multiSelect=!!b.multiSelect)&&(c[\"aria-multiselectable\"]=!0);!c.role&&(c.role=\"listbox\");this.base.apply(this,arguments);this.element.setAttribute(\"role\",\nc.role);c=this.keys;c[40]=\"next\";c[9]=\"next\";c[38]=\"prev\";c[CKEDITOR.SHIFT+9]=\"prev\";c[32]=CKEDITOR.env.ie?\"mouseup\":\"click\";CKEDITOR.env.ie&&(c[13]=\"mouseup\");this._.pendingHtml=[];this._.pendingList=[];this._.items={};this._.groups={}},_:{close:function(){if(this._.started){var a=f.output({items:this._.pendingList.join(\"\")});this._.pendingList=[];this._.pendingHtml.push(a);delete this._.started}},getClick:function(){this._.click||(this._.click=CKEDITOR.tools.addFunction(function(a){var b=this.toggle(a);\nif(this.onClick)this.onClick(a,b)},this));return this._.click}},proto:{add:function(a,b,c){var d=CKEDITOR.tools.getNextId();this._.started||(this._.started=1,this._.size=this._.size||0);this._.items[a]=d;var e;e=CKEDITOR.tools.htmlEncodeAttr(a).replace(i,\"\\\\'\");a={id:d,val:e,onclick:CKEDITOR.env.ie?'onclick=\"return false;\" onmouseup':\"onclick\",clickFn:this._.getClick(),title:CKEDITOR.tools.htmlEncodeAttr(c||a),text:b||a};this._.pendingList.push(g.output(a))},startGroup:function(a){this._.close();\nvar b=CKEDITOR.tools.getNextId();this._.groups[a]=b;this._.pendingHtml.push(h.output({id:b,label:a}))},commit:function(){this._.close();this.element.appendHtml(this._.pendingHtml.join(\"\"));delete this._.size;this._.pendingHtml=[]},toggle:function(a){var b=this.isMarked(a);b?this.unmark(a):this.mark(a);return!b},hideGroup:function(a){var b=(a=this.element.getDocument().getById(this._.groups[a]))&&a.getNext();a&&(a.setStyle(\"display\",\"none\"),b&&\"ul\"==b.getName()&&b.setStyle(\"display\",\"none\"))},hideItem:function(a){this.element.getDocument().getById(this._.items[a]).setStyle(\"display\",\n\"none\")},showAll:function(){var a=this._.items,b=this._.groups,c=this.element.getDocument(),d;for(d in a)c.getById(a[d]).setStyle(\"display\",\"\");for(var e in b)a=c.getById(b[e]),d=a.getNext(),a.setStyle(\"display\",\"\"),d&&\"ul\"==d.getName()&&d.setStyle(\"display\",\"\")},mark:function(a){this.multiSelect||this.unmarkAll();var a=this._.items[a],b=this.element.getDocument().getById(a);b.addClass(\"cke_selected\");this.element.getDocument().getById(a+\"_option\").setAttribute(\"aria-selected\",!0);this.onMark&&this.onMark(b)},\nunmark:function(a){var b=this.element.getDocument(),a=this._.items[a],c=b.getById(a);c.removeClass(\"cke_selected\");b.getById(a+\"_option\").removeAttribute(\"aria-selected\");this.onUnmark&&this.onUnmark(c)},unmarkAll:function(){var a=this._.items,b=this.element.getDocument(),c;for(c in a){var d=a[c];b.getById(d).removeClass(\"cke_selected\");b.getById(d+\"_option\").removeAttribute(\"aria-selected\")}this.onUnmark&&this.onUnmark()},isMarked:function(a){return this.element.getDocument().getById(this._.items[a]).hasClass(\"cke_selected\")},\nfocus:function(a){this._.focusIndex=-1;var b=this.element.getElementsByTag(\"a\"),c,d=-1;if(a)for(c=this.element.getDocument().getById(this._.items[a]).getFirst();a=b.getItem(++d);){if(a.equals(c)){this._.focusIndex=d;break}}else this.element.focus();c&&setTimeout(function(){c.focus()},0)}}})}});CKEDITOR.plugins.add(\"richcombo\",{requires:\"floatpanel,listblock,button\",beforeInit:function(d){d.ui.addHandler(CKEDITOR.UI_RICHCOMBO,CKEDITOR.ui.richCombo.handler)}});\n(function(){var d='<span id=\"{id}\" class=\"cke_combo cke_combo__{name} {cls}\" role=\"presentation\"><span id=\"{id}_label\" class=\"cke_combo_label\">{label}</span><a class=\"cke_combo_button\" hidefocus=true title=\"{title}\" tabindex=\"-1\"'+(CKEDITOR.env.gecko&&!CKEDITOR.env.hc?\"\":'\" href=\"javascript:void(\\'{titleJs}\\')\"')+' hidefocus=\"true\" role=\"button\" aria-labelledby=\"{id}_label\" aria-haspopup=\"true\"';CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(d+=' onkeypress=\"return false;\"');CKEDITOR.env.gecko&&(d+=' onblur=\"this.style.cssText = this.style.cssText;\"');\nvar d=d+(' onkeydown=\"return CKEDITOR.tools.callFunction({keydownFn},event,this);\" onfocus=\"return CKEDITOR.tools.callFunction({focusFn},event);\" '+(CKEDITOR.env.ie?'onclick=\"return false;\" onmouseup':\"onclick\")+'=\"CKEDITOR.tools.callFunction({clickFn},this);return false;\"><span id=\"{id}_text\" class=\"cke_combo_text cke_combo_inlinelabel\">{label}</span><span class=\"cke_combo_open\"><span class=\"cke_combo_arrow\">'+(CKEDITOR.env.hc?\"&#9660;\":CKEDITOR.env.air?\"&nbsp;\":\"\")+\"</span></span></a></span>\"),\ni=CKEDITOR.addTemplate(\"combo\",d);CKEDITOR.UI_RICHCOMBO=\"richcombo\";CKEDITOR.ui.richCombo=CKEDITOR.tools.createClass({$:function(a){CKEDITOR.tools.extend(this,a,{canGroup:!1,title:a.label,modes:{wysiwyg:1},editorFocus:1});a=this.panel||{};delete this.panel;this.id=CKEDITOR.tools.getNextNumber();this.document=a.parent&&a.parent.getDocument()||CKEDITOR.document;a.className=\"cke_combopanel\";a.block={multiSelect:a.multiSelect,attributes:a.attributes};a.toolbarRelated=!0;this._={panelDefinition:a,items:{}}},\nproto:{renderHtml:function(a){var b=[];this.render(a,b);return b.join(\"\")},render:function(a,b){function g(){if(this.getState()!=CKEDITOR.TRISTATE_ON){var c=this.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED;a.readOnly&&!this.readOnly&&(c=CKEDITOR.TRISTATE_DISABLED);this.setState(c);this.setValue(\"\");c!=CKEDITOR.TRISTATE_DISABLED&&this.refresh&&this.refresh()}}var d=CKEDITOR.env,h=\"cke_\"+this.id,e=CKEDITOR.tools.addFunction(function(b){j&&(a.unlockSelection(1),j=0);c.execute(b)},\nthis),f=this,c={id:h,combo:this,focus:function(){CKEDITOR.document.getById(h).getChild(1).focus()},execute:function(c){var b=f._;if(b.state!=CKEDITOR.TRISTATE_DISABLED)if(f.createPanel(a),b.on)b.panel.hide();else{f.commit();var d=f.getValue();d?b.list.mark(d):b.list.unmarkAll();b.panel.showBlock(f.id,new CKEDITOR.dom.element(c),4)}},clickFn:e};a.on(\"activeFilterChange\",g,this);a.on(\"mode\",g,this);a.on(\"selectionChange\",g,this);!this.readOnly&&a.on(\"readOnly\",g,this);var k=CKEDITOR.tools.addFunction(function(b,\nd){var b=new CKEDITOR.dom.event(b),g=b.getKeystroke();if(40==g)a.once(\"panelShow\",function(a){a.data._.panel._.currentBlock.onKeyDown(40)});switch(g){case 13:case 32:case 40:CKEDITOR.tools.callFunction(e,d);break;default:c.onkey(c,g)}b.preventDefault()}),l=CKEDITOR.tools.addFunction(function(){c.onfocus&&c.onfocus()}),j=0;c.keyDownFn=k;d={id:h,name:this.name||this.command,label:this.label,title:this.title,cls:this.className||\"\",titleJs:d.gecko&&!d.hc?\"\":(this.title||\"\").replace(\"'\",\"\"),keydownFn:k,\nfocusFn:l,clickFn:e};i.output(d,b);if(this.onRender)this.onRender();return c},createPanel:function(a){if(!this._.panel){var b=this._.panelDefinition,d=this._.panelDefinition.block,i=b.parent||CKEDITOR.document.getBody(),h=\"cke_combopanel__\"+this.name,e=new CKEDITOR.ui.floatPanel(a,i,b),f=e.addListBlock(this.id,d),c=this;e.onShow=function(){this.element.addClass(h);c.setState(CKEDITOR.TRISTATE_ON);c._.on=1;c.editorFocus&&!a.focusManager.hasFocus&&a.focus();if(c.onOpen)c.onOpen();a.once(\"panelShow\",\nfunction(){f.focus(!f.multiSelect&&c.getValue())})};e.onHide=function(b){this.element.removeClass(h);c.setState(c.modes&&c.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);c._.on=0;if(!b&&c.onClose)c.onClose()};e.onEscape=function(){e.hide(1)};f.onClick=function(a,b){c.onClick&&c.onClick.call(c,a,b);e.hide()};this._.panel=e;this._.list=f;e.getBlock(this.id).onHide=function(){c._.on=0;c.setState(CKEDITOR.TRISTATE_OFF)};this.init&&this.init()}},setValue:function(a,b){this._.value=a;var d=\nthis.document.getById(\"cke_\"+this.id+\"_text\");d&&(!a&&!b?(b=this.label,d.addClass(\"cke_combo_inlinelabel\")):d.removeClass(\"cke_combo_inlinelabel\"),d.setText(\"undefined\"!=typeof b?b:a))},getValue:function(){return this._.value||\"\"},unmarkAll:function(){this._.list.unmarkAll()},mark:function(a){this._.list.mark(a)},hideItem:function(a){this._.list.hideItem(a)},hideGroup:function(a){this._.list.hideGroup(a)},showAll:function(){this._.list.showAll()},add:function(a,b,d){this._.items[a]=d||a;this._.list.add(a,\nb,d)},startGroup:function(a){this._.list.startGroup(a)},commit:function(){this._.committed||(this._.list.commit(),this._.committed=1,CKEDITOR.ui.fire(\"ready\",this));this._.committed=1},setState:function(a){if(this._.state!=a){var b=this.document.getById(\"cke_\"+this.id);b.setState(a,\"cke_combo\");a==CKEDITOR.TRISTATE_DISABLED?b.setAttribute(\"aria-disabled\",!0):b.removeAttribute(\"aria-disabled\");this._.state=a}},getState:function(){return this._.state},enable:function(){this._.state==CKEDITOR.TRISTATE_DISABLED&&\nthis.setState(this._.lastState)},disable:function(){this._.state!=CKEDITOR.TRISTATE_DISABLED&&(this._.lastState=this._.state,this.setState(CKEDITOR.TRISTATE_DISABLED))}},statics:{handler:{create:function(a){return new CKEDITOR.ui.richCombo(a)}}}});CKEDITOR.ui.prototype.addRichCombo=function(a,b){this.add(a,CKEDITOR.UI_RICHCOMBO,b)}})();(function(){function e(b,a,e,h,j,n,l,o){for(var p=b.config,k=new CKEDITOR.style(l),c=j.split(\";\"),j=[],g={},d=0;d<c.length;d++){var f=c[d];if(f){var f=f.split(\"/\"),m={},i=c[d]=f[0];m[e]=j[d]=f[1]||i;g[i]=new CKEDITOR.style(l,m);g[i]._.definition.name=i}else c.splice(d--,1)}b.ui.addRichCombo(a,{label:h.label,title:h.panelTitle,toolbar:\"styles,\"+o,allowedContent:k,requiredContent:k,panel:{css:[CKEDITOR.skin.getPath(\"editor\")].concat(p.contentsCss),multiSelect:!1,attributes:{\"aria-label\":h.panelTitle}},\ninit:function(){this.startGroup(h.panelTitle);for(var b=0;b<c.length;b++){var a=c[b];this.add(a,g[a].buildPreview(),a)}},onClick:function(a){b.focus();b.fire(\"saveSnapshot\");var c=g[a];b[this.getValue()==a?\"removeStyle\":\"applyStyle\"](c);b.fire(\"saveSnapshot\")},onRender:function(){b.on(\"selectionChange\",function(a){for(var c=this.getValue(),a=a.data.path.elements,d=0,f;d<a.length;d++){f=a[d];for(var e in g)if(g[e].checkElementMatch(f,!0,b)){e!=c&&this.setValue(e);return}}this.setValue(\"\",n)},this)},\nrefresh:function(){b.activeFilter.check(k)||this.setState(CKEDITOR.TRISTATE_DISABLED)}})}CKEDITOR.plugins.add(\"font\",{requires:\"richcombo\",init:function(b){var a=b.config;e(b,\"Font\",\"family\",b.lang.font,a.font_names,a.font_defaultLabel,a.font_style,30);e(b,\"FontSize\",\"size\",b.lang.font.fontSize,a.fontSize_sizes,a.fontSize_defaultLabel,a.fontSize_style,40)}})})();CKEDITOR.config.font_names=\"Arial/Arial, Helvetica, sans-serif;Comic Sans MS/Comic Sans MS, cursive;Courier New/Courier New, Courier, monospace;Georgia/Georgia, serif;Lucida Sans Unicode/Lucida Sans Unicode, Lucida Grande, sans-serif;Tahoma/Tahoma, Geneva, sans-serif;Times New Roman/Times New Roman, Times, serif;Trebuchet MS/Trebuchet MS, Helvetica, sans-serif;Verdana/Verdana, Geneva, sans-serif\";\nCKEDITOR.config.font_defaultLabel=\"\";CKEDITOR.config.font_style={element:\"span\",styles:{\"font-family\":\"#(family)\"},overrides:[{element:\"font\",attributes:{face:null}}]};CKEDITOR.config.fontSize_sizes=\"8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px\";CKEDITOR.config.fontSize_defaultLabel=\"\";CKEDITOR.config.fontSize_style={element:\"span\",styles:{\"font-size\":\"#(size)\"},overrides:[{element:\"font\",attributes:{size:null}}]};CKEDITOR.plugins.add(\"forms\",{requires:\"dialog,fakeobjects\",onLoad:function(){CKEDITOR.addCss(\".cke_editable form{border: 1px dotted #FF0000;padding: 2px;}\\n\");CKEDITOR.addCss(\"img.cke_hidden{background-image: url(\"+CKEDITOR.getUrl(this.path+\"images/hiddenfield.gif\")+\");background-position: center center;background-repeat: no-repeat;border: 1px solid #a9a9a9;width: 16px !important;height: 16px !important;}\")},init:function(a){var b=a.lang,g=0,h={email:1,password:1,search:1,tel:1,text:1,url:1},j={checkbox:\"input[type,name,checked]\",\nradio:\"input[type,name,checked]\",textfield:\"input[type,name,value,size,maxlength]\",textarea:\"textarea[cols,rows,name]\",select:\"select[name,size,multiple]; option[value,selected]\",button:\"input[type,name,value]\",form:\"form[action,name,id,enctype,target,method]\",hiddenfield:\"input[type,name,value]\",imagebutton:\"input[type,alt,src]{width,height,border,border-width,border-style,margin,float}\"},k={checkbox:\"input\",radio:\"input\",textfield:\"input\",textarea:\"textarea\",select:\"select\",button:\"input\",form:\"form\",\nhiddenfield:\"input\",imagebutton:\"input\"},e=function(d,c,e){var h={allowedContent:j[c],requiredContent:k[c]};\"form\"==c&&(h.context=\"form\");a.addCommand(c,new CKEDITOR.dialogCommand(c,h));a.ui.addButton&&a.ui.addButton(d,{label:b.common[d.charAt(0).toLowerCase()+d.slice(1)],command:c,toolbar:\"forms,\"+(g+=10)});CKEDITOR.dialog.add(c,e)},f=this.path+\"dialogs/\";!a.blockless&&e(\"Form\",\"form\",f+\"form.js\");e(\"Checkbox\",\"checkbox\",f+\"checkbox.js\");e(\"Radio\",\"radio\",f+\"radio.js\");e(\"TextField\",\"textfield\",\nf+\"textfield.js\");e(\"Textarea\",\"textarea\",f+\"textarea.js\");e(\"Select\",\"select\",f+\"select.js\");e(\"Button\",\"button\",f+\"button.js\");var i=a.plugins.image;i&&!a.plugins.image2&&e(\"ImageButton\",\"imagebutton\",CKEDITOR.plugins.getPath(\"image\")+\"dialogs/image.js\");e(\"HiddenField\",\"hiddenfield\",f+\"hiddenfield.js\");a.addMenuItems&&(e={checkbox:{label:b.forms.checkboxAndRadio.checkboxTitle,command:\"checkbox\",group:\"checkbox\"},radio:{label:b.forms.checkboxAndRadio.radioTitle,command:\"radio\",group:\"radio\"},textfield:{label:b.forms.textfield.title,\ncommand:\"textfield\",group:\"textfield\"},hiddenfield:{label:b.forms.hidden.title,command:\"hiddenfield\",group:\"hiddenfield\"},button:{label:b.forms.button.title,command:\"button\",group:\"button\"},select:{label:b.forms.select.title,command:\"select\",group:\"select\"},textarea:{label:b.forms.textarea.title,command:\"textarea\",group:\"textarea\"}},i&&(e.imagebutton={label:b.image.titleButton,command:\"imagebutton\",group:\"imagebutton\"}),!a.blockless&&(e.form={label:b.forms.form.menu,command:\"form\",group:\"form\"}),\na.addMenuItems(e));a.contextMenu&&(!a.blockless&&a.contextMenu.addListener(function(d,c,a){if((d=a.contains(\"form\",1))&&!d.isReadOnly())return{form:CKEDITOR.TRISTATE_OFF}}),a.contextMenu.addListener(function(d){if(d&&!d.isReadOnly()){var c=d.getName();if(c==\"select\")return{select:CKEDITOR.TRISTATE_OFF};if(c==\"textarea\")return{textarea:CKEDITOR.TRISTATE_OFF};if(c==\"input\"){var a=d.getAttribute(\"type\")||\"text\";switch(a){case \"button\":case \"submit\":case \"reset\":return{button:CKEDITOR.TRISTATE_OFF};case \"checkbox\":return{checkbox:CKEDITOR.TRISTATE_OFF};\ncase \"radio\":return{radio:CKEDITOR.TRISTATE_OFF};case \"image\":return i?{imagebutton:CKEDITOR.TRISTATE_OFF}:null}if(h[a])return{textfield:CKEDITOR.TRISTATE_OFF}}if(c==\"img\"&&d.data(\"cke-real-element-type\")==\"hiddenfield\")return{hiddenfield:CKEDITOR.TRISTATE_OFF}}}));a.on(\"doubleclick\",function(d){var c=d.data.element;if(!a.blockless&&c.is(\"form\"))d.data.dialog=\"form\";else if(c.is(\"select\"))d.data.dialog=\"select\";else if(c.is(\"textarea\"))d.data.dialog=\"textarea\";else if(c.is(\"img\")&&c.data(\"cke-real-element-type\")==\n\"hiddenfield\")d.data.dialog=\"hiddenfield\";else if(c.is(\"input\")){c=c.getAttribute(\"type\")||\"text\";switch(c){case \"button\":case \"submit\":case \"reset\":d.data.dialog=\"button\";break;case \"checkbox\":d.data.dialog=\"checkbox\";break;case \"radio\":d.data.dialog=\"radio\";break;case \"image\":d.data.dialog=\"imagebutton\"}if(h[c])d.data.dialog=\"textfield\"}})},afterInit:function(a){var b=a.dataProcessor,g=b&&b.htmlFilter,b=b&&b.dataFilter;CKEDITOR.env.ie&&g&&g.addRules({elements:{input:function(a){var a=a.attributes,\nb=a.type;b||(a.type=\"text\");(\"checkbox\"==b||\"radio\"==b)&&\"on\"==a.value&&delete a.value}}},{applyToAll:!0});b&&b.addRules({elements:{input:function(b){if(\"hidden\"==b.attributes.type)return a.createFakeParserElement(b,\"cke_hidden\",\"hiddenfield\")}}},{applyToAll:!0})}});CKEDITOR.plugins.add(\"format\",{requires:\"richcombo\",init:function(a){if(!a.blockless){for(var f=a.config,c=a.lang.format,j=f.format_tags.split(\";\"),d={},k=0,l=[],g=0;g<j.length;g++){var h=j[g],i=new CKEDITOR.style(f[\"format_\"+h]);if(!a.filter.customConfig||a.filter.check(i))k++,d[h]=i,d[h]._.enterMode=a.config.enterMode,l.push(i)}0!==k&&a.ui.addRichCombo(\"Format\",{label:c.label,title:c.panelTitle,toolbar:\"styles,20\",allowedContent:l,panel:{css:[CKEDITOR.skin.getPath(\"editor\")].concat(f.contentsCss),\nmultiSelect:!1,attributes:{\"aria-label\":c.panelTitle}},init:function(){this.startGroup(c.panelTitle);for(var a in d){var e=c[\"tag_\"+a];this.add(a,d[a].buildPreview(e),e)}},onClick:function(b){a.focus();a.fire(\"saveSnapshot\");var b=d[b],e=a.elementPath();a[b.checkActive(e,a)?\"removeStyle\":\"applyStyle\"](b);setTimeout(function(){a.fire(\"saveSnapshot\")},0)},onRender:function(){a.on(\"selectionChange\",function(b){var e=this.getValue(),b=b.data.path;this.refresh();for(var c in d)if(d[c].checkActive(b,a)){c!=\ne&&this.setValue(c,a.lang.format[\"tag_\"+c]);return}this.setValue(\"\")},this)},onOpen:function(){this.showAll();for(var b in d)a.activeFilter.check(d[b])||this.hideItem(b)},refresh:function(){var b=a.elementPath();if(b){if(b.isContextFor(\"p\"))for(var c in d)if(a.activeFilter.check(d[c]))return;this.setState(CKEDITOR.TRISTATE_DISABLED)}}})}}});CKEDITOR.config.format_tags=\"p;h1;h2;h3;h4;h5;h6;pre;address;div\";CKEDITOR.config.format_p={element:\"p\"};CKEDITOR.config.format_div={element:\"div\"};\nCKEDITOR.config.format_pre={element:\"pre\"};CKEDITOR.config.format_address={element:\"address\"};CKEDITOR.config.format_h1={element:\"h1\"};CKEDITOR.config.format_h2={element:\"h2\"};CKEDITOR.config.format_h3={element:\"h3\"};CKEDITOR.config.format_h4={element:\"h4\"};CKEDITOR.config.format_h5={element:\"h5\"};CKEDITOR.config.format_h6={element:\"h6\"};(function(){var b={canUndo:!1,exec:function(a){var b=a.document.createElement(\"hr\");a.insertElement(b)},allowedContent:\"hr\",requiredContent:\"hr\"};CKEDITOR.plugins.add(\"horizontalrule\",{init:function(a){a.blockless||(a.addCommand(\"horizontalrule\",b),a.ui.addButton&&a.ui.addButton(\"HorizontalRule\",{label:a.lang.horizontalrule.toolbar,command:\"horizontalrule\",toolbar:\"insert,40\"}))}})})();CKEDITOR.plugins.add(\"htmlwriter\",{init:function(b){var a=new CKEDITOR.htmlWriter;a.forceSimpleAmpersand=b.config.forceSimpleAmpersand;a.indentationChars=b.config.dataIndentationChars||\"\\t\";b.dataProcessor.writer=a}});\nCKEDITOR.htmlWriter=CKEDITOR.tools.createClass({base:CKEDITOR.htmlParser.basicWriter,$:function(){this.base();this.indentationChars=\"\\t\";this.selfClosingEnd=\" />\";this.lineBreakChars=\"\\n\";this.sortAttributes=1;this._.indent=0;this._.indentation=\"\";this._.inPre=0;this._.rules={};var b=CKEDITOR.dtd,a;for(a in CKEDITOR.tools.extend({},b.$nonBodyContent,b.$block,b.$listItem,b.$tableContent))this.setRules(a,{indent:!b[a][\"#\"],breakBeforeOpen:1,breakBeforeClose:!b[a][\"#\"],breakAfterClose:1,needsSpace:a in\nb.$block&&!(a in{li:1,dt:1,dd:1})});this.setRules(\"br\",{breakAfterOpen:1});this.setRules(\"title\",{indent:0,breakAfterOpen:0});this.setRules(\"style\",{indent:0,breakBeforeClose:1});this.setRules(\"pre\",{breakAfterOpen:1,indent:0})},proto:{openTag:function(b){var a=this._.rules[b];this._.afterCloser&&(a&&a.needsSpace&&this._.needsSpace)&&this._.output.push(\"\\n\");this._.indent?this.indentation():a&&a.breakBeforeOpen&&(this.lineBreak(),this.indentation());this._.output.push(\"<\",b);this._.afterCloser=0},\nopenTagClose:function(b,a){var c=this._.rules[b];a?(this._.output.push(this.selfClosingEnd),c&&c.breakAfterClose&&(this._.needsSpace=c.needsSpace)):(this._.output.push(\">\"),c&&c.indent&&(this._.indentation+=this.indentationChars));c&&c.breakAfterOpen&&this.lineBreak();\"pre\"==b&&(this._.inPre=1)},attribute:function(b,a){\"string\"==typeof a&&(this.forceSimpleAmpersand&&(a=a.replace(/&amp;/g,\"&\")),a=CKEDITOR.tools.htmlEncodeAttr(a));this._.output.push(\" \",b,'=\"',a,'\"')},closeTag:function(b){var a=this._.rules[b];\na&&a.indent&&(this._.indentation=this._.indentation.substr(this.indentationChars.length));this._.indent?this.indentation():a&&a.breakBeforeClose&&(this.lineBreak(),this.indentation());this._.output.push(\"</\",b,\">\");\"pre\"==b&&(this._.inPre=0);a&&a.breakAfterClose&&(this.lineBreak(),this._.needsSpace=a.needsSpace);this._.afterCloser=1},text:function(b){this._.indent&&(this.indentation(),!this._.inPre&&(b=CKEDITOR.tools.ltrim(b)));this._.output.push(b)},comment:function(b){this._.indent&&this.indentation();\nthis._.output.push(\"<\\!--\",b,\"--\\>\")},lineBreak:function(){!this._.inPre&&0<this._.output.length&&this._.output.push(this.lineBreakChars);this._.indent=1},indentation:function(){!this._.inPre&&this._.indentation&&this._.output.push(this._.indentation);this._.indent=0},reset:function(){this._.output=[];this._.indent=0;this._.indentation=\"\";this._.afterCloser=0;this._.inPre=0},setRules:function(b,a){var c=this._.rules[b];c?CKEDITOR.tools.extend(c,a,!0):this._.rules[b]=a}}});(function(){CKEDITOR.plugins.add(\"iframe\",{requires:\"dialog,fakeobjects\",onLoad:function(){CKEDITOR.addCss(\"img.cke_iframe{background-image: url(\"+CKEDITOR.getUrl(this.path+\"images/placeholder.png\")+\");background-position: center center;background-repeat: no-repeat;border: 1px solid #a9a9a9;width: 80px;height: 80px;}\")},init:function(a){var b=a.lang.iframe,c=\"iframe[align,longdesc,frameborder,height,name,scrolling,src,title,width]\";a.plugins.dialogadvtab&&(c+=\";iframe\"+a.plugins.dialogadvtab.allowedContent({id:1,\nclasses:1,styles:1}));CKEDITOR.dialog.add(\"iframe\",this.path+\"dialogs/iframe.js\");a.addCommand(\"iframe\",new CKEDITOR.dialogCommand(\"iframe\",{allowedContent:c,requiredContent:\"iframe\"}));a.ui.addButton&&a.ui.addButton(\"Iframe\",{label:b.toolbar,command:\"iframe\",toolbar:\"insert,80\"});a.on(\"doubleclick\",function(a){var b=a.data.element;b.is(\"img\")&&\"iframe\"==b.data(\"cke-real-element-type\")&&(a.data.dialog=\"iframe\")});a.addMenuItems&&a.addMenuItems({iframe:{label:b.title,command:\"iframe\",group:\"image\"}});\na.contextMenu&&a.contextMenu.addListener(function(a){if(a&&a.is(\"img\")&&\"iframe\"==a.data(\"cke-real-element-type\"))return{iframe:CKEDITOR.TRISTATE_OFF}})},afterInit:function(a){var b=a.dataProcessor;(b=b&&b.dataFilter)&&b.addRules({elements:{iframe:function(b){return a.createFakeParserElement(b,\"cke_iframe\",\"iframe\",!0)}}})}})})();(function(){function k(a){var d=this.editor,b=a.document,c=b.body,e=b.getElementById(\"cke_actscrpt\");e&&e.parentNode.removeChild(e);(e=b.getElementById(\"cke_shimscrpt\"))&&e.parentNode.removeChild(e);(e=b.getElementById(\"cke_basetagscrpt\"))&&e.parentNode.removeChild(e);CKEDITOR.env.gecko&&(c.contentEditable=!1,2E4>CKEDITOR.env.version&&(c.innerHTML=c.innerHTML.replace(/^.*<\\!-- cke-content-start --\\>/,\"\"),setTimeout(function(){var a=new CKEDITOR.dom.range(new CKEDITOR.dom.document(b));a.setStart(new CKEDITOR.dom.node(c),\n0);d.getSelection().selectRanges([a])},0)));c.contentEditable=!0;CKEDITOR.env.ie&&(c.hideFocus=!0,c.disabled=!0,c.removeAttribute(\"disabled\"));delete this._.isLoadingData;this.$=c;b=new CKEDITOR.dom.document(b);this.setup();CKEDITOR.env.ie&&(b.getDocumentElement().addClass(b.$.compatMode),d.config.enterMode!=CKEDITOR.ENTER_P&&this.attachListener(b,\"selectionchange\",function(){var a=b.getBody(),c=d.getSelection(),e=c&&c.getRanges()[0];e&&(a.getHtml().match(/^<p>(?:&nbsp;|<br>)<\\/p>$/i)&&e.startContainer.equals(a))&&\nsetTimeout(function(){e=d.getSelection().getRanges()[0];if(!e.startContainer.equals(\"body\")){a.getFirst().remove(1);e.moveToElementEditEnd(a);e.select()}},0)}));if(CKEDITOR.env.webkit||CKEDITOR.env.ie&&10<CKEDITOR.env.version)b.getDocumentElement().on(\"mousedown\",function(a){a.data.getTarget().is(\"html\")&&setTimeout(function(){d.editable().focus()})});try{d.document.$.execCommand(\"2D-position\",!1,!0)}catch(g){}try{d.document.$.execCommand(\"enableInlineTableEditing\",!1,!d.config.disableNativeTableHandles)}catch(f){}if(d.config.disableObjectResizing)try{this.getDocument().$.execCommand(\"enableObjectResizing\",\n!1,!1)}catch(h){this.attachListener(this,CKEDITOR.env.ie?\"resizestart\":\"resize\",function(a){a.data.preventDefault()})}(CKEDITOR.env.gecko||CKEDITOR.env.ie&&\"CSS1Compat\"==d.document.$.compatMode)&&this.attachListener(this,\"keydown\",function(a){var b=a.data.getKeystroke();if(b==33||b==34)if(CKEDITOR.env.ie)setTimeout(function(){d.getSelection().scrollIntoView()},0);else if(d.window.$.innerHeight>this.$.offsetHeight){var c=d.createRange();c[b==33?\"moveToElementEditStart\":\"moveToElementEditEnd\"](this);\nc.select();a.data.preventDefault()}});CKEDITOR.env.ie&&this.attachListener(b,\"blur\",function(){try{b.$.selection.empty()}catch(a){}});CKEDITOR.env.iOS&&this.attachListener(b,\"touchend\",function(){a.focus()});d.document.getElementsByTag(\"title\").getItem(0).data(\"cke-title\",d.document.$.title);CKEDITOR.env.ie&&(d.document.$.title=this._.docTitle);CKEDITOR.tools.setTimeout(function(){if(this.status==\"unloaded\")this.status=\"ready\";d.fire(\"contentDom\");if(this._.isPendingFocus){d.focus();this._.isPendingFocus=\nfalse}setTimeout(function(){d.fire(\"dataReady\")},0);CKEDITOR.env.ie&&setTimeout(function(){if(d.document){var a=d.document.$.body;a.runtimeStyle.marginBottom=\"0px\";a.runtimeStyle.marginBottom=\"\"}},1E3)},0,this)}function l(){var a=[];if(8<=CKEDITOR.document.$.documentMode){a.push(\"html.CSS1Compat [contenteditable=false]{min-height:0 !important}\");var d=[],b;for(b in CKEDITOR.dtd.$removeEmpty)d.push(\"html.CSS1Compat \"+b+\"[contenteditable=false]\");a.push(d.join(\",\")+\"{display:inline-block}\")}else CKEDITOR.env.gecko&&\n(a.push(\"html{height:100% !important}\"),a.push(\"img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}\"));a.push(\"html{cursor:text;*cursor:auto}\");a.push(\"img,input,textarea{cursor:default}\");return a.join(\"\\n\")}CKEDITOR.plugins.add(\"wysiwygarea\",{init:function(a){a.config.fullPage&&a.addFeature({allowedContent:\"html head title; style [media,type]; body (*)[id]; meta link [*]\",requiredContent:\"body\"});a.addMode(\"wysiwyg\",function(d){function b(b){b&&b.removeListener();a.editable(new j(a,\ne.$.contentWindow.document.body));a.setData(a.getData(1),d)}var c=\"document.open();\"+(CKEDITOR.env.ie?\"(\"+CKEDITOR.tools.fixDomain+\")();\":\"\")+\"document.close();\",c=CKEDITOR.env.air?\"javascript:void(0)\":CKEDITOR.env.ie?\"javascript:void(function(){\"+encodeURIComponent(c)+\"}())\":\"\",e=CKEDITOR.dom.element.createFromHtml('<iframe src=\"'+c+'\" frameBorder=\"0\"></iframe>');e.setStyles({width:\"100%\",height:\"100%\"});e.addClass(\"cke_wysiwyg_frame cke_reset\");var g=a.ui.space(\"contents\");g.append(e);if(c=CKEDITOR.env.ie||\nCKEDITOR.env.gecko)e.on(\"load\",b);var f=a.title,h=a.lang.common.editorHelp;f&&(CKEDITOR.env.ie&&(f+=\", \"+h),e.setAttribute(\"title\",f));var f=CKEDITOR.tools.getNextId(),i=CKEDITOR.dom.element.createFromHtml('<span id=\"'+f+'\" class=\"cke_voice_label\">'+h+\"</span>\");g.append(i,1);a.on(\"beforeModeUnload\",function(a){a.removeListener();i.remove()});e.setAttributes({\"aria-describedby\":f,tabIndex:a.tabIndex,allowTransparency:\"true\"});!c&&b();CKEDITOR.env.webkit&&(c=function(){g.setStyle(\"width\",\"100%\");e.hide();\ne.setSize(\"width\",g.getSize(\"width\"));g.removeStyle(\"width\");e.show()},e.setCustomData(\"onResize\",c),CKEDITOR.document.getWindow().on(\"resize\",c));a.fire(\"ariaWidget\",e)})}});CKEDITOR.editor.prototype.addContentsCss=function(a){var d=this.config,b=d.contentsCss;CKEDITOR.tools.isArray(b)||(d.contentsCss=b?[b]:[]);d.contentsCss.push(a)};var j=CKEDITOR.tools.createClass({$:function(a){this.base.apply(this,arguments);this._.frameLoadedHandler=CKEDITOR.tools.addFunction(function(a){CKEDITOR.tools.setTimeout(k,\n0,this,a)},this);this._.docTitle=this.getWindow().getFrame().getAttribute(\"title\")},base:CKEDITOR.editable,proto:{setData:function(a,d){var b=this.editor;if(d)this.setHtml(a),b.fire(\"dataReady\");else{this._.isLoadingData=!0;b._.dataStore={id:1};var c=b.config,e=c.fullPage,g=c.docType,f=CKEDITOR.tools.buildStyleHtml(l()).replace(/<style>/,'<style data-cke-temp=\"1\">');e||(f+=CKEDITOR.tools.buildStyleHtml(b.config.contentsCss));var h=c.baseHref?'<base href=\"'+c.baseHref+'\" data-cke-temp=\"1\" />':\"\";e&&\n(a=a.replace(/<!DOCTYPE[^>]*>/i,function(a){b.docType=g=a;return\"\"}).replace(/<\\?xml\\s[^\\?]*\\?>/i,function(a){b.xmlDeclaration=a;return\"\"}));a=b.dataProcessor.toHtml(a);e?(/<body[\\s|>]/.test(a)||(a=\"<body>\"+a),/<html[\\s|>]/.test(a)||(a=\"<html>\"+a+\"</html>\"),/<head[\\s|>]/.test(a)?/<title[\\s|>]/.test(a)||(a=a.replace(/<head[^>]*>/,\"$&<title></title>\")):a=a.replace(/<html[^>]*>/,\"$&<head><title></title></head>\"),h&&(a=a.replace(/<head>/,\"$&\"+h)),a=a.replace(/<\\/head\\s*>/,f+\"$&\"),a=g+a):a=c.docType+'<html dir=\"'+\nc.contentsLangDirection+'\" lang=\"'+(c.contentsLanguage||b.langCode)+'\"><head><title>'+this._.docTitle+\"</title>\"+h+f+\"</head><body\"+(c.bodyId?' id=\"'+c.bodyId+'\"':\"\")+(c.bodyClass?' class=\"'+c.bodyClass+'\"':\"\")+\">\"+a+\"</body></html>\";CKEDITOR.env.gecko&&(a=a.replace(/<body/,'<body contenteditable=\"true\" '),2E4>CKEDITOR.env.version&&(a=a.replace(/<body[^>]*>/,\"$&<\\!-- cke-content-start --\\>\")));c='<script id=\"cke_actscrpt\" type=\"text/javascript\"'+(CKEDITOR.env.ie?' defer=\"defer\" ':\"\")+\">var wasLoaded=0;function onload(){if(!wasLoaded)window.parent.CKEDITOR.tools.callFunction(\"+\nthis._.frameLoadedHandler+\",window);wasLoaded=1;}\"+(CKEDITOR.env.ie?\"onload();\":'document.addEventListener(\"DOMContentLoaded\", onload, false );')+\"<\\/script>\";CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(c+='<script id=\"cke_shimscrpt\">window.parent.CKEDITOR.tools.enableHtml5Elements(document)<\\/script>');h&&(CKEDITOR.env.ie&&10>CKEDITOR.env.version)&&(c+='<script id=\"cke_basetagscrpt\">var baseTag = document.querySelector( \"base\" );baseTag.href = baseTag.href;<\\/script>');a=a.replace(/(?=\\s*<\\/(:?head)>)/,\nc);this.clearCustomData();this.clearListeners();b.fire(\"contentDomUnload\");var i=this.getDocument();try{i.write(a)}catch(j){setTimeout(function(){i.write(a)},0)}}},getData:function(a){if(a)return this.getHtml();var a=this.editor,d=a.config,b=d.fullPage,c=b&&a.docType,e=b&&a.xmlDeclaration,g=this.getDocument(),b=b?g.getDocumentElement().getOuterHtml():g.getBody().getHtml();CKEDITOR.env.gecko&&d.enterMode!=CKEDITOR.ENTER_BR&&(b=b.replace(/<br>(?=\\s*(:?$|<\\/body>))/,\"\"));b=a.dataProcessor.toDataFormat(b);\ne&&(b=e+\"\\n\"+b);c&&(b=c+\"\\n\"+b);return b},focus:function(){this._.isLoadingData?this._.isPendingFocus=!0:j.baseProto.focus.call(this)},detach:function(){var a=this.editor,d=a.document,a=a.window.getFrame();j.baseProto.detach.call(this);this.clearCustomData();d.getDocumentElement().clearCustomData();a.clearCustomData();CKEDITOR.tools.removeFunction(this._.frameLoadedHandler);(d=a.removeCustomData(\"onResize\"))&&d.removeListener();a.remove()}}})})();CKEDITOR.config.disableObjectResizing=!1;\nCKEDITOR.config.disableNativeTableHandles=!0;CKEDITOR.config.disableNativeSpellChecker=!0;CKEDITOR.config.contentsCss=CKEDITOR.getUrl(\"contents.css\");(function(){function e(b,a){a||(a=b.getSelection().getSelectedElement());if(a&&a.is(\"img\")&&!a.data(\"cke-realelement\")&&!a.isReadOnly())return a}function f(b){var a=b.getStyle(\"float\");if(\"inherit\"==a||\"none\"==a)a=0;a||(a=b.getAttribute(\"align\"));return a}CKEDITOR.plugins.add(\"image\",{requires:\"dialog\",init:function(b){if(!b.plugins.image2){CKEDITOR.dialog.add(\"image\",this.path+\"dialogs/image.js\");var a=\"img[alt,!src]{border-style,border-width,float,height,margin,margin-bottom,margin-left,margin-right,margin-top,width}\";\nCKEDITOR.dialog.isTabEnabled(b,\"image\",\"advanced\")&&(a=\"img[alt,dir,id,lang,longdesc,!src,title]{*}(*)\");b.addCommand(\"image\",new CKEDITOR.dialogCommand(\"image\",{allowedContent:a,requiredContent:\"img[alt,src]\",contentTransformations:[[\"img{width}: sizeToStyle\",\"img[width]: sizeToAttribute\"],[\"img{float}: alignmentToStyle\",\"img[align]: alignmentToAttribute\"]]}));b.ui.addButton&&b.ui.addButton(\"Image\",{label:b.lang.common.image,command:\"image\",toolbar:\"insert,10\"});b.on(\"doubleclick\",function(b){var a=\nb.data.element;a.is(\"img\")&&(!a.data(\"cke-realelement\")&&!a.isReadOnly())&&(b.data.dialog=\"image\")});b.addMenuItems&&b.addMenuItems({image:{label:b.lang.image.menu,command:\"image\",group:\"image\"}});b.contextMenu&&b.contextMenu.addListener(function(a){if(e(b,a))return{image:CKEDITOR.TRISTATE_OFF}})}},afterInit:function(b){function a(a){var d=b.getCommand(\"justify\"+a);if(d){if(\"left\"==a||\"right\"==a)d.on(\"exec\",function(d){var c=e(b),g;c&&(g=f(c),g==a?(c.removeStyle(\"float\"),a==f(c)&&c.removeAttribute(\"align\")):\nc.setStyle(\"float\",a),d.cancel())});d.on(\"refresh\",function(d){var c=e(b);c&&(c=f(c),this.setState(c==a?CKEDITOR.TRISTATE_ON:\"right\"==a||\"left\"==a?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED),d.cancel())})}}b.plugins.image2||(a(\"left\"),a(\"right\"),a(\"center\"),a(\"block\"))}})})();CKEDITOR.config.image_removeLinkByEmptyURL=!0;(function(){function k(a,b){var e,f;b.on(\"refresh\",function(a){var b=[i],c;for(c in a.data.states)b.push(a.data.states[c]);this.setState(CKEDITOR.tools.search(b,m)?m:i)},b,null,100);b.on(\"exec\",function(b){e=a.getSelection();f=e.createBookmarks(1);b.data||(b.data={});b.data.done=!1},b,null,0);b.on(\"exec\",function(){a.forceNextSelectionCheck();e.selectBookmarks(f)},b,null,100)}var i=CKEDITOR.TRISTATE_DISABLED,m=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add(\"indent\",{init:function(a){var b=CKEDITOR.plugins.indent.genericDefinition;\nk(a,a.addCommand(\"indent\",new b(!0)));k(a,a.addCommand(\"outdent\",new b));a.ui.addButton&&(a.ui.addButton(\"Indent\",{label:a.lang.indent.indent,command:\"indent\",directional:!0,toolbar:\"indent,20\"}),a.ui.addButton(\"Outdent\",{label:a.lang.indent.outdent,command:\"outdent\",directional:!0,toolbar:\"indent,10\"}));a.on(\"dirChanged\",function(b){var f=a.createRange(),j=b.data.node;f.setStartBefore(j);f.setEndAfter(j);for(var l=new CKEDITOR.dom.walker(f),c;c=l.next();)if(c.type==CKEDITOR.NODE_ELEMENT)if(!c.equals(j)&&\nc.getDirection()){f.setStartAfter(c);l=new CKEDITOR.dom.walker(f)}else{var d=a.config.indentClasses;if(d)for(var g=b.data.dir==\"ltr\"?[\"_rtl\",\"\"]:[\"\",\"_rtl\"],h=0;h<d.length;h++)if(c.hasClass(d[h]+g[0])){c.removeClass(d[h]+g[0]);c.addClass(d[h]+g[1])}d=c.getStyle(\"margin-right\");g=c.getStyle(\"margin-left\");d?c.setStyle(\"margin-left\",d):c.removeStyle(\"margin-left\");g?c.setStyle(\"margin-right\",g):c.removeStyle(\"margin-right\")}})}});CKEDITOR.plugins.indent={genericDefinition:function(a){this.isIndent=\n!!a;this.startDisabled=!this.isIndent},specificDefinition:function(a,b,e){this.name=b;this.editor=a;this.jobs={};this.enterBr=a.config.enterMode==CKEDITOR.ENTER_BR;this.isIndent=!!e;this.relatedGlobal=e?\"indent\":\"outdent\";this.indentKey=e?9:CKEDITOR.SHIFT+9;this.database={}},registerCommands:function(a,b){a.on(\"pluginsLoaded\",function(){for(var a in b)(function(a,b){var e=a.getCommand(b.relatedGlobal),c;for(c in b.jobs)e.on(\"exec\",function(d){d.data.done||(a.fire(\"lockSnapshot\"),b.execJob(a,c)&&(d.data.done=\n!0),a.fire(\"unlockSnapshot\"),CKEDITOR.dom.element.clearAllMarkers(b.database))},this,null,c),e.on(\"refresh\",function(d){d.data.states||(d.data.states={});d.data.states[b.name+\"@\"+c]=b.refreshJob(a,c,d.data.path)},this,null,c);a.addFeature(b)})(this,b[a])})}};CKEDITOR.plugins.indent.genericDefinition.prototype={context:\"p\",exec:function(){}};CKEDITOR.plugins.indent.specificDefinition.prototype={execJob:function(a,b){var e=this.jobs[b];if(e.state!=i)return e.exec.call(this,a)},refreshJob:function(a,\nb,e){b=this.jobs[b];b.state=a.activeFilter.checkFeature(this)?b.refresh.call(this,a,e):i;return b.state},getContext:function(a){return a.contains(this.context)}}})();(function(){function h(b,c,a){if(!b.getCustomData(\"indent_processed\")){var d=this.editor,f=this.isIndent;if(c){d=b.$.className.match(this.classNameRegex);a=0;d&&(d=d[1],a=CKEDITOR.tools.indexOf(c,d)+1);if(0>(a+=f?1:-1))return;a=Math.min(a,c.length);a=Math.max(a,0);b.$.className=CKEDITOR.tools.ltrim(b.$.className.replace(this.classNameRegex,\"\"));0<a&&b.addClass(c[a-1])}else{var c=i(b,a),a=parseInt(b.getStyle(c),10),g=d.config.indentOffset||40;isNaN(a)&&(a=0);a+=(f?1:-1)*g;if(0>a)return;a=Math.max(a,\n0);a=Math.ceil(a/g)*g;b.setStyle(c,a?a+(d.config.indentUnit||\"px\"):\"\");\"\"===b.getAttribute(\"style\")&&b.removeAttribute(\"style\")}CKEDITOR.dom.element.setMarker(this.database,b,\"indent_processed\",1)}}function i(b,c){return\"ltr\"==(c||b.getComputedStyle(\"direction\"))?\"margin-left\":\"margin-right\"}var j=CKEDITOR.dtd.$listItem,l=CKEDITOR.dtd.$list,f=CKEDITOR.TRISTATE_DISABLED,k=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add(\"indentblock\",{requires:\"indent\",init:function(b){function c(b,c){a.specificDefinition.apply(this,\narguments);this.allowedContent={\"div h1 h2 h3 h4 h5 h6 ol p pre ul\":{propertiesOnly:!0,styles:!d?\"margin-left,margin-right\":null,classes:d||null}};this.enterBr&&(this.allowedContent.div=!0);this.requiredContent=(this.enterBr?\"div\":\"p\")+(d?\"(\"+d.join(\",\")+\")\":\"{margin-left}\");this.jobs={20:{refresh:function(a,b){var e=b.block||b.blockLimit;if(e.is(j))e=e.getParent();else if(e.getAscendant(j))return f;if(!this.enterBr&&!this.getContext(b))return f;if(d){var c;c=d;var e=e.$.className.match(this.classNameRegex),\ng=this.isIndent;c=e?g?e[1]!=c.slice(-1):true:g;return c?k:f}return this.isIndent?k:e?CKEDITOR[(parseInt(e.getStyle(i(e)),10)||0)<=0?\"TRISTATE_DISABLED\":\"TRISTATE_OFF\"]:f},exec:function(a){var b=a.getSelection(),b=b&&b.getRanges()[0],c;if(c=a.elementPath().contains(l))h.call(this,c,d);else{b=b.createIterator();a=a.config.enterMode;b.enforceRealBlocks=true;for(b.enlargeBr=a!=CKEDITOR.ENTER_BR;c=b.getNextParagraph(a==CKEDITOR.ENTER_P?\"p\":\"div\");)c.isReadOnly()||h.call(this,c,d)}return true}}}}var a=\nCKEDITOR.plugins.indent,d=b.config.indentClasses;a.registerCommands(b,{indentblock:new c(b,\"indentblock\",!0),outdentblock:new c(b,\"outdentblock\")});CKEDITOR.tools.extend(c.prototype,a.specificDefinition.prototype,{context:{div:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,ul:1,ol:1,p:1,pre:1,table:1},classNameRegex:d?RegExp(\"(?:^|\\\\s+)(\"+d.join(\"|\")+\")(?=$|\\\\s)\"):null})}})})();(function(){function s(e){function g(b){for(var f=d.startContainer,a=d.endContainer;f&&!f.getParent().equals(b);)f=f.getParent();for(;a&&!a.getParent().equals(b);)a=a.getParent();if(!f||!a)return!1;for(var h=f,f=[],c=!1;!c;)h.equals(a)&&(c=!0),f.push(h),h=h.getNext();if(1>f.length)return!1;h=b.getParents(!0);for(a=0;a<h.length;a++)if(h[a].getName&&k[h[a].getName()]){b=h[a];break}for(var h=n.isIndent?1:-1,a=f[0],f=f[f.length-1],c=CKEDITOR.plugins.list.listToArray(b,o),g=c[f.getCustomData(\"listarray_index\")].indent,\na=a.getCustomData(\"listarray_index\");a<=f.getCustomData(\"listarray_index\");a++)if(c[a].indent+=h,0<h){var l=c[a].parent;c[a].parent=new CKEDITOR.dom.element(l.getName(),l.getDocument())}for(a=f.getCustomData(\"listarray_index\")+1;a<c.length&&c[a].indent>g;a++)c[a].indent+=h;f=CKEDITOR.plugins.list.arrayToList(c,o,null,e.config.enterMode,b.getDirection());if(!n.isIndent){var i;if((i=b.getParent())&&i.is(\"li\"))for(var h=f.listNode.getChildren(),m=[],j,a=h.count()-1;0<=a;a--)(j=h.getItem(a))&&(j.is&&\nj.is(\"li\"))&&m.push(j)}f&&f.listNode.replace(b);if(m&&m.length)for(a=0;a<m.length;a++){for(j=b=m[a];(j=j.getNext())&&j.is&&j.getName()in k;)CKEDITOR.env.needsNbspFiller&&!b.getFirst(t)&&b.append(d.document.createText(\" \")),b.append(j);b.insertAfter(i)}f&&e.fire(\"contentDomInvalidated\");return!0}for(var n=this,o=this.database,k=this.context,l=e.getSelection(),l=(l&&l.getRanges()).createIterator(),d;d=l.getNextRange();){for(var b=d.getCommonAncestor();b&&!(b.type==CKEDITOR.NODE_ELEMENT&&k[b.getName()]);)b=\nb.getParent();b||(b=d.startPath().contains(k))&&d.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);if(!b){var c=d.getEnclosedNode();c&&(c.type==CKEDITOR.NODE_ELEMENT&&c.getName()in k)&&(d.setStartAt(c,CKEDITOR.POSITION_AFTER_START),d.setEndAt(c,CKEDITOR.POSITION_BEFORE_END),b=c)}b&&(d.startContainer.type==CKEDITOR.NODE_ELEMENT&&d.startContainer.getName()in k)&&(c=new CKEDITOR.dom.walker(d),c.evaluator=i,d.startContainer=c.next());b&&(d.endContainer.type==CKEDITOR.NODE_ELEMENT&&d.endContainer.getName()in k)&&\n(c=new CKEDITOR.dom.walker(d),c.evaluator=i,d.endContainer=c.previous());if(b)return g(b)}return 0}function p(e,g){g||(g=e.contains(this.context));return g&&e.block&&e.block.equals(g.getFirst(i))}function i(e){return e.type==CKEDITOR.NODE_ELEMENT&&e.is(\"li\")}function t(e){return u(e)&&v(e)}var u=CKEDITOR.dom.walker.whitespaces(!0),v=CKEDITOR.dom.walker.bookmark(!1,!0),q=CKEDITOR.TRISTATE_DISABLED,r=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add(\"indentlist\",{requires:\"indent\",init:function(e){function g(e,\ng){i.specificDefinition.apply(this,arguments);this.requiredContent=[\"ul\",\"ol\"];e.on(\"key\",function(g){if(\"wysiwyg\"==e.mode&&g.data.keyCode==this.indentKey){var d=this.getContext(e.elementPath());if(d&&(!this.isIndent||!p.call(this,e.elementPath(),d)))e.execCommand(this.relatedGlobal),g.cancel()}},this);this.jobs[this.isIndent?10:30]={refresh:this.isIndent?function(e,d){var b=this.getContext(d),c=p.call(this,d,b);return!b||!this.isIndent||c?q:r}:function(e,d){return!this.getContext(d)||this.isIndent?\nq:r},exec:CKEDITOR.tools.bind(s,this)}}var i=CKEDITOR.plugins.indent;i.registerCommands(e,{indentlist:new g(e,\"indentlist\",!0),outdentlist:new g(e,\"outdentlist\")});CKEDITOR.tools.extend(g.prototype,i.specificDefinition.prototype,{context:{ol:1,ul:1}})}})})();CKEDITOR.plugins.add(\"smiley\",{requires:\"dialog\",init:function(a){a.config.smiley_path=a.config.smiley_path||this.path+\"images/\";a.addCommand(\"smiley\",new CKEDITOR.dialogCommand(\"smiley\",{allowedContent:\"img[alt,height,!src,title,width]\",requiredContent:\"img\"}));a.ui.addButton&&a.ui.addButton(\"Smiley\",{label:a.lang.smiley.toolbar,command:\"smiley\",toolbar:\"insert,50\"});CKEDITOR.dialog.add(\"smiley\",this.path+\"dialogs/smiley.js\")}});CKEDITOR.config.smiley_images=\"regular_smile.png sad_smile.png wink_smile.png teeth_smile.png confused_smile.png tongue_smile.png embarrassed_smile.png omg_smile.png whatchutalkingabout_smile.png angry_smile.png angel_smile.png shades_smile.png devil_smile.png cry_smile.png lightbulb.png thumbs_down.png thumbs_up.png heart.png broken_heart.png kiss.png envelope.png\".split(\" \");\nCKEDITOR.config.smiley_descriptions=\"smiley;sad;wink;laugh;frown;cheeky;blush;surprise;indecision;angry;angel;cool;devil;crying;enlightened;no;yes;heart;broken heart;kiss;mail\".split(\";\");(function(){function l(a,c){var c=void 0===c||c,b;if(c)b=a.getComputedStyle(\"text-align\");else{for(;!a.hasAttribute||!a.hasAttribute(\"align\")&&!a.getStyle(\"text-align\");){b=a.getParent();if(!b)break;a=b}b=a.getStyle(\"text-align\")||a.getAttribute(\"align\")||\"\"}b&&(b=b.replace(/(?:-(?:moz|webkit)-)?(?:start|auto)/i,\"\"));!b&&c&&(b=\"rtl\"==a.getComputedStyle(\"direction\")?\"right\":\"left\");return b}function g(a,c,b){this.editor=a;this.name=c;this.value=b;this.context=\"p\";var c=a.config.justifyClasses,h=a.config.enterMode==\nCKEDITOR.ENTER_P?\"p\":\"div\";if(c){switch(b){case \"left\":this.cssClassName=c[0];break;case \"center\":this.cssClassName=c[1];break;case \"right\":this.cssClassName=c[2];break;case \"justify\":this.cssClassName=c[3]}this.cssClassRegex=RegExp(\"(?:^|\\\\s+)(?:\"+c.join(\"|\")+\")(?=$|\\\\s)\");this.requiredContent=h+\"(\"+this.cssClassName+\")\"}else this.requiredContent=h+\"{text-align}\";this.allowedContent={\"caption div h1 h2 h3 h4 h5 h6 p pre td th li\":{propertiesOnly:!0,styles:this.cssClassName?null:\"text-align\",classes:this.cssClassName||\nnull}};a.config.enterMode==CKEDITOR.ENTER_BR&&(this.allowedContent.div=!0)}function j(a){var c=a.editor,b=c.createRange();b.setStartBefore(a.data.node);b.setEndAfter(a.data.node);for(var h=new CKEDITOR.dom.walker(b),d;d=h.next();)if(d.type==CKEDITOR.NODE_ELEMENT)if(!d.equals(a.data.node)&&d.getDirection())b.setStartAfter(d),h=new CKEDITOR.dom.walker(b);else{var e=c.config.justifyClasses;e&&(d.hasClass(e[0])?(d.removeClass(e[0]),d.addClass(e[2])):d.hasClass(e[2])&&(d.removeClass(e[2]),d.addClass(e[0])));\ne=d.getStyle(\"text-align\");\"left\"==e?d.setStyle(\"text-align\",\"right\"):\"right\"==e&&d.setStyle(\"text-align\",\"left\")}}g.prototype={exec:function(a){var c=a.getSelection(),b=a.config.enterMode;if(c){for(var h=c.createBookmarks(),d=c.getRanges(),e=this.cssClassName,g,f,i=a.config.useComputedState,i=void 0===i||i,k=d.length-1;0<=k;k--){g=d[k].createIterator();for(g.enlargeBr=b!=CKEDITOR.ENTER_BR;f=g.getNextParagraph(b==CKEDITOR.ENTER_P?\"p\":\"div\");)if(!f.isReadOnly()){f.removeAttribute(\"align\");f.removeStyle(\"text-align\");\nvar j=e&&(f.$.className=CKEDITOR.tools.ltrim(f.$.className.replace(this.cssClassRegex,\"\"))),m=this.state==CKEDITOR.TRISTATE_OFF&&(!i||l(f,!0)!=this.value);e?m?f.addClass(e):j||f.removeAttribute(\"class\"):m&&f.setStyle(\"text-align\",this.value)}}a.focus();a.forceNextSelectionCheck();c.selectBookmarks(h)}},refresh:function(a,c){var b=c.block||c.blockLimit;this.setState(\"body\"!=b.getName()&&l(b,this.editor.config.useComputedState)==this.value?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)}};CKEDITOR.plugins.add(\"justify\",\n{init:function(a){if(!a.blockless){var c=new g(a,\"justifyleft\",\"left\"),b=new g(a,\"justifycenter\",\"center\"),h=new g(a,\"justifyright\",\"right\"),d=new g(a,\"justifyblock\",\"justify\");a.addCommand(\"justifyleft\",c);a.addCommand(\"justifycenter\",b);a.addCommand(\"justifyright\",h);a.addCommand(\"justifyblock\",d);a.ui.addButton&&(a.ui.addButton(\"JustifyLeft\",{label:a.lang.justify.left,command:\"justifyleft\",toolbar:\"align,10\"}),a.ui.addButton(\"JustifyCenter\",{label:a.lang.justify.center,command:\"justifycenter\",\ntoolbar:\"align,20\"}),a.ui.addButton(\"JustifyRight\",{label:a.lang.justify.right,command:\"justifyright\",toolbar:\"align,30\"}),a.ui.addButton(\"JustifyBlock\",{label:a.lang.justify.block,command:\"justifyblock\",toolbar:\"align,40\"}));a.on(\"dirChanged\",j)}}})})();CKEDITOR.plugins.add(\"menubutton\",{requires:\"button,menu\",onLoad:function(){var d=function(c){var a=this._,b=a.menu;a.state!==CKEDITOR.TRISTATE_DISABLED&&(a.on&&b?b.hide():(a.previousState=a.state,b||(b=a.menu=new CKEDITOR.menu(c,{panel:{className:\"cke_menu_panel\",attributes:{\"aria-label\":c.lang.common.options}}}),b.onHide=CKEDITOR.tools.bind(function(){var b=this.command?c.getCommand(this.command).modes:this.modes;this.setState(!b||b[c.mode]?a.previousState:CKEDITOR.TRISTATE_DISABLED);a.on=0},this),\nthis.onMenu&&b.addListener(this.onMenu)),this.setState(CKEDITOR.TRISTATE_ON),a.on=1,setTimeout(function(){b.show(CKEDITOR.document.getById(a.id),4)},0)))};CKEDITOR.ui.menuButton=CKEDITOR.tools.createClass({base:CKEDITOR.ui.button,$:function(c){delete c.panel;this.base(c);this.hasArrow=!0;this.click=d},statics:{handler:{create:function(c){return new CKEDITOR.ui.menuButton(c)}}}})},beforeInit:function(d){d.ui.addHandler(CKEDITOR.UI_MENUBUTTON,CKEDITOR.ui.menuButton.handler)}});\nCKEDITOR.UI_MENUBUTTON=\"menubutton\";(function(){CKEDITOR.plugins.add(\"language\",{requires:\"menubutton\",init:function(a){var b=a.config.language_list||[\"ar:Arabic:rtl\",\"fr:French\",\"es:Spanish\"],c=this,d=a.lang.language,e={},g,h,i,f;a.addCommand(\"language\",{allowedContent:\"span[!lang,!dir]\",requiredContent:\"span[lang,dir]\",contextSensitive:!0,exec:function(a,b){var c=e[\"language_\"+b];if(c)a[c.style.checkActive(a.elementPath(),a)?\"removeStyle\":\"applyStyle\"](c.style)},refresh:function(a){this.setState(c.getCurrentLangElement(a)?CKEDITOR.TRISTATE_ON:\nCKEDITOR.TRISTATE_OFF)}});for(f=0;f<b.length;f++)g=b[f].split(\":\"),h=g[0],i=\"language_\"+h,e[i]={label:g[1],langId:h,group:\"language\",order:f,ltr:\"rtl\"!=(\"\"+g[2]).toLowerCase(),onClick:function(){a.execCommand(\"language\",this.langId)},role:\"menuitemcheckbox\"},e[i].style=new CKEDITOR.style({element:\"span\",attributes:{lang:h,dir:e[i].ltr?\"ltr\":\"rtl\"}});e.language_remove={label:d.remove,group:\"language_remove\",state:CKEDITOR.TRISTATE_DISABLED,order:e.length,onClick:function(){var b=c.getCurrentLangElement(a);\nb&&a.execCommand(\"language\",b.getAttribute(\"lang\"))}};a.addMenuGroup(\"language\",1);a.addMenuGroup(\"language_remove\");a.addMenuItems(e);a.ui.add(\"Language\",CKEDITOR.UI_MENUBUTTON,{label:d.button,allowedContent:\"span[!lang,!dir]\",requiredContent:\"span[lang,dir]\",toolbar:\"bidi,30\",command:\"language\",onMenu:function(){var b={},d=c.getCurrentLangElement(a),f;for(f in e)b[f]=CKEDITOR.TRISTATE_OFF;b.language_remove=d?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED;d&&(b[\"language_\"+d.getAttribute(\"lang\")]=\nCKEDITOR.TRISTATE_ON);return b}})},getCurrentLangElement:function(a){var b=a.elementPath(),a=b&&b.elements,c;if(b)for(var d=0;d<a.length;d++)b=a[d],!c&&(\"span\"==b.getName()&&b.hasAttribute(\"dir\")&&b.hasAttribute(\"lang\"))&&(c=b);return c}})})();(function(){function m(c){return c.replace(/'/g,\"\\\\$&\")}function n(c){for(var b,a=c.length,f=[],e=0;e<a;e++)b=c.charCodeAt(e),f.push(b);return\"String.fromCharCode(\"+f.join(\",\")+\")\"}function o(c,b){var a=c.plugins.link,f=a.compiledProtectionFunction.params,e,d;d=[a.compiledProtectionFunction.name,\"(\"];for(var g=0;g<f.length;g++)a=f[g].toLowerCase(),e=b[a],0<g&&d.push(\",\"),d.push(\"'\",e?m(encodeURIComponent(b[a])):\"\",\"'\");d.push(\")\");return d.join(\"\")}function l(c){var c=c.config.emailProtection||\"\",\nb;c&&\"encode\"!=c&&(b={},c.replace(/^([^(]+)\\(([^)]+)\\)$/,function(a,c,e){b.name=c;b.params=[];e.replace(/[^,\\s]+/g,function(a){b.params.push(a)})}));return b}CKEDITOR.plugins.add(\"link\",{requires:\"dialog,fakeobjects\",onLoad:function(){function c(b){return a.replace(/%1/g,\"rtl\"==b?\"right\":\"left\").replace(/%2/g,\"cke_contents_\"+b)}var b=\"background:url(\"+CKEDITOR.getUrl(this.path+\"images\"+(CKEDITOR.env.hidpi?\"/hidpi\":\"\")+\"/anchor.png\")+\") no-repeat %1 center;border:1px dotted #00f;background-size:16px;\",\na=\".%2 a.cke_anchor,.%2 a.cke_anchor_empty,.cke_editable.%2 a[name],.cke_editable.%2 a[data-cke-saved-name]{\"+b+\"padding-%1:18px;cursor:auto;}.%2 img.cke_anchor{\"+b+\"width:16px;min-height:15px;height:1.15em;vertical-align:text-bottom;}\";CKEDITOR.addCss(c(\"ltr\")+c(\"rtl\"))},init:function(c){var b=\"a[!href]\";CKEDITOR.dialog.isTabEnabled(c,\"link\",\"advanced\")&&(b=b.replace(\"]\",\",accesskey,charset,dir,id,lang,name,rel,tabindex,title,type]{*}(*)\"));CKEDITOR.dialog.isTabEnabled(c,\"link\",\"target\")&&(b=b.replace(\"]\",\n\",target,onclick]\"));c.addCommand(\"link\",new CKEDITOR.dialogCommand(\"link\",{allowedContent:b,requiredContent:\"a[href]\"}));c.addCommand(\"anchor\",new CKEDITOR.dialogCommand(\"anchor\",{allowedContent:\"a[!name,id]\",requiredContent:\"a[name]\"}));c.addCommand(\"unlink\",new CKEDITOR.unlinkCommand);c.addCommand(\"removeAnchor\",new CKEDITOR.removeAnchorCommand);c.setKeystroke(CKEDITOR.CTRL+76,\"link\");c.ui.addButton&&(c.ui.addButton(\"Link\",{label:c.lang.link.toolbar,command:\"link\",toolbar:\"links,10\"}),c.ui.addButton(\"Unlink\",\n{label:c.lang.link.unlink,command:\"unlink\",toolbar:\"links,20\"}),c.ui.addButton(\"Anchor\",{label:c.lang.link.anchor.toolbar,command:\"anchor\",toolbar:\"links,30\"}));CKEDITOR.dialog.add(\"link\",this.path+\"dialogs/link.js\");CKEDITOR.dialog.add(\"anchor\",this.path+\"dialogs/anchor.js\");c.on(\"doubleclick\",function(a){var b=CKEDITOR.plugins.link.getSelectedLink(c)||a.data.element;if(!b.isReadOnly())if(b.is(\"a\")){a.data.dialog=b.getAttribute(\"name\")&&(!b.getAttribute(\"href\")||!b.getChildCount())?\"anchor\":\"link\";\na.data.link=b}else if(CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,b))a.data.dialog=\"anchor\"},null,null,0);c.on(\"doubleclick\",function(a){a.data.link&&c.getSelection().selectElement(a.data.link)},null,null,20);c.addMenuItems&&c.addMenuItems({anchor:{label:c.lang.link.anchor.menu,command:\"anchor\",group:\"anchor\",order:1},removeAnchor:{label:c.lang.link.anchor.remove,command:\"removeAnchor\",group:\"anchor\",order:5},link:{label:c.lang.link.menu,command:\"link\",group:\"link\",order:1},unlink:{label:c.lang.link.unlink,\ncommand:\"unlink\",group:\"link\",order:5}});c.contextMenu&&c.contextMenu.addListener(function(a){if(!a||a.isReadOnly())return null;a=CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,a);if(!a&&!(a=CKEDITOR.plugins.link.getSelectedLink(c)))return null;var b={};a.getAttribute(\"href\")&&a.getChildCount()&&(b={link:CKEDITOR.TRISTATE_OFF,unlink:CKEDITOR.TRISTATE_OFF});if(a&&a.hasAttribute(\"name\"))b.anchor=b.removeAnchor=CKEDITOR.TRISTATE_OFF;return b});this.compiledProtectionFunction=l(c)},afterInit:function(c){c.dataProcessor.dataFilter.addRules({elements:{a:function(a){return!a.attributes.name?\nnull:!a.children.length?c.createFakeParserElement(a,\"cke_anchor\",\"anchor\"):null}}});var b=c._.elementsPath&&c._.elementsPath.filters;b&&b.push(function(a,b){if(\"a\"==b&&(CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,a)||a.getAttribute(\"name\")&&(!a.getAttribute(\"href\")||!a.getChildCount())))return\"anchor\"})}});var p=/^javascript:/,q=/^mailto:([^?]+)(?:\\?(.+))?$/,r=/subject=([^;?:@&=$,\\/]*)/,s=/body=([^;?:@&=$,\\/]*)/,t=/^#(.*)$/,u=/^((?:http|https|ftp|news):\\/\\/)?(.*)$/,v=/^(_(?:self|top|parent|blank))$/,\nw=/^javascript:void\\(location\\.href='mailto:'\\+String\\.fromCharCode\\(([^)]+)\\)(?:\\+'(.*)')?\\)$/,x=/^javascript:([^(]+)\\(([^)]+)\\)$/,y=/\\s*window.open\\(\\s*this\\.href\\s*,\\s*(?:'([^']*)'|null)\\s*,\\s*'([^']*)'\\s*\\)\\s*;\\s*return\\s*false;*\\s*/,z=/(?:^|,)([^=]+)=(\\d+|yes|no)/gi,j={id:\"advId\",dir:\"advLangDir\",accessKey:\"advAccessKey\",name:\"advName\",lang:\"advLangCode\",tabindex:\"advTabIndex\",title:\"advTitle\",type:\"advContentType\",\"class\":\"advCSSClasses\",charset:\"advCharset\",style:\"advStyles\",rel:\"advRel\"};\nCKEDITOR.plugins.link={getSelectedLink:function(c){var b=c.getSelection(),a=b.getSelectedElement();return a&&a.is(\"a\")?a:(b=b.getRanges()[0])?(b.shrink(CKEDITOR.SHRINK_TEXT),c.elementPath(b.getCommonAncestor()).contains(\"a\",1)):null},getEditorAnchors:function(c){for(var b=c.editable(),a=b.isInline()&&!c.plugins.divarea?c.document:b,b=a.getElementsByTag(\"a\"),a=a.getElementsByTag(\"img\"),f=[],e=0,d;d=b.getItem(e++);)if(d.data(\"cke-saved-name\")||d.hasAttribute(\"name\"))f.push({name:d.data(\"cke-saved-name\")||\nd.getAttribute(\"name\"),id:d.getAttribute(\"id\")});for(e=0;d=a.getItem(e++);)(d=this.tryRestoreFakeAnchor(c,d))&&f.push({name:d.getAttribute(\"name\"),id:d.getAttribute(\"id\")});return f},fakeAnchor:!0,tryRestoreFakeAnchor:function(c,b){if(b&&b.data(\"cke-real-element-type\")&&\"anchor\"==b.data(\"cke-real-element-type\")){var a=c.restoreRealElement(b);if(a.data(\"cke-saved-name\"))return a}},parseLinkAttributes:function(c,b){var a=b&&(b.data(\"cke-saved-href\")||b.getAttribute(\"href\"))||\"\",f=c.plugins.link.compiledProtectionFunction,\ne=c.config.emailProtection,d,g={};a.match(p)&&(\"encode\"==e?a=a.replace(w,function(a,b,c){return\"mailto:\"+String.fromCharCode.apply(String,b.split(\",\"))+(c&&c.replace(/\\\\'/g,\"'\"))}):e&&a.replace(x,function(a,b,c){if(b==f.name){g.type=\"email\";for(var a=g.email={},b=/(^')|('$)/g,c=c.match(/[^,\\s]+/g),d=c.length,e,h,i=0;i<d;i++)e=decodeURIComponent,h=c[i].replace(b,\"\").replace(/\\\\'/g,\"'\"),h=e(h),e=f.params[i].toLowerCase(),a[e]=h;a.address=[a.name,a.domain].join(\"@\")}}));if(!g.type)if(e=a.match(t))g.type=\n\"anchor\",g.anchor={},g.anchor.name=g.anchor.id=e[1];else if(e=a.match(q)){d=a.match(r);a=a.match(s);g.type=\"email\";var i=g.email={};i.address=e[1];d&&(i.subject=decodeURIComponent(d[1]));a&&(i.body=decodeURIComponent(a[1]))}else if(a&&(d=a.match(u)))g.type=\"url\",g.url={},g.url.protocol=d[1],g.url.url=d[2];if(b){if(a=b.getAttribute(\"target\"))g.target={type:a.match(v)?a:\"frame\",name:a};else if(a=(a=b.data(\"cke-pa-onclick\")||b.getAttribute(\"onclick\"))&&a.match(y))for(g.target={type:\"popup\",name:a[1]};e=\nz.exec(a[2]);)(\"yes\"==e[2]||\"1\"==e[2])&&!(e[1]in{height:1,width:1,top:1,left:1})?g.target[e[1]]=!0:isFinite(e[2])&&(g.target[e[1]]=e[2]);var a={},h;for(h in j)(e=b.getAttribute(h))&&(a[j[h]]=e);if(h=b.data(\"cke-saved-name\")||a.advName)a.advName=h;CKEDITOR.tools.isEmpty(a)||(g.advanced=a)}return g},getLinkAttributes:function(c,b){var a=c.config.emailProtection||\"\",f={};switch(b.type){case \"url\":var a=b.url&&void 0!=b.url.protocol?b.url.protocol:\"http://\",e=b.url&&CKEDITOR.tools.trim(b.url.url)||\"\";\nf[\"data-cke-saved-href\"]=0===e.indexOf(\"/\")?e:a+e;break;case \"anchor\":a=b.anchor&&b.anchor.id;f[\"data-cke-saved-href\"]=\"#\"+(b.anchor&&b.anchor.name||a||\"\");break;case \"email\":var d=b.email,e=d.address;switch(a){case \"\":case \"encode\":var g=encodeURIComponent(d.subject||\"\"),i=encodeURIComponent(d.body||\"\"),d=[];g&&d.push(\"subject=\"+g);i&&d.push(\"body=\"+i);d=d.length?\"?\"+d.join(\"&\"):\"\";\"encode\"==a?(a=[\"javascript:void(location.href='mailto:'+\",n(e)],d&&a.push(\"+'\",m(d),\"'\"),a.push(\")\")):a=[\"mailto:\",\ne,d];break;default:a=e.split(\"@\",2),d.name=a[0],d.domain=a[1],a=[\"javascript:\",o(c,d)]}f[\"data-cke-saved-href\"]=a.join(\"\")}if(b.target)if(\"popup\"==b.target.type){for(var a=[\"window.open(this.href, '\",b.target.name||\"\",\"', '\"],h=\"resizable status location toolbar menubar fullscreen scrollbars dependent\".split(\" \"),e=h.length,g=function(a){b.target[a]&&h.push(a+\"=\"+b.target[a])},d=0;d<e;d++)h[d]+=b.target[h[d]]?\"=yes\":\"=no\";g(\"width\");g(\"left\");g(\"height\");g(\"top\");a.push(h.join(\",\"),\"'); return false;\");\nf[\"data-cke-pa-onclick\"]=a.join(\"\")}else\"notSet\"!=b.target.type&&b.target.name&&(f.target=b.target.name);if(b.advanced){for(var k in j)(a=b.advanced[j[k]])&&(f[k]=a);f.name&&(f[\"data-cke-saved-name\"]=f.name)}f[\"data-cke-saved-href\"]&&(f.href=f[\"data-cke-saved-href\"]);k=CKEDITOR.tools.extend({target:1,onclick:1,\"data-cke-pa-onclick\":1,\"data-cke-saved-name\":1},j);for(var l in f)delete k[l];return{set:f,removed:CKEDITOR.tools.objectKeys(k)}}};CKEDITOR.unlinkCommand=function(){};CKEDITOR.unlinkCommand.prototype=\n{exec:function(c){var b=new CKEDITOR.style({element:\"a\",type:CKEDITOR.STYLE_INLINE,alwaysRemoveElement:1});c.removeStyle(b)},refresh:function(c,b){var a=b.lastElement&&b.lastElement.getAscendant(\"a\",!0);a&&\"a\"==a.getName()&&a.getAttribute(\"href\")&&a.getChildCount()?this.setState(CKEDITOR.TRISTATE_OFF):this.setState(CKEDITOR.TRISTATE_DISABLED)},contextSensitive:1,startDisabled:1,requiredContent:\"a[href]\"};CKEDITOR.removeAnchorCommand=function(){};CKEDITOR.removeAnchorCommand.prototype={exec:function(c){var b=\nc.getSelection(),a=b.createBookmarks(),f;if(b&&(f=b.getSelectedElement())&&(!f.getChildCount()?CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,f):f.is(\"a\")))f.remove(1);else if(f=CKEDITOR.plugins.link.getSelectedLink(c))f.hasAttribute(\"href\")?(f.removeAttributes({name:1,\"data-cke-saved-name\":1}),f.removeClass(\"cke_anchor\")):f.remove(1);b.selectBookmarks(a)},requiredContent:\"a[name]\"};CKEDITOR.tools.extend(CKEDITOR.config,{linkShowAdvancedTab:!0,linkShowTargetTab:!0})})();(function(){function E(c,j,e){function b(b){if((d=a[b?\"getFirst\":\"getLast\"]())&&(!d.is||!d.isBlockBoundary())&&(m=j.root[b?\"getPrevious\":\"getNext\"](CKEDITOR.dom.walker.invisible(!0)))&&(!m.is||!m.isBlockBoundary({br:1})))c.document.createElement(\"br\")[b?\"insertBefore\":\"insertAfter\"](d)}for(var k=CKEDITOR.plugins.list.listToArray(j.root,e),g=[],h=0;h<j.contents.length;h++){var f=j.contents[h];if((f=f.getAscendant(\"li\",!0))&&!f.getCustomData(\"list_item_processed\"))g.push(f),CKEDITOR.dom.element.setMarker(e,\nf,\"list_item_processed\",!0)}f=null;for(h=0;h<g.length;h++)f=g[h].getCustomData(\"listarray_index\"),k[f].indent=-1;for(h=f+1;h<k.length;h++)if(k[h].indent>k[h-1].indent+1){g=k[h-1].indent+1-k[h].indent;for(f=k[h].indent;k[h]&&k[h].indent>=f;)k[h].indent+=g,h++;h--}var a=CKEDITOR.plugins.list.arrayToList(k,e,null,c.config.enterMode,j.root.getAttribute(\"dir\")).listNode,d,m;b(!0);b();a.replace(j.root);c.fire(\"contentDomInvalidated\")}function x(c,j){this.name=c;this.context=this.type=j;this.allowedContent=\nj+\" li\";this.requiredContent=j}function A(c,j,e,b){for(var k,g;k=c[b?\"getLast\":\"getFirst\"](F);)(g=k.getDirection(1))!==j.getDirection(1)&&k.setAttribute(\"dir\",g),k.remove(),e?k[b?\"insertBefore\":\"insertAfter\"](e):j.append(k,b)}function B(c){var j;(j=function(e){var b=c[e?\"getPrevious\":\"getNext\"](q);b&&(b.type==CKEDITOR.NODE_ELEMENT&&b.is(c.getName()))&&(A(c,b,null,!e),c.remove(),c=b)})();j(1)}function C(c){return c.type==CKEDITOR.NODE_ELEMENT&&(c.getName()in CKEDITOR.dtd.$block||c.getName()in CKEDITOR.dtd.$listItem)&&\nCKEDITOR.dtd[c.getName()][\"#\"]}function y(c,j,e){c.fire(\"saveSnapshot\");e.enlarge(CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS);var b=e.extractContents();j.trim(!1,!0);var k=j.createBookmark(),g=new CKEDITOR.dom.elementPath(j.startContainer),h=g.block,g=g.lastElement.getAscendant(\"li\",1)||h,f=new CKEDITOR.dom.elementPath(e.startContainer),a=f.contains(CKEDITOR.dtd.$listItem),f=f.contains(CKEDITOR.dtd.$list);h?(h=h.getBogus())&&h.remove():f&&(h=f.getPrevious(q))&&v(h)&&h.remove();(h=b.getLast())&&(h.type==\nCKEDITOR.NODE_ELEMENT&&h.is(\"br\"))&&h.remove();(h=j.startContainer.getChild(j.startOffset))?b.insertBefore(h):j.startContainer.append(b);if(a&&(b=w(a)))g.contains(a)?(A(b,a.getParent(),a),b.remove()):g.append(b);for(;e.checkStartOfBlock()&&e.checkEndOfBlock();){f=e.startPath();b=f.block;if(!b)break;b.is(\"li\")&&(g=b.getParent(),b.equals(g.getLast(q))&&b.equals(g.getFirst(q))&&(b=g));e.moveToPosition(b,CKEDITOR.POSITION_BEFORE_START);b.remove()}e=e.clone();b=c.editable();e.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);\ne=new CKEDITOR.dom.walker(e);e.evaluator=function(a){return q(a)&&!v(a)};(e=e.next())&&(e.type==CKEDITOR.NODE_ELEMENT&&e.getName()in CKEDITOR.dtd.$list)&&B(e);j.moveToBookmark(k);j.select();c.fire(\"saveSnapshot\")}function w(c){return(c=c.getLast(q))&&c.type==CKEDITOR.NODE_ELEMENT&&c.getName()in r?c:null}var r={ol:1,ul:1},G=CKEDITOR.dom.walker.whitespaces(),D=CKEDITOR.dom.walker.bookmark(),q=function(c){return!(G(c)||D(c))},v=CKEDITOR.dom.walker.bogus();CKEDITOR.plugins.list={listToArray:function(c,\nj,e,b,k){if(!r[c.getName()])return[];b||(b=0);e||(e=[]);for(var g=0,h=c.getChildCount();g<h;g++){var f=c.getChild(g);f.type==CKEDITOR.NODE_ELEMENT&&f.getName()in CKEDITOR.dtd.$list&&CKEDITOR.plugins.list.listToArray(f,j,e,b+1);if(\"li\"==f.$.nodeName.toLowerCase()){var a={parent:c,indent:b,element:f,contents:[]};k?a.grandparent=k:(a.grandparent=c.getParent(),a.grandparent&&\"li\"==a.grandparent.$.nodeName.toLowerCase()&&(a.grandparent=a.grandparent.getParent()));j&&CKEDITOR.dom.element.setMarker(j,f,\n\"listarray_index\",e.length);e.push(a);for(var d=0,m=f.getChildCount(),i;d<m;d++)i=f.getChild(d),i.type==CKEDITOR.NODE_ELEMENT&&r[i.getName()]?CKEDITOR.plugins.list.listToArray(i,j,e,b+1,a.grandparent):a.contents.push(i)}}return e},arrayToList:function(c,j,e,b,k){e||(e=0);if(!c||c.length<e+1)return null;for(var g,h=c[e].parent.getDocument(),f=new CKEDITOR.dom.documentFragment(h),a=null,d=e,m=Math.max(c[e].indent,0),i=null,n,l,p=b==CKEDITOR.ENTER_P?\"p\":\"div\";;){var o=c[d];g=o.grandparent;n=o.element.getDirection(1);\nif(o.indent==m){if(!a||c[d].parent.getName()!=a.getName())a=c[d].parent.clone(!1,1),k&&a.setAttribute(\"dir\",k),f.append(a);i=a.append(o.element.clone(0,1));n!=a.getDirection(1)&&i.setAttribute(\"dir\",n);for(g=0;g<o.contents.length;g++)i.append(o.contents[g].clone(1,1));d++}else if(o.indent==Math.max(m,0)+1)o=c[d-1].element.getDirection(1),d=CKEDITOR.plugins.list.arrayToList(c,null,d,b,o!=n?n:null),!i.getChildCount()&&(CKEDITOR.env.needsNbspFiller&&!(7<h.$.documentMode))&&i.append(h.createText(\" \")),\ni.append(d.listNode),d=d.nextIndex;else if(-1==o.indent&&!e&&g){r[g.getName()]?(i=o.element.clone(!1,!0),n!=g.getDirection(1)&&i.setAttribute(\"dir\",n)):i=new CKEDITOR.dom.documentFragment(h);var a=g.getDirection(1)!=n,u=o.element,z=u.getAttribute(\"class\"),v=u.getAttribute(\"style\"),w=i.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT&&(b!=CKEDITOR.ENTER_BR||a||v||z),s,x=o.contents.length,t;for(g=0;g<x;g++)if(s=o.contents[g],D(s)&&1<x)w?t=s.clone(1,1):i.append(s.clone(1,1));else if(s.type==CKEDITOR.NODE_ELEMENT&&\ns.isBlockBoundary()){a&&!s.getDirection()&&s.setAttribute(\"dir\",n);l=s;var y=u.getAttribute(\"style\");y&&l.setAttribute(\"style\",y.replace(/([^;])$/,\"$1;\")+(l.getAttribute(\"style\")||\"\"));z&&s.addClass(z);l=null;t&&(i.append(t),t=null);i.append(s.clone(1,1))}else w?(l||(l=h.createElement(p),i.append(l),a&&l.setAttribute(\"dir\",n)),v&&l.setAttribute(\"style\",v),z&&l.setAttribute(\"class\",z),t&&(l.append(t),t=null),l.append(s.clone(1,1))):i.append(s.clone(1,1));t&&((l||i).append(t),t=null);i.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT&&\nd!=c.length-1&&(CKEDITOR.env.needsBrFiller&&(n=i.getLast())&&(n.type==CKEDITOR.NODE_ELEMENT&&n.is(\"br\"))&&n.remove(),n=i.getLast(q),(!n||!(n.type==CKEDITOR.NODE_ELEMENT&&n.is(CKEDITOR.dtd.$block)))&&i.append(h.createElement(\"br\")));n=i.$.nodeName.toLowerCase();(\"div\"==n||\"p\"==n)&&i.appendBogus();f.append(i);a=null;d++}else return null;l=null;if(c.length<=d||Math.max(c[d].indent,0)<m)break}if(j)for(c=f.getFirst();c;){if(c.type==CKEDITOR.NODE_ELEMENT&&(CKEDITOR.dom.element.clearMarkers(j,c),c.getName()in\nCKEDITOR.dtd.$listItem&&(e=c,h=k=b=void 0,b=e.getDirection()))){for(k=e.getParent();k&&!(h=k.getDirection());)k=k.getParent();b==h&&e.removeAttribute(\"dir\")}c=c.getNextSourceNode()}return{listNode:f,nextIndex:d}}};var H=/^h[1-6]$/,F=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT);x.prototype={exec:function(c){this.refresh(c,c.elementPath());var j=c.config,e=c.getSelection(),b=e&&e.getRanges();if(this.state==CKEDITOR.TRISTATE_OFF){var k=c.editable();if(k.getFirst(q)){var g=1==b.length&&b[0];(j=\ng&&g.getEnclosedNode())&&(j.is&&this.type==j.getName())&&this.setState(CKEDITOR.TRISTATE_ON)}else j.enterMode==CKEDITOR.ENTER_BR?k.appendBogus():b[0].fixBlock(1,j.enterMode==CKEDITOR.ENTER_P?\"p\":\"div\"),e.selectRanges(b)}for(var j=e.createBookmarks(!0),k=[],h={},b=b.createIterator(),f=0;(g=b.getNextRange())&&++f;){var a=g.getBoundaryNodes(),d=a.startNode,m=a.endNode;d.type==CKEDITOR.NODE_ELEMENT&&\"td\"==d.getName()&&g.setStartAt(a.startNode,CKEDITOR.POSITION_AFTER_START);m.type==CKEDITOR.NODE_ELEMENT&&\n\"td\"==m.getName()&&g.setEndAt(a.endNode,CKEDITOR.POSITION_BEFORE_END);g=g.createIterator();for(g.forceBrBreak=this.state==CKEDITOR.TRISTATE_OFF;a=g.getNextParagraph();)if(!a.getCustomData(\"list_block\")){CKEDITOR.dom.element.setMarker(h,a,\"list_block\",1);for(var i=c.elementPath(a),d=i.elements,m=0,i=i.blockLimit,n,l=d.length-1;0<=l&&(n=d[l]);l--)if(r[n.getName()]&&i.contains(n)){i.removeCustomData(\"list_group_object_\"+f);(d=n.getCustomData(\"list_group_object\"))?d.contents.push(a):(d={root:n,contents:[a]},\nk.push(d),CKEDITOR.dom.element.setMarker(h,n,\"list_group_object\",d));m=1;break}m||(m=i,m.getCustomData(\"list_group_object_\"+f)?m.getCustomData(\"list_group_object_\"+f).contents.push(a):(d={root:m,contents:[a]},CKEDITOR.dom.element.setMarker(h,m,\"list_group_object_\"+f,d),k.push(d)))}}for(n=[];0<k.length;)if(d=k.shift(),this.state==CKEDITOR.TRISTATE_OFF)if(r[d.root.getName()]){b=c;f=d;d=h;g=n;m=CKEDITOR.plugins.list.listToArray(f.root,d);i=[];for(a=0;a<f.contents.length;a++)if(l=f.contents[a],(l=l.getAscendant(\"li\",\n!0))&&!l.getCustomData(\"list_item_processed\"))i.push(l),CKEDITOR.dom.element.setMarker(d,l,\"list_item_processed\",!0);for(var l=f.root.getDocument(),p=void 0,o=void 0,a=0;a<i.length;a++){var u=i[a].getCustomData(\"listarray_index\"),p=m[u].parent;p.is(this.type)||(o=l.createElement(this.type),p.copyAttributes(o,{start:1,type:1}),o.removeStyle(\"list-style-type\"),m[u].parent=o)}d=CKEDITOR.plugins.list.arrayToList(m,d,null,b.config.enterMode);m=void 0;i=d.listNode.getChildCount();for(a=0;a<i&&(m=d.listNode.getChild(a));a++)m.getName()==\nthis.type&&g.push(m);d.listNode.replace(f.root);b.fire(\"contentDomInvalidated\")}else{m=c;a=d;g=n;i=a.contents;b=a.root.getDocument();f=[];1==i.length&&i[0].equals(a.root)&&(d=b.createElement(\"div\"),i[0].moveChildren&&i[0].moveChildren(d),i[0].append(d),i[0]=d);a=a.contents[0].getParent();for(l=0;l<i.length;l++)a=a.getCommonAncestor(i[l].getParent());p=m.config.useComputedState;m=d=void 0;p=void 0===p||p;for(l=0;l<i.length;l++)for(o=i[l];u=o.getParent();){if(u.equals(a)){f.push(o);!m&&o.getDirection()&&\n(m=1);o=o.getDirection(p);null!==d&&(d=d&&d!=o?null:o);break}o=u}if(!(1>f.length)){i=f[f.length-1].getNext();l=b.createElement(this.type);g.push(l);for(p=g=void 0;f.length;)g=f.shift(),p=b.createElement(\"li\"),g.is(\"pre\")||H.test(g.getName())||\"false\"==g.getAttribute(\"contenteditable\")?g.appendTo(p):(g.copyAttributes(p),d&&g.getDirection()&&(p.removeStyle(\"direction\"),p.removeAttribute(\"dir\")),g.moveChildren(p),g.remove()),p.appendTo(l);d&&m&&l.setAttribute(\"dir\",d);i?l.insertBefore(i):l.appendTo(a)}}else this.state==\nCKEDITOR.TRISTATE_ON&&r[d.root.getName()]&&E.call(this,c,d,h);for(l=0;l<n.length;l++)B(n[l]);CKEDITOR.dom.element.clearAllMarkers(h);e.selectBookmarks(j);c.focus()},refresh:function(c,j){var e=j.contains(r,1),b=j.blockLimit||j.root;e&&b.contains(e)?this.setState(e.is(this.type)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF):this.setState(CKEDITOR.TRISTATE_OFF)}};CKEDITOR.plugins.add(\"list\",{requires:\"indentlist\",init:function(c){c.blockless||(c.addCommand(\"numberedlist\",new x(\"numberedlist\",\"ol\")),c.addCommand(\"bulletedlist\",\nnew x(\"bulletedlist\",\"ul\")),c.ui.addButton&&(c.ui.addButton(\"NumberedList\",{label:c.lang.list.numberedlist,command:\"numberedlist\",directional:!0,toolbar:\"list,10\"}),c.ui.addButton(\"BulletedList\",{label:c.lang.list.bulletedlist,command:\"bulletedlist\",directional:!0,toolbar:\"list,20\"})),c.on(\"key\",function(j){var e=j.data.domEvent.getKey();if(c.mode==\"wysiwyg\"&&e in{8:1,46:1}){var b=c.getSelection().getRanges()[0],k=b&&b.startPath();if(b&&b.collapsed){var g=e==8,h=c.editable(),f=new CKEDITOR.dom.walker(b.clone());\nf.evaluator=function(a){return q(a)&&!v(a)};f.guard=function(a,b){return!(b&&a.type==CKEDITOR.NODE_ELEMENT&&a.is(\"table\"))};e=b.clone();if(g){var a,d;if((a=k.contains(r))&&b.checkBoundaryOfElement(a,CKEDITOR.START)&&(a=a.getParent())&&a.is(\"li\")&&(a=w(a))){d=a;a=a.getPrevious(q);e.moveToPosition(a&&v(a)?a:d,CKEDITOR.POSITION_BEFORE_START)}else{f.range.setStartAt(h,CKEDITOR.POSITION_AFTER_START);f.range.setEnd(b.startContainer,b.startOffset);if((a=f.previous())&&a.type==CKEDITOR.NODE_ELEMENT&&(a.getName()in\nr||a.is(\"li\"))){if(!a.is(\"li\")){f.range.selectNodeContents(a);f.reset();f.evaluator=C;a=f.previous()}d=a;e.moveToElementEditEnd(d)}}if(d){y(c,e,b);j.cancel()}else if((e=k.contains(r))&&b.checkBoundaryOfElement(e,CKEDITOR.START)){d=e.getFirst(q);if(b.checkBoundaryOfElement(d,CKEDITOR.START)){a=e.getPrevious(q);if(w(d)){if(a){b.moveToElementEditEnd(a);b.select()}}else c.execCommand(\"outdent\");j.cancel()}}}else if(d=k.contains(\"li\")){f.range.setEndAt(h,CKEDITOR.POSITION_BEFORE_END);h=(k=d.getLast(q))&&\nC(k)?k:d;d=0;if((a=f.next())&&a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in r&&a.equals(k)){d=1;a=f.next()}else b.checkBoundaryOfElement(h,CKEDITOR.END)&&(d=1);if(d&&a){b=b.clone();b.moveToElementEditStart(a);y(c,e,b);j.cancel()}}else{f.range.setEndAt(h,CKEDITOR.POSITION_BEFORE_END);if((a=f.next())&&a.type==CKEDITOR.NODE_ELEMENT&&a.is(r)){a=a.getFirst(q);if(k.block&&b.checkStartOfBlock()&&b.checkEndOfBlock()){k.block.remove();b.moveToElementEditStart(a);b.select()}else if(w(a)){b.moveToElementEditStart(a);\nb.select()}else{b=b.clone();b.moveToElementEditStart(a);y(c,e,b)}j.cancel()}}setTimeout(function(){c.selectionChange(1)})}}}))}})})();(function(){CKEDITOR.plugins.liststyle={requires:\"dialog,contextmenu\",init:function(a){if(!a.blockless){var b;b=new CKEDITOR.dialogCommand(\"numberedListStyle\",{requiredContent:\"ol\",allowedContent:\"ol{list-style-type}[start]\"});b=a.addCommand(\"numberedListStyle\",b);a.addFeature(b);CKEDITOR.dialog.add(\"numberedListStyle\",this.path+\"dialogs/liststyle.js\");b=new CKEDITOR.dialogCommand(\"bulletedListStyle\",{requiredContent:\"ul\",allowedContent:\"ul{list-style-type}\"});b=a.addCommand(\"bulletedListStyle\",b);\na.addFeature(b);CKEDITOR.dialog.add(\"bulletedListStyle\",this.path+\"dialogs/liststyle.js\");a.addMenuGroup(\"list\",108);a.addMenuItems({numberedlist:{label:a.lang.liststyle.numberedTitle,group:\"list\",command:\"numberedListStyle\"},bulletedlist:{label:a.lang.liststyle.bulletedTitle,group:\"list\",command:\"bulletedListStyle\"}});a.contextMenu.addListener(function(a){if(!a||a.isReadOnly())return null;for(;a;){var b=a.getName();if(\"ol\"==b)return{numberedlist:CKEDITOR.TRISTATE_OFF};if(\"ul\"==b)return{bulletedlist:CKEDITOR.TRISTATE_OFF};\na=a.getParent()}return null})}}};CKEDITOR.plugins.add(\"liststyle\",CKEDITOR.plugins.liststyle)})();(function(){function Q(a,c,d){return m(c)&&m(d)&&d.equals(c.getNext(function(a){return!(z(a)||A(a)||p(a))}))}function u(a){this.upper=a[0];this.lower=a[1];this.set.apply(this,a.slice(2))}function J(a){var c=a.element;if(c&&m(c)&&(c=c.getAscendant(a.triggers,!0))&&a.editable.contains(c)){var d=K(c);if(\"true\"==d.getAttribute(\"contenteditable\"))return c;if(d.is(a.triggers))return d}return null}function ga(a,c,d){o(a,c);o(a,d);a=c.size.bottom;d=d.size.top;return a&&d?0|(a+d)/2:a||d}function r(a,c,d){return c=\nc[d?\"getPrevious\":\"getNext\"](function(b){return b&&b.type==CKEDITOR.NODE_TEXT&&!z(b)||m(b)&&!p(b)&&!v(a,b)})}function K(a,c){if(a.data(\"cke-editable\"))return null;for(c||(a=a.getParent());a&&!a.data(\"cke-editable\");){if(a.hasAttribute(\"contenteditable\"))return a;a=a.getParent()}return null}function ha(a){var c=a.doc,d=B('<span contenteditable=\"false\" style=\"'+L+\"position:absolute;border-top:1px dashed \"+a.boxColor+'\"></span>',c),b=this.path+\"images/\"+(n.hidpi?\"hidpi/\":\"\")+\"icon.png\";q(d,{attach:function(){this.wrap.getParent()||\nthis.wrap.appendTo(a.editable,!0);return this},lineChildren:[q(B('<span title=\"'+a.editor.lang.magicline.title+'\" contenteditable=\"false\">&#8629;</span>',c),{base:L+\"height:17px;width:17px;\"+(a.rtl?\"left\":\"right\")+\":17px;background:url(\"+b+\") center no-repeat \"+a.boxColor+\";cursor:pointer;\"+(n.hc?\"font-size: 15px;line-height:14px;border:1px solid #fff;text-align:center;\":\"\")+(n.hidpi?\"background-size: 9px 10px;\":\"\"),looks:[\"top:-8px;\"+CKEDITOR.tools.cssVendorPrefix(\"border-radius\",\"2px\",1),\"top:-17px;\"+\nCKEDITOR.tools.cssVendorPrefix(\"border-radius\",\"2px 2px 0px 0px\",1),\"top:-1px;\"+CKEDITOR.tools.cssVendorPrefix(\"border-radius\",\"0px 0px 2px 2px\",1)]}),q(B(R,c),{base:S+\"left:0px;border-left-color:\"+a.boxColor+\";\",looks:[\"border-width:8px 0 8px 8px;top:-8px\",\"border-width:8px 0 0 8px;top:-8px\",\"border-width:0 0 8px 8px;top:0px\"]}),q(B(R,c),{base:S+\"right:0px;border-right-color:\"+a.boxColor+\";\",looks:[\"border-width:8px 8px 8px 0;top:-8px\",\"border-width:8px 8px 0 0;top:-8px\",\"border-width:0 8px 8px 0;top:0px\"]})],\ndetach:function(){this.wrap.getParent()&&this.wrap.remove();return this},mouseNear:function(){o(a,this);var b=a.holdDistance,c=this.size;return c&&a.mouse.y>c.top-b&&a.mouse.y<c.bottom+b&&a.mouse.x>c.left-b&&a.mouse.x<c.right+b?!0:!1},place:function(){var b=a.view,c=a.editable,d=a.trigger,h=d.upper,g=d.lower,j=h||g,l=j.getParent(),k={};this.trigger=d;h&&o(a,h,!0);g&&o(a,g,!0);o(a,l,!0);a.inInlineMode&&C(a,!0);l.equals(c)?(k.left=b.scroll.x,k.right=-b.scroll.x,k.width=\"\"):(k.left=j.size.left-j.size.margin.left+\nb.scroll.x-(a.inInlineMode?b.editable.left+b.editable.border.left:0),k.width=j.size.outerWidth+j.size.margin.left+j.size.margin.right+b.scroll.x,k.right=\"\");h&&g?k.top=h.size.margin.bottom===g.size.margin.top?0|h.size.bottom+h.size.margin.bottom/2:h.size.margin.bottom<g.size.margin.top?h.size.bottom+h.size.margin.bottom:h.size.bottom+h.size.margin.bottom-g.size.margin.top:h?g||(k.top=h.size.bottom+h.size.margin.bottom):k.top=g.size.top-g.size.margin.top;d.is(x)||k.top>b.scroll.y-15&&k.top<b.scroll.y+\n5?(k.top=a.inInlineMode?0:b.scroll.y,this.look(x)):d.is(y)||k.top>b.pane.bottom-5&&k.top<b.pane.bottom+15?(k.top=a.inInlineMode?b.editable.height+b.editable.padding.top+b.editable.padding.bottom:b.pane.bottom-1,this.look(y)):(a.inInlineMode&&(k.top-=b.editable.top+b.editable.border.top),this.look(s));a.inInlineMode&&(k.top--,k.top+=b.editable.scroll.top,k.left+=b.editable.scroll.left);for(var T in k)k[T]=CKEDITOR.tools.cssLength(k[T]);this.setStyles(k)},look:function(a){if(this.oldLook!=a){for(var b=\nthis.lineChildren.length,c;b--;)(c=this.lineChildren[b]).setAttribute(\"style\",c.base+c.looks[0|a/2]);this.oldLook=a}},wrap:new M(\"span\",a.doc)});for(c=d.lineChildren.length;c--;)d.lineChildren[c].appendTo(d);d.look(s);d.appendTo(d.wrap);d.unselectable();d.lineChildren[0].on(\"mouseup\",function(b){d.detach();N(a,function(b){var c=a.line.trigger;b[c.is(D)?\"insertBefore\":\"insertAfter\"](c.is(D)?c.lower:c.upper)},!0);a.editor.focus();!n.ie&&a.enterMode!=CKEDITOR.ENTER_BR&&a.hotNode.scrollIntoView();b.data.preventDefault(!0)});\nd.on(\"mousedown\",function(a){a.data.preventDefault(!0)});a.line=d}function N(a,c,d){var b=new CKEDITOR.dom.range(a.doc),e=a.editor,f;n.ie&&a.enterMode==CKEDITOR.ENTER_BR?f=a.doc.createText(E):(f=(f=K(a.element,!0))&&f.data(\"cke-enter-mode\")||a.enterMode,f=new M(F[f],a.doc),f.is(\"br\")||a.doc.createText(E).appendTo(f));d&&e.fire(\"saveSnapshot\");c(f);b.moveToPosition(f,CKEDITOR.POSITION_AFTER_START);e.getSelection().selectRanges([b]);a.hotNode=f;d&&e.fire(\"saveSnapshot\")}function U(a,c){return{canUndo:!0,\nmodes:{wysiwyg:1},exec:function(){function d(b){var d=n.ie&&9>n.version?\" \":E,f=a.hotNode&&a.hotNode.getText()==d&&a.element.equals(a.hotNode)&&a.lastCmdDirection===!!c;N(a,function(d){f&&a.hotNode&&a.hotNode.remove();d[c?\"insertAfter\":\"insertBefore\"](b);d.setAttributes({\"data-cke-magicline-hot\":1,\"data-cke-magicline-dir\":!!c});a.lastCmdDirection=!!c});!n.ie&&a.enterMode!=CKEDITOR.ENTER_BR&&a.hotNode.scrollIntoView();a.line.detach()}return function(b){var b=b.getSelection().getStartElement(),e,b=\nb.getAscendant(V,1);if(!W(a,b)&&b&&!b.equals(a.editable)&&!b.contains(a.editable)){if((e=K(b))&&\"false\"==e.getAttribute(\"contenteditable\"))b=e;a.element=b;e=r(a,b,!c);var f;m(e)&&e.is(a.triggers)&&e.is(ia)&&(!r(a,e,!c)||(f=r(a,e,!c))&&m(f)&&f.is(a.triggers))?d(e):(f=J(a,b),m(f)&&(r(a,f,!c)?(b=r(a,f,!c))&&(m(b)&&b.is(a.triggers))&&d(f):d(f)))}}}()}}function v(a,c){if(!c||!(c.type==CKEDITOR.NODE_ELEMENT&&c.$))return!1;var d=a.line;return d.wrap.equals(c)||d.wrap.contains(c)}function m(a){return a&&\na.type==CKEDITOR.NODE_ELEMENT&&a.$}function p(a){if(!m(a))return!1;var c;if(!(c=X(a)))m(a)?(c={left:1,right:1,center:1},c=!(!c[a.getComputedStyle(\"float\")]&&!c[a.getAttribute(\"align\")])):c=!1;return c}function X(a){return!!{absolute:1,fixed:1}[a.getComputedStyle(\"position\")]}function G(a,c){return m(c)?c.is(a.triggers):null}function W(a,c){if(!c)return!1;for(var d=c.getParents(1),b=d.length;b--;)for(var e=a.tabuList.length;e--;)if(d[b].hasAttribute(a.tabuList[e]))return!0;return!1}function ja(a,c,\nd){c=c[d?\"getLast\":\"getFirst\"](function(b){return a.isRelevant(b)&&!b.is(ka)});if(!c)return!1;o(a,c);return d?c.size.top>a.mouse.y:c.size.bottom<a.mouse.y}function Y(a){var c=a.editable,d=a.mouse,b=a.view,e=a.triggerOffset;C(a);var f=d.y>(a.inInlineMode?b.editable.top+b.editable.height/2:Math.min(b.editable.height,b.pane.height)/2),c=c[f?\"getLast\":\"getFirst\"](function(a){return!(z(a)||A(a))});if(!c)return null;v(a,c)&&(c=a.line.wrap[f?\"getPrevious\":\"getNext\"](function(a){return!(z(a)||A(a))}));if(!m(c)||\np(c)||!G(a,c))return null;o(a,c);return!f&&0<=c.size.top&&0<d.y&&d.y<c.size.top+e?(a=a.inInlineMode||0===b.scroll.y?x:s,new u([null,c,D,H,a])):f&&c.size.bottom<=b.pane.height&&d.y>c.size.bottom-e&&d.y<b.pane.height?(a=a.inInlineMode||c.size.bottom>b.pane.height-e&&c.size.bottom<b.pane.height?y:s,new u([c,null,Z,H,a])):null}function $(a){var c=a.mouse,d=a.view,b=a.triggerOffset,e=J(a);if(!e)return null;o(a,e);var b=Math.min(b,0|e.size.outerHeight/2),f=[],i,h;if(c.y>e.size.top-1&&c.y<e.size.top+b)h=\n!1;else if(c.y>e.size.bottom-b&&c.y<e.size.bottom+1)h=!0;else return null;if(p(e)||ja(a,e,h)||e.getParent().is(aa))return null;var g=r(a,e,!h);if(g){if(g&&g.type==CKEDITOR.NODE_TEXT)return null;if(m(g)){if(p(g)||!G(a,g)||g.getParent().is(aa))return null;f=[g,e][h?\"reverse\":\"concat\"]().concat([O,H])}}else e.equals(a.editable[h?\"getLast\":\"getFirst\"](a.isRelevant))?(C(a),h&&c.y>e.size.bottom-b&&c.y<d.pane.height&&e.size.bottom>d.pane.height-b&&e.size.bottom<d.pane.height?i=y:0<c.y&&c.y<e.size.top+b&&\n(i=x)):i=s,f=[null,e][h?\"reverse\":\"concat\"]().concat([h?Z:D,H,i,e.equals(a.editable[h?\"getLast\":\"getFirst\"](a.isRelevant))?h?y:x:s]);return 0 in f?new u(f):null}function P(a,c,d,b){for(var e=function(){var b=n.ie?c.$.currentStyle:a.win.$.getComputedStyle(c.$,\"\");return n.ie?function(a){return b[CKEDITOR.tools.cssStyleToDomStyle(a)]}:function(a){return b.getPropertyValue(a)}}(),f=c.getDocumentPosition(),i={},h={},g={},j={},l=t.length;l--;)i[t[l]]=parseInt(e(\"border-\"+t[l]+\"-width\"),10)||0,g[t[l]]=\nparseInt(e(\"padding-\"+t[l]),10)||0,h[t[l]]=parseInt(e(\"margin-\"+t[l]),10)||0;(!d||b)&&I(a,b);j.top=f.y-(d?0:a.view.scroll.y);j.left=f.x-(d?0:a.view.scroll.x);j.outerWidth=c.$.offsetWidth;j.outerHeight=c.$.offsetHeight;j.height=j.outerHeight-(g.top+g.bottom+i.top+i.bottom);j.width=j.outerWidth-(g.left+g.right+i.left+i.right);j.bottom=j.top+j.outerHeight;j.right=j.left+j.outerWidth;a.inInlineMode&&(j.scroll={top:c.$.scrollTop,left:c.$.scrollLeft});return q({border:i,padding:g,margin:h,ignoreScroll:d},\nj,!0)}function o(a,c,d){if(!m(c))return c.size=null;if(c.size){if(c.size.ignoreScroll==d&&c.size.date>new Date-ba)return null}else c.size={};return q(c.size,P(a,c,d),{date:+new Date},!0)}function C(a,c){a.view.editable=P(a,a.editable,c,!0)}function I(a,c){a.view||(a.view={});var d=a.view;if(c||!(d&&d.date>new Date-ba)){var b=a.win,d=b.getScrollPosition(),b=b.getViewPaneSize();q(a.view,{scroll:{x:d.x,y:d.y,width:a.doc.$.documentElement.scrollWidth-b.width,height:a.doc.$.documentElement.scrollHeight-\nb.height},pane:{width:b.width,height:b.height,bottom:b.height+d.y},date:+new Date},!0)}}function la(a,c,d,b){for(var e=b,f=b,i=0,h=!1,g=!1,j=a.view.pane.height,l=a.mouse;l.y+i<j&&0<l.y-i;){h||(h=c(e,b));g||(g=c(f,b));!h&&0<l.y-i&&(e=d(a,{x:l.x,y:l.y-i}));!g&&l.y+i<j&&(f=d(a,{x:l.x,y:l.y+i}));if(h&&g)break;i+=2}return new u([e,f,null,null])}CKEDITOR.plugins.add(\"magicline\",{init:function(a){var c=a.config,d=c.magicline_triggerOffset||30,b={editor:a,enterMode:c.enterMode,triggerOffset:d,holdDistance:0|\nd*(c.magicline_holdDistance||0.5),boxColor:c.magicline_color||\"#ff0000\",rtl:\"rtl\"==c.contentsLangDirection,tabuList:[\"data-cke-hidden-sel\"].concat(c.magicline_tabuList||[]),triggers:c.magicline_everywhere?V:{table:1,hr:1,div:1,ul:1,ol:1,dl:1,form:1,blockquote:1}},e,f,i;b.isRelevant=function(a){return m(a)&&!v(b,a)&&!p(a)};a.on(\"contentDom\",function(){var d=a.editable(),g=a.document,j=a.window;q(b,{editable:d,inInlineMode:d.isInline(),doc:g,win:j,hotNode:null},!0);b.boundary=b.inInlineMode?b.editable:\nb.doc.getDocumentElement();d.is(w.$inline)||(b.inInlineMode&&!X(d)&&d.setStyles({position:\"relative\",top:null,left:null}),ha.call(this,b),I(b),d.attachListener(a,\"beforeUndoImage\",function(){b.line.detach()}),d.attachListener(a,\"beforeGetData\",function(){b.line.wrap.getParent()&&(b.line.detach(),a.once(\"getData\",function(){b.line.attach()},null,null,1E3))},null,null,0),d.attachListener(b.inInlineMode?g:g.getWindow().getFrame(),\"mouseout\",function(c){if(\"wysiwyg\"==a.mode)if(b.inInlineMode){var d=c.data.$.clientX,\nc=c.data.$.clientY;I(b);C(b,!0);var e=b.view.editable,f=b.view.scroll;if(!(d>e.left-f.x&&d<e.right-f.x)||!(c>e.top-f.y&&c<e.bottom-f.y))clearTimeout(i),i=null,b.line.detach()}else clearTimeout(i),i=null,b.line.detach()}),d.attachListener(d,\"keyup\",function(){b.hiddenMode=0}),d.attachListener(d,\"keydown\",function(c){if(\"wysiwyg\"==a.mode)switch(c=c.data.getKeystroke(),a.getSelection().getStartElement(),c){case 2228240:case 16:b.hiddenMode=1,b.line.detach()}}),d.attachListener(b.inInlineMode?d:g,\"mousemove\",\nfunction(c){f=!0;if(!(\"wysiwyg\"!=a.mode||a.readOnly||i)){var d={x:c.data.$.clientX,y:c.data.$.clientY};i=setTimeout(function(){b.mouse=d;i=b.trigger=null;I(b);if(f&&!b.hiddenMode&&a.focusManager.hasFocus&&!b.line.mouseNear()&&(b.element=ca(b,!0)))(b.trigger=Y(b)||$(b)||da(b))&&!W(b,b.trigger.upper||b.trigger.lower)?b.line.attach().place():(b.trigger=null,b.line.detach()),f=!1},30)}}),d.attachListener(j,\"scroll\",function(){\"wysiwyg\"==a.mode&&(b.line.detach(),n.webkit&&(b.hiddenMode=1,clearTimeout(e),\ne=setTimeout(function(){b.mouseDown||(b.hiddenMode=0)},50)))}),d.attachListener(ea?g:j,\"mousedown\",function(){\"wysiwyg\"==a.mode&&(b.line.detach(),b.hiddenMode=1,b.mouseDown=1)}),d.attachListener(ea?g:j,\"mouseup\",function(){b.hiddenMode=0;b.mouseDown=0}),a.addCommand(\"accessPreviousSpace\",U(b)),a.addCommand(\"accessNextSpace\",U(b,!0)),a.setKeystroke([[c.magicline_keystrokePrevious,\"accessPreviousSpace\"],[c.magicline_keystrokeNext,\"accessNextSpace\"]]),a.on(\"loadSnapshot\",function(){var c,d,e,f;for(f in{p:1,\nbr:1,div:1}){c=a.document.getElementsByTag(f);for(e=c.count();e--;)if((d=c.getItem(e)).data(\"cke-magicline-hot\")){b.hotNode=d;b.lastCmdDirection=\"true\"===d.data(\"cke-magicline-dir\")?!0:!1;return}}}),this.backdoor={accessFocusSpace:N,boxTrigger:u,isLine:v,getAscendantTrigger:J,getNonEmptyNeighbour:r,getSize:P,that:b,triggerEdge:$,triggerEditable:Y,triggerExpand:da})},this)}});var q=CKEDITOR.tools.extend,M=CKEDITOR.dom.element,B=M.createFromHtml,n=CKEDITOR.env,ea=CKEDITOR.env.ie&&9>CKEDITOR.env.version,\nw=CKEDITOR.dtd,F={},D=128,Z=64,O=32,H=16,fa=8,x=4,y=2,s=1,E=\" \",aa=w.$listItem,ka=w.$tableContent,ia=q({},w.$nonEditable,w.$empty),V=w.$block,ba=100,L=\"width:0px;height:0px;padding:0px;margin:0px;display:block;z-index:9999;color:#fff;position:absolute;font-size: 0px;line-height:0px;\",S=L+\"border-color:transparent;display:block;border-style:solid;\",R=\"<span>\"+E+\"</span>\";F[CKEDITOR.ENTER_BR]=\"br\";F[CKEDITOR.ENTER_P]=\"p\";F[CKEDITOR.ENTER_DIV]=\"div\";u.prototype={set:function(a,c,d){this.properties=a+\nc+(d||s);return this},is:function(a){return(this.properties&a)==a}};var ca=function(){return function(a,c,d){if(!a.mouse)return null;var b=a.doc,e=a.line.wrap,d=d||a.mouse,f=new CKEDITOR.dom.element(b.$.elementFromPoint(d.x,d.y));c&&v(a,f)&&(e.hide(),f=new CKEDITOR.dom.element(b.$.elementFromPoint(d.x,d.y)),e.show());return!f||!(f.type==CKEDITOR.NODE_ELEMENT&&f.$)||n.ie&&9>n.version&&!a.boundary.equals(f)&&!a.boundary.contains(f)?null:f}}(),z=CKEDITOR.dom.walker.whitespaces(),A=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_COMMENT),\nda=function(){function a(a){var b=a.element,e,f,i;if(!m(b)||b.contains(a.editable)||b.isReadOnly())return null;i=la(a,function(a,b){return!b.equals(a)},function(a,b){return ca(a,!0,b)},b);e=i.upper;f=i.lower;if(Q(a,e,f))return i.set(O,fa);if(e&&b.contains(e))for(;!e.getParent().equals(b);)e=e.getParent();else e=b.getFirst(function(b){return c(a,b)});if(f&&b.contains(f))for(;!f.getParent().equals(b);)f=f.getParent();else f=b.getLast(function(b){return c(a,b)});if(!e||!f)return null;o(a,e);o(a,f);if(!(a.mouse.y>\ne.size.top&&a.mouse.y<f.size.bottom))return null;for(var b=Number.MAX_VALUE,h,g,j,l;f&&!f.equals(e)&&(g=e.getNext(a.isRelevant));)h=Math.abs(ga(a,e,g)-a.mouse.y),h<b&&(b=h,j=e,l=g),e=g,o(a,e);if(!j||!l||!(a.mouse.y>j.size.top&&a.mouse.y<l.size.bottom))return null;i.upper=j;i.lower=l;return i.set(O,fa)}function c(a,b){return!(b&&b.type==CKEDITOR.NODE_TEXT||A(b)||p(b)||v(a,b)||b.type==CKEDITOR.NODE_ELEMENT&&b.$&&b.is(\"br\"))}return function(c){var b=a(c),e;if(e=b){e=b.upper;var f=b.lower;e=!e||!f||p(f)||\np(e)||f.equals(e)||e.equals(f)||f.contains(e)||e.contains(f)?!1:G(c,e)&&G(c,f)&&Q(c,e,f)?!0:!1}return e?b:null}}(),t=[\"top\",\"left\",\"right\",\"bottom\"]})();CKEDITOR.config.magicline_keystrokePrevious=CKEDITOR.CTRL+CKEDITOR.SHIFT+51;CKEDITOR.config.magicline_keystrokeNext=CKEDITOR.CTRL+CKEDITOR.SHIFT+52;(function(){function l(a){if(!a||a.type!=CKEDITOR.NODE_ELEMENT||\"form\"!=a.getName())return[];for(var e=[],f=[\"style\",\"className\"],b=0;b<f.length;b++){var d=a.$.elements.namedItem(f[b]);d&&(d=new CKEDITOR.dom.element(d),e.push([d,d.nextSibling]),d.remove())}return e}function o(a,e){if(a&&!(a.type!=CKEDITOR.NODE_ELEMENT||\"form\"!=a.getName())&&0<e.length)for(var f=e.length-1;0<=f;f--){var b=e[f][0],d=e[f][1];d?b.insertBefore(d):b.appendTo(a)}}function n(a,e){var f=l(a),b={},d=a.$;e||(b[\"class\"]=d.className||\n\"\",d.className=\"\");b.inline=d.style.cssText||\"\";e||(d.style.cssText=\"position: static; overflow: visible\");o(f);return b}function p(a,e){var f=l(a),b=a.$;\"class\"in e&&(b.className=e[\"class\"]);\"inline\"in e&&(b.style.cssText=e.inline);o(f)}function q(a){if(!a.editable().isInline()){var e=CKEDITOR.instances,f;for(f in e){var b=e[f];\"wysiwyg\"==b.mode&&!b.readOnly&&(b=b.document.getBody(),b.setAttribute(\"contentEditable\",!1),b.setAttribute(\"contentEditable\",!0))}a.editable().hasFocus&&(a.toolbox.focus(),\na.focus())}}CKEDITOR.plugins.add(\"maximize\",{init:function(a){function e(){var b=d.getViewPaneSize();a.resize(b.width,b.height,null,!0)}if(a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var f=a.lang,b=CKEDITOR.document,d=b.getWindow(),j,k,m,l=CKEDITOR.TRISTATE_OFF;a.addCommand(\"maximize\",{modes:{wysiwyg:!CKEDITOR.env.iOS,source:!CKEDITOR.env.iOS},readOnly:1,editorFocus:!1,exec:function(){var h=a.container.getChild(1),g=a.ui.space(\"contents\");if(\"wysiwyg\"==a.mode){var c=a.getSelection();j=c&&c.getRanges();\nk=d.getScrollPosition()}else{var i=a.editable().$;j=!CKEDITOR.env.ie&&[i.selectionStart,i.selectionEnd];k=[i.scrollLeft,i.scrollTop]}if(this.state==CKEDITOR.TRISTATE_OFF){d.on(\"resize\",e);m=d.getScrollPosition();for(c=a.container;c=c.getParent();)c.setCustomData(\"maximize_saved_styles\",n(c)),c.setStyle(\"z-index\",a.config.baseFloatZIndex-5);g.setCustomData(\"maximize_saved_styles\",n(g,!0));h.setCustomData(\"maximize_saved_styles\",n(h,!0));g={overflow:CKEDITOR.env.webkit?\"\":\"hidden\",width:0,height:0};\nb.getDocumentElement().setStyles(g);!CKEDITOR.env.gecko&&b.getDocumentElement().setStyle(\"position\",\"fixed\");(!CKEDITOR.env.gecko||!CKEDITOR.env.quirks)&&b.getBody().setStyles(g);CKEDITOR.env.ie?setTimeout(function(){d.$.scrollTo(0,0)},0):d.$.scrollTo(0,0);h.setStyle(\"position\",CKEDITOR.env.gecko&&CKEDITOR.env.quirks?\"fixed\":\"absolute\");h.$.offsetLeft;h.setStyles({\"z-index\":a.config.baseFloatZIndex-5,left:\"0px\",top:\"0px\"});h.addClass(\"cke_maximized\");e();g=h.getDocumentPosition();h.setStyles({left:-1*\ng.x+\"px\",top:-1*g.y+\"px\"});CKEDITOR.env.gecko&&q(a)}else if(this.state==CKEDITOR.TRISTATE_ON){d.removeListener(\"resize\",e);g=[g,h];for(c=0;c<g.length;c++)p(g[c],g[c].getCustomData(\"maximize_saved_styles\")),g[c].removeCustomData(\"maximize_saved_styles\");for(c=a.container;c=c.getParent();)p(c,c.getCustomData(\"maximize_saved_styles\")),c.removeCustomData(\"maximize_saved_styles\");CKEDITOR.env.ie?setTimeout(function(){d.$.scrollTo(m.x,m.y)},0):d.$.scrollTo(m.x,m.y);h.removeClass(\"cke_maximized\");CKEDITOR.env.webkit&&\n(h.setStyle(\"display\",\"inline\"),setTimeout(function(){h.setStyle(\"display\",\"block\")},0));a.fire(\"resize\")}this.toggleState();if(c=this.uiItems[0])g=this.state==CKEDITOR.TRISTATE_OFF?f.maximize.maximize:f.maximize.minimize,c=CKEDITOR.document.getById(c._.id),c.getChild(1).setHtml(g),c.setAttribute(\"title\",g),c.setAttribute(\"href\",'javascript:void(\"'+g+'\");');\"wysiwyg\"==a.mode?j?(CKEDITOR.env.gecko&&q(a),a.getSelection().selectRanges(j),(i=a.getSelection().getStartElement())&&i.scrollIntoView(!0)):\nd.$.scrollTo(k.x,k.y):(j&&(i.selectionStart=j[0],i.selectionEnd=j[1]),i.scrollLeft=k[0],i.scrollTop=k[1]);j=k=null;l=this.state;a.fire(\"maximize\",this.state)},canUndo:!1});a.ui.addButton&&a.ui.addButton(\"Maximize\",{label:f.maximize.maximize,command:\"maximize\",toolbar:\"tools,10\"});a.on(\"mode\",function(){var b=a.getCommand(\"maximize\");b.setState(b.state==CKEDITOR.TRISTATE_DISABLED?CKEDITOR.TRISTATE_DISABLED:l)},null,null,100)}}})})();CKEDITOR.plugins.add(\"newpage\",{init:function(a){a.addCommand(\"newpage\",{modes:{wysiwyg:1,source:1},exec:function(b){var a=this;b.setData(b.config.newpage_html||\"\",function(){b.focus();setTimeout(function(){b.fire(\"afterCommandExec\",{name:\"newpage\",command:a});b.selectionChange()},200)})},async:!0});a.ui.addButton&&a.ui.addButton(\"NewPage\",{label:a.lang.newpage.toolbar,command:\"newpage\",toolbar:\"document,20\"})}});(function(){function e(a){return{\"aria-label\":a,\"class\":\"cke_pagebreak\",contenteditable:\"false\",\"data-cke-display-name\":\"pagebreak\",\"data-cke-pagebreak\":1,style:\"page-break-after: always\",title:a}}CKEDITOR.plugins.add(\"pagebreak\",{requires:\"fakeobjects\",onLoad:function(){var a=(\"background:url(\"+CKEDITOR.getUrl(this.path+\"images/pagebreak.gif\")+\") no-repeat center center;clear:both;width:100%;border-top:#999 1px dotted;border-bottom:#999 1px dotted;padding:0;height:5px;cursor:default;\").replace(/;/g,\n\" !important;\");CKEDITOR.addCss(\"div.cke_pagebreak{\"+a+\"}\")},init:function(a){a.blockless||(a.addCommand(\"pagebreak\",CKEDITOR.plugins.pagebreakCmd),a.ui.addButton&&a.ui.addButton(\"PageBreak\",{label:a.lang.pagebreak.toolbar,command:\"pagebreak\",toolbar:\"insert,70\"}),CKEDITOR.env.webkit&&a.on(\"contentDom\",function(){a.document.on(\"click\",function(b){b=b.data.getTarget();b.is(\"div\")&&b.hasClass(\"cke_pagebreak\")&&a.getSelection().selectElement(b)})}))},afterInit:function(a){function b(f){CKEDITOR.tools.extend(f.attributes,\ne(a.lang.pagebreak.alt),!0);f.children.length=0}var c=a.dataProcessor,g=c&&c.dataFilter,c=c&&c.htmlFilter,h=/page-break-after\\s*:\\s*always/i,i=/display\\s*:\\s*none/i;c&&c.addRules({attributes:{\"class\":function(a,b){var c=a.replace(\"cke_pagebreak\",\"\");if(c!=a){var d=CKEDITOR.htmlParser.fragment.fromHtml('<span style=\"display: none;\">&nbsp;</span>').children[0];b.children.length=0;b.add(d);d=b.attributes;delete d[\"aria-label\"];delete d.contenteditable;delete d.title}return c}}},{applyToAll:!0,priority:5});\ng&&g.addRules({elements:{div:function(a){if(a.attributes[\"data-cke-pagebreak\"])b(a);else if(h.test(a.attributes.style)){var c=a.children[0];c&&(\"span\"==c.name&&i.test(c.attributes.style))&&b(a)}}}})}});CKEDITOR.plugins.pagebreakCmd={exec:function(a){var b=a.document.createElement(\"div\",{attributes:e(a.lang.pagebreak.alt)});a.insertElement(b)},context:\"div\",allowedContent:{div:{styles:\"!page-break-after\"},span:{match:function(a){return(a=a.parent)&&\"div\"==a.name&&a.styles[\"page-break-after\"]},styles:\"display\"}},\nrequiredContent:\"div{page-break-after}\"}})();(function(){var c={canUndo:!1,async:!0,exec:function(a){a.getClipboardData({title:a.lang.pastetext.title},function(b){b&&a.fire(\"paste\",{type:\"text\",dataValue:b.dataValue});a.fire(\"afterCommandExec\",{name:\"pastetext\",command:c,returnValue:!!b})})}};CKEDITOR.plugins.add(\"pastetext\",{requires:\"clipboard\",init:function(a){a.addCommand(\"pastetext\",c);a.ui.addButton&&a.ui.addButton(\"PasteText\",{label:a.lang.pastetext.button,command:\"pastetext\",toolbar:\"clipboard,40\"});if(a.config.forcePasteAsPlainText)a.on(\"beforePaste\",\nfunction(a){\"html\"!=a.data.type&&(a.data.type=\"text\")});a.on(\"pasteState\",function(b){a.getCommand(\"pastetext\").setState(b.data)})}})})();(function(){function h(a,d,f){var b=CKEDITOR.cleanWord;b?f():(a=CKEDITOR.getUrl(a.config.pasteFromWordCleanupFile||d+\"filter/default.js\"),CKEDITOR.scriptLoader.load(a,f,null,!0));return!b}function i(a){a.data.type=\"html\"}CKEDITOR.plugins.add(\"pastefromword\",{requires:\"clipboard\",init:function(a){var d=0,f=this.path;a.addCommand(\"pastefromword\",{canUndo:!1,async:!0,exec:function(a){var e=this;d=1;a.once(\"beforePaste\",i);a.getClipboardData({title:a.lang.pastefromword.title},function(c){c&&a.fire(\"paste\",\n{type:\"html\",dataValue:c.dataValue});a.fire(\"afterCommandExec\",{name:\"pastefromword\",command:e,returnValue:!!c})})}});a.ui.addButton&&a.ui.addButton(\"PasteFromWord\",{label:a.lang.pastefromword.toolbar,command:\"pastefromword\",toolbar:\"clipboard,50\"});a.on(\"pasteState\",function(b){a.getCommand(\"pastefromword\").setState(b.data)});a.on(\"paste\",function(b){var e=b.data,c=e.dataValue;if(c&&(d||/(class=\\\"?Mso|style=\\\"[^\\\"]*\\bmso\\-|w:WordDocument)/.test(c))){var g=h(a,f,function(){if(g)a.fire(\"paste\",e);\nelse if(!a.config.pasteFromWordPromptCleanup||d||confirm(a.lang.pastefromword.confirmCleanup))e.dataValue=CKEDITOR.cleanWord(c,a)});g&&b.cancel()}},null,null,3)}})})();(function(){var h,i={modes:{wysiwyg:1,source:1},canUndo:!1,readOnly:1,exec:function(a){var g,b=a.config,f=b.baseHref?'<base href=\"'+b.baseHref+'\"/>':\"\";if(b.fullPage)g=a.getData().replace(/<head>/,\"$&\"+f).replace(/[^>]*(?=<\\/title>)/,\"$& &mdash; \"+a.lang.preview.preview);else{var b=\"<body \",d=a.document&&a.document.getBody();d&&(d.getAttribute(\"id\")&&(b+='id=\"'+d.getAttribute(\"id\")+'\" '),d.getAttribute(\"class\")&&(b+='class=\"'+d.getAttribute(\"class\")+'\" '));g=a.config.docType+'<html dir=\"'+a.config.contentsLangDirection+\n'\"><head>'+f+\"<title>\"+a.lang.preview.preview+\"</title>\"+CKEDITOR.tools.buildStyleHtml(a.config.contentsCss)+\"</head>\"+(b+\">\")+a.getData()+\"</body></html>\"}f=640;b=420;d=80;try{var c=window.screen,f=Math.round(0.8*c.width),b=Math.round(0.7*c.height),d=Math.round(0.1*c.width)}catch(i){}if(!1===a.fire(\"contentPreview\",a={dataValue:g}))return!1;var c=\"\",e;CKEDITOR.env.ie&&(window._cke_htmlToLoad=a.dataValue,e=\"javascript:void( (function(){document.open();\"+(\"(\"+CKEDITOR.tools.fixDomain+\")();\").replace(/\\/\\/.*?\\n/g,\n\"\").replace(/parent\\./g,\"window.opener.\")+\"document.write( window.opener._cke_htmlToLoad );document.close();window.opener._cke_htmlToLoad = null;})() )\",c=\"\");CKEDITOR.env.gecko&&(window._cke_htmlToLoad=a.dataValue,c=h+\"preview.html\");c=window.open(c,null,\"toolbar=yes,location=no,status=yes,menubar=yes,scrollbars=yes,resizable=yes,width=\"+f+\",height=\"+b+\",left=\"+d);CKEDITOR.env.ie&&c&&(c.location=e);!CKEDITOR.env.ie&&!CKEDITOR.env.gecko&&(e=c.document,e.open(),e.write(a.dataValue),e.close());return!0}};\nCKEDITOR.plugins.add(\"preview\",{init:function(a){a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE&&(h=this.path,a.addCommand(\"preview\",i),a.ui.addButton&&a.ui.addButton(\"Preview\",{label:a.lang.preview.preview,command:\"preview\",toolbar:\"document,40\"}))}})})();CKEDITOR.plugins.add(\"print\",{init:function(a){a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE&&(a.addCommand(\"print\",CKEDITOR.plugins.print),a.ui.addButton&&a.ui.addButton(\"Print\",{label:a.lang.print.toolbar,command:\"print\",toolbar:\"document,50\"}))}});CKEDITOR.plugins.print={exec:function(a){CKEDITOR.env.gecko?a.window.$.print():a.document.$.execCommand(\"Print\")},canUndo:!1,readOnly:1,modes:{wysiwyg:1}};CKEDITOR.plugins.add(\"removeformat\",{init:function(a){a.addCommand(\"removeFormat\",CKEDITOR.plugins.removeformat.commands.removeformat);a.ui.addButton&&a.ui.addButton(\"RemoveFormat\",{label:a.lang.removeformat.toolbar,command:\"removeFormat\",toolbar:\"cleanup,10\"})}});\nCKEDITOR.plugins.removeformat={commands:{removeformat:{exec:function(a){for(var h=a._.removeFormatRegex||(a._.removeFormatRegex=RegExp(\"^(?:\"+a.config.removeFormatTags.replace(/,/g,\"|\")+\")$\",\"i\")),e=a._.removeAttributes||(a._.removeAttributes=a.config.removeFormatAttributes.split(\",\")),f=CKEDITOR.plugins.removeformat.filter,k=a.getSelection().getRanges(1),l=k.createIterator(),c;c=l.getNextRange();){c.collapsed||c.enlarge(CKEDITOR.ENLARGE_ELEMENT);var i=c.createBookmark(),b=i.startNode,j=i.endNode,\nd=function(b){for(var c=a.elementPath(b),e=c.elements,d=1,g;(g=e[d])&&!g.equals(c.block)&&!g.equals(c.blockLimit);d++)h.test(g.getName())&&f(a,g)&&b.breakParent(g)};d(b);if(j){d(j);for(b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT);b&&!b.equals(j);)d=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT),!(\"img\"==b.getName()&&b.data(\"cke-realelement\"))&&f(a,b)&&(h.test(b.getName())?b.remove(1):(b.removeAttributes(e),a.fire(\"removeFormatCleanup\",b))),b=d}c.moveToBookmark(i)}a.forceNextSelectionCheck();a.getSelection().selectRanges(k)}}},\nfilter:function(a,h){for(var e=a._.removeFormatFilters||[],f=0;f<e.length;f++)if(!1===e[f](h))return!1;return!0}};CKEDITOR.editor.prototype.addRemoveFormatFilter=function(a){this._.removeFormatFilters||(this._.removeFormatFilters=[]);this._.removeFormatFilters.push(a)};CKEDITOR.config.removeFormatTags=\"b,big,code,del,dfn,em,font,i,ins,kbd,q,s,samp,small,span,strike,strong,sub,sup,tt,u,var\";CKEDITOR.config.removeFormatAttributes=\"class,style,lang,width,height,align,hspace,valign\";(function(){var b={readOnly:1,exec:function(a){if(a.fire(\"save\")&&(a=a.element.$.form))try{a.submit()}catch(b){a.submit.click&&a.submit.click()}}};CKEDITOR.plugins.add(\"save\",{init:function(a){a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&(a.addCommand(\"save\",b).modes={wysiwyg:!!a.element.$.form},a.ui.addButton&&a.ui.addButton(\"Save\",{label:a.lang.save.toolbar,command:\"save\",toolbar:\"document,10\"}))}})})();(function(){CKEDITOR.plugins.add(\"selectall\",{init:function(b){b.addCommand(\"selectAll\",{modes:{wysiwyg:1,source:1},exec:function(a){var b=a.editable();if(b.is(\"textarea\"))a=b.$,CKEDITOR.env.ie?a.createTextRange().execCommand(\"SelectAll\"):(a.selectionStart=0,a.selectionEnd=a.value.length),a.focus();else{if(b.is(\"body\"))a.document.$.execCommand(\"SelectAll\",!1,null);else{var c=a.createRange();c.selectNodeContents(b);c.select()}a.forceNextSelectionCheck();a.selectionChange()}},canUndo:!1});b.ui.addButton&&\nb.ui.addButton(\"SelectAll\",{label:b.lang.selectall.toolbar,command:\"selectAll\",toolbar:\"selection,10\"})}})})();(function(){var i={readOnly:1,preserveState:!0,editorFocus:!1,exec:function(a){this.toggleState();this.refresh(a)},refresh:function(a){if(a.document){var c=this.state==CKEDITOR.TRISTATE_ON&&(a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE||a.focusManager.hasFocus)?\"attachClass\":\"removeClass\";a.editable()[c](\"cke_show_blocks\")}}};CKEDITOR.plugins.add(\"showblocks\",{onLoad:function(){var a=\"p div pre address blockquote h1 h2 h3 h4 h5 h6\".split(\" \"),c,b,e,f,i=CKEDITOR.getUrl(this.path),j=!(CKEDITOR.env.ie&&\n9>CKEDITOR.env.version),g=j?\":not([contenteditable=false]):not(.cke_show_blocks_off)\":\"\",d,h;for(c=b=e=f=\"\";d=a.pop();)h=a.length?\",\":\"\",c+=\".cke_show_blocks \"+d+g+h,e+=\".cke_show_blocks.cke_contents_ltr \"+d+g+h,f+=\".cke_show_blocks.cke_contents_rtl \"+d+g+h,b+=\".cke_show_blocks \"+d+g+\"{background-image:url(\"+i+\"images/block_\"+d+\".png)}\";CKEDITOR.addCss((c+\"{background-repeat:no-repeat;border:1px dotted gray;padding-top:8px}\").concat(b,e+\"{background-position:top left;padding-left:8px}\",f+\"{background-position:top right;padding-right:8px}\"));\nj||CKEDITOR.addCss(\".cke_show_blocks [contenteditable=false],.cke_show_blocks .cke_show_blocks_off{border:none;padding-top:0;background-image:none}.cke_show_blocks.cke_contents_rtl [contenteditable=false],.cke_show_blocks.cke_contents_rtl .cke_show_blocks_off{padding-right:0}.cke_show_blocks.cke_contents_ltr [contenteditable=false],.cke_show_blocks.cke_contents_ltr .cke_show_blocks_off{padding-left:0}\")},init:function(a){function c(){b.refresh(a)}if(!a.blockless){var b=a.addCommand(\"showblocks\",i);\nb.canUndo=!1;a.config.startupOutlineBlocks&&b.setState(CKEDITOR.TRISTATE_ON);a.ui.addButton&&a.ui.addButton(\"ShowBlocks\",{label:a.lang.showblocks.toolbar,command:\"showblocks\",toolbar:\"tools,20\"});a.on(\"mode\",function(){b.state!=CKEDITOR.TRISTATE_DISABLED&&b.refresh(a)});a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&&(a.on(\"focus\",c),a.on(\"blur\",c));a.on(\"contentDom\",function(){b.state!=CKEDITOR.TRISTATE_DISABLED&&b.refresh(a)})}}})})();(function(){var f={preserveState:!0,editorFocus:!1,readOnly:1,exec:function(a){this.toggleState();this.refresh(a)},refresh:function(a){if(a.document){var b=this.state==CKEDITOR.TRISTATE_ON?\"attachClass\":\"removeClass\";a.editable()[b](\"cke_show_borders\")}}};CKEDITOR.plugins.add(\"showborders\",{modes:{wysiwyg:1},onLoad:function(){var a;a=(CKEDITOR.env.ie6Compat?[\".%1 table.%2,\",\".%1 table.%2 td, .%1 table.%2 th\",\"{\",\"border : #d3d3d3 1px dotted\",\"}\"]:\".%1 table.%2,;.%1 table.%2 > tr > td, .%1 table.%2 > tr > th,;.%1 table.%2 > tbody > tr > td, .%1 table.%2 > tbody > tr > th,;.%1 table.%2 > thead > tr > td, .%1 table.%2 > thead > tr > th,;.%1 table.%2 > tfoot > tr > td, .%1 table.%2 > tfoot > tr > th;{;border : #d3d3d3 1px dotted;}\".split(\";\")).join(\"\").replace(/%2/g,\n\"cke_show_border\").replace(/%1/g,\"cke_show_borders \");CKEDITOR.addCss(a)},init:function(a){var b=a.addCommand(\"showborders\",f);b.canUndo=!1;!1!==a.config.startupShowBorders&&b.setState(CKEDITOR.TRISTATE_ON);a.on(\"mode\",function(){b.state!=CKEDITOR.TRISTATE_DISABLED&&b.refresh(a)},null,null,100);a.on(\"contentDom\",function(){b.state!=CKEDITOR.TRISTATE_DISABLED&&b.refresh(a)});a.on(\"removeFormatCleanup\",function(d){d=d.data;a.getCommand(\"showborders\").state==CKEDITOR.TRISTATE_ON&&(d.is(\"table\")&&(!d.hasAttribute(\"border\")||\n0>=parseInt(d.getAttribute(\"border\"),10)))&&d.addClass(\"cke_show_border\")})},afterInit:function(a){var b=a.dataProcessor,a=b&&b.dataFilter,b=b&&b.htmlFilter;a&&a.addRules({elements:{table:function(a){var a=a.attributes,b=a[\"class\"],c=parseInt(a.border,10);if((!c||0>=c)&&(!b||-1==b.indexOf(\"cke_show_border\")))a[\"class\"]=(b||\"\")+\" cke_show_border\"}}});b&&b.addRules({elements:{table:function(a){var a=a.attributes,b=a[\"class\"];b&&(a[\"class\"]=b.replace(\"cke_show_border\",\"\").replace(/\\s{2}/,\" \").replace(/^\\s+|\\s+$/,\n\"\"))}}})}});CKEDITOR.on(\"dialogDefinition\",function(a){var b=a.data.name;if(\"table\"==b||\"tableProperties\"==b)if(a=a.data.definition,b=a.getContents(\"info\").get(\"txtBorder\"),b.commit=CKEDITOR.tools.override(b.commit,function(a){return function(b,c){a.apply(this,arguments);var e=parseInt(this.getValue(),10);c[!e||0>=e?\"addClass\":\"removeClass\"](\"cke_show_border\")}}),a=(a=a.getContents(\"advanced\"))&&a.get(\"advCSSClasses\"))a.setup=CKEDITOR.tools.override(a.setup,function(a){return function(){a.apply(this,\narguments);this.setValue(this.getValue().replace(/cke_show_border/,\"\"))}}),a.commit=CKEDITOR.tools.override(a.commit,function(a){return function(b,c){a.apply(this,arguments);parseInt(c.getAttribute(\"border\"),10)||c.addClass(\"cke_show_border\")}})})})();(function(){CKEDITOR.plugins.add(\"sourcearea\",{init:function(a){function d(){var a=e&&this.equals(CKEDITOR.document.getActive());this.hide();this.setStyle(\"height\",this.getParent().$.clientHeight+\"px\");this.setStyle(\"width\",this.getParent().$.clientWidth+\"px\");this.show();a&&this.focus()}if(a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var f=CKEDITOR.plugins.sourcearea;a.addMode(\"source\",function(e){var b=a.ui.space(\"contents\").getDocument().createElement(\"textarea\");b.setStyles(CKEDITOR.tools.extend({width:CKEDITOR.env.ie7Compat?\n\"99%\":\"100%\",height:\"100%\",resize:\"none\",outline:\"none\",\"text-align\":\"left\"},CKEDITOR.tools.cssVendorPrefix(\"tab-size\",a.config.sourceAreaTabSize||4)));b.setAttribute(\"dir\",\"ltr\");b.addClass(\"cke_source cke_reset cke_enable_context_menu\");a.ui.space(\"contents\").append(b);b=a.editable(new c(a,b));b.setData(a.getData(1));CKEDITOR.env.ie&&(b.attachListener(a,\"resize\",d,b),b.attachListener(CKEDITOR.document.getWindow(),\"resize\",d,b),CKEDITOR.tools.setTimeout(d,0,b));a.fire(\"ariaWidget\",this);e()});a.addCommand(\"source\",\nf.commands.source);a.ui.addButton&&a.ui.addButton(\"Source\",{label:a.lang.sourcearea.toolbar,command:\"source\",toolbar:\"mode,10\"});a.on(\"mode\",function(){a.getCommand(\"source\").setState(\"source\"==a.mode?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)});var e=CKEDITOR.env.ie&&9==CKEDITOR.env.version}}});var c=CKEDITOR.tools.createClass({base:CKEDITOR.editable,proto:{setData:function(a){this.setValue(a);this.status=\"ready\";this.editor.fire(\"dataReady\")},getData:function(){return this.getValue()},insertHtml:function(){},\ninsertElement:function(){},insertText:function(){},setReadOnly:function(a){this[(a?\"set\":\"remove\")+\"Attribute\"](\"readOnly\",\"readonly\")},detach:function(){c.baseProto.detach.call(this);this.clearCustomData();this.remove()}}})})();CKEDITOR.plugins.sourcearea={commands:{source:{modes:{wysiwyg:1,source:1},editorFocus:!1,readOnly:1,exec:function(c){\"wysiwyg\"==c.mode&&c.fire(\"saveSnapshot\");c.getCommand(\"source\").setState(CKEDITOR.TRISTATE_DISABLED);c.setMode(\"source\"==c.mode?\"wysiwyg\":\"source\")},canUndo:!1}}};CKEDITOR.plugins.add(\"specialchar\",{availableLangs:{ar:1,bg:1,ca:1,cs:1,cy:1,de:1,el:1,en:1,\"en-gb\":1,eo:1,es:1,et:1,fa:1,fi:1,fr:1,\"fr-ca\":1,gl:1,he:1,hr:1,hu:1,id:1,it:1,ja:1,km:1,ku:1,lv:1,nb:1,nl:1,no:1,pl:1,pt:1,\"pt-br\":1,ru:1,si:1,sk:1,sl:1,sq:1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,zh:1,\"zh-cn\":1},requires:\"dialog\",init:function(a){var c=this;CKEDITOR.dialog.add(\"specialchar\",this.path+\"dialogs/specialchar.js\");a.addCommand(\"specialchar\",{exec:function(){var b=a.langCode,b=c.availableLangs[b]?\nb:c.availableLangs[b.replace(/-.*/,\"\")]?b.replace(/-.*/,\"\"):\"en\";CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(c.path+\"dialogs/lang/\"+b+\".js\"),function(){CKEDITOR.tools.extend(a.lang.specialchar,c.langEntries[b]);a.openDialog(\"specialchar\")})},modes:{wysiwyg:1},canUndo:!1});a.ui.addButton&&a.ui.addButton(\"SpecialChar\",{label:a.lang.specialchar.toolbar,command:\"specialchar\",toolbar:\"insert,50\"})}});CKEDITOR.config.specialChars=\"! &quot; # $ % &amp; ' ( ) * + - . / 0 1 2 3 4 5 6 7 8 9 : ; &lt; = &gt; ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ &euro; &lsquo; &rsquo; &ldquo; &rdquo; &ndash; &mdash; &iexcl; &cent; &pound; &curren; &yen; &brvbar; &sect; &uml; &copy; &ordf; &laquo; &not; &reg; &macr; &deg; &sup2; &sup3; &acute; &micro; &para; &middot; &cedil; &sup1; &ordm; &raquo; &frac14; &frac12; &frac34; &iquest; &Agrave; &Aacute; &Acirc; &Atilde; &Auml; &Aring; &AElig; &Ccedil; &Egrave; &Eacute; &Ecirc; &Euml; &Igrave; &Iacute; &Icirc; &Iuml; &ETH; &Ntilde; &Ograve; &Oacute; &Ocirc; &Otilde; &Ouml; &times; &Oslash; &Ugrave; &Uacute; &Ucirc; &Uuml; &Yacute; &THORN; &szlig; &agrave; &aacute; &acirc; &atilde; &auml; &aring; &aelig; &ccedil; &egrave; &eacute; &ecirc; &euml; &igrave; &iacute; &icirc; &iuml; &eth; &ntilde; &ograve; &oacute; &ocirc; &otilde; &ouml; &divide; &oslash; &ugrave; &uacute; &ucirc; &uuml; &yacute; &thorn; &yuml; &OElig; &oelig; &#372; &#374 &#373 &#375; &sbquo; &#8219; &bdquo; &hellip; &trade; &#9658; &bull; &rarr; &rArr; &hArr; &diams; &asymp;\".split(\" \");CKEDITOR.plugins.add(\"scayt\",{requires:\"menubutton,dialog\",tabToOpen:null,dialogName:\"scaytDialog\",init:function(a){var d=this,c=CKEDITOR.plugins.scayt;this.bindEvents(a);this.parseConfig(a);this.addRule(a);CKEDITOR.dialog.add(this.dialogName,CKEDITOR.getUrl(this.path+\"dialogs/options.js\"));this.addMenuItems(a);var b=a.lang.scayt,f=CKEDITOR.env;a.ui.add(\"Scayt\",CKEDITOR.UI_MENUBUTTON,{label:b.text_title,title:b.text_title,modes:{wysiwyg:!(f.ie&&(8>f.version||f.quirks))},toolbar:\"spellchecker,20\",\nrefresh:function(){var b=a.ui.instances.Scayt.getState();a.scayt&&(b=c.state[a.name]?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF);a.fire(\"scaytButtonState\",b)},onRender:function(){var c=this;a.on(\"scaytButtonState\",function(a){void 0!==typeof a.data&&c.setState(a.data)})},onMenu:function(){var b=a.scayt;a.getMenuItem(\"scaytToggle\").label=a.lang.scayt[b&&c.state[a.name]?\"btn_disable\":\"btn_enable\"];b={scaytToggle:CKEDITOR.TRISTATE_OFF,scaytOptions:b?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytLangs:b?\nCKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytDict:b?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,scaytAbout:b?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,WSC:a.plugins.wsc?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED};a.config.scayt_uiTabs[0]||delete b.scaytOptions;a.config.scayt_uiTabs[1]||delete b.scaytLangs;a.config.scayt_uiTabs[2]||delete b.scaytDict;return b}});a.contextMenu&&a.addMenuItems&&(a.contextMenu.addListener(function(){var c=a.scayt,b;if(c){var h=c.getSelectionNode();\nif(h=h?h.getAttribute(c.getNodeAttribute()):h)b=d.menuGenerator(a,h,d),c.showBanner(\".\"+a.contextMenu._.definition.panel.className.split(\" \").join(\" .\"))}return b}),a.contextMenu._.onHide=CKEDITOR.tools.override(a.contextMenu._.onHide,function(c){return function(){var b=a.scayt;b&&b.hideBanner();return c.apply(this)}}))},addMenuItems:function(a){var d=this,c=CKEDITOR.plugins.scayt;a.addMenuGroup(\"scaytButton\");var b=a.config.scayt_contextMenuItemsOrder.split(\"|\");if(b&&b.length)for(var f=0;f<b.length;f++)a.addMenuGroup(\"scayt_\"+\nb[f],f-10);b={scaytToggle:{label:a.lang.scayt.btn_enable,group:\"scaytButton\",onClick:function(){var b=a.scayt;c.state[a.name]=!c.state[a.name];!0===c.state[a.name]?b||c.createScayt(a):b&&c.destroy(a)}},scaytAbout:{label:a.lang.scayt.btn_about,group:\"scaytButton\",onClick:function(){a.scayt.tabToOpen=\"about\";a.lockSelection();a.openDialog(d.dialogName)}},scaytOptions:{label:a.lang.scayt.btn_options,group:\"scaytButton\",onClick:function(){a.scayt.tabToOpen=\"options\";a.lockSelection();a.openDialog(d.dialogName)}},\nscaytLangs:{label:a.lang.scayt.btn_langs,group:\"scaytButton\",onClick:function(){a.scayt.tabToOpen=\"langs\";a.lockSelection();a.openDialog(d.dialogName)}},scaytDict:{label:a.lang.scayt.btn_dictionaries,group:\"scaytButton\",onClick:function(){a.scayt.tabToOpen=\"dictionaries\";a.lockSelection();a.openDialog(d.dialogName)}}};a.plugins.wsc&&(b.WSC={label:a.lang.wsc.toolbar,group:\"scaytButton\",onClick:function(){var c=CKEDITOR.plugins.scayt,b=a.scayt,d=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.container.getText():\na.document.getBody().getText();(d=d.replace(/\\s/g,\"\"))?(b&&(c.state[a.name]&&b.setMarkupPaused)&&b.setMarkupPaused(!0),a.lockSelection(),a.execCommand(\"checkspell\")):alert(\"Nothing to check!\")}});a.addMenuItems(b)},bindEvents:function(a){var d=CKEDITOR.plugins.scayt,c=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE;CKEDITOR.on(\"dialogDefinition\",function(a){if(\"scaytDialog\"===a.data.name)a.data.definition.dialog.on(\"cancel\",function(){return!1},this,null,-1)});var b=function(){a.scayt&&d.destroy(a)},\nf=function(){d.state[a.name]&&!a.readOnly&&d.createScayt(a)},g=function(){c?(a.on(\"blur\",b),a.on(\"focus\",f),a.focusManager.hasFocus&&f()):f()};a.on(\"contentDom\",g);a.on(\"beforeCommandExec\",function(c){if(c.data.name in d.options.disablingCommandExec&&\"wysiwyg\"==a.mode){if(c=a.scayt)d.destroy(a),a.fire(\"scaytButtonState\",CKEDITOR.TRISTATE_DISABLED)}else if(\"bold\"===c.data.name||\"italic\"===c.data.name||\"underline\"===c.data.name||\"strike\"===c.data.name||\"subscript\"===c.data.name||\"superscript\"===c.data.name)if(c=\na.scayt)c.removeMarkupInSelectionNode(),c.fire(\"startSpellCheck\")});a.on(\"beforeSetMode\",function(c){if(\"source\"==c.data&&(c=a.scayt))d.destroy(a),a.fire(\"scaytButtonState\",CKEDITOR.TRISTATE_DISABLED)});a.on(\"afterCommandExec\",function(c){var b;if(\"wysiwyg\"==a.mode&&(\"undo\"==c.data.name||\"redo\"==c.data.name))(b=a.scayt)&&setTimeout(function(){b.fire(\"startSpellCheck\")},250)});a.on(\"readOnly\",function(c){var b;c&&(b=a.scayt,!0===c.editor.readOnly?b&&b.fire(\"removeMarkupInDocument\",{}):b?b.fire(\"startSpellCheck\"):\n\"wysiwyg\"==c.editor.mode&&!0===d.state[c.editor.name]&&(d.createScayt(a),c.editor.fire(\"scaytButtonState\",CKEDITOR.TRISTATE_ON)))});a.on(\"beforeDestroy\",b);a.on(\"setData\",function(){b();a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&&g()},this,null,50);a.on(\"insertElement\",function(){var c=a.scayt;c&&(c.removeMarkupInSelectionNode(),c.fire(\"startSpellCheck\"))},this,null,50);a.on(\"insertHtml\",function(){var c=a.scayt;c&&(c.removeMarkupInSelectionNode(),c.fire(\"startSpellCheck\"))},this,null,50);a.on(\"scaytDialogShown\",\nfunction(c){c.data.selectPage(a.scayt.tabToOpen)})},parseConfig:function(a){var d=CKEDITOR.plugins.scayt;d.replaceOldOptionsNames(a.config);\"boolean\"!==typeof a.config.scayt_autoStartup&&(a.config.scayt_autoStartup=!1);d.state[a.name]=a.config.scayt_autoStartup;a.config.scayt_contextCommands||(a.config.scayt_contextCommands=\"ignore|ignoreall|add\");a.config.scayt_contextMenuItemsOrder||(a.config.scayt_contextMenuItemsOrder=\"suggest|moresuggest|control\");a.config.scayt_sLang||(a.config.scayt_sLang=\n\"en_US\");if(void 0===a.config.scayt_maxSuggestions||\"number\"!=typeof a.config.scayt_maxSuggestions||0>a.config.scayt_maxSuggestions)a.config.scayt_maxSuggestions=5;if(void 0===a.config.scayt_customDictionaryIds||\"string\"!==typeof a.config.scayt_customDictionaryIds)a.config.scayt_customDictionaryIds=\"\";if(void 0===a.config.scayt_userDictionaryName||\"string\"!==typeof a.config.scayt_userDictionaryName)a.config.scayt_userDictionaryName=null;if(\"string\"===typeof a.config.scayt_uiTabs&&3===a.config.scayt_uiTabs.split(\",\").length){var c=\n[],b=[];a.config.scayt_uiTabs=a.config.scayt_uiTabs.split(\",\");CKEDITOR.tools.search(a.config.scayt_uiTabs,function(a){if(Number(a)===1||Number(a)===0){b.push(true);c.push(Number(a))}else b.push(false)});a.config.scayt_uiTabs=null===CKEDITOR.tools.search(b,!1)?c:[1,1,1]}else a.config.scayt_uiTabs=[1,1,1];\"string\"!=typeof a.config.scayt_serviceProtocol&&(a.config.scayt_serviceProtocol=null);\"string\"!=typeof a.config.scayt_serviceHost&&(a.config.scayt_serviceHost=null);\"string\"!=typeof a.config.scayt_servicePort&&\n(a.config.scayt_servicePort=null);\"string\"!=typeof a.config.scayt_servicePath&&(a.config.scayt_servicePath=null);a.config.scayt_moreSuggestions||(a.config.scayt_moreSuggestions=\"on\");\"string\"!==typeof a.config.scayt_customerId&&(a.config.scayt_customerId=\"1:WvF0D4-UtPqN1-43nkD4-NKvUm2-daQqk3-LmNiI-z7Ysb4-mwry24-T8YrS3-Q2tpq2\");\"string\"!==typeof a.config.scayt_srcUrl&&(d=document.location.protocol,d=-1!=d.search(/https?:/)?d:\"http:\",a.config.scayt_srcUrl=d+\"//svc.webspellchecker.net/spellcheck31/lf/scayt3/ckscayt/ckscayt.js\");\n\"boolean\"!==typeof CKEDITOR.config.scayt_handleCheckDirty&&(CKEDITOR.config.scayt_handleCheckDirty=!0);\"boolean\"!==typeof CKEDITOR.config.scayt_handleUndoRedo&&(CKEDITOR.config.scayt_handleUndoRedo=!0)},addRule:function(a){var d=a.dataProcessor,c=d&&d.htmlFilter,b=a._.elementsPath&&a._.elementsPath.filters,d=d&&d.dataFilter,f=a.addRemoveFormatFilter,g=function(c){var b=CKEDITOR.plugins.scayt;if(a.scayt&&c.hasAttribute(b.options.data_attribute_name))return!1},e=function(c){var b=CKEDITOR.plugins.scayt,\nd=!0;a.scayt&&c.hasAttribute(b.options.data_attribute_name)&&(d=!1);return d};b&&b.push(g);d&&d.addRules({elements:{span:function(c){var b=CKEDITOR.plugins.scayt;b&&(b.state[a.name]&&c.classes&&CKEDITOR.tools.search(c.classes,b.options.misspelled_word_class))&&(c.classes&&c.parent.type===CKEDITOR.NODE_DOCUMENT_FRAGMENT?(delete c.attributes.style,delete c.name):delete c.classes[CKEDITOR.tools.indexOf(c.classes,b.options.misspelled_word_class)]);return c}}});c&&c.addRules({elements:{span:function(c){var b=\nCKEDITOR.plugins.scayt;b&&(b.state[a.name]&&c.hasClass(b.options.misspelled_word_class)&&c.attributes[b.options.data_attribute_name])&&(c.removeClass(b.options.misspelled_word_class),delete c.attributes[b.options.data_attribute_name],delete c.name);return c}}});f&&f.call(a,e)},scaytMenuDefinition:function(a){var d=this,a=a.scayt;return{scayt_ignore:{label:a.getLocal(\"btn_ignore\"),group:\"scayt_control\",order:1,exec:function(a){a.scayt.ignoreWord()}},scayt_ignoreall:{label:a.getLocal(\"btn_ignoreAll\"),\ngroup:\"scayt_control\",order:2,exec:function(a){a.scayt.ignoreAllWords()}},scayt_add:{label:a.getLocal(\"btn_addWord\"),group:\"scayt_control\",order:3,exec:function(a){var b=a.scayt;setTimeout(function(){b.addWordToUserDictionary()},10)}},option:{label:a.getLocal(\"btn_options\"),group:\"scayt_control\",order:4,exec:function(a){a.scayt.tabToOpen=\"options\";a.lockSelection();a.openDialog(d.dialogName)},verification:function(a){return 1==a.config.scayt_uiTabs[0]?!0:!1}},language:{label:a.getLocal(\"btn_langs\"),\ngroup:\"scayt_control\",order:5,exec:function(a){a.scayt.tabToOpen=\"langs\";a.lockSelection();a.openDialog(d.dialogName)},verification:function(a){return 1==a.config.scayt_uiTabs[1]?!0:!1}},dictionary:{label:a.getLocal(\"btn_dictionaries\"),group:\"scayt_control\",order:6,exec:function(a){a.scayt.tabToOpen=\"dictionaries\";a.lockSelection();a.openDialog(d.dialogName)},verification:function(a){return 1==a.config.scayt_uiTabs[2]?!0:!1}},about:{label:a.getLocal(\"btn_about\"),group:\"scayt_control\",order:7,exec:function(a){a.scayt.tabToOpen=\n\"about\";a.lockSelection();a.openDialog(d.dialogName)}}}},buildSuggestionMenuItems:function(a,d){var c={},b={},f=a.scayt;if(0<d.length&&\"no_any_suggestions\"!==d[0])for(var g=0;g<d.length;g++){var e=\"scayt_suggest_\"+CKEDITOR.plugins.scayt.suggestions[g].replace(\" \",\"_\");a.addCommand(e,this.createCommand(CKEDITOR.plugins.scayt.suggestions[g]));g<a.config.scayt_maxSuggestions?(a.addMenuItem(e,{label:d[g],command:e,group:\"scayt_suggest\",order:g+1}),c[e]=CKEDITOR.TRISTATE_OFF):(a.addMenuItem(e,{label:d[g],\ncommand:e,group:\"scayt_moresuggest\",order:g+1}),b[e]=CKEDITOR.TRISTATE_OFF,\"on\"===a.config.scayt_moreSuggestions&&(a.addMenuItem(\"scayt_moresuggest\",{label:f.getLocal(\"btn_moreSuggestions\"),group:\"scayt_moresuggest\",order:10,getItems:function(){return b}}),c.scayt_moresuggest=CKEDITOR.TRISTATE_OFF))}else c.no_scayt_suggest=CKEDITOR.TRISTATE_DISABLED,a.addCommand(\"no_scayt_suggest\",{exec:function(){}}),a.addMenuItem(\"no_scayt_suggest\",{label:f.getLocal(\"btn_noSuggestions\")||\"no_scayt_suggest\",command:\"no_scayt_suggest\",\ngroup:\"scayt_suggest\",order:0});return c},menuGenerator:function(a,d){var c=a.scayt,b=this.scaytMenuDefinition(a),f={},g=a.config.scayt_contextCommands.split(\"|\");c.fire(\"getSuggestionsList\",{lang:c.getLang(),word:d});f=this.buildSuggestionMenuItems(a,CKEDITOR.plugins.scayt.suggestions);if(\"off\"==a.config.scayt_contextCommands)return f;for(var e in b)-1==CKEDITOR.tools.indexOf(g,e.replace(\"scayt_\",\"\"))&&\"all\"!=a.config.scayt_contextCommands||(f[e]=CKEDITOR.TRISTATE_OFF,\"function\"===typeof b[e].verification&&\n!b[e].verification(a)&&delete f[e],a.addCommand(e,{exec:b[e].exec}),a.addMenuItem(e,{label:a.lang.scayt[b[e].label]||b[e].label,command:e,group:b[e].group,order:b[e].order}));return f},createCommand:function(a){return{exec:function(d){d.scayt.replaceSelectionNode({word:a})}}}});\nCKEDITOR.plugins.scayt={state:{},suggestions:[],loadingHelper:{loadOrder:[]},isLoading:!1,options:{disablingCommandExec:{source:!0,newpage:!0,templates:!0},data_attribute_name:\"data-scayt-word\",misspelled_word_class:\"scayt-misspell-word\"},backCompatibilityMap:{scayt_service_protocol:\"scayt_serviceProtocol\",scayt_service_host:\"scayt_serviceHost\",scayt_service_port:\"scayt_servicePort\",scayt_service_path:\"scayt_servicePath\",scayt_customerid:\"scayt_customerId\"},replaceOldOptionsNames:function(a){for(var d in a)d in\nthis.backCompatibilityMap&&(a[this.backCompatibilityMap[d]]=a[d],delete a[d])},createScayt:function(a){var d=this;this.loadScaytLibrary(a,function(a){var b={lang:a.config.scayt_sLang,container:\"BODY\"==a.editable().$.nodeName?a.document.getWindow().$.frameElement:a.editable().$,customDictionary:a.config.scayt_customDictionaryIds,userDictionaryName:a.config.scayt_userDictionaryName,localization:a.langCode,customer_id:a.config.scayt_customerId,data_attribute_name:d.options.data_attribute_name,misspelled_word_class:d.options.misspelled_word_class};\na.config.scayt_serviceProtocol&&(b.service_protocol=a.config.scayt_serviceProtocol);a.config.scayt_serviceHost&&(b.service_host=a.config.scayt_serviceHost);a.config.scayt_servicePort&&(b.service_port=a.config.scayt_servicePort);a.config.scayt_servicePath&&(b.service_path=a.config.scayt_servicePath);b=new SCAYT.CKSCAYT(b,function(){},function(){});b.subscribe(\"suggestionListSend\",function(a){for(var b={},c=[],d=0;d<a.suggestionList.length;d++)if(!b[a.suggestionList[d]]){b[a.suggestionList[d]]=a.suggestionList[d];\nc.push(a.suggestionList[d])}CKEDITOR.plugins.scayt.suggestions=c});a.scayt=b;a.fire(\"scaytButtonState\",a.readOnly?CKEDITOR.TRISTATE_DISABLED:CKEDITOR.TRISTATE_ON)})},destroy:function(a){a.scayt&&a.scayt.destroy();delete a.scayt;a.fire(\"scaytButtonState\",CKEDITOR.TRISTATE_OFF)},loadScaytLibrary:function(a,d){var c=this;\"undefined\"===typeof window.SCAYT||\"function\"!==typeof window.SCAYT.CKSCAYT?(this.loadingHelper[a.name]=d,this.loadingHelper.loadOrder.push(a.name),CKEDITOR.scriptLoader.load(a.config.scayt_srcUrl,\nfunction(){var a;CKEDITOR.fireOnce(\"scaytReady\");for(var d=0;d<c.loadingHelper.loadOrder.length;d++){a=c.loadingHelper.loadOrder[d];if(\"function\"===typeof c.loadingHelper[a])c.loadingHelper[a](CKEDITOR.instances[a]);delete c.loadingHelper[a]}c.loadingHelper.loadOrder=[]})):window.SCAYT&&\"function\"===typeof window.SCAYT.CKSCAYT&&(CKEDITOR.fireOnce(\"scaytReady\"),a.scayt||\"function\"===typeof d&&d(a))}};\nCKEDITOR.on(\"scaytReady\",function(){if(!0===CKEDITOR.config.scayt_handleCheckDirty){var a=CKEDITOR.editor.prototype;a.checkDirty=CKEDITOR.tools.override(a.checkDirty,function(a){return function(){var b=null,d=this.scayt;if(!CKEDITOR.plugins.scayt||!CKEDITOR.plugins.scayt.state[this.name]||!this.scayt)b=a.call(this);else if(b=\"ready\"==this.status)var g=d.removeMarkupFromString(this.getSnapshot()),d=d.removeMarkupFromString(this._.previousValue),b=b&&d!==g;return b}});a.resetDirty=CKEDITOR.tools.override(a.resetDirty,\nfunction(a){return function(){var b=this.scayt;!CKEDITOR.plugins.scayt||!CKEDITOR.plugins.scayt.state[this.name]||!this.scayt?a.call(this):this._.previousValue=b.removeMarkupFromString(this.getSnapshot())}})}if(!0===CKEDITOR.config.scayt_handleUndoRedo){var a=CKEDITOR.plugins.undo.Image.prototype,d=\"function\"==typeof a.equalsContent?\"equalsContent\":\"equals\";a[d]=CKEDITOR.tools.override(a[d],function(a){return function(b){var d=b.editor.scayt,g=this.contents,e=b.contents,h=null;CKEDITOR.plugins.scayt&&\n(CKEDITOR.plugins.scayt.state[b.editor.name]&&b.editor.scayt)&&(this.contents=d.removeMarkupFromString(g)||\"\",b.contents=d.removeMarkupFromString(e)||\"\");h=a.apply(this,arguments);this.contents=g;b.contents=e;return h}})}});(function(){CKEDITOR.plugins.add(\"stylescombo\",{requires:\"richcombo\",init:function(c){var j=c.config,g=c.lang.stylescombo,f={},i=[],k=[];c.on(\"stylesSet\",function(b){if(b=b.data.styles){for(var a,h,d,e=0,l=b.length;e<l;e++)if(a=b[e],!(c.blockless&&a.element in CKEDITOR.dtd.$block)&&(h=a.name,a=new CKEDITOR.style(a),!c.filter.customConfig||c.filter.check(a)))a._name=h,a._.enterMode=j.enterMode,a._.type=d=a.assignedTo||a.type,a._.weight=e+1E3*(d==CKEDITOR.STYLE_OBJECT?1:d==CKEDITOR.STYLE_BLOCK?2:3),\nf[h]=a,i.push(a),k.push(a);i.sort(function(a,b){return a._.weight-b._.weight})}});c.ui.addRichCombo(\"Styles\",{label:g.label,title:g.panelTitle,toolbar:\"styles,10\",allowedContent:k,panel:{css:[CKEDITOR.skin.getPath(\"editor\")].concat(j.contentsCss),multiSelect:!0,attributes:{\"aria-label\":g.panelTitle}},init:function(){var b,a,c,d,e,f;e=0;for(f=i.length;e<f;e++)b=i[e],a=b._name,d=b._.type,d!=c&&(this.startGroup(g[\"panelTitle\"+d]),c=d),this.add(a,b.type==CKEDITOR.STYLE_OBJECT?a:b.buildPreview(),a);this.commit()},\nonClick:function(b){c.focus();c.fire(\"saveSnapshot\");var b=f[b],a=c.elementPath();c[b.checkActive(a,c)?\"removeStyle\":\"applyStyle\"](b);c.fire(\"saveSnapshot\")},onRender:function(){c.on(\"selectionChange\",function(b){for(var a=this.getValue(),b=b.data.path.elements,h=0,d=b.length,e;h<d;h++){e=b[h];for(var g in f)if(f[g].checkElementRemovable(e,!0,c)){g!=a&&this.setValue(g);return}}this.setValue(\"\")},this)},onOpen:function(){var b=c.getSelection().getSelectedElement(),b=c.elementPath(b),a=[0,0,0,0];this.showAll();\nthis.unmarkAll();for(var h in f){var d=f[h],e=d._.type;d.checkApplicable(b,c,c.activeFilter)?a[e]++:this.hideItem(h);d.checkActive(b,c)&&this.mark(h)}a[CKEDITOR.STYLE_BLOCK]||this.hideGroup(g[\"panelTitle\"+CKEDITOR.STYLE_BLOCK]);a[CKEDITOR.STYLE_INLINE]||this.hideGroup(g[\"panelTitle\"+CKEDITOR.STYLE_INLINE]);a[CKEDITOR.STYLE_OBJECT]||this.hideGroup(g[\"panelTitle\"+CKEDITOR.STYLE_OBJECT])},refresh:function(){var b=c.elementPath();if(b){for(var a in f)if(f[a].checkApplicable(b,c,c.activeFilter))return;\nthis.setState(CKEDITOR.TRISTATE_DISABLED)}},reset:function(){f={};i=[]}})}})})();(function(){function i(c){return{editorFocus:!1,canUndo:!1,modes:{wysiwyg:1},exec:function(d){if(d.editable().hasFocus){var e=d.getSelection(),b;if(b=(new CKEDITOR.dom.elementPath(e.getCommonAncestor(),e.root)).contains({td:1,th:1},1)){var e=d.createRange(),a=CKEDITOR.tools.tryThese(function(){var a=b.getParent().$.cells[b.$.cellIndex+(c?-1:1)];a.parentNode.parentNode;return a},function(){var a=b.getParent(),a=a.getAscendant(\"table\").$.rows[a.$.rowIndex+(c?-1:1)];return a.cells[c?a.cells.length-1:\n0]});if(!a&&!c){for(var f=b.getAscendant(\"table\").$,a=b.getParent().$.cells,f=new CKEDITOR.dom.element(f.insertRow(-1),d.document),g=0,h=a.length;g<h;g++)f.append((new CKEDITOR.dom.element(a[g],d.document)).clone(!1,!1)).appendBogus();e.moveToElementEditStart(f)}else if(a)a=new CKEDITOR.dom.element(a),e.moveToElementEditStart(a),(!e.checkStartOfBlock()||!e.checkEndOfBlock())&&e.selectNodeContents(a);else return!0;e.select(!0);return!0}}return!1}}}var h={editorFocus:!1,modes:{wysiwyg:1,source:1}},\ng={exec:function(c){c.container.focusNext(!0,c.tabIndex)}},f={exec:function(c){c.container.focusPrevious(!0,c.tabIndex)}};CKEDITOR.plugins.add(\"tab\",{init:function(c){for(var d=!1!==c.config.enableTabKeyTools,e=c.config.tabSpaces||0,b=\"\";e--;)b+=\" \";if(b)c.on(\"key\",function(a){9==a.data.keyCode&&(c.insertHtml(b),a.cancel())});if(d)c.on(\"key\",function(a){(9==a.data.keyCode&&c.execCommand(\"selectNextCell\")||a.data.keyCode==CKEDITOR.SHIFT+9&&c.execCommand(\"selectPreviousCell\"))&&a.cancel()});c.addCommand(\"blur\",\nCKEDITOR.tools.extend(g,h));c.addCommand(\"blurBack\",CKEDITOR.tools.extend(f,h));c.addCommand(\"selectNextCell\",i());c.addCommand(\"selectPreviousCell\",i(!0))}})})();\nCKEDITOR.dom.element.prototype.focusNext=function(i,h){var g=void 0===h?this.getTabIndex():h,f,c,d,e,b,a;if(0>=g)for(b=this.getNextSourceNode(i,CKEDITOR.NODE_ELEMENT);b;){if(b.isVisible()&&0===b.getTabIndex()){d=b;break}b=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT)}else for(b=this.getDocument().getBody().getFirst();b=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!f)if(!c&&b.equals(this)){if(c=!0,i){if(!(b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;f=1}}else c&&!this.contains(b)&&\n(f=1);if(b.isVisible()&&!(0>(a=b.getTabIndex()))){if(f&&a==g){d=b;break}a>g&&(!d||!e||a<e)?(d=b,e=a):!d&&0===a&&(d=b,e=a)}}d&&d.focus()};\nCKEDITOR.dom.element.prototype.focusPrevious=function(i,h){for(var g=void 0===h?this.getTabIndex():h,f,c,d,e=0,b,a=this.getDocument().getBody().getLast();a=a.getPreviousSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!f)if(!c&&a.equals(this)){if(c=!0,i){if(!(a=a.getPreviousSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;f=1}}else c&&!this.contains(a)&&(f=1);if(a.isVisible()&&!(0>(b=a.getTabIndex())))if(0>=g){if(f&&0===b){d=a;break}b>e&&(d=a,e=b)}else{if(f&&b==g){d=a;break}if(b<g&&(!d||b>e))d=a,e=b}}d&&d.focus()};CKEDITOR.plugins.add(\"table\",{requires:\"dialog\",init:function(a){function d(a){return CKEDITOR.tools.extend(a||{},{contextSensitive:1,refresh:function(a,e){this.setState(e.contains(\"table\",1)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)}})}if(!a.blockless){var b=a.lang.table;a.addCommand(\"table\",new CKEDITOR.dialogCommand(\"table\",{context:\"table\",allowedContent:\"table{width,height}[align,border,cellpadding,cellspacing,summary];caption tbody thead tfoot;th td tr[scope];\"+(a.plugins.dialogadvtab?\n\"table\"+a.plugins.dialogadvtab.allowedContent():\"\"),requiredContent:\"table\",contentTransformations:[[\"table{width}: sizeToStyle\",\"table[width]: sizeToAttribute\"]]}));a.addCommand(\"tableProperties\",new CKEDITOR.dialogCommand(\"tableProperties\",d()));a.addCommand(\"tableDelete\",d({exec:function(a){var c=a.elementPath().contains(\"table\",1);if(c){var b=c.getParent();1==b.getChildCount()&&!b.is(\"body\",\"td\",\"th\")&&(c=b);a=a.createRange();a.moveToPosition(c,CKEDITOR.POSITION_BEFORE_START);c.remove();a.select()}}}));\na.ui.addButton&&a.ui.addButton(\"Table\",{label:b.toolbar,command:\"table\",toolbar:\"insert,30\"});CKEDITOR.dialog.add(\"table\",this.path+\"dialogs/table.js\");CKEDITOR.dialog.add(\"tableProperties\",this.path+\"dialogs/table.js\");a.addMenuItems&&a.addMenuItems({table:{label:b.menu,command:\"tableProperties\",group:\"table\",order:5},tabledelete:{label:b.deleteTable,command:\"tableDelete\",group:\"table\",order:1}});a.on(\"doubleclick\",function(a){a.data.element.is(\"table\")&&(a.data.dialog=\"tableProperties\")});a.contextMenu&&\na.contextMenu.addListener(function(){return{tabledelete:CKEDITOR.TRISTATE_OFF,table:CKEDITOR.TRISTATE_OFF}})}}});(function(){function p(e){function d(a){!(0<b.length)&&(a.type==CKEDITOR.NODE_ELEMENT&&y.test(a.getName())&&!a.getCustomData(\"selected_cell\"))&&(CKEDITOR.dom.element.setMarker(c,a,\"selected_cell\",!0),b.push(a))}for(var e=e.getRanges(),b=[],c={},a=0;a<e.length;a++){var f=e[a];if(f.collapsed)f=f.getCommonAncestor(),(f=f.getAscendant(\"td\",!0)||f.getAscendant(\"th\",!0))&&b.push(f);else{var f=new CKEDITOR.dom.walker(f),g;for(f.guard=d;g=f.next();)if(g.type!=CKEDITOR.NODE_ELEMENT||!g.is(CKEDITOR.dtd.table))if((g=\ng.getAscendant(\"td\",!0)||g.getAscendant(\"th\",!0))&&!g.getCustomData(\"selected_cell\"))CKEDITOR.dom.element.setMarker(c,g,\"selected_cell\",!0),b.push(g)}}CKEDITOR.dom.element.clearAllMarkers(c);return b}function o(e,d){for(var b=p(e),c=b[0],a=c.getAscendant(\"table\"),c=c.getDocument(),f=b[0].getParent(),g=f.$.rowIndex,b=b[b.length-1],h=b.getParent().$.rowIndex+b.$.rowSpan-1,b=new CKEDITOR.dom.element(a.$.rows[h]),g=d?g:h,f=d?f:b,b=CKEDITOR.tools.buildTableMap(a),a=b[g],g=d?b[g-1]:b[g+1],b=b[0].length,\nc=c.createElement(\"tr\"),h=0;a[h]&&h<b;h++){var i;1<a[h].rowSpan&&g&&a[h]==g[h]?(i=a[h],i.rowSpan+=1):(i=(new CKEDITOR.dom.element(a[h])).clone(),i.removeAttribute(\"rowSpan\"),i.appendBogus(),c.append(i),i=i.$);h+=i.colSpan-1}d?c.insertBefore(f):c.insertAfter(f)}function q(e){if(e instanceof CKEDITOR.dom.selection){for(var d=p(e),b=d[0].getAscendant(\"table\"),c=CKEDITOR.tools.buildTableMap(b),e=d[0].getParent().$.rowIndex,d=d[d.length-1],a=d.getParent().$.rowIndex+d.$.rowSpan-1,d=[],f=e;f<=a;f++){for(var g=\nc[f],h=new CKEDITOR.dom.element(b.$.rows[f]),i=0;i<g.length;i++){var j=new CKEDITOR.dom.element(g[i]),l=j.getParent().$.rowIndex;1==j.$.rowSpan?j.remove():(j.$.rowSpan-=1,l==f&&(l=c[f+1],l[i-1]?j.insertAfter(new CKEDITOR.dom.element(l[i-1])):(new CKEDITOR.dom.element(b.$.rows[f+1])).append(j,1)));i+=j.$.colSpan-1}d.push(h)}c=b.$.rows;b=new CKEDITOR.dom.element(c[a+1]||(0<e?c[e-1]:null)||b.$.parentNode);for(f=d.length;0<=f;f--)q(d[f]);return b}e instanceof CKEDITOR.dom.element&&(b=e.getAscendant(\"table\"),\n1==b.$.rows.length?b.remove():e.remove());return null}function r(e,d){for(var b=d?Infinity:0,c=0;c<e.length;c++){var a;a=e[c];for(var f=d,g=a.getParent().$.cells,h=0,i=0;i<g.length;i++){var j=g[i],h=h+(f?1:j.colSpan);if(j==a.$)break}a=h-1;if(d?a<b:a>b)b=a}return b}function k(e,d){for(var b=p(e),c=b[0].getAscendant(\"table\"),a=r(b,1),b=r(b),a=d?a:b,f=CKEDITOR.tools.buildTableMap(c),c=[],b=[],g=f.length,h=0;h<g;h++)c.push(f[h][a]),b.push(d?f[h][a-1]:f[h][a+1]);for(h=0;h<g;h++)c[h]&&(1<c[h].colSpan&&\nb[h]==c[h]?(a=c[h],a.colSpan+=1):(a=(new CKEDITOR.dom.element(c[h])).clone(),a.removeAttribute(\"colSpan\"),a.appendBogus(),a[d?\"insertBefore\":\"insertAfter\"].call(a,new CKEDITOR.dom.element(c[h])),a=a.$),h+=a.rowSpan-1)}function u(e,d){var b=e.getStartElement();if(b=b.getAscendant(\"td\",1)||b.getAscendant(\"th\",1)){var c=b.clone();c.appendBogus();d?c.insertBefore(b):c.insertAfter(b)}}function t(e){if(e instanceof CKEDITOR.dom.selection){var e=p(e),d=e[0]&&e[0].getAscendant(\"table\"),b;a:{var c=0;b=e.length-\n1;for(var a={},f,g;f=e[c++];)CKEDITOR.dom.element.setMarker(a,f,\"delete_cell\",!0);for(c=0;f=e[c++];)if((g=f.getPrevious())&&!g.getCustomData(\"delete_cell\")||(g=f.getNext())&&!g.getCustomData(\"delete_cell\")){CKEDITOR.dom.element.clearAllMarkers(a);b=g;break a}CKEDITOR.dom.element.clearAllMarkers(a);g=e[0].getParent();(g=g.getPrevious())?b=g.getLast():(g=e[b].getParent(),b=(g=g.getNext())?g.getChild(0):null)}for(g=e.length-1;0<=g;g--)t(e[g]);b?m(b,!0):d&&d.remove()}else e instanceof CKEDITOR.dom.element&&\n(d=e.getParent(),1==d.getChildCount()?d.remove():e.remove())}function m(e,d){var b=e.getDocument(),c=CKEDITOR.document;CKEDITOR.env.ie&&10==CKEDITOR.env.version&&(c.focus(),b.focus());b=new CKEDITOR.dom.range(b);if(!b[\"moveToElementEdit\"+(d?\"End\":\"Start\")](e))b.selectNodeContents(e),b.collapse(d?!1:!0);b.select(!0)}function v(e,d,b){e=e[d];if(\"undefined\"==typeof b)return e;for(d=0;e&&d<e.length;d++){if(b.is&&e[d]==b.$)return d;if(d==b)return new CKEDITOR.dom.element(e[d])}return b.is?-1:null}function s(e,\nd,b){var c=p(e),a;if((d?1!=c.length:2>c.length)||(a=e.getCommonAncestor())&&a.type==CKEDITOR.NODE_ELEMENT&&a.is(\"table\"))return!1;var f,e=c[0];a=e.getAscendant(\"table\");var g=CKEDITOR.tools.buildTableMap(a),h=g.length,i=g[0].length,j=e.getParent().$.rowIndex,l=v(g,j,e);if(d){var n;try{var m=parseInt(e.getAttribute(\"rowspan\"),10)||1;f=parseInt(e.getAttribute(\"colspan\"),10)||1;n=g[\"up\"==d?j-m:\"down\"==d?j+m:j][\"left\"==d?l-f:\"right\"==d?l+f:l]}catch(z){return!1}if(!n||e.$==n)return!1;c[\"up\"==d||\"left\"==\nd?\"unshift\":\"push\"](new CKEDITOR.dom.element(n))}for(var d=e.getDocument(),o=j,m=n=0,q=!b&&new CKEDITOR.dom.documentFragment(d),s=0,d=0;d<c.length;d++){f=c[d];var k=f.getParent(),t=f.getFirst(),r=f.$.colSpan,u=f.$.rowSpan,k=k.$.rowIndex,w=v(g,k,f),s=s+r*u,m=Math.max(m,w-l+r);n=Math.max(n,k-j+u);if(!b){r=f;(u=r.getBogus())&&u.remove();r.trim();if(f.getChildren().count()){if(k!=o&&t&&(!t.isBlockBoundary||!t.isBlockBoundary({br:1})))(o=q.getLast(CKEDITOR.dom.walker.whitespaces(!0)))&&(!o.is||!o.is(\"br\"))&&\nq.append(\"br\");f.moveChildren(q)}d?f.remove():f.setHtml(\"\")}o=k}if(b)return n*m==s;q.moveChildren(e);e.appendBogus();m>=i?e.removeAttribute(\"rowSpan\"):e.$.rowSpan=n;n>=h?e.removeAttribute(\"colSpan\"):e.$.colSpan=m;b=new CKEDITOR.dom.nodeList(a.$.rows);c=b.count();for(d=c-1;0<=d;d--)a=b.getItem(d),a.$.cells.length||(a.remove(),c++);return e}function w(e,d){var b=p(e);if(1<b.length)return!1;if(d)return!0;var b=b[0],c=b.getParent(),a=c.getAscendant(\"table\"),f=CKEDITOR.tools.buildTableMap(a),g=c.$.rowIndex,\nh=v(f,g,b),i=b.$.rowSpan,j;if(1<i){j=Math.ceil(i/2);for(var i=Math.floor(i/2),c=g+j,a=new CKEDITOR.dom.element(a.$.rows[c]),f=v(f,c),l,c=b.clone(),g=0;g<f.length;g++)if(l=f[g],l.parentNode==a.$&&g>h){c.insertBefore(new CKEDITOR.dom.element(l));break}else l=null;l||a.append(c)}else{i=j=1;a=c.clone();a.insertAfter(c);a.append(c=b.clone());l=v(f,g);for(h=0;h<l.length;h++)l[h].rowSpan++}c.appendBogus();b.$.rowSpan=j;c.$.rowSpan=i;1==j&&b.removeAttribute(\"rowSpan\");1==i&&c.removeAttribute(\"rowSpan\");return c}\nfunction x(e,d){var b=p(e);if(1<b.length)return!1;if(d)return!0;var b=b[0],c=b.getParent(),a=c.getAscendant(\"table\"),a=CKEDITOR.tools.buildTableMap(a),f=v(a,c.$.rowIndex,b),g=b.$.colSpan;if(1<g)c=Math.ceil(g/2),g=Math.floor(g/2);else{for(var g=c=1,h=[],i=0;i<a.length;i++){var j=a[i];h.push(j[f]);1<j[f].rowSpan&&(i+=j[f].rowSpan-1)}for(a=0;a<h.length;a++)h[a].colSpan++}a=b.clone();a.insertAfter(b);a.appendBogus();b.$.colSpan=c;a.$.colSpan=g;1==c&&b.removeAttribute(\"colSpan\");1==g&&a.removeAttribute(\"colSpan\");\nreturn a}var y=/^(?:td|th)$/;CKEDITOR.plugins.tabletools={requires:\"table,dialog,contextmenu\",init:function(e){function d(a){return CKEDITOR.tools.extend(a||{},{contextSensitive:1,refresh:function(a,b){this.setState(b.contains({td:1,th:1},1)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)}})}function b(a,b){var c=e.addCommand(a,b);e.addFeature(c)}var c=e.lang.table;b(\"cellProperties\",new CKEDITOR.dialogCommand(\"cellProperties\",d({allowedContent:\"td th{width,height,border-color,background-color,white-space,vertical-align,text-align}[colspan,rowspan]\",\nrequiredContent:\"table\"})));CKEDITOR.dialog.add(\"cellProperties\",this.path+\"dialogs/tableCell.js\");b(\"rowDelete\",d({requiredContent:\"table\",exec:function(a){a=a.getSelection();m(q(a))}}));b(\"rowInsertBefore\",d({requiredContent:\"table\",exec:function(a){a=a.getSelection();o(a,!0)}}));b(\"rowInsertAfter\",d({requiredContent:\"table\",exec:function(a){a=a.getSelection();o(a)}}));b(\"columnDelete\",d({requiredContent:\"table\",exec:function(a){for(var a=a.getSelection(),a=p(a),b=a[0],c=a[a.length-1],a=b.getAscendant(\"table\"),\nd=CKEDITOR.tools.buildTableMap(a),e,j,l=[],n=0,o=d.length;n<o;n++)for(var k=0,q=d[n].length;k<q;k++)d[n][k]==b.$&&(e=k),d[n][k]==c.$&&(j=k);for(n=e;n<=j;n++)for(k=0;k<d.length;k++)c=d[k],b=new CKEDITOR.dom.element(a.$.rows[k]),c=new CKEDITOR.dom.element(c[n]),c.$&&(1==c.$.colSpan?c.remove():c.$.colSpan-=1,k+=c.$.rowSpan-1,b.$.cells.length||l.push(b));j=a.$.rows[0]&&a.$.rows[0].cells;e=new CKEDITOR.dom.element(j[e]||(e?j[e-1]:a.$.parentNode));l.length==o&&a.remove();e&&m(e,!0)}}));b(\"columnInsertBefore\",\nd({requiredContent:\"table\",exec:function(a){a=a.getSelection();k(a,!0)}}));b(\"columnInsertAfter\",d({requiredContent:\"table\",exec:function(a){a=a.getSelection();k(a)}}));b(\"cellDelete\",d({requiredContent:\"table\",exec:function(a){a=a.getSelection();t(a)}}));b(\"cellMerge\",d({allowedContent:\"td[colspan,rowspan]\",requiredContent:\"td[colspan,rowspan]\",exec:function(a){m(s(a.getSelection()),!0)}}));b(\"cellMergeRight\",d({allowedContent:\"td[colspan]\",requiredContent:\"td[colspan]\",exec:function(a){m(s(a.getSelection(),\n\"right\"),!0)}}));b(\"cellMergeDown\",d({allowedContent:\"td[rowspan]\",requiredContent:\"td[rowspan]\",exec:function(a){m(s(a.getSelection(),\"down\"),!0)}}));b(\"cellVerticalSplit\",d({allowedContent:\"td[rowspan]\",requiredContent:\"td[rowspan]\",exec:function(a){m(w(a.getSelection()))}}));b(\"cellHorizontalSplit\",d({allowedContent:\"td[colspan]\",requiredContent:\"td[colspan]\",exec:function(a){m(x(a.getSelection()))}}));b(\"cellInsertBefore\",d({requiredContent:\"table\",exec:function(a){a=a.getSelection();u(a,!0)}}));\nb(\"cellInsertAfter\",d({requiredContent:\"table\",exec:function(a){a=a.getSelection();u(a)}}));e.addMenuItems&&e.addMenuItems({tablecell:{label:c.cell.menu,group:\"tablecell\",order:1,getItems:function(){var a=e.getSelection(),b=p(a);return{tablecell_insertBefore:CKEDITOR.TRISTATE_OFF,tablecell_insertAfter:CKEDITOR.TRISTATE_OFF,tablecell_delete:CKEDITOR.TRISTATE_OFF,tablecell_merge:s(a,null,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_merge_right:s(a,\"right\",!0)?CKEDITOR.TRISTATE_OFF:\nCKEDITOR.TRISTATE_DISABLED,tablecell_merge_down:s(a,\"down\",!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_split_vertical:w(a,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_split_horizontal:x(a,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_properties:0<b.length?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED}}},tablecell_insertBefore:{label:c.cell.insertBefore,group:\"tablecell\",command:\"cellInsertBefore\",order:5},tablecell_insertAfter:{label:c.cell.insertAfter,\ngroup:\"tablecell\",command:\"cellInsertAfter\",order:10},tablecell_delete:{label:c.cell.deleteCell,group:\"tablecell\",command:\"cellDelete\",order:15},tablecell_merge:{label:c.cell.merge,group:\"tablecell\",command:\"cellMerge\",order:16},tablecell_merge_right:{label:c.cell.mergeRight,group:\"tablecell\",command:\"cellMergeRight\",order:17},tablecell_merge_down:{label:c.cell.mergeDown,group:\"tablecell\",command:\"cellMergeDown\",order:18},tablecell_split_horizontal:{label:c.cell.splitHorizontal,group:\"tablecell\",\ncommand:\"cellHorizontalSplit\",order:19},tablecell_split_vertical:{label:c.cell.splitVertical,group:\"tablecell\",command:\"cellVerticalSplit\",order:20},tablecell_properties:{label:c.cell.title,group:\"tablecellproperties\",command:\"cellProperties\",order:21},tablerow:{label:c.row.menu,group:\"tablerow\",order:1,getItems:function(){return{tablerow_insertBefore:CKEDITOR.TRISTATE_OFF,tablerow_insertAfter:CKEDITOR.TRISTATE_OFF,tablerow_delete:CKEDITOR.TRISTATE_OFF}}},tablerow_insertBefore:{label:c.row.insertBefore,\ngroup:\"tablerow\",command:\"rowInsertBefore\",order:5},tablerow_insertAfter:{label:c.row.insertAfter,group:\"tablerow\",command:\"rowInsertAfter\",order:10},tablerow_delete:{label:c.row.deleteRow,group:\"tablerow\",command:\"rowDelete\",order:15},tablecolumn:{label:c.column.menu,group:\"tablecolumn\",order:1,getItems:function(){return{tablecolumn_insertBefore:CKEDITOR.TRISTATE_OFF,tablecolumn_insertAfter:CKEDITOR.TRISTATE_OFF,tablecolumn_delete:CKEDITOR.TRISTATE_OFF}}},tablecolumn_insertBefore:{label:c.column.insertBefore,\ngroup:\"tablecolumn\",command:\"columnInsertBefore\",order:5},tablecolumn_insertAfter:{label:c.column.insertAfter,group:\"tablecolumn\",command:\"columnInsertAfter\",order:10},tablecolumn_delete:{label:c.column.deleteColumn,group:\"tablecolumn\",command:\"columnDelete\",order:15}});e.contextMenu&&e.contextMenu.addListener(function(a,b,c){return(a=c.contains({td:1,th:1},1))&&!a.isReadOnly()?{tablecell:CKEDITOR.TRISTATE_OFF,tablerow:CKEDITOR.TRISTATE_OFF,tablecolumn:CKEDITOR.TRISTATE_OFF}:null})},getSelectedCells:p};\nCKEDITOR.plugins.add(\"tabletools\",CKEDITOR.plugins.tabletools)})();CKEDITOR.tools.buildTableMap=function(p){for(var p=p.$.rows,o=-1,q=[],r=0;r<p.length;r++){o++;!q[o]&&(q[o]=[]);for(var k=-1,u=0;u<p[r].cells.length;u++){var t=p[r].cells[u];for(k++;q[o][k];)k++;for(var m=isNaN(t.colSpan)?1:t.colSpan,t=isNaN(t.rowSpan)?1:t.rowSpan,v=0;v<t;v++){q[o+v]||(q[o+v]=[]);for(var s=0;s<m;s++)q[o+v][k+s]=p[r].cells[u]}k+=m-1}}return q};(function(){function g(a){this.editor=a;this.reset()}CKEDITOR.plugins.add(\"undo\",{init:function(a){function c(a){b.enabled&&!1!==a.data.command.canUndo&&b.save()}function d(){b.enabled=a.readOnly?!1:\"wysiwyg\"==a.mode;b.onChange()}var b=a.undoManager=new g(a),e=a.addCommand(\"undo\",{exec:function(){b.undo()&&(a.selectionChange(),this.fire(\"afterUndo\"))},startDisabled:!0,canUndo:!1}),f=a.addCommand(\"redo\",{exec:function(){b.redo()&&(a.selectionChange(),this.fire(\"afterRedo\"))},startDisabled:!0,canUndo:!1}),\nh=[CKEDITOR.CTRL+90,CKEDITOR.CTRL+89,CKEDITOR.CTRL+CKEDITOR.SHIFT+90];a.setKeystroke([[h[0],\"undo\"],[h[1],\"redo\"],[h[2],\"redo\"]]);a.on(\"contentDom\",function(){var b=a.editable();b.attachListener(b,\"keydown\",function(a){-1<CKEDITOR.tools.indexOf(h,a.data.getKeystroke())&&a.data.preventDefault()})});b.onChange=function(){e.setState(b.undoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);f.setState(b.redoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)};a.on(\"beforeCommandExec\",c);a.on(\"afterCommandExec\",\nc);a.on(\"saveSnapshot\",function(a){b.save(a.data&&a.data.contentOnly)});a.on(\"contentDom\",function(){a.editable().on(\"keydown\",function(a){a=a.data.getKey();(8==a||46==a)&&b.type(a,0)});a.editable().on(\"keypress\",function(a){b.type(a.data.getKey(),1)})});a.on(\"beforeModeUnload\",function(){\"wysiwyg\"==a.mode&&b.save(!0)});a.on(\"mode\",d);a.on(\"readOnly\",d);a.ui.addButton&&(a.ui.addButton(\"Undo\",{label:a.lang.undo.undo,command:\"undo\",toolbar:\"undo,10\"}),a.ui.addButton(\"Redo\",{label:a.lang.undo.redo,command:\"redo\",\ntoolbar:\"undo,20\"}));a.resetUndo=function(){b.reset();a.fire(\"saveSnapshot\")};a.on(\"updateSnapshot\",function(){b.currentImage&&b.update()});a.on(\"lockSnapshot\",function(a){a=a.data;b.lock(a&&a.dontUpdate,a&&a.forceUpdate)});a.on(\"unlockSnapshot\",b.unlock,b)}});CKEDITOR.plugins.undo={};var f=CKEDITOR.plugins.undo.Image=function(a,c){this.editor=a;a.fire(\"beforeUndoImage\");var d=a.getSnapshot();CKEDITOR.env.ie&&d&&(d=d.replace(/\\s+data-cke-expando=\".*?\"/g,\"\"));this.contents=d;c||(this.bookmarks=(d=\nd&&a.getSelection())&&d.createBookmarks2(!0));a.fire(\"afterUndoImage\")},i=/\\b(?:href|src|name)=\"[^\"]*?\"/gi;f.prototype={equalsContent:function(a){var c=this.contents,a=a.contents;if(CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks))c=c.replace(i,\"\"),a=a.replace(i,\"\");return c!=a?!1:!0},equalsSelection:function(a){var c=this.bookmarks,a=a.bookmarks;if(c||a){if(!c||!a||c.length!=a.length)return!1;for(var d=0;d<c.length;d++){var b=c[d],e=a[d];if(b.startOffset!=e.startOffset||b.endOffset!=\ne.endOffset||!CKEDITOR.tools.arrayCompare(b.start,e.start)||!CKEDITOR.tools.arrayCompare(b.end,e.end))return!1}}return!0}};g.prototype={type:function(a,c){var d=!c&&a!=this.lastKeystroke,b=this.editor;if(!this.typing||c&&!this.wasCharacter||d){var e=new f(b),g=this.snapshots.length;CKEDITOR.tools.setTimeout(function(){var a=b.getSnapshot();CKEDITOR.env.ie&&(a=a.replace(/\\s+data-cke-expando=\".*?\"/g,\"\"));e.contents!=a&&g==this.snapshots.length&&(this.typing=!0,this.save(!1,e,!1)||this.snapshots.splice(this.index+\n1,this.snapshots.length-this.index-1),this.hasUndo=!0,this.hasRedo=!1,this.modifiersCount=this.typesCount=1,this.onChange())},0,this)}this.lastKeystroke=a;(this.wasCharacter=c)?(this.modifiersCount=0,this.typesCount++,25<this.typesCount?(this.save(!1,null,!1),this.typesCount=1):setTimeout(function(){b.fire(\"change\")},0)):(this.typesCount=0,this.modifiersCount++,25<this.modifiersCount?(this.save(!1,null,!1),this.modifiersCount=1):setTimeout(function(){b.fire(\"change\")},0))},reset:function(){this.lastKeystroke=\n0;this.snapshots=[];this.index=-1;this.limit=this.editor.config.undoStackSize||20;this.currentImage=null;this.hasRedo=this.hasUndo=!1;this.locked=null;this.resetType()},resetType:function(){this.typing=!1;delete this.lastKeystroke;this.modifiersCount=this.typesCount=0},fireChange:function(){this.hasUndo=!!this.getNextImage(!0);this.hasRedo=!!this.getNextImage(!1);this.resetType();this.onChange()},save:function(a,c,d){var b=this.editor;if(this.locked||\"ready\"!=b.status||\"wysiwyg\"!=b.mode)return!1;\nvar e=b.editable();if(!e||\"ready\"!=e.status)return!1;e=this.snapshots;c||(c=new f(b));if(!1===c.contents)return!1;if(this.currentImage)if(c.equalsContent(this.currentImage)){if(a||c.equalsSelection(this.currentImage))return!1}else b.fire(\"change\");e.splice(this.index+1,e.length-this.index-1);e.length==this.limit&&e.shift();this.index=e.push(c)-1;this.currentImage=c;!1!==d&&this.fireChange();return!0},restoreImage:function(a){var c=this.editor,d;a.bookmarks&&(c.focus(),d=c.getSelection());this.locked=\n1;this.editor.loadSnapshot(a.contents);a.bookmarks?d.selectBookmarks(a.bookmarks):CKEDITOR.env.ie&&(d=this.editor.document.getBody().$.createTextRange(),d.collapse(!0),d.select());this.locked=0;this.index=a.index;this.currentImage=this.snapshots[this.index];this.update();this.fireChange();c.fire(\"change\")},getNextImage:function(a){var c=this.snapshots,d=this.currentImage,b;if(d)if(a)for(b=this.index-1;0<=b;b--){if(a=c[b],!d.equalsContent(a))return a.index=b,a}else for(b=this.index+1;b<c.length;b++)if(a=\nc[b],!d.equalsContent(a))return a.index=b,a;return null},redoable:function(){return this.enabled&&this.hasRedo},undoable:function(){return this.enabled&&this.hasUndo},undo:function(){if(this.undoable()){this.save(!0);var a=this.getNextImage(!0);if(a)return this.restoreImage(a),!0}return!1},redo:function(){if(this.redoable()&&(this.save(!0),this.redoable())){var a=this.getNextImage(!1);if(a)return this.restoreImage(a),!0}return!1},update:function(a){if(!this.locked){a||(a=new f(this.editor));for(var c=\nthis.index,d=this.snapshots;0<c&&this.currentImage.equalsContent(d[c-1]);)c-=1;d.splice(c,this.index-c+1,a);this.index=c;this.currentImage=a}},lock:function(a,c){if(this.locked)this.locked.level++;else if(a)this.locked={level:1};else{var d=null;if(c)d=!0;else{var b=new f(this.editor,!0);this.currentImage&&this.currentImage.equalsContent(b)&&(d=b)}this.locked={update:d,level:1}}},unlock:function(){if(this.locked&&!--this.locked.level){var a=this.locked.update;this.locked=null;if(!0===a)this.update();\nelse if(a){var c=new f(this.editor,!0);a.equalsContent(c)||this.update()}}}}})();CKEDITOR.config.wsc_removeGlobalVariable=!0;\nCKEDITOR.plugins.add(\"wsc\",{requires:\"dialog\",parseApi:function(a){a.config.wsc_onFinish=\"function\"===typeof a.config.wsc_onFinish?a.config.wsc_onFinish:function(){};a.config.wsc_onClose=\"function\"===typeof a.config.wsc_onClose?a.config.wsc_onClose:function(){}},parseConfig:function(a){a.config.wsc_customerId=a.config.wsc_customerId||CKEDITOR.config.wsc_customerId||\"1:ua3xw1-2XyGJ3-GWruD3-6OFNT1-oXcuB1-nR6Bp4-hgQHc-EcYng3-sdRXG3-NOfFk\";a.config.wsc_customDictionaryIds=a.config.wsc_customDictionaryIds||\nCKEDITOR.config.wsc_customDictionaryIds||\"\";a.config.wsc_userDictionaryName=a.config.wsc_userDictionaryName||CKEDITOR.config.wsc_userDictionaryName||\"\";a.config.wsc_customLoaderScript=a.config.wsc_customLoaderScript||CKEDITOR.config.wsc_customLoaderScript;CKEDITOR.config.wsc_cmd=a.config.wsc_cmd||CKEDITOR.config.wsc_cmd||\"spell\";CKEDITOR.config.wsc_version=CKEDITOR.version+\" | %Rev%\"},init:function(a){var b=CKEDITOR.env;this.parseConfig(a);this.parseApi(a);a.addCommand(\"checkspell\",new CKEDITOR.dialogCommand(\"checkspell\")).modes=\n{wysiwyg:!CKEDITOR.env.opera&&!CKEDITOR.env.air&&document.domain==window.location.hostname&&!(b.ie&&(8>b.version||b.quirks))};\"undefined\"==typeof a.plugins.scayt&&a.ui.addButton&&a.ui.addButton(\"SpellChecker\",{label:a.lang.wsc.toolbar,click:function(a){var b=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.container.getText():a.document.getBody().getText();(b=b.replace(/\\s/g,\"\"))?a.execCommand(\"checkspell\"):alert(\"Nothing to check!\")},toolbar:\"spellchecker,10\"});CKEDITOR.dialog.add(\"checkspell\",this.path+\n(CKEDITOR.env.ie&&7>=CKEDITOR.env.version?\"dialogs/wsc_ie.js\":window.postMessage?\"dialogs/wsc.js\":\"dialogs/wsc_ie.js\"))}});CKEDITOR.config.plugins='dialogui,dialog,about,a11yhelp,dialogadvtab,basicstyles,bidi,blockquote,clipboard,button,panelbutton,panel,floatpanel,colorbutton,colordialog,templates,menu,contextmenu,div,resize,toolbar,elementspath,enterkey,entities,popup,filebrowser,find,fakeobjects,flash,floatingspace,listblock,richcombo,font,forms,format,horizontalrule,htmlwriter,iframe,wysiwygarea,image,indent,indentblock,indentlist,smiley,justify,menubutton,language,link,list,liststyle,magicline,maximize,newpage,pagebreak,pastetext,pastefromword,preview,print,removeformat,save,selectall,showblocks,showborders,sourcearea,specialchar,scayt,stylescombo,tab,table,tabletools,undo,wsc';CKEDITOR.config.skin='moono';(function() {var setIcons = function(icons, strip) {var path = CKEDITOR.getUrl( 'plugins/' + strip );icons = icons.split( ',' );for ( var i = 0; i < icons.length; i++ )CKEDITOR.skin.icons[ icons[ i ] ] = { path: path, offset: -icons[ ++i ], bgsize : icons[ ++i ] };};if (CKEDITOR.env.hidpi) setIcons('about,0,,bold,24,,italic,48,,strike,72,,subscript,96,,superscript,120,,underline,144,,bidiltr,168,,bidirtl,192,,blockquote,216,,copy-rtl,240,,copy,264,,cut-rtl,288,,cut,312,,paste-rtl,336,,paste,360,,bgcolor,384,,textcolor,408,,templates-rtl,432,,templates,456,,creatediv,480,,find-rtl,504,,find,528,,replace,552,,flash,576,,button,600,,checkbox,624,,form,648,,hiddenfield,672,,imagebutton,696,,radio,720,,select-rtl,744,,select,768,,textarea-rtl,792,,textarea,816,,textfield-rtl,840,,textfield,864,,horizontalrule,888,,iframe,912,,image,936,,indent-rtl,960,,indent,984,,outdent-rtl,1008,,outdent,1032,,smiley,1056,,justifyblock,1080,,justifycenter,1104,,justifyleft,1128,,justifyright,1152,,language,1176,,anchor-rtl,1200,,anchor,1224,,link,1248,,unlink,1272,,bulletedlist-rtl,1296,,bulletedlist,1320,,numberedlist-rtl,1344,,numberedlist,1368,,maximize,1392,,newpage-rtl,1416,,newpage,1440,,pagebreak-rtl,1464,,pagebreak,1488,,pastetext-rtl,1512,,pastetext,1536,,pastefromword-rtl,1560,,pastefromword,1584,,preview-rtl,1608,,preview,1632,,print,1656,,removeformat,1680,,save,1704,,selectall,1728,,showblocks-rtl,1752,,showblocks,1776,,source-rtl,1800,,source,1824,,specialchar,1848,,scayt,1872,,table,1896,,redo-rtl,1920,,redo,1944,,undo-rtl,1968,,undo,1992,,spellchecker,2016,','icons_hidpi.png');else setIcons('about,0,auto,bold,24,auto,italic,48,auto,strike,72,auto,subscript,96,auto,superscript,120,auto,underline,144,auto,bidiltr,168,auto,bidirtl,192,auto,blockquote,216,auto,copy-rtl,240,auto,copy,264,auto,cut-rtl,288,auto,cut,312,auto,paste-rtl,336,auto,paste,360,auto,bgcolor,384,auto,textcolor,408,auto,templates-rtl,432,auto,templates,456,auto,creatediv,480,auto,find-rtl,504,auto,find,528,auto,replace,552,auto,flash,576,auto,button,600,auto,checkbox,624,auto,form,648,auto,hiddenfield,672,auto,imagebutton,696,auto,radio,720,auto,select-rtl,744,auto,select,768,auto,textarea-rtl,792,auto,textarea,816,auto,textfield-rtl,840,auto,textfield,864,auto,horizontalrule,888,auto,iframe,912,auto,image,936,auto,indent-rtl,960,auto,indent,984,auto,outdent-rtl,1008,auto,outdent,1032,auto,smiley,1056,auto,justifyblock,1080,auto,justifycenter,1104,auto,justifyleft,1128,auto,justifyright,1152,auto,language,1176,auto,anchor-rtl,1200,auto,anchor,1224,auto,link,1248,auto,unlink,1272,auto,bulletedlist-rtl,1296,auto,bulletedlist,1320,auto,numberedlist-rtl,1344,auto,numberedlist,1368,auto,maximize,1392,auto,newpage-rtl,1416,auto,newpage,1440,auto,pagebreak-rtl,1464,auto,pagebreak,1488,auto,pastetext-rtl,1512,auto,pastetext,1536,auto,pastefromword-rtl,1560,auto,pastefromword,1584,auto,preview-rtl,1608,auto,preview,1632,auto,print,1656,auto,removeformat,1680,auto,save,1704,auto,selectall,1728,auto,showblocks-rtl,1752,auto,showblocks,1776,auto,source-rtl,1800,auto,source,1824,auto,specialchar,1848,auto,scayt,1872,auto,table,1896,auto,redo-rtl,1920,auto,redo,1944,auto,undo-rtl,1968,auto,undo,1992,auto,spellchecker,2016,auto','icons.png');})();CKEDITOR.lang.languages={\"en\":1};}());"
  },
  {
    "path": "admin/js/plugins/ckeditor/config.js",
    "content": "/**\n * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.\n * For licensing, see LICENSE.html or http://ckeditor.com/license\n */\n\nCKEDITOR.editorConfig = function( config ) {\n\t// Define changes to default configuration here. For example:\n\t// config.language = 'fr';\n\t// config.uiColor = '#AADC6E';\n};\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/contents.css",
    "content": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n*/\r\n\r\nbody\r\n{\r\n\t/* Font */\r\n\tfont-family: sans-serif, Arial, Verdana, \"Trebuchet MS\";\r\n\tfont-size: 12px;\r\n\r\n\t/* Text color */\r\n\tcolor: #333;\r\n\r\n\t/* Remove the background color to make it transparent */\r\n\tbackground-color: #fff;\r\n\r\n\tmargin: 20px;\r\n}\r\n\r\n.cke_editable\r\n{\r\n\tfont-size: 13px;\r\n\tline-height: 1.6;\r\n}\r\n\r\nblockquote\r\n{\r\n\tfont-style: italic;\r\n\tfont-family: Georgia, Times, \"Times New Roman\", serif;\r\n\tpadding: 2px 0;\r\n\tborder-style: solid;\r\n\tborder-color: #ccc;\r\n\tborder-width: 0;\r\n}\r\n\r\n.cke_contents_ltr blockquote\r\n{\r\n\tpadding-left: 20px;\r\n\tpadding-right: 8px;\r\n\tborder-left-width: 5px;\r\n}\r\n\r\n.cke_contents_rtl blockquote\r\n{\r\n\tpadding-left: 8px;\r\n\tpadding-right: 20px;\r\n\tborder-right-width: 5px;\r\n}\r\n\r\na\r\n{\r\n\tcolor: #0782C1;\r\n}\r\n\r\nol,ul,dl\r\n{\r\n\t/* IE7: reset rtl list margin. (#7334) */\r\n\t*margin-right: 0px;\r\n\t/* preserved spaces for list items with text direction other than the list. (#6249,#8049)*/\r\n\tpadding: 0 40px;\r\n}\r\n\r\nh1,h2,h3,h4,h5,h6\r\n{\r\n\tfont-weight: normal;\r\n\tline-height: 1.2;\r\n}\r\n\r\nhr\r\n{\r\n\tborder: 0px;\r\n\tborder-top: 1px solid #ccc;\r\n}\r\n\r\nimg.right\r\n{\r\n\tborder: 1px solid #ccc;\r\n\tfloat: right;\r\n\tmargin-left: 15px;\r\n\tpadding: 5px;\r\n}\r\n\r\nimg.left\r\n{\r\n\tborder: 1px solid #ccc;\r\n\tfloat: left;\r\n\tmargin-right: 15px;\r\n\tpadding: 5px;\r\n}\r\n\r\npre\r\n{\r\n\twhite-space: pre-wrap; /* CSS 2.1 */\r\n\tword-wrap: break-word; /* IE7 */\r\n\t-moz-tab-size: 4;\r\n\t-o-tab-size: 4;\r\n\t-webkit-tab-size: 4;\r\n\ttab-size: 4;\r\n}\r\n\r\n.marker\r\n{\r\n\tbackground-color: Yellow;\r\n}\r\n\r\nspan[lang]\r\n{\r\n\tfont-style: italic;\r\n}\r\n\r\nfigure\r\n{\r\n\ttext-align: center;\r\n\tborder: solid 1px #ccc;\r\n\tborder-radius: 2px;\r\n\tbackground: rgba(0,0,0,0.05);\r\n\tpadding: 10px;\r\n\tmargin: 10px 20px;\r\n\tdisplay: inline-block;\r\n}\r\n\r\nfigure > figcaption\r\n{\r\n\ttext-align: center;\r\n\tdisplay: block; /* For IE8 */\r\n}\r\n\r\na > img {\r\n\tpadding: 1px;\r\n\tmargin: 1px;\r\n\tborder: none;\r\n\toutline: 1px solid #0782C1;\r\n}\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/index.php",
    "content": ""
  },
  {
    "path": "admin/js/plugins/ckeditor/lang/en.js",
    "content": "﻿/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.html or http://ckeditor.com/license\r\n*/\nCKEDITOR.lang['en']={\"editor\":\"Rich Text Editor\",\"editorPanel\":\"Rich Text Editor panel\",\"common\":{\"editorHelp\":\"Press ALT 0 for help\",\"browseServer\":\"Browse Server\",\"url\":\"URL\",\"protocol\":\"Protocol\",\"upload\":\"Upload\",\"uploadSubmit\":\"Send it to the Server\",\"image\":\"Image\",\"flash\":\"Flash\",\"form\":\"Form\",\"checkbox\":\"Checkbox\",\"radio\":\"Radio Button\",\"textField\":\"Text Field\",\"textarea\":\"Textarea\",\"hiddenField\":\"Hidden Field\",\"button\":\"Button\",\"select\":\"Selection Field\",\"imageButton\":\"Image Button\",\"notSet\":\"<not set>\",\"id\":\"Id\",\"name\":\"Name\",\"langDir\":\"Language Direction\",\"langDirLtr\":\"Left to Right (LTR)\",\"langDirRtl\":\"Right to Left (RTL)\",\"langCode\":\"Language Code\",\"longDescr\":\"Long Description URL\",\"cssClass\":\"Stylesheet Classes\",\"advisoryTitle\":\"Advisory Title\",\"cssStyle\":\"Style\",\"ok\":\"OK\",\"cancel\":\"Cancel\",\"close\":\"Close\",\"preview\":\"Preview\",\"resize\":\"Resize\",\"generalTab\":\"General\",\"advancedTab\":\"Advanced\",\"validateNumberFailed\":\"This value is not a number.\",\"confirmNewPage\":\"Any unsaved changes to this content will be lost. Are you sure you want to load new page?\",\"confirmCancel\":\"You have changed some options. Are you sure you want to close the dialog window?\",\"options\":\"Options\",\"target\":\"Target\",\"targetNew\":\"New Window (_blank)\",\"targetTop\":\"Topmost Window (_top)\",\"targetSelf\":\"Same Window (_self)\",\"targetParent\":\"Parent Window (_parent)\",\"langDirLTR\":\"Left to Right (LTR)\",\"langDirRTL\":\"Right to Left (RTL)\",\"styles\":\"Style\",\"cssClasses\":\"Stylesheet Classes\",\"width\":\"Width\",\"height\":\"Height\",\"align\":\"Alignment\",\"alignLeft\":\"Left\",\"alignRight\":\"Right\",\"alignCenter\":\"Center\",\"alignTop\":\"Top\",\"alignMiddle\":\"Middle\",\"alignBottom\":\"Bottom\",\"alignNone\":\"None\",\"invalidValue\":\"Invalid value.\",\"invalidHeight\":\"Height must be a number.\",\"invalidWidth\":\"Width must be a number.\",\"invalidCssLength\":\"Value specified for the \\\"%1\\\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).\",\"invalidHtmlLength\":\"Value specified for the \\\"%1\\\" field must be a positive number with or without a valid HTML measurement unit (px or %).\",\"invalidInlineStyle\":\"Value specified for the inline style must consist of one or more tuples with the format of \\\"name : value\\\", separated by semi-colons.\",\"cssLengthTooltip\":\"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).\",\"unavailable\":\"%1<span class=\\\"cke_accessibility\\\">, unavailable</span>\"},\"about\":{\"copy\":\"Copyright &copy; $1. All rights reserved.\",\"dlgTitle\":\"About CKEditor\",\"help\":\"Check $1 for help.\",\"moreInfo\":\"For licensing information please visit our web site:\",\"title\":\"About CKEditor\",\"userGuide\":\"CKEditor User's Guide\"},\"basicstyles\":{\"bold\":\"Bold\",\"italic\":\"Italic\",\"strike\":\"Strike Through\",\"subscript\":\"Subscript\",\"superscript\":\"Superscript\",\"underline\":\"Underline\"},\"bidi\":{\"ltr\":\"Text direction from left to right\",\"rtl\":\"Text direction from right to left\"},\"blockquote\":{\"toolbar\":\"Block Quote\"},\"clipboard\":{\"copy\":\"Copy\",\"copyError\":\"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).\",\"cut\":\"Cut\",\"cutError\":\"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).\",\"paste\":\"Paste\",\"pasteArea\":\"Paste Area\",\"pasteMsg\":\"Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK\",\"securityMsg\":\"Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.\",\"title\":\"Paste\"},\"button\":{\"selectedLabel\":\"%1 (Selected)\"},\"colorbutton\":{\"auto\":\"Automatic\",\"bgColorTitle\":\"Background Color\",\"colors\":{\"000\":\"Black\",\"800000\":\"Maroon\",\"8B4513\":\"Saddle Brown\",\"2F4F4F\":\"Dark Slate Gray\",\"008080\":\"Teal\",\"000080\":\"Navy\",\"4B0082\":\"Indigo\",\"696969\":\"Dark Gray\",\"B22222\":\"Fire Brick\",\"A52A2A\":\"Brown\",\"DAA520\":\"Golden Rod\",\"006400\":\"Dark Green\",\"40E0D0\":\"Turquoise\",\"0000CD\":\"Medium Blue\",\"800080\":\"Purple\",\"808080\":\"Gray\",\"F00\":\"Red\",\"FF8C00\":\"Dark Orange\",\"FFD700\":\"Gold\",\"008000\":\"Green\",\"0FF\":\"Cyan\",\"00F\":\"Blue\",\"EE82EE\":\"Violet\",\"A9A9A9\":\"Dim Gray\",\"FFA07A\":\"Light Salmon\",\"FFA500\":\"Orange\",\"FFFF00\":\"Yellow\",\"00FF00\":\"Lime\",\"AFEEEE\":\"Pale Turquoise\",\"ADD8E6\":\"Light Blue\",\"DDA0DD\":\"Plum\",\"D3D3D3\":\"Light Grey\",\"FFF0F5\":\"Lavender Blush\",\"FAEBD7\":\"Antique White\",\"FFFFE0\":\"Light Yellow\",\"F0FFF0\":\"Honeydew\",\"F0FFFF\":\"Azure\",\"F0F8FF\":\"Alice Blue\",\"E6E6FA\":\"Lavender\",\"FFF\":\"White\"},\"more\":\"More Colors...\",\"panelTitle\":\"Colors\",\"textColorTitle\":\"Text Color\"},\"colordialog\":{\"clear\":\"Clear\",\"highlight\":\"Highlight\",\"options\":\"Color Options\",\"selected\":\"Selected Color\",\"title\":\"Select color\"},\"templates\":{\"button\":\"Templates\",\"emptyListMsg\":\"(No templates defined)\",\"insertOption\":\"Replace actual contents\",\"options\":\"Template Options\",\"selectPromptMsg\":\"Please select the template to open in the editor\",\"title\":\"Content Templates\"},\"contextmenu\":{\"options\":\"Context Menu Options\"},\"div\":{\"IdInputLabel\":\"Id\",\"advisoryTitleInputLabel\":\"Advisory Title\",\"cssClassInputLabel\":\"Stylesheet Classes\",\"edit\":\"Edit Div\",\"inlineStyleInputLabel\":\"Inline Style\",\"langDirLTRLabel\":\"Left to Right (LTR)\",\"langDirLabel\":\"Language Direction\",\"langDirRTLLabel\":\"Right to Left (RTL)\",\"languageCodeInputLabel\":\" Language Code\",\"remove\":\"Remove Div\",\"styleSelectLabel\":\"Style\",\"title\":\"Create Div Container\",\"toolbar\":\"Create Div Container\"},\"toolbar\":{\"toolbarCollapse\":\"Collapse Toolbar\",\"toolbarExpand\":\"Expand Toolbar\",\"toolbarGroups\":{\"document\":\"Document\",\"clipboard\":\"Clipboard/Undo\",\"editing\":\"Editing\",\"forms\":\"Forms\",\"basicstyles\":\"Basic Styles\",\"paragraph\":\"Paragraph\",\"links\":\"Links\",\"insert\":\"Insert\",\"styles\":\"Styles\",\"colors\":\"Colors\",\"tools\":\"Tools\"},\"toolbars\":\"Editor toolbars\"},\"elementspath\":{\"eleLabel\":\"Elements path\",\"eleTitle\":\"%1 element\"},\"find\":{\"find\":\"Find\",\"findOptions\":\"Find Options\",\"findWhat\":\"Find what:\",\"matchCase\":\"Match case\",\"matchCyclic\":\"Match cyclic\",\"matchWord\":\"Match whole word\",\"notFoundMsg\":\"The specified text was not found.\",\"replace\":\"Replace\",\"replaceAll\":\"Replace All\",\"replaceSuccessMsg\":\"%1 occurrence(s) replaced.\",\"replaceWith\":\"Replace with:\",\"title\":\"Find and Replace\"},\"fakeobjects\":{\"anchor\":\"Anchor\",\"flash\":\"Flash Animation\",\"hiddenfield\":\"Hidden Field\",\"iframe\":\"IFrame\",\"unknown\":\"Unknown Object\"},\"flash\":{\"access\":\"Script Access\",\"accessAlways\":\"Always\",\"accessNever\":\"Never\",\"accessSameDomain\":\"Same domain\",\"alignAbsBottom\":\"Abs Bottom\",\"alignAbsMiddle\":\"Abs Middle\",\"alignBaseline\":\"Baseline\",\"alignTextTop\":\"Text Top\",\"bgcolor\":\"Background color\",\"chkFull\":\"Allow Fullscreen\",\"chkLoop\":\"Loop\",\"chkMenu\":\"Enable Flash Menu\",\"chkPlay\":\"Auto Play\",\"flashvars\":\"Variables for Flash\",\"hSpace\":\"HSpace\",\"properties\":\"Flash Properties\",\"propertiesTab\":\"Properties\",\"quality\":\"Quality\",\"qualityAutoHigh\":\"Auto High\",\"qualityAutoLow\":\"Auto Low\",\"qualityBest\":\"Best\",\"qualityHigh\":\"High\",\"qualityLow\":\"Low\",\"qualityMedium\":\"Medium\",\"scale\":\"Scale\",\"scaleAll\":\"Show all\",\"scaleFit\":\"Exact Fit\",\"scaleNoBorder\":\"No Border\",\"title\":\"Flash Properties\",\"vSpace\":\"VSpace\",\"validateHSpace\":\"HSpace must be a number.\",\"validateSrc\":\"URL must not be empty.\",\"validateVSpace\":\"VSpace must be a number.\",\"windowMode\":\"Window mode\",\"windowModeOpaque\":\"Opaque\",\"windowModeTransparent\":\"Transparent\",\"windowModeWindow\":\"Window\"},\"font\":{\"fontSize\":{\"label\":\"Size\",\"voiceLabel\":\"Font Size\",\"panelTitle\":\"Font Size\"},\"label\":\"Font\",\"panelTitle\":\"Font Name\",\"voiceLabel\":\"Font\"},\"forms\":{\"button\":{\"title\":\"Button Properties\",\"text\":\"Text (Value)\",\"type\":\"Type\",\"typeBtn\":\"Button\",\"typeSbm\":\"Submit\",\"typeRst\":\"Reset\"},\"checkboxAndRadio\":{\"checkboxTitle\":\"Checkbox Properties\",\"radioTitle\":\"Radio Button Properties\",\"value\":\"Value\",\"selected\":\"Selected\"},\"form\":{\"title\":\"Form Properties\",\"menu\":\"Form Properties\",\"action\":\"Action\",\"method\":\"Method\",\"encoding\":\"Encoding\"},\"hidden\":{\"title\":\"Hidden Field Properties\",\"name\":\"Name\",\"value\":\"Value\"},\"select\":{\"title\":\"Selection Field Properties\",\"selectInfo\":\"Select Info\",\"opAvail\":\"Available Options\",\"value\":\"Value\",\"size\":\"Size\",\"lines\":\"lines\",\"chkMulti\":\"Allow multiple selections\",\"opText\":\"Text\",\"opValue\":\"Value\",\"btnAdd\":\"Add\",\"btnModify\":\"Modify\",\"btnUp\":\"Up\",\"btnDown\":\"Down\",\"btnSetValue\":\"Set as selected value\",\"btnDelete\":\"Delete\"},\"textarea\":{\"title\":\"Textarea Properties\",\"cols\":\"Columns\",\"rows\":\"Rows\"},\"textfield\":{\"title\":\"Text Field Properties\",\"name\":\"Name\",\"value\":\"Value\",\"charWidth\":\"Character Width\",\"maxChars\":\"Maximum Characters\",\"type\":\"Type\",\"typeText\":\"Text\",\"typePass\":\"Password\",\"typeEmail\":\"Email\",\"typeSearch\":\"Search\",\"typeTel\":\"Telephone Number\",\"typeUrl\":\"URL\"}},\"format\":{\"label\":\"Format\",\"panelTitle\":\"Paragraph Format\",\"tag_address\":\"Address\",\"tag_div\":\"Normal (DIV)\",\"tag_h1\":\"Heading 1\",\"tag_h2\":\"Heading 2\",\"tag_h3\":\"Heading 3\",\"tag_h4\":\"Heading 4\",\"tag_h5\":\"Heading 5\",\"tag_h6\":\"Heading 6\",\"tag_p\":\"Normal\",\"tag_pre\":\"Formatted\"},\"horizontalrule\":{\"toolbar\":\"Insert Horizontal Line\"},\"iframe\":{\"border\":\"Show frame border\",\"noUrl\":\"Please type the iframe URL\",\"scrolling\":\"Enable scrollbars\",\"title\":\"IFrame Properties\",\"toolbar\":\"IFrame\"},\"image\":{\"alertUrl\":\"Please type the image URL\",\"alt\":\"Alternative Text\",\"border\":\"Border\",\"btnUpload\":\"Send it to the Server\",\"button2Img\":\"Do you want to transform the selected image button on a simple image?\",\"hSpace\":\"HSpace\",\"img2Button\":\"Do you want to transform the selected image on a image button?\",\"infoTab\":\"Image Info\",\"linkTab\":\"Link\",\"lockRatio\":\"Lock Ratio\",\"menu\":\"Image Properties\",\"resetSize\":\"Reset Size\",\"title\":\"Image Properties\",\"titleButton\":\"Image Button Properties\",\"upload\":\"Upload\",\"urlMissing\":\"Image source URL is missing.\",\"vSpace\":\"VSpace\",\"validateBorder\":\"Border must be a whole number.\",\"validateHSpace\":\"HSpace must be a whole number.\",\"validateVSpace\":\"VSpace must be a whole number.\"},\"indent\":{\"indent\":\"Increase Indent\",\"outdent\":\"Decrease Indent\"},\"smiley\":{\"options\":\"Smiley Options\",\"title\":\"Insert a Smiley\",\"toolbar\":\"Smiley\"},\"justify\":{\"block\":\"Justify\",\"center\":\"Center\",\"left\":\"Align Left\",\"right\":\"Align Right\"},\"language\":{\"button\":\"Set language\",\"remove\":\"Remove language\"},\"link\":{\"acccessKey\":\"Access Key\",\"advanced\":\"Advanced\",\"advisoryContentType\":\"Advisory Content Type\",\"advisoryTitle\":\"Advisory Title\",\"anchor\":{\"toolbar\":\"Anchor\",\"menu\":\"Edit Anchor\",\"title\":\"Anchor Properties\",\"name\":\"Anchor Name\",\"errorName\":\"Please type the anchor name\",\"remove\":\"Remove Anchor\"},\"anchorId\":\"By Element Id\",\"anchorName\":\"By Anchor Name\",\"charset\":\"Linked Resource Charset\",\"cssClasses\":\"Stylesheet Classes\",\"emailAddress\":\"E-Mail Address\",\"emailBody\":\"Message Body\",\"emailSubject\":\"Message Subject\",\"id\":\"Id\",\"info\":\"Link Info\",\"langCode\":\"Language Code\",\"langDir\":\"Language Direction\",\"langDirLTR\":\"Left to Right (LTR)\",\"langDirRTL\":\"Right to Left (RTL)\",\"menu\":\"Edit Link\",\"name\":\"Name\",\"noAnchors\":\"(No anchors available in the document)\",\"noEmail\":\"Please type the e-mail address\",\"noUrl\":\"Please type the link URL\",\"other\":\"<other>\",\"popupDependent\":\"Dependent (Netscape)\",\"popupFeatures\":\"Popup Window Features\",\"popupFullScreen\":\"Full Screen (IE)\",\"popupLeft\":\"Left Position\",\"popupLocationBar\":\"Location Bar\",\"popupMenuBar\":\"Menu Bar\",\"popupResizable\":\"Resizable\",\"popupScrollBars\":\"Scroll Bars\",\"popupStatusBar\":\"Status Bar\",\"popupToolbar\":\"Toolbar\",\"popupTop\":\"Top Position\",\"rel\":\"Relationship\",\"selectAnchor\":\"Select an Anchor\",\"styles\":\"Style\",\"tabIndex\":\"Tab Index\",\"target\":\"Target\",\"targetFrame\":\"<frame>\",\"targetFrameName\":\"Target Frame Name\",\"targetPopup\":\"<popup window>\",\"targetPopupName\":\"Popup Window Name\",\"title\":\"Link\",\"toAnchor\":\"Link to anchor in the text\",\"toEmail\":\"E-mail\",\"toUrl\":\"URL\",\"toolbar\":\"Link\",\"type\":\"Link Type\",\"unlink\":\"Unlink\",\"upload\":\"Upload\"},\"list\":{\"bulletedlist\":\"Insert/Remove Bulleted List\",\"numberedlist\":\"Insert/Remove Numbered List\"},\"liststyle\":{\"armenian\":\"Armenian numbering\",\"bulletedTitle\":\"Bulleted List Properties\",\"circle\":\"Circle\",\"decimal\":\"Decimal (1, 2, 3, etc.)\",\"decimalLeadingZero\":\"Decimal leading zero (01, 02, 03, etc.)\",\"disc\":\"Disc\",\"georgian\":\"Georgian numbering (an, ban, gan, etc.)\",\"lowerAlpha\":\"Lower Alpha (a, b, c, d, e, etc.)\",\"lowerGreek\":\"Lower Greek (alpha, beta, gamma, etc.)\",\"lowerRoman\":\"Lower Roman (i, ii, iii, iv, v, etc.)\",\"none\":\"None\",\"notset\":\"<not set>\",\"numberedTitle\":\"Numbered List Properties\",\"square\":\"Square\",\"start\":\"Start\",\"type\":\"Type\",\"upperAlpha\":\"Upper Alpha (A, B, C, D, E, etc.)\",\"upperRoman\":\"Upper Roman (I, II, III, IV, V, etc.)\",\"validateStartNumber\":\"List start number must be a whole number.\"},\"magicline\":{\"title\":\"Insert paragraph here\"},\"maximize\":{\"maximize\":\"Maximize\",\"minimize\":\"Minimize\"},\"newpage\":{\"toolbar\":\"New Page\"},\"pagebreak\":{\"alt\":\"Page Break\",\"toolbar\":\"Insert Page Break for Printing\"},\"pastetext\":{\"button\":\"Paste as plain text\",\"title\":\"Paste as Plain Text\"},\"pastefromword\":{\"confirmCleanup\":\"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?\",\"error\":\"It was not possible to clean up the pasted data due to an internal error\",\"title\":\"Paste from Word\",\"toolbar\":\"Paste from Word\"},\"preview\":{\"preview\":\"Preview\"},\"print\":{\"toolbar\":\"Print\"},\"removeformat\":{\"toolbar\":\"Remove Format\"},\"save\":{\"toolbar\":\"Save\"},\"selectall\":{\"toolbar\":\"Select All\"},\"showblocks\":{\"toolbar\":\"Show Blocks\"},\"sourcearea\":{\"toolbar\":\"Source\"},\"specialchar\":{\"options\":\"Special Character Options\",\"title\":\"Select Special Character\",\"toolbar\":\"Insert Special Character\"},\"scayt\":{\"btn_about\":\"About SCAYT\",\"btn_dictionaries\":\"Dictionaries\",\"btn_disable\":\"Disable SCAYT\",\"btn_enable\":\"Enable SCAYT\",\"btn_langs\":\"Languages\",\"btn_options\":\"Options\",\"text_title\":\"\"},\"stylescombo\":{\"label\":\"Styles\",\"panelTitle\":\"Formatting Styles\",\"panelTitle1\":\"Block Styles\",\"panelTitle2\":\"Inline Styles\",\"panelTitle3\":\"Object Styles\"},\"table\":{\"border\":\"Border size\",\"caption\":\"Caption\",\"cell\":{\"menu\":\"Cell\",\"insertBefore\":\"Insert Cell Before\",\"insertAfter\":\"Insert Cell After\",\"deleteCell\":\"Delete Cells\",\"merge\":\"Merge Cells\",\"mergeRight\":\"Merge Right\",\"mergeDown\":\"Merge Down\",\"splitHorizontal\":\"Split Cell Horizontally\",\"splitVertical\":\"Split Cell Vertically\",\"title\":\"Cell Properties\",\"cellType\":\"Cell Type\",\"rowSpan\":\"Rows Span\",\"colSpan\":\"Columns Span\",\"wordWrap\":\"Word Wrap\",\"hAlign\":\"Horizontal Alignment\",\"vAlign\":\"Vertical Alignment\",\"alignBaseline\":\"Baseline\",\"bgColor\":\"Background Color\",\"borderColor\":\"Border Color\",\"data\":\"Data\",\"header\":\"Header\",\"yes\":\"Yes\",\"no\":\"No\",\"invalidWidth\":\"Cell width must be a number.\",\"invalidHeight\":\"Cell height must be a number.\",\"invalidRowSpan\":\"Rows span must be a whole number.\",\"invalidColSpan\":\"Columns span must be a whole number.\",\"chooseColor\":\"Choose\"},\"cellPad\":\"Cell padding\",\"cellSpace\":\"Cell spacing\",\"column\":{\"menu\":\"Column\",\"insertBefore\":\"Insert Column Before\",\"insertAfter\":\"Insert Column After\",\"deleteColumn\":\"Delete Columns\"},\"columns\":\"Columns\",\"deleteTable\":\"Delete Table\",\"headers\":\"Headers\",\"headersBoth\":\"Both\",\"headersColumn\":\"First column\",\"headersNone\":\"None\",\"headersRow\":\"First Row\",\"invalidBorder\":\"Border size must be a number.\",\"invalidCellPadding\":\"Cell padding must be a positive number.\",\"invalidCellSpacing\":\"Cell spacing must be a positive number.\",\"invalidCols\":\"Number of columns must be a number greater than 0.\",\"invalidHeight\":\"Table height must be a number.\",\"invalidRows\":\"Number of rows must be a number greater than 0.\",\"invalidWidth\":\"Table width must be a number.\",\"menu\":\"Table Properties\",\"row\":{\"menu\":\"Row\",\"insertBefore\":\"Insert Row Before\",\"insertAfter\":\"Insert Row After\",\"deleteRow\":\"Delete Rows\"},\"rows\":\"Rows\",\"summary\":\"Summary\",\"title\":\"Table Properties\",\"toolbar\":\"Table\",\"widthPc\":\"percent\",\"widthPx\":\"pixels\",\"widthUnit\":\"width unit\"},\"undo\":{\"redo\":\"Redo\",\"undo\":\"Undo\"},\"wsc\":{\"btnIgnore\":\"Ignore\",\"btnIgnoreAll\":\"Ignore All\",\"btnReplace\":\"Replace\",\"btnReplaceAll\":\"Replace All\",\"btnUndo\":\"Undo\",\"changeTo\":\"Change to\",\"errorLoading\":\"Error loading application service host: %s.\",\"ieSpellDownload\":\"Spell checker not installed. Do you want to download it now?\",\"manyChanges\":\"Spell check complete: %1 words changed\",\"noChanges\":\"Spell check complete: No words changed\",\"noMispell\":\"Spell check complete: No misspellings found\",\"noSuggestions\":\"- No suggestions -\",\"notAvailable\":\"Sorry, but service is unavailable now.\",\"notInDic\":\"Not in dictionary\",\"oneChange\":\"Spell check complete: One word changed\",\"progress\":\"Spell check in progress...\",\"title\":\"Spell Check\",\"toolbar\":\"Check Spelling\"}};"
  },
  {
    "path": "admin/js/plugins/ckeditor/lang/index.php",
    "content": ""
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.dialog.add(\"a11yHelp\",function(j){var a=j.lang.a11yhelp,l=CKEDITOR.tools.getNextId(),e={8:a.backspace,9:a.tab,13:a.enter,16:a.shift,17:a.ctrl,18:a.alt,19:a.pause,20:a.capslock,27:a.escape,33:a.pageUp,34:a.pageDown,35:a.end,36:a.home,37:a.leftArrow,38:a.upArrow,39:a.rightArrow,40:a.downArrow,45:a.insert,46:a[\"delete\"],91:a.leftWindowKey,92:a.rightWindowKey,93:a.selectKey,96:a.numpad0,97:a.numpad1,98:a.numpad2,99:a.numpad3,100:a.numpad4,101:a.numpad5,102:a.numpad6,103:a.numpad7,104:a.numpad8,\n105:a.numpad9,106:a.multiply,107:a.add,109:a.subtract,110:a.decimalPoint,111:a.divide,112:a.f1,113:a.f2,114:a.f3,115:a.f4,116:a.f5,117:a.f6,118:a.f7,119:a.f8,120:a.f9,121:a.f10,122:a.f11,123:a.f12,144:a.numLock,145:a.scrollLock,186:a.semiColon,187:a.equalSign,188:a.comma,189:a.dash,190:a.period,191:a.forwardSlash,192:a.graveAccent,219:a.openBracket,220:a.backSlash,221:a.closeBracket,222:a.singleQuote};e[CKEDITOR.ALT]=a.alt;e[CKEDITOR.SHIFT]=a.shift;e[CKEDITOR.CTRL]=a.ctrl;var f=[CKEDITOR.ALT,CKEDITOR.SHIFT,\nCKEDITOR.CTRL],m=/\\$\\{(.*?)\\}/g,p=function(){var a=j.keystrokeHandler.keystrokes,g={},c;for(c in a)g[a[c]]=c;return function(a,c){var b;if(g[c]){b=g[c];for(var h,i,k=[],d=0;d<f.length;d++)i=f[d],h=b/f[d],1<h&&2>=h&&(b-=i,k.push(e[i]));k.push(e[b]||String.fromCharCode(b));b=k.join(\"+\")}else b=a;return b}}();return{title:a.title,minWidth:600,minHeight:400,contents:[{id:\"info\",label:j.lang.common.generalTab,expand:!0,elements:[{type:\"html\",id:\"legends\",style:\"white-space:normal;\",focus:function(){this.getElement().focus()},\nhtml:function(){for(var e='<div class=\"cke_accessibility_legend\" role=\"document\" aria-labelledby=\"'+l+'_arialbl\" tabIndex=\"-1\">%1</div><span id=\"'+l+'_arialbl\" class=\"cke_voice_label\">'+a.contents+\" </span>\",g=[],c=a.legend,j=c.length,f=0;f<j;f++){for(var b=c[f],h=[],i=b.items,k=i.length,d=0;d<k;d++){var n=i[d],o=n.legend.replace(m,p);o.match(m)||h.push(\"<dt>%1</dt><dd>%2</dd>\".replace(\"%1\",n.name).replace(\"%2\",o))}g.push(\"<h1>%1</h1><dl>%2</dl>\".replace(\"%1\",b.name).replace(\"%2\",h.join(\"\")))}return e.replace(\"%1\",\ng.join(\"\"))}()+'<style type=\"text/css\">.cke_accessibility_legend{width:600px;height:400px;padding-right:5px;overflow-y:auto;overflow-x:hidden;}.cke_browser_quirks .cke_accessibility_legend,{height:390px}.cke_accessibility_legend *{white-space:normal;}.cke_accessibility_legend h1{font-size: 20px;border-bottom: 1px solid #AAA;margin: 5px 0px 15px;}.cke_accessibility_legend dl{margin-left: 5px;}.cke_accessibility_legend dt{font-size: 13px;font-weight: bold;}.cke_accessibility_legend dd{margin:10px}</style>'}]}],\nbuttons:[CKEDITOR.dialog.cancelButton]}});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt",
    "content": "Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n\r\ncs.js      Found: 30 Missing: 0\r\ncy.js      Found: 30 Missing: 0\r\nda.js      Found: 12 Missing: 18\r\nde.js      Found: 30 Missing: 0\r\nel.js      Found: 25 Missing: 5\r\neo.js      Found: 30 Missing: 0\r\nfa.js      Found: 30 Missing: 0\r\nfi.js      Found: 30 Missing: 0\r\nfr.js      Found: 30 Missing: 0\r\ngu.js      Found: 12 Missing: 18\r\nhe.js      Found: 30 Missing: 0\r\nit.js      Found: 30 Missing: 0\r\nmk.js      Found: 5 Missing: 25\r\nnb.js      Found: 30 Missing: 0\r\nnl.js      Found: 30 Missing: 0\r\nno.js      Found: 30 Missing: 0\r\npt-br.js   Found: 30 Missing: 0\r\nro.js      Found: 6 Missing: 24\r\ntr.js      Found: 30 Missing: 0\r\nug.js      Found: 27 Missing: 3\r\nvi.js      Found: 6 Missing: 24\r\nzh-cn.js   Found: 30 Missing: 0\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"ar\",{title:\"Accessibility Instructions\",contents:\"Help Contents. To close this dialog press ESC.\",legend:[{name:\"عام\",items:[{name:\"Editor Toolbar\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"Editor Dialog\",legend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},\n{name:\"Editor Context Menu\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},{name:\"Editor List Box\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},{name:\"Commands\",items:[{name:\" Undo command\",legend:\"Press ${undo}\"},{name:\" Redo command\",legend:\"Press ${redo}\"},{name:\" Bold command\",legend:\"Press ${bold}\"},{name:\" Italic command\",legend:\"Press ${italic}\"},{name:\" Underline command\",\nlegend:\"Press ${underline}\"},{name:\" Link command\",legend:\"Press ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Accessibility Help\",legend:\"Press ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"إضافة\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"تقسيم\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"فاصلة\",dash:\"Dash\",period:\"نقطة\",forwardSlash:\"Forward Slash\",\ngraveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"bg\",{title:\"Accessibility Instructions\",contents:\"Help Contents. To close this dialog press ESC.\",legend:[{name:\"Общо\",items:[{name:\"Editor Toolbar\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"Editor Dialog\",legend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},\n{name:\"Editor Context Menu\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},{name:\"Editor List Box\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},{name:\"Commands\",items:[{name:\" Undo command\",legend:\"Press ${undo}\"},{name:\" Redo command\",legend:\"Press ${redo}\"},{name:\" Bold command\",legend:\"Press ${bold}\"},{name:\" Italic command\",legend:\"Press ${italic}\"},{name:\" Underline command\",\nlegend:\"Press ${underline}\"},{name:\" Link command\",legend:\"Press ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Accessibility Help\",legend:\"Press ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",\ngraveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"ca\",{title:\"Instruccions d'Accessibilitat\",contents:\"Continguts de l'Ajuda. Per tancar aquest quadre de diàleg premi ESC.\",legend:[{name:\"General\",items:[{name:\"Editor de barra d'eines\",legend:\"Premi ${toolbarFocus} per desplaçar-se per la barra d'eines. Vagi en el següent i anterior grup de barra d'eines amb TAB i SHIFT-TAB. Vagi en el següent i anterior botó de la barra d'eines amb RIGHT ARROW i LEFT ARROW. Premi SPACE o ENTER per activar el botó de la barra d'eines.\"},\n{name:\"Editor de quadre de diàleg\",legend:\"Dins d'un quadre de diàleg, premi la tecla TAB per desplaçar-se al següent camp del quadre de diàleg, premi SHIFT + TAB per desplaçar-se a l'anterior camp, premi ENTER per acceptar el quadre de diàleg, premi ESC per cancel·lar el quadre de diàleg. Per els quadres de diàleg que tenen diverses pestanyes, premi ALT + F10 per anar a la llista de pestanyes. Després podrà desplaçar-se a la següent pestanya amb TAB o RIGHT ARROW. Anar a la pestanya anterior amb SHIFT + TAB o LEFT ARROW. Premi SPACE o ENTER per seleccionar la pestanya.\"},\n{name:\"Editor de menú contextual\",legend:\"Premi ${contextMenu} o APPLICATION KEY per obrir el menú contextual. Després desplacis a la següent opció del menú amb TAB o DOWN ARROW. Desplacis a l'anterior opció amb SHIFT+TAB o UP ARROW. Premi SPACE o ENTER per seleccionar l'opció del menú. Obri el submenú de l'actual opció utilitzant SPACE o ENTER o RIGHT ARROW. Pot tornar a l'opció del menú pare amb ESC o LEFT ARROW. Tanqui el menú contextual amb ESC.\"},{name:\"Editor de caixa de llista\",legend:\"Dins d'un quadre de llista, desplacis al següent element de la llista amb TAB o DOWN ARROW. Desplacis a l'anterior element de la llista amb SHIFT + TAB o UP ARROW. Premi SPACE o ENTER per seleccionar l'opció de la llista. Premi ESC per tancar el quadre de llista.\"},\n{name:\"Editor de barra de ruta de l'element\",legend:\"Premi ${elementsPathFocus} per anar als elements de la barra de ruta. Desplacis al botó de l'element següent amb TAB o RIGHT ARROW. Desplacis a l'anterior botó amb  SHIFT+TAB o LEFT ARROW. Premi SPACE o ENTER per seleccionar l'element a l'editor.\"}]},{name:\"Ordres\",items:[{name:\"Desfer ordre\",legend:\"Premi ${undo}\"},{name:\"Refer ordre\",legend:\"Premi ${redo}\"},{name:\"Ordre negreta\",legend:\"Premi ${bold}\"},{name:\"Ordre cursiva\",legend:\"Premi ${italic}\"},\n{name:\"Ordre subratllat\",legend:\"Premi ${underline}\"},{name:\"Ordre enllaç\",legend:\"Premi ${link}\"},{name:\"Ordre amagar barra d'eines\",legend:\"Premi ${toolbarCollapse}\"},{name:\"Ordre per accedir a l'anterior espai enfocat\",legend:\"Premi ${accessPreviousSpace} per accedir a l'enfocament d'espai més proper inabastable abans del símbol d'intercalació, per exemple: dos elements HR adjacents. Repetiu la combinació de tecles per arribar a enfocaments d'espais distants.\"},{name:\"Ordre per accedir al següent espai enfocat\",\nlegend:\"Premi ${accessNextSpace} per accedir a l'enfocament d'espai més proper inabastable després del símbol d'intercalació, per exemple: dos elements HR adjacents. Repetiu la combinació de tecles per arribar a enfocaments d'espais distants.\"},{name:\"Ajuda d'accessibilitat\",legend:\"Premi ${a11yHelp}\"}]}],backspace:\"Retrocés\",tab:\"Tabulació\",enter:\"Intro\",shift:\"Majúscules\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pausa\",capslock:\"Bloqueig de majúscules\",escape:\"Escape\",pageUp:\"Pàgina Amunt\",pageDown:\"Pàgina Avall\",\nend:\"Fi\",home:\"Inici\",leftArrow:\"Fletxa Esquerra\",upArrow:\"Fletxa Amunt\",rightArrow:\"Fletxa Dreta\",downArrow:\"Fletxa Avall\",insert:\"Inserir\",\"delete\":\"Eliminar\",leftWindowKey:\"Tecla Windows Esquerra\",rightWindowKey:\"Tecla Windows Dreta\",selectKey:\"Tecla Seleccionar\",numpad0:\"Teclat Numèric 0\",numpad1:\"Teclat Numèric 1\",numpad2:\"Teclat Numèric 2\",numpad3:\"Teclat Numèric 3\",numpad4:\"Teclat Numèric 4\",numpad5:\"Teclat Numèric 5\",numpad6:\"Teclat Numèric 6\",numpad7:\"Teclat Numèric 7\",numpad8:\"Teclat Numèric 8\",\nnumpad9:\"Teclat Numèric 9\",multiply:\"Multiplicació\",add:\"Suma\",subtract:\"Resta\",decimalPoint:\"Punt Decimal\",divide:\"Divisió\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Bloqueig Teclat Numèric\",scrollLock:\"Bloqueig de Desplaçament\",semiColon:\"Punt i Coma\",equalSign:\"Símbol Igual\",comma:\"Coma\",dash:\"Guió\",period:\"Punt\",forwardSlash:\"Barra Diagonal\",graveAccent:\"Accent Obert\",openBracket:\"Claudàtor Obert\",backSlash:\"Barra Invertida\",\ncloseBracket:\"Claudàtor Tancat\",singleQuote:\"Cometa Simple\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"cs\",{title:\"Instrukce pro přístupnost\",contents:\"Obsah nápovědy. Pro uzavření tohoto dialogu stiskněte klávesu ESC.\",legend:[{name:\"Obecné\",items:[{name:\"Panel nástrojů editoru\",legend:\"Stiskněte${toolbarFocus} k procházení panelu nástrojů. Přejděte na další a předchozí skupiny pomocí TAB a SHIFT-TAB. Přechod na další a předchozí tlačítko panelu nástrojů je pomocí ŠIPKA VPRAVO nebo ŠIPKA VLEVO. Stisknutím mezerníku nebo klávesy ENTER tlačítko aktivujete.\"},{name:\"Dialogové okno editoru\",\nlegend:\"Uvnitř dialogového okna stiskněte TAB pro přesunutí na další pole, stiskněte SHIFT + TAB pro přesun na předchozí pole, stiskněte ENTER pro odeslání dialogu, stiskněte ESC pro jeho zrušení. Pro dialogová okna, která mají mnoho karet stiskněte ALT + F10 pr oprocházení seznamu karet. Pak se přesuňte na další kartu pomocí TAB nebo ŠIPKA VPRAVO. Pro přesun na předchozí stiskněte SHIFT + TAB nebo ŠIPKA VLEVO. Stiskněte MEZERNÍK nebo ENTER pro vybrání stránky karet.\"},{name:\"Kontextové menu editoru\",\nlegend:\"Stiskněte ${contextMenu} nebo klávesu APPLICATION k otevření kontextového menu. Pak se přesuňte na další možnost menu pomocí TAB nebo ŠIPKY DOLŮ. Přesuňte se na předchozí možnost pomocí  SHIFT+TAB nebo ŠIPKY NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti menu. Podmenu současné možnosti otevřete pomocí MEZERNÍKU nebo ENTER či ŠIPKY DOLEVA. Kontextové menu uzavřete stiskem ESC.\"},{name:\"Rámeček seznamu editoru\",legend:\"Uvnitř rámečku seznamu se přesunete na další položku menu pomocí TAB nebo ŠIPKA DOLŮ. Na předchozí položku se přesunete SHIFT + TAB nebo ŠIPKA NAHORU. Stiskněte MEZERNÍK nebo ENTER pro zvolení možnosti seznamu. Stiskněte ESC pro uzavření seznamu.\"},\n{name:\"Lišta cesty prvku v editoru\",legend:\"Stiskněte ${elementsPathFocus} pro procházení lišty cesty prvku. Na další tlačítko prvku se přesunete pomocí TAB nebo ŠIPKA VPRAVO. Na předchozí položku se přesunete pomocí SHIFT + TAB nebo ŠIPKA VLEVO. Stiskněte MEZERNÍK nebo ENTER pro vybrání prvku v editoru.\"}]},{name:\"Příkazy\",items:[{name:\" Příkaz Zpět\",legend:\"Stiskněte ${undo}\"},{name:\" Příkaz Znovu\",legend:\"Stiskněte ${redo}\"},{name:\" Příkaz Tučné\",legend:\"Stiskněte ${bold}\"},{name:\" Příkaz Kurzíva\",\nlegend:\"Stiskněte ${italic}\"},{name:\" Příkaz Podtržení\",legend:\"Stiskněte ${underline}\"},{name:\" Příkaz Odkaz\",legend:\"Stiskněte ${link}\"},{name:\" Příkaz Skrýt panel nástrojů\",legend:\"Stiskněte ${toolbarCollapse}\"},{name:\"Příkaz pro přístup k předchozímu prostoru zaměření\",legend:\"Stiskněte ${accessPreviousSpace} pro přístup k nejbližšímu nedosažitelnému prostoru zaměření před stříškou, například: dva přilehlé prvky HR. Pro dosažení vzdálených prostorů zaměření tuto kombinaci kláves opakujte.\"},{name:\"Příkaz pro přístup k dalšímu prostoru zaměření\",\nlegend:\"Stiskněte ${accessNextSpace} pro přístup k nejbližšímu nedosažitelnému prostoru zaměření po stříšce, například: dva přilehlé prvky HR. Pro dosažení vzdálených prostorů zaměření tuto kombinaci kláves opakujte.\"},{name:\" Nápověda přístupnosti\",legend:\"Stiskněte ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tabulátor\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pauza\",capslock:\"Caps lock\",escape:\"Escape\",pageUp:\"Stránka nahoru\",pageDown:\"Stránka dolů\",end:\"Konec\",home:\"Domů\",leftArrow:\"Šipka vlevo\",\nupArrow:\"Šipka nahoru\",rightArrow:\"Šipka vpravo\",downArrow:\"Šipka dolů\",insert:\"Vložit\",\"delete\":\"Smazat\",leftWindowKey:\"Levá klávesa Windows\",rightWindowKey:\"Pravá klávesa Windows\",selectKey:\"Vyberte klávesu\",numpad0:\"Numerická klávesa 0\",numpad1:\"Numerická klávesa 1\",numpad2:\"Numerická klávesa 2\",numpad3:\"Numerická klávesa 3\",numpad4:\"Numerická klávesa 4\",numpad5:\"Numerická klávesa 5\",numpad6:\"Numerická klávesa 6\",numpad7:\"Numerická klávesa 7\",numpad8:\"Numerická klávesa 8\",numpad9:\"Numerická klávesa 9\",\nmultiply:\"Numerická klávesa násobení\",add:\"Přidat\",subtract:\"Numerická klávesa odečítání\",decimalPoint:\"Desetinná tečka\",divide:\"Numerická klávesa dělení\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num lock\",scrollLock:\"Scroll lock\",semiColon:\"Středník\",equalSign:\"Rovnítko\",comma:\"Čárka\",dash:\"Pomlčka\",period:\"Tečka\",forwardSlash:\"Lomítko\",graveAccent:\"Přízvuk\",openBracket:\"Otevřená hranatá závorka\",backSlash:\"Obrácené lomítko\",closeBracket:\"Uzavřená hranatá závorka\",\nsingleQuote:\"Jednoduchá uvozovka\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"cy\",{title:\"Canllawiau Hygyrchedd\",contents:\"Cynnwys Cymorth. I gau y deialog hwn, pwyswch ESC.\",legend:[{name:\"Cyffredinol\",items:[{name:\"Bar Offer y Golygydd\",legend:\"Pwyswch $ {toolbarFocus} i fynd at y bar offer. Symudwch i'r grŵp bar offer nesaf a blaenorol gyda TAB a SHIFT-TAB. Symudwch i'r botwm bar offer nesaf a blaenorol gyda SAETH DDE neu SAETH CHWITH. Pwyswch SPACE neu ENTER i wneud botwm y bar offer yn weithredol.\"},{name:\"Deialog y Golygydd\",legend:\"Tu mewn i'r deialog, pwyswch TAB i fynd i'r maes nesaf ar y deialog, pwyswch SHIFT + TAB i symud i faes blaenorol, pwyswch ENTER i gyflwyno'r deialog, pwyswch ESC i ddiddymu'r deialog. Ar gyfer deialogau sydd â thudalennau aml-tab, pwyswch ALT + F10 i lywio'r tab-restr. Yna symudwch i'r tab nesaf gyda TAB neu SAETH DDE. Symudwch i dab blaenorol gyda SHIFT + TAB neu'r SAETH CHWITH. Pwyswch SPACE neu ENTER i ddewis y dudalen tab.\"},\n{name:\"Dewislen Cyd-destun y Golygydd\",legend:\"Pwyswch $ {contextMenu} neu'r ALLWEDD 'APPLICATION' i agor y ddewislen cyd-destun. Yna symudwch i'r opsiwn ddewislen nesaf gyda'r TAB neu'r SAETH I LAWR. Symudwch i'r opsiwn blaenorol gyda SHIFT + TAB neu'r SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn ddewislen. Agorwch is-dewislen yr opsiwn cyfredol gyda SPACE neu ENTER neu SAETH DDE. Ewch yn ôl i'r eitem ar y ddewislen uwch gydag ESC neu SAETH CHWITH. Ceuwch y ddewislen cyd-destun gydag ESC.\"},\n{name:\"Blwch Rhestr y Golygydd\",legend:\"Tu mewn y blwch rhestr, ewch i'r eitem rhestr nesaf gyda TAB neu'r SAETH I LAWR. Symudwch i restr eitem flaenorol gyda SHIFT + TAB neu SAETH I FYNY. Pwyswch SPACE neu ENTER i ddewis yr opsiwn o'r rhestr. Pwyswch ESC i gau'r rhestr.\"},{name:\"Bar Llwybr Elfen y Golygydd\",legend:\"Pwyswch ${elementsPathFocus} i fynd i'r bar llwybr elfennau. Symudwch i fotwm yr elfen nesaf gyda TAB neu SAETH DDE. Symudwch i fotwm blaenorol gyda SHIFT + TAB neu SAETH CHWITH. Pwyswch SPACE neu ENTER i ddewis yr elfen yn y golygydd.\"}]},\n{name:\"Gorchmynion\",items:[{name:\"Gorchymyn dadwneud\",legend:\"Pwyswch ${undo}\"},{name:\"Gorchymyn ailadrodd\",legend:\"Pwyswch ${redo}\"},{name:\"Gorchymyn Bras\",legend:\"Pwyswch ${bold}\"},{name:\"Gorchymyn italig\",legend:\"Pwyswch ${italig}\"},{name:\"Gorchymyn tanlinellu\",legend:\"Pwyso ${underline}\"},{name:\"Gorchymyn dolen\",legend:\"Pwyswch ${link}\"},{name:\"Gorchymyn Cwympo'r Dewislen\",legend:\"Pwyswch ${toolbarCollapse}\"},{name:\"Myned i orchymyn bwlch ffocws blaenorol\",legend:\"Pwyswch ${accessPreviousSpace} i fyned i'r \\\"blwch ffocws sydd methu ei gyrraedd\\\" cyn y caret, er enghraifft: dwy elfen HR drws nesaf i'w gilydd. AIladroddwch y cyfuniad allwedd i gyrraedd bylchau ffocws pell.\"},\n{name:\"Ewch i'r gorchymyn blwch ffocws nesaf\",legend:\"Pwyswch ${accessNextSpace} i fyned i'r blwch ffocws agosaf nad oes modd ei gyrraedd ar ôl y caret, er enghraifft: dwy elfen HR drws nesaf i'w gilydd. Ailadroddwch y cyfuniad allwedd i gyrraedd blychau ffocws pell.\"},{name:\"Cymorth Hygyrchedd\",legend:\"Pwyswch ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",\nend:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",\ndivide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/da.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"da\",{title:\"Tilgængelighedsinstrukser\",contents:\"Onlinehjælp. For at lukke dette vindue klik ESC\",legend:[{name:\"Generelt\",items:[{name:\"Editor værktøjslinje\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"Editor Dialog\",legend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},\n{name:\"Editor Context Menu\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},{name:\"Editor List Box\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},{name:\"Kommandoer\",items:[{name:\"Fortryd kommando\",legend:\"Klik på ${undo}\"},{name:\"Gentag kommando\",legend:\"Klik ${redo}\"},{name:\" Bold command\",legend:\"Klik ${bold}\"},{name:\" Italic command\",legend:\"Press ${italic}\"},{name:\" Underline command\",\nlegend:\"Klik ${underline}\"},{name:\" Link command\",legend:\"Klik ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Accessibility Help\",legend:\"Kilk ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",\ngraveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/de.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"de\",{title:\"Barrierefreiheitinformationen\",contents:\"Hilfeinhalt. Um den Dialog zu schliessen die Taste 'ESC' drücken.\",legend:[{name:\"Allgemein\",items:[{name:\"Editor Symbolleiste\",legend:\"Drücken Sie ${toolbarFocus} auf der Symbolleiste. Gehen Sie zur nächsten oder vorherigen Symbolleistengruppe mit TAB und SHIFT-TAB. Gehen Sie zur nächsten oder vorherigen Symbolleiste auf die Schaltfläche mit dem RECHTS- oder LINKS-Pfeil. Drücken Sie die Leertaste oder Eingabetaste, um die Schaltfläche in der Symbolleiste aktivieren.\"},\n{name:\"Editor Dialog\",legend:\"Innerhalb des Dialogs drücken Sie TAB um zum nächsten Dialogfeld zu gelangen, drücken Sie SHIFT-TAG um zum vorherigen Feld zu wechseln, drücken Sie ENTER um den Dialog abzusenden und ESC um den Dialog zu abzubrechen. Um zwischen den Reitern innerhalb eines Dialogs zu wechseln drücken sie ALT-F10. Um zum nächsten Reiter zu gelangen können Sie TAB oder die rechte Pfeiltaste. Zurück gelangt man mit SHIFT-TAB oder der linken Pfeiltaste. Mit der Leertaste oder Enter kann man den Reiter auswählen.\"},\n{name:\"Editor Kontextmenü\",legend:\"Dürcken Sie ${contextMenu} oder die Anwendungstaste um das Kontextmenü zu öffnen. Man kann die Pfeiltasten zum Wechsel benutzen. Mit der Leertaste oder der Enter-Taste kann man den Menüpunkt aufrufen. Schliessen Sie das Kontextmenü mit der ESC-Taste.\"},{name:\"Editor Listen\",legend:\"Innerhalb einer Listenbox kann man mit der TAB-Taste oder den Pfeilrunter-Taste den nächsten Menüeintrag wählen. Mit der Shift-TAB Tastenkombination oder der Pfeilhoch-Taste gelangt man zum vorherigen Menüpunkt. Mit der Leertaste oder Enter kann man den Menüpunkt auswählen. Drücken Sie ESC zum Verlassen des Menüs.\"},\n{name:\"Editor Elementpfadleiste\",legend:\"Drücken Sie ${elementsPathFocus} um sich durch die Pfadleiste zu bewegen. Um zum nächsten Element zu gelangen drücken Sie TAB oder die Pfeilrechts-Taste. Zum vorherigen Element gelangen Sie mit der SHIFT-TAB oder der Pfeillinks-Taste. Drücken Sie die Leertaste oder Enter um das Element auszuwählen.\"}]},{name:\"Befehle\",items:[{name:\"Wiederholen Befehl\",legend:\"Drücken Sie ${undo}\"},{name:\"Rückgängig Befehl\",legend:\"Drücken Sie ${redo}\"},{name:\"Fettschrift Befehl\",\nlegend:\"Drücken Sie ${bold}\"},{name:\"Italic Befehl\",legend:\"Drücken Sie ${italic}\"},{name:\"Unterstreichung Befehl\",legend:\"Drücken Sie ${underline}\"},{name:\"Link Befehl\",legend:\"Drücken Sie ${link}\"},{name:\"Symbolleiste zuammenklappen Befehl\",legend:\"Drücken Sie ${toolbarCollapse}\"},{name:\"Zugang bisheriger Fokussierung Raumbefehl \",legend:\"Drücken Sie ${accessPreviousSpace}  auf den am nächsten nicht erreichbar Fokus-Abstand vor die Einfügemarke zugreifen: zwei benachbarte HR-Elemente. Wiederholen Sie die Tastenkombination um entfernte Fokusräume zu erreichen. \"},\n{name:\"Zugang nächster Schwerpunkt Raumbefehl \",legend:\"Drücken Sie $ { accessNextSpace }, um den nächsten unerreichbar Fokus Leerzeichen nach dem Cursor zum Beispiel auf: zwei benachbarten HR Elemente. Wiederholen Sie die Tastenkombination zum fernen Fokus Bereiche zu erreichen. \"},{name:\"Eingabehilfen\",legend:\"Drücken Sie ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Umschalt\",ctrl:\"Strg\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",\nend:\"Ende\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Einfügen\",\"delete\":\"Entfernen\",leftWindowKey:\"Linke Windowstaste\",rightWindowKey:\"Rechte Windowstaste\",selectKey:\"Taste auswählen\",numpad0:\"Ziffernblock 0\",numpad1:\"Ziffernblock 1\",numpad2:\"Ziffernblock 2\",numpad3:\"Ziffernblock 3\",numpad4:\"Ziffernblock 4\",numpad5:\"Ziffernblock 5\",numpad6:\"Ziffernblock 6\",numpad7:\"Ziffernblock 7\",numpad8:\"Ziffernblock 8\",numpad9:\"Ziffernblock 9\",\nmultiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semikolon\",equalSign:\"Gleichheitszeichen\",comma:\"Komma\",dash:\"Bindestrich\",period:\"Punkt\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/el.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"el\",{title:\"Οδηγίες Προσβασιμότητας\",contents:\"Περιεχόμενα Βοήθειας. Πατήστε ESC για κλείσιμο.\",legend:[{name:\"Γενικά\",items:[{name:\"Εργαλειοθήκη Επεξεργαστή\",legend:\"Πατήστε ${toolbarFocus} για να περιηγηθείτε στην γραμμή εργαλείων. Μετακινηθείτε ανάμεσα στις ομάδες της γραμμής εργαλείων με TAB και SHIFT-TAB. Μετακινηθείτε ανάμεσα στα κουμπιά εργαλείων με το ΔΕΞΙ ή ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να ενεργοποιήσετε το ενεργό κουμπί εργαλείου.\"},{name:\"Παράθυρο Διαλόγου Επεξεργαστή\",\nlegend:\"Μέσα σε ένα παράθυρο διαλόγου, πατήστε TAB για να μεταβείτε στο επόμενο πεδίο ή SHIFT + TAB για να μεταβείτε στο προηγούμενο. Πατήστε ENTER για να υποβάλετε την φόρμα. Πατήστε ESC για να ακυρώσετε την διαδικασία της φόρμας. Για παράθυρα διαλόγων που έχουν πολλές σελίδες σε καρτέλες πατήστε ALT + F10 για να μεταβείτε στην λίστα των καρτελών. Στην συνέχεια μπορείτε να μεταβείτε στην επόμενη καρτέλα πατώντας το TAB ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μπορείτε να μεταβείτε στην προηγούμενη καρτέλα πατώντας SHIFT + TAB ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξτε την καρτέλα για προβολή.\"},\n{name:\"Αναδυόμενο Μενού Επεξεργαστή\",legend:\"Πατήστε ${contextMenu} ή APPLICATION KEY για να ανοίξετε το αναδυόμενο μενού. Μετά μετακινηθείτε στην επόμενη επιλογή του μενού με  TAB ή ΚΑΤΩ ΒΕΛΑΚΙ. Μετακινηθείτε στην προηγούμενη επιλογή με SHIFT+TAB ή το ΠΑΝΩ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξτε το τρέχων στοιχείο. Ανοίξτε το αναδυόμενο μενού της τρέχουσας επιλογής με ΔΙΑΣΤΗΜΑ ή ENTER ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μεταβείτε πίσω στο αρχικό στοιχείο μενού με το ESC ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Κλείστε το αναδυόμενο μενού με ESC.\"},\n{name:\"Κουτί Λίστας Επεξεργαστών\",legend:\"Μέσα σε ένα κουτί λίστας, μετακινηθείτε στο επόμενο στοιχείο με TAB ή ΚΑΤΩ ΒΕΛΑΚΙ. Μετακινηθείτε στο προηγούμενο στοιχείο με SHIFT + TAB ή το ΠΑΝΩ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξετε ένα στοιχείο. Πατήστε ESC για να κλείσετε το κουτί της λίστας.\"},{name:\"Μπάρα Διαδρομών Στοιχείων Επεξεργαστή\",legend:\"Πατήστε ${elementsPathFocus} για να περιηγηθείτε στην μπάρα διαδρομών στοιχείων του επεξεργαστή. Μετακινηθείτε στο κουμπί του επόμενου στοιχείου με το TAB ή το ΔΕΞΙ ΒΕΛΑΚΙ. Μετακινηθείτε στο κουμπί του προηγούμενου στοιχείου με το SHIFT+TAB ή το ΑΡΙΣΤΕΡΟ ΒΕΛΑΚΙ. Πατήστε ΔΙΑΣΤΗΜΑ ή ENTER για να επιλέξετε το στοιχείο στον επεξεργαστή.\"}]},\n{name:\"Εντολές\",items:[{name:\"Εντολή αναίρεσης\",legend:\"Πατήστε ${undo}\"},{name:\"Εντολή επανάληψης\",legend:\"Πατήστε ${redo}\"},{name:\"Εντολή έντονης γραφής\",legend:\"Πατήστε ${bold}\"},{name:\"Εντολή πλάγιας γραφής\",legend:\"Πατήστε ${italic}\"},{name:\"Εντολή υπογράμμισης\",legend:\"Πατήστε ${underline}\"},{name:\"Εντολή συνδέσμου\",legend:\"Πατήστε ${link}\"},{name:\"Εντολή Σύμπτηξης Εργαλειοθήκης\",legend:\"Πατήστε ${toolbarCollapse}\"},{name:\"Πρόσβαση στην προηγούμενη εντολή του χώρου εστίασης \",legend:\"Πατήστε ${accessPreviousSpace} για να έχετε πρόσβαση στον πιο κοντινό χώρο εστίασης πριν το δρομέα, για παράδειγμα: δύο παρακείμενα στοιχεία ΥΕ. Επαναλάβετε το συνδυασμό πλήκτρων για να φθάσετε στους χώρους μακρινής εστίασης. \"},\n{name:\"Πρόσβαση στην επόμενη εντολή του χώρου εστίασης\",legend:\"Πατήστε ${accessNextSpace} για να έχετε πρόσβαση στον πιο κοντινό χώρο εστίασης μετά το δρομέα, για παράδειγμα: δύο παρακείμενα στοιχεία ΥΕ. Επαναλάβετε το συνδυασμό πλήκτρων για τους χώρους μακρινής εστίασης. \"},{name:\"Βοήθεια Προσβασιμότητας\",legend:\"Πατήστε ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",\nend:\"End\",home:\"Home\",leftArrow:\"Αριστερό Βέλος\",upArrow:\"Πάνω Βέλος\",rightArrow:\"Δεξί Βέλος\",downArrow:\"Κάτω Βέλος\",insert:\"Insert \",\"delete\":\"Delete\",leftWindowKey:\"Αριστερό Πλήκτρο Windows\",rightWindowKey:\"Δεξί Πλήκτρο Windows\",selectKey:\"Πλήκτρο Select\",numpad0:\"Αριθμητικό πληκτρολόγιο 0\",numpad1:\"Αριθμητικό Πληκτρολόγιο 1\",numpad2:\"Αριθμητικό πληκτρολόγιο 2\",numpad3:\"Αριθμητικό πληκτρολόγιο 3\",numpad4:\"Αριθμητικό πληκτρολόγιο 4\",numpad5:\"Αριθμητικό πληκτρολόγιο 5\",numpad6:\"Αριθμητικό πληκτρολόγιο 6\",\nnumpad7:\"Αριθμητικό πληκτρολόγιο 7\",numpad8:\"Αριθμητικό πληκτρολόγιο 8\",numpad9:\"Αριθμητικό πληκτρολόγιο 9\",multiply:\"Πολλαπλασιασμός\",add:\"Πρόσθεση\",subtract:\"Αφαίρεση\",decimalPoint:\"Υποδιαστολή\",divide:\"Διαίρεση\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"6\",f7:\"7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Ερωτηματικό\",equalSign:\"Σύμβολο Ισότητας\",comma:\"Κόμμα\",dash:\"Παύλα\",period:\"Τελεία\",forwardSlash:\"Κάθετος\",graveAccent:\"Βαρεία\",openBracket:\"Άνοιγμα Παρένθεσης\",\nbackSlash:\"Ανάστροφη Κάθετος\",closeBracket:\"Κλείσιμο Παρένθεσης\",singleQuote:\"Απόστροφος\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"en-gb\",{title:\"Accessibility Instructions\",contents:\"Help Contents. To close this dialog press ESC.\",legend:[{name:\"General\",items:[{name:\"Editor Toolbar\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"Editor Dialog\",legend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},\n{name:\"Editor Context Menu\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},{name:\"Editor List Box\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},{name:\"Commands\",items:[{name:\" Undo command\",legend:\"Press ${undo}\"},{name:\" Redo command\",legend:\"Press ${redo}\"},{name:\" Bold command\",legend:\"Press ${bold}\"},{name:\" Italic command\",legend:\"Press ${italic}\"},{name:\" Underline command\",\nlegend:\"Press ${underline}\"},{name:\" Link command\",legend:\"Press ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Accessibility Help\",legend:\"Press ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",\ngraveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/en.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"en\",{title:\"Accessibility Instructions\",contents:\"Help Contents. To close this dialog press ESC.\",legend:[{name:\"General\",items:[{name:\"Editor Toolbar\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"Editor Dialog\",legend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},\n{name:\"Editor Context Menu\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},{name:\"Editor List Box\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},{name:\"Commands\",items:[{name:\" Undo command\",legend:\"Press ${undo}\"},{name:\" Redo command\",legend:\"Press ${redo}\"},{name:\" Bold command\",legend:\"Press ${bold}\"},{name:\" Italic command\",legend:\"Press ${italic}\"},{name:\" Underline command\",\nlegend:\"Press ${underline}\"},{name:\" Link command\",legend:\"Press ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Accessibility Help\",legend:\"Press ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",\ngraveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"eo\",{title:\"Uzindikoj pri atingeblo\",contents:\"Helpilenhavo. Por fermi tiun dialogon, premu la ESKAPAN klavon.\",legend:[{name:\"Ĝeneralaĵoj\",items:[{name:\"Ilbreto de la redaktilo\",legend:\"Premu ${toolbarFocus} por atingi la ilbreton. Moviĝu al la sekva aŭ antaŭa grupoj de la ilbreto per la klavoj TABA kaj MAJUSKLIGA-TABA. Moviĝu al la sekva aŭ antaŭa butonoj de la ilbreto per la klavoj SAGO DEKSTREN kaj SAGO MALDEKSTREN. Premu la SPACETklavon aŭ la ENENklavon por aktivigi la ilbretbutonon.\"},\n{name:\"Redaktildialogo\",legend:\"En dialogo, premu la TABAN klavon por navigi al la sekva dialogkampo, premu la MAJUSKLIGAN + TABAN klavojn por reveni al la antaŭa kampo, premu la ENENklavon por sendi la dialogon, premu la ESKAPAN klavon por nuligi la dialogon. Por dialogoj kun pluraj retpaĝoj sub langetoj, premu ALT + F10 por navigi al la langetlisto. Poste moviĝu al la sekva langeto per la klavo TABA aŭ SAGO DEKSTREN. Moviĝu al la antaŭa langeto per la klavoj MAJUSKLIGA + TABA aŭ  SAGO MALDEKSTREN. Premu la SPACETklavon aŭ la ENENklavon por selekti la langetretpaĝon.\"},\n{name:\"Kunteksta menuo de la redaktilo\",legend:\"Premu ${contextMenu} aŭ entajpu la KLAVKOMBINAĴON por malfermi la kuntekstan menuon. Poste moviĝu al la sekva opcio de la menuo per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa opcio per la klavoj MAJUSKLGA + TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la menuopcion. Malfermu la submenuon de la kuranta opcio per la SPACETklavo aŭ la ENENklavo aŭ la SAGO DEKSTREN. Revenu al la elemento de la patra menuo per la klavoj ESKAPA aŭ SAGO MALDEKSTREN. Fermu la kuntekstan menuon per la ESKAPA klavo.\"},\n{name:\"Fallisto de la redaktilo\",legend:\"En fallisto, moviĝu al la sekva listelemento per la klavoj TABA aŭ SAGO SUBEN. Moviĝu al la antaŭa listelemento per la klavoj MAJUSKLIGA + TABA aŭ SAGO SUPREN. Premu la SPACETklavon aŭ ENENklavon por selekti la opcion en la listo. Premu la ESKAPAN klavon por fermi la falmenuon.\"},{name:\"Breto indikanta la vojon al la redaktilelementoj\",legend:\"Premu ${elementsPathFocus} por navigi al la breto indikanta la vojon al la redaktilelementoj. Moviĝu al la butono de la sekva elemento per la klavoj TABA aŭ SAGO DEKSTREN. Moviĝu al la butono de la antaŭa elemento per la klavoj MAJUSKLIGA + TABA aŭ SAGO MALDEKSTREN. Premu la SPACETklavon aŭ ENENklavon por selekti la elementon en la redaktilo.\"}]},\n{name:\"Komandoj\",items:[{name:\"Komando malfari\",legend:\"Premu ${undo}\"},{name:\"Komando refari\",legend:\"Premu ${redo}\"},{name:\"Komando grasa\",legend:\"Premu ${bold}\"},{name:\"Komando kursiva\",legend:\"Premu ${italic}\"},{name:\"Komando substreki\",legend:\"Premu ${underline}\"},{name:\"Komando ligilo\",legend:\"Premu ${link}\"},{name:\"Komando faldi la ilbreton\",legend:\"Premu ${toolbarCollapse}\"},{name:\"Komando por atingi la antaŭan fokusan spacon\",legend:\"Press ${accessPreviousSpace} por atingi la plej proksiman neatingeblan fokusan spacon antaŭ la kursoro, ekzemple : du kuntuŝiĝajn HR elementojn. Ripetu la klavkombinaĵon por atingi malproksimajn fokusajn spacojn.\"},\n{name:\"Komando por atingi la sekvan fokusan spacon\",legend:\"Press ${accessNextSpace} por atingi la plej proksiman neatingeblan fokusan spacon post la kursoro, ekzemple : du kuntuŝiĝajn HR elementojn. Ripetu la klavkombinajôn por atingi malproksimajn fokusajn spacojn\"},{name:\"Helpilo pri atingeblo\",legend:\"Premu ${a11yHelp}\"}]}],backspace:\"Retropaŝo\",tab:\"Tabo\",enter:\"Enigi\",shift:\"Registrumo\",ctrl:\"Stirklavo\",alt:\"Alt-klavo\",pause:\"Paŭzo\",capslock:\"Majuskla baskulo\",escape:\"Eskapa klavo\",pageUp:\"Antaŭa Paĝo\",\npageDown:\"Sekva Paĝo\",end:\"Fino\",home:\"Hejmo\",leftArrow:\"Sago Maldekstren\",upArrow:\"Sago Supren\",rightArrow:\"Sago Dekstren\",downArrow:\"Sago Suben\",insert:\"Enmeti\",\"delete\":\"Forigi\",leftWindowKey:\"Maldekstra Windows-klavo\",rightWindowKey:\"Dekstra Windows-klavo\",selectKey:\"Selektklavo\",numpad0:\"Nombra Klavaro 0\",numpad1:\"Nombra Klavaro 1\",numpad2:\"Nombra Klavaro 2\",numpad3:\"Nombra Klavaro 3\",numpad4:\"Nombra Klavaro 4\",numpad5:\"Nombra Klavaro 5\",numpad6:\"Nombra Klavaro 6\",numpad7:\"Nombra Klavaro 7\",\nnumpad8:\"Nombra Klavaro 8\",numpad9:\"Nombra Klavaro 9\",multiply:\"Obligi\",add:\"Almeti\",subtract:\"Subtrahi\",decimalPoint:\"Dekuma Punkto\",divide:\"Dividi\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Nombra Baskulo\",scrollLock:\"Ruluma Baskulo\",semiColon:\"Punktokomo\",equalSign:\"Egalsigno\",comma:\"Komo\",dash:\"Haltostreko\",period:\"Punkto\",forwardSlash:\"Oblikvo\",graveAccent:\"Malakuto\",openBracket:\"Malferma Krampo\",backSlash:\"Retroklino\",closeBracket:\"Ferma Krampo\",\nsingleQuote:\"Citilo\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/es.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"es\",{title:\"Instrucciones de accesibilidad\",contents:\"Ayuda. Para cerrar presione ESC.\",legend:[{name:\"General\",items:[{name:\"Barra de herramientas del editor\",legend:'Presiona ${toolbarFocus} para navegar por la barra de herramientas. Para moverse por los distintos grupos de herramientas usa las teclas TAB y MAY-TAB. Para moverse por las distintas herramientas usa FLECHA DERECHA o FECHA IZQUIERDA. Presiona \"espacio\" o \"intro\" para activar la herramienta.'},{name:\"Editor de diálogo\",\nlegend:\"Dentro de un cuadro de diálogo, presione la tecla TAB para desplazarse al campo siguiente del cuadro de diálogo, pulse SHIFT + TAB para desplazarse al campo anterior, pulse ENTER para presentar cuadro de diálogo, pulse la tecla ESC para cancelar el diálogo. Para los diálogos que tienen varias páginas, presione ALT + F10 para navegar a la pestaña de la lista. Luego pasar a la siguiente pestaña con TAB o FLECHA DERECHA. Para ir a la ficha anterior con SHIFT + TAB o FLECHA IZQUIERDA. Presione ESPACIO o ENTRAR para seleccionar la página de ficha.\"},\n{name:\"Editor del menú contextual\",legend:\"Presiona ${contextMenu} o TECLA MENÚ para abrir el menú contextual. Entonces muévete a la siguiente opción del menú con TAB o FLECHA ABAJO. Muévete a la opción previa con SHIFT + TAB o FLECHA ARRIBA. Presiona ESPACIO o ENTER para seleccionar la opción del menú. Abre el submenú de la opción actual con ESPACIO o ENTER o FLECHA DERECHA. Regresa al elemento padre del menú con ESC o FLECHA IZQUIERDA. Cierra el menú contextual con ESC.\"},{name:\"Lista del Editor\",\nlegend:\"Dentro de una lista, te mueves al siguiente elemento de la lista con TAB o FLECHA ABAJO. Te mueves al elemento previo de la lista con SHIFT + TAB o FLECHA ARRIBA. Presiona ESPACIO o ENTER para elegir la opción de la lista. Presiona ESC para cerrar la lista.\"},{name:\"Barra de Ruta del Elemento en el Editor\",legend:\"Presiona ${elementsPathFocus} para navegar a los elementos de la barra de ruta. Te mueves al siguiente elemento botón con TAB o FLECHA DERECHA. Te mueves al botón previo con SHIFT + TAB o FLECHA IZQUIERDA. Presiona ESPACIO o ENTER para seleccionar el elemento en el editor.\"}]},\n{name:\"Comandos\",items:[{name:\"Comando deshacer\",legend:\"Presiona ${undo}\"},{name:\"Comando rehacer\",legend:\"Presiona ${redo}\"},{name:\"Comando negrita\",legend:\"Presiona ${bold}\"},{name:\"Comando itálica\",legend:\"Presiona ${italic}\"},{name:\"Comando subrayar\",legend:\"Presiona ${underline}\"},{name:\"Comando liga\",legend:\"Presiona ${liga}\"},{name:\"Comando colapsar barra de herramientas\",legend:\"Presiona ${toolbarCollapse}\"},{name:\"Comando accesar el anterior espacio de foco\",legend:\"Presiona ${accessPreviousSpace} para accesar el espacio de foco no disponible más cercano anterior al cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes.\"},\n{name:\"Comando accesar el siguiente spacio de foco\",legend:\"Presiona ${accessNextSpace} para accesar el espacio de foco no disponible más cercano después del cursor, por ejemplo: dos elementos HR adyacentes. Repite la combinación de teclas para alcanzar espacios de foco distantes.\"},{name:\"Ayuda de Accesibilidad\",legend:\"Presiona ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",\nend:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",\ndivide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/et.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"et\",{title:\"Accessibility Instructions\",contents:\"Abi sisu. Selle dialoogi sulgemiseks vajuta ESC klahvi.\",legend:[{name:\"Üldine\",items:[{name:\"Editor Toolbar\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"Editor Dialog\",legend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},\n{name:\"Editor Context Menu\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},{name:\"Editor List Box\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},{name:\"Commands\",items:[{name:\" Undo command\",legend:\"Press ${undo}\"},{name:\" Redo command\",legend:\"Press ${redo}\"},{name:\" Bold command\",legend:\"Press ${bold}\"},{name:\" Italic command\",legend:\"Press ${italic}\"},{name:\" Underline command\",\nlegend:\"Press ${underline}\"},{name:\" Link command\",legend:\"Press ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Accessibility Help\",legend:\"Press ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",\ngraveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"fa\",{title:\"دستورالعمل‌های دسترسی\",contents:\"راهنمای فهرست مطالب. برای بستن این کادر محاوره‌ای ESC را فشار دهید.\",legend:[{name:\"عمومی\",items:[{name:\"نوار ابزار ویرایشگر\",legend:\"${toolbarFocus} را برای باز کردن نوار ابزار بفشارید. با کلید Tab و Shif-Tab در مجموعه نوار ابزار بعدی و قبلی حرکت کنید. برای حرکت در کلید نوار ابزار قبلی و بعدی با کلید جهت‌نمای راست و چپ جابجا شوید. کلید Space یا Enter را برای فعال کردن کلید نوار ابزار بفشارید.\"},{name:\"پنجره محاورهای ویرایشگر\",\nlegend:\"در داخل یک پنجره محاورهای، کلید Tab را بفشارید تا به پنجرهی بعدی بروید، Shift+Tab برای حرکت به فیلد قبلی، فشردن Enter برای ثبت اطلاعات پنجره، فشردن Esc برای لغو پنجره محاورهای و برای پنجرههایی که چندین برگه دارند، فشردن Alt+F10 جهت رفتن به Tab-List. در نهایت حرکت به برگه بعدی با Tab یا کلید جهتنمای راست. حرکت به برگه قبلی با Shift+Tab یا کلید جهتنمای چپ. فشردن Space یا Enter برای انتخاب یک برگه.\"},{name:\"منوی متنی ویرایشگر\",legend:\"${contextMenu} یا کلید برنامههای کاربردی را برای باز کردن منوی متن را بفشارید. سپس میتوانید برای حرکت به گزینه بعدی منو با کلید Tab و یا کلید جهتنمای پایین جابجا شوید. حرکت به گزینه قبلی با Shift+Tab یا کلید جهتنمای بالا. فشردن Space یا Enter برای انتخاب یک گزینه از منو. باز کردن زیر شاخه گزینه منو جاری با کلید Space یا Enter و یا کلید جهتنمای راست و چپ. بازگشت به منوی والد با کلید Esc یا کلید جهتنمای چپ. بستن منوی متن با Esc.\"},\n{name:\"جعبه فهرست ویرایشگر\",legend:\"در داخل جعبه لیست، قلم دوم از اقلام لیست بعدی را با TAB و یا Arrow Down حرکت دهید. انتقال به قلم دوم از اقلام لیست قبلی را با SHIFT + TAB یا UP ARROW. کلید Space یا ENTER را برای انتخاب گزینه لیست بفشارید. کلید ESC را برای بستن جعبه لیست بفشارید.\"},{name:\"ویرایشگر عنصر نوار راه\",legend:\"برای رفتن به مسیر عناصر ${elementsPathFocus} را بفشارید. حرکت به کلید عنصر بعدی با کلید Tab یا  کلید جهت‌نمای راست. برگشت به کلید قبلی با Shift+Tab یا کلید جهت‌نمای چپ. فشردن Space یا Enter برای انتخاب یک عنصر در ویرایشگر.\"}]},\n{name:\"فرمان‌ها\",items:[{name:\"بازگشت به آخرین فرمان\",legend:\"فشردن ${undo}\"},{name:\"انجام مجدد فرمان\",legend:\"فشردن ${redo}\"},{name:\"فرمان درشت کردن متن\",legend:\"فشردن ${bold}\"},{name:\"فرمان کج کردن متن\",legend:\"فشردن ${italic}\"},{name:\"فرمان زیرخطدار کردن متن\",legend:\"فشردن ${underline}\"},{name:\"فرمان پیوند دادن\",legend:\"فشردن ${link}\"},{name:\"بستن نوار ابزار فرمان\",legend:\"فشردن ${toolbarCollapse}\"},{name:\"دسترسی به فرمان محل تمرکز قبلی\",legend:\"فشردن ${accessPreviousSpace} برای دسترسی به نزدیک‌ترین فضای قابل دسترسی تمرکز قبل از هشتک، برای مثال: دو عنصر مجاور HR -خط افقی-. تکرار کلید ترکیبی برای رسیدن به فضاهای تمرکز از راه دور.\"},\n{name:\"دسترسی به فضای دستور بعدی\",legend:\"برای دسترسی به نزدیک‌ترین فضای تمرکز غیر قابل دسترس، ${accessNextSpace} را پس از علامت هشتک بفشارید، برای مثال:  دو عنصر مجاور HR -خط افقی-. کلید ترکیبی را برای رسیدن به فضای تمرکز تکرار کنید.\"},{name:\"راهنمای دسترسی\",legend:\"فشردن ${a11yHelp}\"}]}],backspace:\"عقبگرد\",tab:\"برگه\",enter:\"ورود\",shift:\"تعویض\",ctrl:\"کنترل\",alt:\"دگرساز\",pause:\"توقف\",capslock:\"Caps Lock\",escape:\"گریز\",pageUp:\"صفحه به بالا\",pageDown:\"صفحه به پایین\",end:\"پایان\",home:\"خانه\",leftArrow:\"پیکان چپ\",\nupArrow:\"پیکان بالا\",rightArrow:\"پیکان راست\",downArrow:\"پیکان پایین\",insert:\"ورود\",\"delete\":\"حذف\",leftWindowKey:\"کلید چپ ویندوز\",rightWindowKey:\"کلید راست ویندوز\",selectKey:\"انتخاب کلید\",numpad0:\"کلید شماره 0\",numpad1:\"کلید شماره 1\",numpad2:\"کلید شماره 2\",numpad3:\"کلید شماره 3\",numpad4:\"کلید شماره 4\",numpad5:\"کلید شماره 5\",numpad6:\"کلید شماره 6\",numpad7:\"کلید شماره 7\",numpad8:\"کلید شماره 8\",numpad9:\"کلید شماره 9\",multiply:\"ضرب\",add:\"افزودن\",subtract:\"تفریق\",decimalPoint:\"نقطه‌ی اعشار\",divide:\"جدا کردن\",\nf1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"علامت تساوی\",comma:\"کاما\",dash:\"خط تیره\",period:\"دوره\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"fi\",{title:\"Saavutettavuus ohjeet\",contents:\"Ohjeen sisällöt. Sulkeaksesi tämän dialogin paina ESC.\",legend:[{name:\"Yleinen\",items:[{name:\"Editorin työkalupalkki\",legend:\"Paina ${toolbarFocus} siirtyäksesi työkalupalkkiin. Siirry seuraavaan ja edelliseen työkalupalkin ryhmään TAB ja SHIFT-TAB näppäimillä. Siirry seuraavaan ja edelliseen työkalupainikkeeseen käyttämällä NUOLI OIKEALLE tai NUOLI VASEMMALLE näppäimillä. Paina VÄLILYÖNTI tai ENTER näppäintä aktivoidaksesi työkalupainikkeen.\"},\n{name:\"Editorin dialogi\",legend:\"Dialogin sisällä, painamalla TAB siirryt seuraavaan dialogin kenttään, painamalla SHIFT+TAB siirryt aiempaan kenttään, painamalla ENTER lähetät dialogin, painamalla ESC peruutat dialogin. Dialogeille joissa on useita välilehtiä, paina ALT+F10 siirtyäksesi välillehtilistaan. Siirtyäksesi seuraavaan välilehteen paina TAB tai NUOLI OIKEALLE. Siirry edelliseen välilehteen painamalla SHIFT+TAB tai nuoli vasemmalle. Paina VÄLILYÖNTI tai ENTER valitaksesi välilehden.\"},{name:\"Editorin oheisvalikko\",\nlegend:\"Paina ${contextMenu} tai SOVELLUSPAINIKETTA avataksesi oheisvalikon. Liiku seuraavaan valikon vaihtoehtoon TAB tai NUOLI ALAS näppäimillä. Siirry edelliseen vaihtoehtoon SHIFT+TAB tai NUOLI YLÖS näppäimillä. Paina VÄLILYÖNTI tai ENTER valitaksesi valikon kohdan. Avataksesi nykyisen kohdan alivalikon paina VÄLILYÖNTI tai ENTER tai NUOLI OIKEALLE painiketta. Siirtyäksesi takaisin valikon ylemmälle tasolle paina ESC tai NUOLI vasemmalle. Oheisvalikko suljetaan ESC painikkeella.\"},{name:\"Editorin listalaatikko\",\nlegend:\"Listalaatikon sisällä siirry seuraavaan listan kohtaan TAB tai NUOLI ALAS painikkeilla. Siirry edelliseen listan kohtaan SHIFT+TAB tai NUOLI YLÖS painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi listan vaihtoehdon. Paina ESC sulkeaksesi listalaatikon.\"},{name:\"Editorin elementtipolun palkki\",legend:\"Paina ${elementsPathFocus} siirtyäksesi elementtipolun palkkiin. Siirry seuraavaan elementtipainikkeeseen TAB tai NUOLI OIKEALLE painikkeilla. Siirry aiempaan painikkeeseen SHIFT+TAB tai NUOLI VASEMMALLE painikkeilla. Paina VÄLILYÖNTI tai ENTER valitaksesi elementin editorissa.\"}]},\n{name:\"Komennot\",items:[{name:\"Peruuta komento\",legend:\"Paina ${undo}\"},{name:\"Tee uudelleen komento\",legend:\"Paina ${redo}\"},{name:\"Lihavoi komento\",legend:\"Paina ${bold}\"},{name:\"Kursivoi komento\",legend:\"Paina ${italic}\"},{name:\"Alleviivaa komento\",legend:\"Paina ${underline}\"},{name:\"Linkki komento\",legend:\"Paina ${link}\"},{name:\"Pienennä työkalupalkki komento\",legend:\"Paina ${toolbarCollapse}\"},{name:\"Siirry aiempaan fokustilaan komento\",legend:\"Paina ${accessPreviousSpace} siiryäksesi lähimpään kursorin edellä olevaan saavuttamattomaan fokustilaan, esimerkiksi: kaksi vierekkäistä HR elementtiä. Toista näppäinyhdistelmää päästäksesi kauempana oleviin fokustiloihin.\"},\n{name:\"Siirry seuraavaan fokustilaan komento\",legend:\"Paina ${accessPreviousSpace} siiryäksesi lähimpään kursorin jälkeen olevaan saavuttamattomaan fokustilaan, esimerkiksi: kaksi vierekkäistä HR elementtiä. Toista näppäinyhdistelmää päästäksesi kauempana oleviin fokustiloihin.\"},{name:\"Saavutettavuus ohjeet\",legend:\"Paina ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",\nend:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numeronäppäimistö 0\",numpad1:\"Numeronäppäimistö 1\",numpad2:\"Numeronäppäimistö 2\",numpad3:\"Numeronäppäimistö 3\",numpad4:\"Numeronäppäimistö 4\",numpad5:\"Numeronäppäimistö 5\",numpad6:\"Numeronäppäimistö 6\",numpad7:\"Numeronäppäimistö 7\",numpad8:\"Numeronäppäimistö 8\",\nnumpad9:\"Numeronäppäimistö 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Puolipiste\",equalSign:\"Equal Sign\",comma:\"Pilkku\",dash:\"Dash\",period:\"Piste\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"fr-ca\",{title:\"Instructions d'accessibilité\",contents:\"Contenu de l'aide.  Pour fermer cette fenêtre, appuyez sur ESC.\",legend:[{name:\"Général\",items:[{name:\"Barre d'outil de l'éditeur\",legend:\"Appuyer sur ${toolbarFocus} pour accéder à la barre d'outils. Se déplacer vers les groupes suivant ou précédent de la barre d'outil avec les touches TAB et SHIFT-TAB. Se déplacer vers les boutons suivant ou précédent de la barre d'outils avec les touches FLECHE DROITE et FLECHE GAUCHE. Appuyer sur la barre d'espace ou la touche ENTRER pour activer le bouton de barre d'outils.\"},\n{name:\"Dialogue de l'éditeur\",legend:\"A l'intérieur d'un dialogue, appuyer sur la touche TAB pour naviguer jusqu'au champ de dalogue suivant, appuyez sur les touches SHIFT + TAB pour revenir au champ précédent, appuyez sur la touche ENTRER pour soumettre le dialogue, appuyer sur la touche ESC pour annuler le dialogue. Pour les dialogues avec plusieurs pages d'onglets, appuyer sur ALT + F10 pour naviguer jusqu'à la liste des onglets. Puis se déplacer vers l'onglet suivant avec la touche TAB ou FLECHE DROITE. Se déplacer vers l'onglet précédent avec les touches SHIFT + TAB ou FLECHE GAUCHE. Appuyer sur la barre d'espace ou la touche ENTRER pour sélectionner la page de l'onglet.\"},\n{name:\"Menu contextuel de l'éditeur\",legend:\"Appuyer sur ${contextMenu} ou entrer le RACCOURCI CLAVIER pour ouvrir le menu contextuel. Puis se déplacer vers l'option suivante du menu avec les touches TAB ou FLECHE BAS. Se déplacer vers l'option précédente avec les touches SHIFT+TAB ou FLECHE HAUT. appuyer sur la BARRE D'ESPACE ou la touche ENTREE pour sélectionner l'option du menu. Oovrir le sous-menu de l'option courante avec la BARRE D'ESPACE ou les touches ENTREE ou FLECHE DROITE. Revenir à l'élément de menu parent avec les touches ESC ou FLECHE GAUCHE. Fermer le menu contextuel avec ESC.\"},\n{name:\"Menu déroulant de l'éditeur\",legend:\"A l'intérieur d'une liste en menu déroulant, se déplacer vers l'élément suivant de la liste avec les touches TAB ou FLECHE BAS. Se déplacer vers l'élément précédent de la liste avec les touches SHIFT + TAB ou FLECHE HAUT. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'option dans la liste. Appuyer sur ESC pour fermer le menu déroulant.\"},{name:\"Barre d'emplacement des éléments de l'éditeur\",legend:\"Appuyer sur ${elementsPathFocus} pour naviguer vers la barre d'emplacement des éléments de léditeur. Se déplacer vers le bouton d'élément suivant avec les touches TAB ou FLECHE DROITE. Se déplacer vers le bouton d'élément précédent avec les touches SHIFT+TAB ou FLECHE GAUCHE. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'élément dans l'éditeur.\"}]},\n{name:\"Commandes\",items:[{name:\"Annuler\",legend:\"Appuyer sur ${undo}\"},{name:\"Refaire\",legend:\"Appuyer sur ${redo}\"},{name:\"Gras\",legend:\"Appuyer sur ${bold}\"},{name:\"Italique\",legend:\"Appuyer sur ${italic}\"},{name:\"Souligné\",legend:\"Appuyer sur ${underline}\"},{name:\"Lien\",legend:\"Appuyer sur ${link}\"},{name:\"Enrouler la barre d'outils\",legend:\"Appuyer sur ${toolbarCollapse}\"},{name:\"Accéder à l'objet de focus précédent\",legend:\"Appuyer ${accessPreviousSpace} pour accéder au prochain espace disponible avant le curseur, par exemple: deux éléments HR adjacents.  Répéter la combinaison pour joindre les éléments d'espaces distantes.\"},\n{name:\"Accéder au prochain objet de focus\",legend:\"Appuyer ${accessNextSpace} pour accéder au prochain espace disponible après le curseur, par exemple: deux éléments HR adjacents.  Répéter la combinaison pour joindre les éléments d'espaces distantes.\"},{name:\"Aide d'accessibilité\",legend:\"Appuyer sur ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",\nleftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",\nf2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"fr\",{title:\"Instructions d'accessibilité\",contents:\"Contenu de l'aide. Pour fermer ce dialogue, appuyez sur la touche Ech (Echappement).\",legend:[{name:\"Général\",items:[{name:\"Barre d'outils de l'éditeur\",legend:\"Appuyer sur ${toolbarFocus} pour accéder à la barre d'outils. Se déplacer vers les groupes suivant ou précédent de la barre d'outil avec les touches TAB et SHIFT-TAB. Se déplacer vers les boutons suivant ou précédent de la barre d'outils avec les touches FLECHE DROITE et FLECHE GAUCHE. Appuyer sur la barre d'espace ou la touche ENTRER pour activer le bouton de barre d'outils.\"},\n{name:\"Dialogue de l'éditeur\",legend:\"A l'intérieur d'un dialogue, appuyer sur la touche TAB pour naviguer jusqu'au champ de dalogue suivant, appuyez sur les touches SHIFT + TAB pour revenir au champ précédent, appuyez sur la touche ENTRER pour soumettre le dialogue, appuyer sur la touche ESC pour annuler le dialogue. Pour les dialogues avec plusieurs pages d'onglets, appuyer sur ALT + F10 pour naviguer jusqu'à la liste des onglets. Puis se déplacer vers l'onglet suivant avec la touche TAB ou FLECHE DROITE. Se déplacer vers l'onglet précédent avec les touches SHIFT + TAB ou FLECHE GAUCHE. Appuyer sur la barre d'espace ou la touche ENTRER pour sélectionner la page de l'onglet.\"},\n{name:\"Menu contextuel de l'éditeur\",legend:\"Appuyer sur ${contextMenu} ou entrer le RACCOURCI CLAVIER pour ouvrir le menu contextuel. Puis se déplacer vers l'option suivante du menu avec les touches TAB ou FLECHE BAS. Se déplacer vers l'option précédente avec les touches  SHIFT+TAB ou FLECHE HAUT. appuyer sur la BARRE D'ESPACE ou la touche ENTREE pour sélectionner l'option du menu. Oovrir le sous-menu de l'option courante avec la BARRE D'ESPACE ou les touches ENTREE ou FLECHE DROITE. Revenir à l'élément de menu parent avec les touches Ech ou FLECHE GAUCHE. Fermer le menu contextuel avec Ech.\"},\n{name:\"Zone de liste de l'éditeur\",legend:\"Dans la liste en menu déroulant, se déplacer vers l'élément suivant de la liste avec les touches TAB ou FLECHE BAS. Se déplacer vers l'élément précédent de la liste avec les touches MAJ + TAB ou FLECHE HAUT. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'option dans la liste. Appuyer sur ESC pour fermer le menu déroulant.\"},{name:\"Barre d'emplacement des éléments de l'éditeur\",legend:\"Appuyer sur ${elementsPathFocus} pour naviguer vers la barre d'emplacement des éléments de l'éditeur. Se déplacer vers le bouton d'élément suivant avec les touches TAB ou FLECHE DROITE. Se déplacer vers le bouton d'élément précédent avec les touches MAJ+TAB ou FLECHE GAUCHE. Appuyer sur la BARRE D'ESPACE ou sur ENTREE pour sélectionner l'élément dans l'éditeur.\"}]},\n{name:\"Commandes\",items:[{name:\" Annuler la commande\",legend:\"Appuyer sur ${undo}\"},{name:\"Refaire la commande\",legend:\"Appuyer sur ${redo}\"},{name:\" Commande gras\",legend:\"Appuyer sur ${bold}\"},{name:\" Commande italique\",legend:\"Appuyer sur ${italic}\"},{name:\" Commande souligné\",legend:\"Appuyer sur ${underline}\"},{name:\" Commande lien\",legend:\"Appuyer sur ${link}\"},{name:\" Commande enrouler la barre d'outils\",legend:\"Appuyer sur ${toolbarCollapse}\"},{name:\"Accéder à la précédente commande d'espace de mise au point\",\nlegend:\"Appuyez sur ${accessPreviousSpace} pour accéder à l'espace hors d'atteinte le plus proche avant le caret, par exemple: deux éléments HR adjacents. Répétez la combinaison de touches pour atteindre les espaces de mise au point distants.\"},{name:\"Accès à la prochaine commande de l'espace de mise au point\",legend:\"Appuyez sur ${accessNextSpace} pour accéder au plus proche espace de mise au point hors d'atteinte après le caret, par exemple: deux éléments HR adjacents. répétez la combinaison de touches pour atteindre les espace de mise au point distants.\"},\n{name:\" Aide Accessibilité\",legend:\"Appuyer sur ${a11yHelp}\"}]}],backspace:\"Retour arrière\",tab:\"Tabulation\",enter:\"Entrée\",shift:\"Majuscule\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Verr. Maj.\",escape:\"Echap\",pageUp:\"Page supérieure\",pageDown:\"Page inférieure\",end:\"Fin\",home:\"Retour\",leftArrow:\"Flèche gauche\",upArrow:\"Flèche haute\",rightArrow:\"Flèche droite\",downArrow:\"Flèche basse\",insert:\"Insertion\",\"delete\":\"Supprimer\",leftWindowKey:\"Touche Windows gauche\",rightWindowKey:\"Touche Windows droite\",\nselectKey:\"Touche menu\",numpad0:\"Pavé numérique 0\",numpad1:\"Pavé numérique 1\",numpad2:\"Pavé numérique 2\",numpad3:\"Pavé numérique 3\",numpad4:\"Pavé numérique 4\",numpad5:\"Pavé numérique 5\",numpad6:\"Pavé numérique 6\",numpad7:\"Pavé numérique 7\",numpad8:\"Pavé numérique 8\",numpad9:\"Pavé numérique 9\",multiply:\"Multiplier\",add:\"Addition\",subtract:\"Soustraire\",decimalPoint:\"Point décimal\",divide:\"Diviser\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",\nnumLock:\"Verrouillage numérique\",scrollLock:\"Arrêt défilement\",semiColon:\"Point virgule\",equalSign:\"Signe égal\",comma:\"Virgule\",dash:\"Tiret\",period:\"Point\",forwardSlash:\"Barre oblique\",graveAccent:\"Accent grave\",openBracket:\"Parenthèse ouvrante\",backSlash:\"Barre oblique inverse\",closeBracket:\"Parenthèse fermante\",singleQuote:\"Apostrophe\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"gl\",{title:\"Instrucións de accesibilidade\",contents:\"Axuda. Para pechar este diálogo prema ESC.\",legend:[{name:\"Xeral\",items:[{name:\"Barra de ferramentas do editor\",legend:\"Prema ${toolbarFocus} para navegar pola barra de ferramentas. Para moverse polos distintos grupos de ferramentas use as teclas TAB e MAIÚS+TAB. Para moverse polas distintas ferramentas use FRECHA DEREITA ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para activar o botón da barra de ferramentas.\"},\n{name:\"Editor de diálogo\",legend:\"Dentro dun cadro de diálogo, prema a tecla TAB para desprazarse ao campo seguinte do cadro de diálogo, prema MAIÚS + TAB para desprazarse ao campo anterior, prema INTRO para presentar o cadro de diálogo, prema a tecla ESC para cancelar o diálogo. Para os diálogos que teñen varias páxinas, prema ALT + F10 para navegar á lapela da lista. Despois pasar á seguinte lapela con TAB ou FRECHA DEREITA. Para ir á lapela anterior con SHIFT + TAB ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para seleccionar a lapela da páxina.\"},\n{name:\"Editor do menú contextual\",legend:\"Prema ${contextMenu} ou a TECLA MENÚ para abrir o menú contextual. A seguir móvase á seguinte opción do menú con TAB ou FRECHA ABAIXO. Móvase á opción anterior con MAIÚS + TAB ou FRECHA ARRIBA. Prema ESPAZO ou INTRO para seleccionar a opción do menú. Abra o submenú da opción actual con ESPAZO ou INTRO ou FRECHA DEREITA. Regrese ao elemento principal do menú con ESC ou FRECHA ESQUERDA. Peche o menú contextual con ESC.\"},{name:\"Lista do editor\",legend:\"Dentro dunha lista, móvase ao seguinte elemento da lista con TAB ou FRECHA ABAIXO. Móvase ao elemento anterior da lista con MAIÚS + TAB ou FRECHA ARRIBA. Prema ESPAZO ou INTRO para escoller a opción da lista. Prema ESC para pechar a lista.\"},\n{name:\"Barra da ruta ao elemento no editor\",legend:\"Prema ${elementsPathFocus} para navegar ata os elementos da barra de ruta. Móvase ao seguinte elemento botón con TAB ou FRECHA DEREITA. Móvase ao botón anterior con MAIÚS + TAB ou FRECHA ESQUERDA. Prema ESPAZO ou INTRO para seleccionar o elemento no editor.\"}]},{name:\"Ordes\",items:[{name:\"Orde «desfacer»\",legend:\"Prema ${undo}\"},{name:\"Orde «refacer»\",legend:\"Prema ${redo}\"},{name:\"Orde «negra»\",legend:\"Prema ${bold}\"},{name:\"Orde «cursiva»\",legend:\"Prema ${italic}\"},\n{name:\"Orde «subliñar»\",legend:\"Prema ${underline}\"},{name:\"Orde «ligazón»\",legend:\"Prema ${link}\"},{name:\"Orde «contraer a barra de ferramentas»\",legend:\"Prema ${toolbarCollapse}\"},{name:\"Orde «acceder ao anterior espazo en foco»\",legend:\"Prema ${accessPreviousSpace} para acceder ao espazo máis próximo de foco inalcanzábel anterior ao cursor, por exemplo: dous elementos HR adxacentes. Repita a combinación de teclas para chegar a espazos de foco distantes.\"},{name:\"Orde «acceder ao seguinte espazo en foco»\",\nlegend:\"Prema ${accessNextSpace} para acceder ao espazo máis próximo de foco inalcanzábel posterior ao cursor, por exemplo: dous elementos HR adxacentes. Repita a combinación de teclas para chegar a espazos de foco distantes.\"},{name:\"Axuda da accesibilidade\",legend:\"Prema ${a11yHelp}\"}]}],backspace:\"Ir atrás\",tab:\"Tabulador\",enter:\"Intro\",shift:\"Maiús\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pausa\",capslock:\"Bloq. Maiús\",escape:\"Escape\",pageUp:\"Páxina arriba\",pageDown:\"Páxina abaixo\",end:\"Fin\",home:\"Inicio\",\nleftArrow:\"Frecha esquerda\",upArrow:\"Frecha arriba\",rightArrow:\"Frecha dereita\",downArrow:\"Frecha abaixo\",insert:\"Inserir\",\"delete\":\"Supr\",leftWindowKey:\"Tecla Windows esquerda\",rightWindowKey:\"Tecla Windows dereita\",selectKey:\"Escolla a tecla\",numpad0:\"Tec. numérico 0\",numpad1:\"Tec. numérico 1\",numpad2:\"Tec. numérico 2\",numpad3:\"Tec. numérico 3\",numpad4:\"Tec. numérico 4\",numpad5:\"Tec. numérico 5\",numpad6:\"Tec. numérico 6\",numpad7:\"Tec. numérico 7\",numpad8:\"Tec. numérico 8\",numpad9:\"Tec. numérico 9\",\nmultiply:\"Multiplicar\",add:\"Sumar\",subtract:\"Restar\",decimalPoint:\"Punto decimal\",divide:\"Dividir\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Bloq. num.\",scrollLock:\"Bloq. despraz.\",semiColon:\"Punto e coma\",equalSign:\"Signo igual\",comma:\"Coma\",dash:\"Guión\",period:\"Punto\",forwardSlash:\"Barra inclinada\",graveAccent:\"Acento grave\",openBracket:\"Abrir corchete\",backSlash:\"Barra invertida\",closeBracket:\"Pechar corchete\",singleQuote:\"Comiña simple\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"gu\",{title:\"એક્ક્ષેબિલિટી ની વિગતો\",contents:\"હેલ્પ. આ બંધ કરવા ESC દબાવો.\",legend:[{name:\"જનરલ\",items:[{name:\"એડિટર ટૂલબાર\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"એડિટર ડાયલોગ\",legend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},\n{name:\"Editor Context Menu\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},{name:\"Editor List Box\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},{name:\"કમાંડસ\",items:[{name:\"અન્ડું કમાંડ\",legend:\"$ દબાવો {undo}\"},{name:\"ફરી કરો કમાંડ\",legend:\"$ દબાવો {redo}\"},{name:\"બોલ્દનો કમાંડ\",legend:\"$ દબાવો {bold}\"},{name:\" Italic command\",legend:\"Press ${italic}\"},{name:\" Underline command\",\nlegend:\"Press ${underline}\"},{name:\" Link command\",legend:\"Press ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Accessibility Help\",legend:\"Press ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",\ngraveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/he.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"he\",{title:\"הוראות נגישות\",contents:\"הוראות נגישות. לסגירה לחץ אסקייפ (ESC).\",legend:[{name:\"כללי\",items:[{name:\"סרגל הכלים\",legend:\"לחץ על ${toolbarFocus} כדי לנווט לסרגל הכלים. עבור לכפתור הבא עם מקש הטאב (TAB) או חץ שמאלי. עבור לכפתור הקודם עם מקש השיפט (SHIFT) + טאב (TAB) או חץ ימני. לחץ רווח או אנטר (ENTER) כדי להפעיל את הכפתור הנבחר.\"},{name:\"דיאלוגים (חלונות תשאול)\",legend:\"בתוך דיאלוג, לחץ טאב (TAB) כדי לנווט לשדה הבא, לחץ שיפט (SHIFT) + טאב (TAB) כדי לנווט לשדה הקודם, לחץ אנטר (ENTER) כדי לשלוח את הדיאלוג, לחץ אסקייפ (ESC) כדי לבטל. בתוך דיאלוגים בעלי מספר טאבים (לשוניות), לחץ אלט (ALT) + F10 כדי לנווט לשורת הטאבים. נווט לטאב הבא עם טאב (TAB) או חץ שמאלי. עבור לטאב הקודם עם שיפט (SHIFT) + טאב (TAB) או חץ שמאלי. לחץ רווח או אנטר (ENTER) כדי להיכנס לטאב.\"},\n{name:\"תפריט ההקשר (Context Menu)\",legend:\"לחץ ${contextMenu} או APPLICATION KEYכדי לפתוח את תפריט ההקשר. עבור לאפשרות הבאה עם טאב (TAB) או חץ למטה. עבור לאפשרות הקודמת עם שיפט (SHIFT) + טאב (TAB) או חץ למעלה. לחץ רווח או אנטר (ENTER) כדי לבחור את האפשרות. פתח את תת התפריט (Sub-menu) של האפשרות הנוכחית עם רווח או אנטר (ENTER) או חץ שמאלי. חזור לתפריט האב עם אסקייפ (ESC) או חץ שמאלי. סגור את תפריט ההקשר עם אסקייפ (ESC).\"},{name:\"תפריטים צפים (List boxes)\",legend:\"בתוך תפריט צף, עבור לפריט הבא עם טאב (TAB) או חץ למטה. עבור לתפריט הקודם עם שיפט (SHIFT) + טאב (TAB) or חץ עליון. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"עץ אלמנטים (Elements Path)\",legend:\"לחץ ${elementsPathFocus} כדי לנווט לעץ האלמנטים. עבור לפריט הבא עם טאב (TAB) או חץ ימני. עבור לפריט הקודם עם שיפט (SHIFT) + טאב (TAB) או חץ שמאלי. לחץ רווח או אנטר (ENTER) כדי לבחור את האלמנט בעורך.\"}]},{name:\"פקודות\",items:[{name:\" ביטול צעד אחרון\",legend:\"לחץ ${undo}\"},{name:\" חזרה על צעד אחרון\",legend:\"לחץ ${redo}\"},{name:\" הדגשה\",legend:\"לחץ ${bold}\"},{name:\" הטייה\",legend:\"לחץ ${italic}\"},{name:\" הוספת קו תחתון\",legend:\"לחץ ${underline}\"},{name:\" הוספת לינק\",\nlegend:\"לחץ ${link}\"},{name:\" כיווץ סרגל הכלים\",legend:\"לחץ ${toolbarCollapse}\"},{name:\"גישה למיקום המיקוד הקודם\",legend:\"לחץ ${accessPreviousSpace} כדי לגשת למיקום המיקוד הלא-נגיש הקרוב לפני הסמן, למשל בין שני אלמנטים סמוכים מסוג HR. חזור על צירוף מקשים זה כדי להגיע למקומות מיקוד רחוקים יותר.\"},{name:\"גישה למיקום המיקוד הבא\",legend:\"לחץ ${accessNextSpace} כדי לגשת למיקום המיקוד הלא-נגיש הקרוב אחרי הסמן, למשל בין שני אלמנטים סמוכים מסוג HR. חזור על צירוף מקשים זה כדי להגיע למקומות מיקוד רחוקים יותר.\"},\n{name:\" הוראות נגישות\",legend:\"לחץ ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"הכנס\",\"delete\":\"מחק\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",\nnumpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"הוסף\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",\nopenBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"hi\",{title:\"Accessibility Instructions\",contents:\"Help Contents. To close this dialog press ESC.\",legend:[{name:\"सामान्य\",items:[{name:\"Editor Toolbar\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"Editor Dialog\",legend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},\n{name:\"Editor Context Menu\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},{name:\"Editor List Box\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},{name:\"Commands\",items:[{name:\" Undo command\",legend:\"Press ${undo}\"},{name:\" Redo command\",legend:\"Press ${redo}\"},{name:\" Bold command\",legend:\"Press ${bold}\"},{name:\" Italic command\",legend:\"Press ${italic}\"},{name:\" Underline command\",\nlegend:\"Press ${underline}\"},{name:\" Link command\",legend:\"Press ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Accessibility Help\",legend:\"Press ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",\ngraveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"hr\",{title:\"Upute dostupnosti\",contents:\"Sadržaj pomoći. Za zatvaranje pritisnite ESC.\",legend:[{name:\"Općenito\",items:[{name:\"Alatna traka\",legend:\"Pritisni ${toolbarFocus} za navigaciju do alatne trake. Pomicanje do prethodne ili sljedeće alatne grupe vrši se pomoću SHIFT-TAB i TAB. Pomicanje do prethodnog ili sljedećeg gumba u alatnoj traci vrši se pomoću lijeve i desne strelice kursora. Pritisnite SPACE ili ENTER za aktivaciju alatne trake.\"},{name:\"Dijalog\",\nlegend:\"Unutar dijaloga, pritisnite TAB za navigaciju do sljedećeg polja, pritisnite SHIFT + TAB za vraćanje na prethodno polje, pritisnite ENTER za slanje dijaloga ili ESC za zatvaranje dijaloga. Za dijaloge koji imaju višestruke kartice, pritisnite ALT + F10 za na navigaciju i zatim TAB ili lijeva strelica kursora ili SHIFT + TAB i desna strelica kursora. SPACE ili ENTER odabiru karticu.\"},{name:\"Kontekstni izbornik\",legend:\"Pritisnite ${contextMenu} ili APPLICATION tipku za otvaranje kontekstnog izbornika. Pomicanje se vrši TAB ili strelicom kursora prema dolje ili SHIFT+TAB ili strelica kursora prema gore. SPACE ili ENTER odabiru opciju izbornika. Otvorite podizbornik trenutne opcije sa  SPACE, ENTER ili desna strelica kursora. Povratak na prethodni izbornik vrši se sa ESC ili lijevom strelicom kursora. Zatvaranje se vrši pritiskom na tipku ESC.\"},\n{name:\"Lista\",legend:\"Unutar list-boxa, pomicanje na sljedeću stavku vrši se sa TAB ili strelica kursora prema dolje. Na prethodnu sa SHIFT + TAB ili strelica prema gore. Pritiskom na SPACE ili ENTER odabire se stavka ili ESC za zatvaranje.\"},{name:\"Traka putanje elemenata\",legend:\"Pritisnite ${elementsPathFocus} za navigaciju po putanji elemenata. Pritisnite TAB ili desnu strelicu kursora za pomicanje na sljedeći element ili SHIFT + TAB ili lijeva strelica kursora za pomicanje na prethodni element. Pritiskom na SPACE ili ENTER vrši se odabir elementa.\"}]},\n{name:\"Naredbe\",items:[{name:\"Vrati naredbu\",legend:\"Pritisni ${undo}\"},{name:\"Ponovi naredbu\",legend:\"Pritisni ${redo}\"},{name:\"Bold naredba\",legend:\"Pritisni ${bold}\"},{name:\"Italic naredba\",legend:\"Pritisni ${italic}\"},{name:\"Underline naredba\",legend:\"Pritisni ${underline}\"},{name:\"Link naredba\",legend:\"Pritisni ${link}\"},{name:\"Smanji alatnu traku naredba\",legend:\"Pritisni ${toolbarCollapse}\"},{name:\"Access previous focus space naredba\",legend:\"Pritisni ${accessPreviousSpace} za pristup najbližem nedostupnom razmaku prije kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak.\"},\n{name:\"Access next focus space naredba\",legend:\"Pritisni ${accessNextSpace} za pristup najbližem nedostupnom razmaku nakon kursora, npr.: dva spojena HR elementa. Ponovnim pritiskom dohvatiti će se sljedeći nedostupni razmak.\"},{name:\"Pomoć za dostupnost\",legend:\"Pritisni ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",\nupArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",\nf4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"hu\",{title:\"Kisegítő utasítások\",contents:\"Súgó tartalmak. A párbeszédablak bezárásához nyomjon ESC-et.\",legend:[{name:\"Általános\",items:[{name:\"Szerkesztő Eszköztár\",legend:\"Nyomjon ${toolbarFocus} hogy kijelölje az eszköztárat. A következő és előző eszköztár csoporthoz a TAB és SHIFT TAB-al juthat el. A következő és előző eszköztár gombhoz a BAL NYÍL vagy JOBB NYÍL gombbal juthat el. Nyomjon SPACE-t vagy ENTER-t hogy aktiválja az eszköztár gombot.\"},{name:\"Szerkesző párbeszéd ablak\",\nlegend:\"Párbeszédablakban nyomjon TAB-ot a következő párbeszédmezőhöz ugráshoz, nyomjon SHIFT + TAB-ot az előző mezőhöz ugráshoz, nyomjon ENTER-t a párbeszédablak elfogadásához, nyomjon ESC-et a párbeszédablak elvetéséhez. Azokhoz a párbeszédablakokhoz, amik több fület tartalmaznak, nyomjon ALT + F10-et hogy a fülekre ugorjon. Ezután a TAB-al vagy a JOBB NYÍLLAL a következő fülre ugorhat. Az előző fülre ugráshoz használja a SHIFT + TAB-ot vagy a BAL NYILAT. Nyomjon SPACE-t vagy ENTER-t hogy kijelölje a fület.\"},\n{name:\"Szerkesztő helyi menü\",legend:\"Nyomjon ${contextMenu}-t vagy ALKALMAZÁS BILLENTYŰT a helyi menü megnyitásához. Ezután a következő menüpontra léphet a TAB vagy LEFELÉ NYÍLLAL. Az előző opciót a SHIFT+TAB vagy FELFELÉ NYÍLLAL érheti el. Nyomjon SPACE-t vagy ENTER-t a menüpont kiválasztásához. A jelenlegi menüpont almenüjének megnyitásához nyomjon SPACE-t vagy ENTER-t, vagy JOBB NYILAT. A főmenühöz való visszatéréshez nyomjon ESC-et vagy BAL NYILAT. A helyi menü bezárása az ESC billentyűvel lehetséges.\"},\n{name:\"Szerkesztő lista\",legend:\"A listán belül a következő elemre a TAB vagy LEFELÉ NYÍLLAL mozoghat. Az előző elem kiválasztásához nyomjon SHIFT+TAB-ot vagy FELFELÉ NYILAT. Nyomjon SPACE-t vagy ENTER-t az elem kiválasztásához. Az ESC billentyű megnyomásával bezárhatja a listát.\"},{name:\"Szerkesztő elem utak sáv\",legend:\"Nyomj ${elementsPathFocus} hogy kijelöld a elemek út sávját. A következő elem gombhoz a TAB-al vagy a JOBB NYÍLLAL juthatsz el. Az előző gombhoz a SHIFT+TAB vagy BAL NYÍLLAL mehetsz. A SPACE vagy ENTER billentyűvel kiválaszthatod az elemet a szerkesztőben.\"}]},\n{name:\"Parancsok\",items:[{name:\"Parancs visszavonása\",legend:\"Nyomj ${undo}\"},{name:\"Parancs megismétlése\",legend:\"Nyomjon ${redo}\"},{name:\"Félkövér parancs\",legend:\"Nyomjon ${bold}\"},{name:\"Dőlt parancs\",legend:\"Nyomjon ${italic}\"},{name:\"Aláhúzott parancs\",legend:\"Nyomjon ${underline}\"},{name:\"Link parancs\",legend:\"Nyomjon ${link}\"},{name:\"Szerkesztősáv összecsukása parancs\",legend:\"Nyomjon ${toolbarCollapse}\"},{name:\"Hozzáférés az előző fókusz helyhez parancs\",legend:\"Nyomj ${accessNextSpace} hogy hozzáférj a legközelebbi elérhetetlen fókusz helyhez a hiányjel előtt, például: két szomszédos HR elemhez. Ismételd meg a billentyűkombinációt hogy megtaláld a távolabbi fókusz helyeket.\"},\n{name:\"Hozzáférés a következő fókusz helyhez parancs\",legend:\"Nyomj ${accessNextSpace} hogy hozzáférj a legközelebbi elérhetetlen fókusz helyhez a hiányjel után, például: két szomszédos HR elemhez. Ismételd meg a billentyűkombinációt hogy megtaláld a távolabbi fókusz helyeket.\"},{name:\"Kisegítő súgó\",legend:\"Nyomjon ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",\nend:\"End\",home:\"Home\",leftArrow:\"balra nyíl\",upArrow:\"felfelé nyíl\",rightArrow:\"jobbra nyíl\",downArrow:\"lefelé nyíl\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"bal Windows-billentyű\",rightWindowKey:\"jobb Windows-billentyű\",selectKey:\"Billentyű választása\",numpad0:\"Számbillentyűk 0\",numpad1:\"Számbillentyűk 1\",numpad2:\"Számbillentyűk 2\",numpad3:\"Számbillentyűk 3\",numpad4:\"Számbillentyűk 4\",numpad5:\"Számbillentyűk 5\",numpad6:\"Számbillentyűk 6\",numpad7:\"Számbillentyűk 7\",numpad8:\"Számbillentyűk 8\",\nnumpad9:\"Számbillentyűk 9\",multiply:\"Szorzás\",add:\"Hozzáadás\",subtract:\"Kivonás\",decimalPoint:\"Tizedespont\",divide:\"Osztás\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Pontosvessző\",equalSign:\"Egyenlőségjel\",comma:\"Vessző\",dash:\"Kötőjel\",period:\"Pont\",forwardSlash:\"Perjel\",graveAccent:\"Visszafelé dőlő ékezet\",openBracket:\"Nyitó szögletes zárójel\",backSlash:\"fordított perjel\",closeBracket:\"Záró szögletes zárójel\",\nsingleQuote:\"szimpla idézőjel\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/id.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"id\",{title:\"Accessibility Instructions\",contents:\"Bantuan. Tekan ESC untuk menutup dialog ini.\",legend:[{name:\"Umum\",items:[{name:\"Editor Toolbar\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"Editor Dialog\",legend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},\n{name:\"Editor Context Menu\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},{name:\"Editor List Box\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},{name:\"Commands\",items:[{name:\" Undo command\",legend:\"Press ${undo}\"},{name:\" Redo command\",legend:\"Press ${redo}\"},{name:\" Bold command\",legend:\"Press ${bold}\"},{name:\" Italic command\",legend:\"Press ${italic}\"},{name:\" Underline command\",\nlegend:\"Press ${underline}\"},{name:\" Link command\",legend:\"Press ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Accessibility Help\",legend:\"Press ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",\ngraveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/it.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"it\",{title:\"Istruzioni di Accessibilità\",contents:\"Contenuti di Aiuto. Per chiudere questa finestra premi ESC.\",legend:[{name:\"Generale\",items:[{name:\"Barra degli strumenti Editor\",legend:\"Premi ${toolbarFocus} per navigare fino alla barra degli strumenti. Muoviti tra i gruppi della barra degli strumenti con i tasti Tab e Maiusc-Tab. Spostati tra il successivo ed il precedente pulsante della barra degli strumenti usando le frecce direzionali Destra e Sinistra. Premi Spazio o Invio per attivare il pulsante della barra degli strumenti.\"},\n{name:\"Finestra Editor\",legend:\"All'interno di una finestra di dialogo, premi Tab per navigare fino al campo successivo della finestra di dialogo, premi Maiusc-Tab per tornare al campo precedente, premi Invio per inviare la finestra di dialogo, premi Esc per uscire. Per le finestre che hanno schede multiple, premi Alt+F10 per navigare nella lista delle schede. Quindi spostati alla scheda successiva con il tasto Tab oppure con la Freccia Destra. Torna alla scheda precedente con Maiusc+Tab oppure con la Freccia Sinistra. Premi Spazio o Invio per scegliere la scheda.\"},\n{name:\"Menù contestuale Editor\",legend:\"Premi ${contextMenu} o TASTO APPLICAZIONE per aprire il menu contestuale. Dunque muoviti all'opzione successiva del menu con il tasto TAB o con la Freccia Sotto. Muoviti all'opzione precedente con  MAIUSC+TAB o con Freccia Sopra. Premi SPAZIO o INVIO per scegliere l'opzione di menu. Apri il sottomenu dell'opzione corrente con SPAZIO o INVIO oppure con la Freccia Destra. Torna indietro al menu superiore con ESC oppure Freccia Sinistra. Chiudi il menu contestuale con ESC.\"},\n{name:\"Box Lista Editor\",legend:\"Dentro un box-lista, muoviti al prossimo elemento della lista con TAB o con la Freccia direzionale giù. Spostati all'elemento precedente con MAIUSC+TAB oppure con Freccia direzionale sopra. Premi SPAZIO o INVIO per scegliere l'opzione della lista. Premi ESC per chiudere il box-lista.\"},{name:\"Barra percorso elementi editor\",legend:\"Premi ${elementsPathFocus} per navigare tra gli elementi della barra percorso. Muoviti al prossimo pulsante di elemento con TAB o la Freccia direzionale destra. Muoviti al pulsante precedente con MAIUSC+TAB o la Freccia Direzionale Sinistra. Premi SPAZIO o INVIO per scegliere l'elemento nell'editor.\"}]},\n{name:\"Comandi\",items:[{name:\" Annulla comando\",legend:\"Premi ${undo}\"},{name:\" Ripeti comando\",legend:\"Premi ${redo}\"},{name:\" Comando Grassetto\",legend:\"Premi ${bold}\"},{name:\" Comando Corsivo\",legend:\"Premi ${italic}\"},{name:\" Comando Sottolineato\",legend:\"Premi ${underline}\"},{name:\" Comando Link\",legend:\"Premi ${link}\"},{name:\" Comando riduci barra degli strumenti\",legend:\"Premi ${toolbarCollapse}\"},{name:\"Comando di accesso al precedente spazio di focus\",legend:\"Premi ${accessPreviousSpace} per accedere il più vicino spazio di focus non raggiungibile prima del simbolo caret, per esempio due elementi HR adiacenti. Ripeti la combinazione di tasti per raggiungere spazi di focus distanti.\"},\n{name:\"Comando di accesso al prossimo spazio di focus\",legend:\"Premi ${accessNextSpace} per accedere il più vicino spazio di focus non raggiungibile dopo il simbolo caret, per esempio due elementi HR adiacenti. Ripeti la combinazione di tasti per raggiungere spazi di focus distanti.\"},{name:\" Aiuto Accessibilità\",legend:\"Premi ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Invio\",shift:\"Maiusc\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pausa\",capslock:\"Bloc Maiusc\",escape:\"Esc\",pageUp:\"Pagina sù\",pageDown:\"Pagina giù\",\nend:\"Fine\",home:\"Inizio\",leftArrow:\"Freccia sinistra\",upArrow:\"Freccia su\",rightArrow:\"Freccia destra\",downArrow:\"Freccia giù\",insert:\"Ins\",\"delete\":\"Canc\",leftWindowKey:\"Tasto di Windows sinistro\",rightWindowKey:\"Tasto di Windows destro\",selectKey:\"Tasto di selezione\",numpad0:\"0 sul tastierino numerico\",numpad1:\"1 sul tastierino numerico\",numpad2:\"2 sul tastierino numerico\",numpad3:\"3 sul tastierino numerico\",numpad4:\"4 sul tastierino numerico\",numpad5:\"5 sul tastierino numerico\",numpad6:\"6 sul tastierino numerico\",\nnumpad7:\"7 sul tastierino numerico\",numpad8:\"8 sul tastierino numerico\",numpad9:\"9 sul tastierino numerico\",multiply:\"Moltiplicazione\",add:\"Più\",subtract:\"Sottrazione\",decimalPoint:\"Punto decimale\",divide:\"Divisione\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Bloc Num\",scrollLock:\"Bloc Scorr\",semiColon:\"Punto-e-virgola\",equalSign:\"Segno di uguale\",comma:\"Virgola\",dash:\"Trattino\",period:\"Punto\",forwardSlash:\"Barra\",graveAccent:\"Accento grave\",\nopenBracket:\"Parentesi quadra aperta\",backSlash:\"Barra rovesciata\",closeBracket:\"Parentesi quadra chiusa\",singleQuote:\"Apostrofo\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"ja\",{title:\"ユーザー補助の説明\",contents:\"ヘルプ　このダイアログを閉じるには ESCを押してください。\",legend:[{name:\"全般\",items:[{name:\"エディターツールバー\",legend:\"${toolbarFocus} を押すとツールバーのオン/オフ操作ができます。カーソルをツールバーのグループで移動させるにはTabかSHIFT+Tabを押します。グループ内でカーソルを移動させるには、右カーソルか左カーソルを押します。スペースキーやエンターを押すとボタンを有効/無効にすることができます。\"},{name:\"編集ダイアログ\",legend:\"ダイヤログ内では、ダイアログの次の選択肢に移動するにはTabを押します。前の選択肢に移動するには、SHIFT+Tabを押します。ダイアログを決定するには、ENTERを押します。ESCでダイアログをキャンセルできます。複数のタブがあるダイアログではタブリストを操作するにはALT+F10を押します。次のタブに移動するにはTabか右カーソル、前のタブに戻るにはSHIFT+Tabか左カーソルです。タブページを決定するにはスペースもしくは、ENTERキーを押してください。\"},\n{name:\"エディターのメニュー\",legend:\"${contextMenu} キーかAPPLICATION KEYを押すとコンテキストメニューが開きます。Tabか下カーソルでメニューのオプション選択が下に移動します。戻るには、SHIFT+Tabか上カーソルです。スペースもしくはENTERキーでメニューオプションを決定できます。現在選んでいるオプションのサブメニューを開くには、スペース、もしくは右カーソルを押します。サブメニューから親メニューに戻るには、ESCか左カーソルを押してください。ESCでコンテキストメニュー自体をキャンセルできます。\"},{name:\"エディターリストボックス\",legend:\"リストボックス内で移動するには、Tabか下カーソルで次のアイテムへ移動します。SHIFT+Tabで前のアイテムに戻ります。リストのオプションを選択するには、スペースもしくは、ENTERを押してください。リストボックスを閉じるには、ESCを押してください。\"},{name:\"エディター要素パスバー\",legend:\"${elementsPathFocus} を押すとエレメントパスバーを操作出来ます。Tabか右カーソルで次のエレメントを選択できます。前のエレメントを選択するには、SHIFT+Tabか左カーソルです。スペースもしくは、ENTERでエディタ内の対象エレメントを選択出来ます。\"}]},\n{name:\"コマンド\",items:[{name:\"元に戻す\",legend:\"${undo} をクリック\"},{name:\"やり直し\",legend:\"${redo} をクリック\"},{name:\"太字\",legend:\"${bold} をクリック\"},{name:\"斜体 \",legend:\"${italic} をクリック\"},{name:\"下線\",legend:\"${underline} をクリック\"},{name:\"リンク\",legend:\"${link} をクリック\"},{name:\"ツールバーを縮める\",legend:\"${toolbarCollapse} をクリック\"},{name:\"前のカーソル移動のできないポイントへ\",legend:\"${accessPreviousSpace} を押すとカーソルより前にあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。\"},{name:\"次のカーソル移動のできないポイントへ\",legend:\"${accessNextSpace} を押すとカーソルより後ろにあるカーソルキーで入り込めないスペースへ移動できます。例えば、HRエレメントが2つ接している場合などです。離れた場所へは、複数回キーを押します。\"},\n{name:\"ユーザー補助ヘルプ\",legend:\"${a11yHelp} をクリック\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"左矢印\",upArrow:\"上矢印\",rightArrow:\"右矢印\",downArrow:\"下矢印\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"左Windowキー\",rightWindowKey:\"右のWindowキー\",selectKey:\"Select\",numpad0:\"Num 0\",numpad1:\"Num 1\",numpad2:\"Num 2\",numpad3:\"Num 3\",numpad4:\"Num 4\",numpad5:\"Num 5\",\nnumpad6:\"Num 6\",numpad7:\"Num 7\",numpad8:\"Num 8\",numpad9:\"Num 9\",multiply:\"掛ける\",add:\"足す\",subtract:\"引く\",decimalPoint:\"小数点\",divide:\"割る\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"セミコロン\",equalSign:\"イコール記号\",comma:\"カンマ\",dash:\"ダッシュ\",period:\"ピリオド\",forwardSlash:\"フォワードスラッシュ\",graveAccent:\"グレイヴアクセント\",openBracket:\"開きカッコ\",backSlash:\"バックスラッシュ\",closeBracket:\"閉じカッコ\",singleQuote:\"シングルクォート\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/km.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"km\",{title:\"Accessibility Instructions\",contents:\"មាតិកា​ជំនួយ។ ដើម្បី​បិទ​ផ្ទាំង​នេះ សូម​ចុច ESC ។\",legend:[{name:\"ទូទៅ\",items:[{name:\"របារ​ឧបករណ៍​កម្មវិធី​និពន្ធ\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"ផ្ទាំង​កម្មវិធីនិពន្ធ\",legend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},\n{name:\"ម៉ីនុយបរិបទអ្នកកែសម្រួល\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},{name:\"ប្រអប់បញ្ជីអ្នកកែសម្រួល\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},{name:\"ពាក្យបញ្ជា\",items:[{name:\"ការ​បញ្ជា​មិនធ្វើវិញ\",legend:\"ចុច ${undo}\"},{name:\"ការបញ្ជា​ធ្វើវិញ\",legend:\"ចុច ${redo}\"},{name:\"ការបញ្ជា​អក្សរ​ដិត\",legend:\"ចុច ${bold}\"},{name:\"ការបញ្ជា​អក្សរ​ទ្រេត\",legend:\"ចុច ${italic}\"},{name:\"ពាក្យបញ្ជា​បន្ទាត់​ពីក្រោម\",\nlegend:\"ចុច ${underline}\"},{name:\"ពាក្យបញ្ជា​តំណ\",legend:\"ចុច ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\"ជំនួយ​ពី​ភាព​ងាយស្រួល\",legend:\"ជួយ ${a11yHelp}\"}]}],backspace:\"លុបថយក្រោយ\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"ផ្អាក\",capslock:\"Caps Lock\",escape:\"ចាកចេញ\",pageUp:\"ទំព័រ​លើ\",pageDown:\"ទំព័រ​ក្រោម\",end:\"ចុង\",home:\"ផ្ទះ\",leftArrow:\"ព្រួញ​ឆ្វេង\",upArrow:\"ព្រួញ​លើ\",rightArrow:\"ព្រួញ​ស្ដាំ\",downArrow:\"ព្រួញ​ក្រោម\",insert:\"បញ្ចូល\",\"delete\":\"លុប\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"ជ្រើស​គ្រាប់​ចុច\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"គុណ\",add:\"បន្ថែម\",subtract:\"ដក\",decimalPoint:\"ចំណុចទសភាគ\",divide:\"ចែក\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"បិទ​រំកិល\",semiColon:\"ចុច​ក្បៀស\",equalSign:\"សញ្ញា​អឺរ៉ូ\",comma:\"ក្បៀស\",dash:\"Dash\",period:\"ចុច\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",\nopenBracket:\"តង្កៀប​បើក\",backSlash:\"Backslash\",closeBracket:\"តង្កៀប​បិទ\",singleQuote:\"បន្តក់​មួយ\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"ko\",{title:\"Accessibility Instructions\",contents:\"Help Contents. To close this dialog press ESC.\",legend:[{name:\"일반\",items:[{name:\"편집기 툴바\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"편집기 다이얼로그\",legend:\"다이얼로그 내부에서 TAB\"},{name:\"편집기 환경 메뉴\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},\n{name:\"편집기 목록 박스\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},\n{name:\"명령\",items:[{name:\" Undo command\",legend:\"Press ${undo}\"},{name:\" Redo command\",legend:\"Press ${redo}\"},{name:\" Bold command\",legend:\"Press ${bold}\"},{name:\" Italic command\",legend:\"Press ${italic}\"},{name:\" Underline command\",legend:\"Press ${underline}\"},{name:\" Link command\",legend:\"Press ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Accessibility Help\",legend:\"Press ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",\nupArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",\nf4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"ku\",{title:\"ڕێنمای لەبەردەستدابوون\",contents:\"پێکهاتەی یارمەتی. کلیك ESC بۆ داخستنی ئەم دیالۆگه.\",legend:[{name:\"گشتی\",items:[{name:\"تووڵامرازی دەستكاریكەر\",legend:\"کلیك ${toolbarFocus} بۆ ڕابەری تووڵامراز. بۆ گواستنەوەی پێشوو داهاتووی گرووپی تووڵامرازی داگرتنی کلیلی TAB لەگەڵ‌ SHIFT-TAB. بۆ گواستنەوەی پێشوو داهاتووی دووگمەی تووڵامرازی لەڕێی کلیلی تیری دەستی ڕاست یان کلیلی تیری دەستی چەپ. کلیکی کلیلی SPACE یان ENTER بۆ چالاککردنی دووگمەی تووڵامراز.\"},{name:\"دیالۆگی دەستكاریكەر\",\nlegend:\"لەهەمانکاتدا کە تۆ لەدیالۆگی, کلیکی کلیلی TAB بۆ ڕابەری خانەی دیالۆگێکی تر, داگرتنی کلیلی SHIFT + TAB بۆ گواستنەوەی بۆ خانەی پێشووتر, کلیكی کلیلی ENTER بۆ ڕازیکردنی دیالۆگەکە, کلیكی کلیلی ESC بۆ هەڵوەشاندنەوەی دیالۆگەکە. بۆ دیالۆگی لەبازدەری (تابی) زیاتر, کلیكی کلیلی ALT + F10 بۆ ڕابەری لیستی بازدەرەکان. بۆ چوونە بازدەری تابی داهاتوو کلیكی کلیلی TAB یان کلیلی تیری دەستی ڕاست. بۆچوونە بازدەری تابی پێشوو داگرتنی کلیلی SHIFT + TAB یان کلیلی تیری دەستی چەپ. کلیی کلیلی SPACE یان ENTER بۆ هه‌ڵبژاردنی بازدەر (تاب).\"},\n{name:\"پێڕستی سەرنووسەر\",legend:\"کلیك ${contextMenu} یان دوگمەی لیسته‌(Menu) بۆ کردنەوەی لیستەی دەق. بۆ چوونە هەڵبژاردەیەکی تر له‌ لیسته‌ کلیکی کلیلی TAB یان کلیلی تیری ڕوو لەخوارەوه‌ بۆ چوون بۆ هەڵبژاردەی پێشوو کلیکی کلیلی SHIFT+TAB یان کلیلی تیری ڕوو له‌ سەرەوە. داگرتنی کلیلی SPACE یان ENTER بۆ هەڵبژاردنی هەڵبژاردەی لیسته‌. بۆ کردنەوەی لقی ژێر لیسته‌ لەهەڵبژاردەی لیستە کلیکی کلیلی SPACE یان ENTER یان کلیلی تیری دەستی ڕاست. بۆ گەڕانەوه بۆ سەرەوەی لیسته‌ کلیکی کلیلی ESC یان کلیلی تیری دەستی چەپ. بۆ داخستنی لیستە کلیكی کلیلی ESC بکە.\"},\n{name:\"لیستی سنووقی سەرنووسەر\",legend:\"لەناو سنوقی لیست, چۆن بۆ هەڵنبژاردەی لیستێکی تر کلیکی کلیلی TAB یان کلیلی تیری ڕوو لەخوار. چوون بۆ هەڵبژاردەی لیستی پێشوو کلیکی کلیلی SHIFT + TAB یان کلیلی تیری ڕوو لەسەرەوه‌. کلیکی کلیلی SPACE یان ENTER بۆ دیاریکردنی ‌هەڵبژاردەی لیست. کلیکی کلیلی ESC بۆ داخستنی سنوقی لیست.\"},{name:\"تووڵامرازی توخم\",legend:\"کلیك ${elementsPathFocus} بۆ ڕابەری تووڵامرازی توخمەکان. چوون بۆ دوگمەی توخمێکی تر کلیکی کلیلی TAB یان کلیلی تیری دەستی ڕاست. چوون بۆ دوگمەی توخمی پێشوو کلیلی SHIFT+TAB یان کلیکی کلیلی تیری دەستی چەپ. داگرتنی کلیلی SPACE یان ENTER بۆ دیاریکردنی توخمەکه‌ لەسەرنووسه.\"}]},\n{name:\"فەرمانەکان\",items:[{name:\"پووچکردنەوەی فەرمان\",legend:\"کلیك ${undo}\"},{name:\"هەڵگەڕانەوەی فەرمان\",legend:\"کلیك ${redo}\"},{name:\"فەرمانی دەقی قەڵەو\",legend:\"کلیك ${bold}\"},{name:\"فەرمانی دەقی لار\",legend:\"کلیك ${italic}\"},{name:\"فەرمانی ژێرهێڵ\",legend:\"کلیك ${underline}\"},{name:\"فەرمانی به‌ستەر\",legend:\"کلیك ${link}\"},{name:\"شاردەنەوەی تووڵامراز\",legend:\"کلیك ${toolbarCollapse}\"},{name:\"چوونەناو سەرنجدانی پێشوی فەرمانی بۆشایی\",legend:\"کلیک ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\"چوونەناو سەرنجدانی داهاتووی فەرمانی بۆشایی\",legend:\"کلیک ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\"دەستپێگەیشتنی یارمەتی\",legend:\"کلیك ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",\nupArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",\nf4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"lt\",{title:\"Accessibility Instructions\",contents:\"Help Contents. To close this dialog press ESC.\",legend:[{name:\"Bendros savybės\",items:[{name:\"Editor Toolbar\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"Editor Dialog\",legend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},\n{name:\"Editor Context Menu\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},{name:\"Editor List Box\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},{name:\"Commands\",items:[{name:\" Undo command\",legend:\"Press ${undo}\"},{name:\" Redo command\",legend:\"Press ${redo}\"},{name:\" Bold command\",legend:\"Press ${bold}\"},{name:\" Italic command\",legend:\"Press ${italic}\"},{name:\" Underline command\",\nlegend:\"Press ${underline}\"},{name:\" Link command\",legend:\"Press ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Accessibility Help\",legend:\"Press ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",\ngraveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"lv\",{title:\"Pieejamības instrukcija\",contents:\"Palīdzības saturs. Lai aizvērtu ciet šo dialogu nospiediet ESC.\",legend:[{name:\"Galvenais\",items:[{name:\"Redaktora rīkjosla\",legend:\"Nospiediet ${toolbarFocus} lai pārvietotos uz rīkjoslu. Lai pārvietotos uz nākošo vai iepriekšējo rīkjoslas grupu izmantojiet pogu TAB un SHIFT+TAB.  Lai pārvietotos uz nākošo vai iepriekšējo rīkjoslas pogu izmantojiet Kreiso vai Labo bultiņu. Nospiediet Atstarpi vai ENTER lai aktivizētu rīkjosla pogu.\"},\n{name:\"Redaktora dialoga  logs\",legend:\"Dialoga logā nospiediet pogu TAB lai pārvietotos uz nākošo dialoga loga lauku, nospiediet SHIFT+TAB lai atgrieztos iepriekšējā laukā, nospiediet ENTER lai apstiprinātu dialoga datus, nospiediet ESC lai aizvērtu šo dialogu. Dialogam kuram ir vairākas cilnes, nospiediet ALT+F10 lai pārvietotos uz nepieciešamo cilni.  Lai pārvietotos uz nākošo cilni izmantojiet pogu TAB vai Labo bultiņu. Lai pārvietotos uz iepriekšējo cilni nospiediet SHIFT+TAB vai kreiso bultiņu. Nospiediet SPACE vai ENTER lai izvēlētos lapas cilni.\"},\n{name:\"Redaktora satura izvēle\",legend:\"Nospiediet ${contextMenu} vai APPLICATION KEY lai atvērtu satura izvēlni. Lai pārvietotos uz nākošo izvēlnes opciju izmantojiet pogu TAB vai pogu Bultiņu uz leju. Lai pārvietotos uz iepriekšējo opciju izmantojiet  SHIFT+TAB vai pogu Bultiņa uz augšu. Nospiediet SPACE vai ENTER lai izvelētos izvēlnes opciju. Atveriet tekošajā opcija apakšizvēlni ar SAPCE vai ENTER ka ari to var izdarīt ar Labo bultiņu. Lai atgrieztos atpakaļ uz sakuma izvēlni nospiediet ESC vai Kreiso bultiņu. Lai aizvērtu ciet izvēlnes saturu nospiediet ESC.\"},\n{name:\"Redaktora saraksta lauks\",legend:\"Saraksta laukā, lai pārvietotos uz nākošo saraksta elementu nospiediet TAB vai pogu Bultiņa uz leju. Lai pārvietotos uz iepriekšējo saraksta elementu nospiediet SHIFT+TAB vai pogu Bultiņa uz augšu. Nospiediet SPACE vai ENTER lai izvēlētos saraksta opcijas. Nospiediet ESC lai aizvērtu saraksta lauku. \"},{name:\"Redaktora elementa ceļa josla\",legend:\"Nospiediet ${elementsPathFocus} lai pārvietotos uz  elementa ceļa joslu. Lai pārvietotos uz nākošo elementa pogu izmantojiet TAB vai Labo bultiņu. Lai pārvietotos uz iepriekšējo elementa pogu  izmantojiet SHIFT + TAB vai Kreiso bultiņu. Nospiediet SPACE vai ENTER lai izvēlētos elementu redaktorā.\"}]},\n{name:\"Komandas\",items:[{name:\"Komanda atcelt darbību\",legend:\"Nospiediet ${undo}\"},{name:\"Komanda atkārtot darbību\",legend:\"Nospiediet ${redo}\"},{name:\"Treknraksta komanda\",legend:\"Nospiediet ${bold}\"},{name:\"Kursīva komanda\",legend:\"Nospiediet ${italic}\"},{name:\"Apakšsvītras komanda \",legend:\"Nospiediet ${underline}\"},{name:\"Hipersaites komanda\",legend:\"Nospiediet ${link}\"},{name:\"Rīkjoslas aizvēršanas komanda\",legend:\"Nospiediet ${toolbarCollapse}\"},{name:\"Piekļūt iepriekšējai fokusa vietas komandai\",\nlegend:\"Nospiediet ${accessPreviousSpace} lai piekļūtu tuvākajai nepieejamajai fokusa vietai pirms kursora. Piemēram: diviem blakus esošiem līnijas HR elementiem. Atkārtojiet taustiņu kombināciju lai piekļūtu pie tālākām vietām.\"},{name:\"Piekļūt nākošā fokusa apgabala komandai\",legend:\"Nospiediet ${accessNextSpace} lai piekļūtu tuvākajai nepieejamajai fokusa vietai pēc kursora. Piemēram: diviem blakus esošiem līnijas HR elementiem. Atkārtojiet taustiņu kombināciju lai piekļūtu pie tālākām vietām.\"},\n{name:\"Pieejamības palīdzība\",legend:\"Nospiediet ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",\ngraveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"mk\",{title:\"Инструкции за пристапност\",contents:\"Содржина на делот за помош. За да го затворите овој дијалот притиснете ESC.\",legend:[{name:\"Општо\",items:[{name:\"Мени за едиторот\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"Дијалот за едиторот\",\nlegend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},{name:\"Editor Context Menu\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},\n{name:\"Editor List Box\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},\n{name:\"Commands\",items:[{name:\" Undo command\",legend:\"Press ${undo}\"},{name:\" Redo command\",legend:\"Press ${redo}\"},{name:\" Bold command\",legend:\"Press ${bold}\"},{name:\" Italic command\",legend:\"Press ${italic}\"},{name:\" Underline command\",legend:\"Press ${underline}\"},{name:\" Link command\",legend:\"Press ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Accessibility Help\",legend:\"Press ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",\nupArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",\nf4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"mn\",{title:\"Accessibility Instructions\",contents:\"Help Contents. To close this dialog press ESC.\",legend:[{name:\"Ерөнхий\",items:[{name:\"Editor Toolbar\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"Editor Dialog\",legend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},\n{name:\"Editor Context Menu\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},{name:\"Editor List Box\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},{name:\"Commands\",items:[{name:\" Undo command\",legend:\"Press ${undo}\"},{name:\" Redo command\",legend:\"Press ${redo}\"},{name:\" Bold command\",legend:\"Press ${bold}\"},{name:\" Italic command\",legend:\"Press ${italic}\"},{name:\" Underline command\",\nlegend:\"Press ${underline}\"},{name:\" Link command\",legend:\"Press ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Accessibility Help\",legend:\"Press ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",\ngraveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"nb\",{title:\"Instruksjoner for tilgjengelighet\",contents:\"Innhold for hjelp. Trykk ESC for å lukke denne dialogen.\",legend:[{name:\"Generelt\",items:[{name:\"Verktøylinje for editor\",legend:\"Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT-TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen.\"},{name:\"Dialog for editor\",\nlegend:\"Mens du er i en dialog, trykk TAB for å navigere til neste dialogfelt, press SHIFT + TAB for å flytte til forrige felt, trykk ENTER for å akseptere dialogen, trykk ESC for å avbryte dialogen. For dialoger med flere faner, trykk ALT + F10 for å navigere til listen over faner. Gå til neste fane med TAB eller HØYRE PILTAST. Gå til forrige fane med SHIFT + TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge fanen.\"},{name:\"Kontekstmeny for editor\",legend:\"Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC.\"},\n{name:\"Listeboks for editor\",legend:\"I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT + TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen.\"},{name:\"Verktøylinje for elementsti\",legend:\"Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren.\"}]},\n{name:\"Hurtigtaster\",items:[{name:\"Angre\",legend:\"Trykk ${undo}\"},{name:\"Gjør om\",legend:\"Trykk ${redo}\"},{name:\"Fet tekst\",legend:\"Trykk ${bold}\"},{name:\"Kursiv tekst\",legend:\"Trykk ${italic}\"},{name:\"Understreking\",legend:\"Trykk ${underline}\"},{name:\"Lenke\",legend:\"Trykk ${link}\"},{name:\"Skjul verktøylinje\",legend:\"Trykk ${toolbarCollapse}\"},{name:\"Gå til forrige fokusområde\",legend:\"Trykk ${accessPreviousSpace} for å komme til nærmeste fokusområde før skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet.\"},\n{name:\"Gå til neste fokusområde\",legend:\"Trykk ${accessNextSpace} for å komme til nærmeste fokusområde etter skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet.\"},{name:\"Hjelp for tilgjengelighet\",legend:\"Trykk ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tabulator\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",\npageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Venstre piltast\",upArrow:\"Opp-piltast\",rightArrow:\"Høyre piltast\",downArrow:\"Ned-piltast\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Venstre Windows-tast\",rightWindowKey:\"Høyre Windows-tast\",selectKey:\"Select key\",numpad0:\"Numerisk tastatur 0\",numpad1:\"Numerisk tastatur 1\",numpad2:\"Numerisk tastatur 2\",numpad3:\"Numerisk tastatur 3\",numpad4:\"Numerisk tastatur 4\",numpad5:\"Numerisk tastatur 5\",numpad6:\"Numerisk tastatur 6\",numpad7:\"Numerisk tastatur 7\",\nnumpad8:\"Numerisk tastatur 8\",numpad9:\"Numerisk tastatur 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semikolon\",equalSign:\"Likhetstegn\",comma:\"Komma\",dash:\"Bindestrek\",period:\"Punktum\",forwardSlash:\"Forover skråstrek\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Bakover skråstrek\",\ncloseBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"nl\",{title:\"Toegankelijkheidsinstructies\",contents:\"Help-inhoud. Druk op ESC om dit dialoog te sluiten.\",legend:[{name:\"Algemeen\",items:[{name:\"Werkbalk tekstverwerker\",legend:\"Druk op ${toolbarFocus} om naar de werkbalk te navigeren. Om te schakelen naar de volgende en vorige werkbalkgroep, gebruik TAB en SHIFT+TAB. Om te schakelen naar de volgende en vorige werkbalkknop, gebruik de PIJL RECHTS en PIJL LINKS. Druk op SPATIE of ENTER om een werkbalkknop te activeren.\"},\n{name:\"Dialoog tekstverwerker\",legend:\"In een dialoogvenster, druk op TAB om te navigeren naar het volgende veld. Druk op SHIFT+TAB om naar het vorige veld te navigeren. Druk op ENTER om het dialoogvenster te verzenden. Druk op ESC om het dialoogvenster te sluiten. Voor dialoogvensters met meerdere tabbladen, druk op ALT+F10 om naar de tabset te navigeren. Schakel naar het volgende tabblad met TAB of PIJL RECHTS. Schakel naar het vorige tabblad met SHIFT+TAB of PIJL LINKS. Druk op SPATIE of ENTER om het tabblad te selecteren.\"},\n{name:\"Contextmenu tekstverwerker\",legend:\"Druk op ${contextMenu} of APPLICATION KEY om het contextmenu te openen. Schakel naar de volgende menuoptie met TAB of PIJL OMLAAG. Schakel naar de vorige menuoptie met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om een menuoptie te selecteren. Op een submenu van de huidige optie met SPATIE, ENTER of PIJL RECHTS. Ga terug naar de bovenliggende menuoptie met ESC of PIJL LINKS. Sluit het contextmenu met ESC.\"},{name:\"Keuzelijst tekstverwerker\",legend:\"In een keuzelijst, schakel naar het volgende item met TAB of PIJL OMLAAG. Schakel naar het vorige item met SHIFT+TAB of PIJL OMHOOG. Druk op SPATIE of ENTER om het item te selecteren. Druk op ESC om de keuzelijst te sluiten.\"},\n{name:\"Elementenpad werkbalk tekstverwerker\",legend:\"Druk op ${elementsPathFocus} om naar het elementenpad te navigeren. Om te schakelen naar het volgende element, gebruik TAB of PIJL RECHTS. Om te schakelen naar het vorige element, gebruik SHIFT+TAB or PIJL LINKS. Druk op SPATIE of ENTER om een element te selecteren in de tekstverwerker.\"}]},{name:\"Opdrachten\",items:[{name:\"Ongedaan maken opdracht\",legend:\"Druk op ${undo}\"},{name:\"Opnieuw uitvoeren opdracht\",legend:\"Druk op ${redo}\"},{name:\"Vetgedrukt opdracht\",\nlegend:\"Druk op ${bold}\"},{name:\"Cursief opdracht\",legend:\"Druk op ${italic}\"},{name:\"Onderstrepen opdracht\",legend:\"Druk op ${underline}\"},{name:\"Link opdracht\",legend:\"Druk op ${link}\"},{name:\"Werkbalk inklappen opdracht\",legend:\"Druk op ${toolbarCollapse}\"},{name:\"Ga naar vorige focus spatie commando\",legend:\"Druk ${accessPreviousSpace} om toegang te verkrijgen tot de dichtstbijzijnde onbereikbare focus spatie voor de caret, bijvoorbeeld: twee aangrenzende HR elementen. Herhaal de toetscombinatie om de verste focus spatie te bereiken.\"},\n{name:\"Ga naar volgende focus spatie commando\",legend:\"Druk ${accessNextSpace} om toegang te verkrijgen tot de dichtstbijzijnde onbereikbare focus spatie na de caret, bijvoorbeeld: twee aangrenzende HR elementen. Herhaal de toetscombinatie om de verste focus spatie te bereiken.\"},{name:\"Toegankelijkheidshulp\",legend:\"Druk op ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",\nend:\"End\",home:\"Home\",leftArrow:\"Pijl naar links\",upArrow:\"Pijl omhoog\",rightArrow:\"Pijl naar rechts\",downArrow:\"Pijl naar beneden\",insert:\"Invoegen\",\"delete\":\"Verwijderen\",leftWindowKey:\"Linker Windows-toets\",rightWindowKey:\"Rechter Windows-toets\",selectKey:\"Selecteer toets\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Vermenigvuldigen\",add:\"Toevoegen\",\nsubtract:\"Aftrekken\",decimalPoint:\"Decimaalteken\",divide:\"Delen\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Puntkomma\",equalSign:\"Is gelijk-teken\",comma:\"Komma\",dash:\"Koppelteken\",period:\"Punt\",forwardSlash:\"Slash\",graveAccent:\"Accent grave\",openBracket:\"Vierkant haakje openen\",backSlash:\"Backslash\",closeBracket:\"Vierkant haakje sluiten\",singleQuote:\"Apostrof\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/no.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"no\",{title:\"Instruksjoner for tilgjengelighet\",contents:\"Innhold for hjelp. Trykk ESC for å lukke denne dialogen.\",legend:[{name:\"Generelt\",items:[{name:\"Verktøylinje for editor\",legend:\"Trykk ${toolbarFocus} for å navigere til verktøylinjen. Flytt til neste og forrige verktøylinjegruppe med TAB og SHIFT-TAB. Flytt til neste og forrige verktøylinjeknapp med HØYRE PILTAST og VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å aktivere verktøylinjeknappen.\"},{name:\"Dialog for editor\",\nlegend:\"Mens du er i en dialog, trykk TAB for å navigere til neste dialogfelt, press SHIFT + TAB for å flytte til forrige felt, trykk ENTER for å akseptere dialogen, trykk ESC for å avbryte dialogen. For dialoger med flere faner, trykk ALT + F10 for å navigere til listen over faner. Gå til neste fane med TAB eller HØYRE PILTAST. Gå til forrige fane med SHIFT + TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge fanen.\"},{name:\"Kontekstmeny for editor\",legend:\"Trykk ${contextMenu} eller MENYKNAPP for å åpne kontekstmeny. Gå til neste alternativ i menyen med TAB eller PILTAST NED. Gå til forrige alternativ med SHIFT+TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge menyalternativet. Åpne undermenyen på valgt alternativ med MELLOMROM eller ENTER eller HØYRE PILTAST. Gå tilbake til overordnet menyelement med ESC eller VENSTRE PILTAST. Lukk kontekstmenyen med ESC.\"},\n{name:\"Listeboks for editor\",legend:\"I en listeboks, gå til neste alternativ i listen med TAB eller PILTAST NED. Gå til forrige alternativ i listen med SHIFT + TAB eller PILTAST OPP. Trykk MELLOMROM eller ENTER for å velge alternativet i listen. Trykk ESC for å lukke listeboksen.\"},{name:\"Verktøylinje for elementsti\",legend:\"Trykk ${elementsPathFocus} for å navigere til verktøylinjen som viser elementsti. Gå til neste elementknapp med TAB eller HØYRE PILTAST. Gå til forrige elementknapp med SHIFT+TAB eller VENSTRE PILTAST. Trykk MELLOMROM eller ENTER for å velge elementet i editoren.\"}]},\n{name:\"Kommandoer\",items:[{name:\"Angre\",legend:\"Trykk ${undo}\"},{name:\"Gjør om\",legend:\"Trykk ${redo}\"},{name:\"Fet tekst\",legend:\"Trykk ${bold}\"},{name:\"Kursiv tekst\",legend:\"Trykk ${italic}\"},{name:\"Understreking\",legend:\"Trykk ${underline}\"},{name:\"Link\",legend:\"Trykk ${link}\"},{name:\"Skjul verktøylinje\",legend:\"Trykk ${toolbarCollapse}\"},{name:\"Gå til forrige fokusområde\",legend:\"Trykk ${accessPreviousSpace} for å komme til nærmeste fokusområde før skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet.\"},\n{name:\"Gå til neste fokusområde\",legend:\"Trykk ${accessNextSpace} for å komme til nærmeste fokusområde etter skrivemarkøren som ikke kan nås på vanlig måte, for eksempel to tilstøtende HR-elementer. Gjenta tastekombinasjonen for å komme til fokusområder lenger unna i dokumentet.\"},{name:\"Hjelp for tilgjengelighet\",legend:\"Trykk ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",\nend:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",\ndivide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"pl\",{title:\"Instrukcje dotyczące dostępności\",contents:\"Zawartość pomocy. Wciśnij ESC, aby zamknąć to okno.\",legend:[{name:\"Informacje ogólne\",items:[{name:\"Pasek narzędzi edytora\",legend:\"Wciśnij ${toolbarFocus} aby przejść do paska narzędzi. Przejdź do następnej i poprzedniej grupy narzędzi używając TAB oraz SHIFT-TAB. Przejdź do następnego i poprzedniego narzędzia używając STRZAŁKI W PRAWO lub STRZAŁKI W LEWO. Wciśnij SPACJĘ lub ENTER, aby aktywować zaznaczone narzędzie.\"},\n{name:\"Okno dialogowe edytora\",legend:\"Będąc w oknie dialogowym wciśnij TAB aby przejść do następnego pola dialogowego, wciśnij SHIFT + TAB aby przejść do poprzedniego pola, wciśnij ENTER aby wysłać dialog, wciśnij ESC aby anulować dialog. Dla okien dialogowych z wieloma zakładkami, wciśnij ALT + F10 aby przejść do listy zakładek. Gdy to zrobisz przejdź do następnej zakładki wciskając TAB lub STRZAŁKĘ W PRAWO. Przejdź do poprzedniej zakładki wciskając SHIFT + TAB lub STRZAŁKĘ W LEWO. Wciśnij SPACJĘ lub ENTER aby wybrać zakładkę.\"},\n{name:\"Menu kontekstowe edytora\",legend:\"Wciśnij ${contextMenu} lub PRZYCISK APLIKACJI aby otworzyć menu kontekstowe. Przejdź do następnej pozycji menu wciskając TAB lub STRZAŁKĘ W DÓŁ. Przejdź do poprzedniej pozycji menu wciskając SHIFT + TAB lub STRZAŁKĘ W GÓRĘ. Wciśnij SPACJĘ lub ENTER aby wygrać pozycję menu. Otwórz pod-menu obecnej pozycji wciskając SPACJĘ lub ENTER lub STRZAŁKĘ W PRAWO. Wróć do pozycji nadrzędnego menu wciskając ESC lub STRZAŁKĘ W LEWO. Zamknij menu wciskając ESC.\"},{name:\"Lista w edytorze\",\nlegend:\"W polu listy możesz przechodzić do następnego elementu za pomocą klawisza TAB lub STRZAŁKI W DÓŁ. Poprzedni element osiągniesz za pomocą SHIFT+TAB lub STRZAŁKI W GÓRĘ. Za pomocą SPACJI lub ENTERA wybierzesz daną opcję z listy, a za pomocą klawisza ESC opuścisz listę.\"},{name:\"Pasek ścieżki elementów edytora\",legend:\"Naciśnij ${elementsPathFocus} w celu przejścia do paska ścieżki elementów edytora. W celu przejścia do kolejnego elementu naciśnij klawisz Tab lub Strzałki w prawo. W celu przejścia do poprzedniego elementu naciśnij klawisze Shift+Tab lub Strzałki w lewo. By wybrać element w edytorze, użyj klawisza Spacji lub Enter.\"}]},\n{name:\"Polecenia\",items:[{name:\"Polecenie Cofnij\",legend:\"Naciśnij ${undo}\"},{name:\"Polecenie Ponów\",legend:\"Naciśnij ${redo}\"},{name:\"Polecenie Pogrubienie\",legend:\"Naciśnij ${bold}\"},{name:\"Polecenie Kursywa\",legend:\"Naciśnij ${italic}\"},{name:\"Polecenie Podkreślenie\",legend:\"Naciśnij ${underline}\"},{name:\"Polecenie Wstaw/ edytuj odnośnik\",legend:\"Naciśnij ${link}\"},{name:\"Polecenie schowaj pasek narzędzi\",legend:\"Naciśnij ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\"Pomoc dotycząca dostępności\",legend:\"Naciśnij ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Strzałka w lewo\",\nupArrow:\"Strzałka w górę\",rightArrow:\"Strzałka w prawo\",downArrow:\"Strzałka w dół\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Lewy klawisz Windows\",rightWindowKey:\"Prawy klawisz Windows\",selectKey:\"Klawisz wyboru\",numpad0:\"Klawisz 0 na klawiaturze numerycznej\",numpad1:\"Klawisz 1 na klawiaturze numerycznej\",numpad2:\"Klawisz 2 na klawiaturze numerycznej\",numpad3:\"Klawisz 3 na klawiaturze numerycznej\",numpad4:\"Klawisz 4 na klawiaturze numerycznej\",numpad5:\"Klawisz 5 na klawiaturze numerycznej\",\nnumpad6:\"Klawisz 6 na klawiaturze numerycznej\",numpad7:\"Klawisz 7 na klawiaturze numerycznej\",numpad8:\"Klawisz 8 na klawiaturze numerycznej\",numpad9:\"Klawisz 9 na klawiaturze numerycznej\",multiply:\"Multiply\",add:\"Plus\",subtract:\"Minus\",decimalPoint:\"Separator dziesiętny\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Średnik\",equalSign:\"Equal Sign\",comma:\"Przecinek\",dash:\"Dash\",\nperiod:\"Kropka\",forwardSlash:\"Ukośnik prawy\",graveAccent:\"Grave Accent\",openBracket:\"Nawias kwadratowy otwierający\",backSlash:\"Ukośnik lewy\",closeBracket:\"Nawias kwadratowy zamykający\",singleQuote:\"Apostrof\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"pt-br\",{title:\"Instruções de Acessibilidade\",contents:\"Conteúdo da Ajuda. Para fechar este diálogo pressione ESC.\",legend:[{name:\"Geral\",items:[{name:\"Barra de Ferramentas do Editor\",legend:\"Pressione ${toolbarFocus} para navegar para a barra de ferramentas. Mova para o anterior ou próximo grupo de ferramentas com TAB e SHIFT-TAB. Mova para o anterior ou próximo botão com SETA PARA DIREITA or SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para ativar o botão da barra de ferramentas.\"},\n{name:\"Diálogo do Editor\",legend:\"Dentro de um diálogo, pressione TAB para navegar para o próximo campo, pressione SHIFT + TAB para mover para o campo anterior, pressione ENTER para enviar o diálogo, pressione ESC para cancelar o diálogo. Para diálogos que tem múltiplas abas, pressione ALT + F10 para navegar para a lista de abas, então mova para a próxima aba com SHIFT + TAB ou SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar a aba.\"},{name:\"Menu de Contexto do Editor\",legend:\"Pressione ${contextMenu} ou TECLA DE MENU para abrir o menu de contexto, então mova para a próxima opção com TAB ou SETA PARA BAIXO. Mova para a anterior com SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu. Abra o submenu da opção atual com ESPAÇO ou ENTER ou SETA PARA DIREITA. Volte para o menu pai com ESC ou SETA PARA ESQUERDA. Feche o menu de contexto com ESC.\"},\n{name:\"Caixa de Lista do Editor\",legend:\"Dentro de uma caixa de lista, mova para o próximo item com TAB ou SETA PARA BAIXO. Mova para o item anterior com SHIFT + TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar uma opção na lista. Pressione ESC para fechar a caixa de lista.\"},{name:\"Barra de Caminho do Elementos do Editor\",legend:\"Pressione ${elementsPathFocus} para a barra de caminho dos elementos. Mova para o próximo botão de elemento com TAB ou SETA PARA DIREITA. Mova para o botão anterior com  SHIFT+TAB ou SETA PARA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o elemento no editor.\"}]},\n{name:\"Comandos\",items:[{name:\" Comando Desfazer\",legend:\"Pressione ${undo}\"},{name:\" Comando Refazer\",legend:\"Pressione ${redo}\"},{name:\" Comando Negrito\",legend:\"Pressione ${bold}\"},{name:\" Comando Itálico\",legend:\"Pressione ${italic}\"},{name:\" Comando Sublinhado\",legend:\"Pressione ${underline}\"},{name:\" Comando Link\",legend:\"Pressione ${link}\"},{name:\" Comando Fechar Barra de Ferramentas\",legend:\"Pressione ${toolbarCollapse}\"},{name:\"Acessar o comando anterior de spaço de foco\",legend:\"Pressione ${accessNextSpace} para acessar o espaço de foco não alcançável mais próximo antes do cursor, por exemplo: dois elementos HR adjacentes. Repita a combinação de teclas para alcançar espaços de foco distantes.\"},\n{name:\"Acessar próximo fomando de spaço de foco\",legend:\"Pressione ${accessNextSpace} para acessar o espaço de foco não alcançável mais próximo após o cursor, por exemplo: dois elementos HR adjacentes. Repita a combinação de teclas para alcançar espaços de foco distantes.\"},{name:\" Ajuda de Acessibilidade\",legend:\"Pressione ${a11yHelp}\"}]}],backspace:\"Tecla Backspace\",tab:\"Tecla Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",\npageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Seta à Esquerda\",upArrow:\"Seta à Cima\",rightArrow:\"Seta à Direita\",downArrow:\"Seta à Baixo\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Tecla do Windows Esquerda\",rightWindowKey:\"Tecla do Windows Direita\",selectKey:\"Tecla Selecionar\",numpad0:\"0 do Teclado Numérico\",numpad1:\"1 do Teclado Numérico\",numpad2:\"2 do Teclado Numérico\",numpad3:\"3 do Teclado Numérico\",numpad4:\"4 do Teclado Numérico\",numpad5:\"5 do Teclado Numérico\",numpad6:\"6 do Teclado Numérico\",\nnumpad7:\"7 do Teclado Numérico\",numpad8:\"8 do Teclado Numérico\",numpad9:\"9 do Teclado Numérico\",multiply:\"Multiplicar\",add:\"Mais\",subtract:\"Subtrair\",decimalPoint:\"Ponto\",divide:\"Dividir\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Ponto-e-vírgula\",equalSign:\"Igual\",comma:\"Vírgula\",dash:\"Hífen\",period:\"Ponto\",forwardSlash:\"Barra\",graveAccent:\"Acento Grave\",openBracket:\"Abrir Conchetes\",\nbackSlash:\"Contra-barra\",closeBracket:\"Fechar Colchetes\",singleQuote:\"Aspas Simples\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"pt\",{title:\"Instruções de Acessibilidade\",contents:\"Conteúdos da Ajuda. Pressione em 'ESC' para fechar esta janela.\",legend:[{name:\"Geral\",items:[{name:\"Barra de Ferramentas do Editor\",legend:\"Clique em ${toolbarFocus} para navegar para a barra de ferramentas. Vá para o grupo da barra de ferramentas anterior e seguinte com TAB e SHIFT+TAB. Vá para o botão da barra de ferramentas anterior com a SETA DIREITA ou ESQUERDA. Pressione ESPAÇO ou ENTER para ativar o botão da barra de ferramentas.\"},\n{name:\"Janela do Editor\",legend:\"Dentro de uma janela, pressione TAB para navigar para o campo da janela seguinte, pressione SHIFT + TAB para mover para o campo anterior, pressione ENTER para submeter a janela, pressione ESC para cancelar a janela. Para as janelas que têm múltiplos páginas com separadores, pressione ALT + F10 para navegar para a lista do separador. Depois mova para o seguinte separador com TAB ou SETA DIREITA. Mover para o separador anterior com SHIFT + TAB ou SETA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o separador da página.\"},\n{name:\"Menu de Contexto do Editor\",legend:\"Clique em ${contextMenu} ou TECLA APLICAÇÃO para abrir o menu de contexto. Depois vá para a opção do menu seguinte com TAB ou SETA PARA BAIXO. Vá para a opção anterior com  SHIFT+TAB ou SETA PARA CIMA. Pressione ESPAÇO ou ENTER para selecionar a opção do menu.  Abra o submenu da opção atual com ESPAÇO, ENTER ou SETA DIREITA. GVá para o item do menu parente  com ESC ou SETA ESQUERDA. Feche o menu de contexto com ESC.\"},{name:\"Caixa Lista Editor\",legend:\"Dentro da caixa da lista, vá para o itemda lista seguinte com TAB ou SETA PARA BAIXO. Move Vá parao item da lista anterior com SHIFT+TAB ou SETA PARA BAIXO. Pressione ESPAÇO ou ENTER para selecionar a opção da lista. Pressione ESC para fechar a caisa da lista.\"},\n{name:\"Caminho Barra Elemento Editor\",legend:\"Clique em ${elementsPathFocus} para navegar para a barra do caminho dos elementos. Vá para o botão do elemento seguinte com TAB ou SETA DIREITA. Vá para o botão anterior com   SHIFT+TAB ou SETA ESQUERDA. Pressione ESPAÇO ou ENTER para selecionar o elemento no editor.\"}]},{name:\"Comandos\",items:[{name:\"Comando de Anular\",legend:\"Pressione ${undo}\"},{name:\"Comando de Refazer\",legend:\"Pressione ${redo}\"},{name:\"Comando de Negrito\",legend:\"Pressione ${bold}\"},\n{name:\"Comando de Itálico\",legend:\"Pressione ${italic}\"},{name:\"Comando de Sublinhado\",legend:\"Pressione ${underline}\"},{name:\"Comando de Hiperligação\",legend:\"Pressione ${link}\"},{name:\"Comando de Ocultar Barra de Ferramentas\",legend:\"Pressione ${toolbarCollapse}\"},{name:\"Acesso comando do espaço focus anterior\",legend:\"Clique em ${accessPreviousSpace} para aceder ao espaço do focos inalcançável mais perto antes do sinal de omissão, por exemplo: dois elementos HR adjacentes. Repetir a combinação da chave para alcançar os espaços dos focos distantes.\"},\n{name:\"Acesso comando do espaço focus seguinte\",legend:\"Pressione ${accessNextSpace} para aceder ao espaço do focos inalcançável mais perto depois do sinal de omissão, por exemplo: dois elementos HR adjacentes. Repetir a combinação da chave para alcançar os espaços dos focos distantes.\"},{name:\"Ajuda de Acessibilidade\",legend:\"Pressione ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",\npageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",\ndivide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"ro\",{title:\"Instrucțiuni de accesibilitate\",contents:\"Cuprins. Pentru a închide acest dialog, apăsați tasta ESC.\",legend:[{name:\"General\",items:[{name:\"Editează bara instrumente.\",legend:\"Apasă ${toolbarFocus} pentru a naviga prin bara de instrumente. Pentru a te mișca prin grupurile de instrumente folosește tastele TAB și SHIFT-TAB. Pentru a te mișca intre diverse instrumente folosește tastele SĂGEATĂ DREAPTA sau SĂGEATĂ STÂNGA. Apasă butonul SPAȚIU sau ENTER pentru activarea instrumentului.\"},\n{name:\"Dialog editor\",legend:\"Într-un dialog, apasă TAB pentru a naviga spre câmpul următor de dialog, apasă SHIFT + TAB pentru a te duce la câmpul anterior, apasă ENTER pentru a trimite dialogul, apasă ESC pentru a anula dialogul. Pentru dialoguri care au mai multe subferestre, apasă ALT + F10 pentr a naviga în lista de subferestre. Treci la subferestrea următoare cu TAB sau SĂGEATĂ DREAPTA. Treci la subfereastra anterioară cu SHIFT + TAB sau SĂGEATĂ STÂNGA. Apasă SPAȚIU sau ENTER pentru a selecta subfereastra.\"},\n{name:\"Editor meniu contextual\",legend:\"Apasă ${contextMenu} sau TASTA MENIU pentru a deschide meniul contextual. Treci la următoarea opțiune din meniu cu TAB sau SĂGEATĂ JOS. Treci la opțiunea anterioară cu  SHIFT+TAB sau SĂGEATĂ SUS. Apasă SPAȚIU sau ENTER pentru a selecta opțiunea din meniu. Deschide sub-meniul opțiunii curente cu SPAȚIU sau ENTER sau SĂGEATĂ DREAPTA. Revino la elementul din meniul părinte cu ESC sau SĂGEATĂ STÂNGA. Închide meniul de context cu ESC.\"},{name:\"Editor Casetă Listă\",\nlegend:\"În interiorul unei liste, treci la următorull element cu TAB sau SĂGEATĂ JOS. Treci la elementul anterior din listă cu SHIFT + TAB sau SĂGEATĂ SUS. Apasă SPAȚIU sau ENTER pentru a selecta opțiunea din listă. Apasă ESC pentru a închide lista.\"},{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},\n{name:\"Comenzi\",items:[{name:\" Undo command\",legend:\"Apasă ${undo}\"},{name:\"Comanda precedentă\",legend:\"Apasă ${redo}\"},{name:\"Comanda Îngroșat\",legend:\"Apasă ${bold}\"},{name:\"Comanda Inclinat\",legend:\"Apasă ${italic}\"},{name:\"Comanda Subliniere\",legend:\"Apasă ${underline}\"},{name:\"Comanda Legatură\",legend:\"Apasă ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Accessibility Help\",legend:\"Press ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",\nupArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",\nf4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"ru\",{title:\"Горячие клавиши\",contents:\"Помощь. Для закрытия этого окна нажмите ESC.\",legend:[{name:\"Основное\",items:[{name:\"Панель инструментов\",legend:\"Нажмите ${toolbarFocus} для перехода к панели инструментов. Для перемещения между группами панели инструментов используйте TAB и SHIFT-TAB. Для перемещения между кнопками панели иструментов используйте кнопки ВПРАВО или ВЛЕВО. Нажмите ПРОБЕЛ или ENTER для запуска кнопки панели инструментов.\"},{name:\"Диалоги\",legend:\"В диалоговом окне, нажмите клавишу TAB для перехода к следующему диалоговому полю, нажмите клавиши SHIFT + TAB, чтобы перейти к предыдущему полю, нажмите ENTER, чтобы отправить данные, нажмите клавишу ESC, для отмены. Для окон, которые имеют несколько вкладок, нажмите ALT + F10 для перехода к списку вкладок. Переход к следующей вкладке TAB ИЛИ ПРАВУЮ СТРЕЛКУ. Переход к предыдущей вкладке с помощью SHIFT + TAB или ЛЕВАЯ СТРЕЛКА. Нажмите ПРОБЕЛ или ENTER, чтобы выбрать вкладку.\"},\n{name:\"Контекстное меню\",legend:'Нажмите ${contextMenu} или клавишу APPLICATION, чтобы открыть контекстное меню. Затем перейдите к следующему пункту меню с помощью TAB или стрелкой \"ВНИЗ\". Переход к предыдущей опции - SHIFT+TAB или стрелкой \"ВВЕРХ\". Нажмите SPACE, или ENTER, чтобы задействовать опцию меню. Открыть подменю текущей опции - SPACE или ENTER или стрелкой \"ВПРАВО\". Возврат к родительскому пункту меню - ESC или стрелкой \"ВЛЕВО\". Закрытие контекстного меню - ESC.'},{name:\"Редактор списка\",\nlegend:'Внутри окна списка, переход к следующему пункту списка - TAB или стрелкой \"ВНИЗ\". Переход к предыдущему пункту списка - SHIFT + TAB или стрелкой \"ВВЕРХ\". Нажмите SPACE, или ENTER, чтобы задействовать опцию списка. Нажмите ESC, чтобы закрыть окно списка.'},{name:\"Путь к элементу\",legend:'Нажмите ${elementsPathFocus}, чтобы перейти к панели пути элементов. Переход к следующей кнопке элемента - TAB или стрелкой \"ВПРАВО\". Переход к предыдущей кнопку - SHIFT+TAB или стрелкой \"ВЛЕВО\". Нажмите SPACE, или ENTER, чтобы выбрать элемент в редакторе.'}]},\n{name:\"Команды\",items:[{name:\"Отменить\",legend:\"Нажмите ${undo}\"},{name:\"Повторить\",legend:\"Нажмите ${redo}\"},{name:\"Полужирный\",legend:\"Нажмите ${bold}\"},{name:\"Курсив\",legend:\"Нажмите ${italic}\"},{name:\"Подчеркнутый\",legend:\"Нажмите ${underline}\"},{name:\"Гиперссылка\",legend:\"Нажмите ${link}\"},{name:\"Свернуть панель инструментов\",legend:\"Нажмите ${toolbarCollapse}\"},{name:\"Команды доступа к предыдущему фокусному пространству\",legend:'Нажмите ${accessPreviousSpace}, чтобы обратиться к ближайшему недостижимому фокусному пространству перед символом \"^\", например: два смежных HR элемента. Повторите комбинацию клавиш, чтобы достичь отдаленных фокусных пространств.'},\n{name:\"Команды доступа к следующему фокусному пространству\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\"Справка по горячим клавишам\",legend:\"Нажмите ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Esc\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",\nhome:\"Home\",leftArrow:\"Стрелка влево\",upArrow:\"Стрелка вверх\",rightArrow:\"Стрелка вправо\",downArrow:\"Стрелка вниз\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Левая клавиша Windows\",rightWindowKey:\"Правая клавиша Windows\",selectKey:\"Выбрать\",numpad0:\"Цифра 0\",numpad1:\"Цифра 1\",numpad2:\"Цифра 2\",numpad3:\"Цифра 3\",numpad4:\"Цифра 4\",numpad5:\"Цифра 5\",numpad6:\"Цифра 6\",numpad7:\"Цифра 7\",numpad8:\"Цифра 8\",numpad9:\"Цифра 9\",multiply:\"Умножить\",add:\"Плюс\",subtract:\"Вычесть\",decimalPoint:\"Десятичная точка\",\ndivide:\"Делить\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Точка с запятой\",equalSign:\"Равно\",comma:\"Запятая\",dash:\"Тире\",period:\"Точка\",forwardSlash:\"Наклонная черта\",graveAccent:\"Апостроф\",openBracket:\"Открыть скобку\",backSlash:\"Обратная наклонная черта\",closeBracket:\"Закрыть скобку\",singleQuote:\"Одинарная кавычка\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/si.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"si\",{title:\"ළඟා වියහැකි \",contents:\"උදව් සඳහා අන්තර්ගතය.නික්මයෙමට ESC බොත්තම ඔබන්න\",legend:[{name:\"පොදු කරුණු\",items:[{name:\"සංස්කරණ මෙවලම් \",legend:\"ඔබන්න ${මෙවලම් තීරු අවධානය} මෙවලම් තීරුවේ එහා මෙහා යෑමට.ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරුකාණ්ඩය හා TAB හා SHIFT-TAB .ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරු බොත්තම සමග RIGHT ARROW හෝ LEFT ARROW.මෙවලම් තීරු බොත්තම සක්‍රිය කර ගැනීමට  SPACE හෝ  ENTER බොත්තම ඔබන්න.\"},{name:\"සංස්කරණ \",legend:\"දෙබසක් තුළ, ඊළඟ දෙබස් පෙදෙසට යෑමට TAB බොත්තම ඔබන්න, කලින් පෙදෙසට යෑමට SHIFT + TAB බොත්තම ද, දෙබස් ඉදිරිපත් කිරීමට ENTER බොත්තම ද, දෙබස් නැවතීමට  ESCබොත්තම ද, දෙබස් සහිත ගොනු, පිටු වැඩි සංක්‍යයාවක් ලබා ගෙනිමට,ගොනු තුළ එහාමෙහා යෑමට ALT + F10 බොත්තම් ද, ඊළඟ ගොනුවට යෑමට TAB හෝ RIGTH ARROW බොත්තම ඔබන්න. පෙර ගොනුවට යෑමට SHIFT + TAB හෝ LEFT ARROW බොත්තම් ද ,ගොනු පිටු තේරීමට  SPACE හෝ ENTER බොත්තම් ද ඔබන්න.\"},\n{name:\"සංස්කරණ අඩංගුවට \",legend:\"ඔබන්න ${අන්තර්ගත මෙනුව} හෝ  APPLICATION KEY  අන්තර්ගත-මෙනුව විවුරතකිරීමට. ඊළඟ මෙනුව-ව්කල්පයන්ට යෑමට TAB හෝ DOWN ARROW බොත්තම ද, පෙර විකල්පයන්ටයෑමට SHIFT+TAB හෝ  UP ARROW බොත්තම ද, මෙනුව-ව්කල්පයන් තේරීමට SPACE හෝ ENTER බොත්තම ද,  දැනට විවුර්තව ඇති උප-මෙනුවක වීකල්ප තේරීමට SPACE හෝ ENTER හෝ RIGHT ARROW ද, නැවත පෙර ප්‍රධාන මෙනුවට යෑමට  ESC හෝ LEFT ARROW බොත්තම ද.  අන්තර්ගත-මෙනුව වැසීමට  ESC බොත්තම ද ඔබන්න.\"},{name:\"සංස්කරණ තේරුම් \",legend:\"තේරුම් කොටුව තුළ , ඊළඟ අයිතමයට යෑමට TAB හෝ DOWN ARROW , පෙර අයිතමයට යෑමට  SHIFT + TAB හෝ UP ARROW . අයිතම විකල්පයන් තේරීමට  SPACE හෝ  ENTER ,තේරුම් කොටුව වැසීමට ESC බොත්තම් ද ඔබන්න.\"},\n{name:\"සංස්කරණ අංග සහිත \",legend:\"ඔබන්න ${මෙවලම් තීරු අවධානය} මෙවලම් තීරුවේ එහා මෙහා යෑමට.ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරුකාණ්ඩය හා TAB හා SHIFT-TAB .ඉදිරියට යෑමට හා ආපසු යෑමට මෙවලම් තීරු බොත්තම සමග RIGHT ARROW හෝ LEFT ARROW.මෙවලම් තීරු බොත්තම සක්‍රිය කර ගැනීමට  SPACE හෝ  ENTER බොත්තම ඔබන්න.\"}]},{name:\"විධාන\",items:[{name:\"විධානය වෙනස් \",legend:\"ඔබන්න ${වෙනස් කිරීම}\"},{name:\"විධාන නැවත් පෙර පරිදිම වෙනස්කර ගැනීම.\",legend:\"ඔබන්න ${නැවත් පෙර පරිදිම වෙනස්කර ගැනීම}\"},{name:\"තද අකුරින් විධාන\",legend:\"ඔබන්න ${තද }\"},\n{name:\"බැධී අකුරු විධාන\",legend:\"ඔබන්න ${බැධී අකුරු }\"},{name:\"යටින් ඉරි ඇද ඇති විධාන.\",legend:\"ඔබන්න ${යටින් ඉරි ඇද ඇති}\"},{name:\"සම්බන්ධිත විධාන\",legend:\"ඔබන්න ${සම්බන්ධ }\"},{name:\"මෙවලම් තීරු හැකුලුම් විධාන\",legend:\"ඔබන්න ${මෙවලම් තීරු හැකුලුම් }\"},{name:\"යොමුවීමට පෙර  වැදගත්  විධාන\",legend:\"ඔබන්න ${යොමුවීමට ඊළඟ }\"},{name:\"යොමුවීමට ඊළග වැදගත්  විධාන\",legend:\"ඔබන්න ${යොමුවීමට ඊළඟ }\"},{name:\"ප්‍රවේශ \",legend:\"ඔබන්න  ${a11y }\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",\nalt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",\nnumpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"sk\",{title:\"Inštrukcie prístupnosti\",contents:\"Pomocný obsah. Pre zatvorenie tohto okna, stlačte ESC.\",legend:[{name:\"Všeobecne\",items:[{name:\"Lišta nástrojov editora\",legend:\"Stlačte ${toolbarFocus} pre navigáciu na lištu nástrojov. Medzi ďalšou a predchádzajúcou lištou nástrojov sa pohybujete s TAB a SHIFT-TAB. Medzi ďalším a predchádzajúcim tlačidlom na lište nástrojov sa pohybujete s pravou šípkou a ľavou šípkou. Stlačte medzerník alebo ENTER pre aktiváciu tlačidla lišty nástrojov.\"},\n{name:\"Editorový dialóg\",legend:\"V dialogu, stlačte TAB pre navigáciu na ďalšie dialógové pole, stlačte STIFT + TAB pre presun na predchádzajúce pole, stlačte ENTER pre odoslanie dialógu, stlačte ESC pre zrušenie dialógu. Pre dialógy, ktoré majú viac záložiek, stlačte ALT + F10 pre navigácou do zoznamu záložiek. Potom sa posúvajte k ďalšej žáložke pomocou TAB alebo pravou šípkou. Pre presun k predchádzajúcej záložke, stlačte SHIFT + TAB alebo ľavú šípku. Stlačte medzerník alebo ENTER pre vybranie záložky.\"},\n{name:\"Editorové kontextové menu\",legend:\"Stlačte ${contextMenu} alebo APPLICATION KEY pre otvorenie kontextového menu. Potom sa presúvajte na ďalšie možnosti menu s TAB alebo dolnou šípkou. Presunte sa k predchádzajúcej možnosti s SHIFT + TAB alebo hornou šípkou. Stlačte medzerník alebo ENTER pre výber možnosti menu. Otvorte pod-menu danej možnosti s medzerníkom, alebo ENTER, alebo pravou šípkou. Vráťte sa späť do položky rodičovského menu s ESC alebo ľavou šípkou. Zatvorte kontextové menu s ESC.\"},\n{name:\"Editorov box zoznamu\",legend:\"V boxe zoznamu, presuňte sa na ďalšiu položku v zozname s TAB alebo dolnou šípkou. Presuňte sa k predchádzajúcej položke v zozname so SHIFT + TAB alebo hornou šípkou. Stlačte medzerník alebo ENTER pre výber možnosti zoznamu. Stlačte ESC pre zatvorenie boxu zoznamu.\"},{name:\"Editorove pásmo cesty prvku\",legend:\"Stlačte ${elementsPathFocus} pre navigovanie na pásmo cesty elementu. Presuňte sa na tlačidlo ďalšieho prvku s TAB alebo pravou šípkou. Presuňte sa k predchádzajúcemu tlačidlu s SHIFT + TAB alebo ľavou šípkou. Stlačte medzerník alebo ENTER pre výber prvku v editore.\"}]},\n{name:\"Príkazy\",items:[{name:\"Vrátiť príkazy\",legend:\"Stlačte ${undo}\"},{name:\"Nanovo vrátiť príkaz\",legend:\"Stlačte ${redo}\"},{name:\"Príkaz na stučnenie\",legend:\"Stlačte ${bold}\"},{name:\"Príkaz na kurzívu\",legend:\"Stlačte ${italic}\"},{name:\"Príkaz na podčiarknutie\",legend:\"Stlačte ${underline}\"},{name:\"Príkaz na odkaz\",legend:\"Stlačte ${link}\"},{name:\"Príkaz na zbalenie lišty nástrojov\",legend:\"Stlačte ${toolbarCollapse}\"},{name:\"Prejsť na predchádzajúcu zamerateľnú medzeru príkazu\",legend:\"Stlačte ${accessPreviousSpace} pre prístup na najbližšie nedosiahnuteľné zamerateľné medzery pred vsuvkuo. Napríklad: dve za sebou idúce horizontálne čiary. Opakujte kombináciu klávesov pre dosiahnutie vzdialených zamerateľných medzier.\"},\n{name:\"Prejsť na ďalší \",legend:\"Stlačte ${accessNextSpace} pre prístup na najbližšie nedosiahnuteľné zamerateľné medzery po vsuvke. Napríklad: dve za sebou idúce horizontálne čiary. Opakujte kombináciu klávesov pre dosiahnutie vzdialených zamerateľných medzier.\"},{name:\"Pomoc prístupnosti\",legend:\"Stlačte ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",\nhome:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",\nf1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"sl\",{title:\"Navodila Dostopnosti\",contents:\"Vsebina Pomoči. Če želite zapreti to pogovorno okno pritisnite ESC.\",legend:[{name:\"Splošno\",items:[{name:\"Urejevalna Orodna Vrstica\",legend:\"Pritisnite ${toolbarFocus} za pomik v orodno vrstico. Z TAB in SHIFT-TAB se pomikate na naslednjo in prejšnjo skupino orodne vrstice. Z DESNO PUŠČICO ali LEVO PUŠČICO se pomikate na naslednji in prejšnji gumb orodne vrstice. Pritisnite SPACE ali ENTER, da aktivirate gumb orodne vrstice.\"},\n{name:\"Urejevalno Pogovorno Okno\",legend:\"Znotraj pogovornega okna, pritisnite tipko TAB za pomik na naslednjo pogovorno polje, pritisnite SHIFT + TAB za pomik v prejšnje polje, pritisnite tipko ENTER za predložitev pogovornega okna, pritisnite tipko ESC, da prekličete okno. Za okna, ki imajo več zavihkov, pritisnite ALT + F10, da pojdete na seznam zavihkov. Na naslednji zavihek se premaknete s tipko TAB ali DESNO PUŠČICO. Z SHIFT + TAB ali LEVO PUŠČICO pa se premaknete na prejšnji zavihek. Pritisnite tipko SPACE ali ENTER za izbiro zavihka.\"},\n{name:\"Urejevalni Kontekstni Meni\",legend:\"Pritisnite ${contextMenu} ali APPLICATION KEY, da odprete kontekstni meni. Nato se premaknite na naslednjo možnost menija s tipko TAB ali PUŠČICA DOL. Premakniti se na prejšnjo možnost z SHIFT + TAB ali PUŠČICA GOR. Pritisnite SPACE ali ENTER za izbiro možnosti menija. Odprite podmeni trenutne možnosti menija s tipko SPACE ali ENTER ali DESNA PUŠČICA. Vrnite se na matični element menija s tipko ESC ali LEVA PUŠČICA. Zaprite kontekstni meni z ESC.\"},{name:\"Urejevalno Seznamsko Polje\",\nlegend:\"Znotraj seznama, se premaknete na naslednji element seznama s tipko TAB ali PUŠČICO DOL. Z SHIFT + TAB ali PUŠČICO GOR se premaknete na prejšnji element seznama. Pritisnite tipko SPACE ali ENTER za izbiro elementa. Pritisnite tipko ESC, da zaprete seznam.\"},{name:\"Urejevalna vrstica poti elementa\",legend:\"Pritisnite ${elementsPathFocus} za pomikanje po vrstici elementnih poti. S TAB ali DESNA PUŠČICA se premaknete na naslednji gumb elementa. Z SHIFT + TAB ali LEVO PUŠČICO se premaknete na prejšnji gumb elementa. Pritisnite SPACE ali ENTER za izbiro elementa v urejevalniku.\"}]},\n{name:\"Ukazi\",items:[{name:\"Razveljavi ukaz\",legend:\"Pritisnite ${undo}\"},{name:\"Ponovi ukaz\",legend:\"Pritisnite ${redo}\"},{name:\"Krepki ukaz\",legend:\"Pritisnite ${bold}\"},{name:\"Ležeči ukaz\",legend:\"Pritisnite ${italic}\"},{name:\"Poudarni ukaz\",legend:\"Pritisnite ${underline}\"},{name:\"Ukaz povezave\",legend:\"Pritisnite ${link}\"},{name:\"Skrči Orodno Vrstico Ukaz\",legend:\"Pritisnite ${toolbarCollapse}\"},{name:\"Dostop do prejšnjega ukaza ostrenja\",legend:\"Pritisnite ${accessPreviousSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora pred strešico, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore.\"},\n{name:\"Dostop do naslednjega ukaza ostrenja\",legend:\"Pritisnite ${accessNextSpace} za dostop do najbližjega nedosegljivega osredotočenega prostora po strešici, npr.: dva sosednja HR elementa. Ponovite kombinacijo tipk, da dosežete oddaljene osredotočene prostore.\"},{name:\"Pomoč Dostopnosti\",legend:\"Pritisnite ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",\nhome:\"Home\",leftArrow:\"Levo puščica\",upArrow:\"Gor puščica\",rightArrow:\"Desno puščica\",downArrow:\"Dol puščica\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Leva Windows tipka\",rightWindowKey:\"Desna Windows tipka\",selectKey:\"Select tipka\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Zmnoži\",add:\"Dodaj\",subtract:\"Odštej\",decimalPoint:\"Decimalna vejica\",\ndivide:\"Deli\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Podpičje\",equalSign:\"enačaj\",comma:\"Vejica\",dash:\"Vezaj\",period:\"Pika\",forwardSlash:\"Desna poševnica\",graveAccent:\"Krativec\",openBracket:\"Oklepaj\",backSlash:\"Leva poševnica\",closeBracket:\"Oklepaj\",singleQuote:\"Opuščaj\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"sq\",{title:\"Udhëzimet e Qasjes\",contents:\"Përmbajtja ndihmëse. Për ta mbyllur dialogun shtyp ESC.\",legend:[{name:\"Të përgjithshme\",items:[{name:\"Shiriti i Redaktuesit\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"Dialogu i Redaktuesit\",legend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},\n{name:\"Editor Context Menu\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},{name:\"Editor List Box\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},{name:\"Komandat\",items:[{name:\"Rikthe komandën\",legend:\"Shtyp ${undo}\"},{name:\"Ribëj komandën\",legend:\"Shtyp ${redo}\"},{name:\"Komanda e trashjes së tekstit\",legend:\"Shtyp ${bold}\"},{name:\"Komanda kursive\",legend:\"Shtyp ${italic}\"},\n{name:\"Komanda e nënvijëzimit\",legend:\"Shtyp ${underline}\"},{name:\"Komanda e Nyjes\",legend:\"Shtyp ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Shtyp ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\"Ndihmë Qasjeje\",legend:\"Shtyp ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",\nnumpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",\nopenBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"sr-latn\",{title:\"Accessibility Instructions\",contents:\"Help Contents. To close this dialog press ESC.\",legend:[{name:\"Opšte\",items:[{name:\"Editor Toolbar\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"Editor Dialog\",legend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},\n{name:\"Editor Context Menu\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},{name:\"Editor List Box\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},{name:\"Commands\",items:[{name:\" Undo command\",legend:\"Press ${undo}\"},{name:\" Redo command\",legend:\"Press ${redo}\"},{name:\" Bold command\",legend:\"Press ${bold}\"},{name:\" Italic command\",legend:\"Press ${italic}\"},{name:\" Underline command\",\nlegend:\"Press ${underline}\"},{name:\" Link command\",legend:\"Press ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Accessibility Help\",legend:\"Press ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",\ngraveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"sr\",{title:\"Accessibility Instructions\",contents:\"Help Contents. To close this dialog press ESC.\",legend:[{name:\"Опште\",items:[{name:\"Editor Toolbar\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"Editor Dialog\",legend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},\n{name:\"Editor Context Menu\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},{name:\"Editor List Box\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},{name:\"Commands\",items:[{name:\" Undo command\",legend:\"Press ${undo}\"},{name:\" Redo command\",legend:\"Press ${redo}\"},{name:\" Bold command\",legend:\"Press ${bold}\"},{name:\" Italic command\",legend:\"Press ${italic}\"},{name:\" Underline command\",\nlegend:\"Press ${underline}\"},{name:\" Link command\",legend:\"Press ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Accessibility Help\",legend:\"Press ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",\ngraveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"sv\",{title:\"Hjälpmedelsinstruktioner\",contents:\"Hjälpinnehåll. För att stänga denna dialogruta trycker du på ESC.\",legend:[{name:\"Allmänt\",items:[{name:\"Editor verktygsfält\",legend:\"Tryck på ${toolbarFocus} för att navigera till verktygsfältet. Flytta till nästa och föregående verktygsfältsgrupp med TAB och SHIFT-TAB. Flytta till nästa och föregående knapp i verktygsfältet med HÖGERPIL eller VÄNSTERPIL. Tryck Space eller ENTER för att aktivera knappen i verktygsfältet.\"},\n{name:\"Dialogeditor\",legend:\"Inuti en dialogruta, tryck TAB för att navigera till nästa fält i dialogrutan. Du trycker SKIFT + TAB för att flytta till föregående fält. Tryck ENTER för att skicka. Du avbryter och stänger dialogen med ESC. För dialogrutor som har flera flikar, tryck ALT + F10 navigera till fliklistan. Flytta sedan till nästa flik med HÖGERPIL. Flytta till föregående flik med SHIFT + TAB eller VÄNSTERPIL. Tryck Space eller ENTER för att välja fliken.\"},{name:\"Editor för innehållsmeny\",\nlegend:\"Tryck på $ {contextMenu} eller PROGRAMTANGENTEN för att öppna snabbmenyn. Flytta sedan till nästa menyalternativ med TAB eller NEDPIL. Flytta till föregående alternativ med SHIFT + TABB eller UPPIL. Tryck Space eller ENTER för att välja menyalternativ. Öppna undermeny av nuvarande alternativ med SPACE eller ENTER eller HÖGERPIL. Gå tillbaka till överordnade menyalternativ med ESC eller VÄNSTERPIL. Stäng snabbmenyn med ESC.\"},{name:\"Editor för List Box\",legend:\"Inuti en list-box, gå till nästa listobjekt med TAB eller NEDPIL. Flytta till föregående listobjekt med SHIFT + TAB eller UPPIL. Tryck Space eller ENTER för att välja listan alternativet. Tryck ESC för att stänga listan-boxen.\"},\n{name:\"Editor för elementens sökväg\",legend:\"Tryck på $ {elementsPathFocus} för att navigera till verktygsfältet för elementens sökvägar. Flytta till nästa elementknapp med TAB eller HÖGERPIL. Flytta till föregående knapp med SKIFT + TAB eller VÄNSTERPIL. Tryck Space eller ENTER för att välja element i redigeraren.\"}]},{name:\"Kommandon\",items:[{name:\"Kommandot ångra\",legend:\"Tryck på ${undo}\"},{name:\"Kommandot gör om\",legend:\"Tryck på ${redo}\"},{name:\"Kommandot fet stil\",legend:\"Tryck på ${bold}\"},\n{name:\"Kommandot kursiv\",legend:\"Tryck på ${italic}\"},{name:\"Kommandot understruken\",legend:\"Tryck på ${underline}\"},{name:\"Kommandot länk\",legend:\"Tryck på ${link}\"},{name:\"Verktygsfält Dölj kommandot\",legend:\"Tryck på ${toolbarCollapse}\"},{name:\"Gå till föregående fokus plats\",legend:\"Tryck på ${accessPreviousSpace} för att gå till närmast onåbara utrymme före markören, exempel: två intilliggande HR element. Repetera tangentkombinationen för att gå till nästa.\"},{name:\"Tillgå nästa fokuskommandots utrymme\",\nlegend:\"Tryck ${accessNextSpace} på för att komma åt den närmaste onåbar fokus utrymme efter cirkumflex, till exempel: två intilliggande HR element. Upprepa tangentkombinationen för att nå avlägsna fokus utrymmen.\"},{name:\"Hjälp om tillgänglighet\",legend:\"Tryck ${a11yHelp}\"}]}],backspace:\"Backsteg\",tab:\"Tab\",enter:\"Retur\",shift:\"Skift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Paus\",capslock:\"Caps lock\",escape:\"Escape\",pageUp:\"Sida Up\",pageDown:\"Sida Ned\",end:\"Slut\",home:\"Hem\",leftArrow:\"Vänsterpil\",upArrow:\"Uppil\",\nrightArrow:\"Högerpil\",downArrow:\"Nedåtpil\",insert:\"Infoga\",\"delete\":\"Radera\",leftWindowKey:\"Vänster Windowstangent\",rightWindowKey:\"Höger Windowstangent\",selectKey:\"Välj tangent\",numpad0:\"Nummer 0\",numpad1:\"Nummer 1\",numpad2:\"Nummer 2\",numpad3:\"Nummer 3\",numpad4:\"Nummer 4\",numpad5:\"Nummer 5\",numpad6:\"Nummer 6\",numpad7:\"Nummer 7\",numpad8:\"Nummer 8\",numpad9:\"Nummer 9\",multiply:\"Multiplicera\",add:\"Addera\",subtract:\"Minus\",decimalPoint:\"Decimalpunkt\",divide:\"Dividera\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",\nf5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semikolon\",equalSign:\"Lika med tecken\",comma:\"Komma\",dash:\"Minus\",period:\"Punkt\",forwardSlash:\"Snedstreck framåt\",graveAccent:\"Accent\",openBracket:\"Öppningsparentes\",backSlash:\"Snedstreck bakåt\",closeBracket:\"Slutparentes\",singleQuote:\"Enkelt Citattecken\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/th.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"th\",{title:\"Accessibility Instructions\",contents:\"Help Contents. To close this dialog press ESC.\",legend:[{name:\"ทั่วไป\",items:[{name:\"แถบเครื่องมือสำหรับเครื่องมือช่วยพิมพ์\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"Editor Dialog\",legend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},\n{name:\"Editor Context Menu\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},{name:\"Editor List Box\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},{name:\"คำสั่ง\",items:[{name:\"เลิกทำคำสั่ง\",legend:\"วาง ${undo}\"},{name:\"คำสั่งสำหรับทำซ้ำ\",legend:\"วาง ${redo}\"},{name:\"คำสั่งสำหรับตัวหนา\",legend:\"วาง ${bold}\"},{name:\"คำสั่งสำหรับตัวเอียง\",legend:\"วาง ${italic}\"},{name:\"คำสั่งสำหรับขีดเส้นใต้\",\nlegend:\"วาง ${underline}\"},{name:\"คำสั่งสำหรับลิงก์\",legend:\"วาง ${link}\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Accessibility Help\",legend:\"Press ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",\ngraveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"tr\",{title:\"Erişilebilirlik Talimatları\",contents:\"Yardım içeriği. Bu pencereyi kapatmak için ESC tuşuna basın.\",legend:[{name:\"Genel\",items:[{name:\"Düzenleyici Araç Çubuğu\",legend:\"Araç çubuğunda gezinmek için ${toolbarFocus} basın. TAB ve SHIFT-TAB ile önceki ve sonraki araç çubuğu grubuna taşıyın. SAĞ OK veya SOL OK ile önceki ve sonraki bir araç çubuğu düğmesini hareket ettirin. SPACE tuşuna basın veya araç çubuğu düğmesini etkinleştirmek için ENTER tuşna basın.\"},\n{name:\"Diyalog Düzenleyici\",legend:\"Dialog penceresi içinde, sonraki iletişim alanına gitmek için SEKME tuşuna basın, önceki alana geçmek için SHIFT + TAB tuşuna basın, pencereyi göndermek için ENTER tuşuna basın, dialog penceresini iptal etmek için ESC tuşuna basın. Birden çok sekme sayfaları olan diyalogların, sekme listesine gitmek için ALT + F10 tuşlarına basın. Sonra TAB veya SAĞ OK sonraki sekmeye taşıyın. SHIFT + TAB veya SOL OK ile önceki sekmeye geçin. Sekme sayfayı seçmek için SPACE veya ENTER tuşuna basın.\"},\n{name:\"İçerik Menü Editörü\",legend:\"İçerik menüsünü açmak için ${contextMenu} veya UYGULAMA TUŞU'na basın. Daha sonra SEKME veya AŞAĞI OK ile bir sonraki menü seçeneği taşıyın. SHIFT + TAB veya YUKARI OK ile önceki seçeneğe gider. Menü seçeneğini seçmek için SPACE veya ENTER tuşuna basın. Seçili seçeneğin alt menüsünü SPACE ya da ENTER veya SAĞ OK açın. Üst menü öğesini geçmek için ESC veya SOL OK ile geri dönün. ESC ile bağlam menüsünü kapatın.\"},{name:\"Liste Kutusu Editörü\",legend:\"Liste kutusu içinde, bir sonraki liste öğesine SEKME VEYA AŞAĞI OK ile taşıyın. SHIFT + TAB veya YUKARI önceki liste öğesi taşıyın. Liste seçeneği seçmek için SPACE veya ENTER tuşuna basın. Liste kutusunu kapatmak için ESC tuşuna basın.\"},\n{name:\"Element Yol Çubuğu Editörü\",legend:\"Elementlerin yol çubuğunda gezinmek için ${ElementsPathFocus} basın. SEKME veya SAĞ OK ile sonraki element düğmesine taşıyın. SHIFT + TAB veya SOL OK önceki düğmeye hareket ettirin. Editör içindeki elementi seçmek için ENTER veya SPACE tuşuna basın.\"}]},{name:\"Komutlar\",items:[{name:\"Komutu geri al\",legend:\"$(undo)'ya basın\"},{name:\"Komutu geri al\",legend:\"${redo} basın\"},{name:\" Kalın komut\",legend:\"${bold} basın\"},{name:\" İtalik komutu\",legend:\"${italic} basın\"},\n{name:\" Alttan çizgi komutu\",legend:\"${underline} basın\"},{name:\" Bağlantı komutu\",legend:\"${link} basın\"},{name:\" Araç çubuğu Toplama komutu\",legend:\"${toolbarCollapse} basın\"},{name:\"Önceki komut alanına odaklan\",legend:\"Düzeltme imleçinden önce, en yakın uzaktaki alana erişmek için ${accessPreviousSpace} basın, örneğin: iki birleşik HR elementleri. Aynı tuş kombinasyonu tekrarıyla diğer alanlarada ulaşın.\"},{name:\"Sonraki komut alanına odaklan\",legend:\"Düzeltme imleçinden sonra, en yakın uzaktaki alana erişmek için ${accessNextSpace} basın, örneğin: iki birleşik HR elementleri. Aynı tuş kombinasyonu tekrarıyla diğer alanlarada ulaşın.\"},\n{name:\"Erişilebilirlik Yardımı\",legend:\"${a11yHelp}'e basın\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",\ngraveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"tt\",{title:\"Accessibility Instructions\",contents:\"Help Contents. To close this dialog press ESC.\",legend:[{name:\"Гомуми\",items:[{name:\"Editor Toolbar\",legend:\"Press ${toolbarFocus} to navigate to the toolbar. Move to the next and previous toolbar group with TAB and SHIFT-TAB. Move to the next and previous toolbar button with RIGHT ARROW or LEFT ARROW. Press SPACE or ENTER to activate the toolbar button.\"},{name:\"Editor Dialog\",legend:\"Inside a dialog, press TAB to navigate to next dialog field, press SHIFT + TAB to move to previous field, press ENTER to submit dialog, press ESC to cancel dialog. For dialogs that have multiple tab pages, press ALT + F10 to navigate to tab-list. Then move to next tab with TAB OR RIGTH ARROW. Move to previous tab with SHIFT + TAB or LEFT ARROW. Press SPACE or ENTER to select the tab page.\"},\n{name:\"Editor Context Menu\",legend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Then move to next menu option with TAB or DOWN ARROW. Move to previous option with SHIFT+TAB or UP ARROW. Press SPACE or ENTER to select the menu option. Open sub-menu of current option with SPACE or ENTER or RIGHT ARROW. Go back to parent menu item with ESC or LEFT ARROW. Close context menu with ESC.\"},{name:\"Editor List Box\",legend:\"Inside a list-box, move to next list item with TAB OR DOWN ARROW. Move to previous list item with SHIFT + TAB or UP ARROW. Press SPACE or ENTER to select the list option. Press ESC to close the list-box.\"},\n{name:\"Editor Element Path Bar\",legend:\"Press ${elementsPathFocus} to navigate to the elements path bar. Move to next element button with TAB or RIGHT ARROW. Move to previous button with  SHIFT+TAB or LEFT ARROW. Press SPACE or ENTER to select the element in editor.\"}]},{name:\"Командалар\",items:[{name:\"Кайтару\",legend:\"${undo} басыгыз\"},{name:\"Кабатлау\",legend:\"${redo} басыгыз\"},{name:\"Калын\",legend:\"${bold} басыгыз\"},{name:\"Курсив\",legend:\"${italic} басыгыз\"},{name:\"Астына сызылган\",legend:\"${underline} басыгыз\"},\n{name:\"Сылталама\",legend:\"${link} басыгыз\"},{name:\" Toolbar Collapse command\",legend:\"Press ${toolbarCollapse}\"},{name:\" Access previous focus space command\",legend:\"Press ${accessPreviousSpace} to access the closest unreachable focus space before the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},{name:\" Access next focus space command\",legend:\"Press ${accessNextSpace} to access the closest unreachable focus space after the caret, for example: two adjacent HR elements. Repeat the key combination to reach distant focus spaces.\"},\n{name:\" Accessibility Help\",legend:\"${a11yHelp} басыгыз\"}]}],backspace:\"Кайтару\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Тыныш\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Сул якка ук\",upArrow:\"Өскә таба ук\",rightArrow:\"Уң якка ук\",downArrow:\"Аска таба ук\",insert:\"Өстәү\",\"delete\":\"Бетерү\",leftWindowKey:\"Сул Windows төймəсе\",rightWindowKey:\"Уң Windows төймəсе\",selectKey:\"Select төймəсе\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",\nnumpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Тапкырлау\",add:\"Кушу\",subtract:\"Алу\",decimalPoint:\"Унарлы нокта\",divide:\"Бүлү\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Нокталы өтер\",equalSign:\"Тигезлек билгесе\",comma:\"Өтер\",dash:\"Сызык\",period:\"Дәрәҗә\",forwardSlash:\"Кыек сызык\",\ngraveAccent:\"Гравис\",openBracket:\"Җәя ачу\",backSlash:\"Кире кыек сызык\",closeBracket:\"Җәя ябу\",singleQuote:\"Бер иңле куштырнаклар\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"ug\",{title:\"قوشۇمچە چۈشەندۈرۈش\",contents:\"ياردەم مەزمۇنى. بۇ سۆزلەشكۈنى ياپماقچى بولسىڭىز ESC نى بېسىڭ.\",legend:[{name:\"ئادەتتىكى\",items:[{name:\"قورال بالداق تەھرىر\",legend:\"${toolbarFocus} بېسىلسا قورال بالداققا يېتەكلەيدۇ، TAB ياكى SHIFT+TAB ئارقىلىق قورال بالداق گۇرۇپپىسى تاللىنىدۇ، ئوڭ سول يا ئوقتا توپچا تاللىنىدۇ، بوشلۇق ياكى Enter كۇنۇپكىسىدا تاللانغان توپچىنى قوللىنىدۇ.\"},{name:\"تەھرىرلىگۈچ سۆزلەشكۈسى\",legend:\"سۆزلەشكۈدە TAB كۇنۇپكىسىدا كېيىنكى سۆز بۆلىكىگە يۆتكىلىدۇ، SHIFT + TAB بىرىكمە كۇنۇپكىسىدا ئالدىنقى سۆز بۆلىكىگە يۆتكىلىدۇ، ENTER كۇنۇپكىسىدا سۆزلەشكۈنى تاپشۇرىدۇ، ESC كۇنۇپكىسى سۆزلەشكۈدىن ۋاز كېچىدۇ. كۆپ بەتكۈچلۈك سۆزلەشكۈگە نىسبەتەن، ALT + F10 دا بەتكۈچ تىزىمىغا يۆتكەيدۇ. ئاندىن TAB كۇنۇپكىسى ياكى ئوڭ يا ئوق كۇنۇپكىسى كېيىنكى بەتكۈچكە يۆتكەيدۇ؛ SHIFT + TAB كۇنۇپكىسى ياكى سول يا ئوق كۇنۇپكىسى ئالدىنقى بەتكۈچكە يۆتكەيدۇ. بوشلۇق كۇنۇپكىسى ياكى ENTER كۇنۇپكىسى بەتكۈچنى تاللايدۇ.\"},\n{name:\"تەھرىرلىگۈچ تىل مۇھىت تىزىملىكى\",legend:\"${contextMenu} ياكى ئەپ كۇنۇپكىسىدا تىل مۇھىت تىزىملىكىنى ئاچىدۇ. ئاندىن TAB ياكى ئاستى يا ئوق كۇنۇپكىسىدا كېيىنكى تىزىملىك تۈرىگە يۆتكەيدۇ؛ SHIFT+TAB ياكى ئۈستى يا ئوق كۇنۇپكىسىدا ئالدىنقى تىزىملىك تۈرىگە يۆتكەيدۇ. بوشلۇق ياكى ENTER كۇنۇپكىسىدا تىزىملىك تۈرىنى تاللايدۇ. بوشلۇق، ENTER ياكى ئوڭ يا ئوق كۇنۇپكىسىدا تارماق تىزىملىكنى ئاچىدۇ. قايتىش تىزىملىكىگە ESC ياكى سول يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. ESC كۇنۇپكىسىدا تىل مۇھىت تىزىملىكى تاقىلىدۇ.\"},{name:\"تەھرىرلىگۈچ تىزىمى\",\nlegend:\"تىزىم قۇتىسىدا، كېيىنكى تىزىم تۈرىگە يۆتكەشتە  TAB ياكى ئاستى يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. ئالدىنقى تىزىم تۈرىگە يۆتكەشتە  SHIFT + TAB ياكى ئۈستى يا ئوق كۇنۇپكىسى ئىشلىتىلىدۇ. بوشلۇق ياكى ENTER كۇنۇپكىسىدا تىزىم تۈرىنى تاللايدۇ.ESC كۇنۇپكىسىدا تىزىم قۇتىسىنى يىغىدۇ.\"},{name:\"تەھرىرلىگۈچ ئېلېمېنت يول بالداق\",legend:\"${elementsPathFocus} بېسىلسا ئېلېمېنت يول بالداققا يېتەكلەيدۇ، TAB ياكى ئوڭ يا ئوقتا كېيىنكى ئېلېمېنت تاللىنىدۇ،  SHIFT+TAB ياكى سول يا ئوقتا ئالدىنقى ئېلېمېنت تاللىنىدۇ،  بوشلۇق ياكى Enter كۇنۇپكىسىدا تەھرىرلىگۈچتىكى ئېلېمېنت تاللىنىدۇ.\"}]},\n{name:\"بۇيرۇق\",items:[{name:\"بۇيرۇقتىن يېنىۋال\",legend:\"${undo} نى بېسىڭ\"},{name:\"قايتىلاش بۇيرۇقى\",legend:\"${redo} نى بېسىڭ\"},{name:\"توملىتىش بۇيرۇقى\",legend:\"${bold} نى بېسىڭ\"},{name:\"يانتۇ بۇيرۇقى\",legend:\"${italic} نى بېسىڭ\"},{name:\"ئاستى سىزىق بۇيرۇقى\",legend:\"${underline} نى بېسىڭ\"},{name:\"ئۇلانما بۇيرۇقى\",legend:\"${link} نى بېسىڭ\"},{name:\"قورال بالداق قاتلاش بۇيرۇقى\",legend:\"${toolbarCollapse} نى بېسىڭ\"},{name:\"ئالدىنقى فوكۇس نۇقتىسىنى زىيارەت قىلىدىغان بۇيرۇق\",legend:\"${accessPreviousSpace} بېسىپ ^ بەلگىسىگە ئەڭ يېقىن زىيارەت قىلغىلى بولمايدىغان فوكۇس نۇقتا رايونىنىڭ ئالدىنى زىيارەت قىلىدۇ، مەسىلەن: ئۆز ئارا قوشنا ئىككى HR ئېلېمېنت. بۇ بىرىكمە كۇنۇپكا تەكرارلانسا يىراقتىكى فوكۇس نۇقتا رايونىغا يەتكىلى بولىدۇ.\"},\n{name:\"كېيىنكى فوكۇس نۇقتىسىنى زىيارەت قىلىدىغان بۇيرۇق\",legend:\"${accessNextSpace} بېسىپ ^ بەلگىسىگە ئەڭ يېقىن زىيارەت قىلغىلى بولمايدىغان فوكۇس نۇقتا رايونىنىڭ كەينىنى زىيارەت قىلىدۇ، مەسىلەن: ئۆز ئارا قوشنا ئىككى HR ئېلېمېنت. بۇ بىرىكمە كۇنۇپكا تەكرارلانسا يىراقتىكى فوكۇس نۇقتا رايونىغا يەتكىلى بولىدۇ.\"},{name:\"توسالغۇسىز لايىھە چۈشەندۈرۈشى\",legend:\"${a11yHelp} نى بېسىڭ\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",\npageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",\ndecimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",backSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"uk\",{title:\"Спеціальні Інструкції\",contents:\"Довідка. Натисніть ESC і вона зникне.\",legend:[{name:\"Основне\",items:[{name:\"Панель Редактора\",legend:\"Натисніть ${toolbarFocus} для переходу до панелі інструментів. Для переміщення між групами панелі інструментів використовуйте TAB і SHIFT-TAB. Для переміщення між кнопками панелі іструментів використовуйте кнопки СТРІЛКА ВПРАВО або ВЛІВО. Натисніть ПРОПУСК або ENTER для запуску кнопки панелі інструментів\"},{name:\"Діалог Редактора\",\nlegend:\"У діалозі натисніть клавішу TAB для переходу до наступного поля, натисніть SHIFT + TAB, щоб перейти до попереднього поля, натисніть ENTER, щоб відправити дані, натисніть ESC, щоб скасувати. Для вікон, які мають кілька вкладок, натисніть ALT + F10 для переходу до списку вкладок. Перехід до наступної вкладки TAB АБО СТРІЛКА ВПРАВО. Перехід до попередньої вкладки за допомогою SHIFT + TAB або СТРІЛКА ВЛІВО. Натисніть ПРОПУСК або ENTER, щоб вибрати вкладку.\"},{name:\"Контекстне Меню Редактора\",\nlegend:\"Press ${contextMenu} or APPLICATION KEY to open context-menu. Потім перейдіть до наступного пункту меню за допомогою TAB або СТРІЛКИ ВНИЗ. Натисніть ПРОПУСК або ENTER для вибору параметру меню. Відкрийте підменю поточного параметру, натиснувши ПРОПУСК або ENTER або СТРІЛКУ ВПРАВО. Перейдіть до батьківського елемента меню, натиснувши ESC або СТРІЛКУ ВЛІВО. Закрийте контекстне меню, натиснувши ESC.\"},{name:\"Скринька Списків Редактора\",legend:\"Всередині списку переходимо до наступного пункту списку  клавішею TAB або СТРІЛКА ВНИЗ. Перейти до попереднього елемента списку можна SHIFT + TAB або СТРІЛКА ВГОРУ. Натисніть ПРОПУСК або ENTER, щоб вибрати параметр списку. Натисніть клавішу ESC, щоб закрити список.\"},\n{name:\"Шлях до елемента редактора\",legend:\"Натисніть ${elementsPathFocus} для навігації між елементами панелі. Перейдіть до наступного елемента кнопкою TAB або СТРІЛКА ВПРАВО. Перейдіть до попереднього елемента кнопкою SHIFT+TAB або СТРІЛКА ВЛІВО. Натисніть ПРОПУСК або ENTER для вибору елемента в редакторі.\"}]},{name:\"Команди\",items:[{name:\"Відмінити команду\",legend:\"Натисніть ${undo}\"},{name:\"Повторити\",legend:\"Натисніть ${redo}\"},{name:\"Жирний\",legend:\"Натисніть ${bold}\"},{name:\"Курсив\",legend:\"Натисніть ${italic}\"},\n{name:\"Підкреслений\",legend:\"Натисніть ${underline}\"},{name:\"Посилання\",legend:\"Натисніть ${link}\"},{name:\"Згорнути панель інструментів\",legend:\"Натисніть ${toolbarCollapse}\"},{name:\"Доступ до попереднього місця фокусування\",legend:\"Натисніть ${accessNextSpace} для доступу до найближчої недосяжної області фокусування перед кареткою, наприклад: два сусідні елементи HR. Повторіть комбінацію клавіш для досягнення віддалених областей фокусування.\"},{name:\"Доступ до наступного місця фокусування\",legend:\"Натисніть ${accessNextSpace} для доступу до найближчої недосяжної області фокусування після каретки, наприклад: два сусідні елементи HR. Повторіть комбінацію клавіш для досягнення віддалених областей фокусування.\"},\n{name:\"Допомога з доступності\",legend:\"Натисніть ${a11yHelp}\"}]}],backspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Esc\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Ліва стрілка\",upArrow:\"Стрілка вгору\",rightArrow:\"Права стрілка\",downArrow:\"Стрілка вниз\",insert:\"Вставити\",\"delete\":\"Видалити\",leftWindowKey:\"Ліва клавіша Windows\",rightWindowKey:\"Права клавіша Windows\",selectKey:\"Виберіть клавішу\",numpad0:\"Numpad 0\",\nnumpad1:\"Numpad 1\",numpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",numpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Множення\",add:\"Додати\",subtract:\"Віднімання\",decimalPoint:\"Десяткова кома\",divide:\"Ділення\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Крапка з комою\",equalSign:\"Знак рівності\",comma:\"Кома\",dash:\"Тире\",period:\"Період\",\nforwardSlash:\"Коса риска\",graveAccent:\"Гравіс\",openBracket:\"Відкрити дужку\",backSlash:\"Зворотна коса риска\",closeBracket:\"Закрити дужку\",singleQuote:\"Одинарні лапки\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"vi\",{title:\"Hướng dẫn trợ năng\",contents:\"Nội dung Hỗ trợ. Nhấn ESC để đóng hộp thoại.\",legend:[{name:\"Chung\",items:[{name:\"Thanh công cụ soạn thảo\",legend:\"Nhấn ${toolbarFocus} để điều hướng đến thanh công cụ. Nhấn TAB và SHIFT-TAB để chuyển đến nhóm thanh công cụ khác. Nhấn MŨI TÊN PHẢI hoặc MŨI TÊN TRÁI để chuyển sang nút khác trên thanh công cụ. Nhấn PHÍM CÁCH hoặc ENTER để kích hoạt nút trên thanh công cụ.\"},{name:\"Hộp thoại Biên t\",legend:\"Bên trong một hộp thoại, nhấn TAB để chuyển sang trường tiếp theo, nhấn SHIFT + TAB để quay lại trường phía trước, nhấn ENTER để chấp nhận, nhấn ESC để đóng hộp thoại. Đối với các hộp thoại có nhiều tab, nhấn ALT + F10 để chuyển đến danh sách các tab. Sau đó nhấn TAB hoặc MŨI TÊN SANG PHẢI để chuyển sang tab tiếp theo. Nhấn SHIFT + TAB hoặc MŨI TÊN SANG TRÁI để chuyển sang tab trước đó. Nhấn DẤU CÁCH hoặc ENTER để chọn tab.\"},\n{name:\"Trình đơn Ngữ cảnh cBộ soạn thảo\",legend:\"Nhấn ${contextMenu} hoặc PHÍM ỨNG DỤNG để mở thực đơn ngữ cảnh. Sau đó nhấn TAB hoặc MŨI TÊN XUỐNG để di chuyển đến tuỳ chọn tiếp theo của thực đơn. Nhấn SHIFT+TAB hoặc MŨI TÊN LÊN để quay lại tuỳ chọn trước. Nhấn DẤU CÁCH hoặc ENTER để chọn tuỳ chọn của thực đơn. Nhấn DẤU CÁCH hoặc ENTER hoặc MŨI TÊN SANG PHẢI để mở thực đơn con của tuỳ chọn hiện tại. Nhấn ESC hoặc MŨI TÊN SANG TRÁI để quay trở lại thực đơn gốc. Nhấn ESC để đóng thực đơn ngữ cảnh.\"},\n{name:\"Hộp danh sách trình biên tập\",legend:\"Trong một danh sách chọn, di chuyển đối tượng tiếp theo với phím Tab hoặc phím mũi tên hướng xuống. Di chuyển đến đối tượng trước đó bằng cách nhấn tổ hợp phím Shift+Tab hoặc mũi tên hướng lên. Phím khoảng cách hoặc phím Enter để chọn các tùy chọn trong danh sách. Nhấn phím Esc để đóng lại danh sách chọn.\"},{name:\"Thanh đường dẫn các đối tượng\",legend:\"Nhấn ${elementsPathFocus} để điều hướng các đối tượng trong thanh đường dẫn. Di chuyển đến đối tượng tiếp theo bằng phím Tab hoặc phím mũi tên bên phải. Di chuyển đến đối tượng trước đó bằng tổ hợp phím Shift+Tab hoặc phím mũi tên bên trái. Nhấn phím khoảng cách hoặc Enter để chọn đối tượng trong trình soạn thảo.\"}]},\n{name:\"Lệnh\",items:[{name:\"Làm lại lện\",legend:\"Ấn ${undo}\"},{name:\"Làm lại lệnh\",legend:\"Ấn ${redo}\"},{name:\"Lệnh in đậm\",legend:\"Ấn ${bold}\"},{name:\"Lệnh in nghiêng\",legend:\"Ấn ${italic}\"},{name:\"Lệnh gạch dưới\",legend:\"Ấn ${underline}\"},{name:\"Lệnh liên kết\",legend:\"Nhấn ${link}\"},{name:\"Lệnh hiển thị thanh công cụ\",legend:\"Nhấn${toolbarCollapse}\"},{name:\"Truy cập đến lệnh tập trung vào khoảng cách trước đó\",legend:\"Ấn ${accessPreviousSpace} để truy cập đến phần tập trung khoảng cách sau phần còn sót lại của khoảng cách gần nhất vốn không tác động đến được , thí dụ: hai yếu tố điều chỉnh HR. Lặp lại các phím kết họep này để vươn đến phần khoảng cách.\"},\n{name:\"Truy cập phần đối tượng lệnh khoảng trống\",legend:\"Ấn ${accessNextSpace} để truy cập đến phần tập trung khoảng cách sau phần còn sót lại của khoảng cách gần nhất vốn không tác động đến được , thí dụ: hai yếu tố điều chỉnh HR. Lặp lại các phím kết họep này để vươn đến phần khoảng cách.\"},{name:\"Trợ giúp liên quan\",legend:\"Nhấn ${a11yHelp}\"}]}],backspace:\"Phím Backspace\",tab:\"Phím Tab\",enter:\"Phím Tab\",shift:\"Phím Shift\",ctrl:\"Phím Ctrl\",alt:\"Phím Alt\",pause:\"Phím Pause\",capslock:\"Phím Caps Lock\",\nescape:\"Phím Escape\",pageUp:\"Phím Page Up\",pageDown:\"Phím Page Down\",end:\"Phím End\",home:\"Phím Home\",leftArrow:\"Phím Left Arrow\",upArrow:\"Phím Up Arrow\",rightArrow:\"Phím Right Arrow\",downArrow:\"Phím Down Arrow\",insert:\"Chèn\",\"delete\":\"Xóa\",leftWindowKey:\"Phím Left Windows\",rightWindowKey:\"Phím Right Windows \",selectKey:\"Chọn phím\",numpad0:\"Phím 0\",numpad1:\"Phím 1\",numpad2:\"Phím 2\",numpad3:\"Phím 3\",numpad4:\"Phím 4\",numpad5:\"Phím 5\",numpad6:\"Phím 6\",numpad7:\"Phím 7\",numpad8:\"Phím 8\",numpad9:\"Phím 9\",\nmultiply:\"Nhân\",add:\"Thêm\",subtract:\"Trừ\",decimalPoint:\"Điểm số thập phân\",divide:\"Chia\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Dấu chấm phẩy\",equalSign:\"Đăng nhập bằng\",comma:\"Dấu phẩy\",dash:\"Dấu gạch ngang\",period:\"Phím .\",forwardSlash:\"Phím /\",graveAccent:\"Phím `\",openBracket:\"Open Bracket\",backSlash:\"Dấu gạch chéo ngược\",closeBracket:\"Gần giá đỡ\",singleQuote:\"Trích dẫn\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"zh-cn\",{title:\"辅助功能说明\",contents:\"帮助内容。要关闭此对话框请按 ESC 键。\",legend:[{name:\"常规\",items:[{name:\"编辑器工具栏\",legend:\"按 ${toolbarFocus} 导航到工具栏，使用 TAB 键和 SHIFT+TAB 组合键移动到上一个和下一个工具栏组。使用左右箭头键移动到上一个和下一个工具栏按钮。按空格键或回车键以选中工具栏按钮。\"},{name:\"编辑器对话框\",legend:\"在对话框内，TAB 键移动到下一个字段，SHIFT + TAB 组合键移动到上一个字段，ENTER 键提交对话框，ESC 键取消对话框。对于有多选项卡的对话框，用ALT + F10来移到选项卡列表。然后用 TAB 键或者向右箭头来移动到下一个选项卡；SHIFT + TAB 组合键或者向左箭头移动到上一个选项卡。用 SPACE 键或者 ENTER 键选择选项卡。\"},{name:\"编辑器上下文菜单\",legend:\"用 ${contextMenu} 或者“应用程序键”打开上下文菜单。然后用 TAB 键或者下箭头键来移动到下一个菜单项；SHIFT + TAB 组合键或者上箭头键移动到上一个菜单项。用 SPACE 键或者 ENTER 键选择菜单项。用 SPACE 键，ENTER 键或者右箭头键打开子菜单。返回菜单用 ESC 键或者左箭头键。用 ESC 键关闭上下文菜单。\"},\n{name:\"编辑器列表框\",legend:\"在列表框中，移到下一列表项用 TAB 键或者下箭头键。移到上一列表项用SHIFT + TAB 组合键或者上箭头键，用 SPACE 键或者 ENTER 键选择列表项。用 ESC 键收起列表框。\"},{name:\"编辑器元素路径栏\",legend:\"按 ${elementsPathFocus} 以导航到元素路径栏，使用 TAB 键或右箭头键选择下一个元素，使用 SHIFT+TAB 组合键或左箭头键选择上一个元素，按空格键或回车键以选定编辑器里的元素。\"}]},{name:\"命令\",items:[{name:\" 撤消命令\",legend:\"按 ${undo}\"},{name:\" 重做命令\",legend:\"按 ${redo}\"},{name:\" 加粗命令\",legend:\"按 ${bold}\"},{name:\" 倾斜命令\",legend:\"按 ${italic}\"},{name:\" 下划线命令\",legend:\"按 ${underline}\"},{name:\" 链接命令\",legend:\"按 ${link}\"},{name:\" 工具栏折叠命令\",legend:\"按 ${toolbarCollapse}\"},\n{name:\"访问前一个焦点区域的命令\",legend:\"按 ${accessPreviousSpace} 访问^符号前最近的不可访问的焦点区域，例如：两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。\"},{name:\"访问下一个焦点区域命令\",legend:\"按 ${accessNextSpace} 以访问^符号后最近的不可访问的焦点区域。例如：两个相邻的 HR 元素。重复此组合按键可以到达远处的焦点区域。\"},{name:\"辅助功能帮助\",legend:\"按 ${a11yHelp}\"}]}],backspace:\"退格键\",tab:\"Tab 键\",enter:\"回车键\",shift:\"Shift 键\",ctrl:\"Ctrl 键\",alt:\"Alt 键\",pause:\"暂停键\",capslock:\"大写锁定键\",escape:\"Esc 键\",pageUp:\"上翻页键\",pageDown:\"下翻页键\",end:\"行尾键\",home:\"行首键\",leftArrow:\"向左箭头键\",upArrow:\"向上箭头键\",rightArrow:\"向右箭头键\",downArrow:\"向下箭头键\",\ninsert:\"插入键\",\"delete\":\"删除键\",leftWindowKey:\"左 WIN 键\",rightWindowKey:\"右 WIN 键\",selectKey:\"选择键\",numpad0:\"小键盘 0 键\",numpad1:\"小键盘 1 键\",numpad2:\"小键盘 2 键\",numpad3:\"小键盘 3 键\",numpad4:\"小键盘 4 键\",numpad5:\"小键盘 5 键\",numpad6:\"小键盘 6 键\",numpad7:\"小键盘 7 键\",numpad8:\"小键盘 8 键\",numpad9:\"小键盘 9 键\",multiply:\"星号键\",add:\"加号键\",subtract:\"减号键\",decimalPoint:\"小数点键\",divide:\"除号键\",f1:\"F1 键\",f2:\"F2 键\",f3:\"F3 键\",f4:\"F4 键\",f5:\"F5 键\",f6:\"F6 键\",f7:\"F7 键\",f8:\"F8 键\",f9:\"F9 键\",f10:\"F10 键\",f11:\"F11 键\",f12:\"F12 键\",numLock:\"数字锁定键\",scrollLock:\"滚动锁定键\",\nsemiColon:\"分号键\",equalSign:\"等号键\",comma:\"逗号键\",dash:\"短划线键\",period:\"句号键\",forwardSlash:\"斜杠键\",graveAccent:\"重音符键\",openBracket:\"左中括号键\",backSlash:\"反斜杠键\",closeBracket:\"右中括号键\",singleQuote:\"单引号键\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"a11yhelp\",\"zh\",{title:\"輔助工具指南\",contents:\"說明內容。若要關閉此對話框請按「ESC」。\",legend:[{name:\"一般\",items:[{name:\"編輯器工具列\",legend:\"請按「${toolbarFocus}」以瀏覽工具列。\\r\\n利用「TAB」或「SHIFT+TAB」以便移動到下一個或前一個工具列群組。\\r\\n利用「→」或「←」以便移動到下一個或前一個工具列按鈕。\\r\\n請按下「空白鍵」或「ENTER」鍵啟動工具列按鈕。\"},{name:\"編輯器對話方塊\",legend:\"在對話框中，請按 TAB 鍵以便移動到下個欄位，請按 SHIFT + TAB 以便移動到前個欄位；請按 ENTER 以提交對話框資料，或按下 ESC 取消對話框。\\r\\n若是有多個頁框的對話框，請按 ALT + F10 以移動到頁框列表，並以 TAB 或是 → 方向鍵移動到下個頁框。以 SHIFT + TAB 或是 ← 方向鍵移動到前個頁框。按下 空白鍵 或是 ENTER 以選取頁框。\"},{name:\"編輯器內容功能表\",\nlegend:\"請按下「${contextMenu}」或是「應用程式鍵」以開啟內容選單。以「TAB」或是「↓」鍵移動到下一個選單選項。以「SHIFT + TAB」或是「↑」鍵移動到上一個選單選項。按下「空白鍵」或是「ENTER」鍵以選取選單選項。以「空白鍵」或「ENTER」或「→」開啟目前選項之子選單。以「ESC」或「←」回到父選單。以「ESC」鍵關閉內容選單」。\"},{name:\"編輯器清單方塊\",legend:\"在列表中，請利用 TAB  或  ↓ 方向鍵以移動到下一個項目；或利用 SHIFT + TAB 或 ↑ 方向鍵移動到前一個項目。請按下 空白鍵 或是 ENTER 以選取項目。請按 ESC 關閉列表。\"},{name:\"編輯器元件路徑工具列\",legend:\"請按「${elementsPathFocus}」以瀏覽元素路徑工具列。\\r\\n利用「TAB」或「→」以便移動到下一個元素按鈕。\\r\\n利用「SHIFT+TAB」或「←」以便移動到前一個元素按鈕。\\r\\n請按下「空白鍵」或「ENTER」鍵選擇編輯器中的元素。\"}]},{name:\"命令\",items:[{name:\"復原命令\",\nlegend:\"請按下「${undo}」\"},{name:\"重複命令\",legend:\"請按下「 ${redo}」\"},{name:\"粗體命令\",legend:\"請按下「${bold}」\"},{name:\"斜體\",legend:\"請按下「${italic}」\"},{name:\"底線命令\",legend:\"請按下「${underline}」\"},{name:\"連結\",legend:\"請按下「${link}」\"},{name:\"隱藏工具列\",legend:\"請按下「${toolbarCollapse}」\"},{name:\"存取前一個焦點空間命令\",legend:\"請按下 ${accessPreviousSpace} 以存取最近但無法靠近之插字符號前的焦點空間。舉例：二個相鄰的 HR 元素。\\r\\n重複按鍵以存取較遠的焦點空間。\"},{name:\"存取下一個焦點空間命令\",legend:\"請按下 ${accessNextSpace} 以存取最近但無法靠近之插字符號後的焦點空間。舉例：二個相鄰的 HR 元素。\\r\\n重複按鍵以存取較遠的焦點空間。\"},{name:\"協助工具說明\",legend:\"請按下「${a11yHelp}」\"}]}],\nbackspace:\"Backspace\",tab:\"Tab\",enter:\"Enter\",shift:\"Shift\",ctrl:\"Ctrl\",alt:\"Alt\",pause:\"Pause\",capslock:\"Caps Lock\",escape:\"Escape\",pageUp:\"Page Up\",pageDown:\"Page Down\",end:\"End\",home:\"Home\",leftArrow:\"Left Arrow\",upArrow:\"Up Arrow\",rightArrow:\"Right Arrow\",downArrow:\"Down Arrow\",insert:\"Insert\",\"delete\":\"Delete\",leftWindowKey:\"Left Windows key\",rightWindowKey:\"Right Windows key\",selectKey:\"Select key\",numpad0:\"Numpad 0\",numpad1:\"Numpad 1\",numpad2:\"Numpad 2\",numpad3:\"Numpad 3\",numpad4:\"Numpad 4\",\nnumpad5:\"Numpad 5\",numpad6:\"Numpad 6\",numpad7:\"Numpad 7\",numpad8:\"Numpad 8\",numpad9:\"Numpad 9\",multiply:\"Multiply\",add:\"Add\",subtract:\"Subtract\",decimalPoint:\"Decimal Point\",divide:\"Divide\",f1:\"F1\",f2:\"F2\",f3:\"F3\",f4:\"F4\",f5:\"F5\",f6:\"F6\",f7:\"F7\",f8:\"F8\",f9:\"F9\",f10:\"F10\",f11:\"F11\",f12:\"F12\",numLock:\"Num Lock\",scrollLock:\"Scroll Lock\",semiColon:\"Semicolon\",equalSign:\"Equal Sign\",comma:\"Comma\",dash:\"Dash\",period:\"Period\",forwardSlash:\"Forward Slash\",graveAccent:\"Grave Accent\",openBracket:\"Open Bracket\",\nbackSlash:\"Backslash\",closeBracket:\"Close Bracket\",singleQuote:\"Single Quote\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/about/dialogs/about.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.dialog.add(\"about\",function(a){var a=a.lang.about,b=CKEDITOR.plugins.get(\"about\").path+\"dialogs/\"+(CKEDITOR.env.hidpi?\"hidpi/\":\"\")+\"logo_ckeditor.png\";return{title:CKEDITOR.env.ie?a.dlgTitle:a.title,minWidth:390,minHeight:230,contents:[{id:\"tab1\",label:\"\",title:\"\",expand:!0,padding:0,elements:[{type:\"html\",html:'<style type=\"text/css\">.cke_about_container{color:#000 !important;padding:10px 10px 0;margin-top:5px}.cke_about_container p{margin: 0 0 10px;}.cke_about_container .cke_about_logo{height:81px;background-color:#fff;background-image:url('+\nb+\");\"+(CKEDITOR.env.hidpi?\"background-size:163px 58px;\":\"\")+'background-position:center; background-repeat:no-repeat;margin-bottom:10px;}.cke_about_container a{cursor:pointer !important;color:#00B2CE !important;text-decoration:underline !important;}</style><div class=\"cke_about_container\"><div class=\"cke_about_logo\"></div><p>CKEditor '+CKEDITOR.version+\" (revision \"+CKEDITOR.revision+')<br><a target=\"_blank\" href=\"http://ckeditor.com/\">http://ckeditor.com</a></p><p>'+a.help.replace(\"$1\",'<a target=\"_blank\" href=\"http://docs.ckeditor.com/user\">'+\na.userGuide+\"</a>\")+\"</p><p>\"+a.moreInfo+'<br><a target=\"_blank\" href=\"http://ckeditor.com/about/license\">http://ckeditor.com/about/license</a></p><p>'+a.copy.replace(\"$1\",'<a target=\"_blank\" href=\"http://cksource.com/\">CKSource</a> - Frederico Knabben')+\"</p></div>\"}]}],buttons:[CKEDITOR.dialog.cancelButton]}});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/clipboard/dialogs/paste.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.dialog.add(\"paste\",function(c){function h(a){var b=new CKEDITOR.dom.document(a.document),f=b.getBody(),d=b.getById(\"cke_actscrpt\");d&&d.remove();f.setAttribute(\"contenteditable\",!0);if(CKEDITOR.env.ie&&8>CKEDITOR.env.version)b.getWindow().on(\"blur\",function(){b.$.selection.empty()});b.on(\"keydown\",function(a){var a=a.data,b;switch(a.getKeystroke()){case 27:this.hide();b=1;break;case 9:case CKEDITOR.SHIFT+9:this.changeFocus(1),b=1}b&&a.preventDefault()},this);c.fire(\"ariaWidget\",new CKEDITOR.dom.element(a.frameElement));\nb.getWindow().getFrame().removeCustomData(\"pendingFocus\")&&f.focus()}var e=c.lang.clipboard;c.on(\"pasteDialogCommit\",function(a){a.data&&c.fire(\"paste\",{type:\"auto\",dataValue:a.data})},null,null,1E3);return{title:e.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?370:350,minHeight:CKEDITOR.env.quirks?250:245,onShow:function(){this.parts.dialog.$.offsetHeight;this.setupContent();this.parts.title.setHtml(this.customTitle||e.title);this.customTitle=null},onLoad:function(){(CKEDITOR.env.ie7Compat||\nCKEDITOR.env.ie6Compat)&&\"rtl\"==c.lang.dir&&this.parts.contents.setStyle(\"overflow\",\"hidden\")},onOk:function(){this.commitContent()},contents:[{id:\"general\",label:c.lang.common.generalTab,elements:[{type:\"html\",id:\"securityMsg\",html:'<div style=\"white-space:normal;width:340px\">'+e.securityMsg+\"</div>\"},{type:\"html\",id:\"pasteMsg\",html:'<div style=\"white-space:normal;width:340px\">'+e.pasteMsg+\"</div>\"},{type:\"html\",id:\"editing_area\",style:\"width:100%;height:100%\",html:\"\",focus:function(){var a=this.getInputElement(),\nb=a.getFrameDocument().getBody();!b||b.isReadOnly()?a.setCustomData(\"pendingFocus\",1):b.focus()},setup:function(){var a=this.getDialog(),b='<html dir=\"'+c.config.contentsLangDirection+'\" lang=\"'+(c.config.contentsLanguage||c.langCode)+'\"><head><style>body{margin:3px;height:95%}</style></head><body><script id=\"cke_actscrpt\" type=\"text/javascript\">window.parent.CKEDITOR.tools.callFunction('+CKEDITOR.tools.addFunction(h,a)+\",this);<\\/script></body></html>\",f=CKEDITOR.env.air?\"javascript:void(0)\":CKEDITOR.env.ie?\n\"javascript:void((function(){\"+encodeURIComponent(\"document.open();(\"+CKEDITOR.tools.fixDomain+\")();document.close();\")+'})())\"':\"\",d=CKEDITOR.dom.element.createFromHtml('<iframe class=\"cke_pasteframe\" frameborder=\"0\"  allowTransparency=\"true\" src=\"'+f+'\" role=\"region\" aria-label=\"'+e.pasteArea+'\" aria-describedby=\"'+a.getContentElement(\"general\",\"pasteMsg\").domId+'\" aria-multiple=\"true\"></iframe>');d.on(\"load\",function(a){a.removeListener();a=d.getFrameDocument();a.write(b);c.focusManager.add(a.getBody());\nCKEDITOR.env.air&&h.call(this,a.getWindow().$)},a);d.setCustomData(\"dialog\",a);a=this.getElement();a.setHtml(\"\");a.append(d);if(CKEDITOR.env.ie){var g=CKEDITOR.dom.element.createFromHtml('<span tabindex=\"-1\" style=\"position:absolute\" role=\"presentation\"></span>');g.on(\"focus\",function(){setTimeout(function(){d.$.contentWindow.focus()})});a.append(g);this.focus=function(){g.focus();this.fire(\"focus\")}}this.getInputElement=function(){return d};CKEDITOR.env.ie&&(a.setStyle(\"display\",\"block\"),a.setStyle(\"height\",\nd.$.offsetHeight+2+\"px\"))},commit:function(){var a=this.getDialog().getParentEditor(),b=this.getInputElement().getFrameDocument().getBody(),c=b.getBogus(),d;c&&c.remove();d=b.getHtml();setTimeout(function(){a.fire(\"pasteDialogCommit\",d)},0)}}]}]}});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/colordialog/dialogs/colordialog.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.dialog.add(\"colordialog\",function(t){function n(){f.getById(o).removeStyle(\"background-color\");p.getContentElement(\"picker\",\"selectedColor\").setValue(\"\");j&&j.removeAttribute(\"aria-selected\");j=null}function u(a){var a=a.data.getTarget(),b;if(\"td\"==a.getName()&&(b=a.getChild(0).getHtml()))j=a,j.setAttribute(\"aria-selected\",!0),p.getContentElement(\"picker\",\"selectedColor\").setValue(b)}function y(a){for(var a=a.replace(/^#/,\"\"),b=0,c=[];2>=b;b++)c[b]=parseInt(a.substr(2*b,2),16);return\"#\"+\n(165<=0.2126*c[0]+0.7152*c[1]+0.0722*c[2]?\"000\":\"fff\")}function v(a){!a.name&&(a=new CKEDITOR.event(a));var b=!/mouse/.test(a.name),c=a.data.getTarget(),e;if(\"td\"==c.getName()&&(e=c.getChild(0).getHtml()))q(a),b?g=c:w=c,b&&(c.setStyle(\"border-color\",y(e)),c.setStyle(\"border-style\",\"dotted\")),f.getById(k).setStyle(\"background-color\",e),f.getById(l).setHtml(e)}function q(a){if(a=!/mouse/.test(a.name)&&g){var b=a.getChild(0).getHtml();a.setStyle(\"border-color\",b);a.setStyle(\"border-style\",\"solid\")}!g&&\n!w&&(f.getById(k).removeStyle(\"background-color\"),f.getById(l).setHtml(\"&nbsp;\"))}function z(a){var b=a.data,c=b.getTarget(),e=b.getKeystroke(),d=\"rtl\"==t.lang.dir;switch(e){case 38:if(a=c.getParent().getPrevious())a=a.getChild([c.getIndex()]),a.focus();b.preventDefault();break;case 40:if(a=c.getParent().getNext())(a=a.getChild([c.getIndex()]))&&1==a.type&&a.focus();b.preventDefault();break;case 32:case 13:u(a);b.preventDefault();break;case d?37:39:if(a=c.getNext())1==a.type&&(a.focus(),b.preventDefault(!0));\nelse if(a=c.getParent().getNext())if((a=a.getChild([0]))&&1==a.type)a.focus(),b.preventDefault(!0);break;case d?39:37:if(a=c.getPrevious())a.focus(),b.preventDefault(!0);else if(a=c.getParent().getPrevious())a=a.getLast(),a.focus(),b.preventDefault(!0)}}var r=CKEDITOR.dom.element,f=CKEDITOR.document,h=t.lang.colordialog,p,x={type:\"html\",html:\"&nbsp;\"},j,g,w,m=function(a){return CKEDITOR.tools.getNextId()+\"_\"+a},k=m(\"hicolor\"),l=m(\"hicolortext\"),o=m(\"selhicolor\"),i;(function(){function a(a,d){for(var s=\na;s<a+3;s++){var e=new r(i.$.insertRow(-1));e.setAttribute(\"role\",\"row\");for(var f=d;f<d+3;f++)for(var g=0;6>g;g++)b(e.$,\"#\"+c[f]+c[g]+c[s])}}function b(a,c){var b=new r(a.insertCell(-1));b.setAttribute(\"class\",\"ColorCell\");b.setAttribute(\"tabIndex\",-1);b.setAttribute(\"role\",\"gridcell\");b.on(\"keydown\",z);b.on(\"click\",u);b.on(\"focus\",v);b.on(\"blur\",q);b.setStyle(\"background-color\",c);b.setStyle(\"border\",\"1px solid \"+c);b.setStyle(\"width\",\"14px\");b.setStyle(\"height\",\"14px\");var d=m(\"color_table_cell\");\nb.setAttribute(\"aria-labelledby\",d);b.append(CKEDITOR.dom.element.createFromHtml('<span id=\"'+d+'\" class=\"cke_voice_label\">'+c+\"</span>\",CKEDITOR.document))}i=CKEDITOR.dom.element.createFromHtml('<table tabIndex=\"-1\" aria-label=\"'+h.options+'\" role=\"grid\" style=\"border-collapse:separate;\" cellspacing=\"0\"><caption class=\"cke_voice_label\">'+h.options+'</caption><tbody role=\"presentation\"></tbody></table>');i.on(\"mouseover\",v);i.on(\"mouseout\",q);var c=\"00 33 66 99 cc ff\".split(\" \");a(0,0);a(3,0);a(0,\n3);a(3,3);var e=new r(i.$.insertRow(-1));e.setAttribute(\"role\",\"row\");for(var d=0;6>d;d++)b(e.$,\"#\"+c[d]+c[d]+c[d]);for(d=0;12>d;d++)b(e.$,\"#000000\")})();return{title:h.title,minWidth:360,minHeight:220,onLoad:function(){p=this},onHide:function(){n();var a=g.getChild(0).getHtml();g.setStyle(\"border-color\",a);g.setStyle(\"border-style\",\"solid\");f.getById(k).removeStyle(\"background-color\");f.getById(l).setHtml(\"&nbsp;\");g=null},contents:[{id:\"picker\",label:h.title,accessKey:\"I\",elements:[{type:\"hbox\",\npadding:0,widths:[\"70%\",\"10%\",\"30%\"],children:[{type:\"html\",html:\"<div></div>\",onLoad:function(){CKEDITOR.document.getById(this.domId).append(i)},focus:function(){(g||this.getElement().getElementsByTag(\"td\").getItem(0)).focus()}},x,{type:\"vbox\",padding:0,widths:[\"70%\",\"5%\",\"25%\"],children:[{type:\"html\",html:\"<span>\"+h.highlight+'</span>\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<div id=\"'+k+'\" style=\"border: 1px solid; height: 74px; width: 74px;\"></div>\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<div id=\"'+l+'\">&nbsp;</div><span>'+h.selected+\n'</span>\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<div id=\"'+o+'\" style=\"border: 1px solid; height: 20px; width: 74px;\"></div>'},{type:\"text\",label:h.selected,labelStyle:\"display:none\",id:\"selectedColor\",style:\"width: 76px;margin-top:4px\",onChange:function(){try{f.getById(o).setStyle(\"background-color\",this.getValue())}catch(a){n()}}},x,{type:\"button\",id:\"clear\",label:h.clear,onClick:n}]}]}]}]}});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/dialog/dialogDefinition.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/div/dialogs/div.js",
    "content": "﻿(function(){function p(a,k,o){if(!k.is||!k.getCustomData(\"block_processed\"))k.is&&CKEDITOR.dom.element.setMarker(o,k,\"block_processed\",!0),a.push(k)}function n(a,k){function o(){this.foreach(function(a){if(/^(?!vbox|hbox)/.test(a.type)&&(a.setup||(a.setup=function(c){a.setValue(c.getAttribute(a.id)||\"\",1)}),!a.commit))a.commit=function(c){var g=this.getValue();\"dir\"==a.id&&c.getComputedStyle(\"direction\")==g||(g?c.setAttribute(a.id,g):c.removeAttribute(a.id))}})}var n=function(){var f=CKEDITOR.tools.extend({},\nCKEDITOR.dtd.$blockLimit);a.config.div_wrapTable&&(delete f.td,delete f.th);return f}(),q=CKEDITOR.dtd.div,l={},m=[];return{title:a.lang.div.title,minWidth:400,minHeight:165,contents:[{id:\"info\",label:a.lang.common.generalTab,title:a.lang.common.generalTab,elements:[{type:\"hbox\",widths:[\"50%\",\"50%\"],children:[{id:\"elementStyle\",type:\"select\",style:\"width: 100%;\",label:a.lang.div.styleSelectLabel,\"default\":\"\",items:[[a.lang.common.notSet,\"\"]],onChange:function(){var f=[\"info:elementStyle\",\"info:class\",\n\"advanced:dir\",\"advanced:style\"],c=this.getDialog(),g=c._element&&c._element.clone()||new CKEDITOR.dom.element(\"div\",a.document);this.commit(g,!0);for(var f=[].concat(f),b=f.length,i,e=0;e<b;e++)(i=c.getContentElement.apply(c,f[e].split(\":\")))&&i.setup&&i.setup(g,!0)},setup:function(f){for(var c in l)l[c].checkElementRemovable(f,!0,a)&&this.setValue(c,1)},commit:function(f){var c;(c=this.getValue())?l[c].applyToObject(f,a):f.removeAttribute(\"style\")}},{id:\"class\",type:\"text\",requiredContent:\"div(cke-xyz)\",\nlabel:a.lang.common.cssClass,\"default\":\"\"}]}]},{id:\"advanced\",label:a.lang.common.advancedTab,title:a.lang.common.advancedTab,elements:[{type:\"vbox\",padding:1,children:[{type:\"hbox\",widths:[\"50%\",\"50%\"],children:[{type:\"text\",id:\"id\",requiredContent:\"div[id]\",label:a.lang.common.id,\"default\":\"\"},{type:\"text\",id:\"lang\",requiredContent:\"div[lang]\",label:a.lang.common.langCode,\"default\":\"\"}]},{type:\"hbox\",children:[{type:\"text\",id:\"style\",requiredContent:\"div{cke-xyz}\",style:\"width: 100%;\",label:a.lang.common.cssStyle,\n\"default\":\"\",commit:function(a){a.setAttribute(\"style\",this.getValue())}}]},{type:\"hbox\",children:[{type:\"text\",id:\"title\",requiredContent:\"div[title]\",style:\"width: 100%;\",label:a.lang.common.advisoryTitle,\"default\":\"\"}]},{type:\"select\",id:\"dir\",requiredContent:\"div[dir]\",style:\"width: 100%;\",label:a.lang.common.langDir,\"default\":\"\",items:[[a.lang.common.notSet,\"\"],[a.lang.common.langDirLtr,\"ltr\"],[a.lang.common.langDirRtl,\"rtl\"]]}]}]}],onLoad:function(){o.call(this);var f=this,c=this.getContentElement(\"info\",\n\"elementStyle\");a.getStylesSet(function(g){var b,i;if(g)for(var e=0;e<g.length;e++)i=g[e],i.element&&\"div\"==i.element&&(b=i.name,l[b]=i=new CKEDITOR.style(i),a.filter.check(i)&&(c.items.push([b,b]),c.add(b,b)));c[1<c.items.length?\"enable\":\"disable\"]();setTimeout(function(){f._element&&c.setup(f._element)},0)})},onShow:function(){\"editdiv\"==k&&this.setupContent(this._element=CKEDITOR.plugins.div.getSurroundDiv(a))},onOk:function(){if(\"editdiv\"==k)m=[this._element];else{var f=[],c={},g=[],b,i=a.getSelection(),\ne=i.getRanges(),l=i.createBookmarks(),h,j;for(h=0;h<e.length;h++)for(j=e[h].createIterator();b=j.getNextParagraph();)if(b.getName()in n&&!b.isReadOnly()){var d=b.getChildren();for(b=0;b<d.count();b++)p(g,d.getItem(b),c)}else{for(;!q[b.getName()]&&!b.equals(e[h].root);)b=b.getParent();p(g,b,c)}CKEDITOR.dom.element.clearAllMarkers(c);e=[];h=null;for(j=0;j<g.length;j++)b=g[j],d=a.elementPath(b).blockLimit,d.isReadOnly()&&(d=d.getParent()),a.config.div_wrapTable&&d.is([\"td\",\"th\"])&&(d=a.elementPath(d.getParent()).blockLimit),\nd.equals(h)||(h=d,e.push([])),e[e.length-1].push(b);for(h=0;h<e.length;h++){d=e[h][0];g=d.getParent();for(b=1;b<e[h].length;b++)g=g.getCommonAncestor(e[h][b]);j=new CKEDITOR.dom.element(\"div\",a.document);for(b=0;b<e[h].length;b++){for(d=e[h][b];!d.getParent().equals(g);)d=d.getParent();e[h][b]=d}for(b=0;b<e[h].length;b++)if(d=e[h][b],!d.getCustomData||!d.getCustomData(\"block_processed\"))d.is&&CKEDITOR.dom.element.setMarker(c,d,\"block_processed\",!0),b||j.insertBefore(d),j.append(d);CKEDITOR.dom.element.clearAllMarkers(c);\nf.push(j)}i.selectBookmarks(l);m=f}f=m.length;for(c=0;c<f;c++)this.commitContent(m[c]),!m[c].getAttribute(\"style\")&&m[c].removeAttribute(\"style\");this.hide()},onHide:function(){\"editdiv\"==k&&this._element.removeCustomData(\"elementStyle\");delete this._element}}}CKEDITOR.dialog.add(\"creatediv\",function(a){return n(a,\"creatediv\")});CKEDITOR.dialog.add(\"editdiv\",function(a){return n(a,\"editdiv\")})})();"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/find/dialogs/find.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\n(function(){function y(c){return c.type==CKEDITOR.NODE_TEXT&&0<c.getLength()&&(!o||!c.isReadOnly())}function s(c){return!(c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary(CKEDITOR.tools.extend({},CKEDITOR.dtd.$empty,CKEDITOR.dtd.$nonEditable)))}var o,t=function(){return{textNode:this.textNode,offset:this.offset,character:this.textNode?this.textNode.getText().charAt(this.offset):null,hitMatchBoundary:this._.matchBoundary}},u=[\"find\",\"replace\"],p=[[\"txtFindFind\",\"txtFindReplace\"],[\"txtFindCaseChk\",\n\"txtReplaceCaseChk\"],[\"txtFindWordChk\",\"txtReplaceWordChk\"],[\"txtFindCyclic\",\"txtReplaceCyclic\"]],n=function(c,g){function n(a,b){var d=c.createRange();d.setStart(a.textNode,b?a.offset:a.offset+1);d.setEndAt(c.editable(),CKEDITOR.POSITION_BEFORE_END);return d}function q(a){var b=c.getSelection(),d=c.editable();b&&!a?(a=b.getRanges()[0].clone(),a.collapse(!0)):(a=c.createRange(),a.setStartAt(d,CKEDITOR.POSITION_AFTER_START));a.setEndAt(d,CKEDITOR.POSITION_BEFORE_END);return a}var v=new CKEDITOR.style(CKEDITOR.tools.extend({attributes:{\"data-cke-highlight\":1},\nfullMatch:1,ignoreReadonly:1,childRule:function(){return 0}},c.config.find_highlight,!0)),l=function(a,b){var d=this,c=new CKEDITOR.dom.walker(a);c.guard=b?s:function(a){!s(a)&&(d._.matchBoundary=!0)};c.evaluator=y;c.breakOnFalse=1;a.startContainer.type==CKEDITOR.NODE_TEXT&&(this.textNode=a.startContainer,this.offset=a.startOffset-1);this._={matchWord:b,walker:c,matchBoundary:!1}};l.prototype={next:function(){return this.move()},back:function(){return this.move(!0)},move:function(a){var b=this.textNode;\nif(null===b)return t.call(this);this._.matchBoundary=!1;if(b&&a&&0<this.offset)this.offset--;else if(b&&this.offset<b.getLength()-1)this.offset++;else{for(b=null;!b&&!(b=this._.walker[a?\"previous\":\"next\"].call(this._.walker),this._.matchWord&&!b||this._.walker._.end););this.offset=(this.textNode=b)?a?b.getLength()-1:0:0}return t.call(this)}};var r=function(a,b){this._={walker:a,cursors:[],rangeLength:b,highlightRange:null,isMatched:0}};r.prototype={toDomRange:function(){var a=c.createRange(),b=this._.cursors;\nif(1>b.length){var d=this._.walker.textNode;if(d)a.setStartAfter(d);else return null}else d=b[0],b=b[b.length-1],a.setStart(d.textNode,d.offset),a.setEnd(b.textNode,b.offset+1);return a},updateFromDomRange:function(a){var b=new l(a);this._.cursors=[];do a=b.next(),a.character&&this._.cursors.push(a);while(a.character);this._.rangeLength=this._.cursors.length},setMatched:function(){this._.isMatched=!0},clearMatched:function(){this._.isMatched=!1},isMatched:function(){return this._.isMatched},highlight:function(){if(!(1>\nthis._.cursors.length)){this._.highlightRange&&this.removeHighlight();var a=this.toDomRange(),b=a.createBookmark();v.applyToRange(a,c);a.moveToBookmark(b);this._.highlightRange=a;b=a.startContainer;b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent());b.scrollIntoView();this.updateFromDomRange(a)}},removeHighlight:function(){if(this._.highlightRange){var a=this._.highlightRange.createBookmark();v.removeFromRange(this._.highlightRange,c);this._.highlightRange.moveToBookmark(a);this.updateFromDomRange(this._.highlightRange);\nthis._.highlightRange=null}},isReadOnly:function(){return!this._.highlightRange?0:this._.highlightRange.startContainer.isReadOnly()},moveBack:function(){var a=this._.walker.back(),b=this._.cursors;a.hitMatchBoundary&&(this._.cursors=b=[]);b.unshift(a);b.length>this._.rangeLength&&b.pop();return a},moveNext:function(){var a=this._.walker.next(),b=this._.cursors;a.hitMatchBoundary&&(this._.cursors=b=[]);b.push(a);b.length>this._.rangeLength&&b.shift();return a},getEndCharacter:function(){var a=this._.cursors;\nreturn 1>a.length?null:a[a.length-1].character},getNextCharacterRange:function(a){var b,d;d=this._.cursors;d=(b=d[d.length-1])&&b.textNode?new l(n(b)):this._.walker;return new r(d,a)},getCursors:function(){return this._.cursors}};var w=function(a,b){var d=[-1];b&&(a=a.toLowerCase());for(var c=0;c<a.length;c++)for(d.push(d[c]+1);0<d[c+1]&&a.charAt(c)!=a.charAt(d[c+1]-1);)d[c+1]=d[d[c+1]-1]+1;this._={overlap:d,state:0,ignoreCase:!!b,pattern:a}};w.prototype={feedCharacter:function(a){for(this._.ignoreCase&&\n(a=a.toLowerCase());;){if(a==this._.pattern.charAt(this._.state))return this._.state++,this._.state==this._.pattern.length?(this._.state=0,2):1;if(this._.state)this._.state=this._.overlap[this._.state];else return 0}return null},reset:function(){this._.state=0}};var z=/[.,\"'?!;: \\u0085\\u00a0\\u1680\\u280e\\u2028\\u2029\\u202f\\u205f\\u3000]/,x=function(a){if(!a)return!0;var b=a.charCodeAt(0);return 9<=b&&13>=b||8192<=b&&8202>=b||z.test(a)},e={searchRange:null,matchRange:null,find:function(a,b,d,f,e,A){this.matchRange?\n(this.matchRange.removeHighlight(),this.matchRange=this.matchRange.getNextCharacterRange(a.length)):this.matchRange=new r(new l(this.searchRange),a.length);for(var i=new w(a,!b),j=0,k=\"%\";null!==k;){for(this.matchRange.moveNext();k=this.matchRange.getEndCharacter();){j=i.feedCharacter(k);if(2==j)break;this.matchRange.moveNext().hitMatchBoundary&&i.reset()}if(2==j){if(d){var h=this.matchRange.getCursors(),m=h[h.length-1],h=h[0],g=c.createRange();g.setStartAt(c.editable(),CKEDITOR.POSITION_AFTER_START);\ng.setEnd(h.textNode,h.offset);h=g;m=n(m);h.trim();m.trim();h=new l(h,!0);m=new l(m,!0);if(!x(h.back().character)||!x(m.next().character))continue}this.matchRange.setMatched();!1!==e&&this.matchRange.highlight();return!0}}this.matchRange.clearMatched();this.matchRange.removeHighlight();return f&&!A?(this.searchRange=q(1),this.matchRange=null,arguments.callee.apply(this,Array.prototype.slice.call(arguments).concat([!0]))):!1},replaceCounter:0,replace:function(a,b,d,f,e,g,i){o=1;a=0;if(this.matchRange&&\nthis.matchRange.isMatched()&&!this.matchRange._.isReplaced&&!this.matchRange.isReadOnly()){this.matchRange.removeHighlight();b=this.matchRange.toDomRange();d=c.document.createText(d);if(!i){var j=c.getSelection();j.selectRanges([b]);c.fire(\"saveSnapshot\")}b.deleteContents();b.insertNode(d);i||(j.selectRanges([b]),c.fire(\"saveSnapshot\"));this.matchRange.updateFromDomRange(b);i||this.matchRange.highlight();this.matchRange._.isReplaced=!0;this.replaceCounter++;a=1}else a=this.find(b,f,e,g,!i);o=0;return a}},\nf=c.lang.find;return{title:f.title,resizable:CKEDITOR.DIALOG_RESIZE_NONE,minWidth:350,minHeight:170,buttons:[CKEDITOR.dialog.cancelButton(c,{label:c.lang.common.close})],contents:[{id:\"find\",label:f.find,title:f.find,accessKey:\"\",elements:[{type:\"hbox\",widths:[\"230px\",\"90px\"],children:[{type:\"text\",id:\"txtFindFind\",label:f.findWhat,isChanged:!1,labelLayout:\"horizontal\",accessKey:\"F\"},{type:\"button\",id:\"btnFind\",align:\"left\",style:\"width:100%\",label:f.find,onClick:function(){var a=this.getDialog();\ne.find(a.getValueOf(\"find\",\"txtFindFind\"),a.getValueOf(\"find\",\"txtFindCaseChk\"),a.getValueOf(\"find\",\"txtFindWordChk\"),a.getValueOf(\"find\",\"txtFindCyclic\"))||alert(f.notFoundMsg)}}]},{type:\"fieldset\",label:CKEDITOR.tools.htmlEncode(f.findOptions),style:\"margin-top:29px\",children:[{type:\"vbox\",padding:0,children:[{type:\"checkbox\",id:\"txtFindCaseChk\",isChanged:!1,label:f.matchCase},{type:\"checkbox\",id:\"txtFindWordChk\",isChanged:!1,label:f.matchWord},{type:\"checkbox\",id:\"txtFindCyclic\",isChanged:!1,\"default\":!0,\nlabel:f.matchCyclic}]}]}]},{id:\"replace\",label:f.replace,accessKey:\"M\",elements:[{type:\"hbox\",widths:[\"230px\",\"90px\"],children:[{type:\"text\",id:\"txtFindReplace\",label:f.findWhat,isChanged:!1,labelLayout:\"horizontal\",accessKey:\"F\"},{type:\"button\",id:\"btnFindReplace\",align:\"left\",style:\"width:100%\",label:f.replace,onClick:function(){var a=this.getDialog();e.replace(a,a.getValueOf(\"replace\",\"txtFindReplace\"),a.getValueOf(\"replace\",\"txtReplace\"),a.getValueOf(\"replace\",\"txtReplaceCaseChk\"),a.getValueOf(\"replace\",\n\"txtReplaceWordChk\"),a.getValueOf(\"replace\",\"txtReplaceCyclic\"))||alert(f.notFoundMsg)}}]},{type:\"hbox\",widths:[\"230px\",\"90px\"],children:[{type:\"text\",id:\"txtReplace\",label:f.replaceWith,isChanged:!1,labelLayout:\"horizontal\",accessKey:\"R\"},{type:\"button\",id:\"btnReplaceAll\",align:\"left\",style:\"width:100%\",label:f.replaceAll,isChanged:!1,onClick:function(){var a=this.getDialog();e.replaceCounter=0;e.searchRange=q(1);e.matchRange&&(e.matchRange.removeHighlight(),e.matchRange=null);for(c.fire(\"saveSnapshot\");e.replace(a,\na.getValueOf(\"replace\",\"txtFindReplace\"),a.getValueOf(\"replace\",\"txtReplace\"),a.getValueOf(\"replace\",\"txtReplaceCaseChk\"),a.getValueOf(\"replace\",\"txtReplaceWordChk\"),!1,!0););e.replaceCounter?(alert(f.replaceSuccessMsg.replace(/%1/,e.replaceCounter)),c.fire(\"saveSnapshot\")):alert(f.notFoundMsg)}}]},{type:\"fieldset\",label:CKEDITOR.tools.htmlEncode(f.findOptions),children:[{type:\"vbox\",padding:0,children:[{type:\"checkbox\",id:\"txtReplaceCaseChk\",isChanged:!1,label:f.matchCase},{type:\"checkbox\",id:\"txtReplaceWordChk\",\nisChanged:!1,label:f.matchWord},{type:\"checkbox\",id:\"txtReplaceCyclic\",isChanged:!1,\"default\":!0,label:f.matchCyclic}]}]}]}],onLoad:function(){var a=this,b,c=0;this.on(\"hide\",function(){c=0});this.on(\"show\",function(){c=1});this.selectPage=CKEDITOR.tools.override(this.selectPage,function(f){return function(e){f.call(a,e);var g=a._.tabs[e],i;i=\"find\"===e?\"txtFindWordChk\":\"txtReplaceWordChk\";b=a.getContentElement(e,\"find\"===e?\"txtFindFind\":\"txtFindReplace\");a.getContentElement(e,i);g.initialized||(CKEDITOR.document.getById(b._.inputId),\ng.initialized=!0);if(c){var j,e=\"find\"===e?1:0,g=1-e,k,h=p.length;for(k=0;k<h;k++)i=this.getContentElement(u[e],p[k][e]),j=this.getContentElement(u[g],p[k][g]),j.setValue(i.getValue())}}})},onShow:function(){e.searchRange=q();var a=this.getParentEditor().getSelection().getSelectedText(),b=this.getContentElement(g,\"find\"==g?\"txtFindFind\":\"txtFindReplace\");b.setValue(a);b.select();this.selectPage(g);this[(\"find\"==g&&this._.editor.readOnly?\"hide\":\"show\")+\"Page\"](\"replace\")},onHide:function(){var a;e.matchRange&&\ne.matchRange.isMatched()&&(e.matchRange.removeHighlight(),c.focus(),(a=e.matchRange.toDomRange())&&c.getSelection().selectRanges([a]));delete e.matchRange},onFocus:function(){return\"replace\"==g?this.getContentElement(\"replace\",\"txtFindReplace\"):this.getContentElement(\"find\",\"txtFindFind\")}}};CKEDITOR.dialog.add(\"find\",function(c){return n(c,\"find\")});CKEDITOR.dialog.add(\"replace\",function(c){return n(c,\"replace\")})})();"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/flash/dialogs/flash.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\n(function(){function b(a,b,c){var k=n[this.id];if(k)for(var f=this instanceof CKEDITOR.ui.dialog.checkbox,e=0;e<k.length;e++){var d=k[e];switch(d.type){case g:if(!a)continue;if(null!==a.getAttribute(d.name)){a=a.getAttribute(d.name);f?this.setValue(\"true\"==a.toLowerCase()):this.setValue(a);return}f&&this.setValue(!!d[\"default\"]);break;case o:if(!a)continue;if(d.name in c){a=c[d.name];f?this.setValue(\"true\"==a.toLowerCase()):this.setValue(a);return}f&&this.setValue(!!d[\"default\"]);break;case i:if(!b)continue;\nif(b.getAttribute(d.name)){a=b.getAttribute(d.name);f?this.setValue(\"true\"==a.toLowerCase()):this.setValue(a);return}f&&this.setValue(!!d[\"default\"])}}}function c(a,b,c){var k=n[this.id];if(k)for(var f=\"\"===this.getValue(),e=this instanceof CKEDITOR.ui.dialog.checkbox,d=0;d<k.length;d++){var h=k[d];switch(h.type){case g:if(!a||\"data\"==h.name&&b&&!a.hasAttribute(\"data\"))continue;var l=this.getValue();f||e&&l===h[\"default\"]?a.removeAttribute(h.name):a.setAttribute(h.name,l);break;case o:if(!a)continue;\nl=this.getValue();if(f||e&&l===h[\"default\"])h.name in c&&c[h.name].remove();else if(h.name in c)c[h.name].setAttribute(\"value\",l);else{var p=CKEDITOR.dom.element.createFromHtml(\"<cke:param></cke:param>\",a.getDocument());p.setAttributes({name:h.name,value:l});1>a.getChildCount()?p.appendTo(a):p.insertBefore(a.getFirst())}break;case i:if(!b)continue;l=this.getValue();f||e&&l===h[\"default\"]?b.removeAttribute(h.name):b.setAttribute(h.name,l)}}}for(var g=1,o=2,i=4,n={id:[{type:g,name:\"id\"}],classid:[{type:g,\nname:\"classid\"}],codebase:[{type:g,name:\"codebase\"}],pluginspage:[{type:i,name:\"pluginspage\"}],src:[{type:o,name:\"movie\"},{type:i,name:\"src\"},{type:g,name:\"data\"}],name:[{type:i,name:\"name\"}],align:[{type:g,name:\"align\"}],\"class\":[{type:g,name:\"class\"},{type:i,name:\"class\"}],width:[{type:g,name:\"width\"},{type:i,name:\"width\"}],height:[{type:g,name:\"height\"},{type:i,name:\"height\"}],hSpace:[{type:g,name:\"hSpace\"},{type:i,name:\"hSpace\"}],vSpace:[{type:g,name:\"vSpace\"},{type:i,name:\"vSpace\"}],style:[{type:g,\nname:\"style\"},{type:i,name:\"style\"}],type:[{type:i,name:\"type\"}]},m=\"play loop menu quality scale salign wmode bgcolor base flashvars allowScriptAccess allowFullScreen\".split(\" \"),j=0;j<m.length;j++)n[m[j]]=[{type:i,name:m[j]},{type:o,name:m[j]}];m=[\"play\",\"loop\",\"menu\"];for(j=0;j<m.length;j++)n[m[j]][0][\"default\"]=n[m[j]][1][\"default\"]=!0;CKEDITOR.dialog.add(\"flash\",function(a){var g=!a.config.flashEmbedTagOnly,i=a.config.flashAddEmbedTag||a.config.flashEmbedTagOnly,k,f=\"<div>\"+CKEDITOR.tools.htmlEncode(a.lang.common.preview)+\n'<br><div id=\"cke_FlashPreviewLoader'+CKEDITOR.tools.getNextNumber()+'\" style=\"display:none\"><div class=\"loading\">&nbsp;</div></div><div id=\"cke_FlashPreviewBox'+CKEDITOR.tools.getNextNumber()+'\" class=\"FlashPreviewBox\"></div></div>';return{title:a.lang.flash.title,minWidth:420,minHeight:310,onShow:function(){this.fakeImage=this.objectNode=this.embedNode=null;k=new CKEDITOR.dom.element(\"embed\",a.document);var e=this.getSelectedElement();if(e&&e.data(\"cke-real-element-type\")&&\"flash\"==e.data(\"cke-real-element-type\")){this.fakeImage=\ne;var d=a.restoreRealElement(e),h=null,b=null,c={};if(\"cke:object\"==d.getName()){h=d;d=h.getElementsByTag(\"embed\",\"cke\");0<d.count()&&(b=d.getItem(0));for(var d=h.getElementsByTag(\"param\",\"cke\"),g=0,i=d.count();g<i;g++){var f=d.getItem(g),j=f.getAttribute(\"name\"),f=f.getAttribute(\"value\");c[j]=f}}else\"cke:embed\"==d.getName()&&(b=d);this.objectNode=h;this.embedNode=b;this.setupContent(h,b,c,e)}},onOk:function(){var e=null,d=null,b=null;if(this.fakeImage)e=this.objectNode,d=this.embedNode;else if(g&&\n(e=CKEDITOR.dom.element.createFromHtml(\"<cke:object></cke:object>\",a.document),e.setAttributes({classid:\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\",codebase:\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0\"})),i)d=CKEDITOR.dom.element.createFromHtml(\"<cke:embed></cke:embed>\",a.document),d.setAttributes({type:\"application/x-shockwave-flash\",pluginspage:\"http://www.macromedia.com/go/getflashplayer\"}),e&&d.appendTo(e);if(e)for(var b={},c=e.getElementsByTag(\"param\",\n\"cke\"),f=0,j=c.count();f<j;f++)b[c.getItem(f).getAttribute(\"name\")]=c.getItem(f);c={};f={};this.commitContent(e,d,b,c,f);e=a.createFakeElement(e||d,\"cke_flash\",\"flash\",!0);e.setAttributes(f);e.setStyles(c);this.fakeImage?(e.replace(this.fakeImage),a.getSelection().selectElement(e)):a.insertElement(e)},onHide:function(){this.preview&&this.preview.setHtml(\"\")},contents:[{id:\"info\",label:a.lang.common.generalTab,accessKey:\"I\",elements:[{type:\"vbox\",padding:0,children:[{type:\"hbox\",widths:[\"280px\",\"110px\"],\nalign:\"right\",children:[{id:\"src\",type:\"text\",label:a.lang.common.url,required:!0,validate:CKEDITOR.dialog.validate.notEmpty(a.lang.flash.validateSrc),setup:b,commit:c,onLoad:function(){var a=this.getDialog(),b=function(b){k.setAttribute(\"src\",b);a.preview.setHtml('<embed height=\"100%\" width=\"100%\" src=\"'+CKEDITOR.tools.htmlEncode(k.getAttribute(\"src\"))+'\" type=\"application/x-shockwave-flash\"></embed>')};a.preview=a.getContentElement(\"info\",\"preview\").getElement().getChild(3);this.on(\"change\",function(a){a.data&&\na.data.value&&b(a.data.value)});this.getInputElement().on(\"change\",function(){b(this.getValue())},this)}},{type:\"button\",id:\"browse\",filebrowser:\"info:src\",hidden:!0,style:\"display:inline-block;margin-top:14px;\",label:a.lang.common.browseServer}]}]},{type:\"hbox\",widths:[\"25%\",\"25%\",\"25%\",\"25%\",\"25%\"],children:[{type:\"text\",id:\"width\",requiredContent:\"embed[width]\",style:\"width:95px\",label:a.lang.common.width,validate:CKEDITOR.dialog.validate.htmlLength(a.lang.common.invalidHtmlLength.replace(\"%1\",\na.lang.common.width)),setup:b,commit:c},{type:\"text\",id:\"height\",requiredContent:\"embed[height]\",style:\"width:95px\",label:a.lang.common.height,validate:CKEDITOR.dialog.validate.htmlLength(a.lang.common.invalidHtmlLength.replace(\"%1\",a.lang.common.height)),setup:b,commit:c},{type:\"text\",id:\"hSpace\",requiredContent:\"embed[hspace]\",style:\"width:95px\",label:a.lang.flash.hSpace,validate:CKEDITOR.dialog.validate.integer(a.lang.flash.validateHSpace),setup:b,commit:c},{type:\"text\",id:\"vSpace\",requiredContent:\"embed[vspace]\",\nstyle:\"width:95px\",label:a.lang.flash.vSpace,validate:CKEDITOR.dialog.validate.integer(a.lang.flash.validateVSpace),setup:b,commit:c}]},{type:\"vbox\",children:[{type:\"html\",id:\"preview\",style:\"width:95%;\",html:f}]}]},{id:\"Upload\",hidden:!0,filebrowser:\"uploadButton\",label:a.lang.common.upload,elements:[{type:\"file\",id:\"upload\",label:a.lang.common.upload,size:38},{type:\"fileButton\",id:\"uploadButton\",label:a.lang.common.uploadSubmit,filebrowser:\"info:src\",\"for\":[\"Upload\",\"upload\"]}]},{id:\"properties\",\nlabel:a.lang.flash.propertiesTab,elements:[{type:\"hbox\",widths:[\"50%\",\"50%\"],children:[{id:\"scale\",type:\"select\",requiredContent:\"embed[scale]\",label:a.lang.flash.scale,\"default\":\"\",style:\"width : 100%;\",items:[[a.lang.common.notSet,\"\"],[a.lang.flash.scaleAll,\"showall\"],[a.lang.flash.scaleNoBorder,\"noborder\"],[a.lang.flash.scaleFit,\"exactfit\"]],setup:b,commit:c},{id:\"allowScriptAccess\",type:\"select\",requiredContent:\"embed[allowscriptaccess]\",label:a.lang.flash.access,\"default\":\"\",style:\"width : 100%;\",\nitems:[[a.lang.common.notSet,\"\"],[a.lang.flash.accessAlways,\"always\"],[a.lang.flash.accessSameDomain,\"samedomain\"],[a.lang.flash.accessNever,\"never\"]],setup:b,commit:c}]},{type:\"hbox\",widths:[\"50%\",\"50%\"],children:[{id:\"wmode\",type:\"select\",requiredContent:\"embed[wmode]\",label:a.lang.flash.windowMode,\"default\":\"\",style:\"width : 100%;\",items:[[a.lang.common.notSet,\"\"],[a.lang.flash.windowModeWindow,\"window\"],[a.lang.flash.windowModeOpaque,\"opaque\"],[a.lang.flash.windowModeTransparent,\"transparent\"]],\nsetup:b,commit:c},{id:\"quality\",type:\"select\",requiredContent:\"embed[quality]\",label:a.lang.flash.quality,\"default\":\"high\",style:\"width : 100%;\",items:[[a.lang.common.notSet,\"\"],[a.lang.flash.qualityBest,\"best\"],[a.lang.flash.qualityHigh,\"high\"],[a.lang.flash.qualityAutoHigh,\"autohigh\"],[a.lang.flash.qualityMedium,\"medium\"],[a.lang.flash.qualityAutoLow,\"autolow\"],[a.lang.flash.qualityLow,\"low\"]],setup:b,commit:c}]},{type:\"hbox\",widths:[\"50%\",\"50%\"],children:[{id:\"align\",type:\"select\",requiredContent:\"object[align]\",\nlabel:a.lang.common.align,\"default\":\"\",style:\"width : 100%;\",items:[[a.lang.common.notSet,\"\"],[a.lang.common.alignLeft,\"left\"],[a.lang.flash.alignAbsBottom,\"absBottom\"],[a.lang.flash.alignAbsMiddle,\"absMiddle\"],[a.lang.flash.alignBaseline,\"baseline\"],[a.lang.common.alignBottom,\"bottom\"],[a.lang.common.alignMiddle,\"middle\"],[a.lang.common.alignRight,\"right\"],[a.lang.flash.alignTextTop,\"textTop\"],[a.lang.common.alignTop,\"top\"]],setup:b,commit:function(a,b,f,g,i){var j=this.getValue();c.apply(this,arguments);\nj&&(i.align=j)}},{type:\"html\",html:\"<div></div>\"}]},{type:\"fieldset\",label:CKEDITOR.tools.htmlEncode(a.lang.flash.flashvars),children:[{type:\"vbox\",padding:0,children:[{type:\"checkbox\",id:\"menu\",label:a.lang.flash.chkMenu,\"default\":!0,setup:b,commit:c},{type:\"checkbox\",id:\"play\",label:a.lang.flash.chkPlay,\"default\":!0,setup:b,commit:c},{type:\"checkbox\",id:\"loop\",label:a.lang.flash.chkLoop,\"default\":!0,setup:b,commit:c},{type:\"checkbox\",id:\"allowFullScreen\",label:a.lang.flash.chkFull,\"default\":!0,\nsetup:b,commit:c}]}]}]},{id:\"advanced\",label:a.lang.common.advancedTab,elements:[{type:\"hbox\",children:[{type:\"text\",id:\"id\",requiredContent:\"object[id]\",label:a.lang.common.id,setup:b,commit:c}]},{type:\"hbox\",widths:[\"45%\",\"55%\"],children:[{type:\"text\",id:\"bgcolor\",requiredContent:\"embed[bgcolor]\",label:a.lang.flash.bgcolor,setup:b,commit:c},{type:\"text\",id:\"class\",requiredContent:\"embed(cke-xyz)\",label:a.lang.common.cssClass,setup:b,commit:c}]},{type:\"text\",id:\"style\",requiredContent:\"embed{cke-xyz}\",\nvalidate:CKEDITOR.dialog.validate.inlineStyle(a.lang.common.invalidInlineStyle),label:a.lang.common.cssStyle,setup:b,commit:c}]}]}})})();"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/forms/dialogs/button.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.dialog.add(\"button\",function(b){function d(a){var b=this.getValue();b?(a.attributes[this.id]=b,\"name\"==this.id&&(a.attributes[\"data-cke-saved-name\"]=b)):(delete a.attributes[this.id],\"name\"==this.id&&delete a.attributes[\"data-cke-saved-name\"])}return{title:b.lang.forms.button.title,minWidth:350,minHeight:150,onShow:function(){delete this.button;var a=this.getParentEditor().getSelection().getSelectedElement();a&&a.is(\"input\")&&a.getAttribute(\"type\")in{button:1,reset:1,submit:1}&&(this.button=\na,this.setupContent(a))},onOk:function(){var a=this.getParentEditor(),b=this.button,d=!b,c=b?CKEDITOR.htmlParser.fragment.fromHtml(b.getOuterHtml()).children[0]:new CKEDITOR.htmlParser.element(\"input\");this.commitContent(c);var e=new CKEDITOR.htmlParser.basicWriter;c.writeHtml(e);c=CKEDITOR.dom.element.createFromHtml(e.getHtml(),a.document);d?a.insertElement(c):(c.replace(b),a.getSelection().selectElement(c))},contents:[{id:\"info\",label:b.lang.forms.button.title,title:b.lang.forms.button.title,elements:[{id:\"name\",\ntype:\"text\",label:b.lang.common.name,\"default\":\"\",setup:function(a){this.setValue(a.data(\"cke-saved-name\")||a.getAttribute(\"name\")||\"\")},commit:d},{id:\"value\",type:\"text\",label:b.lang.forms.button.text,accessKey:\"V\",\"default\":\"\",setup:function(a){this.setValue(a.getAttribute(\"value\")||\"\")},commit:d},{id:\"type\",type:\"select\",label:b.lang.forms.button.type,\"default\":\"button\",accessKey:\"T\",items:[[b.lang.forms.button.typeBtn,\"button\"],[b.lang.forms.button.typeSbm,\"submit\"],[b.lang.forms.button.typeRst,\n\"reset\"]],setup:function(a){this.setValue(a.getAttribute(\"type\")||\"\")},commit:d}]}]}});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/forms/dialogs/checkbox.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.dialog.add(\"checkbox\",function(d){return{title:d.lang.forms.checkboxAndRadio.checkboxTitle,minWidth:350,minHeight:140,onShow:function(){delete this.checkbox;var a=this.getParentEditor().getSelection().getSelectedElement();a&&\"checkbox\"==a.getAttribute(\"type\")&&(this.checkbox=a,this.setupContent(a))},onOk:function(){var a,b=this.checkbox;b||(a=this.getParentEditor(),b=a.document.createElement(\"input\"),b.setAttribute(\"type\",\"checkbox\"),a.insertElement(b));this.commitContent({element:b})},contents:[{id:\"info\",\nlabel:d.lang.forms.checkboxAndRadio.checkboxTitle,title:d.lang.forms.checkboxAndRadio.checkboxTitle,startupFocus:\"txtName\",elements:[{id:\"txtName\",type:\"text\",label:d.lang.common.name,\"default\":\"\",accessKey:\"N\",setup:function(a){this.setValue(a.data(\"cke-saved-name\")||a.getAttribute(\"name\")||\"\")},commit:function(a){a=a.element;this.getValue()?a.data(\"cke-saved-name\",this.getValue()):(a.data(\"cke-saved-name\",!1),a.removeAttribute(\"name\"))}},{id:\"txtValue\",type:\"text\",label:d.lang.forms.checkboxAndRadio.value,\n\"default\":\"\",accessKey:\"V\",setup:function(a){a=a.getAttribute(\"value\");this.setValue(CKEDITOR.env.ie&&\"on\"==a?\"\":a)},commit:function(a){var b=a.element,c=this.getValue();c&&!(CKEDITOR.env.ie&&\"on\"==c)?b.setAttribute(\"value\",c):CKEDITOR.env.ie?(c=new CKEDITOR.dom.element(\"input\",b.getDocument()),b.copyAttributes(c,{value:1}),c.replace(b),d.getSelection().selectElement(c),a.element=c):b.removeAttribute(\"value\")}},{id:\"cmbSelected\",type:\"checkbox\",label:d.lang.forms.checkboxAndRadio.selected,\"default\":\"\",\naccessKey:\"S\",value:\"checked\",setup:function(a){this.setValue(a.getAttribute(\"checked\"))},commit:function(a){var b=a.element;if(CKEDITOR.env.ie){var c=!!b.getAttribute(\"checked\"),e=!!this.getValue();c!=e&&(c=CKEDITOR.dom.element.createFromHtml('<input type=\"checkbox\"'+(e?' checked=\"checked\"':\"\")+\"/>\",d.document),b.copyAttributes(c,{type:1,checked:1}),c.replace(b),d.getSelection().selectElement(c),a.element=c)}else this.getValue()?b.setAttribute(\"checked\",\"checked\"):b.removeAttribute(\"checked\")}}]}]}});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/forms/dialogs/form.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.dialog.add(\"form\",function(a){var d={action:1,id:1,method:1,enctype:1,target:1};return{title:a.lang.forms.form.title,minWidth:350,minHeight:200,onShow:function(){delete this.form;var b=this.getParentEditor().elementPath().contains(\"form\",1);b&&(this.form=b,this.setupContent(b))},onOk:function(){var b,a=this.form,c=!a;c&&(b=this.getParentEditor(),a=b.document.createElement(\"form\"),a.appendBogus());c&&b.insertElement(a);this.commitContent(a)},onLoad:function(){function a(b){this.setValue(b.getAttribute(this.id)||\n\"\")}function e(a){this.getValue()?a.setAttribute(this.id,this.getValue()):a.removeAttribute(this.id)}this.foreach(function(c){d[c.id]&&(c.setup=a,c.commit=e)})},contents:[{id:\"info\",label:a.lang.forms.form.title,title:a.lang.forms.form.title,elements:[{id:\"txtName\",type:\"text\",label:a.lang.common.name,\"default\":\"\",accessKey:\"N\",setup:function(a){this.setValue(a.data(\"cke-saved-name\")||a.getAttribute(\"name\")||\"\")},commit:function(a){this.getValue()?a.data(\"cke-saved-name\",this.getValue()):(a.data(\"cke-saved-name\",\n!1),a.removeAttribute(\"name\"))}},{id:\"action\",type:\"text\",label:a.lang.forms.form.action,\"default\":\"\",accessKey:\"T\"},{type:\"hbox\",widths:[\"45%\",\"55%\"],children:[{id:\"id\",type:\"text\",label:a.lang.common.id,\"default\":\"\",accessKey:\"I\"},{id:\"enctype\",type:\"select\",label:a.lang.forms.form.encoding,style:\"width:100%\",accessKey:\"E\",\"default\":\"\",items:[[\"\"],[\"text/plain\"],[\"multipart/form-data\"],[\"application/x-www-form-urlencoded\"]]}]},{type:\"hbox\",widths:[\"45%\",\"55%\"],children:[{id:\"target\",type:\"select\",\nlabel:a.lang.common.target,style:\"width:100%\",accessKey:\"M\",\"default\":\"\",items:[[a.lang.common.notSet,\"\"],[a.lang.common.targetNew,\"_blank\"],[a.lang.common.targetTop,\"_top\"],[a.lang.common.targetSelf,\"_self\"],[a.lang.common.targetParent,\"_parent\"]]},{id:\"method\",type:\"select\",label:a.lang.forms.form.method,accessKey:\"M\",\"default\":\"GET\",items:[[\"GET\",\"get\"],[\"POST\",\"post\"]]}]}]}]}});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/forms/dialogs/hiddenfield.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.dialog.add(\"hiddenfield\",function(d){return{title:d.lang.forms.hidden.title,hiddenField:null,minWidth:350,minHeight:110,onShow:function(){delete this.hiddenField;var a=this.getParentEditor(),b=a.getSelection(),c=b.getSelectedElement();c&&(c.data(\"cke-real-element-type\")&&\"hiddenfield\"==c.data(\"cke-real-element-type\"))&&(this.hiddenField=c,c=a.restoreRealElement(this.hiddenField),this.setupContent(c),b.selectElement(this.hiddenField))},onOk:function(){var a=this.getValueOf(\"info\",\"_cke_saved_name\");\nthis.getValueOf(\"info\",\"value\");var b=this.getParentEditor(),a=CKEDITOR.env.ie&&!(8<=CKEDITOR.document.$.documentMode)?b.document.createElement('<input name=\"'+CKEDITOR.tools.htmlEncode(a)+'\">'):b.document.createElement(\"input\");a.setAttribute(\"type\",\"hidden\");this.commitContent(a);a=b.createFakeElement(a,\"cke_hidden\",\"hiddenfield\");this.hiddenField?(a.replace(this.hiddenField),b.getSelection().selectElement(a)):b.insertElement(a);return!0},contents:[{id:\"info\",label:d.lang.forms.hidden.title,title:d.lang.forms.hidden.title,\nelements:[{id:\"_cke_saved_name\",type:\"text\",label:d.lang.forms.hidden.name,\"default\":\"\",accessKey:\"N\",setup:function(a){this.setValue(a.data(\"cke-saved-name\")||a.getAttribute(\"name\")||\"\")},commit:function(a){this.getValue()?a.setAttribute(\"name\",this.getValue()):a.removeAttribute(\"name\")}},{id:\"value\",type:\"text\",label:d.lang.forms.hidden.value,\"default\":\"\",accessKey:\"V\",setup:function(a){this.setValue(a.getAttribute(\"value\")||\"\")},commit:function(a){this.getValue()?a.setAttribute(\"value\",this.getValue()):\na.removeAttribute(\"value\")}}]}]}});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/forms/dialogs/radio.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.dialog.add(\"radio\",function(d){return{title:d.lang.forms.checkboxAndRadio.radioTitle,minWidth:350,minHeight:140,onShow:function(){delete this.radioButton;var a=this.getParentEditor().getSelection().getSelectedElement();a&&(\"input\"==a.getName()&&\"radio\"==a.getAttribute(\"type\"))&&(this.radioButton=a,this.setupContent(a))},onOk:function(){var a,b=this.radioButton,c=!b;c&&(a=this.getParentEditor(),b=a.document.createElement(\"input\"),b.setAttribute(\"type\",\"radio\"));c&&a.insertElement(b);this.commitContent({element:b})},\ncontents:[{id:\"info\",label:d.lang.forms.checkboxAndRadio.radioTitle,title:d.lang.forms.checkboxAndRadio.radioTitle,elements:[{id:\"name\",type:\"text\",label:d.lang.common.name,\"default\":\"\",accessKey:\"N\",setup:function(a){this.setValue(a.data(\"cke-saved-name\")||a.getAttribute(\"name\")||\"\")},commit:function(a){a=a.element;this.getValue()?a.data(\"cke-saved-name\",this.getValue()):(a.data(\"cke-saved-name\",!1),a.removeAttribute(\"name\"))}},{id:\"value\",type:\"text\",label:d.lang.forms.checkboxAndRadio.value,\"default\":\"\",\naccessKey:\"V\",setup:function(a){this.setValue(a.getAttribute(\"value\")||\"\")},commit:function(a){a=a.element;this.getValue()?a.setAttribute(\"value\",this.getValue()):a.removeAttribute(\"value\")}},{id:\"checked\",type:\"checkbox\",label:d.lang.forms.checkboxAndRadio.selected,\"default\":\"\",accessKey:\"S\",value:\"checked\",setup:function(a){this.setValue(a.getAttribute(\"checked\"))},commit:function(a){var b=a.element;if(CKEDITOR.env.ie){var c=b.getAttribute(\"checked\"),e=!!this.getValue();c!=e&&(c=CKEDITOR.dom.element.createFromHtml('<input type=\"radio\"'+\n(e?' checked=\"checked\"':\"\")+\"></input>\",d.document),b.copyAttributes(c,{type:1,checked:1}),c.replace(b),d.getSelection().selectElement(c),a.element=c)}else this.getValue()?b.setAttribute(\"checked\",\"checked\"):b.removeAttribute(\"checked\")}}]}]}});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/forms/dialogs/select.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.dialog.add(\"select\",function(c){function h(a,b,e,d,c){a=f(a);d=d?d.createElement(\"OPTION\"):document.createElement(\"OPTION\");if(a&&d&&\"option\"==d.getName())CKEDITOR.env.ie?(isNaN(parseInt(c,10))?a.$.options.add(d.$):a.$.options.add(d.$,c),d.$.innerHTML=0<b.length?b:\"\",d.$.value=e):(null!==c&&c<a.getChildCount()?a.getChild(0>c?0:c).insertBeforeMe(d):a.append(d),d.setText(0<b.length?b:\"\"),d.setValue(e));else return!1;return d}function m(a){for(var a=f(a),b=g(a),e=a.getChildren().count()-1;0<=\ne;e--)a.getChild(e).$.selected&&a.getChild(e).remove();i(a,b)}function n(a,b,e,d){a=f(a);if(0>b)return!1;a=a.getChild(b);a.setText(e);a.setValue(d);return a}function k(a){for(a=f(a);a.getChild(0)&&a.getChild(0).remove(););}function j(a,b,e){var a=f(a),d=g(a);if(0>d)return!1;b=d+b;b=0>b?0:b;b=b>=a.getChildCount()?a.getChildCount()-1:b;if(d==b)return!1;var d=a.getChild(d),c=d.getText(),o=d.getValue();d.remove();d=h(a,c,o,!e?null:e,b);i(a,b);return d}function g(a){return(a=f(a))?a.$.selectedIndex:-1}\nfunction i(a,b){a=f(a);if(0>b)return null;var e=a.getChildren().count();a.$.selectedIndex=b>=e?e-1:b;return a}function l(a){return(a=f(a))?a.getChildren():!1}function f(a){return a&&a.domId&&a.getInputElement().$?a.getInputElement():a&&a.$?a:!1}return{title:c.lang.forms.select.title,minWidth:CKEDITOR.env.ie?460:395,minHeight:CKEDITOR.env.ie?320:300,onShow:function(){delete this.selectBox;this.setupContent(\"clear\");var a=this.getParentEditor().getSelection().getSelectedElement();if(a&&\"select\"==a.getName()){this.selectBox=\na;this.setupContent(a.getName(),a);for(var a=l(a),b=0;b<a.count();b++)this.setupContent(\"option\",a.getItem(b))}},onOk:function(){var a=this.getParentEditor(),b=this.selectBox,e=!b;e&&(b=a.document.createElement(\"select\"));this.commitContent(b);if(e&&(a.insertElement(b),CKEDITOR.env.ie)){var d=a.getSelection(),c=d.createBookmarks();setTimeout(function(){d.selectBookmarks(c)},0)}},contents:[{id:\"info\",label:c.lang.forms.select.selectInfo,title:c.lang.forms.select.selectInfo,accessKey:\"\",elements:[{id:\"txtName\",\ntype:\"text\",widths:[\"25%\",\"75%\"],labelLayout:\"horizontal\",label:c.lang.common.name,\"default\":\"\",accessKey:\"N\",style:\"width:350px\",setup:function(a,b){\"clear\"==a?this.setValue(this[\"default\"]||\"\"):\"select\"==a&&this.setValue(b.data(\"cke-saved-name\")||b.getAttribute(\"name\")||\"\")},commit:function(a){this.getValue()?a.data(\"cke-saved-name\",this.getValue()):(a.data(\"cke-saved-name\",!1),a.removeAttribute(\"name\"))}},{id:\"txtValue\",type:\"text\",widths:[\"25%\",\"75%\"],labelLayout:\"horizontal\",label:c.lang.forms.select.value,\nstyle:\"width:350px\",\"default\":\"\",className:\"cke_disabled\",onLoad:function(){this.getInputElement().setAttribute(\"readOnly\",!0)},setup:function(a,b){\"clear\"==a?this.setValue(\"\"):\"option\"==a&&b.getAttribute(\"selected\")&&this.setValue(b.$.value)}},{type:\"hbox\",widths:[\"175px\",\"170px\"],children:[{id:\"txtSize\",type:\"text\",labelLayout:\"horizontal\",label:c.lang.forms.select.size,\"default\":\"\",accessKey:\"S\",style:\"width:175px\",validate:function(){var a=CKEDITOR.dialog.validate.integer(c.lang.common.validateNumberFailed);\nreturn\"\"===this.getValue()||a.apply(this)},setup:function(a,b){\"select\"==a&&this.setValue(b.getAttribute(\"size\")||\"\");CKEDITOR.env.webkit&&this.getInputElement().setStyle(\"width\",\"86px\")},commit:function(a){this.getValue()?a.setAttribute(\"size\",this.getValue()):a.removeAttribute(\"size\")}},{type:\"html\",html:\"<span>\"+CKEDITOR.tools.htmlEncode(c.lang.forms.select.lines)+\"</span>\"}]},{type:\"html\",html:\"<span>\"+CKEDITOR.tools.htmlEncode(c.lang.forms.select.opAvail)+\"</span>\"},{type:\"hbox\",widths:[\"115px\",\n\"115px\",\"100px\"],children:[{type:\"vbox\",children:[{id:\"txtOptName\",type:\"text\",label:c.lang.forms.select.opText,style:\"width:115px\",setup:function(a){\"clear\"==a&&this.setValue(\"\")}},{type:\"select\",id:\"cmbName\",label:\"\",title:\"\",size:5,style:\"width:115px;height:75px\",items:[],onChange:function(){var a=this.getDialog(),b=a.getContentElement(\"info\",\"cmbValue\"),e=a.getContentElement(\"info\",\"txtOptName\"),a=a.getContentElement(\"info\",\"txtOptValue\"),d=g(this);i(b,d);e.setValue(this.getValue());a.setValue(b.getValue())},\nsetup:function(a,b){\"clear\"==a?k(this):\"option\"==a&&h(this,b.getText(),b.getText(),this.getDialog().getParentEditor().document)},commit:function(a){var b=this.getDialog(),e=l(this),d=l(b.getContentElement(\"info\",\"cmbValue\")),c=b.getContentElement(\"info\",\"txtValue\").getValue();k(a);for(var f=0;f<e.count();f++){var g=h(a,e.getItem(f).getValue(),d.getItem(f).getValue(),b.getParentEditor().document);d.getItem(f).getValue()==c&&(g.setAttribute(\"selected\",\"selected\"),g.selected=!0)}}}]},{type:\"vbox\",children:[{id:\"txtOptValue\",\ntype:\"text\",label:c.lang.forms.select.opValue,style:\"width:115px\",setup:function(a){\"clear\"==a&&this.setValue(\"\")}},{type:\"select\",id:\"cmbValue\",label:\"\",size:5,style:\"width:115px;height:75px\",items:[],onChange:function(){var a=this.getDialog(),b=a.getContentElement(\"info\",\"cmbName\"),e=a.getContentElement(\"info\",\"txtOptName\"),a=a.getContentElement(\"info\",\"txtOptValue\"),d=g(this);i(b,d);e.setValue(b.getValue());a.setValue(this.getValue())},setup:function(a,b){if(\"clear\"==a)k(this);else if(\"option\"==\na){var e=b.getValue();h(this,e,e,this.getDialog().getParentEditor().document);\"selected\"==b.getAttribute(\"selected\")&&this.getDialog().getContentElement(\"info\",\"txtValue\").setValue(e)}}}]},{type:\"vbox\",padding:5,children:[{type:\"button\",id:\"btnAdd\",style:\"\",label:c.lang.forms.select.btnAdd,title:c.lang.forms.select.btnAdd,style:\"width:100%;\",onClick:function(){var a=this.getDialog();a.getParentEditor();var b=a.getContentElement(\"info\",\"txtOptName\"),e=a.getContentElement(\"info\",\"txtOptValue\"),d=a.getContentElement(\"info\",\n\"cmbName\"),c=a.getContentElement(\"info\",\"cmbValue\");h(d,b.getValue(),b.getValue(),a.getParentEditor().document);h(c,e.getValue(),e.getValue(),a.getParentEditor().document);b.setValue(\"\");e.setValue(\"\")}},{type:\"button\",id:\"btnModify\",label:c.lang.forms.select.btnModify,title:c.lang.forms.select.btnModify,style:\"width:100%;\",onClick:function(){var a=this.getDialog(),b=a.getContentElement(\"info\",\"txtOptName\"),e=a.getContentElement(\"info\",\"txtOptValue\"),d=a.getContentElement(\"info\",\"cmbName\"),a=a.getContentElement(\"info\",\n\"cmbValue\"),c=g(d);0<=c&&(n(d,c,b.getValue(),b.getValue()),n(a,c,e.getValue(),e.getValue()))}},{type:\"button\",id:\"btnUp\",style:\"width:100%;\",label:c.lang.forms.select.btnUp,title:c.lang.forms.select.btnUp,onClick:function(){var a=this.getDialog(),b=a.getContentElement(\"info\",\"cmbName\"),c=a.getContentElement(\"info\",\"cmbValue\");j(b,-1,a.getParentEditor().document);j(c,-1,a.getParentEditor().document)}},{type:\"button\",id:\"btnDown\",style:\"width:100%;\",label:c.lang.forms.select.btnDown,title:c.lang.forms.select.btnDown,\nonClick:function(){var a=this.getDialog(),b=a.getContentElement(\"info\",\"cmbName\"),c=a.getContentElement(\"info\",\"cmbValue\");j(b,1,a.getParentEditor().document);j(c,1,a.getParentEditor().document)}}]}]},{type:\"hbox\",widths:[\"40%\",\"20%\",\"40%\"],children:[{type:\"button\",id:\"btnSetValue\",label:c.lang.forms.select.btnSetValue,title:c.lang.forms.select.btnSetValue,onClick:function(){var a=this.getDialog(),b=a.getContentElement(\"info\",\"cmbValue\");a.getContentElement(\"info\",\"txtValue\").setValue(b.getValue())}},\n{type:\"button\",id:\"btnDelete\",label:c.lang.forms.select.btnDelete,title:c.lang.forms.select.btnDelete,onClick:function(){var a=this.getDialog(),b=a.getContentElement(\"info\",\"cmbName\"),c=a.getContentElement(\"info\",\"cmbValue\"),d=a.getContentElement(\"info\",\"txtOptName\"),a=a.getContentElement(\"info\",\"txtOptValue\");m(b);m(c);d.setValue(\"\");a.setValue(\"\")}},{id:\"chkMulti\",type:\"checkbox\",label:c.lang.forms.select.chkMulti,\"default\":\"\",accessKey:\"M\",value:\"checked\",setup:function(a,b){\"select\"==a&&this.setValue(b.getAttribute(\"multiple\"));\nCKEDITOR.env.webkit&&this.getElement().getParent().setStyle(\"vertical-align\",\"middle\")},commit:function(a){this.getValue()?a.setAttribute(\"multiple\",this.getValue()):a.removeAttribute(\"multiple\")}}]}]}]}});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/forms/dialogs/textarea.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.dialog.add(\"textarea\",function(b){return{title:b.lang.forms.textarea.title,minWidth:350,minHeight:220,onShow:function(){delete this.textarea;var a=this.getParentEditor().getSelection().getSelectedElement();a&&\"textarea\"==a.getName()&&(this.textarea=a,this.setupContent(a))},onOk:function(){var a,b=this.textarea,c=!b;c&&(a=this.getParentEditor(),b=a.document.createElement(\"textarea\"));this.commitContent(b);c&&a.insertElement(b)},contents:[{id:\"info\",label:b.lang.forms.textarea.title,title:b.lang.forms.textarea.title,\nelements:[{id:\"_cke_saved_name\",type:\"text\",label:b.lang.common.name,\"default\":\"\",accessKey:\"N\",setup:function(a){this.setValue(a.data(\"cke-saved-name\")||a.getAttribute(\"name\")||\"\")},commit:function(a){this.getValue()?a.data(\"cke-saved-name\",this.getValue()):(a.data(\"cke-saved-name\",!1),a.removeAttribute(\"name\"))}},{type:\"hbox\",widths:[\"50%\",\"50%\"],children:[{id:\"cols\",type:\"text\",label:b.lang.forms.textarea.cols,\"default\":\"\",accessKey:\"C\",style:\"width:50px\",validate:CKEDITOR.dialog.validate.integer(b.lang.common.validateNumberFailed),\nsetup:function(a){this.setValue(a.hasAttribute(\"cols\")&&a.getAttribute(\"cols\")||\"\")},commit:function(a){this.getValue()?a.setAttribute(\"cols\",this.getValue()):a.removeAttribute(\"cols\")}},{id:\"rows\",type:\"text\",label:b.lang.forms.textarea.rows,\"default\":\"\",accessKey:\"R\",style:\"width:50px\",validate:CKEDITOR.dialog.validate.integer(b.lang.common.validateNumberFailed),setup:function(a){this.setValue(a.hasAttribute(\"rows\")&&a.getAttribute(\"rows\")||\"\")},commit:function(a){this.getValue()?a.setAttribute(\"rows\",\nthis.getValue()):a.removeAttribute(\"rows\")}}]},{id:\"value\",type:\"textarea\",label:b.lang.forms.textfield.value,\"default\":\"\",setup:function(a){this.setValue(a.$.defaultValue)},commit:function(a){a.$.value=a.$.defaultValue=this.getValue()}}]}]}});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/forms/dialogs/textfield.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.dialog.add(\"textfield\",function(b){function e(a){var a=a.element,c=this.getValue();c?a.setAttribute(this.id,c):a.removeAttribute(this.id)}function f(a){this.setValue(a.hasAttribute(this.id)&&a.getAttribute(this.id)||\"\")}var g={email:1,password:1,search:1,tel:1,text:1,url:1};return{title:b.lang.forms.textfield.title,minWidth:350,minHeight:150,onShow:function(){delete this.textField;var a=this.getParentEditor().getSelection().getSelectedElement();if(a&&\"input\"==a.getName()&&(g[a.getAttribute(\"type\")]||\n!a.getAttribute(\"type\")))this.textField=a,this.setupContent(a)},onOk:function(){var a=this.getParentEditor(),c=this.textField,b=!c;b&&(c=a.document.createElement(\"input\"),c.setAttribute(\"type\",\"text\"));c={element:c};b&&a.insertElement(c.element);this.commitContent(c);b||a.getSelection().selectElement(c.element)},onLoad:function(){this.foreach(function(a){if(a.getValue&&(a.setup||(a.setup=f),!a.commit))a.commit=e})},contents:[{id:\"info\",label:b.lang.forms.textfield.title,title:b.lang.forms.textfield.title,\nelements:[{type:\"hbox\",widths:[\"50%\",\"50%\"],children:[{id:\"_cke_saved_name\",type:\"text\",label:b.lang.forms.textfield.name,\"default\":\"\",accessKey:\"N\",setup:function(a){this.setValue(a.data(\"cke-saved-name\")||a.getAttribute(\"name\")||\"\")},commit:function(a){a=a.element;this.getValue()?a.data(\"cke-saved-name\",this.getValue()):(a.data(\"cke-saved-name\",!1),a.removeAttribute(\"name\"))}},{id:\"value\",type:\"text\",label:b.lang.forms.textfield.value,\"default\":\"\",accessKey:\"V\",commit:function(a){if(CKEDITOR.env.ie&&\n!this.getValue()){var c=a.element,d=new CKEDITOR.dom.element(\"input\",b.document);c.copyAttributes(d,{value:1});d.replace(c);a.element=d}else e.call(this,a)}}]},{type:\"hbox\",widths:[\"50%\",\"50%\"],children:[{id:\"size\",type:\"text\",label:b.lang.forms.textfield.charWidth,\"default\":\"\",accessKey:\"C\",style:\"width:50px\",validate:CKEDITOR.dialog.validate.integer(b.lang.common.validateNumberFailed)},{id:\"maxLength\",type:\"text\",label:b.lang.forms.textfield.maxChars,\"default\":\"\",accessKey:\"M\",style:\"width:50px\",\nvalidate:CKEDITOR.dialog.validate.integer(b.lang.common.validateNumberFailed)}],onLoad:function(){CKEDITOR.env.ie7Compat&&this.getElement().setStyle(\"zoom\",\"100%\")}},{id:\"type\",type:\"select\",label:b.lang.forms.textfield.type,\"default\":\"text\",accessKey:\"M\",items:[[b.lang.forms.textfield.typeEmail,\"email\"],[b.lang.forms.textfield.typePass,\"password\"],[b.lang.forms.textfield.typeSearch,\"search\"],[b.lang.forms.textfield.typeTel,\"tel\"],[b.lang.forms.textfield.typeText,\"text\"],[b.lang.forms.textfield.typeUrl,\n\"url\"]],setup:function(a){this.setValue(a.getAttribute(\"type\"))},commit:function(a){var c=a.element;if(CKEDITOR.env.ie){var d=c.getAttribute(\"type\"),e=this.getValue();d!=e&&(d=CKEDITOR.dom.element.createFromHtml('<input type=\"'+e+'\"></input>',b.document),c.copyAttributes(d,{type:1}),d.replace(c),a.element=d)}else c.setAttribute(\"type\",this.getValue())}}]}]}});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/iframe/dialogs/iframe.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\n(function(){function c(b){var c=this instanceof CKEDITOR.ui.dialog.checkbox;b.hasAttribute(this.id)&&(b=b.getAttribute(this.id),c?this.setValue(e[this.id][\"true\"]==b.toLowerCase()):this.setValue(b))}function d(b){var c=\"\"===this.getValue(),a=this instanceof CKEDITOR.ui.dialog.checkbox,d=this.getValue();c?b.removeAttribute(this.att||this.id):a?b.setAttribute(this.id,e[this.id][d]):b.setAttribute(this.att||this.id,d)}var e={scrolling:{\"true\":\"yes\",\"false\":\"no\"},frameborder:{\"true\":\"1\",\"false\":\"0\"}};\nCKEDITOR.dialog.add(\"iframe\",function(b){var f=b.lang.iframe,a=b.lang.common,e=b.plugins.dialogadvtab;return{title:f.title,minWidth:350,minHeight:260,onShow:function(){this.fakeImage=this.iframeNode=null;var a=this.getSelectedElement();a&&(a.data(\"cke-real-element-type\")&&\"iframe\"==a.data(\"cke-real-element-type\"))&&(this.fakeImage=a,this.iframeNode=a=b.restoreRealElement(a),this.setupContent(a))},onOk:function(){var a;a=this.fakeImage?this.iframeNode:new CKEDITOR.dom.element(\"iframe\");var c={},d=\n{};this.commitContent(a,c,d);a=b.createFakeElement(a,\"cke_iframe\",\"iframe\",!0);a.setAttributes(d);a.setStyles(c);this.fakeImage?(a.replace(this.fakeImage),b.getSelection().selectElement(a)):b.insertElement(a)},contents:[{id:\"info\",label:a.generalTab,accessKey:\"I\",elements:[{type:\"vbox\",padding:0,children:[{id:\"src\",type:\"text\",label:a.url,required:!0,validate:CKEDITOR.dialog.validate.notEmpty(f.noUrl),setup:c,commit:d}]},{type:\"hbox\",children:[{id:\"width\",type:\"text\",requiredContent:\"iframe[width]\",\nstyle:\"width:100%\",labelLayout:\"vertical\",label:a.width,validate:CKEDITOR.dialog.validate.htmlLength(a.invalidHtmlLength.replace(\"%1\",a.width)),setup:c,commit:d},{id:\"height\",type:\"text\",requiredContent:\"iframe[height]\",style:\"width:100%\",labelLayout:\"vertical\",label:a.height,validate:CKEDITOR.dialog.validate.htmlLength(a.invalidHtmlLength.replace(\"%1\",a.height)),setup:c,commit:d},{id:\"align\",type:\"select\",requiredContent:\"iframe[align]\",\"default\":\"\",items:[[a.notSet,\"\"],[a.alignLeft,\"left\"],[a.alignRight,\n\"right\"],[a.alignTop,\"top\"],[a.alignMiddle,\"middle\"],[a.alignBottom,\"bottom\"]],style:\"width:100%\",labelLayout:\"vertical\",label:a.align,setup:function(a,b){c.apply(this,arguments);if(b){var d=b.getAttribute(\"align\");this.setValue(d&&d.toLowerCase()||\"\")}},commit:function(a,b,c){d.apply(this,arguments);this.getValue()&&(c.align=this.getValue())}}]},{type:\"hbox\",widths:[\"50%\",\"50%\"],children:[{id:\"scrolling\",type:\"checkbox\",requiredContent:\"iframe[scrolling]\",label:f.scrolling,setup:c,commit:d},{id:\"frameborder\",\ntype:\"checkbox\",requiredContent:\"iframe[frameborder]\",label:f.border,setup:c,commit:d}]},{type:\"hbox\",widths:[\"50%\",\"50%\"],children:[{id:\"name\",type:\"text\",requiredContent:\"iframe[name]\",label:a.name,setup:c,commit:d},{id:\"title\",type:\"text\",requiredContent:\"iframe[title]\",label:a.advisoryTitle,setup:c,commit:d}]},{id:\"longdesc\",type:\"text\",requiredContent:\"iframe[longdesc]\",label:a.longDescr,setup:c,commit:d}]},e&&e.createAdvancedTab(b,{id:1,classes:1,styles:1},\"iframe\")]}})})();"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/image/dialogs/image.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\n(function(){var r=function(c,j){function r(){var a=arguments,b=this.getContentElement(\"advanced\",\"txtdlgGenStyle\");b&&b.commit.apply(b,a);this.foreach(function(b){b.commit&&\"txtdlgGenStyle\"!=b.id&&b.commit.apply(b,a)})}function i(a){if(!s){s=1;var b=this.getDialog(),d=b.imageElement;if(d){this.commit(f,d);for(var a=[].concat(a),e=a.length,c,g=0;g<e;g++)(c=b.getContentElement.apply(b,a[g].split(\":\")))&&c.setup(f,d)}s=0}}var f=1,k=/^\\s*(\\d+)((px)|\\%)?\\s*$/i,v=/(^\\s*(\\d+)((px)|\\%)?\\s*$)|^$/i,o=/^\\d+px$/,\nw=function(){var a=this.getValue(),b=this.getDialog(),d=a.match(k);d&&(\"%\"==d[2]&&l(b,!1),a=d[1]);b.lockRatio&&(d=b.originalElement,\"true\"==d.getCustomData(\"isReady\")&&(\"txtHeight\"==this.id?(a&&\"0\"!=a&&(a=Math.round(d.$.width*(a/d.$.height))),isNaN(a)||b.setValueOf(\"info\",\"txtWidth\",a)):(a&&\"0\"!=a&&(a=Math.round(d.$.height*(a/d.$.width))),isNaN(a)||b.setValueOf(\"info\",\"txtHeight\",a))));g(b)},g=function(a){if(!a.originalElement||!a.preview)return 1;a.commitContent(4,a.preview);return 0},s,l=function(a,\nb){if(!a.getContentElement(\"info\",\"ratioLock\"))return null;var d=a.originalElement;if(!d)return null;if(\"check\"==b){if(!a.userlockRatio&&\"true\"==d.getCustomData(\"isReady\")){var e=a.getValueOf(\"info\",\"txtWidth\"),c=a.getValueOf(\"info\",\"txtHeight\"),d=1E3*d.$.width/d.$.height,f=1E3*e/c;a.lockRatio=!1;!e&&!c?a.lockRatio=!0:!isNaN(d)&&!isNaN(f)&&Math.round(d)==Math.round(f)&&(a.lockRatio=!0)}}else void 0!=b?a.lockRatio=b:(a.userlockRatio=1,a.lockRatio=!a.lockRatio);e=CKEDITOR.document.getById(p);a.lockRatio?\ne.removeClass(\"cke_btn_unlocked\"):e.addClass(\"cke_btn_unlocked\");e.setAttribute(\"aria-checked\",a.lockRatio);CKEDITOR.env.hc&&e.getChild(0).setHtml(a.lockRatio?CKEDITOR.env.ie?\"■\":\"▣\":CKEDITOR.env.ie?\"□\":\"▢\");return a.lockRatio},x=function(a){var b=a.originalElement;if(\"true\"==b.getCustomData(\"isReady\")){var d=a.getContentElement(\"info\",\"txtWidth\"),e=a.getContentElement(\"info\",\"txtHeight\");d&&d.setValue(b.$.width);e&&e.setValue(b.$.height)}g(a)},y=function(a,b){function d(a,b){var d=a.match(k);return d?\n(\"%\"==d[2]&&(d[1]+=\"%\",l(e,!1)),d[1]):b}if(a==f){var e=this.getDialog(),c=\"\",g=\"txtWidth\"==this.id?\"width\":\"height\",h=b.getAttribute(g);h&&(c=d(h,c));c=d(b.getStyle(g),c);this.setValue(c)}},t,q=function(){var a=this.originalElement;a.setCustomData(\"isReady\",\"true\");a.removeListener(\"load\",q);a.removeListener(\"error\",h);a.removeListener(\"abort\",h);CKEDITOR.document.getById(m).setStyle(\"display\",\"none\");this.dontResetSize||x(this);this.firstLoad&&CKEDITOR.tools.setTimeout(function(){l(this,\"check\")},\n0,this);this.dontResetSize=this.firstLoad=!1},h=function(){var a=this.originalElement;a.removeListener(\"load\",q);a.removeListener(\"error\",h);a.removeListener(\"abort\",h);a=CKEDITOR.getUrl(CKEDITOR.plugins.get(\"image\").path+\"images/noimage.png\");this.preview&&this.preview.setAttribute(\"src\",a);CKEDITOR.document.getById(m).setStyle(\"display\",\"none\");l(this,!1)},n=function(a){return CKEDITOR.tools.getNextId()+\"_\"+a},p=n(\"btnLockSizes\"),u=n(\"btnResetSize\"),m=n(\"ImagePreviewLoader\"),A=n(\"previewLink\"),\nz=n(\"previewImage\");return{title:c.lang.image[\"image\"==j?\"title\":\"titleButton\"],minWidth:420,minHeight:360,onShow:function(){this.linkEditMode=this.imageEditMode=this.linkElement=this.imageElement=!1;this.lockRatio=!0;this.userlockRatio=0;this.dontResetSize=!1;this.firstLoad=!0;this.addLink=!1;var a=this.getParentEditor(),b=a.getSelection(),d=(b=b&&b.getSelectedElement())&&a.elementPath(b).contains(\"a\",1);CKEDITOR.document.getById(m).setStyle(\"display\",\"none\");t=new CKEDITOR.dom.element(\"img\",a.document);\nthis.preview=CKEDITOR.document.getById(z);this.originalElement=a.document.createElement(\"img\");this.originalElement.setAttribute(\"alt\",\"\");this.originalElement.setCustomData(\"isReady\",\"false\");if(d){this.linkElement=d;this.linkEditMode=!0;var c=d.getChildren();if(1==c.count()){var g=c.getItem(0).getName();if(\"img\"==g||\"input\"==g)this.imageElement=c.getItem(0),\"img\"==this.imageElement.getName()?this.imageEditMode=\"img\":\"input\"==this.imageElement.getName()&&(this.imageEditMode=\"input\")}\"image\"==j&&\nthis.setupContent(2,d)}if(this.customImageElement)this.imageEditMode=\"img\",this.imageElement=this.customImageElement,delete this.customImageElement;else if(b&&\"img\"==b.getName()&&!b.data(\"cke-realelement\")||b&&\"input\"==b.getName()&&\"image\"==b.getAttribute(\"type\"))this.imageEditMode=b.getName(),this.imageElement=b;this.imageEditMode?(this.cleanImageElement=this.imageElement,this.imageElement=this.cleanImageElement.clone(!0,!0),this.setupContent(f,this.imageElement)):this.imageElement=a.document.createElement(\"img\");\nl(this,!0);CKEDITOR.tools.trim(this.getValueOf(\"info\",\"txtUrl\"))||(this.preview.removeAttribute(\"src\"),this.preview.setStyle(\"display\",\"none\"))},onOk:function(){if(this.imageEditMode){var a=this.imageEditMode;\"image\"==j&&\"input\"==a&&confirm(c.lang.image.button2Img)?(this.imageElement=c.document.createElement(\"img\"),this.imageElement.setAttribute(\"alt\",\"\"),c.insertElement(this.imageElement)):\"image\"!=j&&\"img\"==a&&confirm(c.lang.image.img2Button)?(this.imageElement=c.document.createElement(\"input\"),\nthis.imageElement.setAttributes({type:\"image\",alt:\"\"}),c.insertElement(this.imageElement)):(this.imageElement=this.cleanImageElement,delete this.cleanImageElement)}else\"image\"==j?this.imageElement=c.document.createElement(\"img\"):(this.imageElement=c.document.createElement(\"input\"),this.imageElement.setAttribute(\"type\",\"image\")),this.imageElement.setAttribute(\"alt\",\"\");this.linkEditMode||(this.linkElement=c.document.createElement(\"a\"));this.commitContent(f,this.imageElement);this.commitContent(2,this.linkElement);\nthis.imageElement.getAttribute(\"style\")||this.imageElement.removeAttribute(\"style\");this.imageEditMode?!this.linkEditMode&&this.addLink?(c.insertElement(this.linkElement),this.imageElement.appendTo(this.linkElement)):this.linkEditMode&&!this.addLink&&(c.getSelection().selectElement(this.linkElement),c.insertElement(this.imageElement)):this.addLink?this.linkEditMode?c.insertElement(this.imageElement):(c.insertElement(this.linkElement),this.linkElement.append(this.imageElement,!1)):c.insertElement(this.imageElement)},\nonLoad:function(){\"image\"!=j&&this.hidePage(\"Link\");var a=this._.element.getDocument();this.getContentElement(\"info\",\"ratioLock\")&&(this.addFocusable(a.getById(u),5),this.addFocusable(a.getById(p),5));this.commitContent=r},onHide:function(){this.preview&&this.commitContent(8,this.preview);this.originalElement&&(this.originalElement.removeListener(\"load\",q),this.originalElement.removeListener(\"error\",h),this.originalElement.removeListener(\"abort\",h),this.originalElement.remove(),this.originalElement=\n!1);delete this.imageElement},contents:[{id:\"info\",label:c.lang.image.infoTab,accessKey:\"I\",elements:[{type:\"vbox\",padding:0,children:[{type:\"hbox\",widths:[\"280px\",\"110px\"],align:\"right\",children:[{id:\"txtUrl\",type:\"text\",label:c.lang.common.url,required:!0,onChange:function(){var a=this.getDialog(),b=this.getValue();if(0<b.length){var a=this.getDialog(),d=a.originalElement;a.preview.removeStyle(\"display\");d.setCustomData(\"isReady\",\"false\");var c=CKEDITOR.document.getById(m);c&&c.setStyle(\"display\",\n\"\");d.on(\"load\",q,a);d.on(\"error\",h,a);d.on(\"abort\",h,a);d.setAttribute(\"src\",b);t.setAttribute(\"src\",b);a.preview.setAttribute(\"src\",t.$.src);g(a)}else a.preview&&(a.preview.removeAttribute(\"src\"),a.preview.setStyle(\"display\",\"none\"))},setup:function(a,b){if(a==f){var d=b.data(\"cke-saved-src\")||b.getAttribute(\"src\");this.getDialog().dontResetSize=!0;this.setValue(d);this.setInitValue()}},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())?(b.data(\"cke-saved-src\",this.getValue()),b.setAttribute(\"src\",\nthis.getValue())):8==a&&(b.setAttribute(\"src\",\"\"),b.removeAttribute(\"src\"))},validate:CKEDITOR.dialog.validate.notEmpty(c.lang.image.urlMissing)},{type:\"button\",id:\"browse\",style:\"display:inline-block;margin-top:14px;\",align:\"center\",label:c.lang.common.browseServer,hidden:!0,filebrowser:\"info:txtUrl\"}]}]},{id:\"txtAlt\",type:\"text\",label:c.lang.image.alt,accessKey:\"T\",\"default\":\"\",onChange:function(){g(this.getDialog())},setup:function(a,b){a==f&&this.setValue(b.getAttribute(\"alt\"))},commit:function(a,\nb){a==f?(this.getValue()||this.isChanged())&&b.setAttribute(\"alt\",this.getValue()):4==a?b.setAttribute(\"alt\",this.getValue()):8==a&&b.removeAttribute(\"alt\")}},{type:\"hbox\",children:[{id:\"basic\",type:\"vbox\",children:[{type:\"hbox\",requiredContent:\"img{width,height}\",widths:[\"50%\",\"50%\"],children:[{type:\"vbox\",padding:1,children:[{type:\"text\",width:\"45px\",id:\"txtWidth\",label:c.lang.common.width,onKeyUp:w,onChange:function(){i.call(this,\"advanced:txtdlgGenStyle\")},validate:function(){var a=this.getValue().match(v);\n(a=!!(a&&0!==parseInt(a[1],10)))||alert(c.lang.common.invalidWidth);return a},setup:y,commit:function(a,b,d){var c=this.getValue();a==f?(c?b.setStyle(\"width\",CKEDITOR.tools.cssLength(c)):b.removeStyle(\"width\"),!d&&b.removeAttribute(\"width\")):4==a?c.match(k)?b.setStyle(\"width\",CKEDITOR.tools.cssLength(c)):(a=this.getDialog().originalElement,\"true\"==a.getCustomData(\"isReady\")&&b.setStyle(\"width\",a.$.width+\"px\")):8==a&&(b.removeAttribute(\"width\"),b.removeStyle(\"width\"))}},{type:\"text\",id:\"txtHeight\",\nwidth:\"45px\",label:c.lang.common.height,onKeyUp:w,onChange:function(){i.call(this,\"advanced:txtdlgGenStyle\")},validate:function(){var a=this.getValue().match(v);(a=!!(a&&0!==parseInt(a[1],10)))||alert(c.lang.common.invalidHeight);return a},setup:y,commit:function(a,b,d){var c=this.getValue();a==f?(c?b.setStyle(\"height\",CKEDITOR.tools.cssLength(c)):b.removeStyle(\"height\"),!d&&b.removeAttribute(\"height\")):4==a?c.match(k)?b.setStyle(\"height\",CKEDITOR.tools.cssLength(c)):(a=this.getDialog().originalElement,\n\"true\"==a.getCustomData(\"isReady\")&&b.setStyle(\"height\",a.$.height+\"px\")):8==a&&(b.removeAttribute(\"height\"),b.removeStyle(\"height\"))}}]},{id:\"ratioLock\",type:\"html\",style:\"margin-top:30px;width:40px;height:40px;\",onLoad:function(){var a=CKEDITOR.document.getById(u),b=CKEDITOR.document.getById(p);a&&(a.on(\"click\",function(a){x(this);a.data&&a.data.preventDefault()},this.getDialog()),a.on(\"mouseover\",function(){this.addClass(\"cke_btn_over\")},a),a.on(\"mouseout\",function(){this.removeClass(\"cke_btn_over\")},\na));b&&(b.on(\"click\",function(a){l(this);var b=this.originalElement,c=this.getValueOf(\"info\",\"txtWidth\");if(b.getCustomData(\"isReady\")==\"true\"&&c){b=b.$.height/b.$.width*c;if(!isNaN(b)){this.setValueOf(\"info\",\"txtHeight\",Math.round(b));g(this)}}a.data&&a.data.preventDefault()},this.getDialog()),b.on(\"mouseover\",function(){this.addClass(\"cke_btn_over\")},b),b.on(\"mouseout\",function(){this.removeClass(\"cke_btn_over\")},b))},html:'<div><a href=\"javascript:void(0)\" tabindex=\"-1\" title=\"'+c.lang.image.lockRatio+\n'\" class=\"cke_btn_locked\" id=\"'+p+'\" role=\"checkbox\"><span class=\"cke_icon\"></span><span class=\"cke_label\">'+c.lang.image.lockRatio+'</span></a><a href=\"javascript:void(0)\" tabindex=\"-1\" title=\"'+c.lang.image.resetSize+'\" class=\"cke_btn_reset\" id=\"'+u+'\" role=\"button\"><span class=\"cke_label\">'+c.lang.image.resetSize+\"</span></a></div>\"}]},{type:\"vbox\",padding:1,children:[{type:\"text\",id:\"txtBorder\",requiredContent:\"img{border-width}\",width:\"60px\",label:c.lang.image.border,\"default\":\"\",onKeyUp:function(){g(this.getDialog())},\nonChange:function(){i.call(this,\"advanced:txtdlgGenStyle\")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateBorder),setup:function(a,b){if(a==f){var d;d=(d=(d=b.getStyle(\"border-width\"))&&d.match(/^(\\d+px)(?: \\1 \\1 \\1)?$/))&&parseInt(d[1],10);isNaN(parseInt(d,10))&&(d=b.getAttribute(\"border\"));this.setValue(d)}},commit:function(a,b,d){var c=parseInt(this.getValue(),10);a==f||4==a?(isNaN(c)?!c&&this.isChanged()&&b.removeStyle(\"border\"):(b.setStyle(\"border-width\",CKEDITOR.tools.cssLength(c)),\nb.setStyle(\"border-style\",\"solid\")),!d&&a==f&&b.removeAttribute(\"border\")):8==a&&(b.removeAttribute(\"border\"),b.removeStyle(\"border-width\"),b.removeStyle(\"border-style\"),b.removeStyle(\"border-color\"))}},{type:\"text\",id:\"txtHSpace\",requiredContent:\"img{margin-left,margin-right}\",width:\"60px\",label:c.lang.image.hSpace,\"default\":\"\",onKeyUp:function(){g(this.getDialog())},onChange:function(){i.call(this,\"advanced:txtdlgGenStyle\")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateHSpace),\nsetup:function(a,b){if(a==f){var d,c;d=b.getStyle(\"margin-left\");c=b.getStyle(\"margin-right\");d=d&&d.match(o);c=c&&c.match(o);d=parseInt(d,10);c=parseInt(c,10);d=d==c&&d;isNaN(parseInt(d,10))&&(d=b.getAttribute(\"hspace\"));this.setValue(d)}},commit:function(a,b,c){var e=parseInt(this.getValue(),10);a==f||4==a?(isNaN(e)?!e&&this.isChanged()&&(b.removeStyle(\"margin-left\"),b.removeStyle(\"margin-right\")):(b.setStyle(\"margin-left\",CKEDITOR.tools.cssLength(e)),b.setStyle(\"margin-right\",CKEDITOR.tools.cssLength(e))),\n!c&&a==f&&b.removeAttribute(\"hspace\")):8==a&&(b.removeAttribute(\"hspace\"),b.removeStyle(\"margin-left\"),b.removeStyle(\"margin-right\"))}},{type:\"text\",id:\"txtVSpace\",requiredContent:\"img{margin-top,margin-bottom}\",width:\"60px\",label:c.lang.image.vSpace,\"default\":\"\",onKeyUp:function(){g(this.getDialog())},onChange:function(){i.call(this,\"advanced:txtdlgGenStyle\")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateVSpace),setup:function(a,b){if(a==f){var c,e;c=b.getStyle(\"margin-top\");e=\nb.getStyle(\"margin-bottom\");c=c&&c.match(o);e=e&&e.match(o);c=parseInt(c,10);e=parseInt(e,10);c=c==e&&c;isNaN(parseInt(c,10))&&(c=b.getAttribute(\"vspace\"));this.setValue(c)}},commit:function(a,b,c){var e=parseInt(this.getValue(),10);a==f||4==a?(isNaN(e)?!e&&this.isChanged()&&(b.removeStyle(\"margin-top\"),b.removeStyle(\"margin-bottom\")):(b.setStyle(\"margin-top\",CKEDITOR.tools.cssLength(e)),b.setStyle(\"margin-bottom\",CKEDITOR.tools.cssLength(e))),!c&&a==f&&b.removeAttribute(\"vspace\")):8==a&&(b.removeAttribute(\"vspace\"),\nb.removeStyle(\"margin-top\"),b.removeStyle(\"margin-bottom\"))}},{id:\"cmbAlign\",requiredContent:\"img{float}\",type:\"select\",widths:[\"35%\",\"65%\"],style:\"width:90px\",label:c.lang.common.align,\"default\":\"\",items:[[c.lang.common.notSet,\"\"],[c.lang.common.alignLeft,\"left\"],[c.lang.common.alignRight,\"right\"]],onChange:function(){g(this.getDialog());i.call(this,\"advanced:txtdlgGenStyle\")},setup:function(a,b){if(a==f){var c=b.getStyle(\"float\");switch(c){case \"inherit\":case \"none\":c=\"\"}!c&&(c=(b.getAttribute(\"align\")||\n\"\").toLowerCase());this.setValue(c)}},commit:function(a,b,c){var e=this.getValue();if(a==f||4==a){if(e?b.setStyle(\"float\",e):b.removeStyle(\"float\"),!c&&a==f)switch(e=(b.getAttribute(\"align\")||\"\").toLowerCase(),e){case \"left\":case \"right\":b.removeAttribute(\"align\")}}else 8==a&&b.removeStyle(\"float\")}}]}]},{type:\"vbox\",height:\"250px\",children:[{type:\"html\",id:\"htmlPreview\",style:\"width:95%;\",html:\"<div>\"+CKEDITOR.tools.htmlEncode(c.lang.common.preview)+'<br><div id=\"'+m+'\" class=\"ImagePreviewLoader\" style=\"display:none\"><div class=\"loading\">&nbsp;</div></div><div class=\"ImagePreviewBox\"><table><tr><td><a href=\"javascript:void(0)\" target=\"_blank\" onclick=\"return false;\" id=\"'+\nA+'\"><img id=\"'+z+'\" alt=\"\" /></a>'+(c.config.image_previewText||\"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.\")+\n\"</td></tr></table></div></div>\"}]}]}]},{id:\"Link\",requiredContent:\"a[href]\",label:c.lang.image.linkTab,padding:0,elements:[{id:\"txtUrl\",type:\"text\",label:c.lang.common.url,style:\"width: 100%\",\"default\":\"\",setup:function(a,b){if(2==a){var c=b.data(\"cke-saved-href\");c||(c=b.getAttribute(\"href\"));this.setValue(c)}},commit:function(a,b){if(2==a&&(this.getValue()||this.isChanged())){var d=this.getValue();b.data(\"cke-saved-href\",d);b.setAttribute(\"href\",d);if(this.getValue()||!c.config.image_removeLinkByEmptyURL)this.getDialog().addLink=\n!0}}},{type:\"button\",id:\"browse\",filebrowser:{action:\"Browse\",target:\"Link:txtUrl\",url:c.config.filebrowserImageBrowseLinkUrl},style:\"float:right\",hidden:!0,label:c.lang.common.browseServer},{id:\"cmbTarget\",type:\"select\",requiredContent:\"a[target]\",label:c.lang.common.target,\"default\":\"\",items:[[c.lang.common.notSet,\"\"],[c.lang.common.targetNew,\"_blank\"],[c.lang.common.targetTop,\"_top\"],[c.lang.common.targetSelf,\"_self\"],[c.lang.common.targetParent,\"_parent\"]],setup:function(a,b){2==a&&this.setValue(b.getAttribute(\"target\")||\n\"\")},commit:function(a,b){2==a&&(this.getValue()||this.isChanged())&&b.setAttribute(\"target\",this.getValue())}}]},{id:\"Upload\",hidden:!0,filebrowser:\"uploadButton\",label:c.lang.image.upload,elements:[{type:\"file\",id:\"upload\",label:c.lang.image.btnUpload,style:\"height:40px\",size:38},{type:\"fileButton\",id:\"uploadButton\",filebrowser:\"info:txtUrl\",label:c.lang.image.btnUpload,\"for\":[\"Upload\",\"upload\"]}]},{id:\"advanced\",label:c.lang.common.advancedTab,elements:[{type:\"hbox\",widths:[\"50%\",\"25%\",\"25%\"],\nchildren:[{type:\"text\",id:\"linkId\",requiredContent:\"img[id]\",label:c.lang.common.id,setup:function(a,b){a==f&&this.setValue(b.getAttribute(\"id\"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute(\"id\",this.getValue())}},{id:\"cmbLangDir\",type:\"select\",requiredContent:\"img[dir]\",style:\"width : 100px;\",label:c.lang.common.langDir,\"default\":\"\",items:[[c.lang.common.notSet,\"\"],[c.lang.common.langDirLtr,\"ltr\"],[c.lang.common.langDirRtl,\"rtl\"]],setup:function(a,b){a==f&&this.setValue(b.getAttribute(\"dir\"))},\ncommit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute(\"dir\",this.getValue())}},{type:\"text\",id:\"txtLangCode\",requiredContent:\"img[lang]\",label:c.lang.common.langCode,\"default\":\"\",setup:function(a,b){a==f&&this.setValue(b.getAttribute(\"lang\"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute(\"lang\",this.getValue())}}]},{type:\"text\",id:\"txtGenLongDescr\",requiredContent:\"img[longdesc]\",label:c.lang.common.longDescr,setup:function(a,b){a==f&&this.setValue(b.getAttribute(\"longDesc\"))},\ncommit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute(\"longDesc\",this.getValue())}},{type:\"hbox\",widths:[\"50%\",\"50%\"],children:[{type:\"text\",id:\"txtGenClass\",requiredContent:\"img(cke-xyz)\",label:c.lang.common.cssClass,\"default\":\"\",setup:function(a,b){a==f&&this.setValue(b.getAttribute(\"class\"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute(\"class\",this.getValue())}},{type:\"text\",id:\"txtGenTitle\",requiredContent:\"img[title]\",label:c.lang.common.advisoryTitle,\n\"default\":\"\",onChange:function(){g(this.getDialog())},setup:function(a,b){a==f&&this.setValue(b.getAttribute(\"title\"))},commit:function(a,b){a==f?(this.getValue()||this.isChanged())&&b.setAttribute(\"title\",this.getValue()):4==a?b.setAttribute(\"title\",this.getValue()):8==a&&b.removeAttribute(\"title\")}}]},{type:\"text\",id:\"txtdlgGenStyle\",requiredContent:\"img{cke-xyz}\",label:c.lang.common.cssStyle,validate:CKEDITOR.dialog.validate.inlineStyle(c.lang.common.invalidInlineStyle),\"default\":\"\",setup:function(a,\nb){if(a==f){var c=b.getAttribute(\"style\");!c&&b.$.style.cssText&&(c=b.$.style.cssText);this.setValue(c);var e=b.$.style.height,c=b.$.style.width,e=(e?e:\"\").match(k),c=(c?c:\"\").match(k);this.attributesInStyle={height:!!e,width:!!c}}},onChange:function(){i.call(this,\"info:cmbFloat info:cmbAlign info:txtVSpace info:txtHSpace info:txtBorder info:txtWidth info:txtHeight\".split(\" \"));g(this)},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute(\"style\",this.getValue())}}]}]}};\nCKEDITOR.dialog.add(\"image\",function(c){return r(c,\"image\")});CKEDITOR.dialog.add(\"imagebutton\",function(c){return r(c,\"imagebutton\")})})();"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/index.php",
    "content": ""
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/link/dialogs/anchor.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.dialog.add(\"anchor\",function(c){function d(a,b){return a.createFakeElement(a.document.createElement(\"a\",{attributes:b}),\"cke_anchor\",\"anchor\")}return{title:c.lang.link.anchor.title,minWidth:300,minHeight:60,onOk:function(){var a=CKEDITOR.tools.trim(this.getValueOf(\"info\",\"txtName\")),a={id:a,name:a,\"data-cke-saved-name\":a};if(this._.selectedElement)this._.selectedElement.data(\"cke-realelement\")?(a=d(c,a),a.replace(this._.selectedElement),CKEDITOR.env.ie&&c.getSelection().selectElement(a)):\nthis._.selectedElement.setAttributes(a);else{var b=c.getSelection(),b=b&&b.getRanges()[0];b.collapsed?(a=d(c,a),b.insertNode(a)):(CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(a[\"class\"]=\"cke_anchor\"),a=new CKEDITOR.style({element:\"a\",attributes:a}),a.type=CKEDITOR.STYLE_INLINE,c.applyStyle(a))}},onHide:function(){delete this._.selectedElement},onShow:function(){var a=c.getSelection(),b=a.getSelectedElement(),d=b&&b.data(\"cke-realelement\"),e=d?CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,b):CKEDITOR.plugins.link.getSelectedLink(c);\ne&&(this._.selectedElement=e,this.setValueOf(\"info\",\"txtName\",e.data(\"cke-saved-name\")||\"\"),!d&&a.selectElement(e),b&&(this._.selectedElement=b));this.getContentElement(\"info\",\"txtName\").focus()},contents:[{id:\"info\",label:c.lang.link.anchor.title,accessKey:\"I\",elements:[{type:\"text\",id:\"txtName\",label:c.lang.link.anchor.name,required:!0,validate:function(){return!this.getValue()?(alert(c.lang.link.anchor.errorName),!1):!0}}]}]}});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/link/dialogs/link.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\n(function(){CKEDITOR.dialog.add(\"link\",function(g){var l=CKEDITOR.plugins.link,m=function(){var a=this.getDialog(),b=a.getContentElement(\"target\",\"popupFeatures\"),a=a.getContentElement(\"target\",\"linkTargetName\"),k=this.getValue();if(b&&a)switch(b=b.getElement(),b.hide(),a.setValue(\"\"),k){case \"frame\":a.setLabel(g.lang.link.targetFrameName);a.getElement().show();break;case \"popup\":b.show();a.setLabel(g.lang.link.targetPopupName);a.getElement().show();break;default:a.setValue(k),a.getElement().hide()}},\nf=function(a){a.target&&this.setValue(a.target[this.id]||\"\")},h=function(a){a.advanced&&this.setValue(a.advanced[this.id]||\"\")},i=function(a){a.target||(a.target={});a.target[this.id]=this.getValue()||\"\"},j=function(a){a.advanced||(a.advanced={});a.advanced[this.id]=this.getValue()||\"\"},c=g.lang.common,b=g.lang.link,d;return{title:b.title,minWidth:350,minHeight:230,contents:[{id:\"info\",label:b.info,title:b.info,elements:[{id:\"linkType\",type:\"select\",label:b.type,\"default\":\"url\",items:[[b.toUrl,\"url\"],\n[b.toAnchor,\"anchor\"],[b.toEmail,\"email\"]],onChange:function(){var a=this.getDialog(),b=[\"urlOptions\",\"anchorOptions\",\"emailOptions\"],k=this.getValue(),e=a.definition.getContents(\"upload\"),e=e&&e.hidden;\"url\"==k?(g.config.linkShowTargetTab&&a.showPage(\"target\"),e||a.showPage(\"upload\")):(a.hidePage(\"target\"),e||a.hidePage(\"upload\"));for(e=0;e<b.length;e++){var c=a.getContentElement(\"info\",b[e]);c&&(c=c.getElement().getParent().getParent(),b[e]==k+\"Options\"?c.show():c.hide())}a.layout()},setup:function(a){this.setValue(a.type||\n\"url\")},commit:function(a){a.type=this.getValue()}},{type:\"vbox\",id:\"urlOptions\",children:[{type:\"hbox\",widths:[\"25%\",\"75%\"],children:[{id:\"protocol\",type:\"select\",label:c.protocol,\"default\":\"http://\",items:[[\"http://‎\",\"http://\"],[\"https://‎\",\"https://\"],[\"ftp://‎\",\"ftp://\"],[\"news://‎\",\"news://\"],[b.other,\"\"]],setup:function(a){a.url&&this.setValue(a.url.protocol||\"\")},commit:function(a){a.url||(a.url={});a.url.protocol=this.getValue()}},{type:\"text\",id:\"url\",label:c.url,required:!0,onLoad:function(){this.allowOnChange=\n!0},onKeyUp:function(){this.allowOnChange=!1;var a=this.getDialog().getContentElement(\"info\",\"protocol\"),b=this.getValue(),k=/^((javascript:)|[#\\/\\.\\?])/i,c=/^(http|https|ftp|news):\\/\\/(?=.)/i.exec(b);c?(this.setValue(b.substr(c[0].length)),a.setValue(c[0].toLowerCase())):k.test(b)&&a.setValue(\"\");this.allowOnChange=!0},onChange:function(){if(this.allowOnChange)this.onKeyUp()},validate:function(){var a=this.getDialog();return a.getContentElement(\"info\",\"linkType\")&&\"url\"!=a.getValueOf(\"info\",\"linkType\")?\n!0:!g.config.linkJavaScriptLinksAllowed&&/javascript\\:/.test(this.getValue())?(alert(c.invalidValue),!1):this.getDialog().fakeObj?!0:CKEDITOR.dialog.validate.notEmpty(b.noUrl).apply(this)},setup:function(a){this.allowOnChange=!1;a.url&&this.setValue(a.url.url);this.allowOnChange=!0},commit:function(a){this.onChange();a.url||(a.url={});a.url.url=this.getValue();this.allowOnChange=!1}}],setup:function(){this.getDialog().getContentElement(\"info\",\"linkType\")||this.getElement().show()}},{type:\"button\",\nid:\"browse\",hidden:\"true\",filebrowser:\"info:url\",label:c.browseServer}]},{type:\"vbox\",id:\"anchorOptions\",width:260,align:\"center\",padding:0,children:[{type:\"fieldset\",id:\"selectAnchorText\",label:b.selectAnchor,setup:function(){d=l.getEditorAnchors(g);this.getElement()[d&&d.length?\"show\":\"hide\"]()},children:[{type:\"hbox\",id:\"selectAnchor\",children:[{type:\"select\",id:\"anchorName\",\"default\":\"\",label:b.anchorName,style:\"width: 100%;\",items:[[\"\"]],setup:function(a){this.clear();this.add(\"\");if(d)for(var b=\n0;b<d.length;b++)d[b].name&&this.add(d[b].name);a.anchor&&this.setValue(a.anchor.name);(a=this.getDialog().getContentElement(\"info\",\"linkType\"))&&\"email\"==a.getValue()&&this.focus()},commit:function(a){a.anchor||(a.anchor={});a.anchor.name=this.getValue()}},{type:\"select\",id:\"anchorId\",\"default\":\"\",label:b.anchorId,style:\"width: 100%;\",items:[[\"\"]],setup:function(a){this.clear();this.add(\"\");if(d)for(var b=0;b<d.length;b++)d[b].id&&this.add(d[b].id);a.anchor&&this.setValue(a.anchor.id)},commit:function(a){a.anchor||\n(a.anchor={});a.anchor.id=this.getValue()}}],setup:function(){this.getElement()[d&&d.length?\"show\":\"hide\"]()}}]},{type:\"html\",id:\"noAnchors\",style:\"text-align: center;\",html:'<div role=\"note\" tabIndex=\"-1\">'+CKEDITOR.tools.htmlEncode(b.noAnchors)+\"</div>\",focus:!0,setup:function(){this.getElement()[d&&d.length?\"hide\":\"show\"]()}}],setup:function(){this.getDialog().getContentElement(\"info\",\"linkType\")||this.getElement().hide()}},{type:\"vbox\",id:\"emailOptions\",padding:1,children:[{type:\"text\",id:\"emailAddress\",\nlabel:b.emailAddress,required:!0,validate:function(){var a=this.getDialog();return!a.getContentElement(\"info\",\"linkType\")||\"email\"!=a.getValueOf(\"info\",\"linkType\")?!0:CKEDITOR.dialog.validate.notEmpty(b.noEmail).apply(this)},setup:function(a){a.email&&this.setValue(a.email.address);(a=this.getDialog().getContentElement(\"info\",\"linkType\"))&&\"email\"==a.getValue()&&this.select()},commit:function(a){a.email||(a.email={});a.email.address=this.getValue()}},{type:\"text\",id:\"emailSubject\",label:b.emailSubject,\nsetup:function(a){a.email&&this.setValue(a.email.subject)},commit:function(a){a.email||(a.email={});a.email.subject=this.getValue()}},{type:\"textarea\",id:\"emailBody\",label:b.emailBody,rows:3,\"default\":\"\",setup:function(a){a.email&&this.setValue(a.email.body)},commit:function(a){a.email||(a.email={});a.email.body=this.getValue()}}],setup:function(){this.getDialog().getContentElement(\"info\",\"linkType\")||this.getElement().hide()}}]},{id:\"target\",requiredContent:\"a[target]\",label:b.target,title:b.target,\nelements:[{type:\"hbox\",widths:[\"50%\",\"50%\"],children:[{type:\"select\",id:\"linkTargetType\",label:c.target,\"default\":\"notSet\",style:\"width : 100%;\",items:[[c.notSet,\"notSet\"],[b.targetFrame,\"frame\"],[b.targetPopup,\"popup\"],[c.targetNew,\"_blank\"],[c.targetTop,\"_top\"],[c.targetSelf,\"_self\"],[c.targetParent,\"_parent\"]],onChange:m,setup:function(a){a.target&&this.setValue(a.target.type||\"notSet\");m.call(this)},commit:function(a){a.target||(a.target={});a.target.type=this.getValue()}},{type:\"text\",id:\"linkTargetName\",\nlabel:b.targetFrameName,\"default\":\"\",setup:function(a){a.target&&this.setValue(a.target.name)},commit:function(a){a.target||(a.target={});a.target.name=this.getValue().replace(/\\W/gi,\"\")}}]},{type:\"vbox\",width:\"100%\",align:\"center\",padding:2,id:\"popupFeatures\",children:[{type:\"fieldset\",label:b.popupFeatures,children:[{type:\"hbox\",children:[{type:\"checkbox\",id:\"resizable\",label:b.popupResizable,setup:f,commit:i},{type:\"checkbox\",id:\"status\",label:b.popupStatusBar,setup:f,commit:i}]},{type:\"hbox\",\nchildren:[{type:\"checkbox\",id:\"location\",label:b.popupLocationBar,setup:f,commit:i},{type:\"checkbox\",id:\"toolbar\",label:b.popupToolbar,setup:f,commit:i}]},{type:\"hbox\",children:[{type:\"checkbox\",id:\"menubar\",label:b.popupMenuBar,setup:f,commit:i},{type:\"checkbox\",id:\"fullscreen\",label:b.popupFullScreen,setup:f,commit:i}]},{type:\"hbox\",children:[{type:\"checkbox\",id:\"scrollbars\",label:b.popupScrollBars,setup:f,commit:i},{type:\"checkbox\",id:\"dependent\",label:b.popupDependent,setup:f,commit:i}]},{type:\"hbox\",\nchildren:[{type:\"text\",widths:[\"50%\",\"50%\"],labelLayout:\"horizontal\",label:c.width,id:\"width\",setup:f,commit:i},{type:\"text\",labelLayout:\"horizontal\",widths:[\"50%\",\"50%\"],label:b.popupLeft,id:\"left\",setup:f,commit:i}]},{type:\"hbox\",children:[{type:\"text\",labelLayout:\"horizontal\",widths:[\"50%\",\"50%\"],label:c.height,id:\"height\",setup:f,commit:i},{type:\"text\",labelLayout:\"horizontal\",label:b.popupTop,widths:[\"50%\",\"50%\"],id:\"top\",setup:f,commit:i}]}]}]}]},{id:\"upload\",label:b.upload,title:b.upload,hidden:!0,\nfilebrowser:\"uploadButton\",elements:[{type:\"file\",id:\"upload\",label:c.upload,style:\"height:40px\",size:29},{type:\"fileButton\",id:\"uploadButton\",label:c.uploadSubmit,filebrowser:\"info:url\",\"for\":[\"upload\",\"upload\"]}]},{id:\"advanced\",label:b.advanced,title:b.advanced,elements:[{type:\"vbox\",padding:1,children:[{type:\"hbox\",widths:[\"45%\",\"35%\",\"20%\"],children:[{type:\"text\",id:\"advId\",requiredContent:\"a[id]\",label:b.id,setup:h,commit:j},{type:\"select\",id:\"advLangDir\",requiredContent:\"a[dir]\",label:b.langDir,\n\"default\":\"\",style:\"width:110px\",items:[[c.notSet,\"\"],[b.langDirLTR,\"ltr\"],[b.langDirRTL,\"rtl\"]],setup:h,commit:j},{type:\"text\",id:\"advAccessKey\",requiredContent:\"a[accesskey]\",width:\"80px\",label:b.acccessKey,maxLength:1,setup:h,commit:j}]},{type:\"hbox\",widths:[\"45%\",\"35%\",\"20%\"],children:[{type:\"text\",label:b.name,id:\"advName\",requiredContent:\"a[name]\",setup:h,commit:j},{type:\"text\",label:b.langCode,id:\"advLangCode\",requiredContent:\"a[lang]\",width:\"110px\",\"default\":\"\",setup:h,commit:j},{type:\"text\",\nlabel:b.tabIndex,id:\"advTabIndex\",requiredContent:\"a[tabindex]\",width:\"80px\",maxLength:5,setup:h,commit:j}]}]},{type:\"vbox\",padding:1,children:[{type:\"hbox\",widths:[\"45%\",\"55%\"],children:[{type:\"text\",label:b.advisoryTitle,requiredContent:\"a[title]\",\"default\":\"\",id:\"advTitle\",setup:h,commit:j},{type:\"text\",label:b.advisoryContentType,requiredContent:\"a[type]\",\"default\":\"\",id:\"advContentType\",setup:h,commit:j}]},{type:\"hbox\",widths:[\"45%\",\"55%\"],children:[{type:\"text\",label:b.cssClasses,requiredContent:\"a(cke-xyz)\",\n\"default\":\"\",id:\"advCSSClasses\",setup:h,commit:j},{type:\"text\",label:b.charset,requiredContent:\"a[charset]\",\"default\":\"\",id:\"advCharset\",setup:h,commit:j}]},{type:\"hbox\",widths:[\"45%\",\"55%\"],children:[{type:\"text\",label:b.rel,requiredContent:\"a[rel]\",\"default\":\"\",id:\"advRel\",setup:h,commit:j},{type:\"text\",label:b.styles,requiredContent:\"a{cke-xyz}\",\"default\":\"\",id:\"advStyles\",validate:CKEDITOR.dialog.validate.inlineStyle(g.lang.common.invalidInlineStyle),setup:h,commit:j}]}]}]}],onShow:function(){var a=\nthis.getParentEditor(),b=a.getSelection(),c=null;(c=l.getSelectedLink(a))&&c.hasAttribute(\"href\")?b.getSelectedElement()||b.selectElement(c):c=null;a=l.parseLinkAttributes(a,c);this._.selectedElement=c;this.setupContent(a)},onOk:function(){var a={};this.commitContent(a);var b=g.getSelection(),c=l.getLinkAttributes(g,a);if(this._.selectedElement){var e=this._.selectedElement,d=e.data(\"cke-saved-href\"),f=e.getHtml();e.setAttributes(c.set);e.removeAttributes(c.removed);if(d==f||\"email\"==a.type&&-1!=\nf.indexOf(\"@\"))e.setHtml(\"email\"==a.type?a.email.address:c.set[\"data-cke-saved-href\"]),b.selectElement(e);delete this._.selectedElement}else b=b.getRanges()[0],b.collapsed&&(a=new CKEDITOR.dom.text(\"email\"==a.type?a.email.address:c.set[\"data-cke-saved-href\"],g.document),b.insertNode(a),b.selectNodeContents(a)),c=new CKEDITOR.style({element:\"a\",attributes:c.set}),c.type=CKEDITOR.STYLE_INLINE,c.applyToRange(b,g),b.select()},onLoad:function(){g.config.linkShowAdvancedTab||this.hidePage(\"advanced\");g.config.linkShowTargetTab||\nthis.hidePage(\"target\")},onFocus:function(){var a=this.getContentElement(\"info\",\"linkType\");a&&\"url\"==a.getValue()&&(a=this.getContentElement(\"info\",\"url\"),a.select())}}})})();"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/liststyle/dialogs/liststyle.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\n(function(){function d(c,d){var b;try{b=c.getSelection().getRanges()[0]}catch(f){return null}b.shrink(CKEDITOR.SHRINK_TEXT);return c.elementPath(b.getCommonAncestor()).contains(d,1)}function e(c,e){var b=c.lang.liststyle;if(\"bulletedListStyle\"==e)return{title:b.bulletedTitle,minWidth:300,minHeight:50,contents:[{id:\"info\",accessKey:\"I\",elements:[{type:\"select\",label:b.type,id:\"type\",align:\"center\",style:\"width:150px\",items:[[b.notset,\"\"],[b.circle,\"circle\"],[b.disc,\"disc\"],[b.square,\"square\"]],setup:function(a){this.setValue(a.getStyle(\"list-style-type\")||\nh[a.getAttribute(\"type\")]||a.getAttribute(\"type\")||\"\")},commit:function(a){var b=this.getValue();b?a.setStyle(\"list-style-type\",b):a.removeStyle(\"list-style-type\")}}]}],onShow:function(){var a=this.getParentEditor();(a=d(a,\"ul\"))&&this.setupContent(a)},onOk:function(){var a=this.getParentEditor();(a=d(a,\"ul\"))&&this.commitContent(a)}};if(\"numberedListStyle\"==e){var g=[[b.notset,\"\"],[b.lowerRoman,\"lower-roman\"],[b.upperRoman,\"upper-roman\"],[b.lowerAlpha,\"lower-alpha\"],[b.upperAlpha,\"upper-alpha\"],\n[b.decimal,\"decimal\"]];(!CKEDITOR.env.ie||7<CKEDITOR.env.version)&&g.concat([[b.armenian,\"armenian\"],[b.decimalLeadingZero,\"decimal-leading-zero\"],[b.georgian,\"georgian\"],[b.lowerGreek,\"lower-greek\"]]);return{title:b.numberedTitle,minWidth:300,minHeight:50,contents:[{id:\"info\",accessKey:\"I\",elements:[{type:\"hbox\",widths:[\"25%\",\"75%\"],children:[{label:b.start,type:\"text\",id:\"start\",validate:CKEDITOR.dialog.validate.integer(b.validateStartNumber),setup:function(a){this.setValue(a.getFirst(f).getAttribute(\"value\")||\na.getAttribute(\"start\")||1)},commit:function(a){var b=a.getFirst(f),c=b.getAttribute(\"value\")||a.getAttribute(\"start\")||1;a.getFirst(f).removeAttribute(\"value\");var d=parseInt(this.getValue(),10);isNaN(d)?a.removeAttribute(\"start\"):a.setAttribute(\"start\",d);a=b;b=c;for(d=isNaN(d)?1:d;(a=a.getNext(f))&&b++;)a.getAttribute(\"value\")==b&&a.setAttribute(\"value\",d+b-c)}},{type:\"select\",label:b.type,id:\"type\",style:\"width: 100%;\",items:g,setup:function(a){this.setValue(a.getStyle(\"list-style-type\")||h[a.getAttribute(\"type\")]||\na.getAttribute(\"type\")||\"\")},commit:function(a){var b=this.getValue();b?a.setStyle(\"list-style-type\",b):a.removeStyle(\"list-style-type\")}}]}]}],onShow:function(){var a=this.getParentEditor();(a=d(a,\"ol\"))&&this.setupContent(a)},onOk:function(){var a=this.getParentEditor();(a=d(a,\"ol\"))&&this.commitContent(a)}}}}var f=function(c){return c.type==CKEDITOR.NODE_ELEMENT&&c.is(\"li\")},h={a:\"lower-alpha\",A:\"upper-alpha\",i:\"lower-roman\",I:\"upper-roman\",1:\"decimal\",disc:\"disc\",circle:\"circle\",square:\"square\"};\nCKEDITOR.dialog.add(\"numberedListStyle\",function(c){return e(c,\"numberedListStyle\")});CKEDITOR.dialog.add(\"bulletedListStyle\",function(c){return e(c,\"bulletedListStyle\")})})();"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/pastefromword/filter/default.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\n(function(){function y(a){for(var a=a.toUpperCase(),c=z.length,b=0,f=0;f<c;++f)for(var d=z[f],e=d[1].length;a.substr(0,e)==d[1];a=a.substr(e))b+=d[0];return b}function A(a){for(var a=a.toUpperCase(),c=B.length,b=1,f=1;0<a.length;f*=c)b+=B.indexOf(a.charAt(a.length-1))*f,a=a.substr(0,a.length-1);return b}var C=CKEDITOR.htmlParser.fragment.prototype,o=CKEDITOR.htmlParser.element.prototype;C.onlyChild=o.onlyChild=function(){var a=this.children;return 1==a.length&&a[0]||null};o.removeAnyChildWithName=\nfunction(a){for(var c=this.children,b=[],f,d=0;d<c.length;d++)f=c[d],f.name&&(f.name==a&&(b.push(f),c.splice(d--,1)),b=b.concat(f.removeAnyChildWithName(a)));return b};o.getAncestor=function(a){for(var c=this.parent;c&&(!c.name||!c.name.match(a));)c=c.parent;return c};C.firstChild=o.firstChild=function(a){for(var c,b=0;b<this.children.length;b++)if(c=this.children[b],a(c)||c.name&&(c=c.firstChild(a)))return c;return null};o.addStyle=function(a,c,b){var f=\"\";if(\"string\"==typeof c)f+=a+\":\"+c+\";\";else{if(\"object\"==\ntypeof a)for(var d in a)a.hasOwnProperty(d)&&(f+=d+\":\"+a[d]+\";\");else f+=a;b=c}this.attributes||(this.attributes={});a=this.attributes.style||\"\";a=(b?[f,a]:[a,f]).join(\";\");this.attributes.style=a.replace(/^;|;(?=;)/,\"\")};o.getStyle=function(a){var c=this.attributes.style;if(c)return c=CKEDITOR.tools.parseCssText(c,1),c[a]};CKEDITOR.dtd.parentOf=function(a){var c={},b;for(b in this)-1==b.indexOf(\"$\")&&this[b][a]&&(c[b]=1);return c};var H=/^([.\\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz){1}?/i,\nD=/^(?:\\b0[^\\s]*\\s*){1,4}$/,x={ol:{decimal:/\\d+/,\"lower-roman\":/^m{0,4}(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})$/,\"upper-roman\":/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,\"lower-alpha\":/^[a-z]+$/,\"upper-alpha\":/^[A-Z]+$/},ul:{disc:/[l\\u00B7\\u2002]/,circle:/[\\u006F\\u00D8]/,square:/[\\u006E\\u25C6]/}},z=[[1E3,\"M\"],[900,\"CM\"],[500,\"D\"],[400,\"CD\"],[100,\"C\"],[90,\"XC\"],[50,\"L\"],[40,\"XL\"],[10,\"X\"],[9,\"IX\"],[5,\"V\"],[4,\"IV\"],[1,\"I\"]],B=\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\",s=0,t=null,w,E=CKEDITOR.plugins.pastefromword=\n{utils:{createListBulletMarker:function(a,c){var b=new CKEDITOR.htmlParser.element(\"cke:listbullet\");b.attributes={\"cke:listsymbol\":a[0]};b.add(new CKEDITOR.htmlParser.text(c));return b},isListBulletIndicator:function(a){if(/mso-list\\s*:\\s*Ignore/i.test(a.attributes&&a.attributes.style))return!0},isContainingOnlySpaces:function(a){var c;return(c=a.onlyChild())&&/^(:?\\s|&nbsp;)+$/.test(c.value)},resolveList:function(a){var c=a.attributes,b;if((b=a.removeAnyChildWithName(\"cke:listbullet\"))&&b.length&&\n(b=b[0]))return a.name=\"cke:li\",c.style&&(c.style=E.filters.stylesFilter([[\"text-indent\"],[\"line-height\"],[/^margin(:?-left)?$/,null,function(a){a=a.split(\" \");a=CKEDITOR.tools.convertToPx(a[3]||a[1]||a[0]);!s&&(null!==t&&a>t)&&(s=a-t);t=a;c[\"cke:indent\"]=s&&Math.ceil(a/s)+1||1}],[/^mso-list$/,null,function(a){var a=a.split(\" \"),b=Number(a[0].match(/\\d+/)),a=Number(a[1].match(/\\d+/));1==a&&(b!==w&&(c[\"cke:reset\"]=1),w=b);c[\"cke:indent\"]=a}]])(c.style,a)||\"\"),c[\"cke:indent\"]||(t=0,c[\"cke:indent\"]=\n1),CKEDITOR.tools.extend(c,b.attributes),!0;w=t=s=null;return!1},getStyleComponents:function(){var a=CKEDITOR.dom.element.createFromHtml('<div style=\"position:absolute;left:-9999px;top:-9999px;\"></div>',CKEDITOR.document);CKEDITOR.document.getBody().append(a);return function(c,b,f){a.setStyle(c,b);for(var c={},b=f.length,d=0;d<b;d++)c[f[d]]=a.getStyle(f[d]);return c}}(),listDtdParents:CKEDITOR.dtd.parentOf(\"ol\")},filters:{flattenList:function(a,c){var c=\"number\"==typeof c?c:1,b=a.attributes,f;switch(b.type){case \"a\":f=\n\"lower-alpha\";break;case \"1\":f=\"decimal\"}for(var d=a.children,e,h=0;h<d.length;h++)if(e=d[h],e.name in CKEDITOR.dtd.$listItem){var j=e.attributes,g=e.children,m=g[g.length-1];m.name in CKEDITOR.dtd.$list&&(a.add(m,h+1),--g.length||d.splice(h--,1));e.name=\"cke:li\";b.start&&!h&&(j.value=b.start);E.filters.stylesFilter([[\"tab-stops\",null,function(a){(a=a.split(\" \")[1].match(H))&&(t=CKEDITOR.tools.convertToPx(a[0]))}],1==c?[\"mso-list\",null,function(a){a=a.split(\" \");a=Number(a[0].match(/\\d+/));a!==w&&\n(j[\"cke:reset\"]=1);w=a}]:null])(j.style);j[\"cke:indent\"]=c;j[\"cke:listtype\"]=a.name;j[\"cke:list-style-type\"]=f}else if(e.name in CKEDITOR.dtd.$list){arguments.callee.apply(this,[e,c+1]);d=d.slice(0,h).concat(e.children).concat(d.slice(h+1));a.children=[];e=0;for(g=d.length;e<g;e++)a.add(d[e]);d=a.children}delete a.name;b[\"cke:list\"]=1},assembleList:function(a){for(var c=a.children,b,f,d,e,h,j,a=[],g,m,i,l,k,p,n=0;n<c.length;n++)if(b=c[n],\"cke:li\"==b.name)if(b.name=\"li\",f=b.attributes,i=(i=f[\"cke:listsymbol\"])&&\ni.match(/^(?:[(]?)([^\\s]+?)([.)]?)$/),l=k=p=null,f[\"cke:ignored\"])c.splice(n--,1);else{f[\"cke:reset\"]&&(j=e=h=null);d=Number(f[\"cke:indent\"]);d!=e&&(m=g=null);if(i){if(m&&x[m][g].test(i[1]))l=m,k=g;else for(var q in x)for(var u in x[q])if(x[q][u].test(i[1]))if(\"ol\"==q&&/alpha|roman/.test(u)){if(g=/roman/.test(u)?y(i[1]):A(i[1]),!p||g<p)p=g,l=q,k=u}else{l=q;k=u;break}!l&&(l=i[2]?\"ol\":\"ul\")}else l=f[\"cke:listtype\"]||\"ol\",k=f[\"cke:list-style-type\"];m=l;g=k||(\"ol\"==l?\"decimal\":\"disc\");k&&k!=(\"ol\"==l?\n\"decimal\":\"disc\")&&b.addStyle(\"list-style-type\",k);if(\"ol\"==l&&i){switch(k){case \"decimal\":p=Number(i[1]);break;case \"lower-roman\":case \"upper-roman\":p=y(i[1]);break;case \"lower-alpha\":case \"upper-alpha\":p=A(i[1])}b.attributes.value=p}if(j){if(d>e)a.push(j=new CKEDITOR.htmlParser.element(l)),j.add(b),h.add(j);else{if(d<e){e-=d;for(var r;e--&&(r=j.parent);)j=r.parent}j.add(b)}c.splice(n--,1)}else a.push(j=new CKEDITOR.htmlParser.element(l)),j.add(b),c[n]=j;h=b;e=d}else j&&(j=e=h=null);for(n=0;n<a.length;n++)if(j=\na[n],q=j.children,g=g=void 0,u=j.children.length,r=g=void 0,c=/list-style-type:(.*?)(?:;|$)/,e=CKEDITOR.plugins.pastefromword.filters.stylesFilter,g=j.attributes,!c.exec(g.style)){for(h=0;h<u;h++)if(g=q[h],g.attributes.value&&Number(g.attributes.value)==h+1&&delete g.attributes.value,g=c.exec(g.attributes.style))if(g[1]==r||!r)r=g[1];else{r=null;break}if(r){for(h=0;h<u;h++)g=q[h].attributes,g.style&&(g.style=e([[\"list-style-type\"]])(g.style)||\"\");j.addStyle(\"list-style-type\",r)}}w=t=s=null},falsyFilter:function(){return!1},\nstylesFilter:function(a,c){return function(b,f){var d=[];(b||\"\").replace(/&quot;/g,'\"').replace(/\\s*([^ :;]+)\\s*:\\s*([^;]+)\\s*(?=;|$)/g,function(b,e,g){e=e.toLowerCase();\"font-family\"==e&&(g=g.replace(/[\"']/g,\"\"));for(var m,i,l,k=0;k<a.length;k++)if(a[k]&&(b=a[k][0],m=a[k][1],i=a[k][2],l=a[k][3],e.match(b)&&(!m||g.match(m)))){e=l||e;c&&(i=i||g);\"function\"==typeof i&&(i=i(g,f,e));i&&i.push&&(e=i[0],i=i[1]);\"string\"==typeof i&&d.push([e,i]);return}!c&&d.push([e,g])});for(var e=0;e<d.length;e++)d[e]=\nd[e].join(\":\");return d.length?d.join(\";\")+\";\":!1}},elementMigrateFilter:function(a,c){return a?function(b){var f=c?(new CKEDITOR.style(a,c))._.definition:a;b.name=f.element;CKEDITOR.tools.extend(b.attributes,CKEDITOR.tools.clone(f.attributes));b.addStyle(CKEDITOR.style.getStyleText(f))}:function(){}},styleMigrateFilter:function(a,c){var b=this.elementMigrateFilter;return a?function(f,d){var e=new CKEDITOR.htmlParser.element(null),h={};h[c]=f;b(a,h)(e);e.children=d.children;d.children=[e];e.filter=\nfunction(){};e.parent=d}:function(){}},bogusAttrFilter:function(a,c){if(-1==c.name.indexOf(\"cke:\"))return!1},applyStyleFilter:null},getRules:function(a,c){var b=CKEDITOR.dtd,f=CKEDITOR.tools.extend({},b.$block,b.$listItem,b.$tableContent),d=a.config,e=this.filters,h=e.falsyFilter,j=e.stylesFilter,g=e.elementMigrateFilter,m=CKEDITOR.tools.bind(this.filters.styleMigrateFilter,this.filters),i=this.utils.createListBulletMarker,l=e.flattenList,k=e.assembleList,p=this.utils.isListBulletIndicator,n=this.utils.isContainingOnlySpaces,\nq=this.utils.resolveList,u=function(a){a=CKEDITOR.tools.convertToPx(a);return isNaN(a)?a:a+\"px\"},r=this.utils.getStyleComponents,t=this.utils.listDtdParents,o=!1!==d.pasteFromWordRemoveFontStyles,s=!1!==d.pasteFromWordRemoveStyles;return{elementNames:[[/meta|link|script/,\"\"]],root:function(a){a.filterChildren(c);k(a)},elements:{\"^\":function(a){var c;CKEDITOR.env.gecko&&(c=e.applyStyleFilter)&&c(a)},$:function(a){var v=a.name||\"\",e=a.attributes;v in f&&e.style&&(e.style=j([[/^(:?width|height)$/,null,\nu]])(e.style)||\"\");if(v.match(/h\\d/)){a.filterChildren(c);if(q(a))return;g(d[\"format_\"+v])(a)}else if(v in b.$inline)a.filterChildren(c),n(a)&&delete a.name;else if(-1!=v.indexOf(\":\")&&-1==v.indexOf(\"cke\")){a.filterChildren(c);if(\"v:imagedata\"==v){if(v=a.attributes[\"o:href\"])a.attributes.src=v;a.name=\"img\";return}delete a.name}v in t&&(a.filterChildren(c),k(a))},style:function(a){if(CKEDITOR.env.gecko){var a=(a=a.onlyChild().value.match(/\\/\\* Style Definitions \\*\\/([\\s\\S]*?)\\/\\*/))&&a[1],c={};a&&\n(a.replace(/[\\n\\r]/g,\"\").replace(/(.+?)\\{(.+?)\\}/g,function(a,b,F){for(var b=b.split(\",\"),a=b.length,d=0;d<a;d++)CKEDITOR.tools.trim(b[d]).replace(/^(\\w+)(\\.[\\w-]+)?$/g,function(a,b,d){b=b||\"*\";d=d.substring(1,d.length);d.match(/MsoNormal/)||(c[b]||(c[b]={}),d?c[b][d]=F:c[b]=F)})}),e.applyStyleFilter=function(a){var b=c[\"*\"]?\"*\":a.name,d=a.attributes&&a.attributes[\"class\"];b in c&&(b=c[b],\"object\"==typeof b&&(b=b[d]),b&&a.addStyle(b,!0))})}return!1},p:function(a){if(/MsoListParagraph/i.exec(a.attributes[\"class\"])||\na.getStyle(\"mso-list\")){var b=a.firstChild(function(a){return a.type==CKEDITOR.NODE_TEXT&&!n(a.parent)});(b=b&&b.parent)&&b.addStyle(\"mso-list\",\"Ignore\")}a.filterChildren(c);q(a)||(d.enterMode==CKEDITOR.ENTER_BR?(delete a.name,a.add(new CKEDITOR.htmlParser.element(\"br\"))):g(d[\"format_\"+(d.enterMode==CKEDITOR.ENTER_P?\"p\":\"div\")])(a))},div:function(a){var c=a.onlyChild();if(c&&\"table\"==c.name){var b=a.attributes;c.attributes=CKEDITOR.tools.extend(c.attributes,b);b.style&&c.addStyle(b.style);c=new CKEDITOR.htmlParser.element(\"div\");\nc.addStyle(\"clear\",\"both\");a.add(c);delete a.name}},td:function(a){a.getAncestor(\"thead\")&&(a.name=\"th\")},ol:l,ul:l,dl:l,font:function(a){if(p(a.parent))delete a.name;else{a.filterChildren(c);var b=a.attributes,d=b.style,e=a.parent;\"font\"==e.name?(CKEDITOR.tools.extend(e.attributes,a.attributes),d&&e.addStyle(d),delete a.name):(d=d||\"\",b.color&&(\"#000000\"!=b.color&&(d+=\"color:\"+b.color+\";\"),delete b.color),b.face&&(d+=\"font-family:\"+b.face+\";\",delete b.face),b.size&&(d+=\"font-size:\"+(3<b.size?\"large\":\n3>b.size?\"small\":\"medium\")+\";\",delete b.size),a.name=\"span\",a.addStyle(d))}},span:function(a){if(p(a.parent))return!1;a.filterChildren(c);if(n(a))return delete a.name,null;if(p(a)){var b=a.firstChild(function(a){return a.value||\"img\"==a.name}),e=(b=b&&(b.value||\"l.\"))&&b.match(/^(?:[(]?)([^\\s]+?)([.)]?)$/);if(e)return b=i(e,b),(a=a.getAncestor(\"span\"))&&/ mso-hide:\\s*all|display:\\s*none /.test(a.attributes.style)&&(b.attributes[\"cke:ignored\"]=1),b}if(e=(b=a.attributes)&&b.style)b.style=j([[\"line-height\"],\n[/^font-family$/,null,!o?m(d.font_style,\"family\"):null],[/^font-size$/,null,!o?m(d.fontSize_style,\"size\"):null],[/^color$/,null,!o?m(d.colorButton_foreStyle,\"color\"):null],[/^background-color$/,null,!o?m(d.colorButton_backStyle,\"color\"):null]])(e,a)||\"\";b.style||delete b.style;CKEDITOR.tools.isEmpty(b)&&delete a.name;return null},b:g(d.coreStyles_bold),i:g(d.coreStyles_italic),u:g(d.coreStyles_underline),s:g(d.coreStyles_strike),sup:g(d.coreStyles_superscript),sub:g(d.coreStyles_subscript),a:function(a){a=\na.attributes;a.href&&a.href.match(/^file:\\/\\/\\/[\\S]+#/i)&&(a.href=a.href.replace(/^file:\\/\\/\\/[^#]+/i,\"\"))},\"cke:listbullet\":function(a){a.getAncestor(/h\\d/)&&!d.pasteFromWordNumberedHeadingToList&&delete a.name}},attributeNames:[[/^onmouse(:?out|over)/,\"\"],[/^onload$/,\"\"],[/(?:v|o):\\w+/,\"\"],[/^lang/,\"\"]],attributes:{style:j(s?[[/^list-style-type$/,null],[/^margin$|^margin-(?!bottom|top)/,null,function(a,b,c){if(b.name in{p:1,div:1}){b=\"ltr\"==d.contentsLangDirection?\"margin-left\":\"margin-right\";if(\"margin\"==\nc)a=r(c,a,[b])[b];else if(c!=b)return null;if(a&&!D.test(a))return[b,a]}return null}],[/^clear$/],[/^border.*|margin.*|vertical-align|float$/,null,function(a,b){if(\"img\"==b.name)return a}],[/^width|height$/,null,function(a,b){if(b.name in{table:1,td:1,th:1,img:1})return a}]]:[[/^mso-/],[/-color$/,null,function(a){if(\"transparent\"==a)return!1;if(CKEDITOR.env.gecko)return a.replace(/-moz-use-text-color/g,\"transparent\")}],[/^margin$/,D],[\"text-indent\",\"0cm\"],[\"page-break-before\"],[\"tab-stops\"],[\"display\",\n\"none\"],o?[/font-?/]:null],s),width:function(a,c){if(c.name in b.$tableContent)return!1},border:function(a,c){if(c.name in b.$tableContent)return!1},\"class\":h,bgcolor:h,valign:s?h:function(a,b){b.addStyle(\"vertical-align\",a);return!1}},comment:!CKEDITOR.env.ie?function(a,b){var c=a.match(/<img.*?>/),d=a.match(/^\\[if !supportLists\\]([\\s\\S]*?)\\[endif\\]$/);return d?(d=(c=d[1]||c&&\"l.\")&&c.match(/>(?:[(]?)([^\\s]+?)([.)]?)</),i(d,c)):CKEDITOR.env.gecko&&c?(c=CKEDITOR.htmlParser.fragment.fromHtml(c[0]).children[0],\n(d=(d=(d=b.previous)&&d.value.match(/<v:imagedata[^>]*o:href=['\"](.*?)['\"]/))&&d[1])&&(c.attributes.src=d),c):!1}:h}}},G=function(){this.dataFilter=new CKEDITOR.htmlParser.filter};G.prototype={toHtml:function(a){var a=CKEDITOR.htmlParser.fragment.fromHtml(a),c=new CKEDITOR.htmlParser.basicWriter;a.writeHtml(c,this.dataFilter);return c.getHtml(!0)}};CKEDITOR.cleanWord=function(a,c){CKEDITOR.env.gecko&&(a=a.replace(/(<\\!--\\[if[^<]*?\\])--\\>([\\S\\s]*?)<\\!--(\\[endif\\]--\\>)/gi,\"$1$2$3\"));CKEDITOR.env.webkit&&\n(a=a.replace(/(class=\"MsoListParagraph[^>]+><\\!--\\[if !supportLists\\]--\\>)([^<]+<span[^<]+<\\/span>)(<\\!--\\[endif\\]--\\>)/gi,\"$1<span>$2</span>$3\"));var b=new G,f=b.dataFilter;f.addRules(CKEDITOR.plugins.pastefromword.getRules(c,f));c.fire(\"beforeCleanWord\",{filter:f});try{a=b.toHtml(a)}catch(d){alert(c.lang.pastefromword.error)}a=a.replace(/cke:.*?\".*?\"/g,\"\");a=a.replace(/style=\"\"/g,\"\");return a=a.replace(/<span>/g,\"\")}})();"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/preview/preview.html",
    "content": "<script>\r\n\r\nvar doc = document;\r\ndoc.open();\r\ndoc.write( window.opener._cke_htmlToLoad );\r\ndoc.close();\r\n\r\ndelete window.opener._cke_htmlToLoad;\r\n\r\n</script>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/scayt/LICENSE.md",
    "content": "Software License Agreement\r\n==========================\r\n\r\n**CKEditor SCAYT Plugin**\r\nCopyright &copy; 2012, [CKSource](http://cksource.com) - Frederico Knabben. All rights reserved.\r\n\r\nLicensed under the terms of any of the following licenses at your choice:\r\n\r\n*   GNU General Public License Version 2 or later (the \"GPL\"):\r\n    http://www.gnu.org/licenses/gpl.html\r\n\r\n*   GNU Lesser General Public License Version 2.1 or later (the \"LGPL\"):\r\n    http://www.gnu.org/licenses/lgpl.html\r\n\r\n*   Mozilla Public License Version 1.1 or later (the \"MPL\"):\r\n    http://www.mozilla.org/MPL/MPL-1.1.html\r\n\r\nYou are not required to, but if you want to explicitly declare the license you have chosen to be bound to when using, reproducing, modifying and distributing this software, just include a text file titled \"legal.txt\" in your version of this software, indicating your license choice.\r\n\r\nSources of Intellectual Property Included in this plugin\r\n--------------------------------------------------------\r\n\r\nWhere not otherwise indicated, all plugin content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, the plugin will incorporate work done by developers outside of CKSource with their express permission.\r\n\r\nTrademarks\r\n----------\r\n\r\nCKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders.\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/scayt/README.md",
    "content": "CKEditor SCAYT Plugin\r\n=====================\r\n\r\nThis plugin brings Spell Check As You Type (SCAYT) into up to CKEditor 4+.\r\n\r\nSCAYT is a \"installation-less\", using the web-services of [WebSpellChecker.net](http://www.webspellchecker.net/). It's an out of the box solution.\r\n\r\nInstallation\r\n------------\r\n\r\n1. Clone/copy this repository contents in a new \"plugins/scayt\" folder in your CKEditor installation.\r\n2. Enable the \"scayt\" plugin in the CKEditor configuration file (config.js):\r\n\r\n        config.extraPlugins = 'scayt';\r\n\r\nThat's all. SCAYT will appear on the editor toolbar and will be ready to use.\r\n\r\nLicense\r\n-------\r\n\r\nLicensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html).\r\n\r\nSee LICENSE.md for more information.\r\n\r\nDeveloped in cooperation with [WebSpellChecker.net](http://www.webspellchecker.net/).\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/scayt/dialogs/options.js",
    "content": "﻿CKEDITOR.dialog.add(\"scaytDialog\",function(f){var g=f.scayt,k='<p><img src=\"'+g.getLogo()+'\" /></p><p>'+g.getLocal(\"version\")+g.getVersion()+\"</p><p>\"+g.getLocal(\"text_copyrights\")+\"</p>\",l=CKEDITOR.document,i={isChanged:function(){return null===this.newLang||this.currentLang===this.newLang?!1:!0},currentLang:g.getLang(),newLang:null,reset:function(){this.currentLang=g.getLang();this.newLang=null},id:\"lang\"},k=[{id:\"options\",label:g.getLocal(\"tab_options\"),onShow:function(){},elements:[{type:\"vbox\",\nid:\"scaytOptions\",children:function(){var a=g.getApplicationConfig(),e=[],b={\"ignore-all-caps-words\":\"label_allCaps\",\"ignore-domain-names\":\"label_ignoreDomainNames\",\"ignore-words-with-mixed-cases\":\"label_mixedCase\",\"ignore-words-with-numbers\":\"label_mixedWithDigits\"},d;for(d in a){var c={type:\"checkbox\"};c.id=d;c.label=g.getLocal(b[d]);e.push(c)}return e}(),onShow:function(){this.getChild();for(var a=f.scayt,e=0;e<this.getChild().length;e++)this.getChild()[e].setValue(a.getApplicationConfig()[this.getChild()[e].id])}}]},\n{id:\"langs\",label:g.getLocal(\"tab_languages\"),elements:[{id:\"leftLangColumn\",type:\"vbox\",align:\"left\",widths:[\"100\"],children:[{type:\"html\",id:\"langBox\",style:\"overflow: hidden; white-space: normal;\",html:'<form><div style=\"float:left;width:45%;margin-left:5px;\" id=\"left-col-'+f.name+'\"></div><div style=\"float:left;width:45%;margin-left:15px;\" id=\"right-col-'+f.name+'\"></div></form>',onShow:function(){var a=f.scayt.getLang();l.getById(\"scaytLang_\"+a).$.checked=!0}}]}]},{id:\"dictionaries\",label:g.getLocal(\"tab_dictionaries\"),\nelements:[{type:\"vbox\",id:\"rightCol_col__left\",children:[{type:\"html\",id:\"dictionaryNote\",html:\"\"},{type:\"text\",id:\"dictionaryName\",label:g.getLocal(\"label_fieldNameDic\")||\"Dictionary name\",onShow:function(a){var e=a.sender,b=f.scayt;setTimeout(function(){e.getContentElement(\"dictionaries\",\"dictionaryNote\").getElement().setText(\"\");null!=b.getUserDictionaryName()&&\"\"!=b.getUserDictionaryName()&&e.getContentElement(\"dictionaries\",\"dictionaryName\").setValue(b.getUserDictionaryName())},0)}},{type:\"hbox\",\nid:\"notExistDic\",align:\"left\",style:\"width:auto;\",widths:[\"50%\",\"50%\"],children:[{type:\"button\",id:\"createDic\",label:g.getLocal(\"btn_createDic\"),title:g.getLocal(\"btn_createDic\"),onClick:function(){var a=this.getDialog(),e=j,b=f.scayt,d=a.getContentElement(\"dictionaries\",\"dictionaryName\").getValue();b.createUserDictionary(d,function(c){c.error||e.toggleDictionaryButtons.call(a,!0);c.dialog=a;c.command=\"create\";c.name=d;f.fire(\"scaytUserDictionaryAction\",c)},function(c){c.dialog=a;c.command=\"create\";\nc.name=d;f.fire(\"scaytUserDictionaryActionError\",c)})}},{type:\"button\",id:\"restoreDic\",label:g.getLocal(\"btn_restoreDic\"),title:g.getLocal(\"btn_restoreDic\"),onClick:function(){var a=this.getDialog(),e=f.scayt,b=j,d=a.getContentElement(\"dictionaries\",\"dictionaryName\").getValue();e.restoreUserDictionary(d,function(c){c.dialog=a;c.error||b.toggleDictionaryButtons.call(a,!0);c.command=\"restore\";c.name=d;f.fire(\"scaytUserDictionaryAction\",c)},function(c){c.dialog=a;c.command=\"restore\";c.name=d;f.fire(\"scaytUserDictionaryActionError\",\nc)})}}]},{type:\"hbox\",id:\"existDic\",align:\"left\",style:\"width:auto;\",widths:[\"50%\",\"50%\"],children:[{type:\"button\",id:\"removeDic\",label:g.getLocal(\"btn_deleteDic\"),title:g.getLocal(\"btn_deleteDic\"),onClick:function(){var a=this.getDialog(),e=f.scayt,b=j,d=a.getContentElement(\"dictionaries\",\"dictionaryName\"),c=d.getValue();e.removeUserDictionary(c,function(e){d.setValue(\"\");e.error||b.toggleDictionaryButtons.call(a,!1);e.dialog=a;e.command=\"remove\";e.name=c;f.fire(\"scaytUserDictionaryAction\",e)},function(b){b.dialog=\na;b.command=\"remove\";b.name=c;f.fire(\"scaytUserDictionaryActionError\",b)})}},{type:\"button\",id:\"renameDic\",label:g.getLocal(\"btn_renameDic\"),title:g.getLocal(\"btn_renameDic\"),onClick:function(){var a=this.getDialog(),e=f.scayt,b=a.getContentElement(\"dictionaries\",\"dictionaryName\").getValue();e.renameUserDictionary(b,function(d){d.dialog=a;d.command=\"rename\";d.name=b;f.fire(\"scaytUserDictionaryAction\",d)},function(d){d.dialog=a;d.command=\"rename\";d.name=b;f.fire(\"scaytUserDictionaryActionError\",d)})}}]},\n{type:\"html\",id:\"dicInfo\",html:'<div id=\"dic_info_editor1\" style=\"margin:5px auto; width:95%;white-space:normal;\">'+g.getLocal(\"text_descriptionDic\")+\"</div>\"}]}]},{id:\"about\",label:g.getLocal(\"tab_about\"),elements:[{type:\"html\",id:\"about\",style:\"margin: 5px 5px;\",html:'<div><div id=\"scayt_about_\">'+k+\"</div></div>\"}]}];f.on(\"scaytUserDictionaryAction\",function(a){var e=a.data.dialog,b=e.getContentElement(\"dictionaries\",\"dictionaryNote\").getElement(),d=a.editor.scayt,c;void 0===a.data.error?(c=d.getLocal(\"message_success_\"+\na.data.command+\"Dic\"),c=c.replace(\"%s\",a.data.name),b.setText(c),SCAYT.$(b.$).css({color:\"blue\"})):(\"\"===a.data.name?b.setText(d.getLocal(\"message_info_emptyDic\")):(c=d.getLocal(\"message_error_\"+a.data.command+\"Dic\"),c=c.replace(\"%s\",a.data.name),b.setText(c)),SCAYT.$(b.$).css({color:\"red\"}),null!=d.getUserDictionaryName()&&\"\"!=d.getUserDictionaryName()?e.getContentElement(\"dictionaries\",\"dictionaryName\").setValue(d.getUserDictionaryName()):e.getContentElement(\"dictionaries\",\"dictionaryName\").setValue(\"\"))});\nf.on(\"scaytUserDictionaryActionError\",function(a){var e=a.data.dialog,b=e.getContentElement(\"dictionaries\",\"dictionaryNote\").getElement(),d=a.editor.scayt,c;\"\"===a.data.name?b.setText(d.getLocal(\"message_info_emptyDic\")):(c=d.getLocal(\"message_error_\"+a.data.command+\"Dic\"),c=c.replace(\"%s\",a.data.name),b.setText(c));SCAYT.$(b.$).css({color:\"red\"});null!=d.getUserDictionaryName()&&\"\"!=d.getUserDictionaryName()?e.getContentElement(\"dictionaries\",\"dictionaryName\").setValue(d.getUserDictionaryName()):\ne.getContentElement(\"dictionaries\",\"dictionaryName\").setValue(\"\")});var j={title:g.getLocal(\"text_title\"),resizable:CKEDITOR.DIALOG_RESIZE_BOTH,minWidth:340,minHeight:260,onLoad:function(){if(0!=f.config.scayt_uiTabs[1]){var a=j,e=a.getLangBoxes.call(this);e.getParent().setStyle(\"white-space\",\"normal\");a.renderLangList(e);this.definition.minWidth=this.getSize().width;this.resize(this.definition.minWidth,this.definition.minHeight)}},onCancel:function(){i.reset()},onHide:function(){f.unlockSelection()},\nonShow:function(){f.fire(\"scaytDialogShown\",this);if(0!=f.config.scayt_uiTabs[2]){var a=f.scayt,e=this.getContentElement(\"dictionaries\",\"dictionaryName\"),b=this.getContentElement(\"dictionaries\",\"existDic\").getElement().getParent(),d=this.getContentElement(\"dictionaries\",\"notExistDic\").getElement().getParent();b.hide();d.hide();null!=a.getUserDictionaryName()&&\"\"!=a.getUserDictionaryName()?(this.getContentElement(\"dictionaries\",\"dictionaryName\").setValue(a.getUserDictionaryName()),b.show()):(e.setValue(\"\"),\nd.show())}},onOk:function(){var a=j,e=f.scayt;this.getContentElement(\"options\",\"scaytOptions\");a=a.getChangedOption.call(this);e.commitOption({changedOptions:a})},toggleDictionaryButtons:function(a){var e=this.getContentElement(\"dictionaries\",\"existDic\").getElement().getParent(),b=this.getContentElement(\"dictionaries\",\"notExistDic\").getElement().getParent();a?(e.show(),b.hide()):(e.hide(),b.show())},getChangedOption:function(){var a={};if(1==f.config.scayt_uiTabs[0])for(var e=this.getContentElement(\"options\",\n\"scaytOptions\").getChild(),b=0;b<e.length;b++)e[b].isChanged()&&(a[e[b].id]=e[b].getValue());i.isChanged()&&(a[i.id]=f.config.scayt_sLang=i.currentLang=i.newLang);return a},buildRadioInputs:function(a,e){var b=new CKEDITOR.dom.element(\"div\");CKEDITOR.document.createElement(\"div\");var d=\"scaytLang_\"+e,c=CKEDITOR.dom.element.createFromHtml('<input id=\"'+d+'\" type=\"radio\"  value=\"'+e+'\" name=\"scayt_lang\" />'),g=new CKEDITOR.dom.element(\"label\"),h=f.scayt;b.setStyles({\"white-space\":\"normal\",position:\"relative\"});\nc.on(\"click\",function(a){i.newLang=a.sender.getValue()});g.appendText(a);g.setAttribute(\"for\",d);b.append(c);b.append(g);e===h.getLang()&&(c.setAttribute(\"checked\",!0),c.setAttribute(\"defaultChecked\",\"defaultChecked\"));return b},renderLangList:function(a){var e=a.find(\"#left-col-\"+f.name).getItem(0),a=a.find(\"#right-col-\"+f.name).getItem(0),b=g.getLangList(),d={},c=[],i=0,h;for(h in b.ltr)d[h]=b.ltr[h];for(h in b.rtl)d[h]=b.rtl[h];for(h in d)c.push([h,d[h]]);c.sort(function(a,b){var c=0;a[1]>b[1]?\nc=1:a[1]<b[1]&&(c=-1);return c});d={};for(b=0;b<c.length;b++)d[c[b][0]]=c[b][1];c=Math.round(c.length/2);for(h in d)i++,this.buildRadioInputs(d[h],h).appendTo(i<=c?e:a)},getLangBoxes:function(){return this.getContentElement(\"langs\",\"langBox\").getElement()},contents:function(a,e){var b=[],d=e.config.scayt_uiTabs;if(d){for(var c in d)1==d[c]&&b.push(a[c]);b.push(a[a.length-1])}else return a;return b}(k,f)};return j});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/scayt/dialogs/toolbar.css",
    "content": "a\r\n{\r\n\ttext-decoration:none;\r\n\tpadding: 2px 4px 4px 6px;\r\n\tdisplay : block;\r\n\tborder-width: 1px;\r\n\tborder-style: solid;\r\n\tmargin : 0px;\r\n}\r\n\r\na.cke_scayt_toogle:hover,\r\na.cke_scayt_toogle:focus,\r\na.cke_scayt_toogle:active\r\n{\r\n\tborder-color: #316ac5;\r\n\tbackground-color: #dff1ff;\r\n\tcolor : #000;\r\n\tcursor: pointer;\r\n\tmargin : 0px;\r\n}\r\na.cke_scayt_toogle {\r\n\tcolor : #316ac5;\r\n\tborder-color: #fff;\r\n}\r\n.scayt_enabled a.cke_scayt_item {\r\n\tcolor : #316ac5;\r\n\tborder-color: #fff;\r\n\tmargin : 0px;\r\n}\r\n.scayt_disabled a.cke_scayt_item {\r\n\tcolor : gray;\r\n\tborder-color : #fff;\r\n}\r\n.scayt_enabled a.cke_scayt_item:hover,\r\n.scayt_enabled a.cke_scayt_item:focus,\r\n.scayt_enabled a.cke_scayt_item:active\r\n{\r\n\tborder-color: #316ac5;\r\n\tbackground-color: #dff1ff;\r\n\tcolor : #000;\r\n\tcursor: pointer;\r\n}\r\n.scayt_disabled a.cke_scayt_item:hover,\r\n.scayt_disabled a.cke_scayt_item:focus,\r\n.scayt_disabled a.cke_scayt_item:active\r\n{\r\n\tborder-color: gray;\r\n\tbackground-color: #dff1ff;\r\n\tcolor : gray;\r\n\tcursor: no-drop;\r\n}\r\n.cke_scayt_set_on, .cke_scayt_set_off\r\n{\r\n\tdisplay: none;\r\n}\r\n.scayt_enabled .cke_scayt_set_on\r\n{\r\n\tdisplay: none;\r\n}\r\n.scayt_disabled .cke_scayt_set_on\r\n{\r\n\tdisplay: inline;\r\n}\r\n.scayt_disabled .cke_scayt_set_off\r\n{\r\n\tdisplay: none;\r\n}\r\n.scayt_enabled  .cke_scayt_set_off\r\n{\r\n\tdisplay: inline;\r\n}\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/smiley/dialogs/smiley.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.dialog.add(\"smiley\",function(f){for(var e=f.config,a=f.lang.smiley,h=e.smiley_images,g=e.smiley_columns||8,i,k=function(j){var c=j.data.getTarget(),b=c.getName();if(\"a\"==b)c=c.getChild(0);else if(\"img\"!=b)return;var b=c.getAttribute(\"cke_src\"),a=c.getAttribute(\"title\"),c=f.document.createElement(\"img\",{attributes:{src:b,\"data-cke-saved-src\":b,title:a,alt:a,width:c.$.width,height:c.$.height}});f.insertElement(c);i.hide();j.data.preventDefault()},n=CKEDITOR.tools.addFunction(function(a,c){var a=\nnew CKEDITOR.dom.event(a),c=new CKEDITOR.dom.element(c),b;b=a.getKeystroke();var d=\"rtl\"==f.lang.dir;switch(b){case 38:if(b=c.getParent().getParent().getPrevious())b=b.getChild([c.getParent().getIndex(),0]),b.focus();a.preventDefault();break;case 40:if(b=c.getParent().getParent().getNext())(b=b.getChild([c.getParent().getIndex(),0]))&&b.focus();a.preventDefault();break;case 32:k({data:a});a.preventDefault();break;case d?37:39:if(b=c.getParent().getNext())b=b.getChild(0),b.focus(),a.preventDefault(!0);\nelse if(b=c.getParent().getParent().getNext())(b=b.getChild([0,0]))&&b.focus(),a.preventDefault(!0);break;case d?39:37:if(b=c.getParent().getPrevious())b=b.getChild(0),b.focus(),a.preventDefault(!0);else if(b=c.getParent().getParent().getPrevious())b=b.getLast().getChild(0),b.focus(),a.preventDefault(!0)}}),d=CKEDITOR.tools.getNextId()+\"_smiley_emtions_label\",d=['<div><span id=\"'+d+'\" class=\"cke_voice_label\">'+a.options+\"</span>\",'<table role=\"listbox\" aria-labelledby=\"'+d+'\" style=\"width:100%;height:100%;border-collapse:separate;\" cellspacing=\"2\" cellpadding=\"2\"',\nCKEDITOR.env.ie&&CKEDITOR.env.quirks?' style=\"position:absolute;\"':\"\",\"><tbody>\"],l=h.length,a=0;a<l;a++){0===a%g&&d.push('<tr role=\"presentation\">');var m=\"cke_smile_label_\"+a+\"_\"+CKEDITOR.tools.getNextNumber();d.push('<td class=\"cke_dark_background cke_centered\" style=\"vertical-align: middle;\" role=\"presentation\"><a href=\"javascript:void(0)\" role=\"option\"',' aria-posinset=\"'+(a+1)+'\"',' aria-setsize=\"'+l+'\"',' aria-labelledby=\"'+m+'\"',' class=\"cke_smile cke_hand\" tabindex=\"-1\" onkeydown=\"CKEDITOR.tools.callFunction( ',\nn,', event, this );\">','<img class=\"cke_hand\" title=\"',e.smiley_descriptions[a],'\" cke_src=\"',CKEDITOR.tools.htmlEncode(e.smiley_path+h[a]),'\" alt=\"',e.smiley_descriptions[a],'\"',' src=\"',CKEDITOR.tools.htmlEncode(e.smiley_path+h[a]),'\"',CKEDITOR.env.ie?\" onload=\\\"this.setAttribute('width', 2); this.removeAttribute('width');\\\" \":\"\",'><span id=\"'+m+'\" class=\"cke_voice_label\">'+e.smiley_descriptions[a]+\"</span></a>\",\"</td>\");a%g==g-1&&d.push(\"</tr>\")}if(a<g-1){for(;a<g-1;a++)d.push(\"<td></td>\");d.push(\"</tr>\")}d.push(\"</tbody></table></div>\");\ne={type:\"html\",id:\"smileySelector\",html:d.join(\"\"),onLoad:function(a){i=a.sender},focus:function(){var a=this;setTimeout(function(){a.getElement().getElementsByTag(\"a\").getItem(0).focus()},0)},onClick:k,style:\"width: 100%; border-collapse: separate;\"};return{title:f.lang.smiley.title,minWidth:270,minHeight:120,contents:[{id:\"tab1\",label:\"\",title:\"\",expand:!0,padding:0,elements:[e]}],buttons:[CKEDITOR.dialog.cancelButton]}});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt",
    "content": "Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n\r\ncs.js      Found: 118 Missing: 0\r\ncy.js      Found: 118 Missing: 0\r\nde.js      Found: 118 Missing: 0\r\nel.js      Found: 16 Missing: 102\r\neo.js      Found: 118 Missing: 0\r\net.js      Found: 31 Missing: 87\r\nfa.js      Found: 24 Missing: 94\r\nfi.js      Found: 23 Missing: 95\r\nfr.js      Found: 118 Missing: 0\r\nhr.js      Found: 23 Missing: 95\r\nit.js      Found: 118 Missing: 0\r\nnb.js      Found: 118 Missing: 0\r\nnl.js      Found: 118 Missing: 0\r\nno.js      Found: 118 Missing: 0\r\ntr.js      Found: 118 Missing: 0\r\nug.js      Found: 39 Missing: 79\r\nzh-cn.js   Found: 118 Missing: 0\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ar.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"ar\",{euro:\"رمز اليورو\",lsquo:\"علامة تنصيص فردية علي اليسار\",rsquo:\"علامة تنصيص فردية علي اليمين\",ldquo:\"علامة تنصيص مزدوجة علي اليسار\",rdquo:\"علامة تنصيص مزدوجة علي اليمين\",ndash:\"En dash\",mdash:\"Em dash\",iexcl:\"علامة تعجب مقلوبة\",cent:\"رمز السنت\",pound:\"رمز الاسترليني\",curren:\"رمز العملة\",yen:\"رمز الين\",brvbar:\"شريط مقطوع\",sect:\"رمز القسم\",uml:\"Diaeresis\",copy:\"علامة حقوق الطبع\",ordf:\"Feminine ordinal indicator\",laquo:\"Left-pointing double angle quotation mark\",\nnot:\"ليست علامة\",reg:\"علامة مسجّلة\",macr:\"Macron\",deg:\"Degree sign\",sup2:\"Superscript two\",sup3:\"Superscript three\",acute:\"Acute accent\",micro:\"Micro sign\",para:\"Pilcrow sign\",middot:\"Middle dot\",cedil:\"Cedilla\",sup1:\"Superscript one\",ordm:\"Masculine ordinal indicator\",raquo:\"Right-pointing double angle quotation mark\",frac14:\"Vulgar fraction one quarter\",frac12:\"Vulgar fraction one half\",frac34:\"Vulgar fraction three quarters\",iquest:\"علامة الإستفهام غير صحيحة\",Agrave:\"Latin capital letter A with grave accent\",\nAacute:\"Latin capital letter A with acute accent\",Acirc:\"Latin capital letter A with circumflex\",Atilde:\"Latin capital letter A with tilde\",Auml:\"Latin capital letter A with diaeresis\",Aring:\"Latin capital letter A with ring above\",AElig:\"Latin Capital letter Æ\",Ccedil:\"Latin capital letter C with cedilla\",Egrave:\"Latin capital letter E with grave accent\",Eacute:\"Latin capital letter E with acute accent\",Ecirc:\"Latin capital letter E with circumflex\",Euml:\"Latin capital letter E with diaeresis\",Igrave:\"Latin capital letter I with grave accent\",\nIacute:\"Latin capital letter I with acute accent\",Icirc:\"Latin capital letter I with circumflex\",Iuml:\"Latin capital letter I with diaeresis\",ETH:\"Latin capital letter Eth\",Ntilde:\"Latin capital letter N with tilde\",Ograve:\"Latin capital letter O with grave accent\",Oacute:\"Latin capital letter O with acute accent\",Ocirc:\"Latin capital letter O with circumflex\",Otilde:\"Latin capital letter O with tilde\",Ouml:\"Latin capital letter O with diaeresis\",times:\"Multiplication sign\",Oslash:\"Latin capital letter O with stroke\",\nUgrave:\"Latin capital letter U with grave accent\",Uacute:\"Latin capital letter U with acute accent\",Ucirc:\"Latin capital letter U with circumflex\",Uuml:\"Latin capital letter U with diaeresis\",Yacute:\"Latin capital letter Y with acute accent\",THORN:\"Latin capital letter Thorn\",szlig:\"Latin small letter sharp s\",agrave:\"Latin small letter a with grave accent\",aacute:\"Latin small letter a with acute accent\",acirc:\"Latin small letter a with circumflex\",atilde:\"Latin small letter a with tilde\",auml:\"Latin small letter a with diaeresis\",\naring:\"Latin small letter a with ring above\",aelig:\"Latin small letter æ\",ccedil:\"Latin small letter c with cedilla\",egrave:\"Latin small letter e with grave accent\",eacute:\"Latin small letter e with acute accent\",ecirc:\"Latin small letter e with circumflex\",euml:\"Latin small letter e with diaeresis\",igrave:\"Latin small letter i with grave accent\",iacute:\"Latin small letter i with acute accent\",icirc:\"Latin small letter i with circumflex\",iuml:\"Latin small letter i with diaeresis\",eth:\"Latin small letter eth\",\nntilde:\"Latin small letter n with tilde\",ograve:\"Latin small letter o with grave accent\",oacute:\"Latin small letter o with acute accent\",ocirc:\"Latin small letter o with circumflex\",otilde:\"Latin small letter o with tilde\",ouml:\"Latin small letter o with diaeresis\",divide:\"Division sign\",oslash:\"Latin small letter o with stroke\",ugrave:\"Latin small letter u with grave accent\",uacute:\"Latin small letter u with acute accent\",ucirc:\"Latin small letter u with circumflex\",uuml:\"Latin small letter u with diaeresis\",\nyacute:\"Latin small letter y with acute accent\",thorn:\"Latin small letter thorn\",yuml:\"Latin small letter y with diaeresis\",OElig:\"Latin capital ligature OE\",oelig:\"Latin small ligature oe\",372:\"Latin capital letter W with circumflex\",374:\"Latin capital letter Y with circumflex\",373:\"Latin small letter w with circumflex\",375:\"Latin small letter y with circumflex\",sbquo:\"Single low-9 quotation mark\",8219:\"Single high-reversed-9 quotation mark\",bdquo:\"Double low-9 quotation mark\",hellip:\"Horizontal ellipsis\",\ntrade:\"Trade mark sign\",9658:\"Black right-pointing pointer\",bull:\"Bullet\",rarr:\"Rightwards arrow\",rArr:\"Rightwards double arrow\",hArr:\"Left right double arrow\",diams:\"Black diamond suit\",asymp:\"Almost equal to\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/bg.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"bg\",{euro:\"Евро знак\",lsquo:\"Лява маркировка за цитат\",rsquo:\"Дясна маркировка за цитат\",ldquo:\"Лява двойна кавичка за цитат\",rdquo:\"Дясна двойна кавичка за цитат\",ndash:\"\\\\\\\\\",mdash:\"/\",iexcl:\"Обърната питанка\",cent:\"Знак за цент\",pound:\"Знак за паунд\",curren:\"Валутен знак\",yen:\"Знак за йена\",brvbar:\"Прекъсната линия\",sect:\"Знак за секция\",uml:\"Diaeresis\",copy:\"Знак за Copyright\",ordf:\"Feminine ordinal indicator\",laquo:\"Left-pointing double angle quotation mark\",\nnot:\"Not sign\",reg:\"Registered sign\",macr:\"Macron\",deg:\"Degree sign\",sup2:\"Superscript two\",sup3:\"Superscript three\",acute:\"Acute accent\",micro:\"Micro sign\",para:\"Pilcrow sign\",middot:\"Middle dot\",cedil:\"Cedilla\",sup1:\"Superscript one\",ordm:\"Masculine ordinal indicator\",raquo:\"Right-pointing double angle quotation mark\",frac14:\"Vulgar fraction one quarter\",frac12:\"Vulgar fraction one half\",frac34:\"Vulgar fraction three quarters\",iquest:\"Inverted question mark\",Agrave:\"Latin capital letter A with grave accent\",\nAacute:\"Latin capital letter A with acute accent\",Acirc:\"Latin capital letter A with circumflex\",Atilde:\"Latin capital letter A with tilde\",Auml:\"Latin capital letter A with diaeresis\",Aring:\"Latin capital letter A with ring above\",AElig:\"Latin Capital letter Æ\",Ccedil:\"Latin capital letter C with cedilla\",Egrave:\"Latin capital letter E with grave accent\",Eacute:\"Latin capital letter E with acute accent\",Ecirc:\"Latin capital letter E with circumflex\",Euml:\"Latin capital letter E with diaeresis\",Igrave:\"Latin capital letter I with grave accent\",\nIacute:\"Latin capital letter I with acute accent\",Icirc:\"Latin capital letter I with circumflex\",Iuml:\"Latin capital letter I with diaeresis\",ETH:\"Latin capital letter Eth\",Ntilde:\"Latin capital letter N with tilde\",Ograve:\"Latin capital letter O with grave accent\",Oacute:\"Latin capital letter O with acute accent\",Ocirc:\"Latin capital letter O with circumflex\",Otilde:\"Latin capital letter O with tilde\",Ouml:\"Latin capital letter O with diaeresis\",times:\"Multiplication sign\",Oslash:\"Latin capital letter O with stroke\",\nUgrave:\"Latin capital letter U with grave accent\",Uacute:\"Latin capital letter U with acute accent\",Ucirc:\"Latin capital letter U with circumflex\",Uuml:\"Latin capital letter U with diaeresis\",Yacute:\"Latin capital letter Y with acute accent\",THORN:\"Latin capital letter Thorn\",szlig:\"Latin small letter sharp s\",agrave:\"Latin small letter a with grave accent\",aacute:\"Latin small letter a with acute accent\",acirc:\"Latin small letter a with circumflex\",atilde:\"Latin small letter a with tilde\",auml:\"Latin small letter a with diaeresis\",\naring:\"Latin small letter a with ring above\",aelig:\"Latin small letter æ\",ccedil:\"Latin small letter c with cedilla\",egrave:\"Latin small letter e with grave accent\",eacute:\"Latin small letter e with acute accent\",ecirc:\"Latin small letter e with circumflex\",euml:\"Latin small letter e with diaeresis\",igrave:\"Latin small letter i with grave accent\",iacute:\"Latin small letter i with acute accent\",icirc:\"Latin small letter i with circumflex\",iuml:\"Latin small letter i with diaeresis\",eth:\"Latin small letter eth\",\nntilde:\"Latin small letter n with tilde\",ograve:\"Latin small letter o with grave accent\",oacute:\"Latin small letter o with acute accent\",ocirc:\"Latin small letter o with circumflex\",otilde:\"Latin small letter o with tilde\",ouml:\"Latin small letter o with diaeresis\",divide:\"Division sign\",oslash:\"Latin small letter o with stroke\",ugrave:\"Latin small letter u with grave accent\",uacute:\"Latin small letter u with acute accent\",ucirc:\"Latin small letter u with circumflex\",uuml:\"Latin small letter u with diaeresis\",\nyacute:\"Latin small letter y with acute accent\",thorn:\"Latin small letter thorn\",yuml:\"Latin small letter y with diaeresis\",OElig:\"Latin capital ligature OE\",oelig:\"Latin small ligature oe\",372:\"Latin capital letter W with circumflex\",374:\"Latin capital letter Y with circumflex\",373:\"Latin small letter w with circumflex\",375:\"Latin small letter y with circumflex\",sbquo:\"Single low-9 quotation mark\",8219:\"Single high-reversed-9 quotation mark\",bdquo:\"Double low-9 quotation mark\",hellip:\"Horizontal ellipsis\",\ntrade:\"Trade mark sign\",9658:\"Black right-pointing pointer\",bull:\"Bullet\",rarr:\"Rightwards arrow\",rArr:\"Rightwards double arrow\",hArr:\"Left right double arrow\",diams:\"Black diamond suit\",asymp:\"Almost equal to\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ca.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"ca\",{euro:\"Símbol d'euro\",lsquo:\"Signe de cometa simple esquerra\",rsquo:\"Signe de cometa simple dreta\",ldquo:\"Signe de cometa doble esquerra\",rdquo:\"Signe de cometa doble dreta\",ndash:\"Guió\",mdash:\"Guió baix\",iexcl:\"Signe d'exclamació inversa\",cent:\"Símbol de percentatge\",pound:\"Símbol de lliura\",curren:\"Símbol de moneda\",yen:\"Símbol de Yen\",brvbar:\"Barra trencada\",sect:\"Símbol de secció\",uml:\"Dièresi\",copy:\"Símbol de Copyright\",ordf:\"Indicador ordinal femení\",\nlaquo:\"Signe de cometes angulars esquerra\",not:\"Símbol de negació\",reg:\"Símbol registrat\",macr:\"Macron\",deg:\"Símbol de grau\",sup2:\"Superíndex dos\",sup3:\"Superíndex tres\",acute:\"Accent agut\",micro:\"Símbol de micro\",para:\"Símbol de calderó\",middot:\"Punt volat\",cedil:\"Ce trencada\",sup1:\"Superíndex u\",ordm:\"Indicador ordinal masculí\",raquo:\"Signe de cometes angulars dreta\",frac14:\"Fracció vulgar un quart\",frac12:\"Fracció vulgar una meitat\",frac34:\"Fracció vulgar tres quarts\",iquest:\"Símbol d'interrogació invertit\",\nAgrave:\"Lletra majúscula llatina A amb accent greu\",Aacute:\"Lletra majúscula llatina A amb accent agut\",Acirc:\"Lletra majúscula llatina A amb circumflex\",Atilde:\"Lletra majúscula llatina A amb titlla\",Auml:\"Lletra majúscula llatina A amb dièresi\",Aring:\"Lletra majúscula llatina A amb anell superior\",AElig:\"Lletra majúscula llatina Æ\",Ccedil:\"Lletra majúscula llatina C amb ce trencada\",Egrave:\"Lletra majúscula llatina E amb accent greu\",Eacute:\"Lletra majúscula llatina E amb accent agut\",Ecirc:\"Lletra majúscula llatina E amb circumflex\",\nEuml:\"Lletra majúscula llatina E amb dièresi\",Igrave:\"Lletra majúscula llatina I amb accent greu\",Iacute:\"Lletra majúscula llatina I amb accent agut\",Icirc:\"Lletra majúscula llatina I amb circumflex\",Iuml:\"Lletra majúscula llatina I amb dièresi\",ETH:\"Lletra majúscula llatina Eth\",Ntilde:\"Lletra majúscula llatina N amb titlla\",Ograve:\"Lletra majúscula llatina O amb accent greu\",Oacute:\"Lletra majúscula llatina O amb accent agut\",Ocirc:\"Lletra majúscula llatina O amb circumflex\",Otilde:\"Lletra majúscula llatina O amb titlla\",\nOuml:\"Lletra majúscula llatina O amb dièresi\",times:\"Símbol de multiplicació\",Oslash:\"Lletra majúscula llatina O amb barra\",Ugrave:\"Lletra majúscula llatina U amb accent greu\",Uacute:\"Lletra majúscula llatina U amb accent agut\",Ucirc:\"Lletra majúscula llatina U amb circumflex\",Uuml:\"Lletra majúscula llatina U amb dièresi\",Yacute:\"Lletra majúscula llatina Y amb accent agut\",THORN:\"Lletra majúscula llatina Thorn\",szlig:\"Lletra minúscula llatina sharp s\",agrave:\"Lletra minúscula llatina a amb accent greu\",\naacute:\"Lletra minúscula llatina a amb accent agut\",acirc:\"Lletra minúscula llatina a amb circumflex\",atilde:\"Lletra minúscula llatina a amb titlla\",auml:\"Lletra minúscula llatina a amb dièresi\",aring:\"Lletra minúscula llatina a amb anell superior\",aelig:\"Lletra minúscula llatina æ\",ccedil:\"Lletra minúscula llatina c amb ce trencada\",egrave:\"Lletra minúscula llatina e amb accent greu\",eacute:\"Lletra minúscula llatina e amb accent agut\",ecirc:\"Lletra minúscula llatina e amb circumflex\",euml:\"Lletra minúscula llatina e amb dièresi\",\nigrave:\"Lletra minúscula llatina i amb accent greu\",iacute:\"Lletra minúscula llatina i amb accent agut\",icirc:\"Lletra minúscula llatina i amb circumflex\",iuml:\"Lletra minúscula llatina i amb dièresi\",eth:\"Lletra minúscula llatina eth\",ntilde:\"Lletra minúscula llatina n amb titlla\",ograve:\"Lletra minúscula llatina o amb accent greu\",oacute:\"Lletra minúscula llatina o amb accent agut\",ocirc:\"Lletra minúscula llatina o amb circumflex\",otilde:\"Lletra minúscula llatina o amb titlla\",ouml:\"Lletra minúscula llatina o amb dièresi\",\ndivide:\"Símbol de divisió\",oslash:\"Lletra minúscula llatina o amb barra\",ugrave:\"Lletra minúscula llatina u amb accent greu\",uacute:\"Lletra minúscula llatina u amb accent agut\",ucirc:\"Lletra minúscula llatina u amb circumflex\",uuml:\"Lletra minúscula llatina u amb dièresi\",yacute:\"Lletra minúscula llatina y amb accent agut\",thorn:\"Lletra minúscula llatina thorn\",yuml:\"Lletra minúscula llatina y amb dièresi\",OElig:\"Lligadura majúscula llatina OE\",oelig:\"Lligadura minúscula llatina oe\",372:\"Lletra majúscula llatina W amb circumflex\",\n374:\"Lletra majúscula llatina Y amb circumflex\",373:\"Lletra minúscula llatina w amb circumflex\",375:\"Lletra minúscula llatina y amb circumflex\",sbquo:\"Signe de cita simple baixa-9\",8219:\"Signe de cita simple alta-invertida-9\",bdquo:\"Signe de cita doble baixa-9\",hellip:\"Punts suspensius\",trade:\"Símbol de marca registrada\",9658:\"Punter negre apuntant cap a la dreta\",bull:\"Vinyeta\",rarr:\"Fletxa cap a la dreta\",rArr:\"Doble fletxa cap a la dreta\",hArr:\"Doble fletxa esquerra dreta\",diams:\"Vestit negre diamant\",\nasymp:\"Gairebé igual a\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/cs.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"cs\",{euro:\"Znak eura\",lsquo:\"Počáteční uvozovka jednoduchá\",rsquo:\"Koncová uvozovka jednoduchá\",ldquo:\"Počáteční uvozovka dvojitá\",rdquo:\"Koncová uvozovka dvojitá\",ndash:\"En pomlčka\",mdash:\"Em pomlčka\",iexcl:\"Obrácený vykřičník\",cent:\"Znak centu\",pound:\"Znak libry\",curren:\"Znak měny\",yen:\"Znak jenu\",brvbar:\"Přerušená svislá čára\",sect:\"Znak oddílu\",uml:\"Přehláska\",copy:\"Znak copyrightu\",ordf:\"Ženský indikátor rodu\",laquo:\"Znak dvojitých lomených uvozovek vlevo\",\nnot:\"Logistický zápor\",reg:\"Znak registrace\",macr:\"Pomlčka nad\",deg:\"Znak stupně\",sup2:\"Dvojka jako horní index\",sup3:\"Trojka jako horní index\",acute:\"Čárka nad vpravo\",micro:\"Znak mikro\",para:\"Znak odstavce\",middot:\"Tečka uprostřed\",cedil:\"Ocásek vlevo\",sup1:\"Jednička jako horní index\",ordm:\"Mužský indikátor rodu\",raquo:\"Znak dvojitých lomených uvozovek vpravo\",frac14:\"Obyčejný zlomek jedna čtvrtina\",frac12:\"Obyčejný zlomek jedna polovina\",frac34:\"Obyčejný zlomek tři čtvrtiny\",iquest:\"Znak obráceného otazníku\",\nAgrave:\"Velké písmeno latinky A s čárkou nad vlevo\",Aacute:\"Velké písmeno latinky A s čárkou nad vpravo\",Acirc:\"Velké písmeno latinky A s vokáněm\",Atilde:\"Velké písmeno latinky A s tildou\",Auml:\"Velké písmeno latinky A s dvěma tečkami\",Aring:\"Velké písmeno latinky A s kroužkem nad\",AElig:\"Velké písmeno latinky Ae\",Ccedil:\"Velké písmeno latinky C s ocáskem vlevo\",Egrave:\"Velké písmeno latinky E s čárkou nad vlevo\",Eacute:\"Velké písmeno latinky E s čárkou nad vpravo\",Ecirc:\"Velké písmeno latinky E s vokáněm\",\nEuml:\"Velké písmeno latinky E s dvěma tečkami\",Igrave:\"Velké písmeno latinky I s čárkou nad vlevo\",Iacute:\"Velké písmeno latinky I s čárkou nad vpravo\",Icirc:\"Velké písmeno latinky I s vokáněm\",Iuml:\"Velké písmeno latinky I s dvěma tečkami\",ETH:\"Velké písmeno latinky Eth\",Ntilde:\"Velké písmeno latinky N s tildou\",Ograve:\"Velké písmeno latinky O s čárkou nad vlevo\",Oacute:\"Velké písmeno latinky O s čárkou nad vpravo\",Ocirc:\"Velké písmeno latinky O s vokáněm\",Otilde:\"Velké písmeno latinky O s tildou\",\nOuml:\"Velké písmeno latinky O s dvěma tečkami\",times:\"Znak násobení\",Oslash:\"Velké písmeno latinky O přeškrtnuté\",Ugrave:\"Velké písmeno latinky U s čárkou nad vlevo\",Uacute:\"Velké písmeno latinky U s čárkou nad vpravo\",Ucirc:\"Velké písmeno latinky U s vokáněm\",Uuml:\"Velké písmeno latinky U s dvěma tečkami\",Yacute:\"Velké písmeno latinky Y s čárkou nad vpravo\",THORN:\"Velké písmeno latinky Thorn\",szlig:\"Malé písmeno latinky ostré s\",agrave:\"Malé písmeno latinky a s čárkou nad vlevo\",aacute:\"Malé písmeno latinky a s čárkou nad vpravo\",\nacirc:\"Malé písmeno latinky a s vokáněm\",atilde:\"Malé písmeno latinky a s tildou\",auml:\"Malé písmeno latinky a s dvěma tečkami\",aring:\"Malé písmeno latinky a s kroužkem nad\",aelig:\"Malé písmeno latinky ae\",ccedil:\"Malé písmeno latinky c s ocáskem vlevo\",egrave:\"Malé písmeno latinky e s čárkou nad vlevo\",eacute:\"Malé písmeno latinky e s čárkou nad vpravo\",ecirc:\"Malé písmeno latinky e s vokáněm\",euml:\"Malé písmeno latinky e s dvěma tečkami\",igrave:\"Malé písmeno latinky i s čárkou nad vlevo\",iacute:\"Malé písmeno latinky i s čárkou nad vpravo\",\nicirc:\"Malé písmeno latinky i s vokáněm\",iuml:\"Malé písmeno latinky i s dvěma tečkami\",eth:\"Malé písmeno latinky eth\",ntilde:\"Malé písmeno latinky n s tildou\",ograve:\"Malé písmeno latinky o s čárkou nad vlevo\",oacute:\"Malé písmeno latinky o s čárkou nad vpravo\",ocirc:\"Malé písmeno latinky o s vokáněm\",otilde:\"Malé písmeno latinky o s tildou\",ouml:\"Malé písmeno latinky o s dvěma tečkami\",divide:\"Znak dělení\",oslash:\"Malé písmeno latinky o přeškrtnuté\",ugrave:\"Malé písmeno latinky u s čárkou nad vlevo\",\nuacute:\"Malé písmeno latinky u s čárkou nad vpravo\",ucirc:\"Malé písmeno latinky u s vokáněm\",uuml:\"Malé písmeno latinky u s dvěma tečkami\",yacute:\"Malé písmeno latinky y s čárkou nad vpravo\",thorn:\"Malé písmeno latinky thorn\",yuml:\"Malé písmeno latinky y s dvěma tečkami\",OElig:\"Velká ligatura latinky OE\",oelig:\"Malá ligatura latinky OE\",372:\"Velké písmeno latinky W s vokáněm\",374:\"Velké písmeno latinky Y s vokáněm\",373:\"Malé písmeno latinky w s vokáněm\",375:\"Malé písmeno latinky y s vokáněm\",sbquo:\"Dolní 9 uvozovka jednoduchá\",\n8219:\"Horní obrácená 9 uvozovka jednoduchá\",bdquo:\"Dolní 9 uvozovka dvojitá\",hellip:\"Trojtečkový úvod\",trade:\"Obchodní značka\",9658:\"Černý ukazatel směřující vpravo\",bull:\"Kolečko\",rarr:\"Šipka vpravo\",rArr:\"Dvojitá šipka vpravo\",hArr:\"Dvojitá šipka vlevo a vpravo\",diams:\"Černé piky\",asymp:\"Téměř se rovná\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/cy.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"cy\",{euro:\"Arwydd yr Ewro\",lsquo:\"Dyfynnod chwith unigol\",rsquo:\"Dyfynnod dde unigol\",ldquo:\"Dyfynnod chwith dwbl\",rdquo:\"Dyfynnod dde dwbl\",ndash:\"Cysylltnod en\",mdash:\"Cysylltnod em\",iexcl:\"Ebychnod gwrthdro\",cent:\"Arwydd sent\",pound:\"Arwydd punt\",curren:\"Arwydd arian cyfred\",yen:\"Arwydd yen\",brvbar:\"Bar toriedig\",sect:\"Arwydd adran\",uml:\"Didolnod\",copy:\"Arwydd hawlfraint\",ordf:\"Dangosydd benywaidd\",laquo:\"Dyfynnod dwbl ar ongl i'r chwith\",not:\"Arwydd Nid\",\nreg:\"Arwydd cofrestredig\",macr:\"Macron\",deg:\"Arwydd gradd\",sup2:\"Dau uwchsgript\",sup3:\"Tri uwchsgript\",acute:\"Acen ddyrchafedig\",micro:\"Arwydd micro\",para:\"Arwydd pilcrow\",middot:\"Dot canol\",cedil:\"Sedila\",sup1:\"Un uwchsgript\",ordm:\"Dangosydd gwrywaidd\",raquo:\"Dyfynnod dwbl ar ongl i'r dde\",frac14:\"Ffracsiwn cyffredin un cwarter\",frac12:\"Ffracsiwn cyffredin un hanner\",frac34:\"Ffracsiwn cyffredin tri chwarter\",iquest:\"Marc cwestiwn gwrthdroëdig\",Agrave:\"Priflythyren A Lladinaidd gydag acen ddisgynedig\",\nAacute:\"Priflythyren A Lladinaidd gydag acen ddyrchafedig\",Acirc:\"Priflythyren A Lladinaidd gydag acen grom\",Atilde:\"Priflythyren A Lladinaidd gyda thild\",Auml:\"Priflythyren A Lladinaidd gyda didolnod\",Aring:\"Priflythyren A Lladinaidd gyda chylch uwchben\",AElig:\"Priflythyren Æ Lladinaidd\",Ccedil:\"Priflythyren C Lladinaidd gyda sedila\",Egrave:\"Priflythyren E Lladinaidd gydag acen ddisgynedig\",Eacute:\"Priflythyren E Lladinaidd gydag acen ddyrchafedig\",Ecirc:\"Priflythyren E Lladinaidd gydag acen grom\",\nEuml:\"Priflythyren E Lladinaidd gyda didolnod\",Igrave:\"Priflythyren I Lladinaidd gydag acen ddisgynedig\",Iacute:\"Priflythyren I Lladinaidd gydag acen ddyrchafedig\",Icirc:\"Priflythyren I Lladinaidd gydag acen grom\",Iuml:\"Priflythyren I Lladinaidd gyda didolnod\",ETH:\"Priflythyren Eth\",Ntilde:\"Priflythyren N Lladinaidd gyda thild\",Ograve:\"Priflythyren O Lladinaidd gydag acen ddisgynedig\",Oacute:\"Priflythyren O Lladinaidd gydag acen ddyrchafedig\",Ocirc:\"Priflythyren O Lladinaidd gydag acen grom\",Otilde:\"Priflythyren O Lladinaidd gyda thild\",\nOuml:\"Priflythyren O Lladinaidd gyda didolnod\",times:\"Arwydd lluosi\",Oslash:\"Priflythyren O Lladinaidd gyda strôc\",Ugrave:\"Priflythyren U Lladinaidd gydag acen ddisgynedig\",Uacute:\"Priflythyren U Lladinaidd gydag acen ddyrchafedig\",Ucirc:\"Priflythyren U Lladinaidd gydag acen grom\",Uuml:\"Priflythyren U Lladinaidd gyda didolnod\",Yacute:\"Priflythyren Y Lladinaidd gydag acen ddyrchafedig\",THORN:\"Priflythyren Thorn\",szlig:\"Llythyren s fach Lladinaidd siarp \",agrave:\"Llythyren a fach Lladinaidd gydag acen ddisgynedig\",\naacute:\"Llythyren a fach Lladinaidd gydag acen ddyrchafedig\",acirc:\"Llythyren a fach Lladinaidd gydag acen grom\",atilde:\"Llythyren a fach Lladinaidd gyda thild\",auml:\"Llythyren a fach Lladinaidd gyda didolnod\",aring:\"Llythyren a fach Lladinaidd gyda chylch uwchben\",aelig:\"Llythyren æ fach Lladinaidd\",ccedil:\"Llythyren c fach Lladinaidd gyda sedila\",egrave:\"Llythyren e fach Lladinaidd gydag acen ddisgynedig\",eacute:\"Llythyren e fach Lladinaidd gydag acen ddyrchafedig\",ecirc:\"Llythyren e fach Lladinaidd gydag acen grom\",\neuml:\"Llythyren e fach Lladinaidd gyda didolnod\",igrave:\"Llythyren i fach Lladinaidd gydag acen ddisgynedig\",iacute:\"Llythyren i fach Lladinaidd gydag acen ddyrchafedig\",icirc:\"Llythyren i fach Lladinaidd gydag acen grom\",iuml:\"Llythyren i fach Lladinaidd gyda didolnod\",eth:\"Llythyren eth fach\",ntilde:\"Llythyren n fach Lladinaidd gyda thild\",ograve:\"Llythyren o fach Lladinaidd gydag acen ddisgynedig\",oacute:\"Llythyren o fach Lladinaidd gydag acen ddyrchafedig\",ocirc:\"Llythyren o fach Lladinaidd gydag acen grom\",\notilde:\"Llythyren o fach Lladinaidd gyda thild\",ouml:\"Llythyren o fach Lladinaidd gyda didolnod\",divide:\"Arwydd rhannu\",oslash:\"Llythyren o fach Lladinaidd gyda strôc\",ugrave:\"Llythyren u fach Lladinaidd gydag acen ddisgynedig\",uacute:\"Llythyren u fach Lladinaidd gydag acen ddyrchafedig\",ucirc:\"Llythyren u fach Lladinaidd gydag acen grom\",uuml:\"Llythyren u fach Lladinaidd gyda didolnod\",yacute:\"Llythyren y fach Lladinaidd gydag acen ddisgynedig\",thorn:\"Llythyren o fach Lladinaidd gyda strôc\",yuml:\"Llythyren y fach Lladinaidd gyda didolnod\",\nOElig:\"Priflythyren cwlwm OE Lladinaidd \",oelig:\"Priflythyren cwlwm oe Lladinaidd \",372:\"Priflythyren W gydag acen grom\",374:\"Priflythyren Y gydag acen grom\",373:\"Llythyren w fach gydag acen grom\",375:\"Llythyren y fach gydag acen grom\",sbquo:\"Dyfynnod sengl 9-isel\",8219:\"Dyfynnod sengl 9-uchel cildro\",bdquo:\"Dyfynnod dwbl 9-isel\",hellip:\"Coll geiriau llorweddol\",trade:\"Arwydd marc masnachol\",9658:\"Pwyntydd du i'r dde\",bull:\"Bwled\",rarr:\"Saeth i'r dde\",rArr:\"Saeth ddwbl i'r dde\",hArr:\"Saeth ddwbl i'r chwith\",\ndiams:\"Siwt diemwnt du\",asymp:\"Bron yn hafal iddo\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/de.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"de\",{euro:\"Euro Zeichen\",lsquo:\"Hochkomma links\",rsquo:\"Hochkomma rechts\",ldquo:\"Anführungszeichen links\",rdquo:\"Anführungszeichen rechts\",ndash:\"kleiner Strich\",mdash:\"mittlerer Strich\",iexcl:\"invertiertes Ausrufezeichen\",cent:\"Cent\",pound:\"Pfund\",curren:\"Währung\",yen:\"Yen\",brvbar:\"gestrichelte Linie\",sect:\"§ Zeichen\",uml:\"Diäresis\",copy:\"Copyright\",ordf:\"Feminine ordinal Anzeige\",laquo:\"Nach links zeigenden Doppel-Winkel Anführungszeichen\",not:\"Not-Zeichen\",\nreg:\"Registriert\",macr:\"Längezeichen\",deg:\"Grad\",sup2:\"Hoch 2\",sup3:\"Hoch 3\",acute:\"Akzentzeichen \",micro:\"Micro\",para:\"Pilcrow-Zeichen\",middot:\"Mittelpunkt\",cedil:\"Cedilla\",sup1:\"Hoch 1\",ordm:\"Männliche Ordnungszahl Anzeige\",raquo:\"Nach rechts zeigenden Doppel-Winkel Anführungszeichen\",frac14:\"ein Viertel\",frac12:\"Hälfte\",frac34:\"Dreiviertel\",iquest:\"Umgekehrtes Fragezeichen\",Agrave:\"Lateinischer Buchstabe A mit AkzentGrave\",Aacute:\"Lateinischer Buchstabe A mit Akutakzent\",Acirc:\"Lateinischer Buchstabe A mit Zirkumflex\",\nAtilde:\"Lateinischer Buchstabe A mit Tilde\",Auml:\"Lateinischer Buchstabe A mit Trema\",Aring:\"Lateinischer Buchstabe A mit Ring oben\",AElig:\"Lateinischer Buchstabe Æ\",Ccedil:\"Lateinischer Buchstabe C mit Cedille\",Egrave:\"Lateinischer Buchstabe E mit AkzentGrave\",Eacute:\"Lateinischer Buchstabe E mit Akutakzent\",Ecirc:\"Lateinischer Buchstabe E mit Zirkumflex\",Euml:\"Lateinischer Buchstabe E Trema\",Igrave:\"Lateinischer Buchstabe I mit AkzentGrave\",Iacute:\"Lateinischer Buchstabe I mit Akutakzent\",Icirc:\"Lateinischer Buchstabe I mit Zirkumflex\",\nIuml:\"Lateinischer Buchstabe I mit Trema\",ETH:\"Lateinischer Buchstabe Eth\",Ntilde:\"Lateinischer Buchstabe N mit Tilde\",Ograve:\"Lateinischer Buchstabe O mit AkzentGrave\",Oacute:\"Lateinischer Buchstabe O mit Akutakzent\",Ocirc:\"Lateinischer Buchstabe O mit Zirkumflex\",Otilde:\"Lateinischer Buchstabe O mit Tilde\",Ouml:\"Lateinischer Buchstabe O mit Trema\",times:\"Multiplikation\",Oslash:\"Lateinischer Buchstabe O durchgestrichen\",Ugrave:\"Lateinischer Buchstabe U mit Akzentgrave\",Uacute:\"Lateinischer Buchstabe U mit Akutakzent\",\nUcirc:\"Lateinischer Buchstabe U mit Zirkumflex\",Uuml:\"Lateinischer Buchstabe a mit Trema\",Yacute:\"Lateinischer Buchstabe a mit Akzent\",THORN:\"Lateinischer Buchstabe mit Dorn\",szlig:\"Kleiner lateinischer Buchstabe scharfe s\",agrave:\"Kleiner lateinischer Buchstabe a mit Accent grave\",aacute:\"Kleiner lateinischer Buchstabe a mit Akut\",acirc:\"Lateinischer Buchstabe a mit Zirkumflex\",atilde:\"Lateinischer Buchstabe a mit Tilde\",auml:\"Kleiner lateinischer Buchstabe a mit Trema\",aring:\"Kleiner lateinischer Buchstabe a mit Ring oben\",\naelig:\"Lateinischer Buchstabe æ\",ccedil:\"Kleiner lateinischer Buchstabe c mit Cedille\",egrave:\"Kleiner lateinischer Buchstabe e mit Accent grave\",eacute:\"Kleiner lateinischer Buchstabe e mit Akut\",ecirc:\"Kleiner lateinischer Buchstabe e mit Zirkumflex\",euml:\"Kleiner lateinischer Buchstabe e mit Trema\",igrave:\"Kleiner lateinischer Buchstabe i mit AkzentGrave\",iacute:\"Kleiner lateinischer Buchstabe i mit Akzent\",icirc:\"Kleiner lateinischer Buchstabe i mit Zirkumflex\",iuml:\"Kleiner lateinischer Buchstabe i mit Trema\",\neth:\"Kleiner lateinischer Buchstabe eth\",ntilde:\"Kleiner lateinischer Buchstabe n mit Tilde\",ograve:\"Kleiner lateinischer Buchstabe o mit Accent grave\",oacute:\"Kleiner lateinischer Buchstabe o mit Akzent\",ocirc:\"Kleiner lateinischer Buchstabe o mit Zirkumflex\",otilde:\"Lateinischer Buchstabe i mit Tilde\",ouml:\"Kleiner lateinischer Buchstabe o mit Trema\",divide:\"Divisionszeichen\",oslash:\"Kleiner lateinischer Buchstabe o durchgestrichen\",ugrave:\"Kleiner lateinischer Buchstabe u mit Accent grave\",uacute:\"Kleiner lateinischer Buchstabe u mit Akut\",\nucirc:\"Kleiner lateinischer Buchstabe u mit Zirkumflex\",uuml:\"Kleiner lateinischer Buchstabe u mit Trema\",yacute:\"Kleiner lateinischer Buchstabe y mit Akut\",thorn:\"Kleiner lateinischer Buchstabe Dorn\",yuml:\"Kleiner lateinischer Buchstabe y mit Trema\",OElig:\"Lateinischer Buchstabe Ligatur OE\",oelig:\"Kleiner lateinischer Buchstabe Ligatur OE\",372:\"Lateinischer Buchstabe W mit Zirkumflex\",374:\"Lateinischer Buchstabe Y mit Zirkumflex\",373:\"Kleiner lateinischer Buchstabe w mit Zirkumflex\",375:\"Kleiner lateinischer Buchstabe y mit Zirkumflex\",\nsbquo:\"Tiefergestelltes Komma\",8219:\"Rumgedrehtes Komma\",bdquo:\"Doppeltes Anführungszeichen unten\",hellip:\"horizontale Auslassungspunkte\",trade:\"Handelszeichen\",9658:\"Dreickspfeil rechts\",bull:\"Bullet\",rarr:\"Pfeil rechts\",rArr:\"Doppelpfeil rechts\",hArr:\"Doppelpfeil links\",diams:\"Karo\",asymp:\"Ungefähr\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/el.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"el\",{euro:\"Σύμβολο Ευρώ\",lsquo:\"Αριστερός χαρακτήρας μονού εισαγωγικού\",rsquo:\"Δεξιός χαρακτήρας μονού εισαγωγικού\",ldquo:\"Αριστερός χαρακτήρας διπλού εισαγωγικού\",rdquo:\"Δεξιός χαρακτήρας διπλού εισαγωγικού\",ndash:\"Παύλα en\",mdash:\"Παύλα em\",iexcl:\"Ανάποδο θαυμαστικό\",cent:\"Σύμβολο σεντ\",pound:\"Σύμβολο λίρας\",curren:\"Σύμβολο συναλλαγματικής μονάδας\",yen:\"Σύμβολο Γιεν\",brvbar:\"Σπασμένη μπάρα\",sect:\"Σύμβολο τμήματος\",uml:\"Διαίρεση\",copy:\"Σύμβολο πνευματικών δικαιωμάτων\",\nordf:\"Feminine ordinal indicator\",laquo:\"Αριστερός χαρακτήρας διπλού εισαγωγικού\",not:\"Not sign\",reg:\"Σύμβολο σημάτων κατατεθέν\",macr:\"Μακρόν\",deg:\"Σύμβολο βαθμού\",sup2:\"Εκτεθειμένο δύο\",sup3:\"Εκτεθειμένο τρία\",acute:\"Οξεία\",micro:\"Σύμβολο μικρού\",para:\"Σύμβολο παραγράφου\",middot:\"Μέση τελεία\",cedil:\"Υπογεγραμμένη\",sup1:\"Εκτεθειμένο ένα\",ordm:\"Masculine ordinal indicator\",raquo:\"Right-pointing double angle quotation mark\",frac14:\"Γνήσιο κλάσμα ενός τετάρτου\",frac12:\"Γνήσιο κλάσμα ενός δεύτερου\",frac34:\"Γνήσιο κλάσμα τριών τετάρτων\",\niquest:\"Ανάποδο θαυμαστικό\",Agrave:\"Λατινικό κεφαλαίο γράμμα A με βαρεία\",Aacute:\"Λατινικό κεφαλαίο γράμμα A με οξεία\",Acirc:\"Λατινικό κεφαλαίο γράμμα A με περισπωμένη\",Atilde:\"Λατινικό κεφαλαίο γράμμα A με περισπωμένη\",Auml:\"Λατινικό κεφαλαίο γράμμα A με διαλυτικά\",Aring:\"Λατινικό κεφαλαίο γράμμα A με δακτύλιο επάνω\",AElig:\"Λατινικό κεφαλαίο γράμμα Æ\",Ccedil:\"Λατινικό κεφαλαίο γράμμα C με υπογεγραμμένη\",Egrave:\"Λατινικό κεφαλαίο γράμμα E με βαρεία\",Eacute:\"Λατινικό κεφαλαίο γράμμα E με οξεία\",Ecirc:\"Λατινικό κεφαλαίο γράμμα Ε με περισπωμένη \",\nEuml:\"Λατινικό κεφαλαίο γράμμα Ε με διαλυτικά\",Igrave:\"Λατινικό κεφαλαίο γράμμα I με βαρεία\",Iacute:\"Λατινικό κεφαλαίο γράμμα I με οξεία\",Icirc:\"Λατινικό κεφαλαίο γράμμα I  με περισπωμένη\",Iuml:\"Λατινικό κεφαλαίο γράμμα I με διαλυτικά \",ETH:\"Λατινικό κεφαλαίο γράμμα Eth\",Ntilde:\"Λατινικό κεφαλαίο γράμμα N με περισπωμένη\",Ograve:\"Λατινικό κεφαλαίο γράμμα O με βαρεία\",Oacute:\"Λατινικό κεφαλαίο γράμμα O με οξεία\",Ocirc:\"Λατινικό κεφαλαίο γράμμα O με περισπωμένη \",Otilde:\"Λατινικό κεφαλαίο γράμμα O με περισπωμένη\",\nOuml:\"Λατινικό κεφαλαίο γράμμα O με διαλυτικά\",times:\"Σύμβολο πολλαπλασιασμού\",Oslash:\"Λατινικό κεφαλαίο γράμμα O με μολυβιά\",Ugrave:\"Λατινικό κεφαλαίο γράμμα U με βαρεία\",Uacute:\"Λατινικό κεφαλαίο γράμμα U με οξεία\",Ucirc:\"Λατινικό κεφαλαίο γράμμα U με περισπωμένη\",Uuml:\"Λατινικό κεφαλαίο γράμμα U με διαλυτικά\",Yacute:\"Λατινικό κεφαλαίο γράμμα Y με οξεία\",THORN:\"Λατινικό κεφαλαίο γράμμα Thorn\",szlig:\"Λατινικό μικρό γράμμα απότομο s\",agrave:\"Λατινικό μικρό γράμμα a με βαρεία\",aacute:\"Λατινικό μικρό γράμμα a με οξεία\",\nacirc:\"Λατινικό μικρό γράμμα a με περισπωμένη\",atilde:\"Λατινικό μικρό γράμμα a με περισπωμένη\",auml:\"Λατινικό μικρό γράμμα a με διαλυτικά\",aring:\"Λατινικό μικρό γράμμα a με δακτύλιο πάνω\",aelig:\"Λατινικό μικρό γράμμα æ\",ccedil:\"Λατινικό μικρό γράμμα c με υπογεγραμμένη\",egrave:\"Λατινικό μικρό γράμμα ε με βαρεία\",eacute:\"Λατινικό μικρό γράμμα e με οξεία\",ecirc:\"Λατινικό μικρό γράμμα e με περισπωμένη\",euml:\"Λατινικό μικρό γράμμα e με διαλυτικά\",igrave:\"Λατινικό μικρό γράμμα i με βαρεία\",iacute:\"Λατινικό μικρό γράμμα i με οξεία\",\nicirc:\"Λατινικό μικρό γράμμα i με περισπωμένη\",iuml:\"Λατινικό μικρό γράμμα i με διαλυτικά\",eth:\"Λατινικό μικρό γράμμα eth\",ntilde:\"Λατινικό μικρό γράμμα n με περισπωμένη\",ograve:\"Λατινικό μικρό γράμμα o με βαρεία\",oacute:\"Λατινικό μικρό γράμμα o με οξεία \",ocirc:\"Λατινικό πεζό γράμμα o με περισπωμένη\",otilde:\"Λατινικό μικρό γράμμα o με περισπωμένη \",ouml:\"Λατινικό μικρό γράμμα o με διαλυτικά\",divide:\"Σύμβολο διαίρεσης\",oslash:\"Λατινικό μικρό γράμμα o με περισπωμένη\",ugrave:\"Λατινικό μικρό γράμμα u με βαρεία\",\nuacute:\"Λατινικό μικρό γράμμα u με οξεία\",ucirc:\"Λατινικό μικρό γράμμα u με περισπωμένη\",uuml:\"Λατινικό μικρό γράμμα u με διαλυτικά\",yacute:\"Λατινικό μικρό γράμμα y με οξεία\",thorn:\"Λατινικό μικρό γράμμα thorn\",yuml:\"Λατινικό μικρό γράμμα y με διαλυτικά\",OElig:\"Λατινικό κεφαλαίο σύμπλεγμα ΟΕ\",oelig:\"Λατινικό μικρό σύμπλεγμα oe\",372:\"Λατινικό κεφαλαίο γράμμα W με περισπωμένη\",374:\"Λατινικό κεφαλαίο γράμμα Y με περισπωμένη\",373:\"Λατινικό μικρό γράμμα w με περισπωμένη\",375:\"Λατινικό μικρό γράμμα y με περισπωμένη\",\nsbquo:\"Single low-9 quotation mark\",8219:\"Single high-reversed-9 quotation mark\",bdquo:\"Double low-9 quotation mark\",hellip:\"Οριζόντια αποσιωπητικά\",trade:\"Σύμβολο εμπορικού κατατεθέν\",9658:\"Μαύρος δείκτης που δείχνει προς τα δεξιά\",bull:\"Κουκκίδα\",rarr:\"Δεξί βελάκι\",rArr:\"Διπλό δεξί βελάκι\",hArr:\"Διπλό βελάκι αριστερά-δεξιά\",diams:\"Μαύρο διαμάντι\",asymp:\"Σχεδόν ίσο με\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/en-gb.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"en-gb\",{euro:\"Euro sign\",lsquo:\"Left single quotation mark\",rsquo:\"Right single quotation mark\",ldquo:\"Left double quotation mark\",rdquo:\"Right double quotation mark\",ndash:\"En dash\",mdash:\"Em dash\",iexcl:\"Inverted exclamation mark\",cent:\"Cent sign\",pound:\"Pound sign\",curren:\"Currency sign\",yen:\"Yen sign\",brvbar:\"Broken bar\",sect:\"Section sign\",uml:\"Diaeresis\",copy:\"Copyright sign\",ordf:\"Feminine ordinal indicator\",laquo:\"Left-pointing double angle quotation mark\",\nnot:\"Not sign\",reg:\"Registered sign\",macr:\"Macron\",deg:\"Degree sign\",sup2:\"Superscript two\",sup3:\"Superscript three\",acute:\"Acute accent\",micro:\"Micro sign\",para:\"Pilcrow sign\",middot:\"Middle dot\",cedil:\"Cedilla\",sup1:\"Superscript one\",ordm:\"Masculine ordinal indicator\",raquo:\"Right-pointing double angle quotation mark\",frac14:\"Vulgar fraction one quarter\",frac12:\"Vulgar fraction one half\",frac34:\"Vulgar fraction three quarters\",iquest:\"Inverted question mark\",Agrave:\"Latin capital letter A with grave accent\",\nAacute:\"Latin capital letter A with acute accent\",Acirc:\"Latin capital letter A with circumflex\",Atilde:\"Latin capital letter A with tilde\",Auml:\"Latin capital letter A with diaeresis\",Aring:\"Latin capital letter A with ring above\",AElig:\"Latin Capital letter Æ\",Ccedil:\"Latin capital letter C with cedilla\",Egrave:\"Latin capital letter E with grave accent\",Eacute:\"Latin capital letter E with acute accent\",Ecirc:\"Latin capital letter E with circumflex\",Euml:\"Latin capital letter E with diaeresis\",Igrave:\"Latin capital letter I with grave accent\",\nIacute:\"Latin capital letter I with acute accent\",Icirc:\"Latin capital letter I with circumflex\",Iuml:\"Latin capital letter I with diaeresis\",ETH:\"Latin capital letter Eth\",Ntilde:\"Latin capital letter N with tilde\",Ograve:\"Latin capital letter O with grave accent\",Oacute:\"Latin capital letter O with acute accent\",Ocirc:\"Latin capital letter O with circumflex\",Otilde:\"Latin capital letter O with tilde\",Ouml:\"Latin capital letter O with diaeresis\",times:\"Multiplication sign\",Oslash:\"Latin capital letter O with stroke\",\nUgrave:\"Latin capital letter U with grave accent\",Uacute:\"Latin capital letter U with acute accent\",Ucirc:\"Latin capital letter U with circumflex\",Uuml:\"Latin capital letter U with diaeresis\",Yacute:\"Latin capital letter Y with acute accent\",THORN:\"Latin capital letter Thorn\",szlig:\"Latin small letter sharp s\",agrave:\"Latin small letter a with grave accent\",aacute:\"Latin small letter a with acute accent\",acirc:\"Latin small letter a with circumflex\",atilde:\"Latin small letter a with tilde\",auml:\"Latin small letter a with diaeresis\",\naring:\"Latin small letter a with ring above\",aelig:\"Latin small letter æ\",ccedil:\"Latin small letter c with cedilla\",egrave:\"Latin small letter e with grave accent\",eacute:\"Latin small letter e with acute accent\",ecirc:\"Latin small letter e with circumflex\",euml:\"Latin small letter e with diaeresis\",igrave:\"Latin small letter i with grave accent\",iacute:\"Latin small letter i with acute accent\",icirc:\"Latin small letter i with circumflex\",iuml:\"Latin small letter i with diaeresis\",eth:\"Latin small letter eth\",\nntilde:\"Latin small letter n with tilde\",ograve:\"Latin small letter o with grave accent\",oacute:\"Latin small letter o with acute accent\",ocirc:\"Latin small letter o with circumflex\",otilde:\"Latin small letter o with tilde\",ouml:\"Latin small letter o with diaeresis\",divide:\"Division sign\",oslash:\"Latin small letter o with stroke\",ugrave:\"Latin small letter u with grave accent\",uacute:\"Latin small letter u with acute accent\",ucirc:\"Latin small letter u with circumflex\",uuml:\"Latin small letter u with diaeresis\",\nyacute:\"Latin small letter y with acute accent\",thorn:\"Latin small letter thorn\",yuml:\"Latin small letter y with diaeresis\",OElig:\"Latin capital ligature OE\",oelig:\"Latin small ligature oe\",372:\"Latin capital letter W with circumflex\",374:\"Latin capital letter Y with circumflex\",373:\"Latin small letter w with circumflex\",375:\"Latin small letter y with circumflex\",sbquo:\"Single low-9 quotation mark\",8219:\"Single high-reversed-9 quotation mark\",bdquo:\"Double low-9 quotation mark\",hellip:\"Horizontal ellipsis\",\ntrade:\"Trade mark sign\",9658:\"Black right-pointing pointer\",bull:\"Bullet\",rarr:\"Rightwards arrow\",rArr:\"Rightwards double arrow\",hArr:\"Left right double arrow\",diams:\"Black diamond suit\",asymp:\"Almost equal to\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/en.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"en\",{euro:\"Euro sign\",lsquo:\"Left single quotation mark\",rsquo:\"Right single quotation mark\",ldquo:\"Left double quotation mark\",rdquo:\"Right double quotation mark\",ndash:\"En dash\",mdash:\"Em dash\",iexcl:\"Inverted exclamation mark\",cent:\"Cent sign\",pound:\"Pound sign\",curren:\"Currency sign\",yen:\"Yen sign\",brvbar:\"Broken bar\",sect:\"Section sign\",uml:\"Diaeresis\",copy:\"Copyright sign\",ordf:\"Feminine ordinal indicator\",laquo:\"Left-pointing double angle quotation mark\",\nnot:\"Not sign\",reg:\"Registered sign\",macr:\"Macron\",deg:\"Degree sign\",sup2:\"Superscript two\",sup3:\"Superscript three\",acute:\"Acute accent\",micro:\"Micro sign\",para:\"Pilcrow sign\",middot:\"Middle dot\",cedil:\"Cedilla\",sup1:\"Superscript one\",ordm:\"Masculine ordinal indicator\",raquo:\"Right-pointing double angle quotation mark\",frac14:\"Vulgar fraction one quarter\",frac12:\"Vulgar fraction one half\",frac34:\"Vulgar fraction three quarters\",iquest:\"Inverted question mark\",Agrave:\"Latin capital letter A with grave accent\",\nAacute:\"Latin capital letter A with acute accent\",Acirc:\"Latin capital letter A with circumflex\",Atilde:\"Latin capital letter A with tilde\",Auml:\"Latin capital letter A with diaeresis\",Aring:\"Latin capital letter A with ring above\",AElig:\"Latin Capital letter Æ\",Ccedil:\"Latin capital letter C with cedilla\",Egrave:\"Latin capital letter E with grave accent\",Eacute:\"Latin capital letter E with acute accent\",Ecirc:\"Latin capital letter E with circumflex\",Euml:\"Latin capital letter E with diaeresis\",Igrave:\"Latin capital letter I with grave accent\",\nIacute:\"Latin capital letter I with acute accent\",Icirc:\"Latin capital letter I with circumflex\",Iuml:\"Latin capital letter I with diaeresis\",ETH:\"Latin capital letter Eth\",Ntilde:\"Latin capital letter N with tilde\",Ograve:\"Latin capital letter O with grave accent\",Oacute:\"Latin capital letter O with acute accent\",Ocirc:\"Latin capital letter O with circumflex\",Otilde:\"Latin capital letter O with tilde\",Ouml:\"Latin capital letter O with diaeresis\",times:\"Multiplication sign\",Oslash:\"Latin capital letter O with stroke\",\nUgrave:\"Latin capital letter U with grave accent\",Uacute:\"Latin capital letter U with acute accent\",Ucirc:\"Latin capital letter U with circumflex\",Uuml:\"Latin capital letter U with diaeresis\",Yacute:\"Latin capital letter Y with acute accent\",THORN:\"Latin capital letter Thorn\",szlig:\"Latin small letter sharp s\",agrave:\"Latin small letter a with grave accent\",aacute:\"Latin small letter a with acute accent\",acirc:\"Latin small letter a with circumflex\",atilde:\"Latin small letter a with tilde\",auml:\"Latin small letter a with diaeresis\",\naring:\"Latin small letter a with ring above\",aelig:\"Latin small letter æ\",ccedil:\"Latin small letter c with cedilla\",egrave:\"Latin small letter e with grave accent\",eacute:\"Latin small letter e with acute accent\",ecirc:\"Latin small letter e with circumflex\",euml:\"Latin small letter e with diaeresis\",igrave:\"Latin small letter i with grave accent\",iacute:\"Latin small letter i with acute accent\",icirc:\"Latin small letter i with circumflex\",iuml:\"Latin small letter i with diaeresis\",eth:\"Latin small letter eth\",\nntilde:\"Latin small letter n with tilde\",ograve:\"Latin small letter o with grave accent\",oacute:\"Latin small letter o with acute accent\",ocirc:\"Latin small letter o with circumflex\",otilde:\"Latin small letter o with tilde\",ouml:\"Latin small letter o with diaeresis\",divide:\"Division sign\",oslash:\"Latin small letter o with stroke\",ugrave:\"Latin small letter u with grave accent\",uacute:\"Latin small letter u with acute accent\",ucirc:\"Latin small letter u with circumflex\",uuml:\"Latin small letter u with diaeresis\",\nyacute:\"Latin small letter y with acute accent\",thorn:\"Latin small letter thorn\",yuml:\"Latin small letter y with diaeresis\",OElig:\"Latin capital ligature OE\",oelig:\"Latin small ligature oe\",372:\"Latin capital letter W with circumflex\",374:\"Latin capital letter Y with circumflex\",373:\"Latin small letter w with circumflex\",375:\"Latin small letter y with circumflex\",sbquo:\"Single low-9 quotation mark\",8219:\"Single high-reversed-9 quotation mark\",bdquo:\"Double low-9 quotation mark\",hellip:\"Horizontal ellipsis\",\ntrade:\"Trade mark sign\",9658:\"Black right-pointing pointer\",bull:\"Bullet\",rarr:\"Rightwards arrow\",rArr:\"Rightwards double arrow\",hArr:\"Left right double arrow\",diams:\"Black diamond suit\",asymp:\"Almost equal to\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/eo.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"eo\",{euro:\"Eŭrosigno\",lsquo:\"Supra 6-citilo\",rsquo:\"Supra 9-citilo\",ldquo:\"Supra 66-citilo\",rdquo:\"Supra 99-citilo\",ndash:\"Streketo\",mdash:\"Substreko\",iexcl:\"Renversita krisigno\",cent:\"Cendosigno\",pound:\"Pundosigno\",curren:\"Monersigno\",yen:\"Enosigno\",brvbar:\"Rompita vertikala streko\",sect:\"Kurba paragrafo\",uml:\"Tremao\",copy:\"Kopirajtosigno\",ordf:\"Adjektiva numerfinaĵo\",laquo:\"Duobla malplio-citilo\",not:\"Negohoko\",reg:\"Registrita marko\",macr:\"Superstreko\",deg:\"Gradosigno\",\nsup2:\"Supra indico 2\",sup3:\"Supra indico 3\",acute:\"Dekstra korno\",micro:\"Mikrosigno\",para:\"Rekta paragrafo\",middot:\"Meza punkto\",cedil:\"Zoeto\",sup1:\"Supra indico 1\",ordm:\"Substantiva numerfinaĵo\",raquo:\"Duobla plio-citilo\",frac14:\"Kvaronosigno\",frac12:\"Duonosigno\",frac34:\"Trikvaronosigno\",iquest:\"renversita demandosigno\",Agrave:\"Latina ĉeflitero A kun liva korno\",Aacute:\"Latina ĉeflitero A kun dekstra korno\",Acirc:\"Latina ĉeflitero A kun ĉapelo\",Atilde:\"Latina ĉeflitero A kun tildo\",Auml:\"Latina ĉeflitero A kun tremao\",\nAring:\"Latina ĉeflitero A kun superringo\",AElig:\"Latina ĉeflitera ligaturo Æ\",Ccedil:\"Latina ĉeflitero C kun zoeto\",Egrave:\"Latina ĉeflitero E kun liva korno\",Eacute:\"Latina ĉeflitero E kun dekstra korno\",Ecirc:\"Latina ĉeflitero E kun ĉapelo\",Euml:\"Latina ĉeflitero E kun tremao\",Igrave:\"Latina ĉeflitero I kun liva korno\",Iacute:\"Latina ĉeflitero I kun dekstra korno\",Icirc:\"Latina ĉeflitero I kun ĉapelo\",Iuml:\"Latina ĉeflitero I kun tremao\",ETH:\"Latina ĉeflitero islanda edo\",Ntilde:\"Latina ĉeflitero N kun tildo\",\nOgrave:\"Latina ĉeflitero O kun liva korno\",Oacute:\"Latina ĉeflitero O kun dekstra korno\",Ocirc:\"Latina ĉeflitero O kun ĉapelo\",Otilde:\"Latina ĉeflitero O kun tildo\",Ouml:\"Latina ĉeflitero O kun tremao\",times:\"Multipliko\",Oslash:\"Latina ĉeflitero O trastrekita\",Ugrave:\"Latina ĉeflitero U kun liva korno\",Uacute:\"Latina ĉeflitero U kun dekstra korno\",Ucirc:\"Latina ĉeflitero U kun ĉapelo\",Uuml:\"Latina ĉeflitero U kun tremao\",Yacute:\"Latina ĉeflitero Y kun dekstra korno\",THORN:\"Latina ĉeflitero islanda dorno\",\nszlig:\"Latina etlitero germana sozo (akra s)\",agrave:\"Latina etlitero a kun liva korno\",aacute:\"Latina etlitero a kun dekstra korno\",acirc:\"Latina etlitero a kun ĉapelo\",atilde:\"Latina etlitero a kun tildo\",auml:\"Latina etlitero a kun tremao\",aring:\"Latina etlitero a kun superringo\",aelig:\"Latina etlitera ligaturo æ\",ccedil:\"Latina etlitero c kun zoeto\",egrave:\"Latina etlitero e kun liva korno\",eacute:\"Latina etlitero e kun dekstra korno\",ecirc:\"Latina etlitero e kun ĉapelo\",euml:\"Latina etlitero e kun tremao\",\nigrave:\"Latina etlitero i kun liva korno\",iacute:\"Latina etlitero i kun dekstra korno\",icirc:\"Latina etlitero i kun ĉapelo\",iuml:\"Latina etlitero i kun tremao\",eth:\"Latina etlitero islanda edo\",ntilde:\"Latina etlitero n kun tildo\",ograve:\"Latina etlitero o kun liva korno\",oacute:\"Latina etlitero o kun dekstra korno\",ocirc:\"Latina etlitero o kun ĉapelo\",otilde:\"Latina etlitero o kun tildo\",ouml:\"Latina etlitero o kun tremao\",divide:\"Dividosigno\",oslash:\"Latina etlitero o trastrekita\",ugrave:\"Latina etlitero u kun liva korno\",\nuacute:\"Latina etlitero u kun dekstra korno\",ucirc:\"Latina etlitero u kun ĉapelo\",uuml:\"Latina etlitero u kun tremao\",yacute:\"Latina etlitero y kun dekstra korno\",thorn:\"Latina etlitero islanda dorno\",yuml:\"Latina etlitero y kun tremao\",OElig:\"Latina ĉeflitera ligaturo Œ\",oelig:\"Latina etlitera ligaturo œ\",372:\"Latina ĉeflitero W kun ĉapelo\",374:\"Latina ĉeflitero Y kun ĉapelo\",373:\"Latina etlitero w kun ĉapelo\",375:\"Latina etlitero y kun ĉapelo\",sbquo:\"Suba 9-citilo\",8219:\"Supra renversita 9-citilo\",\nbdquo:\"Suba 99-citilo\",hellip:\"Tripunkto\",trade:\"Varmarka signo\",9658:\"Nigra sago dekstren\",bull:\"Bulmarko\",rarr:\"Sago dekstren\",rArr:\"Duobla sago dekstren\",hArr:\"Duobla sago maldekstren\",diams:\"Nigra kvadrato\",asymp:\"Preskaŭ egala\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/es.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"es\",{euro:\"Símbolo de euro\",lsquo:\"Comilla simple izquierda\",rsquo:\"Comilla simple derecha\",ldquo:\"Comilla doble izquierda\",rdquo:\"Comilla doble derecha\",ndash:\"Guión corto\",mdash:\"Guión medio largo\",iexcl:\"Signo de admiración invertido\",cent:\"Símbolo centavo\",pound:\"Símbolo libra\",curren:\"Símbolo moneda\",yen:\"Símbolo yen\",brvbar:\"Barra vertical rota\",sect:\"Símbolo sección\",uml:\"Diéresis\",copy:\"Signo de derechos de autor\",ordf:\"Indicador ordinal femenino\",laquo:\"Abre comillas angulares\",\nnot:\"Signo negación\",reg:\"Signo de marca registrada\",macr:\"Guión alto\",deg:\"Signo de grado\",sup2:\"Superíndice dos\",sup3:\"Superíndice tres\",acute:\"Acento agudo\",micro:\"Signo micro\",para:\"Signo de pi\",middot:\"Punto medio\",cedil:\"Cedilla\",sup1:\"Superíndice uno\",ordm:\"Indicador orginal masculino\",raquo:\"Cierra comillas angulares\",frac14:\"Fracción ordinaria de un quarto\",frac12:\"Fracción ordinaria de una mitad\",frac34:\"Fracción ordinaria de tres cuartos\",iquest:\"Signo de interrogación invertido\",Agrave:\"Letra A latina mayúscula con acento grave\",\nAacute:\"Letra A latina  mayúscula con acento agudo\",Acirc:\"Letra A latina mayúscula con acento circunflejo\",Atilde:\"Letra A latina mayúscula con tilde\",Auml:\"Letra A latina mayúscula con diéresis\",Aring:\"Letra A latina mayúscula con aro arriba\",AElig:\"Letra Æ latina mayúscula\",Ccedil:\"Letra C latina mayúscula con cedilla\",Egrave:\"Letra E latina mayúscula con acento grave\",Eacute:\"Letra E latina mayúscula con acento agudo\",Ecirc:\"Letra E latina mayúscula con acento circunflejo\",Euml:\"Letra E latina mayúscula con diéresis\",\nIgrave:\"Letra I latina mayúscula con acento grave\",Iacute:\"Letra I latina mayúscula con acento agudo\",Icirc:\"Letra I latina mayúscula con acento circunflejo\",Iuml:\"Letra I latina mayúscula con diéresis\",ETH:\"Letra Eth latina mayúscula\",Ntilde:\"Letra N latina mayúscula con tilde\",Ograve:\"Letra O latina mayúscula con acento grave\",Oacute:\"Letra O latina mayúscula con acento agudo\",Ocirc:\"Letra O latina mayúscula con acento circunflejo\",Otilde:\"Letra O latina mayúscula con tilde\",Ouml:\"Letra O latina mayúscula con diéresis\",\ntimes:\"Signo de multiplicación\",Oslash:\"Letra O latina mayúscula con barra inclinada\",Ugrave:\"Letra U latina mayúscula con acento grave\",Uacute:\"Letra U latina mayúscula con acento agudo\",Ucirc:\"Letra U latina mayúscula con acento circunflejo\",Uuml:\"Letra U latina mayúscula con diéresis\",Yacute:\"Letra Y latina mayúscula con acento agudo\",THORN:\"Letra Thorn latina mayúscula\",szlig:\"Letra s latina fuerte pequeña\",agrave:\"Letra a latina pequeña con acento grave\",aacute:\"Letra a latina pequeña con acento agudo\",\nacirc:\"Letra a latina pequeña con acento circunflejo\",atilde:\"Letra a latina pequeña con tilde\",auml:\"Letra a latina pequeña con diéresis\",aring:\"Letra a latina pequeña con aro arriba\",aelig:\"Letra æ latina pequeña\",ccedil:\"Letra c latina pequeña con cedilla\",egrave:\"Letra e latina pequeña con acento grave\",eacute:\"Letra e latina pequeña con acento agudo\",ecirc:\"Letra e latina pequeña con acento circunflejo\",euml:\"Letra e latina pequeña con diéresis\",igrave:\"Letra i latina pequeña con acento grave\",\niacute:\"Letra i latina pequeña con acento agudo\",icirc:\"Letra i latina pequeña con acento circunflejo\",iuml:\"Letra i latina pequeña con diéresis\",eth:\"Letra eth latina pequeña\",ntilde:\"Letra n latina pequeña con tilde\",ograve:\"Letra o latina pequeña con acento grave\",oacute:\"Letra o latina pequeña con acento agudo\",ocirc:\"Letra o latina pequeña con acento circunflejo\",otilde:\"Letra o latina pequeña con tilde\",ouml:\"Letra o latina pequeña con diéresis\",divide:\"Signo de división\",oslash:\"Letra o latina minúscula con barra inclinada\",\nugrave:\"Letra u latina pequeña con acento grave\",uacute:\"Letra u latina pequeña con acento agudo\",ucirc:\"Letra u latina pequeña con acento circunflejo\",uuml:\"Letra u latina pequeña con diéresis\",yacute:\"Letra u latina pequeña con acento agudo\",thorn:\"Letra thorn latina minúscula\",yuml:\"Letra y latina pequeña con diéresis\",OElig:\"Diptongo OE latino en mayúscula\",oelig:\"Diptongo oe latino en minúscula\",372:\"Letra W latina mayúscula con acento circunflejo\",374:\"Letra Y latina mayúscula con acento circunflejo\",\n373:\"Letra w latina pequeña con acento circunflejo\",375:\"Letra y latina pequeña con acento circunflejo\",sbquo:\"Comilla simple baja-9\",8219:\"Comilla simple alta invertida-9\",bdquo:\"Comillas dobles bajas-9\",hellip:\"Puntos suspensivos horizontales\",trade:\"Signo de marca registrada\",9658:\"Apuntador negro apuntando a la derecha\",bull:\"Viñeta\",rarr:\"Flecha a la derecha\",rArr:\"Flecha doble a la derecha\",hArr:\"Flecha izquierda derecha doble\",diams:\"Diamante negro\",asymp:\"Casi igual a\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/et.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"et\",{euro:\"Euromärk\",lsquo:\"Alustav ühekordne jutumärk\",rsquo:\"Lõpetav ühekordne jutumärk\",ldquo:\"Alustav kahekordne jutumärk\",rdquo:\"Lõpetav kahekordne jutumärk\",ndash:\"Enn-kriips\",mdash:\"Emm-kriips\",iexcl:\"Pööratud hüüumärk\",cent:\"Sendimärk\",pound:\"Naela märk\",curren:\"Valuutamärk\",yen:\"Jeeni märk\",brvbar:\"Katkestatud kriips\",sect:\"Lõigu märk\",uml:\"Täpid\",copy:\"Autoriõiguse märk\",ordf:\"Feminine ordinal indicator\",laquo:\"Left-pointing double angle quotation mark\",\nnot:\"Ei-märk\",reg:\"Registered sign\",macr:\"Macron\",deg:\"Kraadimärk\",sup2:\"Ülaindeks kaks\",sup3:\"Ülaindeks kolm\",acute:\"Acute accent\",micro:\"Mikro-märk\",para:\"Pilcrow sign\",middot:\"Keskpunkt\",cedil:\"Cedilla\",sup1:\"Ülaindeks üks\",ordm:\"Masculine ordinal indicator\",raquo:\"Right-pointing double angle quotation mark\",frac14:\"Vulgar fraction one quarter\",frac12:\"Vulgar fraction one half\",frac34:\"Vulgar fraction three quarters\",iquest:\"Inverted question mark\",Agrave:\"Latin capital letter A with grave accent\",\nAacute:\"Latin capital letter A with acute accent\",Acirc:\"Latin capital letter A with circumflex\",Atilde:\"Ladina suur A tildega\",Auml:\"Latin capital letter A with diaeresis\",Aring:\"Latin capital letter A with ring above\",AElig:\"Latin Capital letter Æ\",Ccedil:\"Latin capital letter C with cedilla\",Egrave:\"Latin capital letter E with grave accent\",Eacute:\"Latin capital letter E with acute accent\",Ecirc:\"Latin capital letter E with circumflex\",Euml:\"Latin capital letter E with diaeresis\",Igrave:\"Latin capital letter I with grave accent\",\nIacute:\"Latin capital letter I with acute accent\",Icirc:\"Latin capital letter I with circumflex\",Iuml:\"Latin capital letter I with diaeresis\",ETH:\"Latin capital letter Eth\",Ntilde:\"Latin capital letter N with tilde\",Ograve:\"Latin capital letter O with grave accent\",Oacute:\"Latin capital letter O with acute accent\",Ocirc:\"Latin capital letter O with circumflex\",Otilde:\"Latin capital letter O with tilde\",Ouml:\"Täppidega ladina suur O\",times:\"Multiplication sign\",Oslash:\"Latin capital letter O with stroke\",\nUgrave:\"Latin capital letter U with grave accent\",Uacute:\"Latin capital letter U with acute accent\",Ucirc:\"Kandilise katusega suur ladina U\",Uuml:\"Täppidega ladina suur U\",Yacute:\"Latin capital letter Y with acute accent\",THORN:\"Latin capital letter Thorn\",szlig:\"Ladina väike terav s\",agrave:\"Latin small letter a with grave accent\",aacute:\"Latin small letter a with acute accent\",acirc:\"Kandilise katusega ladina väike a\",atilde:\"Tildega ladina väike a\",auml:\"Täppidega ladina väike a\",aring:\"Latin small letter a with ring above\",\naelig:\"Latin small letter æ\",ccedil:\"Latin small letter c with cedilla\",egrave:\"Latin small letter e with grave accent\",eacute:\"Latin small letter e with acute accent\",ecirc:\"Latin small letter e with circumflex\",euml:\"Latin small letter e with diaeresis\",igrave:\"Latin small letter i with grave accent\",iacute:\"Latin small letter i with acute accent\",icirc:\"Latin small letter i with circumflex\",iuml:\"Latin small letter i with diaeresis\",eth:\"Latin small letter eth\",ntilde:\"Latin small letter n with tilde\",\nograve:\"Latin small letter o with grave accent\",oacute:\"Latin small letter o with acute accent\",ocirc:\"Latin small letter o with circumflex\",otilde:\"Latin small letter o with tilde\",ouml:\"Latin small letter o with diaeresis\",divide:\"Jagamismärk\",oslash:\"Latin small letter o with stroke\",ugrave:\"Latin small letter u with grave accent\",uacute:\"Latin small letter u with acute accent\",ucirc:\"Latin small letter u with circumflex\",uuml:\"Latin small letter u with diaeresis\",yacute:\"Latin small letter y with acute accent\",\nthorn:\"Latin small letter thorn\",yuml:\"Latin small letter y with diaeresis\",OElig:\"Latin capital ligature OE\",oelig:\"Latin small ligature oe\",372:\"Latin capital letter W with circumflex\",374:\"Latin capital letter Y with circumflex\",373:\"Latin small letter w with circumflex\",375:\"Latin small letter y with circumflex\",sbquo:\"Single low-9 quotation mark\",8219:\"Single high-reversed-9 quotation mark\",bdquo:\"Double low-9 quotation mark\",hellip:\"Horizontal ellipsis\",trade:\"Kaubamärgi märk\",9658:\"Black right-pointing pointer\",\nbull:\"Kuul\",rarr:\"Nool paremale\",rArr:\"Topeltnool paremale\",hArr:\"Topeltnool vasakule\",diams:\"Black diamond suit\",asymp:\"Ligikaudu võrdne\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/fa.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"fa\",{euro:\"نشان یورو\",lsquo:\"علامت نقل قول تکی چپ\",rsquo:\"علامت نقل قول تکی راست\",ldquo:\"علامت نقل قول دوتایی چپ\",rdquo:\"علامت نقل قول دوتایی راست\",ndash:\"خط تیره En\",mdash:\"خط تیره Em\",iexcl:\"علامت تعجب وارونه\",cent:\"نشان سنت\",pound:\"نشان پوند\",curren:\"نشان ارز\",yen:\"نشان ین\",brvbar:\"نوار شکسته\",sect:\"نشان بخش\",uml:\"نشان سواگیری\",copy:\"نشان کپی رایت\",ordf:\"شاخص ترتیبی مونث\",laquo:\"اشاره چپ مکرر برای زاویه علامت نقل قول\",not:\"نشان ثبت نشده\",reg:\"نشان ثبت شده\",\nmacr:\"نشان خط بالای حرف\",deg:\"نشان درجه\",sup2:\"بالانویس دو\",sup3:\"بالانویس سه\",acute:\"لهجه غلیظ\",micro:\"نشان مایکرو\",para:\"نشان محل بند\",middot:\"نقطه میانی\",cedil:\"سدیل\",sup1:\"بالانویس 1\",ordm:\"شاخص ترتیبی مذکر\",raquo:\"نشان زاویه‌دار دوتایی نقل قول راست چین\",frac14:\"واحد عامیانه 1/4\",frac12:\"واحد عامینه نصف\",frac34:\"واحد عامیانه 3/4\",iquest:\"علامت سوال معکوس\",Agrave:\"حرف A بزرگ لاتین با تلفظ غلیظ\",Aacute:\"حرف A بزرگ لاتین با تلفظ شدید\",Acirc:\"حرف A بزرگ لاتین با دور\",Atilde:\"حرف A بزرگ لاتین با صدای کامی\",\nAuml:\"حرف A بزرگ لاتین با نشان سواگیری\",Aring:\"حرف A بزرگ لاتین با حلقه بالا\",AElig:\"حرف Æ بزرگ لاتین\",Ccedil:\"حرف C بزرگ لاتین با نشان سواگیری\",Egrave:\"حرف E بزرگ لاتین با تلفظ درشت\",Eacute:\"حرف E بزرگ لاتین با تلفظ زیر\",Ecirc:\"حرف E بزرگ لاتین با خمان\",Euml:\"حرف E بزرگ لاتین با نشان سواگیری\",Igrave:\"حرف I بزرگ لاتین با تلفظ درشت\",Iacute:\"حرف I بزرگ لاتین با تلفظ ریز\",Icirc:\"حرف I بزرگ لاتین با خمان\",Iuml:\"حرف I بزرگ لاتین با نشان سواگیری\",ETH:\"حرف لاتین بزرگ واکه ترتیبی\",Ntilde:\"حرف N بزرگ لاتین با مد\",\nOgrave:\"حرف O بزرگ لاتین با تلفظ درشت\",Oacute:\"حرف O بزرگ لاتین با تلفظ ریز\",Ocirc:\"حرف O بزرگ لاتین با خمان\",Otilde:\"حرف O بزرگ لاتین با مد\",Ouml:\"حرف O بزرگ لاتین با نشان سواگیری\",times:\"نشان ضربدر\",Oslash:\"حرف O بزرگ لاتین با میان خط\",Ugrave:\"حرف U بزرگ لاتین با تلفظ درشت\",Uacute:\"حرف U بزرگ لاتین با تلفظ ریز\",Ucirc:\"حرف U بزرگ لاتین با خمان\",Uuml:\"حرف U بزرگ لاتین با نشان سواگیری\",Yacute:\"حرف Y بزرگ لاتین با تلفظ ریز\",THORN:\"حرف بزرگ لاتین خاردار\",szlig:\"حرف کوچک لاتین شارپ s\",agrave:\"حرف a کوچک لاتین با تلفظ درشت\",\naacute:\"حرف a کوچک لاتین با تلفظ ریز\",acirc:\"حرف a کوچک لاتین با خمان\",atilde:\"حرف a کوچک لاتین با صدای کامی\",auml:\"حرف a کوچک لاتین با نشان سواگیری\",aring:\"حرف a کوچک لاتین گوشواره دار\",aelig:\"حرف کوچک لاتین æ\",ccedil:\"حرف c کوچک لاتین با نشان سدیل\",egrave:\"حرف e کوچک لاتین با تلفظ درشت\",eacute:\"حرف e کوچک لاتین با تلفظ ریز\",ecirc:\"حرف e کوچک لاتین با خمان\",euml:\"حرف e کوچک لاتین با نشان سواگیری\",igrave:\"حرف i کوچک لاتین با تلفظ درشت\",iacute:\"حرف i کوچک لاتین با تلفظ ریز\",icirc:\"حرف i کوچک لاتین با خمان\",\niuml:\"حرف i کوچک لاتین با نشان سواگیری\",eth:\"حرف کوچک لاتین eth\",ntilde:\"حرف n کوچک لاتین با صدای کامی\",ograve:\"حرف o کوچک لاتین با تلفظ درشت\",oacute:\"حرف o کوچک لاتین با تلفظ زیر\",ocirc:\"حرف o کوچک لاتین با خمان\",otilde:\"حرف o کوچک لاتین با صدای کامی\",ouml:\"حرف o کوچک لاتین با نشان سواگیری\",divide:\"نشان بخش\",oslash:\"حرف o کوچک لاتین با میان خط\",ugrave:\"حرف u کوچک لاتین با تلفظ درشت\",uacute:\"حرف u کوچک لاتین با تلفظ ریز\",ucirc:\"حرف u کوچک لاتین با خمان\",uuml:\"حرف u کوچک لاتین با نشان سواگیری\",yacute:\"حرف y کوچک لاتین با تلفظ ریز\",\nthorn:\"حرف کوچک لاتین خاردار\",yuml:\"حرف y کوچک لاتین با نشان سواگیری\",OElig:\"بند بزرگ لاتین OE\",oelig:\"بند کوچک لاتین oe\",372:\"حرف W بزرگ لاتین با خمان\",374:\"حرف Y بزرگ لاتین با خمان\",373:\"حرف w کوچک لاتین با خمان\",375:\"حرف y کوچک لاتین با خمان\",sbquo:\"نشان نقل قول تکی زیر-9\",8219:\"نشان نقل قول تکی high-reversed-9\",bdquo:\"نقل قول دوتایی پایین-9\",hellip:\"حذف افقی\",trade:\"نشان تجاری\",9658:\"نشانگر سیاه جهت راست\",bull:\"گلوله\",rarr:\"فلش راست\",rArr:\"فلش دوتایی راست\",hArr:\"فلش دوتایی چپ راست\",diams:\"نشان الماس سیاه\",\nasymp:\"تقریبا برابر با\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/fi.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"fi\",{euro:\"Euron merkki\",lsquo:\"Vasen yksittäinen lainausmerkki\",rsquo:\"Oikea yksittäinen lainausmerkki\",ldquo:\"Vasen kaksoislainausmerkki\",rdquo:\"Oikea kaksoislainausmerkki\",ndash:\"En dash\",mdash:\"Em dash\",iexcl:\"Inverted exclamation mark\",cent:\"Sentin merkki\",pound:\"Punnan merkki\",curren:\"Valuuttamerkki\",yen:\"Yenin merkki\",brvbar:\"Broken bar\",sect:\"Section sign\",uml:\"Diaeresis\",copy:\"Copyright sign\",ordf:\"Feminine ordinal indicator\",laquo:\"Left-pointing double angle quotation mark\",\nnot:\"Not sign\",reg:\"Rekisteröity merkki\",macr:\"Macron\",deg:\"Asteen merkki\",sup2:\"Yläindeksi kaksi\",sup3:\"Yläindeksi kolme\",acute:\"Acute accent\",micro:\"Mikron merkki\",para:\"Pilcrow sign\",middot:\"Middle dot\",cedil:\"Cedilla\",sup1:\"Yläindeksi yksi\",ordm:\"Masculine ordinal indicator\",raquo:\"Right-pointing double angle quotation mark\",frac14:\"Vulgar fraction one quarter\",frac12:\"Vulgar fraction one half\",frac34:\"Vulgar fraction three quarters\",iquest:\"Ylösalaisin oleva kysymysmerkki\",Agrave:\"Latin capital letter A with grave accent\",\nAacute:\"Latin capital letter A with acute accent\",Acirc:\"Latin capital letter A with circumflex\",Atilde:\"Latin capital letter A with tilde\",Auml:\"Latin capital letter A with diaeresis\",Aring:\"Latin capital letter A with ring above\",AElig:\"Latin Capital letter Æ\",Ccedil:\"Latin capital letter C with cedilla\",Egrave:\"Latin capital letter E with grave accent\",Eacute:\"Latin capital letter E with acute accent\",Ecirc:\"Latin capital letter E with circumflex\",Euml:\"Latin capital letter E with diaeresis\",Igrave:\"Latin capital letter I with grave accent\",\nIacute:\"Latin capital letter I with acute accent\",Icirc:\"Latin capital letter I with circumflex\",Iuml:\"Latin capital letter I with diaeresis\",ETH:\"Latin capital letter Eth\",Ntilde:\"Latin capital letter N with tilde\",Ograve:\"Latin capital letter O with grave accent\",Oacute:\"Latin capital letter O with acute accent\",Ocirc:\"Latin capital letter O with circumflex\",Otilde:\"Latin capital letter O with tilde\",Ouml:\"Latin capital letter O with diaeresis\",times:\"Kertomerkki\",Oslash:\"Latin capital letter O with stroke\",\nUgrave:\"Latin capital letter U with grave accent\",Uacute:\"Latin capital letter U with acute accent\",Ucirc:\"Latin capital letter U with circumflex\",Uuml:\"Latin capital letter U with diaeresis\",Yacute:\"Latin capital letter Y with acute accent\",THORN:\"Latin capital letter Thorn\",szlig:\"Latin small letter sharp s\",agrave:\"Latin small letter a with grave accent\",aacute:\"Latin small letter a with acute accent\",acirc:\"Latin small letter a with circumflex\",atilde:\"Latin small letter a with tilde\",auml:\"Latin small letter a with diaeresis\",\naring:\"Latin small letter a with ring above\",aelig:\"Latin small letter æ\",ccedil:\"Latin small letter c with cedilla\",egrave:\"Latin small letter e with grave accent\",eacute:\"Latin small letter e with acute accent\",ecirc:\"Latin small letter e with circumflex\",euml:\"Latin small letter e with diaeresis\",igrave:\"Latin small letter i with grave accent\",iacute:\"Latin small letter i with acute accent\",icirc:\"Latin small letter i with circumflex\",iuml:\"Latin small letter i with diaeresis\",eth:\"Latin small letter eth\",\nntilde:\"Latin small letter n with tilde\",ograve:\"Latin small letter o with grave accent\",oacute:\"Latin small letter o with acute accent\",ocirc:\"Latin small letter o with circumflex\",otilde:\"Latin small letter o with tilde\",ouml:\"Latin small letter o with diaeresis\",divide:\"Jakomerkki\",oslash:\"Latin small letter o with stroke\",ugrave:\"Latin small letter u with grave accent\",uacute:\"Latin small letter u with acute accent\",ucirc:\"Latin small letter u with circumflex\",uuml:\"Latin small letter u with diaeresis\",\nyacute:\"Latin small letter y with acute accent\",thorn:\"Latin small letter thorn\",yuml:\"Latin small letter y with diaeresis\",OElig:\"Latin capital ligature OE\",oelig:\"Latin small ligature oe\",372:\"Latin capital letter W with circumflex\",374:\"Latin capital letter Y with circumflex\",373:\"Latin small letter w with circumflex\",375:\"Latin small letter y with circumflex\",sbquo:\"Single low-9 quotation mark\",8219:\"Single high-reversed-9 quotation mark\",bdquo:\"Double low-9 quotation mark\",hellip:\"Horizontal ellipsis\",\ntrade:\"Tavaramerkki merkki\",9658:\"Black right-pointing pointer\",bull:\"Bullet\",rarr:\"Nuoli oikealle\",rArr:\"Kaksoisnuoli oikealle\",hArr:\"Kaksoisnuoli oikealle ja vasemmalle\",diams:\"Black diamond suit\",asymp:\"Noin\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"fr-ca\",{euro:\"Symbole Euro\",lsquo:\"Guillemet simple ouvrant\",rsquo:\"Guillemet simple fermant\",ldquo:\"Guillemet double ouvrant\",rdquo:\"Guillemet double fermant\",ndash:\"Tiret haut\",mdash:\"Tiret\",iexcl:\"Point d'exclamation inversé\",cent:\"Symbole de cent\",pound:\"Symbole de Livre Sterling\",curren:\"Symbole monétaire\",yen:\"Symbole du Yen\",brvbar:\"Barre scindée\",sect:\"Symbole de section\",uml:\"Tréma\",copy:\"Symbole de copyright\",ordf:\"Indicateur ordinal féminin\",laquo:\"Guillemet français ouvrant\",\nnot:\"Indicateur de négation\",reg:\"Symbole de marque déposée\",macr:\"Macron\",deg:\"Degré\",sup2:\"Exposant 2\",sup3:\"Exposant 3\",acute:\"Accent aigüe\",micro:\"Symbole micro\",para:\"Paragraphe\",middot:\"Point médian\",cedil:\"Cédille\",sup1:\"Exposant 1\",ordm:\"Indicateur ordinal masculin\",raquo:\"Guillemet français fermant\",frac14:\"Un quart\",frac12:\"Une demi\",frac34:\"Trois quart\",iquest:\"Point d'interrogation inversé\",Agrave:\"A accent grave\",Aacute:\"A accent aigüe\",Acirc:\"A circonflexe\",Atilde:\"A tilde\",Auml:\"A tréma\",\nAring:\"A avec un rond au dessus\",AElig:\"Æ majuscule\",Ccedil:\"C cédille\",Egrave:\"E accent grave\",Eacute:\"E accent aigüe\",Ecirc:\"E accent circonflexe\",Euml:\"E tréma\",Igrave:\"I accent grave\",Iacute:\"I accent aigüe\",Icirc:\"I accent circonflexe\",Iuml:\"I tréma\",ETH:\"Lettre majuscule islandaise ED\",Ntilde:\"N tilde\",Ograve:\"O accent grave\",Oacute:\"O accent aigüe\",Ocirc:\"O accent circonflexe\",Otilde:\"O tilde\",Ouml:\"O tréma\",times:\"Symbole de multiplication\",Oslash:\"O barré\",Ugrave:\"U accent grave\",Uacute:\"U accent aigüe\",\nUcirc:\"U accent circonflexe\",Uuml:\"U tréma\",Yacute:\"Y accent aigüe\",THORN:\"Lettre islandaise Thorn majuscule\",szlig:\"Lettre minuscule allemande s dur\",agrave:\"a accent grave\",aacute:\"a accent aigüe\",acirc:\"a accent circonflexe\",atilde:\"a tilde\",auml:\"a tréma\",aring:\"a avec un cercle au dessus\",aelig:\"æ\",ccedil:\"c cédille\",egrave:\"e accent grave\",eacute:\"e accent aigüe\",ecirc:\"e accent circonflexe\",euml:\"e tréma\",igrave:\"i accent grave\",iacute:\"i accent aigüe\",icirc:\"i accent circonflexe\",iuml:\"i tréma\",\neth:\"Lettre minuscule islandaise ED\",ntilde:\"n tilde\",ograve:\"o accent grave\",oacute:\"o accent aigüe\",ocirc:\"O accent circonflexe\",otilde:\"O tilde\",ouml:\"O tréma\",divide:\"Symbole de division\",oslash:\"o barré\",ugrave:\"u accent grave\",uacute:\"u accent aigüe\",ucirc:\"u accent circonflexe\",uuml:\"u tréma\",yacute:\"y accent aigüe\",thorn:\"Lettre islandaise thorn minuscule\",yuml:\"y tréma\",OElig:\"ligature majuscule latine Œ\",oelig:\"ligature minuscule latine œ\",372:\"W accent circonflexe\",374:\"Y accent circonflexe\",\n373:\"w accent circonflexe\",375:\"y accent circonflexe\",sbquo:\"Guillemet simple fermant\",8219:\"Guillemet-virgule supérieur culbuté\",bdquo:\"Guillemet-virgule double inférieur\",hellip:\"Points de suspension\",trade:\"Symbole de marque déposée\",9658:\"Flèche noire pointant vers la droite\",bull:\"Puce\",rarr:\"Flèche vers la droite\",rArr:\"Flèche double vers la droite\",hArr:\"Flèche double vers la gauche\",diams:\"Carreau\",asymp:\"Presque égal\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/fr.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"fr\",{euro:\"Symbole Euro\",lsquo:\"Guillemet simple ouvrant\",rsquo:\"Guillemet simple fermant\",ldquo:\"Guillemet double ouvrant\",rdquo:\"Guillemet double fermant\",ndash:\"Tiret haut\",mdash:\"Tiret cadratin\",iexcl:\"Point d'exclamation inversé\",cent:\"Symbole Cent\",pound:\"Symbole Livre Sterling\",curren:\"Symbole monétaire\",yen:\"Symbole Yen\",brvbar:\"Barre verticale scindée\",sect:\"Section\",uml:\"Tréma\",copy:\"Symbole Copyright\",ordf:\"Indicateur ordinal féminin\",laquo:\"Guillemet français ouvrant\",\nnot:\"Crochet de négation\",reg:\"Marque déposée\",macr:\"Macron\",deg:\"Degré\",sup2:\"Exposant 2\",sup3:\"\\\\tExposant 3\",acute:\"Accent aigu\",micro:\"Omicron\",para:\"Paragraphe\",middot:\"Point médian\",cedil:\"Cédille\",sup1:\"\\\\tExposant 1\",ordm:\"Indicateur ordinal masculin\",raquo:\"Guillemet français fermant\",frac14:\"Un quart\",frac12:\"Un demi\",frac34:\"Trois quarts\",iquest:\"Point d'interrogation inversé\",Agrave:\"A majuscule accent grave\",Aacute:\"A majuscule accent aigu\",Acirc:\"A majuscule accent circonflexe\",Atilde:\"A majuscule avec caron\",\nAuml:\"A majuscule tréma\",Aring:\"A majuscule avec un rond au-dessus\",AElig:\"Æ majuscule ligaturés\",Ccedil:\"C majuscule cédille\",Egrave:\"E majuscule accent grave\",Eacute:\"E majuscule accent aigu\",Ecirc:\"E majuscule accent circonflexe\",Euml:\"E majuscule tréma\",Igrave:\"I majuscule accent grave\",Iacute:\"I majuscule accent aigu\",Icirc:\"I majuscule accent circonflexe\",Iuml:\"I majuscule tréma\",ETH:\"Lettre majuscule islandaise ED\",Ntilde:\"N majuscule avec caron\",Ograve:\"O majuscule accent grave\",Oacute:\"O majuscule accent aigu\",\nOcirc:\"O majuscule accent circonflexe\",Otilde:\"O majuscule avec caron\",Ouml:\"O majuscule tréma\",times:\"Multiplication\",Oslash:\"O majuscule barré\",Ugrave:\"U majuscule accent grave\",Uacute:\"U majuscule accent aigu\",Ucirc:\"U majuscule accent circonflexe\",Uuml:\"U majuscule tréma\",Yacute:\"Y majuscule accent aigu\",THORN:\"Lettre islandaise Thorn majuscule\",szlig:\"Lettre minuscule allemande s dur\",agrave:\"a minuscule accent grave\",aacute:\"a minuscule accent aigu\",acirc:\"a minuscule accent circonflexe\",atilde:\"a minuscule avec caron\",\nauml:\"a minuscule tréma\",aring:\"a minuscule avec un rond au-dessus\",aelig:\"æ minuscule ligaturés\",ccedil:\"c minuscule cédille\",egrave:\"e minuscule accent grave\",eacute:\"e minuscule accent aigu\",ecirc:\"e minuscule accent circonflexe\",euml:\"e minuscule tréma\",igrave:\"i minuscule accent grave\",iacute:\"i minuscule accent aigu\",icirc:\"i minuscule accent circonflexe\",iuml:\"i minuscule tréma\",eth:\"Lettre minuscule islandaise ED\",ntilde:\"n minuscule avec caron\",ograve:\"o minuscule accent grave\",oacute:\"o minuscule accent aigu\",\nocirc:\"o minuscule accent circonflexe\",otilde:\"o minuscule avec caron\",ouml:\"o minuscule tréma\",divide:\"Division\",oslash:\"o minuscule barré\",ugrave:\"u minuscule accent grave\",uacute:\"u minuscule accent aigu\",ucirc:\"u minuscule accent circonflexe\",uuml:\"u minuscule tréma\",yacute:\"y minuscule accent aigu\",thorn:\"Lettre islandaise thorn minuscule\",yuml:\"y minuscule tréma\",OElig:\"ligature majuscule latine Œ\",oelig:\"ligature minuscule latine œ\",372:\"W majuscule accent circonflexe\",374:\"Y majuscule accent circonflexe\",\n373:\"w minuscule accent circonflexe\",375:\"y minuscule accent circonflexe\",sbquo:\"Guillemet simple fermant (anglais)\",8219:\"Guillemet-virgule supérieur culbuté\",bdquo:\"Guillemet-virgule double inférieur\",hellip:\"Points de suspension\",trade:\"Marque commerciale (trade mark)\",9658:\"Flèche noire pointant vers la droite\",bull:\"Gros point médian\",rarr:\"Flèche vers la droite\",rArr:\"Double flèche vers la droite\",hArr:\"Double flèche vers la gauche\",diams:\"Carreau noir\",asymp:\"Presque égal\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/gl.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"gl\",{euro:\"Símbolo do euro\",lsquo:\"Comiña simple esquerda\",rsquo:\"Comiña simple dereita\",ldquo:\"Comiñas dobres esquerda\",rdquo:\"Comiñas dobres dereita\",ndash:\"Guión\",mdash:\"Raia\",iexcl:\"Signo de admiración invertido\",cent:\"Símbolo do centavo\",pound:\"Símbolo da libra\",curren:\"Símbolo de moeda\",yen:\"Símbolo do yen\",brvbar:\"Barra vertical rota\",sect:\"Símbolo de sección\",uml:\"Diérese\",copy:\"Símbolo de dereitos de autoría\",ordf:\"Indicador ordinal feminino\",laquo:\"Comiñas latinas, apertura\",\nnot:\"Signo negación\",reg:\"Símbolo de marca rexistrada\",macr:\"Guión alto\",deg:\"Signo de grao\",sup2:\"Superíndice dous\",sup3:\"Superíndice tres\",acute:\"Acento agudo\",micro:\"Signo de micro\",para:\"Signo de pi\",middot:\"Punto medio\",cedil:\"Cedilla\",sup1:\"Superíndice un\",ordm:\"Indicador ordinal masculino\",raquo:\"Comiñas latinas, peche\",frac14:\"Fracción ordinaria de un cuarto\",frac12:\"Fracción ordinaria de un medio\",frac34:\"Fracción ordinaria de tres cuartos\",iquest:\"Signo de interrogación invertido\",Agrave:\"Letra A latina maiúscula con acento grave\",\nAacute:\"Letra A latina maiúscula con acento agudo\",Acirc:\"Letra A latina maiúscula con acento circunflexo\",Atilde:\"Letra A latina maiúscula con til\",Auml:\"Letra A latina maiúscula con diérese\",Aring:\"Letra A latina maiúscula con aro enriba\",AElig:\"Letra Æ latina maiúscula\",Ccedil:\"Letra C latina maiúscula con cedilla\",Egrave:\"Letra E latina maiúscula con acento grave\",Eacute:\"Letra E latina maiúscula con acento agudo\",Ecirc:\"Letra E latina maiúscula con acento circunflexo\",Euml:\"Letra E latina maiúscula con diérese\",\nIgrave:\"Letra I latina maiúscula con acento grave\",Iacute:\"Letra I latina maiúscula con acento agudo\",Icirc:\"Letra I latina maiúscula con acento circunflexo\",Iuml:\"Letra I latina maiúscula con diérese\",ETH:\"Letra Ed latina maiúscula\",Ntilde:\"Letra N latina maiúscula con til\",Ograve:\"Letra O latina maiúscula con acento grave\",Oacute:\"Letra O latina maiúscula con acento agudo\",Ocirc:\"Letra O latina maiúscula con acento circunflexo\",Otilde:\"Letra O latina maiúscula con til\",Ouml:\"Letra O latina maiúscula con diérese\",\ntimes:\"Signo de multiplicación\",Oslash:\"Letra O latina maiúscula con barra transversal\",Ugrave:\"Letra U latina maiúscula con acento grave\",Uacute:\"Letra U latina maiúscula con acento agudo\",Ucirc:\"Letra U latina maiúscula con acento circunflexo\",Uuml:\"Letra U latina maiúscula con diérese\",Yacute:\"Letra Y latina maiúscula con acento agudo\",THORN:\"Letra Thorn latina maiúscula\",szlig:\"Letra s latina forte minúscula\",agrave:\"Letra a latina minúscula con acento grave\",aacute:\"Letra a latina minúscula con acento agudo\",\nacirc:\"Letra a latina minúscula con acento circunflexo\",atilde:\"Letra a latina minúscula con til\",auml:\"Letra a latina minúscula con diérese\",aring:\"Letra a latina minúscula con aro enriba\",aelig:\"Letra æ latina minúscula\",ccedil:\"Letra c latina minúscula con cedilla\",egrave:\"Letra e latina minúscula con acento grave\",eacute:\"Letra e latina minúscula con acento agudo\",ecirc:\"Letra e latina minúscula con acento circunflexo\",euml:\"Letra e latina minúscula con diérese\",igrave:\"Letra i latina minúscula con acento grave\",\niacute:\"Letra i latina minúscula con acento agudo\",icirc:\"Letra i latina minúscula con acento circunflexo\",iuml:\"Letra i latina minúscula con diérese\",eth:\"Letra ed latina minúscula\",ntilde:\"Letra n latina minúscula con til\",ograve:\"Letra o latina minúscula con acento grave\",oacute:\"Letra o latina minúscula con acento agudo\",ocirc:\"Letra o latina minúscula con acento circunflexo\",otilde:\"Letra o latina minúscula con til\",ouml:\"Letra o latina minúscula con diérese\",divide:\"Signo de división\",oslash:\"Letra o latina minúscula con barra transversal\",\nugrave:\"Letra u latina minúscula con acento grave\",uacute:\"Letra u latina minúscula con acento agudo\",ucirc:\"Letra u latina minúscula con acento circunflexo\",uuml:\"Letra u latina minúscula con diérese\",yacute:\"Letra y latina minúscula con acento agudo\",thorn:\"Letra Thorn latina minúscula\",yuml:\"Letra y latina minúscula con diérese\",OElig:\"Ligadura OE latina maiúscula\",oelig:\"Ligadura oe latina minúscula\",372:\"Letra W latina maiúscula con acento circunflexo\",374:\"Letra Y latina maiúscula con acento circunflexo\",\n373:\"Letra w latina minúscula con acento circunflexo\",375:\"Letra y latina minúscula con acento circunflexo\",sbquo:\"Comiña simple baixa, de apertura\",8219:\"Comiña simple alta, de peche\",bdquo:\"Comiñas dobres baixas, de apertura\",hellip:\"Elipse, puntos suspensivos\",trade:\"Signo de marca rexistrada\",9658:\"Apuntador negro apuntando á dereita\",bull:\"Viñeta\",rarr:\"Frecha á dereita\",rArr:\"Frecha dobre á dereita\",hArr:\"Frecha dobre da esquerda á dereita\",diams:\"Diamante negro\",asymp:\"Case igual a\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/he.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"he\",{euro:\"יורו\",lsquo:\"סימן ציטוט יחיד שמאלי\",rsquo:\"סימן ציטוט יחיד ימני\",ldquo:\"סימן ציטוט כפול שמאלי\",rdquo:\"סימן ציטוט כפול ימני\",ndash:\"קו מפריד קצר\",mdash:\"קו מפריד ארוך\",iexcl:\"סימן קריאה הפוך\",cent:\"סנט\",pound:\"פאונד\",curren:\"מטבע\",yen:\"ין\",brvbar:\"קו שבור\",sect:\"סימן מקטע\",uml:\"שתי נקודות אופקיות (Diaeresis)\",copy:\"סימן זכויות יוצרים (Copyright)\",ordf:\"סימן אורדינאלי נקבי\",laquo:\"סימן ציטוט זווית כפולה לשמאל\",not:\"סימן שלילה מתמטי\",reg:\"סימן רשום\",\nmacr:\"מקרון (הגיה ארוכה)\",deg:\"מעלות\",sup2:\"2 בכתיב עילי\",sup3:\"3 בכתיב עילי\",acute:\"סימן דגוש (Acute)\",micro:\"מיקרו\",para:\"סימון פסקה\",middot:\"נקודה אמצעית\",cedil:\"סדיליה\",sup1:\"1 בכתיב עילי\",ordm:\"סימן אורדינאלי זכרי\",raquo:\"סימן ציטוט זווית כפולה לימין\",frac14:\"רבע בשבר פשוט\",frac12:\"חצי בשבר פשוט\",frac34:\"שלושה רבעים בשבר פשוט\",iquest:\"סימן שאלה הפוך\",Agrave:\"אות לטינית A עם גרש (Grave)\",Aacute:\"Latin capital letter A with acute accent\",Acirc:\"Latin capital letter A with circumflex\",Atilde:\"Latin capital letter A with tilde\",\nAuml:\"Latin capital letter A with diaeresis\",Aring:\"Latin capital letter A with ring above\",AElig:\"אות לטינית Æ גדולה\",Ccedil:\"Latin capital letter C with cedilla\",Egrave:\"אות לטינית E עם גרש (Grave)\",Eacute:\"Latin capital letter E with acute accent\",Ecirc:\"Latin capital letter E with circumflex\",Euml:\"Latin capital letter E with diaeresis\",Igrave:\"אות לטינית I עם גרש (Grave)\",Iacute:\"Latin capital letter I with acute accent\",Icirc:\"Latin capital letter I with circumflex\",Iuml:\"Latin capital letter I with diaeresis\",\nETH:\"אות לטינית Eth גדולה\",Ntilde:\"Latin capital letter N with tilde\",Ograve:\"אות לטינית O עם גרש (Grave)\",Oacute:\"Latin capital letter O with acute accent\",Ocirc:\"Latin capital letter O with circumflex\",Otilde:\"Latin capital letter O with tilde\",Ouml:\"Latin capital letter O with diaeresis\",times:\"סימן כפל\",Oslash:\"Latin capital letter O with stroke\",Ugrave:\"אות לטינית U עם גרש (Grave)\",Uacute:\"Latin capital letter U with acute accent\",Ucirc:\"Latin capital letter U with circumflex\",Uuml:\"Latin capital letter U with diaeresis\",\nYacute:\"Latin capital letter Y with acute accent\",THORN:\"אות לטינית Thorn גדולה\",szlig:\"אות לטינית s חדה קטנה\",agrave:\"אות לטינית a עם גרש (Grave)\",aacute:\"Latin small letter a with acute accent\",acirc:\"Latin small letter a with circumflex\",atilde:\"Latin small letter a with tilde\",auml:\"Latin small letter a with diaeresis\",aring:\"Latin small letter a with ring above\",aelig:\"אות לטינית æ קטנה\",ccedil:\"Latin small letter c with cedilla\",egrave:\"אות לטינית e עם גרש (Grave)\",eacute:\"Latin small letter e with acute accent\",\necirc:\"Latin small letter e with circumflex\",euml:\"Latin small letter e with diaeresis\",igrave:\"אות לטינית i עם גרש (Grave)\",iacute:\"Latin small letter i with acute accent\",icirc:\"Latin small letter i with circumflex\",iuml:\"Latin small letter i with diaeresis\",eth:\"אות לטינית eth קטנה\",ntilde:\"Latin small letter n with tilde\",ograve:\"אות לטינית o עם גרש (Grave)\",oacute:\"Latin small letter o with acute accent\",ocirc:\"Latin small letter o with circumflex\",otilde:\"Latin small letter o with tilde\",ouml:\"Latin small letter o with diaeresis\",\ndivide:\"סימן חלוקה\",oslash:\"Latin small letter o with stroke\",ugrave:\"אות לטינית u עם גרש (Grave)\",uacute:\"Latin small letter u with acute accent\",ucirc:\"Latin small letter u with circumflex\",uuml:\"Latin small letter u with diaeresis\",yacute:\"Latin small letter y with acute accent\",thorn:\"אות לטינית thorn קטנה\",yuml:\"Latin small letter y with diaeresis\",OElig:\"Latin capital ligature OE\",oelig:\"Latin small ligature oe\",372:\"Latin capital letter W with circumflex\",374:\"Latin capital letter Y with circumflex\",\n373:\"Latin small letter w with circumflex\",375:\"Latin small letter y with circumflex\",sbquo:\"סימן ציטוט נמוך יחיד\",8219:\"סימן ציטוט\",bdquo:\"סימן ציטוט נמוך כפול\",hellip:\"שלוש נקודות\",trade:\"סימן טריידמארק\",9658:\"סמן שחור לצד ימין\",bull:\"תבליט (רשימה)\",rarr:\"חץ לימין\",rArr:\"חץ כפול לימין\",hArr:\"חץ כפול לימין ושמאל\",diams:\"יהלום מלא\",asymp:\"כמעט שווה\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/hr.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"hr\",{euro:\"Euro znak\",lsquo:\"Lijevi jednostruki navodnik\",rsquo:\"Desni jednostruki navodnik\",ldquo:\"Lijevi dvostruki navodnik\",rdquo:\"Desni dvostruki navodnik\",ndash:\"En crtica\",mdash:\"Em crtica\",iexcl:\"Naopaki uskličnik\",cent:\"Cent znak\",pound:\"Funta znak\",curren:\"Znak valute\",yen:\"Yen znak\",brvbar:\"Potrgana prečka\",sect:\"Znak odjeljka\",uml:\"Prijeglasi\",copy:\"Copyright znak\",ordf:\"Feminine ordinal indicator\",laquo:\"Lijevi dvostruki uglati navodnik\",not:\"Not znak\",\nreg:\"Registered znak\",macr:\"Macron\",deg:\"Stupanj znak\",sup2:\"Superscript two\",sup3:\"Superscript three\",acute:\"Acute accent\",micro:\"Mikro znak\",para:\"Pilcrow sign\",middot:\"Srednja točka\",cedil:\"Cedilla\",sup1:\"Superscript one\",ordm:\"Masculine ordinal indicator\",raquo:\"Desni dvostruku uglati navodnik\",frac14:\"Vulgar fraction one quarter\",frac12:\"Vulgar fraction one half\",frac34:\"Vulgar fraction three quarters\",iquest:\"Naopaki upitnik\",Agrave:\"Veliko latinsko slovo A s akcentom\",Aacute:\"Latinično veliko slovo A sa oštrim naglaskom\",\nAcirc:\"Latin capital letter A with circumflex\",Atilde:\"Latin capital letter A with tilde\",Auml:\"Latin capital letter A with diaeresis\",Aring:\"Latin capital letter A with ring above\",AElig:\"Latin Capital letter Æ\",Ccedil:\"Latin capital letter C with cedilla\",Egrave:\"Latin capital letter E with grave accent\",Eacute:\"Latin capital letter E with acute accent\",Ecirc:\"Latin capital letter E with circumflex\",Euml:\"Latin capital letter E with diaeresis\",Igrave:\"Latin capital letter I with grave accent\",Iacute:\"Latin capital letter I with acute accent\",\nIcirc:\"Latin capital letter I with circumflex\",Iuml:\"Latin capital letter I with diaeresis\",ETH:\"Latin capital letter Eth\",Ntilde:\"Latin capital letter N with tilde\",Ograve:\"Latin capital letter O with grave accent\",Oacute:\"Latin capital letter O with acute accent\",Ocirc:\"Latin capital letter O with circumflex\",Otilde:\"Latin capital letter O with tilde\",Ouml:\"Latin capital letter O with diaeresis\",times:\"Multiplication sign\",Oslash:\"Latin capital letter O with stroke\",Ugrave:\"Latin capital letter U with grave accent\",\nUacute:\"Latin capital letter U with acute accent\",Ucirc:\"Latin capital letter U with circumflex\",Uuml:\"Latin capital letter U with diaeresis\",Yacute:\"Latin capital letter Y with acute accent\",THORN:\"Latin capital letter Thorn\",szlig:\"Latin small letter sharp s\",agrave:\"Latin small letter a with grave accent\",aacute:\"Latin small letter a with acute accent\",acirc:\"Latin small letter a with circumflex\",atilde:\"Latin small letter a with tilde\",auml:\"Latin small letter a with diaeresis\",aring:\"Latin small letter a with ring above\",\naelig:\"Latin small letter æ\",ccedil:\"Latin small letter c with cedilla\",egrave:\"Latin small letter e with grave accent\",eacute:\"Latin small letter e with acute accent\",ecirc:\"Latin small letter e with circumflex\",euml:\"Latin small letter e with diaeresis\",igrave:\"Latin small letter i with grave accent\",iacute:\"Latin small letter i with acute accent\",icirc:\"Latin small letter i with circumflex\",iuml:\"Latin small letter i with diaeresis\",eth:\"Latin small letter eth\",ntilde:\"Latin small letter n with tilde\",\nograve:\"Latin small letter o with grave accent\",oacute:\"Latin small letter o with acute accent\",ocirc:\"Latin small letter o with circumflex\",otilde:\"Latin small letter o with tilde\",ouml:\"Latin small letter o with diaeresis\",divide:\"Division sign\",oslash:\"Latin small letter o with stroke\",ugrave:\"Latin small letter u with grave accent\",uacute:\"Latin small letter u with acute accent\",ucirc:\"Latin small letter u with circumflex\",uuml:\"Latin small letter u with diaeresis\",yacute:\"Latin small letter y with acute accent\",\nthorn:\"Latin small letter thorn\",yuml:\"Latin small letter y with diaeresis\",OElig:\"Latin capital ligature OE\",oelig:\"Latin small ligature oe\",372:\"Latin capital letter W with circumflex\",374:\"Latin capital letter Y with circumflex\",373:\"Latin small letter w with circumflex\",375:\"Latin small letter y with circumflex\",sbquo:\"Single low-9 quotation mark\",8219:\"Single high-reversed-9 quotation mark\",bdquo:\"Double low-9 quotation mark\",hellip:\"Horizontal ellipsis\",trade:\"Trade mark sign\",9658:\"Black right-pointing pointer\",\nbull:\"Bullet\",rarr:\"Rightwards arrow\",rArr:\"Rightwards double arrow\",hArr:\"Left right double arrow\",diams:\"Black diamond suit\",asymp:\"Almost equal to\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/hu.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"hu\",{euro:\"Euró jel\",lsquo:\"Bal szimpla idézőjel\",rsquo:\"Jobb szimpla idézőjel\",ldquo:\"Bal dupla idézőjel\",rdquo:\"Jobb dupla idézőjel\",ndash:\"Rövid gondolatjel\",mdash:\"Hosszú gondolatjel\",iexcl:\"Fordított felkiáltójel\",cent:\"Cent jel\",pound:\"Font jel\",curren:\"Valuta jel\",yen:\"Yen jel\",brvbar:\"Hosszú kettőspont\",sect:\"Paragrafus jel\",uml:\"Kettős hangzó jel\",copy:\"Szerzői jog jel\",ordf:\"Női sorrend mutatója\",laquo:\"Balra mutató duplanyíl\",not:\"Feltételes kötőjel\",\nreg:\"Bejegyzett védjegy jele\",macr:\"Hosszúsági jel\",deg:\"Fok jel\",sup2:\"Négyzeten jel\",sup3:\"Köbön jel\",acute:\"Éles ékezet\",micro:\"Mikro-jel\",para:\"Bekezdés jel\",middot:\"Közép pont\",cedil:\"Cédille\",sup1:\"Elsőn jel\",ordm:\"Férfi sorrend mutatója\",raquo:\"Jobbra mutató duplanyíl\",frac14:\"Egy negyed jel\",frac12:\"Egy ketted jel\",frac34:\"Három negyed jel\",iquest:\"Fordított kérdőjel\",Agrave:\"Latin nagy A fordított ékezettel\",Aacute:\"Latin nagy A normál ékezettel\",Acirc:\"Latin nagy A hajtott ékezettel\",Atilde:\"Latin nagy A hullámjellel\",\nAuml:\"Latin nagy A kettőspont ékezettel\",Aring:\"Latin nagy A gyűrű ékezettel\",AElig:\"Latin nagy Æ betű\",Ccedil:\"Latin nagy C cedillával\",Egrave:\"Latin nagy E fordított ékezettel\",Eacute:\"Latin nagy E normál ékezettel\",Ecirc:\"Latin nagy E hajtott ékezettel\",Euml:\"Latin nagy E dupla kettőspont ékezettel\",Igrave:\"Latin nagy I fordított ékezettel\",Iacute:\"Latin nagy I normál ékezettel\",Icirc:\"Latin nagy I hajtott ékezettel\",Iuml:\"Latin nagy I kettőspont ékezettel\",ETH:\"Latin nagy Eth betű\",Ntilde:\"Latin nagy N hullámjellel\",\nOgrave:\"Latin nagy O fordított ékezettel\",Oacute:\"Latin nagy O normál ékezettel\",Ocirc:\"Latin nagy O hajtott ékezettel\",Otilde:\"Latin nagy O hullámjellel\",Ouml:\"Latin nagy O kettőspont ékezettel\",times:\"Szorzás jel\",Oslash:\"Latin O betű áthúzással\",Ugrave:\"Latin nagy U fordított ékezettel\",Uacute:\"Latin nagy U normál ékezettel\",Ucirc:\"Latin nagy U hajtott ékezettel\",Uuml:\"Latin nagy U kettőspont ékezettel\",Yacute:\"Latin nagy Y normál ékezettel\",THORN:\"Latin nagy Thorn betű\",szlig:\"Latin kis s betű\",\nagrave:\"Latin kis a fordított ékezettel\",aacute:\"Latin kis a normál ékezettel\",acirc:\"Latin kis a hajtott ékezettel\",atilde:\"Latin kis a hullámjellel\",auml:\"Latin kis a kettőspont ékezettel\",aring:\"Latin kis a gyűrű ékezettel\",aelig:\"Latin kis æ betű\",ccedil:\"Latin kis c cedillával\",egrave:\"Latin kis e fordított ékezettel\",eacute:\"Latin kis e normál ékezettel\",ecirc:\"Latin kis e hajtott ékezettel\",euml:\"Latin kis e dupla kettőspont ékezettel\",igrave:\"Latin kis i fordított ékezettel\",iacute:\"Latin kis i normál ékezettel\",\nicirc:\"Latin kis i hajtott ékezettel\",iuml:\"Latin kis i kettőspont ékezettel\",eth:\"Latin kis eth betű\",ntilde:\"Latin kis n hullámjellel\",ograve:\"Latin kis o fordított ékezettel\",oacute:\"Latin kis o normál ékezettel\",ocirc:\"Latin kis o hajtott ékezettel\",otilde:\"Latin kis o hullámjellel\",ouml:\"Latin kis o kettőspont ékezettel\",divide:\"Osztásjel\",oslash:\"Latin kis o betű áthúzással\",ugrave:\"Latin kis u fordított ékezettel\",uacute:\"Latin kis u normál ékezettel\",ucirc:\"Latin kis u hajtott ékezettel\",\nuuml:\"Latin kis u kettőspont ékezettel\",yacute:\"Latin kis y normál ékezettel\",thorn:\"Latin kis thorn jel\",yuml:\"Latin kis y kettőspont ékezettel\",OElig:\"Latin nagy OE-jel\",oelig:\"Latin kis oe-jel\",372:\"Latin nagy W hajtott ékezettel\",374:\"Latin nagy Y hajtott ékezettel\",373:\"Latin kis w hajtott ékezettel\",375:\"Latin kis y hajtott ékezettel\",sbquo:\"Nyitó nyomdai szimpla idézőjel\",8219:\"Záró nyomdai záró idézőjel\",bdquo:\"Nyitó nyomdai dupla idézőjel\",hellip:\"Három pont\",trade:\"Kereskedelmi védjegy jele\",\n9658:\"Jobbra mutató fekete mutató\",bull:\"Golyó\",rarr:\"Jobbra mutató nyíl\",rArr:\"Jobbra mutató duplanyíl\",hArr:\"Bal-jobb duplanyíl\",diams:\"Fekete gyémánt jel\",asymp:\"Majdnem egyenlő jel\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/id.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"id\",{euro:\"Tanda Euro\",lsquo:\"Left single quotation mark\",rsquo:\"Right single quotation mark\",ldquo:\"Left double quotation mark\",rdquo:\"Right double quotation mark\",ndash:\"En dash\",mdash:\"Em dash\",iexcl:\"Inverted exclamation mark\",cent:\"Cent sign\",pound:\"Pound sign\",curren:\"Currency sign\",yen:\"Tanda Yen\",brvbar:\"Broken bar\",sect:\"Section sign\",uml:\"Diaeresis\",copy:\"Tanda Hak Cipta\",ordf:\"Feminine ordinal indicator\",laquo:\"Left-pointing double angle quotation mark\",\nnot:\"Not sign\",reg:\"Tanda Telah Terdaftar\",macr:\"Macron\",deg:\"Degree sign\",sup2:\"Superscript two\",sup3:\"Superscript three\",acute:\"Acute accent\",micro:\"Micro sign\",para:\"Pilcrow sign\",middot:\"Middle dot\",cedil:\"Cedilla\",sup1:\"Superscript one\",ordm:\"Masculine ordinal indicator\",raquo:\"Right-pointing double angle quotation mark\",frac14:\"Vulgar fraction one quarter\",frac12:\"Vulgar fraction one half\",frac34:\"Vulgar fraction three quarters\",iquest:\"Inverted question mark\",Agrave:\"Latin capital letter A with grave accent\",\nAacute:\"Latin capital letter A with acute accent\",Acirc:\"Latin capital letter A with circumflex\",Atilde:\"Latin capital letter A with tilde\",Auml:\"Latin capital letter A with diaeresis\",Aring:\"Latin capital letter A with ring above\",AElig:\"Latin Capital letter Æ\",Ccedil:\"Latin capital letter C with cedilla\",Egrave:\"Latin capital letter E with grave accent\",Eacute:\"Latin capital letter E with acute accent\",Ecirc:\"Latin capital letter E with circumflex\",Euml:\"Latin capital letter E with diaeresis\",Igrave:\"Latin capital letter I with grave accent\",\nIacute:\"Latin capital letter I with acute accent\",Icirc:\"Latin capital letter I with circumflex\",Iuml:\"Latin capital letter I with diaeresis\",ETH:\"Latin capital letter Eth\",Ntilde:\"Latin capital letter N with tilde\",Ograve:\"Latin capital letter O with grave accent\",Oacute:\"Latin capital letter O with acute accent\",Ocirc:\"Latin capital letter O with circumflex\",Otilde:\"Latin capital letter O with tilde\",Ouml:\"Latin capital letter O with diaeresis\",times:\"Multiplication sign\",Oslash:\"Latin capital letter O with stroke\",\nUgrave:\"Latin capital letter U with grave accent\",Uacute:\"Latin capital letter U with acute accent\",Ucirc:\"Latin capital letter U with circumflex\",Uuml:\"Latin capital letter U with diaeresis\",Yacute:\"Latin capital letter Y with acute accent\",THORN:\"Latin capital letter Thorn\",szlig:\"Latin small letter sharp s\",agrave:\"Latin small letter a with grave accent\",aacute:\"Latin small letter a with acute accent\",acirc:\"Latin small letter a with circumflex\",atilde:\"Latin small letter a with tilde\",auml:\"Latin small letter a with diaeresis\",\naring:\"Latin small letter a with ring above\",aelig:\"Latin small letter æ\",ccedil:\"Latin small letter c with cedilla\",egrave:\"Latin small letter e with grave accent\",eacute:\"Latin small letter e with acute accent\",ecirc:\"Latin small letter e with circumflex\",euml:\"Latin small letter e with diaeresis\",igrave:\"Latin small letter i with grave accent\",iacute:\"Latin small letter i with acute accent\",icirc:\"Latin small letter i with circumflex\",iuml:\"Latin small letter i with diaeresis\",eth:\"Latin small letter eth\",\nntilde:\"Latin small letter n with tilde\",ograve:\"Latin small letter o with grave accent\",oacute:\"Latin small letter o with acute accent\",ocirc:\"Latin small letter o with circumflex\",otilde:\"Latin small letter o with tilde\",ouml:\"Latin small letter o with diaeresis\",divide:\"Division sign\",oslash:\"Latin small letter o with stroke\",ugrave:\"Latin small letter u with grave accent\",uacute:\"Latin small letter u with acute accent\",ucirc:\"Latin small letter u with circumflex\",uuml:\"Latin small letter u with diaeresis\",\nyacute:\"Latin small letter y with acute accent\",thorn:\"Latin small letter thorn\",yuml:\"Latin small letter y with diaeresis\",OElig:\"Latin capital ligature OE\",oelig:\"Latin small ligature oe\",372:\"Latin capital letter W with circumflex\",374:\"Latin capital letter Y with circumflex\",373:\"Latin small letter w with circumflex\",375:\"Latin small letter y with circumflex\",sbquo:\"Single low-9 quotation mark\",8219:\"Single high-reversed-9 quotation mark\",bdquo:\"Double low-9 quotation mark\",hellip:\"Horizontal ellipsis\",\ntrade:\"Trade mark sign\",9658:\"Black right-pointing pointer\",bull:\"Bullet\",rarr:\"Rightwards arrow\",rArr:\"Rightwards double arrow\",hArr:\"Left right double arrow\",diams:\"Black diamond suit\",asymp:\"Almost equal to\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/it.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"it\",{euro:\"Simbolo Euro\",lsquo:\"Virgoletta singola sinistra\",rsquo:\"Virgoletta singola destra\",ldquo:\"Virgolette aperte\",rdquo:\"Virgolette chiuse\",ndash:\"Trattino\",mdash:\"Trattino lungo\",iexcl:\"Punto esclavamativo invertito\",cent:\"Simbolo Cent\",pound:\"Simbolo Sterlina\",curren:\"Simbolo Moneta\",yen:\"Simbolo Yen\",brvbar:\"Barra interrotta\",sect:\"Simbolo di sezione\",uml:\"Dieresi\",copy:\"Simbolo Copyright\",ordf:\"Indicatore ordinale femminile\",laquo:\"Virgolette basse aperte\",\nnot:\"Nessun segno\",reg:\"Simbolo Registrato\",macr:\"Macron\",deg:\"Simbolo Grado\",sup2:\"Apice Due\",sup3:\"Apice Tre\",acute:\"Accento acuto\",micro:\"Simbolo Micro\",para:\"Simbolo Paragrafo\",middot:\"Punto centrale\",cedil:\"Cediglia\",sup1:\"Apice Uno\",ordm:\"Indicatore ordinale maschile\",raquo:\"Virgolette basse chiuse\",frac14:\"Frazione volgare un quarto\",frac12:\"Frazione volgare un mezzo\",frac34:\"Frazione volgare tre quarti\",iquest:\"Punto interrogativo invertito\",Agrave:\"Lettera maiuscola latina A con accento grave\",\nAacute:\"Lettera maiuscola latina A con accento acuto\",Acirc:\"Lettera maiuscola latina A con accento circonflesso\",Atilde:\"Lettera maiuscola latina A con tilde\",Auml:\"Lettera maiuscola latina A con dieresi\",Aring:\"Lettera maiuscola latina A con anello sopra\",AElig:\"Lettera maiuscola latina AE\",Ccedil:\"Lettera maiuscola latina C con cediglia\",Egrave:\"Lettera maiuscola latina E con accento grave\",Eacute:\"Lettera maiuscola latina E con accento acuto\",Ecirc:\"Lettera maiuscola latina E con accento circonflesso\",\nEuml:\"Lettera maiuscola latina E con dieresi\",Igrave:\"Lettera maiuscola latina I con accento grave\",Iacute:\"Lettera maiuscola latina I con accento acuto\",Icirc:\"Lettera maiuscola latina I con accento circonflesso\",Iuml:\"Lettera maiuscola latina I con dieresi\",ETH:\"Lettera maiuscola latina Eth\",Ntilde:\"Lettera maiuscola latina N con tilde\",Ograve:\"Lettera maiuscola latina O con accento grave\",Oacute:\"Lettera maiuscola latina O con accento acuto\",Ocirc:\"Lettera maiuscola latina O con accento circonflesso\",\nOtilde:\"Lettera maiuscola latina O con tilde\",Ouml:\"Lettera maiuscola latina O con dieresi\",times:\"Simbolo di moltiplicazione\",Oslash:\"Lettera maiuscola latina O barrata\",Ugrave:\"Lettera maiuscola latina U con accento grave\",Uacute:\"Lettera maiuscola latina U con accento acuto\",Ucirc:\"Lettera maiuscola latina U con accento circonflesso\",Uuml:\"Lettera maiuscola latina U con accento circonflesso\",Yacute:\"Lettera maiuscola latina Y con accento acuto\",THORN:\"Lettera maiuscola latina Thorn\",szlig:\"Lettera latina minuscola doppia S\",\nagrave:\"Lettera minuscola latina a con accento grave\",aacute:\"Lettera minuscola latina a con accento acuto\",acirc:\"Lettera minuscola latina a con accento circonflesso\",atilde:\"Lettera minuscola latina a con tilde\",auml:\"Lettera minuscola latina a con dieresi\",aring:\"Lettera minuscola latina a con anello superiore\",aelig:\"Lettera minuscola latina ae\",ccedil:\"Lettera minuscola latina c con cediglia\",egrave:\"Lettera minuscola latina e con accento grave\",eacute:\"Lettera minuscola latina e con accento acuto\",\necirc:\"Lettera minuscola latina e con accento circonflesso\",euml:\"Lettera minuscola latina e con dieresi\",igrave:\"Lettera minuscola latina i con accento grave\",iacute:\"Lettera minuscola latina i con accento acuto\",icirc:\"Lettera minuscola latina i con accento circonflesso\",iuml:\"Lettera minuscola latina i con dieresi\",eth:\"Lettera minuscola latina eth\",ntilde:\"Lettera minuscola latina n con tilde\",ograve:\"Lettera minuscola latina o con accento grave\",oacute:\"Lettera minuscola latina o con accento acuto\",\nocirc:\"Lettera minuscola latina o con accento circonflesso\",otilde:\"Lettera minuscola latina o con tilde\",ouml:\"Lettera minuscola latina o con dieresi\",divide:\"Simbolo di divisione\",oslash:\"Lettera minuscola latina o barrata\",ugrave:\"Lettera minuscola latina u con accento grave\",uacute:\"Lettera minuscola latina u con accento acuto\",ucirc:\"Lettera minuscola latina u con accento circonflesso\",uuml:\"Lettera minuscola latina u con dieresi\",yacute:\"Lettera minuscola latina y con accento acuto\",thorn:\"Lettera minuscola latina thorn\",\nyuml:\"Lettera minuscola latina y con dieresi\",OElig:\"Legatura maiuscola latina OE\",oelig:\"Legatura minuscola latina oe\",372:\"Lettera maiuscola latina W con accento circonflesso\",374:\"Lettera maiuscola latina Y con accento circonflesso\",373:\"Lettera minuscola latina w con accento circonflesso\",375:\"Lettera minuscola latina y con accento circonflesso\",sbquo:\"Singola virgoletta bassa low-9\",8219:\"Singola virgoletta bassa low-9 inversa\",bdquo:\"Doppia virgoletta bassa low-9\",hellip:\"Ellissi orizzontale\",\ntrade:\"Simbolo TM\",9658:\"Puntatore nero rivolto verso destra\",bull:\"Punto\",rarr:\"Freccia verso destra\",rArr:\"Doppia freccia verso destra\",hArr:\"Doppia freccia sinistra destra\",diams:\"Simbolo nero diamante\",asymp:\"Quasi uguale a\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ja.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"ja\",{euro:\"ユーロ記号\",lsquo:\"左シングル引用符\",rsquo:\"右シングル引用符\",ldquo:\"左ダブル引用符\",rdquo:\"右ダブル引用符\",ndash:\"半角ダッシュ\",mdash:\"全角ダッシュ\",iexcl:\"逆さ感嘆符\",cent:\"セント記号\",pound:\"ポンド記号\",curren:\"通貨記号\",yen:\"円記号\",brvbar:\"上下に分かれた縦棒\",sect:\"節記号\",uml:\"分音記号(ウムラウト)\",copy:\"著作権表示記号\",ordf:\"女性序数標識\",laquo:\" 始め二重山括弧引用記号\",not:\"論理否定記号\",reg:\"登録商標記号\",macr:\"長音符\",deg:\"度記号\",sup2:\"上つき2, 2乗\",sup3:\"上つき3, 3乗\",acute:\"揚音符\",micro:\"ミクロン記号\",para:\"段落記号\",middot:\"中黒\",cedil:\"セディラ\",sup1:\"上つき1\",ordm:\"男性序数標識\",raquo:\"終わり二重山括弧引用記号\",\nfrac14:\"四分の一\",frac12:\"二分の一\",frac34:\"四分の三\",iquest:\"逆疑問符\",Agrave:\"抑音符つき大文字A\",Aacute:\"揚音符つき大文字A\",Acirc:\"曲折アクセントつき大文字A\",Atilde:\"チルダつき大文字A\",Auml:\"分音記号つき大文字A\",Aring:\"リングつき大文字A\",AElig:\"AとEの合字\",Ccedil:\"セディラつき大文字C\",Egrave:\"抑音符つき大文字E\",Eacute:\"揚音符つき大文字E\",Ecirc:\"曲折アクセントつき大文字E\",Euml:\"分音記号つき大文字E\",Igrave:\"抑音符つき大文字I\",Iacute:\"揚音符つき大文字I\",Icirc:\"曲折アクセントつき大文字I\",Iuml:\"分音記号つき大文字I\",ETH:\"[アイスランド語]大文字ETH\",Ntilde:\"チルダつき大文字N\",Ograve:\"抑音符つき大文字O\",Oacute:\"揚音符つき大文字O\",Ocirc:\"曲折アクセントつき大文字O\",Otilde:\"チルダつき大文字O\",Ouml:\" 分音記号つき大文字O\",\ntimes:\"乗算記号\",Oslash:\"打ち消し線つき大文字O\",Ugrave:\"抑音符つき大文字U\",Uacute:\"揚音符つき大文字U\",Ucirc:\"曲折アクセントつき大文字U\",Uuml:\"分音記号つき大文字U\",Yacute:\"揚音符つき大文字Y\",THORN:\"[アイスランド語]大文字THORN\",szlig:\"ドイツ語エスツェット\",agrave:\"抑音符つき小文字a\",aacute:\"揚音符つき小文字a\",acirc:\"曲折アクセントつき小文字a\",atilde:\"チルダつき小文字a\",auml:\"分音記号つき小文字a\",aring:\"リングつき小文字a\",aelig:\"aとeの合字\",ccedil:\"セディラつき小文字c\",egrave:\"抑音符つき小文字e\",eacute:\"揚音符つき小文字e\",ecirc:\"曲折アクセントつき小文字e\",euml:\"分音記号つき小文字e\",igrave:\"抑音符つき小文字i\",iacute:\"揚音符つき小文字i\",icirc:\"曲折アクセントつき小文字i\",iuml:\"分音記号つき小文字i\",eth:\"アイスランド語小文字eth\",\nntilde:\"チルダつき小文字n\",ograve:\"抑音符つき小文字o\",oacute:\"揚音符つき小文字o\",ocirc:\"曲折アクセントつき小文字o\",otilde:\"チルダつき小文字o\",ouml:\"分音記号つき小文字o\",divide:\"除算記号\",oslash:\"打ち消し線つき小文字o\",ugrave:\"抑音符つき小文字u\",uacute:\"揚音符つき小文字u\",ucirc:\"曲折アクセントつき小文字u\",uuml:\"分音記号つき小文字u\",yacute:\"揚音符つき小文字y\",thorn:\"アイスランド語小文字thorn\",yuml:\"分音記号つき小文字y\",OElig:\"OとEの合字\",oelig:\"oとeの合字\",372:\"曲折アクセントつき大文字W\",374:\"曲折アクセントつき大文字Y\",373:\"曲折アクセントつき小文字w\",375:\"曲折アクセントつき小文字y\",sbquo:\"シングル下引用符\",8219:\"左右逆の左引用符\",bdquo:\"ダブル下引用符\",hellip:\"三点リーダ\",trade:\"商標記号\",9658:\"右黒三角ポインタ\",bull:\"黒丸\",\nrarr:\"右矢印\",rArr:\"右二重矢印\",hArr:\"左右二重矢印\",diams:\"ダイヤ\",asymp:\"漸近\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/km.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"km\",{euro:\"សញ្ញា​អឺរ៉ូ\",lsquo:\"Left single quotation mark\",rsquo:\"Right single quotation mark\",ldquo:\"Left double quotation mark\",rdquo:\"Right double quotation mark\",ndash:\"En dash\",mdash:\"Em dash\",iexcl:\"Inverted exclamation mark\",cent:\"សញ្ញា​សេន\",pound:\"សញ្ញា​ផោន\",curren:\"សញ្ញា​រូបិយបណ្ណ\",yen:\"សញ្ញា​យ៉េន\",brvbar:\"Broken bar\",sect:\"Section sign\",uml:\"Diaeresis\",copy:\"សញ្ញា​រក្សា​សិទ្ធិ\",ordf:\"Feminine ordinal indicator\",laquo:\"Left-pointing double angle quotation mark\",\nnot:\"Not sign\",reg:\"Registered sign\",macr:\"Macron\",deg:\"សញ្ញា​ដឺក្រេ\",sup2:\"Superscript two\",sup3:\"Superscript three\",acute:\"Acute accent\",micro:\"សញ្ញា​មីក្រូ\",para:\"Pilcrow sign\",middot:\"Middle dot\",cedil:\"Cedilla\",sup1:\"Superscript one\",ordm:\"Masculine ordinal indicator\",raquo:\"Right-pointing double angle quotation mark\",frac14:\"Vulgar fraction one quarter\",frac12:\"Vulgar fraction one half\",frac34:\"Vulgar fraction three quarters\",iquest:\"Inverted question mark\",Agrave:\"Latin capital letter A with grave accent\",\nAacute:\"Latin capital letter A with acute accent\",Acirc:\"Latin capital letter A with circumflex\",Atilde:\"Latin capital letter A with tilde\",Auml:\"Latin capital letter A with diaeresis\",Aring:\"Latin capital letter A with ring above\",AElig:\"Latin Capital letter Æ\",Ccedil:\"Latin capital letter C with cedilla\",Egrave:\"Latin capital letter E with grave accent\",Eacute:\"Latin capital letter E with acute accent\",Ecirc:\"Latin capital letter E with circumflex\",Euml:\"Latin capital letter E with diaeresis\",Igrave:\"Latin capital letter I with grave accent\",\nIacute:\"Latin capital letter I with acute accent\",Icirc:\"Latin capital letter I with circumflex\",Iuml:\"Latin capital letter I with diaeresis\",ETH:\"Latin capital letter Eth\",Ntilde:\"Latin capital letter N with tilde\",Ograve:\"Latin capital letter O with grave accent\",Oacute:\"Latin capital letter O with acute accent\",Ocirc:\"Latin capital letter O with circumflex\",Otilde:\"Latin capital letter O with tilde\",Ouml:\"Latin capital letter O with diaeresis\",times:\"Multiplication sign\",Oslash:\"Latin capital letter O with stroke\",\nUgrave:\"Latin capital letter U with grave accent\",Uacute:\"Latin capital letter U with acute accent\",Ucirc:\"Latin capital letter U with circumflex\",Uuml:\"Latin capital letter U with diaeresis\",Yacute:\"Latin capital letter Y with acute accent\",THORN:\"Latin capital letter Thorn\",szlig:\"Latin small letter sharp s\",agrave:\"Latin small letter a with grave accent\",aacute:\"Latin small letter a with acute accent\",acirc:\"Latin small letter a with circumflex\",atilde:\"Latin small letter a with tilde\",auml:\"Latin small letter a with diaeresis\",\naring:\"Latin small letter a with ring above\",aelig:\"Latin small letter æ\",ccedil:\"Latin small letter c with cedilla\",egrave:\"Latin small letter e with grave accent\",eacute:\"Latin small letter e with acute accent\",ecirc:\"Latin small letter e with circumflex\",euml:\"Latin small letter e with diaeresis\",igrave:\"Latin small letter i with grave accent\",iacute:\"Latin small letter i with acute accent\",icirc:\"Latin small letter i with circumflex\",iuml:\"Latin small letter i with diaeresis\",eth:\"Latin small letter eth\",\nntilde:\"Latin small letter n with tilde\",ograve:\"Latin small letter o with grave accent\",oacute:\"Latin small letter o with acute accent\",ocirc:\"Latin small letter o with circumflex\",otilde:\"Latin small letter o with tilde\",ouml:\"Latin small letter o with diaeresis\",divide:\"Division sign\",oslash:\"Latin small letter o with stroke\",ugrave:\"Latin small letter u with grave accent\",uacute:\"Latin small letter u with acute accent\",ucirc:\"Latin small letter u with circumflex\",uuml:\"Latin small letter u with diaeresis\",\nyacute:\"Latin small letter y with acute accent\",thorn:\"Latin small letter thorn\",yuml:\"Latin small letter y with diaeresis\",OElig:\"Latin capital ligature OE\",oelig:\"Latin small ligature oe\",372:\"Latin capital letter W with circumflex\",374:\"Latin capital letter Y with circumflex\",373:\"Latin small letter w with circumflex\",375:\"Latin small letter y with circumflex\",sbquo:\"Single low-9 quotation mark\",8219:\"Single high-reversed-9 quotation mark\",bdquo:\"Double low-9 quotation mark\",hellip:\"Horizontal ellipsis\",\ntrade:\"Trade mark sign\",9658:\"Black right-pointing pointer\",bull:\"Bullet\",rarr:\"Rightwards arrow\",rArr:\"Rightwards double arrow\",hArr:\"Left right double arrow\",diams:\"Black diamond suit\",asymp:\"Almost equal to\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ku.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"ku\",{euro:\"نیشانەی یۆرۆ\",lsquo:\"نیشانەی فاریزەی سەرووژێری تاکی چەپ\",rsquo:\"نیشانەی فاریزەی سەرووژێری تاکی ڕاست\",ldquo:\"نیشانەی فاریزەی سەرووژێری دووهێندەی چه‌پ\",rdquo:\"نیشانەی فاریزەی سەرووژێری دووهێندەی ڕاست\",ndash:\"تەقەڵی کورت\",mdash:\"تەقەڵی درێژ\",iexcl:\"نیشانەی هەڵەوگێڕی سەرسوڕهێنەر\",cent:\"نیشانەی سەنت\",pound:\"نیشانەی پاوەند\",curren:\"نیشانەی دراو\",yen:\"نیشانەی یەنی ژاپۆنی\",brvbar:\"شریتی ئەستوونی پچڕاو\",sect:\"نیشانەی دوو s لەسەریەک\",uml:\"خاڵ\",copy:\"نیشانەی مافی چاپ\",\nordf:\"هێڵ لەسەر پیتی a\",laquo:\"دوو تیری بەدووایەکی چەپ\",not:\"نیشانەی نەخێر\",reg:\"نیشانەی R لەناو بازنەدا\",macr:\"ماکڕۆن\",deg:\"نیشانەی پلە\",sup2:\"سەرنووسی دوو\",sup3:\"سەرنووسی سێ\",acute:\"لاری تیژ\",micro:\"نیشانەی u لق درێژی چەپی خواروو\",para:\"نیشانەی پەڕەگراف\",middot:\"ناوەڕاستی خاڵ\",cedil:\"نیشانەی c ژێر چووکرە\",sup1:\"سەرنووسی یەک\",ordm:\"هێڵ لەژێر پیتی o\",raquo:\"دوو تیری بەدووایەکی ڕاست\",frac14:\"یەک لەسەر چووار\",frac12:\"یەک لەسەر دوو\",frac34:\"سێ لەسەر چووار\",iquest:\"هێمای هەڵەوگێری پرسیار\",Agrave:\"پیتی لاتینی A-ی گەورە لەگەڵ ڕوومەتداری لار\",\nAacute:\"پیتی لاتینی A-ی گەورە لەگەڵ ڕوومەتداری تیژ\",Acirc:\"پیتی لاتینی A-ی گەورە لەگەڵ نیشانە لەسەری\",Atilde:\"پیتی لاتینی A-ی گەورە لەگەڵ زەڕە\",Auml:\"پیتی لاتینی A-ی گەورە لەگەڵ نیشانە لەسەری\",Aring:\"پیتی لاتینی گەورەی Å\",AElig:\"پیتی لاتینی گەورەی Æ\",Ccedil:\"پیتی لاتینی C-ی گەورە لەگەڵ ژێر چووکرە\",Egrave:\"پیتی لاتینی E-ی گەورە لەگەڵ ڕوومەتداری لار\",Eacute:\"پیتی لاتینی E-ی گەورە لەگەڵ ڕوومەتداری تیژ\",Ecirc:\"پیتی لاتینی E-ی گەورە لەگەڵ نیشانە لەسەری\",Euml:\"پیتی لاتینی E-ی گەورە لەگەڵ نیشانە لەسەری\",\nIgrave:\"پیتی لاتینی I-ی گەورە لەگەڵ ڕوومەتداری لار\",Iacute:\"پیتی لاتینی I-ی گەورە لەگەڵ ڕوومەتداری تیژ\",Icirc:\"پیتی لاتینی I-ی گەورە لەگەڵ نیشانە لەسەری\",Iuml:\"پیتی لاتینی I-ی گەورە لەگەڵ نیشانە لەسەری\",ETH:\"پیتی لاتینی E-ی گەورەی\",Ntilde:\"پیتی لاتینی N-ی گەورە لەگەڵ زەڕە\",Ograve:\"پیتی لاتینی O-ی گەورە لەگەڵ ڕوومەتداری لار\",Oacute:\"پیتی لاتینی O-ی گەورە لەگەڵ ڕوومەتداری تیژ\",Ocirc:\"پیتی لاتینی O-ی گەورە لەگەڵ نیشانە لەسەری\",Otilde:\"پیتی لاتینی O-ی گەورە لەگەڵ زەڕە\",Ouml:\"پیتی لاتینی O-ی گەورە لەگەڵ نیشانە لەسەری\",\ntimes:\"نیشانەی لێکدان\",Oslash:\"پیتی لاتینی گەورەی Ø لەگەڵ هێمای دڵ وەستان\",Ugrave:\"پیتی لاتینی U-ی گەورە لەگەڵ ڕوومەتداری لار\",Uacute:\"پیتی لاتینی U-ی گەورە لەگەڵ ڕوومەتداری تیژ\",Ucirc:\"پیتی لاتینی U-ی گەورە لەگەڵ نیشانە لەسەری\",Uuml:\"پیتی لاتینی U-ی گەورە لەگەڵ نیشانە لەسەری\",Yacute:\"پیتی لاتینی Y-ی گەورە لەگەڵ ڕوومەتداری تیژ\",THORN:\"پیتی لاتینی دڕکی گەورە\",szlig:\"پیتی لاتنی نووک تیژی s\",agrave:\"پیتی لاتینی a-ی بچووک لەگەڵ ڕوومەتداری لار\",aacute:\"پیتی لاتینی a-ی بچووك لەگەڵ ڕوومەتداری تیژ\",acirc:\"پیتی لاتینی a-ی بچووك لەگەڵ نیشانە لەسەری\",\natilde:\"پیتی لاتینی a-ی بچووك لەگەڵ زەڕە\",auml:\"پیتی لاتینی a-ی بچووك لەگەڵ نیشانە لەسەری\",aring:\"پیتی لاتینی å-ی بچووك\",aelig:\"پیتی لاتینی æ-ی بچووك\",ccedil:\"پیتی لاتینی c-ی بچووك لەگەڵ ژێر چووکرە\",egrave:\"پیتی لاتینی e-ی بچووك لەگەڵ ڕوومەتداری لار\",eacute:\"پیتی لاتینی e-ی بچووك لەگەڵ ڕوومەتداری تیژ\",ecirc:\"پیتی لاتینی e-ی بچووك لەگەڵ نیشانە لەسەری\",euml:\"پیتی لاتینی e-ی بچووك لەگەڵ نیشانە لەسەری\",igrave:\"پیتی لاتینی i-ی بچووك لەگەڵ ڕوومەتداری لار\",iacute:\"پیتی لاتینی i-ی بچووك لەگەڵ ڕوومەتداری تیژ\",\nicirc:\"پیتی لاتینی i-ی بچووك لەگەڵ نیشانە لەسەری\",iuml:\"پیتی لاتینی i-ی بچووك لەگەڵ نیشانە لەسەری\",eth:\"پیتی لاتینی e-ی بچووك\",ntilde:\"پیتی لاتینی n-ی بچووك لەگەڵ زەڕە\",ograve:\"پیتی لاتینی o-ی بچووك لەگەڵ ڕوومەتداری لار\",oacute:\"پیتی لاتینی o-ی بچووك له‌گەڵ ڕوومەتداری تیژ\",ocirc:\"پیتی لاتینی o-ی بچووك لەگەڵ نیشانە لەسەری\",otilde:\"پیتی لاتینی o-ی بچووك لەگەڵ زەڕە\",ouml:\"پیتی لاتینی o-ی بچووك لەگەڵ نیشانە لەسەری\",divide:\"نیشانەی دابەش\",oslash:\"پیتی لاتینی گەورەی ø لەگەڵ هێمای دڵ وەستان\",ugrave:\"پیتی لاتینی u-ی بچووك لەگەڵ ڕوومەتداری لار\",\nuacute:\"پیتی لاتینی u-ی بچووك لەگەڵ ڕوومەتداری تیژ\",ucirc:\"پیتی لاتینی u-ی بچووك لەگەڵ نیشانە لەسەری\",uuml:\"پیتی لاتینی u-ی بچووك لەگەڵ نیشانە لەسەری\",yacute:\"پیتی لاتینی y-ی بچووك لەگەڵ ڕوومەتداری تیژ\",thorn:\"پیتی لاتینی دڕکی بچووك\",yuml:\"پیتی لاتینی y-ی بچووك لەگەڵ نیشانە لەسەری\",OElig:\"پیتی لاتینی گەورەی پێکەوەنووسراوی OE\",oelig:\"پیتی لاتینی بچووکی پێکەوەنووسراوی oe\",372:\"پیتی لاتینی W-ی گەورە لەگەڵ نیشانە لەسەری\",374:\"پیتی لاتینی Y-ی گەورە لەگەڵ نیشانە لەسەری\",373:\"پیتی لاتینی w-ی بچووکی لەگەڵ نیشانە لەسەری\",\n375:\"پیتی لاتینی y-ی بچووکی لەگەڵ نیشانە لەسەری\",sbquo:\"نیشانەی فاریزەی نزم\",8219:\"نیشانەی فاریزەی بەرزی پێچەوانە\",bdquo:\"دوو فاریزەی تەنیش یەك\",hellip:\"ئاسۆیی بازنە\",trade:\"نیشانەی بازرگانی\",9658:\"ئاراستەی ڕەشی دەستی ڕاست\",bull:\"فیشەك\",rarr:\"تیری دەستی ڕاست\",rArr:\"دووتیری دەستی ڕاست\",hArr:\"دوو تیری ڕاست و چەپ\",diams:\"ڕەشی پاقڵاوەیی\",asymp:\"نیشانەی یەکسانە\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/lv.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"lv\",{euro:\"Euro zīme\",lsquo:\"Kreisā  vienkārtīga pēdiņa\",rsquo:\"Labā  vienkārtīga pēdiņa\",ldquo:\"Kreisā  dubult pēdiņa\",rdquo:\"Labā dubult pēdiņa\",ndash:\"En svītra\",mdash:\"Em svītra\",iexcl:\"Apgriezta izsaukuma zīme\",cent:\"Centu naudas zīme\",pound:\"Sterliņu mārciņu naudas zīme\",curren:\"Valūtas zīme\",yen:\"Jenu naudas zīme\",brvbar:\"Vertikāla pārrauta līnija\",sect:\"Paragrāfa zīme\",uml:\"Diakritiska zīme\",copy:\"Autortiesību zīme\",ordf:\"Sievišķas kārtas rādītājs\",\nlaquo:\"Kreisā dubult stūra pēdiņu zīme\",not:\"Neparakstīts\",reg:\"Reģistrēta zīme\",macr:\"Garumzīme\",deg:\"Grādu zīme\",sup2:\"Augšraksts divi\",sup3:\"Augšraksts trīs\",acute:\"Akūta uzsvara zīme\",micro:\"Mikro zīme\",para:\"Rindkopas zīme \",middot:\"Vidējs punkts\",cedil:\"Āķītis zem burta\",sup1:\"Augšraksts viens\",ordm:\"Vīrišķīgas kārtas rādītājs\",raquo:\"Labā dubult stūra pēdiņu zīme\",frac14:\"Vulgāra frakcija 1/4\",frac12:\"Vulgāra frakcija 1/2\",frac34:\"Vulgāra frakcija 3/4\",iquest:\"Apgriezta jautājuma zīme\",Agrave:\"Lielais latīņu burts A ar uzsvara zīmi\",\nAacute:\"Lielais  latīņu burts A ar akūtu uzsvara zīmi\",Acirc:\"Lielais latīņu burts A ar diakritisku zīmi\",Atilde:\"Lielais latīņu burts A ar tildi \",Auml:\"Lielais latīņu burts A ar diakritisko zīmi\",Aring:\"Lielais latīņu burts A ar aplīti augšā\",AElig:\"Lielais latīņu burts Æ\",Ccedil:\"Lielais latīņu burts C ar āķīti zem burta\",Egrave:\"Lielais latīņu burts E ar apostrofu\",Eacute:\"Lielais latīņu burts E ar akūtu uzsvara zīmi\",Ecirc:\"Lielais latīņu burts E ar diakritisko zīmi\",Euml:\"Lielais latīņu burts E ar diakritisko zīmi\",\nIgrave:\"Lielais latīņu burts I ar uzsvaras  zīmi\",Iacute:\"Lielais latīņu burts I ar akūtu uzsvara zīmi\",Icirc:\"Lielais latīņu burts I ar diakritisko zīmi\",Iuml:\"Lielais latīņu burts I ar diakritisko zīmi\",ETH:\"Lielais latīņu burts Eth\",Ntilde:\"Lielais latīņu burts N ar tildi\",Ograve:\"Lielais latīņu burts O ar uzsvara zīmi\",Oacute:\"Lielais latīņu burts O ar akūto uzsvara zīmi\",Ocirc:\"Lielais latīņu burts O ar diakritisko zīmi\",Otilde:\"Lielais latīņu burts O ar tildi\",Ouml:\"Lielais latīņu burts O ar diakritisko zīmi\",\ntimes:\"Reizināšanas zīme \",Oslash:\"Lielais latīņu burts O ar iesvītrojumu\",Ugrave:\"Lielais latīņu burts U ar uzsvaras zīmi\",Uacute:\"Lielais latīņu burts U ar akūto uzsvars zīmi\",Ucirc:\"Lielais latīņu burts U ar diakritisko zīmi\",Uuml:\"Lielais latīņu burts U ar diakritisko zīmi\",Yacute:\"Lielais latīņu burts Y ar akūto uzsvaras zīmi\",THORN:\"Lielais latīņu burts torn\",szlig:\"Mazs latīņu burts ar ligatūru\",agrave:\"Mazs latīņu burts a ar uzsvara zīmi\",aacute:\"Mazs latīņu burts a ar akūto uzsvara zīmi\",\nacirc:\"Mazs latīņu burts a ar diakritisko zīmi\",atilde:\"Mazs latīņu burts a ar tildi\",auml:\"Mazs latīņu burts a ar diakritisko zīmi\",aring:\"Mazs latīņu burts a ar aplīti augšā\",aelig:\"Mazs latīņu burts æ\",ccedil:\"Mazs latīņu burts c ar āķīti zem burta\",egrave:\"Mazs latīņu burts e ar uzsvara zīmi \",eacute:\"Mazs latīņu burts e ar akūtu uzsvara zīmi\",ecirc:\"Mazs latīņu burts e ar diakritisko zīmi\",euml:\"Mazs latīņu burts e ar diakritisko zīmi\",igrave:\"Mazs latīņu burts i ar uzsvara zīmi \",iacute:\"Mazs latīņu burts i ar akūtu uzsvara zīmi\",\nicirc:\"Mazs latīņu burts i ar diakritisko zīmi\",iuml:\"Mazs latīņu burts i ar diakritisko zīmi\",eth:\"Mazs latīņu burts eth\",ntilde:\"Mazs latīņu burts n ar tildi\",ograve:\"Mazs latīņu burts o ar uzsvara zīmi \",oacute:\"Mazs latīņu burts o ar akūtu uzsvara zīmi\",ocirc:\"Mazs latīņu burts o ar diakritisko zīmi\",otilde:\"Mazs latīņu burts o ar tildi\",ouml:\"Mazs latīņu burts o ar diakritisko zīmi\",divide:\"Dalīšanas zīme\",oslash:\"Mazs latīņu burts o ar iesvītrojumu\",ugrave:\"Mazs latīņu burts u ar uzsvara zīmi \",\nuacute:\"Mazs latīņu burts u ar  akūtu uzsvara zīmi\",ucirc:\"Mazs latīņu burts u ar diakritisko zīmi\",uuml:\"Mazs latīņu burts u ar diakritisko zīmi\",yacute:\"Mazs latīņu burts y ar  akūtu uzsvaras zīmi\",thorn:\"Mazs latīņu burts torns\",yuml:\"Mazs latīņu burts y ar diakritisko zīmi\",OElig:\"Liela latīņu ligatūra OE\",oelig:\"Maza latīņu ligatūra oe\",372:\"Liels latīņu burts W ar diakritisko zīmi \",374:\"Liels latīņu burts Y ar diakritisko zīmi \",373:\"Mazs latīņu burts w ar diakritisko zīmi \",375:\"Mazs latīņu burts y ar diakritisko zīmi \",\nsbquo:\"Mazas-9 vienkārtīgas pēdiņas\",8219:\"Lielas-9 vienkārtīgas apgrieztas pēdiņas\",bdquo:\"Mazas-9 dubultas pēdiņas\",hellip:\"Horizontāli daudzpunkti\",trade:\"Preču zīmes zīme\",9658:\"Melns pa labi pagriezts radītājs\",bull:\"Lode\",rarr:\"Bulta pa labi\",rArr:\"Dubulta Bulta pa labi\",hArr:\"Bulta pa kreisi\",diams:\"Dubulta Bulta pa kreisi\",asymp:\"Gandrīz vienāds ar\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/nb.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"nb\",{euro:\"Eurosymbol\",lsquo:\"Venstre enkelt anførselstegn\",rsquo:\"Høyre enkelt anførselstegn\",ldquo:\"Venstre dobbelt anførselstegn\",rdquo:\"Høyre anførsesltegn\",ndash:\"Kort tankestrek\",mdash:\"Lang tankestrek\",iexcl:\"Omvendt utropstegn\",cent:\"Centsymbol\",pound:\"Pundsymbol\",curren:\"Valutategn\",yen:\"Yensymbol\",brvbar:\"Brutt loddrett strek\",sect:\"Paragraftegn\",uml:\"Tøddel\",copy:\"Copyrighttegn\",ordf:\"Feminin ordensindikator\",laquo:\"Venstre anførselstegn\",not:\"Negasjonstegn\",\nreg:\"Registrert varemerke-tegn\",macr:\"Makron\",deg:\"Gradsymbol\",sup2:\"Hevet totall\",sup3:\"Hevet tretall\",acute:\"Akutt aksent\",micro:\"Mikrosymbol\",para:\"Avsnittstegn\",middot:\"Midtstilt prikk\",cedil:\"Cedille\",sup1:\"Hevet ettall\",ordm:\"Maskulin ordensindikator\",raquo:\"Høyre anførselstegn\",frac14:\"Fjerdedelsbrøk\",frac12:\"Halvbrøk\",frac34:\"Tre fjerdedelers brøk\",iquest:\"Omvendt spørsmålstegn\",Agrave:\"Stor A med grav aksent\",Aacute:\"Stor A med akutt aksent\",Acirc:\"Stor A med cirkumfleks\",Atilde:\"Stor A med tilde\",\nAuml:\"Stor A med tøddel\",Aring:\"Stor Å\",AElig:\"Stor Æ\",Ccedil:\"Stor C med cedille\",Egrave:\"Stor E med grav aksent\",Eacute:\"Stor E med akutt aksent\",Ecirc:\"Stor E med cirkumfleks\",Euml:\"Stor E med tøddel\",Igrave:\"Stor I med grav aksent\",Iacute:\"Stor I med akutt aksent\",Icirc:\"Stor I med cirkumfleks\",Iuml:\"Stor I med tøddel\",ETH:\"Stor Edd/stungen D\",Ntilde:\"Stor N med tilde\",Ograve:\"Stor O med grav aksent\",Oacute:\"Stor O med akutt aksent\",Ocirc:\"Stor O med cirkumfleks\",Otilde:\"Stor O med tilde\",Ouml:\"Stor O med tøddel\",\ntimes:\"Multiplikasjonstegn\",Oslash:\"Stor Ø\",Ugrave:\"Stor U med grav aksent\",Uacute:\"Stor U med akutt aksent\",Ucirc:\"Stor U med cirkumfleks\",Uuml:\"Stor U med tøddel\",Yacute:\"Stor Y med akutt aksent\",THORN:\"Stor Thorn\",szlig:\"Liten dobbelt-s/Eszett\",agrave:\"Liten a med grav aksent\",aacute:\"Liten a med akutt aksent\",acirc:\"Liten a med cirkumfleks\",atilde:\"Liten a med tilde\",auml:\"Liten a med tøddel\",aring:\"Liten å\",aelig:\"Liten æ\",ccedil:\"Liten c med cedille\",egrave:\"Liten e med grav aksent\",eacute:\"Liten e med akutt aksent\",\necirc:\"Liten e med cirkumfleks\",euml:\"Liten e med tøddel\",igrave:\"Liten i med grav aksent\",iacute:\"Liten i med akutt aksent\",icirc:\"Liten i med cirkumfleks\",iuml:\"Liten i med tøddel\",eth:\"Liten edd/stungen d\",ntilde:\"Liten n med tilde\",ograve:\"Liten o med grav aksent\",oacute:\"Liten o med akutt aksent\",ocirc:\"Liten o med cirkumfleks\",otilde:\"Liten o med tilde\",ouml:\"Liten o med tøddel\",divide:\"Divisjonstegn\",oslash:\"Liten ø\",ugrave:\"Liten u med grav aksent\",uacute:\"Liten u med akutt aksent\",ucirc:\"Liten u med cirkumfleks\",\nuuml:\"Liten u med tøddel\",yacute:\"Liten y med akutt aksent\",thorn:\"Liten thorn\",yuml:\"Liten y med tøddel\",OElig:\"Stor ligatur av O og E\",oelig:\"Liten ligatur av o og e\",372:\"Stor W med cirkumfleks\",374:\"Stor Y med cirkumfleks\",373:\"Liten w med cirkumfleks\",375:\"Liten y med cirkumfleks\",sbquo:\"Enkelt lavt 9-anførselstegn\",8219:\"Enkelt høyt reversert 9-anførselstegn\",bdquo:\"Dobbelt lavt 9-anførselstegn\",hellip:\"Ellipse\",trade:\"Varemerkesymbol\",9658:\"Svart høyrevendt peker\",bull:\"Tykk interpunkt\",rarr:\"Høyrevendt pil\",\nrArr:\"Dobbel høyrevendt pil\",hArr:\"Dobbel venstrevendt pil\",diams:\"Svart ruter\",asymp:\"Omtrent likhetstegn\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/nl.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"nl\",{euro:\"Euro-teken\",lsquo:\"Linker enkel aanhalingsteken\",rsquo:\"Rechter enkel aanhalingsteken\",ldquo:\"Linker dubbel aanhalingsteken\",rdquo:\"Rechter dubbel aanhalingsteken\",ndash:\"En dash\",mdash:\"Em dash\",iexcl:\"Omgekeerd uitroepteken\",cent:\"Cent-teken\",pound:\"Pond-teken\",curren:\"Valuta-teken\",yen:\"Yen-teken\",brvbar:\"Gebroken streep\",sect:\"Paragraaf-teken\",uml:\"Trema\",copy:\"Copyright-teken\",ordf:\"Vrouwelijk ordinaal\",laquo:\"Linker guillemet\",not:\"Ongelijk-teken\",\nreg:\"Geregistreerd handelsmerk-teken\",macr:\"Macron\",deg:\"Graden-teken\",sup2:\"Superscript twee\",sup3:\"Superscript drie\",acute:\"Accent aigu\",micro:\"Micro-teken\",para:\"Alinea-teken\",middot:\"Halfhoge punt\",cedil:\"Cedille\",sup1:\"Superscript een\",ordm:\"Mannelijk ordinaal\",raquo:\"Rechter guillemet\",frac14:\"Breuk kwart\",frac12:\"Breuk half\",frac34:\"Breuk driekwart\",iquest:\"Omgekeerd vraagteken\",Agrave:\"Latijnse hoofdletter A met een accent grave\",Aacute:\"Latijnse hoofdletter A met een accent aigu\",Acirc:\"Latijnse hoofdletter A met een circonflexe\",\nAtilde:\"Latijnse hoofdletter A met een tilde\",Auml:\"Latijnse hoofdletter A met een trema\",Aring:\"Latijnse hoofdletter A met een corona\",AElig:\"Latijnse hoofdletter Æ\",Ccedil:\"Latijnse hoofdletter C met een cedille\",Egrave:\"Latijnse hoofdletter E met een accent grave\",Eacute:\"Latijnse hoofdletter E met een accent aigu\",Ecirc:\"Latijnse hoofdletter E met een circonflexe\",Euml:\"Latijnse hoofdletter E met een trema\",Igrave:\"Latijnse hoofdletter I met een accent grave\",Iacute:\"Latijnse hoofdletter I met een accent aigu\",\nIcirc:\"Latijnse hoofdletter I met een circonflexe\",Iuml:\"Latijnse hoofdletter I met een trema\",ETH:\"Latijnse hoofdletter Eth\",Ntilde:\"Latijnse hoofdletter N met een tilde\",Ograve:\"Latijnse hoofdletter O met een accent grave\",Oacute:\"Latijnse hoofdletter O met een accent aigu\",Ocirc:\"Latijnse hoofdletter O met een circonflexe\",Otilde:\"Latijnse hoofdletter O met een tilde\",Ouml:\"Latijnse hoofdletter O met een trema\",times:\"Maal-teken\",Oslash:\"Latijnse hoofdletter O met een schuine streep\",Ugrave:\"Latijnse hoofdletter U met een accent grave\",\nUacute:\"Latijnse hoofdletter U met een accent aigu\",Ucirc:\"Latijnse hoofdletter U met een circonflexe\",Uuml:\"Latijnse hoofdletter U met een trema\",Yacute:\"Latijnse hoofdletter Y met een accent aigu\",THORN:\"Latijnse hoofdletter Thorn\",szlig:\"Latijnse kleine ringel-s\",agrave:\"Latijnse kleine letter a met een accent grave\",aacute:\"Latijnse kleine letter a met een accent aigu\",acirc:\"Latijnse kleine letter a met een circonflexe\",atilde:\"Latijnse kleine letter a met een tilde\",auml:\"Latijnse kleine letter a met een trema\",\naring:\"Latijnse kleine letter a met een corona\",aelig:\"Latijnse kleine letter æ\",ccedil:\"Latijnse kleine letter c met een cedille\",egrave:\"Latijnse kleine letter e met een accent grave\",eacute:\"Latijnse kleine letter e met een accent aigu\",ecirc:\"Latijnse kleine letter e met een circonflexe\",euml:\"Latijnse kleine letter e met een trema\",igrave:\"Latijnse kleine letter i met een accent grave\",iacute:\"Latijnse kleine letter i met een accent aigu\",icirc:\"Latijnse kleine letter i met een circonflexe\",\niuml:\"Latijnse kleine letter i met een trema\",eth:\"Latijnse kleine letter eth\",ntilde:\"Latijnse kleine letter n met een tilde\",ograve:\"Latijnse kleine letter o met een accent grave\",oacute:\"Latijnse kleine letter o met een accent aigu\",ocirc:\"Latijnse kleine letter o met een circonflexe\",otilde:\"Latijnse kleine letter o met een tilde\",ouml:\"Latijnse kleine letter o met een trema\",divide:\"Deel-teken\",oslash:\"Latijnse kleine letter o met een schuine streep\",ugrave:\"Latijnse kleine letter u met een accent grave\",\nuacute:\"Latijnse kleine letter u met een accent aigu\",ucirc:\"Latijnse kleine letter u met een circonflexe\",uuml:\"Latijnse kleine letter u met een trema\",yacute:\"Latijnse kleine letter y met een accent aigu\",thorn:\"Latijnse kleine letter thorn\",yuml:\"Latijnse kleine letter y met een trema\",OElig:\"Latijnse hoofdletter Œ\",oelig:\"Latijnse kleine letter œ\",372:\"Latijnse hoofdletter W met een circonflexe\",374:\"Latijnse hoofdletter Y met een circonflexe\",373:\"Latijnse kleine letter w met een circonflexe\",\n375:\"Latijnse kleine letter y met een circonflexe\",sbquo:\"Lage enkele aanhalingsteken\",8219:\"Hoge omgekeerde enkele aanhalingsteken\",bdquo:\"Lage dubbele aanhalingsteken\",hellip:\"Beletselteken\",trade:\"Trademark-teken\",9658:\"Zwarte driehoek naar rechts\",bull:\"Bullet\",rarr:\"Pijl naar rechts\",rArr:\"Dubbele pijl naar rechts\",hArr:\"Dubbele pijl naar links\",diams:\"Zwart ruitje\",asymp:\"Benaderingsteken\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/no.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"no\",{euro:\"Eurosymbol\",lsquo:\"Venstre enkelt anførselstegn\",rsquo:\"Høyre enkelt anførselstegn\",ldquo:\"Venstre dobbelt anførselstegn\",rdquo:\"Høyre anførsesltegn\",ndash:\"Kort tankestrek\",mdash:\"Lang tankestrek\",iexcl:\"Omvendt utropstegn\",cent:\"Centsymbol\",pound:\"Pundsymbol\",curren:\"Valutategn\",yen:\"Yensymbol\",brvbar:\"Brutt loddrett strek\",sect:\"Paragraftegn\",uml:\"Tøddel\",copy:\"Copyrighttegn\",ordf:\"Feminin ordensindikator\",laquo:\"Venstre anførselstegn\",not:\"Negasjonstegn\",\nreg:\"Registrert varemerke-tegn\",macr:\"Makron\",deg:\"Gradsymbol\",sup2:\"Hevet totall\",sup3:\"Hevet tretall\",acute:\"Akutt aksent\",micro:\"Mikrosymbol\",para:\"Avsnittstegn\",middot:\"Midtstilt prikk\",cedil:\"Cedille\",sup1:\"Hevet ettall\",ordm:\"Maskulin ordensindikator\",raquo:\"Høyre anførselstegn\",frac14:\"Fjerdedelsbrøk\",frac12:\"Halvbrøk\",frac34:\"Tre fjerdedelers brøk\",iquest:\"Omvendt spørsmålstegn\",Agrave:\"Stor A med grav aksent\",Aacute:\"Stor A med akutt aksent\",Acirc:\"Stor A med cirkumfleks\",Atilde:\"Stor A med tilde\",\nAuml:\"Stor A med tøddel\",Aring:\"Stor Å\",AElig:\"Stor Æ\",Ccedil:\"Stor C med cedille\",Egrave:\"Stor E med grav aksent\",Eacute:\"Stor E med akutt aksent\",Ecirc:\"Stor E med cirkumfleks\",Euml:\"Stor E med tøddel\",Igrave:\"Stor I med grav aksent\",Iacute:\"Stor I med akutt aksent\",Icirc:\"Stor I med cirkumfleks\",Iuml:\"Stor I med tøddel\",ETH:\"Stor Edd/stungen D\",Ntilde:\"Stor N med tilde\",Ograve:\"Stor O med grav aksent\",Oacute:\"Stor O med akutt aksent\",Ocirc:\"Stor O med cirkumfleks\",Otilde:\"Stor O med tilde\",Ouml:\"Stor O med tøddel\",\ntimes:\"Multiplikasjonstegn\",Oslash:\"Stor Ø\",Ugrave:\"Stor U med grav aksent\",Uacute:\"Stor U med akutt aksent\",Ucirc:\"Stor U med cirkumfleks\",Uuml:\"Stor U med tøddel\",Yacute:\"Stor Y med akutt aksent\",THORN:\"Stor Thorn\",szlig:\"Liten dobbelt-s/Eszett\",agrave:\"Liten a med grav aksent\",aacute:\"Liten a med akutt aksent\",acirc:\"Liten a med cirkumfleks\",atilde:\"Liten a med tilde\",auml:\"Liten a med tøddel\",aring:\"Liten å\",aelig:\"Liten æ\",ccedil:\"Liten c med cedille\",egrave:\"Liten e med grav aksent\",eacute:\"Liten e med akutt aksent\",\necirc:\"Liten e med cirkumfleks\",euml:\"Liten e med tøddel\",igrave:\"Liten i med grav aksent\",iacute:\"Liten i med akutt aksent\",icirc:\"Liten i med cirkumfleks\",iuml:\"Liten i med tøddel\",eth:\"Liten edd/stungen d\",ntilde:\"Liten n med tilde\",ograve:\"Liten o med grav aksent\",oacute:\"Liten o med akutt aksent\",ocirc:\"Liten o med cirkumfleks\",otilde:\"Liten o med tilde\",ouml:\"Liten o med tøddel\",divide:\"Divisjonstegn\",oslash:\"Liten ø\",ugrave:\"Liten u med grav aksent\",uacute:\"Liten u med akutt aksent\",ucirc:\"Liten u med cirkumfleks\",\nuuml:\"Liten u med tøddel\",yacute:\"Liten y med akutt aksent\",thorn:\"Liten thorn\",yuml:\"Liten y med tøddel\",OElig:\"Stor ligatur av O og E\",oelig:\"Liten ligatur av o og e\",372:\"Stor W med cirkumfleks\",374:\"Stor Y med cirkumfleks\",373:\"Liten w med cirkumfleks\",375:\"Liten y med cirkumfleks\",sbquo:\"Enkelt lavt 9-anførselstegn\",8219:\"Enkelt høyt reversert 9-anførselstegn\",bdquo:\"Dobbelt lavt 9-anførselstegn\",hellip:\"Ellipse\",trade:\"Varemerkesymbol\",9658:\"Svart høyrevendt peker\",bull:\"Tykk interpunkt\",rarr:\"Høyrevendt pil\",\nrArr:\"Dobbel høyrevendt pil\",hArr:\"Dobbel venstrevendt pil\",diams:\"Svart ruter\",asymp:\"Omtrent likhetstegn\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/pl.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"pl\",{euro:\"Znak euro\",lsquo:\"Cudzysłów pojedynczy otwierający\",rsquo:\"Cudzysłów pojedynczy zamykający\",ldquo:\"Cudzysłów apostrofowy otwierający\",rdquo:\"Cudzysłów apostrofowy zamykający\",ndash:\"Półpauza\",mdash:\"Pauza\",iexcl:\"Odwrócony wykrzyknik\",cent:\"Znak centa\",pound:\"Znak funta\",curren:\"Znak waluty\",yen:\"Znak jena\",brvbar:\"Przerwana pionowa kreska\",sect:\"Paragraf\",uml:\"Diereza\",copy:\"Znak praw autorskich\",ordf:\"Wskaźnik rodzaju żeńskiego liczebnika porządkowego\",\nlaquo:\"Lewy cudzysłów ostrokątny\",not:\"Znak negacji\",reg:\"Zastrzeżony znak towarowy\",macr:\"Makron\",deg:\"Znak stopnia\",sup2:\"Druga potęga\",sup3:\"Trzecia potęga\",acute:\"Akcent ostry\",micro:\"Znak mikro\",para:\"Znak akapitu\",middot:\"Kropka środkowa\",cedil:\"Cedylla\",sup1:\"Pierwsza potęga\",ordm:\"Wskaźnik rodzaju męskiego liczebnika porządkowego\",raquo:\"Prawy cudzysłów ostrokątny\",frac14:\"Ułamek zwykły jedna czwarta\",frac12:\"Ułamek zwykły jedna druga\",frac34:\"Ułamek zwykły trzy czwarte\",iquest:\"Odwrócony znak zapytania\",\nAgrave:\"Wielka litera A z akcentem ciężkim\",Aacute:\"Wielka litera A z akcentem ostrym\",Acirc:\"Wielka litera A z akcentem przeciągłym\",Atilde:\"Wielka litera A z tyldą\",Auml:\"Wielka litera A z dierezą\",Aring:\"Wielka litera A z kółkiem\",AElig:\"Wielka ligatura Æ\",Ccedil:\"Wielka litera C z cedyllą\",Egrave:\"Wielka litera E z akcentem ciężkim\",Eacute:\"Wielka litera E z akcentem ostrym\",Ecirc:\"Wielka litera E z akcentem przeciągłym\",Euml:\"Wielka litera E z dierezą\",Igrave:\"Wielka litera I z akcentem ciężkim\",\nIacute:\"Wielka litera I z akcentem ostrym\",Icirc:\"Wielka litera I z akcentem przeciągłym\",Iuml:\"Wielka litera I z dierezą\",ETH:\"Wielka litera Eth\",Ntilde:\"Wielka litera N z tyldą\",Ograve:\"Wielka litera O z akcentem ciężkim\",Oacute:\"Wielka litera O z akcentem ostrym\",Ocirc:\"Wielka litera O z akcentem przeciągłym\",Otilde:\"Wielka litera O z tyldą\",Ouml:\"Wielka litera O z dierezą\",times:\"Znak mnożenia wektorowego\",Oslash:\"Wielka litera O z przekreśleniem\",Ugrave:\"Wielka litera U z akcentem ciężkim\",Uacute:\"Wielka litera U z akcentem ostrym\",\nUcirc:\"Wielka litera U z akcentem przeciągłym\",Uuml:\"Wielka litera U z dierezą\",Yacute:\"Wielka litera Y z akcentem ostrym\",THORN:\"Wielka litera Thorn\",szlig:\"Mała litera ostre s (eszet)\",agrave:\"Mała litera a z akcentem ciężkim\",aacute:\"Mała litera a z akcentem ostrym\",acirc:\"Mała litera a z akcentem przeciągłym\",atilde:\"Mała litera a z tyldą\",auml:\"Mała litera a z dierezą\",aring:\"Mała litera a z kółkiem\",aelig:\"Mała ligatura æ\",ccedil:\"Mała litera c z cedyllą\",egrave:\"Mała litera e z akcentem ciężkim\",\neacute:\"Mała litera e z akcentem ostrym\",ecirc:\"Mała litera e z akcentem przeciągłym\",euml:\"Mała litera e z dierezą\",igrave:\"Mała litera i z akcentem ciężkim\",iacute:\"Mała litera i z akcentem ostrym\",icirc:\"Mała litera i z akcentem przeciągłym\",iuml:\"Mała litera i z dierezą\",eth:\"Mała litera eth\",ntilde:\"Mała litera n z tyldą\",ograve:\"Mała litera o z akcentem ciężkim\",oacute:\"Mała litera o z akcentem ostrym\",ocirc:\"Mała litera o z akcentem przeciągłym\",otilde:\"Mała litera o z tyldą\",ouml:\"Mała litera o z dierezą\",\ndivide:\"Anglosaski znak dzielenia\",oslash:\"Mała litera o z przekreśleniem\",ugrave:\"Mała litera u z akcentem ciężkim\",uacute:\"Mała litera u z akcentem ostrym\",ucirc:\"Mała litera u z akcentem przeciągłym\",uuml:\"Mała litera u z dierezą\",yacute:\"Mała litera y z akcentem ostrym\",thorn:\"Mała litera thorn\",yuml:\"Mała litera y z dierezą\",OElig:\"Wielka ligatura OE\",oelig:\"Mała ligatura oe\",372:\"Wielka litera W z akcentem przeciągłym\",374:\"Wielka litera Y z akcentem przeciągłym\",373:\"Mała litera w z akcentem przeciągłym\",\n375:\"Mała litera y z akcentem przeciągłym\",sbquo:\"Pojedynczy apostrof dolny\",8219:\"Pojedynczy apostrof górny\",bdquo:\"Podwójny apostrof dolny\",hellip:\"Wielokropek\",trade:\"Znak towarowy\",9658:\"Czarny wskaźnik wskazujący w prawo\",bull:\"Punktor\",rarr:\"Strzałka w prawo\",rArr:\"Podwójna strzałka w prawo\",hArr:\"Podwójna strzałka w lewo\",diams:\"Czarny znak karo\",asymp:\"Znak prawie równe\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"pt-br\",{euro:\"Euro\",lsquo:\"Aspas simples esquerda\",rsquo:\"Aspas simples direita\",ldquo:\"Aspas duplas esquerda\",rdquo:\"Aspas duplas direita\",ndash:\"Traço\",mdash:\"Travessão\",iexcl:\"Ponto de exclamação invertido\",cent:\"Cent\",pound:\"Cerquilha\",curren:\"Dinheiro\",yen:\"Yen\",brvbar:\"Bara interrompida\",sect:\"Símbolo de Parágrafo\",uml:\"Trema\",copy:\"Direito de Cópia\",ordf:\"Indicador ordinal feminino\",laquo:\"Aspas duplas angulares esquerda\",not:\"Negação\",reg:\"Marca Registrada\",\nmacr:\"Mácron\",deg:\"Grau\",sup2:\"2 Superscrito\",sup3:\"3 Superscrito\",acute:\"Acento agudo\",micro:\"Micro\",para:\"Pé de mosca\",middot:\"Ponto mediano\",cedil:\"Cedilha\",sup1:\"1 Superscrito\",ordm:\"Indicador ordinal masculino\",raquo:\"Aspas duplas angulares direita\",frac14:\"Um quarto\",frac12:\"Um meio\",frac34:\"Três quartos\",iquest:\"Interrogação invertida\",Agrave:\"A maiúsculo com acento grave\",Aacute:\"A maiúsculo com acento agudo\",Acirc:\"A maiúsculo com acento circunflexo\",Atilde:\"A maiúsculo com til\",Auml:\"A maiúsculo com trema\",\nAring:\"A maiúsculo com anel acima\",AElig:\"Æ maiúsculo\",Ccedil:\"Ç maiúlculo\",Egrave:\"E maiúsculo com acento grave\",Eacute:\"E maiúsculo com acento agudo\",Ecirc:\"E maiúsculo com acento circumflexo\",Euml:\"E maiúsculo com trema\",Igrave:\"I maiúsculo com acento grave\",Iacute:\"I maiúsculo com acento agudo\",Icirc:\"I maiúsculo com acento circunflexo\",Iuml:\"I maiúsculo com crase\",ETH:\"Eth maiúsculo\",Ntilde:\"N maiúsculo com til\",Ograve:\"O maiúsculo com acento grave\",Oacute:\"O maiúsculo com acento agudo\",Ocirc:\"O maiúsculo com acento circunflexo\",\nOtilde:\"O maiúsculo com til\",Ouml:\"O maiúsculo com trema\",times:\"Multiplicação\",Oslash:\"Diâmetro\",Ugrave:\"U maiúsculo com acento grave\",Uacute:\"U maiúsculo com acento agudo\",Ucirc:\"U maiúsculo com acento circunflexo\",Uuml:\"U maiúsculo com trema\",Yacute:\"Y maiúsculo com acento agudo\",THORN:\"Thorn maiúsculo\",szlig:\"Eszett minúsculo\",agrave:\"a minúsculo com acento grave\",aacute:\"a minúsculo com acento agudo\",acirc:\"a minúsculo com acento circunflexo\",atilde:\"a minúsculo com til\",auml:\"a minúsculo com trema\",\naring:\"a minúsculo com anel acima\",aelig:\"æ minúsculo\",ccedil:\"ç minúsculo\",egrave:\"e minúsculo com acento grave\",eacute:\"e minúsculo com acento agudo\",ecirc:\"e minúsculo com acento circunflexo\",euml:\"e minúsculo com trema\",igrave:\"i minúsculo com acento grave\",iacute:\"i minúsculo com acento agudo\",icirc:\"i minúsculo com acento circunflexo\",iuml:\"i minúsculo com trema\",eth:\"eth minúsculo\",ntilde:\"n minúsculo com til\",ograve:\"o minúsculo com acento grave\",oacute:\"o minúsculo com acento agudo\",ocirc:\"o minúsculo com acento circunflexo\",\notilde:\"o minúsculo com til\",ouml:\"o minúsculo com trema\",divide:\"Divisão\",oslash:\"o minúsculo com cortado ou diâmetro\",ugrave:\"u minúsculo com acento grave\",uacute:\"u minúsculo com acento agudo\",ucirc:\"u minúsculo com acento circunflexo\",uuml:\"u minúsculo com trema\",yacute:\"y minúsculo com acento agudo\",thorn:\"thorn minúsculo\",yuml:\"y minúsculo com trema\",OElig:\"Ligação tipográfica OE maiúscula\",oelig:\"Ligação tipográfica oe minúscula\",372:\"W maiúsculo com acento circunflexo\",374:\"Y maiúsculo com acento circunflexo\",\n373:\"w minúsculo com acento circunflexo\",375:\"y minúsculo com acento circunflexo\",sbquo:\"Aspas simples inferior direita\",8219:\"Aspas simples superior esquerda\",bdquo:\"Aspas duplas inferior direita\",hellip:\"Reticências\",trade:\"Trade mark\",9658:\"Ponta de seta preta para direita\",bull:\"Ponto lista\",rarr:\"Seta para direita\",rArr:\"Seta dupla para direita\",hArr:\"Seta dupla direita e esquerda\",diams:\"Ouros\",asymp:\"Aproximadamente\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/pt.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"pt\",{euro:\"Símbolo do Euro\",lsquo:\"Aspa esquerda simples\",rsquo:\"Aspa direita simples\",ldquo:\"Aspa esquerda dupla\",rdquo:\"Aspa direita dupla\",ndash:\"Travessão Simples\",mdash:\"Travessão Longo\",iexcl:\"Ponto de exclamação invertido\",cent:\"Símbolo do Cêntimo\",pound:\"Símbolo da Libra\",curren:\"Símbolo de Moeda\",yen:\"Símbolo do Iene\",brvbar:\"Barra quebrada\",sect:\"Símbolo de Secção\",uml:\"Trema\",copy:\"Símbolo dos Direitos de Autor\",ordf:\"Indicador ordinal feminino\",\nlaquo:\"Aspa esquerda ângulo duplo\",not:\"Não Símbolo\",reg:\"Símbolo de Registado\",macr:\"Mácron\",deg:\"Símbolo de Grau\",sup2:\"Expoente 2\",sup3:\"Expoente 3\",acute:\"Acento agudo\",micro:\"Símbolo de Micro\",para:\"Símbolo de Parágrafo\",middot:\"Ponto do Meio\",cedil:\"Cedilha\",sup1:\"Expoente 1\",ordm:\"Indicador ordinal masculino\",raquo:\"Aspas ângulo duplo pra Direita\",frac14:\"Fração vulgar 1/4\",frac12:\"Fração vulgar 1/2\",frac34:\"Fração vulgar 3/4\",iquest:\"Ponto de interrugação invertido\",Agrave:\"Letra maiúscula latina A com acento grave\",\nAacute:\"Letra maiúscula latina A com acento agudo\",Acirc:\"Letra maiúscula latina A com circunflexo\",Atilde:\"Letra maiúscula latina A com til\",Auml:\"Letra maiúscula latina A com trema\",Aring:\"Letra maiúscula latina A com sinal diacrítico\",AElig:\"Letra Maiúscula Latina Æ\",Ccedil:\"Letra maiúscula latina C com cedilha\",Egrave:\"Letra maiúscula latina E com acento grave\",Eacute:\"Letra maiúscula latina E com acento agudo\",Ecirc:\"Letra maiúscula latina E com circunflexo\",Euml:\"Letra maiúscula latina E com trema\",\nIgrave:\"Letra maiúscula latina I com acento grave\",Iacute:\"Letra maiúscula latina I com acento agudo\",Icirc:\"Letra maiúscula latina I com cincunflexo\",Iuml:\"Letra maiúscula latina I com trema\",ETH:\"Letra maiúscula latina Eth (Ðð)\",Ntilde:\"Letra maiúscula latina N com til\",Ograve:\"Letra maiúscula latina O com acento grave\",Oacute:\"Letra maiúscula latina O com acento agudo\",Ocirc:\"Letra maiúscula latina I com circunflexo\",Otilde:\"Letra maiúscula latina O com til\",Ouml:\"Letra maiúscula latina O com trema\",\ntimes:\"Símbolo de Multiplicação\",Oslash:\"Letra maiúscula O com barra\",Ugrave:\"Letra maiúscula latina U com acento grave\",Uacute:\"Letra maiúscula latina U com acento agudo\",Ucirc:\"Letra maiúscula latina U com circunflexo\",Uuml:\"Letra maiúscula latina E com trema\",Yacute:\"Letra maiúscula latina Y com acento agudo\",THORN:\"Letra maiúscula latina Rúnico\",szlig:\"Letra minúscula latina s forte\",agrave:\"Letra minúscula latina a com acento grave\",aacute:\"Letra minúscula latina a com acento agudo\",acirc:\"Letra minúscula latina a com circunflexo\",\natilde:\"Letra minúscula latina a com til\",auml:\"Letra minúscula latina a com trema\",aring:\"Letra minúscula latina a com sinal diacrítico\",aelig:\"Letra minúscula latina æ\",ccedil:\"Letra minúscula latina c com cedilha\",egrave:\"Letra minúscula latina e com acento grave\",eacute:\"Letra minúscula latina e com acento agudo\",ecirc:\"Letra minúscula latina e com circunflexo\",euml:\"Letra minúscula latina e com trema\",igrave:\"Letra minúscula latina i com acento grave\",iacute:\"Letra minúscula latina i com acento agudo\",\nicirc:\"Letra minúscula latina i com circunflexo\",iuml:\"Letra pequena latina i com trema\",eth:\"Letra minúscula latina eth\",ntilde:\"Letra minúscula latina n com til\",ograve:\"Letra minúscula latina o com acento grave\",oacute:\"Letra minúscula latina o com acento agudo\",ocirc:\"Letra minúscula latina o com circunflexo\",otilde:\"Letra minúscula latina o com til\",ouml:\"Letra minúscula latina o com trema\",divide:\"Símbolo de Divisão\",oslash:\"Letra minúscula latina o com barra\",ugrave:\"Letra minúscula latina u com acento grave\",\nuacute:\"Letra minúscula latina u com acento agudo\",ucirc:\"Letra minúscula latina u com circunflexo\",uuml:\"Letra minúscula latina u com trema\",yacute:\"Letra minúscula latina y com acento agudo\",thorn:\"Letra minúscula latina Rúnico\",yuml:\"Letra minúscula latina y com trema\",OElig:\"Ligadura maiúscula latina OE\",oelig:\"Ligadura minúscula latina oe\",372:\"Letra maiúscula latina W com circunflexo\",374:\"Letra maiúscula latina Y com circunflexo\",373:\"Letra minúscula latina w com circunflexo\",375:\"Letra minúscula latina y com circunflexo\",\nsbquo:\"Aspa Simples inferior-9\",8219:\"Aspa Simples superior invertida-9\",bdquo:\"Aspa Duplas inferior-9\",hellip:\"Elipse Horizontal \",trade:\"Símbolo de Marca Registada\",9658:\"Ponteiro preto direito\",bull:\"Marca\",rarr:\"Seta para a direita\",rArr:\"Seta dupla para a direita\",hArr:\"Seta dupla direita esquerda\",diams:\"Naipe diamante preto\",asymp:\"Quase igual a \"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ru.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"ru\",{euro:\"Знак евро\",lsquo:\"Левая одинарная кавычка\",rsquo:\"Правая одинарная кавычка\",ldquo:\"Левая двойная кавычка\",rdquo:\"Левая двойная кавычка\",ndash:\"Среднее тире\",mdash:\"Длинное тире\",iexcl:\"перевёрнутый восклицательный знак\",cent:\"Цент\",pound:\"Фунт\",curren:\"Знак валюты\",yen:\"Йена\",brvbar:\"Вертикальная черта с разрывом\",sect:\"Знак параграфа\",uml:\"Умлаут\",copy:\"Знак охраны авторского права\",ordf:\"Указатель окончания женского рода ...ая\",laquo:\"Левая кавычка-«ёлочка»\",\nnot:\"Отрицание\",reg:\"Знак охраны смежных прав\\\\t\",macr:\"Макрон\",deg:\"Градус\",sup2:\"Надстрочное два\",sup3:\"Надстрочное три\",acute:\"Акут\",micro:\"Микро\",para:\"Абзац\",middot:\"Интерпункт\",cedil:\"Седиль\",sup1:\"Надстрочная единица\",ordm:\"Порядковое числительное\",raquo:\"Правая кавычка-«ёлочка»\",frac14:\"Одна четвертая\",frac12:\"Одна вторая\",frac34:\"Три четвёртых\",iquest:\"Перевёрнутый вопросительный знак\",Agrave:\"Латинская заглавная буква А с апострофом\",Aacute:\"Латинская заглавная буква A с ударением\",Acirc:\"Латинская заглавная буква А с циркумфлексом\",\nAtilde:\"Латинская заглавная буква А с тильдой\",Auml:\"Латинская заглавная буква А с тремой\",Aring:\"Латинская заглавная буква А с кольцом над ней\",AElig:\"Латинская большая буква Æ\",Ccedil:\"Латинская заглавная буква C с седилью\",Egrave:\"Латинская заглавная буква Е с апострофом\",Eacute:\"Латинская заглавная буква Е с ударением\",Ecirc:\"Латинская заглавная буква Е с циркумфлексом\",Euml:\"Латинская заглавная буква Е с тремой\",Igrave:\"Латинская заглавная буква I с апострофом\",Iacute:\"Латинская заглавная буква I с ударением\",\nIcirc:\"Латинская заглавная буква I с циркумфлексом\",Iuml:\"Латинская заглавная буква I с тремой\",ETH:\"Латинская большая буква Eth\",Ntilde:\"Латинская заглавная буква N с тильдой\",Ograve:\"Латинская заглавная буква O с апострофом\",Oacute:\"Латинская заглавная буква O с ударением\",Ocirc:\"Латинская заглавная буква O с циркумфлексом\",Otilde:\"Латинская заглавная буква O с тильдой\",Ouml:\"Латинская заглавная буква O с тремой\",times:\"Знак умножения\",Oslash:\"Латинская большая перечеркнутая O\",Ugrave:\"Латинская заглавная буква U с апострофом\",\nUacute:\"Латинская заглавная буква U с ударением\",Ucirc:\"Латинская заглавная буква U с циркумфлексом\",Uuml:\"Латинская заглавная буква U с тремой\",Yacute:\"Латинская заглавная буква Y с ударением\",THORN:\"Латинская заглавная буква Thorn\",szlig:\"Знак диеза\",agrave:\"Латинская маленькая буква a с апострофом\",aacute:\"Латинская маленькая буква a с ударением\",acirc:\"Латинская маленькая буква a с циркумфлексом\",atilde:\"Латинская маленькая буква a с тильдой\",auml:\"Латинская маленькая буква a с тремой\",aring:\"Латинская маленькая буква a с кольцом\",\naelig:\"Латинская маленькая буква æ\",ccedil:\"Латинская маленькая буква с с седилью\",egrave:\"Латинская маленькая буква е с апострофом\",eacute:\"Латинская маленькая буква е с ударением\",ecirc:\"Латинская маленькая буква е с циркумфлексом\",euml:\"Латинская маленькая буква е с тремой\",igrave:\"Латинская маленькая буква i с апострофом\",iacute:\"Латинская маленькая буква i с ударением\",icirc:\"Латинская маленькая буква i с циркумфлексом\",iuml:\"Латинская маленькая буква i с тремой\",eth:\"Латинская маленькая буква eth\",\nntilde:\"Латинская маленькая буква n с тильдой\",ograve:\"Латинская маленькая буква o с апострофом\",oacute:\"Латинская маленькая буква o с ударением\",ocirc:\"Латинская маленькая буква o с циркумфлексом\",otilde:\"Латинская маленькая буква o с тильдой\",ouml:\"Латинская маленькая буква o с тремой\",divide:\"Знак деления\",oslash:\"Латинская строчная перечеркнутая o\",ugrave:\"Латинская маленькая буква u с апострофом\",uacute:\"Латинская маленькая буква u с ударением\",ucirc:\"Латинская маленькая буква u с циркумфлексом\",\nuuml:\"Латинская маленькая буква u с тремой\",yacute:\"Латинская маленькая буква y с ударением\",thorn:\"Латинская маленькая буква thorn\",yuml:\"Латинская маленькая буква y с тремой\",OElig:\"Латинская прописная лигатура OE\",oelig:\"Латинская строчная лигатура oe\",372:\"Латинская заглавная буква W с циркумфлексом\",374:\"Латинская заглавная буква Y с циркумфлексом\",373:\"Латинская маленькая буква w с циркумфлексом\",375:\"Латинская маленькая буква y с циркумфлексом\",sbquo:\"Нижняя одинарная кавычка\",8219:\"Правая одинарная кавычка\",\nbdquo:\"Левая двойная кавычка\",hellip:\"Горизонтальное многоточие\",trade:\"Товарный знак\",9658:\"Черный указатель вправо\",bull:\"Маркер списка\",rarr:\"Стрелка вправо\",rArr:\"Двойная стрелка вправо\",hArr:\"Двойная стрелка влево-вправо\",diams:\"Черный ромб\",asymp:\"Примерно равно\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/si.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"si\",{euro:\"යුරෝ සලකුණ\",lsquo:\"වමේ තනි උපුටා දක්වීම \",rsquo:\"දකුණේ තනි උපුටා දක්වීම \",ldquo:\"වමේ දිත්ව  උපුටා දක්වීම \",rdquo:\"දකුණේ දිත්ව  උපුටා දක්වීම \",ndash:\"En dash\",mdash:\"Em dash\",iexcl:\"යටිකුරු හර්ෂදී \",cent:\"Cent sign\",pound:\"Pound sign\",curren:\"මුල්‍යමය \",yen:\"යෙන් \",brvbar:\"Broken bar\",sect:\"තෙරේම් \",uml:\"Diaeresis\",copy:\"පිටපත් අයිතිය \",ordf:\"දර්ශකය\",laquo:\"Left-pointing double angle quotation mark\",not:\"සලකුණක් නොවේ\",reg:\"සලකුණක් ලියාපදිංචි කිරීම\",\nmacr:\"මුද්‍රිත \",deg:\"සලකුණේ \",sup2:\"උඩු ලකුණු දෙක\",sup3:\"Superscript three\",acute:\"Acute accent\",micro:\"Micro sign\",para:\"Pilcrow sign\",middot:\"Middle dot\",cedil:\"Cedilla\",sup1:\"Superscript one\",ordm:\"Masculine ordinal indicator\",raquo:\"Right-pointing double angle quotation mark\",frac14:\"Vulgar fraction one quarter\",frac12:\"Vulgar fraction one half\",frac34:\"Vulgar fraction three quarters\",iquest:\"Inverted question mark\",Agrave:\"Latin capital letter A with grave accent\",Aacute:\"Latin capital letter A with acute accent\",\nAcirc:\"Latin capital letter A with circumflex\",Atilde:\"Latin capital letter A with tilde\",Auml:\"Latin capital letter A with diaeresis\",Aring:\"Latin capital letter A with ring above\",AElig:\"Latin Capital letter Æ\",Ccedil:\"Latin capital letter C with cedilla\",Egrave:\"Latin capital letter E with grave accent\",Eacute:\"Latin capital letter E with acute accent\",Ecirc:\"Latin capital letter E with circumflex\",Euml:\"Latin capital letter E with diaeresis\",Igrave:\"Latin capital letter I with grave accent\",Iacute:\"Latin capital letter I with acute accent\",\nIcirc:\"Latin capital letter I with circumflex\",Iuml:\"Latin capital letter I with diaeresis\",ETH:\"Latin capital letter Eth\",Ntilde:\"Latin capital letter N with tilde\",Ograve:\"Latin capital letter O with grave accent\",Oacute:\"Latin capital letter O with acute accent\",Ocirc:\"Latin capital letter O with circumflex\",Otilde:\"Latin capital letter O with tilde\",Ouml:\"Latin capital letter O with diaeresis\",times:\"Multiplication sign\",Oslash:\"Latin capital letter O with stroke\",Ugrave:\"Latin capital letter U with grave accent\",\nUacute:\"Latin capital letter U with acute accent\",Ucirc:\"Latin capital letter U with circumflex\",Uuml:\"Latin capital letter U with diaeresis\",Yacute:\"Latin capital letter Y with acute accent\",THORN:\"Latin capital letter Thorn\",szlig:\"Latin small letter sharp s\",agrave:\"Latin small letter a with grave accent\",aacute:\"Latin small letter a with acute accent\",acirc:\"Latin small letter a with circumflex\",atilde:\"Latin small letter a with tilde\",auml:\"Latin small letter a with diaeresis\",aring:\"Latin small letter a with ring above\",\naelig:\"Latin small letter æ\",ccedil:\"Latin small letter c with cedilla\",egrave:\"Latin small letter e with grave accent\",eacute:\"Latin small letter e with acute accent\",ecirc:\"Latin small letter e with circumflex\",euml:\"Latin small letter e with diaeresis\",igrave:\"Latin small letter i with grave accent\",iacute:\"Latin small letter i with acute accent\",icirc:\"Latin small letter i with circumflex\",iuml:\"Latin small letter i with diaeresis\",eth:\"Latin small letter eth\",ntilde:\"Latin small letter n with tilde\",\nograve:\"Latin small letter o with grave accent\",oacute:\"Latin small letter o with acute accent\",ocirc:\"Latin small letter o with circumflex\",otilde:\"Latin small letter o with tilde\",ouml:\"Latin small letter o with diaeresis\",divide:\"Division sign\",oslash:\"Latin small letter o with stroke\",ugrave:\"Latin small letter u with grave accent\",uacute:\"Latin small letter u with acute accent\",ucirc:\"Latin small letter u with circumflex\",uuml:\"Latin small letter u with diaeresis\",yacute:\"Latin small letter y with acute accent\",\nthorn:\"Latin small letter thorn\",yuml:\"Latin small letter y with diaeresis\",OElig:\"Latin capital ligature OE\",oelig:\"Latin small ligature oe\",372:\"Latin capital letter W with circumflex\",374:\"Latin capital letter Y with circumflex\",373:\"Latin small letter w with circumflex\",375:\"Latin small letter y with circumflex\",sbquo:\"Single low-9 quotation mark\",8219:\"Single high-reversed-9 quotation mark\",bdquo:\"Double low-9 quotation mark\",hellip:\"Horizontal ellipsis\",trade:\"Trade mark sign\",9658:\"Black right-pointing pointer\",\nbull:\"Bullet\",rarr:\"Rightwards arrow\",rArr:\"Rightwards double arrow\",hArr:\"Left right double arrow\",diams:\"Black diamond suit\",asymp:\"Almost equal to\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/sk.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"sk\",{euro:\"Znak eura\",lsquo:\"Ľavá jednoduchá úvodzovka\",rsquo:\"Pravá jednoduchá úvodzovka\",ldquo:\"Pravá dvojitá úvodzovka\",rdquo:\"Pravá dvojitá úvodzovka\",ndash:\"En pomlčka\",mdash:\"Em pomlčka\",iexcl:\"Obrátený výkričník\",cent:\"Znak centu\",pound:\"Znak libry\",curren:\"Znak meny\",yen:\"Znak jenu\",brvbar:\"Prerušená zvislá čiara\",sect:\"Znak odseku\",uml:\"Prehláska\",copy:\"Znak copyrightu\",ordf:\"Ženský indikátor rodu\",laquo:\"Znak dvojitých lomených úvodzoviek vľavo\",not:\"Logistický zápor\",\nreg:\"Znak registrácie\",macr:\"Pomlčka nad\",deg:\"Znak stupňa\",sup2:\"Dvojka ako horný index\",sup3:\"Trojka ako horný index\",acute:\"Dĺžeň\",micro:\"Znak mikro\",para:\"Znak odstavca\",middot:\"Bodka uprostred\",cedil:\"Chvost vľavo\",sup1:\"Jednotka ako horný index\",ordm:\"Mužský indikátor rodu\",raquo:\"Znak dvojitých lomených úvodzoviek vpravo\",frac14:\"Obyčajný zlomok jedna štvrtina\",frac12:\"Obyčajný zlomok jedna polovica\",frac34:\"Obyčajný zlomok tri štvrtiny\",iquest:\"Otočený otáznik\",Agrave:\"Veľké písmeno latinky A s accentom\",\nAacute:\"Veľké písmeno latinky A s dĺžňom\",Acirc:\"Veľké písmeno latinky A s mäkčeňom\",Atilde:\"Veľké písmeno latinky A s tildou\",Auml:\"Veľké písmeno latinky A s dvoma bodkami\",Aring:\"Veľké písmeno latinky A s krúžkom nad\",AElig:\"Veľké písmeno latinky Æ\",Ccedil:\"Veľké písmeno latinky C s chvostom vľavo\",Egrave:\"Veľké písmeno latinky E s accentom\",Eacute:\"Veľké písmeno latinky E s dĺžňom\",Ecirc:\"Veľké písmeno latinky E s mäkčeňom\",Euml:\"Veľké písmeno latinky E s dvoma bodkami\",Igrave:\"Veľké písmeno latinky I s accentom\",\nIacute:\"Veľké písmeno latinky I s dĺžňom\",Icirc:\"Veľké písmeno latinky I s mäkčeňom\",Iuml:\"Veľké písmeno latinky I s dvoma bodkami\",ETH:\"Veľké písmeno latinky Eth\",Ntilde:\"Veľké písmeno latinky N s tildou\",Ograve:\"Veľké písmeno latinky O s accentom\",Oacute:\"Veľké písmeno latinky O s dĺžňom\",Ocirc:\"Veľké písmeno latinky O s mäkčeňom\",Otilde:\"Veľké písmeno latinky O s tildou\",Ouml:\"Veľké písmeno latinky O s dvoma bodkami\",times:\"Znak násobenia\",Oslash:\"Veľké písmeno latinky O preškrtnuté\",Ugrave:\"Veľké písmeno latinky U s accentom\",\nUacute:\"Veľké písmeno latinky U s dĺžňom\",Ucirc:\"Veľké písmeno latinky U s mäkčeňom\",Uuml:\"Veľké písmeno latinky U s dvoma bodkami\",Yacute:\"Veľké písmeno latinky Y s dĺžňom\",THORN:\"Veľké písmeno latinky Thorn\",szlig:\"Malé písmeno latinky ostré s\",agrave:\"Malé písmeno latinky a s accentom\",aacute:\"Malé písmeno latinky a s dĺžňom\",acirc:\"Malé písmeno latinky a s mäkčeňom\",atilde:\"Malé písmeno latinky a s tildou\",auml:\"Malé písmeno latinky a s dvoma bodkami\",aring:\"Malé písmeno latinky a s krúžkom nad\",\naelig:\"Malé písmeno latinky æ\",ccedil:\"Malé písmeno latinky c s chvostom vľavo\",egrave:\"Malé písmeno latinky e s accentom\",eacute:\"Malé písmeno latinky e s dĺžňom\",ecirc:\"Malé písmeno latinky e s mäkčeňom\",euml:\"Malé písmeno latinky e s dvoma bodkami\",igrave:\"Malé písmeno latinky i s accentom\",iacute:\"Malé písmeno latinky i s dĺžňom\",icirc:\"Malé písmeno latinky i s mäkčeňom\",iuml:\"Malé písmeno latinky i s dvoma bodkami\",eth:\"Malé písmeno latinky eth\",ntilde:\"Malé písmeno latinky n s tildou\",ograve:\"Malé písmeno latinky o s accentom\",\noacute:\"Malé písmeno latinky o s dĺžňom\",ocirc:\"Malé písmeno latinky o s mäkčeňom\",otilde:\"Malé písmeno latinky o s tildou\",ouml:\"Malé písmeno latinky o s dvoma bodkami\",divide:\"Znak delenia\",oslash:\"Malé písmeno latinky o preškrtnuté\",ugrave:\"Malé písmeno latinky u s accentom\",uacute:\"Malé písmeno latinky u s dĺžňom\",ucirc:\"Malé písmeno latinky u s mäkčeňom\",uuml:\"Malé písmeno latinky u s dvoma bodkami\",yacute:\"Malé písmeno latinky y s dĺžňom\",thorn:\"Malé písmeno latinky thorn\",yuml:\"Malé písmeno latinky y s dvoma bodkami\",\nOElig:\"Veľká ligatúra latinky OE\",oelig:\"Malá ligatúra latinky OE\",372:\"Veľké písmeno latinky W s mäkčeňom\",374:\"Veľké písmeno latinky Y s mäkčeňom\",373:\"Malé písmeno latinky w s mäkčeňom\",375:\"Malé písmeno latinky y s mäkčeňom\",sbquo:\"Dolná jednoduchá 9-úvodzovka\",8219:\"Horná jednoduchá otočená 9-úvodzovka\",bdquo:\"Dolná dvojitá 9-úvodzovka\",hellip:\"Trojbodkový úvod\",trade:\"Znak ibchodnej značky\",9658:\"Čierny ukazovateľ smerujúci vpravo\",bull:\"Kruh\",rarr:\"Šípka vpravo\",rArr:\"Dvojitá šipka vpravo\",\nhArr:\"Dvojitá šipka vľavo a vpravo\",diams:\"Čierne piky\",asymp:\"Skoro sa rovná\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/sl.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"sl\",{euro:\"Evro znak\",lsquo:\"Levi enojni narekovaj\",rsquo:\"Desni enojni narekovaj\",ldquo:\"Levi dvojni narekovaj\",rdquo:\"Desni dvojni narekovaj\",ndash:\"En pomišljaj\",mdash:\"Em pomišljaj\",iexcl:\"Obrnjen klicaj\",cent:\"Cent znak\",pound:\"Funt znak\",curren:\"Znak valute\",yen:\"Jen znak\",brvbar:\"Zlomljena črta\",sect:\"Znak oddelka\",uml:\"Diaeresis\",copy:\"Znak avtorskih pravic\",ordf:\"Ženski zaporedni kazalnik\",laquo:\"Levi obrnjen dvojni kotni narekovaj\",not:\"Ne znak\",reg:\"Registrirani znak\",\nmacr:\"Macron\",deg:\"Znak stopinj\",sup2:\"Nadpisano dva\",sup3:\"Nadpisano tri\",acute:\"Ostrivec\",micro:\"Mikro znak\",para:\"Pilcrow znak\",middot:\"Sredinska pika\",cedil:\"Cedilla\",sup1:\"Nadpisano ena\",ordm:\"Moški zaporedni kazalnik\",raquo:\"Desno obrnjen dvojni kotni narekovaj\",frac14:\"Ena četrtina\",frac12:\"Ena polovica\",frac34:\"Tri četrtine\",iquest:\"Obrnjen vprašaj\",Agrave:\"Velika latinska črka A s krativcem\",Aacute:\"Velika latinska črka A z ostrivcem\",Acirc:\"Velika latinska črka A s strešico\",Atilde:\"Velika latinska črka A z tildo\",\nAuml:\"Velika latinska črka A z diaeresis-om\",Aring:\"Velika latinska črka A z obročem\",AElig:\"Velika latinska črka Æ\",Ccedil:\"Velika latinska črka C s cedillo\",Egrave:\"Velika latinska črka E s krativcem\",Eacute:\"Velika latinska črka E z ostrivcem\",Ecirc:\"Velika latinska črka E s strešico\",Euml:\"Velika latinska črka E z diaeresis-om\",Igrave:\"Velika latinska črka I s krativcem\",Iacute:\"Velika latinska črka I z ostrivcem\",Icirc:\"Velika latinska črka I s strešico\",Iuml:\"Velika latinska črka I z diaeresis-om\",\nETH:\"Velika latinska črka Eth\",Ntilde:\"Velika latinska črka N s tildo\",Ograve:\"Velika latinska črka O s krativcem\",Oacute:\"Velika latinska črka O z ostrivcem\",Ocirc:\"Velika latinska črka O s strešico\",Otilde:\"Velika latinska črka O s tildo\",Ouml:\"Velika latinska črka O z diaeresis-om\",times:\"Znak za množenje\",Oslash:\"Velika prečrtana latinska črka O\",Ugrave:\"Velika latinska črka U s krativcem\",Uacute:\"Velika latinska črka U z ostrivcem\",Ucirc:\"Velika latinska črka U s strešico\",Uuml:\"Velika latinska črka U z diaeresis-om\",\nYacute:\"Velika latinska črka Y z ostrivcem\",THORN:\"Velika latinska črka Thorn\",szlig:\"Mala ostra latinska črka s\",agrave:\"Mala latinska črka a s krativcem\",aacute:\"Mala latinska črka a z ostrivcem\",acirc:\"Mala latinska črka a s strešico\",atilde:\"Mala latinska črka a s tildo\",auml:\"Mala latinska črka a z diaeresis-om\",aring:\"Mala latinska črka a z obročem\",aelig:\"Mala latinska črka æ\",ccedil:\"Mala latinska črka c s cedillo\",egrave:\"Mala latinska črka e s krativcem\",eacute:\"Mala latinska črka e z ostrivcem\",\necirc:\"Mala latinska črka e s strešico\",euml:\"Mala latinska črka e z diaeresis-om\",igrave:\"Mala latinska črka i s krativcem\",iacute:\"Mala latinska črka i z ostrivcem\",icirc:\"Mala latinska črka i s strešico\",iuml:\"Mala latinska črka i z diaeresis-om\",eth:\"Mala latinska črka eth\",ntilde:\"Mala latinska črka n s tildo\",ograve:\"Mala latinska črka o s krativcem\",oacute:\"Mala latinska črka o z ostrivcem\",ocirc:\"Mala latinska črka o s strešico\",otilde:\"Mala latinska črka o s tildo\",ouml:\"Mala latinska črka o z diaeresis-om\",\ndivide:\"Znak za deljenje\",oslash:\"Mala prečrtana latinska črka o\",ugrave:\"Mala latinska črka u s krativcem\",uacute:\"Mala latinska črka u z ostrivcem\",ucirc:\"Mala latinska črka u s strešico\",uuml:\"Mala latinska črka u z diaeresis-om\",yacute:\"Mala latinska črka y z ostrivcem\",thorn:\"Mala latinska črka thorn\",yuml:\"Mala latinska črka y z diaeresis-om\",OElig:\"Velika latinska ligatura OE\",oelig:\"Mala latinska ligatura oe\",372:\"Velika latinska črka W s strešico\",374:\"Velika latinska črka Y s strešico\",\n373:\"Mala latinska črka w s strešico\",375:\"Mala latinska črka y s strešico\",sbquo:\"Enojni nizki-9 narekovaj\",8219:\"Enojni visoki-obrnjen-9 narekovaj\",bdquo:\"Dvojni nizki-9 narekovaj\",hellip:\"Horizontalni izpust\",trade:\"Znak blagovne znamke\",9658:\"Črni desno-usmerjen kazalec\",bull:\"Krogla\",rarr:\"Desno-usmerjena puščica\",rArr:\"Desno-usmerjena dvojna puščica\",hArr:\"Leva in desna dvojna puščica\",diams:\"Črna kara\",asymp:\"Skoraj enako\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/sq.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"sq\",{euro:\"Shenja e Euros\",lsquo:\"Thonjëza majtas me një vi\",rsquo:\"Thonjëza djathtas me një vi\",ldquo:\"Thonjëza majtas\",rdquo:\"Thonjëza djathtas\",ndash:\"En viza lidhëse\",mdash:\"Em viza lidhëse\",iexcl:\"Pikëçuditëse e përmbysur\",cent:\"Shenja e Centit\",pound:\"Shejna e Funtit\",curren:\"Shenja e valutës\",yen:\"Shenja e Jenit\",brvbar:\"Viza e këputur\",sect:\"Shenja e pjesës\",uml:\"Diaeresis\",copy:\"Shenja e të drejtave të kopjimit\",ordf:\"Feminine ordinal indicator\",laquo:\"Left-pointing double angle quotation mark\",\nnot:\"Nuk ka shenjë\",reg:\"Shenja e të regjistruarit\",macr:\"Macron\",deg:\"Shenja e shkallës\",sup2:\"Super-skripta dy\",sup3:\"Super-skripta tre\",acute:\"Theks i mprehtë\",micro:\"Shjenja e Mikros\",para:\"Pilcrow sign\",middot:\"Pika e Mesme\",cedil:\"Hark nën shkronja\",sup1:\"Super-skripta një\",ordm:\"Masculine ordinal indicator\",raquo:\"Right-pointing double angle quotation mark\",frac14:\"Thyesa një të katrat\",frac12:\"Thyesa një të dytat\",frac34:\"Thyesa tre të katrat\",iquest:\"Pikëpyetje e përmbysur\",Agrave:\"Shkronja e madhe latine A me theks të rëndë\",\nAacute:\"Shkronja e madhe latine A me theks akute\",Acirc:\"Shkronja e madhe latine A me theks lakor\",Atilde:\"Shkronja e madhe latine A me tildë\",Auml:\"Shkronja e madhe latine A me dy pika\",Aring:\"Shkronja e madhe latine A me unazë mbi\",AElig:\"Shkronja e madhe latine Æ\",Ccedil:\"Shkronja e madhe latine C me hark poshtë\",Egrave:\"Shkronja e madhe latine E me theks të rëndë\",Eacute:\"Shkronja e madhe latine E me theks akute\",Ecirc:\"Shkronja e madhe latine E me theks lakor\",Euml:\"Shkronja e madhe latine E me dy pika\",\nIgrave:\"Shkronja e madhe latine I me theks të rëndë\",Iacute:\"Shkronja e madhe latine I me theks akute\",Icirc:\"Shkronja e madhe latine I me theks lakor\",Iuml:\"Shkronja e madhe latine I me dy pika\",ETH:\"Shkronja e madhe latine Eth\",Ntilde:\"Shkronja e madhe latine N me tildë\",Ograve:\"Shkronja e madhe latine O me theks të rëndë\",Oacute:\"Shkronja e madhe latine O me theks akute\",Ocirc:\"Shkronja e madhe latine O me theks lakor\",Otilde:\"Shkronja e madhe latine O me tildë\",Ouml:\"Shkronja e madhe latine O me dy pika\",\ntimes:\"Shenja e shumëzimit\",Oslash:\"Shkronja e madhe latine O me vizë në mes\",Ugrave:\"Shkronja e madhe latine U me theks të rëndë\",Uacute:\"Shkronja e madhe latine U me theks akute\",Ucirc:\"Shkronja e madhe latine U me theks lakor\",Uuml:\"Shkronja e madhe latine U me dy pika\",Yacute:\"Shkronja e madhe latine Y me theks akute\",THORN:\"Shkronja e madhe latine Thorn\",szlig:\"Shkronja e vogë latine s e mprehtë\",agrave:\"Shkronja e vogë latine a me theks të rëndë\",aacute:\"Shkronja e vogë latine a me theks të mprehtë\",\nacirc:\"Shkronja e vogël latine a me theks lakor\",atilde:\"Shkronja e vogël latine a me tildë\",auml:\"Shkronja e vogël latine a me dy pika\",aring:\"Shkronja e vogë latine a me unazë mbi\",aelig:\"Shkronja e vogë latine æ\",ccedil:\"Shkronja e vogël latine c me hark poshtë\",egrave:\"Shkronja e vogë latine e me theks të rëndë\",eacute:\"Shkronja e vogë latine e me theks të mprehtë\",ecirc:\"Shkronja e vogël latine e me theks lakor\",euml:\"Shkronja e vogël latine e me dy pika\",igrave:\"Shkronja e vogë latine i me theks të rëndë\",\niacute:\"Shkronja e vogë latine i me theks të mprehtë\",icirc:\"Shkronja e vogël latine i me theks lakor\",iuml:\"Shkronja e vogël latine i me dy pika\",eth:\"Shkronja e vogë latine eth\",ntilde:\"Shkronja e vogël latine n me tildë\",ograve:\"Shkronja e vogë latine o me theks të rëndë\",oacute:\"Shkronja e vogë latine o me theks të mprehtë\",ocirc:\"Shkronja e vogël latine o me theks lakor\",otilde:\"Shkronja e vogël latine o me tildë\",ouml:\"Shkronja e vogël latine o me dy pika\",divide:\"Shenja ndarëse\",oslash:\"Shkronja e vogël latine o me vizë në mes\",\nugrave:\"Shkronja e vogë latine u me theks të rëndë\",uacute:\"Shkronja e vogë latine u me theks të mprehtë\",ucirc:\"Shkronja e vogël latine u me theks lakor\",uuml:\"Shkronja e vogël latine u me dy pika\",yacute:\"Shkronja e vogë latine y me theks të mprehtë\",thorn:\"Shkronja e vogël latine thorn\",yuml:\"Shkronja e vogël latine y me dy pika\",OElig:\"Shkronja e madhe e bashkuar latine OE\",oelig:\"Shkronja e vogël e bashkuar latine oe\",372:\"Shkronja e madhe latine W me theks lakor\",374:\"Shkronja e madhe latine Y me theks lakor\",\n373:\"Shkronja e vogël latine w me theks lakor\",375:\"Shkronja e vogël latine y me theks lakor\",sbquo:\"Single low-9 quotation mark\",8219:\"Single high-reversed-9 quotation mark\",bdquo:\"Double low-9 quotation mark\",hellip:\"Horizontal ellipsis\",trade:\"Shenja e Simbolit Tregtarë\",9658:\"Black right-pointing pointer\",bull:\"Pulla\",rarr:\"Shigjeta djathtas\",rArr:\"Shenja të dyfishta djathtas\",hArr:\"Shigjeta e dyfishë majtas-djathtas\",diams:\"Black diamond suit\",asymp:\"Gati e barabar me\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/sv.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"sv\",{euro:\"Eurotecken\",lsquo:\"Enkelt vänster citattecken\",rsquo:\"Enkelt höger citattecken\",ldquo:\"Dubbelt vänster citattecken\",rdquo:\"Dubbelt höger citattecken\",ndash:\"Snedstreck\",mdash:\"Långt tankstreck\",iexcl:\"Inverterad utropstecken\",cent:\"Centtecken\",pound:\"Pundtecken\",curren:\"Valutatecken\",yen:\"Yentecken\",brvbar:\"Brutet lodrätt streck\",sect:\"Paragraftecken\",uml:\"Diaeresis\",copy:\"Upphovsrättstecken\",ordf:\"Feminit ordningstalsindikator\",laquo:\"Vänsterställt dubbelt vinkelcitationstecken\",\nnot:\"Icke-tecken\",reg:\"Registrerad\",macr:\"Macron\",deg:\"Grader\",sup2:\"Upphöjt två\",sup3:\"Upphöjt tre\",acute:\"Akut accent\",micro:\"Mikrotecken\",para:\"Alinea\",middot:\"Centrerad prick\",cedil:\"Cedilj\",sup1:\"Upphöjt en\",ordm:\"Maskulina ordningsändelsen\",raquo:\"Högerställt dubbelt vinkelcitationstecken\",frac14:\"Bråktal - en kvart\",frac12:\"Bråktal - en halv\",frac34:\"Bråktal - tre fjärdedelar\",iquest:\"Inverterat frågetecken\",Agrave:\"Stort A med grav accent\",Aacute:\"Stort A med akutaccent\",Acirc:\"Stort A med circumflex\",\nAtilde:\"Stort A med tilde\",Auml:\"Stort A med diaresis\",Aring:\"Stort A med ring ovan\",AElig:\"Stort Æ\",Ccedil:\"Stort C med cedilj\",Egrave:\"Stort E med grav accent\",Eacute:\"Stort E med aktuaccent\",Ecirc:\"Stort E med circumflex\",Euml:\"Stort E med diaeresis\",Igrave:\"Stort I med grav accent\",Iacute:\"Stort I med akutaccent\",Icirc:\"Stort I med circumflex\",Iuml:\"Stort I med diaeresis\",ETH:\"Stort Eth\",Ntilde:\"Stort N med tilde\",Ograve:\"Stort O med grav accent\",Oacute:\"Stort O med aktuaccent\",Ocirc:\"Stort O med circumflex\",\nOtilde:\"Stort O med tilde\",Ouml:\"Stort O med diaeresis\",times:\"Multiplicera\",Oslash:\"Stor Ø\",Ugrave:\"Stort U med grav accent\",Uacute:\"Stort U med akutaccent\",Ucirc:\"Stort U med circumflex\",Uuml:\"Stort U med diaeresis\",Yacute:\"Stort Y med akutaccent\",THORN:\"Stort Thorn\",szlig:\"Litet dubbel-s/Eszett\",agrave:\"Litet a med grav accent\",aacute:\"Litet a med akutaccent\",acirc:\"Litet a med circumflex\",atilde:\"Litet a med tilde\",auml:\"Litet a med diaeresis\",aring:\"Litet a med ring ovan\",aelig:\"Bokstaven æ\",\nccedil:\"Litet c med cedilj\",egrave:\"Litet e med grav accent\",eacute:\"Litet e med akutaccent\",ecirc:\"Litet e med circumflex\",euml:\"Litet e med diaeresis\",igrave:\"Litet i med grav accent\",iacute:\"Litet i med akutaccent\",icirc:\"LItet i med circumflex\",iuml:\"Litet i med didaeresis\",eth:\"Litet eth\",ntilde:\"Litet n med tilde\",ograve:\"LItet o med grav accent\",oacute:\"LItet o med akutaccent\",ocirc:\"Litet o med circumflex\",otilde:\"LItet o med tilde\",ouml:\"Litet o med diaeresis\",divide:\"Division\",oslash:\"ø\",\nugrave:\"Litet u med grav accent\",uacute:\"Litet u med akutaccent\",ucirc:\"LItet u med circumflex\",uuml:\"Litet u med diaeresis\",yacute:\"Litet y med akutaccent\",thorn:\"Litet thorn\",yuml:\"Litet y med diaeresis\",OElig:\"Stor ligatur av OE\",oelig:\"Liten ligatur av oe\",372:\"Stort W med circumflex\",374:\"Stort Y med circumflex\",373:\"Litet w med circumflex\",375:\"Litet y med circumflex\",sbquo:\"Enkelt lågt 9-citationstecken\",8219:\"Enkelt högt bakvänt 9-citationstecken\",bdquo:\"Dubbelt lågt 9-citationstecken\",hellip:\"Horisontellt uteslutningstecken\",\ntrade:\"Varumärke\",9658:\"Svart högervänd pekare\",bull:\"Listpunkt\",rarr:\"Högerpil\",rArr:\"Dubbel högerpil\",hArr:\"Dubbel vänsterpil\",diams:\"Svart ruter\",asymp:\"Ungefär lika med\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/th.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"th\",{euro:\"Euro sign\",lsquo:\"Left single quotation mark\",rsquo:\"Right single quotation mark\",ldquo:\"Left double quotation mark\",rdquo:\"Right double quotation mark\",ndash:\"En dash\",mdash:\"Em dash\",iexcl:\"Inverted exclamation mark\",cent:\"Cent sign\",pound:\"Pound sign\",curren:\"สัญลักษณ์สกุลเงิน\",yen:\"สัญลักษณ์เงินเยน\",brvbar:\"Broken bar\",sect:\"Section sign\",uml:\"Diaeresis\",copy:\"Copyright sign\",ordf:\"Feminine ordinal indicator\",laquo:\"Left-pointing double angle quotation mark\",\nnot:\"Not sign\",reg:\"Registered sign\",macr:\"Macron\",deg:\"Degree sign\",sup2:\"Superscript two\",sup3:\"Superscript three\",acute:\"Acute accent\",micro:\"Micro sign\",para:\"Pilcrow sign\",middot:\"Middle dot\",cedil:\"Cedilla\",sup1:\"Superscript one\",ordm:\"Masculine ordinal indicator\",raquo:\"Right-pointing double angle quotation mark\",frac14:\"Vulgar fraction one quarter\",frac12:\"Vulgar fraction one half\",frac34:\"Vulgar fraction three quarters\",iquest:\"Inverted question mark\",Agrave:\"Latin capital letter A with grave accent\",\nAacute:\"Latin capital letter A with acute accent\",Acirc:\"Latin capital letter A with circumflex\",Atilde:\"Latin capital letter A with tilde\",Auml:\"Latin capital letter A with diaeresis\",Aring:\"Latin capital letter A with ring above\",AElig:\"Latin Capital letter Æ\",Ccedil:\"Latin capital letter C with cedilla\",Egrave:\"Latin capital letter E with grave accent\",Eacute:\"Latin capital letter E with acute accent\",Ecirc:\"Latin capital letter E with circumflex\",Euml:\"Latin capital letter E with diaeresis\",Igrave:\"Latin capital letter I with grave accent\",\nIacute:\"Latin capital letter I with acute accent\",Icirc:\"Latin capital letter I with circumflex\",Iuml:\"Latin capital letter I with diaeresis\",ETH:\"Latin capital letter Eth\",Ntilde:\"Latin capital letter N with tilde\",Ograve:\"Latin capital letter O with grave accent\",Oacute:\"Latin capital letter O with acute accent\",Ocirc:\"Latin capital letter O with circumflex\",Otilde:\"Latin capital letter O with tilde\",Ouml:\"Latin capital letter O with diaeresis\",times:\"Multiplication sign\",Oslash:\"Latin capital letter O with stroke\",\nUgrave:\"Latin capital letter U with grave accent\",Uacute:\"Latin capital letter U with acute accent\",Ucirc:\"Latin capital letter U with circumflex\",Uuml:\"Latin capital letter U with diaeresis\",Yacute:\"Latin capital letter Y with acute accent\",THORN:\"Latin capital letter Thorn\",szlig:\"Latin small letter sharp s\",agrave:\"Latin small letter a with grave accent\",aacute:\"Latin small letter a with acute accent\",acirc:\"Latin small letter a with circumflex\",atilde:\"Latin small letter a with tilde\",auml:\"Latin small letter a with diaeresis\",\naring:\"Latin small letter a with ring above\",aelig:\"Latin small letter æ\",ccedil:\"Latin small letter c with cedilla\",egrave:\"Latin small letter e with grave accent\",eacute:\"Latin small letter e with acute accent\",ecirc:\"Latin small letter e with circumflex\",euml:\"Latin small letter e with diaeresis\",igrave:\"Latin small letter i with grave accent\",iacute:\"Latin small letter i with acute accent\",icirc:\"Latin small letter i with circumflex\",iuml:\"Latin small letter i with diaeresis\",eth:\"Latin small letter eth\",\nntilde:\"Latin small letter n with tilde\",ograve:\"Latin small letter o with grave accent\",oacute:\"Latin small letter o with acute accent\",ocirc:\"Latin small letter o with circumflex\",otilde:\"Latin small letter o with tilde\",ouml:\"Latin small letter o with diaeresis\",divide:\"Division sign\",oslash:\"Latin small letter o with stroke\",ugrave:\"Latin small letter u with grave accent\",uacute:\"Latin small letter u with acute accent\",ucirc:\"Latin small letter u with circumflex\",uuml:\"Latin small letter u with diaeresis\",\nyacute:\"Latin small letter y with acute accent\",thorn:\"Latin small letter thorn\",yuml:\"Latin small letter y with diaeresis\",OElig:\"Latin capital ligature OE\",oelig:\"Latin small ligature oe\",372:\"Latin capital letter W with circumflex\",374:\"Latin capital letter Y with circumflex\",373:\"Latin small letter w with circumflex\",375:\"Latin small letter y with circumflex\",sbquo:\"Single low-9 quotation mark\",8219:\"Single high-reversed-9 quotation mark\",bdquo:\"Double low-9 quotation mark\",hellip:\"Horizontal ellipsis\",\ntrade:\"Trade mark sign\",9658:\"Black right-pointing pointer\",bull:\"สัญลักษณ์หัวข้อย่อย\",rarr:\"Rightwards arrow\",rArr:\"Rightwards double arrow\",hArr:\"Left right double arrow\",diams:\"Black diamond suit\",asymp:\"Almost equal to\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/tr.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"tr\",{euro:\"Euro işareti\",lsquo:\"Sol tek tırnak işareti\",rsquo:\"Sağ tek tırnak işareti\",ldquo:\"Sol çift tırnak işareti\",rdquo:\"Sağ çift tırnak işareti\",ndash:\"En tire\",mdash:\"Em tire\",iexcl:\"Ters ünlem işareti\",cent:\"Cent işareti\",pound:\"Pound işareti\",curren:\"Para birimi işareti\",yen:\"Yen işareti\",brvbar:\"Kırık bar\",sect:\"Bölüm işareti\",uml:\"İki sesli harfin ayrılması\",copy:\"Telif hakkı işareti\",ordf:\"Dişil sıralı gösterge\",laquo:\"Sol-işaret çift açı tırnak işareti\",\nnot:\"Not işareti\",reg:\"Kayıtlı işareti\",macr:\"Makron\",deg:\"Derece işareti\",sup2:\"İkili üstsimge\",sup3:\"Üçlü üstsimge\",acute:\"Aksan işareti\",micro:\"Mikro işareti\",para:\"Pilcrow işareti\",middot:\"Orta nokta\",cedil:\"Kedilla\",sup1:\"Üstsimge\",ordm:\"Eril sıralı gösterge\",raquo:\"Sağ işaret çift açı tırnak işareti\",frac14:\"Bayağı kesrin dörtte biri\",frac12:\"Bayağı kesrin bir yarım\",frac34:\"Bayağı kesrin dörtte üç\",iquest:\"Ters soru işareti\",Agrave:\"Aksanlı latin harfi\",Aacute:\"Aşırı aksanıyla Latin harfi\",\nAcirc:\"Çarpık Latin harfi\",Atilde:\"Tilde latin harfi\",Auml:\"Sesli harf ayrılımlıı latin harfi\",Aring:\"Halkalı latin büyük A harfi\",AElig:\"Latin büyük Æ harfi\",Ccedil:\"Latin büyük C harfi ile kedilla\",Egrave:\"Aksanlı latin büyük E harfi\",Eacute:\"Aşırı vurgulu latin büyük E harfi\",Ecirc:\"Çarpık latin büyük E harfi\",Euml:\"Sesli harf ayrılımlıı latin büyük E harfi\",Igrave:\"Aksanlı latin büyük I harfi\",Iacute:\"Aşırı aksanlı latin büyük I harfi\",Icirc:\"Çarpık latin büyük I harfi\",Iuml:\"Sesli harf ayrılımlıı latin büyük I harfi\",\nETH:\"Latin büyük Eth harfi\",Ntilde:\"Tildeli latin büyük N harfi\",Ograve:\"Aksanlı latin büyük O harfi\",Oacute:\"Aşırı aksanlı latin büyük O harfi\",Ocirc:\"Çarpık latin büyük O harfi\",Otilde:\"Tildeli latin büyük O harfi\",Ouml:\"Sesli harf ayrılımlı latin büyük O harfi\",times:\"Çarpma işareti\",Oslash:\"Vurgulu latin büyük O harfi\",Ugrave:\"Aksanlı latin büyük U harfi\",Uacute:\"Aşırı aksanlı latin büyük U harfi\",Ucirc:\"Çarpık latin büyük U harfi\",Uuml:\"Sesli harf ayrılımlı latin büyük U harfi\",Yacute:\"Aşırı aksanlı latin büyük Y harfi\",\nTHORN:\"Latin büyük Thorn harfi\",szlig:\"Latin küçük keskin s harfi\",agrave:\"Aksanlı latin küçük a harfi\",aacute:\"Aşırı aksanlı latin küçük a harfi\",acirc:\"Çarpık latin küçük a harfi\",atilde:\"Tildeli latin küçük a harfi\",auml:\"Sesli harf ayrılımlı latin küçük a harfi\",aring:\"Halkalı latin küçük a harfi\",aelig:\"Latin büyük æ harfi\",ccedil:\"Kedillalı latin küçük c harfi\",egrave:\"Aksanlı latin küçük e harfi\",eacute:\"Aşırı aksanlı latin küçük e harfi\",ecirc:\"Çarpık latin küçük e harfi\",euml:\"Sesli harf ayrılımlı latin küçük e harfi\",\nigrave:\"Aksanlı latin küçük i harfi\",iacute:\"Aşırı aksanlı latin küçük i harfi\",icirc:\"Çarpık latin küçük i harfi\",iuml:\"Sesli harf ayrılımlı latin küçük i harfi\",eth:\"Latin küçük eth harfi\",ntilde:\"Tildeli latin küçük n harfi\",ograve:\"Aksanlı latin küçük o harfi\",oacute:\"Aşırı aksanlı latin küçük o harfi\",ocirc:\"Çarpık latin küçük o harfi\",otilde:\"Tildeli latin küçük o harfi\",ouml:\"Sesli harf ayrılımlı latin küçük o harfi\",divide:\"Bölme işareti\",oslash:\"Vurgulu latin küçük o harfi\",ugrave:\"Aksanlı latin küçük u harfi\",\nuacute:\"Aşırı aksanlı latin küçük u harfi\",ucirc:\"Çarpık latin küçük u harfi\",uuml:\"Sesli harf ayrılımlı latin küçük u harfi\",yacute:\"Aşırı aksanlı latin küçük y harfi\",thorn:\"Latin küçük thorn harfi\",yuml:\"Sesli harf ayrılımlı latin küçük y harfi\",OElig:\"Latin büyük bağlı OE harfi\",oelig:\"Latin küçük bağlı oe harfi\",372:\"Çarpık latin büyük W harfi\",374:\"Çarpık latin büyük Y harfi\",373:\"Çarpık latin küçük w harfi\",375:\"Çarpık latin küçük y harfi\",sbquo:\"Tek düşük-9 tırnak işareti\",8219:\"Tek yüksek-ters-9 tırnak işareti\",\nbdquo:\"Çift düşük-9 tırnak işareti\",hellip:\"Yatay elips\",trade:\"Marka tescili işareti\",9658:\"Siyah sağ işaret işaretçisi\",bull:\"Koyu nokta\",rarr:\"Sağa doğru ok\",rArr:\"Sağa doğru çift ok\",hArr:\"Sol, sağ çift ok\",diams:\"Siyah elmas takımı\",asymp:\"Hemen hemen eşit\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/tt.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"tt\",{euro:\"Евро тамгасы\",lsquo:\"Сул бер иңле куштырнаклар\",rsquo:\"Уң бер иңле куштырнаклар\",ldquo:\"Сул ике иңле куштырнаклар\",rdquo:\"Уң ике иңле куштырнаклар\",ndash:\"Кыска сызык\",mdash:\"Озын сызык\",iexcl:\"Әйләндерелгән өндәү билгесе\",cent:\"Цент тамгасы\",pound:\"Фунт тамгасы\",curren:\"Акча берәмлеге тамгасы\",yen:\"Иена тамгасы\",brvbar:\"Broken bar\",sect:\"Section sign\",uml:\"Диерезис\",copy:\"Хокук иясе булу билгесе\",ordf:\"Feminine ordinal indicator\",laquo:\"Ачылучы чыршысыман җәя\",\nnot:\"Not sign\",reg:\"Теркәләнгән булу билгесе\",macr:\"Макрон\",deg:\"Градус билгесе\",sup2:\"Икенче өске индекс\",sup3:\"Өченче өске индекс\",acute:\"Басым билгесе\",micro:\"Микро билгесе\",para:\"Параграф билгесе\",middot:\"Middle dot\",cedil:\"Седиль\",sup1:\"Беренче өске индекс\",ordm:\"Masculine ordinal indicator\",raquo:\"Ябылучы чыршысыман җәя\",frac14:\"Гади дүрттән бер билгесе\",frac12:\"Гади икедән бер билгесе\",frac34:\"Гади дүрттән өч билгесе\",iquest:\"Әйләндерелгән өндәү билгесе\",Agrave:\"Гравис белән латин A баш хәрефе\",\nAacute:\"Басым билгесе белән латин A баш хәрефе\",Acirc:\"Циркумфлекс белән латин A баш хәрефе\",Atilde:\"Тильда белән латин A баш хәрефе\",Auml:\"Диерезис белән латин A баш хәрефе\",Aring:\"Өстендә боҗра булган латин A баш хәрефе\",AElig:\"Латин Æ баш хәрефе\",Ccedil:\"Седиль белән латин C баш хәрефе\",Egrave:\"Гравис белән латин E баш хәрефе\",Eacute:\"Басым билгесе белән латин E баш хәрефе\",Ecirc:\"Циркумфлекс белән латин E баш хәрефе\",Euml:\"Диерезис белән латин E баш хәрефе\",Igrave:\"Гравис белән латин I баш хәрефе\",\nIacute:\"Басым билгесе белән латин I баш хәрефе\",Icirc:\"Циркумфлекс белән латин I баш хәрефе\",Iuml:\"Диерезис белән латин I баш хәрефе\",ETH:\"Латин Eth баш хәрефе\",Ntilde:\"Тильда белән латин N баш хәрефе\",Ograve:\"Гравис белән латин O баш хәрефе\",Oacute:\"Басым билгесе белән латин O баш хәрефе\",Ocirc:\"Циркумфлекс белән латин O баш хәрефе\",Otilde:\"Тильда белән латин O баш хәрефе\",Ouml:\"Диерезис белән латин O баш хәрефе\",times:\"Тапкырлау билгесе\",Oslash:\"Сызык белән латин O баш хәрефе\",Ugrave:\"Гравис белән латин U баш хәрефе\",\nUacute:\"Басым билгесе белән латин U баш хәрефе\",Ucirc:\"Циркумфлекс белән латин U баш хәрефе\",Uuml:\"Диерезис белән латин U баш хәрефе\",Yacute:\"Басым билгесе белән латин Y баш хәрефе\",THORN:\"Латин Thorn баш хәрефе\",szlig:\"Латин beta юл хәрефе\",agrave:\"Гравис белән латин a юл хәрефе\",aacute:\"Басым билгесе белән латин a юл хәрефе\",acirc:\"Циркумфлекс белән латин a юл хәрефе\",atilde:\"Тильда белән латин a юл хәрефе\",auml:\"Диерезис белән латин a юл хәрефе\",aring:\"Өстендә боҗра булган латин a юл хәрефе\",aelig:\"Латин æ юл хәрефе\",\nccedil:\"Седиль белән латин c юл хәрефе\",egrave:\"Гравис белән латин e юл хәрефе\",eacute:\"Басым билгесе белән латин e юл хәрефе\",ecirc:\"Циркумфлекс белән латин e юл хәрефе\",euml:\"Диерезис белән латин e юл хәрефе\",igrave:\"Гравис белән латин i юл хәрефе\",iacute:\"Басым билгесе белән латин i юл хәрефе\",icirc:\"Циркумфлекс белән латин i юл хәрефе\",iuml:\"Диерезис белән латин i юл хәрефе\",eth:\"Латин eth юл хәрефе\",ntilde:\"Тильда белән латин n юл хәрефе\",ograve:\"Гравис белән латин o юл хәрефе\",oacute:\"Басым билгесе белән латин o юл хәрефе\",\nocirc:\"Циркумфлекс белән латин o юл хәрефе\",otilde:\"Тильда белән латин o юл хәрефе\",ouml:\"Диерезис белән латин o юл хәрефе\",divide:\"Бүлү билгесе\",oslash:\"Сызык белән латин o юл хәрефе\",ugrave:\"Гравис белән латин u юл хәрефе\",uacute:\"Басым билгесе белән латин u юл хәрефе\",ucirc:\"Циркумфлекс белән латин u юл хәрефе\",uuml:\"Диерезис белән латин u юл хәрефе\",yacute:\"Басым билгесе белән латин y юл хәрефе\",thorn:\"Латин thorn юл хәрефе\",yuml:\"Диерезис белән латин y юл хәрефе\",OElig:\"Латин лигатура OE баш хәрефе\",\noelig:\"Латин лигатура oe юл хәрефе\",372:\"Циркумфлекс белән латин W баш хәрефе\",374:\"Циркумфлекс белән латин Y баш хәрефе\",373:\"Циркумфлекс белән латин w юл хәрефе\",375:\"Циркумфлекс белән латин y юл хәрефе\",sbquo:\"Single low-9 quotation mark\",8219:\"Single high-reversed-9 quotation mark\",bdquo:\"Double low-9 quotation mark\",hellip:\"Ятма эллипс\",trade:\"Сәүдә маркасы билгесе\",9658:\"Black right-pointing pointer\",bull:\"Bullet\",rarr:\"Rightwards arrow\",rArr:\"Rightwards double arrow\",hArr:\"Left right double arrow\",\ndiams:\"Black diamond suit\",asymp:\"Almost equal to\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/ug.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"ug\",{euro:\"ياۋرو بەلگىسى\",lsquo:\"يالاڭ پەش سول\",rsquo:\"يالاڭ پەش ئوڭ\",ldquo:\"قوش پەش سول\",rdquo:\"قوش پەش ئوڭ\",ndash:\"سىزىقچە\",mdash:\"سىزىق\",iexcl:\"ئۈندەش\",cent:\"تىيىن بەلگىسى\",pound:\"فوند ستېرلىڭ\",curren:\"پۇل بەلگىسى\",yen:\"ياپونىيە يىنى\",brvbar:\"ئۈزۈك بالداق\",sect:\"پاراگراف بەلگىسى\",uml:\"تاۋۇش ئايرىش بەلگىسى\",copy:\"نەشر ھوقۇقى بەلگىسى\",ordf:\"Feminine ordinal indicator\",laquo:\"قوش تىرناق سول\",not:\"غەيرى بەلگە\",reg:\"خەتلەتكەن تاۋار ماركىسى\",macr:\"سوزۇش بەلگىسى\",\ndeg:\"گىرادۇس بەلگىسى\",sup2:\"يۇقىرى ئىندېكىس 2\",sup3:\"يۇقىرى ئىندېكىس 3\",acute:\"ئۇرغۇ بەلگىسى\",micro:\"Micro sign\",para:\"ئابزاس بەلگىسى\",middot:\"ئوتتۇرا چېكىت\",cedil:\"ئاستىغا قوشۇلىدىغان بەلگە\",sup1:\"يۇقىرى ئىندېكىس 1\",ordm:\"Masculine ordinal indicator\",raquo:\"قوش تىرناق ئوڭ\",frac14:\"ئاددىي كەسىر تۆتتىن بىر\",frac12:\"ئاددىي كەسىر ئىككىدىن بىر\",frac34:\"ئاددىي كەسىر ئۈچتىن تۆرت\",iquest:\"Inverted question mark\",Agrave:\"Latin capital letter A with grave accent\",Aacute:\"Latin capital letter A with acute accent\",\nAcirc:\"Latin capital letter A with circumflex\",Atilde:\"Latin capital letter A with tilde\",Auml:\"Latin capital letter A with diaeresis\",Aring:\"Latin capital letter A with ring above\",AElig:\"Latin Capital letter Æ\",Ccedil:\"Latin capital letter C with cedilla\",Egrave:\"Latin capital letter E with grave accent\",Eacute:\"Latin capital letter E with acute accent\",Ecirc:\"Latin capital letter E with circumflex\",Euml:\"Latin capital letter E with diaeresis\",Igrave:\"Latin capital letter I with grave accent\",Iacute:\"Latin capital letter I with acute accent\",\nIcirc:\"Latin capital letter I with circumflex\",Iuml:\"Latin capital letter I with diaeresis\",ETH:\"Latin capital letter Eth\",Ntilde:\"Latin capital letter N with tilde\",Ograve:\"قوش پەش ئوڭ\",Oacute:\"Latin capital letter O with acute accent\",Ocirc:\"Latin capital letter O with circumflex\",Otilde:\"Latin capital letter O with tilde\",Ouml:\"Latin capital letter O with diaeresis\",times:\"Multiplication sign\",Oslash:\"Latin capital letter O with stroke\",Ugrave:\"Latin capital letter U with grave accent\",Uacute:\"Latin capital letter U with acute accent\",\nUcirc:\"Latin capital letter U with circumflex\",Uuml:\"Latin capital letter U with diaeresis\",Yacute:\"Latin capital letter Y with acute accent\",THORN:\"Latin capital letter Thorn\",szlig:\"Latin small letter sharp s\",agrave:\"Latin small letter a with grave accent\",aacute:\"Latin small letter a with acute accent\",acirc:\"Latin small letter a with circumflex\",atilde:\"Latin small letter a with tilde\",auml:\"Latin small letter a with diaeresis\",aring:\"Latin small letter a with ring above\",aelig:\"Latin small letter æ\",\nccedil:\"Latin small letter c with cedilla\",egrave:\"Latin small letter e with grave accent\",eacute:\"Latin small letter e with acute accent\",ecirc:\"Latin small letter e with circumflex\",euml:\"Latin small letter e with diaeresis\",igrave:\"Latin small letter i with grave accent\",iacute:\"Latin small letter i with acute accent\",icirc:\"Latin small letter i with circumflex\",iuml:\"Latin small letter i with diaeresis\",eth:\"Latin small letter eth\",ntilde:\"تىك موللاق سوئال بەلگىسى\",ograve:\"Latin small letter o with grave accent\",\noacute:\"Latin small letter o with acute accent\",ocirc:\"Latin small letter o with circumflex\",otilde:\"Latin small letter o with tilde\",ouml:\"Latin small letter o with diaeresis\",divide:\"بۆلۈش بەلگىسى\",oslash:\"Latin small letter o with stroke\",ugrave:\"Latin small letter u with grave accent\",uacute:\"Latin small letter u with acute accent\",ucirc:\"Latin small letter u with circumflex\",uuml:\"Latin small letter u with diaeresis\",yacute:\"Latin small letter y with acute accent\",thorn:\"Latin small letter thorn\",\nyuml:\"Latin small letter y with diaeresis\",OElig:\"Latin capital ligature OE\",oelig:\"Latin small ligature oe\",372:\"Latin capital letter W with circumflex\",374:\"Latin capital letter Y with circumflex\",373:\"Latin small letter w with circumflex\",375:\"Latin small letter y with circumflex\",sbquo:\"Single low-9 quotation mark\",8219:\"Single high-reversed-9 quotation mark\",bdquo:\"Double low-9 quotation mark\",hellip:\"Horizontal ellipsis\",trade:\"خەتلەتكەن تاۋار ماركىسى بەلگىسى\",9658:\"Black right-pointing pointer\",\nbull:\"Bullet\",rarr:\"ئوڭ يا ئوق\",rArr:\"ئوڭ قوش سىزىق يا ئوق\",hArr:\"ئوڭ سول قوش سىزىق يا ئوق\",diams:\"ئۇيۇل غىچ\",asymp:\"تەخمىنەن تەڭ\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/uk.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"uk\",{euro:\"Знак євро\",lsquo:\"Ліві одинарні лапки\",rsquo:\"Праві одинарні лапки\",ldquo:\"Ліві подвійні лапки\",rdquo:\"Праві подвійні лапки\",ndash:\"Середнє тире\",mdash:\"Довге тире\",iexcl:\"Перевернутий знак оклику\",cent:\"Знак цента\",pound:\"Знак фунта\",curren:\"Знак валюти\",yen:\"Знак єни\",brvbar:\"Переривчаста вертикальна лінія\",sect:\"Знак параграфу\",uml:\"Умлаут\",copy:\"Знак авторських прав\",ordf:\"Жіночий порядковий вказівник\",laquo:\"ліві вказівні подвійні кутові дужки\",\nnot:\"Заперечення\",reg:\"Знак охорони суміжних прав\",macr:\"Макрон\",deg:\"Знак градуса\",sup2:\"два у верхньому індексі\",sup3:\"три у верхньому індексі\",acute:\"Знак акута\",micro:\"Знак мікро\",para:\"Знак абзацу\",middot:\"Інтерпункт\",cedil:\"Седиль\",sup1:\"Один у верхньому індексі\",ordm:\"Чоловічий порядковий вказівник\",raquo:\"праві вказівні подвійні кутові дужки\",frac14:\"Одна четвертина\",frac12:\"Одна друга\",frac34:\"три четвертих\",iquest:\"Перевернутий знак питання\",Agrave:\"Велика латинська A з гравісом\",Aacute:\"Велика латинська А з акутом\",\nAcirc:\"Велика латинська А з циркумфлексом\",Atilde:\"Велика латинська А з тильдою\",Auml:\"Велике латинське А з умлаутом\",Aring:\"Велика латинська A з кільцем згори\",AElig:\"Велика латинська Æ\",Ccedil:\"Велика латинська C з седиллю\",Egrave:\"Велика латинська E з гравісом\",Eacute:\"Велика латинська E з акутом\",Ecirc:\"Велика латинська E з циркумфлексом\",Euml:\"Велика латинська А з умлаутом\",Igrave:\"Велика латинська I з гравісом\",Iacute:\"Велика латинська I з акутом\",Icirc:\"Велика латинська I з циркумфлексом\",\nIuml:\"Велика латинська І з умлаутом\",ETH:\"Велика латинська Eth\",Ntilde:\"Велика латинська N з тильдою\",Ograve:\"Велика латинська O з гравісом\",Oacute:\"Велика латинська O з акутом\",Ocirc:\"Велика латинська O з циркумфлексом\",Otilde:\"Велика латинська O з тильдою\",Ouml:\"Велика латинська О з умлаутом\",times:\"Знак множення\",Oslash:\"Велика латинська перекреслена O \",Ugrave:\"Велика латинська U з гравісом\",Uacute:\"Велика латинська U з акутом\",Ucirc:\"Велика латинська U з циркумфлексом\",Uuml:\"Велика латинська U з умлаутом\",\nYacute:\"Велика латинська Y з акутом\",THORN:\"Велика латинська Торн\",szlig:\"Мала латинська есцет\",agrave:\"Мала латинська a з гравісом\",aacute:\"Мала латинська a з акутом\",acirc:\"Мала латинська a з циркумфлексом\",atilde:\"Мала латинська a з тильдою\",auml:\"Мала латинська a з умлаутом\",aring:\"Мала латинська a з кільцем згори\",aelig:\"Мала латинська æ\",ccedil:\"Мала латинська C з седиллю\",egrave:\"Мала латинська e з гравісом\",eacute:\"Мала латинська e з акутом\",ecirc:\"Мала латинська e з циркумфлексом\",euml:\"Мала латинська e з умлаутом\",\nigrave:\"Мала латинська i з гравісом\",iacute:\"Мала латинська i з акутом\",icirc:\"Мала латинська i з циркумфлексом\",iuml:\"Мала латинська i з умлаутом\",eth:\"Мала латинська Eth\",ntilde:\"Мала латинська n з тильдою\",ograve:\"Мала латинська o з гравісом\",oacute:\"Мала латинська o з акутом\",ocirc:\"Мала латинська o з циркумфлексом\",otilde:\"Мала латинська o з тильдою\",ouml:\"Мала латинська o з умлаутом\",divide:\"Знак ділення\",oslash:\"Мала латинська перекреслена o\",ugrave:\"Мала латинська u з гравісом\",uacute:\"Мала латинська u з акутом\",\nucirc:\"Мала латинська u з циркумфлексом\",uuml:\"Мала латинська u з умлаутом\",yacute:\"Мала латинська y з акутом\",thorn:\"Мала латинська торн\",yuml:\"Мала латинська y з умлаутом\",OElig:\"Велика латинська лігатура OE\",oelig:\"Мала латинська лігатура oe\",372:\"Велика латинська W з циркумфлексом\",374:\"Велика латинська Y з циркумфлексом\",373:\"Мала латинська w з циркумфлексом\",375:\"Мала латинська y з циркумфлексом\",sbquo:\"Одиничні нижні лабки\",8219:\"Верхні одиничні обернені лабки\",bdquo:\"Подвійні нижні лабки\",\nhellip:\"Три крапки\",trade:\"Знак торгової марки\",9658:\"Чорний правий вказівник\",bull:\"Маркер списку\",rarr:\"Стрілка вправо\",rArr:\"Подвійна стрілка вправо\",hArr:\"Подвійна стрілка вліво-вправо\",diams:\"Чорний діамонт\",asymp:\"Наближено дорівнює\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/vi.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"vi\",{euro:\"Ký hiệu Euro\",lsquo:\"Dấu ngoặc đơn trái\",rsquo:\"Dấu ngoặc đơn phải\",ldquo:\"Dấu ngoặc đôi trái\",rdquo:\"Dấu ngoặc đôi phải\",ndash:\"Gạch ngang tiếng anh\",mdash:\"Gạch ngang Em\",iexcl:\"Chuyển đổi dấu chấm than\",cent:\"Ký tự tiền Mỹ\",pound:\"Ký tự tiền Anh\",curren:\"Ký tự tiền tệ\",yen:\"Ký tự tiền Yên Nhật\",brvbar:\"Thanh hỏng\",sect:\"Ký tự khu vực\",uml:\"Dấu tách đôi\",copy:\"Ký tự bản quyền\",ordf:\"Phần chỉ thị giống cái\",laquo:\"Chọn dấu ngoặc đôi trái\",not:\"Không có ký tự\",\nreg:\"Ký tự đăng ký\",macr:\"Dấu nguyên âm dài\",deg:\"Ký tự độ\",sup2:\"Chữ trồi lên trên dạng 2\",sup3:\"Chữ trồi lên trên dạng 3\",acute:\"Dấu trọng âm\",micro:\"Ký tự micro\",para:\"Ký tự đoạn văn\",middot:\"Dấu chấm tròn\",cedil:\"Dấu móc lưới\",sup1:\"Ký tự trồi lên cấp 1\",ordm:\"Ký tự biểu hiện giống đực\",raquo:\"Chọn dấu ngoặc đôi phải\",frac14:\"Tỉ lệ một phần tư\",frac12:\"Tỉ lệ một nửa\",frac34:\"Tỉ lệ ba phần tư\",iquest:\"Chuyển đổi dấu chấm hỏi\",Agrave:\"Ký tự la-tinh viết hoa A với dấu huyền\",Aacute:\"Ký tự la-tinh viết hoa A với dấu sắc\",\nAcirc:\"Ký tự la-tinh viết hoa A với dấu mũ\",Atilde:\"Ký tự la-tinh viết hoa A với dấu ngã\",Auml:\"Ký tự la-tinh viết hoa A với dấu hai chấm trên đầu\",Aring:\"Ký tự la-tinh viết hoa A với biểu tượng vòng tròn trên đầu\",AElig:\"Ký tự la-tinh viết hoa của Æ\",Ccedil:\"Ký tự la-tinh viết hoa C với dấu móc bên dưới\",Egrave:\"Ký tự la-tinh viết hoa E với dấu huyền\",Eacute:\"Ký tự la-tinh viết hoa E với dấu sắc\",Ecirc:\"Ký tự la-tinh viết hoa E với dấu mũ\",Euml:\"Ký tự la-tinh viết hoa E với dấu hai chấm trên đầu\",\nIgrave:\"Ký tự la-tinh viết hoa I với dấu huyền\",Iacute:\"Ký tự la-tinh viết hoa I với dấu sắc\",Icirc:\"Ký tự la-tinh viết hoa I với dấu mũ\",Iuml:\"Ký tự la-tinh viết hoa I với dấu hai chấm trên đầu\",ETH:\"Viết hoa của ký tự Eth\",Ntilde:\"Ký tự la-tinh viết hoa N với dấu ngã\",Ograve:\"Ký tự la-tinh viết hoa O với dấu huyền\",Oacute:\"Ký tự la-tinh viết hoa O với dấu sắc\",Ocirc:\"Ký tự la-tinh viết hoa O với dấu mũ\",Otilde:\"Ký tự la-tinh viết hoa O với dấu ngã\",Ouml:\"Ký tự la-tinh viết hoa O với dấu hai chấm trên đầu\",\ntimes:\"Ký tự phép toán nhân\",Oslash:\"Ký tự la-tinh viết hoa A với dấu ngã xuống\",Ugrave:\"Ký tự la-tinh viết hoa U với dấu huyền\",Uacute:\"Ký tự la-tinh viết hoa U với dấu sắc\",Ucirc:\"Ký tự la-tinh viết hoa U với dấu mũ\",Uuml:\"Ký tự la-tinh viết hoa U với dấu hai chấm trên đầu\",Yacute:\"Ký tự la-tinh viết hoa Y với dấu sắc\",THORN:\"Phần viết hoa của ký tự Thorn\",szlig:\"Ký tự viết nhỏ la-tinh của chữ s\",agrave:\"Ký tự la-tinh thường với dấu huyền\",aacute:\"Ký tự la-tinh thường với dấu sắc\",acirc:\"Ký tự la-tinh thường với dấu mũ\",\natilde:\"Ký tự la-tinh thường với dấu ngã\",auml:\"Ký tự la-tinh thường với dấu hai chấm trên đầu\",aring:\"Ký tự la-tinh viết thường với biểu tượng vòng tròn trên đầu\",aelig:\"Ký tự la-tinh viết thường của æ\",ccedil:\"Ký tự la-tinh viết thường của c với dấu móc bên dưới\",egrave:\"Ký tự la-tinh viết thường e với dấu huyền\",eacute:\"Ký tự la-tinh viết thường e với dấu sắc\",ecirc:\"Ký tự la-tinh viết thường e với dấu mũ\",euml:\"Ký tự la-tinh viết thường e với dấu hai chấm trên đầu\",igrave:\"Ký tự la-tinh viết thường i với dấu huyền\",\niacute:\"Ký tự la-tinh viết thường i với dấu sắc\",icirc:\"Ký tự la-tinh viết thường i với dấu mũ\",iuml:\"Ký tự la-tinh viết thường i với dấu hai chấm trên đầu\",eth:\"Ký tự la-tinh viết thường của eth\",ntilde:\"Ký tự la-tinh viết thường n với dấu ngã\",ograve:\"Ký tự la-tinh viết thường o với dấu huyền\",oacute:\"Ký tự la-tinh viết thường o với dấu sắc\",ocirc:\"Ký tự la-tinh viết thường o với dấu mũ\",otilde:\"Ký tự la-tinh viết thường o với dấu ngã\",ouml:\"Ký tự la-tinh viết thường o với dấu hai chấm trên đầu\",\ndivide:\"Ký hiệu phép tính chia\",oslash:\"Ký tự la-tinh viết thường o với dấu ngã\",ugrave:\"Ký tự la-tinh viết thường u với dấu huyền\",uacute:\"Ký tự la-tinh viết thường u với dấu sắc\",ucirc:\"Ký tự la-tinh viết thường u với dấu mũ\",uuml:\"Ký tự la-tinh viết thường u với dấu hai chấm trên đầu\",yacute:\"Ký tự la-tinh viết thường y với dấu sắc\",thorn:\"Ký tự la-tinh viết thường của chữ thorn\",yuml:\"Ký tự la-tinh viết thường y với dấu hai chấm trên đầu\",OElig:\"Ký tự la-tinh viết hoa gạch nối OE\",oelig:\"Ký tự la-tinh viết thường gạch nối OE\",\n372:\"Ký tự la-tinh viết hoa W với dấu mũ\",374:\"Ký tự la-tinh viết hoa Y với dấu mũ\",373:\"Ký tự la-tinh viết thường w với dấu mũ\",375:\"Ký tự la-tinh viết thường y với dấu mũ\",sbquo:\"Dấu ngoặc đơn thấp số-9\",8219:\"Dấu ngoặc đơn đảo ngược số-9\",bdquo:\"Gấp đôi dấu ngoặc đơn số-9\",hellip:\"Tĩnh dược chiều ngang\",trade:\"Ký tự thương hiệu\",9658:\"Ký tự trỏ về hướng bên phải màu đen\",bull:\"Ký hiệu\",rarr:\"Mũi tên hướng bên phải\",rArr:\"Mũi tên hướng bên phải dạng đôi\",hArr:\"Mũi tên hướng bên trái dạng đôi\",diams:\"Ký hiệu hình thoi\",\nasymp:\"Gần bằng với\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"zh-cn\",{euro:\"欧元符号\",lsquo:\"左单引号\",rsquo:\"右单引号\",ldquo:\"左双引号\",rdquo:\"右双引号\",ndash:\"短划线\",mdash:\"长划线\",iexcl:\"竖翻叹号\",cent:\"分币符号\",pound:\"英镑符号\",curren:\"货币符号\",yen:\"日元符号\",brvbar:\"间断条\",sect:\"节标记\",uml:\"分音符\",copy:\"版权所有标记\",ordf:\"阴性顺序指示符\",laquo:\"左指双尖引号\",not:\"非标记\",reg:\"注册标记\",macr:\"长音符\",deg:\"度标记\",sup2:\"上标二\",sup3:\"上标三\",acute:\"锐音符\",micro:\"微符\",para:\"段落标记\",middot:\"中间点\",cedil:\"下加符\",sup1:\"上标一\",ordm:\"阳性顺序指示符\",raquo:\"右指双尖引号\",frac14:\"普通分数四分之一\",frac12:\"普通分数二分之一\",frac34:\"普通分数四分之三\",iquest:\"竖翻问号\",\nAgrave:\"带抑音符的拉丁文大写字母 A\",Aacute:\"带锐音符的拉丁文大写字母 A\",Acirc:\"带扬抑符的拉丁文大写字母 A\",Atilde:\"带颚化符的拉丁文大写字母 A\",Auml:\"带分音符的拉丁文大写字母 A\",Aring:\"带上圆圈的拉丁文大写字母 A\",AElig:\"拉丁文大写字母 Ae\",Ccedil:\"带下加符的拉丁文大写字母 C\",Egrave:\"带抑音符的拉丁文大写字母 E\",Eacute:\"带锐音符的拉丁文大写字母 E\",Ecirc:\"带扬抑符的拉丁文大写字母 E\",Euml:\"带分音符的拉丁文大写字母 E\",Igrave:\"带抑音符的拉丁文大写字母 I\",Iacute:\"带锐音符的拉丁文大写字母 I\",Icirc:\"带扬抑符的拉丁文大写字母 I\",Iuml:\"带分音符的拉丁文大写字母 I\",ETH:\"拉丁文大写字母 Eth\",Ntilde:\"带颚化符的拉丁文大写字母 N\",Ograve:\"带抑音符的拉丁文大写字母 O\",Oacute:\"带锐音符的拉丁文大写字母 O\",Ocirc:\"带扬抑符的拉丁文大写字母 O\",Otilde:\"带颚化符的拉丁文大写字母 O\",\nOuml:\"带分音符的拉丁文大写字母 O\",times:\"乘号\",Oslash:\"带粗线的拉丁文大写字母 O\",Ugrave:\"带抑音符的拉丁文大写字母 U\",Uacute:\"带锐音符的拉丁文大写字母 U\",Ucirc:\"带扬抑符的拉丁文大写字母 U\",Uuml:\"带分音符的拉丁文大写字母 U\",Yacute:\"带抑音符的拉丁文大写字母 Y\",THORN:\"拉丁文大写字母 Thorn\",szlig:\"拉丁文小写字母清音 S\",agrave:\"带抑音符的拉丁文小写字母 A\",aacute:\"带锐音符的拉丁文小写字母 A\",acirc:\"带扬抑符的拉丁文小写字母 A\",atilde:\"带颚化符的拉丁文小写字母 A\",auml:\"带分音符的拉丁文小写字母 A\",aring:\"带上圆圈的拉丁文小写字母 A\",aelig:\"拉丁文小写字母 Ae\",ccedil:\"带下加符的拉丁文小写字母 C\",egrave:\"带抑音符的拉丁文小写字母 E\",eacute:\"带锐音符的拉丁文小写字母 E\",ecirc:\"带扬抑符的拉丁文小写字母 E\",euml:\"带分音符的拉丁文小写字母 E\",igrave:\"带抑音符的拉丁文小写字母 I\",\niacute:\"带锐音符的拉丁文小写字母 I\",icirc:\"带扬抑符的拉丁文小写字母 I\",iuml:\"带分音符的拉丁文小写字母 I\",eth:\"拉丁文小写字母 Eth\",ntilde:\"带颚化符的拉丁文小写字母 N\",ograve:\"带抑音符的拉丁文小写字母 O\",oacute:\"带锐音符的拉丁文小写字母 O\",ocirc:\"带扬抑符的拉丁文小写字母 O\",otilde:\"带颚化符的拉丁文小写字母 O\",ouml:\"带分音符的拉丁文小写字母 O\",divide:\"除号\",oslash:\"带粗线的拉丁文小写字母 O\",ugrave:\"带抑音符的拉丁文小写字母 U\",uacute:\"带锐音符的拉丁文小写字母 U\",ucirc:\"带扬抑符的拉丁文小写字母 U\",uuml:\"带分音符的拉丁文小写字母 U\",yacute:\"带抑音符的拉丁文小写字母 Y\",thorn:\"拉丁文小写字母 Thorn\",yuml:\"带分音符的拉丁文小写字母 Y\",OElig:\"拉丁文大写连字 Oe\",oelig:\"拉丁文小写连字 Oe\",372:\"带扬抑符的拉丁文大写字母 W\",374:\"带扬抑符的拉丁文大写字母 Y\",\n373:\"带扬抑符的拉丁文小写字母 W\",375:\"带扬抑符的拉丁文小写字母 Y\",sbquo:\"单下 9 形引号\",8219:\"单高横翻 9 形引号\",bdquo:\"双下 9 形引号\",hellip:\"水平省略号\",trade:\"商标标志\",9658:\"实心右指指针\",bull:\"加重号\",rarr:\"向右箭头\",rArr:\"向右双线箭头\",hArr:\"左右双线箭头\",diams:\"实心方块纸牌\",asymp:\"约等于\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/lang/zh.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.plugins.setLang(\"specialchar\",\"zh\",{euro:\"歐元符號\",lsquo:\"左單引號\",rsquo:\"右單引號\",ldquo:\"左雙引號\",rdquo:\"右雙引號\",ndash:\"短破折號\",mdash:\"長破折號\",iexcl:\"倒置的驚嘆號\",cent:\"美分符號\",pound:\"英鎊符號\",curren:\"貨幣符號\",yen:\"日圓符號\",brvbar:\"Broken bar\",sect:\"章節符號\",uml:\"分音符號\",copy:\"版權符號\",ordf:\"雌性符號\",laquo:\"左雙角括號\",not:\"Not 符號\",reg:\"註冊商標符號\",macr:\"長音符號\",deg:\"度數符號\",sup2:\"上標字 2\",sup3:\"上標字 3\",acute:\"尖音符號\",micro:\"Micro sign\",para:\"段落符號\",middot:\"中間點\",cedil:\"字母 C 下面的尾型符號 \",sup1:\"上標\",ordm:\"雄性符號\",raquo:\"右雙角括號\",frac14:\"四分之一符號\",frac12:\"Vulgar fraction one half\",\nfrac34:\"Vulgar fraction three quarters\",iquest:\"Inverted question mark\",Agrave:\"Latin capital letter A with grave accent\",Aacute:\"Latin capital letter A with acute accent\",Acirc:\"Latin capital letter A with circumflex\",Atilde:\"Latin capital letter A with tilde\",Auml:\"拉丁大寫字母 E 帶分音符號\",Aring:\"拉丁大寫字母 A 帶上圓圈\",AElig:\"拉丁大寫字母 Æ\",Ccedil:\"拉丁大寫字母 C 帶下尾符號\",Egrave:\"Latin capital letter E with grave accent\",Eacute:\"Latin capital letter E with acute accent\",Ecirc:\"Latin capital letter E with circumflex\",Euml:\"Latin capital letter E with diaeresis\",\nIgrave:\"Latin capital letter I with grave accent\",Iacute:\"Latin capital letter I with acute accent\",Icirc:\"Latin capital letter I with circumflex\",Iuml:\"Latin capital letter I with diaeresis\",ETH:\"Latin capital letter Eth\",Ntilde:\"Latin capital letter N with tilde\",Ograve:\"Latin capital letter O with grave accent\",Oacute:\"Latin capital letter O with acute accent\",Ocirc:\"Latin capital letter O with circumflex\",Otilde:\"Latin capital letter O with tilde\",Ouml:\"Latin capital letter O with diaeresis\",\ntimes:\"乘號\",Oslash:\"拉丁大寫字母 O 帶粗線符號\",Ugrave:\"Latin capital letter U with grave accent\",Uacute:\"Latin capital letter U with acute accent\",Ucirc:\"Latin capital letter U with circumflex\",Uuml:\"Latin capital letter U with diaeresis\",Yacute:\"Latin capital letter Y with acute accent\",THORN:\"Latin capital letter Thorn\",szlig:\"Latin small letter sharp s\",agrave:\"Latin small letter a with grave accent\",aacute:\"Latin small letter a with acute accent\",acirc:\"Latin small letter a with circumflex\",atilde:\"Latin small letter a with tilde\",\nauml:\"Latin small letter a with diaeresis\",aring:\"Latin small letter a with ring above\",aelig:\"Latin small letter æ\",ccedil:\"Latin small letter c with cedilla\",egrave:\"Latin small letter e with grave accent\",eacute:\"Latin small letter e with acute accent\",ecirc:\"Latin small letter e with circumflex\",euml:\"Latin small letter e with diaeresis\",igrave:\"Latin small letter i with grave accent\",iacute:\"Latin small letter i with acute accent\",icirc:\"Latin small letter i with circumflex\",iuml:\"Latin small letter i with diaeresis\",\neth:\"Latin small letter eth\",ntilde:\"Latin small letter n with tilde\",ograve:\"Latin small letter o with grave accent\",oacute:\"Latin small letter o with acute accent\",ocirc:\"Latin small letter o with circumflex\",otilde:\"Latin small letter o with tilde\",ouml:\"Latin small letter o with diaeresis\",divide:\"Division sign\",oslash:\"Latin small letter o with stroke\",ugrave:\"Latin small letter u with grave accent\",uacute:\"Latin small letter u with acute accent\",ucirc:\"Latin small letter u with circumflex\",\nuuml:\"Latin small letter u with diaeresis\",yacute:\"Latin small letter y with acute accent\",thorn:\"Latin small letter thorn\",yuml:\"Latin small letter y with diaeresis\",OElig:\"Latin capital ligature OE\",oelig:\"Latin small ligature oe\",372:\"Latin capital letter W with circumflex\",374:\"Latin capital letter Y with circumflex\",373:\"Latin small letter w with circumflex\",375:\"Latin small letter y with circumflex\",sbquo:\"Single low-9 quotation mark\",8219:\"Single high-reversed-9 quotation mark\",bdquo:\"Double low-9 quotation mark\",\nhellip:\"Horizontal ellipsis\",trade:\"Trade mark sign\",9658:\"Black right-pointing pointer\",bull:\"Bullet\",rarr:\"Rightwards arrow\",rArr:\"Rightwards double arrow\",hArr:\"Left right double arrow\",diams:\"Black diamond suit\",asymp:\"Almost equal to\"});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/specialchar/dialogs/specialchar.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.dialog.add(\"specialchar\",function(i){var e,l=i.lang.specialchar,k=function(c){var b,c=c.data?c.data.getTarget():new CKEDITOR.dom.element(c);if(\"a\"==c.getName()&&(b=c.getChild(0).getHtml()))c.removeClass(\"cke_light_background\"),e.hide(),c=i.document.createElement(\"span\"),c.setHtml(b),i.insertText(c.getText())},m=CKEDITOR.tools.addFunction(k),j,g=function(c,b){var a,b=b||c.data.getTarget();\"span\"==b.getName()&&(b=b.getParent());if(\"a\"==b.getName()&&(a=b.getChild(0).getHtml())){j&&d(null,j);\nvar f=e.getContentElement(\"info\",\"htmlPreview\").getElement();e.getContentElement(\"info\",\"charPreview\").getElement().setHtml(a);f.setHtml(CKEDITOR.tools.htmlEncode(a));b.getParent().addClass(\"cke_light_background\");j=b}},d=function(c,b){b=b||c.data.getTarget();\"span\"==b.getName()&&(b=b.getParent());\"a\"==b.getName()&&(e.getContentElement(\"info\",\"charPreview\").getElement().setHtml(\"&nbsp;\"),e.getContentElement(\"info\",\"htmlPreview\").getElement().setHtml(\"&nbsp;\"),b.getParent().removeClass(\"cke_light_background\"),\nj=void 0)},n=CKEDITOR.tools.addFunction(function(c){var c=new CKEDITOR.dom.event(c),b=c.getTarget(),a;a=c.getKeystroke();var f=\"rtl\"==i.lang.dir;switch(a){case 38:if(a=b.getParent().getParent().getPrevious())a=a.getChild([b.getParent().getIndex(),0]),a.focus(),d(null,b),g(null,a);c.preventDefault();break;case 40:if(a=b.getParent().getParent().getNext())if((a=a.getChild([b.getParent().getIndex(),0]))&&1==a.type)a.focus(),d(null,b),g(null,a);c.preventDefault();break;case 32:k({data:c});c.preventDefault();\nbreak;case f?37:39:if(a=b.getParent().getNext())a=a.getChild(0),1==a.type?(a.focus(),d(null,b),g(null,a),c.preventDefault(!0)):d(null,b);else if(a=b.getParent().getParent().getNext())(a=a.getChild([0,0]))&&1==a.type?(a.focus(),d(null,b),g(null,a),c.preventDefault(!0)):d(null,b);break;case f?39:37:(a=b.getParent().getPrevious())?(a=a.getChild(0),a.focus(),d(null,b),g(null,a),c.preventDefault(!0)):(a=b.getParent().getParent().getPrevious())?(a=a.getLast().getChild(0),a.focus(),d(null,b),g(null,a),c.preventDefault(!0)):\nd(null,b)}});return{title:l.title,minWidth:430,minHeight:280,buttons:[CKEDITOR.dialog.cancelButton],charColumns:17,onLoad:function(){for(var c=this.definition.charColumns,b=i.config.specialChars,a=CKEDITOR.tools.getNextId()+\"_specialchar_table_label\",f=['<table role=\"listbox\" aria-labelledby=\"'+a+'\" style=\"width: 320px; height: 100%; border-collapse: separate;\" align=\"center\" cellspacing=\"2\" cellpadding=\"2\" border=\"0\">'],d=0,g=b.length,h,e;d<g;){f.push('<tr role=\"presentation\">');for(var j=0;j<c;j++,\nd++){if(h=b[d]){h instanceof Array?(e=h[1],h=h[0]):(e=h.replace(\"&\",\"\").replace(\";\",\"\").replace(\"#\",\"\"),e=l[e]||h);var k=\"cke_specialchar_label_\"+d+\"_\"+CKEDITOR.tools.getNextNumber();f.push('<td class=\"cke_dark_background\" style=\"cursor: default\" role=\"presentation\"><a href=\"javascript: void(0);\" role=\"option\" aria-posinset=\"'+(d+1)+'\"',' aria-setsize=\"'+g+'\"',' aria-labelledby=\"'+k+'\"',' class=\"cke_specialchar\" title=\"',CKEDITOR.tools.htmlEncode(e),'\" onkeydown=\"CKEDITOR.tools.callFunction( '+n+\n', event, this )\" onclick=\"CKEDITOR.tools.callFunction('+m+', this); return false;\" tabindex=\"-1\"><span style=\"margin: 0 auto;cursor: inherit\">'+h+'</span><span class=\"cke_voice_label\" id=\"'+k+'\">'+e+\"</span></a>\")}else f.push('<td class=\"cke_dark_background\">&nbsp;');f.push(\"</td>\")}f.push(\"</tr>\")}f.push(\"</tbody></table>\",'<span id=\"'+a+'\" class=\"cke_voice_label\">'+l.options+\"</span>\");this.getContentElement(\"info\",\"charContainer\").getElement().setHtml(f.join(\"\"))},contents:[{id:\"info\",label:i.lang.common.generalTab,\ntitle:i.lang.common.generalTab,padding:0,align:\"top\",elements:[{type:\"hbox\",align:\"top\",widths:[\"320px\",\"90px\"],children:[{type:\"html\",id:\"charContainer\",html:\"\",onMouseover:g,onMouseout:d,focus:function(){var c=this.getElement().getElementsByTag(\"a\").getItem(0);setTimeout(function(){c.focus();g(null,c)},0)},onShow:function(){var c=this.getElement().getChild([0,0,0,0,0]);setTimeout(function(){c.focus();g(null,c)},0)},onLoad:function(c){e=c.sender}},{type:\"hbox\",align:\"top\",widths:[\"100%\"],children:[{type:\"vbox\",\nalign:\"top\",children:[{type:\"html\",html:\"<div></div>\"},{type:\"html\",id:\"charPreview\",className:\"cke_dark_background\",style:\"border:1px solid #eeeeee;font-size:28px;height:40px;width:70px;padding-top:9px;font-family:'Microsoft Sans Serif',Arial,Helvetica,Verdana;text-align:center;\",html:\"<div>&nbsp;</div>\"},{type:\"html\",id:\"htmlPreview\",className:\"cke_dark_background\",style:\"border:1px solid #eeeeee;font-size:14px;height:20px;width:70px;padding-top:2px;font-family:'Microsoft Sans Serif',Arial,Helvetica,Verdana;text-align:center;\",\nhtml:\"<div>&nbsp;</div>\"}]}]}]}]}]}});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/table/dialogs/table.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\n(function(){function r(a){for(var e=0,l=0,k=0,m,g=a.$.rows.length;k<g;k++){m=a.$.rows[k];for(var d=e=0,c,b=m.cells.length;d<b;d++)c=m.cells[d],e+=c.colSpan;e>l&&(l=e)}return l}function o(a){return function(){var e=this.getValue(),e=!!(CKEDITOR.dialog.validate.integer()(e)&&0<e);e||(alert(a),this.select());return e}}function n(a,e){var l=function(g){return new CKEDITOR.dom.element(g,a.document)},n=a.editable(),m=a.plugins.dialogadvtab;return{title:a.lang.table.title,minWidth:310,minHeight:CKEDITOR.env.ie?\n310:280,onLoad:function(){var g=this,a=g.getContentElement(\"advanced\",\"advStyles\");if(a)a.on(\"change\",function(){var a=this.getStyle(\"width\",\"\"),b=g.getContentElement(\"info\",\"txtWidth\");b&&b.setValue(a,!0);a=this.getStyle(\"height\",\"\");(b=g.getContentElement(\"info\",\"txtHeight\"))&&b.setValue(a,!0)})},onShow:function(){var g=a.getSelection(),d=g.getRanges(),c,b=this.getContentElement(\"info\",\"txtRows\"),h=this.getContentElement(\"info\",\"txtCols\"),p=this.getContentElement(\"info\",\"txtWidth\"),f=this.getContentElement(\"info\",\n\"txtHeight\");\"tableProperties\"==e&&((g=g.getSelectedElement())&&g.is(\"table\")?c=g:0<d.length&&(CKEDITOR.env.webkit&&d[0].shrink(CKEDITOR.NODE_ELEMENT),c=a.elementPath(d[0].getCommonAncestor(!0)).contains(\"table\",1)),this._.selectedElement=c);c?(this.setupContent(c),b&&b.disable(),h&&h.disable()):(b&&b.enable(),h&&h.enable());p&&p.onChange();f&&f.onChange()},onOk:function(){var g=a.getSelection(),d=this._.selectedElement&&g.createBookmarks(),c=this._.selectedElement||l(\"table\"),b={};this.commitContent(b,\nc);if(b.info){b=b.info;if(!this._.selectedElement)for(var h=c.append(l(\"tbody\")),e=parseInt(b.txtRows,10)||0,f=parseInt(b.txtCols,10)||0,i=0;i<e;i++)for(var j=h.append(l(\"tr\")),k=0;k<f;k++)j.append(l(\"td\")).appendBogus();e=b.selHeaders;if(!c.$.tHead&&(\"row\"==e||\"both\"==e)){j=new CKEDITOR.dom.element(c.$.createTHead());h=c.getElementsByTag(\"tbody\").getItem(0);h=h.getElementsByTag(\"tr\").getItem(0);for(i=0;i<h.getChildCount();i++)f=h.getChild(i),f.type==CKEDITOR.NODE_ELEMENT&&!f.data(\"cke-bookmark\")&&\n(f.renameNode(\"th\"),f.setAttribute(\"scope\",\"col\"));j.append(h.remove())}if(null!==c.$.tHead&&!(\"row\"==e||\"both\"==e)){j=new CKEDITOR.dom.element(c.$.tHead);h=c.getElementsByTag(\"tbody\").getItem(0);for(k=h.getFirst();0<j.getChildCount();){h=j.getFirst();for(i=0;i<h.getChildCount();i++)f=h.getChild(i),f.type==CKEDITOR.NODE_ELEMENT&&(f.renameNode(\"td\"),f.removeAttribute(\"scope\"));h.insertBefore(k)}j.remove()}if(!this.hasColumnHeaders&&(\"col\"==e||\"both\"==e))for(j=0;j<c.$.rows.length;j++)f=new CKEDITOR.dom.element(c.$.rows[j].cells[0]),\nf.renameNode(\"th\"),f.setAttribute(\"scope\",\"row\");if(this.hasColumnHeaders&&!(\"col\"==e||\"both\"==e))for(i=0;i<c.$.rows.length;i++)j=new CKEDITOR.dom.element(c.$.rows[i]),\"tbody\"==j.getParent().getName()&&(f=new CKEDITOR.dom.element(j.$.cells[0]),f.renameNode(\"td\"),f.removeAttribute(\"scope\"));b.txtHeight?c.setStyle(\"height\",b.txtHeight):c.removeStyle(\"height\");b.txtWidth?c.setStyle(\"width\",b.txtWidth):c.removeStyle(\"width\");c.getAttribute(\"style\")||c.removeAttribute(\"style\")}if(this._.selectedElement)try{g.selectBookmarks(d)}catch(m){}else a.insertElement(c),\nsetTimeout(function(){var g=new CKEDITOR.dom.element(c.$.rows[0].cells[0]),b=a.createRange();b.moveToPosition(g,CKEDITOR.POSITION_AFTER_START);b.select()},0)},contents:[{id:\"info\",label:a.lang.table.title,elements:[{type:\"hbox\",widths:[null,null],styles:[\"vertical-align:top\"],children:[{type:\"vbox\",padding:0,children:[{type:\"text\",id:\"txtRows\",\"default\":3,label:a.lang.table.rows,required:!0,controlStyle:\"width:5em\",validate:o(a.lang.table.invalidRows),setup:function(a){this.setValue(a.$.rows.length)},\ncommit:k},{type:\"text\",id:\"txtCols\",\"default\":2,label:a.lang.table.columns,required:!0,controlStyle:\"width:5em\",validate:o(a.lang.table.invalidCols),setup:function(a){this.setValue(r(a))},commit:k},{type:\"html\",html:\"&nbsp;\"},{type:\"select\",id:\"selHeaders\",requiredContent:\"th\",\"default\":\"\",label:a.lang.table.headers,items:[[a.lang.table.headersNone,\"\"],[a.lang.table.headersRow,\"row\"],[a.lang.table.headersColumn,\"col\"],[a.lang.table.headersBoth,\"both\"]],setup:function(a){var d=this.getDialog();d.hasColumnHeaders=\n!0;for(var c=0;c<a.$.rows.length;c++){var b=a.$.rows[c].cells[0];if(b&&\"th\"!=b.nodeName.toLowerCase()){d.hasColumnHeaders=!1;break}}null!==a.$.tHead?this.setValue(d.hasColumnHeaders?\"both\":\"row\"):this.setValue(d.hasColumnHeaders?\"col\":\"\")},commit:k},{type:\"text\",id:\"txtBorder\",requiredContent:\"table[border]\",\"default\":a.filter.check(\"table[border]\")?1:0,label:a.lang.table.border,controlStyle:\"width:3em\",validate:CKEDITOR.dialog.validate.number(a.lang.table.invalidBorder),setup:function(a){this.setValue(a.getAttribute(\"border\")||\n\"\")},commit:function(a,d){this.getValue()?d.setAttribute(\"border\",this.getValue()):d.removeAttribute(\"border\")}},{id:\"cmbAlign\",type:\"select\",requiredContent:\"table[align]\",\"default\":\"\",label:a.lang.common.align,items:[[a.lang.common.notSet,\"\"],[a.lang.common.alignLeft,\"left\"],[a.lang.common.alignCenter,\"center\"],[a.lang.common.alignRight,\"right\"]],setup:function(a){this.setValue(a.getAttribute(\"align\")||\"\")},commit:function(a,d){this.getValue()?d.setAttribute(\"align\",this.getValue()):d.removeAttribute(\"align\")}}]},\n{type:\"vbox\",padding:0,children:[{type:\"hbox\",widths:[\"5em\"],children:[{type:\"text\",id:\"txtWidth\",requiredContent:\"table{width}\",controlStyle:\"width:5em\",label:a.lang.common.width,title:a.lang.common.cssLengthTooltip,\"default\":a.filter.check(\"table{width}\")?500>n.getSize(\"width\")?\"100%\":500:0,getValue:q,validate:CKEDITOR.dialog.validate.cssLength(a.lang.common.invalidCssLength.replace(\"%1\",a.lang.common.width)),onChange:function(){var a=this.getDialog().getContentElement(\"advanced\",\"advStyles\");a&&\na.updateStyle(\"width\",this.getValue())},setup:function(a){this.setValue(a.getStyle(\"width\"))},commit:k}]},{type:\"hbox\",widths:[\"5em\"],children:[{type:\"text\",id:\"txtHeight\",requiredContent:\"table{height}\",controlStyle:\"width:5em\",label:a.lang.common.height,title:a.lang.common.cssLengthTooltip,\"default\":\"\",getValue:q,validate:CKEDITOR.dialog.validate.cssLength(a.lang.common.invalidCssLength.replace(\"%1\",a.lang.common.height)),onChange:function(){var a=this.getDialog().getContentElement(\"advanced\",\"advStyles\");\na&&a.updateStyle(\"height\",this.getValue())},setup:function(a){(a=a.getStyle(\"height\"))&&this.setValue(a)},commit:k}]},{type:\"html\",html:\"&nbsp;\"},{type:\"text\",id:\"txtCellSpace\",requiredContent:\"table[cellspacing]\",controlStyle:\"width:3em\",label:a.lang.table.cellSpace,\"default\":a.filter.check(\"table[cellspacing]\")?1:0,validate:CKEDITOR.dialog.validate.number(a.lang.table.invalidCellSpacing),setup:function(a){this.setValue(a.getAttribute(\"cellSpacing\")||\"\")},commit:function(a,d){this.getValue()?d.setAttribute(\"cellSpacing\",\nthis.getValue()):d.removeAttribute(\"cellSpacing\")}},{type:\"text\",id:\"txtCellPad\",requiredContent:\"table[cellpadding]\",controlStyle:\"width:3em\",label:a.lang.table.cellPad,\"default\":a.filter.check(\"table[cellpadding]\")?1:0,validate:CKEDITOR.dialog.validate.number(a.lang.table.invalidCellPadding),setup:function(a){this.setValue(a.getAttribute(\"cellPadding\")||\"\")},commit:function(a,d){this.getValue()?d.setAttribute(\"cellPadding\",this.getValue()):d.removeAttribute(\"cellPadding\")}}]}]},{type:\"html\",align:\"right\",\nhtml:\"\"},{type:\"vbox\",padding:0,children:[{type:\"text\",id:\"txtCaption\",requiredContent:\"caption\",label:a.lang.table.caption,setup:function(a){this.enable();a=a.getElementsByTag(\"caption\");if(0<a.count()){var a=a.getItem(0),d=a.getFirst(CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT));d&&!d.equals(a.getBogus())?(this.disable(),this.setValue(a.getText())):(a=CKEDITOR.tools.trim(a.getText()),this.setValue(a))}},commit:function(e,d){if(this.isEnabled()){var c=this.getValue(),b=d.getElementsByTag(\"caption\");\nif(c)0<b.count()?(b=b.getItem(0),b.setHtml(\"\")):(b=new CKEDITOR.dom.element(\"caption\",a.document),d.getChildCount()?b.insertBefore(d.getFirst()):b.appendTo(d)),b.append(new CKEDITOR.dom.text(c,a.document));else if(0<b.count())for(c=b.count()-1;0<=c;c--)b.getItem(c).remove()}}},{type:\"text\",id:\"txtSummary\",requiredContent:\"table[summary]\",label:a.lang.table.summary,setup:function(a){this.setValue(a.getAttribute(\"summary\")||\"\")},commit:function(a,d){this.getValue()?d.setAttribute(\"summary\",this.getValue()):\nd.removeAttribute(\"summary\")}}]}]},m&&m.createAdvancedTab(a,null,\"table\")]}}var q=CKEDITOR.tools.cssLength,k=function(a){var e=this.id;a.info||(a.info={});a.info[e]=this.getValue()};CKEDITOR.dialog.add(\"table\",function(a){return n(a,\"table\")});CKEDITOR.dialog.add(\"tableProperties\",function(a){return n(a,\"tableProperties\")})})();"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/tabletools/dialogs/tableCell.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.dialog.add(\"cellProperties\",function(g){function d(a){return function(b){for(var c=a(b[0]),d=1;d<b.length;d++)if(a(b[d])!==c){c=null;break}\"undefined\"!=typeof c&&(this.setValue(c),CKEDITOR.env.gecko&&(\"select\"==this.type&&!c)&&(this.getInputElement().$.selectedIndex=-1))}}function j(a){if(a=l.exec(a.getStyle(\"width\")||a.getAttribute(\"width\")))return a[2]}var h=g.lang.table,c=h.cell,e=g.lang.common,i=CKEDITOR.dialog.validate,l=/^(\\d+(?:\\.\\d+)?)(px|%)$/,f={type:\"html\",html:\"&nbsp;\"},m=\"rtl\"==\ng.lang.dir,k=g.plugins.colordialog;return{title:c.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?450:410,minHeight:CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?230:220,contents:[{id:\"info\",label:c.title,accessKey:\"I\",elements:[{type:\"hbox\",widths:[\"40%\",\"5%\",\"40%\"],children:[{type:\"vbox\",padding:0,children:[{type:\"hbox\",widths:[\"70%\",\"30%\"],children:[{type:\"text\",id:\"width\",width:\"100px\",label:e.width,validate:i.number(c.invalidWidth),onLoad:function(){var a=this.getDialog().getContentElement(\"info\",\n\"widthType\").getElement(),b=this.getInputElement(),c=b.getAttribute(\"aria-labelledby\");b.setAttribute(\"aria-labelledby\",[c,a.$.id].join(\" \"))},setup:d(function(a){var b=parseInt(a.getAttribute(\"width\"),10),a=parseInt(a.getStyle(\"width\"),10);return!isNaN(a)?a:!isNaN(b)?b:\"\"}),commit:function(a){var b=parseInt(this.getValue(),10),c=this.getDialog().getValueOf(\"info\",\"widthType\")||j(a);isNaN(b)?a.removeStyle(\"width\"):a.setStyle(\"width\",b+c);a.removeAttribute(\"width\")},\"default\":\"\"},{type:\"select\",id:\"widthType\",\nlabel:g.lang.table.widthUnit,labelStyle:\"visibility:hidden\",\"default\":\"px\",items:[[h.widthPx,\"px\"],[h.widthPc,\"%\"]],setup:d(j)}]},{type:\"hbox\",widths:[\"70%\",\"30%\"],children:[{type:\"text\",id:\"height\",label:e.height,width:\"100px\",\"default\":\"\",validate:i.number(c.invalidHeight),onLoad:function(){var a=this.getDialog().getContentElement(\"info\",\"htmlHeightType\").getElement(),b=this.getInputElement(),c=b.getAttribute(\"aria-labelledby\");b.setAttribute(\"aria-labelledby\",[c,a.$.id].join(\" \"))},setup:d(function(a){var b=\nparseInt(a.getAttribute(\"height\"),10),a=parseInt(a.getStyle(\"height\"),10);return!isNaN(a)?a:!isNaN(b)?b:\"\"}),commit:function(a){var b=parseInt(this.getValue(),10);isNaN(b)?a.removeStyle(\"height\"):a.setStyle(\"height\",CKEDITOR.tools.cssLength(b));a.removeAttribute(\"height\")}},{id:\"htmlHeightType\",type:\"html\",html:\"<br />\"+h.widthPx}]},f,{type:\"select\",id:\"wordWrap\",label:c.wordWrap,\"default\":\"yes\",items:[[c.yes,\"yes\"],[c.no,\"no\"]],setup:d(function(a){var b=a.getAttribute(\"noWrap\");if(\"nowrap\"==a.getStyle(\"white-space\")||\nb)return\"no\"}),commit:function(a){\"no\"==this.getValue()?a.setStyle(\"white-space\",\"nowrap\"):a.removeStyle(\"white-space\");a.removeAttribute(\"noWrap\")}},f,{type:\"select\",id:\"hAlign\",label:c.hAlign,\"default\":\"\",items:[[e.notSet,\"\"],[e.alignLeft,\"left\"],[e.alignCenter,\"center\"],[e.alignRight,\"right\"]],setup:d(function(a){var b=a.getAttribute(\"align\");return a.getStyle(\"text-align\")||b||\"\"}),commit:function(a){var b=this.getValue();b?a.setStyle(\"text-align\",b):a.removeStyle(\"text-align\");a.removeAttribute(\"align\")}},\n{type:\"select\",id:\"vAlign\",label:c.vAlign,\"default\":\"\",items:[[e.notSet,\"\"],[e.alignTop,\"top\"],[e.alignMiddle,\"middle\"],[e.alignBottom,\"bottom\"],[c.alignBaseline,\"baseline\"]],setup:d(function(a){var b=a.getAttribute(\"vAlign\"),a=a.getStyle(\"vertical-align\");switch(a){case \"top\":case \"middle\":case \"bottom\":case \"baseline\":break;default:a=\"\"}return a||b||\"\"}),commit:function(a){var b=this.getValue();b?a.setStyle(\"vertical-align\",b):a.removeStyle(\"vertical-align\");a.removeAttribute(\"vAlign\")}}]},f,{type:\"vbox\",\npadding:0,children:[{type:\"select\",id:\"cellType\",label:c.cellType,\"default\":\"td\",items:[[c.data,\"td\"],[c.header,\"th\"]],setup:d(function(a){return a.getName()}),commit:function(a){a.renameNode(this.getValue())}},f,{type:\"text\",id:\"rowSpan\",label:c.rowSpan,\"default\":\"\",validate:i.integer(c.invalidRowSpan),setup:d(function(a){if((a=parseInt(a.getAttribute(\"rowSpan\"),10))&&1!=a)return a}),commit:function(a){var b=parseInt(this.getValue(),10);b&&1!=b?a.setAttribute(\"rowSpan\",this.getValue()):a.removeAttribute(\"rowSpan\")}},\n{type:\"text\",id:\"colSpan\",label:c.colSpan,\"default\":\"\",validate:i.integer(c.invalidColSpan),setup:d(function(a){if((a=parseInt(a.getAttribute(\"colSpan\"),10))&&1!=a)return a}),commit:function(a){var b=parseInt(this.getValue(),10);b&&1!=b?a.setAttribute(\"colSpan\",this.getValue()):a.removeAttribute(\"colSpan\")}},f,{type:\"hbox\",padding:0,widths:[\"60%\",\"40%\"],children:[{type:\"text\",id:\"bgColor\",label:c.bgColor,\"default\":\"\",setup:d(function(a){var b=a.getAttribute(\"bgColor\");return a.getStyle(\"background-color\")||\nb}),commit:function(a){this.getValue()?a.setStyle(\"background-color\",this.getValue()):a.removeStyle(\"background-color\");a.removeAttribute(\"bgColor\")}},k?{type:\"button\",id:\"bgColorChoose\",\"class\":\"colorChooser\",label:c.chooseColor,onLoad:function(){this.getElement().getParent().setStyle(\"vertical-align\",\"bottom\")},onClick:function(){g.getColorFromDialog(function(a){a&&this.getDialog().getContentElement(\"info\",\"bgColor\").setValue(a);this.focus()},this)}}:f]},f,{type:\"hbox\",padding:0,widths:[\"60%\",\"40%\"],\nchildren:[{type:\"text\",id:\"borderColor\",label:c.borderColor,\"default\":\"\",setup:d(function(a){var b=a.getAttribute(\"borderColor\");return a.getStyle(\"border-color\")||b}),commit:function(a){this.getValue()?a.setStyle(\"border-color\",this.getValue()):a.removeStyle(\"border-color\");a.removeAttribute(\"borderColor\")}},k?{type:\"button\",id:\"borderColorChoose\",\"class\":\"colorChooser\",label:c.chooseColor,style:(m?\"margin-right\":\"margin-left\")+\": 10px\",onLoad:function(){this.getElement().getParent().setStyle(\"vertical-align\",\n\"bottom\")},onClick:function(){g.getColorFromDialog(function(a){a&&this.getDialog().getContentElement(\"info\",\"borderColor\").setValue(a);this.focus()},this)}}:f]}]}]}]}],onShow:function(){this.cells=CKEDITOR.plugins.tabletools.getSelectedCells(this._.editor.getSelection());this.setupContent(this.cells)},onOk:function(){for(var a=this._.editor.getSelection(),b=a.createBookmarks(),c=this.cells,d=0;d<c.length;d++)this.commitContent(c[d]);this._.editor.forceNextSelectionCheck();a.selectBookmarks(b);this._.editor.selectionChange()},\nonLoad:function(){var a={};this.foreach(function(b){b.setup&&b.commit&&(b.setup=CKEDITOR.tools.override(b.setup,function(c){return function(){c.apply(this,arguments);a[b.id]=b.getValue()}}),b.commit=CKEDITOR.tools.override(b.commit,function(c){return function(){a[b.id]!==b.getValue()&&c.apply(this,arguments)}}))})}}});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/templates/dialogs/templates.css",
    "content": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n*/\r\n\r\n.cke_tpl_list\r\n{\r\n\tborder: #dcdcdc 2px solid;\r\n\tbackground-color: #ffffff;\r\n\toverflow-y: auto;\r\n\toverflow-x: hidden;\r\n\twidth: 100%;\r\n\theight: 220px;\r\n}\r\n\r\n.cke_tpl_item\r\n{\r\n\tmargin: 5px;\r\n\tpadding: 7px;\r\n\tborder: #eeeeee 1px solid;\r\n\t*width: 88%;\r\n}\r\n\r\n.cke_tpl_preview\r\n{\r\n\tborder-collapse: separate;\r\n\ttext-indent:0;\r\n\twidth: 100%;\r\n}\r\n.cke_tpl_preview td\r\n{\r\n\tpadding: 2px;\r\n\tvertical-align: middle;\r\n}\r\n.cke_tpl_preview .cke_tpl_preview_img\r\n{\r\n\twidth: 100px;\r\n}\r\n.cke_tpl_preview span\r\n{\r\n\twhite-space: normal;\r\n}\r\n\r\n.cke_tpl_title\r\n{\r\n\tfont-weight: bold;\r\n}\r\n\r\n.cke_tpl_list a:hover .cke_tpl_item,\r\n.cke_tpl_list a:focus .cke_tpl_item,\r\n.cke_tpl_list a:active .cke_tpl_item\r\n{\r\n\tborder: #ff9933 1px solid;\r\n\tbackground-color: #fffacd;\r\n}\r\n\r\n.cke_tpl_list a:hover *,\r\n.cke_tpl_list a:focus *,\r\n.cke_tpl_list a:active *\r\n{\r\n\tcursor: pointer;\r\n}\r\n\r\n/* IE Quirks contextual selectors children will not get :hover transition until\r\n\tthe hover style of the link itself contains certain CSS declarations. */\r\n.cke_browser_quirks .cke_tpl_list a:active,\r\n.cke_browser_quirks .cke_tpl_list a:hover,\r\n.cke_browser_quirks .cke_tpl_list a:focus\r\n{\r\n\tbackground-position: 0 0;\r\n}\r\n\r\n.cke_hc .cke_tpl_list a:hover .cke_tpl_item,\r\n.cke_hc .cke_tpl_list a:focus .cke_tpl_item,\r\n.cke_hc .cke_tpl_list a:active .cke_tpl_item\r\n{\r\n\tborder-width: 3px;\r\n}\r\n\r\n.cke_tpl_empty, .cke_tpl_loading\r\n{\r\n\ttext-align: center;\r\n\tpadding: 5px;\r\n}\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/templates/dialogs/templates.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\n(function(){CKEDITOR.dialog.add(\"templates\",function(c){function o(a,b){var k=CKEDITOR.dom.element.createFromHtml('<a href=\"javascript:void(0)\" tabIndex=\"-1\" role=\"option\" ><div class=\"cke_tpl_item\"></div></a>'),d='<table style=\"width:350px;\" class=\"cke_tpl_preview\" role=\"presentation\"><tr>';a.image&&b&&(d+='<td class=\"cke_tpl_preview_img\"><img src=\"'+CKEDITOR.getUrl(b+a.image)+'\"'+(CKEDITOR.env.ie6Compat?' onload=\"this.width=this.width\"':\"\")+' alt=\"\" title=\"\"></td>');d+='<td style=\"white-space:normal;\"><span class=\"cke_tpl_title\">'+\na.title+\"</span><br/>\";a.description&&(d+=\"<span>\"+a.description+\"</span>\");k.getFirst().setHtml(d+\"</td></tr></table>\");k.on(\"click\",function(){p(a.html)});return k}function p(a){var b=CKEDITOR.dialog.getCurrent();b.getValueOf(\"selectTpl\",\"chkInsertOpt\")?(c.fire(\"saveSnapshot\"),c.setData(a,function(){b.hide();var a=c.createRange();a.moveToElementEditStart(c.editable());a.select();setTimeout(function(){c.fire(\"saveSnapshot\")},0)})):(c.insertHtml(a),b.hide())}function i(a){var b=a.data.getTarget(),\nc=g.equals(b);if(c||g.contains(b)){var d=a.data.getKeystroke(),f=g.getElementsByTag(\"a\"),e;if(f){if(c)e=f.getItem(0);else switch(d){case 40:e=b.getNext();break;case 38:e=b.getPrevious();break;case 13:case 32:b.fire(\"click\")}e&&(e.focus(),a.data.preventDefault())}}}var h=CKEDITOR.plugins.get(\"templates\");CKEDITOR.document.appendStyleSheet(CKEDITOR.getUrl(h.path+\"dialogs/templates.css\"));var g,h=\"cke_tpl_list_label_\"+CKEDITOR.tools.getNextNumber(),f=c.lang.templates,l=c.config;return{title:c.lang.templates.title,\nminWidth:CKEDITOR.env.ie?440:400,minHeight:340,contents:[{id:\"selectTpl\",label:f.title,elements:[{type:\"vbox\",padding:5,children:[{id:\"selectTplText\",type:\"html\",html:\"<span>\"+f.selectPromptMsg+\"</span>\"},{id:\"templatesList\",type:\"html\",focus:!0,html:'<div class=\"cke_tpl_list\" tabIndex=\"-1\" role=\"listbox\" aria-labelledby=\"'+h+'\"><div class=\"cke_tpl_loading\"><span></span></div></div><span class=\"cke_voice_label\" id=\"'+h+'\">'+f.options+\"</span>\"},{id:\"chkInsertOpt\",type:\"checkbox\",label:f.insertOption,\n\"default\":l.templates_replaceContent}]}]}],buttons:[CKEDITOR.dialog.cancelButton],onShow:function(){var a=this.getContentElement(\"selectTpl\",\"templatesList\");g=a.getElement();CKEDITOR.loadTemplates(l.templates_files,function(){var b=(l.templates||\"default\").split(\",\");if(b.length){var c=g;c.setHtml(\"\");for(var d=0,h=b.length;d<h;d++)for(var e=CKEDITOR.getTemplates(b[d]),i=e.imagesPath,e=e.templates,n=e.length,j=0;j<n;j++){var m=o(e[j],i);m.setAttribute(\"aria-posinset\",j+1);m.setAttribute(\"aria-setsize\",\nn);c.append(m)}a.focus()}else g.setHtml('<div class=\"cke_tpl_empty\"><span>'+f.emptyListMsg+\"</span></div>\")});this._.element.on(\"keydown\",i)},onHide:function(){this._.element.removeListener(\"keydown\",i)}}})})();"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/templates/templates/default.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nCKEDITOR.addTemplates(\"default\",{imagesPath:CKEDITOR.getUrl(CKEDITOR.plugins.getPath(\"templates\")+\"templates/images/\"),templates:[{title:\"Image and Title\",image:\"template1.gif\",description:\"One main image with a title and text that surround the image.\",html:'<h3><img src=\" \" alt=\"\" style=\"margin-right: 10px\" height=\"100\" width=\"100\" align=\"left\" />Type the title here</h3><p>Type the text here</p>'},{title:\"Strange Template\",image:\"template2.gif\",description:\"A template that defines two colums, each one with a title, and some text.\",\nhtml:'<table cellspacing=\"0\" cellpadding=\"0\" style=\"width:100%\" border=\"0\"><tr><td style=\"width:50%\"><h3>Title 1</h3></td><td></td><td style=\"width:50%\"><h3>Title 2</h3></td></tr><tr><td>Text 1</td><td></td><td>Text 2</td></tr></table><p>More text goes here.</p>'},{title:\"Text and Table\",image:\"template3.gif\",description:\"A title with some text and a table.\",html:'<div style=\"width: 80%\"><h3>Title goes here</h3><table style=\"width:150px;float: right\" cellspacing=\"0\" cellpadding=\"0\" border=\"1\"><caption style=\"border:solid 1px black\"><strong>Table title</strong></caption><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr></table><p>Type the text here</p></div>'}]});"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/wsc/LICENSE.md",
    "content": "Software License Agreement\r\n==========================\r\n\r\n**CKEditor WSC Plugin**\r\nCopyright &copy; 2012, [CKSource](http://cksource.com) - Frederico Knabben. All rights reserved.\r\n\r\nLicensed under the terms of any of the following licenses at your choice:\r\n\r\n*   GNU General Public License Version 2 or later (the \"GPL\"):\r\n    http://www.gnu.org/licenses/gpl.html\r\n\r\n*   GNU Lesser General Public License Version 2.1 or later (the \"LGPL\"):\r\n    http://www.gnu.org/licenses/lgpl.html\r\n\r\n*   Mozilla Public License Version 1.1 or later (the \"MPL\"):\r\n    http://www.mozilla.org/MPL/MPL-1.1.html\r\n\r\nYou are not required to, but if you want to explicitly declare the license you have chosen to be bound to when using, reproducing, modifying and distributing this software, just include a text file titled \"legal.txt\" in your version of this software, indicating your license choice.\r\n\r\nSources of Intellectual Property Included in this plugin\r\n--------------------------------------------------------\r\n\r\nWhere not otherwise indicated, all plugin content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, the plugin will incorporate work done by developers outside of CKSource with their express permission.\r\n\r\nTrademarks\r\n----------\r\n\r\nCKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders.\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/wsc/README.md",
    "content": "CKEditor WebSpellChecker Plugin\r\n===============================\r\n\r\nThis plugin brings Web Spell Checker (WSC) into CKEditor.\r\n\r\nWSC is \"installation-less\", using the web-services of [WebSpellChecker.net](http://www.webspellchecker.net/). It's an out of the box solution.\r\n\r\nInstallation\r\n------------\r\n\r\n1. Clone/copy this repository contents in a new \"plugins/wsc\" folder in your CKEditor installation.\r\n2. Enable the \"wsc\" plugin in the CKEditor configuration file (config.js):\r\n\r\n        config.extraPlugins = 'wsc';\r\n\r\nThat's all. WSC will appear on the editor toolbar and will be ready to use.\r\n\r\nLicense\r\n-------\r\n\r\nLicensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html).\r\n\r\nSee LICENSE.md for more information.\r\n\r\nDeveloped in cooperation with [WebSpellChecker.net](http://www.webspellchecker.net/).\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/wsc/dialogs/ciframe.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.html or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<title></title>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n\t<script type=\"text/javascript\">\r\n\r\nfunction gup( name )\r\n{\r\n\tname = name.replace( /[\\[]/, '\\\\\\[' ).replace( /[\\]]/, '\\\\\\]' ) ;\r\n\tvar regexS = '[\\\\?&]' + name + '=([^&#]*)' ;\r\n\tvar regex = new RegExp( regexS ) ;\r\n\tvar results = regex.exec( window.location.href ) ;\r\n\r\n\tif ( results )\r\n\t\treturn results[ 1 ] ;\r\n\telse\r\n\t\treturn '' ;\r\n}\r\n\r\nvar interval;\r\n\r\nfunction sendData2Master()\r\n{\r\n\tvar destination = window.parent.parent ;\r\n\ttry\r\n\t{\r\n\t\tif ( destination.XDTMaster )\r\n\t\t{\r\n\t\t\tvar t = destination.XDTMaster.read( [ gup( 'cmd' ), gup( 'data' ) ] ) ;\r\n\t\t\twindow.clearInterval( interval ) ;\r\n\t\t}\r\n\t}\r\n\tcatch (e) {}\r\n}\r\n\r\nfunction OnMessage (event) {\r\n\t        var message = event.data;\r\n\t        var destination = window.parent.parent;\r\n\t        destination.XDTMaster.read( [ 'end', message, 'fpm' ] ) ;\r\n}\r\n\r\nfunction listenPostMessage() {\r\n    if (window.addEventListener) { // all browsers except IE before version 9\r\n            window.addEventListener (\"message\", OnMessage, false);\r\n    }else {\r\n            if (window.attachEvent) { // IE before version 9\r\n                        window.attachEvent(\"onmessage\", OnMessage);\r\n                }\r\n        }\r\n}\r\n\r\nfunction onLoad()\r\n{\r\n\tinterval = window.setInterval( sendData2Master, 100 );\r\n\tlistenPostMessage();\r\n}\r\n\r\n</script>\r\n</head>\r\n<body onload=\"onLoad()\"><p></p></body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/wsc/dialogs/tmpFrameset.html",
    "content": "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\" \"http://www.w3.org/TR/html4/frameset.dtd\">\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.html or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<title></title>\r\n\t<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n\t<script type=\"text/javascript\">\r\n\r\nfunction doLoadScript( url )\r\n{\r\n\tif ( !url )\r\n\t\treturn false ;\r\n\r\n\tvar s = document.createElement( \"script\" ) ;\r\n\ts.type = \"text/javascript\" ;\r\n\ts.src = url ;\r\n\tdocument.getElementsByTagName( \"head\" )[ 0 ].appendChild( s ) ;\r\n\r\n\treturn true ;\r\n}\r\n\r\nvar opener;\r\nfunction tryLoad()\r\n{\r\n\topener = window.parent;\r\n\r\n\t// get access to global parameters\r\n\tvar oParams = window.opener.oldFramesetPageParams;\r\n\r\n\t// make frameset rows string prepare\r\n\tvar sFramesetRows = ( parseInt( oParams.firstframeh, 10 ) || '30') + \",*,\" + ( parseInt( oParams.thirdframeh, 10 ) || '150' ) + ',0' ;\r\n\tdocument.getElementById( 'itFrameset' ).rows = sFramesetRows ;\r\n\r\n\t// dynamic including init frames and crossdomain transport code\r\n\t// from config sproxy_js_frameset url\r\n\tvar addScriptUrl = oParams.sproxy_js_frameset ;\r\n\tdoLoadScript( addScriptUrl ) ;\r\n}\r\n\r\n\t</script>\r\n</head>\r\n\r\n<frameset id=\"itFrameset\" onload=\"tryLoad();\" border=\"0\" rows=\"30,*,*,0\">\r\n    <frame scrolling=\"no\" framespacing=\"0\" frameborder=\"0\" noresize=\"noresize\" marginheight=\"0\" marginwidth=\"2\" src=\"\" name=\"navbar\"></frame>\r\n    <frame scrolling=\"auto\" framespacing=\"0\" frameborder=\"0\" noresize=\"noresize\" marginheight=\"0\" marginwidth=\"0\" src=\"\" name=\"mid\"></frame>\r\n    <frame scrolling=\"no\" framespacing=\"0\" frameborder=\"0\" noresize=\"noresize\" marginheight=\"1\" marginwidth=\"1\" src=\"\" name=\"bot\"></frame>\r\n    <frame scrolling=\"no\" framespacing=\"0\" frameborder=\"0\" noresize=\"noresize\" marginheight=\"1\" marginwidth=\"1\" src=\"\" name=\"spellsuggestall\"></frame>\r\n</frameset>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/wsc/dialogs/wsc.css",
    "content": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.html or http://ckeditor.com/license\r\n*/\r\n\r\nhtml, body\r\n{\r\n\tbackground-color: transparent;\r\n\tmargin: 0px;\r\n\tpadding: 0px;\r\n}\r\n\r\nbody\r\n{\r\n\tpadding: 10px;\r\n}\r\n\r\nbody, td, input, select, textarea\r\n{\r\n\tfont-size: 11px;\r\n\tfont-family: 'Microsoft Sans Serif' , Arial, Helvetica, Verdana;\r\n}\r\n\r\n.midtext\r\n{\r\n\tpadding:0px;\r\n\tmargin:10px;\r\n}\r\n\r\n.midtext p\r\n{\r\n\tpadding:0px;\r\n\tmargin:10px;\r\n}\r\n\r\n.Button\r\n{\r\n\tborder: #737357 1px solid;\r\n\tcolor: #3b3b1f;\r\n\tbackground-color: #c7c78f;\r\n}\r\n\r\n.PopupTabArea\r\n{\r\n\tcolor: #737357;\r\n\tbackground-color: #e3e3c7;\r\n}\r\n\r\n.PopupTitleBorder\r\n{\r\n\tborder-bottom: #d5d59d 1px solid;\r\n}\r\n.PopupTabEmptyArea\r\n{\r\n\tpadding-left: 10px;\r\n\tborder-bottom: #d5d59d 1px solid;\r\n}\r\n\r\n.PopupTab, .PopupTabSelected\r\n{\r\n\tborder-right: #d5d59d 1px solid;\r\n\tborder-top: #d5d59d 1px solid;\r\n\tborder-left: #d5d59d 1px solid;\r\n\tpadding: 3px 5px 3px 5px;\r\n\tcolor: #737357;\r\n}\r\n\r\n.PopupTab\r\n{\r\n\tmargin-top: 1px;\r\n\tborder-bottom: #d5d59d 1px solid;\r\n\tcursor: pointer;\r\n}\r\n\r\n.PopupTabSelected\r\n{\r\n\tfont-weight: bold;\r\n\tcursor: default;\r\n\tpadding-top: 4px;\r\n\tborder-bottom: #f1f1e3 1px solid;\r\n\tbackground-color: #f1f1e3;\r\n}\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/wsc/dialogs/wsc.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.html or http://ckeditor.com/license\n*/\n(function(){function y(a){if(!a)throw\"Languages-by-groups list are required for construct selectbox\";var c=[],d=\"\",f;for(f in a)for(var g in a[f]){var h=a[f][g];\"en_US\"==h?d=h:c.push(h)}c.sort();d&&c.unshift(d);return{getCurrentLangGroup:function(c){a:{for(var d in a)for(var f in a[d])if(f.toUpperCase()===c.toUpperCase()){c=d;break a}c=\"\"}return c},setLangList:function(){var c={},d;for(d in a)for(var f in a[d])c[a[d][f]]=f;return c}()}}var e=function(){var a=function(a,b,f){var f=f||{},g=f.expires;\nif(\"number\"==typeof g&&g){var h=new Date;h.setTime(h.getTime()+1E3*g);g=f.expires=h}g&&g.toUTCString&&(f.expires=g.toUTCString());var b=encodeURIComponent(b),a=a+\"=\"+b,e;for(e in f)b=f[e],a+=\"; \"+e,!0!==b&&(a+=\"=\"+b);document.cookie=a};return{postMessage:{init:function(a){window.addEventListener?window.addEventListener(\"message\",a,!1):window.attachEvent(\"onmessage\",a)},send:function(a){var b=Object.prototype.toString,f=a.fn||null,g=a.id||\"\",e=a.target||window,i=a.message||{id:g};a.message&&\"[object Object]\"==\nb.call(a.message)&&(a.message.id||(a.message.id=g),i=a.message);a=window.JSON.stringify(i,f);e.postMessage(a,\"*\")},unbindHandler:function(a){window.removeEventListener?window.removeEventListener(\"message\",a,!1):window.detachEvent(\"onmessage\",a)}},hash:{create:function(){},parse:function(){}},cookie:{set:a,get:function(a){return(a=document.cookie.match(RegExp(\"(?:^|; )\"+a.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g,\"\\\\$1\")+\"=([^;]*)\")))?decodeURIComponent(a[1]):void 0},remove:function(c){a(c,\"\",{expires:-1})}},\nmisc:{findFocusable:function(a){var b=null;a&&(b=a.find(\"a[href], area[href], input, select, textarea, button, *[tabindex], *[contenteditable]\"));return b},isVisible:function(a){return!(0===a.offsetWidth||0==a.offsetHeight||\"none\"===(document.defaultView&&document.defaultView.getComputedStyle?document.defaultView.getComputedStyle(a,null).display:a.currentStyle?a.currentStyle.display:a.style.display))},hasClass:function(a,b){return!(!a.className||!a.className.match(RegExp(\"(\\\\s|^)\"+b+\"(\\\\s|$)\")))}}}}(),\na=a||{};a.TextAreaNumber=null;a.load=!0;a.cmd={SpellTab:\"spell\",Thesaurus:\"thes\",GrammTab:\"grammar\"};a.dialog=null;a.optionNode=null;a.selectNode=null;a.grammerSuggest=null;a.textNode={};a.iframeMain=null;a.dataTemp=\"\";a.div_overlay=null;a.textNodeInfo={};a.selectNode={};a.selectNodeResponce={};a.langList=null;a.langSelectbox=null;a.banner=\"\";a.show_grammar=null;a.div_overlay_no_check=null;a.targetFromFrame={};a.onLoadOverlay=null;a.LocalizationComing={};a.OverlayPlace=null;a.LocalizationButton={ChangeTo:{instance:null,\ntext:\"Change to\"},ChangeAll:{instance:null,text:\"Change All\"},IgnoreWord:{instance:null,text:\"Ignore word\"},IgnoreAllWords:{instance:null,text:\"Ignore all words\"},Options:{instance:null,text:\"Options\",optionsDialog:{instance:null}},AddWord:{instance:null,text:\"Add word\"},FinishChecking:{instance:null,text:\"Finish Checking\"}};a.LocalizationLabel={ChangeTo:{instance:null,text:\"Change to\"},Suggestions:{instance:null,text:\"Suggestions\"}};var z=function(b){var c,d;for(d in b)c=b[d].instance.getElement().getFirst()||\nb[d].instance.getElement(),c.setText(a.LocalizationComing[d])},A=function(b){for(var c in b){if(!b[c].instance.setLabel)break;b[c].instance.setLabel(a.LocalizationComing[c])}},j,q;a.framesetHtml=function(b){return\"<iframe id=\"+a.iframeNumber+\"_\"+b+' frameborder=\"0\" allowtransparency=\"1\" style=\"width:100%;border: 1px solid #AEB3B9;overflow: auto;background:#fff; border-radius: 3px;\"></iframe>'};a.setIframe=function(b,c){var d;d=a.framesetHtml(c);var f=a.iframeNumber+\"_\"+c;b.getElement().setHtml(d);\nd=document.getElementById(f);d=d.contentWindow?d.contentWindow:d.contentDocument.document?d.contentDocument.document:d.contentDocument;d.document.open();d.document.write('<!DOCTYPE html><html><head><meta charset=\"UTF-8\"><title>iframe</title><style>html,body{margin: 0;height: 100%;font: 13px/1.555 \"Trebuchet MS\", sans-serif;}a{color: #888;font-weight: bold;text-decoration: none;border-bottom: 1px solid #888;}.main-box {color:#252525;padding: 3px 5px;text-align: justify;}.main-box p{margin: 0 0 14px;}.main-box .cerr{color: #f00000;border-bottom-color: #f00000;}</style></head><body><div id=\"content\" class=\"main-box\"></div><iframe src=\"\" frameborder=\"0\" id=\"spelltext\" name=\"spelltext\" style=\"display:none; width: 100%\" ></iframe><iframe src=\"\" frameborder=\"0\" id=\"loadsuggestfirst\" name=\"loadsuggestfirst\" style=\"display:none; width: 100%\" ></iframe><iframe src=\"\" frameborder=\"0\" id=\"loadspellsuggestall\" name=\"loadspellsuggestall\" style=\"display:none; width: 100%\" ></iframe><iframe src=\"\" frameborder=\"0\" id=\"loadOptionsForm\" name=\"loadOptionsForm\" style=\"display:none; width: 100%\" ></iframe><script>(function(window) {var ManagerPostMessage = function() {var _init = function(handler) {if (document.addEventListener) {window.addEventListener(\"message\", handler, false);} else {window.attachEvent(\"onmessage\", handler);};};var _sendCmd = function(o) {var str,type = Object.prototype.toString,fn = o.fn || null,id = o.id || \"\",target = o.target || window,message = o.message || { \"id\": id };if (o.message && type.call(o.message) == \"[object Object]\") {(o.message[\"id\"]) ? o.message[\"id\"] : o.message[\"id\"] = id;message = o.message;};str = JSON.stringify(message, fn);target.postMessage(str, \"*\");};return {init: _init,send: _sendCmd};};var manageMessageTmp = new ManagerPostMessage;var appString = (function(){var spell = parent.CKEDITOR.config.wsc.DefaultParams.scriptPath;var serverUrl = parent.CKEDITOR.config.wsc.DefaultParams.serviceHost;return serverUrl + spell;})();function loadScript(src, callback) {var scriptTag = document.createElement(\"script\");scriptTag.type = \"text/javascript\";callback ? callback : callback = function() {};if(scriptTag.readyState) {scriptTag.onreadystatechange = function() {if (scriptTag.readyState == \"loaded\" ||scriptTag.readyState == \"complete\") {scriptTag.onreadystatechange = null;setTimeout(function(){scriptTag.parentNode.removeChild(scriptTag)},1);callback();}};}else{scriptTag.onload = function() {setTimeout(function(){scriptTag.parentNode.removeChild(scriptTag)},1);callback();};};scriptTag.src = src;document.getElementsByTagName(\"head\")[0].appendChild(scriptTag);};window.onload = function(){loadScript(appString, function(){manageMessageTmp.send({\"id\": \"iframeOnload\",\"target\": window.parent});});}})(this);<\\/script></body></html>');\nd.document.close()};a.setCurrentIframe=function(b){a.setIframe(a.dialog._.contents[b].Content,b)};a.setHeightBannerFrame=function(){var b=a.dialog.getContentElement(\"SpellTab\",\"banner\").getElement(),c=a.dialog.getContentElement(\"GrammTab\",\"banner\").getElement(),d=a.dialog.getContentElement(\"Thesaurus\",\"banner\").getElement();b.setStyle(\"height\",\"90px\");c.setStyle(\"height\",\"90px\");d.setStyle(\"height\",\"90px\")};a.setHeightFrame=function(){document.getElementById(a.iframeNumber+\"_\"+a.dialog._.currentTabId).style.height=\n\"240px\"};a.sendData=function(b){var c=b._.currentTabId,d=b._.contents[c].Content,f,g;a.setIframe(d,c);var e=function(e){e=e||window.event;e.data.getTarget().is(\"a\")&&c!=b._.currentTabId&&(c=b._.currentTabId,d=b._.contents[c].Content,f=a.iframeNumber+\"_\"+c,a.div_overlay.setEnable(),d.getElement().getChildCount()?u(a.targetFromFrame[f],a.cmd[c]):(a.setIframe(d,c),g=document.getElementById(f),a.targetFromFrame[f]=g.contentWindow))};b.parts.tabs.removeListener(\"click\",e);b.parts.tabs.on(\"click\",e)};a.buildSelectLang=\nfunction(a){var c=new CKEDITOR.dom.element(\"div\"),d=new CKEDITOR.dom.element(\"select\"),a=\"wscLang\"+a;c.addClass(\"cke_dialog_ui_input_select\");c.setAttribute(\"role\",\"presentation\");c.setStyles({height:\"auto\",position:\"absolute\",right:\"0\",top:\"-1px\",width:\"160px\",\"white-space\":\"normal\"});d.setAttribute(\"id\",a);d.addClass(\"cke_dialog_ui_input_select\");d.setStyles({width:\"160px\"});c.append(d);return c};a.buildOptionLang=function(b,c){var d=document.getElementById(\"wscLang\"+c),f=document.createDocumentFragment(),\ng,e,i=[];if(0===d.options.length){for(g in b)i.push([g,b[g]]);i.sort();for(var k=0;k<i.length;k++)g=document.createElement(\"option\"),g.setAttribute(\"value\",i[k][1]),e=document.createTextNode(i[k][0]),g.appendChild(e),i[k][1]==a.selectingLang&&g.setAttribute(\"selected\",\"selected\"),f.appendChild(g);d.appendChild(f)}};a.buildOptionSynonyms=function(b){b=a.selectNodeResponce[b];a.selectNode.synonyms.clear();for(var c=0;c<b.length;c++)a.selectNode.synonyms.add(b[c],b[c]);a.selectNode.synonyms.getInputElement().$.firstChild.selected=\n!0;a.textNode.Thesaurus.setValue(a.selectNode.synonyms.getInputElement().getValue())};var r=function(a){var c=document,d=a.target||c.body,f=a.id||\"overlayBlock\",e=a.opacity||\"0.9\",a=a.background||\"#f1f1f1\",h=c.getElementById(f),i=h||c.createElement(\"div\");i.style.cssText=\"position: absolute;top:30px;bottom:41px;left:1px;right:1px;z-index: 10020;padding:0;margin:0;background:\"+a+\";opacity: \"+e+\";filter: alpha(opacity=\"+100*e+\");display: none;\";i.id=f;h||d.appendChild(i);return{setDisable:function(){i.style.display=\n\"none\"},setEnable:function(){i.style.display=\"block\"}}},B=function(b,c,d){var f=new CKEDITOR.dom.element(\"div\"),e=new CKEDITOR.dom.element(\"input\"),h=new CKEDITOR.dom.element(\"label\"),i=\"wscGrammerSuggest\"+b+\"_\"+c;f.addClass(\"cke_dialog_ui_input_radio\");f.setAttribute(\"role\",\"presentation\");f.setStyles({width:\"97%\",padding:\"5px\",\"white-space\":\"normal\"});e.setAttributes({type:\"radio\",value:c,name:\"wscGrammerSuggest\",id:i});e.setStyles({\"float\":\"left\"});e.on(\"click\",function(b){a.textNode.GrammTab.setValue(b.sender.getValue())});\nd&&e.setAttribute(\"checked\",!0);e.addClass(\"cke_dialog_ui_radio_input\");h.appendText(b);h.setAttribute(\"for\",i);h.setStyles({display:\"block\",\"line-height\":\"16px\",\"margin-left\":\"18px\",\"white-space\":\"normal\"});f.append(e);f.append(h);return f},v=function(a){a=a||\"true\";null!==a&&\"false\"==a&&m()},n=function(b){var c=new y(b),b=\"wscLang\"+a.dialog.getParentEditor().name,b=document.getElementById(b),d=a.iframeNumber+\"_\"+a.dialog._.currentTabId;a.buildOptionLang(c.setLangList,a.dialog.getParentEditor().name);\nw[c.getCurrentLangGroup(a.selectingLang)]();v(a.show_grammar);b.onchange=function(){w[c.getCurrentLangGroup(this.value)]();v(a.show_grammar);a.div_overlay.setEnable();a.selectingLang=this.value;e.postMessage.send({message:{changeLang:a.selectingLang,text:a.dataTemp},target:a.targetFromFrame[d],id:\"selectionLang_outer__page\"})}},C=function(b){if(\"no_any_suggestions\"==b){b=\"No suggestions\";a.LocalizationButton.ChangeTo.instance.disable();a.LocalizationButton.ChangeAll.instance.disable();var c=function(b){b=\na.LocalizationButton[b].instance;b.getElement().hasClass(\"cke_disabled\")?b.getElement().setStyle(\"color\",\"#a0a0a0\"):b.disable()};c(\"ChangeTo\");c(\"ChangeAll\")}else a.LocalizationButton.ChangeTo.instance.enable(),a.LocalizationButton.ChangeAll.instance.enable(),a.LocalizationButton.ChangeTo.instance.getElement().setStyle(\"color\",\"#333\"),a.LocalizationButton.ChangeAll.instance.getElement().setStyle(\"color\",\"#333\");return b},E={iframeOnload:function(){a.div_overlay.setEnable();var b=a.dialog._.currentTabId;\nu(a.targetFromFrame[a.iframeNumber+\"_\"+b],a.cmd[b])},suggestlist:function(b){delete b.id;a.div_overlay_no_check.setDisable();s();n(a.langList);var c=C(b.word),d=\"\";c instanceof Array&&(c=b.word[0]);d=c=c.split(\",\");q.clear();a.textNode.SpellTab.setValue(d[0]);for(b=0;b<d.length;b++)q.add(d[b],d[b]);l();a.div_overlay.setDisable()},grammerSuggest:function(b){delete b.id;delete b.mocklangs;s();n(a.langList);var c=b.grammSuggest[0];a.grammerSuggest.getElement().setHtml(\"\");a.textNode.GrammTab.reset();\na.textNode.GrammTab.setValue(c);a.textNodeInfo.GrammTab.getElement().setHtml(\"\");a.textNodeInfo.GrammTab.getElement().setText(b.info);for(var b=b.grammSuggest,c=b.length,d=!0,f=0;f<c;f++)a.grammerSuggest.getElement().append(B(b[f],b[f],d)),d=!1;l();a.div_overlay.setDisable()},thesaurusSuggest:function(b){delete b.id;delete b.mocklangs;s();n(a.langList);a.selectNodeResponce=b;a.textNode.Thesaurus.reset();a.selectNode.categories.clear();for(var c in b)a.selectNode.categories.add(c,c);b=a.selectNode.categories.getInputElement().getChildren().$[0].value;\na.selectNode.categories.getInputElement().getChildren().$[0].selected=!0;a.buildOptionSynonyms(b);l();a.div_overlay.setDisable()},finish:function(b){delete b.id;D();b=a.dialog.getContentElement(a.dialog._.currentTabId,\"BlockFinishChecking\").getElement();b.removeStyle(\"display\");b.removeStyle(\"position\");b.removeStyle(\"left\");b.show();a.div_overlay.setDisable()},settext:function(b){delete b.id;a.dialog.getParentEditor().getCommand(\"checkspell\");var c=a.dialog.getParentEditor();try{c.focus()}catch(d){}c.setData(b.text,\nfunction(){a.dataTemp=\"\";c.unlockSelection();c.fire(\"saveSnapshot\");a.dialog.hide()})},ReplaceText:function(b){delete b.id;a.div_overlay.setEnable();a.dataTemp=b.text;a.selectingLang=b.currentLang;window.setTimeout(function(){try{a.div_overlay.setDisable()}catch(b){}},500);z(a.LocalizationButton);A(a.LocalizationLabel)},options_checkbox_send:function(b){delete b.id;b={osp:e.cookie.get(\"osp\"),udn:e.cookie.get(\"udn\"),cust_dic_ids:a.cust_dic_ids};e.postMessage.send({message:b,target:a.targetFromFrame[a.iframeNumber+\n\"_\"+a.dialog._.currentTabId],id:\"options_outer__page\"})},getOptions:function(b){var c=b.DefOptions.udn;a.LocalizationComing=b.DefOptions.localizationButtonsAndText;a.show_grammar=b.show_grammar;a.langList=b.lang;if(a.bnr=b.bannerId){a.setHeightBannerFrame();var d=b.banner;a.dialog.getContentElement(a.dialog._.currentTabId,\"banner\").getElement().setHtml(d)}else a.setHeightFrame();\"undefined\"==c&&(a.userDictionaryName?(c=a.userDictionaryName,d={osp:e.cookie.get(\"osp\"),udn:a.userDictionaryName,cust_dic_ids:a.cust_dic_ids,\nid:\"options_dic_send\",udnCmd:\"create\"},e.postMessage.send({message:d,target:a.targetFromFrame[void 0]})):c=\"\");e.cookie.set(\"osp\",b.DefOptions.osp);e.cookie.set(\"udn\",c);e.cookie.set(\"cust_dic_ids\",b.DefOptions.cust_dic_ids);e.postMessage.send({id:\"giveOptions\"})},options_dic_send:function(){var b={osp:e.cookie.get(\"osp\"),udn:e.cookie.get(\"udn\"),cust_dic_ids:a.cust_dic_ids,id:\"options_dic_send\",udnCmd:e.cookie.get(\"udnCmd\")};e.postMessage.send({message:b,target:a.targetFromFrame[a.iframeNumber+\"_\"+\na.dialog._.currentTabId]})},data:function(a){delete a.id},giveOptions:function(){},setOptionsConfirmF:function(){},setOptionsConfirmT:function(){j.setValue(\"\")},clickBusy:function(){a.div_overlay.setEnable()},suggestAllCame:function(){a.div_overlay.setDisable();a.div_overlay_no_check.setDisable()},TextCorrect:function(){n(a.langList)}},x=function(a){a=a||window.event;if((a=window.JSON.parse(a.data))&&a.id)E[a.id](a)},u=function(b,c,d,f){c=c||CKEDITOR.config.wsc_cmd;d=d||a.dataTemp;e.postMessage.send({message:{customerId:a.wsc_customerId,\ntext:d,txt_ctrl:a.TextAreaNumber,cmd:c,cust_dic_ids:a.cust_dic_ids,udn:a.userDictionaryName,slang:a.selectingLang,reset_suggest:f||!1},target:b,id:\"data_outer__page\"});a.div_overlay.setEnable()},w={superset:function(){a.dialog.showPage(\"Thesaurus\");a.dialog.showPage(\"GrammTab\");o()},usual:function(){t();m();o()},rtl:function(){t();m();o()}},F=function(b){var c=new function(a){var b={};return{getCmdByTab:function(c){for(var e in a)b[a[e]]=e;return b[c]}}}(a.cmd);b.selectPage(c.getCmdByTab(CKEDITOR.config.wsc_cmd));\na.sendData(b)},t=function(){a.dialog.hidePage(\"Thesaurus\")},m=function(){a.dialog.hidePage(\"GrammTab\")},o=function(){a.dialog.showPage(\"SpellTab\")},l=function(){var b=a.dialog.getContentElement(a.dialog._.currentTabId,\"bottomGroup\").getElement();b.removeStyle(\"display\");b.removeStyle(\"position\");b.removeStyle(\"left\");b.show()},D=function(){var b=a.dialog.getContentElement(a.dialog._.currentTabId,\"bottomGroup\").getElement(),c=document.activeElement,d;b.setStyles({display:\"block\",position:\"absolute\",\nleft:\"-9999px\"});setTimeout(function(){b.removeStyle(\"display\");b.removeStyle(\"position\");b.removeStyle(\"left\");b.hide();a.dialog._.editor.focusManager.currentActive.focusNext();d=e.misc.findFocusable(a.dialog.parts.contents);if(!e.misc.hasClass(c,\"cke_dialog_tab\")&&!e.misc.hasClass(c,\"cke_dialog_contents_body\")&&e.misc.isVisible(c))try{c.focus()}catch(f){}else for(var g=0,h;g<d.count();g++)if(h=d.getItem(g),e.misc.isVisible(h.$)){try{h.$.focus()}catch(i){}break}},0)},s=function(){var b=a.dialog.getContentElement(a.dialog._.currentTabId,\n\"BlockFinishChecking\").getElement(),c=document.activeElement,d;b.setStyles({display:\"block\",position:\"absolute\",left:\"-9999px\"});setTimeout(function(){b.removeStyle(\"display\");b.removeStyle(\"position\");b.removeStyle(\"left\");b.hide();a.dialog._.editor.focusManager.currentActive.focusNext();d=e.misc.findFocusable(a.dialog.parts.contents);if(!e.misc.hasClass(c,\"cke_dialog_tab\")&&!e.misc.hasClass(c,\"cke_dialog_contents_body\")&&e.misc.isVisible(c))try{c.focus()}catch(f){}else for(var g=0,h;g<d.count();g++)if(h=\nd.getItem(g),e.misc.isVisible(h.$)){try{h.$.focus()}catch(i){}break}},0)};CKEDITOR.dialog.add(\"checkspell\",function(b){var c=function(){this.getElement().focus();a.div_overlay.setEnable();var c=a.dialog._.currentTabId,f=a.iframeNumber+\"_\"+c,g=a.textNode[c].getValue(),h=this.getElement().getAttribute(\"title-cmd\");e.postMessage.send({message:{cmd:h,tabId:c,new_word:g},target:a.targetFromFrame[f],id:\"cmd_outer__page\"});(\"ChangeTo\"==h||\"ChangeAll\"==h)&&b.fire(\"saveSnapshot\");\"FinishChecking\"==h&&b.config.wsc_onFinish.call(CKEDITOR.document.getWindow().getFrame())};\nreturn{title:b.config.wsc_dialogTitle||b.lang.wsc.title,minWidth:560,minHeight:444,buttons:[CKEDITOR.dialog.cancelButton],onLoad:function(){a.dialog=this;t();m();o()},onShow:function(){b.lockSelection(b.getSelection());a.TextAreaNumber=\"cke_textarea_\"+CKEDITOR.currentInstance.name;e.postMessage.init(x);a.dataTemp=CKEDITOR.currentInstance.getData();a.OverlayPlace=a.dialog.parts.tabs.getParent().$;if(CKEDITOR&&CKEDITOR.config){a.wsc_customerId=b.config.wsc_customerId;a.cust_dic_ids=b.config.wsc_customDictionaryIds;\na.userDictionaryName=b.config.wsc_userDictionaryName;a.defaultLanguage=CKEDITOR.config.defaultLanguage;var c=\"file:\"==document.location.protocol?\"http:\":document.location.protocol;CKEDITOR.scriptLoader.load(b.config.wsc_customLoaderScript||c+\"//loader.webspellchecker.net/sproxy_fck/sproxy.php?plugin=fck2&customerid=\"+a.wsc_customerId+\"&cmd=script&doc=wsc&schema=22\",function(c){CKEDITOR.config&&CKEDITOR.config.wsc&&CKEDITOR.config.wsc.DefaultParams?(a.serverLocationHash=CKEDITOR.config.wsc.DefaultParams.serviceHost,\na.logotype=CKEDITOR.config.wsc.DefaultParams.logoPath,a.loadIcon=CKEDITOR.config.wsc.DefaultParams.iconPath,a.loadIconEmptyEditor=CKEDITOR.config.wsc.DefaultParams.iconPathEmptyEditor,a.LangComparer=new CKEDITOR.config.wsc.DefaultParams._SP_FCK_LangCompare):(a.serverLocationHash=DefaultParams.serviceHost,a.logotype=DefaultParams.logoPath,a.loadIcon=DefaultParams.iconPath,a.loadIconEmptyEditor=DefaultParams.iconPathEmptyEditor,a.LangComparer=new _SP_FCK_LangCompare);a.pluginPath=CKEDITOR.getUrl(b.plugins.wsc.path);\na.iframeNumber=a.TextAreaNumber;a.templatePath=a.pluginPath+\"dialogs/tmp.html\";a.LangComparer.setDefaulLangCode(a.defaultLanguage);a.currentLang=b.config.wsc_lang||a.LangComparer.getSPLangCode(b.langCode);a.selectingLang=a.currentLang;a.div_overlay=new r({opacity:\"1\",background:\"#fff url(\"+a.loadIcon+\") no-repeat 50% 50%\",target:a.OverlayPlace});var d=a.dialog.parts.tabs.getId(),d=CKEDITOR.document.getById(d);d.setStyle(\"width\",\"97%\");d.getElementsByTag(\"DIV\").count()||d.append(a.buildSelectLang(a.dialog.getParentEditor().name));\na.div_overlay_no_check=new r({opacity:\"1\",id:\"no_check_over\",background:\"#fff url(\"+a.loadIconEmptyEditor+\") no-repeat 50% 50%\",target:a.OverlayPlace});c&&(F(a.dialog),a.dialog.setupContent(a.dialog))})}else a.dialog.hide()},onHide:function(){var c=CKEDITOR.plugins.scayt,f=b.scayt;b.unlockSelection();c&&(f&&c.state[b.name]&&f.setMarkupPaused)&&f.setMarkupPaused(!1);a.dataTemp=\"\";e.postMessage.unbindHandler(x)},contents:[{id:\"SpellTab\",label:\"SpellChecker\",accessKey:\"S\",elements:[{type:\"html\",id:\"banner\",\nlabel:\"banner\",style:\"\",html:\"<div></div>\"},{type:\"html\",id:\"Content\",label:\"spellContent\",html:\"\",setup:function(b){var b=a.iframeNumber+\"_\"+b._.currentTabId,c=document.getElementById(b);a.targetFromFrame[b]=c.contentWindow}},{type:\"hbox\",id:\"bottomGroup\",style:\"width:560px; margin: 0 auto;\",widths:[\"50%\",\"50%\"],children:[{type:\"hbox\",id:\"leftCol\",align:\"left\",width:\"50%\",children:[{type:\"vbox\",id:\"rightCol1\",widths:[\"50%\",\"50%\"],children:[{type:\"text\",id:\"text\",label:a.LocalizationLabel.ChangeTo.text+\n\":\",labelLayout:\"horizontal\",labelStyle:\"font: 12px/25px arial, sans-serif;\",width:\"140px\",\"default\":\"\",onShow:function(){a.textNode.SpellTab=this;a.LocalizationLabel.ChangeTo.instance=this},onHide:function(){this.reset()}},{type:\"hbox\",id:\"rightCol\",align:\"right\",width:\"30%\",children:[{type:\"vbox\",id:\"rightCol_col__left\",children:[{type:\"text\",id:\"labelSuggestions\",label:a.LocalizationLabel.Suggestions.text+\":\",onShow:function(){a.LocalizationLabel.Suggestions.instance=this;this.getInputElement().setStyles({display:\"block\",\nposition:\"absolute\",left:\"-9999px\"})}},{type:\"html\",id:\"logo\",html:'<img width=\"99\" height=\"68\" border=\"0\" src=\"\" title=\"WebSpellChecker.net\" alt=\"WebSpellChecker.net\" style=\"display: inline-block;\">',setup:function(){this.getElement().$.src=a.logotype;this.getElement().getParent().setStyles({\"text-align\":\"left\"})}}]},{type:\"select\",id:\"list_of_suggestions\",labelStyle:\"font: 12px/25px arial, sans-serif;\",size:\"6\",inputStyle:\"width: 140px; height: auto;\",items:[[\"loading...\"]],onShow:function(){q=\nthis},onHide:function(){this.clear()},onChange:function(){a.textNode.SpellTab.setValue(this.getValue())}}]}]}]},{type:\"hbox\",id:\"rightCol\",align:\"right\",width:\"50%\",children:[{type:\"vbox\",id:\"rightCol_col__left\",widths:[\"50%\",\"50%\",\"50%\",\"50%\"],children:[{type:\"button\",id:\"ChangeTo\",label:a.LocalizationButton.ChangeTo.text,title:\"Change to\",style:\"width: 100%;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",this.id);a.LocalizationButton.ChangeTo.instance=this},onClick:c},{type:\"button\",\nid:\"ChangeAll\",label:a.LocalizationButton.ChangeAll.text,title:\"Change All\",style:\"width: 100%;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",this.id);a.LocalizationButton.ChangeAll.instance=this},onClick:c},{type:\"button\",id:\"AddWord\",label:a.LocalizationButton.AddWord.text,title:\"Add word\",style:\"width: 100%;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",this.id);a.LocalizationButton.AddWord.instance=this},onClick:c},{type:\"button\",id:\"FinishChecking\",label:a.LocalizationButton.FinishChecking.text,\ntitle:\"Finish Checking\",style:\"width: 100%;margin-top: 9px;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",this.id);a.LocalizationButton.FinishChecking.instance=this},onClick:c}]},{type:\"vbox\",id:\"rightCol_col__right\",widths:[\"50%\",\"50%\",\"50%\"],children:[{type:\"button\",id:\"IgnoreWord\",label:a.LocalizationButton.IgnoreWord.text,title:\"Ignore word\",style:\"width: 100%;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",this.id);a.LocalizationButton.IgnoreWord.instance=this},\nonClick:c},{type:\"button\",id:\"IgnoreAllWords\",label:a.LocalizationButton.IgnoreAllWords.text,title:\"Ignore all words\",style:\"width: 100%;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",this.id);a.LocalizationButton.IgnoreAllWords.instance=this},onClick:c},{type:\"button\",id:\"option\",label:a.LocalizationButton.Options.text,title:\"Option\",style:\"width: 100%;\",onLoad:function(){a.LocalizationButton.Options.instance=this;\"file:\"==document.location.protocol&&this.disable()},onClick:function(){this.getElement().focus();\n\"file:\"==document.location.protocol?alert(\"WSC: Options functionality is disabled when runing from file system\"):(p=document.activeElement,b.openDialog(\"options\"))}}]}]}]},{type:\"hbox\",id:\"BlockFinishChecking\",style:\"width:560px; margin: 0 auto;\",widths:[\"70%\",\"30%\"],onShow:function(){this.getElement().setStyles({display:\"block\",position:\"absolute\",left:\"-9999px\"})},onHide:l,children:[{type:\"hbox\",id:\"leftCol\",align:\"left\",width:\"70%\",children:[{type:\"vbox\",id:\"rightCol1\",setup:function(){this.getChild()[0].getElement().$.src=\na.logotype;this.getChild()[0].getElement().getParent().setStyles({\"text-align\":\"center\"})},children:[{type:\"html\",id:\"logo\",html:'<img width=\"99\" height=\"68\" border=\"0\" src=\"\" title=\"WebSpellChecker.net\" alt=\"WebSpellChecker.net\" style=\"display: inline-block;\">'}]}]},{type:\"hbox\",id:\"rightCol\",align:\"right\",width:\"30%\",children:[{type:\"vbox\",id:\"rightCol_col__left\",children:[{type:\"button\",id:\"Option_button\",label:a.LocalizationButton.Options.text,title:\"Option\",style:\"width: 100%;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",\nthis.id);\"file:\"==document.location.protocol&&this.disable()},onClick:function(){this.getElement().focus();\"file:\"==document.location.protocol?alert(\"WSC: Options functionality is disabled when runing from file system\"):(p=document.activeElement,b.openDialog(\"options\"))}},{type:\"button\",id:\"FinishChecking\",label:a.LocalizationButton.FinishChecking.text,title:\"Finish Checking\",style:\"width: 100%;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",this.id)},onClick:c}]}]}]}]},{id:\"GrammTab\",\nlabel:\"Grammar\",accessKey:\"G\",elements:[{type:\"html\",id:\"banner\",label:\"banner\",style:\"\",html:\"<div></div>\"},{type:\"html\",id:\"Content\",label:\"GrammarContent\",html:\"\",setup:function(){var b=a.iframeNumber+\"_\"+a.dialog._.currentTabId,c=document.getElementById(b);a.targetFromFrame[b]=c.contentWindow}},{type:\"vbox\",id:\"bottomGroup\",style:\"width:560px; margin: 0 auto;\",children:[{type:\"hbox\",id:\"leftCol\",widths:[\"66%\",\"34%\"],children:[{type:\"vbox\",children:[{type:\"text\",id:\"text\",label:\"Change to:\",labelLayout:\"horizontal\",\nlabelStyle:\"font: 12px/25px arial, sans-serif;\",inputStyle:\"float: right; width: 200px;\",\"default\":\"\",onShow:function(){a.textNode.GrammTab=this},onHide:function(){this.reset()}},{type:\"html\",id:\"html_text\",html:\"<div style='min-height: 17px; line-height: 17px; padding: 5px; text-align: left;background: #F1F1F1;color: #595959; white-space: normal!important;'></div>\",onShow:function(){a.textNodeInfo.GrammTab=this}},{type:\"html\",id:\"radio\",html:\"\",onShow:function(){a.grammerSuggest=this}}]},{type:\"vbox\",\nchildren:[{type:\"button\",id:\"ChangeTo\",label:\"Change to\",title:\"Change to\",style:\"width: 133px; float: right;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",this.id)},onClick:c},{type:\"button\",id:\"IgnoreWord\",label:\"Ignore word\",title:\"Ignore word\",style:\"width: 133px; float: right;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",this.id)},onClick:c},{type:\"button\",id:\"IgnoreAllWords\",label:\"Ignore Problem\",title:\"Ignore Problem\",style:\"width: 133px; float: right;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",\nthis.id)},onClick:c},{type:\"button\",id:\"FinishChecking\",label:\"Finish Checking\",title:\"Finish Checking\",style:\"width: 133px; float: right; margin-top: 9px;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",this.id)},onClick:c}]}]}]},{type:\"hbox\",id:\"BlockFinishChecking\",style:\"width:560px; margin: 0 auto;\",widths:[\"70%\",\"30%\"],onShow:function(){this.getElement().setStyles({display:\"block\",position:\"absolute\",left:\"-9999px\"})},onHide:l,children:[{type:\"hbox\",id:\"leftCol\",align:\"left\",width:\"70%\",\nchildren:[{type:\"vbox\",id:\"rightCol1\",children:[{type:\"html\",id:\"logo\",html:'<img width=\"99\" height=\"68\" border=\"0\" src=\"\" title=\"WebSpellChecker.net\" alt=\"WebSpellChecker.net\" style=\"display: inline-block;\">',setup:function(){this.getElement().$.src=a.logotype;this.getElement().getParent().setStyles({\"text-align\":\"center\"})}}]}]},{type:\"hbox\",id:\"rightCol\",align:\"right\",width:\"30%\",children:[{type:\"vbox\",id:\"rightCol_col__left\",children:[{type:\"button\",id:\"FinishChecking\",label:\"Finish Checking\",\ntitle:\"Finish Checking\",style:\"width: 100%;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",this.id)},onClick:c}]}]}]}]},{id:\"Thesaurus\",label:\"Thesaurus\",accessKey:\"T\",elements:[{type:\"html\",id:\"banner\",label:\"banner\",style:\"\",html:\"<div></div>\"},{type:\"html\",id:\"Content\",label:\"spellContent\",html:\"\",setup:function(){var b=a.iframeNumber+\"_\"+a.dialog._.currentTabId,c=document.getElementById(b);a.targetFromFrame[b]=c.contentWindow}},{type:\"vbox\",id:\"bottomGroup\",style:\"width:560px; margin: -10px auto; overflow: hidden;\",\nchildren:[{type:\"hbox\",widths:[\"75%\",\"25%\"],children:[{type:\"vbox\",children:[{type:\"hbox\",widths:[\"65%\",\"35%\"],children:[{type:\"text\",id:\"ChangeTo\",label:\"Change to:\",labelLayout:\"horizontal\",inputStyle:\"width: 160px;\",labelStyle:\"font: 12px/25px arial, sans-serif;\",\"default\":\"\",onShow:function(){a.textNode.Thesaurus=this},onHide:function(){this.reset()}},{type:\"button\",id:\"ChangeTo\",label:\"Change to\",title:\"Change to\",style:\"width: 121px; margin-top: 1px;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",\nthis.id)},onClick:c}]},{type:\"hbox\",children:[{type:\"select\",id:\"categories\",label:\"Categories:\",labelStyle:\"font: 12px/25px arial, sans-serif;\",size:\"5\",inputStyle:\"width: 180px; height: auto;\",items:[],onShow:function(){a.selectNode.categories=this},onHide:function(){this.clear()},onChange:function(){a.buildOptionSynonyms(this.getValue())}},{type:\"select\",id:\"synonyms\",label:\"Synonyms:\",labelStyle:\"font: 12px/25px arial, sans-serif;\",size:\"5\",inputStyle:\"width: 180px; height: auto;\",items:[],onShow:function(){a.selectNode.synonyms=\nthis;a.textNode.Thesaurus.setValue(this.getValue())},onHide:function(){this.clear()},onChange:function(){a.textNode.Thesaurus.setValue(this.getValue())}}]}]},{type:\"vbox\",width:\"120px\",style:\"margin-top:46px;\",children:[{type:\"html\",id:\"logotype\",label:\"WebSpellChecker.net\",html:'<img width=\"99\" height=\"68\" border=\"0\" src=\"\" title=\"WebSpellChecker.net\" alt=\"WebSpellChecker.net\" style=\"display: inline-block;\">',setup:function(){this.getElement().$.src=a.logotype;this.getElement().getParent().setStyles({\"text-align\":\"center\"})}},\n{type:\"button\",id:\"FinishChecking\",label:\"Finish Checking\",title:\"Finish Checking\",style:\"width: 121px; float: right; margin-top: 9px;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",this.id)},onClick:c}]}]}]},{type:\"hbox\",id:\"BlockFinishChecking\",style:\"width:560px; margin: 0 auto;\",widths:[\"70%\",\"30%\"],onShow:function(){this.getElement().setStyles({display:\"block\",position:\"absolute\",left:\"-9999px\"})},children:[{type:\"hbox\",id:\"leftCol\",align:\"left\",width:\"70%\",children:[{type:\"vbox\",\nid:\"rightCol1\",children:[{type:\"html\",id:\"logo\",html:'<img width=\"99\" height=\"68\" border=\"0\" src=\"\" title=\"WebSpellChecker.net\" alt=\"WebSpellChecker.net\" style=\"display: inline-block;\">',setup:function(){this.getElement().$.src=a.logotype;this.getElement().getParent().setStyles({\"text-align\":\"center\"})}}]}]},{type:\"hbox\",id:\"rightCol\",align:\"right\",width:\"30%\",children:[{type:\"vbox\",id:\"rightCol_col__left\",children:[{type:\"button\",id:\"FinishChecking\",label:\"Finish Checking\",title:\"Finish Checking\",\nstyle:\"width: 100%;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",this.id)},onClick:c}]}]}]}]}]}});var p=null;CKEDITOR.dialog.add(\"options\",function(){var b=null,c={},d={},f=null,g=null;e.cookie.get(\"udn\");e.cookie.get(\"osp\");var h=function(){g=this.getElement().getAttribute(\"title-cmd\");var a=[];a[0]=d.IgnoreAllCapsWords;a[1]=d.IgnoreWordsNumbers;a[2]=d.IgnoreMixedCaseWords;a[3]=d.IgnoreDomainNames;a=a.toString().replace(/,/g,\"\");e.cookie.set(\"osp\",a);e.cookie.set(\"udnCmd\",g?g:\"ignore\");\n\"delete\"!=g&&(a=\"\",\"\"!==j.getValue()&&(a=j.getValue()),e.cookie.set(\"udn\",a));e.postMessage.send({id:\"options_dic_send\"})},i=function(){f.getElement().setHtml(a.LocalizationComing.error);f.getElement().show()};return{title:a.LocalizationComing.Options,minWidth:430,minHeight:130,resizable:CKEDITOR.DIALOG_RESIZE_NONE,contents:[{id:\"OptionsTab\",label:\"Options\",accessKey:\"O\",elements:[{type:\"hbox\",id:\"options_error\",children:[{type:\"html\",style:\"display: block;text-align: center;white-space: normal!important; font-size: 12px;color:red\",\nhtml:\"<div></div>\",onShow:function(){f=this}}]},{type:\"vbox\",id:\"Options_content\",children:[{type:\"hbox\",id:\"Options_manager\",widths:[\"52%\",\"48%\"],children:[{type:\"fieldset\",label:\"Spell Checking Options\",style:\"border: none;margin-top: 13px;padding: 10px 0 10px 10px\",onShow:function(){this.getInputElement().$.children[0].innerHTML=a.LocalizationComing.SpellCheckingOptions},children:[{type:\"vbox\",id:\"Options_checkbox\",children:[{type:\"checkbox\",id:\"IgnoreAllCapsWords\",label:\"Ignore All-Caps Words\",\nlabelStyle:\"margin-left: 5px; font: 12px/16px arial, sans-serif;display: inline-block;white-space: normal;\",style:\"float:left; min-height: 16px;\",\"default\":\"\",onClick:function(){d[this.id]=!this.getValue()?0:1}},{type:\"checkbox\",id:\"IgnoreWordsNumbers\",label:\"Ignore Words with Numbers\",labelStyle:\"margin-left: 5px; font: 12px/16px arial, sans-serif;display: inline-block;white-space: normal;\",style:\"float:left; min-height: 16px;\",\"default\":\"\",onClick:function(){d[this.id]=!this.getValue()?0:1}},{type:\"checkbox\",\nid:\"IgnoreMixedCaseWords\",label:\"Ignore Mixed-Case Words\",labelStyle:\"margin-left: 5px; font: 12px/16px arial, sans-serif;display: inline-block;white-space: normal;\",style:\"float:left; min-height: 16px;\",\"default\":\"\",onClick:function(){d[this.id]=!this.getValue()?0:1}},{type:\"checkbox\",id:\"IgnoreDomainNames\",label:\"Ignore Domain Names\",labelStyle:\"margin-left: 5px; font: 12px/16px arial, sans-serif;display: inline-block;white-space: normal;\",style:\"float:left; min-height: 16px;\",\"default\":\"\",onClick:function(){d[this.id]=\n!this.getValue()?0:1}}]}]},{type:\"vbox\",id:\"Options_DictionaryName\",children:[{type:\"text\",id:\"DictionaryName\",style:\"margin-bottom: 10px\",label:\"Dictionary Name:\",labelLayout:\"vertical\",labelStyle:\"font: 12px/25px arial, sans-serif;\",\"default\":\"\",onLoad:function(){j=this;this.setValue(a.userDictionaryName?a.userDictionaryName:(e.cookie.get(\"udn\"),this.getValue()))},onShow:function(){j=this;this.setValue(!e.cookie.get(\"udn\")?this.getValue():e.cookie.get(\"udn\"));this.setLabel(a.LocalizationComing.DictionaryName)},\nonHide:function(){this.reset()}},{type:\"hbox\",id:\"Options_buttons\",children:[{type:\"vbox\",id:\"Options_leftCol_col\",widths:[\"50%\",\"50%\"],children:[{type:\"button\",id:\"create\",label:\"Create\",title:\"Create\",style:\"width: 100%;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",this.id)},onShow:function(){(this.getElement().getFirst()||this.getElement()).setText(a.LocalizationComing.Create)},onClick:h},{type:\"button\",id:\"restore\",label:\"Restore\",title:\"Restore\",style:\"width: 100%;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",\nthis.id)},onShow:function(){(this.getElement().getFirst()||this.getElement()).setText(a.LocalizationComing.Restore)},onClick:h}]},{type:\"vbox\",id:\"Options_rightCol_col\",widths:[\"50%\",\"50%\"],children:[{type:\"button\",id:\"rename\",label:\"Rename\",title:\"Rename\",style:\"width: 100%;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",this.id)},onShow:function(){(this.getElement().getFirst()||this.getElement()).setText(a.LocalizationComing.Rename)},onClick:h},{type:\"button\",id:\"delete\",label:\"Remove\",\ntitle:\"Remove\",style:\"width: 100%;\",onLoad:function(){this.getElement().setAttribute(\"title-cmd\",this.id)},onShow:function(){(this.getElement().getFirst()||this.getElement()).setText(a.LocalizationComing.Remove)},onClick:h}]}]}]}]},{type:\"hbox\",id:\"Options_text\",children:[{type:\"html\",style:\"text-align: justify;margin-top: 15px;white-space: normal!important; font-size: 12px;color:#777;\",html:\"<div>\"+a.LocalizationComing.OptionsTextIntro+\"</div>\",onShow:function(){this.getElement().setText(a.LocalizationComing.OptionsTextIntro)}}]}]}]}],\nbuttons:[CKEDITOR.dialog.okButton,CKEDITOR.dialog.cancelButton],onOk:function(){var a=[];a[0]=d.IgnoreAllCapsWords;a[1]=d.IgnoreWordsNumbers;a[2]=d.IgnoreMixedCaseWords;a[3]=d.IgnoreDomainNames;a=a.toString().replace(/,/g,\"\");e.cookie.set(\"osp\",a);e.cookie.set(\"udn\",j.getValue());e.postMessage.send({id:\"options_checkbox_send\"});f.getElement().hide();f.getElement().setHtml(\" \")},onLoad:function(){b=this;c.IgnoreAllCapsWords=b.getContentElement(\"OptionsTab\",\"IgnoreAllCapsWords\");c.IgnoreWordsNumbers=\nb.getContentElement(\"OptionsTab\",\"IgnoreWordsNumbers\");c.IgnoreMixedCaseWords=b.getContentElement(\"OptionsTab\",\"IgnoreMixedCaseWords\");c.IgnoreDomainNames=b.getContentElement(\"OptionsTab\",\"IgnoreDomainNames\")},onShow:function(){e.postMessage.init(i);var b=e.cookie.get(\"osp\").split(\"\");d.IgnoreAllCapsWords=b[0];d.IgnoreWordsNumbers=b[1];d.IgnoreMixedCaseWords=b[2];d.IgnoreDomainNames=b[3];!parseInt(d.IgnoreAllCapsWords,10)?c.IgnoreAllCapsWords.setValue(\"\",!1):c.IgnoreAllCapsWords.setValue(\"checked\",\n!1);!parseInt(d.IgnoreWordsNumbers,10)?c.IgnoreWordsNumbers.setValue(\"\",!1):c.IgnoreWordsNumbers.setValue(\"checked\",!1);!parseInt(d.IgnoreMixedCaseWords,10)?c.IgnoreMixedCaseWords.setValue(\"\",!1):c.IgnoreMixedCaseWords.setValue(\"checked\",!1);!parseInt(d.IgnoreDomainNames,10)?c.IgnoreDomainNames.setValue(\"\",!1):c.IgnoreDomainNames.setValue(\"checked\",!1);d.IgnoreAllCapsWords=!c.IgnoreAllCapsWords.getValue()?0:1;d.IgnoreWordsNumbers=!c.IgnoreWordsNumbers.getValue()?0:1;d.IgnoreMixedCaseWords=!c.IgnoreMixedCaseWords.getValue()?\n0:1;d.IgnoreDomainNames=!c.IgnoreDomainNames.getValue()?0:1;c.IgnoreAllCapsWords.getElement().$.lastChild.innerHTML=a.LocalizationComing.IgnoreAllCapsWords;c.IgnoreWordsNumbers.getElement().$.lastChild.innerHTML=a.LocalizationComing.IgnoreWordsWithNumbers;c.IgnoreMixedCaseWords.getElement().$.lastChild.innerHTML=a.LocalizationComing.IgnoreMixedCaseWords;c.IgnoreDomainNames.getElement().$.lastChild.innerHTML=a.LocalizationComing.IgnoreDomainNames},onHide:function(){e.postMessage.unbindHandler(i);if(p)try{p.focus()}catch(a){}}}});\nCKEDITOR.dialog.on(\"resize\",function(b){var b=b.data,c=b.dialog,d=CKEDITOR.document.getById(a.iframeNumber+\"_\"+c._.currentTabId);\"checkspell\"==c._.name&&(a.bnr?d&&d.setSize(\"height\",b.height-310):d&&d.setSize(\"height\",b.height-220))});CKEDITOR.on(\"dialogDefinition\",function(b){if(\"checkspell\"===b.data.name){var c=b.data.definition;a.onLoadOverlay=new r({opacity:\"1\",background:\"#fff\",target:c.dialog.parts.tabs.getParent().$});a.onLoadOverlay.setEnable();c.dialog.on(\"cancel\",function(){c.dialog.getParentEditor().config.wsc_onClose.call(this.document.getWindow().getFrame());\na.div_overlay.setDisable();a.onLoadOverlay.setDisable();return!1},this,null,-1)}})})();"
  },
  {
    "path": "admin/js/plugins/ckeditor/plugins/wsc/dialogs/wsc_ie.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.html or http://ckeditor.com/license\n*/\nCKEDITOR.dialog.add(\"checkspell\",function(a){function c(a,c){var d=0;return function(){\"function\"==typeof window.doSpell?(\"undefined\"!=typeof e&&window.clearInterval(e),j(a)):180==d++&&window._cancelOnError(c)}}function j(c){var f=new window._SP_FCK_LangCompare,b=CKEDITOR.getUrl(a.plugins.wsc.path+\"dialogs/\"),e=b+\"tmpFrameset.html\";window.gFCKPluginName=\"wsc\";f.setDefaulLangCode(a.config.defaultLanguage);window.doSpell({ctrl:g,lang:a.config.wsc_lang||f.getSPLangCode(a.langCode),intLang:a.config.wsc_uiLang||\nf.getSPLangCode(a.langCode),winType:d,onCancel:function(){c.hide()},onFinish:function(b){a.focus();c.getParentEditor().setData(b.value);c.hide()},staticFrame:e,framesetPath:e,iframePath:b+\"ciframe.html\",schemaURI:b+\"wsc.css\",userDictionaryName:a.config.wsc_userDictionaryName,customDictionaryName:a.config.wsc_customDictionaryIds&&a.config.wsc_customDictionaryIds.split(\",\"),domainName:a.config.wsc_domainName});CKEDITOR.document.getById(h).setStyle(\"display\",\"none\");CKEDITOR.document.getById(d).setStyle(\"display\",\n\"block\")}var b=CKEDITOR.tools.getNextNumber(),d=\"cke_frame_\"+b,g=\"cke_data_\"+b,h=\"cke_error_\"+b,e,b=document.location.protocol||\"http:\",i=a.lang.wsc.notAvailable,k='<textarea style=\"display: none\" id=\"'+g+'\" rows=\"10\" cols=\"40\"> </textarea><div id=\"'+h+'\" style=\"display:none;color:red;font-size:16px;font-weight:bold;padding-top:160px;text-align:center;z-index:11;\"></div><iframe src=\"\" style=\"width:100%;background-color:#f1f1e3;\" frameborder=\"0\" name=\"'+d+'\" id=\"'+d+'\" allowtransparency=\"1\"></iframe>',\nl=a.config.wsc_customLoaderScript||b+\"//loader.webspellchecker.net/sproxy_fck/sproxy.php?plugin=fck2&customerid=\"+a.config.wsc_customerId+\"&cmd=script&doc=wsc&schema=22\";a.config.wsc_customLoaderScript&&(i+='<p style=\"color:#000;font-size:11px;font-weight: normal;text-align:center;padding-top:10px\">'+a.lang.wsc.errorLoading.replace(/%s/g,a.config.wsc_customLoaderScript)+\"</p>\");window._cancelOnError=function(c){if(\"undefined\"==typeof window.WSC_Error){CKEDITOR.document.getById(d).setStyle(\"display\",\n\"none\");var b=CKEDITOR.document.getById(h);b.setStyle(\"display\",\"block\");b.setHtml(c||a.lang.wsc.notAvailable)}};return{title:a.config.wsc_dialogTitle||a.lang.wsc.title,minWidth:485,minHeight:380,buttons:[CKEDITOR.dialog.cancelButton],onShow:function(){var b=this.getContentElement(\"general\",\"content\").getElement();b.setHtml(k);b.getChild(2).setStyle(\"height\",this._.contentSize.height+\"px\");\"function\"!=typeof window.doSpell&&CKEDITOR.document.getHead().append(CKEDITOR.document.createElement(\"script\",\n{attributes:{type:\"text/javascript\",src:l}}));b=a.getData();CKEDITOR.document.getById(g).setValue(b);e=window.setInterval(c(this,i),250)},onHide:function(){window.ooo=void 0;window.int_framsetLoaded=void 0;window.framesetLoaded=void 0;window.is_window_opened=!1},contents:[{id:\"general\",label:a.config.wsc_dialogTitle||a.lang.wsc.title,padding:0,elements:[{type:\"html\",id:\"content\",html:\"\"}]}]}});\nCKEDITOR.dialog.on(\"resize\",function(a){var a=a.data,c=a.dialog;\"checkspell\"==c._.name&&((c=(c=c.getContentElement(\"general\",\"content\").getElement())&&c.getChild(2))&&c.setSize(\"height\",a.height),c&&c.setSize(\"width\",a.width))});"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/ajax.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>Ajax &mdash; CKEditor Sample</title>\r\n\t<script src=\"../ckeditor.js\"></script>\r\n\t<link rel=\"stylesheet\" href=\"sample.css\">\r\n\t<script>\r\n\r\n\t\tvar editor, html = '';\r\n\r\n\t\tfunction createEditor() {\r\n\t\t\tif ( editor )\r\n\t\t\t\treturn;\r\n\r\n\t\t\t// Create a new editor inside the <div id=\"editor\">, setting its value to html\r\n\t\t\tvar config = {};\r\n\t\t\teditor = CKEDITOR.appendTo( 'editor', config, html );\r\n\t\t}\r\n\r\n\t\tfunction removeEditor() {\r\n\t\t\tif ( !editor )\r\n\t\t\t\treturn;\r\n\r\n\t\t\t// Retrieve the editor contents. In an Ajax application, this data would be\r\n\t\t\t// sent to the server or used in any other way.\r\n\t\t\tdocument.getElementById( 'editorcontents' ).innerHTML = html = editor.getData();\r\n\t\t\tdocument.getElementById( 'contents' ).style.display = '';\r\n\r\n\t\t\t// Destroy the editor.\r\n\t\t\teditor.destroy();\r\n\t\t\teditor = null;\r\n\t\t}\r\n\r\n\t</script>\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"index.html\">CKEditor Samples</a> &raquo; Create and Destroy Editor Instances for Ajax Applications\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tThis sample shows how to create and destroy CKEditor instances on the fly. After the removal of CKEditor the content created inside the editing\r\n\t\t\tarea will be displayed in a <code>&lt;div&gt;</code> element.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tFor details of how to create this setup check the source code of this sample page\r\n\t\t\tfor JavaScript code responsible for the creation and destruction of a CKEditor instance.\r\n\t\t</p>\r\n\t</div>\r\n\t<p>Click the buttons to create and remove a CKEditor instance.</p>\r\n\t<p>\r\n\t\t<input onclick=\"createEditor();\" type=\"button\" value=\"Create Editor\">\r\n\t\t<input onclick=\"removeEditor();\" type=\"button\" value=\"Remove Editor\">\r\n\t</p>\r\n\t<!-- This div will hold the editor. -->\r\n\t<div id=\"editor\">\r\n\t</div>\r\n\t<div id=\"contents\" style=\"display: none\">\r\n\t\t<p>\r\n\t\t\tEdited Contents:\r\n\t\t</p>\r\n\t\t<!-- This div will be used to display the editor contents. -->\r\n\t\t<div id=\"editorcontents\">\r\n\t\t</div>\r\n\t</div>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/api.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>API Usage &mdash; CKEditor Sample</title>\r\n\t<script src=\"../ckeditor.js\"></script>\r\n\t<link href=\"sample.css\" rel=\"stylesheet\">\r\n\t<script>\r\n\r\n// The instanceReady event is fired, when an instance of CKEditor has finished\r\n// its initialization.\r\nCKEDITOR.on( 'instanceReady', function( ev ) {\r\n\t// Show the editor name and description in the browser status bar.\r\n\tdocument.getElementById( 'eMessage' ).innerHTML = 'Instance <code>' + ev.editor.name + '<\\/code> loaded.';\r\n\r\n\t// Show this sample buttons.\r\n\tdocument.getElementById( 'eButtons' ).style.display = 'block';\r\n});\r\n\r\nfunction InsertHTML() {\r\n\t// Get the editor instance that we want to interact with.\r\n\tvar editor = CKEDITOR.instances.editor1;\r\n\tvar value = document.getElementById( 'htmlArea' ).value;\r\n\r\n\t// Check the active editing mode.\r\n\tif ( editor.mode == 'wysiwyg' )\r\n\t{\r\n\t\t// Insert HTML code.\r\n\t\t// http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertHtml\r\n\t\teditor.insertHtml( value );\r\n\t}\r\n\telse\r\n\t\talert( 'You must be in WYSIWYG mode!' );\r\n}\r\n\r\nfunction InsertText() {\r\n\t// Get the editor instance that we want to interact with.\r\n\tvar editor = CKEDITOR.instances.editor1;\r\n\tvar value = document.getElementById( 'txtArea' ).value;\r\n\r\n\t// Check the active editing mode.\r\n\tif ( editor.mode == 'wysiwyg' )\r\n\t{\r\n\t\t// Insert as plain text.\r\n\t\t// http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-insertText\r\n\t\teditor.insertText( value );\r\n\t}\r\n\telse\r\n\t\talert( 'You must be in WYSIWYG mode!' );\r\n}\r\n\r\nfunction SetContents() {\r\n\t// Get the editor instance that we want to interact with.\r\n\tvar editor = CKEDITOR.instances.editor1;\r\n\tvar value = document.getElementById( 'htmlArea' ).value;\r\n\r\n\t// Set editor contents (replace current contents).\r\n\t// http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setData\r\n\teditor.setData( value );\r\n}\r\n\r\nfunction GetContents() {\r\n\t// Get the editor instance that you want to interact with.\r\n\tvar editor = CKEDITOR.instances.editor1;\r\n\r\n\t// Get editor contents\r\n\t// http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-getData\r\n\talert( editor.getData() );\r\n}\r\n\r\nfunction ExecuteCommand( commandName ) {\r\n\t// Get the editor instance that we want to interact with.\r\n\tvar editor = CKEDITOR.instances.editor1;\r\n\r\n\t// Check the active editing mode.\r\n\tif ( editor.mode == 'wysiwyg' )\r\n\t{\r\n\t\t// Execute the command.\r\n\t\t// http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-execCommand\r\n\t\teditor.execCommand( commandName );\r\n\t}\r\n\telse\r\n\t\talert( 'You must be in WYSIWYG mode!' );\r\n}\r\n\r\nfunction CheckDirty() {\r\n\t// Get the editor instance that we want to interact with.\r\n\tvar editor = CKEDITOR.instances.editor1;\r\n\t// Checks whether the current editor contents present changes when compared\r\n\t// to the contents loaded into the editor at startup\r\n\t// http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-checkDirty\r\n\talert( editor.checkDirty() );\r\n}\r\n\r\nfunction ResetDirty() {\r\n\t// Get the editor instance that we want to interact with.\r\n\tvar editor = CKEDITOR.instances.editor1;\r\n\t// Resets the \"dirty state\" of the editor (see CheckDirty())\r\n\t// http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-resetDirty\r\n\teditor.resetDirty();\r\n\talert( 'The \"IsDirty\" status has been reset' );\r\n}\r\n\r\nfunction Focus() {\r\n\tCKEDITOR.instances.editor1.focus();\r\n}\r\n\r\nfunction onFocus() {\r\n\tdocument.getElementById( 'eMessage' ).innerHTML = '<b>' + this.name + ' is focused </b>';\r\n}\r\n\r\nfunction onBlur() {\r\n\tdocument.getElementById( 'eMessage' ).innerHTML = this.name + ' lost focus';\r\n}\r\n\r\n\t</script>\r\n\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"index.html\">CKEditor Samples</a> &raquo; Using CKEditor JavaScript API\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t<p>\r\n\t\tThis sample shows how to use the\r\n\t\t<a class=\"samples\" href=\"http://docs.ckeditor.com/#!/api/CKEDITOR.editor\">CKEditor JavaScript API</a>\r\n\t\tto interact with the editor at runtime.\r\n\t</p>\r\n\t<p>\r\n\t\tFor details on how to create this setup check the source code of this sample page.\r\n\t</p>\r\n\t</div>\r\n\r\n\t<!-- This <div> holds alert messages to be display in the sample page. -->\r\n\t<div id=\"alerts\">\r\n\t\t<noscript>\r\n\t\t\t<p>\r\n\t\t\t\t<strong>CKEditor requires JavaScript to run</strong>. In a browser with no JavaScript\r\n\t\t\t\tsupport, like yours, you should still see the contents (HTML data) and you should\r\n\t\t\t\tbe able to edit it normally, without a rich editor interface.\r\n\t\t\t</p>\r\n\t\t</noscript>\r\n\t</div>\r\n\t<form action=\"../../../samples/sample_posteddata.php\" method=\"post\">\r\n\t\t<textarea cols=\"100\" id=\"editor1\" name=\"editor1\" rows=\"10\">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href=\"http://ckeditor.com/\"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>\r\n\r\n\t\t<script>\r\n\t\t\t// Replace the <textarea id=\"editor1\"> with an CKEditor instance.\r\n\t\t\tCKEDITOR.replace( 'editor1', {\r\n\t\t\t\ton: {\r\n\t\t\t\t\tfocus: onFocus,\r\n\t\t\t\t\tblur: onBlur,\r\n\r\n\t\t\t\t\t// Check for availability of corresponding plugins.\r\n\t\t\t\t\tpluginsLoaded: function( evt ) {\r\n\t\t\t\t\t\tvar doc = CKEDITOR.document, ed = evt.editor;\r\n\t\t\t\t\t\tif ( !ed.getCommand( 'bold' ) )\r\n\t\t\t\t\t\t\tdoc.getById( 'exec-bold' ).hide();\r\n\t\t\t\t\t\tif ( !ed.getCommand( 'link' ) )\r\n\t\t\t\t\t\t\tdoc.getById( 'exec-link' ).hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t</script>\r\n\r\n\t\t<p id=\"eMessage\">\r\n\t\t</p>\r\n\r\n\t\t<div id=\"eButtons\" style=\"display: none\">\r\n\t\t\t<input id=\"exec-bold\" onclick=\"ExecuteCommand('bold');\" type=\"button\" value=\"Execute &quot;bold&quot; Command\">\r\n\t\t\t<input id=\"exec-link\" onclick=\"ExecuteCommand('link');\" type=\"button\" value=\"Execute &quot;link&quot; Command\">\r\n\t\t\t<input onclick=\"Focus();\" type=\"button\" value=\"Focus\">\r\n\t\t\t<br><br>\r\n\t\t\t<input onclick=\"InsertHTML();\" type=\"button\" value=\"Insert HTML\">\r\n\t\t\t<input onclick=\"SetContents();\" type=\"button\" value=\"Set Editor Contents\">\r\n\t\t\t<input onclick=\"GetContents();\" type=\"button\" value=\"Get Editor Contents (HTML)\">\r\n\t\t\t<br>\r\n\t\t\t<textarea cols=\"100\" id=\"htmlArea\" rows=\"3\">&lt;h2&gt;Test&lt;/h2&gt;&lt;p&gt;This is some &lt;a href=\"/Test1.html\"&gt;sample&lt;/a&gt; HTML code.&lt;/p&gt;</textarea>\r\n\t\t\t<br>\r\n\t\t\t<br>\r\n\t\t\t<input onclick=\"InsertText();\" type=\"button\" value=\"Insert Text\">\r\n\t\t\t<br>\r\n\t\t\t<textarea cols=\"100\" id=\"txtArea\" rows=\"3\">   First line with some leading whitespaces.\r\n\r\nSecond line of text preceded by two line breaks.</textarea>\r\n\t\t\t<br>\r\n\t\t\t<br>\r\n\t\t\t<input onclick=\"CheckDirty();\" type=\"button\" value=\"checkDirty()\">\r\n\t\t\t<input onclick=\"ResetDirty();\" type=\"button\" value=\"resetDirty()\">\r\n\t\t</div>\r\n\t</form>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/appendto.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>CKEDITOR.appendTo &mdash; CKEditor Sample</title>\r\n\t<script src=\"../ckeditor.js\"></script>\r\n\t<link rel=\"stylesheet\" href=\"sample.css\">\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"index.html\">CKEditor Samples</a> &raquo; Append To Page Element Using JavaScript Code\r\n\t</h1>\r\n\t<div id=\"section1\">\r\n\t\t<div class=\"description\">\r\n\t\t\t<p>\r\n\t\t\t\t<code>CKEDITOR.appendTo</code> is basically to place editors\r\n\t\t\t\tinside existing DOM elements. Unlike <code>CKEDITOR.replace</code>,\r\n\t\t\t\ta target container to be replaced is no longer necessary. A new editor\r\n\t\t\t\tinstance is inserted directly wherever it is desired.\r\n\t\t\t</p>\r\n<pre class=\"samples\">CKEDITOR.appendTo( '<em>container_id</em>',\r\n\t{ /* Configuration options to be used. */ }\r\n\t'Editor content to be used.'\r\n);</pre>\r\n\t\t</div>\r\n\t\t<script>\r\n\r\n\t\t\t// This call can be placed at any point after the\r\n\t\t\t// <textarea>, or inside a <head><script> in a\r\n\t\t\t// window.onload event handler.\r\n\r\n\t\t\t// Replace the <textarea id=\"editor\"> with an CKEditor\r\n\t\t\t// instance, using default configurations.\r\n\t\t\tCKEDITOR.appendTo( 'section1',\r\n\t\t\t\tnull,\r\n\t\t\t\t'<p>This is some <strong>sample text</strong>. You are using <a href=\"http://ckeditor.com/\">CKEditor</a>.</p>'\r\n\t\t\t);\r\n\r\n\t\t</script>\r\n\t</div>\r\n\t<br>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/assets/outputxhtml/outputxhtml.css",
    "content": "/*\r\n * Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\n * For licensing, see LICENSE.md or http://ckeditor.com/license\r\n *\r\n * Styles used by the XHTML 1.1 sample page (xhtml.html).\r\n */\r\n\r\n/**\r\n * Basic definitions for the editing area.\r\n */\r\nbody\r\n{\r\n\tfont-family: Arial, Verdana, sans-serif;\r\n\tfont-size: 80%;\r\n\tcolor: #000000;\r\n\tbackground-color: #ffffff;\r\n\tpadding: 5px;\r\n\tmargin: 0px;\r\n}\r\n\r\n/**\r\n * Core styles.\r\n */\r\n\r\n.Bold\r\n{\r\n\tfont-weight: bold;\r\n}\r\n\r\n.Italic\r\n{\r\n\tfont-style: italic;\r\n}\r\n\r\n.Underline\r\n{\r\n\ttext-decoration: underline;\r\n}\r\n\r\n.StrikeThrough\r\n{\r\n\ttext-decoration: line-through;\r\n}\r\n\r\n.Subscript\r\n{\r\n\tvertical-align: sub;\r\n\tfont-size: smaller;\r\n}\r\n\r\n.Superscript\r\n{\r\n\tvertical-align: super;\r\n\tfont-size: smaller;\r\n}\r\n\r\n/**\r\n * Font faces.\r\n */\r\n\r\n.FontComic\r\n{\r\n\tfont-family: 'Comic Sans MS';\r\n}\r\n\r\n.FontCourier\r\n{\r\n\tfont-family: 'Courier New';\r\n}\r\n\r\n.FontTimes\r\n{\r\n\tfont-family: 'Times New Roman';\r\n}\r\n\r\n/**\r\n * Font sizes.\r\n */\r\n\r\n.FontSmaller\r\n{\r\n\tfont-size: smaller;\r\n}\r\n\r\n.FontLarger\r\n{\r\n\tfont-size: larger;\r\n}\r\n\r\n.FontSmall\r\n{\r\n\tfont-size: 8pt;\r\n}\r\n\r\n.FontBig\r\n{\r\n\tfont-size: 14pt;\r\n}\r\n\r\n.FontDouble\r\n{\r\n\tfont-size: 200%;\r\n}\r\n\r\n/**\r\n * Font colors.\r\n */\r\n.FontColor1\r\n{\r\n\tcolor: #ff9900;\r\n}\r\n\r\n.FontColor2\r\n{\r\n\tcolor: #0066cc;\r\n}\r\n\r\n.FontColor3\r\n{\r\n\tcolor: #ff0000;\r\n}\r\n\r\n.FontColor1BG\r\n{\r\n\tbackground-color: #ff9900;\r\n}\r\n\r\n.FontColor2BG\r\n{\r\n\tbackground-color: #0066cc;\r\n}\r\n\r\n.FontColor3BG\r\n{\r\n\tbackground-color: #ff0000;\r\n}\r\n\r\n/**\r\n * Indentation.\r\n */\r\n\r\n.Indent1\r\n{\r\n\tmargin-left: 40px;\r\n}\r\n\r\n.Indent2\r\n{\r\n\tmargin-left: 80px;\r\n}\r\n\r\n.Indent3\r\n{\r\n\tmargin-left: 120px;\r\n}\r\n\r\n/**\r\n * Alignment.\r\n */\r\n\r\n.JustifyLeft\r\n{\r\n\ttext-align: left;\r\n}\r\n\r\n.JustifyRight\r\n{\r\n\ttext-align: right;\r\n}\r\n\r\n.JustifyCenter\r\n{\r\n\ttext-align: center;\r\n}\r\n\r\n.JustifyFull\r\n{\r\n\ttext-align: justify;\r\n}\r\n\r\n/**\r\n * Other.\r\n */\r\n\r\ncode\r\n{\r\n\tfont-family: courier, monospace;\r\n\tbackground-color: #eeeeee;\r\n\tpadding-left: 1px;\r\n\tpadding-right: 1px;\r\n\tborder: #c0c0c0 1px solid;\r\n}\r\n\r\nkbd\r\n{\r\n\tpadding: 0px 1px 0px 1px;\r\n\tborder-width: 1px 2px 2px 1px;\r\n\tborder-style: solid;\r\n}\r\n\r\nblockquote\r\n{\r\n\tcolor: #808080;\r\n}\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/assets/posteddata.php",
    "content": "<!DOCTYPE html>\r\n<?php\r\n/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n*/\r\n?>\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>Sample &mdash; CKEditor</title>\r\n\t<link rel=\"stylesheet\" href=\"sample.css\">\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\tCKEditor &mdash; Posted Data\r\n\t</h1>\r\n\t<table border=\"1\" cellspacing=\"0\" id=\"outputSample\">\r\n\t\t<colgroup><col width=\"120\"></colgroup>\r\n\t\t<thead>\r\n\t\t\t<tr>\r\n\t\t\t\t<th>Field&nbsp;Name</th>\r\n\t\t\t\t<th>Value</th>\r\n\t\t\t</tr>\r\n\t\t</thead>\r\n<?php\r\n\r\nif (!empty($_POST))\r\n{\r\n\tforeach ( $_POST as $key => $value )\r\n\t{\r\n\t\tif ( ( !is_string($value) && !is_numeric($value) ) || !is_string($key) )\r\n\t\t\tcontinue;\r\n\r\n\t\tif ( get_magic_quotes_gpc() )\r\n\t\t\t$value = htmlspecialchars( stripslashes((string)$value) );\r\n\t\telse\r\n\t\t\t$value = htmlspecialchars( (string)$value );\r\n?>\r\n\t\t<tr>\r\n\t\t\t<th style=\"vertical-align: top\"><?php echo htmlspecialchars( (string)$key ); ?></th>\r\n\t\t\t<td><pre class=\"samples\"><?php echo $value; ?></pre></td>\r\n\t\t</tr>\r\n\t<?php\r\n\t}\r\n}\r\n?>\r\n\t</table>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico Knabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/assets/uilanguages/languages.js",
    "content": "﻿/*\n Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\n For licensing, see LICENSE.md or http://ckeditor.com/license\n*/\nvar CKEDITOR_LANGS=function(){var c={af:\"Afrikaans\",ar:\"Arabic\",bg:\"Bulgarian\",bn:\"Bengali/Bangla\",bs:\"Bosnian\",ca:\"Catalan\",cs:\"Czech\",cy:\"Welsh\",da:\"Danish\",de:\"German\",el:\"Greek\",en:\"English\",\"en-au\":\"English (Australia)\",\"en-ca\":\"English (Canadian)\",\"en-gb\":\"English (United Kingdom)\",eo:\"Esperanto\",es:\"Spanish\",et:\"Estonian\",eu:\"Basque\",fa:\"Persian\",fi:\"Finnish\",fo:\"Faroese\",fr:\"French\",\"fr-ca\":\"French (Canada)\",gl:\"Galician\",gu:\"Gujarati\",he:\"Hebrew\",hi:\"Hindi\",hr:\"Croatian\",hu:\"Hungarian\",id:\"Indonesian\",\nis:\"Icelandic\",it:\"Italian\",ja:\"Japanese\",ka:\"Georgian\",km:\"Khmer\",ko:\"Korean\",ku:\"Kurdish\",lt:\"Lithuanian\",lv:\"Latvian\",mk:\"Macedonian\",mn:\"Mongolian\",ms:\"Malay\",nb:\"Norwegian Bokmal\",nl:\"Dutch\",no:\"Norwegian\",pl:\"Polish\",pt:\"Portuguese (Portugal)\",\"pt-br\":\"Portuguese (Brazil)\",ro:\"Romanian\",ru:\"Russian\",si:\"Sinhala\",sk:\"Slovak\",sq:\"Albanian\",sl:\"Slovenian\",sr:\"Serbian (Cyrillic)\",\"sr-latn\":\"Serbian (Latin)\",sv:\"Swedish\",th:\"Thai\",tr:\"Turkish\",tt:\"Tatar\",ug:\"Uighur\",uk:\"Ukrainian\",vi:\"Vietnamese\",\nzh:\"Chinese Traditional\",\"zh-cn\":\"Chinese Simplified\"},b=[],a;for(a in CKEDITOR.lang.languages)b.push({code:a,name:c[a]||a});b.sort(function(a,b){return a.name<b.name?-1:1});return b}();"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/datafiltering.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>Data Filtering &mdash; CKEditor Sample</title>\r\n\t<script src=\"../ckeditor.js\"></script>\r\n\t<link rel=\"stylesheet\" href=\"sample.css\">\r\n\t<script>\r\n\t\t// Remove advanced tabs for all editors.\r\n\t\tCKEDITOR.config.removeDialogTabs = 'image:advanced;link:advanced;flash:advanced;creatediv:advanced;editdiv:advanced';\r\n\t</script>\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"index.html\">CKEditor Samples</a> &raquo; Data Filtering and Features Activation\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tThis sample page demonstrates the idea of Advanced Content Filter\r\n\t\t\t(<abbr title=\"Advanced Content Filter\">ACF</abbr>), a sophisticated\r\n\t\t\ttool that takes control over what kind of data is accepted by the editor and what\r\n\t\t\tkind of output is produced.\r\n\t\t</p>\r\n\t\t<h2>When and what is being filtered?</h2>\r\n\t\t<p>\r\n\t\t\t<abbr title=\"Advanced Content Filter\">ACF</abbr> controls\r\n\t\t\t<strong>every single source of data</strong> that comes to the editor.\r\n\t\t\tIt process both HTML that is inserted manually (i.e. pasted by the user)\r\n\t\t\tand programmatically like:\r\n\t\t</p>\r\n<pre class=\"samples\">\r\neditor.setData( '&lt;p&gt;Hello world!&lt;/p&gt;' );\r\n</pre>\r\n\t\t<p>\r\n\t\t\t<abbr title=\"Advanced Content Filter\">ACF</abbr> discards invalid,\r\n\t\t\tuseless HTML tags and attributes so the editor remains \"clean\" during\r\n\t\t\truntime. <abbr title=\"Advanced Content Filter\">ACF</abbr> behaviour\r\n\t\t\tcan be configured and adjusted for a particular case to prevent the\r\n\t\t\toutput HTML (i.e. in CMS systems) from being polluted.\r\n\r\n\t\t\tThis kind of filtering is a first, client-side line of defense\r\n\t\t\tagainst \"<a href=\"http://en.wikipedia.org/wiki/Tag_soup\">tag soups</a>\",\r\n\t\t\tthe tool that precisely restricts which tags, attributes and styles\r\n\t\t\tare allowed (desired). When properly configured, <abbr title=\"Advanced Content Filter\">ACF</abbr>\r\n\t\t\tis an easy and fast way to produce a high-quality, intentionally filtered HTML.\r\n\t\t</p>\r\n\r\n\t\t<h3>How to configure or disable ACF?</h3>\r\n\t\t<p>\r\n\t\t\tAdvanced Content Filter is enabled by default, working in \"automatic mode\", yet\r\n\t\t\tit provides a set of easy rules that allow adjusting filtering rules\r\n\t\t\tand disabling the entire feature when necessary. The config property\r\n\t\t\tresponsible for this feature is <code><a class=\"samples\"\r\n\t\t\thref=\"http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-allowedContent\">config.allowedContent</a></code>.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tBy \"automatic mode\" is meant that loaded plugins decide which kind\r\n\t\t\tof content is enabled and which is not. For example, if the link\r\n\t\t\tplugin is loaded it implies that <code>&lt;a&gt;</code> tag is\r\n\t\t\tautomatically allowed. Each plugin is given a set\r\n\t\t\tof predefined <abbr title=\"Advanced Content Filter\">ACF</abbr> rules\r\n\t\t\tthat control the editor until <code><a class=\"samples\"\r\n\t\t\thref=\"http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-allowedContent\">\r\n\t\t\tconfig.allowedContent</a></code>\r\n\t\t\tis defined manually.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tLet's assume our intention is to restrict the editor to accept (produce) <strong>paragraphs\r\n\t\t\tonly: no attributes, no styles, no other tags</strong>.\r\n\t\t\tWith <abbr title=\"Advanced Content Filter\">ACF</abbr>\r\n\t\t\tthis is very simple. Basically set <code><a class=\"samples\"\r\n\t\t\thref=\"http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-allowedContent\">\r\n\t\t\tconfig.allowedContent</a></code> to <code>'p'</code>:\r\n\t\t</p>\r\n<pre class=\"samples\">\r\nvar editor = CKEDITOR.replace( <em>textarea_id</em>, {\r\n\t<strong>allowedContent: 'p'</strong>\r\n} );\r\n</pre>\r\n\t\t<p>\r\n\t\t\tNow try to play with allowed content:\r\n\t\t</p>\r\n<pre class=\"samples\">\r\n// Trying to insert disallowed tag and attribute.\r\neditor.setData( '&lt;p <strong>style=\"color: red\"</strong>&gt;Hello <strong>&lt;em&gt;world&lt;/em&gt;</strong>!&lt;/p&gt;' );\r\nalert( editor.getData() );\r\n\r\n// Filtered data is returned.\r\n\"&lt;p&gt;Hello world!&lt;/p&gt;\"\r\n</pre>\r\n\t\t<p>\r\n\t\t\tWhat happened? Since <code>config.allowedContent: 'p'</code> is set the editor assumes\r\n\t\t\tthat only plain <code>&lt;p&gt;</code> are accepted. Nothing more. This is why\r\n\t\t\t<code>style</code> attribute and <code>&lt;em&gt;</code> tag are gone. The same\r\n\t\t\tfiltering would happen if we pasted disallowed HTML into this editor.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tThis is just a small sample of what <abbr title=\"Advanced Content Filter\">ACF</abbr>\r\n\t\t\tcan do. To know more, please refer to the sample section below and\r\n\t\t\t<a href=\"http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter\">the official Advanced Content Filter guide</a>.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tYou may, of course, want CKEditor to avoid filtering of any kind.\r\n\t\t\tTo get rid of <abbr title=\"Advanced Content Filter\">ACF</abbr>,\r\n\t\t\tbasically set <code><a class=\"samples\"\r\n\t\t\thref=\"http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-allowedContent\">\r\n\t\t\tconfig.allowedContent</a></code> to <code>true</code> like this:\r\n\t\t</p>\r\n<pre class=\"samples\">\r\nCKEDITOR.replace( <em>textarea_id</em>, {\r\n\t<strong>allowedContent: true</strong>\r\n} );\r\n</pre>\r\n\r\n\t\t<h2>Beyond data flow: Features activation</h2>\r\n\t\t<p>\r\n\t\t\t<abbr title=\"Advanced Content Filter\">ACF</abbr> is far more than\r\n\t\t\t<abbr title=\"Input/Output\">I/O</abbr> control: the entire\r\n\t\t\t<abbr title=\"User Interface\">UI</abbr> of the editor is adjusted to what\r\n\t\t\tfilters restrict. For example: if <code>&lt;a&gt;</code> tag is\r\n\t\t\t<strong>disallowed</strong>\r\n\t\t\tby <abbr title=\"Advanced Content Filter\">ACF</abbr>,\r\n\t\t\tthen accordingly <code>link</code> command, toolbar button and link dialog\r\n\t\t\tare also disabled. Editor is smart: it knows which features must be\r\n\t\t\tremoved from the interface to match filtering rules.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tCKEditor can be far more specific. If <code>&lt;a&gt;</code> tag is\r\n\t\t\t<strong>allowed</strong> by filtering rules to be used but it is restricted\r\n\t\t\tto have only one attribute (<code>href</code>)\r\n\t\t\t<code>config.allowedContent = 'a[!href]'</code>, then\r\n\t\t\t\"Target\" tab of the link dialog is automatically disabled as <code>target</code>\r\n\t\t\tattribute isn't included in <abbr title=\"Advanced Content Filter\">ACF</abbr> rules\r\n\t\t\tfor <code>&lt;a&gt;</code>. This behaviour applies to dialog fields, context\r\n\t\t\tmenus and toolbar buttons.\r\n\t\t</p>\r\n\r\n\t\t<h2>Sample configurations</h2>\r\n\t\t<p>\r\n\t\t\tThere are several editor instances below that present different\r\n\t\t\t<abbr title=\"Advanced Content Filter\">ACF</abbr> setups. <strong>All of them,\r\n\t\t\texcept the last inline instance, share the same HTML content</strong> to visualize\r\n\t\t\thow different filtering rules affect the same input data.\r\n\t\t</p>\r\n\t</div>\r\n\r\n\t<div>\r\n\t\t<label for=\"editor1\">\r\n\t\t\tEditor 1:\r\n\t\t</label>\r\n\t\t<div class=\"description\">\r\n\t\t\t<p>\r\n\t\t\t\tThis editor is using default configuration (\"automatic mode\"). It means that\r\n\t\t\t\t<code><a class=\"samples\"\r\n\t\t\t\thref=\"http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-allowedContent\">\r\n\t\t\t\tconfig.allowedContent</a></code> is defined by loaded plugins.\r\n\t\t\t\tEach plugin extends filtering rules to make it's own associated content\r\n\t\t\t\tavailable for the user.\r\n\t\t\t</p>\r\n\t\t</div>\r\n\t\t<textarea cols=\"80\" id=\"editor1\" name=\"editor1\" rows=\"10\">\r\n\t\t\t&lt;h1&gt;&lt;img alt=&quot;Saturn V carrying Apollo 11&quot; class=&quot;right&quot; src=&quot;assets/sample.jpg&quot;/&gt; Apollo 11&lt;/h1&gt; &lt;p&gt;&lt;b&gt;Apollo 11&lt;/b&gt; was the spaceflight that landed the first humans, Americans &lt;a href=&quot;http://en.wikipedia.org/wiki/Neil_Armstrong&quot; title=&quot;Neil Armstrong&quot;&gt;Neil Armstrong&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Buzz_Aldrin&quot; title=&quot;Buzz Aldrin&quot;&gt;Buzz Aldrin&lt;/a&gt;, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.&lt;/p&gt; &lt;p&gt;Armstrong spent about &lt;s&gt;three and a half&lt;/s&gt; two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&amp;nbsp;kg) of lunar material for return to Earth. A third member of the mission, &lt;a href=&quot;http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)&quot; title=&quot;Michael Collins (astronaut)&quot;&gt;Michael Collins&lt;/a&gt;, piloted the &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_Command/Service_Module&quot; title=&quot;Apollo Command/Service Module&quot;&gt;command&lt;/a&gt; spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.&lt;/p&gt; &lt;h2&gt;Broadcasting and &lt;em&gt;quotes&lt;/em&gt; &lt;a id=&quot;quotes&quot; name=&quot;quotes&quot;&gt;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;One small step for [a] man, one giant leap for mankind.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Apollo 11 effectively ended the &lt;a href=&quot;http://en.wikipedia.org/wiki/Space_Race&quot; title=&quot;Space Race&quot;&gt;Space Race&lt;/a&gt; and fulfilled a national goal proposed in 1961 by the late U.S. President &lt;a href=&quot;http://en.wikipedia.org/wiki/John_F._Kennedy&quot; title=&quot;John F. Kennedy&quot;&gt;John F. Kennedy&lt;/a&gt; in a speech before the United States Congress:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.&lt;/p&gt;&lt;/blockquote&gt; &lt;h2&gt;Technical details &lt;a id=&quot;tech-details&quot; name=&quot;tech-details&quot;&gt;&lt;/a&gt;&lt;/h2&gt; &lt;table align=&quot;right&quot; border=&quot;1&quot; bordercolor=&quot;#ccc&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse:collapse;margin:10px 0 10px 15px;&quot;&gt; &lt;caption&gt;&lt;strong&gt;Mission crew&lt;/strong&gt;&lt;/caption&gt; &lt;thead&gt; &lt;tr&gt; &lt;th scope=&quot;col&quot;&gt;Position&lt;/th&gt; &lt;th scope=&quot;col&quot;&gt;Astronaut&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;Commander&lt;/td&gt; &lt;td&gt;Neil A. Armstrong&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Command Module Pilot&lt;/td&gt; &lt;td&gt;Michael Collins&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Lunar Module Pilot&lt;/td&gt; &lt;td&gt;Edwin &amp;quot;Buzz&amp;quot; E. Aldrin, Jr.&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;Launched by a &lt;strong&gt;Saturn V&lt;/strong&gt; rocket from &lt;a href=&quot;http://en.wikipedia.org/wiki/Kennedy_Space_Center&quot; title=&quot;Kennedy Space Center&quot;&gt;Kennedy Space Center&lt;/a&gt; in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of &lt;a href=&quot;http://en.wikipedia.org/wiki/NASA&quot; title=&quot;NASA&quot;&gt;NASA&lt;/a&gt;&amp;#39;s Apollo program. The Apollo spacecraft had three parts:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;strong&gt;Command Module&lt;/strong&gt; with a cabin for the three astronauts which was the only part which landed back on Earth&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Service Module&lt;/strong&gt; which supported the Command Module with propulsion, electrical power, oxygen and water&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Lunar Module&lt;/strong&gt; for landing on the Moon.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;After being sent to the Moon by the Saturn V&amp;#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Mare_Tranquillitatis&quot; title=&quot;Mare Tranquillitatis&quot;&gt;Sea of Tranquility&lt;/a&gt;. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Pacific_Ocean&quot; title=&quot;Pacific Ocean&quot;&gt;Pacific Ocean&lt;/a&gt; on July 24.&lt;/p&gt; &lt;hr/&gt; &lt;p style=&quot;text-align: right;&quot;&gt;&lt;small&gt;Source: &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_11&quot;&gt;Wikipedia.org&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;\r\n\t\t</textarea>\r\n\r\n\t\t<script>\r\n\r\n\t\t\tCKEDITOR.replace( 'editor1' );\r\n\r\n\t\t</script>\r\n\t</div>\r\n\r\n\t<br>\r\n\r\n\t<div>\r\n\t\t<label for=\"editor2\">\r\n\t\t\tEditor 2:\r\n\t\t</label>\r\n\t\t<div class=\"description\">\r\n\t\t\t<p>\r\n\t\t\t\tThis editor is using a custom configuration for\r\n\t\t\t\t<abbr title=\"Advanced Content Filter\">ACF</abbr>:\r\n\t\t\t</p>\r\n<pre class=\"samples\">\r\nCKEDITOR.replace( 'editor2', {\r\n\tallowedContent:\r\n\t\t'h1 h2 h3 p blockquote strong em;' +\r\n\t\t'a[!href];' +\r\n\t\t'img(left,right)[!src,alt,width,height];' +\r\n\t\t'table tr th td caption;' +\r\n\t\t'span{!font-family};' +'\r\n\t\t'span{!color};' +\r\n\t\t'span(!marker);' +\r\n\t\t'del ins'\r\n} );\r\n</pre>\r\n\t\t\t<p>\r\n\t\t\t\tThe following rules may require additional explanation:\r\n\t\t\t</p>\r\n\t\t\t<ul>\r\n\t\t\t\t<li>\r\n\t\t\t\t\t<code>h1 h2 h3 p blockquote strong em</code> - These tags\r\n\t\t\t\t\tare accepted by the editor. Any tag attributes will be discarded.\r\n\t\t\t\t</li>\r\n\t\t\t\t<li>\r\n\t\t\t\t\t<code>a[!href]</code> - <code>href</code> attribute is obligatory\r\n\t\t\t\t\tfor <code>&lt;a&gt;</code> tag. Tags without this attribute\r\n\t\t\t\t\tare disarded. No other attribute will be accepted.\r\n\t\t\t\t</li>\r\n\t\t\t\t<li>\r\n\t\t\t\t\t<code>img(left,right)[!src,alt,width,height]</code> - <code>src</code>\r\n\t\t\t\t\tattribute is obligatory for <code>&lt;img&gt;</code> tag.\r\n\t\t\t\t\t<code>alt</code>, <code>width</code>, <code>height</code>\r\n\t\t\t\t\tand <code>class</code> attributes are accepted but\r\n\t\t\t\t\t<code>class</code> must be either <code>class=\"left\"</code>\r\n\t\t\t\t\tor <code>class=\"right\"</code>\r\n\t\t\t\t</li>\r\n\t\t\t\t<li>\r\n\t\t\t\t\t<code>table tr th td caption</code> - These tags\r\n\t\t\t\t\tare accepted by the editor. Any tag attributes will be discarded.\r\n\t\t\t\t</li>\r\n\t\t\t\t<li>\r\n\t\t\t\t\t<code>span{!font-family}</code>, <code>span{!color}</code>,\r\n\t\t\t\t\t<code>span(!marker)</code> - <code>&lt;span&gt;</code> tags\r\n\t\t\t\t\twill be accepted if either <code>font-family</code> or\r\n\t\t\t\t\t<code>color</code> style is set or <code>class=\"marker\"</code>\r\n\t\t\t\t\tis present.\r\n\t\t\t\t</li>\r\n\t\t\t\t<li>\r\n\t\t\t\t\t<code>del ins</code> - These tags\r\n\t\t\t\t\tare accepted by the editor. Any tag attributes will be discarded.\r\n\t\t\t\t</li>\r\n\t\t\t</ul>\r\n\t\t\t<p>\r\n\t\t\t\tPlease note that <strong><abbr title=\"User Interface\">UI</abbr> of the\r\n\t\t\t\teditor is different</strong>. It's a response to what happened to the filters.\r\n\t\t\t\tSince <code>text-align</code> isn't allowed, the align toolbar is gone.\r\n\t\t\t\tThe same thing happened to subscript/superscript, strike, underline\r\n\t\t\t\t(<code>&lt;u&gt;</code>, <code>&lt;sub&gt;</code>, <code>&lt;sup&gt;</code>\r\n\t\t\t\tare disallowed by <code><a class=\"samples\"\r\n\t\t\t\thref=\"http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-allowedContent\">\r\n\t\t\t\tconfig.allowedContent</a></code>) and many other buttons.\r\n\t\t\t</p>\r\n\t\t</div>\r\n\t\t<textarea cols=\"80\" id=\"editor2\" name=\"editor2\" rows=\"10\">\r\n\t\t\t&lt;h1&gt;&lt;img alt=&quot;Saturn V carrying Apollo 11&quot; class=&quot;right&quot; src=&quot;assets/sample.jpg&quot;/&gt; Apollo 11&lt;/h1&gt; &lt;p&gt;&lt;b&gt;Apollo 11&lt;/b&gt; was the spaceflight that landed the first humans, Americans &lt;a href=&quot;http://en.wikipedia.org/wiki/Neil_Armstrong&quot; title=&quot;Neil Armstrong&quot;&gt;Neil Armstrong&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Buzz_Aldrin&quot; title=&quot;Buzz Aldrin&quot;&gt;Buzz Aldrin&lt;/a&gt;, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.&lt;/p&gt; &lt;p&gt;Armstrong spent about &lt;s&gt;three and a half&lt;/s&gt; two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&amp;nbsp;kg) of lunar material for return to Earth. A third member of the mission, &lt;a href=&quot;http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)&quot; title=&quot;Michael Collins (astronaut)&quot;&gt;Michael Collins&lt;/a&gt;, piloted the &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_Command/Service_Module&quot; title=&quot;Apollo Command/Service Module&quot;&gt;command&lt;/a&gt; spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.&lt;/p&gt; &lt;h2&gt;Broadcasting and &lt;em&gt;quotes&lt;/em&gt; &lt;a id=&quot;quotes&quot; name=&quot;quotes&quot;&gt;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;One small step for [a] man, one giant leap for mankind.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Apollo 11 effectively ended the &lt;a href=&quot;http://en.wikipedia.org/wiki/Space_Race&quot; title=&quot;Space Race&quot;&gt;Space Race&lt;/a&gt; and fulfilled a national goal proposed in 1961 by the late U.S. President &lt;a href=&quot;http://en.wikipedia.org/wiki/John_F._Kennedy&quot; title=&quot;John F. Kennedy&quot;&gt;John F. Kennedy&lt;/a&gt; in a speech before the United States Congress:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.&lt;/p&gt;&lt;/blockquote&gt; &lt;h2&gt;Technical details &lt;a id=&quot;tech-details&quot; name=&quot;tech-details&quot;&gt;&lt;/a&gt;&lt;/h2&gt; &lt;table align=&quot;right&quot; border=&quot;1&quot; bordercolor=&quot;#ccc&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse:collapse;margin:10px 0 10px 15px;&quot;&gt; &lt;caption&gt;&lt;strong&gt;Mission crew&lt;/strong&gt;&lt;/caption&gt; &lt;thead&gt; &lt;tr&gt; &lt;th scope=&quot;col&quot;&gt;Position&lt;/th&gt; &lt;th scope=&quot;col&quot;&gt;Astronaut&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;Commander&lt;/td&gt; &lt;td&gt;Neil A. Armstrong&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Command Module Pilot&lt;/td&gt; &lt;td&gt;Michael Collins&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Lunar Module Pilot&lt;/td&gt; &lt;td&gt;Edwin &amp;quot;Buzz&amp;quot; E. Aldrin, Jr.&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;Launched by a &lt;strong&gt;Saturn V&lt;/strong&gt; rocket from &lt;a href=&quot;http://en.wikipedia.org/wiki/Kennedy_Space_Center&quot; title=&quot;Kennedy Space Center&quot;&gt;Kennedy Space Center&lt;/a&gt; in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of &lt;a href=&quot;http://en.wikipedia.org/wiki/NASA&quot; title=&quot;NASA&quot;&gt;NASA&lt;/a&gt;&amp;#39;s Apollo program. The Apollo spacecraft had three parts:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;strong&gt;Command Module&lt;/strong&gt; with a cabin for the three astronauts which was the only part which landed back on Earth&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Service Module&lt;/strong&gt; which supported the Command Module with propulsion, electrical power, oxygen and water&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Lunar Module&lt;/strong&gt; for landing on the Moon.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;After being sent to the Moon by the Saturn V&amp;#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Mare_Tranquillitatis&quot; title=&quot;Mare Tranquillitatis&quot;&gt;Sea of Tranquility&lt;/a&gt;. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Pacific_Ocean&quot; title=&quot;Pacific Ocean&quot;&gt;Pacific Ocean&lt;/a&gt; on July 24.&lt;/p&gt; &lt;hr/&gt; &lt;p style=&quot;text-align: right;&quot;&gt;&lt;small&gt;Source: &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_11&quot;&gt;Wikipedia.org&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;\r\n\t\t</textarea>\r\n\t\t<script>\r\n\r\n\t\t\tCKEDITOR.replace( 'editor2', {\r\n\t\t\t\tallowedContent:\r\n\t\t\t\t\t'h1 h2 h3 p blockquote strong em;' +\r\n\t\t\t\t\t'a[!href];' +\r\n\t\t\t\t\t'img(left,right)[!src,alt,width,height];' +\r\n\t\t\t\t\t'table tr th td caption;' +\r\n\t\t\t\t\t'span{!font-family};' +\r\n\t\t\t\t\t'span{!color};' +\r\n\t\t\t\t\t'span(!marker);' +\r\n\t\t\t\t\t'del ins'\r\n\t\t\t} );\r\n\r\n\t\t</script>\r\n\t</div>\r\n\r\n\t<br>\r\n\r\n\t<div>\r\n\t\t<label for=\"editor3\">\r\n\t\t\tEditor 3:\r\n\t\t</label>\r\n\t\t<div class=\"description\">\r\n\t\t\t<p>\r\n\t\t\t\tThis editor is using a custom configuration for\r\n\t\t\t\t<abbr title=\"Advanced Content Filter\">ACF</abbr>.\r\n\t\t\t\tNote that filters can be configured as an object literal\r\n\t\t\t\tas an alternative to a string-based definition.\r\n\t\t\t</p>\r\n<pre class=\"samples\">\r\nCKEDITOR.replace( 'editor3', {\r\n\tallowedContent: {\r\n\t\t'b i ul ol big small': true,\r\n\t\t'h1 h2 h3 p blockquote li': {\r\n\t\t\tstyles: 'text-align'\r\n\t\t},\r\n\t\ta: { attributes: '!href,target' },\r\n\t\timg: {\r\n\t\t\tattributes: '!src,alt',\r\n\t\t\tstyles: 'width,height',\r\n\t\t\tclasses: 'left,right'\r\n\t\t}\r\n\t}\r\n} );\r\n</pre>\r\n\t\t</div>\r\n\t\t<textarea cols=\"80\" id=\"editor3\" name=\"editor3\" rows=\"10\">\r\n\t\t\t&lt;h1&gt;&lt;img alt=&quot;Saturn V carrying Apollo 11&quot; class=&quot;right&quot; src=&quot;assets/sample.jpg&quot;/&gt; Apollo 11&lt;/h1&gt; &lt;p&gt;&lt;b&gt;Apollo 11&lt;/b&gt; was the spaceflight that landed the first humans, Americans &lt;a href=&quot;http://en.wikipedia.org/wiki/Neil_Armstrong&quot; title=&quot;Neil Armstrong&quot;&gt;Neil Armstrong&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Buzz_Aldrin&quot; title=&quot;Buzz Aldrin&quot;&gt;Buzz Aldrin&lt;/a&gt;, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.&lt;/p&gt; &lt;p&gt;Armstrong spent about &lt;s&gt;three and a half&lt;/s&gt; two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&amp;nbsp;kg) of lunar material for return to Earth. A third member of the mission, &lt;a href=&quot;http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)&quot; title=&quot;Michael Collins (astronaut)&quot;&gt;Michael Collins&lt;/a&gt;, piloted the &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_Command/Service_Module&quot; title=&quot;Apollo Command/Service Module&quot;&gt;command&lt;/a&gt; spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.&lt;/p&gt; &lt;h2&gt;Broadcasting and &lt;em&gt;quotes&lt;/em&gt; &lt;a id=&quot;quotes&quot; name=&quot;quotes&quot;&gt;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;One small step for [a] man, one giant leap for mankind.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Apollo 11 effectively ended the &lt;a href=&quot;http://en.wikipedia.org/wiki/Space_Race&quot; title=&quot;Space Race&quot;&gt;Space Race&lt;/a&gt; and fulfilled a national goal proposed in 1961 by the late U.S. President &lt;a href=&quot;http://en.wikipedia.org/wiki/John_F._Kennedy&quot; title=&quot;John F. Kennedy&quot;&gt;John F. Kennedy&lt;/a&gt; in a speech before the United States Congress:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.&lt;/p&gt;&lt;/blockquote&gt; &lt;h2&gt;Technical details &lt;a id=&quot;tech-details&quot; name=&quot;tech-details&quot;&gt;&lt;/a&gt;&lt;/h2&gt; &lt;table align=&quot;right&quot; border=&quot;1&quot; bordercolor=&quot;#ccc&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse:collapse;margin:10px 0 10px 15px;&quot;&gt; &lt;caption&gt;&lt;strong&gt;Mission crew&lt;/strong&gt;&lt;/caption&gt; &lt;thead&gt; &lt;tr&gt; &lt;th scope=&quot;col&quot;&gt;Position&lt;/th&gt; &lt;th scope=&quot;col&quot;&gt;Astronaut&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;Commander&lt;/td&gt; &lt;td&gt;Neil A. Armstrong&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Command Module Pilot&lt;/td&gt; &lt;td&gt;Michael Collins&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Lunar Module Pilot&lt;/td&gt; &lt;td&gt;Edwin &amp;quot;Buzz&amp;quot; E. Aldrin, Jr.&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;Launched by a &lt;strong&gt;Saturn V&lt;/strong&gt; rocket from &lt;a href=&quot;http://en.wikipedia.org/wiki/Kennedy_Space_Center&quot; title=&quot;Kennedy Space Center&quot;&gt;Kennedy Space Center&lt;/a&gt; in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of &lt;a href=&quot;http://en.wikipedia.org/wiki/NASA&quot; title=&quot;NASA&quot;&gt;NASA&lt;/a&gt;&amp;#39;s Apollo program. The Apollo spacecraft had three parts:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;strong&gt;Command Module&lt;/strong&gt; with a cabin for the three astronauts which was the only part which landed back on Earth&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Service Module&lt;/strong&gt; which supported the Command Module with propulsion, electrical power, oxygen and water&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Lunar Module&lt;/strong&gt; for landing on the Moon.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;After being sent to the Moon by the Saturn V&amp;#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Mare_Tranquillitatis&quot; title=&quot;Mare Tranquillitatis&quot;&gt;Sea of Tranquility&lt;/a&gt;. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Pacific_Ocean&quot; title=&quot;Pacific Ocean&quot;&gt;Pacific Ocean&lt;/a&gt; on July 24.&lt;/p&gt; &lt;hr/&gt; &lt;p style=&quot;text-align: right;&quot;&gt;&lt;small&gt;Source: &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_11&quot;&gt;Wikipedia.org&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;\r\n\t\t</textarea>\r\n\t\t<script>\r\n\r\n\t\t\tCKEDITOR.replace( 'editor3', {\r\n\t\t\t\tallowedContent: {\r\n\t\t\t\t\t'b i ul ol big small': true,\r\n\t\t\t\t\t'h1 h2 h3 p blockquote li': {\r\n\t\t\t\t\t\tstyles: 'text-align'\r\n\t\t\t\t\t},\r\n\t\t\t\t\ta: { attributes: '!href,target' },\r\n\t\t\t\t\timg: {\r\n\t\t\t\t\t\tattributes: '!src,alt',\r\n\t\t\t\t\t\tstyles: 'width,height',\r\n\t\t\t\t\t\tclasses: 'left,right'\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\r\n\t\t</script>\r\n\t</div>\r\n\r\n\t<br>\r\n\r\n\t<div>\r\n\t\t<label for=\"editor4\">\r\n\t\t\tEditor 4:\r\n\t\t</label>\r\n\t\t<div class=\"description\">\r\n\t\t\t<p>\r\n\t\t\t\tThis editor is using a custom set of plugins and buttons.\r\n\t\t\t</p>\r\n<pre class=\"samples\">\r\nCKEDITOR.replace( 'editor4', {\r\n\tremovePlugins: 'bidi,font,forms,flash,horizontalrule,iframe,justify,table,tabletools,smiley',\r\n\tremoveButtons: 'Anchor,Underline,Strike,Subscript,Superscript,Image',\r\n\tformat_tags: 'p;h1;h2;h3;pre;address'\r\n} );\r\n</pre>\r\n\t\t\t<p>\r\n\t\t\t\tAs you can see, removing plugins and buttons implies filtering.\r\n\t\t\t\tSeveral tags are not allowed in the editor because there's no\r\n\t\t\t\tplugin/button that is responsible for creating and editing this\r\n\t\t\t\tkind of content (for example: the image is missing because\r\n\t\t\t\tof <code>removeButtons: 'Image'</code>). The conclusion is that\r\n\t\t\t\t<abbr title=\"Advanced Content Filter\">ACF</abbr> works \"backwards\"\r\n\t\t\t\tas well: <strong>modifying <abbr title=\"User Interface\">UI</abbr>\r\n\t\t\t\telements is changing allowed content rules</strong>.\r\n\t\t\t</p>\r\n\t\t</div>\r\n\t\t<textarea cols=\"80\" id=\"editor4\" name=\"editor4\" rows=\"10\">\r\n\t\t\t&lt;h1&gt;&lt;img alt=&quot;Saturn V carrying Apollo 11&quot; class=&quot;right&quot; src=&quot;assets/sample.jpg&quot;/&gt; Apollo 11&lt;/h1&gt; &lt;p&gt;&lt;b&gt;Apollo 11&lt;/b&gt; was the spaceflight that landed the first humans, Americans &lt;a href=&quot;http://en.wikipedia.org/wiki/Neil_Armstrong&quot; title=&quot;Neil Armstrong&quot;&gt;Neil Armstrong&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Buzz_Aldrin&quot; title=&quot;Buzz Aldrin&quot;&gt;Buzz Aldrin&lt;/a&gt;, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.&lt;/p&gt; &lt;p&gt;Armstrong spent about &lt;s&gt;three and a half&lt;/s&gt; two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&amp;nbsp;kg) of lunar material for return to Earth. A third member of the mission, &lt;a href=&quot;http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)&quot; title=&quot;Michael Collins (astronaut)&quot;&gt;Michael Collins&lt;/a&gt;, piloted the &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_Command/Service_Module&quot; title=&quot;Apollo Command/Service Module&quot;&gt;command&lt;/a&gt; spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.&lt;/p&gt; &lt;h2&gt;Broadcasting and &lt;em&gt;quotes&lt;/em&gt; &lt;a id=&quot;quotes&quot; name=&quot;quotes&quot;&gt;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;One small step for [a] man, one giant leap for mankind.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Apollo 11 effectively ended the &lt;a href=&quot;http://en.wikipedia.org/wiki/Space_Race&quot; title=&quot;Space Race&quot;&gt;Space Race&lt;/a&gt; and fulfilled a national goal proposed in 1961 by the late U.S. President &lt;a href=&quot;http://en.wikipedia.org/wiki/John_F._Kennedy&quot; title=&quot;John F. Kennedy&quot;&gt;John F. Kennedy&lt;/a&gt; in a speech before the United States Congress:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.&lt;/p&gt;&lt;/blockquote&gt; &lt;h2&gt;Technical details &lt;a id=&quot;tech-details&quot; name=&quot;tech-details&quot;&gt;&lt;/a&gt;&lt;/h2&gt; &lt;table align=&quot;right&quot; border=&quot;1&quot; bordercolor=&quot;#ccc&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse:collapse;margin:10px 0 10px 15px;&quot;&gt; &lt;caption&gt;&lt;strong&gt;Mission crew&lt;/strong&gt;&lt;/caption&gt; &lt;thead&gt; &lt;tr&gt; &lt;th scope=&quot;col&quot;&gt;Position&lt;/th&gt; &lt;th scope=&quot;col&quot;&gt;Astronaut&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;Commander&lt;/td&gt; &lt;td&gt;Neil A. Armstrong&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Command Module Pilot&lt;/td&gt; &lt;td&gt;Michael Collins&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Lunar Module Pilot&lt;/td&gt; &lt;td&gt;Edwin &amp;quot;Buzz&amp;quot; E. Aldrin, Jr.&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;Launched by a &lt;strong&gt;Saturn V&lt;/strong&gt; rocket from &lt;a href=&quot;http://en.wikipedia.org/wiki/Kennedy_Space_Center&quot; title=&quot;Kennedy Space Center&quot;&gt;Kennedy Space Center&lt;/a&gt; in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of &lt;a href=&quot;http://en.wikipedia.org/wiki/NASA&quot; title=&quot;NASA&quot;&gt;NASA&lt;/a&gt;&amp;#39;s Apollo program. The Apollo spacecraft had three parts:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;strong&gt;Command Module&lt;/strong&gt; with a cabin for the three astronauts which was the only part which landed back on Earth&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Service Module&lt;/strong&gt; which supported the Command Module with propulsion, electrical power, oxygen and water&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Lunar Module&lt;/strong&gt; for landing on the Moon.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;After being sent to the Moon by the Saturn V&amp;#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Mare_Tranquillitatis&quot; title=&quot;Mare Tranquillitatis&quot;&gt;Sea of Tranquility&lt;/a&gt;. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Pacific_Ocean&quot; title=&quot;Pacific Ocean&quot;&gt;Pacific Ocean&lt;/a&gt; on July 24.&lt;/p&gt; &lt;hr/&gt; &lt;p style=&quot;text-align: right;&quot;&gt;&lt;small&gt;Source: &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_11&quot;&gt;Wikipedia.org&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;\r\n\t\t</textarea>\r\n\t\t<script>\r\n\r\n\t\t\tCKEDITOR.replace( 'editor4', {\r\n\t\t\t\tremovePlugins: 'bidi,div,font,forms,flash,horizontalrule,iframe,justify,table,tabletools,smiley',\r\n\t\t\t\tremoveButtons: 'Anchor,Underline,Strike,Subscript,Superscript,Image',\r\n\t\t\t\tformat_tags: 'p;h1;h2;h3;pre;address'\r\n\t\t\t} );\r\n\r\n\t\t</script>\r\n\t</div>\r\n\r\n\t<br>\r\n\r\n\t<div>\r\n\t\t<label for=\"editor5\">\r\n\t\t\tEditor 5:\r\n\t\t</label>\r\n\t\t<div class=\"description\">\r\n\t\t\t<p>\r\n\t\t\t\tThis editor is built on editable <code>&lt;h1&gt;</code> element.\r\n\t\t\t\t<abbr title=\"Advanced Content Filter\">ACF</abbr> takes care of\r\n\t\t\t\twhat can be included in <code>&lt;h1&gt;</code>. Note that there\r\n\t\t\t\tare no block styles in Styles combo. Also why lists, indentation,\r\n\t\t\t\tblockquote, div, form and other buttons are missing.\r\n\t\t\t</p>\r\n\t\t\t<p>\r\n\t\t\t\t<abbr title=\"Advanced Content Filter\">ACF</abbr> makes sure that\r\n\t\t\t\tno disallowed tags will come to <code>&lt;h1&gt;</code> so the final\r\n\t\t\t\tmarkup is valid. If the user tried to paste some invalid HTML\r\n\t\t\t\tinto this editor (let's say a list), it would be automatically\r\n\t\t\t\tconverted into plain text.\r\n\t\t\t</p>\r\n\t\t</div>\r\n\t\t<h1 id=\"editor5\" contenteditable=\"true\">\r\n\t\t\t<em>Apollo 11</em> was the spaceflight that landed the first humans, Americans <a href=\"http://en.wikipedia.org/wiki/Neil_Armstrong\" title=\"Neil Armstrong\">Neil Armstrong</a> and <a href=\"http://en.wikipedia.org/wiki/Buzz_Aldrin\" title=\"Buzz Aldrin\">Buzz Aldrin</a>, on the Moon on July 20, 1969, at 20:18 UTC.\r\n\t\t</h1>\r\n\t</div>\r\n\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/divreplace.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>Replace DIV &mdash; CKEditor Sample</title>\r\n\t<script src=\"../ckeditor.js\"></script>\r\n\t<link href=\"sample.css\" rel=\"stylesheet\">\r\n\t<style>\r\n\r\n\t\tdiv.editable\r\n\t\t{\r\n\t\t\tborder: solid 2px transparent;\r\n\t\t\tpadding-left: 15px;\r\n\t\t\tpadding-right: 15px;\r\n\t\t}\r\n\r\n\t\tdiv.editable:hover\r\n\t\t{\r\n\t\t\tborder-color: black;\r\n\t\t}\r\n\r\n\t</style>\r\n\t<script>\r\n\r\n\t\t// Uncomment the following code to test the \"Timeout Loading Method\".\r\n\t\t// CKEDITOR.loadFullCoreTimeout = 5;\r\n\r\n\t\twindow.onload = function() {\r\n\t\t\t// Listen to the double click event.\r\n\t\t\tif ( window.addEventListener )\r\n\t\t\t\tdocument.body.addEventListener( 'dblclick', onDoubleClick, false );\r\n\t\t\telse if ( window.attachEvent )\r\n\t\t\t\tdocument.body.attachEvent( 'ondblclick', onDoubleClick );\r\n\r\n\t\t};\r\n\r\n\t\tfunction onDoubleClick( ev ) {\r\n\t\t\t// Get the element which fired the event. This is not necessarily the\r\n\t\t\t// element to which the event has been attached.\r\n\t\t\tvar element = ev.target || ev.srcElement;\r\n\r\n\t\t\t// Find out the div that holds this element.\r\n\t\t\tvar name;\r\n\r\n\t\t\tdo {\r\n\t\t\t\telement = element.parentNode;\r\n\t\t\t}\r\n\t\t\twhile ( element && ( name = element.nodeName.toLowerCase() ) &&\r\n\t\t\t\t( name != 'div' || element.className.indexOf( 'editable' ) == -1 ) && name != 'body' );\r\n\r\n\t\t\tif ( name == 'div' && element.className.indexOf( 'editable' ) != -1 )\r\n\t\t\t\treplaceDiv( element );\r\n\t\t}\r\n\r\n\t\tvar editor;\r\n\r\n\t\tfunction replaceDiv( div ) {\r\n\t\t\tif ( editor )\r\n\t\t\t\teditor.destroy();\r\n\r\n\t\t\teditor = CKEDITOR.replace( div );\r\n\t\t}\r\n\r\n\t</script>\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"index.html\">CKEditor Samples</a> &raquo; Replace DIV with CKEditor on the Fly\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tThis sample shows how to automatically replace <code>&lt;div&gt;</code> elements\r\n\t\t\twith a CKEditor instance on the fly, following user's doubleclick. The content\r\n\t\t\tthat was previously placed inside the <code>&lt;div&gt;</code> element will now\r\n\t\t\tbe moved into CKEditor editing area.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tFor details on how to create this setup check the source code of this sample page.\r\n\t\t</p>\r\n\t</div>\r\n\t<p>\r\n\t\tDouble-click any of the following <code>&lt;div&gt;</code> elements to transform them into\r\n\t\teditor instances.\r\n\t</p>\r\n\t<div class=\"editable\">\r\n\t\t<h3>\r\n\t\t\tPart 1\r\n\t\t</h3>\r\n\t\t<p>\r\n\t\t\tLorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi\r\n\t\t\tsemper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna\r\n\t\t\trutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla\r\n\t\t\tnec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce\r\n\t\t\teu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.\r\n\t\t</p>\r\n\t</div>\r\n\t<div class=\"editable\">\r\n\t\t<h3>\r\n\t\t\tPart 2\r\n\t\t</h3>\r\n\t\t<p>\r\n\t\t\tLorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi\r\n\t\t\tsemper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna\r\n\t\t\trutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla\r\n\t\t\tnec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce\r\n\t\t\teu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tDonec velit. Mauris massa. Vestibulum non nulla. Nam suscipit arcu nec elit. Phasellus\r\n\t\t\tsollicitudin iaculis ante. Ut non mauris et sapien tincidunt adipiscing. Vestibulum\r\n\t\t\tvitae leo. Suspendisse nec mi tristique nulla laoreet vulputate.\r\n\t\t</p>\r\n\t</div>\r\n\t<div class=\"editable\">\r\n\t\t<h3>\r\n\t\t\tPart 3\r\n\t\t</h3>\r\n\t\t<p>\r\n\t\t\tLorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras et ipsum quis mi\r\n\t\t\tsemper accumsan. Integer pretium dui id massa. Suspendisse in nisl sit amet urna\r\n\t\t\trutrum imperdiet. Nulla eu tellus. Donec ante nisi, ullamcorper quis, fringilla\r\n\t\t\tnec, sagittis eleifend, pede. Nulla commodo interdum massa. Donec id metus. Fusce\r\n\t\t\teu ipsum. Suspendisse auctor. Phasellus fermentum porttitor risus.\r\n\t\t</p>\r\n\t</div>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/index.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>CKEditor Samples</title>\r\n\t<link rel=\"stylesheet\" href=\"sample.css\">\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\tCKEditor Samples\r\n\t</h1>\r\n\t<div class=\"twoColumns\">\r\n\t\t<div class=\"twoColumnsLeft\">\r\n\t\t\t<h2 class=\"samples\">\r\n\t\t\t\tBasic Samples\r\n\t\t\t</h2>\r\n\t\t\t<dl class=\"samples\">\r\n\t\t\t\t<dt><a class=\"samples\" href=\"replacebyclass.html\">Replace textarea elements by class name</a></dt>\r\n\t\t\t\t<dd>Automatic replacement of all textarea elements of a given class with a CKEditor instance.</dd>\r\n\r\n\t\t\t\t<dt><a class=\"samples\" href=\"replacebycode.html\">Replace textarea elements by code</a></dt>\r\n\t\t\t\t<dd>Replacement of textarea elements with CKEditor instances by using a JavaScript call.</dd>\r\n\r\n\t\t\t\t<dt><a class=\"samples\" href=\"jquery.html\">Create editors with jQuery</a></dt>\r\n\t\t\t\t<dd>Creating standard and inline CKEditor instances with jQuery adapter.</dd>\r\n\t\t\t</dl>\r\n\r\n\t\t\t<h2 class=\"samples\">\r\n\t\t\t\tBasic Customization\r\n\t\t\t</h2>\r\n\t\t\t<dl class=\"samples\">\r\n\t\t\t\t<dt><a class=\"samples\" href=\"uicolor.html\">User Interface color</a></dt>\r\n\t\t\t\t<dd>Changing CKEditor User Interface color and adding a toolbar button that lets the user set the UI color.</dd>\r\n\r\n\t\t\t\t<dt><a class=\"samples\" href=\"uilanguages.html\">User Interface languages</a></dt>\r\n\t\t\t\t<dd>Changing CKEditor User Interface language and adding a drop-down list that lets the user choose the UI language.</dd>\r\n\t\t\t</dl>\r\n\r\n\r\n\t\t\t<h2 class=\"samples\">Plugins</h2>\n<dl class=\"samples\">\n<dt><a class=\"samples\" href=\"plugins/magicline/magicline.html\">Magicline plugin</a></dt>\n<dd>Using the Magicline plugin to access difficult focus spaces.</dd>\n\n<dt><a class=\"samples\" href=\"plugins/wysiwygarea/fullpage.html\">Full page support</a></dt>\n<dd>CKEditor inserted with a JavaScript call and used to edit the whole page from &lt;html&gt; to &lt;/html&gt;.</dd>\n</dl>\r\n\t\t</div>\r\n\t\t<div class=\"twoColumnsRight\">\r\n\t\t\t<h2 class=\"samples\">\r\n\t\t\t\tInline Editing\r\n\t\t\t</h2>\r\n\t\t\t<dl class=\"samples\">\r\n\t\t\t\t<dt><a class=\"samples\" href=\"inlineall.html\">Massive inline editor creation</a></dt>\r\n\t\t\t\t<dd>Turn all elements with <code>contentEditable = true</code> attribute into inline editors.</dd>\r\n\r\n\t\t\t\t<dt><a class=\"samples\" href=\"inlinebycode.html\">Convert element into an inline editor by code</a></dt>\r\n\t\t\t\t<dd>Conversion of DOM elements into inline CKEditor instances by using a JavaScript call.</dd>\r\n\r\n\t\t\t\t<dt><a class=\"samples\" href=\"inlinetextarea.html\">Replace textarea with inline editor</a> <span class=\"new\">New!</span></dt>\r\n\t\t\t\t<dd>A form with a textarea that is replaced by an inline editor at runtime.</dd>\r\n\r\n\t\t\t\t\r\n\t\t\t</dl>\r\n\r\n\t\t\t<h2 class=\"samples\">\r\n\t\t\t\tAdvanced Samples\r\n\t\t\t</h2>\r\n\t\t\t<dl class=\"samples\">\r\n\t\t\t\t<dt><a class=\"samples\" href=\"datafiltering.html\">Data filtering and features activation</a> <span class=\"new\">New!</span></dt>\r\n\t\t\t\t<dd>Data filtering and automatic features activation basing on configuration.</dd>\r\n\r\n\t\t\t\t<dt><a class=\"samples\" href=\"divreplace.html\">Replace DIV elements on the fly</a></dt>\r\n\t\t\t\t<dd>Transforming a <code>div</code> element into an instance of CKEditor with a mouse click.</dd>\r\n\r\n\t\t\t\t<dt><a class=\"samples\" href=\"appendto.html\">Append editor instances</a></dt>\r\n\t\t\t\t<dd>Appending editor instances to existing DOM elements.</dd>\r\n\r\n\t\t\t\t<dt><a class=\"samples\" href=\"ajax.html\">Create and destroy editor instances for Ajax applications</a></dt>\r\n\t\t\t\t<dd>Creating and destroying CKEditor instances on the fly and saving the contents entered into the editor window.</dd>\r\n\r\n\t\t\t\t<dt><a class=\"samples\" href=\"api.html\">Basic usage of the API</a></dt>\r\n\t\t\t\t<dd>Using the CKEditor JavaScript API to interact with the editor at runtime.</dd>\r\n\r\n\t\t\t\t<dt><a class=\"samples\" href=\"xhtmlstyle.html\">XHTML-compliant style</a></dt>\r\n\t\t\t\t<dd>Configuring CKEditor to produce XHTML 1.1 compliant attributes and styles.</dd>\r\n\r\n\t\t\t\t<dt><a class=\"samples\" href=\"readonly.html\">Read-only mode</a></dt>\r\n\t\t\t\t<dd>Using the readOnly API to block introducing changes to the editor contents.</dd>\r\n\r\n\t\t\t\t<dt><a class=\"samples\" href=\"tabindex.html\">\"Tab\" key-based navigation</a></dt>\r\n\t\t\t\t<dd>Navigating among editor instances with tab key.</dd>\r\n\r\n\r\n\t\t\t\t\n<dt><a class=\"samples\" href=\"plugins/dialog/dialog.html\">Using the JavaScript API to customize dialog windows</a></dt>\n<dd>Using the dialog windows API to customize dialog windows without changing the original editor code.</dd>\n\n<dt><a class=\"samples\" href=\"plugins/enterkey/enterkey.html\">Using the &quot;Enter&quot; key in CKEditor</a></dt>\n<dd>Configuring the behavior of <em>Enter</em> and <em>Shift+Enter</em> keys.</dd>\n\n<dt><a class=\"samples\" href=\"plugins/htmlwriter/outputforflash.html\">Output for Flash</a></dt>\n<dd>Configuring CKEditor to produce HTML code that can be used with Adobe Flash.</dd>\n\n<dt><a class=\"samples\" href=\"plugins/htmlwriter/outputhtml.html\">Output HTML</a></dt>\n<dd>Configuring CKEditor to produce legacy HTML 4 code.</dd>\n\n<dt><a class=\"samples\" href=\"plugins/toolbar/toolbar.html\">Toolbar Configurations</a></dt>\n<dd>Configuring CKEditor to display full or custom toolbar layout.</dd>\n\r\n\t\t\t</dl>\r\n\t\t</div>\r\n\t</div>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico Knabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/index.php",
    "content": ""
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/inlineall.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>Massive inline editing &mdash; CKEditor Sample</title>\r\n\t<script src=\"../ckeditor.js\"></script>\r\n\t<script>\r\n\r\n\t\t// This code is generally not necessary, but it is here to demonstrate\r\n\t\t// how to customize specific editor instances on the fly. This fits well\r\n\t\t// this demo because we have editable elements (like headers) that\r\n\t\t// require less features.\r\n\r\n\t\t// The \"instanceCreated\" event is fired for every editor instance created.\r\n\t\tCKEDITOR.on( 'instanceCreated', function( event ) {\r\n\t\t\tvar editor = event.editor,\r\n\t\t\t\telement = editor.element;\r\n\r\n\t\t\t// Customize editors for headers and tag list.\r\n\t\t\t// These editors don't need features like smileys, templates, iframes etc.\r\n\t\t\tif ( element.is( 'h1', 'h2', 'h3' ) || element.getAttribute( 'id' ) == 'taglist' ) {\r\n\t\t\t\t// Customize the editor configurations on \"configLoaded\" event,\r\n\t\t\t\t// which is fired after the configuration file loading and\r\n\t\t\t\t// execution. This makes it possible to change the\r\n\t\t\t\t// configurations before the editor initialization takes place.\r\n\t\t\t\teditor.on( 'configLoaded', function() {\r\n\r\n\t\t\t\t\t// Remove unnecessary plugins to make the editor simpler.\r\n\t\t\t\t\teditor.config.removePlugins = 'colorbutton,find,flash,font,' +\r\n\t\t\t\t\t\t'forms,iframe,image,newpage,removeformat,' +\r\n\t\t\t\t\t\t'smiley,specialchar,stylescombo,templates';\r\n\r\n\t\t\t\t\t// Rearrange the layout of the toolbar.\r\n\t\t\t\t\teditor.config.toolbarGroups = [\r\n\t\t\t\t\t\t{ name: 'editing',\t\tgroups: [ 'basicstyles', 'links' ] },\r\n\t\t\t\t\t\t{ name: 'undo' },\r\n\t\t\t\t\t\t{ name: 'clipboard',\tgroups: [ 'selection', 'clipboard' ] },\r\n\t\t\t\t\t\t{ name: 'about' }\r\n\t\t\t\t\t];\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t</script>\r\n\t<link href=\"sample.css\" rel=\"stylesheet\">\r\n\t<style>\r\n\r\n\t\t/* The following styles are just to make the page look nice. */\r\n\r\n\t\t/* Workaround to show Arial Black in Firefox. */\r\n\t\t@font-face\r\n\t\t{\r\n\t\t\tfont-family: 'arial-black';\r\n\t\t\tsrc: local('Arial Black');\r\n\t\t}\r\n\r\n\t\t*[contenteditable=\"true\"]\r\n\t\t{\r\n\t\t\tpadding: 10px;\r\n\t\t}\r\n\r\n\t\t#container\r\n\t\t{\r\n\t\t\twidth: 960px;\r\n\t\t\tmargin: 30px auto 0;\r\n\t\t}\r\n\r\n\t\t#header\r\n\t\t{\r\n\t\t\toverflow: hidden;\r\n\t\t\tpadding: 0 0 30px;\r\n\t\t\tborder-bottom: 5px solid #05B2D2;\r\n\t\t\tposition: relative;\r\n\t\t}\r\n\r\n\t\t#headerLeft,\r\n\t\t#headerRight\r\n\t\t{\r\n\t\t\twidth: 49%;\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t#headerLeft\r\n\t\t{\r\n\t\t\tfloat: left;\r\n\t\t\tpadding: 10px 1px 1px;\r\n\t\t}\r\n\r\n\t\t#headerLeft h2,\r\n\t\t#headerLeft h3\r\n\t\t{\r\n\t\t\ttext-align: right;\r\n\t\t\tmargin: 0;\r\n\t\t\toverflow: hidden;\r\n\t\t\tfont-weight: normal;\r\n\t\t}\r\n\r\n\t\t#headerLeft h2\r\n\t\t{\r\n\t\t\tfont-family: \"Arial Black\",arial-black;\r\n\t\t\tfont-size: 4.6em;\r\n\t\t\tline-height: 1.1;\r\n\t\t\ttext-transform: uppercase;\r\n\t\t}\r\n\r\n\t\t#headerLeft h3\r\n\t\t{\r\n\t\t\tfont-size: 2.3em;\r\n\t\t\tline-height: 1.1;\r\n\t\t\tmargin: .2em 0 0;\r\n\t\t\tcolor: #666;\r\n\t\t}\r\n\r\n\t\t#headerRight\r\n\t\t{\r\n\t\t\tfloat: right;\r\n\t\t\tpadding: 1px;\r\n\t\t}\r\n\r\n\t\t#headerRight p\r\n\t\t{\r\n\t\t\tline-height: 1.8;\r\n\t\t\ttext-align: justify;\r\n\t\t\tmargin: 0;\r\n\t\t}\r\n\r\n\t\t#headerRight p + p\r\n\t\t{\r\n\t\t\tmargin-top: 20px;\r\n\t\t}\r\n\r\n\t\t#headerRight > div\r\n\t\t{\r\n\t\t\tpadding: 20px;\r\n\t\t\tmargin: 0 0 0 30px;\r\n\t\t\tfont-size: 1.4em;\r\n\t\t\tcolor: #666;\r\n\t\t}\r\n\r\n\t\t#columns\r\n\t\t{\r\n\t\t\tcolor: #333;\r\n\t\t\toverflow: hidden;\r\n\t\t\tpadding: 20px 0;\r\n\t\t}\r\n\r\n\t\t#columns > div\r\n\t\t{\r\n\t\t\tfloat: left;\r\n\t\t\twidth: 33.3%;\r\n\t\t}\r\n\r\n\t\t#columns #column1 > div\r\n\t\t{\r\n\t\t\tmargin-left: 1px;\r\n\t\t}\r\n\r\n\t\t#columns #column3 > div\r\n\t\t{\r\n\t\t\tmargin-right: 1px;\r\n\t\t}\r\n\r\n\t\t#columns > div > div\r\n\t\t{\r\n\t\t\tmargin: 0px 10px;\r\n\t\t\tpadding: 10px 20px;\r\n\t\t}\r\n\r\n\t\t#columns blockquote\r\n\t\t{\r\n\t\t\tmargin-left: 15px;\r\n\t\t}\r\n\r\n\t\t#tagLine\r\n\t\t{\r\n\t\t\tborder-top: 5px solid #05B2D2;\r\n\t\t\tpadding-top: 20px;\r\n\t\t}\r\n\r\n\t\t#taglist {\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tmargin-left: 20px;\r\n\t\t\tfont-weight: bold;\r\n\t\t\tmargin: 0 0 0 20px;\r\n\t\t}\r\n\r\n\t</style>\r\n</head>\r\n<body>\r\n<div>\r\n\t<h1 class=\"samples\"><a href=\"index.html\">CKEditor Samples</a> &raquo; Massive inline editing</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>This sample page demonstrates the inline editing feature - CKEditor instances will be created automatically from page elements with <strong>contentEditable</strong> attribute set to value <strong>true</strong>:</p>\r\n\t\t<pre class=\"samples\">&lt;div <strong>contenteditable=\"true</strong>\" &gt; ... &lt;/div&gt;</pre>\r\n\t\t<p>Click inside of any element below to start editing.</p>\r\n\t</div>\r\n</div>\r\n<div id=\"container\">\r\n\t<div id=\"header\">\r\n\t\t<div id=\"headerLeft\">\r\n\t\t\t<h2 id=\"sampleTitle\" contenteditable=\"true\">\r\n\t\t\t\tCKEditor<br> Goes Inline!\r\n\t\t\t</h2>\r\n\t\t\t<h3 contenteditable=\"true\">\r\n\t\t\t\tLorem ipsum dolor sit amet dolor duis blandit vestibulum faucibus a, tortor.\r\n\t\t\t</h3>\r\n\t\t</div>\r\n\t\t<div id=\"headerRight\">\r\n\t\t\t<div contenteditable=\"true\">\r\n\t\t\t\t<p>\r\n\t\t\t\t\tLorem ipsum dolor sit amet enim. Etiam ullamcorper. Suspendisse a pellentesque dui, non felis. Maecenas malesuada elit lectus felis, malesuada ultricies.\r\n\t\t\t\t</p>\r\n\t\t\t\t<p>\r\n\t\t\t\t\tCurabitur et ligula. Ut molestie a, ultricies porta urna. Vestibulum commodo volutpat a, convallis ac, laoreet enim. Phasellus fermentum in, dolor. Pellentesque facilisis. Nulla imperdiet sit amet magna. Vestibulum dapibus, mauris nec malesuada fames ac.\r\n\t\t\t\t</p>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div id=\"columns\">\r\n\t\t<div id=\"column1\">\r\n\t\t\t<div contenteditable=\"true\">\r\n\t\t\t\t<h3>\r\n\t\t\t\t\tFusce vitae porttitor\r\n\t\t\t\t</h3>\r\n\t\t\t\t<p>\r\n\t\t\t\t\t<strong>\r\n\t\t\t\t\t\tLorem ipsum dolor sit amet dolor. Duis blandit vestibulum faucibus a, tortor.\r\n\t\t\t\t\t</strong>\r\n\t\t\t\t</p>\r\n\t\t\t\t<p>\r\n\t\t\t\t\tProin nunc justo felis mollis tincidunt, risus risus pede, posuere cubilia Curae, Nullam euismod, enim. Etiam nibh ultricies dolor ac dignissim erat volutpat. Vivamus fermentum <a href=\"http://ckeditor.com/\">nisl nulla sem in</a> metus. Maecenas wisi. Donec nec erat volutpat.\r\n\t\t\t\t</p>\r\n\t\t\t\t<blockquote>\r\n\t\t\t\t\t<p>\r\n\t\t\t\t\t\tFusce vitae porttitor a, euismod convallis nisl, blandit risus tortor, pretium.\r\n\t\t\t\t\t\tVehicula vitae, imperdiet vel, ornare enim vel sodales rutrum\r\n\t\t\t\t\t</p>\r\n\t\t\t\t</blockquote>\r\n\t\t\t\t<blockquote>\r\n\t\t\t\t\t<p>\r\n\t\t\t\t\t\tLibero nunc, rhoncus ante ipsum non ipsum. Nunc eleifend pede turpis id sollicitudin fringilla. Phasellus ultrices, velit ac arcu.\r\n\t\t\t\t\t</p>\r\n\t\t\t\t</blockquote>\r\n\t\t\t\t<p>Pellentesque nunc. Donec suscipit erat. Pellentesque habitant morbi tristique ullamcorper.</p>\r\n\t\t\t\t<p><s>Mauris mattis feugiat lectus nec mauris. Nullam vitae ante.</s></p>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div id=\"column2\">\r\n\t\t\t<div contenteditable=\"true\">\r\n\t\t\t\t<h3>\r\n\t\t\t\t\tInteger condimentum sit amet\r\n\t\t\t\t</h3>\r\n\t\t\t\t<p>\r\n\t\t\t\t\t<strong>Aenean nonummy a, mattis varius. Cras aliquet.</strong>\r\n\t\t\t\t\tPraesent <a href=\"http://ckeditor.com/\">magna non mattis ac, rhoncus nunc</a>, rhoncus eget, cursus pulvinar mollis.</p>\r\n\t\t\t\t<p>Proin id nibh. Sed eu libero posuere sed, lectus. Phasellus dui gravida gravida feugiat mattis ac, felis.</p>\r\n\t\t\t\t<p>Integer condimentum sit amet, tempor elit odio, a dolor non ante at sapien. Sed ac lectus. Nulla ligula quis eleifend mi, id leo velit pede cursus arcu id nulla ac lectus. Phasellus vestibulum. Nunc viverra enim quis diam.</p>\r\n\t\t\t</div>\r\n\t\t\t<div contenteditable=\"true\">\r\n\t\t\t\t<h3>\r\n\t\t\t\t\tPraesent wisi accumsan sit amet nibh\r\n\t\t\t\t</h3>\r\n\t\t\t\t<p>Donec ullamcorper, risus tortor, pretium porttitor. Morbi quam quis lectus non leo.</p>\r\n\t\t\t\t<p style=\"margin-left: 40px; \">Integer faucibus scelerisque. Proin faucibus at, aliquet vulputate, odio at eros. Fusce <a href=\"http://ckeditor.com/\">gravida, erat vitae augue</a>. Fusce urna fringilla gravida.</p>\r\n\t\t\t\t<p>In hac habitasse platea dictumst. Praesent wisi accumsan sit amet nibh. Maecenas orci luctus a, lacinia quam sem, posuere commodo, odio condimentum tempor, pede semper risus. Suspendisse pede. In hac habitasse platea dictumst. Nam sed laoreet sit amet erat. Integer.</p>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div id=\"column3\">\r\n\t\t\t<div contenteditable=\"true\">\r\n\t\t\t\t<p>\r\n\t\t\t\t\t<img src=\"assets/inlineall/logo.png\" alt=\"CKEditor logo\" style=\"float:left\">\r\n\t\t\t\t</p>\r\n\t\t\t\t<p>Quisque justo neque, mattis sed, fermentum ultrices <strong>posuere cubilia Curae</strong>, Vestibulum elit metus, quis placerat ut, lectus. Ut sagittis, nunc libero, egestas consequat lobortis velit rutrum ut, faucibus turpis. Fusce porttitor, nulla quis turpis. Nullam laoreet vel, consectetuer tellus suscipit ultricies, hendrerit wisi. Donec odio nec velit ac nunc sit amet, accumsan cursus aliquet. Vestibulum ante sit amet sagittis mi.</p>\r\n\t\t\t\t<h3>\r\n\t\t\t\t\tNullam laoreet vel consectetuer tellus suscipit\r\n\t\t\t\t</h3>\r\n\t\t\t\t<ul>\r\n\t\t\t\t\t<li>Ut sagittis, nunc libero, egestas consequat lobortis velit rutrum ut, faucibus turpis.</li>\r\n\t\t\t\t\t<li>Fusce porttitor, nulla quis turpis. Nullam laoreet vel, consectetuer tellus suscipit ultricies, hendrerit wisi.</li>\r\n\t\t\t\t\t<li>Mauris eget tellus. Donec non felis. Nam eget dolor. Vestibulum enim. Donec.</li>\r\n\t\t\t\t</ul>\r\n\t\t\t\t<p>Quisque justo neque, mattis sed, <a href=\"http://ckeditor.com/\">fermentum ultrices posuere cubilia</a> Curae, Vestibulum elit metus, quis placerat ut, lectus.</p>\r\n\t\t\t\t<p>Nullam laoreet vel, consectetuer tellus suscipit ultricies, hendrerit wisi. Ut sagittis, nunc libero, egestas consequat lobortis velit rutrum ut, faucibus turpis. Fusce porttitor, nulla quis turpis.</p>\r\n\t\t\t\t<p>Donec odio nec velit ac nunc sit amet, accumsan cursus aliquet. Vestibulum ante sit amet sagittis mi. Sed in nonummy faucibus turpis. Mauris eget tellus. Donec non felis. Nam eget dolor. Vestibulum enim. Donec.</p>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n\t<div id=\"tagLine\">\r\n\t\tTags of this article:\r\n\t\t<p id=\"taglist\" contenteditable=\"true\">\r\n\t\t\tinline, editing, floating, CKEditor\r\n\t\t</p>\r\n\t</div>\r\n</div>\r\n<div id=\"footer\">\r\n\t<hr>\r\n\t<p>\r\n\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">\r\n\t\t\thttp://ckeditor.com</a>\r\n\t</p>\r\n\t<p id=\"copy\">\r\n\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a>\r\n\t\t- Frederico Knabben. All rights reserved.\r\n\t</p>\r\n</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/inlinebycode.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>Inline Editing by Code &mdash; CKEditor Sample</title>\r\n\t<script src=\"../ckeditor.js\"></script>\r\n\t<link href=\"sample.css\" rel=\"stylesheet\">\r\n\t<style>\r\n\r\n\t\t#editable\r\n\t\t{\r\n\t\t\tpadding: 10px;\r\n\t\t\tfloat: left;\r\n\t\t}\r\n\r\n\t</style>\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"index.html\">CKEditor Samples</a> &raquo; Inline Editing by Code\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tThis sample shows how to create an inline editor instance of CKEditor. It is created\r\n\t\t\twith a JavaScript call using the following code:\r\n\t\t</p>\r\n<pre class=\"samples\">\r\n// This property tells CKEditor to not activate every element with contenteditable=true element.\r\nCKEDITOR.disableAutoInline = true;\r\n\r\nvar editor = CKEDITOR.inline( document.getElementById( 'editable' ) );\r\n</pre>\r\n\t\t<p>\r\n\t\t\tNote that <code>editable</code> in the code above is the <code>id</code>\r\n\t\t\tattribute of the <code>&lt;div&gt;</code> element to be converted into an inline instance.\r\n\t\t</p>\r\n\t</div>\r\n\t<div id=\"editable\" contenteditable=\"true\">\r\n\t\t<h1><img alt=\"Saturn V carrying Apollo 11\" class=\"right\" src=\"assets/sample.jpg\" /> Apollo 11</h1>\r\n\r\n\t\t<p><b>Apollo 11</b> was the spaceflight that landed the first humans, Americans <a href=\"http://en.wikipedia.org/wiki/Neil_Armstrong\" title=\"Neil Armstrong\">Neil Armstrong</a> and <a href=\"http://en.wikipedia.org/wiki/Buzz_Aldrin\" title=\"Buzz Aldrin\">Buzz Aldrin</a>, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.</p>\r\n\r\n\t\t<p>Armstrong spent about <s>three and a half</s> two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&nbsp;kg) of lunar material for return to Earth. A third member of the mission, <a href=\"http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)\" title=\"Michael Collins (astronaut)\">Michael Collins</a>, piloted the <a href=\"http://en.wikipedia.org/wiki/Apollo_Command/Service_Module\" title=\"Apollo Command/Service Module\">command</a> spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.</p>\r\n\r\n\t\t<h2>Broadcasting and <em>quotes</em> <a id=\"quotes\" name=\"quotes\"></a></h2>\r\n\r\n\t\t<p>Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:</p>\r\n\r\n\t\t<blockquote>\r\n\t\t\t<p>One small step for [a] man, one giant leap for mankind.</p>\r\n\t\t</blockquote>\r\n\r\n\t\t<p>Apollo 11 effectively ended the <a href=\"http://en.wikipedia.org/wiki/Space_Race\" title=\"Space Race\">Space Race</a> and fulfilled a national goal proposed in 1961 by the late U.S. President <a href=\"http://en.wikipedia.org/wiki/John_F._Kennedy\" title=\"John F. Kennedy\">John F. Kennedy</a> in a speech before the United States Congress:</p>\r\n\r\n\t\t<blockquote>\r\n\t\t\t<p>[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.</p>\r\n\t\t</blockquote>\r\n\r\n\t\t<h2>Technical details <a id=\"tech-details\" name=\"tech-details\"></a></h2>\r\n\r\n\t\t<table align=\"right\" border=\"1\" bordercolor=\"#ccc\" cellpadding=\"5\" cellspacing=\"0\" style=\"border-collapse:collapse;margin:10px 0 10px 15px;\">\r\n\t\t\t<caption><strong>Mission crew</strong></caption>\r\n\t\t\t<thead>\r\n\t\t\t<tr>\r\n\t\t\t\t<th scope=\"col\">Position</th>\r\n\t\t\t\t<th scope=\"col\">Astronaut</th>\r\n\t\t\t</tr>\r\n\t\t\t</thead>\r\n\t\t\t<tbody>\r\n\t\t\t<tr>\r\n\t\t\t\t<td>Commander</td>\r\n\t\t\t\t<td>Neil A. Armstrong</td>\r\n\t\t\t</tr>\r\n\t\t\t<tr>\r\n\t\t\t\t<td>Command Module Pilot</td>\r\n\t\t\t\t<td>Michael Collins</td>\r\n\t\t\t</tr>\r\n\t\t\t<tr>\r\n\t\t\t\t<td>Lunar Module Pilot</td>\r\n\t\t\t\t<td>Edwin &quot;Buzz&quot; E. Aldrin, Jr.</td>\r\n\t\t\t</tr>\r\n\t\t\t</tbody>\r\n\t\t</table>\r\n\r\n\t\t<p>Launched by a <strong>Saturn V</strong> rocket from <a href=\"http://en.wikipedia.org/wiki/Kennedy_Space_Center\" title=\"Kennedy Space Center\">Kennedy Space Center</a> in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of <a href=\"http://en.wikipedia.org/wiki/NASA\" title=\"NASA\">NASA</a>&#39;s Apollo program. The Apollo spacecraft had three parts:</p>\r\n\r\n\t\t<ol>\r\n\t\t\t<li><strong>Command Module</strong> with a cabin for the three astronauts which was the only part which landed back on Earth</li>\r\n\t\t\t<li><strong>Service Module</strong> which supported the Command Module with propulsion, electrical power, oxygen and water</li>\r\n\t\t\t<li><strong>Lunar Module</strong> for landing on the Moon.</li>\r\n\t\t</ol>\r\n\r\n\t\t<p>After being sent to the Moon by the Saturn V&#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the <a href=\"http://en.wikipedia.org/wiki/Mare_Tranquillitatis\" title=\"Mare Tranquillitatis\">Sea of Tranquility</a>. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the <a href=\"http://en.wikipedia.org/wiki/Pacific_Ocean\" title=\"Pacific Ocean\">Pacific Ocean</a> on July 24.</p>\r\n\r\n\t\t<hr />\r\n\t\t<p style=\"text-align: right;\"><small>Source: <a href=\"http://en.wikipedia.org/wiki/Apollo_11\">Wikipedia.org</a></small></p>\r\n\t</div>\r\n\r\n\t<script>\r\n\t\t// We need to turn off the automatic editor creation first.\r\n\t\tCKEDITOR.disableAutoInline = true;\r\n\r\n\t\tvar editor = CKEDITOR.inline( 'editable' );\r\n\t</script>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p contenteditable=\"true\">\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">\r\n\t\t\t\thttp://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a>\r\n\t\t\t- Frederico Knabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/inlinetextarea.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>Replace Textarea with Inline Editor &mdash; CKEditor Sample</title>\r\n\t<script src=\"../ckeditor.js\"></script>\r\n\t<link href=\"sample.css\" rel=\"stylesheet\">\r\n\t<style>\r\n\r\n\t\t/* Style the CKEditor element to look like a textfield */\r\n\t\t.cke_textarea_inline\r\n\t\t{\r\n\t\t\tpadding: 10px;\r\n\t\t\theight: 200px;\r\n\t\t\toverflow: auto;\r\n\r\n\t\t\tborder: 1px solid gray;\r\n\t\t\t-webkit-appearance: textfield;\r\n\t\t}\r\n\r\n\t</style>\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"index.html\">CKEditor Samples</a> &raquo; Replace Textarea with Inline Editor\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tYou can also create an inline editor from a <code>textarea</code>\r\n\t\t\telement. In this case the <code>textarea</code> will be replaced\r\n\t\t\tby a <code>div</code> element with inline editing enabled.\r\n\t\t</p>\r\n<pre class=\"samples\">\r\n// \"article-body\" is the name of a textarea element.\r\nvar editor = CKEDITOR.inline( 'article-body' );\r\n</pre>\r\n\t</div>\r\n\t<form action=\"sample_posteddata.php\" method=\"post\">\r\n\t\t<h2>This is a sample form with some fields</h2>\r\n\t\t<p>\r\n\t\t\tTitle:<br>\r\n\t\t\t<input type=\"text\" name=\"title\" value=\"Sample Form\"></p>\r\n\t\t<p>\r\n\t\t\tArticle Body (Textarea converted to CKEditor):<br>\r\n\t\t\t<textarea name=\"article-body\" style=\"height: 200px\">\r\n\t\t\t\t&lt;h2&gt;Technical details &lt;a id=\"tech-details\" name=\"tech-details\"&gt;&lt;/a&gt;&lt;/h2&gt;\r\n\r\n\t\t\t\t&lt;table align=\"right\" border=\"1\" bordercolor=\"#ccc\" cellpadding=\"5\" cellspacing=\"0\" style=\"border-collapse:collapse;margin:10px 0 10px 15px;\"&gt;\r\n\t\t\t\t\t&lt;caption&gt;&lt;strong&gt;Mission crew&lt;/strong&gt;&lt;/caption&gt;\r\n\t\t\t\t\t&lt;thead&gt;\r\n\t\t\t\t\t&lt;tr&gt;\r\n\t\t\t\t\t\t&lt;th scope=\"col\"&gt;Position&lt;/th&gt;\r\n\t\t\t\t\t\t&lt;th scope=\"col\"&gt;Astronaut&lt;/th&gt;\r\n\t\t\t\t\t&lt;/tr&gt;\r\n\t\t\t\t\t&lt;/thead&gt;\r\n\t\t\t\t\t&lt;tbody&gt;\r\n\t\t\t\t\t&lt;tr&gt;\r\n\t\t\t\t\t\t&lt;td&gt;Commander&lt;/td&gt;\r\n\t\t\t\t\t\t&lt;td&gt;Neil A. Armstrong&lt;/td&gt;\r\n\t\t\t\t\t&lt;/tr&gt;\r\n\t\t\t\t\t&lt;tr&gt;\r\n\t\t\t\t\t\t&lt;td&gt;Command Module Pilot&lt;/td&gt;\r\n\t\t\t\t\t\t&lt;td&gt;Michael Collins&lt;/td&gt;\r\n\t\t\t\t\t&lt;/tr&gt;\r\n\t\t\t\t\t&lt;tr&gt;\r\n\t\t\t\t\t\t&lt;td&gt;Lunar Module Pilot&lt;/td&gt;\r\n\t\t\t\t\t\t&lt;td&gt;Edwin &quot;Buzz&quot; E. Aldrin, Jr.&lt;/td&gt;\r\n\t\t\t\t\t&lt;/tr&gt;\r\n\t\t\t\t\t&lt;/tbody&gt;\r\n\t\t\t\t&lt;/table&gt;\r\n\r\n\t\t\t\t&lt;p&gt;Launched by a &lt;strong&gt;Saturn V&lt;/strong&gt; rocket from &lt;a href=\"http://en.wikipedia.org/wiki/Kennedy_Space_Center\" title=\"Kennedy Space Center\"&gt;Kennedy Space Center&lt;/a&gt; in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of &lt;a href=\"http://en.wikipedia.org/wiki/NASA\" title=\"NASA\"&gt;NASA&lt;/a&gt;&#39;s Apollo program. The Apollo spacecraft had three parts:&lt;/p&gt;\r\n\r\n\t\t\t\t&lt;ol&gt;\r\n\t\t\t\t\t&lt;li&gt;&lt;strong&gt;Command Module&lt;/strong&gt; with a cabin for the three astronauts which was the only part which landed back on Earth&lt;/li&gt;\r\n\t\t\t\t\t&lt;li&gt;&lt;strong&gt;Service Module&lt;/strong&gt; which supported the Command Module with propulsion, electrical power, oxygen and water&lt;/li&gt;\r\n\t\t\t\t\t&lt;li&gt;&lt;strong&gt;Lunar Module&lt;/strong&gt; for landing on the Moon.&lt;/li&gt;\r\n\t\t\t\t&lt;/ol&gt;\r\n\r\n\t\t\t\t&lt;p&gt;After being sent to the Moon by the Saturn V&#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the &lt;a href=\"http://en.wikipedia.org/wiki/Mare_Tranquillitatis\" title=\"Mare Tranquillitatis\"&gt;Sea of Tranquility&lt;/a&gt;. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the &lt;a href=\"http://en.wikipedia.org/wiki/Pacific_Ocean\" title=\"Pacific Ocean\"&gt;Pacific Ocean&lt;/a&gt; on July 24.&lt;/p&gt;\r\n\r\n\t\t\t\t&lt;hr /&gt;\r\n\t\t\t\t&lt;p style=\"text-align: right;\"&gt;&lt;small&gt;Source: &lt;a href=\"http://en.wikipedia.org/wiki/Apollo_11\"&gt;Wikipedia.org&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;\r\n\t\t\t</textarea>\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\t<input type=\"submit\" value=\"Submit\">\r\n\t\t</p>\r\n\t</form>\r\n\r\n\t<script>\r\n\t\tCKEDITOR.inline( 'article-body' );\r\n\t</script>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p contenteditable=\"true\">\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">\r\n\t\t\t\thttp://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a>\r\n\t\t\t- Frederico Knabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/jquery.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>jQuery Adapter &mdash; CKEditor Sample</title>\r\n\t<script src=\"http://code.jquery.com/jquery-1.11.0.min.js\"></script>\r\n\t<script src=\"../ckeditor.js\"></script>\r\n\t<script src=\"../adapters/jquery.js\"></script>\r\n\t<link href=\"sample.css\" rel=\"stylesheet\">\r\n\t<style>\r\n\r\n\t\t#editable\r\n\t\t{\r\n\t\t\tpadding: 10px;\r\n\t\t\tfloat: left;\r\n\t\t}\r\n\r\n\t</style>\r\n\t<script>\r\n\r\n\t\tCKEDITOR.disableAutoInline = true;\r\n\r\n\t\t$( document ).ready( function() {\r\n\t\t\t$( '#editor1' ).ckeditor(); // Use CKEDITOR.replace() if element is <textarea>.\r\n\t\t\t$( '#editable' ).ckeditor(); // Use CKEDITOR.inline().\r\n\t\t} );\r\n\r\n\t\tfunction setValue() {\r\n\t\t\t$( '#editor1' ).val( $( 'input#val' ).val() );\r\n\t\t}\r\n\r\n\t</script>\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"index.html\" id=\"a-test\">CKEditor Samples</a> &raquo; Create Editors with jQuery\r\n\t</h1>\r\n\t<form action=\"sample_posteddata.php\" method=\"post\">\r\n\t\t<div class=\"description\">\r\n\t\t\t<p>\r\n\t\t\t\tThis sample shows how to use the <a href=\"http://docs.ckeditor.com/#!/guide/dev_jquery\">jQuery adapter</a>.\r\n\t\t\t\tNote that you have to include both CKEditor and jQuery scripts before including the adapter.\r\n\t\t\t</p>\r\n\r\n<pre class=\"samples\">\r\n&lt;script src=\"//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js\"&gt;&lt;/script&gt;\r\n&lt;script src=\"/ckeditor/ckeditor.js\"&gt;&lt;/script&gt;\r\n&lt;script src=\"/ckeditor/adapters/jquery.js\"&gt;&lt;/script&gt;\r\n</pre>\r\n\r\n\t\t\t<p>Then you can replace HTML elements with a CKEditor instance using the <code>ckeditor()</code> method.</p>\r\n\r\n<pre class=\"samples\">\r\n$( document ).ready( function() {\r\n\t$( 'textarea#editor1' ).ckeditor();\r\n} );\r\n</pre>\r\n\t\t</div>\r\n\r\n\t\t<h2 class=\"samples\">Inline Example</h2>\r\n\r\n\t\t<div id=\"editable\" contenteditable=\"true\">\r\n\t\t\t<p><img alt=\"Saturn V carrying Apollo 11\" class=\"right\" src=\"assets/sample.jpg\"/><b>Apollo 11</b> was the spaceflight that landed the first humans, Americans <a href=\"http://en.wikipedia.org/wiki/Neil_Armstrong\" title=\"Neil Armstrong\">Neil Armstrong</a> and <a href=\"http://en.wikipedia.org/wiki/Buzz_Aldrin\" title=\"Buzz Aldrin\">Buzz Aldrin</a>, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.</p>\r\n\t\t\t<p>Armstrong spent about <s>three and a half</s> two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&nbsp;kg) of lunar material for return to Earth. A third member of the mission, <a href=\"http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)\" title=\"Michael Collins (astronaut)\">Michael Collins</a>, piloted the <a href=\"http://en.wikipedia.org/wiki/Apollo_Command/Service_Module\" title=\"Apollo Command/Service Module\">command</a> spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.\r\n\t\t\t<p>Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:</p>\r\n\t\t\t<blockquote><p>One small step for [a] man, one giant leap for mankind.</p></blockquote> <p>Apollo 11 effectively ended the <a href=\"http://en.wikipedia.org/wiki/Space_Race\" title=\"Space Race\">Space Race</a> and fulfilled a national goal proposed in 1961 by the late U.S. President <a href=\"http://en.wikipedia.org/wiki/John_F._Kennedy\" title=\"John F. Kennedy\">John F. Kennedy</a> in a speech before the United States Congress:</p> <blockquote><p>[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.</p></blockquote>\r\n\t\t</div>\r\n\r\n\t\t<br style=\"clear: both\">\r\n\r\n\t\t<h2 class=\"samples\">Classic (iframe-based) Example</h2>\r\n\r\n\t\t<textarea cols=\"80\" id=\"editor1\" name=\"editor1\" rows=\"10\">\r\n\t\t\t&lt;h2&gt;Technical details &lt;a id=&quot;tech-details&quot; name=&quot;tech-details&quot;&gt;&lt;/a&gt;&lt;/h2&gt; &lt;table align=&quot;right&quot; border=&quot;1&quot; bordercolor=&quot;#ccc&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse:collapse;margin:10px 0 10px 15px;&quot;&gt; &lt;caption&gt;&lt;strong&gt;Mission crew&lt;/strong&gt;&lt;/caption&gt; &lt;thead&gt; &lt;tr&gt; &lt;th scope=&quot;col&quot;&gt;Position&lt;/th&gt; &lt;th scope=&quot;col&quot;&gt;Astronaut&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;Commander&lt;/td&gt; &lt;td&gt;Neil A. Armstrong&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Command Module Pilot&lt;/td&gt; &lt;td&gt;Michael Collins&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Lunar Module Pilot&lt;/td&gt; &lt;td&gt;Edwin &amp;quot;Buzz&amp;quot; E. Aldrin, Jr.&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;Launched by a &lt;strong&gt;Saturn V&lt;/strong&gt; rocket from &lt;a href=&quot;http://en.wikipedia.org/wiki/Kennedy_Space_Center&quot; title=&quot;Kennedy Space Center&quot;&gt;Kennedy Space Center&lt;/a&gt; in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of &lt;a href=&quot;http://en.wikipedia.org/wiki/NASA&quot; title=&quot;NASA&quot;&gt;NASA&lt;/a&gt;&amp;#39;s Apollo program. The Apollo spacecraft had three parts:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;strong&gt;Command Module&lt;/strong&gt; with a cabin for the three astronauts which was the only part which landed back on Earth&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Service Module&lt;/strong&gt; which supported the Command Module with propulsion, electrical power, oxygen and water&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Lunar Module&lt;/strong&gt; for landing on the Moon.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;After being sent to the Moon by the Saturn V&amp;#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Mare_Tranquillitatis&quot; title=&quot;Mare Tranquillitatis&quot;&gt;Sea of Tranquility&lt;/a&gt;. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Pacific_Ocean&quot; title=&quot;Pacific Ocean&quot;&gt;Pacific Ocean&lt;/a&gt; on July 24.&lt;/p&gt; &lt;hr/&gt; &lt;p style=&quot;text-align: right;&quot;&gt;&lt;small&gt;Source: &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_11&quot;&gt;Wikipedia.org&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;\r\n\t\t</textarea>\r\n\r\n\t\t<p style=\"overflow: hidden\">\r\n\t\t\t<input style=\"float: left\" type=\"submit\" value=\"Submit\">\r\n\t\t\t<span style=\"float: right\">\r\n\t\t\t\t<input type=\"text\" id=\"val\" value=\"I'm using jQuery val()!\" size=\"30\">\r\n\t\t\t\t<input onclick=\"setValue();\" type=\"button\" value=\"Set value\">\r\n\t\t\t</span>\r\n\t\t</p>\r\n\t</form>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/plugins/dialog/assets/my_dialog.js",
    "content": "﻿/**\r\n * Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\n * For licensing, see LICENSE.md or http://ckeditor.com/license\r\n */\r\n\r\nCKEDITOR.dialog.add( 'myDialog', function( editor ) {\r\n\treturn {\r\n\t\ttitle: 'My Dialog',\r\n\t\tminWidth: 400,\r\n\t\tminHeight: 200,\r\n\t\tcontents: [\r\n\t\t\t{\r\n\t\t\t\tid: 'tab1',\r\n\t\t\t\tlabel: 'First Tab',\r\n\t\t\t\ttitle: 'First Tab',\r\n\t\t\t\telements: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: 'input1',\r\n\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\tlabel: 'Text Field'\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: 'select1',\r\n\t\t\t\t\t\ttype: 'select',\r\n\t\t\t\t\t\tlabel: 'Select Field',\r\n\t\t\t\t\t\titems: [\r\n\t\t\t\t\t\t\t[ 'option1', 'value1' ],\r\n\t\t\t\t\t\t\t[ 'option2', 'value2' ]\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tid: 'tab2',\r\n\t\t\t\tlabel: 'Second Tab',\r\n\t\t\t\ttitle: 'Second Tab',\r\n\t\t\t\telements: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: 'button1',\r\n\t\t\t\t\t\ttype: 'button',\r\n\t\t\t\t\t\tlabel: 'Button Field'\r\n\t\t\t\t\t}\r\n\t\t\t\t]\r\n\t\t\t}\r\n\t\t]\r\n\t};\r\n} );\r\n\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/plugins/dialog/dialog.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>Using API to Customize Dialog Windows &mdash; CKEditor Sample</title>\r\n\t<script src=\"../../../ckeditor.js\"></script>\r\n\t<link rel=\"stylesheet\" href=\"../../../samples/sample.css\">\r\n\t<meta name=\"ckeditor-sample-name\" content=\"Using the JavaScript API to customize dialog windows\">\r\n\t<meta name=\"ckeditor-sample-group\" content=\"Advanced Samples\">\r\n\t<meta name=\"ckeditor-sample-description\" content=\"Using the dialog windows API to customize dialog windows without changing the original editor code.\">\r\n\t<style>\r\n\r\n\t\t.cke_button__mybutton_icon\r\n\t\t{\r\n\t\t\tdisplay: none !important;\r\n\t\t}\r\n\r\n\t\t.cke_button__mybutton_label\r\n\t\t{\r\n\t\t\tdisplay: inline !important;\r\n\t\t}\r\n\r\n\t</style>\r\n\t<script>\r\n\r\n\t\tCKEDITOR.on( 'instanceCreated', function( ev ){\r\n\t\t\tvar editor = ev.editor;\r\n\r\n\t\t\t// Listen for the \"pluginsLoaded\" event, so we are sure that the\r\n\t\t\t// \"dialog\" plugin has been loaded and we are able to do our\r\n\t\t\t// customizations.\r\n\t\t\teditor.on( 'pluginsLoaded', function() {\r\n\r\n\t\t\t\t// If our custom dialog has not been registered, do that now.\r\n\t\t\t\tif ( !CKEDITOR.dialog.exists( 'myDialog' ) ) {\r\n\t\t\t\t\t// We need to do the following trick to find out the dialog\r\n\t\t\t\t\t// definition file URL path. In the real world, you would simply\r\n\t\t\t\t\t// point to an absolute path directly, like \"/mydir/mydialog.js\".\r\n\t\t\t\t\tvar href = document.location.href.split( '/' );\r\n\t\t\t\t\thref.pop();\r\n\t\t\t\t\thref.push( 'assets/my_dialog.js' );\r\n\t\t\t\t\thref = href.join( '/' );\r\n\r\n\t\t\t\t\t// Finally, register the dialog.\r\n\t\t\t\t\tCKEDITOR.dialog.add( 'myDialog', href );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Register the command used to open the dialog.\r\n\t\t\t\teditor.addCommand( 'myDialogCmd', new CKEDITOR.dialogCommand( 'myDialog' ) );\r\n\r\n\t\t\t\t// Add the a custom toolbar buttons, which fires the above\r\n\t\t\t\t// command..\r\n\t\t\t\teditor.ui.add( 'MyButton', CKEDITOR.UI_BUTTON, {\r\n\t\t\t\t\tlabel: 'My Dialog',\r\n\t\t\t\t\tcommand: 'myDialogCmd'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t// When opening a dialog, its \"definition\" is created for it, for\r\n\t\t// each editor instance. The \"dialogDefinition\" event is then\r\n\t\t// fired. We should use this event to make customizations to the\r\n\t\t// definition of existing dialogs.\r\n\t\tCKEDITOR.on( 'dialogDefinition', function( ev ) {\r\n\t\t\t// Take the dialog name and its definition from the event data.\r\n\t\t\tvar dialogName = ev.data.name;\r\n\t\t\tvar dialogDefinition = ev.data.definition;\r\n\r\n\t\t\t// Check if the definition is from the dialog we're\r\n\t\t\t// interested on (the \"Link\" dialog).\r\n\t\t\tif ( dialogName == 'myDialog' && ev.editor.name == 'editor2' ) {\r\n\t\t\t\t// Get a reference to the \"Link Info\" tab.\r\n\t\t\t\tvar infoTab = dialogDefinition.getContents( 'tab1' );\r\n\r\n\t\t\t\t// Add a new text field to the \"tab1\" tab page.\r\n\t\t\t\tinfoTab.add( {\r\n\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\tlabel: 'My Custom Field',\r\n\t\t\t\t\tid: 'customField',\r\n\t\t\t\t\t'default': 'Sample!',\r\n\t\t\t\t\tvalidate: function() {\r\n\t\t\t\t\t\tif ( ( /\\d/ ).test( this.getValue() ) )\r\n\t\t\t\t\t\t\treturn 'My Custom Field must not contain digits';\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// Remove the \"select1\" field from the \"tab1\" tab.\r\n\t\t\t\tinfoTab.remove( 'select1' );\r\n\r\n\t\t\t\t// Set the default value for \"input1\" field.\r\n\t\t\t\tvar input1 = infoTab.get( 'input1' );\r\n\t\t\t\tinput1[ 'default' ] = 'www.example.com';\r\n\r\n\t\t\t\t// Remove the \"tab2\" tab page.\r\n\t\t\t\tdialogDefinition.removeContents( 'tab2' );\r\n\r\n\t\t\t\t// Add a new tab to the \"Link\" dialog.\r\n\t\t\t\tdialogDefinition.addContents( {\r\n\t\t\t\t\tid: 'customTab',\r\n\t\t\t\t\tlabel: 'My Tab',\r\n\t\t\t\t\taccessKey: 'M',\r\n\t\t\t\t\telements: [\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: 'myField1',\r\n\t\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\t\tlabel: 'My Text Field'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tid: 'myField2',\r\n\t\t\t\t\t\t\ttype: 'text',\r\n\t\t\t\t\t\t\tlabel: 'Another Text Field'\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t]\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// Provide the focus handler to start initial focus in \"customField\" field.\r\n\t\t\t\tdialogDefinition.onFocus = function() {\r\n\t\t\t\t\tvar urlField = this.getContentElement( 'tab1', 'customField' );\r\n\t\t\t\t\turlField.select();\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tvar config = {\r\n\t\t\textraPlugins: 'dialog',\r\n\t\t\ttoolbar: [ [ 'MyButton' ] ]\r\n\t\t};\r\n\r\n\t</script>\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"../../../samples/index.html\">CKEditor Samples</a> &raquo; Using CKEditor Dialog API\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tThis sample shows how to use the\r\n\t\t\t<a class=\"samples\" href=\"http://docs.ckeditor.com/#!/api/CKEDITOR.dialog\">CKEditor Dialog API</a>\r\n\t\t\tto customize CKEditor dialog windows without changing the original editor code.\r\n\t\t\tThe following customizations are being done in the example below:\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tFor details on how to create this setup check the source code of this sample page.\r\n\t\t</p>\r\n\t</div>\r\n\t<p>A custom dialog is added to the editors using the <code>pluginsLoaded</code> event, from an external <a target=\"_blank\" href=\"assets/my_dialog.js\">dialog definition file</a>:</p>\r\n\t<ol>\r\n\t\t<li><strong>Creating a custom dialog window</strong> &ndash; \"My Dialog\" dialog window opened with the \"My Dialog\" toolbar button.</li>\r\n\t\t<li><strong>Creating a custom button</strong> &ndash; Add button to open the dialog with \"My Dialog\" toolbar button.</li>\r\n\t</ol>\r\n\t<textarea cols=\"80\" id=\"editor1\" name=\"editor1\" rows=\"10\">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href=\"http://ckeditor.com/\"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>\r\n\t<script>\r\n\t\t// Replace the <textarea id=\"editor1\"> with an CKEditor instance.\r\n\t\tCKEDITOR.replace( 'editor1', config );\r\n\t</script>\r\n\t<p>The below editor modify the dialog definition of the above added dialog using the <code>dialogDefinition</code> event:</p>\r\n\t<ol>\r\n\t\t<li><strong>Adding dialog tab</strong> &ndash; Add new tab \"My Tab\" to dialog window.</li>\r\n\t\t<li><strong>Removing a dialog window tab</strong> &ndash; Remove \"Second Tab\" page from the dialog window.</li>\r\n\t\t<li><strong>Adding dialog window fields</strong> &ndash; Add \"My Custom Field\" to the dialog window.</li>\r\n\t\t<li><strong>Removing dialog window field</strong> &ndash; Remove \"Select Field\" selection field from the dialog window.</li>\r\n\t\t<li><strong>Setting default values for dialog window fields</strong> &ndash; Set default value of \"Text Field\" text field. </li>\r\n\t\t<li><strong>Setup initial focus for dialog window</strong> &ndash; Put initial focus on \"My Custom Field\" text field. </li>\r\n\t</ol>\r\n\t<textarea cols=\"80\" id=\"editor2\" name=\"editor2\" rows=\"10\">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href=\"http://ckeditor.com/\"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>\r\n\t<script>\r\n\r\n\t\t// Replace the <textarea id=\"editor1\"> with an CKEditor instance.\r\n\t\tCKEDITOR.replace( 'editor2', config );\r\n\r\n\t</script>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/plugins/enterkey/enterkey.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>ENTER Key Configuration &mdash; CKEditor Sample</title>\r\n\t<script src=\"../../../ckeditor.js\"></script>\r\n\t<link href=\"../../../samples/sample.css\" rel=\"stylesheet\">\r\n\t<meta name=\"ckeditor-sample-name\" content=\"Using the &quot;Enter&quot; key in CKEditor\">\r\n\t<meta name=\"ckeditor-sample-group\" content=\"Advanced Samples\">\r\n\t<meta name=\"ckeditor-sample-description\" content=\"Configuring the behavior of &lt;em&gt;Enter&lt;/em&gt; and &lt;em&gt;Shift+Enter&lt;/em&gt; keys.\">\r\n\t<script>\r\n\r\n\t\tvar editor;\r\n\r\n\t\tfunction changeEnter() {\r\n\t\t\t// If we already have an editor, let's destroy it first.\r\n\t\t\tif ( editor )\r\n\t\t\t\teditor.destroy( true );\r\n\r\n\t\t\t// Create the editor again, with the appropriate settings.\r\n\t\t\teditor = CKEDITOR.replace( 'editor1', {\r\n\t\t\t\textraPlugins: 'enterkey',\r\n\t\t\t\tenterMode: Number( document.getElementById( 'xEnter' ).value ),\r\n\t\t\t\tshiftEnterMode: Number( document.getElementById( 'xShiftEnter' ).value )\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\twindow.onload = changeEnter;\r\n\r\n\t</script>\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"../../../samples/index.html\">CKEditor Samples</a> &raquo; ENTER Key Configuration\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tThis sample shows how to configure the <em>Enter</em> and <em>Shift+Enter</em> keys\r\n\t\t\tto perform actions specified in the\r\n\t\t\t<a class=\"samples\" href=\"http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-enterMode\"><code>enterMode</code></a>\r\n\t\t\tand <a class=\"samples\" href=\"http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-shiftEnterMode\"><code>shiftEnterMode</code></a>\r\n\t\t\tparameters, respectively.\r\n\t \t\tYou can choose from the following options:\r\n\t\t</p>\r\n\t\t<ul class=\"samples\">\r\n\t\t\t<li><strong><code>ENTER_P</code></strong> &ndash; new <code>&lt;p&gt;</code> paragraphs are created;</li>\r\n\t\t\t<li><strong><code>ENTER_BR</code></strong> &ndash; lines are broken with <code>&lt;br&gt;</code> elements;</li>\r\n\t\t\t<li><strong><code>ENTER_DIV</code></strong> &ndash; new <code>&lt;div&gt;</code> blocks are created.</li>\r\n\t\t</ul>\r\n\t\t<p>\r\n\t\t\tThe sample code below shows how to configure CKEditor to create a <code>&lt;div&gt;</code> block when <em>Enter</em> key is pressed.\r\n\t\t</p>\r\n<pre class=\"samples\">\r\nCKEDITOR.replace( '<em>textarea_id</em>', {\r\n\t<strong>enterMode: CKEDITOR.ENTER_DIV</strong>\r\n});</pre>\r\n\t\t<p>\r\n\t\t\tNote that <code><em>textarea_id</em></code> in the code above is the <code>id</code> attribute of\r\n\t\t\tthe <code>&lt;textarea&gt;</code> element to be replaced.\r\n\t\t</p>\r\n\t</div>\r\n\t<div style=\"float: left; margin-right: 20px\">\r\n\t\tWhen <em>Enter</em> is pressed:<br>\r\n\t\t<select id=\"xEnter\" onchange=\"changeEnter();\">\r\n\t\t\t<option selected=\"selected\" value=\"1\">Create a new &lt;P&gt; (recommended)</option>\r\n\t\t\t<option value=\"3\">Create a new &lt;DIV&gt;</option>\r\n\t\t\t<option value=\"2\">Break the line with a &lt;BR&gt;</option>\r\n\t\t</select>\r\n\t</div>\r\n\t<div style=\"float: left\">\r\n\t\tWhen <em>Shift+Enter</em> is pressed:<br>\r\n\t\t<select id=\"xShiftEnter\" onchange=\"changeEnter();\">\r\n\t\t\t<option value=\"1\">Create a new &lt;P&gt;</option>\r\n\t\t\t<option value=\"3\">Create a new &lt;DIV&gt;</option>\r\n\t\t\t<option selected=\"selected\" value=\"2\">Break the line with a &lt;BR&gt; (recommended)</option>\r\n\t\t</select>\r\n\t</div>\r\n\t<br style=\"clear: both\">\r\n\t<form action=\"../../../samples/sample_posteddata.php\" method=\"post\">\r\n\t\t<p>\r\n\t\t\t<br>\r\n\t\t\t<textarea cols=\"80\" id=\"editor1\" name=\"editor1\" rows=\"10\">This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href=\"http://ckeditor.com/\"&gt;CKEditor&lt;/a&gt;.</textarea>\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\t<input type=\"submit\" value=\"Submit\">\r\n\t\t</p>\r\n\t</form>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/plugins/htmlwriter/assets/outputforflash/swfobject.js",
    "content": "﻿var swfobject=function(){function u(){if(!s){try{var a=d.getElementsByTagName(\"body\")[0].appendChild(d.createElement(\"span\"));a.parentNode.removeChild(a)}catch(b){return}s=!0;for(var a=x.length,c=0;c<a;c++)x[c]()}}function L(a){s?a():x[x.length]=a}function M(a){if(typeof m.addEventListener!=i)m.addEventListener(\"load\",a,!1);else if(typeof d.addEventListener!=i)d.addEventListener(\"load\",a,!1);else if(typeof m.attachEvent!=i)U(m,\"onload\",a);else if(\"function\"==typeof m.onload){var b=m.onload;m.onload=\nfunction(){b();a()}}else m.onload=a}function V(){var a=d.getElementsByTagName(\"body\")[0],b=d.createElement(r);b.setAttribute(\"type\",y);var c=a.appendChild(b);if(c){var f=0;(function(){if(typeof c.GetVariable!=i){var g=c.GetVariable(\"$version\");g&&(g=g.split(\" \")[1].split(\",\"),e.pv=[parseInt(g[0],10),parseInt(g[1],10),parseInt(g[2],10)])}else if(10>f){f++;setTimeout(arguments.callee,10);return}a.removeChild(b);c=null;D()})()}else D()}function D(){var a=p.length;if(0<a)for(var b=0;b<a;b++){var c=p[b].id,\nf=p[b].callbackFn,g={success:!1,id:c};if(0<e.pv[0]){var d=n(c);if(d)if(z(p[b].swfVersion)&&!(e.wk&&312>e.wk))t(c,!0),f&&(g.success=!0,g.ref=E(c),f(g));else if(p[b].expressInstall&&F()){g={};g.data=p[b].expressInstall;g.width=d.getAttribute(\"width\")||\"0\";g.height=d.getAttribute(\"height\")||\"0\";d.getAttribute(\"class\")&&(g.styleclass=d.getAttribute(\"class\"));d.getAttribute(\"align\")&&(g.align=d.getAttribute(\"align\"));for(var h={},d=d.getElementsByTagName(\"param\"),j=d.length,k=0;k<j;k++)\"movie\"!=d[k].getAttribute(\"name\").toLowerCase()&&\n(h[d[k].getAttribute(\"name\")]=d[k].getAttribute(\"value\"));G(g,h,c,f)}else W(d),f&&f(g)}else if(t(c,!0),f){if((c=E(c))&&typeof c.SetVariable!=i)g.success=!0,g.ref=c;f(g)}}}function E(a){var b=null;if((a=n(a))&&\"OBJECT\"==a.nodeName)typeof a.SetVariable!=i?b=a:(a=a.getElementsByTagName(r)[0])&&(b=a);return b}function F(){return!A&&z(\"6.0.65\")&&(e.win||e.mac)&&!(e.wk&&312>e.wk)}function G(a,b,c,f){A=!0;H=f||null;N={success:!1,id:c};var g=n(c);if(g){\"OBJECT\"==g.nodeName?(w=I(g),B=null):(w=g,B=c);a.id=\nO;if(typeof a.width==i||!/%$/.test(a.width)&&310>parseInt(a.width,10))a.width=\"310\";if(typeof a.height==i||!/%$/.test(a.height)&&137>parseInt(a.height,10))a.height=\"137\";d.title=d.title.slice(0,47)+\" - Flash Player Installation\";f=e.ie&&e.win?\"ActiveX\":\"PlugIn\";f=\"MMredirectURL=\"+m.location.toString().replace(/&/g,\"%26\")+\"&MMplayerType=\"+f+\"&MMdoctitle=\"+d.title;b.flashvars=typeof b.flashvars!=i?b.flashvars+(\"&\"+f):f;e.ie&&(e.win&&4!=g.readyState)&&(f=d.createElement(\"div\"),c+=\"SWFObjectNew\",f.setAttribute(\"id\",\nc),g.parentNode.insertBefore(f,g),g.style.display=\"none\",function(){g.readyState==4?g.parentNode.removeChild(g):setTimeout(arguments.callee,10)}());J(a,b,c)}}function W(a){if(e.ie&&e.win&&4!=a.readyState){var b=d.createElement(\"div\");a.parentNode.insertBefore(b,a);b.parentNode.replaceChild(I(a),b);a.style.display=\"none\";(function(){4==a.readyState?a.parentNode.removeChild(a):setTimeout(arguments.callee,10)})()}else a.parentNode.replaceChild(I(a),a)}function I(a){var b=d.createElement(\"div\");if(e.win&&\ne.ie)b.innerHTML=a.innerHTML;else if(a=a.getElementsByTagName(r)[0])if(a=a.childNodes)for(var c=a.length,f=0;f<c;f++)!(1==a[f].nodeType&&\"PARAM\"==a[f].nodeName)&&8!=a[f].nodeType&&b.appendChild(a[f].cloneNode(!0));return b}function J(a,b,c){var f,g=n(c);if(e.wk&&312>e.wk)return f;if(g)if(typeof a.id==i&&(a.id=c),e.ie&&e.win){var o=\"\",h;for(h in a)a[h]!=Object.prototype[h]&&(\"data\"==h.toLowerCase()?b.movie=a[h]:\"styleclass\"==h.toLowerCase()?o+=' class=\"'+a[h]+'\"':\"classid\"!=h.toLowerCase()&&(o+=\" \"+\nh+'=\"'+a[h]+'\"'));h=\"\";for(var j in b)b[j]!=Object.prototype[j]&&(h+='<param name=\"'+j+'\" value=\"'+b[j]+'\" />');g.outerHTML='<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"'+o+\">\"+h+\"</object>\";C[C.length]=a.id;f=n(a.id)}else{j=d.createElement(r);j.setAttribute(\"type\",y);for(var k in a)a[k]!=Object.prototype[k]&&(\"styleclass\"==k.toLowerCase()?j.setAttribute(\"class\",a[k]):\"classid\"!=k.toLowerCase()&&j.setAttribute(k,a[k]));for(o in b)b[o]!=Object.prototype[o]&&\"movie\"!=o.toLowerCase()&&\n(a=j,h=o,k=b[o],c=d.createElement(\"param\"),c.setAttribute(\"name\",h),c.setAttribute(\"value\",k),a.appendChild(c));g.parentNode.replaceChild(j,g);f=j}return f}function P(a){var b=n(a);b&&\"OBJECT\"==b.nodeName&&(e.ie&&e.win?(b.style.display=\"none\",function(){if(4==b.readyState){var c=n(a);if(c){for(var f in c)\"function\"==typeof c[f]&&(c[f]=null);c.parentNode.removeChild(c)}}else setTimeout(arguments.callee,10)}()):b.parentNode.removeChild(b))}function n(a){var b=null;try{b=d.getElementById(a)}catch(c){}return b}\nfunction U(a,b,c){a.attachEvent(b,c);v[v.length]=[a,b,c]}function z(a){var b=e.pv,a=a.split(\".\");a[0]=parseInt(a[0],10);a[1]=parseInt(a[1],10)||0;a[2]=parseInt(a[2],10)||0;return b[0]>a[0]||b[0]==a[0]&&b[1]>a[1]||b[0]==a[0]&&b[1]==a[1]&&b[2]>=a[2]?!0:!1}function Q(a,b,c,f){if(!e.ie||!e.mac){var g=d.getElementsByTagName(\"head\")[0];if(g){c=c&&\"string\"==typeof c?c:\"screen\";f&&(K=l=null);if(!l||K!=c)f=d.createElement(\"style\"),f.setAttribute(\"type\",\"text/css\"),f.setAttribute(\"media\",c),l=g.appendChild(f),\ne.ie&&(e.win&&typeof d.styleSheets!=i&&0<d.styleSheets.length)&&(l=d.styleSheets[d.styleSheets.length-1]),K=c;e.ie&&e.win?l&&typeof l.addRule==r&&l.addRule(a,b):l&&typeof d.createTextNode!=i&&l.appendChild(d.createTextNode(a+\" {\"+b+\"}\"))}}}function t(a,b){if(R){var c=b?\"visible\":\"hidden\";s&&n(a)?n(a).style.visibility=c:Q(\"#\"+a,\"visibility:\"+c)}}function S(a){return null!=/[\\\\\\\"<>\\.;]/.exec(a)&&typeof encodeURIComponent!=i?encodeURIComponent(a):a}var i=\"undefined\",r=\"object\",y=\"application/x-shockwave-flash\",\nO=\"SWFObjectExprInst\",m=window,d=document,q=navigator,T=!1,x=[function(){T?V():D()}],p=[],C=[],v=[],w,B,H,N,s=!1,A=!1,l,K,R=!0,e=function(){var a=typeof d.getElementById!=i&&typeof d.getElementsByTagName!=i&&typeof d.createElement!=i,b=q.userAgent.toLowerCase(),c=q.platform.toLowerCase(),f=c?/win/.test(c):/win/.test(b),c=c?/mac/.test(c):/mac/.test(b),b=/webkit/.test(b)?parseFloat(b.replace(/^.*webkit\\/(\\d+(\\.\\d+)?).*$/,\"$1\")):!1,g=!+\"\\v1\",e=[0,0,0],h=null;if(typeof q.plugins!=i&&typeof q.plugins[\"Shockwave Flash\"]==\nr){if((h=q.plugins[\"Shockwave Flash\"].description)&&!(typeof q.mimeTypes!=i&&q.mimeTypes[y]&&!q.mimeTypes[y].enabledPlugin))T=!0,g=!1,h=h.replace(/^.*\\s+(\\S+\\s+\\S+$)/,\"$1\"),e[0]=parseInt(h.replace(/^(.*)\\..*$/,\"$1\"),10),e[1]=parseInt(h.replace(/^.*\\.(.*)\\s.*$/,\"$1\"),10),e[2]=/[a-zA-Z]/.test(h)?parseInt(h.replace(/^.*[a-zA-Z]+(.*)$/,\"$1\"),10):0}else if(typeof m.ActiveXObject!=i)try{var j=new ActiveXObject(\"ShockwaveFlash.ShockwaveFlash\");if(j&&(h=j.GetVariable(\"$version\")))g=!0,h=h.split(\" \")[1].split(\",\"),\ne=[parseInt(h[0],10),parseInt(h[1],10),parseInt(h[2],10)]}catch(k){}return{w3:a,pv:e,wk:b,ie:g,win:f,mac:c}}();(function(){e.w3&&((typeof d.readyState!=i&&\"complete\"==d.readyState||typeof d.readyState==i&&(d.getElementsByTagName(\"body\")[0]||d.body))&&u(),s||(typeof d.addEventListener!=i&&d.addEventListener(\"DOMContentLoaded\",u,!1),e.ie&&e.win&&(d.attachEvent(\"onreadystatechange\",function(){\"complete\"==d.readyState&&(d.detachEvent(\"onreadystatechange\",arguments.callee),u())}),m==top&&function(){if(!s){try{d.documentElement.doScroll(\"left\")}catch(a){setTimeout(arguments.callee,\n0);return}u()}}()),e.wk&&function(){s||(/loaded|complete/.test(d.readyState)?u():setTimeout(arguments.callee,0))}(),M(u)))})();(function(){e.ie&&e.win&&window.attachEvent(\"onunload\",function(){for(var a=v.length,b=0;b<a;b++)v[b][0].detachEvent(v[b][1],v[b][2]);a=C.length;for(b=0;b<a;b++)P(C[b]);for(var c in e)e[c]=null;e=null;for(var f in swfobject)swfobject[f]=null;swfobject=null})})();return{registerObject:function(a,b,c,f){if(e.w3&&a&&b){var d={};d.id=a;d.swfVersion=b;d.expressInstall=c;d.callbackFn=\nf;p[p.length]=d;t(a,!1)}else f&&f({success:!1,id:a})},getObjectById:function(a){if(e.w3)return E(a)},embedSWF:function(a,b,c,d,g,o,h,j,k,m){var n={success:!1,id:b};e.w3&&!(e.wk&&312>e.wk)&&a&&b&&c&&d&&g?(t(b,!1),L(function(){c+=\"\";d+=\"\";var e={};if(k&&typeof k===r)for(var l in k)e[l]=k[l];e.data=a;e.width=c;e.height=d;l={};if(j&&typeof j===r)for(var p in j)l[p]=j[p];if(h&&typeof h===r)for(var q in h)l.flashvars=typeof l.flashvars!=i?l.flashvars+(\"&\"+q+\"=\"+h[q]):q+\"=\"+h[q];if(z(g))p=J(e,l,b),e.id==\nb&&t(b,!0),n.success=!0,n.ref=p;else{if(o&&F()){e.data=o;G(e,l,b,m);return}t(b,!0)}m&&m(n)})):m&&m(n)},switchOffAutoHideShow:function(){R=!1},ua:e,getFlashPlayerVersion:function(){return{major:e.pv[0],minor:e.pv[1],release:e.pv[2]}},hasFlashPlayerVersion:z,createSWF:function(a,b,c){if(e.w3)return J(a,b,c)},showExpressInstall:function(a,b,c,d){e.w3&&F()&&G(a,b,c,d)},removeSWF:function(a){e.w3&&P(a)},createCSS:function(a,b,c,d){e.w3&&Q(a,b,c,d)},addDomLoadEvent:L,addLoadEvent:M,getQueryParamValue:function(a){var b=\nd.location.search||d.location.hash;if(b){/\\?/.test(b)&&(b=b.split(\"?\")[1]);if(null==a)return S(b);for(var b=b.split(\"&\"),c=0;c<b.length;c++)if(b[c].substring(0,b[c].indexOf(\"=\"))==a)return S(b[c].substring(b[c].indexOf(\"=\")+1))}return\"\"},expressInstallCallback:function(){if(A){var a=n(O);a&&w&&(a.parentNode.replaceChild(w,a),B&&(t(B,!0),e.ie&&e.win&&(w.style.display=\"block\")),H&&H(N));A=!1}}}}();"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/plugins/htmlwriter/outputforflash.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>Output for Flash &mdash; CKEditor Sample</title>\r\n\t<script src=\"../../../ckeditor.js\"></script>\r\n\t<script src=\"../../../samples/sample.js\"></script>\r\n\t<script src=\"assets/outputforflash/swfobject.js\"></script>\r\n\t<link href=\"../../../samples/sample.css\" rel=\"stylesheet\">\r\n\t<meta name=\"ckeditor-sample-required-plugins\" content=\"sourcearea\">\r\n\t<meta name=\"ckeditor-sample-name\" content=\"Output for Flash\">\r\n\t<meta name=\"ckeditor-sample-group\" content=\"Advanced Samples\">\r\n\t<meta name=\"ckeditor-sample-description\" content=\"Configuring CKEditor to produce HTML code that can be used with Adobe Flash.\">\r\n\t<style>\r\n\r\n\t\t.alert\r\n\t\t{\r\n\t\t\tbackground: #ffa84c;\r\n\t\t\tpadding: 10px 15px;\r\n\t\t\tfont-weight: bold;\r\n\t\t\tdisplay: block;\r\n\t\t\tmargin-bottom: 20px;\r\n\t\t}\r\n\r\n\t</style>\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"../../../samples/index.html\">CKEditor Samples</a> &raquo; Producing Flash Compliant HTML Output\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tThis sample shows how to configure CKEditor to output\r\n\t\t\tHTML code that can be used with\r\n\t\t\t<a class=\"samples\" href=\"http://www.adobe.com/livedocs/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&amp;file=00000922.html\">\r\n\t\t\tAdobe Flash</a>.\r\n\t\t\tThe code will contain a subset of standard HTML elements like <code>&lt;b&gt;</code>,\r\n\t\t\t<code>&lt;i&gt;</code>, and <code>&lt;p&gt;</code> as well as HTML attributes.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tTo add a CKEditor instance outputting Flash compliant HTML code, load the editor using a standard\r\n\t\t\tJavaScript call, and define CKEditor features to use HTML elements and attributes.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tFor details on how to create this setup check the source code of this sample page.\r\n\t\t</p>\r\n\t</div>\r\n\t<p>\r\n\t\tTo see how it works, create some content in the editing area of CKEditor on the left\r\n\t\tand send it to the Flash object on the right side of the page by using the\r\n\t\t<strong>Send to Flash</strong> button.\r\n\t</p>\r\n\t<table style=\"width: 100%; border-spacing: 0; border-collapse:collapse;\">\r\n\t\t<tr>\r\n\t\t\t<td style=\"width: 100%\">\r\n\t\t\t\t<textarea cols=\"80\" id=\"editor1\" name=\"editor1\" rows=\"10\">&lt;p&gt;&lt;b&gt;&lt;font size=&quot;18&quot; style=&quot;font-size:18px;&quot;&gt;Flash and HTML&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;It is possible to have &lt;a href=&quot;http://ckeditor.com&quot;&gt;CKEditor&lt;/a&gt; creating content that will be later loaded inside &lt;b&gt;Flash&lt;/b&gt; objects and animations.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Flash has a few limitations when dealing with HTML:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;It has limited support on tags.&lt;/li&gt;&lt;li&gt;There is no margin between block elements, like paragraphs.&lt;/li&gt;&lt;/ul&gt;</textarea>\r\n\t\t\t\t<script>\r\n\r\n\t\t\t\t\tif ( document.location.protocol == 'file:' )\r\n\t\t\t\t\t\talert( 'Warning: This samples does not work when loaded from local filesystem' +\r\n\t\t\t\t\t\t\t'due to security restrictions implemented in Flash.' +\r\n\t\t\t\t\t\t\t'\\n\\nPlease load the sample from a web server instead.' );\r\n\r\n\t\t\t\t\tvar editor = CKEDITOR.replace( 'editor1', {\r\n\t\t\t\t\t\t/*\r\n\t\t\t\t\t\t * Ensure that htmlwriter plugin, which is required for this sample, is loaded.\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t\textraPlugins: 'htmlwriter',\r\n\r\n\t\t\t\t\t\theight: 290,\r\n\t\t\t\t\t\twidth: '100%',\r\n\t\t\t\t\t\ttoolbar: [\r\n\t\t\t\t\t\t\t[ 'Source', '-', 'Bold', 'Italic', 'Underline', '-', 'BulletedList', '-', 'Link', 'Unlink' ],\r\n\t\t\t\t\t\t\t[ 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock' ],\r\n\t\t\t\t\t\t\t'/',\r\n\t\t\t\t\t\t\t[ 'Font', 'FontSize' ],\r\n\t\t\t\t\t\t\t[ 'TextColor', '-', 'About' ]\r\n\t\t\t\t\t\t],\r\n\r\n\t\t\t\t\t\t/*\r\n\t\t\t\t\t\t * Style sheet for the contents\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t\tcontentsCss: 'body {color:#000; background-color#FFF; font-family: Arial; font-size:80%;} p, ol, ul {margin-top: 0px; margin-bottom: 0px;}',\r\n\r\n\t\t\t\t\t\t/*\r\n\t\t\t\t\t\t * Quirks doctype\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t\tdocType: '<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">',\r\n\r\n\t\t\t\t\t\t/*\r\n\t\t\t\t\t\t * Core styles.\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t\tcoreStyles_bold: { element: 'b' },\r\n\t\t\t\t\t\tcoreStyles_italic: { element: 'i' },\r\n\t\t\t\t\t\tcoreStyles_underline: { element: 'u' },\r\n\r\n\t\t\t\t\t\t/*\r\n\t\t\t\t\t\t * Font face.\r\n\t\t\t\t\t\t */\r\n\r\n\t\t\t\t\t\t// Define the way font elements will be applied to the document. The \"font\"\r\n\t\t\t\t\t\t// element will be used.\r\n\t\t\t\t\t\tfont_style: {\r\n\t\t\t\t\t\t\telement: 'font',\r\n\t\t\t\t\t\t\tattributes: { 'face': '#(family)' }\r\n\t\t\t\t\t\t},\r\n\r\n\t\t\t\t\t\t/*\r\n\t\t\t\t\t\t * Font sizes.\r\n\t\t\t\t\t\t */\r\n\r\n\t\t\t\t\t\t// The CSS part of the font sizes isn't used by Flash, it is there to get the\r\n\t\t\t\t\t\t// font rendered correctly in CKEditor.\r\n\t\t\t\t\t\tfontSize_sizes: '8px/8;9px/9;10px/10;11px/11;12px/12;14px/14;16px/16;18px/18;20px/20;22px/22;24px/24;26px/26;28px/28;36px/36;48px/48;72px/72',\r\n\t\t\t\t\t\tfontSize_style: {\r\n\t\t\t\t\t\t\telement: 'font',\r\n\t\t\t\t\t\t\tattributes: { 'size': '#(size)' },\r\n\t\t\t\t\t\t\tstyles: { 'font-size': '#(size)px' }\r\n\t\t\t\t\t\t} ,\r\n\r\n\t\t\t\t\t\t/*\r\n\t\t\t\t\t\t * Font colors.\r\n\t\t\t\t\t\t */\r\n\t\t\t\t\t\tcolorButton_enableMore: true,\r\n\r\n\t\t\t\t\t\tcolorButton_foreStyle: {\r\n\t\t\t\t\t\t\telement: 'font',\r\n\t\t\t\t\t\t\tattributes: { 'color': '#(color)' }\r\n\t\t\t\t\t\t},\r\n\r\n\t\t\t\t\t\tcolorButton_backStyle: {\r\n\t\t\t\t\t\t\telement: 'font',\r\n\t\t\t\t\t\t\tstyles: { 'background-color': '#(color)' }\r\n\t\t\t\t\t\t},\r\n\r\n\t\t\t\t\t\ton: { 'instanceReady': configureFlashOutput }\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Adjust the behavior of the dataProcessor to match the\r\n\t\t\t\t\t * requirements of Flash\r\n\t\t\t\t\t */\r\n\t\t\t\t\tfunction configureFlashOutput( ev ) {\r\n\t\t\t\t\t\tvar editor = ev.editor,\r\n\t\t\t\t\t\t\tdataProcessor = editor.dataProcessor,\r\n\t\t\t\t\t\t\thtmlFilter = dataProcessor && dataProcessor.htmlFilter;\r\n\r\n\t\t\t\t\t\t// Out self closing tags the HTML4 way, like <br>.\r\n\t\t\t\t\t\tdataProcessor.writer.selfClosingEnd = '>';\r\n\r\n\t\t\t\t\t\t// Make output formatting match Flash expectations\r\n\t\t\t\t\t\tvar dtd = CKEDITOR.dtd;\r\n\t\t\t\t\t\tfor ( var e in CKEDITOR.tools.extend( {}, dtd.$nonBodyContent, dtd.$block, dtd.$listItem, dtd.$tableContent ) ) {\r\n\t\t\t\t\t\t\tdataProcessor.writer.setRules( e, {\r\n\t\t\t\t\t\t\t\tindent: false,\r\n\t\t\t\t\t\t\t\tbreakBeforeOpen: false,\r\n\t\t\t\t\t\t\t\tbreakAfterOpen: false,\r\n\t\t\t\t\t\t\t\tbreakBeforeClose: false,\r\n\t\t\t\t\t\t\t\tbreakAfterClose: false\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tdataProcessor.writer.setRules( 'br', {\r\n\t\t\t\t\t\t\tindent: false,\r\n\t\t\t\t\t\t\tbreakBeforeOpen: false,\r\n\t\t\t\t\t\t\tbreakAfterOpen: false,\r\n\t\t\t\t\t\t\tbreakBeforeClose: false,\r\n\t\t\t\t\t\t\tbreakAfterClose: false\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t// Output properties as attributes, not styles.\r\n\t\t\t\t\t\thtmlFilter.addRules( {\r\n\t\t\t\t\t\t\telements: {\r\n\t\t\t\t\t\t\t\t$: function( element ) {\r\n\t\t\t\t\t\t\t\t\tvar style, match, width, height, align;\r\n\r\n\t\t\t\t\t\t\t\t\t// Output dimensions of images as width and height\r\n\t\t\t\t\t\t\t\t\tif ( element.name == 'img' ) {\r\n\t\t\t\t\t\t\t\t\t\tstyle = element.attributes.style;\r\n\r\n\t\t\t\t\t\t\t\t\t\tif ( style ) {\r\n\t\t\t\t\t\t\t\t\t\t\t// Get the width from the style.\r\n\t\t\t\t\t\t\t\t\t\t\tmatch = ( /(?:^|\\s)width\\s*:\\s*(\\d+)px/i ).exec( style );\r\n\t\t\t\t\t\t\t\t\t\t\twidth = match && match[1];\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Get the height from the style.\r\n\t\t\t\t\t\t\t\t\t\t\tmatch = ( /(?:^|\\s)height\\s*:\\s*(\\d+)px/i ).exec( style );\r\n\t\t\t\t\t\t\t\t\t\t\theight = match && match[1];\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tif ( width ) {\r\n\t\t\t\t\t\t\t\t\t\t\t\telement.attributes.style = element.attributes.style.replace( /(?:^|\\s)width\\s*:\\s*(\\d+)px;?/i , '' );\r\n\t\t\t\t\t\t\t\t\t\t\t\telement.attributes.width = width;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tif ( height ) {\r\n\t\t\t\t\t\t\t\t\t\t\t\telement.attributes.style = element.attributes.style.replace( /(?:^|\\s)height\\s*:\\s*(\\d+)px;?/i , '' );\r\n\t\t\t\t\t\t\t\t\t\t\t\telement.attributes.height = height;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t// Output alignment of paragraphs using align\r\n\t\t\t\t\t\t\t\t\tif ( element.name == 'p' ) {\r\n\t\t\t\t\t\t\t\t\t\tstyle = element.attributes.style;\r\n\r\n\t\t\t\t\t\t\t\t\t\tif ( style ) {\r\n\t\t\t\t\t\t\t\t\t\t\t// Get the align from the style.\r\n\t\t\t\t\t\t\t\t\t\t\tmatch = ( /(?:^|\\s)text-align\\s*:\\s*(\\w*);?/i ).exec( style );\r\n\t\t\t\t\t\t\t\t\t\t\talign = match && match[1];\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tif ( align ) {\r\n\t\t\t\t\t\t\t\t\t\t\t\telement.attributes.style = element.attributes.style.replace( /(?:^|\\s)text-align\\s*:\\s*(\\w*);?/i , '' );\r\n\t\t\t\t\t\t\t\t\t\t\t\telement.attributes.align = align;\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tif ( element.attributes.style === '' )\r\n\t\t\t\t\t\t\t\t\t\tdelete element.attributes.style;\r\n\r\n\t\t\t\t\t\t\t\t\treturn element;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfunction sendToFlash() {\r\n\t\t\t\t\t\tvar html = CKEDITOR.instances.editor1.getData() ;\r\n\r\n\t\t\t\t\t\t// Quick fix for link color.\r\n\t\t\t\t\t\thtml = html.replace( /<a /g, '<font color=\"#0000FF\"><u><a ' )\r\n\t\t\t\t\t\thtml = html.replace( /<\\/a>/g, '</a></u></font>' )\r\n\r\n\t\t\t\t\t\tvar flash = document.getElementById( 'ckFlashContainer' ) ;\r\n\t\t\t\t\t\tflash.setData( html ) ;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tCKEDITOR.domReady( function() {\r\n\t\t\t\t\t\tif ( !swfobject.hasFlashPlayerVersion( '8' ) ) {\r\n\t\t\t\t\t\t\tCKEDITOR.dom.element.createFromHtml( '<span class=\"alert\">' +\r\n\t\t\t\t\t\t\t\t\t'At least Adobe Flash Player 8 is required to run this sample. ' +\r\n\t\t\t\t\t\t\t\t\t'You can download it from <a href=\"http://get.adobe.com/flashplayer\">Adobe\\'s website</a>.' +\r\n\t\t\t\t\t\t\t\t'</span>' ).insertBefore( editor.element );\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tswfobject.embedSWF(\r\n\t\t\t\t\t\t\t'assets/outputforflash/outputforflash.swf',\r\n\t\t\t\t\t\t\t'ckFlashContainer',\r\n\t\t\t\t\t\t\t'550',\r\n\t\t\t\t\t\t\t'400',\r\n\t\t\t\t\t\t\t'8',\r\n\t\t\t\t\t\t\t{ wmode: 'transparent' }\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t</script>\r\n\t\t\t\t<p>\r\n\t\t\t\t\t<input type=\"button\" value=\"Send to Flash\" onclick=\"sendToFlash();\">\r\n\t\t\t\t</p>\r\n\t\t\t</td>\r\n\t\t\t<td style=\"vertical-align: top; padding-left: 20px\">\r\n\t\t\t\t<div id=\"ckFlashContainer\"></div>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</table>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/plugins/htmlwriter/outputhtml.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>HTML Compliant Output &mdash; CKEditor Sample</title>\r\n\t<script src=\"../../../ckeditor.js\"></script>\r\n\t<script src=\"../../../samples/sample.js\"></script>\r\n\t<link href=\"../../../samples/sample.css\" rel=\"stylesheet\">\r\n\t<meta name=\"ckeditor-sample-required-plugins\" content=\"sourcearea\">\r\n\t<meta name=\"ckeditor-sample-name\" content=\"Output HTML\">\r\n\t<meta name=\"ckeditor-sample-group\" content=\"Advanced Samples\">\r\n\t<meta name=\"ckeditor-sample-description\" content=\"Configuring CKEditor to produce legacy HTML 4 code.\">\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"../../../samples/index.html\">CKEditor Samples</a> &raquo; Producing HTML Compliant Output\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tThis sample shows how to configure CKEditor to output valid\r\n\t\t\t<a class=\"samples\" href=\"http://www.w3.org/TR/html401/\">HTML 4.01</a> code.\r\n\t\t\tTraditional HTML elements like <code>&lt;b&gt;</code>,\r\n\t\t\t<code>&lt;i&gt;</code>, and <code>&lt;font&gt;</code> are used in place of\r\n\t\t\t<code>&lt;strong&gt;</code>, <code>&lt;em&gt;</code>, and CSS styles.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tTo add a CKEditor instance outputting legacy HTML 4.01 code, load the editor using a standard\r\n\t\t\tJavaScript call, and define CKEditor features to use the HTML compliant elements and attributes.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tA snippet of the configuration code can be seen below; check the source of this page for\r\n\t\t\tfull definition:\r\n\t\t</p>\r\n<pre class=\"samples\">\r\nCKEDITOR.replace( '<em>textarea_id</em>', {\r\n\tcoreStyles_bold: { element: 'b' },\r\n\tcoreStyles_italic: { element: 'i' },\r\n\r\n\tfontSize_style: {\r\n\t\telement: 'font',\r\n\t\tattributes: { 'size': '#(size)' }\r\n\t}\r\n\r\n\t...\r\n});</pre>\r\n\t</div>\r\n\t<form action=\"../../../samples/sample_posteddata.php\" method=\"post\">\r\n\t\t<p>\r\n\t\t\t<label for=\"editor1\">\r\n\t\t\t\tEditor 1:\r\n\t\t\t</label>\r\n\t\t\t<textarea cols=\"80\" id=\"editor1\" name=\"editor1\" rows=\"10\">&lt;p&gt;This is some &lt;b&gt;sample text&lt;/b&gt;. You are using &lt;a href=\"http://ckeditor.com/\"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>\r\n\t\t\t<script>\r\n\r\n\t\t\t\tCKEDITOR.replace( 'editor1', {\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Ensure that htmlwriter plugin, which is required for this sample, is loaded.\r\n\t\t\t\t\t */\r\n\t\t\t\t\textraPlugins: 'htmlwriter',\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Style sheet for the contents\r\n\t\t\t\t\t */\r\n\t\t\t\t\tcontentsCss: 'body {color:#000; background-color#:FFF;}',\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Simple HTML5 doctype\r\n\t\t\t\t\t */\r\n\t\t\t\t\tdocType: '<!DOCTYPE HTML>',\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Allowed content rules which beside limiting allowed HTML\r\n\t\t\t\t\t * will also take care of transforming styles to attributes\r\n\t\t\t\t\t * (currently only for img - see transformation rules defined below).\r\n\t\t\t\t\t *\r\n\t\t\t\t\t * Read more: http://docs.ckeditor.com/#!/guide/dev_advanced_content_filter\r\n\t\t\t\t\t */\r\n\t\t\t\t\tallowedContent:\r\n\t\t\t\t\t\t'h1 h2 h3 p pre[align]; ' +\r\n\t\t\t\t\t\t'blockquote code kbd samp var del ins cite q b i u strike ul ol li hr table tbody tr td th caption; ' +\r\n\t\t\t\t\t\t'img[!src,alt,align,width,height]; font[!face]; font[!family]; font[!color]; font[!size]; font{!background-color}; a[!href]; a[!name]',\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Core styles.\r\n\t\t\t\t\t */\r\n\t\t\t\t\tcoreStyles_bold: { element: 'b' },\r\n\t\t\t\t\tcoreStyles_italic: { element: 'i' },\r\n\t\t\t\t\tcoreStyles_underline: { element: 'u' },\r\n\t\t\t\t\tcoreStyles_strike: { element: 'strike' },\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Font face.\r\n\t\t\t\t\t */\r\n\r\n\t\t\t\t\t// Define the way font elements will be applied to the document.\r\n\t\t\t\t\t// The \"font\" element will be used.\r\n\t\t\t\t\tfont_style: {\r\n\t\t\t\t\t\telement: 'font',\r\n\t\t\t\t\t\tattributes: { 'face': '#(family)' }\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Font sizes.\r\n\t\t\t\t\t */\r\n\t\t\t\t\tfontSize_sizes: 'xx-small/1;x-small/2;small/3;medium/4;large/5;x-large/6;xx-large/7',\r\n\t\t\t\t\tfontSize_style: {\r\n\t\t\t\t\t\telement: 'font',\r\n\t\t\t\t\t\tattributes: { 'size': '#(size)' }\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Font colors.\r\n\t\t\t\t\t */\r\n\r\n\t\t\t\t\tcolorButton_foreStyle: {\r\n\t\t\t\t\t\telement: 'font',\r\n\t\t\t\t\t\tattributes: { 'color': '#(color)' }\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tcolorButton_backStyle: {\r\n\t\t\t\t\t\telement: 'font',\r\n\t\t\t\t\t\tstyles: { 'background-color': '#(color)' }\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Styles combo.\r\n\t\t\t\t\t */\r\n\t\t\t\t\tstylesSet: [\r\n\t\t\t\t\t\t{ name: 'Computer Code', element: 'code' },\r\n\t\t\t\t\t\t{ name: 'Keyboard Phrase', element: 'kbd' },\r\n\t\t\t\t\t\t{ name: 'Sample Text', element: 'samp' },\r\n\t\t\t\t\t\t{ name: 'Variable', element: 'var' },\r\n\t\t\t\t\t\t{ name: 'Deleted Text', element: 'del' },\r\n\t\t\t\t\t\t{ name: 'Inserted Text', element: 'ins' },\r\n\t\t\t\t\t\t{ name: 'Cited Work', element: 'cite' },\r\n\t\t\t\t\t\t{ name: 'Inline Quotation', element: 'q' }\r\n\t\t\t\t\t],\r\n\r\n\t\t\t\t\ton: {\r\n\t\t\t\t\t\tpluginsLoaded: configureTransformations,\r\n\t\t\t\t\t\tloaded: configureHtmlWriter\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t/*\r\n\t\t\t\t * Add missing content transformations.\r\n\t\t\t\t */\r\n\t\t\t\tfunction configureTransformations( evt ) {\r\n\t\t\t\t\tvar editor = evt.editor;\r\n\r\n\t\t\t\t\teditor.dataProcessor.htmlFilter.addRules( {\r\n\t\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\t\tstyle: function( value, element ) {\r\n\t\t\t\t\t\t\t\t// Return #RGB for background and border colors\r\n\t\t\t\t\t\t\t\treturn CKEDITOR.tools.convertRgbToHex( value );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} );\r\n\r\n\t\t\t\t\t// Default automatic content transformations do not yet take care of\r\n\t\t\t\t\t// align attributes on blocks, so we need to add our own transformation rules.\r\n\t\t\t\t\tfunction alignToAttribute( element ) {\r\n\t\t\t\t\t\tif ( element.styles[ 'text-align' ] ) {\r\n\t\t\t\t\t\t\telement.attributes.align = element.styles[ 'text-align' ];\r\n\t\t\t\t\t\t\tdelete element.styles[ 'text-align' ];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\teditor.filter.addTransformations( [\r\n\t\t\t\t\t\t[ { element: 'p',\tright: alignToAttribute } ],\r\n\t\t\t\t\t\t[ { element: 'h1',\tright: alignToAttribute } ],\r\n\t\t\t\t\t\t[ { element: 'h2',\tright: alignToAttribute } ],\r\n\t\t\t\t\t\t[ { element: 'h3',\tright: alignToAttribute } ],\r\n\t\t\t\t\t\t[ { element: 'pre',\tright: alignToAttribute } ]\r\n\t\t\t\t\t] );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/*\r\n\t\t\t\t * Adjust the behavior of htmlWriter to make it output HTML like FCKeditor.\r\n\t\t\t\t */\r\n\t\t\t\tfunction configureHtmlWriter( evt ) {\r\n\t\t\t\t\tvar editor = evt.editor,\r\n\t\t\t\t\t\tdataProcessor = editor.dataProcessor;\r\n\r\n\t\t\t\t\t// Out self closing tags the HTML4 way, like <br>.\r\n\t\t\t\t\tdataProcessor.writer.selfClosingEnd = '>';\r\n\r\n\t\t\t\t\t// Make output formatting behave similar to FCKeditor.\r\n\t\t\t\t\tvar dtd = CKEDITOR.dtd;\r\n\t\t\t\t\tfor ( var e in CKEDITOR.tools.extend( {}, dtd.$nonBodyContent, dtd.$block, dtd.$listItem, dtd.$tableContent ) ) {\r\n\t\t\t\t\t\tdataProcessor.writer.setRules( e, {\r\n\t\t\t\t\t\t\tindent: true,\r\n\t\t\t\t\t\t\tbreakBeforeOpen: true,\r\n\t\t\t\t\t\t\tbreakAfterOpen: false,\r\n\t\t\t\t\t\t\tbreakBeforeClose: !dtd[ e ][ '#' ],\r\n\t\t\t\t\t\t\tbreakAfterClose: true\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t</script>\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\t<input type=\"submit\" value=\"Submit\">\r\n\t\t</p>\r\n\t</form>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/plugins/magicline/magicline.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>Using Magicline plugin &mdash; CKEditor Sample</title>\r\n\t<script src=\"../../../ckeditor.js\"></script>\r\n\t<link rel=\"stylesheet\" href=\"../../../samples/sample.css\">\r\n\t<meta name=\"ckeditor-sample-name\" content=\"Magicline plugin\">\r\n\t<meta name=\"ckeditor-sample-group\" content=\"Plugins\">\r\n\t<meta name=\"ckeditor-sample-description\" content=\"Using the Magicline plugin to access difficult focus spaces.\">\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"../../../samples/index.html\">CKEditor Samples</a> &raquo; Using Magicline plugin\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tThis sample shows the advantages of <strong>Magicline</strong> plugin\r\n\t\t\twhich is to enhance the editing process. Thanks to this plugin,\r\n\t\t\ta number of difficult focus spaces which are inaccessible due to\r\n\t\t\tbrowser issues can now be focused.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\t<strong>Magicline</strong> plugin shows a red line with a handler\r\n\t\t\twhich, when clicked, inserts a paragraph and allows typing. To see this,\r\n\t\t\tfocus an editor and move your mouse above the focus space you want\r\n\t\t\tto access. The plugin is enabled by default so no additional\r\n\t\t\tconfiguration is necessary.\r\n\t\t</p>\r\n\t</div>\r\n\t<div>\r\n\t\t<label for=\"editor1\">\r\n\t\t\tEditor 1:\r\n\t\t</label>\r\n\t\t<div class=\"description\">\r\n\t\t\t<p>\r\n\t\t\t\tThis editor uses a default <strong>Magicline</strong> setup.\r\n\t\t\t</p>\r\n\t\t</div>\r\n\t\t<textarea cols=\"80\" id=\"editor1\" name=\"editor1\" rows=\"10\">\r\n\t\t\t&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width: 100%; &quot;&gt;\r\n\t\t\t\t&lt;tbody&gt;\r\n\t\t\t\t\t&lt;tr&gt;\r\n\t\t\t\t\t\t&lt;td&gt;This table&lt;/td&gt;\r\n\t\t\t\t\t\t&lt;td&gt;is the&lt;/td&gt;\r\n\t\t\t\t\t\t&lt;td&gt;very first&lt;/td&gt;\r\n\t\t\t\t\t\t&lt;td&gt;element of the document.&lt;/td&gt;\r\n\t\t\t\t\t&lt;/tr&gt;\r\n\t\t\t\t\t&lt;tr&gt;\r\n\t\t\t\t\t\t&lt;td&gt;We are still&lt;/td&gt;\r\n\t\t\t\t\t\t&lt;td&gt;able to acces&lt;/td&gt;\r\n\t\t\t\t\t\t&lt;td&gt;the space before it.&lt;/td&gt;\r\n\t\t\t\t\t\t&lt;td&gt;\r\n\t\t\t\t\t\t&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width: 100%; &quot;&gt;\r\n\t\t\t\t\t\t\t&lt;tbody&gt;\r\n\t\t\t\t\t\t\t\t&lt;tr&gt;\r\n\t\t\t\t\t\t\t\t\t&lt;td&gt;This table is inside of a cell of another table.&lt;/td&gt;\r\n\t\t\t\t\t\t\t\t&lt;/tr&gt;\r\n\t\t\t\t\t\t\t\t&lt;tr&gt;\r\n\t\t\t\t\t\t\t\t\t&lt;td&gt;We can type&amp;nbsp;either before or after it though.&lt;/td&gt;\r\n\t\t\t\t\t\t\t\t&lt;/tr&gt;\r\n\t\t\t\t\t\t\t&lt;/tbody&gt;\r\n\t\t\t\t\t\t&lt;/table&gt;\r\n\t\t\t\t\t\t&lt;/td&gt;\r\n\t\t\t\t\t&lt;/tr&gt;\r\n\t\t\t\t&lt;/tbody&gt;\r\n\t\t\t&lt;/table&gt;\r\n\r\n\t\t\t&lt;p&gt;Two succesive horizontal lines (&lt;tt&gt;HR&lt;/tt&gt; tags). We can access the space in between:&lt;/p&gt;\r\n\r\n\t\t\t&lt;hr /&gt;\r\n\t\t\t&lt;hr /&gt;\r\n\t\t\t&lt;ol&gt;\r\n\t\t\t\t&lt;li&gt;This numbered list...&lt;/li&gt;\r\n\t\t\t\t&lt;li&gt;...is a neighbour of a horizontal line...&lt;/li&gt;\r\n\t\t\t\t&lt;li&gt;...and another list.&lt;/li&gt;\r\n\t\t\t&lt;/ol&gt;\r\n\r\n\t\t\t&lt;ul&gt;\r\n\t\t\t\t&lt;li&gt;We can type between the lists...&lt;/li&gt;\r\n\t\t\t\t&lt;li&gt;...thanks to &lt;strong&gt;Magicline&lt;/strong&gt;.&lt;/li&gt;\r\n\t\t\t&lt;/ul&gt;\r\n\r\n\t\t\t&lt;p&gt;Lorem ipsum dolor sit amet dui. Morbi vel turpis. Nullam et leo. Etiam rutrum, urna tellus dui vel tincidunt mattis egestas, justo fringilla vel, massa. Phasellus.&lt;/p&gt;\r\n\r\n\t\t\t&lt;p&gt;Quisque iaculis, dui lectus varius vitae, tortor. Proin lacus. Pellentesque ac lacus. Aenean nonummy commodo nec, pede. Etiam blandit risus elit.&lt;/p&gt;\r\n\r\n\t\t\t&lt;p&gt;Ut pretium. Vestibulum rutrum in, adipiscing elit. Sed in quam in purus sem vitae pede. Pellentesque bibendum, urna sem vel risus. Vivamus posuere metus. Aliquam gravida iaculis nisl. Nam enim. Aliquam erat ac lacus tellus ac felis.&lt;/p&gt;\r\n\r\n\t\t\t&lt;div style=&quot;border: 2px dashed green; background: #ddd; text-align: center;&quot;&gt;\r\n\t\t\t&lt;p&gt;This text is wrapped in a&amp;nbsp;&lt;tt&gt;DIV&lt;/tt&gt;&amp;nbsp;element. We can type after this element though.&lt;/p&gt;\r\n\t\t\t&lt;/div&gt;\r\n\t\t</textarea>\r\n\t\t<script>\r\n\r\n\t\t\t// This call can be placed at any point after the\r\n\t\t\t// <textarea>, or inside a <head><script> in a\r\n\t\t\t// window.onload event handler.\r\n\r\n\t\t\tCKEDITOR.replace( 'editor1', {\r\n\t\t\t\textraPlugins: 'magicline',\t// Ensure that magicline plugin, which is required for this sample, is loaded.\r\n\t\t\t\tallowedContent: true\t\t// Switch off the ACF, so very complex content created to\r\n\t\t\t\t\t\t\t\t\t\t\t// show magicline's power isn't filtered.\r\n\t\t\t} );\r\n\r\n\t\t</script>\r\n\t</div>\r\n\t<br>\r\n\t<div>\r\n\t\t<label for=\"editor2\">\r\n\t\t\tEditor 2:\r\n\t\t</label>\r\n\t\t<div class=\"description\">\r\n\t\t\t<p>\r\n\t\t\t\tThis editor is using a blue line.\r\n\t\t\t</p>\r\n<pre class=\"samples\">\r\nCKEDITOR.replace( 'editor2', {\r\n\tmagicline_color: 'blue'\r\n});</pre>\r\n\t\t</div>\r\n\t\t<textarea cols=\"80\" id=\"editor2\" name=\"editor2\" rows=\"10\">\r\n\t\t\t&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width: 100%; &quot;&gt;\r\n\t\t\t\t&lt;tbody&gt;\r\n\t\t\t\t\t&lt;tr&gt;\r\n\t\t\t\t\t\t&lt;td&gt;This table&lt;/td&gt;\r\n\t\t\t\t\t\t&lt;td&gt;is the&lt;/td&gt;\r\n\t\t\t\t\t\t&lt;td&gt;very first&lt;/td&gt;\r\n\t\t\t\t\t\t&lt;td&gt;element of the document.&lt;/td&gt;\r\n\t\t\t\t\t&lt;/tr&gt;\r\n\t\t\t\t\t&lt;tr&gt;\r\n\t\t\t\t\t\t&lt;td&gt;We are still&lt;/td&gt;\r\n\t\t\t\t\t\t&lt;td&gt;able to acces&lt;/td&gt;\r\n\t\t\t\t\t\t&lt;td&gt;the space before it.&lt;/td&gt;\r\n\t\t\t\t\t\t&lt;td&gt;\r\n\t\t\t\t\t\t&lt;table border=&quot;1&quot; cellpadding=&quot;1&quot; cellspacing=&quot;1&quot; style=&quot;width: 100%; &quot;&gt;\r\n\t\t\t\t\t\t\t&lt;tbody&gt;\r\n\t\t\t\t\t\t\t\t&lt;tr&gt;\r\n\t\t\t\t\t\t\t\t\t&lt;td&gt;This table is inside of a cell of another table.&lt;/td&gt;\r\n\t\t\t\t\t\t\t\t&lt;/tr&gt;\r\n\t\t\t\t\t\t\t\t&lt;tr&gt;\r\n\t\t\t\t\t\t\t\t\t&lt;td&gt;We can type&amp;nbsp;either before or after it though.&lt;/td&gt;\r\n\t\t\t\t\t\t\t\t&lt;/tr&gt;\r\n\t\t\t\t\t\t\t&lt;/tbody&gt;\r\n\t\t\t\t\t\t&lt;/table&gt;\r\n\t\t\t\t\t\t&lt;/td&gt;\r\n\t\t\t\t\t&lt;/tr&gt;\r\n\t\t\t\t&lt;/tbody&gt;\r\n\t\t\t&lt;/table&gt;\r\n\r\n\t\t\t&lt;p&gt;Two succesive horizontal lines (&lt;tt&gt;HR&lt;/tt&gt; tags). We can access the space in between:&lt;/p&gt;\r\n\r\n\t\t\t&lt;hr /&gt;\r\n\t\t\t&lt;hr /&gt;\r\n\t\t\t&lt;ol&gt;\r\n\t\t\t\t&lt;li&gt;This numbered list...&lt;/li&gt;\r\n\t\t\t\t&lt;li&gt;...is a neighbour of a horizontal line...&lt;/li&gt;\r\n\t\t\t\t&lt;li&gt;...and another list.&lt;/li&gt;\r\n\t\t\t&lt;/ol&gt;\r\n\r\n\t\t\t&lt;ul&gt;\r\n\t\t\t\t&lt;li&gt;We can type between the lists...&lt;/li&gt;\r\n\t\t\t\t&lt;li&gt;...thanks to &lt;strong&gt;Magicline&lt;/strong&gt;.&lt;/li&gt;\r\n\t\t\t&lt;/ul&gt;\r\n\r\n\t\t\t&lt;p&gt;Lorem ipsum dolor sit amet dui. Morbi vel turpis. Nullam et leo. Etiam rutrum, urna tellus dui vel tincidunt mattis egestas, justo fringilla vel, massa. Phasellus.&lt;/p&gt;\r\n\r\n\t\t\t&lt;p&gt;Quisque iaculis, dui lectus varius vitae, tortor. Proin lacus. Pellentesque ac lacus. Aenean nonummy commodo nec, pede. Etiam blandit risus elit.&lt;/p&gt;\r\n\r\n\t\t\t&lt;p&gt;Ut pretium. Vestibulum rutrum in, adipiscing elit. Sed in quam in purus sem vitae pede. Pellentesque bibendum, urna sem vel risus. Vivamus posuere metus. Aliquam gravida iaculis nisl. Nam enim. Aliquam erat ac lacus tellus ac felis.&lt;/p&gt;\r\n\r\n\t\t\t&lt;div style=&quot;border: 2px dashed green; background: #ddd; text-align: center;&quot;&gt;\r\n\t\t\t&lt;p&gt;This text is wrapped in a&amp;nbsp;&lt;tt&gt;DIV&lt;/tt&gt;&amp;nbsp;element. We can type after this element though.&lt;/p&gt;\r\n\t\t\t&lt;/div&gt;\r\n\t\t</textarea>\r\n\t\t<script>\r\n\r\n\t\t\t// This call can be placed at any point after the\r\n\t\t\t// <textarea>, or inside a <head><script> in a\r\n\t\t\t// window.onload event handler.\r\n\r\n\t\t\tCKEDITOR.replace( 'editor2', {\r\n\t\t\t\textraPlugins: 'magicline',\t// Ensure that magicline plugin, which is required for this sample, is loaded.\r\n\t\t\t\tmagicline_color: 'blue',\t// Blue line\r\n\t\t\t\tallowedContent: true\t\t// Switch off the ACF, so very complex content created to\r\n\t\t\t\t\t\t\t\t\t\t\t// show magicline's power isn't filtered.\r\n\t\t\t});\r\n\r\n\t\t</script>\r\n\t</div>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/plugins/toolbar/toolbar.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>Toolbar Configuration &mdash; CKEditor Sample</title>\r\n\t<meta name=\"ckeditor-sample-name\" content=\"Toolbar Configurations\">\r\n\t<meta name=\"ckeditor-sample-group\" content=\"Advanced Samples\">\r\n\t<meta name=\"ckeditor-sample-description\" content=\"Configuring CKEditor to display full or custom toolbar layout.\">\r\n\t<script src=\"../../../ckeditor.js\"></script>\r\n\t<link href=\"../../../samples/sample.css\" rel=\"stylesheet\">\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"../../../samples/index.html\">CKEditor Samples</a> &raquo; Toolbar Configuration\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tThis sample page demonstrates editor with loaded <a href=\"#fullToolbar\">full toolbar</a> (all registered buttons) and, if\r\n\t\t\tcurrent editor's configuration modifies default settings, also editor with <a href=\"#currentToolbar\">modified toolbar</a>.\r\n\t\t</p>\r\n\r\n\t\t<p>Since CKEditor 4 there are two ways to configure toolbar buttons.</p>\r\n\r\n\t\t<h2 class=\"samples\">By <a href=\"http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-toolbar\">config.toolbar</a></h2>\r\n\r\n\t\t<p>\r\n\t\t\tYou can explicitly define which buttons are displayed in which groups and in which order.\r\n\t\t\tThis is the more precise setting, but less flexible. If newly added plugin adds its\r\n\t\t\town button you'll have to add it manually to your <code>config.toolbar</code> setting as well.\r\n\t\t</p>\r\n\r\n\t\t<p>To add a CKEditor instance with custom toolbar setting, insert the following JavaScript call to your code:</p>\r\n\r\n\t\t<pre class=\"samples\">\r\nCKEDITOR.replace( <em>'textarea_id'</em>, {\r\n\t<strong>toolbar:</strong> [\r\n\t\t{ name: 'document', items: [ 'Source', '-', 'NewPage', 'Preview', '-', 'Templates' ] },\t// Defines toolbar group with name (used to create voice label) and items in 3 subgroups.\r\n\t\t[ 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo' ],\t\t\t// Defines toolbar group without name.\r\n\t\t'/',\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Line break - next group will be placed in new line.\r\n\t\t{ name: 'basicstyles', items: [ 'Bold', 'Italic' ] }\r\n\t]\r\n});</pre>\r\n\r\n\t\t<h2 class=\"samples\">By <a href=\"http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-toolbarGroups\">config.toolbarGroups</a></h2>\r\n\r\n\t\t<p>\r\n\t\t\tYou can define which groups of buttons (like e.g. <code>basicstyles</code>, <code>clipboard</code>\r\n\t\t\tand <code>forms</code>) are displayed and in which order. Registered buttons are associated\r\n\t\t\twith toolbar groups by <code>toolbar</code> property in their definition.\r\n\t\t\tThis setting's advantage is that you don't have to modify toolbar configuration\r\n\t\t\twhen adding/removing plugins which register their own buttons.\r\n\t\t</p>\r\n\r\n\t\t<p>To add a CKEditor instance with custom toolbar groups setting, insert the following JavaScript call to your code:</p>\r\n\r\n\t\t<pre class=\"samples\">\r\nCKEDITOR.replace( <em>'textarea_id'</em>, {\r\n\t<strong>toolbarGroups:</strong> [\r\n\t\t{ name: 'document',\t   groups: [ 'mode', 'document' ] },\t\t\t// Displays document group with its two subgroups.\r\n \t\t{ name: 'clipboard',   groups: [ 'clipboard', 'undo' ] },\t\t\t// Group's name will be used to create voice label.\r\n \t\t'/',\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Line break - next group will be placed in new line.\r\n \t\t{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },\r\n \t\t{ name: 'links' }\r\n\t]\r\n\r\n\t// NOTE: Remember to leave 'toolbar' property with the default value (null).\r\n});</pre>\r\n\t</div>\r\n\r\n\t<div id=\"currentToolbar\" style=\"display: none\">\r\n\t\t<h2 class=\"samples\">Current toolbar configuration</h2>\r\n\t\t<p>Below you can see editor with current toolbar definition.</p>\r\n\t\t<textarea cols=\"80\" id=\"editorCurrent\" name=\"editorCurrent\" rows=\"10\">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href=\"http://ckeditor.com/\"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>\r\n\t\t<pre id=\"editorCurrentCfg\" class=\"samples\"></pre>\r\n\t</div>\r\n\r\n\t<div id=\"fullToolbar\">\r\n\t\t<h2 class=\"samples\">Full toolbar configuration</h2>\r\n\t\t<p>Below you can see editor with full toolbar, generated automatically by the editor.</p>\r\n\t\t<p>\r\n\t\t\t<strong>Note</strong>: To create editor instance with full toolbar you don't have to set anything.\r\n\t\t\tJust leave <code>toolbar</code> and <code>toolbarGroups</code> with the default, <code>null</code> values.\r\n\t\t</p>\r\n\t\t<textarea cols=\"80\" id=\"editorFull\" name=\"editorFull\" rows=\"10\">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href=\"http://ckeditor.com/\"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>\r\n\t\t<pre id=\"editorFullCfg\" class=\"samples\"></pre>\r\n\t</div>\r\n\r\n\t<script>\r\n\r\n(function() {\r\n\t'use strict';\r\n\r\n\tvar buttonsNames;\r\n\r\n\tCKEDITOR.config.extraPlugins = 'toolbar';\r\n\r\n\tCKEDITOR.on( 'instanceReady', function( evt ) {\r\n\t\tvar editor = evt.editor,\r\n\t\t\teditorCurrent = editor.name == 'editorCurrent',\r\n\t\t\tdefaultToolbar = !( editor.config.toolbar || editor.config.toolbarGroups || editor.config.removeButtons ),\r\n\t\t\tpre = CKEDITOR.document.getById( editor.name + 'Cfg' ),\r\n\t\t\toutput = '';\r\n\r\n\t\tif ( editorCurrent ) {\r\n\t\t\t// If default toolbar configuration has been modified, show \"current toolbar\" section.\r\n\t\t\tif ( !defaultToolbar )\r\n\t\t\t\tCKEDITOR.document.getById( 'currentToolbar' ).show();\r\n\t\t\telse\r\n\t\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( !buttonsNames )\r\n\t\t\tbuttonsNames = createButtonsNamesHash( editor.ui.items );\r\n\r\n\t\t// Toolbar isn't set explicitly, so it was created automatically from toolbarGroups.\r\n\t\tif ( !editor.config.toolbar ) {\r\n\t\t\toutput +=\r\n\t\t\t\t'// Toolbar configuration generated automatically by the editor based on config.toolbarGroups.\\n' +\r\n\t\t\t\tdumpToolbarConfiguration( editor ) +\r\n\t\t\t\t'\\n\\n' +\r\n\t\t\t\t'// Toolbar groups configuration.\\n' +\r\n\t\t\t\tdumpToolbarConfiguration( editor, true )\r\n\t\t}\r\n\t\t// Toolbar groups doesn't count in this case - print only toolbar.\r\n\t\telse {\r\n\t\t\toutput += '// Toolbar configuration.\\n' +\r\n\t\t\t\tdumpToolbarConfiguration( editor );\r\n\t\t}\r\n\r\n\t\t// Recreate to avoid old IE from loosing whitespaces on filling <pre> content.\r\n\t\tvar preOutput = pre.getOuterHtml().replace( /(?=<\\/)/, output );\r\n\t\tCKEDITOR.dom.element.createFromHtml( preOutput ).replace( pre );\r\n\t} );\r\n\r\n\tCKEDITOR.replace( 'editorCurrent', { height: 100 } );\r\n\tCKEDITOR.replace( 'editorFull', {\r\n\t\t// Reset toolbar settings, so full toolbar will be generated automatically.\r\n\t\ttoolbar: null,\r\n\t\ttoolbarGroups: null,\r\n\t\tremoveButtons: null,\r\n\t\theight: 100\r\n\t} );\r\n\r\n\tfunction dumpToolbarConfiguration( editor, printGroups ) {\r\n\t\tvar output = [],\r\n\t\t\ttoolbar = editor.toolbar;\r\n\r\n\t\tfor ( var i = 0; i < toolbar.length; ++i ) {\r\n\t\t\tvar group = dumpToolbarGroup( toolbar[ i ], printGroups );\r\n\t\t\tif ( group )\r\n\t\t\t\toutput.push( group );\r\n\t\t}\r\n\r\n\t\treturn 'config.toolbar' + ( printGroups ? 'Groups' : '' ) + ' = [\\n\\t' + output.join( ',\\n\\t' ) + '\\n];';\r\n\t}\r\n\r\n\tfunction dumpToolbarGroup( group, printGroups ) {\r\n\t\tvar output = [];\r\n\r\n\t\tif ( typeof group == 'string' )\r\n\t\t\treturn '\\'' + group + '\\'';\r\n\t\tif ( CKEDITOR.tools.isArray( group ) )\r\n\t\t\treturn dumpToolbarItems( group );\r\n\t\t// Skip group when printing entire toolbar configuration and there are no items in this group.\r\n\t\tif ( !printGroups && !group.items )\r\n\t\t\treturn;\r\n\r\n\t\tif ( group.name )\r\n\t\t\toutput.push( 'name: \\'' + group.name + '\\'' );\r\n\r\n\t\tif ( group.groups )\r\n\t\t\toutput.push( 'groups: ' + dumpToolbarItems( group.groups ) );\r\n\r\n\t\tif ( !printGroups )\r\n\t\t\toutput.push( 'items: ' + dumpToolbarItems( group.items ) );\r\n\r\n\t\treturn '{ ' + output.join( ', ' ) + ' }';\r\n\t}\r\n\r\n\tfunction dumpToolbarItems( items ) {\r\n\t\tif ( typeof items == 'string' )\r\n\t\t\treturn '\\'' + items + '\\'';\r\n\r\n\t\tvar names = [],\r\n\t\t\ti, item;\r\n\r\n\t\tfor ( var i = 0; i < items.length; ++i ) {\r\n\t\t\titem = items[ i ];\r\n\t\t\tif ( typeof item == 'string' )\r\n\t\t\t\tnames.push( item );\r\n\t\t\telse {\r\n\t\t\t\tif ( item.type == CKEDITOR.UI_SEPARATOR )\r\n\t\t\t\t\tnames.push( '-' );\r\n\t\t\t\telse\r\n\t\t\t\t\tnames.push( buttonsNames[ item.name ] );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn '[ \\'' + names.join( '\\', \\'' ) + '\\' ]';\r\n\t}\r\n\r\n\t// Creates { 'lowercased': 'LowerCased' } buttons names hash.\r\n\tfunction createButtonsNamesHash( items ) {\r\n\t\tvar hash = {},\r\n\t\t\tname;\r\n\r\n\t\tfor ( name in items ) {\r\n\t\t\thash[ items[ name ].name ] = name;\r\n\t\t}\r\n\r\n\t\treturn hash;\r\n\t}\r\n\r\n})();\r\n\t</script>\r\n\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/plugins/wysiwygarea/fullpage.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>Full Page Editing &mdash; CKEditor Sample</title>\r\n\t<script src=\"../../../ckeditor.js\"></script>\r\n\t<script src=\"../../../samples/sample.js\"></script>\r\n\t<link rel=\"stylesheet\" href=\"../../../samples/sample.css\">\r\n\t<meta name=\"ckeditor-sample-required-plugins\" content=\"sourcearea\">\r\n\t<meta name=\"ckeditor-sample-name\" content=\"Full page support\">\r\n\t<meta name=\"ckeditor-sample-group\" content=\"Plugins\">\r\n\t<meta name=\"ckeditor-sample-description\" content=\"CKEditor inserted with a JavaScript call and used to edit the whole page from &lt;html&gt; to &lt;/html&gt;.\">\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"../../../samples/index.html\">CKEditor Samples</a> &raquo; Full Page Editing\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tThis sample shows how to configure CKEditor to edit entire HTML pages, from the\r\n\t\t\t<code>&lt;html&gt;</code> tag to the <code>&lt;/html&gt;</code> tag.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tThe CKEditor instance below is inserted with a JavaScript call using the following code:\r\n\t\t</p>\r\n<pre class=\"samples\">\r\nCKEDITOR.replace( '<em>textarea_id</em>', {\r\n\t<strong>fullPage: true</strong>,\r\n\t<strong>allowedContent: true</strong>\r\n});\r\n</pre>\r\n\t\t<p>\r\n\t\t\tNote that <code><em>textarea_id</em></code> in the code above is the <code>id</code> attribute of\r\n\t\t\tthe <code>&lt;textarea&gt;</code> element to be replaced.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tThe <code><em>allowedContent</em></code> in the code above is set to <code>true</code> to disable content filtering.\r\n\t\t\tSetting this option is not obligatory, but in full page mode there is a strong chance that one may want be able to freely enter any HTML content in source mode without any limitations.\r\n\t\t</p>\r\n\t</div>\r\n\t<form action=\"../../../samples/sample_posteddata.php\" method=\"post\">\r\n\t\t<label for=\"editor1\">\r\n\t\t\tCKEditor output the entire page including content outside of\r\n\t\t\t<code>&lt;body&gt;</code> element, so content like meta and title can be changed:\r\n\t\t</label>\r\n\t\t<textarea cols=\"80\" id=\"editor1\" name=\"editor1\" rows=\"10\">\r\n\t\t\t&lt;h1&gt;&lt;img align=&quot;right&quot; alt=&quot;Saturn V carrying Apollo 11&quot; src=&quot;../../../samples/assets/sample.jpg&quot;/&gt; Apollo 11&lt;/h1&gt; &lt;p&gt;&lt;b&gt;Apollo 11&lt;/b&gt; was the spaceflight that landed the first humans, Americans &lt;a href=&quot;http://en.wikipedia.org/wiki/Neil_Armstrong&quot; title=&quot;Neil Armstrong&quot;&gt;Neil Armstrong&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Buzz_Aldrin&quot; title=&quot;Buzz Aldrin&quot;&gt;Buzz Aldrin&lt;/a&gt;, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.&lt;/p&gt; &lt;p&gt;Armstrong spent about &lt;s&gt;three and a half&lt;/s&gt; two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&amp;nbsp;kg) of lunar material for return to Earth. A third member of the mission, &lt;a href=&quot;http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)&quot; title=&quot;Michael Collins (astronaut)&quot;&gt;Michael Collins&lt;/a&gt;, piloted the &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_Command/Service_Module&quot; title=&quot;Apollo Command/Service Module&quot;&gt;command&lt;/a&gt; spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.&lt;/p&gt; &lt;h2&gt;Broadcasting and &lt;em&gt;quotes&lt;/em&gt; &lt;a id=&quot;quotes&quot; name=&quot;quotes&quot;&gt;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;One small step for [a] man, one giant leap for mankind.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Apollo 11 effectively ended the &lt;a href=&quot;http://en.wikipedia.org/wiki/Space_Race&quot; title=&quot;Space Race&quot;&gt;Space Race&lt;/a&gt; and fulfilled a national goal proposed in 1961 by the late U.S. President &lt;a href=&quot;http://en.wikipedia.org/wiki/John_F._Kennedy&quot; title=&quot;John F. Kennedy&quot;&gt;John F. Kennedy&lt;/a&gt; in a speech before the United States Congress:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.&lt;/p&gt;&lt;/blockquote&gt; &lt;h2&gt;Technical details &lt;a id=&quot;tech-details&quot; name=&quot;tech-details&quot;&gt;&lt;/a&gt;&lt;/h2&gt; &lt;table align=&quot;right&quot; border=&quot;1&quot; bordercolor=&quot;#ccc&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse:collapse;margin:10px 0 10px 15px;&quot;&gt; &lt;caption&gt;&lt;strong&gt;Mission crew&lt;/strong&gt;&lt;/caption&gt; &lt;thead&gt; &lt;tr&gt; &lt;th scope=&quot;col&quot;&gt;Position&lt;/th&gt; &lt;th scope=&quot;col&quot;&gt;Astronaut&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;Commander&lt;/td&gt; &lt;td&gt;Neil A. Armstrong&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Command Module Pilot&lt;/td&gt; &lt;td&gt;Michael Collins&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Lunar Module Pilot&lt;/td&gt; &lt;td&gt;Edwin &amp;quot;Buzz&amp;quot; E. Aldrin, Jr.&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;Launched by a &lt;strong&gt;Saturn V&lt;/strong&gt; rocket from &lt;a href=&quot;http://en.wikipedia.org/wiki/Kennedy_Space_Center&quot; title=&quot;Kennedy Space Center&quot;&gt;Kennedy Space Center&lt;/a&gt; in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of &lt;a href=&quot;http://en.wikipedia.org/wiki/NASA&quot; title=&quot;NASA&quot;&gt;NASA&lt;/a&gt;&amp;#39;s Apollo program. The Apollo spacecraft had three parts:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;strong&gt;Command Module&lt;/strong&gt; with a cabin for the three astronauts which was the only part which landed back on Earth&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Service Module&lt;/strong&gt; which supported the Command Module with propulsion, electrical power, oxygen and water&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Lunar Module&lt;/strong&gt; for landing on the Moon.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;After being sent to the Moon by the Saturn V&amp;#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Mare_Tranquillitatis&quot; title=&quot;Mare Tranquillitatis&quot;&gt;Sea of Tranquility&lt;/a&gt;. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Pacific_Ocean&quot; title=&quot;Pacific Ocean&quot;&gt;Pacific Ocean&lt;/a&gt; on July 24.&lt;/p&gt; &lt;hr/&gt; &lt;p style=&quot;text-align: right;&quot;&gt;&lt;small&gt;Source: &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_11&quot;&gt;Wikipedia.org&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;\r\n\t\t</textarea>\r\n\t\t<script>\r\n\r\n\t\t\tCKEDITOR.replace( 'editor1', {\r\n\t\t\t\tfullPage: true,\r\n\t\t\t\tallowedContent: true,\r\n\t\t\t\textraPlugins: 'wysiwygarea'\r\n\t\t\t});\r\n\r\n\t\t</script>\r\n\t\t<p>\r\n\t\t\t<input type=\"submit\" value=\"Submit\">\r\n\t\t</p>\r\n\t</form>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/readonly.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>Using the CKEditor Read-Only API &mdash; CKEditor Sample</title>\r\n\t<script src=\"../ckeditor.js\"></script>\r\n\t<link rel=\"stylesheet\" href=\"sample.css\">\r\n\t<script>\r\n\r\n\t\tvar editor;\r\n\r\n\t\t// The instanceReady event is fired, when an instance of CKEditor has finished\r\n\t\t// its initialization.\r\n\t\tCKEDITOR.on( 'instanceReady', function( ev ) {\r\n\t\t\teditor = ev.editor;\r\n\r\n\t\t\t// Show this \"on\" button.\r\n\t\t\tdocument.getElementById( 'readOnlyOn' ).style.display = '';\r\n\r\n\t\t\t// Event fired when the readOnly property changes.\r\n\t\t\teditor.on( 'readOnly', function() {\r\n\t\t\t\tdocument.getElementById( 'readOnlyOn' ).style.display = this.readOnly ? 'none' : '';\r\n\t\t\t\tdocument.getElementById( 'readOnlyOff' ).style.display = this.readOnly ? '' : 'none';\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tfunction toggleReadOnly( isReadOnly ) {\r\n\t\t\t// Change the read-only state of the editor.\r\n\t\t\t// http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setReadOnly\r\n\t\t\teditor.setReadOnly( isReadOnly );\r\n\t\t}\r\n\r\n\t</script>\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"index.html\">CKEditor Samples</a> &raquo; Using the CKEditor Read-Only API\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tThis sample shows how to use the\r\n\t\t\t<code><a class=\"samples\" href=\"http://docs.ckeditor.com/#!/api/CKEDITOR.editor-method-setReadOnly\">setReadOnly</a></code>\r\n\t\t\tAPI to put editor into the read-only state that makes it impossible for users to change the editor contents.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tFor details on how to create this setup check the source code of this sample page.\r\n\t\t</p>\r\n\t</div>\r\n\t<form action=\"sample_posteddata.php\" method=\"post\">\r\n\t\t<p>\r\n\t\t\t<textarea class=\"ckeditor\" id=\"editor1\" name=\"editor1\" cols=\"100\" rows=\"10\">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href=\"http://ckeditor.com/\"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\t<input id=\"readOnlyOn\" onclick=\"toggleReadOnly();\" type=\"button\" value=\"Make it read-only\" style=\"display:none\">\r\n\t\t\t<input id=\"readOnlyOff\" onclick=\"toggleReadOnly( false );\" type=\"button\" value=\"Make it editable again\" style=\"display:none\">\r\n\t\t</p>\r\n\t</form>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/replacebyclass.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>Replace Textareas by Class Name &mdash; CKEditor Sample</title>\r\n\t<script src=\"../ckeditor.js\"></script>\r\n\t<link rel=\"stylesheet\" href=\"sample.css\">\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"index.html\">CKEditor Samples</a> &raquo; Replace Textarea Elements by Class Name\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tThis sample shows how to automatically replace all <code>&lt;textarea&gt;</code> elements\r\n\t\t\tof a given class with a CKEditor instance.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tTo replace a <code>&lt;textarea&gt;</code> element, simply assign it the <code>ckeditor</code>\r\n\t\t\tclass, as in the code below:\r\n\t\t</p>\r\n<pre class=\"samples\">\r\n&lt;textarea <strong>class=\"ckeditor</strong>\" name=\"editor1\"&gt;&lt;/textarea&gt;\r\n</pre>\r\n\t\t<p>\r\n\t\t\tNote that other <code>&lt;textarea&gt;</code> attributes (like <code>id</code> or <code>name</code>) need to be adjusted to your document.\r\n\t\t</p>\r\n\t</div>\r\n\t<form action=\"sample_posteddata.php\" method=\"post\">\r\n\t\t<p>\r\n\t\t\t<label for=\"editor1\">\r\n\t\t\t\tEditor 1:\r\n\t\t\t</label>\r\n\t\t\t<textarea class=\"ckeditor\" cols=\"80\" id=\"editor1\" name=\"editor1\" rows=\"10\">\r\n\t\t\t\t&lt;h1&gt;&lt;img alt=&quot;Saturn V carrying Apollo 11&quot; class=&quot;right&quot; src=&quot;assets/sample.jpg&quot;/&gt; Apollo 11&lt;/h1&gt; &lt;p&gt;&lt;b&gt;Apollo 11&lt;/b&gt; was the spaceflight that landed the first humans, Americans &lt;a href=&quot;http://en.wikipedia.org/wiki/Neil_Armstrong&quot; title=&quot;Neil Armstrong&quot;&gt;Neil Armstrong&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Buzz_Aldrin&quot; title=&quot;Buzz Aldrin&quot;&gt;Buzz Aldrin&lt;/a&gt;, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.&lt;/p&gt; &lt;p&gt;Armstrong spent about &lt;s&gt;three and a half&lt;/s&gt; two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&amp;nbsp;kg) of lunar material for return to Earth. A third member of the mission, &lt;a href=&quot;http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)&quot; title=&quot;Michael Collins (astronaut)&quot;&gt;Michael Collins&lt;/a&gt;, piloted the &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_Command/Service_Module&quot; title=&quot;Apollo Command/Service Module&quot;&gt;command&lt;/a&gt; spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.&lt;/p&gt; &lt;h2&gt;Broadcasting and &lt;em&gt;quotes&lt;/em&gt; &lt;a id=&quot;quotes&quot; name=&quot;quotes&quot;&gt;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;One small step for [a] man, one giant leap for mankind.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Apollo 11 effectively ended the &lt;a href=&quot;http://en.wikipedia.org/wiki/Space_Race&quot; title=&quot;Space Race&quot;&gt;Space Race&lt;/a&gt; and fulfilled a national goal proposed in 1961 by the late U.S. President &lt;a href=&quot;http://en.wikipedia.org/wiki/John_F._Kennedy&quot; title=&quot;John F. Kennedy&quot;&gt;John F. Kennedy&lt;/a&gt; in a speech before the United States Congress:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.&lt;/p&gt;&lt;/blockquote&gt; &lt;h2&gt;Technical details &lt;a id=&quot;tech-details&quot; name=&quot;tech-details&quot;&gt;&lt;/a&gt;&lt;/h2&gt; &lt;table align=&quot;right&quot; border=&quot;1&quot; bordercolor=&quot;#ccc&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse:collapse;margin:10px 0 10px 15px;&quot;&gt; &lt;caption&gt;&lt;strong&gt;Mission crew&lt;/strong&gt;&lt;/caption&gt; &lt;thead&gt; &lt;tr&gt; &lt;th scope=&quot;col&quot;&gt;Position&lt;/th&gt; &lt;th scope=&quot;col&quot;&gt;Astronaut&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;Commander&lt;/td&gt; &lt;td&gt;Neil A. Armstrong&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Command Module Pilot&lt;/td&gt; &lt;td&gt;Michael Collins&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Lunar Module Pilot&lt;/td&gt; &lt;td&gt;Edwin &amp;quot;Buzz&amp;quot; E. Aldrin, Jr.&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;Launched by a &lt;strong&gt;Saturn V&lt;/strong&gt; rocket from &lt;a href=&quot;http://en.wikipedia.org/wiki/Kennedy_Space_Center&quot; title=&quot;Kennedy Space Center&quot;&gt;Kennedy Space Center&lt;/a&gt; in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of &lt;a href=&quot;http://en.wikipedia.org/wiki/NASA&quot; title=&quot;NASA&quot;&gt;NASA&lt;/a&gt;&amp;#39;s Apollo program. The Apollo spacecraft had three parts:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;strong&gt;Command Module&lt;/strong&gt; with a cabin for the three astronauts which was the only part which landed back on Earth&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Service Module&lt;/strong&gt; which supported the Command Module with propulsion, electrical power, oxygen and water&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Lunar Module&lt;/strong&gt; for landing on the Moon.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;After being sent to the Moon by the Saturn V&amp;#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Mare_Tranquillitatis&quot; title=&quot;Mare Tranquillitatis&quot;&gt;Sea of Tranquility&lt;/a&gt;. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Pacific_Ocean&quot; title=&quot;Pacific Ocean&quot;&gt;Pacific Ocean&lt;/a&gt; on July 24.&lt;/p&gt; &lt;hr/&gt; &lt;p style=&quot;text-align: right;&quot;&gt;&lt;small&gt;Source: &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_11&quot;&gt;Wikipedia.org&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;\r\n\t\t\t</textarea>\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\t<input type=\"submit\" value=\"Submit\">\r\n\t\t</p>\r\n\t</form>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/replacebycode.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>Replace Textarea by Code &mdash; CKEditor Sample</title>\r\n\t<script src=\"../ckeditor.js\"></script>\r\n\t<link href=\"sample.css\" rel=\"stylesheet\">\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"index.html\">CKEditor Samples</a> &raquo; Replace Textarea Elements Using JavaScript Code\r\n\t</h1>\r\n\t<form action=\"sample_posteddata.php\" method=\"post\">\r\n\t\t<div class=\"description\">\r\n\t\t\t<p>\r\n\t\t\t\tThis editor is using an <code>&lt;iframe&gt;</code> element-based editing area, provided by the <strong>Wysiwygarea</strong> plugin.\r\n\t\t\t</p>\r\n<pre class=\"samples\">\r\nCKEDITOR.replace( '<em>textarea_id</em>' )\r\n</pre>\r\n\t\t</div>\r\n\t\t<textarea cols=\"80\" id=\"editor1\" name=\"editor1\" rows=\"10\">\r\n\t\t\t&lt;h1&gt;&lt;img alt=&quot;Saturn V carrying Apollo 11&quot; class=&quot;right&quot; src=&quot;assets/sample.jpg&quot;/&gt; Apollo 11&lt;/h1&gt; &lt;p&gt;&lt;b&gt;Apollo 11&lt;/b&gt; was the spaceflight that landed the first humans, Americans &lt;a href=&quot;http://en.wikipedia.org/wiki/Neil_Armstrong&quot; title=&quot;Neil Armstrong&quot;&gt;Neil Armstrong&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Buzz_Aldrin&quot; title=&quot;Buzz Aldrin&quot;&gt;Buzz Aldrin&lt;/a&gt;, on the Moon on July 20, 1969, at 20:18 UTC. Armstrong became the first to step onto the lunar surface 6 hours later on July 21 at 02:56 UTC.&lt;/p&gt; &lt;p&gt;Armstrong spent about &lt;s&gt;three and a half&lt;/s&gt; two and a half hours outside the spacecraft, Aldrin slightly less; and together they collected 47.5 pounds (21.5&amp;nbsp;kg) of lunar material for return to Earth. A third member of the mission, &lt;a href=&quot;http://en.wikipedia.org/wiki/Michael_Collins_(astronaut)&quot; title=&quot;Michael Collins (astronaut)&quot;&gt;Michael Collins&lt;/a&gt;, piloted the &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_Command/Service_Module&quot; title=&quot;Apollo Command/Service Module&quot;&gt;command&lt;/a&gt; spacecraft alone in lunar orbit until Armstrong and Aldrin returned to it for the trip back to Earth.&lt;/p&gt; &lt;h2&gt;Broadcasting and &lt;em&gt;quotes&lt;/em&gt; &lt;a id=&quot;quotes&quot; name=&quot;quotes&quot;&gt;&lt;/a&gt;&lt;/h2&gt; &lt;p&gt;Broadcast on live TV to a world-wide audience, Armstrong stepped onto the lunar surface and described the event as:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;One small step for [a] man, one giant leap for mankind.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Apollo 11 effectively ended the &lt;a href=&quot;http://en.wikipedia.org/wiki/Space_Race&quot; title=&quot;Space Race&quot;&gt;Space Race&lt;/a&gt; and fulfilled a national goal proposed in 1961 by the late U.S. President &lt;a href=&quot;http://en.wikipedia.org/wiki/John_F._Kennedy&quot; title=&quot;John F. Kennedy&quot;&gt;John F. Kennedy&lt;/a&gt; in a speech before the United States Congress:&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;[...] before this decade is out, of landing a man on the Moon and returning him safely to the Earth.&lt;/p&gt;&lt;/blockquote&gt; &lt;h2&gt;Technical details &lt;a id=&quot;tech-details&quot; name=&quot;tech-details&quot;&gt;&lt;/a&gt;&lt;/h2&gt; &lt;table align=&quot;right&quot; border=&quot;1&quot; bordercolor=&quot;#ccc&quot; cellpadding=&quot;5&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse:collapse;margin:10px 0 10px 15px;&quot;&gt; &lt;caption&gt;&lt;strong&gt;Mission crew&lt;/strong&gt;&lt;/caption&gt; &lt;thead&gt; &lt;tr&gt; &lt;th scope=&quot;col&quot;&gt;Position&lt;/th&gt; &lt;th scope=&quot;col&quot;&gt;Astronaut&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;Commander&lt;/td&gt; &lt;td&gt;Neil A. Armstrong&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Command Module Pilot&lt;/td&gt; &lt;td&gt;Michael Collins&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;Lunar Module Pilot&lt;/td&gt; &lt;td&gt;Edwin &amp;quot;Buzz&amp;quot; E. Aldrin, Jr.&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;Launched by a &lt;strong&gt;Saturn V&lt;/strong&gt; rocket from &lt;a href=&quot;http://en.wikipedia.org/wiki/Kennedy_Space_Center&quot; title=&quot;Kennedy Space Center&quot;&gt;Kennedy Space Center&lt;/a&gt; in Merritt Island, Florida on July 16, Apollo 11 was the fifth manned mission of &lt;a href=&quot;http://en.wikipedia.org/wiki/NASA&quot; title=&quot;NASA&quot;&gt;NASA&lt;/a&gt;&amp;#39;s Apollo program. The Apollo spacecraft had three parts:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;strong&gt;Command Module&lt;/strong&gt; with a cabin for the three astronauts which was the only part which landed back on Earth&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Service Module&lt;/strong&gt; which supported the Command Module with propulsion, electrical power, oxygen and water&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Lunar Module&lt;/strong&gt; for landing on the Moon.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;After being sent to the Moon by the Saturn V&amp;#39;s upper stage, the astronauts separated the spacecraft from it and travelled for three days until they entered into lunar orbit. Armstrong and Aldrin then moved into the Lunar Module and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Mare_Tranquillitatis&quot; title=&quot;Mare Tranquillitatis&quot;&gt;Sea of Tranquility&lt;/a&gt;. They stayed a total of about 21 and a half hours on the lunar surface. After lifting off in the upper part of the Lunar Module and rejoining Collins in the Command Module, they returned to Earth and landed in the &lt;a href=&quot;http://en.wikipedia.org/wiki/Pacific_Ocean&quot; title=&quot;Pacific Ocean&quot;&gt;Pacific Ocean&lt;/a&gt; on July 24.&lt;/p&gt; &lt;hr/&gt; &lt;p style=&quot;text-align: right;&quot;&gt;&lt;small&gt;Source: &lt;a href=&quot;http://en.wikipedia.org/wiki/Apollo_11&quot;&gt;Wikipedia.org&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;\r\n\t\t</textarea>\r\n\t\t<script>\r\n\r\n\t\t\t// This call can be placed at any point after the\r\n\t\t\t// <textarea>, or inside a <head><script> in a\r\n\t\t\t// window.onload event handler.\r\n\r\n\t\t\t// Replace the <textarea id=\"editor\"> with an CKEditor\r\n\t\t\t// instance, using default configurations.\r\n\r\n\t\t\tCKEDITOR.replace( 'editor1' );\r\n\r\n\t\t</script>\r\n\t\t<p>\r\n\t\t\t<input type=\"submit\" value=\"Submit\">\r\n\t\t</p>\r\n\t</form>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/sample.css",
    "content": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n*/\r\n\r\nhtml, body, h1, h2, h3, h4, h5, h6, div, span, blockquote, p, address, form, fieldset, img, ul, ol, dl, dt, dd, li, hr, table, td, th, strong, em, sup, sub, dfn, ins, del, q, cite, var, samp, code, kbd, tt, pre\r\n{\r\n\tline-height: 1.5;\r\n}\r\n\r\nbody\r\n{\r\n\tpadding: 10px 30px;\r\n}\r\n\r\ninput, textarea, select, option, optgroup, button, td, th\r\n{\r\n\tfont-size: 100%;\r\n}\r\n\r\npre\r\n{\r\n\t-moz-tab-size: 4;\r\n\t-o-tab-size: 4;\r\n\t-webkit-tab-size: 4;\r\n\ttab-size: 4;\r\n}\r\n\r\npre, code, kbd, samp, tt\r\n{\r\n\tfont-family: monospace,monospace;\r\n\tfont-size: 1em;\r\n}\r\n\r\nbody {\r\n\twidth: 960px;\r\n\tmargin: 0 auto;\r\n}\r\n\r\ncode\r\n{\r\n\tbackground: #f3f3f3;\r\n\tborder: 1px solid #ddd;\r\n\tpadding: 1px 4px;\r\n\r\n\t-moz-border-radius: 3px;\r\n\t-webkit-border-radius: 3px;\r\n\tborder-radius: 3px;\r\n}\r\n\r\nabbr\r\n{\r\n\tborder-bottom: 1px dotted #555;\r\n\tcursor: pointer;\r\n}\r\n\r\n.new, .beta\r\n{\r\n\ttext-transform: uppercase;\r\n\tfont-size: 10px;\r\n\tfont-weight: bold;\r\n\tpadding: 1px 4px;\r\n\tmargin: 0 0 0 5px;\r\n\tcolor: #fff;\r\n\tfloat: right;\r\n\r\n\t-moz-border-radius: 3px;\r\n\t-webkit-border-radius: 3px;\r\n\tborder-radius: 3px;\r\n}\r\n\r\n.new\r\n{\r\n\tbackground: #FF7E00;\r\n\tborder: 1px solid #DA8028;\r\n\ttext-shadow: 0 1px 0 #C97626;\r\n\r\n\t-moz-box-shadow: 0 2px 3px 0 #FFA54E inset;\r\n\t-webkit-box-shadow: 0 2px 3px 0 #FFA54E inset;\r\n\tbox-shadow: 0 2px 3px 0 #FFA54E inset;\r\n}\r\n\r\n.beta\r\n{\r\n\tbackground: #18C0DF;\r\n\tborder: 1px solid #19AAD8;\r\n\ttext-shadow: 0 1px 0 #048CAD;\r\n\tfont-style: italic;\r\n\r\n\t-moz-box-shadow: 0 2px 3px 0 #50D4FD inset;\r\n\t-webkit-box-shadow: 0 2px 3px 0 #50D4FD inset;\r\n\tbox-shadow: 0 2px 3px 0 #50D4FD inset;\r\n}\r\n\r\nh1.samples\r\n{\r\n\tcolor: #0782C1;\r\n\tfont-size: 200%;\r\n\tfont-weight: normal;\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n}\r\n\r\nh1.samples a\r\n{\r\n\tcolor: #0782C1;\r\n\ttext-decoration: none;\r\n\tborder-bottom: 1px dotted #0782C1;\r\n}\r\n\r\n.samples a:hover\r\n{\r\n\tborder-bottom: 1px dotted #0782C1;\r\n}\r\n\r\nh2.samples\r\n{\r\n\tcolor: #000000;\r\n\tfont-size: 130%;\r\n\tmargin: 15px 0 0 0;\r\n\tpadding: 0;\r\n}\r\n\r\np, blockquote, address, form, pre, dl, h1.samples, h2.samples\r\n{\r\n\tmargin-bottom: 15px;\r\n}\r\n\r\nul.samples\r\n{\r\n\tmargin-bottom: 15px;\r\n}\r\n\r\n.clear\r\n{\r\n\tclear: both;\r\n}\r\n\r\nfieldset\r\n{\r\n\tmargin: 0;\r\n\tpadding: 10px;\r\n}\r\n\r\nbody, input, textarea\r\n{\r\n\tcolor: #333333;\r\n\tfont-family: Arial, Helvetica, sans-serif;\r\n}\r\n\r\nbody\r\n{\r\n\tfont-size: 75%;\r\n}\r\n\r\na.samples\r\n{\r\n\tcolor: #189DE1;\r\n\ttext-decoration: none;\r\n}\r\n\r\nform\r\n{\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n}\r\n\r\npre.samples\r\n{\r\n\tbackground-color: #F7F7F7;\r\n\tborder: 1px solid #D7D7D7;\r\n\toverflow: auto;\r\n\tpadding: 0.25em;\r\n\twhite-space: pre-wrap; /* CSS 2.1 */\r\n\tword-wrap: break-word; /* IE7 */\r\n}\r\n\r\n#footer\r\n{\r\n\tclear: both;\r\n\tpadding-top: 10px;\r\n}\r\n\r\n#footer hr\r\n{\r\n\tmargin: 10px 0 15px 0;\r\n\theight: 1px;\r\n\tborder: solid 1px gray;\r\n\tborder-bottom: none;\r\n}\r\n\r\n#footer p\r\n{\r\n\tmargin: 0 10px 10px 10px;\r\n\tfloat: left;\r\n}\r\n\r\n#footer #copy\r\n{\r\n\tfloat: right;\r\n}\r\n\r\n#outputSample\r\n{\r\n\twidth: 100%;\r\n\ttable-layout: fixed;\r\n}\r\n\r\n#outputSample thead th\r\n{\r\n\tcolor: #dddddd;\r\n\tbackground-color: #999999;\r\n\tpadding: 4px;\r\n\twhite-space: nowrap;\r\n}\r\n\r\n#outputSample tbody th\r\n{\r\n\tvertical-align: top;\r\n\ttext-align: left;\r\n}\r\n\r\n#outputSample pre\r\n{\r\n\tmargin: 0;\r\n\tpadding: 0;\r\n}\r\n\r\n.description\r\n{\r\n\tborder: 1px dotted #B7B7B7;\r\n\tmargin-bottom: 10px;\r\n\tpadding: 10px 10px 0;\r\n\toverflow: hidden;\r\n}\r\n\r\nlabel\r\n{\r\n\tdisplay: block;\r\n\tmargin-bottom: 6px;\r\n}\r\n\r\n/**\r\n *\tCKEditor editables are automatically set with the \"cke_editable\" class\r\n *\tplus cke_editable_(inline|themed) depending on the editor type.\r\n */\r\n\r\n/* Style a bit the inline editables. */\r\n.cke_editable.cke_editable_inline\r\n{\r\n\tcursor: pointer;\r\n}\r\n\r\n/* Once an editable element gets focused, the \"cke_focus\" class is\r\n   added to it, so we can style it differently. */\r\n.cke_editable.cke_editable_inline.cke_focus\r\n{\r\n\tbox-shadow: inset 0px 0px 20px 3px #ddd, inset 0 0 1px #000;\r\n\toutline: none;\r\n\tbackground: #eee;\r\n\tcursor: text;\r\n}\r\n\r\n/* Avoid pre-formatted overflows inline editable. */\r\n.cke_editable_inline pre\r\n{\r\n\twhite-space: pre-wrap;\r\n\tword-wrap: break-word;\r\n}\r\n\r\n/**\r\n *\tSamples index styles.\r\n */\r\n\r\n.twoColumns,\r\n.twoColumnsLeft,\r\n.twoColumnsRight\r\n{\r\n\toverflow: hidden;\r\n}\r\n\r\n.twoColumnsLeft,\r\n.twoColumnsRight\r\n{\r\n\twidth: 45%;\r\n}\r\n\r\n.twoColumnsLeft\r\n{\r\n\tfloat: left;\r\n}\r\n\r\n.twoColumnsRight\r\n{\r\n\tfloat: right;\r\n}\r\n\r\ndl.samples\r\n{\r\n\tpadding: 0 0 0 40px;\r\n}\r\ndl.samples > dt\r\n{\r\n\tdisplay: list-item;\r\n\tlist-style-type: disc;\r\n\tlist-style-position: outside;\r\n\tmargin: 0 0 3px;\r\n}\r\ndl.samples > dd\r\n{\r\n\tmargin: 0 0 3px;\r\n}\r\n.warning\r\n{\r\n\tcolor: #ff0000;\r\n\tbackground-color: #FFCCBA;\r\n\tborder: 2px dotted #ff0000;\r\n\tpadding: 15px 10px;\r\n\tmargin: 10px 0;\r\n}\r\n\r\n/* Used on inline samples */\r\n\r\nblockquote\r\n{\r\n\tfont-style: italic;\r\n\tfont-family: Georgia, Times, \"Times New Roman\", serif;\r\n\tpadding: 2px 0;\r\n\tborder-style: solid;\r\n\tborder-color: #ccc;\r\n\tborder-width: 0;\r\n}\r\n\r\n.cke_contents_ltr blockquote\r\n{\r\n\tpadding-left: 20px;\r\n\tpadding-right: 8px;\r\n\tborder-left-width: 5px;\r\n}\r\n\r\n.cke_contents_rtl blockquote\r\n{\r\n\tpadding-left: 8px;\r\n\tpadding-right: 20px;\r\n\tborder-right-width: 5px;\r\n}\r\n\r\nimg.right {\r\n\tborder: 1px solid #ccc;\r\n\tfloat: right;\r\n\tmargin-left: 15px;\r\n\tpadding: 5px;\r\n}\r\n\r\nimg.left {\r\n\tborder: 1px solid #ccc;\r\n\tfloat: left;\r\n\tmargin-right: 15px;\r\n\tpadding: 5px;\r\n}\r\n\r\n.marker\r\n{\r\n\tbackground-color: Yellow;\r\n}\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/sample.js",
    "content": "﻿/**\r\n * Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\n * For licensing, see LICENSE.md or http://ckeditor.com/license\r\n */\r\n\r\n// Tool scripts for the sample pages.\r\n// This file can be ignored and is not required to make use of CKEditor.\r\n\r\n( function() {\r\n\tCKEDITOR.on( 'instanceReady', function( ev ) {\r\n\t\t// Check for sample compliance.\r\n\t\tvar editor = ev.editor,\r\n\t\t\tmeta = CKEDITOR.document.$.getElementsByName( 'ckeditor-sample-required-plugins' ),\r\n\t\t\trequires = meta.length ? CKEDITOR.dom.element.get( meta[ 0 ] ).getAttribute( 'content' ).split( ',' ) : [],\r\n\t\t\tmissing = [],\r\n\t\t\ti;\r\n\r\n\t\tif ( requires.length ) {\r\n\t\t\tfor ( i = 0; i < requires.length; i++ ) {\r\n\t\t\t\tif ( !editor.plugins[ requires[ i ] ] )\r\n\t\t\t\t\tmissing.push( '<code>' + requires[ i ] + '</code>' );\r\n\t\t\t}\r\n\r\n\t\t\tif ( missing.length ) {\r\n\t\t\t\tvar warn = CKEDITOR.dom.element.createFromHtml(\r\n\t\t\t\t\t'<div class=\"warning\">' +\r\n\t\t\t\t\t\t'<span>To fully experience this demo, the ' + missing.join( ', ' ) + ' plugin' + ( missing.length > 1 ? 's are' : ' is' ) + ' required.</span>' +\r\n\t\t\t\t\t'</div>'\r\n\t\t\t\t);\r\n\t\t\t\twarn.insertBefore( editor.container );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Set icons.\r\n\t\tvar doc = new CKEDITOR.dom.document( document ),\r\n\t\t\ticons = doc.find( '.button_icon' );\r\n\r\n\t\tfor ( i = 0; i < icons.count(); i++ ) {\r\n\t\t\tvar icon = icons.getItem( i ),\r\n\t\t\t\tname = icon.getAttribute( 'data-icon' ),\r\n\t\t\t\tstyle = CKEDITOR.skin.getIconStyle( name, ( CKEDITOR.lang.dir == 'rtl' ) );\r\n\r\n\t\t\ticon.addClass( 'cke_button_icon' );\r\n\t\t\ticon.addClass( 'cke_button__' + name + '_icon' );\r\n\t\t\ticon.setAttribute( 'style', style );\r\n\t\t\ticon.setStyle( 'float', 'none' );\r\n\r\n\t\t}\r\n\t} );\r\n} )();\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/sample_posteddata.php",
    "content": "<?php /* <body><pre>\r\n\r\n-------------------------------------------------------------------------------------------\r\n  CKEditor - Posted Data\r\n\r\n  We are sorry, but your Web server does not support the PHP language used in this script.\r\n\r\n  Please note that CKEditor can be used with any other server-side language than just PHP.\r\n  To save the content created with CKEditor you need to read the POST data on the server\r\n  side and write it to a file or the database.\r\n\r\n  Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\n  For licensing, see LICENSE.md or <a href=\"http://ckeditor.com/license\">http://ckeditor.com/license</a>\r\n-------------------------------------------------------------------------------------------\r\n\r\n</pre><div style=\"display:none\"></body> */ include \"assets/posteddata.php\"; ?>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/tabindex.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>TAB Key-Based Navigation &mdash; CKEditor Sample</title>\r\n\t<script src=\"../ckeditor.js\"></script>\r\n\t<link href=\"sample.css\" rel=\"stylesheet\">\r\n\t<style>\r\n\r\n\t\t.cke_focused,\r\n\t\t.cke_editable.cke_focused\r\n\t\t{\r\n\t\t\toutline: 3px dotted blue !important;\r\n\t\t\t*border: 3px dotted blue !important;\t/* For IE7 */\r\n\t\t}\r\n\r\n\t</style>\r\n\t<script>\r\n\r\n\t\tCKEDITOR.on( 'instanceReady', function( evt ) {\r\n\t\t\tvar editor = evt.editor;\r\n\t\t\teditor.setData( 'This editor has it\\'s tabIndex set to <strong>' + editor.tabIndex + '</strong>' );\r\n\r\n\t\t\t// Apply focus class name.\r\n\t\t\teditor.on( 'focus', function() {\r\n\t\t\t\teditor.container.addClass( 'cke_focused' );\r\n\t\t\t});\r\n\t\t\teditor.on( 'blur', function() {\r\n\t\t\t\teditor.container.removeClass( 'cke_focused' );\r\n\t\t\t});\r\n\r\n\t\t\t// Put startup focus on the first editor in tab order.\r\n\t\t\tif ( editor.tabIndex == 1 )\r\n\t\t\t\teditor.focus();\r\n\t\t});\r\n\r\n\t</script>\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"index.html\">CKEditor Samples</a> &raquo; TAB Key-Based Navigation\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tThis sample shows how tab key navigation among editor instances is\r\n\t\t\taffected by the <code>tabIndex</code> attribute from\r\n\t\t\tthe original page element. Use TAB key to move between the editors.\r\n\t\t</p>\r\n\t</div>\r\n\t<p>\r\n\t\t<textarea class=\"ckeditor\" cols=\"80\" id=\"editor4\" rows=\"10\" tabindex=\"1\"></textarea>\r\n\t</p>\r\n\t<div class=\"ckeditor\" contenteditable=\"true\" id=\"editor1\" tabindex=\"4\"></div>\r\n\t<p>\r\n\t\t<textarea class=\"ckeditor\" cols=\"80\" id=\"editor2\" rows=\"10\" tabindex=\"2\"></textarea>\r\n\t</p>\r\n\t<p>\r\n\t\t<textarea class=\"ckeditor\" cols=\"80\" id=\"editor3\" rows=\"10\" tabindex=\"3\"></textarea>\r\n\t</p>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/uicolor.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>UI Color Picker &mdash; CKEditor Sample</title>\r\n\t<script src=\"../ckeditor.js\"></script>\r\n\t<link rel=\"stylesheet\" href=\"sample.css\">\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"index.html\">CKEditor Samples</a> &raquo; UI Color\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tThis sample shows how to automatically replace <code>&lt;textarea&gt;</code> elements\r\n\t\t\twith a CKEditor instance with an option to change the color of its user interface.<br>\r\n\t\t\t<strong>Note:</strong>The UI skin color feature depends on the CKEditor skin\r\n\t\t\tcompatibility. The Moono and Kama skins are examples of skins that work with it.\r\n\t\t</p>\r\n\t</div>\r\n\t<form action=\"sample_posteddata.php\" method=\"post\">\r\n\t<p>\r\n\t\tThis editor instance has a UI color value defined in configuration to change the skin color,\r\n\t\tTo specify the color of the user interface, set the <code>uiColor</code> property:\r\n\t</p>\r\n\t<pre class=\"samples\">\r\nCKEDITOR.replace( '<em>textarea_id</em>', {\r\n\t<strong>uiColor: '#14B8C4'</strong>\r\n});</pre>\r\n\t<p>\r\n\t\tNote that <code><em>textarea_id</em></code> in the code above is the <code>id</code> attribute of\r\n\t\tthe <code>&lt;textarea&gt;</code> element to be replaced.\r\n\t</p>\r\n\t<p>\r\n\t\t<textarea cols=\"80\" id=\"editor1\" name=\"editor1\" rows=\"10\">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href=\"http://ckeditor.com/\"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>\r\n\t\t<script>\r\n\r\n\t\t\t// Replace the <textarea id=\"editor\"> with an CKEditor\r\n\t\t\t// instance, using default configurations.\r\n\t\t\tCKEDITOR.replace( 'editor1', {\r\n\t\t\t\tuiColor: '#14B8C4',\r\n\t\t\t\ttoolbar: [\r\n\t\t\t\t\t[ 'Bold', 'Italic', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink' ],\r\n\t\t\t\t\t[ 'FontSize', 'TextColor', 'BGColor' ]\r\n\t\t\t\t]\r\n\t\t\t});\r\n\r\n\t\t</script>\r\n\t</p>\r\n\t<p>\r\n\t\t<input type=\"submit\" value=\"Submit\">\r\n\t</p>\r\n\t</form>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/uilanguages.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>User Interface Globalization &mdash; CKEditor Sample</title>\r\n\t<script src=\"../ckeditor.js\"></script>\r\n\t<script src=\"assets/uilanguages/languages.js\"></script>\r\n\t<link rel=\"stylesheet\" href=\"sample.css\">\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"index.html\">CKEditor Samples</a> &raquo; User Interface Languages\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tThis sample shows how to automatically replace <code>&lt;textarea&gt;</code> elements\r\n\t\t\twith a CKEditor instance with an option to change the language of its user interface.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tIt pulls the language list from CKEditor <code>_languages.js</code> file that contains the list of supported languages and creates\r\n\t\t\ta drop-down list that lets the user change the UI language.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tBy default, CKEditor automatically localizes the editor to the language of the user.\r\n\t\t\tThe UI language can be controlled with two configuration options:\r\n\t\t\t<code><a class=\"samples\" href=\"http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-language\">language</a></code> and\r\n\t\t\t<code><a class=\"samples\" href=\"http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-defaultLanguage\">\r\n\t\t\tdefaultLanguage</a></code>. The <code>defaultLanguage</code> setting specifies the\r\n\t\t\tdefault CKEditor language to be used when a localization suitable for user's settings is not available.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tTo specify the user interface language that will be used no matter what language is\r\n\t\t\tspecified in user's browser or operating system, set the <code>language</code> property:\r\n\t\t</p>\r\n<pre class=\"samples\">\r\nCKEDITOR.replace( '<em>textarea_id</em>', {\r\n\t// Load the German interface.\r\n\t<strong>language: 'de'</strong>\r\n});</pre>\r\n\t\t<p>\r\n\t\t\tNote that <code><em>textarea_id</em></code> in the code above is the <code>id</code> attribute of\r\n\t\t\tthe <code>&lt;textarea&gt;</code> element to be replaced.\r\n\t\t</p>\r\n\t</div>\r\n\t<form action=\"sample_posteddata.php\" method=\"post\">\r\n\t\t<p>\r\n\t\t\tAvailable languages (<span id=\"count\"> </span> languages!):<br>\r\n\t\t\t<script>\r\n\r\n\t\t\t\tdocument.write( '<select disabled=\"disabled\" id=\"languages\" onchange=\"createEditor( this.value );\">' );\r\n\r\n\t\t\t\t// Get the language list from the _languages.js file.\r\n\t\t\t\tfor ( var i = 0 ; i < window.CKEDITOR_LANGS.length ; i++ ) {\r\n\t\t\t\t\tdocument.write(\r\n\t\t\t\t\t\t'<option value=\"' + window.CKEDITOR_LANGS[i].code + '\">' +\r\n\t\t\t\t\t\t\twindow.CKEDITOR_LANGS[i].name +\r\n\t\t\t\t\t\t'</option>' );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdocument.write( '</select>' );\r\n\r\n\t\t\t</script>\r\n\t\t\t<br>\r\n\t\t\t<span style=\"color: #888888\">\r\n\t\t\t\t(You may see strange characters if your system does not support the selected language)\r\n\t\t\t</span>\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\t<textarea cols=\"80\" id=\"editor1\" name=\"editor1\" rows=\"10\">&lt;p&gt;This is some &lt;strong&gt;sample text&lt;/strong&gt;. You are using &lt;a href=\"http://ckeditor.com/\"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>\r\n\t\t\t<script>\r\n\r\n\t\t\t\t// Set the number of languages.\r\n\t\t\t\tdocument.getElementById( 'count' ).innerHTML = window.CKEDITOR_LANGS.length;\r\n\r\n\t\t\t\tvar editor;\r\n\r\n\t\t\t\tfunction createEditor( languageCode ) {\r\n\t\t\t\t\tif ( editor )\r\n\t\t\t\t\t\teditor.destroy();\r\n\r\n\t\t\t\t\t// Replace the <textarea id=\"editor\"> with an CKEditor\r\n\t\t\t\t\t// instance, using default configurations.\r\n\t\t\t\t\teditor = CKEDITOR.replace( 'editor1', {\r\n\t\t\t\t\t\tlanguage: languageCode,\r\n\r\n\t\t\t\t\t\ton: {\r\n\t\t\t\t\t\t\tinstanceReady: function() {\r\n\t\t\t\t\t\t\t\t// Wait for the editor to be ready to set\r\n\t\t\t\t\t\t\t\t// the language combo.\r\n\t\t\t\t\t\t\t\tvar languages = document.getElementById( 'languages' );\r\n\t\t\t\t\t\t\t\tlanguages.value = this.langCode;\r\n\t\t\t\t\t\t\t\tlanguages.disabled = false;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// At page startup, load the default language:\r\n\t\t\t\tcreateEditor( '' );\r\n\r\n\t\t\t</script>\r\n\t\t</p>\r\n\t</form>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/samples/xhtmlstyle.html",
    "content": "<!DOCTYPE html>\r\n<!--\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n-->\r\n<html>\r\n<head>\r\n\t<meta charset=\"utf-8\">\r\n\t<title>XHTML Compliant Output &mdash; CKEditor Sample</title>\r\n\t<meta name=\"ckeditor-sample-required-plugins\" content=\"sourcearea\">\r\n\t<script src=\"../ckeditor.js\"></script>\r\n\t<script src=\"../samples/sample.js\"></script>\r\n\t<link href=\"sample.css\" rel=\"stylesheet\">\r\n</head>\r\n<body>\r\n\t<h1 class=\"samples\">\r\n\t\t<a href=\"index.html\">CKEditor Samples</a> &raquo; Producing XHTML Compliant Output\r\n\t</h1>\r\n\t<div class=\"description\">\r\n\t\t<p>\r\n\t\t\tThis sample shows how to configure CKEditor to output valid\r\n\t\t\t<a class=\"samples\" href=\"http://www.w3.org/TR/xhtml11/\">XHTML 1.1</a> code.\r\n\t\t\tDeprecated elements (<code>&lt;font&gt;</code>, <code>&lt;u&gt;</code>) or attributes\r\n\t\t\t(<code>size</code>, <code>face</code>) will be replaced with XHTML compliant code.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tTo add a CKEditor instance outputting valid XHTML code, load the editor using a standard\r\n\t\t\tJavaScript call and define CKEditor features to use the XHTML compliant elements and styles.\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\tA snippet of the configuration code can be seen below; check the source of this page for\r\n\t\t\tfull definition:\r\n\t\t</p>\r\n<pre class=\"samples\">\r\nCKEDITOR.replace( '<em>textarea_id</em>', {\r\n\tcontentsCss: 'assets/outputxhtml.css',\r\n\r\n\tcoreStyles_bold: {\r\n\t\telement: 'span',\r\n\t\tattributes: { 'class': 'Bold' }\r\n\t},\r\n\tcoreStyles_italic: {\r\n\t\telement: 'span',\r\n\t\tattributes: { 'class': 'Italic' }\r\n\t},\r\n\r\n\t...\r\n});</pre>\r\n\t</div>\r\n\t<form action=\"sample_posteddata.php\" method=\"post\">\r\n\t\t<p>\r\n\t\t\t<label for=\"editor1\">\r\n\t\t\t\tEditor 1:\r\n\t\t\t</label>\r\n\t\t\t<textarea cols=\"80\" id=\"editor1\" name=\"editor1\" rows=\"10\">&lt;p&gt;This is some &lt;span class=\"Bold\"&gt;sample text&lt;/span&gt;. You are using &lt;a href=\"http://ckeditor.com/\"&gt;CKEditor&lt;/a&gt;.&lt;/p&gt;</textarea>\r\n\t\t\t<script>\r\n\r\n\t\t\t\tCKEDITOR.replace( 'editor1', {\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Style sheet for the contents\r\n\t\t\t\t\t */\r\n\t\t\t\t\tcontentsCss: 'assets/outputxhtml/outputxhtml.css',\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Special allowed content rules for spans used by\r\n\t\t\t\t\t * font face, size, and color buttons.\r\n\t\t\t\t\t *\r\n\t\t\t\t\t * Note: all rules have been written separately so\r\n\t\t\t\t\t * it was possible to specify required classes.\r\n\t\t\t\t\t */\r\n\t\t\t\t\textraAllowedContent: 'span(!FontColor1);span(!FontColor2);span(!FontColor3);' +\r\n\t\t\t\t\t\t'span(!FontColor1BG);span(!FontColor2BG);span(!FontColor3BG);' +\r\n\t\t\t\t\t\t'span(!FontComic);span(!FontCourier);span(!FontTimes);' +\r\n\t\t\t\t\t\t'span(!FontSmaller);span(!FontLarger);span(!FontSmall);span(!FontBig);span(!FontDouble)',\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Core styles.\r\n\t\t\t\t\t */\r\n\t\t\t\t\tcoreStyles_bold: {\r\n\t\t\t\t\t\telement: 'span',\r\n\t\t\t\t\t\tattributes: { 'class': 'Bold' }\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcoreStyles_italic: {\r\n\t\t\t\t\t\telement: 'span',\r\n\t\t\t\t\t\tattributes: { 'class': 'Italic' }\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcoreStyles_underline: {\r\n\t\t\t\t\t\telement: 'span',\r\n\t\t\t\t\t\tattributes: { 'class': 'Underline' }\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcoreStyles_strike: {\r\n\t\t\t\t\t\telement: 'span',\r\n\t\t\t\t\t\tattributes: { 'class': 'StrikeThrough' },\r\n\t\t\t\t\t\toverrides: 'strike'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcoreStyles_subscript: {\r\n\t\t\t\t\t\telement: 'span',\r\n\t\t\t\t\t\tattributes: { 'class': 'Subscript' },\r\n\t\t\t\t\t\toverrides: 'sub'\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcoreStyles_superscript: {\r\n\t\t\t\t\t\telement: 'span',\r\n\t\t\t\t\t\tattributes: { 'class': 'Superscript' },\r\n\t\t\t\t\t\toverrides: 'sup'\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Font face.\r\n\t\t\t\t\t */\r\n\r\n\t\t\t\t\t// List of fonts available in the toolbar combo. Each font definition is\r\n\t\t\t\t\t// separated by a semi-colon (;). We are using class names here, so each font\r\n\t\t\t\t\t// is defined by {Combo Label}/{Class Name}.\r\n\t\t\t\t\tfont_names: 'Comic Sans MS/FontComic;Courier New/FontCourier;Times New Roman/FontTimes',\r\n\r\n\t\t\t\t\t// Define the way font elements will be applied to the document. The \"span\"\r\n\t\t\t\t\t// element will be used. When a font is selected, the font name defined in the\r\n\t\t\t\t\t// above list is passed to this definition with the name \"Font\", being it\r\n\t\t\t\t\t// injected in the \"class\" attribute.\r\n\t\t\t\t\t// We must also instruct the editor to replace span elements that are used to\r\n\t\t\t\t\t// set the font (Overrides).\r\n\t\t\t\t\tfont_style: {\r\n\t\t\t\t\t\telement: 'span',\r\n\t\t\t\t\t\tattributes: { 'class': '#(family)' },\r\n\t\t\t\t\t\toverrides: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\telement: 'span',\r\n\t\t\t\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\t\t\t\t'class': /^Font(?:Comic|Courier|Times)$/\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Font sizes.\r\n\t\t\t\t\t */\r\n\t\t\t\t\tfontSize_sizes: 'Smaller/FontSmaller;Larger/FontLarger;8pt/FontSmall;14pt/FontBig;Double Size/FontDouble',\r\n\t\t\t\t\tfontSize_style: {\r\n\t\t\t\t\t\telement: 'span',\r\n\t\t\t\t\t\tattributes: { 'class': '#(size)' },\r\n\t\t\t\t\t\toverrides: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\telement: 'span',\r\n\t\t\t\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\t\t\t\t'class': /^Font(?:Smaller|Larger|Small|Big|Double)$/\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t} ,\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Font colors.\r\n\t\t\t\t\t */\r\n\t\t\t\t\tcolorButton_enableMore: false,\r\n\r\n\t\t\t\t\tcolorButton_colors: 'FontColor1/FF9900,FontColor2/0066CC,FontColor3/F00',\r\n\t\t\t\t\tcolorButton_foreStyle: {\r\n\t\t\t\t\t\telement: 'span',\r\n\t\t\t\t\t\tattributes: { 'class': '#(color)' },\r\n\t\t\t\t\t\toverrides: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\telement: 'span',\r\n\t\t\t\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\t\t\t\t'class': /^FontColor(?:1|2|3)$/\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tcolorButton_backStyle: {\r\n\t\t\t\t\t\telement: 'span',\r\n\t\t\t\t\t\tattributes: { 'class': '#(color)BG' },\r\n\t\t\t\t\t\toverrides: [\r\n\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\telement: 'span',\r\n\t\t\t\t\t\t\t\tattributes: {\r\n\t\t\t\t\t\t\t\t\t'class': /^FontColor(?:1|2|3)BG$/\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t]\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Indentation.\r\n\t\t\t\t\t */\r\n\t\t\t\t\tindentClasses: [ 'Indent1', 'Indent2', 'Indent3' ],\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Paragraph justification.\r\n\t\t\t\t\t */\r\n\t\t\t\t\tjustifyClasses: [ 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyFull' ],\r\n\r\n\t\t\t\t\t/*\r\n\t\t\t\t\t * Styles combo.\r\n\t\t\t\t\t */\r\n\t\t\t\t\tstylesSet: [\r\n\t\t\t\t\t\t{ name: 'Strong Emphasis', element: 'strong' },\r\n\t\t\t\t\t\t{ name: 'Emphasis', element: 'em' },\r\n\r\n\t\t\t\t\t\t{ name: 'Computer Code', element: 'code' },\r\n\t\t\t\t\t\t{ name: 'Keyboard Phrase', element: 'kbd' },\r\n\t\t\t\t\t\t{ name: 'Sample Text', element: 'samp' },\r\n\t\t\t\t\t\t{ name: 'Variable', element: 'var' },\r\n\r\n\t\t\t\t\t\t{ name: 'Deleted Text', element: 'del' },\r\n\t\t\t\t\t\t{ name: 'Inserted Text', element: 'ins' },\r\n\r\n\t\t\t\t\t\t{ name: 'Cited Work', element: 'cite' },\r\n\t\t\t\t\t\t{ name: 'Inline Quotation', element: 'q' }\r\n\t\t\t\t\t]\r\n\t\t\t\t});\r\n\r\n\t\t\t</script>\r\n\t\t</p>\r\n\t\t<p>\r\n\t\t\t<input type=\"submit\" value=\"Submit\">\r\n\t\t</p>\r\n\t</form>\r\n\t<div id=\"footer\">\r\n\t\t<hr>\r\n\t\t<p>\r\n\t\t\tCKEditor - The text editor for the Internet - <a class=\"samples\" href=\"http://ckeditor.com/\">http://ckeditor.com</a>\r\n\t\t</p>\r\n\t\t<p id=\"copy\">\r\n\t\t\tCopyright &copy; 2003-2014, <a class=\"samples\" href=\"http://cksource.com/\">CKSource</a> - Frederico\r\n\t\t\tKnabben. All rights reserved.\r\n\t\t</p>\r\n\t</div>\r\n</body>\r\n</html>\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/skins/index.php",
    "content": ""
  },
  {
    "path": "admin/js/plugins/ckeditor/skins/moono/dialog.css",
    "content": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n*/\r\n.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}"
  },
  {
    "path": "admin/js/plugins/ckeditor/skins/moono/dialog_ie.css",
    "content": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n*/\r\n.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}"
  },
  {
    "path": "admin/js/plugins/ckeditor/skins/moono/dialog_ie7.css",
    "content": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n*/\r\n.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_title{zoom:1}.cke_dialog_footer{border-top:1px solid #bfbfbf}.cke_dialog_footer_buttons{position:static}.cke_dialog_footer_buttons a.cke_dialog_ui_button{vertical-align:top}.cke_dialog .cke_resizer_ltr{padding-left:4px}.cke_dialog .cke_resizer_rtl{padding-right:4px}.cke_dialog_ui_input_text,.cke_dialog_ui_input_password,.cke_dialog_ui_input_textarea,.cke_dialog_ui_input_select{padding:0!important}.cke_dialog_ui_checkbox_input,.cke_dialog_ui_ratio_input,.cke_btn_reset,.cke_btn_locked,.cke_btn_unlocked{border:1px solid transparent!important}"
  },
  {
    "path": "admin/js/plugins/ckeditor/skins/moono/dialog_ie8.css",
    "content": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n*/\r\n.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{display:block}"
  },
  {
    "path": "admin/js/plugins/ckeditor/skins/moono/dialog_iequirks.css",
    "content": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n*/\r\n.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:\"\"}"
  },
  {
    "path": "admin/js/plugins/ckeditor/skins/moono/editor.css",
    "content": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n*/\r\n.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type=\"text\"],.cke_reset_all input[type=\"password\"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type=\"text\"][disabled],.cke_reset_all input[type=\"password\"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__creatediv_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__flash_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__button_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__checkbox_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__form_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__hiddenfield_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__imagebutton_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_button__radio_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_button__smiley_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__language_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1248px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1272px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1296px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1320px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1344px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1368px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -1392px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1416px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1440px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1464px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1488px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1512px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1536px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1560px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1584px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1608px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__print_icon {background: url(icons.png) no-repeat 0 -1656px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -1680px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -1704px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -1728px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1752px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1776px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1800px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1824px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -1848px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -1872px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -1896px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1944px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1968px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1992px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__flash_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -2016px !important;background-size: 16px !important;}"
  },
  {
    "path": "admin/js/plugins/ckeditor/skins/moono/editor_gecko.css",
    "content": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n*/\r\n.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type=\"text\"],.cke_reset_all input[type=\"password\"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type=\"text\"][disabled],.cke_reset_all input[type=\"password\"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_bottom{padding-bottom:3px}.cke_combo_text{margin-bottom:-1px;margin-top:1px}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__creatediv_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__flash_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__button_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__checkbox_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__form_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__hiddenfield_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__imagebutton_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_button__radio_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_button__smiley_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__language_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1248px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1272px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1296px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1320px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1344px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1368px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -1392px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1416px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1440px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1464px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1488px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1512px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1536px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1560px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1584px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1608px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__print_icon {background: url(icons.png) no-repeat 0 -1656px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -1680px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -1704px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -1728px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1752px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1776px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1800px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1824px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -1848px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -1872px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -1896px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1944px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1968px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1992px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__flash_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -2016px !important;background-size: 16px !important;}"
  },
  {
    "path": "admin/js/plugins/ckeditor/skins/moono/editor_ie.css",
    "content": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n*/\r\n.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type=\"text\"],.cke_reset_all input[type=\"password\"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type=\"text\"][disabled],.cke_reset_all input[type=\"password\"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__creatediv_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__flash_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__button_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__checkbox_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__form_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__hiddenfield_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__imagebutton_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_button__radio_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_button__smiley_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__language_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1248px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1272px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1296px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1320px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1344px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1368px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -1392px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1416px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1440px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1464px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1488px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1512px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1536px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1560px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1584px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1608px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__print_icon {background: url(icons.png) no-repeat 0 -1656px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -1680px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -1704px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -1728px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1752px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1776px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1800px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1824px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -1848px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -1872px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -1896px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1944px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1968px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1992px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__flash_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -2016px !important;background-size: 16px !important;}"
  },
  {
    "path": "admin/js/plugins/ckeditor/skins/moono/editor_ie7.css",
    "content": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n*/\r\n.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type=\"text\"],.cke_reset_all input[type=\"password\"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type=\"text\"][disabled],.cke_reset_all input[type=\"password\"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon,{display:inline-block;vertical-align:top}.cke_toolbox{display:inline-block;padding-bottom:5px;height:100%}.cke_rtl .cke_toolbox{padding-bottom:0}.cke_toolbar{margin-bottom:5px}.cke_rtl .cke_toolbar{margin-bottom:0}.cke_toolgroup{height:26px}.cke_toolgroup,.cke_combo{position:relative}a.cke_button{float:none;vertical-align:top}.cke_toolbar_separator{display:inline-block;float:none;vertical-align:top;background-color:#c0c0c0}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_rtl .cke_button_arrow{padding-top:8px;margin-right:2px}.cke_rtl .cke_combo_inlinelabel{display:table-cell;vertical-align:middle}.cke_menubutton{display:block;height:24px}.cke_menubutton_inner{display:block;position:relative}.cke_menubutton_icon{height:16px;width:16px}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:inline-block}.cke_menubutton_label{width:auto;vertical-align:top;line-height:24px;height:24px;margin:0 10px 0 0}.cke_menuarrow{width:5px;height:6px;padding:0;position:absolute;right:8px;top:10px;background-position:0 0}.cke_rtl .cke_menubutton_icon{position:absolute;right:0;top:0}.cke_rtl .cke_menubutton_label{float:right;clear:both;margin:0 24px 0 10px}.cke_hc .cke_rtl .cke_menubutton_label{margin-right:0}.cke_rtl .cke_menuarrow{left:8px;right:auto;background-position:0 -24px}.cke_hc .cke_menuarrow{top:5px;padding:0 5px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{position:relative}.cke_wysiwyg_div{padding-top:0!important;padding-bottom:0!important}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__creatediv_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__flash_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__button_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__checkbox_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__form_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__hiddenfield_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__imagebutton_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_button__radio_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_button__smiley_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__language_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1248px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1272px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1296px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1320px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1344px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1368px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -1392px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1416px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1440px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1464px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1488px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1512px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1536px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1560px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1584px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1608px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__print_icon {background: url(icons.png) no-repeat 0 -1656px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -1680px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -1704px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -1728px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1752px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1776px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1800px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1824px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -1848px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -1872px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -1896px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1944px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1968px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1992px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__flash_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -2016px !important;background-size: 16px !important;}"
  },
  {
    "path": "admin/js/plugins/ckeditor/skins/moono/editor_ie8.css",
    "content": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n*/\r\n.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type=\"text\"],.cke_reset_all input[type=\"password\"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type=\"text\"][disabled],.cke_reset_all input[type=\"password\"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__creatediv_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__flash_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__button_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__checkbox_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__form_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__hiddenfield_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__imagebutton_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_button__radio_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_button__smiley_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__language_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1248px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1272px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1296px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1320px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1344px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1368px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -1392px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1416px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1440px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1464px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1488px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1512px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1536px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1560px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1584px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1608px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__print_icon {background: url(icons.png) no-repeat 0 -1656px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -1680px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -1704px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -1728px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1752px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1776px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1800px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1824px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -1848px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -1872px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -1896px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1944px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1968px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1992px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__flash_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -2016px !important;background-size: 16px !important;}"
  },
  {
    "path": "admin/js/plugins/ckeditor/skins/moono/editor_iequirks.css",
    "content": "/*\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\nFor licensing, see LICENSE.md or http://ckeditor.com/license\r\n*/\r\n.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type=\"text\"],.cke_reset_all input[type=\"password\"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type=\"text\"][disabled],.cke_reset_all input[type=\"password\"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon,{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{white-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0}.cke_button__about_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_button__bidiltr_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_button__bidirtl_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_rtl .cke_button__templates_icon, .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_ltr .cke_button__templates_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_button__creatediv_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_rtl .cke_button__find_icon, .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_ltr .cke_button__find_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__replace_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__flash_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_button__button_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_button__checkbox_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__form_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__hiddenfield_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_button__imagebutton_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_button__radio_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__select_icon, .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__select_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_rtl .cke_button__textarea_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_ltr .cke_button__textarea_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_rtl .cke_button__textfield_icon, .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_ltr .cke_button__textfield_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__iframe_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_button__smiley_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -1152px !important;}.cke_button__language_icon {background: url(icons.png) no-repeat 0 -1176px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1200px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -1224px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -1248px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -1272px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1296px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -1320px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1344px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -1368px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -1392px !important;}.cke_rtl .cke_button__newpage_icon, .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1416px !important;}.cke_ltr .cke_button__newpage_icon {background: url(icons.png) no-repeat 0 -1440px !important;}.cke_rtl .cke_button__pagebreak_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1464px !important;}.cke_ltr .cke_button__pagebreak_icon {background: url(icons.png) no-repeat 0 -1488px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1512px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -1536px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1560px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -1584px !important;}.cke_rtl .cke_button__preview_icon, .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1608px !important;}.cke_ltr .cke_button__preview_icon {background: url(icons.png) no-repeat 0 -1632px !important;}.cke_button__print_icon {background: url(icons.png) no-repeat 0 -1656px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -1680px !important;}.cke_button__save_icon {background: url(icons.png) no-repeat 0 -1704px !important;}.cke_button__selectall_icon {background: url(icons.png) no-repeat 0 -1728px !important;}.cke_rtl .cke_button__showblocks_icon, .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1752px !important;}.cke_ltr .cke_button__showblocks_icon {background: url(icons.png) no-repeat 0 -1776px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1800px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -1824px !important;}.cke_button__specialchar_icon {background: url(icons.png) no-repeat 0 -1848px !important;}.cke_button__scayt_icon {background: url(icons.png) no-repeat 0 -1872px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -1896px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1920px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1944px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1968px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1992px !important;}.cke_button__spellchecker_icon {background: url(icons.png) no-repeat 0 -2016px !important;}.cke_hidpi .cke_button__about_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidiltr_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bidirtl_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__templates_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_button__creatediv_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__find_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__replace_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__flash_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_hidpi .cke_button__button_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_button__checkbox_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__form_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__hiddenfield_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_hidpi .cke_button__imagebutton_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_button__radio_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__select_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textarea_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__textfield_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__iframe_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_hidpi .cke_button__smiley_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -1152px !important;background-size: 16px !important;}.cke_hidpi .cke_button__language_icon {background: url(icons_hidpi.png) no-repeat 0 -1176px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1200px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -1224px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -1248px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -1272px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1296px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1320px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1344px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -1368px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -1392px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__newpage_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1416px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon {background: url(icons_hidpi.png) no-repeat 0 -1440px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1464px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon {background: url(icons_hidpi.png) no-repeat 0 -1488px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1512px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -1536px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1560px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -1584px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__preview_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1608px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon {background: url(icons_hidpi.png) no-repeat 0 -1632px !important;background-size: 16px !important;}.cke_hidpi .cke_button__print_icon {background: url(icons_hidpi.png) no-repeat 0 -1656px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -1680px !important;background-size: 16px !important;}.cke_hidpi .cke_button__save_icon {background: url(icons_hidpi.png) no-repeat 0 -1704px !important;background-size: 16px !important;}.cke_hidpi .cke_button__selectall_icon {background: url(icons_hidpi.png) no-repeat 0 -1728px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__showblocks_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1752px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon {background: url(icons_hidpi.png) no-repeat 0 -1776px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1800px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -1824px !important;background-size: 16px !important;}.cke_hidpi .cke_button__specialchar_icon {background: url(icons_hidpi.png) no-repeat 0 -1848px !important;background-size: 16px !important;}.cke_hidpi .cke_button__scayt_icon {background: url(icons_hidpi.png) no-repeat 0 -1872px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -1896px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1920px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1944px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1968px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1992px !important;background-size: 16px !important;}.cke_hidpi .cke_button__spellchecker_icon {background: url(icons_hidpi.png) no-repeat 0 -2016px !important;background-size: 16px !important;}"
  },
  {
    "path": "admin/js/plugins/ckeditor/skins/moono/readme.md",
    "content": "\"Moono\" Skin\r\n====================\r\n\r\nThis skin has been chosen for the **default skin** of CKEditor 4.x, elected from the CKEditor\r\n[skin contest](http://ckeditor.com/blog/new_ckeditor_4_skin) and further shaped by\r\nthe CKEditor team. \"Moono\" is maintained by the core developers.\r\n\r\nFor more information about skins, please check the [CKEditor Skin SDK](http://docs.cksource.com/CKEditor_4.x/Skin_SDK)\r\ndocumentation.\r\n\r\nFeatures\r\n-------------------\r\n\"Moono\" is a monochromatic skin, which offers a modern look coupled with gradients and transparency.\r\nIt comes with the following features:\r\n\r\n- Chameleon feature with brightness,\r\n- high-contrast compatibility,\r\n- graphics source provided in SVG.\r\n\r\nDirectory Structure\r\n-------------------\r\n\r\nCSS parts:\r\n- **editor.css**: the main CSS file. It's simply loading several other files, for easier maintenance,\r\n- **mainui.css**: the file contains styles of entire editor outline structures,\r\n- **toolbar.css**: the file contains styles of the editor toolbar space (top),\r\n- **richcombo.css**: the file contains styles of the rich combo ui elements on toolbar,\r\n- **panel.css**: the file contains styles of the rich combo drop-down, it's not loaded\r\nuntil the first panel open up,\r\n- **elementspath.css**: the file contains styles of the editor elements path bar (bottom),\r\n- **menu.css**: the file contains styles of all editor menus including context menu and button drop-down,\r\nit's not loaded until the first menu open up,\r\n- **dialog.css**: the CSS files for the dialog UI, it's not loaded until the first dialog open,\r\n- **reset.css**: the file defines the basis of style resets among all editor UI spaces,\r\n- **preset.css**: the file defines the default styles of some UI elements reflecting the skin preference,\r\n- **editor_XYZ.css** and **dialog_XYZ.css**: browser specific CSS hacks.\r\n\r\nOther parts:\r\n- **skin.js**: the only JavaScript part of the skin that registers the skin, its browser specific files and its icons and defines the Chameleon feature,\r\n- **icons/**: contains all skin defined icons,\r\n- **images/**: contains a fill general used images,\r\n- **dev/**: contains SVG source of the skin icons.\r\n\r\nLicense\r\n-------\r\n\r\nCopyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\n\r\nLicensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html).\r\n\r\nSee LICENSE.md for more information.\r\n"
  },
  {
    "path": "admin/js/plugins/ckeditor/styles.js",
    "content": "﻿/**\r\n * Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.\r\n * For licensing, see LICENSE.md or http://ckeditor.com/license\r\n */\r\n\r\n// This file contains style definitions that can be used by CKEditor plugins.\r\n//\r\n// The most common use for it is the \"stylescombo\" plugin, which shows a combo\r\n// in the editor toolbar, containing all styles. Other plugins instead, like\r\n// the div plugin, use a subset of the styles on their feature.\r\n//\r\n// If you don't have plugins that depend on this file, you can simply ignore it.\r\n// Otherwise it is strongly recommended to customize this file to match your\r\n// website requirements and design properly.\r\n\r\nCKEDITOR.stylesSet.add( 'default', [\r\n\t/* Block Styles */\r\n\r\n\t// These styles are already available in the \"Format\" combo (\"format\" plugin),\r\n\t// so they are not needed here by default. You may enable them to avoid\r\n\t// placing the \"Format\" combo in the toolbar, maintaining the same features.\r\n\t/*\r\n\t{ name: 'Paragraph',\t\telement: 'p' },\r\n\t{ name: 'Heading 1',\t\telement: 'h1' },\r\n\t{ name: 'Heading 2',\t\telement: 'h2' },\r\n\t{ name: 'Heading 3',\t\telement: 'h3' },\r\n\t{ name: 'Heading 4',\t\telement: 'h4' },\r\n\t{ name: 'Heading 5',\t\telement: 'h5' },\r\n\t{ name: 'Heading 6',\t\telement: 'h6' },\r\n\t{ name: 'Preformatted Text',element: 'pre' },\r\n\t{ name: 'Address',\t\t\telement: 'address' },\r\n\t*/\r\n\r\n\t{ name: 'Italic Title',\t\telement: 'h2', styles: { 'font-style': 'italic' } },\r\n\t{ name: 'Subtitle',\t\t\telement: 'h3', styles: { 'color': '#aaa', 'font-style': 'italic' } },\r\n\t{\r\n\t\tname: 'Special Container',\r\n\t\telement: 'div',\r\n\t\tstyles: {\r\n\t\t\tpadding: '5px 10px',\r\n\t\t\tbackground: '#eee',\r\n\t\t\tborder: '1px solid #ccc'\r\n\t\t}\r\n\t},\r\n\r\n\t/* Inline Styles */\r\n\r\n\t// These are core styles available as toolbar buttons. You may opt enabling\r\n\t// some of them in the Styles combo, removing them from the toolbar.\r\n\t// (This requires the \"stylescombo\" plugin)\r\n\t/*\r\n\t{ name: 'Strong',\t\t\telement: 'strong', overrides: 'b' },\r\n\t{ name: 'Emphasis',\t\t\telement: 'em'\t, overrides: 'i' },\r\n\t{ name: 'Underline',\t\telement: 'u' },\r\n\t{ name: 'Strikethrough',\telement: 'strike' },\r\n\t{ name: 'Subscript',\t\telement: 'sub' },\r\n\t{ name: 'Superscript',\t\telement: 'sup' },\r\n\t*/\r\n\r\n\t{ name: 'Marker',\t\t\telement: 'span', attributes: { 'class': 'marker' } },\r\n\r\n\t{ name: 'Big',\t\t\t\telement: 'big' },\r\n\t{ name: 'Small',\t\t\telement: 'small' },\r\n\t{ name: 'Typewriter',\t\telement: 'tt' },\r\n\r\n\t{ name: 'Computer Code',\telement: 'code' },\r\n\t{ name: 'Keyboard Phrase',\telement: 'kbd' },\r\n\t{ name: 'Sample Text',\t\telement: 'samp' },\r\n\t{ name: 'Variable',\t\t\telement: 'var' },\r\n\r\n\t{ name: 'Deleted Text',\t\telement: 'del' },\r\n\t{ name: 'Inserted Text',\telement: 'ins' },\r\n\r\n\t{ name: 'Cited Work',\t\telement: 'cite' },\r\n\t{ name: 'Inline Quotation',\telement: 'q' },\r\n\r\n\t{ name: 'Language: RTL',\telement: 'span', attributes: { 'dir': 'rtl' } },\r\n\t{ name: 'Language: LTR',\telement: 'span', attributes: { 'dir': 'ltr' } },\r\n\r\n\t/* Object Styles */\r\n\r\n\t{\r\n\t\tname: 'Styled image (left)',\r\n\t\telement: 'img',\r\n\t\tattributes: { 'class': 'left' }\r\n\t},\r\n\r\n\t{\r\n\t\tname: 'Styled image (right)',\r\n\t\telement: 'img',\r\n\t\tattributes: { 'class': 'right' }\r\n\t},\r\n\r\n\t{\r\n\t\tname: 'Compact table',\r\n\t\telement: 'table',\r\n\t\tattributes: {\r\n\t\t\tcellpadding: '5',\r\n\t\t\tcellspacing: '0',\r\n\t\t\tborder: '1',\r\n\t\t\tbordercolor: '#ccc'\r\n\t\t},\r\n\t\tstyles: {\r\n\t\t\t'border-collapse': 'collapse'\r\n\t\t}\r\n\t},\r\n\r\n\t{ name: 'Borderless Table',\t\telement: 'table',\tstyles: { 'border-style': 'hidden', 'background-color': '#E6E6FA' } },\r\n\t{ name: 'Square Bulleted List',\telement: 'ul',\t\tstyles: { 'list-style-type': 'square' } }\r\n] );\r\n\r\n"
  },
  {
    "path": "admin/js/plugins/index.php",
    "content": ""
  },
  {
    "path": "admin/pages.php",
    "content": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\nsession_start();\n\nif (!isset($_SESSION['admin_login']) || !isset($_SESSION['admin_id'])) {\n    header(\"Location: ../index.php\");\n    exit();\n}\n\n$date = date('Y-m-d H:i:s');\n$ip   = $_SERVER['REMOTE_ADDR'] ?? '';\n\nrequire_once('../config.php');\n\ntry {\n    $pdo = new PDO(\"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\", $dbuser, $dbpassword, [\n        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,\n        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\n        PDO::ATTR_EMULATE_PREPARES   => false,\n    ]);\n\n    // site baseurl\n    $baseurl = (string)($pdo->query(\"SELECT baseurl FROM site_info WHERE id=1\")->fetch()['baseurl'] ?? '');\n\n    $msg = '';\n    $page_name = $page_title = $page_content = '';\n    $location = '';\n    $nav_parent = null;\n    $sort_order = 0;\n    $is_active = 1;\n\n    // PARENT choices (top-level header/both only)\n    $parentChoicesHeader = $pdo->query(\"\n        SELECT id, page_title\n          FROM pages\n         WHERE is_active = 1\n           AND (location='header' OR location='both')\n           AND nav_parent IS NULL\n         ORDER BY sort_order, page_title\n    \")->fetchAll();\n\n    // CREATE / UPDATE\n    if ($_SERVER['REQUEST_METHOD'] === 'POST') {\n        $page_name    = trim((string)($_POST['page_name'] ?? ''));\n        $page_title   = trim((string)($_POST['page_title'] ?? ''));\n        $page_content = (string)($_POST['data'] ?? '');\n\n        // placement & meta\n        $location     = (string)($_POST['location'] ?? '');\n        if (!in_array($location, ['', 'header', 'footer', 'both'], true)) $location = '';\n        $nav_parent   = ($_POST['nav_parent'] ?? '') === '' ? null : (int)$_POST['nav_parent'];\n        $sort_order   = (int)($_POST['sort_order'] ?? 0);\n        $is_active    = !empty($_POST['is_active']) ? 1 : 0;\n\n        if (isset($_POST['editme'])) {\n            $edit_id = (int)$_POST['editme'];\n\n            // prevent self-parenting\n            if ($nav_parent === $edit_id) $nav_parent = null;\n\n            $stmt = $pdo->prepare(\"\n                UPDATE pages\n                   SET last_date = ?,\n                       page_name = ?,\n                       page_title = ?,\n                       page_content = ?,\n                       location = ?,\n                       nav_parent = ?,\n                       sort_order = ?,\n                       is_active = ?\n                 WHERE id = ?\n            \");\n            $stmt->execute([$date, $page_name, $page_title, $page_content, $location, $nav_parent, $sort_order, $is_active, $edit_id]);\n\n            $msg = '<div class=\"alert alert-success text-center\">Page updated successfully</div>';\n        } else {\n            $stmt = $pdo->prepare(\"\n                INSERT INTO pages (last_date, page_name, page_title, page_content, location, nav_parent, sort_order, is_active)\n                VALUES (?, ?, ?, ?, ?, ?, ?, ?)\n            \");\n            $stmt->execute([$date, $page_name, $page_title, $page_content, $location, $nav_parent, $sort_order, $is_active]);\n            $msg = '<div class=\"alert alert-success text-center\">Page created successfully</div>';\n        }\n\n        // clear form post-success to avoid double submit\n        $page_name = $page_title = $page_content = '';\n        $location = '';\n        $nav_parent = null;\n        $sort_order = 0;\n        $is_active = 1;\n    }\n\n    // EDIT load\n    if (isset($_GET['edit'])) {\n        $page_id = (int)$_GET['edit'];\n        $row = $pdo->prepare(\"SELECT * FROM pages WHERE id=?\");\n        $row->execute([$page_id]);\n        if ($r = $row->fetch()) {\n            $page_name    = $r['page_name'];\n            $page_title   = $r['page_title'];\n            $page_content = $r['page_content'];\n            $location     = (string)$r['location'];\n            $nav_parent   = $r['nav_parent'];\n            $sort_order   = (int)$r['sort_order'];\n            $is_active    = (int)$r['is_active'];\n        }\n    }\n\n    // DELETE\n    if (isset($_GET['delete'])) {\n        $del = (int)$_GET['delete'];\n\n        // prevent deleting a page that has children\n        $st = $pdo->prepare(\"SELECT COUNT(*) FROM pages WHERE nav_parent = ?\");\n        $st->execute([$del]);\n        if ((int)$st->fetchColumn() > 0) {\n            $msg = '<div class=\"alert alert-danger text-center\">Please move or delete its sub-pages first.</div>';\n        } else {\n            $pdo->prepare(\"DELETE FROM pages WHERE id=?\")->execute([$del]);\n            $msg = '<div class=\"alert alert-success text-center\">Page deleted successfully</div>';\n        }\n    }\n\n    // Pagination & list\n    $per_page = 20;\n    $page = isset($_GET['page']) ? max(1, (int)$_GET['page']) : 1;\n    $offset = ($page - 1) * $per_page;\n\n    $total = (int)($pdo->query(\"SELECT COUNT(*) c FROM pages\")->fetch()['c'] ?? 0);\n    $pages_total = max(1, (int)ceil($total / $per_page));\n\n    $list = $pdo->prepare(\"\n        SELECT p.id, p.last_date, p.page_name, p.page_title,\n               p.location, p.nav_parent, p.sort_order, p.is_active\n          FROM pages p\n         ORDER BY p.id DESC\n         LIMIT :lim OFFSET :off\n    \");\n    $list->bindValue(':lim', $per_page, PDO::PARAM_INT);\n    $list->bindValue(':off', $offset, PDO::PARAM_INT);\n    $list->execute();\n    $pages = $list->fetchAll();\n\n} catch (PDOException $e) {\n    die(\"DB error: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));\n}\n?>\n<!DOCTYPE html>\n<html lang=\"en\" data-bs-theme=\"dark\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<title>Paste - Pages</title>\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\" rel=\"stylesheet\">\n\n<!-- Quill 2 (BSD-3) -->\n<link href=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.snow.css\" rel=\"stylesheet\">\n<script src=\"https://cdn.jsdelivr.net/npm/quill@2.0.2/dist/quill.js\"></script>\n\n<style>\n  :root{\n    --bg: #0f1115;\n    --card:#141821;\n    --muted:#7f8da3;\n    --border:#1f2633;\n    --accent:#0d6efd;\n    --content:#0f1115;\n    --content-text:#e6edf3;\n    --toolbar:#101521;\n  }\n  body{background:var(--bg);color:#fff;}\n  .navbar{background:#121826!important;position:sticky;top:0;z-index:1030}\n  .navbar .navbar-brand{font-weight:600}\n\n  /* Desktop sidebar */\n  .sidebar-desktop{\n    position:sticky; top:1rem;\n    background:#121826;border:1px solid var(--border);\n    border-radius:12px;padding:12px;\n  }\n  .sidebar-desktop .list-group-item{\n    background:transparent;color:#dbe5f5;border:0;border-radius:10px;padding:.65rem .8rem;\n  }\n  .sidebar-desktop .list-group-item:hover{background:#0e1422}\n  .sidebar-desktop .list-group-item.active{background:#0d6efd;color:#fff}\n\n  .card{background:var(--card);border:1px solid var(--border);border-radius:12px}\n  .form-control,.form-select{background:#0e1422;border-color:var(--border);color:#e6edf3}\n  .form-control:focus,.form-select:focus{border-color:var(--accent);box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}\n  .table{color:#e6edf3}\n  .table thead th{background:#101521;color:#c6d4f0;border-color:var(--border)}\n  .table td,.table th{border-color:var(--border)}\n  .pagination .page-link{color:#c6d4f0;background:#101521;border-color:var(--border)}\n  .pagination .page-item.active .page-link{background:#0d6efd;border-color:#0d6efd}\n  .btn-soft{background:#101521;border:1px solid var(--border);color:#dbe5f5}\n  .btn-soft:hover{background:#0e1422;color:#fff}\n\n  /* Quill dark styling override */\n  .ql-container.ql-snow{\n    border:1px solid var(--border);\n    border-radius:8px;\n    font-size:16px;\n    background:var(--content);\n    color:var(--content-text);\n    min-height:360px;\n  }\n  .ql-editor {\n    min-height:360px;\n    color:var(--content-text);\n  }\n  .ql-toolbar.ql-snow{\n    background:var(--toolbar);\n    border:1px solid var(--border);\n    border-radius:8px;\n  }\n  .ql-snow .ql-picker, .ql-snow .ql-stroke{ color:#dbe5f5; stroke:#dbe5f5; }\n  .ql-snow .ql-fill{ fill:#dbe5f5; }\n  .ql-snow .ql-picker-options{ background:#0e1422; border-color:var(--border); }\n  .ql-snow .ql-tooltip{ background:#0e1422; border:1px solid var(--border); color:#e6edf3; }\n  .ql-snow .ql-tooltip input[type=text]{ background:#0c1220; color:#e6edf3; border-color:#23304a; }\n  .ql-snow .ql-picker-label:hover, .ql-snow .ql-picker-item:hover{ color:#fff; }\n  .ql-snow .ql-toolbar button:hover .ql-stroke,\n  .ql-snow .ql-toolbar button:hover .ql-fill { color:#fff; stroke:#fff; fill:#fff; }\n  .editor-footer {\n    display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:8px;\n    color:#9fb1d1;font-size:12px;\n  }\n  .editor-footer .status-dot{width:8px;height:8px;background:#2bd576;border-radius:50%;display:inline-block;margin-right:6px}\n  .editor-footer .stats{opacity:.9}\n  /* Offcanvas */\n  .offcanvas-nav{width:280px;background:#0f1523;color:#dbe5f5}\n  .offcanvas-nav .list-group-item{background:transparent;border:0;color:#dbe5f5}\n  .offcanvas-nav .list-group-item:hover{background:#0e1422}\n</style>\n</head>\n<body>\n\n<nav class=\"navbar navbar-expand-lg navbar-dark\">\n  <div class=\"container-fluid\">\n    <div class=\"d-flex align-items-center gap-2\">\n      <!-- Mobile: open offcanvas -->\n      <button class=\"btn btn-soft d-lg-none\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#navOffcanvas\" aria-controls=\"navOffcanvas\">\n        <i class=\"bi bi-list\"></i>\n      </button>\n      <a class=\"navbar-brand\" href=\"../\">Paste</a>\n    </div>\n    <button class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNav\">\n      <span class=\"navbar-toggler-icon\"></span>\n    </button>\n    <div class=\"collapse navbar-collapse justify-content-end\" id=\"navbarNav\">\n      <ul class=\"navbar-nav\">\n        <li class=\"nav-item dropdown\">\n          <a class=\"nav-link dropdown-toggle\" href=\"#\" data-bs-toggle=\"dropdown\">\n            <?php echo htmlspecialchars($_SESSION['admin_login']); ?>\n          </a>\n          <ul class=\"dropdown-menu dropdown-menu-end\">\n            <li><a class=\"dropdown-item\" href=\"admin.php\">Settings</a></li>\n            <li><a class=\"dropdown-item\" href=\"?logout\">Logout</a></li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n  </div>\n</nav>\n\n<!-- Mobile offcanvas nav -->\n<div class=\"offcanvas offcanvas-start offcanvas-nav\" tabindex=\"-1\" id=\"navOffcanvas\">\n  <div class=\"offcanvas-header\">\n    <h5 class=\"offcanvas-title\">Admin Menu</h5>\n    <button type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\"></button>\n  </div>\n  <div class=\"offcanvas-body\">\n    <div class=\"list-group\">\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n      <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n    </div>\n  </div>\n</div>\n\n<div class=\"container-fluid my-2\">\n  <div class=\"row g-2\">\n    <!-- Desktop sidebar -->\n    <div class=\"col-lg-2 d-none d-lg-block\">\n      <div class=\"sidebar-desktop\">\n        <div class=\"list-group\">\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n          <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"col-lg-10\">\n      <!-- Editor card -->\n      <div class=\"card mb-3\">\n        <div class=\"card-body\">\n          <div class=\"d-flex align-items-center justify-content-between mb-2\">\n            <h4 class=\"card-title mb-0\"><?php echo isset($_GET['edit']) ? 'Edit Page' : 'Add a Page'; ?></h4>\n            <div class=\"d-flex gap-2\">\n              <button type=\"button\" id=\"preview-btn\" class=\"btn btn-soft\"><i class=\"bi bi-eye\"></i> Preview</button>\n            </div>\n          </div>\n          <?php if ($msg) echo $msg; ?>\n          <form action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>\" method=\"post\" id=\"page-form\">\n            <div class=\"row g-2\">\n              <div class=\"col-md-6\">\n                <label for=\"page_name\" class=\"form-label\">Page name (No spaces, e.g. terms_of_service)</label>\n                <input class=\"form-control\" id=\"page_name\" name=\"page_name\" type=\"text\"\n                       placeholder=\"Enter page name\"\n                       value=\"<?php echo htmlspecialchars($page_name); ?>\">\n              </div>\n              <div class=\"col-md-6\">\n                <label for=\"page_title\" class=\"form-label\">Page title</label>\n                <input class=\"form-control\" id=\"page_title\" name=\"page_title\" type=\"text\"\n                       placeholder=\"Enter page title\"\n                       value=\"<?php echo htmlspecialchars($page_title); ?>\">\n              </div>\n              <div class=\"col-md-4\">\n                <label class=\"form-label\">Show link in</label>\n                <select class=\"form-select\" name=\"location\">\n                  <?php\n                    $loc = (string)$location;\n                    $opts = [\n                      ''       => '— Don’t show —',\n                      'header' => 'Header (main nav)',\n                      'footer' => 'Footer',\n                      'both'   => 'Header & Footer'\n                    ];\n                    foreach ($opts as $v=>$label) {\n                      $sel = $loc===$v ? 'selected' : '';\n                      echo '<option value=\"'.htmlspecialchars($v).'\" '.$sel.'>'.htmlspecialchars($label).'</option>';\n                    }\n                  ?>\n                </select>\n              </div>\n              <div class=\"col-md-4\">\n                <label class=\"form-label\">Sub-navigation of (header)</label>\n                <select class=\"form-select\" name=\"nav_parent\">\n                  <option value=\"\">— None (top-level) —</option>\n                  <?php foreach ($parentChoicesHeader as $p): ?>\n                    <option value=\"<?php echo (int)$p['id']; ?>\" <?php echo ($nav_parent == $p['id'])?'selected':''; ?>>\n                      <?php echo htmlspecialchars($p['page_title']); ?>\n                    </option>\n                  <?php endforeach; ?>\n                </select>\n                <div class=\"form-text\">Choose a parent to make this a dropdown item (header only).</div>\n              </div>\n              <div class=\"col-md-2\">\n                <label class=\"form-label\">Order</label>\n                <input class=\"form-control\" type=\"number\" name=\"sort_order\" value=\"<?php echo (int)$sort_order; ?>\">\n              </div>\n              <div class=\"col-md-2 d-flex align-items-end\">\n                <div class=\"form-check\">\n                  <input class=\"form-check-input\" type=\"checkbox\" id=\"isActive\" name=\"is_active\" <?php echo $is_active ? 'checked':''; ?>>\n                  <label class=\"form-check-label\" for=\"isActive\">Active</label>\n                </div>\n              </div>\n            </div>\n\n            <?php if (isset($_GET['edit'])): ?>\n              <input type=\"hidden\" name=\"editme\" value=\"<?php echo (int)$_GET['edit']; ?>\">\n            <?php endif; ?>\n\n            <!-- Editor -->\n            <div class=\"mt-3\">\n              <div id=\"toolbar\">\n                <span class=\"ql-formats\">\n                  <select class=\"ql-header\">\n                    <option selected></option>\n                    <option value=\"2\">Heading</option>\n                    <option value=\"3\">Subheading</option>\n                  </select>\n                  <select class=\"ql-font\"></select>\n                  <select class=\"ql-size\"></select>\n                </span>\n                <span class=\"ql-formats\">\n                  <button class=\"ql-bold\"></button>\n                  <button class=\"ql-italic\"></button>\n                  <button class=\"ql-underline\"></button>\n                  <button class=\"ql-strike\"></button>\n                </span>\n                <span class=\"ql-formats\">\n                  <button class=\"ql-blockquote\"></button>\n                  <button class=\"ql-code-block\"></button>\n                </span>\n                <span class=\"ql-formats\">\n                  <button class=\"ql-list\" value=\"ordered\"></button>\n                  <button class=\"ql-list\" value=\"bullet\"></button>\n                  <button class=\"ql-indent\" value=\"-1\"></button>\n                  <button class=\"ql-indent\" value=\"1\"></button>\n                </span>\n                <span class=\"ql-formats\">\n                  <select class=\"ql-align\"></select>\n                </span>\n                <span class=\"ql-formats\">\n                  <button class=\"ql-link\"></button>\n                  <button class=\"ql-image\"></button>\n                </span>\n                <span class=\"ql-formats\">\n                  <button id=\"insertTable\" type=\"button\"><i class=\"bi bi-table\"></i></button>\n                  <button id=\"findReplace\" type=\"button\"><i class=\"bi bi-search\"></i></button>\n                </span>\n                <span class=\"ql-formats\">\n                  <button id=\"clearFormat\" type=\"button\"><i class=\"bi bi-eraser\"></i></button>\n                </span>\n              </div>\n              <div id=\"editor\"><?php echo $page_content; ?></div>\n              <div class=\"editor-footer\">\n                <div><span class=\"status-dot\"></span><span>Ready</span></div>\n                <div class=\"stats\" id=\"editorStats\">0 words &middot; 0 characters</div>\n              </div>\n              <!-- Hidden field to submit HTML -->\n              <textarea class=\"d-none\" name=\"data\" id=\"dataField\"></textarea>\n            </div>\n\n            <div class=\"mt-3 d-flex gap-2\">\n              <button type=\"submit\" class=\"btn btn-primary\"><i class=\"bi bi-save\"></i> Save</button>\n              <a class=\"btn btn-soft\" href=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>\"><i class=\"bi bi-plus-circle\"></i> New</a>\n              <button type=\"button\" class=\"btn btn-soft\" id=\"copyHTML\"><i class=\"bi bi-clipboard\"></i> Copy HTML</button>\n            </div>\n          </form>\n        </div>\n      </div>\n\n      <!-- Listing -->\n      <div class=\"card\">\n        <div class=\"card-body\">\n          <h4 class=\"card-title\">Pages</h4>\n          <div class=\"table-responsive\">\n            <table class=\"table table-hover table-bordered align-middle\">\n              <thead>\n                <tr>\n                  <th>Date</th>\n                  <th>Name</th>\n                  <th>Title</th>\n                  <th>Location</th>\n                  <th>Parent</th>\n                  <th>Order</th>\n                  <th>Active</th>\n                  <th>View</th><th>Edit</th><th>Delete</th>\n                </tr>\n              </thead>\n              <tbody>\n                <?php\n                if ($pages) {\n                  // Build a cache for id=>title lookup\n                  $titleMap = [];\n                  foreach ($pages as $r) $titleMap[(int)$r['id']] = $r['page_title'];\n                  foreach ($pages as $r) {\n                    $loc = $r['location'] ?: '—';\n                    if ($loc === 'both') $loc = 'Header+Footer';\n                    $parentTitle = (isset($r['nav_parent']) && isset($titleMap[(int)$r['nav_parent']])) ? $titleMap[(int)$r['nav_parent']] : '—';\n                    echo '<tr>';\n                    echo '<td>'.htmlspecialchars($r['last_date']).'</td>';\n                    echo '<td>'.htmlspecialchars($r['page_name']).'</td>';\n                    echo '<td>'.htmlspecialchars($r['page_title']).'</td>';\n                    echo '<td>'.htmlspecialchars($loc).'</td>';\n                    echo '<td>'.htmlspecialchars($parentTitle).'</td>';\n                    echo '<td>'.(int)$r['sort_order'].'</td>';\n                    echo '<td>'.((int)$r['is_active']===1?'Yes':'No').'</td>';\n                    echo '<td><a class=\"btn btn-soft btn-sm\" target=\"_blank\" href=\"../page/'.rawurlencode($r['page_name']).'\">View</a></td>';\n                    echo '<td><a class=\"btn btn-soft btn-sm\" href=\"?edit='.(int)$r['id'].'&page='.(int)$page.'\">Edit</a></td>';\n                    echo '<td><a class=\"btn btn-danger btn-sm\" href=\"?delete='.(int)$r['id'].'&page='.(int)$page.'\" onclick=\"return confirm(\\'Delete this page?\\');\">Delete</a></td>';\n                    echo '</tr>';\n                  }\n                } else {\n                  echo '<tr><td colspan=\"10\" class=\"text-center\">No pages found</td></tr>';\n                }\n                ?>\n              </tbody>\n            </table>\n          </div>\n\n          <nav aria-label=\"Page navigation\">\n            <ul class=\"pagination justify-content-center\">\n              <?php\n              if ($page > 1) echo '<li class=\"page-item\"><a class=\"page-link\" href=\"?page='.($page-1).'\">&laquo;</a></li>';\n              $start = max(1, $page-3); $end = min($pages_total, $page+3);\n              for ($i=$start;$i<=$end;$i++){\n                echo '<li class=\"page-item'.($i==$page?' active':'').'\"><a class=\"page-link\" href=\"?page='.$i.'\">'.$i.'</a></li>';\n              }\n              if ($page < $pages_total) echo '<li class=\"page-item\"><a class=\"page-link\" href=\"?page='.($page+1).'\">&raquo;</a></li>';\n              ?>\n            </ul>\n          </nav>\n        </div>\n      </div>\n\n      <div class=\"text-muted small mt-3\">\n        Powered by <a class=\"text-decoration-none\" href=\"https://phpaste.sourceforge.io\" target=\"_blank\">Paste</a>\n      </div>\n    </div>\n  </div>\n</div>\n\n<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js\" crossorigin=\"anonymous\"></script>\n<script>\n(function(){\n  // --- Quill init\n  const editorEl = document.getElementById('editor');\n  const toolbarEl = document.getElementById('toolbar');\n  const q = new Quill(editorEl, {\n    theme: 'snow',\n    modules: {\n      toolbar: {\n        container: toolbarEl,\n        handlers: {\n          image: function(){\n            const url = prompt('Paste image URL (https://...)');\n            if (!url) return;\n            const range = q.getSelection(true);\n            q.insertEmbed(range.index, 'image', url, Quill.sources.USER);\n            q.setSelection(range.index + 1, 0, Quill.sources.SILENT);\n          }\n        }\n      },\n      history: { delay: 800, maxStack: 200 },\n      clipboard: true,\n      syntax: false\n    },\n    placeholder: 'Write your page content here...'\n  });\n\n  // Preload content if PHP printed HTML (already in #editor)\n\n  // Status & stats\n  const statsEl = document.getElementById('editorStats');\n  function updateStats(){\n    const text = q.getText().trim();\n    const words = text ? text.split(/\\s+/).length : 0;\n    const chars = text.replace(/\\s/g,'').length;\n    statsEl.textContent = words + ' words · ' + chars + ' characters';\n  }\n  q.on('text-change', updateStats);\n  updateStats();\n\n  // Insert simple table (3x3)\n  document.getElementById('insertTable').addEventListener('click', () => {\n    const tableHTML = `\n      <table style=\"width:100%;border-collapse:collapse\" border=\"1\">\n        <tr><th>Header 1</th><th>Header 2</th><th>Header 3</th></tr>\n        <tr><td>Cell</td><td>Cell</td><td>Cell</td></tr>\n        <tr><td>Cell</td><td>Cell</td><td>Cell</td></tr>\n      </table><p></p>`;\n    const range = q.getSelection(true) || {index: q.getLength(), length: 0};\n    q.clipboard.dangerouslyPasteHTML(range.index, tableHTML);\n  });\n\n  // Find / replace (quick prompt)\n  document.getElementById('findReplace').addEventListener('click', () => {\n    const find = prompt('Find text:');\n    if (!find) return;\n    const replace = prompt('Replace with (leave empty to just highlight):','');\n    const full = q.getText();\n    const idx = full.indexOf(find);\n    if (idx >= 0) {\n      if (replace !== null) {\n        // replace in HTML: simpler via HTML string replace\n        const div = document.createElement('div');\n        div.innerHTML = q.root.innerHTML;\n        const walker = document.createTreeWalker(div, NodeFilter.SHOW_TEXT, null);\n        let found = false;\n        while (walker.nextNode()) {\n          const node = walker.currentNode;\n          const pos = node.nodeValue.indexOf(find);\n          if (pos >= 0) {\n            node.nodeValue = node.nodeValue.replace(find, replace);\n            found = true;\n          }\n        }\n        if (found) q.root.innerHTML = div.innerHTML;\n      } else {\n        q.setSelection(idx, find.length);\n      }\n    } else {\n      alert('Not found.');\n    }\n  });\n\n  // Clear formatting\n  document.getElementById('clearFormat').addEventListener('click', () => {\n    const r = q.getSelection();\n    if (!r) return;\n    q.removeFormat(r.index, r.length || 1);\n  });\n\n  // Copy HTML\n  document.getElementById('copyHTML').addEventListener('click', async () => {\n    const html = q.root.innerHTML;\n    try {\n      await navigator.clipboard.writeText(html);\n      alert('HTML copied to clipboard.');\n    } catch {\n      alert('Copy failed.');\n    }\n  });\n\n  // Preview\n  document.getElementById('preview-btn')?.addEventListener('click', function() {\n    const html = q.root.innerHTML;\n    const w = window.open('', '_blank', 'width=900,height=700');\n    w.document.write('<!doctype html><title>Preview</title><body style=\"background:#0f1115;color:#e6edf3;padding:24px;font:16px/1.6 system-ui,Segoe UI,Roboto,sans-serif\">'+html+'</body>');\n    w.document.close();\n  });\n\n  // Submit -> put HTML into hidden field\n  document.getElementById('page-form').addEventListener('submit', function(){\n    document.getElementById('dataField').value = q.root.innerHTML;\n  });\n})();\n</script>\n</body>\n</html>\n<?php $pdo = null; ?>\n"
  },
  {
    "path": "admin/pastes.php",
    "content": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\nsession_start();\n\nif (!isset($_SESSION['admin_login']) || !isset($_SESSION['admin_id'])) {\n    header(\"Location: ../index.php\");\n    exit();\n}\n\n$date = date('Y-m-d H:i:s');\n$ip   = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';\n\nrequire_once('../config.php');\n\ntry {\n    $pdo = new PDO(\n        \"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\",\n        $dbuser,\n        $dbpassword,\n        [\n            PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,\n            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\n            PDO::ATTR_EMULATE_PREPARES   => false,\n        ]\n    );\n\n    // site baseurl\n    $baseurl = rtrim((string)($pdo->query(\"SELECT baseurl FROM site_info WHERE id=1\")->fetch()['baseurl'] ?? ''), '/') . '/';\n    if (!$baseurl) { throw new Exception('Base URL missing.'); }\n\n    // admin history log (lightweight)\n    $last = $pdo->query(\"SELECT MAX(id) last_id FROM admin_history\")->fetch();\n    if ($last && $last['last_id']) {\n        $row = $pdo->prepare(\"SELECT last_date, ip FROM admin_history WHERE id=?\");\n        $row->execute([$last['last_id']]);\n        $r = $row->fetch();\n        $last_date = $r['last_date'] ?? null;\n        $last_ip   = $r['ip'] ?? null;\n    }\n    if (($last_ip ?? '') !== $ip || ($last_date ?? '') !== $date) {\n        $pdo->prepare(\"INSERT INTO admin_history (last_date, ip) VALUES (?, ?)\")->execute([$date, $ip]);\n    }\n\n} catch (Throwable $e) {\n    die(\"Unable to connect to database: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));\n}\n\n/** Helpers **/\nfunction banIpAndDeletePaste(PDO $pdo, int $pasteId, string $nowDate): void {\n    // get paste IP\n    $st = $pdo->prepare(\"SELECT ip FROM pastes WHERE id = ?\");\n    $st->execute([$pasteId]);\n    $row = $st->fetch();\n    if (!$row) { return; }\n    $pasteIp = trim((string)$row['ip']);\n\n    if ($pasteIp !== '') {\n        // ensure row exists in ban_user; handle last_date not null\n        // try insert; if duplicates/exists, update last_date\n        try {\n            $ins = $pdo->prepare(\"INSERT INTO ban_user (ip, last_date) VALUES (?, ?)\");\n            $ins->execute([$pasteIp, $nowDate]);\n        } catch (PDOException $ex) {\n            // if unique constraint on ip, update last_date\n            $upd = $pdo->prepare(\"UPDATE ban_user SET last_date = ? WHERE ip = ?\");\n            $upd->execute([$nowDate, $pasteIp]);\n        }\n    }\n\n    // delete dependent rows then paste\n    $pdo->prepare(\"DELETE FROM paste_views WHERE paste_id = ?\")->execute([$pasteId]);\n    $pdo->prepare(\"DELETE FROM pastes WHERE id = ?\")->execute([$pasteId]);\n}\n\nfunction getPasteDetails(PDO $pdo, int $id): ?array {\n    $st = $pdo->prepare(\"SELECT * FROM pastes WHERE id = ?\");\n    $st->execute([$id]);\n    $row = $st->fetch();\n    if (!$row) return null;\n\n    $visible = match ((string)$row['visible']) {\n        '0' => \"Public\",\n        '1' => \"Unlisted\",\n        '2' => \"Private\",\n        '3' => \"Banned\",\n        default => \"Unknown\"\n    };\n    $encrypt = ($row['encrypt'] === '1') ? \"Encrypted\" : \"Not Encrypted\";\n\n    $expiry_raw = $row['expiry'];\n    $expiry = ($expiry_raw === null || strtoupper((string)$expiry_raw) === 'NULL' || $expiry_raw === '')\n        ? \"Never\"\n        : (strtotime($expiry_raw) < time() ? \"Paste is expired\" : \"Paste is not expired\");\n\n    $pass = (strtoupper((string)$row['password']) === 'NONE' || $row['password'] === null || $row['password'] === '')\n        ? \"Not protected\"\n        : \"Password protected paste\";\n\n    $vs = $pdo->prepare(\"SELECT COUNT(*) AS c FROM paste_views WHERE paste_id = ?\");\n    $vs->execute([$id]);\n    $views = (int)$vs->fetch()['c'];\n\n    return [\n        'id'       => $id,\n        'title'    => $row['title'] ?? '',\n        'member'   => $row['member'] ?? '',\n        'visible'  => $visible,\n        'password' => $pass,\n        'views'    => $views,\n        'ip'       => $row['ip'] ?? '',\n        'code'     => $row['code'] ?? '',\n        'expiry'   => $expiry,\n        'encrypt'  => $encrypt,\n    ];\n}\n\n/** Messages **/\n$msg = '';\n// Single actions\nif (isset($_GET['delete'])) {\n    $delid = (int)filter_var($_GET['delete'], FILTER_SANITIZE_NUMBER_INT);\n    try {\n        $pdo->beginTransaction();\n        $pdo->prepare(\"DELETE FROM paste_views WHERE paste_id = ?\")->execute([$delid]);\n        $pdo->prepare(\"DELETE FROM pastes WHERE id = ?\")->execute([$delid]);\n        $pdo->commit();\n        $msg = '<div class=\"alert alert-success text-center\">Paste deleted successfully.</div>';\n    } catch (PDOException $e) {\n        $pdo->rollBack();\n        $msg = '<div class=\"alert alert-danger text-center\">Error deleting paste: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';\n    }\n}\n\nif (isset($_GET['ban'])) {\n    $ban_id = (int)filter_var($_GET['ban'], FILTER_SANITIZE_NUMBER_INT);\n    try {\n        $pdo->beginTransaction();\n        banIpAndDeletePaste($pdo, $ban_id, $date);\n        $pdo->commit();\n        $msg = '<div class=\"alert alert-warning text-center\">IP banned and paste deleted.</div>';\n    } catch (PDOException $e) {\n        $pdo->rollBack();\n        $msg = '<div class=\"alert alert-danger text-center\">Error banning IP/deleting paste: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';\n    }\n}\n\n// Bulk actions\nif ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['bulk_action']) && !empty($_POST['selected_ids'])) {\n    $bulk = $_POST['bulk_action'];\n    $ids = array_map('intval', (array)$_POST['selected_ids']);\n\n    if (in_array($bulk, ['bulk_ban_delete', 'bulk_delete'], true) && !empty($ids)) {\n        try {\n            $pdo->beginTransaction();\n            foreach ($ids as $pid) {\n                if ($bulk === 'bulk_ban_delete') {\n                    banIpAndDeletePaste($pdo, $pid, $date);\n                } else {\n                    $pdo->prepare(\"DELETE FROM paste_views WHERE paste_id = ?\")->execute([$pid]);\n                    $pdo->prepare(\"DELETE FROM pastes WHERE id = ?\")->execute([$pid]);\n                }\n            }\n            $pdo->commit();\n            $label = $bulk === 'bulk_ban_delete' ? 'IPs banned & pastes deleted' : 'Pastes deleted';\n            $msg = '<div class=\"alert alert-success text-center\">Bulk action complete: ' . htmlspecialchars($label, ENT_QUOTES, 'UTF-8') . '.</div>';\n        } catch (PDOException $e) {\n            $pdo->rollBack();\n            $msg = '<div class=\"alert alert-danger text-center\">Bulk action failed: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';\n        }\n    }\n}\n\n// filters / pagination / search\n$per_page = 20;\n$page     = isset($_GET['page']) ? max(1, (int)$_GET['page']) : 1;\n$offset   = ($page - 1) * $per_page;\n\n$visibility_filter = isset($_GET['visibility']) ? (string)$_GET['visibility'] : 'all';\n$q = trim((string)($_GET['q'] ?? ''));\n\n$whereParts = [];\n$params = [];\n\nif ($visibility_filter !== 'all') {\n    $whereParts[] = \"p.visible = ?\";\n    $params[] = $visibility_filter;\n}\nif ($q !== '') {\n    $whereParts[] = \"(p.title LIKE ? OR p.member LIKE ? OR p.ip = ?)\";\n    $params[] = \"%$q%\";\n    $params[] = \"%$q%\";\n    $params[] = $q;\n}\n$where = $whereParts ? (' WHERE ' . implode(' AND ', $whereParts)) : '';\n\n$count_query = \"SELECT COUNT(*) AS total FROM pastes p $where\";\n$st = $pdo->prepare($count_query);\n$st->execute($params);\n$total_pastes = (int)($st->fetch()['total'] ?? 0);\n$total_pages  = max(1, (int)ceil($total_pastes / $per_page));\n\n$per_page_safe = (int)$per_page;\n$offset_safe   = (int)$offset;\n\n$sql = \"\nSELECT \n    p.id, p.member, p.ip, p.visible, p.title, p.now_time,\n    COALESCE(v.view_count, 0) AS views\nFROM pastes p\nLEFT JOIN (\n    SELECT paste_id, COUNT(*) AS view_count\n    FROM paste_views\n    GROUP BY paste_id\n) v ON v.paste_id = p.id\n$where\nORDER BY p.now_time DESC\nLIMIT $per_page_safe OFFSET $offset_safe\n\";\n$st = $pdo->prepare($sql);\n$st->execute($params);\n$pastes = $st->fetchAll();\n\n?>\n<!DOCTYPE html>\n<html lang=\"en\" data-bs-theme=\"dark\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<title>Paste - Pastes</title>\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\" rel=\"stylesheet\">\n<style>\n  :root{\n    --bg: #0f1115;\n    --card:#141821;\n    --muted:#7f8da3;\n    --border:#1f2633;\n    --accent:#0d6efd;\n    --content:#0f1115;\n  }\n  body{background:var(--bg);color:#fff;}\n  .navbar{background:#121826!important;position:sticky;top:0;z-index:1030}\n  .navbar .navbar-brand{font-weight:600}\n\n  /* Desktop sidebar */\n  .sidebar-desktop{\n    position:sticky; top:1rem;\n    background:#121826;border:1px solid var(--border);\n    border-radius:12px;padding:12px;\n  }\n  .sidebar-desktop .list-group-item{\n    background:transparent;color:#dbe5f5;border:0;border-radius:10px;padding:.65rem .8rem;\n  }\n  .sidebar-desktop .list-group-item:hover{background:#0e1422}\n  .sidebar-desktop .list-group-item.active{background:#0d6efd;color:#fff}\n\n  .card{background:var(--card);border:1px solid var(--border);border-radius:12px}\n  .form-control,.form-select{background:#0e1422;border-color:var(--border);color:#e6edf3}\n  .form-control:focus,.form-select:focus{border-color:var(--accent);box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}\n  .table{color:#e6edf3}\n  .table thead th{background:#101521;color:#c6d4f0;border-color:var(--border)}\n  .table td,.table th{border-color:var(--border)}\n  .pagination .page-link{color:#c6d4f0;background:#101521;border-color:var(--border)}\n  .pagination .page-item.active .page-link{background:#0d6efd;border-color:#0d6efd}\n  .btn-soft{background:#101521;border:1px solid var(--border);color:#dbe5f5}\n  .btn-soft:hover{background:#0e1422;color:#fff}\n\n  /* Offcanvas */\n  .offcanvas-nav{width:280px;background:#0f1523;color:#dbe5f5}\n  .offcanvas-nav .list-group-item{background:transparent;border:0;color:#dbe5f5}\n  .offcanvas-nav .list-group-item:hover{background:#0e1422}\n</style>\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n  // Single delete\n  document.querySelectorAll('.delete-paste').forEach(a => {\n    a.addEventListener('click', (e) => {\n      e.preventDefault();\n      if (confirm('Delete this paste? This also clears its view logs.')) {\n        window.location.href = a.getAttribute('href');\n      }\n    });\n  });\n  // Ban IP + delete\n  document.querySelectorAll('.ban-paste').forEach(a => {\n    a.addEventListener('click', (e) => {\n      e.preventDefault();\n      if (confirm('Ban this paste’s IP and delete the paste?')) {\n        window.location.href = a.getAttribute('href');\n      }\n    });\n  });\n  // Select all\n  const checkAll = document.getElementById('select-all');\n  if (checkAll){\n    checkAll.addEventListener('change', () => {\n      document.querySelectorAll('.row-select').forEach(cb => cb.checked = checkAll.checked);\n    });\n  }\n  // Bulk confirm\n  const bulkForm = document.getElementById('bulk-form');\n  if (bulkForm){\n    bulkForm.addEventListener('submit', (e) => {\n      const action = document.getElementById('bulk_action').value;\n      const anyChecked = [...document.querySelectorAll('.row-select')].some(cb => cb.checked);\n      if (!anyChecked) {\n        e.preventDefault();\n        alert('Please select at least one paste.');\n        return;\n      }\n      let msg = 'Proceed with bulk action?';\n      if (action === 'bulk_ban_delete') msg = 'Ban IPs for selected pastes and delete them?';\n      if (action === 'bulk_delete') msg = 'Delete selected pastes (and their view logs)?';\n      if (!confirm(msg)) e.preventDefault();\n    });\n  }\n});\n</script>\n</head>\n<body>\n\n<nav class=\"navbar navbar-expand-lg navbar-dark\">\n  <div class=\"container-fluid\">\n    <div class=\"d-flex align-items-center gap-2\">\n      <!-- Mobile: open offcanvas -->\n      <button class=\"btn btn-soft d-lg-none\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#navOffcanvas\" aria-controls=\"navOffcanvas\">\n        <i class=\"bi bi-list\"></i>\n      </button>\n      <a class=\"navbar-brand\" href=\"../\">Paste</a>\n    </div>\n    <button class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNav\">\n      <span class=\"navbar-toggler-icon\"></span>\n    </button>\n    <div class=\"collapse navbar-collapse justify-content-end\" id=\"navbarNav\">\n      <ul class=\"navbar-nav\">\n        <li class=\"nav-item dropdown\">\n          <a class=\"nav-link dropdown-toggle\" href=\"#\" data-bs-toggle=\"dropdown\">\n            <?php echo htmlspecialchars($_SESSION['admin_login']); ?>\n          </a>\n          <ul class=\"dropdown-menu dropdown-menu-end\">\n            <li><a class=\"dropdown-item\" href=\"admin.php\">Settings</a></li>\n            <li><a class=\"dropdown-item\" href=\"?logout\">Logout</a></li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n  </div>\n</nav>\n\n<!-- Mobile offcanvas nav -->\n<div class=\"offcanvas offcanvas-start offcanvas-nav\" tabindex=\"-1\" id=\"navOffcanvas\">\n  <div class=\"offcanvas-header\">\n    <h5 class=\"offcanvas-title\">Admin Menu</h5>\n    <button type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\"></button>\n  </div>\n  <div class=\"offcanvas-body\">\n    <div class=\"list-group\">\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n      <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n    </div>\n  </div>\n</div>\n\n<div class=\"container-fluid my-2\">\n  <div class=\"row g-2\">\n    <!-- Desktop sidebar -->\n    <div class=\"col-lg-2 d-none d-lg-block\">\n      <div class=\"sidebar-desktop\">\n        <div class=\"list-group\">\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n          <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"col-lg-10\">\n      <?php if ($msg) echo $msg; ?>\n\n      <?php if (isset($_GET['details'])): ?>\n        <?php\n          $detail_id = (int)filter_var($_GET['details'], FILTER_SANITIZE_NUMBER_INT);\n          $detail = getPasteDetails($pdo, $detail_id);\n        ?>\n        <?php if ($detail): ?>\n          <div class=\"card mb-3\">\n            <div class=\"card-body\">\n              <h4 class=\"card-title\">Details of Paste ID <?php echo htmlspecialchars($detail['id']); ?></h4>\n              <table class=\"table table-striped\">\n                <tbody>\n                  <tr><td>Username</td><td><?php echo htmlspecialchars($detail['member']); ?></td></tr>\n                  <tr><td>Paste Title</td><td><?php echo htmlspecialchars($detail['title']); ?></td></tr>\n                  <tr><td>Visibility</td><td><?php echo htmlspecialchars($detail['visible']); ?></td></tr>\n                  <tr><td>Password</td><td><?php echo htmlspecialchars($detail['password']); ?></td></tr>\n                  <tr><td>Views</td><td><?php echo number_format((int)$detail['views']); ?></td></tr>\n                  <tr><td>IP</td><td><?php echo htmlspecialchars($detail['ip']); ?></td></tr>\n                  <tr><td>Syntax Highlighting</td><td><?php echo htmlspecialchars($detail['code']); ?></td></tr>\n                  <tr><td>Expiration</td><td><?php echo htmlspecialchars($detail['expiry']); ?></td></tr>\n                  <tr><td>Encrypted Paste</td><td><?php echo htmlspecialchars($detail['encrypt']); ?></td></tr>\n                </tbody>\n              </table>\n              <a href=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>\" class=\"btn btn-soft\">Back</a>\n            </div>\n          </div>\n        <?php else: ?>\n          <div class=\"card mb-3\"><div class=\"card-body\"><h4 class=\"card-title\">No paste found</h4></div></div>\n        <?php endif; ?>\n\n      <?php else: ?>\n        <div class=\"card mb-3\">\n          <div class=\"card-body\">\n            <div class=\"d-flex flex-wrap align-items-center justify-content-between\">\n              <h4 class=\"card-title mb-3\">Manage Pastes</h4>\n              <form method=\"GET\" action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>\" class=\"row g-2 mb-3\">\n                <div class=\"col-auto\">\n                  <label class=\"visually-hidden\" for=\"visibility\">Visibility</label>\n                  <select class=\"form-select\" name=\"visibility\" id=\"visibility\" onchange=\"this.form.submit()\">\n                    <option value=\"all\" <?php echo $visibility_filter=='all'?'selected':''; ?>>All</option>\n                    <option value=\"0\"   <?php echo $visibility_filter==='0'?'selected':''; ?>>Public</option>\n                    <option value=\"1\"   <?php echo $visibility_filter==='1'?'selected':''; ?>>Unlisted</option>\n                    <option value=\"2\"   <?php echo $visibility_filter==='2'?'selected':''; ?>>Private</option>\n                  </select>\n                </div>\n                <div class=\"col-auto\">\n                  <input type=\"text\" class=\"form-control\" name=\"q\" placeholder=\"Search title / user / IP\" value=\"<?php echo htmlspecialchars($q); ?>\">\n                </div>\n                <div class=\"col-auto\">\n                  <button type=\"submit\" class=\"btn btn-primary\">Apply</button>\n                </div>\n              </form>\n            </div>\n\n            <form id=\"bulk-form\" method=\"POST\" action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>\">\n              <div class=\"row g-2 mb-3\">\n                <div class=\"col-auto\">\n                  <select class=\"form-select\" id=\"bulk_action\" name=\"bulk_action\">\n                    <option value=\"bulk_ban_delete\">Ban IP + Delete (selected)</option>\n                    <option value=\"bulk_delete\">Delete (selected)</option>\n                  </select>\n                </div>\n                <div class=\"col-auto\">\n                  <button type=\"submit\" class=\"btn btn-danger\">Run</button>\n                </div>\n              </div>\n\n              <div class=\"table-responsive\">\n                <table class=\"table table-hover table-bordered align-middle\">\n                  <thead>\n                    <tr>\n                      <th style=\"width:36px\"><input type=\"checkbox\" id=\"select-all\"></th>\n                      <th>ID</th>\n                      <th>Username</th>\n                      <th>Title</th>\n                      <th>IP</th>\n                      <th>Views</th>\n                      <th>Visibility</th>\n                      <th>Ban IP + Delete</th>\n                      <th>Details</th>\n                      <th>View</th>\n                      <th>Delete</th>\n                    </tr>\n                  </thead>\n                  <tbody>\n                    <?php if (!empty($pastes)): ?>\n                      <?php foreach ($pastes as $row): ?>\n                        <?php\n                          $visibility = match ((string)$row['visible']) {\n                              '0' => 'Public',\n                              '1' => 'Unlisted',\n                              '2' => 'Private',\n                              '3' => 'Banned',\n                              default => 'Unknown'\n                          };\n                          $qs = [];\n                          if ($visibility_filter !== 'all') $qs['visibility'] = $visibility_filter;\n                          if ($q !== '') $qs['q'] = $q;\n                          $qsBase = $qs ? '&'.http_build_query($qs) : '';\n                        ?>\n                        <tr>\n                          <td><input type=\"checkbox\" class=\"row-select\" name=\"selected_ids[]\" value=\"<?php echo (int)$row['id']; ?>\"></td>\n                          <td><?php echo (int)$row['id']; ?></td>\n                          <td><?php echo htmlspecialchars($row['member']); ?></td>\n                          <td><?php echo htmlspecialchars($row['title']); ?></td>\n                          <td><span class=\"badge bg-primary\"><?php echo htmlspecialchars($row['ip']); ?></span></td>\n                          <td><?php echo number_format((int)$row['views']); ?></td>\n                          <td><?php echo htmlspecialchars($visibility); ?></td>\n                          <td><a href=\"?ban=<?php echo (int)$row['id']; ?>&page=<?php echo (int)$page . $qsBase; ?>\" class=\"btn btn-warning btn-sm ban-paste\">Ban IP + Delete</a></td>\n                          <td><a href=\"?details=<?php echo (int)$row['id']; ?>\" class=\"btn btn-soft btn-sm\">Details</a></td>\n                          <td><a href=\"../paste.php?id=<?php echo (int)$row['id']; ?>\" class=\"btn btn-soft btn-sm\" target=\"_blank\">View</a></td>\n                          <td><a href=\"?delete=<?php echo (int)$row['id']; ?>&page=<?php echo (int)$page . $qsBase; ?>\" class=\"btn btn-danger btn-sm delete-paste\">Delete</a></td>\n                        </tr>\n                      <?php endforeach; ?>\n                    <?php else: ?>\n                      <tr><td colspan=\"11\" class=\"text-center\">No pastes found</td></tr>\n                    <?php endif; ?>\n                  </tbody>\n                </table>\n              </div>\n            </form>\n\n            <nav aria-label=\"Page navigation\">\n              <ul class=\"pagination justify-content-center\">\n                <?php\n                $params = [];\n                if ($visibility_filter !== 'all') $params['visibility'] = $visibility_filter;\n                if ($q !== '') $params['q'] = $q;\n                $paramStr = function($p) use ($params) {\n                    $merged = array_merge($params, $p);\n                    return $merged ? ('&'.http_build_query($merged)) : '';\n                };\n\n                if ($page > 1) {\n                  echo '<li class=\"page-item\"><a class=\"page-link\" href=\"?page='.($page-1).$paramStr([]).'\">&laquo;</a></li>';\n                } else {\n                  echo '<li class=\"page-item disabled\"><span class=\"page-link\">&laquo;</span></li>';\n                }\n                $start = max(1, $page-3); $end = min($total_pages, $page+3);\n                for ($i=$start; $i<=$end; $i++){\n                  echo '<li class=\"page-item'.($i==$page?' active':'').'\"><a class=\"page-link\" href=\"?page='.$i.$paramStr([]).'\">'.$i.'</a></li>';\n                }\n                if ($page < $total_pages) {\n                  echo '<li class=\"page-item\"><a class=\"page-link\" href=\"?page='.($page+1).$paramStr([]).'\">&raquo;</a></li>';\n                } else {\n                  echo '<li class=\"page-item disabled\"><span class=\"page-link\">&raquo;</span></li>';\n                }\n                ?>\n              </ul>\n            </nav>\n\n          </div>\n        </div>\n      <?php endif; ?>\n\n      <div class=\"text-muted small mt-3\">\n        Powered by <a class=\"text-decoration-none\" href=\"https://phpaste.sourceforge.io\" target=\"_blank\">Paste</a>\n      </div>\n    </div>\n  </div>\n</div>\n\n<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js\" crossorigin=\"anonymous\"></script>\n<?php\n// logout handler (optional)\nif (isset($_GET['logout'])) {\n    $_SESSION = [];\n    session_destroy();\n    header('Location: index.php');\n    exit();\n}\n?>\n</body>\n</html>\n<?php $pdo = null; ?>\n"
  },
  {
    "path": "admin/sitemap.php",
    "content": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\nsession_start();\n\n// Guard: admin session\nif (!isset($_SESSION['admin_login']) || !isset($_SESSION['admin_id'])) {\n    header(\"Location: ../index.php\");\n    exit();\n}\n\n$date = date('Y-m-d H:i:s');\n$ip   = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';\n\nrequire_once('../config.php'); // expects $dbhost,$dbuser,$dbpassword,$dbname,$mod_rewrite\n\ntry {\n    $pdo = new PDO(\n        \"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\",\n        $dbuser,\n        $dbpassword,\n        [\n            PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,\n            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\n            PDO::ATTR_EMULATE_PREPARES   => false,\n        ]\n    );\n\n    // Fetch baseurl\n    $row = $pdo->query(\"SELECT baseurl FROM site_info WHERE id=1\")->fetch();\n    if (!$row || empty($row['baseurl'])) {\n        throw new Exception(\"Base URL not found in site_info. Go to /admin/configuration.php\");\n    }\n    $baseurl = rtrim((string)$row['baseurl'], '/');\n\n    // Validate admin\n    $st = $pdo->prepare(\"SELECT id, user FROM admin WHERE id=?\");\n    $st->execute([$_SESSION['admin_id']]);\n    $adm = $st->fetch();\n    if (!$adm || $adm['user'] !== $_SESSION['admin_login']) {\n        unset($_SESSION['admin_login'], $_SESSION['admin_id']);\n        header(\"Location: \" . htmlspecialchars($baseurl . '/admin/index.php', ENT_QUOTES, 'UTF-8'));\n        exit();\n    }\n\n    // Log admin activity\n    $st = $pdo->query(\"SELECT MAX(id) last_id FROM admin_history\");\n    $last_id = $st->fetch()['last_id'] ?? null;\n    $last_ip = $last_date = null;\n    if ($last_id) {\n        $st = $pdo->prepare(\"SELECT ip,last_date FROM admin_history WHERE id=?\");\n        $st->execute([$last_id]);\n        $h = $st->fetch();\n        $last_ip = $h['ip'] ?? null;\n        $last_date = $h['last_date'] ?? null;\n    }\n    if ($last_ip !== $ip || $last_date !== $date) {\n        $st = $pdo->prepare(\"INSERT INTO admin_history(last_date,ip) VALUES(?,?)\");\n        $st->execute([$date,$ip]);\n    }\n\n    // Load current sitemap options (create row if missing)\n    $st = $pdo->prepare(\"SELECT priority, changefreq FROM sitemap_options WHERE id=1\");\n    $st->execute();\n    $opt = $st->fetch() ?: ['priority'=>'0.5','changefreq'=>'weekly'];\n    $priority   = (string)($opt['priority'] ?? '0.5');\n    $changefreq = (string)($opt['changefreq'] ?? 'weekly');\n\n    $msg = '';\n    $msg_type = 'info';\n    $written_count = null;\n\n    // Save options\n    if ($_SERVER['REQUEST_METHOD']==='POST' && isset($_POST['save_options'])) {\n        // validate priority\n        $p = trim((string)($_POST['priority'] ?? '0.5'));\n        if ($p === '' || !is_numeric($p)) $p = '0.5';\n        $p = max(0.0, min(1.0, (float)$p));\n\n        // validate changefreq\n        $allowed_cf = ['always','hourly','daily','weekly','monthly','yearly','never'];\n        $cf = strtolower(trim((string)($_POST['changefreq'] ?? 'weekly')));\n        if (!in_array($cf, $allowed_cf, true)) $cf = 'weekly';\n\n        // upsert options\n        $pdo->beginTransaction();\n        $exists = $pdo->query(\"SELECT 1 FROM sitemap_options WHERE id=1\")->fetchColumn();\n        if ($exists) {\n            $st = $pdo->prepare(\"UPDATE sitemap_options SET priority=?, changefreq=? WHERE id=1\");\n            $st->execute([number_format($p,1,'.',''), $cf]);\n        } else {\n            $st = $pdo->prepare(\"INSERT INTO sitemap_options(id,priority,changefreq) VALUES(1,?,?)\");\n            $st->execute([number_format($p,1,'.',''), $cf]);\n        }\n        $pdo->commit();\n\n        $priority = number_format($p,1,'.','');\n        $changefreq = $cf;\n        $msg = 'Sitemap options saved.';\n        $msg_type = 'success';\n    }\n\n    // Rebuild sitemap\n    if (isset($_GET['rebuild'])) {\n        $today = date('Y-m-d');\n\n        // prepare temp file\n        $tmp_path   = dirname(__DIR__) . '/sitemap.xml.tmp';\n        $final_path = dirname(__DIR__) . '/sitemap.xml';\n\n        $fh = fopen($tmp_path, 'wb');\n        if (!$fh) {\n            throw new Exception(\"Unable to open temporary sitemap file for writing.\");\n        }\n\n        // XML header + open urlset\n        fwrite($fh, \"<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\n\");\n        fwrite($fh, \"<urlset xmlns=\\\"http://www.sitemaps.org/schemas/sitemap/0.9\\\">\\n\");\n\n        // Homepage\n        $home = htmlspecialchars($baseurl . '/', ENT_QUOTES, 'UTF-8');\n        fwrite($fh, \"  <url>\\n\");\n        fwrite($fh, \"    <loc>{$home}</loc>\\n\");\n        fwrite($fh, \"    <priority>1.0</priority>\\n\");\n        fwrite($fh, \"    <changefreq>daily</changefreq>\\n\");\n        fwrite($fh, \"    <lastmod>{$today}</lastmod>\\n\");\n        fwrite($fh, \"  </url>\\n\");\n\n        // Pull options fresh (in case just saved)\n        $st = $pdo->prepare(\"SELECT priority, changefreq FROM sitemap_options WHERE id=1\");\n        $st->execute();\n        $opt = $st->fetch() ?: ['priority'=>'0.5','changefreq'=>'weekly'];\n        $item_priority   = number_format((float)$opt['priority'],1,'.','');\n        $item_changefreq = in_array($opt['changefreq'], ['always','hourly','daily','weekly','monthly','yearly','never'], true)\n            ? $opt['changefreq'] : 'weekly';\n\n        // Count public pastes\n        $total_public = (int)$pdo->query(\"SELECT COUNT(*) FROM pastes WHERE visible='0'\")->fetchColumn();\n\n        // Stream in chunks\n        $limit   = 500;\n        $written = 1; // homepage\n        for ($offset=0; $offset < $total_public; $offset += $limit) {\n            $st = $pdo->prepare(\"SELECT id FROM pastes WHERE visible='0' ORDER BY id DESC LIMIT :lim OFFSET :off\");\n            $st->bindValue(':lim', $limit, PDO::PARAM_INT);\n            $st->bindValue(':off', $offset, PDO::PARAM_INT);\n            $st->execute();\n            $rows = $st->fetchAll();\n\n            foreach ($rows as $r) {\n                $id = (int)$r['id'];\n                if ((string)$mod_rewrite === \"1\") {\n                    $url = $baseurl . '/' . rawurlencode((string)$id);\n                } else {\n                    $url = $baseurl . '/paste.php?id=' . urlencode((string)$id);\n                }\n                $loc = htmlspecialchars($url, ENT_QUOTES, 'UTF-8');\n                fwrite($fh, \"  <url>\\n\");\n                fwrite($fh, \"    <loc>{$loc}</loc>\\n\");\n                fwrite($fh, \"    <priority>{$item_priority}</priority>\\n\");\n                fwrite($fh, \"    <changefreq>{$item_changefreq}</changefreq>\\n\");\n                fwrite($fh, \"    <lastmod>{$today}</lastmod>\\n\");\n                fwrite($fh, \"  </url>\\n\");\n                $written++;\n            }\n        }\n\n        // Close urlset\n        fwrite($fh, \"</urlset>\\n\");\n        fclose($fh);\n\n        // Atomic replace\n        if (!rename($tmp_path, $final_path)) {\n            @unlink($tmp_path);\n            throw new Exception(\"Failed to move temporary sitemap into place.\");\n        }\n\n        $msg = 'sitemap.xml rebuilt successfully. URLs written: ' . number_format($written);\n        $msg_type = 'success';\n        $written_count = $written;\n    }\n\n} catch (PDOException $e) {\n    die(\"Unable to connect to database: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));\n} catch (Exception $e) {\n    $msg = htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n    $msg_type = 'danger';\n}\n?>\n<!DOCTYPE html>\n<html lang=\"en\" data-bs-theme=\"dark\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<title>Paste - Sitemap</title>\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\" rel=\"stylesheet\">\n<style>\n  :root{\n    --bg: #0f1115;\n    --card:#141821;\n    --muted:#7f8da3;\n    --border:#1f2633;\n    --accent:#0d6efd;\n  }\n  body{background:var(--bg);color:#fff;}\n  .navbar{background:#121826!important;position:sticky;top:0;z-index:1030}\n  .navbar .navbar-brand{font-weight:600}\n\n  /* Desktop sidebar */\n  .sidebar-desktop{\n    position:sticky; top:1rem;\n    background:#121826;border:1px solid var(--border);\n    border-radius:12px;padding:12px;\n  }\n  .sidebar-desktop .list-group-item{\n    background:transparent;color:#dbe5f5;border:0;border-radius:10px;padding:.65rem .8rem;\n  }\n  .sidebar-desktop .list-group-item:hover{background:#0e1422}\n  .sidebar-desktop .list-group-item.active{background:#0d6efd;color:#fff}\n\n  .card{background:var(--card);border:1px solid var(--border);border-radius:12px}\n  .form-control,.form-select{background:#0e1422;border-color:var(--border);color:#e6edf3}\n  .form-control:focus,.form-select:focus{border-color:var(--accent);box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}\n  .table{color:#e6edf3}\n  .table thead th{background:#101521;color:#c6d4f0;border-color:var(--border)}\n  .table td,.table th{border-color:var(--border)}\n  .pagination .page-link{color:#c6d4f0;background:#101521;border-color:var(--border)}\n  .pagination .page-item.active .page-link{background:#0d6efd;border-color:#0d6efd}\n  .btn-soft{background:#101521;border:1px solid var(--border);color:#dbe5f5}\n  .btn-soft:hover{background:#0e1422;color:#fff}\n\n  /* Offcanvas */\n  .offcanvas-nav{width:280px;background:#0f1523;color:#dbe5f5}\n  .offcanvas-nav .list-group-item{background:transparent;border:0;color:#dbe5f5}\n  .offcanvas-nav .list-group-item:hover{background:#0e1422}\n\n  .stat-chip{display:inline-flex; align-items:center; gap:.5rem; padding:.4rem .6rem; background:#222733; border:1px solid #31384a; border-radius:10px}\n  .stat-chip i{opacity:.9}\n</style>\n<script>\ndocument.addEventListener('DOMContentLoaded', function () {\n  const btn = document.getElementById('rebuildBtn');\n  if (btn) {\n    btn.addEventListener('click', function (e) {\n      e.preventDefault();\n      if (confirm('Rebuild sitemap.xml now? This will overwrite the existing file.')) {\n        const u = new URL(window.location.href);\n        u.searchParams.set('rebuild', '1');\n        window.location.href = u.toString();\n      }\n    });\n  }\n});\n</script>\n</head>\n<body>\n\n<nav class=\"navbar navbar-expand-lg navbar-dark\">\n  <div class=\"container-fluid\">\n    <div class=\"d-flex align-items-center gap-2\">\n      <!-- Mobile: open offcanvas -->\n      <button class=\"btn btn-soft d-lg-none\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#navOffcanvas\" aria-controls=\"navOffcanvas\">\n        <i class=\"bi bi-list\"></i>\n      </button>\n      <a class=\"navbar-brand\" href=\"../\">Paste</a>\n    </div>\n    <button class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNav\">\n      <span class=\"navbar-toggler-icon\"></span>\n    </button>\n    <div class=\"collapse navbar-collapse justify-content-end\" id=\"navbarNav\">\n      <ul class=\"navbar-nav\">\n        <li class=\"nav-item dropdown\">\n          <a class=\"nav-link dropdown-toggle\" href=\"#\" data-bs-toggle=\"dropdown\">\n            <?php echo htmlspecialchars($_SESSION['admin_login']); ?>\n          </a>\n          <ul class=\"dropdown-menu dropdown-menu-end\">\n            <li><a class=\"dropdown-item\" href=\"admin.php\">Settings</a></li>\n            <li><a class=\"dropdown-item\" href=\"?logout\">Logout</a></li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n  </div>\n</nav>\n\n<!-- Mobile offcanvas nav -->\n<div class=\"offcanvas offcanvas-start offcanvas-nav\" tabindex=\"-1\" id=\"navOffcanvas\">\n  <div class=\"offcanvas-header\">\n    <h5 class=\"offcanvas-title\">Admin Menu</h5>\n    <button type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\"></button>\n  </div>\n  <div class=\"offcanvas-body\">\n    <div class=\"list-group\">\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n      <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n    </div>\n  </div>\n</div>\n\n<div class=\"container-fluid my-2\">\n  <div class=\"row g-2\">\n    <!-- Desktop sidebar -->\n    <div class=\"col-lg-2 d-none d-lg-block\">\n      <div class=\"sidebar-desktop\">\n        <div class=\"list-group\">\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n          <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'/admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"col-lg-10\">\n      <?php if (!empty($msg)): ?>\n        <div class=\"alert alert-<?php echo htmlspecialchars($msg_type); ?> alert-dismissible fade show\" role=\"alert\">\n          <?php echo $msg; ?>\n          <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\n        </div>\n      <?php endif; ?>\n\n      <div class=\"card mb-3\">\n        <div class=\"card-body\">\n          <h4 class=\"card-title mb-3\">Sitemap Options</h4>\n          <form method=\"POST\" action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>\">\n            <div class=\"row g-2\">\n              <div class=\"col-md-4\">\n                <label class=\"form-label\">Change Frequency</label>\n                <select name=\"changefreq\" class=\"form-select\">\n                  <?php\n                  $opts = ['always','hourly','daily','weekly','monthly','yearly','never'];\n                  foreach ($opts as $o) {\n                      $sel = ($changefreq === $o) ? 'selected' : '';\n                      echo '<option value=\"'.htmlspecialchars($o).'\" '.$sel.'>'.ucfirst($o).'</option>';\n                  }\n                  ?>\n                </select>\n              </div>\n              <div class=\"col-md-4\">\n                <label class=\"form-label\">Priority (0.0 – 1.0)</label>\n                <input type=\"number\" step=\"0.1\" min=\"0\" max=\"1\" name=\"priority\" class=\"form-control\"\n                       value=\"<?php echo htmlspecialchars($priority); ?>\">\n              </div>\n              <div class=\"col-md-4 d-flex align-items-end\">\n                <button type=\"submit\" name=\"save_options\" class=\"btn btn-primary w-100\">\n                  <i class=\"bi bi-save\"></i> Save Options\n                </button>\n              </div>\n            </div>\n          </form>\n          <hr class=\"border-secondary my-4\">\n          <div class=\"d-flex flex-wrap gap-2\">\n            <div class=\"stat-chip\"><i class=\"bi bi-globe2\"></i> <span>Base URL:</span> <strong><?php echo htmlspecialchars($baseurl); ?></strong></div>\n            <div class=\"stat-chip\"><i class=\"bi bi-sliders\"></i> <span>Rewrite:</span> <strong><?php echo ((string)$mod_rewrite===\"1\"?'On':'Off'); ?></strong></div>\n            <?php if ($written_count !== null): ?>\n              <div class=\"stat-chip\"><i class=\"bi bi-list-check\"></i> <span>URLs written:</span> <strong><?php echo number_format($written_count); ?></strong></div>\n            <?php endif; ?>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"card mb-3\">\n        <div class=\"card-body\">\n          <h4 class=\"card-title mb-3\">Generate</h4>\n          <p class=\"text-muted\">Rebuilds <code>sitemap.xml</code> with public pastes and the homepage. Existing file will be replaced.</p>\n          <div class=\"row g-2\">\n            <div class=\"col-sm-6 d-grid\">\n              <a href=\"#\" id=\"rebuildBtn\" class=\"btn btn-soft\"><i class=\"bi bi-arrow-repeat\"></i> Rebuild sitemap.xml</a>\n            </div>\n            <div class=\"col-sm-6 d-grid\">\n              <a class=\"btn btn-outline-primary\" href=\"../sitemap.xml\" target=\"_blank\"><i class=\"bi bi-box-arrow-up-right\"></i> View sitemap.xml</a>\n            </div>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"text-muted small mt-3\">\n        Powered by <a class=\"text-decoration-none\" href=\"https://phpaste.sourceforge.io\" target=\"_blank\">Paste</a>\n      </div>\n    </div>\n  </div>\n</div>\n\n<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js\" crossorigin=\"anonymous\"></script>\n<?php\n// Handle logout from dropdown\nif (isset($_GET['logout'])) {\n    $_SESSION = [];\n    session_destroy();\n    header('Location: index.php');\n    exit();\n}\n$pdo = null;\n?>\n</body>\n</html>\n"
  },
  {
    "path": "admin/stats.php",
    "content": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\nsession_start();\n\n// Guard\nif (!isset($_SESSION['admin_login']) || !isset($_SESSION['admin_id'])) {\n    header(\"Location: ../index.php\");\n    exit();\n}\n\n$date = date('Y-m-d H:i:s');\n$ip   = $_SERVER['REMOTE_ADDR'] ?? '';\n\nrequire_once('../config.php');\n\ntry {\n    $pdo = new PDO(\"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\", $dbuser, $dbpassword, [\n        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,\n        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\n        PDO::ATTR_EMULATE_PREPARES   => false,\n    ]);\n\n    // baseurl\n    $baseurl = rtrim((string)($pdo->query(\"SELECT baseurl FROM site_info WHERE id=1\")->fetch()['baseurl'] ?? ''), '/') . '/';\n\n    // validate admin\n    $st = $pdo->prepare(\"SELECT id,user FROM admin WHERE id=?\");\n    $st->execute([$_SESSION['admin_id']]);\n    $adm = $st->fetch();\n    if (!$adm || $adm['user'] !== $_SESSION['admin_login']) {\n        unset($_SESSION['admin_login'], $_SESSION['admin_id']);\n        header(\"Location: \" . htmlspecialchars($baseurl.'admin/index.php', ENT_QUOTES, 'UTF-8'));\n        exit();\n    }\n\n    // admin history (best-effort)\n    $last = $pdo->query(\"SELECT MAX(id) last_id FROM admin_history\")->fetch()['last_id'] ?? null;\n    $last_ip=null; $last_date=null;\n    if ($last) {\n        $st = $pdo->prepare(\"SELECT ip,last_date FROM admin_history WHERE id=?\");\n        $st->execute([$last]);\n        $row = $st->fetch();\n        $last_ip = $row['ip'] ?? null;\n        $last_date = $row['last_date'] ?? null;\n    }\n    if (($last_ip ?? '') !== $ip || ($last_date ?? '') !== $date) {\n        $st = $pdo->prepare(\"INSERT INTO admin_history (last_date, ip) VALUES (?, ?)\");\n        $st->execute([$date, $ip]);\n    }\n\n    // Summary stats\n    $row = $pdo->query(\"SELECT SUM(tpage) AS total_page, SUM(tvisit) AS total_visit FROM page_view\")->fetch();\n    $total_page = (int)($row['total_page'] ?? 0);\n    $total_un   = (int)($row['total_visit'] ?? 0);\n\n    $row = $pdo->query(\"\n        SELECT \n            COUNT(*) AS total_pastes,\n            SUM(CASE WHEN expiry IS NOT NULL AND expiry <> 'SELF' AND UNIX_TIMESTAMP(expiry) < UNIX_TIMESTAMP() THEN 1 ELSE 0 END) AS exp_pastes\n        FROM pastes\n    \")->fetch();\n    $total_pastes = (int)($row['total_pastes'] ?? 0);\n    $exp_pastes   = (int)($row['exp_pastes'] ?? 0);\n\n    $row = $pdo->query(\"SELECT \n        COUNT(*) AS total_users,\n        SUM(CASE WHEN verified='2' THEN 1 ELSE 0 END) AS total_ban,\n        SUM(CASE WHEN verified='0' THEN 1 ELSE 0 END) AS not_ver\n        FROM users\")->fetch();\n    $total_users = (int)($row['total_users'] ?? 0);\n    $total_ban   = (int)($row['total_ban'] ?? 0);\n    $not_ver     = (int)($row['not_ver'] ?? 0);\n\n    $total_paste_views = (int)($pdo->query(\"SELECT COUNT(*) c FROM paste_views\")->fetch()['c'] ?? 0);\n\n    // Monthly tables\n    $monthly_site_stats = $pdo->query(\"\n        SELECT DATE_FORMAT(date,'%Y-%m') AS month, SUM(tpage) AS tpage, SUM(tvisit) AS tvisit\n          FROM page_view\n         GROUP BY DATE_FORMAT(date,'%Y-%m')\n         ORDER BY month DESC LIMIT 12\n    \")->fetchAll();\n\n    $monthly_paste_stats = $pdo->query(\"\n        SELECT DATE_FORMAT(view_date,'%Y-%m') AS month, COUNT(*) AS total_views, COUNT(DISTINCT ip) AS unique_views\n          FROM paste_views\n         GROUP BY DATE_FORMAT(view_date,'%Y-%m')\n         ORDER BY month DESC LIMIT 12\n    \")->fetchAll();\n\n    // Chart data (daily/monthly toggle)\n    $view_type = (isset($_GET['view']) && $_GET['view'] === 'monthly') ? 'monthly' : 'daily';\n    if ($view_type === 'monthly') {\n        $chart_data = $pdo->query(\"\n            SELECT DATE_FORMAT(date,'%Y-%m') AS label, SUM(tpage) AS tpage, SUM(tvisit) AS tvisit\n              FROM page_view GROUP BY DATE_FORMAT(date,'%Y-%m') ORDER BY label DESC LIMIT 12\n        \")->fetchAll();\n        $paste_chart_data = $pdo->query(\"\n            SELECT DATE_FORMAT(view_date,'%Y-%m') AS label, COUNT(*) AS total_views, COUNT(DISTINCT ip) AS unique_views\n              FROM paste_views GROUP BY DATE_FORMAT(view_date,'%Y-%m') ORDER BY label DESC LIMIT 12\n        \")->fetchAll();\n    } else {\n        $chart_data = $pdo->query(\"\n            SELECT date AS label, SUM(tpage) AS tpage, SUM(tvisit) AS tvisit\n              FROM page_view GROUP BY date ORDER BY date DESC LIMIT 30\n        \")->fetchAll();\n        $paste_chart_data = $pdo->query(\"\n            SELECT view_date AS label, COUNT(*) AS total_views, COUNT(DISTINCT ip) AS unique_views\n              FROM paste_views GROUP BY view_date ORDER BY view_date DESC LIMIT 30\n        \")->fetchAll();\n    }\n\n    $chart_labels=[]; $chart_views=[]; $chart_unique=[]; $chart_paste_views=[]; $chart_paste_unique=[];\n    foreach (array_reverse($chart_data) as $r) {\n        $chart_labels[] = $r['label'];\n        $chart_views[]  = (int)$r['tpage'];\n        $chart_unique[] = (int)$r['tvisit'];\n    }\n    foreach (array_reverse($paste_chart_data) as $r) {\n        $chart_paste_views[]  = (int)$r['total_views'];\n        $chart_paste_unique[] = (int)$r['unique_views'];\n    }\n\n    // Aggregated table pagination\n    $per_page = 20;\n    $page     = isset($_GET['page']) ? max(1, (int)$_GET['page']) : 1;\n    $offset   = ($page - 1) * $per_page;\n\n    $total_months = (int)($pdo->query(\"SELECT COUNT(DISTINCT DATE_FORMAT(date,'%Y-%m')) t FROM page_view\")->fetch()['t'] ?? 0);\n    $total_days   = (int)($pdo->query(\"SELECT COUNT(DISTINCT date) t FROM page_view\")->fetch()['t'] ?? 0);\n    $total_views  = ($view_type==='monthly') ? $total_months : $total_days;\n    $total_pages  = max(1, (int)ceil($total_views / $per_page));\n\n    if ($view_type==='monthly') {\n        $page_views = $pdo->query(\"\n            SELECT DATE_FORMAT(date,'%Y-%m') AS label, SUM(tpage) AS tpage, SUM(tvisit) AS tvisit\n              FROM page_view GROUP BY DATE_FORMAT(date,'%Y-%m')\n             ORDER BY label DESC LIMIT $per_page OFFSET $offset\n        \")->fetchAll();\n        $paste_page_views = $pdo->query(\"\n            SELECT DATE_FORMAT(view_date,'%Y-%m') AS label, COUNT(*) AS total_views, COUNT(DISTINCT ip) AS unique_views\n              FROM paste_views GROUP BY DATE_FORMAT(view_date,'%Y-%m')\n             ORDER BY label DESC LIMIT $per_page OFFSET $offset\n        \")->fetchAll();\n    } else {\n        $page_views = $pdo->query(\"\n            SELECT date AS label, SUM(tpage) AS tpage, SUM(tvisit) AS tvisit\n              FROM page_view GROUP BY date\n             ORDER BY date DESC LIMIT $per_page OFFSET $offset\n        \")->fetchAll();\n        $paste_page_views = $pdo->query(\"\n            SELECT view_date AS label, COUNT(*) AS total_views, COUNT(DISTINCT ip) AS unique_views\n              FROM paste_views GROUP BY view_date\n             ORDER BY view_date DESC LIMIT $per_page OFFSET $offset\n        \")->fetchAll();\n    }\n\n    // Per-paste stats (with sorting + pagination)\n    $paste_per_page = 20;\n    $paste_page     = isset($_GET['paste_page']) ? max(1, (int)$_GET['paste_page']) : 1;\n    $paste_offset   = ($paste_page - 1) * $paste_per_page;\n    $sort           = (isset($_GET['sort']) && in_array($_GET['sort'], ['views','unique'], true)) ? $_GET['sort'] : 'views';\n    $sort_col       = $sort === 'views' ? 'total_views' : 'unique_views';\n\n    $total_pastes_with_views = (int)($pdo->query(\"SELECT COUNT(DISTINCT paste_id) t FROM paste_views\")->fetch()['t'] ?? 0);\n    $total_paste_pages       = max(1, (int)ceil($total_pastes_with_views / $paste_per_page));\n\n    $st = $pdo->prepare(\"\n        SELECT pv.paste_id, p.title,\n               COUNT(*) AS total_views,\n               COUNT(DISTINCT pv.ip) AS unique_views\n          FROM paste_views pv\n          LEFT JOIN pastes p ON p.id = pv.paste_id\n         GROUP BY pv.paste_id, p.title\n         ORDER BY $sort_col DESC\n         LIMIT :lim OFFSET :off\n    \");\n    $st->bindValue(':lim', $paste_per_page, PDO::PARAM_INT);\n    $st->bindValue(':off', $paste_offset, PDO::PARAM_INT);\n    $st->execute();\n    $paste_stats = $st->fetchAll();\n\n} catch (PDOException $e) {\n    die(\"Unable to connect to database: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));\n}\n\n// logout\nif (isset($_GET['logout'])) {\n    $_SESSION = [];\n    session_destroy();\n    header('Location: index.php');\n    exit();\n}\n\n// helper compact numbers\nfunction fmt_n($n){ if ($n>=1000000) return number_format($n/1000000,1).'M'; if ($n>=1000) return number_format($n/1000,1).'K'; return (string)$n; }\n?>\n<!DOCTYPE html>\n<html lang=\"en\" data-bs-theme=\"dark\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<title>Paste - Statistics</title>\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\" rel=\"stylesheet\">\n<script src=\"https://cdn.jsdelivr.net/npm/chart.js@4.4.3/dist/chart.umd.min.js\"></script>\n\n<style>\n  :root{\n    --bg:#0f1115; --card:#141821; --muted:#7f8da3; --border:#1f2633; --accent:#0d6efd;\n  }\n  body{background:var(--bg);color:#fff;}\n  .navbar{background:#121826!important;position:sticky;top:0;z-index:1030}\n  .navbar .navbar-brand{font-weight:600}\n\n  /* Desktop sidebar (like pages.php) */\n  .sidebar-desktop{\n    position:sticky; top:1rem;\n    background:#121826;border:1px solid var(--border);\n    border-radius:12px;padding:12px;\n  }\n  .sidebar-desktop .list-group-item{\n    background:transparent;color:#dbe5f5;border:0;border-radius:10px;padding:.65rem .8rem;\n  }\n  .sidebar-desktop .list-group-item:hover{background:#0e1422}\n  .sidebar-desktop .list-group-item.active{background:#0d6efd;color:#fff}\n\n  .card{background:var(--card);border:1px solid var(--border);border-radius:12px}\n  .table{color:#e6edf3}\n  .table thead th{background:#101521;color:#c6d4f0;border-color:var(--border)}\n  .table td,.table th{border-color:var(--border)}\n  .pagination .page-link{color:#c6d4f0;background:#101521;border-color:var(--border)}\n  .pagination .page-item.active .page-link{background:#0d6efd;border-color:#0d6efd}\n  .btn-soft{background:#101521;border:1px solid var(--border);color:#dbe5f5}\n  .btn-soft:hover{background:#0e1422;color:#fff}\n\n  .kpi .badge{font-size:1.05rem}\n  .chart-wrap{background:#101521;border:1px solid var(--border);border-radius:12px;padding:10px}\n\n  /* Offcanvas (mobile nav) */\n  .offcanvas-nav{width:280px;background:#0f1523;color:#dbe5f5}\n  .offcanvas-nav .list-group-item{background:transparent;border:0;color:#dbe5f5}\n  .offcanvas-nav .list-group-item:hover{background:#0e1422}\n</style>\n</head>\n<body>\n\n<nav class=\"navbar navbar-expand-lg navbar-dark\">\n  <div class=\"container-fluid\">\n    <div class=\"d-flex align-items-center gap-2\">\n      <button class=\"btn btn-soft d-lg-none\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#navOffcanvas\" aria-controls=\"navOffcanvas\">\n        <i class=\"bi bi-list\"></i>\n      </button>\n      <a class=\"navbar-brand\" href=\"../\">Paste</a>\n    </div>\n    <button class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNav\">\n      <span class=\"navbar-toggler-icon\"></span>\n    </button>\n    <div class=\"collapse navbar-collapse justify-content-end\" id=\"navbarNav\">\n      <ul class=\"navbar-nav\">\n        <li class=\"nav-item dropdown\">\n          <a class=\"nav-link dropdown-toggle\" href=\"#\" data-bs-toggle=\"dropdown\">\n            <?php echo htmlspecialchars($_SESSION['admin_login'], ENT_QUOTES, 'UTF-8'); ?>\n          </a>\n          <ul class=\"dropdown-menu dropdown-menu-end\">\n            <li><a class=\"dropdown-item\" href=\"admin.php\">Settings</a></li>\n            <li><a class=\"dropdown-item\" href=\"?logout\">Logout</a></li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n  </div>\n</nav>\n\n<!-- Mobile offcanvas nav -->\n<div class=\"offcanvas offcanvas-start offcanvas-nav\" tabindex=\"-1\" id=\"navOffcanvas\">\n  <div class=\"offcanvas-header\">\n    <h5 class=\"offcanvas-title\">Admin Menu</h5>\n    <button type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\"></button>\n  </div>\n  <div class=\"offcanvas-body\">\n    <div class=\"list-group\">\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n      <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n    </div>\n  </div>\n</div>\n\n<div class=\"container-fluid my-2\">\n  <div class=\"row g-2\">\n    <!-- Desktop sidebar -->\n    <div class=\"col-lg-2 d-none d-lg-block\">\n      <div class=\"sidebar-desktop\">\n        <div class=\"list-group\">\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n          <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n        </div>\n      </div>\n    </div>\n\n    <!-- Main content -->\n    <div class=\"col-lg-10\">\n      <!-- KPIs -->\n      <div class=\"row g-2\">\n        <div class=\"col-md-3 col-sm-6\">\n          <div class=\"card kpi text-center p-3\">\n            <i class=\"bi bi-clipboard-data fs-1 mb-1\"></i>\n            <div class=\"small text-secondary\">Total Pastes</div>\n            <div class=\"badge bg-primary\"><?php echo fmt_n($total_pastes); ?></div>\n          </div>\n        </div>\n        <div class=\"col-md-3 col-sm-6\">\n          <div class=\"card kpi text-center p-3\">\n            <i class=\"bi bi-clock-history fs-1 mb-1\"></i>\n            <div class=\"small text-secondary\">Expired Pastes</div>\n            <div class=\"badge bg-warning text-dark\"><?php echo fmt_n($exp_pastes); ?></div>\n          </div>\n        </div>\n        <div class=\"col-md-3 col-sm-6\">\n          <div class=\"card kpi text-center p-3\">\n            <i class=\"bi bi-people fs-1 mb-1\"></i>\n            <div class=\"small text-secondary\">Total Users</div>\n            <div class=\"badge bg-primary\"><?php echo fmt_n($total_users); ?></div>\n          </div>\n        </div>\n        <div class=\"col-md-3 col-sm-6\">\n          <div class=\"card kpi text-center p-3\">\n            <i class=\"bi bi-person-x fs-1 mb-1\"></i>\n            <div class=\"small text-secondary\">Banned Users</div>\n            <div class=\"badge bg-danger\"><?php echo fmt_n($total_ban); ?></div>\n          </div>\n        </div>\n        <div class=\"col-md-3 col-sm-6\">\n          <div class=\"card kpi text-center p-3\">\n            <i class=\"bi bi-person-check fs-1 mb-1\"></i>\n            <div class=\"small text-secondary\">Unverified Users</div>\n            <div class=\"badge bg-warning text-dark\"><?php echo fmt_n($not_ver); ?></div>\n          </div>\n        </div>\n        <div class=\"col-md-3 col-sm-6\">\n          <div class=\"card kpi text-center p-3\">\n            <i class=\"bi bi-eye fs-1 mb-1\"></i>\n            <div class=\"small text-secondary\">Total Site Views</div>\n            <div class=\"badge bg-primary\"><?php echo fmt_n($total_page); ?></div>\n          </div>\n        </div>\n        <div class=\"col-md-3 col-sm-6\">\n          <div class=\"card kpi text-center p-3\">\n            <i class=\"bi bi-person-lines-fill fs-1 mb-1\"></i>\n            <div class=\"small text-secondary\">Site Unique Visitors</div>\n            <div class=\"badge bg-primary\"><?php echo fmt_n($total_un); ?></div>\n          </div>\n        </div>\n        <div class=\"col-md-3 col-sm-6\">\n          <div class=\"card kpi text-center p-3\">\n            <i class=\"bi bi-eye-fill fs-1 mb-1\"></i>\n            <div class=\"small text-secondary\">Total Paste Views</div>\n            <div class=\"badge bg-primary\"><?php echo fmt_n($total_paste_views); ?></div>\n          </div>\n        </div>\n      </div>\n\n      <!-- Monthly summary -->\n      <div class=\"card mt-3\">\n        <div class=\"card-body\">\n          <h4 class=\"card-title\">Monthly Statistics</h4>\n          <div class=\"table-responsive\">\n            <table class=\"table table-hover table-bordered align-middle\">\n              <thead>\n                <tr>\n                  <th>Month</th>\n                  <th>Site Views</th>\n                  <th>Site Unique Visitors</th>\n                  <th>Paste Views</th>\n                  <th>Paste Unique Visitors</th>\n                </tr>\n              </thead>\n              <tbody>\n              <?php\n                $monthly_stats = [];\n                foreach ($monthly_site_stats as $s) {\n                    $monthly_stats[$s['month']] = [\n                        'site_views'=>(int)$s['tpage'],\n                        'site_unique'=>(int)$s['tvisit'],\n                        'paste_views'=>0,\n                        'paste_unique'=>0\n                    ];\n                }\n                foreach ($monthly_paste_stats as $p) {\n                    if (!isset($monthly_stats[$p['month']])) {\n                        $monthly_stats[$p['month']] = ['site_views'=>0,'site_unique'=>0,'paste_views'=>0,'paste_unique'=>0];\n                    }\n                    $monthly_stats[$p['month']]['paste_views']  = (int)$p['total_views'];\n                    $monthly_stats[$p['month']]['paste_unique'] = (int)$p['unique_views'];\n                }\n                krsort($monthly_stats);\n                if ($monthly_stats) {\n                    foreach ($monthly_stats as $m=>$vals) {\n                        echo '<tr>'.\n                             '<td>'.htmlspecialchars($m).'</td>'.\n                             '<td>'.number_format($vals['site_views']).'</td>'.\n                             '<td>'.number_format($vals['site_unique']).'</td>'.\n                             '<td>'.number_format($vals['paste_views']).'</td>'.\n                             '<td>'.number_format($vals['paste_unique']).'</td>'.\n                             '</tr>';\n                    }\n                } else {\n                    echo '<tr><td colspan=\"5\" class=\"text-center\">No monthly statistics found</td></tr>';\n                }\n              ?>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n\n      <!-- Chart -->\n      <div class=\"card mt-3\">\n        <div class=\"card-body\">\n          <div class=\"d-flex align-items-center justify-content-between flex-wrap gap-2 mb-2\">\n            <h4 class=\"card-title mb-0\">Views Chart (<?php echo $view_type==='monthly'?'Monthly':'Daily'; ?>)</h4>\n            <div class=\"d-flex align-items-center gap-2\">\n              <a href=\"?view=<?php echo $view_type==='monthly'?'daily':'monthly'; ?>&page=<?php echo $page; ?>&paste_page=<?php echo $paste_page; ?>&sort=<?php echo htmlspecialchars($sort, ENT_QUOTES, 'UTF-8'); ?>\" class=\"btn btn-soft\">\n                Switch to <?php echo $view_type==='monthly'?'Daily':'Monthly'; ?> View\n              </a>\n              <div class=\"form-check form-switch\">\n                <input class=\"form-check-input\" type=\"checkbox\" id=\"toggleSiteViews\" checked>\n                <label class=\"form-check-label\" for=\"toggleSiteViews\">Site Views</label>\n              </div>\n              <div class=\"form-check form-switch\">\n                <input class=\"form-check-input\" type=\"checkbox\" id=\"toggleSiteUnique\" checked>\n                <label class=\"form-check-label\" for=\"toggleSiteUnique\">Site Unique</label>\n              </div>\n              <div class=\"form-check form-switch\">\n                <input class=\"form-check-input\" type=\"checkbox\" id=\"togglePasteViews\" checked>\n                <label class=\"form-check-label\" for=\"togglePasteViews\">Paste Views</label>\n              </div>\n              <div class=\"form-check form-switch\">\n                <input class=\"form-check-input\" type=\"checkbox\" id=\"togglePasteUnique\" checked>\n                <label class=\"form-check-label\" for=\"togglePasteUnique\">Paste Unique</label>\n              </div>\n            </div>\n          </div>\n          <div class=\"chart-wrap\">\n            <canvas id=\"pageViewsChart\" height=\"220\"></canvas>\n          </div>\n        </div>\n      </div>\n\n      <!-- Aggregated table -->\n      <div class=\"card mt-3\">\n        <div class=\"card-body\">\n          <h4 class=\"card-title\"><?php echo $view_type==='monthly'?'Monthly':'Daily'; ?> Views Table</h4>\n          <div class=\"table-responsive\">\n            <table class=\"table table-hover table-bordered align-middle\">\n              <thead>\n                <tr>\n                  <th><?php echo $view_type==='monthly'?'Month':'Date'; ?></th>\n                  <th>Site Views</th>\n                  <th>Site Unique Visitors</th>\n                  <th>Paste Views</th>\n                  <th>Paste Unique Visitors</th>\n                </tr>\n              </thead>\n              <tbody>\n                <?php\n                $combined=[];\n                foreach ($page_views as $r) {\n                    $combined[$r['label']] = [\n                        'site_views'=>(int)$r['tpage'],\n                        'site_unique'=>(int)$r['tvisit'],\n                        'paste_views'=>0,'paste_unique'=>0\n                    ];\n                }\n                foreach ($paste_page_views as $r) {\n                    if (!isset($combined[$r['label']])) {\n                        $combined[$r['label']] = ['site_views'=>0,'site_unique'=>0,'paste_views'=>0,'paste_unique'=>0];\n                    }\n                    $combined[$r['label']]['paste_views']  = (int)$r['total_views'];\n                    $combined[$r['label']]['paste_unique'] = (int)$r['unique_views'];\n                }\n                krsort($combined);\n                if ($combined) {\n                    foreach ($combined as $label=>$vals) {\n                        echo '<tr>'.\n                             '<td>'.htmlspecialchars($label).'</td>'.\n                             '<td>'.number_format($vals['site_views']).'</td>'.\n                             '<td>'.number_format($vals['site_unique']).'</td>'.\n                             '<td>'.number_format($vals['paste_views']).'</td>'.\n                             '<td>'.number_format($vals['paste_unique']).'</td>'.\n                             '</tr>';\n                    }\n                } else {\n                    echo '<tr><td colspan=\"5\" class=\"text-center\">No views found</td></tr>';\n                }\n                ?>\n              </tbody>\n            </table>\n          </div>\n\n          <nav aria-label=\"Page views navigation\">\n            <ul class=\"pagination justify-content-center\">\n              <?php\n              $view_param = $view_type==='monthly' ? '&view=monthly' : '';\n              if ($page>1) echo \"<li class='page-item'><a class='page-link' href='?page=\".($page-1).\"$view_param&paste_page=$paste_page&sort=$sort'>&laquo;</a></li>\";\n              $start = max(1, $page-5); $end = min($total_pages, $page+5);\n              if ($start>1) {\n                  echo \"<li class='page-item'><a class='page-link' href='?page=1$view_param&paste_page=$paste_page&sort=$sort'>1</a></li>\";\n                  if ($start>2) echo \"<li class='page-item disabled'><span class='page-link'>…</span></li>\";\n              }\n              for ($i=$start;$i<=$end;$i++) {\n                  echo \"<li class='page-item\".($i==$page?' active':'').\"'><a class='page-link' href='?page=$i$view_param&paste_page=$paste_page&sort=$sort'>$i</a></li>\";\n              }\n              if ($end<$total_pages) {\n                  if ($end<$total_pages-1) echo \"<li class='page-item disabled'><span class='page-link'>…</span></li>\";\n                  echo \"<li class='page-item'><a class='page-link' href='?page=$total_pages$view_param&paste_page=$paste_page&sort=$sort'>$total_pages</a></li>\";\n              }\n              if ($page<$total_pages) echo \"<li class='page-item'><a class='page-link' href='?page=\".($page+1).\"$view_param&paste_page=$paste_page&sort=$sort'>&raquo;</a></li>\";\n              ?>\n            </ul>\n          </nav>\n        </div>\n      </div>\n\n      <!-- Per-paste -->\n      <div class=\"card mt-3\">\n        <div class=\"card-body\">\n          <h4 class=\"card-title\">Per-Paste Statistics</h4>\n          <div class=\"table-responsive\">\n            <table class=\"table table-hover table-bordered align-middle\">\n              <thead>\n                <tr>\n                  <th>Paste ID</th>\n                  <th>Title</th>\n                  <th><a href=\"?page=<?php echo $page; ?>&view=<?php echo $view_type; ?>&paste_page=<?php echo $paste_page; ?>&sort=views\" class=\"<?php echo $sort==='views'?'text-primary':''; ?>\">Total Views</a></th>\n                  <th><a href=\"?page=<?php echo $page; ?>&view=<?php echo $view_type; ?>&paste_page=<?php echo $paste_page; ?>&sort=unique\" class=\"<?php echo $sort==='unique'?'text-primary':''; ?>\">Unique Visitors</a></th>\n                </tr>\n              </thead>\n              <tbody>\n                <?php\n                if ($paste_stats) {\n                    foreach ($paste_stats as $r) {\n                        $title = $r['title'] ? htmlspecialchars($r['title'], ENT_QUOTES, 'UTF-8') : 'Untitled';\n                        echo '<tr>'.\n                             '<td>'.(int)$r['paste_id'].'</td>'.\n                             '<td>'.$title.'</td>'.\n                             '<td>'.number_format((int)$r['total_views']).'</td>'.\n                             '<td>'.number_format((int)$r['unique_views']).'</td>'.\n                             '</tr>';\n                    }\n                } else {\n                    echo '<tr><td colspan=\"4\" class=\"text-center\">No paste views found</td></tr>';\n                }\n                ?>\n              </tbody>\n            </table>\n          </div>\n\n          <nav aria-label=\"Paste views navigation\">\n            <ul class=\"pagination justify-content-center\">\n              <?php\n              $view_param = $view_type==='monthly' ? '&view=monthly' : '';\n              if ($paste_page>1) echo \"<li class='page-item'><a class='page-link' href='?page=$page$view_param&paste_page=\".($paste_page-1).\"&sort=$sort'>&laquo;</a></li>\";\n              $pstart = max(1, $paste_page-5); $pend = min($total_paste_pages, $paste_page+5);\n              if ($pstart>1) {\n                  echo \"<li class='page-item'><a class='page-link' href='?page=$page$view_param&paste_page=1&sort=$sort'>1</a></li>\";\n                  if ($pstart>2) echo \"<li class='page-item disabled'><span class='page-link'>…</span></li>\";\n              }\n              for ($i=$pstart;$i<=$pend;$i++) {\n                  echo \"<li class='page-item\".($i==$paste_page?' active':'').\"'><a class='page-link' href='?page=$page$view_param&paste_page=$i&sort=$sort'>$i</a></li>\";\n              }\n              if ($pend<$total_paste_pages) {\n                  if ($pend<$total_paste_pages-1) echo \"<li class='page-item disabled'><span class='page-link'>…</span></li>\";\n                  echo \"<li class='page-item'><a class='page-link' href='?page=$page$view_param&paste_page=$total_paste_pages&sort=$sort'>$total_paste_pages</a></li>\";\n              }\n              if ($paste_page<$total_paste_pages) echo \"<li class='page-item'><a class='page-link' href='?page=$page$view_param&paste_page=\".($paste_page+1).\"&sort=$sort'>&raquo;</a></li>\";\n              ?>\n            </ul>\n          </nav>\n        </div>\n      </div>\n\n      <div class=\"text-muted small mt-3\">\n        Powered by <a class=\"text-decoration-none\" href=\"https://phpaste.sourceforge.io\" target=\"_blank\">Paste</a>\n      </div>\n    </div>\n  </div>\n</div>\n\n<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js\" crossorigin=\"anonymous\"></script>\n<script>\ndocument.addEventListener('DOMContentLoaded', function () {\n  const labels = <?php echo json_encode($chart_labels); ?>;\n  const siteViews   = <?php echo json_encode($chart_views); ?>;\n  const siteUnique  = <?php echo json_encode($chart_unique); ?>;\n  const pasteViews  = <?php echo json_encode($chart_paste_views); ?>;\n  const pasteUnique = <?php echo json_encode($chart_paste_unique); ?>;\n\n  const canvas = document.getElementById('pageViewsChart');\n  const ctx = canvas.getContext('2d');\n\n  const hexToRgba = (hex, a=1) => {\n    const m = hex.replace('#',''); const n = parseInt(m,16);\n    return `rgba(${(n>>16)&255},${(n>>8)&255},${n&255},${a})`;\n  };\n  const makeGrad = (hex, a1=.25, a2=.02) => {\n    const g = ctx.createLinearGradient(0,0,0,canvas.height);\n    g.addColorStop(0, hexToRgba(hex,a1)); g.addColorStop(1, hexToRgba(hex,a2)); return g;\n  };\n  const COLORS = { blue:'#0d6efd', green:'#198754', amber:'#ffc107', red:'#dc3545', grid:'#2b3344', tick:'#9fb1d1', text:'#e6edf3' };\n\n  const crosshair = {\n    id:'crosshair',\n    afterDatasetsDraw(chart){\n      const {ctx, tooltip, chartArea} = chart;\n      if (!tooltip?._active || !tooltip._active.length) return;\n      const {element} = tooltip._active[0];\n      ctx.save(); ctx.strokeStyle='rgba(255,255,255,.15)'; ctx.setLineDash([4,4]); ctx.beginPath();\n      ctx.moveTo(element.x, chartArea.top); ctx.lineTo(element.x, chartArea.bottom); ctx.stroke(); ctx.restore();\n    }\n  };\n\n  const datasets = [\n    { label:'Site Views', data:siteViews, borderColor:COLORS.blue,  backgroundColor:makeGrad(COLORS.blue),  pointRadius:2, pointHoverRadius:4, borderWidth:2, tension:.35, fill:true },\n    { label:'Site Unique Visitors', data:siteUnique, borderColor:COLORS.green, backgroundColor:makeGrad(COLORS.green), pointRadius:2, pointHoverRadius:4, borderWidth:2, tension:.35, fill:true },\n    { label:'Paste Views', data:pasteViews, borderColor:COLORS.amber, backgroundColor:makeGrad(COLORS.amber), pointRadius:2, pointHoverRadius:4, borderWidth:2, tension:.35, fill:true },\n    { label:'Paste Unique Visitors', data:pasteUnique, borderColor:COLORS.red,   backgroundColor:makeGrad(COLORS.red),   pointRadius:2, pointHoverRadius:4, borderWidth:2, tension:.35, fill:true },\n  ];\n\n  const chart = new Chart(ctx, {\n    type:'line',\n    data:{ labels, datasets },\n    options:{\n      responsive:true,\n      animation:{ duration:500, easing:'easeOutQuart' },\n      interaction:{ mode:'index', intersect:false },\n      scales:{\n        y:{ beginAtZero:true, ticks:{ color:COLORS.tick, callback:v=> v>=1e6?(v/1e6).toFixed(1)+'M':v>=1e3?(v/1e3).toFixed(1)+'K':v }, grid:{ color:COLORS.grid } },\n        x:{ ticks:{ color:COLORS.tick }, grid:{ color:'rgba(0,0,0,0)' } }\n      },\n      plugins:{\n        legend:{ labels:{ color:COLORS.text, usePointStyle:true, boxWidth:10 }, position:'top' },\n        tooltip:{ callbacks:{ label:(c)=>` ${c.dataset.label}: ${Number(c.parsed.y??0).toLocaleString()}` } }\n      }\n    },\n    plugins:[crosshair]\n  });\n\n  // toggles\n  const map = { toggleSiteViews:0, toggleSiteUnique:1, togglePasteViews:2, togglePasteUnique:3 };\n  Object.keys(map).forEach(id=>{\n    const idx = map[id]; const el = document.getElementById(id); if (!el) return;\n    el.addEventListener('change', ()=>{ chart.setDatasetVisibility(idx, el.checked); chart.update(); });\n  });\n});\n</script>\n</body>\n</html>\n<?php $pdo = null; ?>\n"
  },
  {
    "path": "admin/tasks.php",
    "content": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\nsession_start();\n\n$ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';\n$date = date('Y-m-d H:i:s'); // Use DATETIME format for database\nrequire_once('../config.php');\n\n// Check session and validate admin\nif (!isset($_SESSION['admin_login']) || !isset($_SESSION['admin_id'])) {\n    error_log(\"tasks.php: Session validation failed - admin_login or admin_id not set. Session: \" . json_encode($_SESSION));\n    header(\"Location: ../index.php\");\n    exit();\n}\n\nif (isset($_GET['logout'])) {\n    unset($_SESSION['admin_login'], $_SESSION['admin_id']);\n    session_destroy();\n    header(\"Location: ../index.php\");\n    exit();\n}\n\ntry {\n    $pdo = new PDO(\"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\", $dbuser, $dbpassword, [\n        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,\n        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\n        PDO::ATTR_EMULATE_PREPARES   => false,\n    ]);\n\n    // Fetch $baseurl from site_info\n    $stmt = $pdo->query(\"SELECT baseurl FROM site_info WHERE id = 1\");\n    $row = $stmt->fetch();\n    $baseurl = $row['baseurl'] ?? '';\n\n    // Validate admin\n    $stmt = $pdo->prepare(\"SELECT id, user FROM admin WHERE id = ?\");\n    $stmt->execute([$_SESSION['admin_id']]);\n    $row = $stmt->fetch();\n    if (!$row || $row['user'] !== $_SESSION['admin_login']) {\n        error_log(\"tasks.php: Admin validation failed - id: {$_SESSION['admin_id']}, user: {$_SESSION['admin_login']}, found: \" . ($row ? json_encode($row) : 'null'));\n        unset($_SESSION['admin_login'], $_SESSION['admin_id']);\n        header(\"Location: ../index.php\");\n        exit();\n    }\n\n    // Log admin activity\n    $stmt = $pdo->query(\"SELECT MAX(id) AS last_id FROM admin_history\");\n    $last_id = $stmt->fetch()['last_id'] ?? null;\n\n    $last_date = null; $last_ip = null;\n    if ($last_id) {\n        $stmt = $pdo->prepare(\"SELECT last_date, ip FROM admin_history WHERE id = ?\");\n        $stmt->execute([$last_id]);\n        $row = $stmt->fetch();\n        $last_date = $row['last_date'] ?? null;\n        $last_ip = $row['ip'] ?? null;\n    }\n    if ($last_ip !== $ip || $last_date !== $date) {\n        $stmt = $pdo->prepare(\"INSERT INTO admin_history (last_date, ip) VALUES (?, ?)\");\n        $stmt->execute([$date, $ip]);\n    }\n\n    // Handle maintenance tasks\n    $msg = '';\n    $msg_type = 'info';\n\n\tif (isset($_GET['expired'])) {\n\t\ttry {\n\t\t\t$pdo->beginTransaction();\n\n\t\t\t// Only fetch rows that could possibly expire (not NULL and not SELF)\n\t\t\t$stmt = $pdo->query(\"\n\t\t\t\tSELECT id, expiry\n\t\t\t\t  FROM pastes\n\t\t\t\t WHERE expiry IS NOT NULL\n\t\t\t\t   AND expiry != 'SELF'\n\t\t\t\");\n\t\t\t$pastes = $stmt->fetchAll(PDO::FETCH_ASSOC);\n\n\t\t\t$now = time();\n\n\t\t\tforeach ($pastes as $row) {\n\t\t\t\t$raw = isset($row['expiry']) ? trim((string)$row['expiry']) : '';\n\t\t\t\t$id  = (int)$row['id'];\n\n\t\t\t\t// Skip empties\n\t\t\t\tif ($raw === '') {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Parse expiry strictly; if parsing fails, DON'T delete\n\t\t\t\t$ts = strtotime($raw);\n\t\t\t\tif ($ts === false) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Delete only if the parsed time is actually in the past\n\t\t\t\tif ($ts < $now) {\n\t\t\t\t\t$pdo->prepare(\"DELETE FROM paste_views WHERE paste_id = ?\")->execute([$id]);\n\t\t\t\t\t$pdo->prepare(\"DELETE FROM pastes WHERE id = ?\")->execute([$id]);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$pdo->commit();\n\t\t\t$msg = 'All expired pastes and their view logs have been deleted.';\n\t\t\t$msg_type = 'success';\n\t\t} catch (PDOException $e) {\n\t\t\t$pdo->rollBack();\n\t\t\t$msg = 'Error deleting expired pastes: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n\t\t\t$msg_type = 'danger';\n\t\t}\n\t}\n\n    if (isset($_GET['all_pastes'])) {\n        try {\n            $pdo->beginTransaction();\n            $pdo->query(\"DELETE FROM paste_views\");\n            $pdo->query(\"DELETE FROM pastes\");\n            $pdo->commit();\n            $msg = 'All pastes and their view logs have been deleted.';\n            $msg_type = 'success';\n        } catch (PDOException $e) {\n            $pdo->rollBack();\n            $msg = 'Error deleting all pastes: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n            $msg_type = 'danger';\n        }\n    }\n\n    if (isset($_GET['not_verified'])) {\n        try {\n            $pdo->beginTransaction();\n            // delete views for pastes belonging to unverified users, then pastes, then users\n            $stmt = $pdo->query(\"SELECT username FROM users WHERE verified = '0'\");\n            $usernames = $stmt->fetchAll(PDO::FETCH_COLUMN);\n            foreach ($usernames as $u) {\n                $pdo->prepare(\"DELETE pv FROM paste_views pv INNER JOIN pastes p ON pv.paste_id=p.id WHERE p.member = ?\")->execute([$u]);\n                $pdo->prepare(\"DELETE FROM pastes WHERE member = ?\")->execute([$u]);\n            }\n            $pdo->prepare(\"DELETE FROM users WHERE verified = '0'\")->execute();\n            $pdo->commit();\n            $msg = 'All unverified accounts and their pastes have been deleted.';\n            $msg_type = 'success';\n        } catch (PDOException $e) {\n            $pdo->rollBack();\n            $msg = 'Error deleting unverified accounts: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n            $msg_type = 'danger';\n        }\n    }\n\n    if (isset($_GET['admin_history'])) {\n        try {\n            $pdo->query(\"DELETE FROM admin_history\");\n            $msg = 'Admin history has been cleared.';\n            $msg_type = 'success';\n        } catch (PDOException $e) {\n            $msg = 'Error clearing admin history: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n            $msg_type = 'danger';\n        }\n    }\n\n    if (isset($_GET['clear_stats'])) {\n        try {\n            $pdo->beginTransaction();\n            $pdo->query(\"DELETE FROM page_view\");\n            $pdo->query(\"DELETE FROM visitor_ips\");\n            $pdo->commit();\n            $msg = 'Statistics and visitor IPs have been cleared.';\n            $msg_type = 'success';\n        } catch (PDOException $e) {\n            $pdo->rollBack();\n            $msg = 'Error clearing statistics and visitor IPs: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n            $msg_type = 'danger';\n        }\n    }\n\n    if (isset($_GET['clear_view_logs'])) {\n        try {\n            $pdo->beginTransaction();\n            $pdo->query(\"DELETE FROM paste_views\");\n            $pdo->query(\"DELETE FROM visitor_ips\");\n            $pdo->commit();\n            $msg = 'Paste view logs and visitor IPs have been cleared.';\n            $msg_type = 'success';\n        } catch (PDOException $e) {\n            $pdo->rollBack();\n            $msg = 'Error clearing paste view logs and visitor IPs: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n            $msg_type = 'danger';\n        }\n    }\n\n    if (isset($_GET['clear_ipbans'])) {\n        try {\n            $pdo->query(\"DELETE FROM ban_user\");\n            $msg = 'All IP bans have been cleared.';\n            $msg_type = 'success';\n        } catch (PDOException $e) {\n            $msg = 'Error clearing IP bans: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n            $msg_type = 'danger';\n        }\n    }\n\n    if (isset($_GET['clear_pages'])) {\n        try {\n            $pdo->query(\"DELETE FROM pages\");\n            $msg = 'All pages have been deleted.';\n            $msg_type = 'success';\n        } catch (PDOException $e) {\n            $msg = 'Error deleting all pages: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n            $msg_type = 'danger';\n        }\n    }\n\n    if (isset($_GET['delete_all_users'])) {\n        try {\n            $pdo->beginTransaction();\n            $pdo->query(\"DELETE FROM paste_views\");\n            $pdo->query(\"DELETE FROM pastes\");\n            $pdo->query(\"DELETE FROM users\");\n            $pdo->commit();\n            $msg = 'All users and their pastes have been deleted.';\n            $msg_type = 'success';\n        } catch (PDOException $e) {\n            $pdo->rollBack();\n            $msg = 'Error deleting users: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n            $msg_type = 'danger';\n        }\n    }\n\n    if (isset($_GET['clear_mail_logs'])) {\n        try {\n            $pdo->prepare(\"UPDATE users SET verification_code = NULL, reset_code = NULL, reset_expiry = NULL WHERE verification_code IS NOT NULL OR reset_code IS NOT NULL\")->execute();\n            $msg = 'All mail logs have been cleared.';\n            $msg_type = 'success';\n        } catch (PDOException $e) {\n            $msg = 'Error clearing mail logs: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n            $msg_type = 'danger';\n        }\n    }\n} catch (PDOException $e) {\n    die(\"Unable to connect to database: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));\n}\n?>\n<!DOCTYPE html>\n<html lang=\"en\" data-bs-theme=\"dark\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<title>Paste - Tasks</title>\n<link rel=\"shortcut icon\" href=\"favicon.ico\">\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\" rel=\"stylesheet\">\n<style>\n  :root{\n    --bg:#0f1115; --card:#141821; --border:#1f2633; --accent:#0d6efd;\n  }\n  body{background:var(--bg);color:#e6edf3}\n  .navbar{background:#121826!important;position:sticky;top:0;z-index:1030}\n  .btn-soft{background:#101521;border:1px solid var(--border);color:#dbe5f5}\n  .btn-soft:hover{background:#0e1422;color:#fff}\n  .card{background:var(--card);border:1px solid var(--border);border-radius:12px}\n  .table{color:#e6edf3}\n  .table thead th{background:#101521;color:#c6d4f0;border-color:var(--border)}\n  .table td,.table th{border-color:var(--border)}\n  .sidebar-desktop{\n    position:sticky; top:1rem; background:#121826;border:1px solid var(--border);\n    border-radius:12px;padding:12px\n  }\n  .sidebar-desktop .list-group-item{\n    background:transparent;color:#dbe5f5;border:0;border-radius:10px;padding:.65rem .8rem;\n  }\n  .sidebar-desktop .list-group-item:hover{background:#0e1422}\n  .sidebar-desktop .list-group-item.active{background:#0d6efd;color:#fff}\n  .offcanvas-nav{width:280px;background:#0f1523;color:#dbe5f5}\n  .offcanvas-nav .list-group-item{background:transparent;border:0;color:#dbe5f5}\n  .offcanvas-nav .list-group-item:hover{background:#0e1422}\n</style>\n<script>\ndocument.addEventListener('DOMContentLoaded', () => {\n  const confirms = {\n    'task-expired'          : 'Delete ALL expired pastes?',\n    'task-all-pastes'       : 'Delete ALL pastes? This cannot be undone.',\n    'task-not-verified'     : 'Delete ALL unverified accounts and their pastes?',\n    'task-admin-history'    : 'Clear admin history?',\n    'task-clear-stats'      : 'Clear ALL statistics and visitor IPs? This cannot be undone.',\n    'task-clear-view-logs'  : 'Clear ALL paste view logs and visitor IPs? This cannot be undone.',\n    'task-clear-ipbans'     : 'Clear ALL IP bans?',\n    'task-clear-pages'      : 'Delete ALL pages? This cannot be undone.',\n    'task-delete-all-users' : 'Delete ALL users and their pastes? This cannot be undone.',\n    'task-clear-mail-logs'  : 'Clear ALL mail logs?'\n  };\n  document.addEventListener('click', function(e){\n    const a = e.target.closest('a[class*=\"task-\"]');\n    if (!a) return;\n    const cls = Object.keys(confirms).find(k => a.classList.contains(k));\n    if (!cls) return;\n    e.preventDefault();\n    if (confirm(confirms[cls])) window.location.href = a.href;\n  });\n});\n</script>\n</head>\n<body>\n\n<nav class=\"navbar navbar-expand-lg navbar-dark\">\n  <div class=\"container-fluid\">\n    <div class=\"d-flex align-items-center gap-2\">\n      <button class=\"btn btn-soft d-lg-none\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#navOffcanvas\" aria-controls=\"navOffcanvas\">\n        <i class=\"bi bi-list\"></i>\n      </button>\n      <a class=\"navbar-brand\" href=\"../\">Paste</a>\n    </div>\n    <button class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNav\">\n      <span class=\"navbar-toggler-icon\"></span>\n    </button>\n    <div class=\"collapse navbar-collapse justify-content-end\" id=\"navbarNav\">\n      <ul class=\"navbar-nav\">\n        <li class=\"nav-item dropdown\">\n          <a class=\"nav-link dropdown-toggle\" href=\"#\" data-bs-toggle=\"dropdown\">\n            <?php echo htmlspecialchars($_SESSION['admin_login'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\n          </a>\n          <ul class=\"dropdown-menu dropdown-menu-end\">\n            <li><a class=\"dropdown-item\" href=\"admin.php\">Settings</a></li>\n            <li><a class=\"dropdown-item\" href=\"?logout\">Logout</a></li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n  </div>\n</nav>\n\n<!-- Mobile offcanvas nav -->\n<div class=\"offcanvas offcanvas-start offcanvas-nav\" tabindex=\"-1\" id=\"navOffcanvas\">\n  <div class=\"offcanvas-header\">\n    <h5 class=\"offcanvas-title\">Admin Menu</h5>\n    <button type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\"></button>\n  </div>\n  <div class=\"offcanvas-body\">\n    <div class=\"list-group\">\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n      <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n    </div>\n  </div>\n</div>\n\n<div class=\"container-fluid my-2\">\n  <div class=\"row g-2\">\n    <!-- Desktop sidebar -->\n    <div class=\"col-lg-2 d-none d-lg-block\">\n      <div class=\"sidebar-desktop\">\n        <div class=\"list-group\">\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/dashboard.php'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/configuration.php'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/interface.php'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/admin.php'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pastes.php'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/users.php'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ipbans.php'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/stats.php'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ads.php'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pages.php'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/sitemap.php'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n          <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'admin/tasks.php'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"col-lg-10\">\n      <div class=\"card\">\n        <div class=\"card-body\">\n          <h4 class=\"card-title\">Maintenance Tasks</h4>\n          <?php if (!empty($msg)): ?>\n            <div class=\"alert alert-<?php echo htmlspecialchars($msg_type, ENT_QUOTES, 'UTF-8'); ?> alert-dismissible fade show\" role=\"alert\">\n              <?php echo htmlspecialchars($msg, ENT_QUOTES, 'UTF-8'); ?>\n              <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\n            </div>\n          <?php endif; ?>\n\n          <div class=\"table-responsive\">\n            <table class=\"table table-hover table-bordered align-middle\">\n              <thead>\n                <tr><th>Task</th><th>Action</th></tr>\n              </thead>\n              <tbody>\n                <tr><td>Delete All Expired Pastes</td><td><a href=\"?expired\" class=\"btn btn-secondary btn-sm task-expired\">Run</a></td></tr>\n                <tr><td>Delete All Pastes</td><td><a href=\"?all_pastes\" class=\"btn btn-danger btn-sm task-all-pastes\">Run</a></td></tr>\n                <tr><td>Delete Unverified Accounts</td><td><a href=\"?not_verified\" class=\"btn btn-warning btn-sm task-not-verified\">Run</a></td></tr>\n                <tr><td>Clear Admin History</td><td><a href=\"?admin_history\" class=\"btn btn-info btn-sm task-admin-history\">Run</a></td></tr>\n                <tr><td>Clear Statistics and Visitor IPs</td><td><a href=\"?clear_stats\" class=\"btn btn-info btn-sm task-clear-stats\">Run</a></td></tr>\n                <tr><td>Clear Paste View Logs and Visitor IPs</td><td><a href=\"?clear_view_logs\" class=\"btn btn-info btn-sm task-clear-view-logs\">Run</a></td></tr>\n                <tr><td>Clear All IP Bans</td><td><a href=\"?clear_ipbans\" class=\"btn btn-info btn-sm task-clear-ipbans\">Run</a></td></tr>\n                <tr><td>Delete All Pages</td><td><a href=\"?clear_pages\" class=\"btn btn-danger btn-sm task-clear-pages\">Run</a></td></tr>\n                <tr><td>Delete All Users</td><td><a href=\"?delete_all_users\" class=\"btn btn-danger btn-sm task-delete-all-users\">Run</a></td></tr>\n                <tr><td>Clear All Mail Logs</td><td><a href=\"?clear_mail_logs\" class=\"btn btn-info btn-sm task-clear-mail-logs\">Run</a></td></tr>\n              </tbody>\n            </table>\n          </div>\n\n        </div>\n      </div>\n\n      <div class=\"text-muted small mt-3\">\n        Powered by <a class=\"text-decoration-none\" href=\"https://phpaste.sourceforge.io\" target=\"_blank\">Paste</a>\n      </div>\n    </div>\n  </div>\n</div>\n\n<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js\" crossorigin=\"anonymous\"></script>\n</body>\n</html>\n<?php $pdo = null; ?>\n"
  },
  {
    "path": "admin/test_mail.php",
    "content": "<?php\r\n/*\r\n * Paste Admin https://github.com/boxlabss/PASTE\r\n * demo: https://paste.boxlabs.uk/\r\n *\r\n * https://phpaste.sourceforge.io/\r\n *\r\n * This program is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 3\r\n * of the License, or (at your option) any later version.\r\n * \r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License in LICENCE for more details.\r\n */\r\nrequire_once '../includes/mail.php';\r\n$result = send_mail(\r\n    'test@example.com', // Replace with a valid recipient\r\n    'Test Email from Paste',\r\n    '<h1>Test Email</h1><p>This is a test email from Paste.</p>'\r\n);\r\necho $result;\r\n?>"
  },
  {
    "path": "admin/users.php",
    "content": "<?php\n/*\n * Paste Admin https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\nsession_start();\n\n// Guard: admin session\nif (!isset($_SESSION['admin_login']) || !isset($_SESSION['admin_id'])) {\n    error_log(\"users.php: Session validation failed - admin_login or admin_id not set. Session: \" . json_encode($_SESSION));\n    header(\"Location: ../index.php\");\n    exit();\n}\n\n$date = date('Y-m-d H:i:s');\n$ip   = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';\n\nrequire_once('../config.php');\n\ntry {\n    $pdo = new PDO(\"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\", $dbuser, $dbpassword, [\n        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,\n        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\n        PDO::ATTR_EMULATE_PREPARES   => false,\n    ]);\n} catch (PDOException $e) {\n    die(\"Unable to connect to database: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));\n}\n\n/* Admin history (lightweight audit) */\ntry {\n    $stmt = $pdo->query(\"SELECT MAX(id) AS last_id FROM admin_history\");\n    $last_id = $stmt->fetch()['last_id'] ?? null;\n\n    $last_ip = $last_date = null;\n    if ($last_id) {\n        $stmt = $pdo->prepare(\"SELECT last_date, ip FROM admin_history WHERE id = ?\");\n        $stmt->execute([$last_id]);\n        $row = $stmt->fetch();\n        $last_date = $row['last_date'] ?? null;\n        $last_ip   = $row['ip'] ?? null;\n    }\n    if ($last_ip !== $ip || $last_date !== $date) {\n        $stmt = $pdo->prepare(\"INSERT INTO admin_history (last_date, ip) VALUES (?, ?)\");\n        $stmt->execute([$date, $ip]);\n    }\n} catch (PDOException $e) {\n    // non-fatal\n}\n\n/* Base URL for sidebar links */\ntry {\n    $st = $pdo->query(\"SELECT baseurl FROM site_info WHERE id = 1\");\n    $baseurl = rtrim((string)($st->fetch()['baseurl'] ?? ''), '/').'/';\n} catch (PDOException $e) {\n    $baseurl = '../';\n}\n\n/* Messages */\n$msg = '';\n\n/* Actions (GET) — keep existing behavior + add Verify */\nif (isset($_GET['delete'])) {\n    $delid = (int)filter_var($_GET['delete'], FILTER_SANITIZE_NUMBER_INT);\n    try {\n        $stmt = $pdo->prepare(\"DELETE FROM users WHERE id = ?\");\n        $stmt->execute([$delid]);\n        $msg = '<div class=\"alert alert-success text-center\">User deleted successfully</div>';\n    } catch (PDOException $e) {\n        $msg = '<div class=\"alert alert-danger text-center\">Error deleting user: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';\n    }\n}\n\nif (isset($_GET['ban'])) {\n    $ban_id = (int)filter_var($_GET['ban'], FILTER_SANITIZE_NUMBER_INT);\n    try {\n        $stmt = $pdo->prepare(\"UPDATE users SET verified = '2' WHERE id = ?\");\n        $stmt->execute([$ban_id]);\n        $msg = '<div class=\"alert alert-success text-center\">User banned successfully</div>';\n    } catch (PDOException $e) {\n        $msg = '<div class=\"alert alert-danger text-center\">Error banning user: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';\n    }\n}\n\nif (isset($_GET['unban'])) {\n    $unban_id = (int)filter_var($_GET['unban'], FILTER_SANITIZE_NUMBER_INT);\n    try {\n        $stmt = $pdo->prepare(\"UPDATE users SET verified = '1' WHERE id = ?\");\n        $stmt->execute([$unban_id]);\n        $msg = '<div class=\"alert alert-success text-center\">User unbanned successfully</div>';\n    } catch (PDOException $e) {\n        $msg = '<div class=\"alert alert-danger text-center\">Error unbanning user: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';\n    }\n}\n\n/* NEW: verify action (for unverified users) */\nif (isset($_GET['verify'])) {\n    $verify_id = (int)filter_var($_GET['verify'], FILTER_SANITIZE_NUMBER_INT);\n    try {\n        $stmt = $pdo->prepare(\"UPDATE users SET verified = '1' WHERE id = ?\");\n        $stmt->execute([$verify_id]);\n        $msg = '<div class=\"alert alert-success text-center\">User verified successfully</div>';\n    } catch (PDOException $e) {\n        $msg = '<div class=\"alert alert-danger text-center\">Error verifying user: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';\n    }\n}\n\n/* Filters / pagination */\n$per_page = 20;\n$page     = isset($_GET['page']) ? max(1, (int)filter_var($_GET['page'], FILTER_SANITIZE_NUMBER_INT)) : 1;\n$offset   = ($page - 1) * $per_page;\n\n$status_filter = isset($_GET['status']) ? (string)$_GET['status'] : 'all';\n\n$where  = '';\n$params = [];\nif ($status_filter !== 'all') {\n    $where = \" WHERE verified = ?\";\n    $params[] = $status_filter;\n}\n\n/* Count */\ntry {\n    $stmt = $pdo->prepare(\"SELECT COUNT(*) AS total FROM users\".$where);\n    $stmt->execute($params);\n    $total_users = (int)($stmt->fetch()['total'] ?? 0);\n} catch (PDOException $e) {\n    $total_users = 0;\n}\n$total_pages = max(1, (int)ceil($total_users / $per_page));\n\n/* Page data */\n$per_page_safe = (int)$per_page;\n$offset_safe   = (int)$offset;\n$query = \"\n    SELECT id, username, email_id, full_name, platform, verified, date, ip, oauth_uid\n      FROM users\n      $where\n  ORDER BY id DESC\n     LIMIT $per_page_safe OFFSET $offset_safe\n\";\ntry {\n    $stmt = $pdo->prepare($query);\n    $stmt->execute($params);\n    $users = $stmt->fetchAll();\n} catch (PDOException $e) {\n    $msg = '<div class=\"alert alert-danger text-center\">Error fetching users: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</div>';\n    $users = [];\n}\n\n/* Details */\n$detailRow = null;\nif (isset($_GET['details'])) {\n    $detail_id = (int)filter_var($_GET['details'], FILTER_SANITIZE_NUMBER_INT);\n    $st = $pdo->prepare(\"SELECT * FROM users WHERE id = ?\");\n    $st->execute([$detail_id]);\n    $detailRow = $st->fetch() ?: null;\n}\n\n/* Logout */\nif (isset($_GET['logout'])) {\n    $_SESSION = [];\n    session_destroy();\n    header('Location: index.php');\n    exit();\n}\n?>\n<!DOCTYPE html>\n<html lang=\"en\" data-bs-theme=\"dark\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n<title>Paste - Users</title>\n<link rel=\"shortcut icon\" href=\"favicon.ico\">\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" crossorigin=\"anonymous\">\n<link href=\"https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css\" rel=\"stylesheet\">\n\n<style>\n  :root{\n    --bg:#0f1115;\n    --card:#141821;\n    --muted:#7f8da3;\n    --border:#1f2633;\n    --accent:#0d6efd;\n  }\n  body{background:var(--bg);color:#e6edf3;}\n  .navbar{background:#121826!important;position:sticky;top:0;z-index:1030}\n  .navbar .navbar-brand{font-weight:600}\n  .btn-soft{background:#101521;border:1px solid var(--border);color:#dbe5f5}\n  .btn-soft:hover{background:#0e1422;color:#fff}\n\n  /* Desktop sidebar (matches pages.php) */\n  .sidebar-desktop{\n    position:sticky; top:1rem;\n    background:#121826;border:1px solid var(--border);\n    border-radius:12px; padding:12px;\n  }\n  .sidebar-desktop .list-group-item{\n    background:transparent;color:#dbe5f5;border:0;border-radius:10px;padding:.65rem .8rem;\n  }\n  .sidebar-desktop .list-group-item:hover{background:#0e1422}\n  .sidebar-desktop .list-group-item.active{background:#0d6efd;color:#fff}\n\n  .card{background:var(--card);border:1px solid var(--border);border-radius:12px}\n  .form-control,.form-select{background:#0e1422;border-color:var(--border);color:#e6edf3}\n  .form-control:focus,.form-select:focus{border-color:var(--accent);box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}\n  .table{color:#e6edf3}\n  .table thead th{background:#101521;color:#c6d4f0;border-color:var(--border)}\n  .table td,.table th{border-color:var(--border)}\n  .pagination .page-link{color:#c6d4f0;background:#101521;border-color:var(--border)}\n  .pagination .page-item.active .page-link{background:#0d6efd;border-color:#0d6efd}\n\n  /* Offcanvas for mobile */\n  .offcanvas-nav{width:280px;background:#0f1523;color:#dbe5f5}\n  .offcanvas-nav .list-group-item{background:transparent;border:0;color:#dbe5f5}\n  .offcanvas-nav .list-group-item:hover{background:#0e1422}\n\n  /* Action buttons row */\n  .btn-group-xs > .btn { padding: .25rem .5rem; font-size:.8rem; }\n</style>\n</head>\n<body>\n\n<nav class=\"navbar navbar-expand-lg navbar-dark\">\n  <div class=\"container-fluid\">\n    <div class=\"d-flex align-items-center gap-2\">\n      <!-- Mobile: open offcanvas -->\n      <button class=\"btn btn-soft d-lg-none\" data-bs-toggle=\"offcanvas\" data-bs-target=\"#navOffcanvas\" aria-controls=\"navOffcanvas\">\n        <i class=\"bi bi-list\"></i>\n      </button>\n      <a class=\"navbar-brand\" href=\"../\">Paste</a>\n    </div>\n    <button class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNav\">\n      <span class=\"navbar-toggler-icon\"></span>\n    </button>\n    <div class=\"collapse navbar-collapse justify-content-end\" id=\"navbarNav\">\n      <ul class=\"navbar-nav\">\n        <li class=\"nav-item dropdown\">\n          <a class=\"nav-link dropdown-toggle\" href=\"#\" data-bs-toggle=\"dropdown\">\n            <?php echo htmlspecialchars($_SESSION['admin_login']); ?>\n          </a>\n          <ul class=\"dropdown-menu dropdown-menu-end\">\n            <li><a class=\"dropdown-item\" href=\"admin.php\">Settings</a></li>\n            <li><a class=\"dropdown-item\" href=\"?logout\">Logout</a></li>\n          </ul>\n        </li>\n      </ul>\n    </div>\n  </div>\n</nav>\n\n<!-- Mobile offcanvas nav -->\n<div class=\"offcanvas offcanvas-start offcanvas-nav\" tabindex=\"-1\" id=\"navOffcanvas\">\n  <div class=\"offcanvas-header\">\n    <h5 class=\"offcanvas-title\">Admin Menu</h5>\n    <button class=\"btn-close btn-close-white\" data-bs-dismiss=\"offcanvas\" aria-label=\"Close\"></button>\n  </div>\n  <div class=\"offcanvas-body\">\n    <div class=\"list-group\">\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/dashboard.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/configuration.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/interface.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/admin.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pastes.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n      <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'admin/users.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ipbans.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/stats.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ads.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pages.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/sitemap.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n      <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/tasks.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n    </div>\n  </div>\n</div>\n\n<div class=\"container-fluid my-2\">\n  <div class=\"row g-2\">\n    <!-- Desktop sidebar -->\n    <div class=\"col-lg-2 d-none d-lg-block\">\n      <div class=\"sidebar-desktop\">\n        <div class=\"list-group\">\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/dashboard.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-house me-2\"></i>Dashboard</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/configuration.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-gear me-2\"></i>Configuration</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/interface.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-eye me-2\"></i>Interface</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/admin.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-person me-2\"></i>Admin Account</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pastes.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-clipboard me-2\"></i>Pastes</a>\n          <a class=\"list-group-item active\" href=\"<?php echo htmlspecialchars($baseurl.'admin/users.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-people me-2\"></i>Users</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ipbans.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-ban me-2\"></i>IP Bans</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/stats.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-graph-up me-2\"></i>Statistics</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/ads.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-currency-pound me-2\"></i>Ads</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/pages.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-file-earmark me-2\"></i>Pages</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/sitemap.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-map me-2\"></i>Sitemap</a>\n          <a class=\"list-group-item\" href=\"<?php echo htmlspecialchars($baseurl.'admin/tasks.php', ENT_QUOTES, 'UTF-8'); ?>\"><i class=\"bi bi-list-task me-2\"></i>Tasks</a>\n        </div>\n      </div>\n    </div>\n\n    <div class=\"col-lg-10\">\n      <?php if ($msg) echo $msg; ?>\n\n      <?php if ($detailRow): ?>\n        <div class=\"card mb-3\">\n          <div class=\"card-body\">\n            <h4 class=\"card-title mb-3\"><?php echo htmlspecialchars($detailRow['username']); ?> — Details</h4>\n            <div class=\"table-responsive\">\n              <table class=\"table table-striped\">\n                <tbody>\n                  <tr><td>Username</td><td><?php echo htmlspecialchars($detailRow['username']); ?></td></tr>\n                  <tr><td>Email</td><td><?php echo htmlspecialchars($detailRow['email_id']); ?></td></tr>\n                  <tr><td>Full name</td><td><?php echo htmlspecialchars($detailRow['full_name']); ?></td></tr>\n                  <tr><td>Platform</td><td><?php echo htmlspecialchars(trim((string)$detailRow['platform'])); ?></td></tr>\n                  <tr><td>OAUTH ID</td><td><?php echo $detailRow['oauth_uid']=='0'?'None':htmlspecialchars($detailRow['oauth_uid']); ?></td></tr>\n                  <tr><td>Status</td><td>\n                    <?php\n                      echo match ((string)$detailRow['verified']) {\n                        '0' => '<span class=\"badge bg-secondary\">Unverified</span>',\n                        '1' => '<span class=\"badge bg-success\">Verified</span>',\n                        '2' => '<span class=\"badge bg-danger\">Banned</span>',\n                        default => '<span class=\"badge bg-dark\">Unknown</span>'\n                      };\n                    ?>\n                  </td></tr>\n                  <tr><td>Registered</td><td><?php echo htmlspecialchars($detailRow['date']); ?></td></tr>\n                  <tr><td>IP</td><td><?php echo htmlspecialchars($detailRow['ip']); ?></td></tr>\n                </tbody>\n              </table>\n            </div>\n            <a class=\"btn btn-soft btn-sm\" href=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>\"><i class=\"bi bi-arrow-left\"></i> Back</a>\n          </div>\n        </div>\n\n      <?php else: ?>\n        <div class=\"card mb-3\">\n          <div class=\"card-body\">\n            <h4 class=\"card-title\">Manage Users</h4>\n            <form class=\"row g-2 align-items-end\" method=\"get\" action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>\">\n              <div class=\"col-md-4\">\n                <label class=\"form-label\">Status</label>\n                <select class=\"form-select\" name=\"status\" onchange=\"this.form.submit()\">\n                  <option value=\"all\" <?php echo $status_filter==='all'?'selected':''; ?>>All</option>\n                  <option value=\"0\" <?php echo $status_filter==='0'?'selected':''; ?>>Unverified</option>\n                  <option value=\"1\" <?php echo $status_filter==='1'?'selected':''; ?>>Verified</option>\n                  <option value=\"2\" <?php echo $status_filter==='2'?'selected':''; ?>>Banned</option>\n                </select>\n              </div>\n              <div class=\"col-md-2\">\n                <a class=\"btn btn-soft w-100\" href=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>\"><i class=\"bi bi-x-circle\"></i> Reset</a>\n              </div>\n            </form>\n          </div>\n        </div>\n\n        <div class=\"card\">\n          <div class=\"card-body\">\n            <div class=\"table-responsive\">\n              <table class=\"table table-hover table-bordered align-middle\">\n                <thead>\n                  <tr>\n                    <th>Username</th>\n                    <th>Email</th>\n                    <th>Registered</th>\n                    <th>Platform</th>\n                    <th>OAUTH</th>\n                    <th>Status</th>\n                    <th class=\"text-center\">Actions</th>\n                  </tr>\n                </thead>\n                <tbody>\n                <?php if ($users): foreach ($users as $u):\n                  $statusBadge = match ((string)$u['verified']) {\n                    '0' => '<span class=\"badge bg-secondary\">Unverified</span>',\n                    '1' => '<span class=\"badge bg-success\">Verified</span>',\n                    '2' => '<span class=\"badge bg-danger\">Banned</span>',\n                    default => '<span class=\"badge bg-dark\">Unknown</span>'\n                  };\n                  $oauth = $u['oauth_uid']=='0'?'None':htmlspecialchars($u['oauth_uid']);\n                  $id    = (int)$u['id'];\n                  $isBanned = ((string)$u['verified'] === '2');\n                  $isUnverified = ((string)$u['verified'] === '0');\n\n                  $banHref  = $isBanned ? ('?unban='.$id.'&page='.$page.'&status='.rawurlencode($status_filter))\n                                        : ('?ban='.$id.'&page='.$page.'&status='.rawurlencode($status_filter));\n                  $banLabel = $isBanned ? 'Unban' : 'Ban';\n\n                  $verifyHref = '?verify='.$id.'&page='.$page.'&status='.rawurlencode($status_filter);\n                ?>\n                  <tr>\n                    <td><?php echo htmlspecialchars($u['username']); ?></td>\n                    <td><?php echo htmlspecialchars($u['email_id']); ?></td>\n                    <td><?php echo htmlspecialchars($u['date']); ?></td>\n                    <td><?php echo htmlspecialchars(trim((string)$u['platform'])); ?></td>\n                    <td><?php echo $oauth; ?></td>\n                    <td><?php echo $statusBadge; ?></td>\n                    <td class=\"text-center\">\n                      <div class=\"btn-group btn-group-xs\" role=\"group\" aria-label=\"User actions\">\n                        <a class=\"btn btn-soft btn-sm\" href=\"?details=<?php echo $id; ?>\" title=\"Details\"><i class=\"bi bi-person-badge\"></i></a>\n\n                        <?php if ($isUnverified): ?>\n                          <a class=\"btn btn-success btn-sm verify-user\" href=\"<?php echo htmlspecialchars($verifyHref, ENT_QUOTES, 'UTF-8'); ?>\" title=\"Verify user\">\n                            <i class=\"bi bi-check2-circle\"></i>\n                          </a>\n                        <?php endif; ?>\n\n                        <a class=\"btn btn-secondary btn-sm ban-user\" href=\"<?php echo htmlspecialchars($banHref, ENT_QUOTES, 'UTF-8'); ?>\" title=\"<?php echo $banLabel; ?>\">\n                          <i class=\"bi <?php echo $isBanned ? 'bi-unlock' : 'bi-slash-circle'; ?>\"></i>\n                        </a>\n\n                        <a class=\"btn btn-danger btn-sm delete-user\" href=\"?delete=<?php echo $id; ?>&page=<?php echo $page; ?>&status=<?php echo htmlspecialchars($status_filter, ENT_QUOTES, 'UTF-8'); ?>\" title=\"Delete\">\n                          <i class=\"bi bi-trash\"></i>\n                        </a>\n                      </div>\n                    </td>\n                  </tr>\n                <?php endforeach; else: ?>\n                  <tr><td colspan=\"7\" class=\"text-center\">No users found</td></tr>\n                <?php endif; ?>\n                </tbody>\n              </table>\n            </div>\n\n            <nav aria-label=\"Page navigation\">\n              <ul class=\"pagination justify-content-center\">\n                <?php\n                  $params = [];\n                  if ($status_filter !== 'all') $params['status'] = $status_filter;\n                  $qs = function($arr){ return $arr ? ('?'.http_build_query($arr)) : '?'; };\n\n                  $prev = $params; $prev['page'] = max(1, $page-1);\n                  $next = $params; $next['page'] = min($total_pages, $page+1);\n\n                  echo '<li class=\"page-item'.($page<=1?' disabled':'').'\"><a class=\"page-link\" href=\"'.($page<=1?'#':htmlspecialchars($qs($prev))).'\">&laquo;</a></li>';\n\n                  $start = max(1, $page-3); $end = min($total_pages, $page+3);\n                  for ($i=$start; $i<=$end; $i++) {\n                    $p = $params; $p['page']=$i;\n                    echo '<li class=\"page-item'.($i==$page?' active':'').'\"><a class=\"page-link\" href=\"'.htmlspecialchars($qs($p)).'\">'.$i.'</a></li>';\n                  }\n\n                  echo '<li class=\"page-item'.($page>=$total_pages?' disabled':'').'\"><a class=\"page-link\" href=\"'.($page>= $total_pages?'#':htmlspecialchars($qs($next))).'\">&raquo;</a></li>';\n                ?>\n              </ul>\n            </nav>\n          </div>\n        </div>\n      <?php endif; ?>\n\n      <div class=\"text-muted small mt-3\">\n        Powered by <a class=\"text-decoration-none\" href=\"https://phpaste.sourceforge.io\" target=\"_blank\" rel=\"noopener\">Paste</a>\n      </div>\n    </div>\n  </div>\n</div>\n\n<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js\" crossorigin=\"anonymous\"></script>\n<script>\n  // Confirm handlers (Delete / Ban-Unban / Verify)\n  document.addEventListener('click', function(e){\n    const del = e.target.closest('a.delete-user');\n    if (del) {\n      e.preventDefault();\n      if (confirm('Delete this user? This cannot be undone.')) window.location.href = del.href;\n      return;\n    }\n    const ban = e.target.closest('a.ban-user');\n    if (ban) {\n      e.preventDefault();\n      const action = ban.href.includes('unban=') ? 'unban' : 'ban';\n      if (confirm('Are you sure you want to ' + action + ' this user?')) window.location.href = ban.href;\n      return;\n    }\n    const verify = e.target.closest('a.verify-user');\n    if (verify) {\n      e.preventDefault();\n      if (confirm('Verify this user?')) window.location.href = verify.href;\n      return;\n    }\n  });\n</script>\n</body>\n</html>\n<?php $pdo = null; ?>\n"
  },
  {
    "path": "archive.php",
    "content": "<?php\n/*\n * Paste 3 <old repo: https://github.com/jordansamuel/PASTE>  new: https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n * https://phpaste.sourceforge.io/  -  https://sourceforge.net/projects/phpaste/\n *\n * Licensed under GNU General Public License, version 3 or later.\n * See LICENCE for details.\n */\nrequire_once 'includes/session.php';\n\nrequire_once('config.php');\nrequire_once('includes/functions.php');\n\n// Disable non-GET requests\nif ($_SERVER['REQUEST_METHOD'] != 'GET') {\n    http_response_code(405);\n    exit('405 Method Not Allowed.');\n}\n\n$date = date('Y-m-d H:i:s'); // Use DATETIME format for database\n$ip = $_SERVER['REMOTE_ADDR'];\n\n// Database Connection\nglobal $pdo;\n\ntry {\n    // Get site info\n    $stmt = $pdo->query(\"SELECT * FROM site_info WHERE id = '1'\");\n    $row = $stmt->fetch();\n    $title = trim($row['title']);\n    $des = trim($row['des']);\n    $baseurl = trim($row['baseurl']);\n    $keyword = trim($row['keyword']);\n    $site_name = trim($row['site_name']);\n    $email = trim($row['email']);\n    $twit = trim($row['twit']);\n    $face = trim($row['face']);\n    $gplus = trim($row['gplus']);\n    $ga = trim($row['ga']);\n    $additional_scripts = trim($row['additional_scripts']);\n\n    // Set theme and language\n    $stmt = $pdo->query(\"SELECT * FROM interface WHERE id = '1'\");\n    $row = $stmt->fetch();\n    $default_lang = trim($row['lang']);\n    $default_theme = trim($row['theme']);\n    require_once(\"langs/$default_lang\");\n\n    $p_title = $lang['archive'];\n\n    // Check if IP is banned\n    if (is_banned($pdo, $ip)) die($lang['banned']);\n\n    // Site permissions\n    $stmt = $pdo->query(\"SELECT * FROM site_permissions WHERE id = 1 LIMIT 1\");\n    $row = $stmt->fetch();\n    $siteprivate = trim($row['siteprivate']);\n    $privatesite = ($siteprivate === '0' || $siteprivate === 0) ? '0' : '1';\n\n    // Logout\n    if (isset($_GET['logout'])) {\n        header('Location: ' . $_SERVER['HTTP_REFERER']);\n        unset($_SESSION['token']);\n        unset($_SESSION['oauth_uid']);\n        unset($_SESSION['username']);\n        session_destroy();\n    }\n\n    // Page views\n    $date = date('Y-m-d');\n    $ip = $_SERVER['REMOTE_ADDR'];\n\n    try {\n        // Fetch or create the page_view record for today\n        $stmt = $pdo->prepare(\"SELECT id, tpage, tvisit FROM page_view WHERE date = ?\");\n        $stmt->execute([$date]);\n        $row = $stmt->fetch();\n\n        if ($row) {\n            // Record exists for today\n            $page_view_id = $row['id'];\n            $tpage = (int)$row['tpage'] + 1; // Increment total page views\n            $tvisit = (int)$row['tvisit'];\n\n            // Check if this IP has visited today\n            $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM visitor_ips WHERE ip = ? AND visit_date = ?\");\n            $stmt->execute([$ip, $date]);\n            if ($stmt->fetchColumn() == 0) {\n                // New unique visitor\n                $tvisit += 1;\n                $stmt = $pdo->prepare(\"INSERT INTO visitor_ips (ip, visit_date) VALUES (?, ?)\");\n                $stmt->execute([$ip, $date]);\n            }\n\n            // Update page_view with new counts\n            $stmt = $pdo->prepare(\"UPDATE page_view SET tpage = ?, tvisit = ? WHERE id = ?\");\n            $stmt->execute([$tpage, $tvisit, $page_view_id]);\n        } else {\n            // No record for today: create one\n            $tpage = 1;\n            $tvisit = 1;\n            $stmt = $pdo->prepare(\"INSERT INTO page_view (date, tpage, tvisit) VALUES (?, ?, ?)\");\n            $stmt->execute([$date, $tpage, $tvisit]);\n\n            // Log the visitor's IP\n            $stmt = $pdo->prepare(\"INSERT INTO visitor_ips (ip, visit_date) VALUES (?, ?)\");\n            $stmt->execute([$ip, $date]);\n        }\n    } catch (PDOException $e) {\n        error_log(\"Page view tracking error: \" . $e->getMessage());\n    }\n\n    // Ads\n    $stmt = $pdo->query(\"SELECT * FROM ads WHERE id = '1'\");\n    $row = $stmt->fetch();\n    $text_ads = trim($row['text_ads']);\n    $ads_1 = trim($row['ads_1']);\n    $ads_2 = trim($row['ads_2']);\n\n    // Search, pagination, and sorting\n    $search_query = isset($_GET['q']) && !empty($_GET['q']) ? trim($_GET['q']) : '';\n    $sort = isset($_GET['sort']) && in_array($_GET['sort'], ['date_desc', 'date_asc', 'title_asc', 'title_desc', 'code_asc', 'code_desc', 'views_desc', 'views_asc']) ? $_GET['sort'] : 'date_desc';\n    $perPage = 50; // Increased to 50 pastes per page\n    $page = isset($_GET['page']) ? max(1, (int)$_GET['page']) : 1;\n    $offset = ($page - 1) * $perPage;\n\n    // Determine sort column and direction\n    $sortColumn = 'p.date';\n    $sortDirection = 'DESC';\n    switch ($sort) {\n        case 'date_asc':\n            $sortDirection = 'ASC';\n            break;\n        case 'title_asc':\n            $sortColumn = 'p.title';\n            $sortDirection = 'ASC';\n            break;\n        case 'title_desc':\n            $sortColumn = 'p.title';\n            $sortDirection = 'DESC';\n            break;\n        case 'code_asc':\n            $sortColumn = 'p.code';\n            $sortDirection = 'ASC';\n            break;\n        case 'code_desc':\n            $sortColumn = 'p.code';\n            $sortDirection = 'DESC';\n            break;\n        case 'views_desc':\n            $sortColumn = 'view_count';\n            $sortDirection = 'DESC';\n            break;\n        case 'views_asc':\n            $sortColumn = 'view_count';\n            $sortDirection = 'ASC';\n            break;\n    }\n\n    // Initialize variables\n    $pastes = [];\n    $totalItems = 0;\n    $totalPages = 1;\n    $error = '';\n\n    // Base query with LEFT JOIN to paste_views\n    $baseQuery = \"SELECT p.id, p.title, p.code, p.date, UNIX_TIMESTAMP(p.date) AS now_time, p.encrypt, p.member, COUNT(pv.id) AS view_count \n                  FROM pastes p \n                  LEFT JOIN paste_views pv ON p.id = pv.paste_id \n                  WHERE p.visible = '0' AND p.password = 'NONE'\";\n    $countQuery = \"SELECT COUNT(*) \n                   FROM pastes p \n                   WHERE p.visible = '0' AND p.password = 'NONE'\";\n    $params = [];\n\n    if ($search_query && strlen($search_query) >= 3) { // Search query provided\n        $search_term = '%' . $search_query . '%';\n        $baseQuery .= \" AND (p.title LIKE ? OR p.content LIKE ?)\";\n        $countQuery .= \" AND (p.title LIKE ? OR p.content LIKE ?)\";\n        $params = [$search_term, $search_term];\n    }\n\n    // Add GROUP BY and ORDER BY\n    $baseQuery .= \" GROUP BY p.id, p.title, p.code, p.date, p.encrypt, p.member ORDER BY $sortColumn $sortDirection LIMIT ? OFFSET ?\";\n    $params[] = $perPage;\n    $params[] = $offset;\n\n    // Execute main query\n    try {\n        $stmt = $pdo->prepare($baseQuery);\n        $stmt->execute($params);\n        $pastes = $stmt->fetchAll(PDO::FETCH_ASSOC);\n\n        // Count total matching pastes for pagination\n        $stmt = $pdo->prepare($countQuery);\n        $stmt->execute($search_query ? [$search_term, $search_term] : []);\n        $totalItems = $stmt->fetchColumn();\n    } catch (PDOException $e) {\n        error_log(\"Paste query error: \" . $e->getMessage());\n        $pastes = [];\n        $totalItems = 0;\n    }\n\n    $totalPages = $totalItems > 0 ? ceil($totalItems / $perPage) : 1;\n\n    // Decrypt titles and format time\n    foreach ($pastes as &$row) {\n        if ($row['encrypt'] == '1') {\n            $row['title'] = decrypt($row['title'], hex2bin(SECRET)) ?? $row['title'];\n        }\n        $row['time_display'] = formatRealTime($row['date']);\n        $row['url'] = $mod_rewrite == '1' ? $baseurl . $row['id'] : $baseurl . 'paste.php?id=' . $row['id'];\n        $row['title'] = truncate($row['title'], 20, 50);\n        $row['views'] = $row['view_count'];\n    }\n    unset($row);\n\n    if (isset($_GET['q']) && (empty($search_query) || strlen($search_query) < 3)) {\n        $error = \"Please use a keyword to search. Here are the latest 50 pastes.\";\n    }\n\n    // Pagination\n    $prev_page_query = http_build_query(array_merge($_GET, ['page' => $page > 1 ? $page - 1 : 1]));\n    $next_page_query = http_build_query(array_merge($_GET, ['page' => $page < $totalPages ? $page + 1 : $totalPages]));\n    $page_queries = [];\n    for ($i = 1; $i <= $totalPages; $i++) {\n        $page_queries[$i] = http_build_query(array_merge($_GET, ['page' => $i]));\n    }\n\n    // Set archives title\n    $archives_title = htmlspecialchars($lang['archives'] ?? 'Archives', ENT_QUOTES, 'UTF-8');\n    if ($search_query && !empty($search_query)) {\n        $archives_title .= ' - ' . htmlspecialchars($lang['search_results_for'] ?? 'Search Results for', ENT_QUOTES, 'UTF-8') . ' \"' . htmlspecialchars($search_query, ENT_QUOTES, 'UTF-8') . '\"';\n    }\n\n    // Theme\n    require_once('theme/' . $default_theme . '/header.php');\n    require_once('theme/' . $default_theme . '/archive.php');\n    require_once('theme/' . $default_theme . '/footer.php');\n} catch (PDOException $e) {\n    die(\"Database error: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));\n}\n?>"
  },
  {
    "path": "config.php",
    "content": ""
  },
  {
    "path": "docs/CHANGELOG.md",
    "content": "# Changelog for **[Paste](https://phpaste.sourceforge.io/)** (Updated on 21/08/2025)\nIn progress: 3.2\n* improvements\n* integration of https://github.com/scrivo/highlight.php\n* theme picker if enabled (see example config)\n* improved the layout for paste views, fixed some line number css bugs\n* added a \"we has cookies\" footer/just comment it out in /theme/default/footer.php if not required\n\nNew version 3.1\n* Account deletion\n* reCAPTCHA v3 with server side integration and token handling (and v2 support)\n* \tSelect reCAPTCHA in admin/configuration.php\n*\tSelect v2 or v3 depending on your keys\n* If signed up with OAuth2, ability to change username once in /profile.php\n* Search feature, archive/pagination\n* Improved admin panel with Bootstrap 5\n* Ability to add/remove admins\n* Fixed SMTP for user emails - Plain SMTP server or use OAuth2 for Google Mail\n* PHP version must be 8.1 or above\n* Clean up the codebase, remove obsolete functions and add more comments\n\nPrevious version - 3.0\n* PHP 8.4> compatibility\n* Replace mysqli with pdo\n* New default theme, upgrade paste2 theme from bootstrap 3 to 5\n* Dark mode\n* Admin panel changes\n* Google OAuth2 SMTP/User accounts\n* Security and bug fixes \n* Improved installer, checks for existing database and updates schema as appropriate.\n* Improved database schema\n* Update Parsedown for Markdown\n* All pastes encrypted in the database with AES-256 by default\n\n\nPrevious version - 2.2\n-\n\nFrontend changes\n* add french translations\n* set markdown as default paste language\n\nBackend changes\n* secure email verifications against SQL injections\n\nOther changes\n* Fix php7 compatibility problems\n* Code cleanup\n\nPrevious version - 2.1\n-\nFrontend changes\n* User pages has been added and 'My Pastes' have been streamlined into this\n* Ability to Fork or Edit pastes\n* Raw view added\n* Ability to embed pastes on websites\n* Pastes can now be submitted and parsed as Markdown using **[Parsedown](http://parsedown.org/)**\n* Added reCAPTCHA 2 support\n\nBackend changes\n* New options in the Admin panel in Configuration > Permissions\n\n  Option to only allow registered users to paste\n  \n  Option to make site private, ie by disabling Recent Pastes and Archives\n  \n* New theme added: clean --- A white/grey version of the default theme\n* New option in the Admin Panel in Configuration > Mail Settings to disable or enable email verification\n* New option in the Admin panel in Configuration > Site Info to add javascript to the footer\n* Added functionality in the Admin panel in >Pastes to ban IPs directly from the list\n* Added functionality in the Admin panel in >Dashboard to compare the current installed version with the latest version\n\nOther changes\n* Code cleanup and elimination of errors\n\nPrevious version - 2.0\n-\n\n* New theme\n* An installer\n* User accounts added\n\n  Ability to login and register with email verification\n  \n  'My Pastes' page with options to view and delete pastes\n\n* Admin panel added\n\n  Dashboard (front page) with a header to display some statistics of the day: overall views, unique views, pastes & users and lists to display recent pastes, users and admin logins\n  \n  Configuration page to apply Site name, title, description and keywords metatags, with sublinks to other configuration options such as Captcha settings (set the captcha type: easy, normal & tough and colour) and Mail settings for email verification (set Mail Protocol to either PHP Mail or SMTP and SMTP options)\n  \n  Interface page to set language with the new translations system, see /langs/ --- and also set the theme\n  \n  Admin account page to reset admin login details\n  \n  'Pastes' page to show a list of all pastes with options to delete and see more details\n  \n  'Users' page to show a list of all registered users with options to show if user registered with email or OAUTH and options to ban or delete\n  \n  'IP Bans' page to add and list IP bans\n  \n  'Statistics' page to show overall amount of pastes, expired pastes, users, banned users, page views & unique page views\n  \n  'Ads' page to add functionality to add ads to sidebar and footer sections\n  \n  'Pages' page to add new pages using a WYSIWIG editor, and also an option to view a list of pages with delete and edit functionality\n  \n  'Sitemap' page to control the frequency that the new sitemap system is updated\n  \n  'Tasks' page for some database optimization and common tasks, delete all expired pastes, clear admin history, delete unverified accounts \n\n* Archives added\n* Captcha added\n\nOther changes\n* Overall code overhaul"
  },
  {
    "path": "docs/LICENSE",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.  We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors.  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights.  Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received.  You must make sure that they, too, receive\nor can get the source code.  And you must show them these terms so they\nknow their rights.\n\n  Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n  For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software.  For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n  Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so.  This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software.  The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable.  Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts.  If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n  Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary.  To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Use with the GNU Affero General Public License.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <https://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n    <program>  Copyright (C) <year>  <name of author>\n    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n<https://www.gnu.org/licenses/>.\n\n  The GNU General Public License does not permit incorporating your program\ninto proprietary programs.  If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.  But first, please read\n<https://www.gnu.org/licenses/why-not-lgpl.html>.\n"
  },
  {
    "path": "docs/OAUTH",
    "content": "3. **Set Up Google OAuth for User Logins**:\r\n   - Go to [Google Cloud Console](https://console.developers.google.com).\r\n   - Create a project and enable the Google+ API.\r\n   - Create OAuth 2.0 credentials (Web application).\r\n   - Set the Authorized Redirect URI to: `<baseurl>oauth/google.php` (e.g., `https://yourdomain.com/oauth/google.php`), where `<baseurl>` is from `site_info.baseurl`.\r\n   - Update `config.php` with:\r\n     ```php\r\n     define('G_CLIENT_ID', 'your_client_id');\r\n     define('G_CLIENT_SECRET', 'your_client_secret');\r\n     ```\r\n   - Ensure `enablegoog` is set to `yes` in `config.php`.\r\n\r\n4. **Set Up Gmail SMTP with OAuth2**:\r\n   - In [Google Cloud Console](https://console.developers.google.com), enable the Gmail API.\r\n   - Create or reuse OAuth 2.0 credentials.\r\n   - Set the Authorized Redirect URI to: `<baseurl>oauth/google_smtp.php` (e.g., `https://yourdomain.com/oauth/google_smtp.php`), where `<baseurl>` is from `site_info.baseurl`.\r\n   - Log in to `/admin/configuration.php` as an admin.\r\n   - Enter the Client ID and Client Secret under \"Google OAuth 2.0 Setup for Gmail SMTP\".\r\n   - Click \"Authorize Gmail SMTP\" to authenticate and save the refresh token in the `mail` table.\r\n   - Configure SMTP settings (host: `smtp.gmail.com`, port: `587`, socket: `tls`, auth: `true`, protocol: `2`).\r\n\r\n5. **Set Permissions**:\r\n   - Secure `config.php`:\r\n     ```bash\r\n     chmod 600 /path/to/pastedev/config.php\r\n     ```\r\n   - Remove the `/install` directory after setup:\r\n     ```bash\r\n     rm -rf /path/to/pastedev/install\r\n     ```\r\n\r\n6. **Test the Application**:\r\n   - Register a user via `/login.php?signup` to test manual registration and email verification.\r\n   - Log in via Google OAuth at `/login.php`.\r\n   - Test SMTP by sending a test email from `/admin/configuration.php`.\r\n   - Check `/var/log/php_errors.log` for errors.\r\n\r\n## Troubleshooting\r\n\r\n- **OAuth Errors**:\r\n  - Verify `G_CLIENT_ID`, `G_CLIENT_SECRET`, and `G_REDIRECT_URI` in `config.php`.\r\n  - Ensure `site_info.baseurl` matches your domain.\r\n  - Check redirect URIs in Google Cloud Console.\r\n- **SMTP Errors**:\r\n  - Confirm `oauth_client_id`, `oauth_client_secret`, and `oauth_refresh_token` in the `mail` table.\r\n  - Enable `SMTP_DEBUG` in `config.php`:\r\n    ```php\r\n    define('SMTP_DEBUG', true);\r\n    ```\r\n  - Check logs and disable debugging after testing.\r\n- **CSRF Errors**:\r\n  - Ensure `verify.php` and other callers pass the correct `$_SESSION['csrf_token']`.\r\n- **Dependency Errors**:\r\n  - Reinstall dependencies:\r\n    ```bash\r\n    cd /path/to/pastedev/oauth\r\n    composer require google/apiclient:^2.12 league/oauth2-client:^2.7\r\n    cd /path/to/pastedev/mail\r\n    composer require phpmailer/phpmailer:^6.9\r\n    ```"
  },
  {
    "path": "docs/config.example.php",
    "content": "<?php\n/*\n * Paste $v3.2 2025/08/21 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n \n$currentversion = 3.2;\n$pastelimit = \"10\"; // MB\n\n// OAuth settings (for signups)\n$enablefb  = \"no\";\n$enablegoog= \"no\";\n$enablesmtp= \"no\";\n\n// Database information\n$dbhost     = \"localhost\";\n$dbuser     = \"pastedev\";\n$dbpassword = \"duXlUs-aG1cynLvd\";\n$dbname     = \"pastedev\";\n\n// Secret key for encryption\n$sec_key = \"This is generated by /install\";\ndefine('SECRET', $sec_key);\n\n// Tidy URLs: set to \"1\" if your server is configured for mod_rewrite / pretty URLs\n$mod_rewrite = \"0\";\n\n// Code highlighting engine for non-Markdown pastes: 'highlight' or 'geshi'\n$highlighter = $highlighter ?? 'highlight'; // new\n\n// Default theme for highlighter.php (see includes/Highlight/styles)\n$hl_style = 'hybrid.css';\n\n/**\n * Build the list of selectable formats\n * - When using highlight.php, we get the json language files from includes/Highlight/languages\n * - When using GeSHi, we fall back to the classic list.\n */\n$popular_formats = []; // will be set below\n\nif ($highlighter === 'highlight') {\n    require_once __DIR__ . '/includes/Highlight/list_languages.php';\n    $langs = highlight_supported_languages();\n\n    // Friendly display labels\n    $label_map = [\n        'cpp'        => 'C++',\n        'csharp'     => 'C#',\n        'fsharp'     => 'F#',\n        'objectivec' => 'Objective-C',\n        'plaintext'  => 'Plain Text',\n        'xml'        => 'HTML/XML',\n        'ini'        => 'INI',\n        'dos'        => 'DOS/Batch',\n        'pgsql'      => 'PostgreSQL',\n    ];\n\n    $build_label = static function(string $id) use ($label_map): string {\n        if (isset($label_map[$id])) return $label_map[$id];\n        $t = str_replace(['-','_'], ' ', $id);\n        $t = ucwords($t);\n        $t = preg_replace('/\\bSql\\b/i','SQL',$t);\n        $t = preg_replace('/\\bJson\\b/i','JSON',$t);\n        $t = preg_replace('/\\bYaml\\b/i','YAML',$t);\n        $t = preg_replace('/\\bXml\\b/i','XML',$t);\n        return $t;\n    };\n\n    // Build formats from highlight.php languages\n    $geshiformats = ['markdown' => 'Markdown', 'text' => 'Plain Text'];\n    foreach ($langs as $L) {\n        $id = $L['id'];\n        if ($id === 'plaintext') continue; // we already provide 'text'\n        $geshiformats[$id] = $build_label($id);\n    }\n\n    // Popular band for the top of the select (tweak freely)\n    $popular_formats = [\n        'text','xml','css','javascript','json','yaml','php','python','sql','pgsql',\n        'java','c','csharp','cpp','bash','markdown','go','ruby','rust','typescript','kotlin'\n    ];\n\n} else {\n    // ---------- GeSHi formats (classic) ----------\n    $geshiformats = [\n        '4cs' => 'GADV 4CS',\n        '6502acme' => 'ACME Cross Assembler',\n        '6502kickass' => 'Kick Assembler',\n        '6502tasm' => 'TASM/64TASS 1.46',\n        '68000devpac' => 'HiSoft Devpac ST 2',\n        'abap' => 'ABAP',\n        'actionscript' => 'ActionScript',\n        'actionscript3' => 'ActionScript 3',\n        'ada' => 'Ada',\n        'aimms' => 'AIMMS3',\n        'algol68' => 'ALGOL 68',\n        'apache' => 'Apache',\n        'applescript' => 'AppleScript',\n        'arm' => 'ARM Assembler',\n        'asm' => 'ASM',\n        'asp' => 'ASP',\n        'asymptote' => 'Asymptote',\n        'autoconf' => 'Autoconf',\n        'autohotkey' => 'Autohotkey',\n        'autoit' => 'AutoIt',\n        'avisynth' => 'AviSynth',\n        'awk' => 'Awk',\n        'bascomavr' => 'BASCOM AVR',\n        'bash' => 'BASH',\n        'basic4gl' => 'Basic4GL',\n        'bf' => 'Brainfuck',\n        'bibtex' => 'BibTeX',\n        'blitzbasic' => 'BlitzBasic',\n        'bnf' => 'BNF',\n        'boo' => 'Boo',\n        'c' => 'C',\n        'c_loadrunner' => 'C (LoadRunner)',\n        'c_mac' => 'C for Macs',\n        'c_winapi' => 'C (WinAPI)',\n        'caddcl' => 'CAD DCL',\n        'cadlisp' => 'CAD Lisp',\n        'cfdg' => 'CFDG',\n        'cfm' => 'ColdFusion',\n        'chaiscript' => 'ChaiScript',\n        'chapel' => 'Chapel',\n        'cil' => 'CIL',\n        'clojure' => 'Clojure',\n        'cmake' => 'CMake',\n        'cobol' => 'COBOL',\n        'coffeescript' => 'CoffeeScript',\n        'cpp' => 'C++',\n        'cpp-qt' => 'C++ (with QT extensions)',\n        'cpp-winapi' => 'C++ (WinAPI)',\n        'csharp' => 'C#',\n        'css' => 'CSS',\n        'cuesheet' => 'Cuesheet',\n        'd' => 'D',\n        'dcl' => 'DCL',\n        'dcpu16' => 'DCPU-16 Assembly',\n        'dcs' => 'DCS',\n        'delphi' => 'Delphi',\n        'diff' => 'Diff-output',\n        'div' => 'DIV',\n        'dos' => 'DOS',\n        'dot' => 'dot',\n        'e' => 'E',\n        'ecmascript' => 'ECMAScript',\n        'eiffel' => 'Eiffel',\n        'email' => 'eMail (mbox)',\n        'epc' => 'EPC',\n        'erlang' => 'Erlang',\n        'euphoria' => 'Euphoria',\n        'ezt' => 'EZT',\n        'f1' => 'Formula One',\n        'falcon' => 'Falcon',\n        'fo' => 'FO (abas-ERP)',\n        'fortran' => 'Fortran',\n        'freebasic' => 'FreeBasic',\n        'fsharp' => 'F#',\n        'gambas' => 'GAMBAS',\n        'gdb' => 'GDB',\n        'genero' => 'Genero',\n        'genie' => 'Genie',\n        'gettext' => 'GNU Gettext',\n        'glsl' => 'glSlang',\n        'gml' => 'GML',\n        'gnuplot' => 'GNUPlot',\n        'go' => 'Go',\n        'groovy' => 'Groovy',\n        'gwbasic' => 'GwBasic',\n        'haskell' => 'Haskell',\n        'haxe' => 'Haxe',\n        'hicest' => 'HicEst',\n        'hq9plus' => 'HQ9+',\n        'html4strict' => 'HTML 4.01',\n        'html5' => 'HTML 5',\n        'icon' => 'Icon',\n        'idl' => 'Uno Idl',\n        'ini' => 'INI',\n        'inno' => 'Inno Script',\n        'intercal' => 'INTERCAL',\n        'io' => 'IO',\n        'ispfpanel' => 'ISPF Panel',\n        'j' => 'J',\n        'java' => 'Java',\n        'java5' => 'Java 5',\n        'javascript' => 'JavaScript',\n        'jcl' => 'JCL',\n        'jquery' => 'jQuery',\n        'kixtart' => 'KiXtart',\n        'klonec' => 'KLone C',\n        'klonecpp' => 'KLone C++',\n        'latex' => 'LaTeX',\n        'lb' => 'Liberty BASIC',\n        'ldif' => 'LDIF',\n        'lisp' => 'Lisp',\n        'llvm' => 'LLVM',\n        'locobasic' => 'Locomotive Basic',\n        'logtalk' => 'Logtalk',\n        'lolcode' => 'LOLcode',\n        'lotusformulas' => 'Lotus Notes @Formulas',\n        'lotusscript' => 'LotusScript',\n        'lscript' => 'Lightwave Script',\n        'lsl2' => 'Linden Script',\n        'lua' => 'LUA',\n        'm68k' => 'Motorola 68000 Assembler',\n        'magiksf' => 'MagikSF',\n        'make' => 'GNU make',\n        'mapbasic' => 'MapBasic',\n        'markdown' => 'Markdown',\n        'matlab' => 'Matlab M',\n        'mirc' => 'mIRC Scripting',\n        'mmix' => 'MMIX',\n        'modula2' => 'Modula-2',\n        'modula3' => 'Modula-3',\n        'mpasm' => 'Microchip Assembler',\n        'mxml' => 'MXML',\n        'mysql' => 'MySQL',\n        'nagios' => 'Nagios',\n        'netrexx' => 'NetRexx',\n        'newlisp' => 'NewLisp',\n        'nginx' => 'Nginx',\n        'nsis' => 'NSIS',\n        'oberon2' => 'Oberon-2',\n        'objc' => 'Objective-C',\n        'objeck' => 'Objeck',\n        'ocaml' => 'Ocaml',\n        'ocaml-brief' => 'OCaml (Brief)',\n        'octave' => 'GNU/Octave',\n        'oobas' => 'OpenOffice.org Basic',\n        'oorexx' => 'ooRexx',\n        'oracle11' => 'Oracle 11 SQL',\n        'oracle8' => 'Oracle 8 SQL',\n        'oxygene' => 'Oxygene (Delphi Prism)',\n        'oz' => 'OZ',\n        'parasail' => 'ParaSail',\n        'parigp' => 'PARI/GP',\n        'pascal' => 'Pascal',\n        'pcre' => 'PCRE',\n        'per' => 'Per (forms)',\n        'perl' => 'Perl',\n        'perl6' => 'Perl 6',\n        'pf' => 'OpenBSD Packet Filter',\n        'php' => 'PHP',\n        'php-brief' => 'PHP (Brief)',\n        'pic16' => 'PIC16 Assembler',\n        'pike' => 'Pike',\n        'pixelbender' => 'Pixel Bender',\n        'pli' => 'PL/I',\n        'plsql' => 'PL/SQL',\n        'postgresql' => 'PostgreSQL',\n        'povray' => 'POVRAY',\n        'powerbuilder' => 'PowerBuilder',\n        'powershell' => 'PowerShell',\n        'proftpd' => 'ProFTPd config',\n        'progress' => 'Progress',\n        'prolog' => 'Prolog',\n        'properties' => 'Properties',\n        'providex' => 'ProvideX',\n        'purebasic' => 'PureBasic',\n        'pycon' => 'Python (console mode)',\n        'pys60' => 'Python for S60',\n        'python' => 'Python',\n        'qbasic' => 'QuickBASIC',\n        'racket' => 'Racket',\n        'rails' => 'Ruby on Rails',\n        'rbs' => 'RBScript',\n        'rebol' => 'REBOL',\n        'reg' => 'Microsoft REGEDIT',\n        'rexx' => 'Rexx',\n        'robots' => 'robots.txt',\n        'rpmspec' => 'RPM Specification File',\n        'rsplus' => 'R / S+',\n        'ruby' => 'Ruby',\n        'sas' => 'SAS',\n        'scala' => 'Scala',\n        'scheme' => 'Scheme',\n        'scilab' => 'SciLab',\n        'scl' => 'SCL',\n        'sdlbasic' => 'sdlBasic',\n        'smalltalk' => 'Smalltalk',\n        'smarty' => 'Smarty',\n        'spark' => 'SPARK',\n        'sparql' => 'SPARQL',\n        'sql' => 'SQL',\n        'stonescript' => 'StoneScript',\n        'systemverilog' => 'SystemVerilog',\n        'tcl' => 'TCL',\n        'teraterm' => 'Tera Term Macro',\n        'text' => 'Plain Text',\n        'thinbasic' => 'thinBasic',\n        'tsql' => 'T-SQL',\n        'typoscript' => 'TypoScript',\n        'unicon' => 'Unicon',\n        'upc' => 'UPC',\n        'urbi' => 'Urbi',\n        'unrealscript' => 'Unreal Script',\n        'vala' => 'Vala',\n        'vb' => 'Visual Basic',\n        'vbnet' => 'VB.NET',\n        'vbscript' => 'VB Script',\n        'vedit' => 'Vedit Macro',\n        'verilog' => 'Verilog',\n        'vhdl' => 'VHDL',\n        'vim' => 'Vim',\n        'visualfoxpro' => 'Visual FoxPro',\n        'visualprolog' => 'Visual Prolog',\n        'whitespace' => 'Whitespace',\n        'whois' => 'WHOIS (RPSL format)',\n        'winbatch' => 'WinBatch',\n        'xbasic' => 'XBasic',\n        'xml' => 'XML',\n        'xorg_conf' => 'Xorg Config',\n        'xpp' => 'X++',\n        'yaml' => 'YAML',\n        'z80' => 'ZiLOG Z80 Assembler',\n        'zxbasic' => 'ZXBasic'\n    ];\n\n    $popular_formats = [\n        'text', 'html4strict', 'html5', 'css', 'javascript', 'php', 'perl',\n        'python', 'postgresql', 'sql', 'xml', 'java', 'c', 'csharp', 'cpp', 'markdown'\n    ];\n}\n"
  },
  {
    "path": "docs/nginx.example.conf",
    "content": "# Edit first.\n\nserver {\n    server_name www.example.com example.com;\n    listen 80;\n    #listen 443;\n    root /home/web/yourpasteinstallation;\n    access_log /var/log/nginx/paste_access.log;\n    error_log /var/log/nginx/paste_error.log;\n\n    index index.php index.html index.htm;\n\n\trewrite ^/page/([a-zA-Z0-9]+)/? /pages.php?page=$1 last;\n\trewrite ^/archive /archive.php last;\n\trewrite ^/profile /profile.php last;\n\trewrite ^/user/([^/]+)/?$ /user.php?user=$1 last;\n\trewrite ^/contact /contact.php last;\n\trewrite ^/download/(.*)$ /paste.php?download&id=$1 last;\n\trewrite ^/raw/(.*)$ /paste.php?raw&id=$1 last;\n\trewrite ^/embed/(.*)$ /paste.php?embed&id=$1 last;\n\tlocation /{\n\t\trewrite ^/([0-9]+)/?$ /paste.php?id=$1;\n\t}\n\n    location ~ \\.php$ {\n\tinclude snippets/fastcgi-php.conf;\n\t#fastcgi_pass unix:/run/php5-fpm.sock;\n\t#fastcgi_pass unix:/run/php7.0-fpm.sock;\n\t#fastcgi_pass unix:/run/php7.1-fpm.sock;\n\t#fastcgi_pass unix:/run/php8.4-fpm.sock;\n    }\n}\n"
  },
  {
    "path": "docs/old-paste.mysqlschema.sql",
    "content": "--\n-- Database schema for the manual installation of Paste 2.1\n-- Default admin username/password - admin / admin - change once logged in\n-- Also configure the Domain in admin/configure.php otherwise things won't display correctly.\n--\n\n-- Admin\nCREATE TABLE `admin` (\n  `id` INT NOT NULL AUTO_INCREMENT,\n\tPRIMARY KEY(id),\n  `user` varchar(250) DEFAULT NULL,\n  `pass` varchar(250) DEFAULT NULL\n);\n\nINSERT INTO `admin` (`id`, `user`, `pass`) VALUES\n(1, 'admin', '$2y$10$qn1PmNaBfhrOmRuYfgclsO6tMsXpKquSjshvwqx/7BXFD2No6rpH2');\n\n-- Admin history\n\nCREATE TABLE `admin_history` (\n  `id` INT NOT NULL AUTO_INCREMENT,\n\tPRIMARY KEY(id),\n  `last_date` varchar(255) DEFAULT NULL,\n  `ip` varchar(255) DEFAULT NULL\n);\n\n-- Ads\nCREATE TABLE `ads` (\n  `id` INT NOT NULL AUTO_INCREMENT,\n\tPRIMARY KEY(id),\n  `text_ads` text,\n  `ads_1` text,\n  `ads_2` text\n);\n\nINSERT INTO ads (text_ads,ads_1,ads_2) VALUES ('','','');\n\n-- Bans\n\nCREATE TABLE `ban_user` (\n  `id` INT NOT NULL AUTO_INCREMENT,\n\tPRIMARY KEY(id),\n  `ip` varchar(255) DEFAULT NULL,\n  `last_date` varchar(255) DEFAULT NULL\n);\n\n-- Captcha\n\nCREATE TABLE `captcha` (\n  `id` INT NOT NULL AUTO_INCREMENT,\n\tPRIMARY KEY(id),\n  `cap_e` varchar(255) DEFAULT NULL,\n  `mode` varchar(255) DEFAULT NULL,\n  `mul` varchar(255) DEFAULT NULL,\n  `allowed` text,\n  `color` mediumtext,\n  `recaptcha_sitekey` text,\n  `recaptcha_secretkey` text\n);\n\nINSERT INTO captcha (cap_e,mode,mul,allowed,color,recaptcha_sitekey,recaptcha_secretkey) VALUES ('off','Normal','off','ABCDEFGHIJKLMNOPQRSTUVYXYZabcdefghijklmnopqrstuvwxyz0123456789','#000000','','');\n\n-- Interface\n\nCREATE TABLE `interface` (\n  `id` INT NOT NULL AUTO_INCREMENT,\n\tPRIMARY KEY(id),\n  `theme` text,\n  `lang` text\n);\n\nINSERT INTO interface (theme,lang) VALUES ('default','en.php');\n\n-- Mail\n\nCREATE TABLE `mail` (\n  `id` INT NOT NULL AUTO_INCREMENT,\n\tPRIMARY KEY(id),\n  `verification` text,\n  `smtp_host` text,\n  `smtp_username` text,\n  `smtp_password` text,\n  `smtp_port` text,\n  `protocol` text,\n  `auth` text,\n  `socket` text\n);\n\nINSERT INTO mail (verification,smtp_host,smtp_username,smtp_password,smtp_port,protocol,auth,socket) VALUES ('enabled','','','','','1','true','ssl');\n\n-- Pages\n\nCREATE TABLE `pages` (\n  `id` INT NOT NULL AUTO_INCREMENT,\n\tPRIMARY KEY(id),\n  `last_date` varchar(255) DEFAULT NULL,\n  `page_name` varchar(255) DEFAULT NULL,\n  `page_title` mediumtext,\n  `page_content` longtext\n);\n\n-- Page views\n\nCREATE TABLE `page_view` (\n  `id` INT NOT NULL AUTO_INCREMENT,\n\tPRIMARY KEY(id),\n  `date` varchar(255) DEFAULT NULL,\n  `tpage` varchar(255) DEFAULT NULL,\n  `tvisit` varchar(255) DEFAULT NULL\n);\n\n-- Pastes\n\nCREATE TABLE `pastes` (\n  `id` INT NOT NULL AUTO_INCREMENT,\n\tPRIMARY KEY(id),\n  `title` text,\n  `content` longtext,\n  `encrypt` text,\n  `password` text,\n  `now_time` text,\n  `s_date` text,\n  `views` text,\n  `ip` text,\n  `date` text,\n  `member` text,\n  `expiry` text,\n  `visible` text,\n  `code` longtext\n);\n\n-- Sitemap\n\nCREATE TABLE `sitemap_options` (\n  `id` INT NOT NULL AUTO_INCREMENT,\n\tPRIMARY KEY(id),\n  `priority` varchar(255) DEFAULT NULL,\n  `changefreq` varchar(255) DEFAULT NULL\n);\n\nINSERT INTO `sitemap_options` (`id`, `priority`, `changefreq`) VALUES\n(1, '0.9', 'daily');\n\n-- Site info\n\nCREATE TABLE `site_info` (\n  `id` INT NOT NULL AUTO_INCREMENT,\n\tPRIMARY KEY(id),\n  `title` varchar(255) DEFAULT NULL,\n  `des` mediumtext,\n  `keyword` mediumtext,\n  `site_name` varchar(255) DEFAULT NULL,\n  `email` varchar(255) DEFAULT NULL,\n  `twit` varchar(4000) DEFAULT NULL,\n  `face` varchar(4000) DEFAULT NULL,\n  `gplus` varchar(4000) DEFAULT NULL,\n  `ga` varchar(255) DEFAULT NULL,\n  `additional_scripts` text,\n  `baseurl` text\n);\n\nINSERT INTO `site_info` (`id`, `title`, `des`, `keyword`, `site_name`, `email`, `twit`, `face`, `gplus`, `ga`, `additional_scripts`, `baseurl`) VALUES\n(1, 'Paste', 'Paste can store text, source code or sensitive data for a set period of time.', 'paste,pastebin.com,pastebin,text,paste,online paste', 'Paste', '', 'https://twitter.com/', 'https://www.facebook.com/', 'https://plus.google.com/', 'UA-', '', 'pastethis.in');\n\n-- Site permissions\n\nCREATE TABLE `site_permissions` (\n  `id` INT NOT NULL AUTO_INCREMENT,\n\tPRIMARY KEY(id),\n  `disableguest` varchar(255) DEFAULT NULL,\n  `siteprivate` varchar(255) DEFAULT NULL\n);\n\nINSERT INTO `site_permissions` (`id`, `disableguest`, `siteprivate`) VALUES\n(1, '', ''),\n(2, 'off', 'off');\n\n-- Users\n\nCREATE TABLE `users` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n\tPRIMARY KEY(id),\n  `oauth_uid` text,\n  `username` text,\n  `email_id` text,\n  `full_name` text,\n  `platform` text,\n  `password` text,\n  `verified` text,\n  `picture` text,\n  `date` text,\n  `ip` text\n);"
  },
  {
    "path": "docs/paste.mysqlschema.sql",
    "content": "-- phpMyAdmin SQL Dump\n-- version 5.2.2\n-- https://www.phpmyadmin.net/\n--\n-- Host: localhost\n-- Generation Time: Aug 21, 2025 at 08:51 PM\n-- Server version: 8.0.22\n-- PHP Version: 8.4.11\n\nSET SQL_MODE = \"NO_AUTO_VALUE_ON_ZERO\";\nSTART TRANSACTION;\nSET time_zone = \"+00:00\";\n\n--\n-- Database: `pastedev`\n--\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `admin`\n--\n\nCREATE TABLE `admin` (\n  `id` int NOT NULL,\n  `user` varchar(250) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `pass` varchar(250) COLLATE utf8mb4_unicode_ci NOT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `admin_history`\n--\n\nCREATE TABLE `admin_history` (\n  `id` int NOT NULL,\n  `last_date` datetime NOT NULL,\n  `ip` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `ads`\n--\n\nCREATE TABLE `ads` (\n  `id` int NOT NULL,\n  `text_ads` text COLLATE utf8mb4_unicode_ci,\n  `ads_1` text COLLATE utf8mb4_unicode_ci,\n  `ads_2` text COLLATE utf8mb4_unicode_ci\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `ban_user`\n--\n\nCREATE TABLE `ban_user` (\n  `id` int NOT NULL,\n  `ip` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `last_date` datetime NOT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `captcha`\n--\n\nCREATE TABLE `captcha` (\n  `id` int NOT NULL,\n  `cap_e` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'off',\n  `mode` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'Normal',\n  `recaptcha_version` enum('v2','v3') COLLATE utf8mb4_unicode_ci DEFAULT 'v2',\n  `mul` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'off',\n  `allowed` text COLLATE utf8mb4_unicode_ci NOT NULL,\n  `color` varchar(7) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '#000000',\n  `recaptcha_sitekey` text COLLATE utf8mb4_unicode_ci,\n  `recaptcha_secretkey` text COLLATE utf8mb4_unicode_ci\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `interface`\n--\n\nCREATE TABLE `interface` (\n  `id` int NOT NULL,\n  `theme` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'default',\n  `lang` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'en.php'\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `mail`\n--\n\nCREATE TABLE `mail` (\n  `id` int NOT NULL,\n  `verification` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'enabled',\n  `smtp_host` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '',\n  `smtp_username` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '',\n  `smtp_password` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '',\n  `smtp_port` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT '',\n  `protocol` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '2',\n  `auth` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'true',\n  `socket` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'tls',\n  `oauth_client_id` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `oauth_client_secret` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `oauth_refresh_token` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `mail_log`\n--\n\nCREATE TABLE `mail_log` (\n  `id` int NOT NULL,\n  `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `sent_at` datetime NOT NULL,\n  `type` enum('verification','reset','test') COLLATE utf8mb4_unicode_ci NOT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `pages`\n--\n\nCREATE TABLE `pages` (\n  `id` int NOT NULL,\n  `last_date` datetime NOT NULL,\n  `page_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `page_title` mediumtext COLLATE utf8mb4_unicode_ci NOT NULL,\n  `page_content` longtext COLLATE utf8mb4_unicode_ci,\n  `location` enum('','header','footer','both') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',\n  `nav_parent` int DEFAULT NULL,\n  `sort_order` int NOT NULL DEFAULT '0',\n  `is_active` tinyint(1) NOT NULL DEFAULT '1'\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `page_view`\n--\n\nCREATE TABLE `page_view` (\n  `id` int NOT NULL,\n  `date` date NOT NULL,\n  `tpage` int UNSIGNED NOT NULL DEFAULT '0',\n  `tvisit` int UNSIGNED NOT NULL DEFAULT '0'\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `pastes`\n--\n\nCREATE TABLE `pastes` (\n  `id` int NOT NULL,\n  `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'Untitled',\n  `content` longtext COLLATE utf8mb4_unicode_ci NOT NULL,\n  `visible` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0',\n  `code` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'text',\n  `expiry` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'NONE',\n  `encrypt` varchar(1) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0',\n  `member` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'Guest',\n  `date` datetime NOT NULL,\n  `ip` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `now_time` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `views` int NOT NULL DEFAULT '0',\n  `s_date` date DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `paste_views`\n--\n\nCREATE TABLE `paste_views` (\n  `id` int NOT NULL,\n  `paste_id` int NOT NULL,\n  `ip` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `view_date` date NOT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `sitemap_options`\n--\n\nCREATE TABLE `sitemap_options` (\n  `id` int NOT NULL,\n  `priority` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0.9',\n  `changefreq` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'daily'\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `site_info`\n--\n\nCREATE TABLE `site_info` (\n  `id` int NOT NULL,\n  `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `des` mediumtext COLLATE utf8mb4_unicode_ci,\n  `keyword` mediumtext COLLATE utf8mb4_unicode_ci,\n  `site_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `twit` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `face` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `gplus` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `ga` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `additional_scripts` text COLLATE utf8mb4_unicode_ci,\n  `baseurl` text COLLATE utf8mb4_unicode_ci NOT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `site_permissions`\n--\n\nCREATE TABLE `site_permissions` (\n  `id` int NOT NULL,\n  `disableguest` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'off',\n  `siteprivate` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'off'\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `users`\n--\n\nCREATE TABLE `users` (\n  `id` int NOT NULL,\n  `oauth_uid` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `username` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `email_id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `full_name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `platform` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `password` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT '',\n  `verified` enum('0','1','2') COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '0',\n  `picture` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT 'NONE',\n  `date` datetime NOT NULL,\n  `ip` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `refresh_token` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `token` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `verification_code` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `reset_code` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `reset_expiry` datetime DEFAULT NULL,\n  `username_locked` tinyint(1) NOT NULL DEFAULT '1',\n  `last_ip` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,\n  `remember_token` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n-- --------------------------------------------------------\n\n--\n-- Table structure for table `visitor_ips`\n--\n\nCREATE TABLE `visitor_ips` (\n  `id` int NOT NULL,\n  `ip` varchar(45) COLLATE utf8mb4_unicode_ci NOT NULL,\n  `visit_date` date NOT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n\n--\n-- Indexes for dumped tables\n--\n\n--\n-- Indexes for table `admin`\n--\nALTER TABLE `admin`\n  ADD PRIMARY KEY (`id`),\n  ADD UNIQUE KEY `user` (`user`);\n\n--\n-- Indexes for table `admin_history`\n--\nALTER TABLE `admin_history`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `ads`\n--\nALTER TABLE `ads`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `ban_user`\n--\nALTER TABLE `ban_user`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `captcha`\n--\nALTER TABLE `captcha`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `interface`\n--\nALTER TABLE `interface`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `mail`\n--\nALTER TABLE `mail`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `mail_log`\n--\nALTER TABLE `mail_log`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `pages`\n--\nALTER TABLE `pages`\n  ADD PRIMARY KEY (`id`),\n  ADD KEY `idx_pages_location` (`location`),\n  ADD KEY `idx_pages_navparent` (`nav_parent`),\n  ADD KEY `idx_pages_active` (`is_active`);\n\n--\n-- Indexes for table `page_view`\n--\nALTER TABLE `page_view`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `pastes`\n--\nALTER TABLE `pastes`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `paste_views`\n--\nALTER TABLE `paste_views`\n  ADD PRIMARY KEY (`id`),\n  ADD UNIQUE KEY `unique_paste_ip_date` (`paste_id`,`ip`,`view_date`),\n  ADD KEY `idx_paste_id` (`paste_id`),\n  ADD KEY `idx_view_date` (`view_date`);\n\n--\n-- Indexes for table `sitemap_options`\n--\nALTER TABLE `sitemap_options`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `site_info`\n--\nALTER TABLE `site_info`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `site_permissions`\n--\nALTER TABLE `site_permissions`\n  ADD PRIMARY KEY (`id`);\n\n--\n-- Indexes for table `users`\n--\nALTER TABLE `users`\n  ADD PRIMARY KEY (`id`),\n  ADD UNIQUE KEY `username` (`username`);\n\n--\n-- Indexes for table `visitor_ips`\n--\nALTER TABLE `visitor_ips`\n  ADD PRIMARY KEY (`id`),\n  ADD UNIQUE KEY `idx_ip_date` (`ip`,`visit_date`);\n\n--\n-- AUTO_INCREMENT for dumped tables\n--\n\n--\n-- AUTO_INCREMENT for table `admin`\n--\nALTER TABLE `admin`\n  MODIFY `id` int NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `admin_history`\n--\nALTER TABLE `admin_history`\n  MODIFY `id` int NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `ads`\n--\nALTER TABLE `ads`\n  MODIFY `id` int NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `ban_user`\n--\nALTER TABLE `ban_user`\n  MODIFY `id` int NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `captcha`\n--\nALTER TABLE `captcha`\n  MODIFY `id` int NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `interface`\n--\nALTER TABLE `interface`\n  MODIFY `id` int NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `mail`\n--\nALTER TABLE `mail`\n  MODIFY `id` int NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `mail_log`\n--\nALTER TABLE `mail_log`\n  MODIFY `id` int NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `pages`\n--\nALTER TABLE `pages`\n  MODIFY `id` int NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `page_view`\n--\nALTER TABLE `page_view`\n  MODIFY `id` int NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `pastes`\n--\nALTER TABLE `pastes`\n  MODIFY `id` int NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `paste_views`\n--\nALTER TABLE `paste_views`\n  MODIFY `id` int NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `sitemap_options`\n--\nALTER TABLE `sitemap_options`\n  MODIFY `id` int NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `site_info`\n--\nALTER TABLE `site_info`\n  MODIFY `id` int NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `site_permissions`\n--\nALTER TABLE `site_permissions`\n  MODIFY `id` int NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `users`\n--\nALTER TABLE `users`\n  MODIFY `id` int NOT NULL AUTO_INCREMENT;\n\n--\n-- AUTO_INCREMENT for table `visitor_ips`\n--\nALTER TABLE `visitor_ips`\n  MODIFY `id` int NOT NULL AUTO_INCREMENT;\n\n--\n-- Constraints for dumped tables\n--\n\n--\n-- Constraints for table `pages`\n--\nALTER TABLE `pages`\n  ADD CONSTRAINT `fk_pages_navparent` FOREIGN KEY (`nav_parent`) REFERENCES `pages` (`id`) ON DELETE SET NULL;\n\n--\n-- Constraints for table `paste_views`\n--\nALTER TABLE `paste_views`\n  ADD CONSTRAINT `paste_views_ibfk_1` FOREIGN KEY (`paste_id`) REFERENCES `pastes` (`id`) ON DELETE CASCADE;\nCOMMIT;\n"
  },
  {
    "path": "includes/Highlight/HighlightResult.php",
    "content": "<?php\n\n/* Copyright (c) 2019 Geert Bergman (geert@scrivo.nl), highlight.php\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n *    this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n *    this list of conditions and the following disclaimer in the documentation\n *    and/or other materials provided with the distribution.\n * 3. Neither the name of \"highlight.js\", \"highlight.php\", nor the names of its\n *    contributors may be used to endorse or promote products derived from this\n *    software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nnamespace Highlight;\n\n/**\n * @api\n *\n * @since 9.17.1.0\n */\nabstract class HighlightResult\n{\n    /** @var int the relevance score */\n    public $relevance;\n\n    /** @var string the highlighted HTML code */\n    public $value;\n\n    /** @var string the language name */\n    public $language;\n\n    /** @var bool indicates whether any illegal matches were found */\n    public $illegal;\n\n    /** @var Mode|null top of the current mode stack */\n    public $top;\n\n    /** @var \\Exception|null */\n    public $errorRaised;\n\n    // @TODO In v10.x, remove \\stdClass from this type\n    /** @var \\stdClass|HighlightResult|null */\n    public $secondBest;\n}\n"
  },
  {
    "path": "includes/Highlight/Highlighter.php",
    "content": "<?php\n\n/* Copyright (c)\n * - 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js\n *              (original author)\n * - 2013-2019, Geert Bergman (geert@scrivo.nl), highlight.php\n * - 2014       Daniel Lynge, highlight.php (contributor)\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n *    this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n *    this list of conditions and the following disclaimer in the documentation\n *    and/or other materials provided with the distribution.\n * 3. Neither the name of \"highlight.js\", \"highlight.php\", nor the names of its\n *    contributors may be used to endorse or promote products derived from this\n *    software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nnamespace Highlight;\n\n/**\n * @api\n *\n * @since 7.5.0.0\n */\nclass Highlighter\n{\n    /**\n     * @since 9.12.0.4\n     */\n    const SPAN_END_TAG = \"</span>\";\n\n    /** @var bool */\n    private $safeMode = true;\n\n    // @TODO In v10.x, this value should be static to match highlight.js behavior\n    /** @var array<string, mixed> */\n    private $options;\n\n    /** @var string */\n    private $modeBuffer = \"\";\n\n    /** @var string */\n    private $result = \"\";\n\n    /** @var Mode|null */\n    private $top = null;\n\n    /** @var Language|null */\n    private $language = null;\n\n    /** @var int */\n    private $relevance = 0;\n\n    /** @var bool */\n    private $ignoreIllegals = false;\n\n    /** @var array<string, Mode> */\n    private $continuations = array();\n\n    /** @var RegExMatch */\n    private $lastMatch;\n\n    /** @var string The current code we are highlighting */\n    private $codeToHighlight;\n\n    /** @var string[] A list of all the bundled languages */\n    private static $bundledLanguages = array();\n\n    /** @var array<string, Language> A mapping of a language ID to a Language definition */\n    private static $classMap = array();\n\n    /** @var string[] A list of registered language IDs */\n    private static $languages = array();\n\n    /** @var array<string, string> A mapping from alias (key) to main language ID (value) */\n    private static $aliases = array();\n\n    /**\n     * @param bool $loadAllLanguages If true, will automatically register all languages distributed with this library.\n     *                               If false, user must explicitly register languages by calling `registerLanguage()`.\n     *\n     * @since 9.18.1.4 added `$loadAllLanguages` parameter\n     * @see Highlighter::registerLanguage()\n     */\n    public function __construct($loadAllLanguages = true)\n    {\n        $this->lastMatch = new RegExMatch(array());\n        $this->lastMatch->type = \"\";\n        $this->lastMatch->rule = null;\n\n        // @TODO In v10.x, remove the default value for the `languages` value to follow highlight.js behavior\n        $this->options = array(\n            'classPrefix' => 'hljs-',\n            'tabReplace' => null,\n            'useBR' => false,\n            'languages' => array(\n                \"xml\", \"json\", \"javascript\", \"css\", \"php\", \"http\",\n            ),\n        );\n\n        if ($loadAllLanguages) {\n            self::registerAllLanguages();\n        }\n    }\n\n    /**\n     * Return a list of all available languages bundled with this library.\n     *\n     * @since 9.18.1.4\n     *\n     * @return string[] An array of language names\n     */\n    public static function listBundledLanguages()\n    {\n        if (!empty(self::$bundledLanguages)) {\n            return self::$bundledLanguages;\n        }\n\n        // Languages that take precedence in the classMap array. (I don't know why...)\n        $bundledLanguages = array(\n            \"xml\" => true,\n            \"django\" => true,\n            \"javascript\" => true,\n            \"matlab\" => true,\n            \"cpp\" => true,\n        );\n\n        $languagePath = __DIR__ . '/languages/';\n        $d = @dir($languagePath);\n\n        if (!$d) {\n            throw new \\RuntimeException('Could not read bundled language definition directory.');\n        }\n\n        // @TODO In 10.x, rewrite this as a generator yielding results\n        while (($entry = $d->read()) !== false) {\n            if (substr($entry, -5) === \".json\") {\n                $languageId = substr($entry, 0, -5);\n                $filePath = $languagePath . $entry;\n\n                if (is_readable($filePath)) {\n                    $bundledLanguages[$languageId] = true;\n                }\n            }\n        }\n\n        $d->close();\n\n        return self::$bundledLanguages = array_keys($bundledLanguages);\n    }\n\n    /**\n     * Return a list of all the registered languages. Using this list in\n     * setAutodetectLanguages will turn on auto-detection for all supported\n     * languages.\n     *\n     * @since 9.18.1.4\n     *\n     * @param bool $includeAliases Specify whether language aliases should be\n     *                             included as well\n     *\n     * @return string[] An array of language names\n     */\n    public static function listRegisteredLanguages($includeAliases = false)\n    {\n        if ($includeAliases === true) {\n            return array_merge(self::$languages, array_keys(self::$aliases));\n        }\n\n        return self::$languages;\n    }\n\n    /**\n     * Register all 185+ languages that are bundled in this library.\n     *\n     * To register languages individually, use `registerLanguage`.\n     *\n     * @since 9.18.1.4 Method is now public\n     * @since 8.3.0.0\n     * @see Highlighter::registerLanguage\n     *\n     * @return void\n     */\n    public static function registerAllLanguages()\n    {\n        // Languages that take precedence in the classMap array.\n        $languagePath = __DIR__ . \"/languages/\";\n        foreach (array(\"xml\", \"django\", \"javascript\", \"matlab\", \"cpp\") as $languageId) {\n            $filePath = $languagePath . $languageId . \".json\";\n            if (is_readable($filePath)) {\n                self::registerLanguage($languageId, $filePath);\n            }\n        }\n\n        // @TODO In 10.x, call `listBundledLanguages()` instead when it's a generator\n        $d = @dir($languagePath);\n        if ($d) {\n            while (($entry = $d->read()) !== false) {\n                if (substr($entry, -5) === \".json\") {\n                    $languageId = substr($entry, 0, -5);\n                    $filePath = $languagePath . $entry;\n                    if (is_readable($filePath)) {\n                        self::registerLanguage($languageId, $filePath);\n                    }\n                }\n            }\n            $d->close();\n        }\n    }\n\n    /**\n     * Register a language definition with the Highlighter's internal language\n     * storage. Languages are stored in a static variable, so they'll be available\n     * across all instances. You only need to register a language once.\n     *\n     * @param string $languageId The unique name of a language\n     * @param string $filePath   The file path to the language definition\n     * @param bool   $overwrite  Overwrite language if it already exists\n     *\n     * @return Language The object containing the definition for a language's markup\n     */\n    public static function registerLanguage($languageId, $filePath, $overwrite = false)\n    {\n        if (!isset(self::$classMap[$languageId]) || $overwrite) {\n            $lang = new Language($languageId, $filePath);\n            self::$classMap[$languageId] = $lang;\n\n            self::$languages[] = $languageId;\n            self::$languages = array_unique(self::$languages);\n\n            if ($lang->aliases) {\n                foreach ($lang->aliases as $alias) {\n                    self::$aliases[$alias] = $languageId;\n                }\n            }\n        }\n\n        return self::$classMap[$languageId];\n    }\n\n    /**\n     * Clear all registered languages.\n     *\n     * @since 9.18.1.4\n     *\n     * @return void\n     */\n    public static function clearAllLanguages()\n    {\n        self::$classMap = array();\n        self::$languages = array();\n        self::$aliases = array();\n    }\n\n    /**\n     * @param RegEx|null $re\n     * @param string     $lexeme\n     *\n     * @return bool\n     */\n    private function testRe($re, $lexeme)\n    {\n        if (!$re) {\n            return false;\n        }\n\n        $lastIndex = $re->lastIndex;\n        $result = $re->exec($lexeme);\n        $re->lastIndex = $lastIndex;\n\n        return $result && $result->index === 0;\n    }\n\n    /**\n     * @param string $value\n     *\n     * @return RegEx\n     */\n    private function escapeRe($value)\n    {\n        return new RegEx(sprintf('/%s/um', preg_quote($value)));\n    }\n\n    /**\n     * @param Mode   $mode\n     * @param string $lexeme\n     *\n     * @return Mode|null\n     */\n    private function endOfMode($mode, $lexeme)\n    {\n        if ($this->testRe($mode->endRe, $lexeme)) {\n            while ($mode->endsParent && $mode->parent) {\n                $mode = $mode->parent;\n            }\n\n            return $mode;\n        }\n\n        if ($mode->endsWithParent) {\n            return $this->endOfMode($mode->parent, $lexeme);\n        }\n\n        return null;\n    }\n\n    /**\n     * @param Mode       $mode\n     * @param RegExMatch $match\n     *\n     * @return mixed|null\n     */\n    private function keywordMatch($mode, $match)\n    {\n        $kwd = $this->language->case_insensitive ? mb_strtolower($match[0]) : $match[0];\n\n        return isset($mode->keywords[$kwd]) ? $mode->keywords[$kwd] : null;\n    }\n\n    /**\n     * @param string $className\n     * @param string $insideSpan\n     * @param bool   $leaveOpen\n     * @param bool   $noPrefix\n     *\n     * @return string\n     */\n    private function buildSpan($className, $insideSpan, $leaveOpen = false, $noPrefix = false)\n    {\n        if (!$leaveOpen && $insideSpan === '') {\n            return '';\n        }\n\n        if (!$className) {\n            return $insideSpan;\n        }\n\n        $classPrefix = $noPrefix ? \"\" : $this->options['classPrefix'];\n        $openSpan = \"<span class=\\\"\" . $classPrefix;\n        $closeSpan = $leaveOpen ? \"\" : self::SPAN_END_TAG;\n\n        $openSpan .= $className . \"\\\">\";\n\n        return $openSpan . $insideSpan . $closeSpan;\n    }\n\n    /**\n     * @param string $value\n     *\n     * @return string\n     */\n    private function escape($value)\n    {\n        return htmlspecialchars($value, ENT_NOQUOTES);\n    }\n\n    /**\n     * @return string\n     */\n    private function processKeywords()\n    {\n        if (!$this->top->keywords) {\n            return $this->escape($this->modeBuffer);\n        }\n\n        $result = \"\";\n        $lastIndex = 0;\n        $this->top->lexemesRe->lastIndex = 0;\n        $match = $this->top->lexemesRe->exec($this->modeBuffer);\n\n        while ($match) {\n            $result .= $this->escape(substr($this->modeBuffer, $lastIndex, $match->index - $lastIndex));\n            $keyword_match = $this->keywordMatch($this->top, $match);\n\n            if ($keyword_match) {\n                $this->relevance += $keyword_match[1];\n                $result .= $this->buildSpan($keyword_match[0], $this->escape($match[0]));\n            } else {\n                $result .= $this->escape($match[0]);\n            }\n\n            $lastIndex = $this->top->lexemesRe->lastIndex;\n            $match = $this->top->lexemesRe->exec($this->modeBuffer);\n        }\n\n        return $result . $this->escape(substr($this->modeBuffer, $lastIndex));\n    }\n\n    /**\n     * @return string\n     */\n    private function processSubLanguage()\n    {\n        try {\n            $hl = new Highlighter();\n\n            // @TODO in v10.x, this should no longer be necessary once `$options` is made static\n            $hl->setAutodetectLanguages($this->options['languages']);\n            $hl->setClassPrefix($this->options['classPrefix']);\n            $hl->setTabReplace($this->options['tabReplace']);\n\n            if (!$this->safeMode) {\n                $hl->disableSafeMode();\n            }\n\n            $explicit = is_string($this->top->subLanguage);\n            if ($explicit && !in_array($this->top->subLanguage, self::$languages)) {\n                return $this->escape($this->modeBuffer);\n            }\n\n            if ($explicit) {\n                $res = $hl->highlight(\n                    $this->top->subLanguage,\n                    $this->modeBuffer,\n                    true,\n                    isset($this->continuations[$this->top->subLanguage]) ? $this->continuations[$this->top->subLanguage] : null\n                );\n            } else {\n                $res = $hl->highlightAuto(\n                    $this->modeBuffer,\n                    count($this->top->subLanguage) ? $this->top->subLanguage : null\n                );\n            }\n\n            // Counting embedded language score towards the host language may be disabled\n            // with zeroing the containing mode relevance. Use case in point is Markdown that\n            // allows XML everywhere and makes every XML snippet to have a much larger Markdown\n            // score.\n            if ($this->top->relevance > 0) {\n                $this->relevance += $res->relevance;\n            }\n            if ($explicit) {\n                $this->continuations[$this->top->subLanguage] = $res->top;\n            }\n\n            return $this->buildSpan($res->language, $res->value, false, true);\n        } catch (\\Exception $e) {\n            return $this->escape($this->modeBuffer);\n        }\n    }\n\n    /**\n     * @return void\n     */\n    private function processBuffer()\n    {\n        if (is_object($this->top) && $this->top->subLanguage) {\n            $this->result .= $this->processSubLanguage();\n        } else {\n            $this->result .= $this->processKeywords();\n        }\n\n        $this->modeBuffer = '';\n    }\n\n    /**\n     * @param Mode $mode\n     *\n     * @return void\n     */\n    private function startNewMode($mode)\n    {\n        $this->result .= $mode->className ? $this->buildSpan($mode->className, \"\", true) : \"\";\n\n        $t = clone $mode;\n        $t->parent = $this->top;\n        $this->top = $t;\n    }\n\n    /**\n     * @param RegExMatch $match\n     *\n     * @return int\n     */\n    private function doBeginMatch($match)\n    {\n        $lexeme = $match[0];\n        $newMode = $match->rule;\n\n        if ($newMode && $newMode->endSameAsBegin) {\n            $newMode->endRe = $this->escapeRe($lexeme);\n        }\n\n        if ($newMode->skip) {\n            $this->modeBuffer .= $lexeme;\n        } else {\n            if ($newMode->excludeBegin) {\n                $this->modeBuffer .= $lexeme;\n            }\n            $this->processBuffer();\n            if (!$newMode->returnBegin && !$newMode->excludeBegin) {\n                $this->modeBuffer = $lexeme;\n            }\n        }\n        $this->startNewMode($newMode);\n\n        return $newMode->returnBegin ? 0 : strlen($lexeme);\n    }\n\n    /**\n     * @param RegExMatch $match\n     *\n     * @return int|null\n     */\n    private function doEndMatch($match)\n    {\n        $lexeme = $match[0];\n        $matchPlusRemainder = substr($this->codeToHighlight, $match->index);\n        $endMode = $this->endOfMode($this->top, $matchPlusRemainder);\n\n        if (!$endMode) {\n            return null;\n        }\n\n        $origin = $this->top;\n        if ($origin->skip) {\n            $this->modeBuffer .= $lexeme;\n        } else {\n            if (!($origin->returnEnd || $origin->excludeEnd)) {\n                $this->modeBuffer .= $lexeme;\n            }\n            $this->processBuffer();\n            if ($origin->excludeEnd) {\n                $this->modeBuffer = $lexeme;\n            }\n        }\n\n        do {\n            if ($this->top->className) {\n                $this->result .= self::SPAN_END_TAG;\n            }\n            if (!$this->top->skip && !$this->top->subLanguage) {\n                $this->relevance += $this->top->relevance;\n            }\n            $this->top = $this->top->parent;\n        } while ($this->top !== $endMode->parent);\n\n        if ($endMode->starts) {\n            if ($endMode->endSameAsBegin) {\n                $endMode->starts->endRe = $endMode->endRe;\n            }\n\n            $this->startNewMode($endMode->starts);\n        }\n\n        return $origin->returnEnd ? 0 : strlen($lexeme);\n    }\n\n    /**\n     * @param string          $textBeforeMatch\n     * @param RegExMatch|null $match\n     *\n     * @return int\n     */\n    private function processLexeme($textBeforeMatch, $match = null)\n    {\n        $lexeme = $match ? $match[0] : null;\n\n        // add non-matched text to the current mode buffer\n        $this->modeBuffer .= $textBeforeMatch;\n\n        if ($lexeme === null) {\n            $this->processBuffer();\n\n            return 0;\n        }\n\n        // we've found a 0 width match and we're stuck, so we need to advance\n        // this happens when we have badly behaved rules that have optional matchers to the degree that\n        // sometimes they can end up matching nothing at all\n        // Ref: https://github.com/highlightjs/highlight.js/issues/2140\n        if ($this->lastMatch->type === \"begin\" && $match->type === \"end\" && $this->lastMatch->index === $match->index && $lexeme === \"\") {\n            // spit the \"skipped\" character that our regex choked on back into the output sequence\n            $this->modeBuffer .= substr($this->codeToHighlight, $match->index, 1);\n\n            return 1;\n        }\n        $this->lastMatch = $match;\n\n        if ($match->type === \"begin\") {\n            return $this->doBeginMatch($match);\n        } elseif ($match->type === \"illegal\" && !$this->ignoreIllegals) {\n            // illegal match, we do not continue processing\n            $_modeRaw = isset($this->top->className) ? $this->top->className : \"<unnamed>\";\n\n            throw new \\UnexpectedValueException(\"Illegal lexeme \\\"$lexeme\\\" for mode \\\"$_modeRaw\\\"\");\n        } elseif ($match->type === \"end\") {\n            $processed = $this->doEndMatch($match);\n\n            if ($processed !== null) {\n                return $processed;\n            }\n        }\n\n        // Why might be find ourselves here?  Only one occasion now.  An end match that was\n        // triggered but could not be completed.  When might this happen?  When an `endSameasBegin`\n        // rule sets the end rule to a specific match.  Since the overall mode termination rule that's\n        // being used to scan the text isn't recompiled that means that any match that LOOKS like\n        // the end (but is not, because it is not an exact match to the beginning) will\n        // end up here.  A definite end match, but when `doEndMatch` tries to \"reapply\"\n        // the end rule and fails to match, we wind up here, and just silently ignore the end.\n        //\n        // This causes no real harm other than stopping a few times too many.\n\n        $this->modeBuffer .= $lexeme;\n\n        return strlen($lexeme);\n    }\n\n    /**\n     * Replace tabs for something more usable.\n     *\n     * @param string $code\n     *\n     * @return string\n     */\n    private function replaceTabs($code)\n    {\n        if ($this->options['tabReplace'] !== null) {\n            return str_replace(\"\\t\", $this->options['tabReplace'], $code);\n        }\n\n        return $code;\n    }\n\n    /**\n     * Set the languages that will used for auto-detection. When using auto-\n     * detection the code to highlight will be probed for every language in this\n     * set. Limiting this set to only the languages you want to use will greatly\n     * improve highlighting speed.\n     *\n     * @param string[] $set An array of language games to use for autodetection.\n     *                      This defaults to a typical set Web development\n     *                      languages.\n     *\n     * @return void\n     */\n    public function setAutodetectLanguages(array $set)\n    {\n        $this->options['languages'] = array_unique($set);\n    }\n\n    /**\n     * Get the tab replacement string.\n     *\n     * @return string The tab replacement string\n     */\n    public function getTabReplace()\n    {\n        return $this->options['tabReplace'];\n    }\n\n    /**\n     * Set the tab replacement string. This defaults to NULL: no tabs\n     * will be replaced.\n     *\n     * @param string $tabReplace The tab replacement string\n     *\n     * @return void\n     */\n    public function setTabReplace($tabReplace)\n    {\n        $this->options['tabReplace'] = $tabReplace;\n    }\n\n    /**\n     * Get the class prefix string.\n     *\n     * @return string The class prefix string\n     */\n    public function getClassPrefix()\n    {\n        return $this->options['classPrefix'];\n    }\n\n    /**\n     * Set the class prefix string.\n     *\n     * @param string $classPrefix The class prefix string\n     *\n     * @return void\n     */\n    public function setClassPrefix($classPrefix)\n    {\n        $this->options['classPrefix'] = $classPrefix;\n    }\n\n    /**\n     * @since 9.17.1.0\n     *\n     * @return void\n     */\n    public function enableSafeMode()\n    {\n        $this->safeMode = true;\n    }\n\n    /**\n     * @since 9.17.1.0\n     *\n     * @return void\n     */\n    public function disableSafeMode()\n    {\n        $this->safeMode = false;\n    }\n\n    /**\n     * @param string $name\n     *\n     * @return Language|null\n     */\n    private function getLanguage($name)\n    {\n        if (isset(self::$classMap[$name])) {\n            return self::$classMap[$name];\n        } elseif (isset(self::$aliases[$name]) && isset(self::$classMap[self::$aliases[$name]])) {\n            return self::$classMap[self::$aliases[$name]];\n        }\n\n        return null;\n    }\n\n    /**\n     * Determine whether or not a language definition supports auto detection.\n     *\n     * @param string $name Language name\n     *\n     * @return bool\n     */\n    private function autoDetection($name)\n    {\n        $lang = $this->getLanguage($name);\n\n        return $lang && !$lang->disableAutodetect;\n    }\n\n    /**\n     * Core highlighting function. Accepts a language name, or an alias, and a\n     * string with the code to highlight. Returns an object with the following\n     * properties:\n     * - relevance (int)\n     * - value (an HTML string with highlighting markup).\n     *\n     * @todo In v10.x, change the return type from \\stdClass to HighlightResult\n     *\n     * @param string    $languageName\n     * @param string    $code\n     * @param bool      $ignoreIllegals\n     * @param Mode|null $continuation\n     *\n     * @throws \\DomainException if the requested language was not in this\n     *                          Highlighter's language set\n     * @throws \\Exception       if an invalid regex was given in a language file\n     *\n     * @return HighlightResult|\\stdClass\n     */\n    public function highlight($languageName, $code, $ignoreIllegals = true, $continuation = null)\n    {\n        $this->codeToHighlight = $code;\n        $this->language = $this->getLanguage($languageName);\n\n        if ($this->language === null) {\n            throw new \\DomainException(\"Unknown language: \\\"$languageName\\\"\");\n        }\n\n        $this->language->compile($this->safeMode);\n        $this->top = $continuation ? $continuation : $this->language;\n        $this->continuations = array();\n        $this->result = \"\";\n\n        for ($current = $this->top; $current !== $this->language; $current = $current->parent) {\n            if ($current->className) {\n                $this->result = $this->buildSpan($current->className, '', true) . $this->result;\n            }\n        }\n\n        $this->modeBuffer = \"\";\n        $this->relevance = 0;\n        $this->ignoreIllegals = $ignoreIllegals;\n\n        /** @var HighlightResult $res */\n        $res = new \\stdClass();\n        $res->relevance = 0;\n        $res->value = \"\";\n        $res->language = \"\";\n        $res->top = null;\n        $res->errorRaised = null;\n\n        try {\n            $match = null;\n            $count = 0;\n            $index = 0;\n\n            while ($this->top) {\n                $this->top->terminators->lastIndex = $index;\n                $match = $this->top->terminators->exec($this->codeToHighlight);\n\n                if (!$match) {\n                    break;\n                }\n\n                $count = $this->processLexeme(substr($this->codeToHighlight, $index, $match->index - $index), $match);\n                $index = $match->index + $count;\n            }\n\n            $this->processLexeme(substr($this->codeToHighlight, $index));\n\n            for ($current = $this->top; isset($current->parent); $current = $current->parent) {\n                if ($current->className) {\n                    $this->result .= self::SPAN_END_TAG;\n                }\n            }\n\n            $res->relevance = $this->relevance;\n            $res->value = $this->replaceTabs($this->result);\n            $res->illegal = false;\n            $res->language = $this->language->name;\n            $res->top = $this->top;\n\n            return $res;\n        } catch (\\Exception $e) {\n            if (strpos($e->getMessage(), \"Illegal\") !== false) {\n                $res->illegal = true;\n                $res->relevance = 0;\n                $res->value = $this->escape($this->codeToHighlight);\n\n                return $res;\n            } elseif ($this->safeMode) {\n                $res->relevance = 0;\n                $res->value = $this->escape($this->codeToHighlight);\n                $res->language = $languageName;\n                $res->top = $this->top;\n                $res->errorRaised = $e;\n\n                return $res;\n            }\n\n            throw $e;\n        }\n    }\n\n    /**\n     * Highlight the given code by highlighting the given code with each\n     * registered language and then finding the match with highest accuracy.\n     *\n     * @param string        $code\n     * @param string[]|null $languageSubset When set to null, this method will attempt to highlight $text with each\n     *                                      language. Set this to an array of languages of your choice to limit the\n     *                                      amount of languages to try.\n     *\n     * @throws \\Exception       if an invalid regex was given in a language file\n     * @throws \\DomainException if the attempted language to check does not exist\n     *\n     * @return HighlightResult|\\stdClass\n     */\n    public function highlightAuto($code, $languageSubset = null)\n    {\n        /** @var HighlightResult $result */\n        $result = new \\stdClass();\n        $result->relevance = 0;\n        $result->value = $this->escape($code);\n        $result->language = \"\";\n        $secondBest = clone $result;\n\n        if ($languageSubset === null) {\n            $optionsLanguages = $this->options['languages'];\n\n            if (is_array($optionsLanguages) && count($optionsLanguages) > 0) {\n                $languageSubset = $optionsLanguages;\n            } else {\n                $languageSubset = self::$languages;\n            }\n        }\n\n        foreach ($languageSubset as $name) {\n            if ($this->getLanguage($name) === null || !$this->autoDetection($name)) {\n                continue;\n            }\n\n            $current = $this->highlight($name, $code, false);\n\n            if ($current->relevance > $secondBest->relevance) {\n                $secondBest = $current;\n            }\n\n            if ($current->relevance > $result->relevance) {\n                $secondBest = $result;\n                $result = $current;\n            }\n        }\n\n        if ($secondBest->language) {\n            $result->secondBest = $secondBest;\n        }\n\n        return $result;\n    }\n\n    /**\n     * Returns list of all available aliases for given language name.\n     *\n     * @param string $name name or alias of language to look-up\n     *\n     * @throws \\DomainException if the requested language was not in this\n     *                          Highlighter's language set\n     *\n     * @since 9.12.0.3\n     *\n     * @return string[] An array of all aliases associated with the requested\n     *                  language name language. Passed-in name is included as\n     *                  well.\n     */\n    public function getAliasesForLanguage($name)\n    {\n        $language = self::getLanguage($name);\n\n        if ($language === null) {\n            throw new \\DomainException(\"Unknown language: $language\");\n        }\n\n        if ($language->aliases === null) {\n            return array($language->name);\n        }\n\n        return array_merge(array($language->name), $language->aliases);\n    }\n}\n"
  },
  {
    "path": "includes/Highlight/JsonRef.php",
    "content": "<?php\n\n/* Copyright (c) 2014-2019 Geert Bergman (geert@scrivo.nl), highlight.php\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n *    this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n *    this list of conditions and the following disclaimer in the documentation\n *    and/or other materials provided with the distribution.\n * 3. Neither the name of \"highlight.js\", \"highlight.php\", nor the names of its\n *    contributors may be used to endorse or promote products derived from this\n *    software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\n/**\n * Implementation of the \\Highlight\\JsonRef class.\n */\n\nnamespace Highlight;\n\n/**\n * Class to decode JSON data that contains path-based references.\n *\n * The language data file for highlight.js are written as JavaScript classes\n * and therefore may contain variables. This allows for inner references in\n * the language data. This kind of data can be converterd to JSON using the\n * path based references. This class can be used to decode such JSON\n * structures. It follows the conventions for path based referencing as\n * used in dojox.json.ref form the Dojo toolkit (Javascript). A typical\n * example of such a structure is as follows:\n *\n * ```json\n * {\n *   \"name\":\"Kris Zyp\",\n *   \"children\":[{\"name\":\"Jennika Zyp\"},{\"name\":\"Korban Zyp\"}],\n *   \"spouse\":{\n *     \"name\":\"Nicole Zyp\",\n *     \"spouse\":{\"$ref\":\"#\"},\n *     \"children\":{\"$ref\":\"#children\"}\n *   },\n *   \"oldestChild\":{\"$ref\":\"#children.0\"}\n * }\n * ```\n *\n * Usage example:\n *\n * ```php\n * $jr = new JsonRef();\n * $data = $jr->decode(file_get_contents(\"data.json\"));\n * echo $data->spouse->spouse->name; // echos 'Kris Zyp'\n * echo $data->oldestChild->name; // echos 'Jennika Zyp'\n * ```\n *\n * @todo In Highlight.php 10.x, mark this class final with a keyword.\n *\n * @since 9.16.0.0 Class has been marked as final\n *\n * @final\n *\n * @internal\n */\nclass JsonRef\n{\n    /**\n     * Array to hold all data paths in the given JSON data.\n     *\n     * @var array<string, mixed>\n     */\n    private $paths = null;\n\n    /**\n     * Recurse through the data tree and fill an array of paths that reference\n     * the nodes in the decoded JSON data structure.\n     *\n     * @param mixed  $s Decoded JSON data (decoded with json_decode)\n     * @param string $r The current path key (for example: '#children.0').\n     *\n     * @return void\n     */\n    private function getPaths(&$s, $r = \"#\")\n    {\n        $this->paths[$r] = &$s;\n\n        if (is_array($s) || is_object($s)) {\n            foreach ($s as $k => &$v) {\n                if ($k !== \"\\$ref\") {\n                    $this->getPaths($v, $r == \"#\" ? \"#{$k}\" : \"{$r}.{$k}\");\n                }\n            }\n        }\n    }\n\n    /**\n     * Recurse through the data tree and resolve all path references.\n     *\n     * @param mixed $s     Decoded JSON data (decoded with json_decode)\n     * @param int   $limit\n     * @param int   $depth\n     *\n     * @return void\n     */\n    private function resolvePathReferences(&$s, $limit = 20, $depth = 1)\n    {\n        if ($depth >= $limit) {\n            return;\n        }\n\n        ++$depth;\n\n        if (is_array($s) || is_object($s)) {\n            foreach ($s as $k => &$v) {\n                if ($k === \"\\$ref\") {\n                    $s = $this->paths[$v];\n                } else {\n                    $this->resolvePathReferences($v, $limit, $depth);\n                }\n            }\n        }\n    }\n\n    /**\n     * Decode JSON data that may contain path based references.\n     *\n     * @param object $json JSON data string or JSON data object\n     *\n     * @return void\n     */\n    public function decodeRef(&$json)\n    {\n        // Clear the path array.\n        $this->paths = array();\n\n        // Get all data paths.\n        $this->getPaths($json);\n\n        // Resolve all path references.\n        $this->resolvePathReferences($json);\n    }\n}\n"
  },
  {
    "path": "includes/Highlight/Language.php",
    "content": "<?php\n\n/* Copyright (c)\n * - 2006-2013, Ivan Sagalaev (maniacsoftwaremaniacs.org), highlight.js\n *              (original author)\n * - 2013-2019, Geert Bergman (geertscrivo.nl), highlight.php\n * - 2014       Daniel Lynge, highlight.php (contributor)\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n *    this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n *    this list of conditions and the following disclaimer in the documentation\n *    and/or other materials provided with the distribution.\n * 3. Neither the name of \"highlight.js\", \"highlight.php\", nor the names of its\n *    contributors may be used to endorse or promote products derived from this\n *    software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nnamespace Highlight;\n\n/**\n * @todo In highlight.php 10.x, replace the @final attribute with the `final` keyword.\n *\n * @final\n *\n * @internal\n *\n * // Backward compatibility properties\n *\n * @property Mode $mode            (DEPRECATED) All properties traditionally inside of $mode are now available directly from this class.\n * @property bool $caseInsensitive (DEPRECATED) Due to compatibility requirements with highlight.js, use `case_insensitive` instead.\n */\nclass Language extends Mode\n{\n    /** @var string[] */\n    private static $COMMON_KEYWORDS = array('of', 'and', 'for', 'in', 'not', 'or', 'if', 'then');\n\n    /** @var string */\n    public $name;\n\n    /** @var Mode|null */\n    private $mode = null;\n\n    /**\n     * @param string $lang\n     * @param string $filePath\n     *\n     * @throws \\InvalidArgumentException when the given $filePath is inaccessible\n     */\n    public function __construct($lang, $filePath)\n    {\n        $this->name = $lang;\n\n        // We're loading the JSON definition file as an \\stdClass object instead of an associative array. This is being\n        // done to take advantage of objects being pass by reference automatically in PHP whereas arrays are pass by\n        // value.\n        $json = file_get_contents($filePath);\n\n        if ($json === false) {\n            throw new \\InvalidArgumentException(\"Language file inaccessible: $filePath\");\n        }\n\n        $this->mode = json_decode($json);\n    }\n\n    /**\n     * @param string $name\n     *\n     * @return bool|Mode|null\n     */\n    public function __get($name)\n    {\n        if (isset($this->mode->{$name})) {\n            return $this->mode->{$name};\n        }\n\n        return null;\n    }\n\n    /**\n     * @param string $value\n     * @param bool   $global\n     *\n     * @return RegEx\n     */\n    private function langRe($value, $global = false)\n    {\n        return RegExUtils::langRe($value, $global, $this->case_insensitive);\n    }\n\n    /**\n     * Performs a shallow merge of multiple objects into one.\n     *\n     * @param Mode                 $params the objects to merge\n     * @param array<string, mixed> ...$_\n     *\n     * @return Mode\n     */\n    private function inherit($params, $_ = array())\n    {\n        /** @var Mode $result */\n        $result = new \\stdClass();\n        $objects = func_get_args();\n        $parent = array_shift($objects);\n\n        foreach ($parent as $key => $value) {\n            $result->{$key} = $value;\n        }\n\n        foreach ($objects as $object) {\n            foreach ($object as $key => $value) {\n                $result->{$key} = $value;\n            }\n        }\n\n        return $result;\n    }\n\n    /**\n     * @param Mode|null $mode\n     *\n     * @return bool\n     */\n    private function dependencyOnParent($mode)\n    {\n        if (!$mode) {\n            return false;\n        }\n\n        if (isset($mode->endsWithParent) && $mode->endsWithParent) {\n            return $mode->endsWithParent;\n        }\n\n        return $this->dependencyOnParent(isset($mode->starts) ? $mode->starts : null);\n    }\n\n    /**\n     * @param Mode $mode\n     *\n     * @return array<int, \\stdClass|Mode>\n     */\n    private function expandOrCloneMode($mode)\n    {\n        if ($mode->variants && !$mode->cachedVariants) {\n            $mode->cachedVariants = array();\n\n            foreach ($mode->variants as $variant) {\n                $mode->cachedVariants[] = $this->inherit($mode, array('variants' => null), $variant);\n            }\n        }\n\n        // EXPAND\n        // if we have variants then essentially \"replace\" the mode with the variants\n        // this happens in compileMode, where this function is called from\n        if ($mode->cachedVariants) {\n            return $mode->cachedVariants;\n        }\n\n        // CLONE\n        // if we have dependencies on parents then we need a unique\n        // instance of ourselves, so we can be reused with many\n        // different parents without issue\n        if ($this->dependencyOnParent($mode)) {\n            return array($this->inherit($mode, array(\n                'starts' => $mode->starts ? $this->inherit($mode->starts) : null,\n            )));\n        }\n\n        // highlight.php does not have a concept freezing our Modes\n\n        // no special dependency issues, just return ourselves\n        return array($mode);\n    }\n\n    /**\n     * @param Mode      $mode\n     * @param Mode|null $parent\n     *\n     * @return void\n     */\n    private function compileMode($mode, $parent = null)\n    {\n        Mode::_normalize($mode);\n\n        if ($mode->compiled) {\n            return;\n        }\n\n        $mode->compiled = true;\n        $mode->keywords = $mode->keywords ? $mode->keywords : $mode->beginKeywords;\n\n        if ($mode->keywords) {\n            $mode->keywords = $this->compileKeywords($mode->keywords, (bool) $this->case_insensitive);\n        }\n\n        $mode->lexemesRe = $this->langRe($mode->lexemes ? $mode->lexemes : \"\\w+\", true);\n\n        if ($parent) {\n            if ($mode->beginKeywords) {\n                $mode->begin = \"\\\\b(\" . implode(\"|\", explode(\" \", $mode->beginKeywords)) . \")\\\\b\";\n            }\n\n            if (!$mode->begin) {\n                $mode->begin = \"\\B|\\b\";\n            }\n\n            $mode->beginRe = $this->langRe($mode->begin);\n\n            if ($mode->endSameAsBegin) {\n                $mode->end = $mode->begin;\n            }\n\n            if (!$mode->end && !$mode->endsWithParent) {\n                $mode->end = \"\\B|\\b\";\n            }\n\n            if ($mode->end) {\n                $mode->endRe = $this->langRe($mode->end);\n            }\n\n            $mode->terminator_end = $mode->end;\n\n            if ($mode->endsWithParent && $parent->terminator_end) {\n                $mode->terminator_end .= ($mode->end ? \"|\" : \"\") . $parent->terminator_end;\n            }\n        }\n\n        if ($mode->illegal) {\n            $mode->illegalRe = $this->langRe($mode->illegal);\n        }\n\n        if ($mode->relevance === null) {\n            $mode->relevance = 1;\n        }\n\n        if (!$mode->contains) {\n            $mode->contains = array();\n        }\n\n        /** @var Mode[] $expandedContains */\n        $expandedContains = array();\n        foreach ($mode->contains as &$c) {\n            if ($c instanceof \\stdClass) {\n                Mode::_normalize($c);\n            }\n\n            $expandedContains = array_merge($expandedContains, $this->expandOrCloneMode(\n                $c === 'self' ? $mode : $c\n            ));\n        }\n        $mode->contains = $expandedContains;\n\n        /** @var Mode $contain */\n        foreach ($mode->contains as $contain) {\n            $this->compileMode($contain, $mode);\n        }\n\n        if ($mode->starts) {\n            $this->compileMode($mode->starts, $parent);\n        }\n\n        $terminators = new Terminators($this->case_insensitive);\n        $mode->terminators = $terminators->_buildModeRegex($mode);\n    }\n\n    /**\n     * @param array<string, string>|string $rawKeywords\n     * @param bool                         $caseSensitive\n     *\n     * @return array<string, array<int, string|int>>\n     */\n    private function compileKeywords($rawKeywords, $caseSensitive)\n    {\n        /** @var array<string, array<int, string|int>> $compiledKeywords */\n        $compiledKeywords = array();\n\n        if (is_string($rawKeywords)) {\n            $this->splitAndCompile(\"keyword\", $rawKeywords, $compiledKeywords, $caseSensitive);\n        } else {\n            foreach ($rawKeywords as $className => $rawKeyword) {\n                $this->splitAndCompile($className, $rawKeyword, $compiledKeywords, $caseSensitive);\n            }\n        }\n\n        return $compiledKeywords;\n    }\n\n    /**\n     * @param string                                $className\n     * @param string                                $str\n     * @param array<string, array<int, string|int>> $compiledKeywords\n     * @param bool                                  $caseSensitive\n     *\n     * @return void\n     */\n    private function splitAndCompile($className, $str, array &$compiledKeywords, $caseSensitive)\n    {\n        if ($caseSensitive) {\n            $str = strtolower($str);\n        }\n\n        $keywords = explode(' ', $str);\n\n        foreach ($keywords as $keyword) {\n            $pair = explode('|', $keyword);\n            $providedScore = isset($pair[1]) ? $pair[1] : null;\n            $compiledKeywords[$pair[0]] = array($className, $this->scoreForKeyword($pair[0], $providedScore));\n        }\n    }\n\n    /**\n     * @param string $keyword\n     * @param string $providedScore\n     *\n     * @return int\n     */\n    private function scoreForKeyword($keyword, $providedScore)\n    {\n        if ($providedScore) {\n            return (int) $providedScore;\n        }\n\n        return $this->commonKeyword($keyword) ? 0 : 1;\n    }\n\n    /**\n     * @param string $word\n     *\n     * @return bool\n     */\n    private function commonKeyword($word)\n    {\n        return in_array(strtolower($word), self::$COMMON_KEYWORDS);\n    }\n\n    /**\n     * Compile the Language definition.\n     *\n     * @param bool $safeMode\n     *\n     * @since 9.17.1.0 The 'safeMode' parameter was added.\n     *\n     * @return void\n     */\n    public function compile($safeMode)\n    {\n        if ($this->compiled) {\n            return;\n        }\n\n        $jr = new JsonRef();\n        $jr->decodeRef($this->mode);\n\n        // self is not valid at the top-level\n        if (isset($this->mode->contains) && !in_array(\"self\", $this->mode->contains)) {\n            if (!$safeMode) {\n                throw new \\LogicException(\"`self` is not supported at the top-level of a language.\");\n            }\n            $this->mode->contains = array_filter($this->mode->contains, function ($mode) {\n                return $mode !== \"self\";\n            });\n        }\n\n        $this->compileMode($this->mode);\n    }\n}\n"
  },
  {
    "path": "includes/Highlight/Mode.php",
    "content": "<?php\n\n/* Copyright (c) 2019 Geert Bergman (geert@scrivo.nl), highlight.php\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n *    this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n *    this list of conditions and the following disclaimer in the documentation\n *    and/or other materials provided with the distribution.\n * 3. Neither the name of \"highlight.js\", \"highlight.php\", nor the names of its\n *    contributors may be used to endorse or promote products derived from this\n *    software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nnamespace Highlight;\n\n/**\n * A PHP representation of a Mode in the JS library.\n *\n * @internal\n *\n * @since 9.16.0.0\n *\n * Language definition set via language definition JSON files\n *\n * @property bool                                  $case_insensitive  = false\n * @property string[]                              $aliases           = array()\n * @property string|null                           $className         = null\n * @property string|null                           $begin             = null\n * @property RegEx|null                            $beginRe           = null\n * @property string|null                           $end               = null\n * @property RegEx|null                            $endRe             = null\n * @property string|null                           $beginKeywords     = null\n * @property bool                                  $endsWithParent    = false\n * @property bool                                  $endsParent        = false\n * @property bool                                  $endSameAsBegin    = false\n * @property string|null                           $lexemes           = null\n * @property RegEx|null                            $lexemesRe         = null\n * @property array<string, array<int, string|int>> $keywords          = array()\n * @property string|null                           $illegal           = null\n * @property RegEx|null                            $illegalRe         = null\n * @property bool                                  $excludeBegin      = false\n * @property bool                                  $excludeEnd        = false\n * @property bool                                  $returnBegin       = false\n * @property bool                                  $returnEnd         = false\n * @property Mode[]                                $contains          = array()\n * @property Mode|null                             $starts            = null\n * @property Mode[]                                $variants          = array()\n * @property int|null                              $relevance         = null\n * @property string|string[]|null                  $subLanguage       = null\n * @property bool                                  $skip              = false\n * @property bool                                  $disableAutodetect = false\n *\n * Properties set at runtime by the language compilation process\n * @property array<int, Mode> $cachedVariants = array()\n * @property Terminators|null $terminators    = null\n * @property string           $terminator_end = \"\"\n * @property bool             $compiled       = false\n * @property Mode|null        $parent         = null\n * @property string           $type           = ''\n *\n * @see https://highlightjs.readthedocs.io/en/latest/reference.html\n */\nabstract class Mode extends \\stdClass\n{\n    /**\n     * Fill in the missing properties that this Mode does not have.\n     *\n     * @internal\n     *\n     * @param \\stdClass|null $obj\n     *\n     * @since 9.16.0.0\n     *\n     * @return void\n     */\n    public static function _normalize(&$obj)\n    {\n        // Don't overload our Modes if we've already normalized it\n        if (isset($obj->__IS_COMPLETE)) {\n            return;\n        }\n\n        if ($obj === null) {\n            $obj = new \\stdClass();\n        }\n\n        $patch = array(\n            \"begin\" => true,\n            \"end\" => true,\n            \"lexemes\" => true,\n            \"illegal\" => true,\n        );\n\n        // These values come in from JSON definition files\n        $defaultValues = array(\n            \"case_insensitive\" => false,\n            \"aliases\" => array(),\n            \"className\" => null,\n            \"begin\" => null,\n            \"beginRe\" => null,\n            \"end\" => null,\n            \"endRe\" => null,\n            \"beginKeywords\" => null,\n            \"endsWithParent\" => false,\n            \"endsParent\" => false,\n            \"endSameAsBegin\" => false,\n            \"lexemes\" => null,\n            \"lexemesRe\" => null,\n            \"keywords\" => array(),\n            \"illegal\" => null,\n            \"illegalRe\" => null,\n            \"excludeBegin\" => false,\n            \"excludeEnd\" => false,\n            \"returnBegin\" => false,\n            \"returnEnd\" => false,\n            \"contains\" => array(),\n            \"starts\" => null,\n            \"variants\" => array(),\n            \"relevance\" => null,\n            \"subLanguage\" => null,\n            \"skip\" => false,\n            \"disableAutodetect\" => false,\n        );\n\n        // These values are set at runtime\n        $runTimeValues = array(\n            \"cachedVariants\" => array(),\n            \"terminators\" => null,\n            \"terminator_end\" => \"\",\n            \"compiled\" => false,\n            \"parent\" => null,\n\n            // This value is unique to highlight.php Modes\n            \"__IS_COMPLETE\" => true,\n        );\n\n        foreach ($patch as $k => $v) {\n            if (isset($obj->{$k})) {\n                $obj->{$k} = str_replace(\"\\\\/\", \"/\", $obj->{$k});\n                $obj->{$k} = str_replace(\"/\", \"\\\\/\", $obj->{$k});\n            }\n        }\n\n        foreach ($defaultValues as $k => $v) {\n            if (!isset($obj->{$k}) && is_object($obj)) {\n                $obj->{$k} = $v;\n            }\n        }\n\n        foreach ($runTimeValues as $k => $v) {\n            if (is_object($obj)) {\n                $obj->{$k} = $v;\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "includes/Highlight/README",
    "content": "highlight.php is a server-side syntax highlighter written in PHP that currently supports 185 languages.\r\nIt's a port of highlight.js by Ivan Sagalaev that makes full use of the language and style definitions of the original JavaScript project.\r\nYou can make updates manually by dropping the contents of https://github.com/scrivo/highlight.php/tree/master/src/Highlight into this directory\r\nmaking sure you keep files that belong to Paste (list_languages.php - render.php and bootstrap.php)\r\n\r\n\r\nLicence for highlight.php:\r\n\r\nBSD 3-Clause License\r\n====================\r\n\r\nCopyright © 2006-2013, Ivan Sagalaev (maniac@softwaremaniacs.org), highlight.js (original author)  \r\nCopyright © 2013, Geert Bergman (geert@scrivo.nl), highlight.php  \r\nAll rights reserved.\r\n\r\n\r\nRedistribution and use in source and binary forms, with or without modification,\r\nare permitted provided that the following conditions are met:\r\n\r\n* Redistributions of source code must retain the above copyright\r\n  notice, this list of conditions and the following disclaimer.\r\n* Redistributions in binary form must reproduce the above copyright\r\n  notice, this list of conditions and the following disclaimer in the\r\n  documentation and/or other materials provided with the distribution.\r\n* Neither the name of the \"highlight.js\", \"highlight.php\" nor the\r\n  names of its contributors may be used to endorse or promote products\r\n  derived from this software without specific prior written permission.\r\n\r\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\r\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR\r\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\r\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\r\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\r\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r\n\r\n"
  },
  {
    "path": "includes/Highlight/RegEx.php",
    "content": "<?php\n\n/* Copyright (c) 2019 Geert Bergman (geert@scrivo.nl), highlight.php\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n *    this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n *    this list of conditions and the following disclaimer in the documentation\n *    and/or other materials provided with the distribution.\n * 3. Neither the name of \"highlight.js\", \"highlight.php\", nor the names of its\n *    contributors may be used to endorse or promote products derived from this\n *    software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nnamespace Highlight;\n\n/**\n * A PHP implementation to match JavaScript's RegExp class as closely as possible.\n *\n * A lot of behavior in this class is reversed engineered, so improvements are welcome!\n *\n * @internal\n *\n * @since 9.16.0\n */\nfinal class RegEx\n{\n    /**\n     * @var string\n     */\n    public $source;\n\n    /**\n     * @var int\n     */\n    public $lastIndex = 0;\n\n    /**\n     * @param RegEx|string $regex\n     */\n    public function __construct($regex)\n    {\n        $this->source = (string) $regex;\n    }\n\n    public function __toString()\n    {\n        return (string) $this->source;\n    }\n\n    /**\n     * Run the regular expression against the given string.\n     *\n     * @since 9.16.0.0\n     *\n     * @param string $str the string to run this regular expression against\n     *\n     * @return RegExMatch|null\n     */\n    public function exec($str)\n    {\n        $index = null;\n        $results = array();\n        preg_match($this->source, $str, $results, PREG_OFFSET_CAPTURE, $this->lastIndex);\n\n        if ($results === null || count($results) === 0) {\n            return null;\n        }\n\n        foreach ($results as &$result) {\n            if ($result[1] !== -1) {\n                // Only save the index if it hasn't been set yet\n                if ($index === null) {\n                    $index = $result[1];\n                }\n\n                $result = $result[0];\n            } else {\n                $result = null;\n            }\n        }\n\n        unset($result);\n\n        $this->lastIndex += strlen($results[0]) + ($index - $this->lastIndex);\n\n        $matches = new RegExMatch($results);\n        $matches->index = isset($index) ? $index : 0;\n        $matches->input = $str;\n\n        return $matches;\n    }\n}\n"
  },
  {
    "path": "includes/Highlight/RegExMatch.php",
    "content": "<?php\n\n/* Copyright (c) 2019 Geert Bergman (geert@scrivo.nl), highlight.php\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n *    this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n *    this list of conditions and the following disclaimer in the documentation\n *    and/or other materials provided with the distribution.\n * 3. Neither the name of \"highlight.js\", \"highlight.php\", nor the names of its\n *    contributors may be used to endorse or promote products derived from this\n *    software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nnamespace Highlight;\n\n/**\n * @internal\n *\n * @implements \\ArrayAccess<int, string|null>\n * @implements \\IteratorAggregate<int, string|null>\n *\n * @since 9.16.0.0\n */\nclass RegExMatch implements \\ArrayAccess, \\Countable, \\IteratorAggregate\n{\n    /** @var array<int, string|null> */\n    private $data;\n\n    /** @var int */\n    public $index;\n\n    /** @var string */\n    public $input;\n\n    /** @var string */\n    public $type;\n\n    /** @var Mode|string */\n    public $rule;\n\n    /**\n     * @param array<int, string|null> $results\n     */\n    public function __construct(array $results)\n    {\n        $this->data = $results;\n    }\n\n    /**\n     * {@inheritDoc}\n     */\n    #[\\ReturnTypeWillChange]\n    public function getIterator()\n    {\n        return new \\ArrayIterator($this->data);\n    }\n\n    /**\n     * {@inheritDoc}\n     */\n    #[\\ReturnTypeWillChange]\n    public function offsetExists($offset)\n    {\n        return isset($this->data[$offset]);\n    }\n\n    /**\n     * {@inheritDoc}\n     */\n    #[\\ReturnTypeWillChange]\n    public function offsetGet($offset)\n    {\n        return $this->data[$offset];\n    }\n\n    /**\n     * {@inheritDoc}\n     */\n    #[\\ReturnTypeWillChange]\n    public function offsetSet($offset, $value)\n    {\n        throw new \\LogicException(__CLASS__ . ' instances are read-only.');\n    }\n\n    /**\n     * {@inheritDoc}\n     */\n    #[\\ReturnTypeWillChange]\n    public function offsetUnset($offset)\n    {\n        throw new \\LogicException(__CLASS__ . ' instances are read-only.');\n    }\n\n    /**\n     * {@inheritDoc}\n     *\n     * @return int\n     */\n    #[\\ReturnTypeWillChange]\n    public function count()\n    {\n        return count($this->data);\n    }\n}\n"
  },
  {
    "path": "includes/Highlight/RegExUtils.php",
    "content": "<?php\n\n/* Copyright (c) 2019 Geert Bergman (geert@scrivo.nl), highlight.php\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice,\n *    this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright notice,\n *    this list of conditions and the following disclaimer in the documentation\n *    and/or other materials provided with the distribution.\n * 3. Neither the name of \"highlight.js\", \"highlight.php\", nor the names of its\n *    contributors may be used to endorse or promote products derived from this\n *    software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n * POSSIBILITY OF SUCH DAMAGE.\n */\n\nnamespace Highlight;\n\n/**\n * @internal\n *\n * @since 9.16.0.0\n */\nabstract class RegExUtils\n{\n    /**\n     * @param string $value\n     * @param bool   $global\n     * @param bool   $case_insensitive\n     *\n     * @return RegEx\n     */\n    public static function langRe($value, $global, $case_insensitive)\n    {\n        // PCRE allows us to change the definition of \"new line.\" The\n        // `(*ANYCRLF)` matches `\\r`, `\\n`, and `\\r\\n` for `$`\n        //\n        //   https://www.pcre.org/original/doc/html/pcrepattern.html\n\n        // PCRE requires us to tell it the string can be UTF-8, so the 'u' modifier\n        // is required. The `u` flag for PCRE is different from JS' unicode flag.\n\n        $escaped = preg_replace('#(?<!\\\\\\)/#um', '\\\\/', $value);\n        $regex = \"/(*ANYCRLF){$escaped}/um\" . ($case_insensitive ? \"i\" : \"\");\n\n        return new RegEx($regex);\n    }\n}\n"
  },
  {
    "path": "includes/Highlight/Terminators.php",
    "content": "<?php\n\nnamespace Highlight;\n\n/**\n * @internal\n *\n * @since 9.16.0.0\n */\nfinal class Terminators\n{\n    /** @var bool */\n    private $caseInsensitive;\n\n    /** @var array<int, Mode|string> */\n    private $matchIndexes = array();\n\n    /** @var RegEx|null */\n    private $matcherRe = null;\n\n    /** @var array<int, array<int, Mode|string>> */\n    private $regexes = array();\n\n    /** @var int */\n    private $matchAt = 1;\n\n    /** @var Mode */\n    private $mode;\n\n    /** @var int */\n    public $lastIndex = 0;\n\n    /**\n     * @param bool $caseInsensitive\n     */\n    public function __construct($caseInsensitive)\n    {\n        $this->caseInsensitive = $caseInsensitive;\n    }\n\n    /**\n     * @internal\n     *\n     * @param Mode $mode\n     *\n     * @return self\n     */\n    public function _buildModeRegex($mode)\n    {\n        $this->mode = $mode;\n        $term = null;\n\n        for ($i = 0; $i < count($mode->contains); ++$i) {\n            $re = null;\n            $term = $mode->contains[$i];\n\n            if ($term->beginKeywords) {\n                $re = \"\\.?(?:\" . $term->begin . \")\\.?\";\n            } else {\n                $re = $term->begin;\n            }\n\n            $this->addRule($term, $re);\n        }\n\n        if ($mode->terminator_end) {\n            $this->addRule('end', $mode->terminator_end);\n        }\n\n        if ($mode->illegal) {\n            $this->addRule('illegal', $mode->illegal);\n        }\n\n        /** @var array<int, string> $terminators */\n        $terminators = array();\n        foreach ($this->regexes as $regex) {\n            $terminators[] = $regex[1];\n        }\n\n        $this->matcherRe = $this->langRe($this->joinRe($terminators, '|'), true);\n        $this->lastIndex = 0;\n\n        return $this;\n    }\n\n    /**\n     * @param string $s\n     *\n     * @return RegExMatch|null\n     */\n    public function exec($s)\n    {\n        if (count($this->regexes) === 0) {\n            return null;\n        }\n\n        $this->matcherRe->lastIndex = $this->lastIndex;\n        $match = $this->matcherRe->exec($s);\n        if (!$match) {\n            return null;\n        }\n\n        /** @var Mode|string $rule */\n        $rule = null;\n        for ($i = 0; $i < count($match); ++$i) {\n            if ($match[$i] !== null && isset($this->matchIndexes[$i])) {\n                $rule = $this->matchIndexes[$i];\n                break;\n            }\n        }\n\n        if (is_string($rule)) {\n            $match->type = $rule;\n        } else {\n            $match->type = \"begin\";\n            $match->rule = $rule;\n        }\n\n        return $match;\n    }\n\n    /**\n     * @param string $value\n     * @param bool   $global\n     *\n     * @return RegEx\n     */\n    private function langRe($value, $global = false)\n    {\n        return RegExUtils::langRe($value, $global, $this->caseInsensitive);\n    }\n\n    /**\n     * @param Mode|string $rule\n     * @param string      $regex\n     *\n     * @return void\n     */\n    private function addRule($rule, $regex)\n    {\n        $this->matchIndexes[$this->matchAt] = $rule;\n        $this->regexes[] = array($rule, $regex);\n        $this->matchAt += $this->reCountMatchGroups($regex) + 1;\n    }\n\n    /**\n     * joinRe logically computes regexps.join(separator), but fixes the\n     * backreferences so they continue to match.\n     *\n     * it also places each individual regular expression into it's own\n     * match group, keeping track of the sequencing of those match groups\n     * is currently an exercise for the caller. :-)\n     *\n     * @param array<int, string> $regexps\n     * @param string             $separator\n     *\n     * @return string\n     */\n    private function joinRe($regexps, $separator)\n    {\n        // backreferenceRe matches an open parenthesis or backreference. To avoid\n        // an incorrect parse, it additionally matches the following:\n        // - [...] elements, where the meaning of parentheses and escapes change\n        // - other escape sequences, so we do not misparse escape sequences as\n        //   interesting elements\n        // - non-matching or lookahead parentheses, which do not capture. These\n        //   follow the '(' with a '?'.\n        $backreferenceRe = '#\\[(?:[^\\\\\\\\\\]]|\\\\\\.)*\\]|\\(\\??|\\\\\\([1-9][0-9]*)|\\\\\\.#';\n        $numCaptures = 0;\n        $ret = '';\n\n        $strLen = count($regexps);\n        for ($i = 0; $i < $strLen; ++$i) {\n            ++$numCaptures;\n            $offset = $numCaptures;\n            $re = $this->reStr($regexps[$i]);\n\n            if ($i > 0) {\n                $ret .= $separator;\n            }\n\n            $ret .= \"(\";\n\n            while (strlen($re) > 0) {\n                $matches = array();\n                $matchFound = preg_match($backreferenceRe, $re, $matches, PREG_OFFSET_CAPTURE);\n\n                if ($matchFound === 0) {\n                    $ret .= $re;\n                    break;\n                }\n\n                // PHP aliases to match the JS naming conventions\n                $match = $matches[0];\n                $index = $match[1];\n\n                $ret .= substr($re, 0, $index);\n                $re = substr($re, $index + strlen($match[0]));\n\n                if (substr($match[0], 0, 1) === '\\\\' && isset($matches[1])) {\n                    // Adjust the backreference.\n                    $ret .= \"\\\\\" . strval(intval($matches[1][0]) + $offset);\n                } else {\n                    $ret .= $match[0];\n                    if ($match[0] == \"(\") {\n                        ++$numCaptures;\n                    }\n                }\n            }\n\n            $ret .= \")\";\n        }\n\n        return $ret;\n    }\n\n    /**\n     * @param RegEx|string $re\n     *\n     * @return mixed\n     */\n    private function reStr($re)\n    {\n        if ($re && isset($re->source)) {\n            return $re->source;\n        }\n\n        return $re;\n    }\n\n    /**\n     * @param RegEx|string $re\n     *\n     * @return int\n     */\n    private function reCountMatchGroups($re)\n    {\n        $results = array();\n        $escaped = preg_replace('#(?<!\\\\\\)/#um', '\\\\/', (string) $re);\n        preg_match_all(\"/{$escaped}|/u\", '', $results);\n\n        return count($results) - 1;\n    }\n}\n"
  },
  {
    "path": "includes/Highlight/bootstrap.php",
    "content": "<?php\r\n/*\r\n * Paste $v3.2 2025/08/21 https://github.com/boxlabss/PASTE\r\n * demo: https://paste.boxlabs.uk/\r\n *\r\n * https://phpaste.sourceforge.io/\r\n *\r\n * This program is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 3\r\n * of the License, or (at your option) any later version.\r\n * \r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License in LICENCE for more details.\r\n *\r\n *\tThis file is part of Paste.\r\n *\tBootstrap for scrivo/highlight.php\r\n *\tWorks with either layout inside /includes/Highlight:\r\n *\tRepo root https://github.com/scrivo/highlight.php/tree/master/src/Highlight/ copied here:\r\n *\t\t/includes/Highlight/*.php\r\n *\t\t/includes/Highlight/languages/*.json\r\n *\r\n * \trender.php - bootstrap.php - list_languages.php in this directory are ours\r\n */\r\n\r\ndeclare(strict_types=1);\r\n\r\nif (!defined('HL_BASE_DIR')) {\r\n    define('HL_BASE_DIR', __DIR__);\r\n}\r\n\r\n// Find & register the library classes\r\n\r\n// Try both autoloader locations\r\n$autoloaders = [\r\n    HL_BASE_DIR . '/Autoloader.php',              // some mirrors place it at root\r\n    HL_BASE_DIR . '/Highlight/Autoloader.php',    // upstream repo layout\r\n];\r\n$autoloader_found = false;\r\nforeach ($autoloaders as $al) {\r\n    if (is_file($al)) {\r\n        require_once $al;\r\n        if (class_exists('\\Highlight\\Autoloader')) {\r\n            \\Highlight\\Autoloader::register();\r\n            $autoloader_found = true;\r\n            break;\r\n        }\r\n    }\r\n}\r\n\r\nif (!$autoloader_found) {\r\n    // Minimal PSR-4 fallback. Map \"Highlight\\\" to the directory that actually contains the class files.\r\n    $classRoots = [\r\n        HL_BASE_DIR,                    // includes/Highlight/Highlighter.php\r\n    ];\r\n    spl_autoload_register(static function ($class) use ($classRoots) {\r\n        if (strpos($class, 'Highlight\\\\') !== 0) return;\r\n        $rel = str_replace('\\\\', '/', $class) . '.php';   // Highlight/Highlighter.php\r\n        foreach ($classRoots as $root) {\r\n            $p = $root . '/' . basename($rel);           // try flat file name\r\n            if (is_file($p)) { require $p; return; }\r\n            $p = $root . '/' . $rel;                     // try nested path\r\n            if (is_file($p)) { require $p; return; }\r\n        }\r\n    });\r\n}\r\n\r\n// Resolve languages directory\r\nif (!defined('HL_LANG_DIR')) {\r\n    $candidates = [\r\n        HL_BASE_DIR . '/languages',\t// repo-root languages\r\n    ];\r\n    foreach ($candidates as $d) {\r\n        if (is_dir($d)) { define('HL_LANG_DIR', $d); break; }\r\n    }\r\n    if (!defined('HL_LANG_DIR')) {\r\n        // last resort (will fail gracefully later)\r\n        define('HL_LANG_DIR', HL_BASE_DIR . '/languages');\r\n    }\r\n}\r\n\r\n// Factory helper bound to HL_LANG_DIR\r\nfunction make_highlighter(): ?\\Highlight\\Highlighter {\r\n    if (!class_exists('\\Highlight\\Highlighter')) return null;\r\n\r\n    // expose LanguageFactory at \\Highlight\\LanguageFactory\r\n    if (class_exists('\\Highlight\\LanguageFactory')) {\r\n        $factory = new \\Highlight\\LanguageFactory(HL_LANG_DIR);\r\n\r\n        // Prefer setter if available; otherwise pass in constructor\r\n        try {\r\n            $hl = new \\Highlight\\Highlighter();\r\n            if (method_exists($hl, 'setLanguageFactory')) {\r\n                $hl->setLanguageFactory($factory);\r\n                return $hl;\r\n            }\r\n        } catch (\\Throwable $e) {\r\n            // fall through to constructor form\r\n        }\r\n\r\n        try {\r\n            return new \\Highlight\\Highlighter($factory);\r\n        } catch (\\Throwable $e) {\r\n            // fall through to plain instance\r\n        }\r\n    }\r\n\r\n    try {\r\n        return new \\Highlight\\Highlighter();\r\n    } catch (\\Throwable $e) {\r\n        return null;\r\n    }\r\n}\r\n"
  },
  {
    "path": "includes/Highlight/languages/1c.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"lexemes\": \"[A-Za-zА\\\\-Яа-яёЁ_][A-Za-zА\\\\-Яа-яёЁ_0-9]+\",\n    \"keywords\": {\n        \"keyword\": \"далее возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт \",\n        \"built_in\": \"разделительстраниц разделительстрок символтабуляции ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек \",\n        \"class\": \"webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоединенияточекдиаграммы типсоединительнойлинии типстороныэлементаграфическойсхемы типформыотчета типшкалырадарнойдиаграммы факторлиниитрендадиаграммы фигуракнопки фигурыграфическойсхемы фиксациявтаблице форматдняшкалывремени форматкартинки ширинаподчиненныхэлементовформы виддвижениябухгалтерии виддвижениянакопления видпериодарегистрарасчета видсчета видточкимаршрутабизнеспроцесса использованиеагрегатарегистранакопления использованиегруппиэлементов использованиережимапроведения использованиесреза периодичностьагрегатарегистранакопления режимавтовремя режимзаписидокумента режимпроведениядокумента авторегистрацияизменений допустимыйномерсообщения отправкаэлементаданных получениеэлементаданных использованиерасшифровкитабличногодокумента ориентациястраницы положениеитоговколоноксводнойтаблицы положениеитоговстроксводнойтаблицы положениетекстаотносительнокартинки расположениезаголовкагруппировкитабличногодокумента способчтениязначенийтабличногодокумента типдвустороннейпечати типзаполненияобластитабличногодокумента типкурсоровтабличногодокумента типлиниирисункатабличногодокумента типлинииячейкитабличногодокумента типнаправленияпереходатабличногодокумента типотображениявыделениятабличногодокумента типотображениялинийсводнойтаблицы типразмещениятекстатабличногодокумента типрисункатабличногодокумента типсмещениятабличногодокумента типузоратабличногодокумента типфайлатабличногодокумента точностьпечати чередованиерасположениястраниц отображениевремениэлементовпланировщика типфайлаформатированногодокумента обходрезультатазапроса типзаписизапроса видзаполнениярасшифровкипостроителяотчета типдобавленияпредставлений типизмеренияпостроителяотчета типразмещенияитогов доступкфайлу режимдиалогавыборафайла режимоткрытияфайла типизмеренияпостроителязапроса видданныханализа методкластеризации типединицыинтервалавременианализаданных типзаполнениятаблицырезультатаанализаданных типиспользованиячисловыхзначенийанализаданных типисточникаданныхпоискаассоциаций типколонкианализаданныхдереворешений типколонкианализаданныхкластеризация типколонкианализаданныхобщаястатистика типколонкианализаданныхпоискассоциаций типколонкианализаданныхпоискпоследовательностей типколонкимоделипрогноза типмерырасстоянияанализаданных типотсеченияправилассоциации типполяанализаданных типстандартизациианализаданных типупорядочиванияправилассоциациианализаданных типупорядочиванияшаблоновпоследовательностейанализаданных типупрощениядереварешений wsнаправлениепараметра вариантxpathxs вариантзаписидатыjson вариантпростоготипаxs видгруппымоделиxs видфасетаxdto действиепостроителяdom завершенностьпростоготипаxs завершенностьсоставноготипаxs завершенностьсхемыxs запрещенныеподстановкиxs исключениягруппподстановкиxs категорияиспользованияатрибутаxs категорияограниченияидентичностиxs категорияограниченияпространствименxs методнаследованияxs модельсодержимогоxs назначениетипаxml недопустимыеподстановкиxs обработкапробельныхсимволовxs обработкасодержимогоxs ограничениезначенияxs параметрыотбораузловdom переносстрокjson позициявдокументеdom пробельныесимволыxml типатрибутаxml типзначенияjson типканоническогоxml типкомпонентыxs типпроверкиxml типрезультатаdomxpath типузлаdom типузлаxml формаxml формапредставленияxs форматдатыjson экранированиесимволовjson видсравнениякомпоновкиданных действиеобработкирасшифровкикомпоновкиданных направлениесортировкикомпоновкиданных расположениевложенныхэлементоврезультатакомпоновкиданных расположениеитоговкомпоновкиданных расположениегруппировкикомпоновкиданных расположениеполейгруппировкикомпоновкиданных расположениеполякомпоновкиданных расположениереквизитовкомпоновкиданных расположениересурсовкомпоновкиданных типбухгалтерскогоостаткакомпоновкиданных типвыводатекстакомпоновкиданных типгруппировкикомпоновкиданных типгруппыэлементовотборакомпоновкиданных типдополненияпериодакомпоновкиданных типзаголовкаполейкомпоновкиданных типмакетагруппировкикомпоновкиданных типмакетаобластикомпоновкиданных типостаткакомпоновкиданных типпериодакомпоновкиданных типразмещениятекстакомпоновкиданных типсвязинаборовданныхкомпоновкиданных типэлементарезультатакомпоновкиданных расположениелегендыдиаграммыкомпоновкиданных типпримененияотборакомпоновкиданных режимотображенияэлементанастройкикомпоновкиданных режимотображениянастроеккомпоновкиданных состояниеэлементанастройкикомпоновкиданных способвосстановлениянастроеккомпоновкиданных режимкомпоновкирезультата использованиепараметракомпоновкиданных автопозицияресурсовкомпоновкиданных вариантиспользованиягруппировкикомпоновкиданных расположениересурсоввдиаграммекомпоновкиданных фиксациякомпоновкиданных использованиеусловногооформлениякомпоновкиданных важностьинтернетпочтовогосообщения обработкатекстаинтернетпочтовогосообщения способкодированияинтернетпочтовоговложения способкодированиянеasciiсимволовинтернетпочтовогосообщения типтекстапочтовогосообщения протоколинтернетпочты статусразборапочтовогосообщения режимтранзакциизаписижурналарегистрации статустранзакциизаписижурналарегистрации уровеньжурналарегистрации расположениехранилищасертификатовкриптографии режимвключениясертификатовкриптографии режимпроверкисертификатакриптографии типхранилищасертификатовкриптографии кодировкаименфайловвzipфайле методсжатияzip методшифрованияzip режимвосстановленияпутейфайловzip режимобработкиподкаталоговzip режимсохраненияпутейzip уровеньсжатияzip звуковоеоповещение направлениепереходакстроке позициявпотоке порядокбайтов режимблокировкиданных режимуправленияблокировкойданных сервисвстроенныхпокупок состояниефоновогозадания типподписчикадоставляемыхуведомлений уровеньиспользованиязащищенногосоединенияftp направлениепорядкасхемызапроса типдополненияпериодамисхемызапроса типконтрольнойточкисхемызапроса типобъединениясхемызапроса типпараметрадоступнойтаблицысхемызапроса типсоединениясхемызапроса httpметод автоиспользованиеобщегореквизита автопрефиксномеразадачи вариантвстроенногоязыка видиерархии видрегистранакопления видтаблицывнешнегоисточникаданных записьдвиженийприпроведении заполнениепоследовательностей индексирование использованиебазыпланавидоврасчета использованиебыстроговыбора использованиеобщегореквизита использованиеподчинения использованиеполнотекстовогопоиска использованиеразделяемыхданныхобщегореквизита использованиереквизита назначениеиспользованияприложения назначениерасширенияконфигурации направлениепередачи обновлениепредопределенныхданных оперативноепроведение основноепредставлениевидарасчета основноепредставлениевидахарактеристики основноепредставлениезадачи основноепредставлениепланаобмена основноепредставлениесправочника основноепредставлениесчета перемещениеграницыприпроведении периодичностьномерабизнеспроцесса периодичностьномерадокумента периодичностьрегистрарасчета периодичностьрегистрасведений повторноеиспользованиевозвращаемыхзначений полнотекстовыйпоискпривводепостроке принадлежностьобъекта проведение разделениеаутентификацииобщегореквизита разделениеданныхобщегореквизита разделениерасширенийконфигурацииобщегореквизита режимавтонумерацииобъектов режимзаписирегистра режимиспользованиямодальности режимиспользованиясинхронныхвызововрасширенийплатформыивнешнихкомпонент режимповторногоиспользованиясеансов режимполученияданныхвыборапривводепостроке режимсовместимости режимсовместимостиинтерфейса режимуправленияблокировкойданныхпоумолчанию сериикодовпланавидовхарактеристик сериикодовпланасчетов сериикодовсправочника созданиепривводе способвыбора способпоискастрокипривводепостроке способредактирования типданныхтаблицывнешнегоисточникаданных типкодапланавидоврасчета типкодасправочника типмакета типномерабизнеспроцесса типномерадокумента типномеразадачи типформы удалениедвижений важностьпроблемыприменениярасширенияконфигурации вариантинтерфейсаклиентскогоприложения вариантмасштабаформклиентскогоприложения вариантосновногошрифтаклиентскогоприложения вариантстандартногопериода вариантстандартнойдатыначала видграницы видкартинки видотображенияполнотекстовогопоиска видрамки видсравнения видцвета видчисловогозначения видшрифта допустимаядлина допустимыйзнак использованиеbyteordermark использованиеметаданныхполнотекстовогопоиска источникрасширенийконфигурации клавиша кодвозвратадиалога кодировкаxbase кодировкатекста направлениепоиска направлениесортировки обновлениепредопределенныхданных обновлениеприизмененииданных отображениепанелиразделов проверказаполнения режимдиалогавопрос режимзапускаклиентскогоприложения режимокругления режимоткрытияформприложения режимполнотекстовогопоиска скоростьклиентскогосоединения состояниевнешнегоисточникаданных состояниеобновленияконфигурациибазыданных способвыборасертификатаwindows способкодированиястроки статуссообщения типвнешнейкомпоненты типплатформы типповеденияклавишиenter типэлементаинформацииовыполненииобновленияконфигурациибазыданных уровеньизоляциитранзакций хешфункция частидаты\",\n        \"type\": \"comобъект ftpсоединение httpзапрос httpсервисответ httpсоединение wsопределения wsпрокси xbase анализданных аннотацияxs блокировкаданных буфердвоичныхданных включениеxs выражениекомпоновкиданных генераторслучайныхчисел географическаясхема географическиекоординаты графическаясхема группамоделиxs данныерасшифровкикомпоновкиданных двоичныеданные дендрограмма диаграмма диаграммаганта диалогвыборафайла диалогвыборацвета диалогвыборашрифта диалограсписаниярегламентногозадания диалогредактированиястандартногопериода диапазон документdom документhtml документацияxs доставляемоеуведомление записьdom записьfastinfoset записьhtml записьjson записьxml записьzipфайла записьданных записьтекста записьузловdom запрос защищенноесоединениеopenssl значенияполейрасшифровкикомпоновкиданных извлечениетекста импортxs интернетпочта интернетпочтовоесообщение интернетпочтовыйпрофиль интернетпрокси интернетсоединение информациядляприложенияxs использованиеатрибутаxs использованиесобытияжурналарегистрации источникдоступныхнастроеккомпоновкиданных итераторузловdom картинка квалификаторыдаты квалификаторыдвоичныхданных квалификаторыстроки квалификаторычисла компоновщикмакетакомпоновкиданных компоновщикнастроеккомпоновкиданных конструктормакетаоформлениякомпоновкиданных конструкторнастроеккомпоновкиданных конструкторформатнойстроки линия макеткомпоновкиданных макетобластикомпоновкиданных макетоформлениякомпоновкиданных маскаxs менеджеркриптографии наборсхемxml настройкикомпоновкиданных настройкисериализацииjson обработкакартинок обработкарасшифровкикомпоновкиданных обходдереваdom объявлениеатрибутаxs объявлениенотацииxs объявлениеэлементаxs описаниеиспользованиясобытиядоступжурналарегистрации описаниеиспользованиясобытияотказвдоступежурналарегистрации описаниеобработкирасшифровкикомпоновкиданных описаниепередаваемогофайла описаниетипов определениегруппыатрибутовxs определениегруппымоделиxs определениеограниченияидентичностиxs определениепростоготипаxs определениесоставноготипаxs определениетипадокументаdom определенияxpathxs отборкомпоновкиданных пакетотображаемыхдокументов параметрвыбора параметркомпоновкиданных параметрызаписиjson параметрызаписиxml параметрычтенияxml переопределениеxs планировщик полеанализаданных полекомпоновкиданных построительdom построительзапроса построительотчета построительотчетаанализаданных построительсхемxml поток потоквпамяти почта почтовоесообщение преобразованиеxsl преобразованиекканоническомуxml процессорвыводарезультатакомпоновкиданныхвколлекциюзначений процессорвыводарезультатакомпоновкиданныхвтабличныйдокумент процессоркомпоновкиданных разыменовательпространствименdom рамка расписаниерегламентногозадания расширенноеимяxml результатчтенияданных своднаядиаграмма связьпараметравыбора связьпотипу связьпотипукомпоновкиданных сериализаторxdto сертификатклиентаwindows сертификатклиентафайл сертификаткриптографии сертификатыудостоверяющихцентровwindows сертификатыудостоверяющихцентровфайл сжатиеданных системнаяинформация сообщениепользователю сочетаниеклавиш сравнениезначений стандартнаядатаначала стандартныйпериод схемаxml схемакомпоновкиданных табличныйдокумент текстовыйдокумент тестируемоеприложение типданныхxml уникальныйидентификатор фабрикаxdto файл файловыйпоток фасетдлиныxs фасетколичестваразрядовдробнойчастиxs фасетмаксимальноговключающегозначенияxs фасетмаксимальногоисключающегозначенияxs фасетмаксимальнойдлиныxs фасетминимальноговключающегозначенияxs фасетминимальногоисключающегозначенияxs фасетминимальнойдлиныxs фасетобразцаxs фасетобщегоколичестваразрядовxs фасетперечисленияxs фасетпробельныхсимволовxs фильтрузловdom форматированнаястрока форматированныйдокумент фрагментxs хешированиеданных хранилищезначения цвет чтениеfastinfoset чтениеhtml чтениеjson чтениеxml чтениеzipфайла чтениеданных чтениетекста чтениеузловdom шрифт элементрезультатакомпоновкиданных comsafearray деревозначений массив соответствие списокзначений структура таблицазначений фиксированнаяструктура фиксированноесоответствие фиксированныймассив \",\n        \"literal\": \"null истина ложь неопределено\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"lexemes\": \"[A-Za-zА\\\\-Яа-яёЁ_][A-Za-zА\\\\-Яа-яёЁ_0-9]+\",\n            \"begin\": \"#|&\",\n            \"end\": \"$\",\n            \"keywords\": {\n                \"meta-keyword\": \"далее возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт загрузитьизфайла вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент \"\n            },\n            \"contains\": [\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"\\/\\/\",\n                    \"end\": \"$\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"function\",\n            \"lexemes\": \"[A-Za-zА\\\\-Яа-яёЁ_][A-Za-zА\\\\-Яа-яёЁ_0-9]+\",\n            \"variants\": [\n                {\n                    \"begin\": \"процедура|функция\",\n                    \"end\": \"\\\\)\",\n                    \"keywords\": \"процедура функция\"\n                },\n                {\n                    \"begin\": \"конецпроцедуры|конецфункции\",\n                    \"keywords\": \"конецпроцедуры конецфункции\"\n                }\n            ],\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"endsParent\": true,\n                    \"contains\": [\n                        {\n                            \"className\": \"params\",\n                            \"lexemes\": \"[A-Za-zА\\\\-Яа-яёЁ_][A-Za-zА\\\\-Яа-яёЁ_0-9]+\",\n                            \"begin\": \"[A-Za-zА\\\\-Яа-яёЁ_][A-Za-zА\\\\-Яа-яёЁ_0-9]+\",\n                            \"end\": \",\",\n                            \"excludeEnd\": true,\n                            \"endsWithParent\": true,\n                            \"keywords\": {\n                                \"keyword\": \"знач\",\n                                \"literal\": \"null истина ложь неопределено\"\n                            },\n                            \"contains\": [\n                                {\n                                    \"className\": \"number\",\n                                    \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n                                    \"relevance\": 0\n                                },\n                                {\n                                    \"className\": \"string\",\n                                    \"begin\": \"\\\"|\\\\|\",\n                                    \"end\": \"\\\"|$\",\n                                    \"contains\": [\n                                        {\n                                            \"begin\": \"\\\"\\\"\"\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"begin\": \"'\",\n                                    \"end\": \"'\",\n                                    \"excludeBegin\": true,\n                                    \"excludeEnd\": true,\n                                    \"contains\": [\n                                        {\n                                            \"className\": \"number\",\n                                            \"begin\": \"\\\\d{4}([\\\\.\\\\Q\\\\\\/:\\\\E-]?\\\\d{2}){0,5}\"\n                                        }\n                                    ]\n                                }\n                            ]\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[A-Za-zА\\\\-Яа-яёЁ_][A-Za-zА\\\\-Яа-яёЁ_0-9]+\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0\"\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"~\",\n            \"end\": \";|:\",\n            \"excludeEnd\": true\n        },\n        {\n            \"$ref\": \"#contains.1.contains.0.contains.0.contains.0\"\n        },\n        {\n            \"$ref\": \"#contains.1.contains.0.contains.0.contains.1\"\n        },\n        {\n            \"$ref\": \"#contains.1.contains.0.contains.0.contains.2\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/abnf.json",
    "content": "{\n    \"illegal\": \"[!@#$^&',?+~`|:]\",\n    \"keywords\": \"ALPHA BIT CHAR CR CRLF CTL DIGIT DQUOTE HEXDIG HTAB LF LWSP OCTET SP VCHAR WSP\",\n    \"contains\": [\n        {\n            \"className\": \"attribute\",\n            \"begin\": \"^[a-zA-Z][a-zA-Z0-9\\\\-]*(?=\\\\s*=)\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \";\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"%b[0-1]+(-[0-1]+|(\\\\.[0-1]+)+){0,1}\"\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"%d[0-9]+(-[0-9]+|(\\\\.[0-9]+)+){0,1}\"\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"%x[0-9A-F]+(-[0-9A-F]+|(\\\\.[0-9A-F]+)+){0,1}\"\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"%[si]\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/accesslog.json",
    "content": "{\n    \"contains\": [\n        {\n            \"className\": \"number\",\n            \"begin\": \"^\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b\",\n            \"relevance\": 5\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+\\\\b\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"(GET|POST|HEAD|PUT|DELETE|CONNECT|OPTIONS|PATCH|TRACE)\",\n            \"end\": \"\\\"\",\n            \"keywords\": \"GET POST HEAD PUT DELETE CONNECT OPTIONS PATCH TRACE\",\n            \"illegal\": \"\\\\n\",\n            \"relevance\": 5,\n            \"contains\": [\n                {\n                    \"begin\": \"HTTP\\/[12]\\\\.\\\\d\",\n                    \"relevance\": 5\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\\[\\\\d[^\\\\]\\\\n]{8,}\\\\]\",\n            \"illegal\": \"\\\\n\",\n            \"relevance\": 1\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\\[\",\n            \"end\": \"\\\\]\",\n            \"illegal\": \"\\\\n\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"Mozilla\\/\\\\d\\\\.\\\\d \\\\(\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"relevance\": 3\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/actionscript.json",
    "content": "{\n    \"aliases\": [\n        \"as\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"as break case catch class const continue default delete do dynamic each else extends final finally for function get if implements import in include instanceof interface internal is namespace native new override package private protected public return set static super switch this throw try typeof use var void while with\",\n        \"literal\": \"true false null undefined\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"package\",\n            \"end\": \"{\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class interface\",\n            \"end\": \"{\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"beginKeywords\": \"extends implements\"\n                },\n                {\n                    \"$ref\": \"#contains.5.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"beginKeywords\": \"import include\",\n            \"end\": \";\",\n            \"keywords\": {\n                \"meta-keyword\": \"import include\"\n            }\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"function\",\n            \"end\": \"[{;]\",\n            \"excludeEnd\": true,\n            \"illegal\": \"\\\\S\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.5.contains.0\"\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.3\"\n                        },\n                        {\n                            \"className\": \"rest_arg\",\n                            \"begin\": \"[.]{3}\",\n                            \"end\": \"[a-zA-Z_$][a-zA-Z0-9_$]*\",\n                            \"relevance\": 10\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \":\\\\s*([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"\\\\.\\\\s*[a-zA-Z_]\\\\w*\",\n            \"relevance\": 0\n        }\n    ],\n    \"illegal\": \"#\"\n}\n"
  },
  {
    "path": "includes/Highlight/languages/ada.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"keywords\": {\n        \"keyword\": \"abort else new return abs elsif not reverse abstract end accept entry select access exception of separate aliased exit or some all others subtype and for out synchronized array function overriding at tagged generic package task begin goto pragma terminate body private then if procedure type case in protected constant interface is raise use declare range delay limited record when delta loop rem while digits renames with do mod requeue xor\",\n        \"literal\": \"True False\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"--\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\"\\\"\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'.'\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b(\\\\d(_|\\\\d)*#\\\\w+(\\\\.\\\\w+)?#([eE][-+]?\\\\d(_|\\\\d)*)?|\\\\d(_|\\\\d)*(\\\\.\\\\d(_|\\\\d)*)?([eE][-+]?\\\\d(_|\\\\d)*)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"'[A-Za-z](_?[A-Za-z0-9.])*\"\n        },\n        {\n            \"className\": \"title\",\n            \"begin\": \"(\\\\bwith\\\\s+)?(\\\\bprivate\\\\s+)?\\\\bpackage\\\\s+(\\\\bbody\\\\s+)?\",\n            \"end\": \"(is|$)\",\n            \"keywords\": \"package body\",\n            \"excludeBegin\": true,\n            \"excludeEnd\": true,\n            \"illegal\": \"\\\\Q[]{}%#'\\\"\\\\E\"\n        },\n        {\n            \"begin\": \"(\\\\b(with|overriding)\\\\s+)?\\\\b(function|procedure)\\\\s+\",\n            \"end\": \"(\\\\bis|\\\\bwith|\\\\brenames|\\\\)\\\\s*;)\",\n            \"keywords\": \"overriding function procedure with is renames return\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0\"\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"(\\\\bwith\\\\s+)?\\\\b(function|procedure)\\\\s+\",\n                    \"end\": \"(\\\\(|\\\\s+|$)\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true,\n                    \"illegal\": \"\\\\Q[]{}%#'\\\"\\\\E\"\n                },\n                {\n                    \"begin\": \"\\\\s+:\\\\s+\",\n                    \"end\": \"\\\\s*(:=|;|\\\\)|=>|$)\",\n                    \"illegal\": \"\\\\Q[]{}%#'\\\"\\\\E\",\n                    \"contains\": [\n                        {\n                            \"beginKeywords\": \"loop for declare others\",\n                            \"endsParent\": true\n                        },\n                        {\n                            \"className\": \"keyword\",\n                            \"beginKeywords\": \"not null constant access function procedure in out aliased exception\"\n                        },\n                        {\n                            \"className\": \"type\",\n                            \"begin\": \"[A-Za-z](_?[A-Za-z0-9.])*\",\n                            \"endsParent\": true,\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"type\",\n                    \"begin\": \"\\\\breturn\\\\s+\",\n                    \"end\": \"(\\\\s+|;|$)\",\n                    \"keywords\": \"return\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true,\n                    \"endsParent\": true,\n                    \"illegal\": \"\\\\Q[]{}%#'\\\"\\\\E\"\n                }\n            ]\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \"\\\\b(sub)?type\\\\s+\",\n            \"end\": \"\\\\s+\",\n            \"keywords\": \"type\",\n            \"excludeBegin\": true,\n            \"illegal\": \"\\\\Q[]{}%#'\\\"\\\\E\"\n        },\n        {\n            \"$ref\": \"#contains.6.contains.2\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/angelscript.json",
    "content": "{\n    \"aliases\": [\n        \"asc\"\n    ],\n    \"keywords\": \"for in|0 break continue while do|0 return if else case switch namespace is cast or and xor not get|0 in inout|10 out override set|0 private public const default|0 final shared external mixin|10 enum typedef funcdef this super import from interface abstract|0 try catch protected explicit property\",\n    \"illegal\": \"(^using\\\\s+[A-Za-z0-9_\\\\.]+;$|\\\\bfunctions*[^\\\\(])\",\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\\\"\\\"\",\n            \"end\": \"\\\"\\\"\\\"\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.3.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"interface namespace\",\n            \"end\": \"{\",\n            \"illegal\": \"[;.\\\\-]\",\n            \"contains\": [\n                {\n                    \"className\": \"symbol\",\n                    \"begin\": \"[a-zA-Z0-9_]+\"\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"class\",\n            \"end\": \"{\",\n            \"illegal\": \"[;.\\\\-]\",\n            \"contains\": [\n                {\n                    \"className\": \"symbol\",\n                    \"begin\": \"[a-zA-Z0-9_]+\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"[:,]\\\\s*\",\n                            \"contains\": [\n                                {\n                                    \"className\": \"symbol\",\n                                    \"begin\": \"[a-zA-Z0-9_]+\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"built_in\",\n            \"begin\": \"\\\\b(void|bool|int|int8|int16|int32|int64|uint|uint8|uint16|uint32|uint64|string|ref|array|double|float|auto|dictionary)\",\n            \"contains\": [\n                {\n                    \"className\": \"keyword\",\n                    \"begin\": \"<\",\n                    \"end\": \">\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.7\"\n                        },\n                        {\n                            \"className\": \"symbol\",\n                            \"begin\": \"[a-zA-Z0-9_]+@\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.7.contains.0\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.7.contains.0.contains.1\"\n        },\n        {\n            \"className\": \"literal\",\n            \"begin\": \"\\\\b(null|true|false)\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?f?|\\\\.\\\\d+f?)([eE][-+]?\\\\d+f?)?)\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/apache.json",
    "content": "{\n    \"aliases\": [\n        \"apacheconf\"\n    ],\n    \"case_insensitive\": true,\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"section\",\n            \"begin\": \"<\\/?\",\n            \"end\": \">\"\n        },\n        {\n            \"className\": \"attribute\",\n            \"begin\": \"\\\\w+\",\n            \"relevance\": 0,\n            \"keywords\": {\n                \"nomarkup\": \"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername\"\n            },\n            \"starts\": {\n                \"end\": \"$\",\n                \"relevance\": 0,\n                \"keywords\": {\n                    \"literal\": \"on off all\"\n                },\n                \"contains\": [\n                    {\n                        \"className\": \"meta\",\n                        \"begin\": \"\\\\s\\\\[\",\n                        \"end\": \"\\\\]$\"\n                    },\n                    {\n                        \"className\": \"variable\",\n                        \"begin\": \"[\\\\$%]\\\\{\",\n                        \"end\": \"\\\\}\",\n                        \"contains\": [\n                            \"self\",\n                            {\n                                \"className\": \"number\",\n                                \"begin\": \"[\\\\$%]\\\\d+\"\n                            }\n                        ]\n                    },\n                    {\n                        \"$ref\": \"#contains.2.starts.contains.1.contains.1\"\n                    },\n                    {\n                        \"className\": \"string\",\n                        \"begin\": \"\\\"\",\n                        \"end\": \"\\\"\",\n                        \"illegal\": \"\\\\n\",\n                        \"contains\": [\n                            {\n                                \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                \"relevance\": 0\n                            }\n                        ]\n                    }\n                ]\n            }\n        }\n    ],\n    \"illegal\": \"\\\\S\"\n}\n"
  },
  {
    "path": "includes/Highlight/languages/applescript.json",
    "content": "{\n    \"aliases\": [\n        \"osascript\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"about above after against and around as at back before beginning behind below beneath beside between but by considering contain contains continue copy div does eighth else end equal equals error every exit fifth first for fourth from front get given global if ignoring in into is it its last local me middle mod my ninth not of on onto or over prop property put ref reference repeat returning script second set seventh since sixth some tell tenth that the|0 then third through thru timeout times to transaction try until where while whose with without\",\n        \"literal\": \"AppleScript false linefeed return pi quote result space tab true\",\n        \"built_in\": \"alias application boolean class constant date file integer list number real record string text activate beep count delay launch log offset read round run say summarize write character characters contents day frontmost id item length month name paragraph paragraphs rest reverse running time version weekday word words year\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"built_in\",\n            \"begin\": \"\\\\b(clipboard info|the clipboard|info for|list (disks|folder)|mount volume|path to|(close|open for) access|(get|set) eof|current date|do shell script|get volume settings|random number|set volume|system attribute|system info|time to GMT|(load|run|store) script|scripting components|ASCII (character|number)|localized string|choose (application|color|file|file name|folder|from list|remote application|URL)|display (alert|dialog))\\\\b|^\\\\s*return\\\\b\"\n        },\n        {\n            \"className\": \"literal\",\n            \"begin\": \"\\\\b(text item delimiters|current application|missing value)\\\\b\"\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\\\b(apart from|aside from|instead of|out of|greater than|isn't|(doesn't|does not) (equal|come before|come after|contain)|(greater|less) than( or equal)?|(starts?|ends|begins?) with|contained by|comes (before|after)|a (ref|reference)|POSIX file|POSIX path|(date|time) string|quoted form)\\\\b\"\n        },\n        {\n            \"beginKeywords\": \"on\",\n            \"illegal\": \"[${=;\\\\n]\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"contains\": [\n                        \"self\",\n                        {\n                            \"$ref\": \"#contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"--\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\(\\\\*\",\n            \"end\": \"\\\\*\\\\)\",\n            \"contains\": [\n                \"self\",\n                {\n                    \"$ref\": \"#contains.6\"\n                },\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ],\n    \"illegal\": \"\\/\\/|->|=>|\\\\[\\\\[\"\n}\n"
  },
  {
    "path": "includes/Highlight/languages/arcade.json",
    "content": "{\n    \"aliases\": [\n        \"arcade\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"if for while var new function do return void else break\",\n        \"literal\": \"BackSlash DoubleQuote false ForwardSlash Infinity NaN NewLine null PI SingleQuote Tab TextFormatting true undefined\",\n        \"built_in\": \"Abs Acos Angle Attachments Area AreaGeodetic Asin Atan Atan2 Average Bearing Boolean Buffer BufferGeodetic Ceil Centroid Clip Console Constrain Contains Cos Count Crosses Cut Date DateAdd DateDiff Day Decode DefaultValue Dictionary Difference Disjoint Distance DistanceGeodetic Distinct DomainCode DomainName Equals Exp Extent Feature FeatureSet FeatureSetByAssociation FeatureSetById FeatureSetByPortalItem FeatureSetByRelationshipName FeatureSetByTitle FeatureSetByUrl Filter First Floor Geometry GroupBy Guid HasKey Hour IIf IndexOf Intersection Intersects IsEmpty IsNan IsSelfIntersecting Length LengthGeodetic Log Max Mean Millisecond Min Minute Month MultiPartToSinglePart Multipoint NextSequenceValue Now Number OrderBy Overlaps Point Polygon Polyline Portal Pow Random Relate Reverse RingIsClockWise Round Second SetGeometry Sin Sort Sqrt Stdev Sum SymmetricDifference Tan Text Timestamp Today ToLocal Top Touches ToUTC TrackCurrentTime TrackGeometryWindow TrackIndex TrackStartTime TrackWindow TypeOf Union UrlEncode Variance Weekday When Within Year \"\n    },\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"`\",\n            \"end\": \"`\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"subst\",\n                    \"begin\": \"\\\\$\\\\{\",\n                    \"end\": \"\\\\}\",\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2\"\n                        },\n                        {\n                            \"className\": \"number\",\n                            \"variants\": [\n                                {\n                                    \"begin\": \"\\\\b(0[bB][01]+)\"\n                                },\n                                {\n                                    \"begin\": \"\\\\b(0[oO][0-7]+)\"\n                                },\n                                {\n                                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\"\n                                }\n                            ],\n                            \"relevance\": 0\n                        },\n                        {\n                            \"className\": \"regexp\",\n                            \"begin\": \"\\\\\\/\",\n                            \"end\": \"\\\\\\/[gimuy]*\",\n                            \"illegal\": \"\\\\n\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.0.contains.0\"\n                                },\n                                {\n                                    \"begin\": \"\\\\[\",\n                                    \"end\": \"\\\\]\",\n                                    \"relevance\": 0,\n                                    \"contains\": [\n                                        {\n                                            \"$ref\": \"#contains.0.contains.0\"\n                                        }\n                                    ]\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.3.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"\\\\$[datastore|feature|layer|map|measure|sourcefeature|sourcelayer|targetfeature|targetlayer|value|view]+\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.1.contains.3\"\n        },\n        {\n            \"begin\": \"[{,]\\\\s*\",\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"begin\": \"[A-Za-z_][0-9A-Za-z_]*\\\\s*:\",\n                    \"returnBegin\": true,\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"className\": \"attr\",\n                            \"begin\": \"[A-Za-z_][0-9A-Za-z_]*\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"begin\": \"(!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|\\/=|\\/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~|\\\\b(return)\\\\b)\\\\s*\",\n            \"keywords\": \"return\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.3\"\n                },\n                {\n                    \"$ref\": \"#contains.4\"\n                },\n                {\n                    \"$ref\": \"#contains.2.contains.1.contains.4\"\n                },\n                {\n                    \"className\": \"function\",\n                    \"begin\": \"(\\\\(.*?\\\\)|[A-Za-z_][0-9A-Za-z_]*)\\\\s*=>\",\n                    \"returnBegin\": true,\n                    \"end\": \"\\\\s*=>\",\n                    \"contains\": [\n                        {\n                            \"className\": \"params\",\n                            \"variants\": [\n                                {\n                                    \"begin\": \"[A-Za-z_][0-9A-Za-z_]*\"\n                                },\n                                {\n                                    \"begin\": \"\\\\(\\\\s*\\\\)\"\n                                },\n                                {\n                                    \"begin\": \"\\\\(\",\n                                    \"end\": \"\\\\)\",\n                                    \"excludeBegin\": true,\n                                    \"excludeEnd\": true,\n                                    \"keywords\": {\n                                        \"$ref\": \"#keywords\"\n                                    },\n                                    \"contains\": [\n                                        {\n                                            \"$ref\": \"#contains.0\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.1\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.2\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.2.contains.1.contains.3\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.2.contains.1.contains.4\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.4\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.3\"\n                                        }\n                                    ]\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"function\",\n            \"end\": \"\\\\{\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[A-Za-z_][0-9A-Za-z_]*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true,\n                    \"contains\": {\n                        \"$ref\": \"#contains.8.contains.3.contains.0.variants.2.contains\"\n                    }\n                }\n            ],\n            \"illegal\": \"\\\\[|%\"\n        },\n        {\n            \"begin\": \"\\\\$[(.]\"\n        }\n    ],\n    \"illegal\": \"#(?!!)\"\n}\n"
  },
  {
    "path": "includes/Highlight/languages/arduino.json",
    "content": "{\n    \"aliases\": [\n        \"c\",\n        \"cc\",\n        \"h\",\n        \"c++\",\n        \"h++\",\n        \"hpp\",\n        \"hh\",\n        \"hxx\",\n        \"cxx\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_tshort reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq boolean byte word String\",\n        \"built_in\": \"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary setup loopKeyboardController MouseController SoftwareSerial EthernetServer EthernetClient LiquidCrystal RobotControl GSMVoiceCall EthernetUDP EsploraTFT HttpClient RobotMotor WiFiClient GSMScanner FileSystem Scheduler GSMServer YunClient YunServer IPAddress GSMClient GSMModem Keyboard Ethernet Console GSMBand Esplora Stepper Process WiFiUDP GSM_SMS Mailbox USBHost Firmata PImage Client Server GSMPIN FileIO Bridge Serial EEPROM Stream Mouse Audio Servo File Task GPRS WiFi Wire TFT GSM SPI SD runShellCommandAsynchronously analogWriteResolution retrieveCallingNumber printFirmwareVersion analogReadResolution sendDigitalPortPair noListenOnLocalhost readJoystickButton setFirmwareVersion readJoystickSwitch scrollDisplayRight getVoiceCallStatus scrollDisplayLeft writeMicroseconds delayMicroseconds beginTransmission getSignalStrength runAsynchronously getAsynchronously listenOnLocalhost getCurrentCarrier readAccelerometer messageAvailable sendDigitalPorts lineFollowConfig countryNameWrite runShellCommand readStringUntil rewindDirectory readTemperature setClockDivider readLightSensor endTransmission analogReference detachInterrupt countryNameRead attachInterrupt encryptionType readBytesUntil robotNameWrite readMicrophone robotNameRead cityNameWrite userNameWrite readJoystickY readJoystickX mouseReleased openNextFile scanNetworks noInterrupts digitalWrite beginSpeaker mousePressed isActionDone mouseDragged displayLogos noAutoscroll addParameter remoteNumber getModifiers keyboardRead userNameRead waitContinue processInput parseCommand printVersion readNetworks writeMessage blinkVersion cityNameRead readMessage setDataMode parsePacket isListening setBitOrder beginPacket isDirectory motorsWrite drawCompass digitalRead clearScreen serialEvent rightToLeft setTextSize leftToRight requestFrom keyReleased compassRead analogWrite interrupts WiFiServer disconnect playMelody parseFloat autoscroll getPINUsed setPINUsed setTimeout sendAnalog readSlider analogRead beginWrite createChar motorsStop keyPressed tempoWrite readButton subnetMask debugPrint macAddress writeGreen randomSeed attachGPRS readString sendString remotePort releaseAll mouseMoved background getXChange getYChange answerCall getResult voiceCall endPacket constrain getSocket writeJSON getButton available connected findUntil readBytes exitValue readGreen writeBlue startLoop IPAddress isPressed sendSysex pauseMode gatewayIP setCursor getOemKey tuneWrite noDisplay loadImage switchPIN onRequest onReceive changePIN playFile noBuffer parseInt overflow checkPIN knobRead beginTFT bitClear updateIR bitWrite position writeRGB highByte writeRed setSpeed readBlue noStroke remoteIP transfer shutdown hangCall beginSMS endWrite attached maintain noCursor checkReg checkPUK shiftOut isValid shiftIn pulseIn connect println localIP pinMode getIMEI display noBlink process getBand running beginSD drawBMP lowByte setBand release bitRead prepare pointTo readRed setMode noFill remove listen stroke detach attach noTone exists buffer height bitSet circle config cursor random IRread setDNS endSMS getKey micros millis begin print write ready flush width isPIN blink clear press mkdir rmdir close point yield image BSSID click delay read text move peek beep rect line open seek fill size turn stop home find step tone sqrt RSSI SSID end bit tan cos sin pow map abs max min get run put\",\n        \"literal\": \"true false nullptr NULL DIGITAL_MESSAGE FIRMATA_STRING ANALOG_MESSAGE REPORT_DIGITAL REPORT_ANALOG INPUT_PULLUP SET_PIN_MODE INTERNAL2V56 SYSTEM_RESET LED_BUILTIN INTERNAL1V1 SYSEX_START INTERNAL EXTERNAL DEFAULT OUTPUT INPUT HIGH LOW\"\n    },\n    \"illegal\": \"<\\/\",\n    \"contains\": [\n        {\n            \"variants\": [\n                {\n                    \"begin\": \"=\",\n                    \"end\": \";\"\n                },\n                {\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\"\n                },\n                {\n                    \"beginKeywords\": \"new throw return else\",\n                    \"end\": \";\"\n                }\n            ],\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            },\n            \"contains\": [\n                {\n                    \"className\": \"keyword\",\n                    \"begin\": \"\\\\b[a-z\\\\d_]*_t\\\\b\"\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"\\/\\/\",\n                    \"end\": \"$\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"\\/\\\\*\",\n                    \"end\": \"\\\\*\\/\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.1.contains.0\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"number\",\n                    \"variants\": [\n                        {\n                            \"begin\": \"\\\\b(0b[01']+)\"\n                        },\n                        {\n                            \"begin\": \"(-?)\\\\b([\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)(u|U|l|L|ul|UL|f|F|b|B)\"\n                        },\n                        {\n                            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9']+|(\\\\b[\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)([eE][-+]?[\\\\d']+)?)\"\n                        }\n                    ],\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"string\",\n                    \"variants\": [\n                        {\n                            \"begin\": \"(u8?|U|L)?\\\"\",\n                            \"end\": \"\\\"\",\n                            \"illegal\": \"\\\\n\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"(u8?|U|L)?'(\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)|.)\",\n                            \"end\": \"'\",\n                            \"illegal\": \".\"\n                        },\n                        {\n                            \"begin\": \"(?:u8?|U|L)?R\\\"([^()\\\\\\\\ ]{0,16})\\\\((?:.|\\\\n)*?\\\\)\\\\1\\\"\"\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.3\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.4\"\n                        },\n                        \"self\"\n                    ],\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"begin\": \"((decltype\\\\(auto\\\\)|(?:[a-zA-Z_]\\\\w*::)?[a-zA-Z_]\\\\w*(?:<.*?>)?)[\\\\*&\\\\s]+)+(?:[a-zA-Z_]\\\\w*::)?[a-zA-Z]\\\\w*\\\\s*\\\\(\",\n            \"returnBegin\": true,\n            \"end\": \"[{;=]\",\n            \"excludeEnd\": true,\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            },\n            \"illegal\": \"[^\\\\w\\\\s\\\\*&:<>]\",\n            \"contains\": [\n                {\n                    \"begin\": \"decltype\\\\(auto\\\\)\",\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"(?:[a-zA-Z_]\\\\w*::)?[a-zA-Z]\\\\w*\\\\s*\\\\(\",\n                    \"returnBegin\": true,\n                    \"contains\": [\n                        {\n                            \"className\": \"title\",\n                            \"begin\": \"(?:[a-zA-Z_]\\\\w*::)?[a-zA-Z]\\\\w*\",\n                            \"relevance\": 0\n                        }\n                    ],\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.4\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.3\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.0\"\n                        },\n                        {\n                            \"begin\": \"\\\\(\",\n                            \"end\": \"\\\\)\",\n                            \"keywords\": {\n                                \"$ref\": \"#keywords\"\n                            },\n                            \"relevance\": 0,\n                            \"contains\": [\n                                \"self\",\n                                {\n                                    \"$ref\": \"#contains.0.contains.1\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.0.contains.2\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.0.contains.4\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.0.contains.3\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.0.contains.0\"\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.2\"\n                },\n                {\n                    \"className\": \"meta\",\n                    \"begin\": \"#\\\\s*[a-z]+\\\\b\",\n                    \"end\": \"$\",\n                    \"keywords\": {\n                        \"meta-keyword\": \"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include\"\n                    },\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\\\\\n\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"className\": \"meta-string\",\n                            \"variants\": {\n                                \"$ref\": \"#contains.0.contains.4.variants\"\n                            }\n                        },\n                        {\n                            \"className\": \"meta-string\",\n                            \"begin\": \"<.*?>\",\n                            \"end\": \"$\",\n                            \"illegal\": \"\\\\n\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.2\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.1\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.2\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.4\"\n        },\n        {\n            \"$ref\": \"#contains.1.contains.6\"\n        },\n        {\n            \"begin\": \"\\\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<\",\n            \"end\": \">\",\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            },\n            \"contains\": [\n                \"self\",\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"[a-zA-Z]\\\\w*::\",\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            }\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class struct\",\n            \"end\": \"[{;:]\",\n            \"contains\": [\n                {\n                    \"begin\": \"<\",\n                    \"end\": \">\",\n                    \"contains\": [\n                        \"self\"\n                    ]\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ],\n    \"exports\": {\n        \"preprocessor\": {\n            \"$ref\": \"#contains.1.contains.6\"\n        },\n        \"strings\": {\n            \"$ref\": \"#contains.0.contains.4\"\n        },\n        \"keywords\": {\n            \"$ref\": \"#keywords\"\n        }\n    }\n}\n"
  },
  {
    "path": "includes/Highlight/languages/armasm.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"aliases\": [\n        \"arm\"\n    ],\n    \"lexemes\": \"\\\\.?[a-zA-Z]\\\\w*\",\n    \"keywords\": {\n        \"meta\": \".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND \",\n        \"built_in\": \"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 pc lr sp ip sl sb fp a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 {PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\\\b(adc|(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|wfe|wfi|yield)(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?[sptrx]?\",\n            \"end\": \"\\\\s\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"[;@]\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"[^\\\\\\\\]'\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"title\",\n            \"begin\": \"\\\\|\",\n            \"end\": \"\\\\|\",\n            \"illegal\": \"\\\\n\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"variants\": [\n                {\n                    \"begin\": \"[#$=]?0x[0-9a-f]+\"\n                },\n                {\n                    \"begin\": \"[#$=]?0b[01]+\"\n                },\n                {\n                    \"begin\": \"[#$=]\\\\d+\"\n                },\n                {\n                    \"begin\": \"\\\\b\\\\d+\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"symbol\",\n            \"variants\": [\n                {\n                    \"begin\": \"^[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+\"\n                },\n                {\n                    \"begin\": \"^\\\\s*[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+:\"\n                },\n                {\n                    \"begin\": \"[=#]\\\\w+\"\n                }\n            ],\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/asciidoc.json",
    "content": "{\n    \"aliases\": [\n        \"adoc\"\n    ],\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"^\\/{4,}\\\\n\",\n            \"end\": \"\\\\n\\/{4,}$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"^\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"title\",\n            \"begin\": \"^\\\\.\\\\w.*$\"\n        },\n        {\n            \"begin\": \"^[=\\\\*]{4,}\\\\n\",\n            \"end\": \"\\\\n^[=\\\\*]{4,}$\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"section\",\n            \"relevance\": 10,\n            \"variants\": [\n                {\n                    \"begin\": \"^(={1,5}) .+?( \\\\1)?$\"\n                },\n                {\n                    \"begin\": \"^[^\\\\[\\\\]\\\\n]+?\\\\n[=\\\\-~\\\\^\\\\+]{2,}$\"\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^:.+?:\",\n            \"end\": \"\\\\s\",\n            \"excludeEnd\": true,\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^\\\\[.+?\\\\]$\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"quote\",\n            \"begin\": \"^_{4,}\\\\n\",\n            \"end\": \"\\\\n_{4,}$\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"code\",\n            \"begin\": \"^[\\\\-\\\\.]{4,}\\\\n\",\n            \"end\": \"\\\\n[\\\\-\\\\.]{4,}$\",\n            \"relevance\": 10\n        },\n        {\n            \"begin\": \"^\\\\+{4,}\\\\n\",\n            \"end\": \"\\\\n\\\\+{4,}$\",\n            \"contains\": [\n                {\n                    \"begin\": \"<\",\n                    \"end\": \">\",\n                    \"subLanguage\": \"xml\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"bullet\",\n            \"begin\": \"^(\\\\*+|\\\\-+|\\\\.+|[^\\\\n]+?::)\\\\s+\"\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"^(NOTE|TIP|IMPORTANT|WARNING|CAUTION):\\\\s+\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"strong\",\n            \"begin\": \"\\\\B\\\\*(?![\\\\*\\\\s])\",\n            \"end\": \"(\\\\n{2}|\\\\*)\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\*\\\\w\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"emphasis\",\n            \"begin\": \"\\\\B'(?!['\\\\s])\",\n            \"end\": \"(\\\\n{2}|')\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\'\\\\w\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"emphasis\",\n            \"begin\": \"_(?![_\\\\s])\",\n            \"end\": \"(\\\\n{2}|_)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"begin\": \"``.+?''\"\n                },\n                {\n                    \"begin\": \"`.+?'\"\n                }\n            ]\n        },\n        {\n            \"className\": \"code\",\n            \"begin\": \"(`.+?`|\\\\+.+?\\\\+)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"code\",\n            \"begin\": \"^[ \\\\t]\",\n            \"end\": \"$\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"^'{3,}[ \\\\t]*$\",\n            \"relevance\": 10\n        },\n        {\n            \"begin\": \"(link:)?(http|https|ftp|file|irc|image:?):\\\\S+\\\\[.*?\\\\]\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"begin\": \"(link|image:?):\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"link\",\n                    \"begin\": \"\\\\w\",\n                    \"end\": \"[^\\\\[]+\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"\\\\[\",\n                    \"end\": \"\\\\]\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true,\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 10\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/aspectj.json",
    "content": "{\n    \"keywords\": \"false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance\",\n    \"illegal\": \"<\\\\\\/|#\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\w+@\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"@[A-Za-z]+\"\n                },\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.2\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.2\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.3.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"aspect\",\n            \"end\": \"[{;=]\",\n            \"excludeEnd\": true,\n            \"illegal\": \"[:;\\\"\\\\[\\\\]]\",\n            \"contains\": [\n                {\n                    \"beginKeywords\": \"extends implements pertypewithin perthis pertarget percflowbelow percflow issingleton\"\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"\\\\([^\\\\)]*\",\n                    \"end\": \"[)]+\",\n                    \"keywords\": \"false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance get set args call\",\n                    \"excludeEnd\": false\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class interface\",\n            \"end\": \"[{;=]\",\n            \"excludeEnd\": true,\n            \"relevance\": 0,\n            \"keywords\": \"class interface\",\n            \"illegal\": \"[:\\\"\\\\[\\\\]]\",\n            \"contains\": [\n                {\n                    \"beginKeywords\": \"extends implements\"\n                },\n                {\n                    \"$ref\": \"#contains.5.contains.1\"\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"pointcut after before around throwing returning\",\n            \"end\": \"[)]\",\n            \"excludeEnd\": false,\n            \"illegal\": \"[\\\"\\\\[\\\\]]\",\n            \"contains\": [\n                {\n                    \"begin\": \"[a-zA-Z_]\\\\w*\\\\s*\\\\(\",\n                    \"returnBegin\": true,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.5.contains.1\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"begin\": \"[:]\",\n            \"returnBegin\": true,\n            \"end\": \"[{;]\",\n            \"relevance\": 0,\n            \"excludeEnd\": false,\n            \"keywords\": \"false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance\",\n            \"illegal\": \"[\\\"\\\\[\\\\]]\",\n            \"contains\": [\n                {\n                    \"begin\": \"[a-zA-Z_]\\\\w*\\\\s*\\\\(\",\n                    \"keywords\": \"false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance get set args call\",\n                    \"relevance\": 0\n                },\n                {\n                    \"$ref\": \"#contains.4\"\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"new throw\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"begin\": \"\\\\w+ +\\\\w+(\\\\.)?\\\\w+\\\\s*\\\\([^\\\\)]*\\\\)\\\\s*((throws)[\\\\w\\\\s,]+)?[\\\\{;]\",\n            \"returnBegin\": true,\n            \"end\": \"[{;=]\",\n            \"keywords\": \"false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"begin\": \"[a-zA-Z_]\\\\w*\\\\s*\\\\(\",\n                    \"returnBegin\": true,\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.5.contains.1\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"relevance\": 0,\n                    \"keywords\": \"false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else extends implements break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws privileged aspectOf adviceexecution proceed cflowbelow cflow initialization preinitialization staticinitialization withincode target within execution getWithinTypeName handler thisJoinPoint thisJoinPointStaticPart thisEnclosingJoinPointStaticPart declare parents warning error soft precedence thisAspectInstance\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.3\"\n                        },\n                        {\n                            \"$ref\": \"#contains.4\"\n                        },\n                        {\n                            \"className\": \"number\",\n                            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"$ref\": \"#contains.2\"\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.2\"\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.10.contains.1.contains.2\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"@[A-Za-z]+\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/autohotkey.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"aliases\": [\n        \"ahk\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"Break Continue Critical Exit ExitApp Gosub Goto New OnExit Pause return SetBatchLines SetTimer Suspend Thread Throw Until ahk_id ahk_class ahk_pid ahk_exe ahk_group\",\n        \"literal\": \"true false NOT AND OR\",\n        \"built_in\": \"ComSpec Clipboard ClipboardAll ErrorLevel\"\n    },\n    \"contains\": [\n        {\n            \"begin\": \"`[\\\\s\\\\S]\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \";\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"variable\",\n            \"begin\": \"%[a-zA-Z0-9#_$@]+%\"\n        },\n        {\n            \"className\": \"built_in\",\n            \"begin\": \"^\\\\s*\\\\w+\\\\s*(,|%)\"\n        },\n        {\n            \"className\": \"title\",\n            \"variants\": [\n                {\n                    \"begin\": \"^[^\\\\n\\\";]+::(?!=)\"\n                },\n                {\n                    \"begin\": \"^[^\\\\n\\\";]+:(?!=)\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^\\\\s*#\\\\w+\",\n            \"end\": \"$\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"built_in\",\n            \"begin\": \"A_[a-zA-Z0-9]+\"\n        },\n        {\n            \"begin\": \",\\\\s*,\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/autoit.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"illegal\": \"\\\\\\/\\\\*\",\n    \"keywords\": {\n        \"keyword\": \"ByRef Case Const ContinueCase ContinueLoop Default Dim Do Else ElseIf EndFunc EndIf EndSelect EndSwitch EndWith Enum Exit ExitLoop For Func Global If In Local Next ReDim Return Select Static Step Switch Then To Until Volatile WEnd While With\",\n        \"built_in\": \"Abs ACos AdlibRegister AdlibUnRegister Asc AscW ASin Assign ATan AutoItSetOption AutoItWinGetTitle AutoItWinSetTitle Beep Binary BinaryLen BinaryMid BinaryToString BitAND BitNOT BitOR BitRotate BitShift BitXOR BlockInput Break Call CDTray Ceiling Chr ChrW ClipGet ClipPut ConsoleRead ConsoleWrite ConsoleWriteError ControlClick ControlCommand ControlDisable ControlEnable ControlFocus ControlGetFocus ControlGetHandle ControlGetPos ControlGetText ControlHide ControlListView ControlMove ControlSend ControlSetText ControlShow ControlTreeView Cos Dec DirCopy DirCreate DirGetSize DirMove DirRemove DllCall DllCallAddress DllCallbackFree DllCallbackGetPtr DllCallbackRegister DllClose DllOpen DllStructCreate DllStructGetData DllStructGetPtr DllStructGetSize DllStructSetData DriveGetDrive DriveGetFileSystem DriveGetLabel DriveGetSerial DriveGetType DriveMapAdd DriveMapDel DriveMapGet DriveSetLabel DriveSpaceFree DriveSpaceTotal DriveStatus EnvGet EnvSet EnvUpdate Eval Execute Exp FileChangeDir FileClose FileCopy FileCreateNTFSLink FileCreateShortcut FileDelete FileExists FileFindFirstFile FileFindNextFile FileFlush FileGetAttrib FileGetEncoding FileGetLongName FileGetPos FileGetShortcut FileGetShortName FileGetSize FileGetTime FileGetVersion FileInstall FileMove FileOpen FileOpenDialog FileRead FileReadLine FileReadToArray FileRecycle FileRecycleEmpty FileSaveDialog FileSelectFolder FileSetAttrib FileSetEnd FileSetPos FileSetTime FileWrite FileWriteLine Floor FtpSetProxy FuncName GUICreate GUICtrlCreateAvi GUICtrlCreateButton GUICtrlCreateCheckbox GUICtrlCreateCombo GUICtrlCreateContextMenu GUICtrlCreateDate GUICtrlCreateDummy GUICtrlCreateEdit GUICtrlCreateGraphic GUICtrlCreateGroup GUICtrlCreateIcon GUICtrlCreateInput GUICtrlCreateLabel GUICtrlCreateList GUICtrlCreateListView GUICtrlCreateListViewItem GUICtrlCreateMenu GUICtrlCreateMenuItem GUICtrlCreateMonthCal GUICtrlCreateObj GUICtrlCreatePic GUICtrlCreateProgress GUICtrlCreateRadio GUICtrlCreateSlider GUICtrlCreateTab GUICtrlCreateTabItem GUICtrlCreateTreeView GUICtrlCreateTreeViewItem GUICtrlCreateUpdown GUICtrlDelete GUICtrlGetHandle GUICtrlGetState GUICtrlRead GUICtrlRecvMsg GUICtrlRegisterListViewSort GUICtrlSendMsg GUICtrlSendToDummy GUICtrlSetBkColor GUICtrlSetColor GUICtrlSetCursor GUICtrlSetData GUICtrlSetDefBkColor GUICtrlSetDefColor GUICtrlSetFont GUICtrlSetGraphic GUICtrlSetImage GUICtrlSetLimit GUICtrlSetOnEvent GUICtrlSetPos GUICtrlSetResizing GUICtrlSetState GUICtrlSetStyle GUICtrlSetTip GUIDelete GUIGetCursorInfo GUIGetMsg GUIGetStyle GUIRegisterMsg GUISetAccelerators GUISetBkColor GUISetCoord GUISetCursor GUISetFont GUISetHelp GUISetIcon GUISetOnEvent GUISetState GUISetStyle GUIStartGroup GUISwitch Hex HotKeySet HttpSetProxy HttpSetUserAgent HWnd InetClose InetGet InetGetInfo InetGetSize InetRead IniDelete IniRead IniReadSection IniReadSectionNames IniRenameSection IniWrite IniWriteSection InputBox Int IsAdmin IsArray IsBinary IsBool IsDeclared IsDllStruct IsFloat IsFunc IsHWnd IsInt IsKeyword IsNumber IsObj IsPtr IsString Log MemGetStats Mod MouseClick MouseClickDrag MouseDown MouseGetCursor MouseGetPos MouseMove MouseUp MouseWheel MsgBox Number ObjCreate ObjCreateInterface ObjEvent ObjGet ObjName OnAutoItExitRegister OnAutoItExitUnRegister Ping PixelChecksum PixelGetColor PixelSearch ProcessClose ProcessExists ProcessGetStats ProcessList ProcessSetPriority ProcessWait ProcessWaitClose ProgressOff ProgressOn ProgressSet Ptr Random RegDelete RegEnumKey RegEnumVal RegRead RegWrite Round Run RunAs RunAsWait RunWait Send SendKeepActive SetError SetExtended ShellExecute ShellExecuteWait Shutdown Sin Sleep SoundPlay SoundSetWaveVolume SplashImageOn SplashOff SplashTextOn Sqrt SRandom StatusbarGetText StderrRead StdinWrite StdioClose StdoutRead String StringAddCR StringCompare StringFormat StringFromASCIIArray StringInStr StringIsAlNum StringIsAlpha StringIsASCII StringIsDigit StringIsFloat StringIsInt StringIsLower StringIsSpace StringIsUpper StringIsXDigit StringLeft StringLen StringLower StringMid StringRegExp StringRegExpReplace StringReplace StringReverse StringRight StringSplit StringStripCR StringStripWS StringToASCIIArray StringToBinary StringTrimLeft StringTrimRight StringUpper Tan TCPAccept TCPCloseSocket TCPConnect TCPListen TCPNameToIP TCPRecv TCPSend TCPShutdown, UDPShutdown TCPStartup, UDPStartup TimerDiff TimerInit ToolTip TrayCreateItem TrayCreateMenu TrayGetMsg TrayItemDelete TrayItemGetHandle TrayItemGetState TrayItemGetText TrayItemSetOnEvent TrayItemSetState TrayItemSetText TraySetClick TraySetIcon TraySetOnEvent TraySetPauseIcon TraySetState TraySetToolTip TrayTip UBound UDPBind UDPCloseSocket UDPOpen UDPRecv UDPSend VarGetType WinActivate WinActive WinClose WinExists WinFlash WinGetCaretPos WinGetClassList WinGetClientSize WinGetHandle WinGetPos WinGetProcess WinGetState WinGetText WinGetTitle WinKill WinList WinMenuSelectItem WinMinimizeAll WinMinimizeAllUndo WinMove WinSetOnTop WinSetState WinSetTitle WinSetTrans WinWait\",\n        \"literal\": \"True False And Null Not Or\"\n    },\n    \"contains\": [\n        {\n            \"variants\": [\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \";\",\n                    \"end\": \"$\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ],\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"#cs\",\n                    \"end\": \"#ce\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.variants.0.contains.0\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"#comments-start\",\n                    \"end\": \"#comments-end\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.variants.0.contains.0\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"begin\": \"\\\\$[A-z0-9_]+\"\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\"\\\"\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"''\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"variants\": [\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"\\\\b(0b[01]+)\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"keywords\": {\n                \"meta-keyword\": \"comments include include-once NoTrayIcon OnAutoItStartRegister pragma compile RequireAdmin\"\n            },\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\\\\\n\",\n                    \"relevance\": 0\n                },\n                {\n                    \"beginKeywords\": \"include\",\n                    \"keywords\": {\n                        \"meta-keyword\": \"include\"\n                    },\n                    \"end\": \"$\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2\"\n                        },\n                        {\n                            \"className\": \"meta-string\",\n                            \"variants\": [\n                                {\n                                    \"begin\": \"<\",\n                                    \"end\": \">\"\n                                },\n                                {\n                                    \"begin\": \"\\\"\",\n                                    \"end\": \"\\\"\",\n                                    \"contains\": [\n                                        {\n                                            \"begin\": \"\\\"\\\"\",\n                                            \"relevance\": 0\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"begin\": \"'\",\n                                    \"end\": \"'\",\n                                    \"contains\": [\n                                        {\n                                            \"begin\": \"''\",\n                                            \"relevance\": 0\n                                        }\n                                    ]\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.2\"\n                },\n                {\n                    \"$ref\": \"#contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"@[A-z0-9_]+\"\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"Func\",\n            \"end\": \"$\",\n            \"illegal\": \"\\\\$|\\\\[|%\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.3\"\n                        }\n                    ]\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/avrasm.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"lexemes\": \"\\\\.?[a-zA-Z]\\\\w*\",\n    \"keywords\": {\n        \"keyword\": \"adc add adiw and andi asr bclr bld brbc brbs brcc brcs break breq brge brhc brhs brid brie brlo brlt brmi brne brpl brsh brtc brts brvc brvs bset bst call cbi cbr clc clh cli cln clr cls clt clv clz com cp cpc cpi cpse dec eicall eijmp elpm eor fmul fmuls fmulsu icall ijmp in inc jmp ld ldd ldi lds lpm lsl lsr mov movw mul muls mulsu neg nop or ori out pop push rcall ret reti rjmp rol ror sbc sbr sbrc sbrs sec seh sbi sbci sbic sbis sbiw sei sen ser ses set sev sez sleep spm st std sts sub subi swap tst wdr\",\n        \"built_in\": \"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 r16 r17 r18 r19 r20 r21 r22 r23 r24 r25 r26 r27 r28 r29 r30 r31 x|0 xh xl y|0 yh yl z|0 zh zl ucsr1c udr1 ucsr1a ucsr1b ubrr1l ubrr1h ucsr0c ubrr0h tccr3c tccr3a tccr3b tcnt3h tcnt3l ocr3ah ocr3al ocr3bh ocr3bl ocr3ch ocr3cl icr3h icr3l etimsk etifr tccr1c ocr1ch ocr1cl twcr twdr twar twsr twbr osccal xmcra xmcrb eicra spmcsr spmcr portg ddrg ping portf ddrf sreg sph spl xdiv rampz eicrb eimsk gimsk gicr eifr gifr timsk tifr mcucr mcucsr tccr0 tcnt0 ocr0 assr tccr1a tccr1b tcnt1h tcnt1l ocr1ah ocr1al ocr1bh ocr1bl icr1h icr1l tccr2 tcnt2 ocr2 ocdr wdtcr sfior eearh eearl eedr eecr porta ddra pina portb ddrb pinb portc ddrc pinc portd ddrd pind spdr spsr spcr udr0 ucsr0a ucsr0b ubrr0l acsr admux adcsr adch adcl porte ddre pine pinf\",\n        \"meta\": \".byte .cseg .db .def .device .dseg .dw .endmacro .equ .eseg .exit .include .list .listmac .macro .nolist .org .set\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \";\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b(0b[01]+)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b(\\\\$[a-zA-Z0-9]+|0o[0-7]+)\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"[^\\\\\\\\]'\",\n            \"illegal\": \"[^\\\\\\\\][^']\"\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"^[A-Za-z0-9_.$]+:\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"#\",\n            \"end\": \"$\"\n        },\n        {\n            \"className\": \"subst\",\n            \"begin\": \"@[0-9]+\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/awk.json",
    "content": "{\n    \"keywords\": {\n        \"keyword\": \"BEGIN END if else while do for in break continue delete next nextfile function func exit|10\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"variable\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\$[\\\\w\\\\d#@][\\\\w\\\\d_]*\"\n                },\n                {\n                    \"begin\": \"\\\\$\\\\{(.*?)}\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ],\n            \"variants\": [\n                {\n                    \"begin\": \"(u|b)?r?'''\",\n                    \"end\": \"'''\",\n                    \"relevance\": 10\n                },\n                {\n                    \"begin\": \"(u|b)?r?\\\"\\\"\\\"\",\n                    \"end\": \"\\\"\\\"\\\"\",\n                    \"relevance\": 10\n                },\n                {\n                    \"begin\": \"(u|r|ur)'\",\n                    \"end\": \"'\",\n                    \"relevance\": 10\n                },\n                {\n                    \"begin\": \"(u|r|ur)\\\"\",\n                    \"end\": \"\\\"\",\n                    \"relevance\": 10\n                },\n                {\n                    \"begin\": \"(b|br)'\",\n                    \"end\": \"'\"\n                },\n                {\n                    \"begin\": \"(b|br)\\\"\",\n                    \"end\": \"\\\"\"\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.1.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.1.contains.0\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"regexp\",\n            \"begin\": \"\\\\\\/\",\n            \"end\": \"\\\\\\/[gimuy]*\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                },\n                {\n                    \"begin\": \"\\\\[\",\n                    \"end\": \"\\\\]\",\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.1.contains.0\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/axapta.json",
    "content": "{\n    \"keywords\": \"false int abstract private char boolean static null if for true while long throw finally protected final return void enum else break new catch byte super case short default double public try this switch continue reverse firstfast firstonly forupdate nofetch sum avg minof maxof count order group by asc desc index hint like dispaly edit client server ttsbegin ttscommit str real date container anytype common div mod\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"#\",\n            \"end\": \"$\"\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class interface\",\n            \"end\": \"{\",\n            \"excludeEnd\": true,\n            \"illegal\": \":\",\n            \"contains\": [\n                {\n                    \"beginKeywords\": \"extends implements\"\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/bash.json",
    "content": "{\n    \"aliases\": [\n        \"sh\",\n        \"zsh\"\n    ],\n    \"lexemes\": \"\\\\b-?[a-z\\\\._]+\\\\b\",\n    \"keywords\": {\n        \"keyword\": \"if then else elif fi for while in do done case esac function\",\n        \"literal\": \"true false\",\n        \"built_in\": \"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp\",\n        \"_\": \"-ne -eq -lt -gt -f -d -e -s -l -a\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^#![^\\\\n]+sh\\\\s*$\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"function\",\n            \"begin\": \"\\\\w[\\\\w\\\\d_]*\\\\s*\\\\(\\\\s*\\\\)\\\\s*\\\\{\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"\\\\w[\\\\w\\\\d_]*\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"variable\",\n                    \"variants\": [\n                        {\n                            \"begin\": \"\\\\$[\\\\w\\\\d#@][\\\\w\\\\d_]*\"\n                        },\n                        {\n                            \"begin\": \"\\\\$\\\\{(.*?)}\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"variable\",\n                    \"begin\": \"\\\\$\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.3.contains.0\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"\",\n            \"begin\": \"\\\\\\\\\\\"\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\"\n        },\n        {\n            \"$ref\": \"#contains.3.contains.1\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/basic.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"illegal\": \"^.\",\n    \"lexemes\": \"[a-zA-Z][a-zA-Z0-9_$%!#]*\",\n    \"keywords\": {\n        \"keyword\": \"ABS ASC AND ATN AUTO|0 BEEP BLOAD|10 BSAVE|10 CALL CALLS CDBL CHAIN CHDIR CHR$|10 CINT CIRCLE CLEAR CLOSE CLS COLOR COM COMMON CONT COS CSNG CSRLIN CVD CVI CVS DATA DATE$ DEFDBL DEFINT DEFSNG DEFSTR DEF|0 SEG USR DELETE DIM DRAW EDIT END ENVIRON ENVIRON$ EOF EQV ERASE ERDEV ERDEV$ ERL ERR ERROR EXP FIELD FILES FIX FOR|0 FRE GET GOSUB|10 GOTO HEX$ IF THEN ELSE|0 INKEY$ INP INPUT INPUT# INPUT$ INSTR IMP INT IOCTL IOCTL$ KEY ON OFF LIST KILL LEFT$ LEN LET LINE LLIST LOAD LOC LOCATE LOF LOG LPRINT USING LSET MERGE MID$ MKDIR MKD$ MKI$ MKS$ MOD NAME NEW NEXT NOISE NOT OCT$ ON OR PEN PLAY STRIG OPEN OPTION BASE OUT PAINT PALETTE PCOPY PEEK PMAP POINT POKE POS PRINT PRINT] PSET PRESET PUT RANDOMIZE READ REM RENUM RESET|0 RESTORE RESUME RETURN|0 RIGHT$ RMDIR RND RSET RUN SAVE SCREEN SGN SHELL SIN SOUND SPACE$ SPC SQR STEP STICK STOP STR$ STRING$ SWAP SYSTEM TAB TAN TIME$ TIMER TROFF TRON TO USR VAL VARPTR VARPTR$ VIEW WAIT WHILE WEND WIDTH WINDOW WRITE XOR\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"REM\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"'\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"^[0-9]+ \",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b([0-9]+[0-9edED.]*[#!]?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(&[hH][0-9a-fA-F]{1,4})\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(&[oO][0-7]{1,6})\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/bnf.json",
    "content": "{\n    \"contains\": [\n        {\n            \"className\": \"attribute\",\n            \"begin\": \"<\",\n            \"end\": \">\"\n        },\n        {\n            \"begin\": \"::=\",\n            \"starts\": {\n                \"end\": \"$\",\n                \"contains\": [\n                    {\n                        \"begin\": \"<\",\n                        \"end\": \">\"\n                    },\n                    {\n                        \"className\": \"comment\",\n                        \"begin\": \"\\/\\/\",\n                        \"end\": \"$\",\n                        \"contains\": [\n                            {\n                                \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                            },\n                            {\n                                \"className\": \"doctag\",\n                                \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                \"relevance\": 0\n                            }\n                        ]\n                    },\n                    {\n                        \"className\": \"comment\",\n                        \"begin\": \"\\/\\\\*\",\n                        \"end\": \"\\\\*\\/\",\n                        \"contains\": [\n                            {\n                                \"$ref\": \"#contains.1.starts.contains.1.contains.0\"\n                            },\n                            {\n                                \"className\": \"doctag\",\n                                \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                \"relevance\": 0\n                            }\n                        ]\n                    },\n                    {\n                        \"className\": \"string\",\n                        \"begin\": \"'\",\n                        \"end\": \"'\",\n                        \"illegal\": \"\\\\n\",\n                        \"contains\": [\n                            {\n                                \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                \"relevance\": 0\n                            }\n                        ]\n                    },\n                    {\n                        \"className\": \"string\",\n                        \"begin\": \"\\\"\",\n                        \"end\": \"\\\"\",\n                        \"illegal\": \"\\\\n\",\n                        \"contains\": [\n                            {\n                                \"$ref\": \"#contains.1.starts.contains.3.contains.0\"\n                            }\n                        ]\n                    }\n                ]\n            }\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/brainfuck.json",
    "content": "{\n    \"aliases\": [\n        \"bf\"\n    ],\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"[^\\\\[\\\\]\\\\.,\\\\+\\\\-<> \\r\\n]\",\n            \"end\": \"[\\\\[\\\\]\\\\.,\\\\+\\\\-<> \\r\\n]\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"returnEnd\": true,\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"title\",\n            \"begin\": \"[\\\\[\\\\]]\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"[\\\\.,]\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"(?:\\\\+\\\\+|\\\\-\\\\-)\",\n            \"contains\": [\n                {\n                    \"className\": \"literal\",\n                    \"begin\": \"[\\\\+\\\\-]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.3.contains.0\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/cal.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"keywords\": {\n        \"keyword\": \"div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to until while with var\",\n        \"literal\": \"false true\"\n    },\n    \"illegal\": \"\\\\\\/\\\\*\",\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"contains\": [\n                {\n                    \"begin\": \"''\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"(#\\\\d+)+\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?(DT|D|T)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"class\",\n            \"begin\": \"OBJECT (Table|Form|Report|Dataport|Codeunit|XMLport|MenuSuite|Page|Query) (\\\\d+) ([^\\\\r\\\\n]+)\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"function\",\n                    \"beginKeywords\": \"procedure\",\n                    \"end\": \"[:;]\",\n                    \"keywords\": \"procedure|10\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.5.contains.0\"\n                        },\n                        {\n                            \"className\": \"params\",\n                            \"begin\": \"\\\\(\",\n                            \"end\": \"\\\\)\",\n                            \"keywords\": \"div mod in and or not xor asserterror begin case do downto else end exit for if of repeat then to until while with var\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.0\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.1\"\n                                }\n                            ]\n                        },\n                        {\n                            \"className\": \"comment\",\n                            \"begin\": \"\\/\\/\",\n                            \"end\": \"$\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                                },\n                                {\n                                    \"className\": \"doctag\",\n                                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        },\n                        {\n                            \"className\": \"comment\",\n                            \"begin\": \"\\\\{\",\n                            \"end\": \"\\\\}\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.5.contains.1.contains.2.contains.0\"\n                                },\n                                {\n                                    \"className\": \"doctag\",\n                                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                    \"relevance\": 0\n                                }\n                            ],\n                            \"relevance\": 0\n                        },\n                        {\n                            \"className\": \"comment\",\n                            \"begin\": \"\\\\(\\\\*\",\n                            \"end\": \"\\\\*\\\\)\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.5.contains.1.contains.2.contains.0\"\n                                },\n                                {\n                                    \"className\": \"doctag\",\n                                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                    \"relevance\": 0\n                                }\n                            ],\n                            \"relevance\": 10\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.5.contains.1\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/capnproto.json",
    "content": "{\n    \"aliases\": [\n        \"capnp\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"struct enum interface union group import using const annotation extends in of on as with from fixed\",\n        \"built_in\": \"Void Bool Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float32 Float64 Text Data AnyPointer AnyStruct Capability List\",\n        \"literal\": \"true false\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"@0x[\\\\w\\\\d]{16};\",\n            \"illegal\": \"\\\\n\"\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"@\\\\d+\\\\b\"\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"struct enum\",\n            \"end\": \"\\\\{\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0,\n                    \"starts\": {\n                        \"endsWithParent\": true,\n                        \"excludeEnd\": true\n                    }\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"interface\",\n            \"end\": \"\\\\{\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0,\n                    \"starts\": {\n                        \"endsWithParent\": true,\n                        \"excludeEnd\": true\n                    }\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/ceylon.json",
    "content": "{\n    \"keywords\": {\n        \"keyword\": \"assembly module package import alias class interface object given value assign void function new of extends satisfies abstracts in out return break continue throw assert dynamic if else switch case for while try catch finally then let this outer super is exists nonempty shared abstract formal default actual variable late native deprecatedfinal sealed annotation suppressWarnings small\",\n        \"meta\": \"doc by license see throws tagged\"\n    },\n    \"illegal\": \"\\\\$[^01]|#[^0-9a-fA-F]\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                \"self\",\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"@[a-z]\\\\w*(?:\\\\:\\\"[^\\\"]*\\\")?\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\\\"\\\"\",\n            \"end\": \"\\\"\\\"\\\"\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"contains\": [\n                {\n                    \"className\": \"subst\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true,\n                    \"begin\": \"``\",\n                    \"end\": \"``\",\n                    \"keywords\": \"assembly module package import alias class interface object given value assign void function new of extends satisfies abstracts in out return break continue throw assert dynamic if else switch case for while try catch finally then let this outer super is exists nonempty\",\n                    \"relevance\": 10,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.3\"\n                        },\n                        {\n                            \"$ref\": \"#contains.4\"\n                        },\n                        {\n                            \"className\": \"string\",\n                            \"begin\": \"'\",\n                            \"end\": \"'\"\n                        },\n                        {\n                            \"className\": \"number\",\n                            \"begin\": \"#[0-9a-fA-F_]+|\\\\$[01_]+|[0-9_]+(?:\\\\.[0-9_](?:[eE][+-]?\\\\d+)?)?[kMGTPmunpf]?\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.4.contains.0.contains.2\"\n        },\n        {\n            \"$ref\": \"#contains.4.contains.0.contains.3\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/clean.json",
    "content": "{\n    \"aliases\": [\n        \"clean\",\n        \"icl\",\n        \"dcl\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"if let in with where case of class instance otherwise implementation definition system module from import qualified as special code inline foreign export ccall stdcall generic derive infix infixl infixr\",\n        \"built_in\": \"Int Real Char Bool\",\n        \"literal\": \"True False\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"->|<-[|:]?|#!?|>>=|\\\\{\\\\||\\\\|\\\\}|:==|=:|<>\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/clojure-repl.json",
    "content": "{\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^([\\\\w.-]+|\\\\s*#_)?=>\",\n            \"starts\": {\n                \"end\": \"$\",\n                \"subLanguage\": \"clojure\"\n            }\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/clojure.json",
    "content": "{\n    \"aliases\": [\n        \"clj\"\n    ],\n    \"illegal\": \"\\\\S\",\n    \"contains\": [\n        {\n            \"begin\": \"\\\\(\",\n            \"end\": \"\\\\)\",\n            \"contains\": [\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"comment\",\n                    \"end\": \"\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"keywords\": {\n                        \"builtin-name\": \"def defonce cond apply if-not if-let if not not= = < > <= >= == + \\/ * - rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize\"\n                    },\n                    \"lexemes\": \"[a-zA-Z_\\\\-!.?+*=<>&#'][a-zA-Z_\\\\-!.?+*=<>&#'0-9\\/;:]*\",\n                    \"className\": \"name\",\n                    \"begin\": \"[a-zA-Z_\\\\-!.?+*=<>&#'][a-zA-Z_\\\\-!.?+*=<>&#'0-9\\/;:]*\",\n                    \"starts\": {\n                        \"endsWithParent\": true,\n                        \"relevance\": 0,\n                        \"contains\": [\n                            {\n                                \"$ref\": \"#contains.0\"\n                            },\n                            {\n                                \"className\": \"string\",\n                                \"begin\": \"\\\"\",\n                                \"end\": \"\\\"\",\n                                \"illegal\": null,\n                                \"contains\": [\n                                    {\n                                        \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                        \"relevance\": 0\n                                    }\n                                ]\n                            },\n                            {\n                                \"className\": \"comment\",\n                                \"begin\": \"\\\\^[a-zA-Z_\\\\-!.?+*=<>&#'][a-zA-Z_\\\\-!.?+*=<>&#'0-9\\/;:]*\"\n                            },\n                            {\n                                \"className\": \"comment\",\n                                \"begin\": \"\\\\^\\\\{\",\n                                \"end\": \"\\\\}\",\n                                \"contains\": [\n                                    {\n                                        \"begin\": \"[\\\\[\\\\{]\",\n                                        \"end\": \"[\\\\]\\\\}]\",\n                                        \"contains\": {\n                                            \"$ref\": \"#contains.0.contains.1.starts.contains\"\n                                        }\n                                    }\n                                ]\n                            },\n                            {\n                                \"className\": \"comment\",\n                                \"begin\": \";\",\n                                \"end\": \"$\",\n                                \"contains\": [\n                                    {\n                                        \"$ref\": \"#contains.0.contains.0.contains.0\"\n                                    },\n                                    {\n                                        \"className\": \"doctag\",\n                                        \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                        \"relevance\": 0\n                                    }\n                                ],\n                                \"relevance\": 0\n                            },\n                            {\n                                \"className\": \"symbol\",\n                                \"begin\": \"[:]{1,2}[a-zA-Z_\\\\-!.?+*=<>&#'][a-zA-Z_\\\\-!.?+*=<>&#'0-9\\/;:]*\"\n                            },\n                            {\n                                \"$ref\": \"#contains.0.contains.1.starts.contains.3.contains.0\"\n                            },\n                            {\n                                \"className\": \"number\",\n                                \"begin\": \"[-+]?\\\\d+(\\\\.\\\\d+)?\",\n                                \"relevance\": 0\n                            },\n                            {\n                                \"className\": \"literal\",\n                                \"begin\": \"\\\\b(true|false|nil)\\\\b\"\n                            },\n                            {\n                                \"begin\": \"[a-zA-Z_\\\\-!.?+*=<>&#'][a-zA-Z_\\\\-!.?+*=<>&#'0-9\\/;:]*\",\n                                \"relevance\": 0\n                            }\n                        ]\n                    }\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.1.starts\"\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.0.contains.1.starts.contains.1\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.1.starts.contains.2\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.1.starts.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.1.starts.contains.4\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.1.starts.contains.5\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.1.starts.contains.3.contains.0\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.1.starts.contains.7\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.1.starts.contains.8\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/cmake.json",
    "content": "{\n    \"aliases\": [\n        \"cmake.in\"\n    ],\n    \"case_insensitive\": true,\n    \"keywords\": {\n        \"keyword\": \"break cmake_host_system_information cmake_minimum_required cmake_parse_arguments cmake_policy configure_file continue elseif else endforeach endfunction endif endmacro endwhile execute_process file find_file find_library find_package find_path find_program foreach function get_cmake_property get_directory_property get_filename_component get_property if include include_guard list macro mark_as_advanced math message option return separate_arguments set_directory_properties set_property set site_name string unset variable_watch while add_compile_definitions add_compile_options add_custom_command add_custom_target add_definitions add_dependencies add_executable add_library add_link_options add_subdirectory add_test aux_source_directory build_command create_test_sourcelist define_property enable_language enable_testing export fltk_wrap_ui get_source_file_property get_target_property get_test_property include_directories include_external_msproject include_regular_expression install link_directories link_libraries load_cache project qt_wrap_cpp qt_wrap_ui remove_definitions set_source_files_properties set_target_properties set_tests_properties source_group target_compile_definitions target_compile_features target_compile_options target_include_directories target_link_directories target_link_libraries target_link_options target_sources try_compile try_run ctest_build ctest_configure ctest_coverage ctest_empty_binary_directory ctest_memcheck ctest_read_custom_files ctest_run_script ctest_sleep ctest_start ctest_submit ctest_test ctest_update ctest_upload build_name exec_program export_library_dependencies install_files install_programs install_targets load_command make_directory output_required_files remove subdir_depends subdirs use_mangled_mesa utility_source variable_requires write_file qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or not command policy target test exists is_newer_than is_directory is_symlink is_absolute matches less greater equal less_equal greater_equal strless strgreater strequal strless_equal strgreater_equal version_less version_greater version_equal version_less_equal version_greater_equal in_list defined\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"variable\",\n            \"begin\": \"\\\\${\",\n            \"end\": \"}\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/coffeescript.json",
    "content": "{\n    \"aliases\": [\n        \"coffee\",\n        \"cson\",\n        \"iced\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not\",\n        \"literal\": \"true false null undefined yes no on off\",\n        \"built_in\": \"npm require console print module global window document\"\n    },\n    \"illegal\": \"\\\\\\/\\\\*\",\n    \"contains\": [\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b(0b[01]+)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0,\n            \"starts\": {\n                \"end\": \"(\\\\s*\\/)?\",\n                \"relevance\": 0\n            }\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"begin\": \"'''\",\n                    \"end\": \"'''\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2.variants.0.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\"\\\"\\\"\",\n                    \"end\": \"\\\"\\\"\\\"\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2.variants.0.contains.0\"\n                        },\n                        {\n                            \"className\": \"subst\",\n                            \"begin\": \"#\\\\{\",\n                            \"end\": \"}\",\n                            \"keywords\": {\n                                \"$ref\": \"#keywords\"\n                            },\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.0\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.1\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.2\"\n                                },\n                                {\n                                    \"className\": \"regexp\",\n                                    \"variants\": [\n                                        {\n                                            \"begin\": \"\\/\\/\\/\",\n                                            \"end\": \"\\/\\/\\/\",\n                                            \"contains\": [\n                                                {\n                                                    \"$ref\": \"#contains.2.variants.2.contains.1\"\n                                                },\n                                                {\n                                                    \"className\": \"comment\",\n                                                    \"begin\": \"#\",\n                                                    \"end\": \"$\",\n                                                    \"contains\": [\n                                                        {\n                                                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                                                        },\n                                                        {\n                                                            \"className\": \"doctag\",\n                                                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                                            \"relevance\": 0\n                                                        }\n                                                    ]\n                                                }\n                                            ]\n                                        },\n                                        {\n                                            \"begin\": \"\\/\\/[gim]{0,3}(?=\\\\W)\",\n                                            \"relevance\": 0\n                                        },\n                                        {\n                                            \"begin\": \"\\\\\\/(?![ *]).*?(?![\\\\\\\\]).\\\\\\/[gim]{0,3}(?=\\\\W)\"\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"begin\": \"@[A-Za-z$_][0-9A-Za-z$_]*\"\n                                },\n                                {\n                                    \"subLanguage\": \"javascript\",\n                                    \"excludeBegin\": true,\n                                    \"excludeEnd\": true,\n                                    \"variants\": [\n                                        {\n                                            \"begin\": \"```\",\n                                            \"end\": \"```\"\n                                        },\n                                        {\n                                            \"begin\": \"`\",\n                                            \"end\": \"`\"\n                                        }\n                                    ]\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2.variants.0.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2.variants.2.contains.1\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.2.variants.2.contains.1.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.2.variants.2.contains.1.contains.4\"\n        },\n        {\n            \"$ref\": \"#contains.2.variants.2.contains.1.contains.5\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"###\",\n            \"end\": \"###\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.variants.2.contains.1.contains.3.variants.0.contains.1.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.2.variants.2.contains.1.contains.3.variants.0.contains.1\"\n        },\n        {\n            \"className\": \"function\",\n            \"begin\": \"^\\\\s*[A-Za-z$_][0-9A-Za-z$_]*\\\\s*=\\\\s*(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>\",\n            \"end\": \"[-=]>\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[A-Za-z$_][0-9A-Za-z$_]*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\([^\\\\(]\",\n                    \"returnBegin\": true,\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\(\",\n                            \"end\": \"\\\\)\",\n                            \"keywords\": {\n                                \"$ref\": \"#keywords\"\n                            },\n                            \"contains\": [\n                                \"self\",\n                                {\n                                    \"$ref\": \"#contains.0\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.1\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.2\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.2.variants.2.contains.1.contains.3\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.2.variants.2.contains.1.contains.4\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.2.variants.2.contains.1.contains.5\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"begin\": \"[:\\\\(,=]\\\\s*\",\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"className\": \"function\",\n                    \"begin\": \"(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>\",\n                    \"end\": \"[-=]>\",\n                    \"returnBegin\": true,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.8.contains.1\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class\",\n            \"end\": \"$\",\n            \"illegal\": \"[:=\\\"\\\\[\\\\]]\",\n            \"contains\": [\n                {\n                    \"beginKeywords\": \"extends\",\n                    \"endsWithParent\": true,\n                    \"illegal\": \"[:=\\\"\\\\[\\\\]]\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.8.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.8.contains.0\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"[A-Za-z$_][0-9A-Za-z$_]*:\",\n            \"end\": \":\",\n            \"returnBegin\": true,\n            \"returnEnd\": true,\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/coq.json",
    "content": "{\n    \"keywords\": {\n        \"keyword\": \"_|0 as at cofix else end exists exists2 fix for forall fun if IF in let match mod Prop return Set then Type using where with Abort About Add Admit Admitted All Arguments Assumptions Axiom Back BackTo Backtrack Bind Blacklist Canonical Cd Check Class Classes Close Coercion Coercions CoFixpoint CoInductive Collection Combined Compute Conjecture Conjectures Constant constr Constraint Constructors Context Corollary CreateHintDb Cut Declare Defined Definition Delimit Dependencies DependentDerive Drop eauto End Equality Eval Example Existential Existentials Existing Export exporting Extern Extract Extraction Fact Field Fields File Fixpoint Focus for From Function Functional Generalizable Global Goal Grab Grammar Graph Guarded Heap Hint HintDb Hints Hypotheses Hypothesis ident Identity If Immediate Implicit Import Include Inductive Infix Info Initial Inline Inspect Instance Instances Intro Intros Inversion Inversion_clear Language Left Lemma Let Libraries Library Load LoadPath Local Locate Ltac ML Mode Module Modules Monomorphic Morphism Next NoInline Notation Obligation Obligations Opaque Open Optimize Options Parameter Parameters Parametric Path Paths pattern Polymorphic Preterm Print Printing Program Projections Proof Proposition Pwd Qed Quit Rec Record Recursive Redirect Relation Remark Remove Require Reserved Reset Resolve Restart Rewrite Right Ring Rings Save Scheme Scope Scopes Script Search SearchAbout SearchHead SearchPattern SearchRewrite Section Separate Set Setoid Show Solve Sorted Step Strategies Strategy Structure SubClass Table Tables Tactic Term Test Theorem Time Timeout Transparent Type Typeclasses Types Undelimit Undo Unfocus Unfocused Unfold Universe Universes Unset Unshelve using Variable Variables Variant Verbose Visibility where with\",\n        \"built_in\": \"abstract absurd admit after apply as assert assumption at auto autorewrite autounfold before bottom btauto by case case_eq cbn cbv change classical_left classical_right clear clearbody cofix compare compute congruence constr_eq constructor contradict contradiction cut cutrewrite cycle decide decompose dependent destruct destruction dintuition discriminate discrR do double dtauto eapply eassumption eauto ecase econstructor edestruct ediscriminate eelim eexact eexists einduction einjection eleft elim elimtype enough equality erewrite eright esimplify_eq esplit evar exact exactly_once exfalso exists f_equal fail field field_simplify field_simplify_eq first firstorder fix fold fourier functional generalize generalizing gfail give_up has_evar hnf idtac in induction injection instantiate intro intro_pattern intros intuition inversion inversion_clear is_evar is_var lapply lazy left lia lra move native_compute nia nsatz omega once pattern pose progress proof psatz quote record red refine reflexivity remember rename repeat replace revert revgoals rewrite rewrite_strat right ring ring_simplify rtauto set setoid_reflexivity setoid_replace setoid_rewrite setoid_symmetry setoid_transitivity shelve shelve_unifiable simpl simple simplify_eq solve specialize split split_Rabs split_Rmult stepl stepr subst sum swap symmetry tactic tauto time timeout top transitivity trivial try tryif unfold unify until using vm_compute with\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\(\\\\*\",\n            \"end\": \"\\\\*\\\\)\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"type\",\n            \"excludeBegin\": true,\n            \"begin\": \"\\\\|\\\\s*\",\n            \"end\": \"\\\\w+\"\n        },\n        {\n            \"begin\": \"[-=]>\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/cos.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"aliases\": [\n        \"cos\",\n        \"cls\"\n    ],\n    \"keywords\": \"property parameter class classmethod clientmethod extends as break catch close continue do d|0 else elseif for goto halt hang h|0 if job j|0 kill k|0 lock l|0 merge new open quit q|0 read r|0 return set s|0 tcommit throw trollback try tstart use view while write w|0 xecute x|0 zkill znspace zn ztrap zwrite zw zzdump zzwrite print zbreak zinsert zload zprint zremove zsave zzprint mv mvcall mvcrt mvdim mvprint zquit zsync ascii\",\n    \"contains\": [\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\"\\\"\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \";\",\n            \"end\": \"$\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"built_in\",\n            \"begin\": \"(?:\\\\$\\\\$?|\\\\.\\\\.)\\\\^?[a-zA-Z]+\"\n        },\n        {\n            \"className\": \"built_in\",\n            \"begin\": \"\\\\$\\\\$\\\\$[a-zA-Z]+\"\n        },\n        {\n            \"className\": \"built_in\",\n            \"begin\": \"%[a-z]+(?:\\\\.[a-z]+)*\"\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"\\\\^%?[a-zA-Z][\\\\w]*\"\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"##class|##super|#define|#dim\"\n        },\n        {\n            \"begin\": \"&sql\\\\(\",\n            \"end\": \"\\\\)\",\n            \"excludeBegin\": true,\n            \"excludeEnd\": true,\n            \"subLanguage\": \"sql\"\n        },\n        {\n            \"begin\": \"&(js|jscript|javascript)<\",\n            \"end\": \">\",\n            \"excludeBegin\": true,\n            \"excludeEnd\": true,\n            \"subLanguage\": \"javascript\"\n        },\n        {\n            \"begin\": \"&html<\\\\s*<\",\n            \"end\": \">\\\\s*>\",\n            \"subLanguage\": \"xml\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/cpp.json",
    "content": "{\n    \"aliases\": [\n        \"c\",\n        \"cc\",\n        \"h\",\n        \"c++\",\n        \"h++\",\n        \"hpp\",\n        \"hh\",\n        \"hxx\",\n        \"cxx\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"int float while private char char8_t char16_t char32_t catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using asm case typeid wchar_tshort reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignas alignof constexpr consteval constinit decltype concept co_await co_return co_yield requires noexcept static_assert thread_local restrict final override atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq\",\n        \"built_in\": \"std string wstring cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort terminate abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf future isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr _Bool complex _Complex imaginary _Imaginary\",\n        \"literal\": \"true false nullptr NULL\"\n    },\n    \"illegal\": \"<\\/\",\n    \"contains\": [\n        {\n            \"variants\": [\n                {\n                    \"begin\": \"=\",\n                    \"end\": \";\"\n                },\n                {\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\"\n                },\n                {\n                    \"beginKeywords\": \"new throw return else\",\n                    \"end\": \";\"\n                }\n            ],\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            },\n            \"contains\": [\n                {\n                    \"className\": \"keyword\",\n                    \"begin\": \"\\\\b[a-z\\\\d_]*_t\\\\b\"\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"\\/\\/\",\n                    \"end\": \"$\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"\\/\\\\*\",\n                    \"end\": \"\\\\*\\/\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.1.contains.0\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"number\",\n                    \"variants\": [\n                        {\n                            \"begin\": \"\\\\b(0b[01']+)\"\n                        },\n                        {\n                            \"begin\": \"(-?)\\\\b([\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)(u|U|l|L|ul|UL|f|F|b|B)\"\n                        },\n                        {\n                            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9']+|(\\\\b[\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)([eE][-+]?[\\\\d']+)?)\"\n                        }\n                    ],\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"string\",\n                    \"variants\": [\n                        {\n                            \"begin\": \"(u8?|U|L)?\\\"\",\n                            \"end\": \"\\\"\",\n                            \"illegal\": \"\\\\n\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"(u8?|U|L)?'(\\\\\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\\\S)|.)\",\n                            \"end\": \"'\",\n                            \"illegal\": \".\"\n                        },\n                        {\n                            \"begin\": \"(?:u8?|U|L)?R\\\"([^()\\\\\\\\ ]{0,16})\\\\((?:.|\\\\n)*?\\\\)\\\\1\\\"\"\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.3\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.4\"\n                        },\n                        \"self\"\n                    ],\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"begin\": \"((decltype\\\\(auto\\\\)|(?:[a-zA-Z_]\\\\w*::)?[a-zA-Z_]\\\\w*(?:<.*?>)?)[\\\\*&\\\\s]+)+(?:[a-zA-Z_]\\\\w*::)?[a-zA-Z]\\\\w*\\\\s*\\\\(\",\n            \"returnBegin\": true,\n            \"end\": \"[{;=]\",\n            \"excludeEnd\": true,\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            },\n            \"illegal\": \"[^\\\\w\\\\s\\\\*&:<>]\",\n            \"contains\": [\n                {\n                    \"begin\": \"decltype\\\\(auto\\\\)\",\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"(?:[a-zA-Z_]\\\\w*::)?[a-zA-Z]\\\\w*\\\\s*\\\\(\",\n                    \"returnBegin\": true,\n                    \"contains\": [\n                        {\n                            \"className\": \"title\",\n                            \"begin\": \"(?:[a-zA-Z_]\\\\w*::)?[a-zA-Z]\\\\w*\",\n                            \"relevance\": 0\n                        }\n                    ],\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.4\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.3\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.0\"\n                        },\n                        {\n                            \"begin\": \"\\\\(\",\n                            \"end\": \"\\\\)\",\n                            \"keywords\": {\n                                \"$ref\": \"#keywords\"\n                            },\n                            \"relevance\": 0,\n                            \"contains\": [\n                                \"self\",\n                                {\n                                    \"$ref\": \"#contains.0.contains.1\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.0.contains.2\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.0.contains.4\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.0.contains.3\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.0.contains.0\"\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.2\"\n                },\n                {\n                    \"className\": \"meta\",\n                    \"begin\": \"#\\\\s*[a-z]+\\\\b\",\n                    \"end\": \"$\",\n                    \"keywords\": {\n                        \"meta-keyword\": \"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include\"\n                    },\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\\\\\n\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"className\": \"meta-string\",\n                            \"variants\": {\n                                \"$ref\": \"#contains.0.contains.4.variants\"\n                            }\n                        },\n                        {\n                            \"className\": \"meta-string\",\n                            \"begin\": \"<.*?>\",\n                            \"end\": \"$\",\n                            \"illegal\": \"\\\\n\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.2\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.1\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.2\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.4\"\n        },\n        {\n            \"$ref\": \"#contains.1.contains.6\"\n        },\n        {\n            \"begin\": \"\\\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\\\s*<\",\n            \"end\": \">\",\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            },\n            \"contains\": [\n                \"self\",\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"[a-zA-Z]\\\\w*::\",\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            }\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class struct\",\n            \"end\": \"[{;:]\",\n            \"contains\": [\n                {\n                    \"begin\": \"<\",\n                    \"end\": \">\",\n                    \"contains\": [\n                        \"self\"\n                    ]\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ],\n    \"exports\": {\n        \"preprocessor\": {\n            \"$ref\": \"#contains.1.contains.6\"\n        },\n        \"strings\": {\n            \"$ref\": \"#contains.0.contains.4\"\n        },\n        \"keywords\": {\n            \"$ref\": \"#keywords\"\n        }\n    }\n}\n"
  },
  {
    "path": "includes/Highlight/languages/crmsh.json",
    "content": "{\n    \"aliases\": [\n        \"crm\",\n        \"pcmk\"\n    ],\n    \"case_insensitive\": true,\n    \"keywords\": {\n        \"keyword\": \"params meta operations op rule attributes utilization read write deny defined not_defined in_range date spec in ref reference attribute type xpath version and or lt gt tag lte gte eq ne \\\\ number string\",\n        \"literal\": \"Master Started Slave Stopped start promote demote stop monitor true false\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"node\",\n            \"starts\": {\n                \"end\": \"\\\\s*([\\\\w_\\\\-]+:)?\",\n                \"starts\": {\n                    \"className\": \"title\",\n                    \"end\": \"\\\\s*[\\\\$\\\\w_][\\\\w_\\\\-]*\"\n                }\n            }\n        },\n        {\n            \"beginKeywords\": \"primitive rsc_template\",\n            \"starts\": {\n                \"className\": \"title\",\n                \"end\": \"\\\\s*[\\\\$\\\\w_][\\\\w_\\\\-]*\",\n                \"starts\": {\n                    \"end\": \"\\\\s*@?[\\\\w_][\\\\w_\\\\.:-]*\"\n                }\n            }\n        },\n        {\n            \"begin\": \"\\\\b(group|clone|ms|master|location|colocation|order|fencing_topology|rsc_ticket|acl_target|acl_group|user|role|tag|xml)\\\\s+\",\n            \"keywords\": \"group clone ms master location colocation order fencing_topology rsc_ticket acl_target acl_group user role tag xml\",\n            \"starts\": {\n                \"className\": \"title\",\n                \"end\": \"[\\\\$\\\\w_][\\\\w_\\\\-]*\"\n            }\n        },\n        {\n            \"beginKeywords\": \"property rsc_defaults op_defaults\",\n            \"starts\": {\n                \"className\": \"title\",\n                \"end\": \"\\\\s*([\\\\w_\\\\-]+:)?\"\n            }\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"(ocf|systemd|service|lsb):[\\\\w_:-]+\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?(ms|s|h|m)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"literal\",\n            \"begin\": \"[-]?(infinity|inf)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"attr\",\n            \"begin\": \"([A-Za-z\\\\$_\\\\#][\\\\w_\\\\-]+)=\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"tag\",\n            \"begin\": \"<\\/?\",\n            \"end\": \"\\/?>\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/crystal.json",
    "content": "{\n    \"aliases\": [\n        \"cr\"\n    ],\n    \"lexemes\": \"[a-zA-Z_]\\\\w*[!?=]?\",\n    \"keywords\": {\n        \"keyword\": \"abstract alias annotation as as? asm begin break case class def do else elsif end ensure enum extend for fun if include instance_sizeof is_a? lib macro module next nil? of out pointerof private protected rescue responds_to? return require select self sizeof struct super then type typeof union uninitialized unless until verbatim when while with yield __DIR__ __END_LINE__ __FILE__ __LINE__\",\n        \"literal\": \"false nil true\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"template-variable\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\{\\\\{\",\n                    \"end\": \"\\\\}\\\\}\"\n                },\n                {\n                    \"begin\": \"\\\\{%\",\n                    \"end\": \"%\\\\}\"\n                }\n            ],\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            },\n            \"contains\": [\n                {\n                    \"className\": \"string\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"className\": \"subst\",\n                            \"begin\": \"#{\",\n                            \"end\": \"}\",\n                            \"keywords\": {\n                                \"$ref\": \"#keywords\"\n                            },\n                            \"contains\": {\n                                \"$ref\": \"#contains\"\n                            }\n                        }\n                    ],\n                    \"variants\": [\n                        {\n                            \"begin\": \"'\",\n                            \"end\": \"'\"\n                        },\n                        {\n                            \"begin\": \"\\\"\",\n                            \"end\": \"\\\"\"\n                        },\n                        {\n                            \"begin\": \"`\",\n                            \"end\": \"`\"\n                        },\n                        {\n                            \"begin\": \"%[Qwi]?\\\\(\",\n                            \"end\": \"\\\\)\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"\\\\(\",\n                                    \"end\": \"\\\\)\",\n                                    \"contains\": {\n                                        \"$ref\": \"#contains.0.contains.0.variants.3.contains\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"%[Qwi]?\\\\[\",\n                            \"end\": \"\\\\]\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"\\\\[\",\n                                    \"end\": \"\\\\]\",\n                                    \"contains\": {\n                                        \"$ref\": \"#contains.0.contains.0.variants.4.contains\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"%[Qwi]?{\",\n                            \"end\": \"}\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"{\",\n                                    \"end\": \"}\",\n                                    \"contains\": {\n                                        \"$ref\": \"#contains.0.contains.0.variants.5.contains\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"%[Qwi]?<\",\n                            \"end\": \">\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"<\",\n                                    \"end\": \">\",\n                                    \"contains\": {\n                                        \"$ref\": \"#contains.0.contains.0.variants.6.contains\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"%[Qwi]?\\\\|\",\n                            \"end\": \"\\\\|\"\n                        },\n                        {\n                            \"begin\": \"<<-\\\\w+$\",\n                            \"end\": \"^\\\\s*\\\\w+$\"\n                        }\n                    ],\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"string\",\n                    \"variants\": [\n                        {\n                            \"begin\": \"%q\\\\(\",\n                            \"end\": \"\\\\)\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"\\\\(\",\n                                    \"end\": \"\\\\)\",\n                                    \"contains\": {\n                                        \"$ref\": \"#contains.0.contains.1.variants.0.contains\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"%q\\\\[\",\n                            \"end\": \"\\\\]\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"\\\\[\",\n                                    \"end\": \"\\\\]\",\n                                    \"contains\": {\n                                        \"$ref\": \"#contains.0.contains.1.variants.1.contains\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"%q{\",\n                            \"end\": \"}\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"{\",\n                                    \"end\": \"}\",\n                                    \"contains\": {\n                                        \"$ref\": \"#contains.0.contains.1.variants.2.contains\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"%q<\",\n                            \"end\": \">\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"<\",\n                                    \"end\": \">\",\n                                    \"contains\": {\n                                        \"$ref\": \"#contains.0.contains.1.variants.3.contains\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"%q\\\\|\",\n                            \"end\": \"\\\\|\"\n                        },\n                        {\n                            \"begin\": \"<<-'\\\\w+'$\",\n                            \"end\": \"^\\\\s*\\\\w+$\"\n                        }\n                    ],\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"regexp\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.0.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.0.contains.1\"\n                        }\n                    ],\n                    \"variants\": [\n                        {\n                            \"begin\": \"%r\\\\(\",\n                            \"end\": \"\\\\)\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"\\\\(\",\n                                    \"end\": \"\\\\)\",\n                                    \"contains\": {\n                                        \"$ref\": \"#contains.0.contains.2.variants.0.contains\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"%r\\\\[\",\n                            \"end\": \"\\\\]\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"\\\\[\",\n                                    \"end\": \"\\\\]\",\n                                    \"contains\": {\n                                        \"$ref\": \"#contains.0.contains.2.variants.1.contains\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"%r{\",\n                            \"end\": \"}\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"{\",\n                                    \"end\": \"}\",\n                                    \"contains\": {\n                                        \"$ref\": \"#contains.0.contains.2.variants.2.contains\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"%r<\",\n                            \"end\": \">\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"<\",\n                                    \"end\": \">\",\n                                    \"contains\": {\n                                        \"$ref\": \"#contains.0.contains.2.variants.3.contains\"\n                                    }\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"%r\\\\|\",\n                            \"end\": \"\\\\|\"\n                        }\n                    ],\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"(?!%})(!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|\\/=|\\/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~|\\\\n|\\\\b(case|if|select|unless|until|when|while)\\\\b)\\\\s*\",\n                    \"keywords\": \"case if select unless until when while\",\n                    \"contains\": [\n                        {\n                            \"className\": \"regexp\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.0.contains.0.contains.0\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.0.contains.0.contains.1\"\n                                }\n                            ],\n                            \"variants\": [\n                                {\n                                    \"begin\": \"\\/\\/[a-z]*\",\n                                    \"relevance\": 0\n                                },\n                                {\n                                    \"begin\": \"\\/(?!\\\\\\/)\",\n                                    \"end\": \"\\/[a-z]*\"\n                                }\n                            ]\n                        }\n                    ],\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"meta\",\n                    \"begin\": \"@\\\\[\",\n                    \"end\": \"\\\\]\",\n                    \"contains\": [\n                        {\n                            \"className\": \"meta-string\",\n                            \"begin\": \"\\\"\",\n                            \"end\": \"\\\"\",\n                            \"illegal\": \"\\\\n\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.0.contains.0.contains.0\"\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"#\",\n                    \"end\": \"$\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"class\",\n                    \"beginKeywords\": \"class module struct\",\n                    \"end\": \"$|;\",\n                    \"illegal\": \"=\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.5\"\n                        },\n                        {\n                            \"className\": \"title\",\n                            \"begin\": \"[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"begin\": \"<\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"class\",\n                    \"beginKeywords\": \"lib enum union\",\n                    \"end\": \"$|;\",\n                    \"illegal\": \"=\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.5\"\n                        },\n                        {\n                            \"className\": \"title\",\n                            \"begin\": \"[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?\",\n                            \"relevance\": 0\n                        }\n                    ],\n                    \"relevance\": 10\n                },\n                {\n                    \"beginKeywords\": \"annotation\",\n                    \"end\": \"$|;\",\n                    \"illegal\": \"=\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.5\"\n                        },\n                        {\n                            \"className\": \"title\",\n                            \"begin\": \"[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?\",\n                            \"relevance\": 0\n                        }\n                    ],\n                    \"relevance\": 10\n                },\n                {\n                    \"className\": \"function\",\n                    \"beginKeywords\": \"def\",\n                    \"end\": \"\\\\B\\\\b\",\n                    \"contains\": [\n                        {\n                            \"className\": \"title\",\n                            \"begin\": \"[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\\\*\\\\*|[-\\/+%^&*~|]|\\/\\/|\\/\\/=|&[-+*]=?|&\\\\*\\\\*|\\\\[\\\\][=?]?\",\n                            \"relevance\": 0,\n                            \"endsParent\": true\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"function\",\n                    \"beginKeywords\": \"fun macro\",\n                    \"end\": \"\\\\B\\\\b\",\n                    \"contains\": [\n                        {\n                            \"className\": \"title\",\n                            \"begin\": \"[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\\\*\\\\*|[-\\/+%^&*~|]|\\/\\/|\\/\\/=|&[-+*]=?|&\\\\*\\\\*|\\\\[\\\\][=?]?\",\n                            \"relevance\": 0,\n                            \"endsParent\": true\n                        }\n                    ],\n                    \"relevance\": 5\n                },\n                {\n                    \"className\": \"symbol\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*(\\\\!|\\\\?)?:\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"symbol\",\n                    \"begin\": \":\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.0\"\n                        },\n                        {\n                            \"begin\": \"[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|[=!]~|===?|<=>|[<>]=?|\\\\*\\\\*|[-\\/+%^&*~|]|\\/\\/|\\/\\/=|&[-+*]=?|&\\\\*\\\\*|\\\\[\\\\][=?]?\"\n                        }\n                    ],\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"number\",\n                    \"variants\": [\n                        {\n                            \"begin\": \"\\\\b0b([01_]+)(_*[ui](8|16|32|64|128))?\"\n                        },\n                        {\n                            \"begin\": \"\\\\b0o([0-7_]+)(_*[ui](8|16|32|64|128))?\"\n                        },\n                        {\n                            \"begin\": \"\\\\b0x([A-Fa-f0-9_]+)(_*[ui](8|16|32|64|128))?\"\n                        },\n                        {\n                            \"begin\": \"\\\\b([1-9][0-9_]*[0-9]|[0-9])(\\\\.[0-9][0-9_]*)?([eE]_*[-+]?[0-9_]*)?(_*f(32|64))?(?!_)\"\n                        },\n                        {\n                            \"begin\": \"\\\\b([1-9][0-9_]*|0)(_*[ui](8|16|32|64|128))?\"\n                        }\n                    ],\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.1\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.2\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.4\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.5\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.6\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.7\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.8\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.9\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.10\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.11\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.12\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.13\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/cs.json",
    "content": "{\n    \"aliases\": [\n        \"csharp\",\n        \"c#\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"abstract as base bool break byte case catch char checked const continue decimal default delegate do double enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while add alias ascending async await by descending dynamic equals from get global group into join let nameof on orderby partial remove select set value var when where yield\",\n        \"literal\": \"null false true\"\n    },\n    \"illegal\": \"::\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"className\": \"doctag\",\n                    \"variants\": [\n                        {\n                            \"begin\": \"\\/\\/\\/\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"begin\": \"<!--|-->\"\n                        },\n                        {\n                            \"begin\": \"<\\/?\",\n                            \"end\": \">\"\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"returnBegin\": true\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.1\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.1\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"keywords\": {\n                \"meta-keyword\": \"if else elif endif define undef warning error line region endregion pragma checksum\"\n            }\n        },\n        {\n            \"variants\": [\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"\\\\$@\\\"\",\n                    \"end\": \"\\\"\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"{{\"\n                        },\n                        {\n                            \"begin\": \"}}\"\n                        },\n                        {\n                            \"begin\": \"\\\"\\\"\"\n                        },\n                        {\n                            \"className\": \"subst\",\n                            \"begin\": \"{\",\n                            \"end\": \"}\",\n                            \"keywords\": {\n                                \"$ref\": \"#keywords\"\n                            },\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.4.variants.0\"\n                                },\n                                {\n                                    \"className\": \"string\",\n                                    \"begin\": \"\\\\$\\\"\",\n                                    \"end\": \"\\\"\",\n                                    \"illegal\": \"\\\\n\",\n                                    \"contains\": [\n                                        {\n                                            \"begin\": \"{{\"\n                                        },\n                                        {\n                                            \"begin\": \"}}\"\n                                        },\n                                        {\n                                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                            \"relevance\": 0\n                                        },\n                                        {\n                                            \"className\": \"subst\",\n                                            \"begin\": \"{\",\n                                            \"end\": \"}\",\n                                            \"keywords\": {\n                                                \"$ref\": \"#keywords\"\n                                            },\n                                            \"illegal\": \"\\\\n\",\n                                            \"contains\": [\n                                                {\n                                                    \"className\": \"string\",\n                                                    \"begin\": \"\\\\$@\\\"\",\n                                                    \"end\": \"\\\"\",\n                                                    \"contains\": [\n                                                        {\n                                                            \"begin\": \"{{\"\n                                                        },\n                                                        {\n                                                            \"begin\": \"}}\"\n                                                        },\n                                                        {\n                                                            \"begin\": \"\\\"\\\"\"\n                                                        },\n                                                        {\n                                                            \"$ref\": \"#contains.4.variants.0.contains.3.contains.1.contains.3\"\n                                                        }\n                                                    ],\n                                                    \"illegal\": \"\\\\n\"\n                                                },\n                                                {\n                                                    \"$ref\": \"#contains.4.variants.0.contains.3.contains.1\"\n                                                },\n                                                {\n                                                    \"className\": \"string\",\n                                                    \"begin\": \"@\\\"\",\n                                                    \"end\": \"\\\"\",\n                                                    \"contains\": [\n                                                        {\n                                                            \"begin\": \"\\\"\\\"\"\n                                                        }\n                                                    ],\n                                                    \"illegal\": \"\\\\n\"\n                                                },\n                                                {\n                                                    \"className\": \"string\",\n                                                    \"begin\": \"'\",\n                                                    \"end\": \"'\",\n                                                    \"illegal\": \"\\\\n\",\n                                                    \"contains\": [\n                                                        {\n                                                            \"$ref\": \"#contains.4.variants.0.contains.3.contains.1.contains.2\"\n                                                        }\n                                                    ]\n                                                },\n                                                {\n                                                    \"className\": \"string\",\n                                                    \"begin\": \"\\\"\",\n                                                    \"end\": \"\\\"\",\n                                                    \"illegal\": \"\\\\n\",\n                                                    \"contains\": [\n                                                        {\n                                                            \"$ref\": \"#contains.4.variants.0.contains.3.contains.1.contains.2\"\n                                                        }\n                                                    ]\n                                                },\n                                                {\n                                                    \"className\": \"number\",\n                                                    \"variants\": [\n                                                        {\n                                                            \"begin\": \"\\\\b(0b[01']+)\"\n                                                        },\n                                                        {\n                                                            \"begin\": \"(-?)\\\\b([\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)(u|U|l|L|ul|UL|f|F|b|B)\"\n                                                        },\n                                                        {\n                                                            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9']+|(\\\\b[\\\\d']+(\\\\.[\\\\d']*)?|\\\\.[\\\\d']+)([eE][-+]?[\\\\d']+)?)\"\n                                                        }\n                                                    ],\n                                                    \"relevance\": 0\n                                                },\n                                                {\n                                                    \"className\": \"comment\",\n                                                    \"begin\": \"\\/\\\\*\",\n                                                    \"end\": \"\\\\*\\/\",\n                                                    \"contains\": {\n                                                        \"$ref\": \"#contains.2.contains\"\n                                                    },\n                                                    \"illegal\": \"\\\\n\"\n                                                }\n                                            ]\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"className\": \"string\",\n                                    \"begin\": \"@\\\"\",\n                                    \"end\": \"\\\"\",\n                                    \"contains\": {\n                                        \"$ref\": \"#contains.4.variants.0.contains.3.contains.1.contains.3.contains.2.contains\"\n                                    }\n                                },\n                                {\n                                    \"$ref\": \"#contains.4.variants.0.contains.3.contains.1.contains.3.contains.3\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.4.variants.0.contains.3.contains.1.contains.3.contains.4\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.4.variants.0.contains.3.contains.1.contains.3.contains.5\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.2\"\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.4.variants.0.contains.3.contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.4.variants.0.contains.3.contains.2\"\n                },\n                {\n                    \"$ref\": \"#contains.4.variants.0.contains.3.contains.1.contains.3.contains.3\"\n                },\n                {\n                    \"$ref\": \"#contains.4.variants.0.contains.3.contains.1.contains.3.contains.4\"\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.4.variants.0.contains.3.contains.1.contains.3.contains.5\"\n        },\n        {\n            \"beginKeywords\": \"class interface\",\n            \"end\": \"[{;=]\",\n            \"illegal\": \"[^\\\\s:,]\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"$ref\": \"#contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.2\"\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"namespace\",\n            \"end\": \"[{;=]\",\n            \"illegal\": \"[^\\\\s:]\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z](\\\\.?\\\\w)*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"$ref\": \"#contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.2\"\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^\\\\s*\\\\[\",\n            \"excludeBegin\": true,\n            \"end\": \"\\\\]\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"className\": \"meta-string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\"\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"new return throw await else\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"begin\": \"([a-zA-Z]\\\\w*(<[a-zA-Z]\\\\w*(\\\\s*,\\\\s*[a-zA-Z]\\\\w*)*>)?(\\\\[\\\\])?\\\\s+)+[a-zA-Z]\\\\w*\\\\s*\\\\(\",\n            \"returnBegin\": true,\n            \"end\": \"\\\\s*[{;=]\",\n            \"excludeEnd\": true,\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            },\n            \"contains\": [\n                {\n                    \"begin\": \"[a-zA-Z]\\\\w*\\\\s*\\\\(\",\n                    \"returnBegin\": true,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.6.contains.0\"\n                        }\n                    ],\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true,\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.4\"\n                        },\n                        {\n                            \"$ref\": \"#contains.4.variants.0.contains.3.contains.1.contains.3.contains.5\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2\"\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.2\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/csp.json",
    "content": "{\n    \"case_insensitive\": false,\n    \"lexemes\": \"[a-zA-Z][a-zA-Z0-9_\\\\-]*\",\n    \"keywords\": {\n        \"keyword\": \"base-uri child-src connect-src default-src font-src form-action frame-ancestors frame-src img-src media-src object-src plugin-types report-uri sandbox script-src style-src\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\"\n        },\n        {\n            \"className\": \"attribute\",\n            \"begin\": \"^Content\",\n            \"end\": \":\",\n            \"excludeEnd\": true\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/css.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"illegal\": \"[=\\\\\\/|'\\\\$]\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"selector-id\",\n            \"begin\": \"#[A-Za-z0-9_\\\\-]+\"\n        },\n        {\n            \"className\": \"selector-class\",\n            \"begin\": \"\\\\.[A-Za-z0-9_\\\\-]+\"\n        },\n        {\n            \"className\": \"selector-attr\",\n            \"begin\": \"\\\\[\",\n            \"end\": \"\\\\]\",\n            \"illegal\": \"$\",\n            \"contains\": [\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.3.contains.0.contains.0\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"selector-pseudo\",\n            \"begin\": \":(:)?[a-zA-Z0-9\\\\_\\\\-\\\\+\\\\(\\\\)\\\"'.]+\"\n        },\n        {\n            \"begin\": \"@(page|font-face)\",\n            \"lexemes\": \"@[a-z\\\\-]+\",\n            \"keywords\": \"@page @font-face\"\n        },\n        {\n            \"begin\": \"@\",\n            \"end\": \"[{;]\",\n            \"illegal\": \":\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"className\": \"keyword\",\n                    \"begin\": \"@\\\\-?\\\\w[\\\\w]*(\\\\-\\\\w+)*\"\n                },\n                {\n                    \"begin\": \"\\\\s\",\n                    \"endsWithParent\": true,\n                    \"excludeEnd\": true,\n                    \"relevance\": 0,\n                    \"keywords\": \"and or not only\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"[a-z\\\\-]+:\",\n                            \"className\": \"attribute\"\n                        },\n                        {\n                            \"$ref\": \"#contains.3.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.3.contains.1\"\n                        },\n                        {\n                            \"className\": \"number\",\n                            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"selector-tag\",\n            \"begin\": \"[a-zA-Z\\\\-][a-zA-Z0-9_\\\\-]*\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"{\",\n            \"end\": \"}\",\n            \"illegal\": \"\\\\S\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0\"\n                },\n                {\n                    \"begin\": \"(?:[A-Z\\\\_\\\\.\\\\-]+|--[a-zA-Z0-9_\\\\-]+)\\\\s*:\",\n                    \"returnBegin\": true,\n                    \"end\": \";\",\n                    \"endsWithParent\": true,\n                    \"contains\": [\n                        {\n                            \"className\": \"attribute\",\n                            \"begin\": \"\\\\S\",\n                            \"end\": \":\",\n                            \"excludeEnd\": true,\n                            \"starts\": {\n                                \"endsWithParent\": true,\n                                \"excludeEnd\": true,\n                                \"contains\": [\n                                    {\n                                        \"begin\": \"[\\\\w\\\\-]+\\\\(\",\n                                        \"returnBegin\": true,\n                                        \"contains\": [\n                                            {\n                                                \"className\": \"built_in\",\n                                                \"begin\": \"[\\\\w\\\\-]+\"\n                                            },\n                                            {\n                                                \"begin\": \"\\\\(\",\n                                                \"end\": \"\\\\)\",\n                                                \"contains\": [\n                                                    {\n                                                        \"$ref\": \"#contains.3.contains.0\"\n                                                    },\n                                                    {\n                                                        \"$ref\": \"#contains.3.contains.1\"\n                                                    },\n                                                    {\n                                                        \"$ref\": \"#contains.6.contains.1.contains.3\"\n                                                    }\n                                                ]\n                                            }\n                                        ]\n                                    },\n                                    {\n                                        \"$ref\": \"#contains.6.contains.1.contains.3\"\n                                    },\n                                    {\n                                        \"$ref\": \"#contains.3.contains.1\"\n                                    },\n                                    {\n                                        \"$ref\": \"#contains.3.contains.0\"\n                                    },\n                                    {\n                                        \"$ref\": \"#contains.0\"\n                                    },\n                                    {\n                                        \"className\": \"number\",\n                                        \"begin\": \"#[0-9A-Fa-f]+\"\n                                    },\n                                    {\n                                        \"className\": \"meta\",\n                                        \"begin\": \"!important\"\n                                    }\n                                ]\n                            }\n                        }\n                    ]\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/d.json",
    "content": "{\n    \"lexemes\": \"[a-zA-Z_]\\\\w*\",\n    \"keywords\": {\n        \"keyword\": \"abstract alias align asm assert auto body break byte case cast catch class const continue debug default delete deprecated do else enum export extern final finally for foreach foreach_reverse|10 goto if immutable import in inout int interface invariant is lazy macro mixin module new nothrow out override package pragma private protected public pure ref return scope shared static struct super switch synchronized template this throw try typedef typeid typeof union unittest version void volatile while with __FILE__ __LINE__ __gshared|10 __thread __traits __DATE__ __EOF__ __TIME__ __TIMESTAMP__ __VENDOR__ __VERSION__\",\n        \"built_in\": \"bool cdouble cent cfloat char creal dchar delegate double dstring float function idouble ifloat ireal long real short string ubyte ucent uint ulong ushort wchar wstring\",\n        \"literal\": \"false null true\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\\\/\\\\+\",\n            \"end\": \"\\\\+\\\\\\/\",\n            \"contains\": [\n                \"self\",\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"x\\\"[\\\\da-fA-F\\\\s\\\\n\\\\r]*\\\"[cwd]?\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\(['\\\"\\\\?\\\\\\\\abfnrtv]|u[\\\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\\\dA-Fa-f]{2}|U[\\\\dA-Fa-f]{8})|&[a-zA-Z\\\\d]{2,};\",\n                    \"relevance\": 0\n                }\n            ],\n            \"end\": \"\\\"[cwd]?\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"[rq]\\\"\",\n            \"end\": \"\\\"[cwd]?\",\n            \"relevance\": 5\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"`\",\n            \"end\": \"`[cwd]?\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"q\\\"\\\\{\",\n            \"end\": \"\\\\}\\\"\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b(((0[xX](([\\\\da-fA-F][\\\\da-fA-F_]*|_[\\\\da-fA-F][\\\\da-fA-F_]*)\\\\.([\\\\da-fA-F][\\\\da-fA-F_]*|_[\\\\da-fA-F][\\\\da-fA-F_]*)|\\\\.?([\\\\da-fA-F][\\\\da-fA-F_]*|_[\\\\da-fA-F][\\\\da-fA-F_]*))[pP][+-]?(0|[1-9][\\\\d_]*|\\\\d[\\\\d_]*|[\\\\d_]+?\\\\d))|((0|[1-9][\\\\d_]*|\\\\d[\\\\d_]*|[\\\\d_]+?\\\\d)(\\\\.\\\\d*|([eE][+-]?(0|[1-9][\\\\d_]*|\\\\d[\\\\d_]*|[\\\\d_]+?\\\\d)))|\\\\d+\\\\.(0|[1-9][\\\\d_]*|\\\\d[\\\\d_]*|[\\\\d_]+?\\\\d)(0|[1-9][\\\\d_]*|\\\\d[\\\\d_]*|[\\\\d_]+?\\\\d)|\\\\.(0|[1-9][\\\\d_]*)([eE][+-]?(0|[1-9][\\\\d_]*|\\\\d[\\\\d_]*|[\\\\d_]+?\\\\d))?))([fF]|L|i|[fF]i|Li)?|((0|[1-9][\\\\d_]*)|0[bB][01_]+|0[xX]([\\\\da-fA-F][\\\\da-fA-F_]*|_[\\\\da-fA-F][\\\\da-fA-F_]*))(i|[fF]i|Li))\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b((0|[1-9][\\\\d_]*)|0[bB][01_]+|0[xX]([\\\\da-fA-F][\\\\da-fA-F_]*|_[\\\\da-fA-F][\\\\da-fA-F_]*))(L|u|U|Lu|LU|uL|UL)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'(\\\\\\\\(['\\\"\\\\?\\\\\\\\abfnrtv]|u[\\\\dA-Fa-f]{4}|[0-7]{1,3}|x[\\\\dA-Fa-f]{2}|U[\\\\dA-Fa-f]{8})|&[a-zA-Z\\\\d]{2,};|.)\",\n            \"end\": \"'\",\n            \"illegal\": \".\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^#!\",\n            \"end\": \"$\",\n            \"relevance\": 5\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"#(line)\",\n            \"end\": \"$\",\n            \"relevance\": 5\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"@[a-zA-Z_][a-zA-Z_\\\\d]*\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/dart.json",
    "content": "{\n    \"keywords\": {\n        \"keyword\": \"abstract as assert async await break case catch class const continue covariant default deferred do dynamic else enum export extends extension external factory false final finally for Function get hide if implements import in inferface is library mixin new null on operator part rethrow return set show static super switch sync this throw true try typedef var void while with yield\",\n        \"built_in\": \"Comparable DateTime Duration Function Iterable Iterator List Map Match Null Object Pattern RegExp Set Stopwatch String StringBuffer StringSink Symbol Type Uri bool double dynamic int num print Element ElementList document querySelector querySelectorAll window\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"begin\": \"r'''\",\n                    \"end\": \"'''\"\n                },\n                {\n                    \"begin\": \"r\\\"\\\"\\\"\",\n                    \"end\": \"\\\"\\\"\\\"\"\n                },\n                {\n                    \"begin\": \"r'\",\n                    \"end\": \"'\",\n                    \"illegal\": \"\\\\n\"\n                },\n                {\n                    \"begin\": \"r\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\"\n                },\n                {\n                    \"begin\": \"'''\",\n                    \"end\": \"'''\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"className\": \"subst\",\n                            \"variants\": [\n                                {\n                                    \"begin\": \"\\\\$[A-Za-z0-9_]+\"\n                                }\n                            ]\n                        },\n                        {\n                            \"className\": \"subst\",\n                            \"variants\": [\n                                {\n                                    \"begin\": \"\\\\${\",\n                                    \"end\": \"}\"\n                                }\n                            ],\n                            \"keywords\": \"true false null this is new super\",\n                            \"contains\": [\n                                {\n                                    \"className\": \"number\",\n                                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                                    \"relevance\": 0\n                                },\n                                {\n                                    \"$ref\": \"#contains.0\"\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\"\\\"\\\"\",\n                    \"end\": \"\\\"\\\"\\\"\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.variants.4.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.variants.4.contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.variants.4.contains.2\"\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.variants.4.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.variants.4.contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.variants.4.contains.2\"\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.variants.4.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.variants.4.contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.variants.4.contains.2\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"subLanguage\": \"markdown\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\\/+\\\\s*\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"subLanguage\": \"markdown\",\n                    \"begin\": \".\",\n                    \"end\": \"$\"\n                },\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class interface\",\n            \"end\": \"{\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"beginKeywords\": \"extends implements\"\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.0.variants.4.contains.2.contains.0\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"@[A-Za-z]+\"\n        },\n        {\n            \"begin\": \"=>\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/delphi.json",
    "content": "{\n    \"aliases\": [\n        \"dpr\",\n        \"dfm\",\n        \"pas\",\n        \"pascal\",\n        \"freepascal\",\n        \"lazarus\",\n        \"lpr\",\n        \"lfm\"\n    ],\n    \"case_insensitive\": true,\n    \"keywords\": \"exports register file shl array record property for mod while set ally label uses raise not stored class safecall var interface or private static exit index inherited to else stdcall override shr asm far resourcestring finalization packed virtual out and protected library do xorwrite goto near function end div overload object unit begin string on inline repeat until destructor write message program with read initialization except default nil if case cdecl in downto threadvar of try pascal const external constructor type public then implementation finally published procedure absolute reintroduce operator as is abstract alias assembler bitpacked break continue cppdecl cvar enumerator experimental platform deprecated unimplemented dynamic export far16 forward generic helper implements interrupt iochecks local name nodefault noreturn nostackframe oldfpccall otherwise saveregisters softfloat specialize strict unaligned varargs \",\n    \"illegal\": \"\\\"|\\\\$[G-Zg-z]|\\\\\\/\\\\*|<\\\\\\/|\\\\|\",\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"contains\": [\n                {\n                    \"begin\": \"''\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"(#\\\\d+)+\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"[a-zA-Z]\\\\w*\\\\s*=\\\\s*class\\\\s*\\\\(\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"function constructor destructor procedure\",\n            \"end\": \"[:;]\",\n            \"keywords\": \"function constructor|10 destructor|10 procedure|10\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.3.contains.0\"\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"keywords\": \"exports register file shl array record property for mod while set ally label uses raise not stored class safecall var interface or private static exit index inherited to else stdcall override shr asm far resourcestring finalization packed virtual out and protected library do xorwrite goto near function end div overload object unit begin string on inline repeat until destructor write message program with read initialization except default nil if case cdecl in downto threadvar of try pascal const external constructor type public then implementation finally published procedure absolute reintroduce operator as is abstract alias assembler bitpacked break continue cppdecl cvar enumerator experimental platform deprecated unimplemented dynamic export far16 forward generic helper implements interrupt iochecks local name nodefault noreturn nostackframe oldfpccall otherwise saveregisters softfloat specialize strict unaligned varargs \",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.1\"\n                        },\n                        {\n                            \"className\": \"meta\",\n                            \"variants\": [\n                                {\n                                    \"begin\": \"\\\\{\\\\$\",\n                                    \"end\": \"\\\\}\"\n                                },\n                                {\n                                    \"begin\": \"\\\\(\\\\*\\\\$\",\n                                    \"end\": \"\\\\*\\\\)\"\n                                }\n                            ]\n                        },\n                        {\n                            \"className\": \"comment\",\n                            \"begin\": \"\\/\\/\",\n                            \"end\": \"$\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                                },\n                                {\n                                    \"className\": \"doctag\",\n                                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        },\n                        {\n                            \"className\": \"comment\",\n                            \"begin\": \"\\\\{\",\n                            \"end\": \"\\\\}\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.4.contains.1.contains.3.contains.0\"\n                                },\n                                {\n                                    \"className\": \"doctag\",\n                                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                    \"relevance\": 0\n                                }\n                            ],\n                            \"relevance\": 0\n                        },\n                        {\n                            \"className\": \"comment\",\n                            \"begin\": \"\\\\(\\\\*\",\n                            \"end\": \"\\\\*\\\\)\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.4.contains.1.contains.3.contains.0\"\n                                },\n                                {\n                                    \"className\": \"doctag\",\n                                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                    \"relevance\": 0\n                                }\n                            ],\n                            \"relevance\": 10\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.4.contains.1.contains.2\"\n                },\n                {\n                    \"$ref\": \"#contains.4.contains.1.contains.3\"\n                },\n                {\n                    \"$ref\": \"#contains.4.contains.1.contains.4\"\n                },\n                {\n                    \"$ref\": \"#contains.4.contains.1.contains.5\"\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.4.contains.1.contains.2\"\n        },\n        {\n            \"$ref\": \"#contains.4.contains.1.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.4.contains.1.contains.4\"\n        },\n        {\n            \"$ref\": \"#contains.4.contains.1.contains.5\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/diff.json",
    "content": "{\n    \"aliases\": [\n        \"patch\"\n    ],\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"relevance\": 10,\n            \"variants\": [\n                {\n                    \"begin\": \"^@@ +\\\\-\\\\d+,\\\\d+ +\\\\+\\\\d+,\\\\d+ +@@$\"\n                },\n                {\n                    \"begin\": \"^\\\\*\\\\*\\\\* +\\\\d+,\\\\d+ +\\\\*\\\\*\\\\*\\\\*$\"\n                },\n                {\n                    \"begin\": \"^\\\\-\\\\-\\\\- +\\\\d+,\\\\d+ +\\\\-\\\\-\\\\-\\\\-$\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"variants\": [\n                {\n                    \"begin\": \"Index: \",\n                    \"end\": \"$\"\n                },\n                {\n                    \"begin\": \"={3,}\",\n                    \"end\": \"$\"\n                },\n                {\n                    \"begin\": \"^\\\\-{3}\",\n                    \"end\": \"$\"\n                },\n                {\n                    \"begin\": \"^\\\\*{3} \",\n                    \"end\": \"$\"\n                },\n                {\n                    \"begin\": \"^\\\\+{3}\",\n                    \"end\": \"$\"\n                },\n                {\n                    \"begin\": \"^\\\\*{15}$\"\n                }\n            ]\n        },\n        {\n            \"className\": \"addition\",\n            \"begin\": \"^\\\\+\",\n            \"end\": \"$\"\n        },\n        {\n            \"className\": \"deletion\",\n            \"begin\": \"^\\\\-\",\n            \"end\": \"$\"\n        },\n        {\n            \"className\": \"addition\",\n            \"begin\": \"^\\\\!\",\n            \"end\": \"$\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/django.json",
    "content": "{\n    \"aliases\": [\n        \"jinja\"\n    ],\n    \"case_insensitive\": true,\n    \"subLanguage\": \"xml\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\{%\\\\s*comment\\\\s*%}\",\n            \"end\": \"\\\\{%\\\\s*endcomment\\\\s*%}\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\{#\",\n            \"end\": \"#}\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"template-tag\",\n            \"begin\": \"\\\\{%\",\n            \"end\": \"%}\",\n            \"contains\": [\n                {\n                    \"className\": \"name\",\n                    \"begin\": \"\\\\w+\",\n                    \"keywords\": {\n                        \"name\": \"comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim\"\n                    },\n                    \"starts\": {\n                        \"endsWithParent\": true,\n                        \"keywords\": \"in by as\",\n                        \"contains\": [\n                            {\n                                \"begin\": \"\\\\|[A-Za-z]+:?\",\n                                \"keywords\": {\n                                    \"name\": \"truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone\"\n                                },\n                                \"contains\": [\n                                    {\n                                        \"className\": \"string\",\n                                        \"begin\": \"\\\"\",\n                                        \"end\": \"\\\"\",\n                                        \"illegal\": \"\\\\n\",\n                                        \"contains\": [\n                                            {\n                                                \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                                \"relevance\": 0\n                                            }\n                                        ]\n                                    },\n                                    {\n                                        \"className\": \"string\",\n                                        \"begin\": \"'\",\n                                        \"end\": \"'\",\n                                        \"illegal\": \"\\\\n\",\n                                        \"contains\": [\n                                            {\n                                                \"$ref\": \"#contains.2.contains.0.starts.contains.0.contains.0.contains.0\"\n                                            }\n                                        ]\n                                    }\n                                ]\n                            }\n                        ],\n                        \"relevance\": 0\n                    }\n                }\n            ]\n        },\n        {\n            \"className\": \"template-variable\",\n            \"begin\": \"\\\\{\\\\{\",\n            \"end\": \"}}\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0.starts.contains.0\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/dns.json",
    "content": "{\n    \"aliases\": [\n        \"bind\",\n        \"zone\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"IN A AAAA AFSDB APL CAA CDNSKEY CDS CERT CNAME DHCID DLV DNAME DNSKEY DS HIP IPSECKEY KEY KX LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM PTR RRSIG RP SIG SOA SRV SSHFP TA TKEY TLSA TSIG TXT\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \";\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^\\\\$(TTL|GENERATE|INCLUDE|ORIGIN)\\\\b\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)(\\\\.(25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]?\\\\d)){3}))|:)))\\\\b\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]).){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\b\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+[dhwm]?\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/dockerfile.json",
    "content": "{\n    \"aliases\": [\n        \"docker\"\n    ],\n    \"case_insensitive\": true,\n    \"keywords\": \"from maintainer expose env arg user onbuild stopsignal\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        },\n        {\n            \"beginKeywords\": \"run cmd entrypoint volume add copy workdir label healthcheck shell\",\n            \"starts\": {\n                \"end\": \"[^\\\\\\\\]$\",\n                \"subLanguage\": \"bash\"\n            }\n        }\n    ],\n    \"illegal\": \"<\\/\"\n}\n"
  },
  {
    "path": "includes/Highlight/languages/dos.json",
    "content": "{\n    \"aliases\": [\n        \"bat\",\n        \"cmd\"\n    ],\n    \"case_insensitive\": true,\n    \"illegal\": \"\\\\\\/\\\\*\",\n    \"keywords\": {\n        \"keyword\": \"if else goto for in do call exit not exist errorlevel defined equ neq lss leq gtr geq\",\n        \"built_in\": \"prn nul lpt3 lpt2 lpt1 con com4 com3 com2 com1 aux shift cd dir echo setlocal endlocal set pause copy append assoc at attrib break cacls cd chcp chdir chkdsk chkntfs cls cmd color comp compact convert date dir diskcomp diskcopy doskey erase fs find findstr format ftype graftabl help keyb label md mkdir mode more move path pause print popd pushd promt rd recover rem rename replace restore rmdir shiftsort start subst time title tree type ver verify vol ping net ipconfig taskkill xcopy ren del\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"variable\",\n            \"begin\": \"%%[^ ]|%[^ ]+?%|![^ ]+?!\"\n        },\n        {\n            \"className\": \"function\",\n            \"begin\": \"^\\\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\\\s+label)\",\n            \"end\": \"goto:eof\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"^\\\\s*@?rem\\\\b\",\n                    \"end\": \"$\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ],\n                    \"relevance\": 10\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+\",\n            \"relevance\": 0\n        },\n        {\n            \"$ref\": \"#contains.1.contains.1\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/dsconfig.json",
    "content": "{\n    \"keywords\": \"dsconfig\",\n    \"contains\": [\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"^dsconfig\",\n            \"end\": \"\\\\s\",\n            \"excludeEnd\": true,\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"built_in\",\n            \"begin\": \"(list|create|get|set|delete)-(\\\\w+)\",\n            \"end\": \"\\\\s\",\n            \"excludeEnd\": true,\n            \"illegal\": \"!@#$%^&*()\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"built_in\",\n            \"begin\": \"--(\\\\w+)\",\n            \"end\": \"\\\\s\",\n            \"excludeEnd\": true\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"[\\\\w\\\\-?]+:\\\\w+\",\n            \"end\": \"\\\\W\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\\w+-?\\\\w+\",\n            \"end\": \"\\\\W\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/dts.json",
    "content": "{\n    \"keywords\": \"\",\n    \"contains\": [\n        {\n            \"className\": \"class\",\n            \"begin\": \"\\/\\\\s*{\",\n            \"end\": \"};\",\n            \"relevance\": 10,\n            \"contains\": [\n                {\n                    \"className\": \"variable\",\n                    \"begin\": \"\\\\&[a-z\\\\d_]*\\\\b\"\n                },\n                {\n                    \"className\": \"meta-keyword\",\n                    \"begin\": \"\\/[a-z][a-z\\\\d\\\\-]*\\/\"\n                },\n                {\n                    \"className\": \"symbol\",\n                    \"begin\": \"^\\\\s*[a-zA-Z_][a-zA-Z\\\\d_]*:\"\n                },\n                {\n                    \"className\": \"class\",\n                    \"begin\": \"[a-zA-Z_][a-zA-Z\\\\d_@]*\\\\s{\",\n                    \"end\": \"[{;=]\",\n                    \"returnBegin\": true,\n                    \"excludeEnd\": true\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"<\",\n                    \"end\": \">\",\n                    \"contains\": [\n                        {\n                            \"className\": \"number\",\n                            \"variants\": [\n                                {\n                                    \"begin\": \"\\\\b(\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)(u|U|l|L|ul|UL|f|F)\"\n                                },\n                                {\n                                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\"\n                                }\n                            ],\n                            \"relevance\": 0\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"\\/\\/\",\n                    \"end\": \"$\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"\\/\\\\*\",\n                    \"end\": \"\\\\*\\/\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.5.contains.0\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.4.contains.0\"\n                },\n                {\n                    \"className\": \"string\",\n                    \"variants\": [\n                        {\n                            \"className\": \"string\",\n                            \"begin\": \"((u8?|U)|L)?\\\"\",\n                            \"end\": \"\\\"\",\n                            \"illegal\": \"\\\\n\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"(u8?|U)?R\\\"\",\n                            \"end\": \"\\\"\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.0.contains.8.variants.0.contains.0\"\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"'\\\\\\\\?.\",\n                            \"end\": \"'\",\n                            \"illegal\": \".\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.1\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.2\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.4\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.5\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.6\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.4.contains.0\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.8\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"keywords\": {\n                \"meta-keyword\": \"if else elif endif define undef ifdef ifndef\"\n            },\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\\\\\n\",\n                    \"relevance\": 0\n                },\n                {\n                    \"beginKeywords\": \"include\",\n                    \"end\": \"$\",\n                    \"keywords\": {\n                        \"meta-keyword\": \"include\"\n                    },\n                    \"contains\": [\n                        {\n                            \"className\": \"meta-string\",\n                            \"variants\": {\n                                \"$ref\": \"#contains.0.contains.8.variants\"\n                            }\n                        },\n                        {\n                            \"className\": \"meta-string\",\n                            \"begin\": \"<\",\n                            \"end\": \">\",\n                            \"illegal\": \"\\\\n\"\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.8\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.5\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.6\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"[a-zA-Z]\\\\w*::\",\n            \"keywords\": \"\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/dust.json",
    "content": "{\n    \"aliases\": [\n        \"dst\"\n    ],\n    \"case_insensitive\": true,\n    \"subLanguage\": \"xml\",\n    \"contains\": [\n        {\n            \"className\": \"template-tag\",\n            \"begin\": \"\\\\{[#\\\\\\/]\",\n            \"end\": \"\\\\}\",\n            \"illegal\": \";\",\n            \"contains\": [\n                {\n                    \"className\": \"name\",\n                    \"begin\": \"[a-zA-Z\\\\.-]+\",\n                    \"starts\": {\n                        \"endsWithParent\": true,\n                        \"relevance\": 0,\n                        \"contains\": [\n                            {\n                                \"className\": \"string\",\n                                \"begin\": \"\\\"\",\n                                \"end\": \"\\\"\",\n                                \"illegal\": \"\\\\n\",\n                                \"contains\": [\n                                    {\n                                        \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                        \"relevance\": 0\n                                    }\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        {\n            \"className\": \"template-variable\",\n            \"begin\": \"\\\\{\",\n            \"end\": \"\\\\}\",\n            \"illegal\": \";\",\n            \"keywords\": \"if eq ne lt lte gt gte select default math sep\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/ebnf.json",
    "content": "{\n    \"illegal\": \"\\\\S\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\(\\\\*\",\n            \"end\": \"\\\\*\\\\)\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"attribute\",\n            \"begin\": \"^[ ]*[a-zA-Z][a-zA-Z\\\\-_]*([\\\\s\\\\-_]+[a-zA-Z][a-zA-Z]*)*\"\n        },\n        {\n            \"begin\": \"=\",\n            \"end\": \"[.;]\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0\"\n                },\n                {\n                    \"className\": \"meta\",\n                    \"begin\": \"\\\\?.*\\\\?\"\n                },\n                {\n                    \"className\": \"string\",\n                    \"variants\": [\n                        {\n                            \"className\": \"string\",\n                            \"begin\": \"'\",\n                            \"end\": \"'\",\n                            \"illegal\": \"\\\\n\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        },\n                        {\n                            \"className\": \"string\",\n                            \"begin\": \"\\\"\",\n                            \"end\": \"\\\"\",\n                            \"illegal\": \"\\\\n\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.2.contains.2.variants.0.contains.0\"\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"`\",\n                            \"end\": \"`\"\n                        }\n                    ]\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/elixir.json",
    "content": "{\n    \"lexemes\": \"[a-zA-Z_][a-zA-Z0-9_.]*(\\\\!|\\\\?)?\",\n    \"keywords\": \"and false then defined module in return redo retry end for true self when next until do begin unless nil break not case cond alias while ensure or include use alias fn quote require import with|0\",\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"subst\",\n                    \"begin\": \"#\\\\{\",\n                    \"end\": \"}\",\n                    \"lexemes\": \"[a-zA-Z_][a-zA-Z0-9_.]*(\\\\!|\\\\?)?\",\n                    \"keywords\": \"and false then defined module in return redo retry end for true self when next until do begin unless nil break not case cond alias while ensure or include use alias fn quote require import with|0\",\n                    \"contains\": {\n                        \"$ref\": \"#contains\"\n                    }\n                }\n            ],\n            \"variants\": [\n                {\n                    \"begin\": \"\\\"\\\"\\\"\",\n                    \"end\": \"\\\"\\\"\\\"\"\n                },\n                {\n                    \"begin\": \"'''\",\n                    \"end\": \"'''\"\n                },\n                {\n                    \"begin\": \"~S\\\"\\\"\\\"\",\n                    \"end\": \"\\\"\\\"\\\"\",\n                    \"contains\": []\n                },\n                {\n                    \"begin\": \"~S\\\"\",\n                    \"end\": \"\\\"\",\n                    \"contains\": []\n                },\n                {\n                    \"begin\": \"~S'''\",\n                    \"end\": \"'''\",\n                    \"contains\": []\n                },\n                {\n                    \"begin\": \"~S'\",\n                    \"end\": \"'\",\n                    \"contains\": []\n                },\n                {\n                    \"begin\": \"'\",\n                    \"end\": \"'\"\n                },\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"~[A-Z](?=[\\/|([{<\\\"'])\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\"\n                },\n                {\n                    \"begin\": \"'\",\n                    \"end\": \"'\"\n                },\n                {\n                    \"begin\": \"\\\\\\/\",\n                    \"end\": \"\\\\\\/\"\n                },\n                {\n                    \"begin\": \"\\\\|\",\n                    \"end\": \"\\\\|\"\n                },\n                {\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\"\n                },\n                {\n                    \"begin\": \"\\\\[\",\n                    \"end\": \"\\\\]\"\n                },\n                {\n                    \"begin\": \"\\\\{\",\n                    \"end\": \"\\\\}\"\n                },\n                {\n                    \"begin\": \"\\\\<\",\n                    \"end\": \"\\\\>\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"~[a-z](?=[\\/|([{<\\\"'])\",\n            \"contains\": [\n                {\n                    \"endsParent\": true,\n                    \"contains\": [\n                        {\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.0.contains.0\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.0.contains.1\"\n                                }\n                            ],\n                            \"variants\": [\n                                {\n                                    \"begin\": \"\\\"\",\n                                    \"end\": \"\\\"\"\n                                },\n                                {\n                                    \"begin\": \"'\",\n                                    \"end\": \"'\"\n                                },\n                                {\n                                    \"begin\": \"\\\\\\/\",\n                                    \"end\": \"\\\\\\/\"\n                                },\n                                {\n                                    \"begin\": \"\\\\|\",\n                                    \"end\": \"\\\\|\"\n                                },\n                                {\n                                    \"begin\": \"\\\\(\",\n                                    \"end\": \"\\\\)\"\n                                },\n                                {\n                                    \"begin\": \"\\\\[\",\n                                    \"end\": \"\\\\]\"\n                                },\n                                {\n                                    \"begin\": \"\\\\{\",\n                                    \"end\": \"\\\\}\"\n                                },\n                                {\n                                    \"begin\": \"<\",\n                                    \"end\": \">\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"defimpl defmodule defprotocol defrecord\",\n            \"end\": \"\\\\bdo\\\\b|$|;\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_][a-zA-Z0-9_.]*(\\\\!|\\\\?)?\",\n                    \"relevance\": 0,\n                    \"endsParent\": true\n                }\n            ]\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"def defp defmacro\",\n            \"end\": \"\\\\B\\\\b\",\n            \"contains\": {\n                \"$ref\": \"#contains.4.contains\"\n            }\n        },\n        {\n            \"begin\": \"::\"\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \":(?![\\\\s:])\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0\"\n                },\n                {\n                    \"begin\": \"[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-\\/+%^&*~`|]|\\\\[\\\\]=?\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"[a-zA-Z_][a-zA-Z0-9_.]*(\\\\!|\\\\?)?:(?!:)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(\\\\b0o[0-7_]+)|(\\\\b0b[01_]+)|(\\\\b0x[0-9a-fA-F_]+)|(-?\\\\b[1-9][0-9_]*(.[0-9_]+([eE][-+]?[0-9]+)?)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"variable\",\n            \"begin\": \"(\\\\$\\\\W)|((\\\\$|\\\\@\\\\@?)(\\\\w+))\"\n        },\n        {\n            \"begin\": \"->\"\n        },\n        {\n            \"begin\": \"(!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|\\/=|\\/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~)\\\\s*\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.3\"\n                },\n                {\n                    \"className\": \"regexp\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.1\"\n                        }\n                    ],\n                    \"variants\": [\n                        {\n                            \"begin\": \"\\/\",\n                            \"end\": \"\\/[a-z]*\"\n                        },\n                        {\n                            \"begin\": \"%r\\\\[\",\n                            \"end\": \"\\\\][a-z]*\"\n                        }\n                    ]\n                }\n            ],\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/elm.json",
    "content": "{\n    \"keywords\": \"let in if then else case of where module import exposing type alias as infix infixl infixr port effect command subscription\",\n    \"contains\": [\n        {\n            \"beginKeywords\": \"port effect module\",\n            \"end\": \"exposing\",\n            \"keywords\": \"port effect module where command subscription exposing\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"illegal\": \"\\\"\",\n                    \"contains\": [\n                        {\n                            \"className\": \"type\",\n                            \"begin\": \"\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?\"\n                        },\n                        {\n                            \"variants\": [\n                                {\n                                    \"className\": \"comment\",\n                                    \"begin\": \"--\",\n                                    \"end\": \"$\",\n                                    \"contains\": [\n                                        {\n                                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                                        },\n                                        {\n                                            \"className\": \"doctag\",\n                                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                            \"relevance\": 0\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"className\": \"comment\",\n                                    \"begin\": \"{-\",\n                                    \"end\": \"-}\",\n                                    \"contains\": [\n                                        \"self\",\n                                        {\n                                            \"$ref\": \"#contains.0.contains.0.contains.1.variants.0.contains.0\"\n                                        },\n                                        {\n                                            \"className\": \"doctag\",\n                                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                            \"relevance\": 0\n                                        }\n                                    ]\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0.contains.1\"\n                }\n            ],\n            \"illegal\": \"\\\\W\\\\.|;\"\n        },\n        {\n            \"begin\": \"import\",\n            \"end\": \"$\",\n            \"keywords\": \"import as exposing\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0.contains.1\"\n                }\n            ],\n            \"illegal\": \"\\\\W\\\\.|;\"\n        },\n        {\n            \"begin\": \"type\",\n            \"end\": \"$\",\n            \"keywords\": \"type alias\",\n            \"contains\": [\n                {\n                    \"className\": \"type\",\n                    \"begin\": \"\\\\b[A-Z][\\\\w']*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"begin\": \"{\",\n                    \"end\": \"}\",\n                    \"contains\": {\n                        \"$ref\": \"#contains.0.contains.0.contains\"\n                    }\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0.contains.1\"\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"infix infixl infixr\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                    \"relevance\": 0\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0.contains.1\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"port\",\n            \"end\": \"$\",\n            \"keywords\": \"port\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0.contains.1\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\\\\\\\\?.\",\n            \"end\": \"'\",\n            \"illegal\": \".\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.3.contains.0\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.0\"\n        },\n        {\n            \"className\": \"title\",\n            \"begin\": \"^[_a-z][\\\\w']*\",\n            \"relevance\": 0\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.1\"\n        },\n        {\n            \"begin\": \"->|<-\"\n        }\n    ],\n    \"illegal\": \";\"\n}\n"
  },
  {
    "path": "includes/Highlight/languages/erb.json",
    "content": "{\n    \"subLanguage\": \"xml\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"<%#\",\n            \"end\": \"%>\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"begin\": \"<%[%=-]?\",\n            \"end\": \"[%-]?%>\",\n            \"subLanguage\": \"ruby\",\n            \"excludeBegin\": true,\n            \"excludeEnd\": true\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/erlang-repl.json",
    "content": "{\n    \"keywords\": {\n        \"built_in\": \"spawn spawn_link self\",\n        \"keyword\": \"after and andalso|10 band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse|10 query receive rem try when xor\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^[0-9]+> \",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"%\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b(\\\\d+#[a-fA-F0-9]+|\\\\d+(\\\\.\\\\d+)?([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.3.contains.0\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"\\\\?(::)?([A-Z]\\\\w*(::)?)+\"\n        },\n        {\n            \"begin\": \"->\"\n        },\n        {\n            \"begin\": \"ok\"\n        },\n        {\n            \"begin\": \"!\"\n        },\n        {\n            \"begin\": \"(\\\\b[a-z'][a-zA-Z0-9_']*:[a-z'][a-zA-Z0-9_']*)|(\\\\b[a-z'][a-zA-Z0-9_']*)\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"[A-Z][a-zA-Z0-9_']*\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/erlang.json",
    "content": "{\n    \"aliases\": [\n        \"erl\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"after and andalso|10 band begin bnot bor bsl bzr bxor case catch cond div end fun if let not of orelse|10 query receive rem try when xor\",\n        \"literal\": \"false true\"\n    },\n    \"illegal\": \"(<\\/|\\\\*=|\\\\+=|-=|\\/\\\\*|\\\\*\\/|\\\\(\\\\*|\\\\*\\\\))\",\n    \"contains\": [\n        {\n            \"className\": \"function\",\n            \"begin\": \"^[a-z'][a-zA-Z0-9_']*\\\\s*\\\\(\",\n            \"end\": \"->\",\n            \"returnBegin\": true,\n            \"illegal\": \"\\\\(|#|\\/\\/|\\/\\\\*|\\\\\\\\|:|;\",\n            \"contains\": [\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"contains\": [\n                        {\n                            \"className\": \"comment\",\n                            \"begin\": \"%\",\n                            \"end\": \"$\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                                },\n                                {\n                                    \"className\": \"doctag\",\n                                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"fun\\\\s+[a-z'][a-zA-Z0-9_']*\\/\\\\d+\"\n                        },\n                        {\n                            \"beginKeywords\": \"fun receive if try case\",\n                            \"end\": \"end\",\n                            \"keywords\": {\n                                \"$ref\": \"#keywords\"\n                            },\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.0.contains.0.contains.0\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.0.contains.0.contains.1\"\n                                },\n                                {\n                                    \"className\": \"\",\n                                    \"begin\": \"'\",\n                                    \"end\": \"'\",\n                                    \"illegal\": \"\\\\n\",\n                                    \"contains\": [\n                                        {\n                                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                            \"relevance\": 0\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"$ref\": \"#contains.0.contains.0.contains.2\"\n                                },\n                                {\n                                    \"begin\": \"([a-z'][a-zA-Z0-9_']*:[a-z'][a-zA-Z0-9_']*|[a-z'][a-zA-Z0-9_']*)\\\\(\",\n                                    \"end\": \"\\\\)\",\n                                    \"returnBegin\": true,\n                                    \"relevance\": 0,\n                                    \"contains\": [\n                                        {\n                                            \"begin\": \"([a-z'][a-zA-Z0-9_']*:[a-z'][a-zA-Z0-9_']*|[a-z'][a-zA-Z0-9_']*)\",\n                                            \"relevance\": 0\n                                        },\n                                        {\n                                            \"begin\": \"\\\\(\",\n                                            \"end\": \"\\\\)\",\n                                            \"endsWithParent\": true,\n                                            \"returnEnd\": true,\n                                            \"relevance\": 0,\n                                            \"contains\": {\n                                                \"$ref\": \"#contains.0.contains.0.contains\"\n                                            }\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"className\": \"string\",\n                                    \"begin\": \"\\\"\",\n                                    \"end\": \"\\\"\",\n                                    \"illegal\": \"\\\\n\",\n                                    \"contains\": [\n                                        {\n                                            \"$ref\": \"#contains.0.contains.0.contains.2.contains.2.contains.0\"\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"className\": \"number\",\n                                    \"begin\": \"\\\\b(\\\\d+#[a-fA-F0-9]+|\\\\d+(\\\\.\\\\d+)?([eE][-+]?\\\\d+)?)\",\n                                    \"relevance\": 0\n                                },\n                                {\n                                    \"begin\": \"{\",\n                                    \"end\": \"}\",\n                                    \"relevance\": 0,\n                                    \"contains\": {\n                                        \"$ref\": \"#contains.0.contains.0.contains\"\n                                    }\n                                },\n                                {\n                                    \"begin\": \"\\\\b_([A-Z][A-Za-z0-9_]*)?\",\n                                    \"relevance\": 0\n                                },\n                                {\n                                    \"begin\": \"[A-Z][a-zA-Z0-9_]*\",\n                                    \"relevance\": 0\n                                },\n                                {\n                                    \"begin\": \"#[a-zA-Z_]\\\\w*\",\n                                    \"relevance\": 0,\n                                    \"returnBegin\": true,\n                                    \"contains\": [\n                                        {\n                                            \"begin\": \"#[a-zA-Z_]\\\\w*\",\n                                            \"relevance\": 0\n                                        },\n                                        {\n                                            \"begin\": \"{\",\n                                            \"end\": \"}\",\n                                            \"relevance\": 0,\n                                            \"contains\": {\n                                                \"$ref\": \"#contains.0.contains.0.contains\"\n                                            }\n                                        }\n                                    ]\n                                }\n                            ]\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.0.contains.2.contains.4\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.0.contains.2.contains.5\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.0.contains.2.contains.6\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.0.contains.2.contains.7\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.0.contains.2.contains.8\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.0.contains.2.contains.9\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.0.contains.2.contains.10\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-z'][a-zA-Z0-9_']*\",\n                    \"relevance\": 0\n                }\n            ],\n            \"starts\": {\n                \"end\": \";|\\\\.\",\n                \"keywords\": {\n                    \"$ref\": \"#keywords\"\n                },\n                \"contains\": {\n                    \"$ref\": \"#contains.0.contains.0.contains\"\n                }\n            }\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.0\"\n        },\n        {\n            \"begin\": \"^-\",\n            \"end\": \"\\\\.\",\n            \"relevance\": 0,\n            \"excludeEnd\": true,\n            \"returnBegin\": true,\n            \"lexemes\": \"-[a-zA-Z]\\\\w*\",\n            \"keywords\": \"-module -record -undef -export -ifdef -ifndef -author -copyright -doc -vsn -import -include -include_lib -compile -define -else -endif -file -behaviour -behavior -spec\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.2.contains.6\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.2.contains.5\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.2.contains.10\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.2.contains.8\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.2.contains.9\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.2.contains.7\"\n        },\n        {\n            \"begin\": \"\\\\.$\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/excel.json",
    "content": "{\n    \"aliases\": [\n        \"xlsx\",\n        \"xls\"\n    ],\n    \"case_insensitive\": true,\n    \"lexemes\": \"[a-zA-Z][\\\\w\\\\.]*\",\n    \"keywords\": {\n        \"built_in\": \"ABS ACCRINT ACCRINTM ACOS ACOSH ACOT ACOTH AGGREGATE ADDRESS AMORDEGRC AMORLINC AND ARABIC AREAS ASC ASIN ASINH ATAN ATAN2 ATANH AVEDEV AVERAGE AVERAGEA AVERAGEIF AVERAGEIFS BAHTTEXT BASE BESSELI BESSELJ BESSELK BESSELY BETADIST BETA.DIST BETAINV BETA.INV BIN2DEC BIN2HEX BIN2OCT BINOMDIST BINOM.DIST BINOM.DIST.RANGE BINOM.INV BITAND BITLSHIFT BITOR BITRSHIFT BITXOR CALL CEILING CEILING.MATH CEILING.PRECISE CELL CHAR CHIDIST CHIINV CHITEST CHISQ.DIST CHISQ.DIST.RT CHISQ.INV CHISQ.INV.RT CHISQ.TEST CHOOSE CLEAN CODE COLUMN COLUMNS COMBIN COMBINA COMPLEX CONCAT CONCATENATE CONFIDENCE CONFIDENCE.NORM CONFIDENCE.T CONVERT CORREL COS COSH COT COTH COUNT COUNTA COUNTBLANK COUNTIF COUNTIFS COUPDAYBS COUPDAYS COUPDAYSNC COUPNCD COUPNUM COUPPCD COVAR COVARIANCE.P COVARIANCE.S CRITBINOM CSC CSCH CUBEKPIMEMBER CUBEMEMBER CUBEMEMBERPROPERTY CUBERANKEDMEMBER CUBESET CUBESETCOUNT CUBEVALUE CUMIPMT CUMPRINC DATE DATEDIF DATEVALUE DAVERAGE DAY DAYS DAYS360 DB DBCS DCOUNT DCOUNTA DDB DEC2BIN DEC2HEX DEC2OCT DECIMAL DEGREES DELTA DEVSQ DGET DISC DMAX DMIN DOLLAR DOLLARDE DOLLARFR DPRODUCT DSTDEV DSTDEVP DSUM DURATION DVAR DVARP EDATE EFFECT ENCODEURL EOMONTH ERF ERF.PRECISE ERFC ERFC.PRECISE ERROR.TYPE EUROCONVERT EVEN EXACT EXP EXPON.DIST EXPONDIST FACT FACTDOUBLE FALSE|0 F.DIST FDIST F.DIST.RT FILTERXML FIND FINDB F.INV F.INV.RT FINV FISHER FISHERINV FIXED FLOOR FLOOR.MATH FLOOR.PRECISE FORECAST FORECAST.ETS FORECAST.ETS.CONFINT FORECAST.ETS.SEASONALITY FORECAST.ETS.STAT FORECAST.LINEAR FORMULATEXT FREQUENCY F.TEST FTEST FV FVSCHEDULE GAMMA GAMMA.DIST GAMMADIST GAMMA.INV GAMMAINV GAMMALN GAMMALN.PRECISE GAUSS GCD GEOMEAN GESTEP GETPIVOTDATA GROWTH HARMEAN HEX2BIN HEX2DEC HEX2OCT HLOOKUP HOUR HYPERLINK HYPGEOM.DIST HYPGEOMDIST IF IFERROR IFNA IFS IMABS IMAGINARY IMARGUMENT IMCONJUGATE IMCOS IMCOSH IMCOT IMCSC IMCSCH IMDIV IMEXP IMLN IMLOG10 IMLOG2 IMPOWER IMPRODUCT IMREAL IMSEC IMSECH IMSIN IMSINH IMSQRT IMSUB IMSUM IMTAN INDEX INDIRECT INFO INT INTERCEPT INTRATE IPMT IRR ISBLANK ISERR ISERROR ISEVEN ISFORMULA ISLOGICAL ISNA ISNONTEXT ISNUMBER ISODD ISREF ISTEXT ISO.CEILING ISOWEEKNUM ISPMT JIS KURT LARGE LCM LEFT LEFTB LEN LENB LINEST LN LOG LOG10 LOGEST LOGINV LOGNORM.DIST LOGNORMDIST LOGNORM.INV LOOKUP LOWER MATCH MAX MAXA MAXIFS MDETERM MDURATION MEDIAN MID MIDBs MIN MINIFS MINA MINUTE MINVERSE MIRR MMULT MOD MODE MODE.MULT MODE.SNGL MONTH MROUND MULTINOMIAL MUNIT N NA NEGBINOM.DIST NEGBINOMDIST NETWORKDAYS NETWORKDAYS.INTL NOMINAL NORM.DIST NORMDIST NORMINV NORM.INV NORM.S.DIST NORMSDIST NORM.S.INV NORMSINV NOT NOW NPER NPV NUMBERVALUE OCT2BIN OCT2DEC OCT2HEX ODD ODDFPRICE ODDFYIELD ODDLPRICE ODDLYIELD OFFSET OR PDURATION PEARSON PERCENTILE.EXC PERCENTILE.INC PERCENTILE PERCENTRANK.EXC PERCENTRANK.INC PERCENTRANK PERMUT PERMUTATIONA PHI PHONETIC PI PMT POISSON.DIST POISSON POWER PPMT PRICE PRICEDISC PRICEMAT PROB PRODUCT PROPER PV QUARTILE QUARTILE.EXC QUARTILE.INC QUOTIENT RADIANS RAND RANDBETWEEN RANK.AVG RANK.EQ RANK RATE RECEIVED REGISTER.ID REPLACE REPLACEB REPT RIGHT RIGHTB ROMAN ROUND ROUNDDOWN ROUNDUP ROW ROWS RRI RSQ RTD SEARCH SEARCHB SEC SECH SECOND SERIESSUM SHEET SHEETS SIGN SIN SINH SKEW SKEW.P SLN SLOPE SMALL SQL.REQUEST SQRT SQRTPI STANDARDIZE STDEV STDEV.P STDEV.S STDEVA STDEVP STDEVPA STEYX SUBSTITUTE SUBTOTAL SUM SUMIF SUMIFS SUMPRODUCT SUMSQ SUMX2MY2 SUMX2PY2 SUMXMY2 SWITCH SYD T TAN TANH TBILLEQ TBILLPRICE TBILLYIELD T.DIST T.DIST.2T T.DIST.RT TDIST TEXT TEXTJOIN TIME TIMEVALUE T.INV T.INV.2T TINV TODAY TRANSPOSE TREND TRIM TRIMMEAN TRUE|0 TRUNC T.TEST TTEST TYPE UNICHAR UNICODE UPPER VALUE VAR VAR.P VAR.S VARA VARP VARPA VDB VLOOKUP WEBSERVICE WEEKDAY WEEKNUM WEIBULL WEIBULL.DIST WORKDAY WORKDAY.INTL XIRR XNPV XOR YEAR YEARFRAC YIELD YIELDDISC YIELDMAT Z.TEST ZTEST\"\n    },\n    \"contains\": [\n        {\n            \"begin\": \"^=\",\n            \"end\": \"[^=]\",\n            \"returnEnd\": true,\n            \"illegal\": \"=\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"\\\\b[A-Z]{1,2}\\\\d+\\\\b\",\n            \"end\": \"[^\\\\d]\",\n            \"excludeEnd\": true,\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"[A-Z]{0,2}\\\\d*:[A-Z]{0,2}\\\\d*\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.3\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?(%)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\bN\\\\(\",\n            \"end\": \"\\\\)\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"excludeBegin\": true,\n            \"excludeEnd\": true,\n            \"illegal\": \"\\\\n\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/fix.json",
    "content": "{\n    \"contains\": [\n        {\n            \"begin\": \"[^\\\\x{2401}\\\\x{0001}]+\",\n            \"end\": \"[\\\\x{2401}\\\\x{0001}]\",\n            \"excludeEnd\": true,\n            \"returnBegin\": true,\n            \"returnEnd\": false,\n            \"contains\": [\n                {\n                    \"begin\": \"([^\\\\x{2401}\\\\x{0001}=]+)\",\n                    \"end\": \"=([^\\\\x{2401}\\\\x{0001}=]+)\",\n                    \"returnEnd\": true,\n                    \"returnBegin\": false,\n                    \"className\": \"attr\"\n                },\n                {\n                    \"begin\": \"=\",\n                    \"end\": \"([\\\\x{2401}\\\\x{0001}])\",\n                    \"excludeEnd\": true,\n                    \"excludeBegin\": true,\n                    \"className\": \"string\"\n                }\n            ]\n        }\n    ],\n    \"case_insensitive\": true\n}\n"
  },
  {
    "path": "includes/Highlight/languages/flix.json",
    "content": "{\n    \"keywords\": {\n        \"literal\": \"true false\",\n        \"keyword\": \"case class def else enum if impl import in lat rel index let match namespace switch type yield with\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'(.|\\\\\\\\[xXuU][a-zA-Z0-9]+)'\"\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\"\n                }\n            ]\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"def\",\n            \"end\": \"[:={\\\\[(\\\\n;]\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[^0-9\\\\n\\\\t \\\"'(),.`{}\\\\[\\\\]:;][^\\\\n\\\\t \\\"'(),.`{}\\\\[\\\\]:;]+|[^0-9\\\\n\\\\t \\\"'(),.`{}\\\\[\\\\]:;=]\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/fortran.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"aliases\": [\n        \"f90\",\n        \"f95\"\n    ],\n    \"keywords\": {\n        \"literal\": \".False. .True.\",\n        \"keyword\": \"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then block endblock public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated  c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data\",\n        \"built_in\": \"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image\"\n    },\n    \"illegal\": \"\\\\\\/\\\\*\",\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"subroutine function program\",\n            \"illegal\": \"[${=\\\\n]\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"!\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(?=\\\\b|\\\\+|\\\\-|\\\\.)(?=\\\\.\\\\d|\\\\d)(?:\\\\d+)?(?:\\\\.?\\\\d*)(?:[de][+-]?\\\\d+)?\\\\b\\\\.?\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/fsharp.json",
    "content": "{\n    \"aliases\": [\n        \"fs\"\n    ],\n    \"keywords\": \"abstract and as assert base begin class default delegate do done downcast downto elif else end exception extern false finally for fun function global if in inherit inline interface internal lazy let match member module mutable namespace new null of open or override private public rec return sig static struct then to true try type upcast use val void when while with yield\",\n    \"illegal\": \"\\\\\\/\\\\*\",\n    \"contains\": [\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\\\b(yield|return|let|do)!\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"@\\\"\",\n            \"end\": \"\\\"\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\"\\\"\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\\\"\\\"\",\n            \"end\": \"\\\"\\\"\\\"\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\(\\\\*\",\n            \"end\": \"\\\\*\\\\)\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"type\",\n            \"end\": \"\\\\(|=|$\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"<\",\n                    \"end\": \">\",\n                    \"contains\": [\n                        {\n                            \"className\": \"title\",\n                            \"begin\": \"'[a-zA-Z0-9_]+\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"\\\\[<\",\n            \"end\": \">\\\\]\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"\\\\B('[A-Za-z])\\\\b\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.3.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": null,\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/gams.json",
    "content": "{\n    \"aliases\": [\n        \"gms\"\n    ],\n    \"case_insensitive\": true,\n    \"keywords\": {\n        \"keyword\": \"abort acronym acronyms alias all and assign binary card diag display else eq file files for free ge gt if integer le loop lt maximizing minimizing model models ne negative no not option options or ord positive prod put putpage puttl repeat sameas semicont semiint smax smin solve sos1 sos2 sum system table then until using while xor yes\",\n        \"literal\": \"eps inf na\",\n        \"built-in\": \"abs arccos arcsin arctan arctan2 Beta betaReg binomial ceil centropy cos cosh cvPower div div0 eDist entropy errorf execSeed exp fact floor frac gamma gammaReg log logBeta logGamma log10 log2 mapVal max min mod ncpCM ncpF ncpVUpow ncpVUsin normal pi poly power randBinomial randLinear randTriangle round rPower sigmoid sign signPower sin sinh slexp sllog10 slrec sqexp sqlog10 sqr sqrec sqrt tan tanh trunc uniform uniformInt vcPower bool_and bool_eqv bool_imp bool_not bool_or bool_xor ifThen rel_eq rel_ge rel_gt rel_le rel_lt rel_ne gday gdow ghour gleap gmillisec gminute gmonth gsecond gyear jdate jnow jstart jtime errorLevel execError gamsRelease gamsVersion handleCollect handleDelete handleStatus handleSubmit heapFree heapLimit heapSize jobHandle jobKill jobStatus jobTerminate licenseLevel licenseStatus maxExecError sleep timeClose timeComp timeElapsed timeExec timeStart\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"^\\\\$ontext\",\n            \"end\": \"^\\\\$offtext\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^\\\\$[a-z0-9]+\",\n            \"end\": \"$\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"className\": \"meta-keyword\",\n                    \"begin\": \"^\\\\$[a-z0-9]+\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"^\\\\*\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.5.contains.0\"\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"set sets parameter parameters variable variables scalar scalars equation equations\",\n            \"end\": \";\",\n            \"contains\": [\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"^\\\\*\",\n                    \"end\": \"$\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.0\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.3\"\n                },\n                {\n                    \"$ref\": \"#contains.4\"\n                },\n                {\n                    \"$ref\": \"#contains.5\"\n                },\n                {\n                    \"$ref\": \"#contains.6\"\n                },\n                {\n                    \"begin\": \"\\/\",\n                    \"end\": \"\\/\",\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"contains\": [\n                        {\n                            \"className\": \"comment\",\n                            \"variants\": [\n                                {\n                                    \"begin\": \"'\",\n                                    \"end\": \"'\"\n                                },\n                                {\n                                    \"begin\": \"\\\"\",\n                                    \"end\": \"\\\"\"\n                                }\n                            ],\n                            \"illegal\": \"\\\\n\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.5.contains.0\"\n                                }\n                            ]\n                        },\n                        {\n                            \"$ref\": \"#contains.3\"\n                        },\n                        {\n                            \"$ref\": \"#contains.4\"\n                        },\n                        {\n                            \"$ref\": \"#contains.5\"\n                        },\n                        {\n                            \"$ref\": \"#contains.6\"\n                        },\n                        {\n                            \"className\": \"number\",\n                            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"[a-z][a-z0-9_]*(\\\\([a-z0-9_, ]*\\\\))?[ \\\\t]+\",\n                    \"excludeBegin\": true,\n                    \"end\": \"$\",\n                    \"endsWithParent\": true,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.7.contains.5.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.7.contains.5\"\n                        },\n                        {\n                            \"className\": \"comment\",\n                            \"begin\": \"([ ]*[a-z0-9&#*=?@>\\\\\\\\<:\\\\-,()$\\\\[\\\\]_.{}!+%^]+)+\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"table\",\n            \"end\": \";\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"beginKeywords\": \"table\",\n                    \"end\": \"$\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.7.contains.6\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"^\\\\*\",\n                    \"end\": \"$\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.0\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.3\"\n                },\n                {\n                    \"$ref\": \"#contains.4\"\n                },\n                {\n                    \"$ref\": \"#contains.5\"\n                },\n                {\n                    \"$ref\": \"#contains.6\"\n                },\n                {\n                    \"$ref\": \"#contains.7.contains.5.contains.5\"\n                }\n            ]\n        },\n        {\n            \"className\": \"function\",\n            \"begin\": \"^[a-z][a-z0-9_,\\\\-+' ()$]+\\\\.{2}\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"^[a-z0-9_]+\"\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true\n                },\n                {\n                    \"className\": \"symbol\",\n                    \"variants\": [\n                        {\n                            \"begin\": \"\\\\=[lgenxc]=\"\n                        },\n                        {\n                            \"begin\": \"\\\\$\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.7.contains.5.contains.5\"\n        },\n        {\n            \"$ref\": \"#contains.9.contains.2\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/gauss.json",
    "content": "{\n    \"aliases\": [\n        \"gss\"\n    ],\n    \"case_insensitive\": true,\n    \"keywords\": {\n        \"keyword\": \"bool break call callexe checkinterrupt clear clearg closeall cls comlog compile continue create debug declare delete disable dlibrary dllcall do dos ed edit else elseif enable end endfor endif endp endo errorlog errorlogat expr external fn for format goto gosub graph if keyword let lib library line load loadarray loadexe loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow matrix msym ndpclex new open output outwidth plot plotsym pop prcsn print printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen scroll setarray show sparse stop string struct system trace trap threadfor threadendfor threadbegin threadjoin threadstat threadend until use while winprint ne ge le gt lt and xor or not eq eqv\",\n        \"built_in\": \"abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin sylvester strtrim\",\n        \"literal\": \"DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES DB_TRANSACTIONS DB_UNICODE DB_VIEWS __STDIN __STDOUT __STDERR __FILE_DIR\"\n    },\n    \"illegal\": \"(\\\\{[%#]|[%#]\\\\}| <- )\",\n    \"contains\": [\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"@\",\n            \"end\": \"@\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"keywords\": {\n                \"meta-keyword\": \"define definecs|10 undef ifdef ifndef iflight ifdllcall ifmac ifos2win ifunix else endif lineson linesoff srcfile srcline\"\n            },\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\\\\\n\",\n                    \"relevance\": 0\n                },\n                {\n                    \"beginKeywords\": \"include\",\n                    \"end\": \"$\",\n                    \"keywords\": {\n                        \"meta-keyword\": \"include\"\n                    },\n                    \"contains\": [\n                        {\n                            \"className\": \"meta-string\",\n                            \"begin\": \"\\\"\",\n                            \"end\": \"\\\"\",\n                            \"illegal\": \"\\\\n\"\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.2\"\n                },\n                {\n                    \"$ref\": \"#contains.3\"\n                }\n            ]\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\\\bexternal (matrix|string|array|sparse matrix|struct|proc|keyword|fn)\"\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"proc keyword\",\n            \"end\": \";\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true,\n                    \"endsWithParent\": true,\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"className\": \"literal\",\n                            \"begin\": \"\\\\.\\\\.\\\\.\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.3\"\n                        },\n                        {\n                            \"begin\": \"\\\\bstruct\\\\s+\",\n                            \"end\": \"\\\\s\",\n                            \"keywords\": \"struct\",\n                            \"contains\": [\n                                {\n                                    \"className\": \"type\",\n                                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"$ref\": \"#contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.2\"\n                },\n                {\n                    \"$ref\": \"#contains.3\"\n                }\n            ]\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"fn\",\n            \"end\": \"=\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.7.contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.7.contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.2\"\n                },\n                {\n                    \"$ref\": \"#contains.3\"\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"for threadfor\",\n            \"end\": \";\",\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2\"\n                },\n                {\n                    \"$ref\": \"#contains.3\"\n                },\n                {\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"relevance\": 0,\n                    \"keywords\": {\n                        \"built_in\": \"abs acf aconcat aeye amax amean AmericanBinomCall AmericanBinomCall_Greeks AmericanBinomCall_ImpVol AmericanBinomPut AmericanBinomPut_Greeks AmericanBinomPut_ImpVol AmericanBSCall AmericanBSCall_Greeks AmericanBSCall_ImpVol AmericanBSPut AmericanBSPut_Greeks AmericanBSPut_ImpVol amin amult annotationGetDefaults annotationSetBkd annotationSetFont annotationSetLineColor annotationSetLineStyle annotationSetLineThickness annualTradingDays arccos arcsin areshape arrayalloc arrayindex arrayinit arraytomat asciiload asclabel astd astds asum atan atan2 atranspose axmargin balance band bandchol bandcholsol bandltsol bandrv bandsolpd bar base10 begwind besselj bessely beta box boxcox cdfBeta cdfBetaInv cdfBinomial cdfBinomialInv cdfBvn cdfBvn2 cdfBvn2e cdfCauchy cdfCauchyInv cdfChic cdfChii cdfChinc cdfChincInv cdfExp cdfExpInv cdfFc cdfFnc cdfFncInv cdfGam cdfGenPareto cdfHyperGeo cdfLaplace cdfLaplaceInv cdfLogistic cdfLogisticInv cdfmControlCreate cdfMvn cdfMvn2e cdfMvnce cdfMvne cdfMvt2e cdfMvtce cdfMvte cdfN cdfN2 cdfNc cdfNegBinomial cdfNegBinomialInv cdfNi cdfPoisson cdfPoissonInv cdfRayleigh cdfRayleighInv cdfTc cdfTci cdfTnc cdfTvn cdfWeibull cdfWeibullInv cdir ceil ChangeDir chdir chiBarSquare chol choldn cholsol cholup chrs close code cols colsf combinate combinated complex con cond conj cons ConScore contour conv convertsatostr convertstrtosa corrm corrms corrvc corrx corrxs cos cosh counts countwts crossprd crout croutp csrcol csrlin csvReadM csvReadSA cumprodc cumsumc curve cvtos datacreate datacreatecomplex datalist dataload dataloop dataopen datasave date datestr datestring datestrymd dayinyr dayofweek dbAddDatabase dbClose dbCommit dbCreateQuery dbExecQuery dbGetConnectOptions dbGetDatabaseName dbGetDriverName dbGetDrivers dbGetHostName dbGetLastErrorNum dbGetLastErrorText dbGetNumericalPrecPolicy dbGetPassword dbGetPort dbGetTableHeaders dbGetTables dbGetUserName dbHasFeature dbIsDriverAvailable dbIsOpen dbIsOpenError dbOpen dbQueryBindValue dbQueryClear dbQueryCols dbQueryExecPrepared dbQueryFetchAllM dbQueryFetchAllSA dbQueryFetchOneM dbQueryFetchOneSA dbQueryFinish dbQueryGetBoundValue dbQueryGetBoundValues dbQueryGetField dbQueryGetLastErrorNum dbQueryGetLastErrorText dbQueryGetLastInsertID dbQueryGetLastQuery dbQueryGetPosition dbQueryIsActive dbQueryIsForwardOnly dbQueryIsNull dbQueryIsSelect dbQueryIsValid dbQueryPrepare dbQueryRows dbQuerySeek dbQuerySeekFirst dbQuerySeekLast dbQuerySeekNext dbQuerySeekPrevious dbQuerySetForwardOnly dbRemoveDatabase dbRollback dbSetConnectOptions dbSetDatabaseName dbSetHostName dbSetNumericalPrecPolicy dbSetPort dbSetUserName dbTransaction DeleteFile delif delrows denseToSp denseToSpRE denToZero design det detl dfft dffti diag diagrv digamma doswin DOSWinCloseall DOSWinOpen dotfeq dotfeqmt dotfge dotfgemt dotfgt dotfgtmt dotfle dotflemt dotflt dotfltmt dotfne dotfnemt draw drop dsCreate dstat dstatmt dstatmtControlCreate dtdate dtday dttime dttodtv dttostr dttoutc dtvnormal dtvtodt dtvtoutc dummy dummybr dummydn eig eigh eighv eigv elapsedTradingDays endwind envget eof eqSolve eqSolvemt eqSolvemtControlCreate eqSolvemtOutCreate eqSolveset erf erfc erfccplx erfcplx error etdays ethsec etstr EuropeanBinomCall EuropeanBinomCall_Greeks EuropeanBinomCall_ImpVol EuropeanBinomPut EuropeanBinomPut_Greeks EuropeanBinomPut_ImpVol EuropeanBSCall EuropeanBSCall_Greeks EuropeanBSCall_ImpVol EuropeanBSPut EuropeanBSPut_Greeks EuropeanBSPut_ImpVol exctsmpl exec execbg exp extern eye fcheckerr fclearerr feq feqmt fflush fft ffti fftm fftmi fftn fge fgemt fgets fgetsa fgetsat fgetst fgt fgtmt fileinfo filesa fle flemt floor flt fltmt fmod fne fnemt fonts fopen formatcv formatnv fputs fputst fseek fstrerror ftell ftocv ftos ftostrC gamma gammacplx gammaii gausset gdaAppend gdaCreate gdaDStat gdaDStatMat gdaGetIndex gdaGetName gdaGetNames gdaGetOrders gdaGetType gdaGetTypes gdaGetVarInfo gdaIsCplx gdaLoad gdaPack gdaRead gdaReadByIndex gdaReadSome gdaReadSparse gdaReadStruct gdaReportVarInfo gdaSave gdaUpdate gdaUpdateAndPack gdaVars gdaWrite gdaWrite32 gdaWriteSome getarray getdims getf getGAUSShome getmatrix getmatrix4D getname getnamef getNextTradingDay getNextWeekDay getnr getorders getpath getPreviousTradingDay getPreviousWeekDay getRow getscalar3D getscalar4D getTrRow getwind glm gradcplx gradMT gradMTm gradMTT gradMTTm gradp graphprt graphset hasimag header headermt hess hessMT hessMTg hessMTgw hessMTm hessMTmw hessMTT hessMTTg hessMTTgw hessMTTm hessMTw hessp hist histf histp hsec imag indcv indexcat indices indices2 indicesf indicesfn indnv indsav integrate1d integrateControlCreate intgrat2 intgrat3 inthp1 inthp2 inthp3 inthp4 inthpControlCreate intquad1 intquad2 intquad3 intrleav intrleavsa intrsect intsimp inv invpd invswp iscplx iscplxf isden isinfnanmiss ismiss key keyav keyw lag lag1 lagn lapEighb lapEighi lapEighvb lapEighvi lapgEig lapgEigh lapgEighv lapgEigv lapgSchur lapgSvdcst lapgSvds lapgSvdst lapSvdcusv lapSvds lapSvdusv ldlp ldlsol linSolve listwise ln lncdfbvn lncdfbvn2 lncdfmvn lncdfn lncdfn2 lncdfnc lnfact lngammacplx lnpdfmvn lnpdfmvt lnpdfn lnpdft loadd loadstruct loadwind loess loessmt loessmtControlCreate log loglog logx logy lower lowmat lowmat1 ltrisol lu lusol machEpsilon make makevars makewind margin matalloc matinit mattoarray maxbytes maxc maxindc maxv maxvec mbesselei mbesselei0 mbesselei1 mbesseli mbesseli0 mbesseli1 meanc median mergeby mergevar minc minindc minv miss missex missrv moment momentd movingave movingaveExpwgt movingaveWgt nextindex nextn nextnevn nextwind ntos null null1 numCombinations ols olsmt olsmtControlCreate olsqr olsqr2 olsqrmt ones optn optnevn orth outtyp pacf packedToSp packr parse pause pdfCauchy pdfChi pdfExp pdfGenPareto pdfHyperGeo pdfLaplace pdfLogistic pdfn pdfPoisson pdfRayleigh pdfWeibull pi pinv pinvmt plotAddArrow plotAddBar plotAddBox plotAddHist plotAddHistF plotAddHistP plotAddPolar plotAddScatter plotAddShape plotAddTextbox plotAddTS plotAddXY plotArea plotBar plotBox plotClearLayout plotContour plotCustomLayout plotGetDefaults plotHist plotHistF plotHistP plotLayout plotLogLog plotLogX plotLogY plotOpenWindow plotPolar plotSave plotScatter plotSetAxesPen plotSetBar plotSetBarFill plotSetBarStacked plotSetBkdColor plotSetFill plotSetGrid plotSetLegend plotSetLineColor plotSetLineStyle plotSetLineSymbol plotSetLineThickness plotSetNewWindow plotSetTitle plotSetWhichYAxis plotSetXAxisShow plotSetXLabel plotSetXRange plotSetXTicInterval plotSetXTicLabel plotSetYAxisShow plotSetYLabel plotSetYRange plotSetZAxisShow plotSetZLabel plotSurface plotTS plotXY polar polychar polyeval polygamma polyint polymake polymat polymroot polymult polyroot pqgwin previousindex princomp printfm printfmt prodc psi putarray putf putvals pvCreate pvGetIndex pvGetParNames pvGetParVector pvLength pvList pvPack pvPacki pvPackm pvPackmi pvPacks pvPacksi pvPacksm pvPacksmi pvPutParVector pvTest pvUnpack QNewton QNewtonmt QNewtonmtControlCreate QNewtonmtOutCreate QNewtonSet QProg QProgmt QProgmtInCreate qqr qqre qqrep qr qre qrep qrsol qrtsol qtyr qtyre qtyrep quantile quantiled qyr qyre qyrep qz rank rankindx readr real reclassify reclassifyCuts recode recserar recsercp recserrc rerun rescale reshape rets rev rfft rffti rfftip rfftn rfftnp rfftp rndBernoulli rndBeta rndBinomial rndCauchy rndChiSquare rndCon rndCreateState rndExp rndGamma rndGeo rndGumbel rndHyperGeo rndi rndKMbeta rndKMgam rndKMi rndKMn rndKMnb rndKMp rndKMu rndKMvm rndLaplace rndLCbeta rndLCgam rndLCi rndLCn rndLCnb rndLCp rndLCu rndLCvm rndLogNorm rndMTu rndMVn rndMVt rndn rndnb rndNegBinomial rndp rndPoisson rndRayleigh rndStateSkip rndu rndvm rndWeibull rndWishart rotater round rows rowsf rref sampleData satostrC saved saveStruct savewind scale scale3d scalerr scalinfnanmiss scalmiss schtoc schur searchsourcepath seekr select selif seqa seqm setdif setdifsa setvars setvwrmode setwind shell shiftr sin singleindex sinh sleep solpd sortc sortcc sortd sorthc sorthcc sortind sortindc sortmc sortr sortrc spBiconjGradSol spChol spConjGradSol spCreate spDenseSubmat spDiagRvMat spEigv spEye spLDL spline spLU spNumNZE spOnes spreadSheetReadM spreadSheetReadSA spreadSheetWrite spScale spSubmat spToDense spTrTDense spTScalar spZeros sqpSolve sqpSolveMT sqpSolveMTControlCreate sqpSolveMTlagrangeCreate sqpSolveMToutCreate sqpSolveSet sqrt statements stdc stdsc stocv stof strcombine strindx strlen strput strrindx strsect strsplit strsplitPad strtodt strtof strtofcplx strtriml strtrimr strtrunc strtruncl strtruncpad strtruncr submat subscat substute subvec sumc sumr surface svd svd1 svd2 svdcusv svds svdusv sysstate tab tan tanh tempname time timedt timestr timeutc title tkf2eps tkf2ps tocart todaydt toeplitz token topolar trapchk trigamma trimr trunc type typecv typef union unionsa uniqindx uniqindxsa unique uniquesa upmat upmat1 upper utctodt utctodtv utrisol vals varCovMS varCovXS varget vargetl varmall varmares varput varputl vartypef vcm vcms vcx vcxs vec vech vecr vector vget view viewxyz vlist vnamecv volume vput vread vtypecv wait waitc walkindex where window writer xlabel xlsGetSheetCount xlsGetSheetSize xlsGetSheetTypes xlsMakeRange xlsReadM xlsReadSA xlsWrite xlsWriteM xlsWriteSA xpnd xtics xy xyz ylabel ytics zeros zeta zlabel ztics cdfEmpirical dot h5create h5open h5read h5readAttribute h5write h5writeAttribute ldl plotAddErrorBar plotAddSurface plotCDFEmpirical plotSetColormap plotSetContourLabels plotSetLegendFont plotSetTextInterpreter plotSetXTicCount plotSetYTicCount plotSetZLevels powerm strjoin sylvester strtrim\",\n                        \"literal\": \"DB_AFTER_LAST_ROW DB_ALL_TABLES DB_BATCH_OPERATIONS DB_BEFORE_FIRST_ROW DB_BLOB DB_EVENT_NOTIFICATIONS DB_FINISH_QUERY DB_HIGH_PRECISION DB_LAST_INSERT_ID DB_LOW_PRECISION_DOUBLE DB_LOW_PRECISION_INT32 DB_LOW_PRECISION_INT64 DB_LOW_PRECISION_NUMBERS DB_MULTIPLE_RESULT_SETS DB_NAMED_PLACEHOLDERS DB_POSITIONAL_PLACEHOLDERS DB_PREPARED_QUERIES DB_QUERY_SIZE DB_SIMPLE_LOCKING DB_SYSTEM_TABLES DB_TABLES DB_TRANSACTIONS DB_UNICODE DB_VIEWS __STDIN __STDOUT __STDERR __FILE_DIR\"\n                    },\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.3\"\n                        },\n                        {\n                            \"className\": \"built_in\",\n                            \"begin\": \"\\\\b(abs|acf|aconcat|aeye|amax|amean|AmericanBinomCall|AmericanBinomCall_Greeks|AmericanBinomCall_ImpVol|AmericanBinomPut|AmericanBinomPut_Greeks|AmericanBinomPut_ImpVol|AmericanBSCall|AmericanBSCall_Greeks|AmericanBSCall_ImpVol|AmericanBSPut|AmericanBSPut_Greeks|AmericanBSPut_ImpVol|amin|amult|annotationGetDefaults|annotationSetBkd|annotationSetFont|annotationSetLineColor|annotationSetLineStyle|annotationSetLineThickness|annualTradingDays|arccos|arcsin|areshape|arrayalloc|arrayindex|arrayinit|arraytomat|asciiload|asclabel|astd|astds|asum|atan|atan2|atranspose|axmargin|balance|band|bandchol|bandcholsol|bandltsol|bandrv|bandsolpd|bar|base10|begwind|besselj|bessely|beta|box|boxcox|cdfBeta|cdfBetaInv|cdfBinomial|cdfBinomialInv|cdfBvn|cdfBvn2|cdfBvn2e|cdfCauchy|cdfCauchyInv|cdfChic|cdfChii|cdfChinc|cdfChincInv|cdfExp|cdfExpInv|cdfFc|cdfFnc|cdfFncInv|cdfGam|cdfGenPareto|cdfHyperGeo|cdfLaplace|cdfLaplaceInv|cdfLogistic|cdfLogisticInv|cdfmControlCreate|cdfMvn|cdfMvn2e|cdfMvnce|cdfMvne|cdfMvt2e|cdfMvtce|cdfMvte|cdfN|cdfN2|cdfNc|cdfNegBinomial|cdfNegBinomialInv|cdfNi|cdfPoisson|cdfPoissonInv|cdfRayleigh|cdfRayleighInv|cdfTc|cdfTci|cdfTnc|cdfTvn|cdfWeibull|cdfWeibullInv|cdir|ceil|ChangeDir|chdir|chiBarSquare|chol|choldn|cholsol|cholup|chrs|close|code|cols|colsf|combinate|combinated|complex|con|cond|conj|cons|ConScore|contour|conv|convertsatostr|convertstrtosa|corrm|corrms|corrvc|corrx|corrxs|cos|cosh|counts|countwts|crossprd|crout|croutp|csrcol|csrlin|csvReadM|csvReadSA|cumprodc|cumsumc|curve|cvtos|datacreate|datacreatecomplex|datalist|dataload|dataloop|dataopen|datasave|date|datestr|datestring|datestrymd|dayinyr|dayofweek|dbAddDatabase|dbClose|dbCommit|dbCreateQuery|dbExecQuery|dbGetConnectOptions|dbGetDatabaseName|dbGetDriverName|dbGetDrivers|dbGetHostName|dbGetLastErrorNum|dbGetLastErrorText|dbGetNumericalPrecPolicy|dbGetPassword|dbGetPort|dbGetTableHeaders|dbGetTables|dbGetUserName|dbHasFeature|dbIsDriverAvailable|dbIsOpen|dbIsOpenError|dbOpen|dbQueryBindValue|dbQueryClear|dbQueryCols|dbQueryExecPrepared|dbQueryFetchAllM|dbQueryFetchAllSA|dbQueryFetchOneM|dbQueryFetchOneSA|dbQueryFinish|dbQueryGetBoundValue|dbQueryGetBoundValues|dbQueryGetField|dbQueryGetLastErrorNum|dbQueryGetLastErrorText|dbQueryGetLastInsertID|dbQueryGetLastQuery|dbQueryGetPosition|dbQueryIsActive|dbQueryIsForwardOnly|dbQueryIsNull|dbQueryIsSelect|dbQueryIsValid|dbQueryPrepare|dbQueryRows|dbQuerySeek|dbQuerySeekFirst|dbQuerySeekLast|dbQuerySeekNext|dbQuerySeekPrevious|dbQuerySetForwardOnly|dbRemoveDatabase|dbRollback|dbSetConnectOptions|dbSetDatabaseName|dbSetHostName|dbSetNumericalPrecPolicy|dbSetPort|dbSetUserName|dbTransaction|DeleteFile|delif|delrows|denseToSp|denseToSpRE|denToZero|design|det|detl|dfft|dffti|diag|diagrv|digamma|doswin|DOSWinCloseall|DOSWinOpen|dotfeq|dotfeqmt|dotfge|dotfgemt|dotfgt|dotfgtmt|dotfle|dotflemt|dotflt|dotfltmt|dotfne|dotfnemt|draw|drop|dsCreate|dstat|dstatmt|dstatmtControlCreate|dtdate|dtday|dttime|dttodtv|dttostr|dttoutc|dtvnormal|dtvtodt|dtvtoutc|dummy|dummybr|dummydn|eig|eigh|eighv|eigv|elapsedTradingDays|endwind|envget|eof|eqSolve|eqSolvemt|eqSolvemtControlCreate|eqSolvemtOutCreate|eqSolveset|erf|erfc|erfccplx|erfcplx|error|etdays|ethsec|etstr|EuropeanBinomCall|EuropeanBinomCall_Greeks|EuropeanBinomCall_ImpVol|EuropeanBinomPut|EuropeanBinomPut_Greeks|EuropeanBinomPut_ImpVol|EuropeanBSCall|EuropeanBSCall_Greeks|EuropeanBSCall_ImpVol|EuropeanBSPut|EuropeanBSPut_Greeks|EuropeanBSPut_ImpVol|exctsmpl|exec|execbg|exp|extern|eye|fcheckerr|fclearerr|feq|feqmt|fflush|fft|ffti|fftm|fftmi|fftn|fge|fgemt|fgets|fgetsa|fgetsat|fgetst|fgt|fgtmt|fileinfo|filesa|fle|flemt|floor|flt|fltmt|fmod|fne|fnemt|fonts|fopen|formatcv|formatnv|fputs|fputst|fseek|fstrerror|ftell|ftocv|ftos|ftostrC|gamma|gammacplx|gammaii|gausset|gdaAppend|gdaCreate|gdaDStat|gdaDStatMat|gdaGetIndex|gdaGetName|gdaGetNames|gdaGetOrders|gdaGetType|gdaGetTypes|gdaGetVarInfo|gdaIsCplx|gdaLoad|gdaPack|gdaRead|gdaReadByIndex|gdaReadSome|gdaReadSparse|gdaReadStruct|gdaReportVarInfo|gdaSave|gdaUpdate|gdaUpdateAndPack|gdaVars|gdaWrite|gdaWrite32|gdaWriteSome|getarray|getdims|getf|getGAUSShome|getmatrix|getmatrix4D|getname|getnamef|getNextTradingDay|getNextWeekDay|getnr|getorders|getpath|getPreviousTradingDay|getPreviousWeekDay|getRow|getscalar3D|getscalar4D|getTrRow|getwind|glm|gradcplx|gradMT|gradMTm|gradMTT|gradMTTm|gradp|graphprt|graphset|hasimag|header|headermt|hess|hessMT|hessMTg|hessMTgw|hessMTm|hessMTmw|hessMTT|hessMTTg|hessMTTgw|hessMTTm|hessMTw|hessp|hist|histf|histp|hsec|imag|indcv|indexcat|indices|indices2|indicesf|indicesfn|indnv|indsav|integrate1d|integrateControlCreate|intgrat2|intgrat3|inthp1|inthp2|inthp3|inthp4|inthpControlCreate|intquad1|intquad2|intquad3|intrleav|intrleavsa|intrsect|intsimp|inv|invpd|invswp|iscplx|iscplxf|isden|isinfnanmiss|ismiss|key|keyav|keyw|lag|lag1|lagn|lapEighb|lapEighi|lapEighvb|lapEighvi|lapgEig|lapgEigh|lapgEighv|lapgEigv|lapgSchur|lapgSvdcst|lapgSvds|lapgSvdst|lapSvdcusv|lapSvds|lapSvdusv|ldlp|ldlsol|linSolve|listwise|ln|lncdfbvn|lncdfbvn2|lncdfmvn|lncdfn|lncdfn2|lncdfnc|lnfact|lngammacplx|lnpdfmvn|lnpdfmvt|lnpdfn|lnpdft|loadd|loadstruct|loadwind|loess|loessmt|loessmtControlCreate|log|loglog|logx|logy|lower|lowmat|lowmat1|ltrisol|lu|lusol|machEpsilon|make|makevars|makewind|margin|matalloc|matinit|mattoarray|maxbytes|maxc|maxindc|maxv|maxvec|mbesselei|mbesselei0|mbesselei1|mbesseli|mbesseli0|mbesseli1|meanc|median|mergeby|mergevar|minc|minindc|minv|miss|missex|missrv|moment|momentd|movingave|movingaveExpwgt|movingaveWgt|nextindex|nextn|nextnevn|nextwind|ntos|null|null1|numCombinations|ols|olsmt|olsmtControlCreate|olsqr|olsqr2|olsqrmt|ones|optn|optnevn|orth|outtyp|pacf|packedToSp|packr|parse|pause|pdfCauchy|pdfChi|pdfExp|pdfGenPareto|pdfHyperGeo|pdfLaplace|pdfLogistic|pdfn|pdfPoisson|pdfRayleigh|pdfWeibull|pi|pinv|pinvmt|plotAddArrow|plotAddBar|plotAddBox|plotAddHist|plotAddHistF|plotAddHistP|plotAddPolar|plotAddScatter|plotAddShape|plotAddTextbox|plotAddTS|plotAddXY|plotArea|plotBar|plotBox|plotClearLayout|plotContour|plotCustomLayout|plotGetDefaults|plotHist|plotHistF|plotHistP|plotLayout|plotLogLog|plotLogX|plotLogY|plotOpenWindow|plotPolar|plotSave|plotScatter|plotSetAxesPen|plotSetBar|plotSetBarFill|plotSetBarStacked|plotSetBkdColor|plotSetFill|plotSetGrid|plotSetLegend|plotSetLineColor|plotSetLineStyle|plotSetLineSymbol|plotSetLineThickness|plotSetNewWindow|plotSetTitle|plotSetWhichYAxis|plotSetXAxisShow|plotSetXLabel|plotSetXRange|plotSetXTicInterval|plotSetXTicLabel|plotSetYAxisShow|plotSetYLabel|plotSetYRange|plotSetZAxisShow|plotSetZLabel|plotSurface|plotTS|plotXY|polar|polychar|polyeval|polygamma|polyint|polymake|polymat|polymroot|polymult|polyroot|pqgwin|previousindex|princomp|printfm|printfmt|prodc|psi|putarray|putf|putvals|pvCreate|pvGetIndex|pvGetParNames|pvGetParVector|pvLength|pvList|pvPack|pvPacki|pvPackm|pvPackmi|pvPacks|pvPacksi|pvPacksm|pvPacksmi|pvPutParVector|pvTest|pvUnpack|QNewton|QNewtonmt|QNewtonmtControlCreate|QNewtonmtOutCreate|QNewtonSet|QProg|QProgmt|QProgmtInCreate|qqr|qqre|qqrep|qr|qre|qrep|qrsol|qrtsol|qtyr|qtyre|qtyrep|quantile|quantiled|qyr|qyre|qyrep|qz|rank|rankindx|readr|real|reclassify|reclassifyCuts|recode|recserar|recsercp|recserrc|rerun|rescale|reshape|rets|rev|rfft|rffti|rfftip|rfftn|rfftnp|rfftp|rndBernoulli|rndBeta|rndBinomial|rndCauchy|rndChiSquare|rndCon|rndCreateState|rndExp|rndGamma|rndGeo|rndGumbel|rndHyperGeo|rndi|rndKMbeta|rndKMgam|rndKMi|rndKMn|rndKMnb|rndKMp|rndKMu|rndKMvm|rndLaplace|rndLCbeta|rndLCgam|rndLCi|rndLCn|rndLCnb|rndLCp|rndLCu|rndLCvm|rndLogNorm|rndMTu|rndMVn|rndMVt|rndn|rndnb|rndNegBinomial|rndp|rndPoisson|rndRayleigh|rndStateSkip|rndu|rndvm|rndWeibull|rndWishart|rotater|round|rows|rowsf|rref|sampleData|satostrC|saved|saveStruct|savewind|scale|scale3d|scalerr|scalinfnanmiss|scalmiss|schtoc|schur|searchsourcepath|seekr|select|selif|seqa|seqm|setdif|setdifsa|setvars|setvwrmode|setwind|shell|shiftr|sin|singleindex|sinh|sleep|solpd|sortc|sortcc|sortd|sorthc|sorthcc|sortind|sortindc|sortmc|sortr|sortrc|spBiconjGradSol|spChol|spConjGradSol|spCreate|spDenseSubmat|spDiagRvMat|spEigv|spEye|spLDL|spline|spLU|spNumNZE|spOnes|spreadSheetReadM|spreadSheetReadSA|spreadSheetWrite|spScale|spSubmat|spToDense|spTrTDense|spTScalar|spZeros|sqpSolve|sqpSolveMT|sqpSolveMTControlCreate|sqpSolveMTlagrangeCreate|sqpSolveMToutCreate|sqpSolveSet|sqrt|statements|stdc|stdsc|stocv|stof|strcombine|strindx|strlen|strput|strrindx|strsect|strsplit|strsplitPad|strtodt|strtof|strtofcplx|strtriml|strtrimr|strtrunc|strtruncl|strtruncpad|strtruncr|submat|subscat|substute|subvec|sumc|sumr|surface|svd|svd1|svd2|svdcusv|svds|svdusv|sysstate|tab|tan|tanh|tempname|time|timedt|timestr|timeutc|title|tkf2eps|tkf2ps|tocart|todaydt|toeplitz|token|topolar|trapchk|trigamma|trimr|trunc|type|typecv|typef|union|unionsa|uniqindx|uniqindxsa|unique|uniquesa|upmat|upmat1|upper|utctodt|utctodtv|utrisol|vals|varCovMS|varCovXS|varget|vargetl|varmall|varmares|varput|varputl|vartypef|vcm|vcms|vcx|vcxs|vec|vech|vecr|vector|vget|view|viewxyz|vlist|vnamecv|volume|vput|vread|vtypecv|wait|waitc|walkindex|where|window|writer|xlabel|xlsGetSheetCount|xlsGetSheetSize|xlsGetSheetTypes|xlsMakeRange|xlsReadM|xlsReadSA|xlsWrite|xlsWriteM|xlsWriteSA|xpnd|xtics|xy|xyz|ylabel|ytics|zeros|zeta|zlabel|ztics|cdfEmpirical|dot|h5create|h5open|h5read|h5readAttribute|h5write|h5writeAttribute|ldl|plotAddErrorBar|plotAddSurface|plotCDFEmpirical|plotSetColormap|plotSetContourLabels|plotSetLegendFont|plotSetTextInterpreter|plotSetXTicCount|plotSetYTicCount|plotSetZLevels|powerm|strjoin|sylvester|strtrim)\\\\b\"\n                        },\n                        {\n                            \"begin\": \"[a-zA-Z_]\\\\w*\\\\s*\\\\(\",\n                            \"returnBegin\": true,\n                            \"keywords\": {\n                                \"$ref\": \"#keywords\"\n                            },\n                            \"relevance\": 0,\n                            \"contains\": [\n                                {\n                                    \"beginKeywords\": \"bool break call callexe checkinterrupt clear clearg closeall cls comlog compile continue create debug declare delete disable dlibrary dllcall do dos ed edit else elseif enable end endfor endif endp endo errorlog errorlogat expr external fn for format goto gosub graph if keyword let lib library line load loadarray loadexe loadf loadk loadm loadp loads loadx local locate loopnextindex lprint lpwidth lshow matrix msym ndpclex new open output outwidth plot plotsym pop prcsn print printdos proc push retp return rndcon rndmod rndmult rndseed run save saveall screen scroll setarray show sparse stop string struct system trace trap threadfor threadendfor threadbegin threadjoin threadstat threadend until use while winprint ne ge le gt lt and xor or not eq eqv\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.9.contains.2.contains.3\"\n                                },\n                                {\n                                    \"className\": \"built_in\",\n                                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                                    \"relevance\": 0\n                                },\n                                {\n                                    \"$ref\": \"#contains.9.contains.2\"\n                                }\n                            ]\n                        },\n                        {\n                            \"$ref\": \"#contains.4\"\n                        },\n                        \"self\"\n                    ]\n                }\n            ]\n        },\n        {\n            \"variants\": [\n                {\n                    \"begin\": \"[a-zA-Z_]\\\\w*\\\\.[a-zA-Z_]\\\\w*\"\n                },\n                {\n                    \"begin\": \"[a-zA-Z_]\\\\w*\\\\s*=\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"$ref\": \"#contains.9.contains.2.contains.4\"\n        },\n        {\n            \"$ref\": \"#contains.7.contains.0.contains.4\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/gcode.json",
    "content": "{\n    \"aliases\": [\n        \"nc\"\n    ],\n    \"case_insensitive\": true,\n    \"lexemes\": \"[A-Z_][A-Z0-9_.]*\",\n    \"keywords\": \"IF DO WHILE ENDWHILE CALL ENDIF SUB ENDSUB GOTO REPEAT ENDREPEAT EQ LT GT NE GE LE OR XOR\",\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"begin\": \"\\\\%\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"([O])([0-9]+)\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\(\",\n            \"end\": \"\\\\)\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"([-+]?([0-9]*\\\\.?[0-9]+\\\\.?))|(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": null,\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": null,\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"name\",\n            \"begin\": \"([G])([0-9]+\\\\.?[0-9]?)\"\n        },\n        {\n            \"className\": \"name\",\n            \"begin\": \"([M])([0-9]+\\\\.?[0-9]?)\"\n        },\n        {\n            \"className\": \"attr\",\n            \"begin\": \"(VC|VS|#)\",\n            \"end\": \"(\\\\d+)\"\n        },\n        {\n            \"className\": \"attr\",\n            \"begin\": \"(VZOFX|VZOFY|VZOFZ)\"\n        },\n        {\n            \"className\": \"built_in\",\n            \"begin\": \"(ATAN|ABS|ACOS|ASIN|SIN|COS|EXP|FIX|FUP|ROUND|LN|TAN)(\\\\[)\",\n            \"end\": \"([-+]?([0-9]*\\\\.?[0-9]+\\\\.?))(\\\\])\"\n        },\n        {\n            \"className\": \"symbol\",\n            \"variants\": [\n                {\n                    \"begin\": \"N\",\n                    \"end\": \"\\\\d+\",\n                    \"illegal\": \"\\\\W\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/gherkin.json",
    "content": "{\n    \"aliases\": [\n        \"feature\"\n    ],\n    \"keywords\": \"Feature Background Ability Business Need Scenario Scenarios Scenario Outline Scenario Template Examples Given And Then But When\",\n    \"contains\": [\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"\\\\*\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"@[^@\\\\s]+\"\n        },\n        {\n            \"begin\": \"\\\\|\",\n            \"end\": \"\\\\|\\\\w*$\",\n            \"contains\": [\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"[^|]+\"\n                }\n            ]\n        },\n        {\n            \"className\": \"variable\",\n            \"begin\": \"<\",\n            \"end\": \">\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\\\"\\\"\",\n            \"end\": \"\\\"\\\"\\\"\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/glsl.json",
    "content": "{\n    \"keywords\": {\n        \"keyword\": \"break continue discard do else for if return while switch case default attribute binding buffer ccw centroid centroid varying coherent column_major const cw depth_any depth_greater depth_less depth_unchanged early_fragment_tests equal_spacing flat fractional_even_spacing fractional_odd_spacing highp in index inout invariant invocations isolines layout line_strip lines lines_adjacency local_size_x local_size_y local_size_z location lowp max_vertices mediump noperspective offset origin_upper_left out packed patch pixel_center_integer point_mode points precise precision quads r11f_g11f_b10f r16 r16_snorm r16f r16i r16ui r32f r32i r32ui r8 r8_snorm r8i r8ui readonly restrict rg16 rg16_snorm rg16f rg16i rg16ui rg32f rg32i rg32ui rg8 rg8_snorm rg8i rg8ui rgb10_a2 rgb10_a2ui rgba16 rgba16_snorm rgba16f rgba16i rgba16ui rgba32f rgba32i rgba32ui rgba8 rgba8_snorm rgba8i rgba8ui row_major sample shared smooth std140 std430 stream triangle_strip triangles triangles_adjacency uniform varying vertices volatile writeonly\",\n        \"type\": \"atomic_uint bool bvec2 bvec3 bvec4 dmat2 dmat2x2 dmat2x3 dmat2x4 dmat3 dmat3x2 dmat3x3 dmat3x4 dmat4 dmat4x2 dmat4x3 dmat4x4 double dvec2 dvec3 dvec4 float iimage1D iimage1DArray iimage2D iimage2DArray iimage2DMS iimage2DMSArray iimage2DRect iimage3D iimageBufferiimageCube iimageCubeArray image1D image1DArray image2D image2DArray image2DMS image2DMSArray image2DRect image3D imageBuffer imageCube imageCubeArray int isampler1D isampler1DArray isampler2D isampler2DArray isampler2DMS isampler2DMSArray isampler2DRect isampler3D isamplerBuffer isamplerCube isamplerCubeArray ivec2 ivec3 ivec4 mat2 mat2x2 mat2x3 mat2x4 mat3 mat3x2 mat3x3 mat3x4 mat4 mat4x2 mat4x3 mat4x4 sampler1D sampler1DArray sampler1DArrayShadow sampler1DShadow sampler2D sampler2DArray sampler2DArrayShadow sampler2DMS sampler2DMSArray sampler2DRect sampler2DRectShadow sampler2DShadow sampler3D samplerBuffer samplerCube samplerCubeArray samplerCubeArrayShadow samplerCubeShadow image1D uimage1DArray uimage2D uimage2DArray uimage2DMS uimage2DMSArray uimage2DRect uimage3D uimageBuffer uimageCube uimageCubeArray uint usampler1D usampler1DArray usampler2D usampler2DArray usampler2DMS usampler2DMSArray usampler2DRect usampler3D samplerBuffer usamplerCube usamplerCubeArray uvec2 uvec3 uvec4 vec2 vec3 vec4 void\",\n        \"built_in\": \"gl_MaxAtomicCounterBindings gl_MaxAtomicCounterBufferSize gl_MaxClipDistances gl_MaxClipPlanes gl_MaxCombinedAtomicCounterBuffers gl_MaxCombinedAtomicCounters gl_MaxCombinedImageUniforms gl_MaxCombinedImageUnitsAndFragmentOutputs gl_MaxCombinedTextureImageUnits gl_MaxComputeAtomicCounterBuffers gl_MaxComputeAtomicCounters gl_MaxComputeImageUniforms gl_MaxComputeTextureImageUnits gl_MaxComputeUniformComponents gl_MaxComputeWorkGroupCount gl_MaxComputeWorkGroupSize gl_MaxDrawBuffers gl_MaxFragmentAtomicCounterBuffers gl_MaxFragmentAtomicCounters gl_MaxFragmentImageUniforms gl_MaxFragmentInputComponents gl_MaxFragmentInputVectors gl_MaxFragmentUniformComponents gl_MaxFragmentUniformVectors gl_MaxGeometryAtomicCounterBuffers gl_MaxGeometryAtomicCounters gl_MaxGeometryImageUniforms gl_MaxGeometryInputComponents gl_MaxGeometryOutputComponents gl_MaxGeometryOutputVertices gl_MaxGeometryTextureImageUnits gl_MaxGeometryTotalOutputComponents gl_MaxGeometryUniformComponents gl_MaxGeometryVaryingComponents gl_MaxImageSamples gl_MaxImageUnits gl_MaxLights gl_MaxPatchVertices gl_MaxProgramTexelOffset gl_MaxTessControlAtomicCounterBuffers gl_MaxTessControlAtomicCounters gl_MaxTessControlImageUniforms gl_MaxTessControlInputComponents gl_MaxTessControlOutputComponents gl_MaxTessControlTextureImageUnits gl_MaxTessControlTotalOutputComponents gl_MaxTessControlUniformComponents gl_MaxTessEvaluationAtomicCounterBuffers gl_MaxTessEvaluationAtomicCounters gl_MaxTessEvaluationImageUniforms gl_MaxTessEvaluationInputComponents gl_MaxTessEvaluationOutputComponents gl_MaxTessEvaluationTextureImageUnits gl_MaxTessEvaluationUniformComponents gl_MaxTessGenLevel gl_MaxTessPatchComponents gl_MaxTextureCoords gl_MaxTextureImageUnits gl_MaxTextureUnits gl_MaxVaryingComponents gl_MaxVaryingFloats gl_MaxVaryingVectors gl_MaxVertexAtomicCounterBuffers gl_MaxVertexAtomicCounters gl_MaxVertexAttribs gl_MaxVertexImageUniforms gl_MaxVertexOutputComponents gl_MaxVertexOutputVectors gl_MaxVertexTextureImageUnits gl_MaxVertexUniformComponents gl_MaxVertexUniformVectors gl_MaxViewports gl_MinProgramTexelOffset gl_BackColor gl_BackLightModelProduct gl_BackLightProduct gl_BackMaterial gl_BackSecondaryColor gl_ClipDistance gl_ClipPlane gl_ClipVertex gl_Color gl_DepthRange gl_EyePlaneQ gl_EyePlaneR gl_EyePlaneS gl_EyePlaneT gl_Fog gl_FogCoord gl_FogFragCoord gl_FragColor gl_FragCoord gl_FragData gl_FragDepth gl_FrontColor gl_FrontFacing gl_FrontLightModelProduct gl_FrontLightProduct gl_FrontMaterial gl_FrontSecondaryColor gl_GlobalInvocationID gl_InstanceID gl_InvocationID gl_Layer gl_LightModel gl_LightSource gl_LocalInvocationID gl_LocalInvocationIndex gl_ModelViewMatrix gl_ModelViewMatrixInverse gl_ModelViewMatrixInverseTranspose gl_ModelViewMatrixTranspose gl_ModelViewProjectionMatrix gl_ModelViewProjectionMatrixInverse gl_ModelViewProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixTranspose gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_Normal gl_NormalMatrix gl_NormalScale gl_NumSamples gl_NumWorkGroups gl_ObjectPlaneQ gl_ObjectPlaneR gl_ObjectPlaneS gl_ObjectPlaneT gl_PatchVerticesIn gl_Point gl_PointCoord gl_PointSize gl_Position gl_PrimitiveID gl_PrimitiveIDIn gl_ProjectionMatrix gl_ProjectionMatrixInverse gl_ProjectionMatrixInverseTranspose gl_ProjectionMatrixTranspose gl_SampleID gl_SampleMask gl_SampleMaskIn gl_SamplePosition gl_SecondaryColor gl_TessCoord gl_TessLevelInner gl_TessLevelOuter gl_TexCoord gl_TextureEnvColor gl_TextureMatrix gl_TextureMatrixInverse gl_TextureMatrixInverseTranspose gl_TextureMatrixTranspose gl_Vertex gl_VertexID gl_ViewportIndex gl_WorkGroupID gl_WorkGroupSize gl_in gl_out EmitStreamVertex EmitVertex EndPrimitive EndStreamPrimitive abs acos acosh all any asin asinh atan atanh atomicAdd atomicAnd atomicCompSwap atomicCounter atomicCounterDecrement atomicCounterIncrement atomicExchange atomicMax atomicMin atomicOr atomicXor barrier bitCount bitfieldExtract bitfieldInsert bitfieldReverse ceil clamp cos cosh cross dFdx dFdy degrees determinant distance dot equal exp exp2 faceforward findLSB findMSB floatBitsToInt floatBitsToUint floor fma fract frexp ftransform fwidth greaterThan greaterThanEqual groupMemoryBarrier imageAtomicAdd imageAtomicAnd imageAtomicCompSwap imageAtomicExchange imageAtomicMax imageAtomicMin imageAtomicOr imageAtomicXor imageLoad imageSize imageStore imulExtended intBitsToFloat interpolateAtCentroid interpolateAtOffset interpolateAtSample inverse inversesqrt isinf isnan ldexp length lessThan lessThanEqual log log2 matrixCompMult max memoryBarrier memoryBarrierAtomicCounter memoryBarrierBuffer memoryBarrierImage memoryBarrierShared min mix mod modf noise1 noise2 noise3 noise4 normalize not notEqual outerProduct packDouble2x32 packHalf2x16 packSnorm2x16 packSnorm4x8 packUnorm2x16 packUnorm4x8 pow radians reflect refract round roundEven shadow1D shadow1DLod shadow1DProj shadow1DProjLod shadow2D shadow2DLod shadow2DProj shadow2DProjLod sign sin sinh smoothstep sqrt step tan tanh texelFetch texelFetchOffset texture texture1D texture1DLod texture1DProj texture1DProjLod texture2D texture2DLod texture2DProj texture2DProjLod texture3D texture3DLod texture3DProj texture3DProjLod textureCube textureCubeLod textureGather textureGatherOffset textureGatherOffsets textureGrad textureGradOffset textureLod textureLodOffset textureOffset textureProj textureProjGrad textureProjGradOffset textureProjLod textureProjLodOffset textureProjOffset textureQueryLevels textureQueryLod textureSize transpose trunc uaddCarry uintBitsToFloat umulExtended unpackDouble2x32 unpackHalf2x16 unpackSnorm2x16 unpackSnorm4x8 unpackUnorm2x16 unpackUnorm4x8 usubBorrow\",\n        \"literal\": \"true false\"\n    },\n    \"illegal\": \"\\\"\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"#\",\n            \"end\": \"$\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/gml.json",
    "content": "{\n    \"aliases\": [\n        \"gml\",\n        \"GML\"\n    ],\n    \"case_insensitive\": false,\n    \"keywords\": {\n        \"keyword\": \"begin end if then else while do for break continue with until repeat exit and or xor not return mod div switch case default var globalvar enum #macro #region #endregion\",\n        \"built_in\": \"is_real is_string is_array is_undefined is_int32 is_int64 is_ptr is_vec3 is_vec4 is_matrix is_bool typeof variable_global_exists variable_global_get variable_global_set variable_instance_exists variable_instance_get variable_instance_set variable_instance_get_names array_length_1d array_length_2d array_height_2d array_equals array_create array_copy random random_range irandom irandom_range random_set_seed random_get_seed randomize randomise choose abs round floor ceil sign frac sqrt sqr exp ln log2 log10 sin cos tan arcsin arccos arctan arctan2 dsin dcos dtan darcsin darccos darctan darctan2 degtorad radtodeg power logn min max mean median clamp lerp dot_product dot_product_3d dot_product_normalised dot_product_3d_normalised dot_product_normalized dot_product_3d_normalized math_set_epsilon math_get_epsilon angle_difference point_distance_3d point_distance point_direction lengthdir_x lengthdir_y real string int64 ptr string_format chr ansi_char ord string_length string_byte_length string_pos string_copy string_char_at string_ord_at string_byte_at string_set_byte_at string_delete string_insert string_lower string_upper string_repeat string_letters string_digits string_lettersdigits string_replace string_replace_all string_count string_hash_to_newline clipboard_has_text clipboard_set_text clipboard_get_text date_current_datetime date_create_datetime date_valid_datetime date_inc_year date_inc_month date_inc_week date_inc_day date_inc_hour date_inc_minute date_inc_second date_get_year date_get_month date_get_week date_get_day date_get_hour date_get_minute date_get_second date_get_weekday date_get_day_of_year date_get_hour_of_year date_get_minute_of_year date_get_second_of_year date_year_span date_month_span date_week_span date_day_span date_hour_span date_minute_span date_second_span date_compare_datetime date_compare_date date_compare_time date_date_of date_time_of date_datetime_string date_date_string date_time_string date_days_in_month date_days_in_year date_leap_year date_is_today date_set_timezone date_get_timezone game_set_speed game_get_speed motion_set motion_add place_free place_empty place_meeting place_snapped move_random move_snap move_towards_point move_contact_solid move_contact_all move_outside_solid move_outside_all move_bounce_solid move_bounce_all move_wrap distance_to_point distance_to_object position_empty position_meeting path_start path_end mp_linear_step mp_potential_step mp_linear_step_object mp_potential_step_object mp_potential_settings mp_linear_path mp_potential_path mp_linear_path_object mp_potential_path_object mp_grid_create mp_grid_destroy mp_grid_clear_all mp_grid_clear_cell mp_grid_clear_rectangle mp_grid_add_cell mp_grid_get_cell mp_grid_add_rectangle mp_grid_add_instances mp_grid_path mp_grid_draw mp_grid_to_ds_grid collision_point collision_rectangle collision_circle collision_ellipse collision_line collision_point_list collision_rectangle_list collision_circle_list collision_ellipse_list collision_line_list instance_position_list instance_place_list point_in_rectangle point_in_triangle point_in_circle rectangle_in_rectangle rectangle_in_triangle rectangle_in_circle instance_find instance_exists instance_number instance_position instance_nearest instance_furthest instance_place instance_create_depth instance_create_layer instance_copy instance_change instance_destroy position_destroy position_change instance_id_get instance_deactivate_all instance_deactivate_object instance_deactivate_region instance_activate_all instance_activate_object instance_activate_region room_goto room_goto_previous room_goto_next room_previous room_next room_restart game_end game_restart game_load game_save game_save_buffer game_load_buffer event_perform event_user event_perform_object event_inherited show_debug_message show_debug_overlay debug_event debug_get_callstack alarm_get alarm_set font_texture_page_size keyboard_set_map keyboard_get_map keyboard_unset_map keyboard_check keyboard_check_pressed keyboard_check_released keyboard_check_direct keyboard_get_numlock keyboard_set_numlock keyboard_key_press keyboard_key_release keyboard_clear io_clear mouse_check_button mouse_check_button_pressed mouse_check_button_released mouse_wheel_up mouse_wheel_down mouse_clear draw_self draw_sprite draw_sprite_pos draw_sprite_ext draw_sprite_stretched draw_sprite_stretched_ext draw_sprite_tiled draw_sprite_tiled_ext draw_sprite_part draw_sprite_part_ext draw_sprite_general draw_clear draw_clear_alpha draw_point draw_line draw_line_width draw_rectangle draw_roundrect draw_roundrect_ext draw_triangle draw_circle draw_ellipse draw_set_circle_precision draw_arrow draw_button draw_path draw_healthbar draw_getpixel draw_getpixel_ext draw_set_colour draw_set_color draw_set_alpha draw_get_colour draw_get_color draw_get_alpha merge_colour make_colour_rgb make_colour_hsv colour_get_red colour_get_green colour_get_blue colour_get_hue colour_get_saturation colour_get_value merge_color make_color_rgb make_color_hsv color_get_red color_get_green color_get_blue color_get_hue color_get_saturation color_get_value merge_color screen_save screen_save_part draw_set_font draw_set_halign draw_set_valign draw_text draw_text_ext string_width string_height string_width_ext string_height_ext draw_text_transformed draw_text_ext_transformed draw_text_colour draw_text_ext_colour draw_text_transformed_colour draw_text_ext_transformed_colour draw_text_color draw_text_ext_color draw_text_transformed_color draw_text_ext_transformed_color draw_point_colour draw_line_colour draw_line_width_colour draw_rectangle_colour draw_roundrect_colour draw_roundrect_colour_ext draw_triangle_colour draw_circle_colour draw_ellipse_colour draw_point_color draw_line_color draw_line_width_color draw_rectangle_color draw_roundrect_color draw_roundrect_color_ext draw_triangle_color draw_circle_color draw_ellipse_color draw_primitive_begin draw_vertex draw_vertex_colour draw_vertex_color draw_primitive_end sprite_get_uvs font_get_uvs sprite_get_texture font_get_texture texture_get_width texture_get_height texture_get_uvs draw_primitive_begin_texture draw_vertex_texture draw_vertex_texture_colour draw_vertex_texture_color texture_global_scale surface_create surface_create_ext surface_resize surface_free surface_exists surface_get_width surface_get_height surface_get_texture surface_set_target surface_set_target_ext surface_reset_target surface_depth_disable surface_get_depth_disable draw_surface draw_surface_stretched draw_surface_tiled draw_surface_part draw_surface_ext draw_surface_stretched_ext draw_surface_tiled_ext draw_surface_part_ext draw_surface_general surface_getpixel surface_getpixel_ext surface_save surface_save_part surface_copy surface_copy_part application_surface_draw_enable application_get_position application_surface_enable application_surface_is_enabled display_get_width display_get_height display_get_orientation display_get_gui_width display_get_gui_height display_reset display_mouse_get_x display_mouse_get_y display_mouse_set display_set_ui_visibility window_set_fullscreen window_get_fullscreen window_set_caption window_set_min_width window_set_max_width window_set_min_height window_set_max_height window_get_visible_rects window_get_caption window_set_cursor window_get_cursor window_set_colour window_get_colour window_set_color window_get_color window_set_position window_set_size window_set_rectangle window_center window_get_x window_get_y window_get_width window_get_height window_mouse_get_x window_mouse_get_y window_mouse_set window_view_mouse_get_x window_view_mouse_get_y window_views_mouse_get_x window_views_mouse_get_y audio_listener_position audio_listener_velocity audio_listener_orientation audio_emitter_position audio_emitter_create audio_emitter_free audio_emitter_exists audio_emitter_pitch audio_emitter_velocity audio_emitter_falloff audio_emitter_gain audio_play_sound audio_play_sound_on audio_play_sound_at audio_stop_sound audio_resume_music audio_music_is_playing audio_resume_sound audio_pause_sound audio_pause_music audio_channel_num audio_sound_length audio_get_type audio_falloff_set_model audio_play_music audio_stop_music audio_master_gain audio_music_gain audio_sound_gain audio_sound_pitch audio_stop_all audio_resume_all audio_pause_all audio_is_playing audio_is_paused audio_exists audio_sound_set_track_position audio_sound_get_track_position audio_emitter_get_gain audio_emitter_get_pitch audio_emitter_get_x audio_emitter_get_y audio_emitter_get_z audio_emitter_get_vx audio_emitter_get_vy audio_emitter_get_vz audio_listener_set_position audio_listener_set_velocity audio_listener_set_orientation audio_listener_get_data audio_set_master_gain audio_get_master_gain audio_sound_get_gain audio_sound_get_pitch audio_get_name audio_sound_set_track_position audio_sound_get_track_position audio_create_stream audio_destroy_stream audio_create_sync_group audio_destroy_sync_group audio_play_in_sync_group audio_start_sync_group audio_stop_sync_group audio_pause_sync_group audio_resume_sync_group audio_sync_group_get_track_pos audio_sync_group_debug audio_sync_group_is_playing audio_debug audio_group_load audio_group_unload audio_group_is_loaded audio_group_load_progress audio_group_name audio_group_stop_all audio_group_set_gain audio_create_buffer_sound audio_free_buffer_sound audio_create_play_queue audio_free_play_queue audio_queue_sound audio_get_recorder_count audio_get_recorder_info audio_start_recording audio_stop_recording audio_sound_get_listener_mask audio_emitter_get_listener_mask audio_get_listener_mask audio_sound_set_listener_mask audio_emitter_set_listener_mask audio_set_listener_mask audio_get_listener_count audio_get_listener_info audio_system show_message show_message_async clickable_add clickable_add_ext clickable_change clickable_change_ext clickable_delete clickable_exists clickable_set_style show_question show_question_async get_integer get_string get_integer_async get_string_async get_login_async get_open_filename get_save_filename get_open_filename_ext get_save_filename_ext show_error highscore_clear highscore_add highscore_value highscore_name draw_highscore sprite_exists sprite_get_name sprite_get_number sprite_get_width sprite_get_height sprite_get_xoffset sprite_get_yoffset sprite_get_bbox_left sprite_get_bbox_right sprite_get_bbox_top sprite_get_bbox_bottom sprite_save sprite_save_strip sprite_set_cache_size sprite_set_cache_size_ext sprite_get_tpe sprite_prefetch sprite_prefetch_multi sprite_flush sprite_flush_multi sprite_set_speed sprite_get_speed_type sprite_get_speed font_exists font_get_name font_get_fontname font_get_bold font_get_italic font_get_first font_get_last font_get_size font_set_cache_size path_exists path_get_name path_get_length path_get_time path_get_kind path_get_closed path_get_precision path_get_number path_get_point_x path_get_point_y path_get_point_speed path_get_x path_get_y path_get_speed script_exists script_get_name timeline_add timeline_delete timeline_clear timeline_exists timeline_get_name timeline_moment_clear timeline_moment_add_script timeline_size timeline_max_moment object_exists object_get_name object_get_sprite object_get_solid object_get_visible object_get_persistent object_get_mask object_get_parent object_get_physics object_is_ancestor room_exists room_get_name sprite_set_offset sprite_duplicate sprite_assign sprite_merge sprite_add sprite_replace sprite_create_from_surface sprite_add_from_surface sprite_delete sprite_set_alpha_from_sprite sprite_collision_mask font_add_enable_aa font_add_get_enable_aa font_add font_add_sprite font_add_sprite_ext font_replace font_replace_sprite font_replace_sprite_ext font_delete path_set_kind path_set_closed path_set_precision path_add path_assign path_duplicate path_append path_delete path_add_point path_insert_point path_change_point path_delete_point path_clear_points path_reverse path_mirror path_flip path_rotate path_rescale path_shift script_execute object_set_sprite object_set_solid object_set_visible object_set_persistent object_set_mask room_set_width room_set_height room_set_persistent room_set_background_colour room_set_background_color room_set_view room_set_viewport room_get_viewport room_set_view_enabled room_add room_duplicate room_assign room_instance_add room_instance_clear room_get_camera room_set_camera asset_get_index asset_get_type file_text_open_from_string file_text_open_read file_text_open_write file_text_open_append file_text_close file_text_write_string file_text_write_real file_text_writeln file_text_read_string file_text_read_real file_text_readln file_text_eof file_text_eoln file_exists file_delete file_rename file_copy directory_exists directory_create directory_destroy file_find_first file_find_next file_find_close file_attributes filename_name filename_path filename_dir filename_drive filename_ext filename_change_ext file_bin_open file_bin_rewrite file_bin_close file_bin_position file_bin_size file_bin_seek file_bin_write_byte file_bin_read_byte parameter_count parameter_string environment_get_variable ini_open_from_string ini_open ini_close ini_read_string ini_read_real ini_write_string ini_write_real ini_key_exists ini_section_exists ini_key_delete ini_section_delete ds_set_precision ds_exists ds_stack_create ds_stack_destroy ds_stack_clear ds_stack_copy ds_stack_size ds_stack_empty ds_stack_push ds_stack_pop ds_stack_top ds_stack_write ds_stack_read ds_queue_create ds_queue_destroy ds_queue_clear ds_queue_copy ds_queue_size ds_queue_empty ds_queue_enqueue ds_queue_dequeue ds_queue_head ds_queue_tail ds_queue_write ds_queue_read ds_list_create ds_list_destroy ds_list_clear ds_list_copy ds_list_size ds_list_empty ds_list_add ds_list_insert ds_list_replace ds_list_delete ds_list_find_index ds_list_find_value ds_list_mark_as_list ds_list_mark_as_map ds_list_sort ds_list_shuffle ds_list_write ds_list_read ds_list_set ds_map_create ds_map_destroy ds_map_clear ds_map_copy ds_map_size ds_map_empty ds_map_add ds_map_add_list ds_map_add_map ds_map_replace ds_map_replace_map ds_map_replace_list ds_map_delete ds_map_exists ds_map_find_value ds_map_find_previous ds_map_find_next ds_map_find_first ds_map_find_last ds_map_write ds_map_read ds_map_secure_save ds_map_secure_load ds_map_secure_load_buffer ds_map_secure_save_buffer ds_map_set ds_priority_create ds_priority_destroy ds_priority_clear ds_priority_copy ds_priority_size ds_priority_empty ds_priority_add ds_priority_change_priority ds_priority_find_priority ds_priority_delete_value ds_priority_delete_min ds_priority_find_min ds_priority_delete_max ds_priority_find_max ds_priority_write ds_priority_read ds_grid_create ds_grid_destroy ds_grid_copy ds_grid_resize ds_grid_width ds_grid_height ds_grid_clear ds_grid_set ds_grid_add ds_grid_multiply ds_grid_set_region ds_grid_add_region ds_grid_multiply_region ds_grid_set_disk ds_grid_add_disk ds_grid_multiply_disk ds_grid_set_grid_region ds_grid_add_grid_region ds_grid_multiply_grid_region ds_grid_get ds_grid_get_sum ds_grid_get_max ds_grid_get_min ds_grid_get_mean ds_grid_get_disk_sum ds_grid_get_disk_min ds_grid_get_disk_max ds_grid_get_disk_mean ds_grid_value_exists ds_grid_value_x ds_grid_value_y ds_grid_value_disk_exists ds_grid_value_disk_x ds_grid_value_disk_y ds_grid_shuffle ds_grid_write ds_grid_read ds_grid_sort ds_grid_set ds_grid_get effect_create_below effect_create_above effect_clear part_type_create part_type_destroy part_type_exists part_type_clear part_type_shape part_type_sprite part_type_size part_type_scale part_type_orientation part_type_life part_type_step part_type_death part_type_speed part_type_direction part_type_gravity part_type_colour1 part_type_colour2 part_type_colour3 part_type_colour_mix part_type_colour_rgb part_type_colour_hsv part_type_color1 part_type_color2 part_type_color3 part_type_color_mix part_type_color_rgb part_type_color_hsv part_type_alpha1 part_type_alpha2 part_type_alpha3 part_type_blend part_system_create part_system_create_layer part_system_destroy part_system_exists part_system_clear part_system_draw_order part_system_depth part_system_position part_system_automatic_update part_system_automatic_draw part_system_update part_system_drawit part_system_get_layer part_system_layer part_particles_create part_particles_create_colour part_particles_create_color part_particles_clear part_particles_count part_emitter_create part_emitter_destroy part_emitter_destroy_all part_emitter_exists part_emitter_clear part_emitter_region part_emitter_burst part_emitter_stream external_call external_define external_free window_handle window_device matrix_get matrix_set matrix_build_identity matrix_build matrix_build_lookat matrix_build_projection_ortho matrix_build_projection_perspective matrix_build_projection_perspective_fov matrix_multiply matrix_transform_vertex matrix_stack_push matrix_stack_pop matrix_stack_multiply matrix_stack_set matrix_stack_clear matrix_stack_top matrix_stack_is_empty browser_input_capture os_get_config os_get_info os_get_language os_get_region os_lock_orientation display_get_dpi_x display_get_dpi_y display_set_gui_size display_set_gui_maximise display_set_gui_maximize device_mouse_dbclick_enable display_set_timing_method display_get_timing_method display_set_sleep_margin display_get_sleep_margin virtual_key_add virtual_key_hide virtual_key_delete virtual_key_show draw_enable_drawevent draw_enable_swf_aa draw_set_swf_aa_level draw_get_swf_aa_level draw_texture_flush draw_flush gpu_set_blendenable gpu_set_ztestenable gpu_set_zfunc gpu_set_zwriteenable gpu_set_lightingenable gpu_set_fog gpu_set_cullmode gpu_set_blendmode gpu_set_blendmode_ext gpu_set_blendmode_ext_sepalpha gpu_set_colorwriteenable gpu_set_colourwriteenable gpu_set_alphatestenable gpu_set_alphatestref gpu_set_alphatestfunc gpu_set_texfilter gpu_set_texfilter_ext gpu_set_texrepeat gpu_set_texrepeat_ext gpu_set_tex_filter gpu_set_tex_filter_ext gpu_set_tex_repeat gpu_set_tex_repeat_ext gpu_set_tex_mip_filter gpu_set_tex_mip_filter_ext gpu_set_tex_mip_bias gpu_set_tex_mip_bias_ext gpu_set_tex_min_mip gpu_set_tex_min_mip_ext gpu_set_tex_max_mip gpu_set_tex_max_mip_ext gpu_set_tex_max_aniso gpu_set_tex_max_aniso_ext gpu_set_tex_mip_enable gpu_set_tex_mip_enable_ext gpu_get_blendenable gpu_get_ztestenable gpu_get_zfunc gpu_get_zwriteenable gpu_get_lightingenable gpu_get_fog gpu_get_cullmode gpu_get_blendmode gpu_get_blendmode_ext gpu_get_blendmode_ext_sepalpha gpu_get_blendmode_src gpu_get_blendmode_dest gpu_get_blendmode_srcalpha gpu_get_blendmode_destalpha gpu_get_colorwriteenable gpu_get_colourwriteenable gpu_get_alphatestenable gpu_get_alphatestref gpu_get_alphatestfunc gpu_get_texfilter gpu_get_texfilter_ext gpu_get_texrepeat gpu_get_texrepeat_ext gpu_get_tex_filter gpu_get_tex_filter_ext gpu_get_tex_repeat gpu_get_tex_repeat_ext gpu_get_tex_mip_filter gpu_get_tex_mip_filter_ext gpu_get_tex_mip_bias gpu_get_tex_mip_bias_ext gpu_get_tex_min_mip gpu_get_tex_min_mip_ext gpu_get_tex_max_mip gpu_get_tex_max_mip_ext gpu_get_tex_max_aniso gpu_get_tex_max_aniso_ext gpu_get_tex_mip_enable gpu_get_tex_mip_enable_ext gpu_push_state gpu_pop_state gpu_get_state gpu_set_state draw_light_define_ambient draw_light_define_direction draw_light_define_point draw_light_enable draw_set_lighting draw_light_get_ambient draw_light_get draw_get_lighting shop_leave_rating url_get_domain url_open url_open_ext url_open_full get_timer achievement_login achievement_logout achievement_post achievement_increment achievement_post_score achievement_available achievement_show_achievements achievement_show_leaderboards achievement_load_friends achievement_load_leaderboard achievement_send_challenge achievement_load_progress achievement_reset achievement_login_status achievement_get_pic achievement_show_challenge_notifications achievement_get_challenges achievement_event achievement_show achievement_get_info cloud_file_save cloud_string_save cloud_synchronise ads_enable ads_disable ads_setup ads_engagement_launch ads_engagement_available ads_engagement_active ads_event ads_event_preload ads_set_reward_callback ads_get_display_height ads_get_display_width ads_move ads_interstitial_available ads_interstitial_display device_get_tilt_x device_get_tilt_y device_get_tilt_z device_is_keypad_open device_mouse_check_button device_mouse_check_button_pressed device_mouse_check_button_released device_mouse_x device_mouse_y device_mouse_raw_x device_mouse_raw_y device_mouse_x_to_gui device_mouse_y_to_gui iap_activate iap_status iap_enumerate_products iap_restore_all iap_acquire iap_consume iap_product_details iap_purchase_details facebook_init facebook_login facebook_status facebook_graph_request facebook_dialog facebook_logout facebook_launch_offerwall facebook_post_message facebook_send_invite facebook_user_id facebook_accesstoken facebook_check_permission facebook_request_read_permissions facebook_request_publish_permissions gamepad_is_supported gamepad_get_device_count gamepad_is_connected gamepad_get_description gamepad_get_button_threshold gamepad_set_button_threshold gamepad_get_axis_deadzone gamepad_set_axis_deadzone gamepad_button_count gamepad_button_check gamepad_button_check_pressed gamepad_button_check_released gamepad_button_value gamepad_axis_count gamepad_axis_value gamepad_set_vibration gamepad_set_colour gamepad_set_color os_is_paused window_has_focus code_is_compiled http_get http_get_file http_post_string http_request json_encode json_decode zip_unzip load_csv base64_encode base64_decode md5_string_unicode md5_string_utf8 md5_file os_is_network_connected sha1_string_unicode sha1_string_utf8 sha1_file os_powersave_enable analytics_event analytics_event_ext win8_livetile_tile_notification win8_livetile_tile_clear win8_livetile_badge_notification win8_livetile_badge_clear win8_livetile_queue_enable win8_secondarytile_pin win8_secondarytile_badge_notification win8_secondarytile_delete win8_livetile_notification_begin win8_livetile_notification_secondary_begin win8_livetile_notification_expiry win8_livetile_notification_tag win8_livetile_notification_text_add win8_livetile_notification_image_add win8_livetile_notification_end win8_appbar_enable win8_appbar_add_element win8_appbar_remove_element win8_settingscharm_add_entry win8_settingscharm_add_html_entry win8_settingscharm_add_xaml_entry win8_settingscharm_set_xaml_property win8_settingscharm_get_xaml_property win8_settingscharm_remove_entry win8_share_image win8_share_screenshot win8_share_file win8_share_url win8_share_text win8_search_enable win8_search_disable win8_search_add_suggestions win8_device_touchscreen_available win8_license_initialize_sandbox win8_license_trial_version winphone_license_trial_version winphone_tile_title winphone_tile_count winphone_tile_back_title winphone_tile_back_content winphone_tile_back_content_wide winphone_tile_front_image winphone_tile_front_image_small winphone_tile_front_image_wide winphone_tile_back_image winphone_tile_back_image_wide winphone_tile_background_colour winphone_tile_background_color winphone_tile_icon_image winphone_tile_small_icon_image winphone_tile_wide_content winphone_tile_cycle_images winphone_tile_small_background_image physics_world_create physics_world_gravity physics_world_update_speed physics_world_update_iterations physics_world_draw_debug physics_pause_enable physics_fixture_create physics_fixture_set_kinematic physics_fixture_set_density physics_fixture_set_awake physics_fixture_set_restitution physics_fixture_set_friction physics_fixture_set_collision_group physics_fixture_set_sensor physics_fixture_set_linear_damping physics_fixture_set_angular_damping physics_fixture_set_circle_shape physics_fixture_set_box_shape physics_fixture_set_edge_shape physics_fixture_set_polygon_shape physics_fixture_set_chain_shape physics_fixture_add_point physics_fixture_bind physics_fixture_bind_ext physics_fixture_delete physics_apply_force physics_apply_impulse physics_apply_angular_impulse physics_apply_local_force physics_apply_local_impulse physics_apply_torque physics_mass_properties physics_draw_debug physics_test_overlap physics_remove_fixture physics_set_friction physics_set_density physics_set_restitution physics_get_friction physics_get_density physics_get_restitution physics_joint_distance_create physics_joint_rope_create physics_joint_revolute_create physics_joint_prismatic_create physics_joint_pulley_create physics_joint_wheel_create physics_joint_weld_create physics_joint_friction_create physics_joint_gear_create physics_joint_enable_motor physics_joint_get_value physics_joint_set_value physics_joint_delete physics_particle_create physics_particle_delete physics_particle_delete_region_circle physics_particle_delete_region_box physics_particle_delete_region_poly physics_particle_set_flags physics_particle_set_category_flags physics_particle_draw physics_particle_draw_ext physics_particle_count physics_particle_get_data physics_particle_get_data_particle physics_particle_group_begin physics_particle_group_circle physics_particle_group_box physics_particle_group_polygon physics_particle_group_add_point physics_particle_group_end physics_particle_group_join physics_particle_group_delete physics_particle_group_count physics_particle_group_get_data physics_particle_group_get_mass physics_particle_group_get_inertia physics_particle_group_get_centre_x physics_particle_group_get_centre_y physics_particle_group_get_vel_x physics_particle_group_get_vel_y physics_particle_group_get_ang_vel physics_particle_group_get_x physics_particle_group_get_y physics_particle_group_get_angle physics_particle_set_group_flags physics_particle_get_group_flags physics_particle_get_max_count physics_particle_get_radius physics_particle_get_density physics_particle_get_damping physics_particle_get_gravity_scale physics_particle_set_max_count physics_particle_set_radius physics_particle_set_density physics_particle_set_damping physics_particle_set_gravity_scale network_create_socket network_create_socket_ext network_create_server network_create_server_raw network_connect network_connect_raw network_send_packet network_send_raw network_send_broadcast network_send_udp network_send_udp_raw network_set_timeout network_set_config network_resolve network_destroy buffer_create buffer_write buffer_read buffer_seek buffer_get_surface buffer_set_surface buffer_delete buffer_exists buffer_get_type buffer_get_alignment buffer_poke buffer_peek buffer_save buffer_save_ext buffer_load buffer_load_ext buffer_load_partial buffer_copy buffer_fill buffer_get_size buffer_tell buffer_resize buffer_md5 buffer_sha1 buffer_base64_encode buffer_base64_decode buffer_base64_decode_ext buffer_sizeof buffer_get_address buffer_create_from_vertex_buffer buffer_create_from_vertex_buffer_ext buffer_copy_from_vertex_buffer buffer_async_group_begin buffer_async_group_option buffer_async_group_end buffer_load_async buffer_save_async gml_release_mode gml_pragma steam_activate_overlay steam_is_overlay_enabled steam_is_overlay_activated steam_get_persona_name steam_initialised steam_is_cloud_enabled_for_app steam_is_cloud_enabled_for_account steam_file_persisted steam_get_quota_total steam_get_quota_free steam_file_write steam_file_write_file steam_file_read steam_file_delete steam_file_exists steam_file_size steam_file_share steam_is_screenshot_requested steam_send_screenshot steam_is_user_logged_on steam_get_user_steam_id steam_user_owns_dlc steam_user_installed_dlc steam_set_achievement steam_get_achievement steam_clear_achievement steam_set_stat_int steam_set_stat_float steam_set_stat_avg_rate steam_get_stat_int steam_get_stat_float steam_get_stat_avg_rate steam_reset_all_stats steam_reset_all_stats_achievements steam_stats_ready steam_create_leaderboard steam_upload_score steam_upload_score_ext steam_download_scores_around_user steam_download_scores steam_download_friends_scores steam_upload_score_buffer steam_upload_score_buffer_ext steam_current_game_language steam_available_languages steam_activate_overlay_browser steam_activate_overlay_user steam_activate_overlay_store steam_get_user_persona_name steam_get_app_id steam_get_user_account_id steam_ugc_download steam_ugc_create_item steam_ugc_start_item_update steam_ugc_set_item_title steam_ugc_set_item_description steam_ugc_set_item_visibility steam_ugc_set_item_tags steam_ugc_set_item_content steam_ugc_set_item_preview steam_ugc_submit_item_update steam_ugc_get_item_update_progress steam_ugc_subscribe_item steam_ugc_unsubscribe_item steam_ugc_num_subscribed_items steam_ugc_get_subscribed_items steam_ugc_get_item_install_info steam_ugc_get_item_update_info steam_ugc_request_item_details steam_ugc_create_query_user steam_ugc_create_query_user_ex steam_ugc_create_query_all steam_ugc_create_query_all_ex steam_ugc_query_set_cloud_filename_filter steam_ugc_query_set_match_any_tag steam_ugc_query_set_search_text steam_ugc_query_set_ranked_by_trend_days steam_ugc_query_add_required_tag steam_ugc_query_add_excluded_tag steam_ugc_query_set_return_long_description steam_ugc_query_set_return_total_only steam_ugc_query_set_allow_cached_response steam_ugc_send_query shader_set shader_get_name shader_reset shader_current shader_is_compiled shader_get_sampler_index shader_get_uniform shader_set_uniform_i shader_set_uniform_i_array shader_set_uniform_f shader_set_uniform_f_array shader_set_uniform_matrix shader_set_uniform_matrix_array shader_enable_corner_id texture_set_stage texture_get_texel_width texture_get_texel_height shaders_are_supported vertex_format_begin vertex_format_end vertex_format_delete vertex_format_add_position vertex_format_add_position_3d vertex_format_add_colour vertex_format_add_color vertex_format_add_normal vertex_format_add_texcoord vertex_format_add_textcoord vertex_format_add_custom vertex_create_buffer vertex_create_buffer_ext vertex_delete_buffer vertex_begin vertex_end vertex_position vertex_position_3d vertex_colour vertex_color vertex_argb vertex_texcoord vertex_normal vertex_float1 vertex_float2 vertex_float3 vertex_float4 vertex_ubyte4 vertex_submit vertex_freeze vertex_get_number vertex_get_buffer_size vertex_create_buffer_from_buffer vertex_create_buffer_from_buffer_ext push_local_notification push_get_first_local_notification push_get_next_local_notification push_cancel_local_notification skeleton_animation_set skeleton_animation_get skeleton_animation_mix skeleton_animation_set_ext skeleton_animation_get_ext skeleton_animation_get_duration skeleton_animation_get_frames skeleton_animation_clear skeleton_skin_set skeleton_skin_get skeleton_attachment_set skeleton_attachment_get skeleton_attachment_create skeleton_collision_draw_set skeleton_bone_data_get skeleton_bone_data_set skeleton_bone_state_get skeleton_bone_state_set skeleton_get_minmax skeleton_get_num_bounds skeleton_get_bounds skeleton_animation_get_frame skeleton_animation_set_frame draw_skeleton draw_skeleton_time draw_skeleton_instance draw_skeleton_collision skeleton_animation_list skeleton_skin_list skeleton_slot_data layer_get_id layer_get_id_at_depth layer_get_depth layer_create layer_destroy layer_destroy_instances layer_add_instance layer_has_instance layer_set_visible layer_get_visible layer_exists layer_x layer_y layer_get_x layer_get_y layer_hspeed layer_vspeed layer_get_hspeed layer_get_vspeed layer_script_begin layer_script_end layer_shader layer_get_script_begin layer_get_script_end layer_get_shader layer_set_target_room layer_get_target_room layer_reset_target_room layer_get_all layer_get_all_elements layer_get_name layer_depth layer_get_element_layer layer_get_element_type layer_element_move layer_force_draw_depth layer_is_draw_depth_forced layer_get_forced_depth layer_background_get_id layer_background_exists layer_background_create layer_background_destroy layer_background_visible layer_background_change layer_background_sprite layer_background_htiled layer_background_vtiled layer_background_stretch layer_background_yscale layer_background_xscale layer_background_blend layer_background_alpha layer_background_index layer_background_speed layer_background_get_visible layer_background_get_sprite layer_background_get_htiled layer_background_get_vtiled layer_background_get_stretch layer_background_get_yscale layer_background_get_xscale layer_background_get_blend layer_background_get_alpha layer_background_get_index layer_background_get_speed layer_sprite_get_id layer_sprite_exists layer_sprite_create layer_sprite_destroy layer_sprite_change layer_sprite_index layer_sprite_speed layer_sprite_xscale layer_sprite_yscale layer_sprite_angle layer_sprite_blend layer_sprite_alpha layer_sprite_x layer_sprite_y layer_sprite_get_sprite layer_sprite_get_index layer_sprite_get_speed layer_sprite_get_xscale layer_sprite_get_yscale layer_sprite_get_angle layer_sprite_get_blend layer_sprite_get_alpha layer_sprite_get_x layer_sprite_get_y layer_tilemap_get_id layer_tilemap_exists layer_tilemap_create layer_tilemap_destroy tilemap_tileset tilemap_x tilemap_y tilemap_set tilemap_set_at_pixel tilemap_get_tileset tilemap_get_tile_width tilemap_get_tile_height tilemap_get_width tilemap_get_height tilemap_get_x tilemap_get_y tilemap_get tilemap_get_at_pixel tilemap_get_cell_x_at_pixel tilemap_get_cell_y_at_pixel tilemap_clear draw_tilemap draw_tile tilemap_set_global_mask tilemap_get_global_mask tilemap_set_mask tilemap_get_mask tilemap_get_frame tile_set_empty tile_set_index tile_set_flip tile_set_mirror tile_set_rotate tile_get_empty tile_get_index tile_get_flip tile_get_mirror tile_get_rotate layer_tile_exists layer_tile_create layer_tile_destroy layer_tile_change layer_tile_xscale layer_tile_yscale layer_tile_blend layer_tile_alpha layer_tile_x layer_tile_y layer_tile_region layer_tile_visible layer_tile_get_sprite layer_tile_get_xscale layer_tile_get_yscale layer_tile_get_blend layer_tile_get_alpha layer_tile_get_x layer_tile_get_y layer_tile_get_region layer_tile_get_visible layer_instance_get_instance instance_activate_layer instance_deactivate_layer camera_create camera_create_view camera_destroy camera_apply camera_get_active camera_get_default camera_set_default camera_set_view_mat camera_set_proj_mat camera_set_update_script camera_set_begin_script camera_set_end_script camera_set_view_pos camera_set_view_size camera_set_view_speed camera_set_view_border camera_set_view_angle camera_set_view_target camera_get_view_mat camera_get_proj_mat camera_get_update_script camera_get_begin_script camera_get_end_script camera_get_view_x camera_get_view_y camera_get_view_width camera_get_view_height camera_get_view_speed_x camera_get_view_speed_y camera_get_view_border_x camera_get_view_border_y camera_get_view_angle camera_get_view_target view_get_camera view_get_visible view_get_xport view_get_yport view_get_wport view_get_hport view_get_surface_id view_set_camera view_set_visible view_set_xport view_set_yport view_set_wport view_set_hport view_set_surface_id gesture_drag_time gesture_drag_distance gesture_flick_speed gesture_double_tap_time gesture_double_tap_distance gesture_pinch_distance gesture_pinch_angle_towards gesture_pinch_angle_away gesture_rotate_time gesture_rotate_angle gesture_tap_count gesture_get_drag_time gesture_get_drag_distance gesture_get_flick_speed gesture_get_double_tap_time gesture_get_double_tap_distance gesture_get_pinch_distance gesture_get_pinch_angle_towards gesture_get_pinch_angle_away gesture_get_rotate_time gesture_get_rotate_angle gesture_get_tap_count keyboard_virtual_show keyboard_virtual_hide keyboard_virtual_status keyboard_virtual_height\",\n        \"literal\": \"self other all noone global local undefined pointer_invalid pointer_null path_action_stop path_action_restart path_action_continue path_action_reverse true false pi GM_build_date GM_version GM_runtime_version  timezone_local timezone_utc gamespeed_fps gamespeed_microseconds  ev_create ev_destroy ev_step ev_alarm ev_keyboard ev_mouse ev_collision ev_other ev_draw ev_draw_begin ev_draw_end ev_draw_pre ev_draw_post ev_keypress ev_keyrelease ev_trigger ev_left_button ev_right_button ev_middle_button ev_no_button ev_left_press ev_right_press ev_middle_press ev_left_release ev_right_release ev_middle_release ev_mouse_enter ev_mouse_leave ev_mouse_wheel_up ev_mouse_wheel_down ev_global_left_button ev_global_right_button ev_global_middle_button ev_global_left_press ev_global_right_press ev_global_middle_press ev_global_left_release ev_global_right_release ev_global_middle_release ev_joystick1_left ev_joystick1_right ev_joystick1_up ev_joystick1_down ev_joystick1_button1 ev_joystick1_button2 ev_joystick1_button3 ev_joystick1_button4 ev_joystick1_button5 ev_joystick1_button6 ev_joystick1_button7 ev_joystick1_button8 ev_joystick2_left ev_joystick2_right ev_joystick2_up ev_joystick2_down ev_joystick2_button1 ev_joystick2_button2 ev_joystick2_button3 ev_joystick2_button4 ev_joystick2_button5 ev_joystick2_button6 ev_joystick2_button7 ev_joystick2_button8 ev_outside ev_boundary ev_game_start ev_game_end ev_room_start ev_room_end ev_no_more_lives ev_animation_end ev_end_of_path ev_no_more_health ev_close_button ev_user0 ev_user1 ev_user2 ev_user3 ev_user4 ev_user5 ev_user6 ev_user7 ev_user8 ev_user9 ev_user10 ev_user11 ev_user12 ev_user13 ev_user14 ev_user15 ev_step_normal ev_step_begin ev_step_end ev_gui ev_gui_begin ev_gui_end ev_cleanup ev_gesture ev_gesture_tap ev_gesture_double_tap ev_gesture_drag_start ev_gesture_dragging ev_gesture_drag_end ev_gesture_flick ev_gesture_pinch_start ev_gesture_pinch_in ev_gesture_pinch_out ev_gesture_pinch_end ev_gesture_rotate_start ev_gesture_rotating ev_gesture_rotate_end ev_global_gesture_tap ev_global_gesture_double_tap ev_global_gesture_drag_start ev_global_gesture_dragging ev_global_gesture_drag_end ev_global_gesture_flick ev_global_gesture_pinch_start ev_global_gesture_pinch_in ev_global_gesture_pinch_out ev_global_gesture_pinch_end ev_global_gesture_rotate_start ev_global_gesture_rotating ev_global_gesture_rotate_end vk_nokey vk_anykey vk_enter vk_return vk_shift vk_control vk_alt vk_escape vk_space vk_backspace vk_tab vk_pause vk_printscreen vk_left vk_right vk_up vk_down vk_home vk_end vk_delete vk_insert vk_pageup vk_pagedown vk_f1 vk_f2 vk_f3 vk_f4 vk_f5 vk_f6 vk_f7 vk_f8 vk_f9 vk_f10 vk_f11 vk_f12 vk_numpad0 vk_numpad1 vk_numpad2 vk_numpad3 vk_numpad4 vk_numpad5 vk_numpad6 vk_numpad7 vk_numpad8 vk_numpad9 vk_divide vk_multiply vk_subtract vk_add vk_decimal vk_lshift vk_lcontrol vk_lalt vk_rshift vk_rcontrol vk_ralt  mb_any mb_none mb_left mb_right mb_middle c_aqua c_black c_blue c_dkgray c_fuchsia c_gray c_green c_lime c_ltgray c_maroon c_navy c_olive c_purple c_red c_silver c_teal c_white c_yellow c_orange fa_left fa_center fa_right fa_top fa_middle fa_bottom pr_pointlist pr_linelist pr_linestrip pr_trianglelist pr_trianglestrip pr_trianglefan bm_complex bm_normal bm_add bm_max bm_subtract bm_zero bm_one bm_src_colour bm_inv_src_colour bm_src_color bm_inv_src_color bm_src_alpha bm_inv_src_alpha bm_dest_alpha bm_inv_dest_alpha bm_dest_colour bm_inv_dest_colour bm_dest_color bm_inv_dest_color bm_src_alpha_sat tf_point tf_linear tf_anisotropic mip_off mip_on mip_markedonly audio_falloff_none audio_falloff_inverse_distance audio_falloff_inverse_distance_clamped audio_falloff_linear_distance audio_falloff_linear_distance_clamped audio_falloff_exponent_distance audio_falloff_exponent_distance_clamped audio_old_system audio_new_system audio_mono audio_stereo audio_3d cr_default cr_none cr_arrow cr_cross cr_beam cr_size_nesw cr_size_ns cr_size_nwse cr_size_we cr_uparrow cr_hourglass cr_drag cr_appstart cr_handpoint cr_size_all spritespeed_framespersecond spritespeed_framespergameframe asset_object asset_unknown asset_sprite asset_sound asset_room asset_path asset_script asset_font asset_timeline asset_tiles asset_shader fa_readonly fa_hidden fa_sysfile fa_volumeid fa_directory fa_archive  ds_type_map ds_type_list ds_type_stack ds_type_queue ds_type_grid ds_type_priority ef_explosion ef_ring ef_ellipse ef_firework ef_smoke ef_smokeup ef_star ef_spark ef_flare ef_cloud ef_rain ef_snow pt_shape_pixel pt_shape_disk pt_shape_square pt_shape_line pt_shape_star pt_shape_circle pt_shape_ring pt_shape_sphere pt_shape_flare pt_shape_spark pt_shape_explosion pt_shape_cloud pt_shape_smoke pt_shape_snow ps_distr_linear ps_distr_gaussian ps_distr_invgaussian ps_shape_rectangle ps_shape_ellipse ps_shape_diamond ps_shape_line ty_real ty_string dll_cdecl dll_stdcall matrix_view matrix_projection matrix_world os_win32 os_windows os_macosx os_ios os_android os_symbian os_linux os_unknown os_winphone os_tizen os_win8native os_wiiu os_3ds  os_psvita os_bb10 os_ps4 os_xboxone os_ps3 os_xbox360 os_uwp os_tvos os_switch browser_not_a_browser browser_unknown browser_ie browser_firefox browser_chrome browser_safari browser_safari_mobile browser_opera browser_tizen browser_edge browser_windows_store browser_ie_mobile  device_ios_unknown device_ios_iphone device_ios_iphone_retina device_ios_ipad device_ios_ipad_retina device_ios_iphone5 device_ios_iphone6 device_ios_iphone6plus device_emulator device_tablet display_landscape display_landscape_flipped display_portrait display_portrait_flipped tm_sleep tm_countvsyncs of_challenge_win of_challen ge_lose of_challenge_tie leaderboard_type_number leaderboard_type_time_mins_secs cmpfunc_never cmpfunc_less cmpfunc_equal cmpfunc_lessequal cmpfunc_greater cmpfunc_notequal cmpfunc_greaterequal cmpfunc_always cull_noculling cull_clockwise cull_counterclockwise lighttype_dir lighttype_point iap_ev_storeload iap_ev_product iap_ev_purchase iap_ev_consume iap_ev_restore iap_storeload_ok iap_storeload_failed iap_status_uninitialised iap_status_unavailable iap_status_loading iap_status_available iap_status_processing iap_status_restoring iap_failed iap_unavailable iap_available iap_purchased iap_canceled iap_refunded fb_login_default fb_login_fallback_to_webview fb_login_no_fallback_to_webview fb_login_forcing_webview fb_login_use_system_account fb_login_forcing_safari  phy_joint_anchor_1_x phy_joint_anchor_1_y phy_joint_anchor_2_x phy_joint_anchor_2_y phy_joint_reaction_force_x phy_joint_reaction_force_y phy_joint_reaction_torque phy_joint_motor_speed phy_joint_angle phy_joint_motor_torque phy_joint_max_motor_torque phy_joint_translation phy_joint_speed phy_joint_motor_force phy_joint_max_motor_force phy_joint_length_1 phy_joint_length_2 phy_joint_damping_ratio phy_joint_frequency phy_joint_lower_angle_limit phy_joint_upper_angle_limit phy_joint_angle_limits phy_joint_max_length phy_joint_max_torque phy_joint_max_force phy_debug_render_aabb phy_debug_render_collision_pairs phy_debug_render_coms phy_debug_render_core_shapes phy_debug_render_joints phy_debug_render_obb phy_debug_render_shapes  phy_particle_flag_water phy_particle_flag_zombie phy_particle_flag_wall phy_particle_flag_spring phy_particle_flag_elastic phy_particle_flag_viscous phy_particle_flag_powder phy_particle_flag_tensile phy_particle_flag_colourmixing phy_particle_flag_colormixing phy_particle_group_flag_solid phy_particle_group_flag_rigid phy_particle_data_flag_typeflags phy_particle_data_flag_position phy_particle_data_flag_velocity phy_particle_data_flag_colour phy_particle_data_flag_color phy_particle_data_flag_category  achievement_our_info achievement_friends_info achievement_leaderboard_info achievement_achievement_info achievement_filter_all_players achievement_filter_friends_only achievement_filter_favorites_only achievement_type_achievement_challenge achievement_type_score_challenge achievement_pic_loaded  achievement_show_ui achievement_show_profile achievement_show_leaderboard achievement_show_achievement achievement_show_bank achievement_show_friend_picker achievement_show_purchase_prompt network_socket_tcp network_socket_udp network_socket_bluetooth network_type_connect network_type_disconnect network_type_data network_type_non_blocking_connect network_config_connect_timeout network_config_use_non_blocking_socket network_config_enable_reliable_udp network_config_disable_reliable_udp buffer_fixed buffer_grow buffer_wrap buffer_fast buffer_vbuffer buffer_network buffer_u8 buffer_s8 buffer_u16 buffer_s16 buffer_u32 buffer_s32 buffer_u64 buffer_f16 buffer_f32 buffer_f64 buffer_bool buffer_text buffer_string buffer_surface_copy buffer_seek_start buffer_seek_relative buffer_seek_end buffer_generalerror buffer_outofspace buffer_outofbounds buffer_invalidtype  text_type button_type input_type ANSI_CHARSET DEFAULT_CHARSET EASTEUROPE_CHARSET RUSSIAN_CHARSET SYMBOL_CHARSET SHIFTJIS_CHARSET HANGEUL_CHARSET GB2312_CHARSET CHINESEBIG5_CHARSET JOHAB_CHARSET HEBREW_CHARSET ARABIC_CHARSET GREEK_CHARSET TURKISH_CHARSET VIETNAMESE_CHARSET THAI_CHARSET MAC_CHARSET BALTIC_CHARSET OEM_CHARSET  gp_face1 gp_face2 gp_face3 gp_face4 gp_shoulderl gp_shoulderr gp_shoulderlb gp_shoulderrb gp_select gp_start gp_stickl gp_stickr gp_padu gp_padd gp_padl gp_padr gp_axislh gp_axislv gp_axisrh gp_axisrv ov_friends ov_community ov_players ov_settings ov_gamegroup ov_achievements lb_sort_none lb_sort_ascending lb_sort_descending lb_disp_none lb_disp_numeric lb_disp_time_sec lb_disp_time_ms ugc_result_success ugc_filetype_community ugc_filetype_microtrans ugc_visibility_public ugc_visibility_friends_only ugc_visibility_private ugc_query_RankedByVote ugc_query_RankedByPublicationDate ugc_query_AcceptedForGameRankedByAcceptanceDate ugc_query_RankedByTrend ugc_query_FavoritedByFriendsRankedByPublicationDate ugc_query_CreatedByFriendsRankedByPublicationDate ugc_query_RankedByNumTimesReported ugc_query_CreatedByFollowedUsersRankedByPublicationDate ugc_query_NotYetRated ugc_query_RankedByTotalVotesAsc ugc_query_RankedByVotesUp ugc_query_RankedByTextSearch ugc_sortorder_CreationOrderDesc ugc_sortorder_CreationOrderAsc ugc_sortorder_TitleAsc ugc_sortorder_LastUpdatedDesc ugc_sortorder_SubscriptionDateDesc ugc_sortorder_VoteScoreDesc ugc_sortorder_ForModeration ugc_list_Published ugc_list_VotedOn ugc_list_VotedUp ugc_list_VotedDown ugc_list_WillVoteLater ugc_list_Favorited ugc_list_Subscribed ugc_list_UsedOrPlayed ugc_list_Followed ugc_match_Items ugc_match_Items_Mtx ugc_match_Items_ReadyToUse ugc_match_Collections ugc_match_Artwork ugc_match_Videos ugc_match_Screenshots ugc_match_AllGuides ugc_match_WebGuides ugc_match_IntegratedGuides ugc_match_UsableInGame ugc_match_ControllerBindings  vertex_usage_position vertex_usage_colour vertex_usage_color vertex_usage_normal vertex_usage_texcoord vertex_usage_textcoord vertex_usage_blendweight vertex_usage_blendindices vertex_usage_psize vertex_usage_tangent vertex_usage_binormal vertex_usage_fog vertex_usage_depth vertex_usage_sample vertex_type_float1 vertex_type_float2 vertex_type_float3 vertex_type_float4 vertex_type_colour vertex_type_color vertex_type_ubyte4 layerelementtype_undefined layerelementtype_background layerelementtype_instance layerelementtype_oldtilemap layerelementtype_sprite layerelementtype_tilemap layerelementtype_particlesystem layerelementtype_tile tile_rotate tile_flip tile_mirror tile_index_mask kbv_type_default kbv_type_ascii kbv_type_url kbv_type_email kbv_type_numbers kbv_type_phone kbv_type_phone_name kbv_returnkey_default kbv_returnkey_go kbv_returnkey_google kbv_returnkey_join kbv_returnkey_next kbv_returnkey_route kbv_returnkey_search kbv_returnkey_send kbv_returnkey_yahoo kbv_returnkey_done kbv_returnkey_continue kbv_returnkey_emergency kbv_autocapitalize_none kbv_autocapitalize_words kbv_autocapitalize_sentences kbv_autocapitalize_characters\",\n        \"symbol\": \"argument_relative argument argument0 argument1 argument2 argument3 argument4 argument5 argument6 argument7 argument8 argument9 argument10 argument11 argument12 argument13 argument14 argument15 argument_count x y xprevious yprevious xstart ystart hspeed vspeed direction speed friction gravity gravity_direction path_index path_position path_positionprevious path_speed path_scale path_orientation path_endaction object_index id solid persistent mask_index instance_count instance_id room_speed fps fps_real current_time current_year current_month current_day current_weekday current_hour current_minute current_second alarm timeline_index timeline_position timeline_speed timeline_running timeline_loop room room_first room_last room_width room_height room_caption room_persistent score lives health show_score show_lives show_health caption_score caption_lives caption_health event_type event_number event_object event_action application_surface gamemaker_pro gamemaker_registered gamemaker_version error_occurred error_last debug_mode keyboard_key keyboard_lastkey keyboard_lastchar keyboard_string mouse_x mouse_y mouse_button mouse_lastbutton cursor_sprite visible sprite_index sprite_width sprite_height sprite_xoffset sprite_yoffset image_number image_index image_speed depth image_xscale image_yscale image_angle image_alpha image_blend bbox_left bbox_right bbox_top bbox_bottom layer background_colour  background_showcolour background_color background_showcolor view_enabled view_current view_visible view_xview view_yview view_wview view_hview view_xport view_yport view_wport view_hport view_angle view_hborder view_vborder view_hspeed view_vspeed view_object view_surface_id view_camera game_id game_display_name game_project_name game_save_id working_directory temp_directory program_directory browser_width browser_height os_type os_device os_browser os_version display_aa async_load delta_time webgl_enabled event_data iap_data phy_rotation phy_position_x phy_position_y phy_angular_velocity phy_linear_velocity_x phy_linear_velocity_y phy_speed_x phy_speed_y phy_speed phy_angular_damping phy_linear_damping phy_bullet phy_fixed_rotation phy_active phy_mass phy_inertia phy_com_x phy_com_y phy_dynamic phy_kinematic phy_sleeping phy_collision_points phy_collision_x phy_collision_y phy_col_normal_x phy_col_normal_y phy_position_xprevious phy_position_yprevious\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/go.json",
    "content": "{\n    \"aliases\": [\n        \"golang\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune\",\n        \"literal\": \"true false iota nil\",\n        \"built_in\": \"append cap close complex copy imag len make new panic print println real recover delete\"\n    },\n    \"illegal\": \"<\\/\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2.variants.0.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"`\",\n                    \"end\": \"`\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"variants\": [\n                {\n                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)[i]\",\n                    \"relevance\": 1\n                },\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"begin\": \":=\"\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"func\",\n            \"end\": \"\\\\s*(\\\\{|$)\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"illegal\": \"[\\\"']\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/golo.json",
    "content": "{\n    \"keywords\": {\n        \"keyword\": \"println readln print import module function local return let var while for foreach times in case when match with break continue augment augmentation each find filter reduce if then else otherwise try catch finally raise throw orIfNull DynamicObject|10 DynamicVariable struct Observable map set vector list array\",\n        \"literal\": \"true false null\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"@[A-Za-z]+\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/gradle.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"keywords\": {\n        \"keyword\": \"task project allprojects subprojects artifacts buildscript configurations dependencies repositories sourceSets description delete from into include exclude source classpath destinationDir includes options sourceCompatibility targetCompatibility group flatDir doLast doFirst flatten todir fromdir ant def abstract break case catch continue default do else extends final finally for if implements instanceof native new private protected public return static switch synchronized throw throws transient try volatile while strictfp package import false null super this true antlrtask checkstyle codenarc copy boolean byte char class double float int interface long short void compile runTime file fileTree abs any append asList asWritable call collect compareTo count div dump each eachByte eachFile eachLine every find findAll flatten getAt getErr getIn getOut getText grep immutable inject inspect intersect invokeMethods isCase join leftShift minus multiply newInputStream newOutputStream newPrintWriter newReader newWriter next plus pop power previous print println push putAt read readBytes readLines reverse reverseEach round size sort splitEachLine step subMap times toInteger toList tokenize upto waitForOrKill withPrintWriter withReader withStream withWriter withWriterAppend write writeLine\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"regexp\",\n            \"begin\": \"\\\\\\/\",\n            \"end\": \"\\\\\\/[gimuy]*\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                },\n                {\n                    \"begin\": \"\\\\[\",\n                    \"end\": \"\\\\]\",\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2.contains.0\"\n                        }\n                    ]\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/groovy.json",
    "content": "{\n    \"keywords\": {\n        \"literal\": \"true false null\",\n        \"keyword\": \"byte short char int long boolean float double void def as in assert trait super this abstract static volatile transient public private protected synchronized final class interface enum if else for while switch case break default continue throw throws try catch finally implements extends new import package return instanceof\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\w+@\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"@[A-Za-z]+\"\n                },\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.2\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.2\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\\\"\\\"\",\n            \"end\": \"\\\"\\\"\\\"\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'''\",\n            \"end\": \"'''\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\\$\\/\",\n            \"end\": \"\\/\\\\$\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"regexp\",\n            \"begin\": \"~?\\\\\\/[^\\\\\\/\\\\n]+\\\\\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^#!\\/usr\\/bin\\/env\",\n            \"end\": \"$\",\n            \"illegal\": \"\\n\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b(0b[01]+)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class interface trait enum\",\n            \"end\": \"{\",\n            \"illegal\": \":\",\n            \"contains\": [\n                {\n                    \"beginKeywords\": \"extends implements\"\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"@[A-Za-z]+\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"[^\\\\?]{0}[A-Za-z0-9_$]+ *:\"\n        },\n        {\n            \"begin\": \"\\\\?\",\n            \"end\": \"\\\\:\"\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"^\\\\s*[A-Za-z0-9_$]+:\",\n            \"relevance\": 0\n        }\n    ],\n    \"illegal\": \"#|<\\\\\\/\"\n}\n"
  },
  {
    "path": "includes/Highlight/languages/haml.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^!!!( (5|1\\\\.1|Strict|Frameset|Basic|Mobile|RDFa|XML\\\\b.*))?$\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"^\\\\s*(!=#|=#|-#|\\/).*$\",\n            \"end\": false,\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"^\\\\s*(-|=|!=)(?!#)\",\n            \"starts\": {\n                \"end\": \"\\\\n\",\n                \"subLanguage\": \"ruby\"\n            }\n        },\n        {\n            \"className\": \"tag\",\n            \"begin\": \"^\\\\s*%\",\n            \"contains\": [\n                {\n                    \"className\": \"selector-tag\",\n                    \"begin\": \"\\\\w+\"\n                },\n                {\n                    \"className\": \"selector-id\",\n                    \"begin\": \"#[\\\\w\\\\-]+\"\n                },\n                {\n                    \"className\": \"selector-class\",\n                    \"begin\": \"\\\\.[\\\\w\\\\-]+\"\n                },\n                {\n                    \"begin\": \"{\\\\s*\",\n                    \"end\": \"\\\\s*}\",\n                    \"contains\": [\n                        {\n                            \"begin\": \":\\\\w+\\\\s*=>\",\n                            \"end\": \",\\\\s+\",\n                            \"returnBegin\": true,\n                            \"endsWithParent\": true,\n                            \"contains\": [\n                                {\n                                    \"className\": \"attr\",\n                                    \"begin\": \":\\\\w+\"\n                                },\n                                {\n                                    \"className\": \"string\",\n                                    \"begin\": \"'\",\n                                    \"end\": \"'\",\n                                    \"illegal\": \"\\\\n\",\n                                    \"contains\": [\n                                        {\n                                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                            \"relevance\": 0\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"className\": \"string\",\n                                    \"begin\": \"\\\"\",\n                                    \"end\": \"\\\"\",\n                                    \"illegal\": \"\\\\n\",\n                                    \"contains\": [\n                                        {\n                                            \"$ref\": \"#contains.3.contains.3.contains.0.contains.1.contains.0\"\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"begin\": \"\\\\w+\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\\(\\\\s*\",\n                    \"end\": \"\\\\s*\\\\)\",\n                    \"excludeEnd\": true,\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\w+\\\\s*=\",\n                            \"end\": \"\\\\s+\",\n                            \"returnBegin\": true,\n                            \"endsWithParent\": true,\n                            \"contains\": [\n                                {\n                                    \"className\": \"attr\",\n                                    \"begin\": \"\\\\w+\",\n                                    \"relevance\": 0\n                                },\n                                {\n                                    \"$ref\": \"#contains.3.contains.3.contains.0.contains.1\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.3.contains.3.contains.0.contains.2\"\n                                },\n                                {\n                                    \"begin\": \"\\\\w+\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"begin\": \"^\\\\s*[=~]\\\\s*\"\n        },\n        {\n            \"begin\": \"#{\",\n            \"starts\": {\n                \"end\": \"}\",\n                \"subLanguage\": \"ruby\"\n            }\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/handlebars.json",
    "content": "{\n    \"aliases\": [\n        \"hbs\",\n        \"html.hbs\",\n        \"html.handlebars\"\n    ],\n    \"case_insensitive\": true,\n    \"subLanguage\": \"xml\",\n    \"contains\": [\n        {\n            \"begin\": \"\\\\\\\\\\\\{\\\\{\",\n            \"skip\": true\n        },\n        {\n            \"begin\": \"\\\\\\\\\\\\\\\\(?=\\\\{\\\\{)\",\n            \"skip\": true\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\{\\\\{!--\",\n            \"end\": \"--\\\\}\\\\}\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\{\\\\{!\",\n            \"end\": \"\\\\}\\\\}\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"template-tag\",\n            \"begin\": \"\\\\{\\\\{\\\\{\\\\{(?!\\\\\\/)\",\n            \"end\": \"\\\\}\\\\}\\\\}\\\\}\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\".*?\\\"|'.*?'|\\\\[.*?\\\\]|\\\\w+\",\n                    \"keywords\": {\n                        \"builtin-name\": \"each in with if else unless bindattr action collection debugger log outlet template unbound view yield lookup\"\n                    },\n                    \"starts\": {\n                        \"endsWithParent\": true,\n                        \"relevance\": 0,\n                        \"contains\": [\n                            {\n                                \"begin\": \"\\\".*?\\\"|'.*?'|\\\\[.*?\\\\]|\\\\w+\",\n                                \"relevance\": 0\n                            }\n                        ]\n                    },\n                    \"className\": \"name\"\n                }\n            ],\n            \"starts\": {\n                \"end\": \"\\\\{\\\\{\\\\{\\\\{\\\\\\/\",\n                \"returnEnd\": true,\n                \"subLanguage\": \"xml\"\n            }\n        },\n        {\n            \"className\": \"template-tag\",\n            \"begin\": \"\\\\{\\\\{\\\\{\\\\{\\\\\\/\",\n            \"end\": \"\\\\}\\\\}\\\\}\\\\}\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.4.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"template-tag\",\n            \"begin\": \"\\\\{\\\\{[#\\\\\\/]\",\n            \"end\": \"\\\\}\\\\}\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.4.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"template-variable\",\n            \"begin\": \"\\\\{\\\\{\\\\{\",\n            \"end\": \"\\\\}\\\\}\\\\}\",\n            \"keywords\": {\n                \"$ref\": \"#contains.4.contains.0.keywords\"\n            },\n            \"contains\": [\n                {\n                    \"begin\": \"\\\".*?\\\"|'.*?'|\\\\[.*?\\\\]|\\\\w+\",\n                    \"keywords\": {\n                        \"$ref\": \"#contains.4.contains.0.keywords\"\n                    },\n                    \"starts\": {\n                        \"$ref\": \"#contains.4.contains.0.starts\"\n                    },\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"template-variable\",\n            \"begin\": \"\\\\{\\\\{\",\n            \"end\": \"\\\\}\\\\}\",\n            \"keywords\": {\n                \"$ref\": \"#contains.4.contains.0.keywords\"\n            },\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.7.contains.0\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/haskell.json",
    "content": "{\n    \"aliases\": [\n        \"hs\"\n    ],\n    \"keywords\": \"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec\",\n    \"contains\": [\n        {\n            \"beginKeywords\": \"module\",\n            \"end\": \"where\",\n            \"keywords\": \"module where\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"illegal\": \"\\\"\",\n                    \"contains\": [\n                        {\n                            \"className\": \"meta\",\n                            \"begin\": \"{-#\",\n                            \"end\": \"#-}\"\n                        },\n                        {\n                            \"className\": \"meta\",\n                            \"begin\": \"^#\",\n                            \"end\": \"$\"\n                        },\n                        {\n                            \"className\": \"type\",\n                            \"begin\": \"\\\\b[A-Z][\\\\w]*(\\\\((\\\\.\\\\.|,|\\\\w+)\\\\))?\"\n                        },\n                        {\n                            \"className\": \"title\",\n                            \"begin\": \"[_a-z][\\\\w']*\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"variants\": [\n                                {\n                                    \"className\": \"comment\",\n                                    \"begin\": \"--\",\n                                    \"end\": \"$\",\n                                    \"contains\": [\n                                        {\n                                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                                        },\n                                        {\n                                            \"className\": \"doctag\",\n                                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                            \"relevance\": 0\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"className\": \"comment\",\n                                    \"begin\": \"{-\",\n                                    \"end\": \"-}\",\n                                    \"contains\": [\n                                        \"self\",\n                                        {\n                                            \"$ref\": \"#contains.0.contains.0.contains.4.variants.0.contains.0\"\n                                        },\n                                        {\n                                            \"className\": \"doctag\",\n                                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                            \"relevance\": 0\n                                        }\n                                    ]\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0.contains.4\"\n                }\n            ],\n            \"illegal\": \"\\\\W\\\\.|;\"\n        },\n        {\n            \"begin\": \"\\\\bimport\\\\b\",\n            \"end\": \"$\",\n            \"keywords\": \"import qualified as hiding\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0.contains.4\"\n                }\n            ],\n            \"illegal\": \"\\\\W\\\\.|;\"\n        },\n        {\n            \"className\": \"class\",\n            \"begin\": \"^(\\\\s*)?(class|instance)\\\\b\",\n            \"end\": \"where\",\n            \"keywords\": \"class family instance where\",\n            \"contains\": [\n                {\n                    \"className\": \"type\",\n                    \"begin\": \"\\\\b[A-Z][\\\\w']*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0.contains.4\"\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"begin\": \"\\\\b(data|(new)?type)\\\\b\",\n            \"end\": \"$\",\n            \"keywords\": \"data family type newtype deriving\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0.contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"begin\": \"{\",\n                    \"end\": \"}\",\n                    \"contains\": {\n                        \"$ref\": \"#contains.0.contains.0.contains\"\n                    }\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0.contains.4\"\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"default\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0.contains.4\"\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"infix infixl infixr\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                    \"relevance\": 0\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0.contains.4\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"\\\\bforeign\\\\b\",\n            \"end\": \"$\",\n            \"keywords\": \"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0.contains.4\"\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"#!\\\\\\/usr\\\\\\/bin\\\\\\/env runhaskell\",\n            \"end\": \"$\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.0\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.1\"\n        },\n        {\n            \"$ref\": \"#contains.6.contains.1\"\n        },\n        {\n            \"$ref\": \"#contains.5.contains.0\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.0\"\n        },\n        {\n            \"className\": \"title\",\n            \"begin\": \"^[_a-z][\\\\w']*\",\n            \"relevance\": 0\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.4\"\n        },\n        {\n            \"begin\": \"->|<-\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/haxe.json",
    "content": "{\n    \"aliases\": [\n        \"hx\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"break case cast catch continue default do dynamic else enum extern for function here if import in inline never new override package private get set public return static super switch this throw trace try typedef untyped using var while Int Float String Bool Dynamic Void Array \",\n        \"built_in\": \"trace this\",\n        \"literal\": \"true false null _\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"subst\",\n                    \"begin\": \"\\\\$\\\\{\",\n                    \"end\": \"\\\\}\"\n                },\n                {\n                    \"className\": \"subst\",\n                    \"begin\": \"\\\\$\",\n                    \"end\": \"\\\\W}\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"@:\",\n            \"end\": \"$\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"keywords\": {\n                \"meta-keyword\": \"if else elseif end error\"\n            }\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \":[ \\t]*\",\n            \"end\": \"[^A-Za-z0-9_ \\t\\\\->]\",\n            \"excludeBegin\": true,\n            \"excludeEnd\": true,\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \":[ \\t]*\",\n            \"end\": \"\\\\W\",\n            \"excludeBegin\": true,\n            \"excludeEnd\": true\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \"new *\",\n            \"end\": \"\\\\W\",\n            \"excludeBegin\": true,\n            \"excludeEnd\": true\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"enum\",\n            \"end\": \"\\\\{\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"abstract\",\n            \"end\": \"[\\\\{$]\",\n            \"contains\": [\n                {\n                    \"className\": \"type\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true\n                },\n                {\n                    \"className\": \"type\",\n                    \"begin\": \"from +\",\n                    \"end\": \"\\\\W\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true\n                },\n                {\n                    \"className\": \"type\",\n                    \"begin\": \"to +\",\n                    \"end\": \"\\\\W\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true\n                },\n                {\n                    \"$ref\": \"#contains.10.contains.0\"\n                }\n            ],\n            \"keywords\": {\n                \"keyword\": \"abstract from to\"\n            }\n        },\n        {\n            \"className\": \"class\",\n            \"begin\": \"\\\\b(class|interface) +\",\n            \"end\": \"[\\\\{$]\",\n            \"excludeEnd\": true,\n            \"keywords\": \"class interface\",\n            \"contains\": [\n                {\n                    \"className\": \"keyword\",\n                    \"begin\": \"\\\\b(extends|implements) +\",\n                    \"keywords\": \"extends implements\",\n                    \"contains\": [\n                        {\n                            \"className\": \"type\",\n                            \"begin\": \"[a-zA-Z]\\\\w*\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.10.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"function\",\n            \"end\": \"\\\\(\",\n            \"excludeEnd\": true,\n            \"illegal\": \"\\\\S\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.10.contains.0\"\n                }\n            ]\n        }\n    ],\n    \"illegal\": \"<\\\\\\/\"\n}\n"
  },
  {
    "path": "includes/Highlight/languages/hsp.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"lexemes\": \"[\\\\w\\\\._]+\",\n    \"keywords\": \"goto gosub return break repeat loop continue wait await dim sdim foreach dimtype dup dupptr end stop newmod delmod mref run exgoto on mcall assert logmes newlab resume yield onexit onerror onkey onclick oncmd exist delete mkdir chdir dirlist bload bsave bcopy memfile if else poke wpoke lpoke getstr chdpm memexpand memcpy memset notesel noteadd notedel noteload notesave randomize noteunsel noteget split strrep setease button chgdisp exec dialog mmload mmplay mmstop mci pset pget syscolor mes print title pos circle cls font sysfont objsize picload color palcolor palette redraw width gsel gcopy gzoom gmode bmpsave hsvcolor getkey listbox chkbox combox input mesbox buffer screen bgscr mouse objsel groll line clrobj boxf objprm objmode stick grect grotate gsquare gradf objimage objskip objenable celload celdiv celput newcom querycom delcom cnvstow comres axobj winobj sendmsg comevent comevarg sarrayconv callfunc cnvwtos comevdisp libptr system hspstat hspver stat cnt err strsize looplev sublev iparam wparam lparam refstr refdval int rnd strlen length length2 length3 length4 vartype gettime peek wpeek lpeek varptr varuse noteinfo instr abs limit getease str strmid strf getpath strtrim sin cos tan atan sqrt double absf expf logf limitf powf geteasef mousex mousey mousew hwnd hinstance hdc ginfo objinfo dirinfo sysinfo thismod __hspver__ __hsp30__ __date__ __time__ __line__ __file__ _debug __hspdef__ and or xor not screen_normal screen_palette screen_hide screen_fixedsize screen_tool screen_frame gmode_gdi gmode_mem gmode_rgb0 gmode_alpha gmode_rgb0alpha gmode_add gmode_sub gmode_pixela ginfo_mx ginfo_my ginfo_act ginfo_sel ginfo_wx1 ginfo_wy1 ginfo_wx2 ginfo_wy2 ginfo_vx ginfo_vy ginfo_sizex ginfo_sizey ginfo_winx ginfo_winy ginfo_mesx ginfo_mesy ginfo_r ginfo_g ginfo_b ginfo_paluse ginfo_dispx ginfo_dispy ginfo_cx ginfo_cy ginfo_intid ginfo_newid ginfo_sx ginfo_sy objinfo_mode objinfo_bmscr objinfo_hwnd notemax notesize dir_cur dir_exe dir_win dir_sys dir_cmdline dir_desktop dir_mydoc dir_tv font_normal font_bold font_italic font_underline font_strikeout font_antialias objmode_normal objmode_guifont objmode_usefont gsquare_grad msgothic msmincho do until while wend for next _break _continue switch case default swbreak swend ddim ldim alloc m_pi rad2deg deg2rad ease_linear ease_quad_in ease_quad_out ease_quad_inout ease_cubic_in ease_cubic_out ease_cubic_inout ease_quartic_in ease_quartic_out ease_quartic_inout ease_bounce_in ease_bounce_out ease_bounce_inout ease_shake_in ease_shake_out ease_shake_inout ease_loop\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"{\\\"\",\n            \"end\": \"\\\"}\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \";\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"keywords\": {\n                \"meta-keyword\": \"addion cfunc cmd cmpopt comfunc const defcfunc deffunc define else endif enum epack func global if ifdef ifndef include modcfunc modfunc modinit modterm module pack packopt regcmd runtime undef usecom uselib\"\n            },\n            \"contains\": [\n                {\n                    \"className\": \"meta-string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": {\n                        \"$ref\": \"#contains.2.contains\"\n                    }\n                },\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                    \"relevance\": 0\n                },\n                {\n                    \"$ref\": \"#contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.1\"\n                }\n            ]\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"^\\\\*(\\\\w+|@)\"\n        },\n        {\n            \"$ref\": \"#contains.6.contains.1\"\n        },\n        {\n            \"$ref\": \"#contains.6.contains.2\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/htmlbars.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"subLanguage\": \"xml\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"{{!(--)?\",\n            \"end\": \"(--)?}}\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"template-tag\",\n            \"begin\": \"\\\\{\\\\{[#\\\\\\/]\",\n            \"end\": \"\\\\}\\\\}\",\n            \"contains\": [\n                {\n                    \"className\": \"name\",\n                    \"begin\": \"[a-zA-Z\\\\.\\\\-]+\",\n                    \"keywords\": {\n                        \"builtin-name\": \"action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view\"\n                    },\n                    \"starts\": {\n                        \"endsWithParent\": true,\n                        \"relevance\": 0,\n                        \"keywords\": {\n                            \"keyword\": \"as\",\n                            \"built_in\": \"action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view\"\n                        },\n                        \"contains\": [\n                            {\n                                \"className\": \"string\",\n                                \"begin\": \"\\\"\",\n                                \"end\": \"\\\"\",\n                                \"illegal\": \"\\\\n\",\n                                \"contains\": [\n                                    {\n                                        \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                        \"relevance\": 0\n                                    }\n                                ]\n                            },\n                            {\n                                \"illegal\": \"\\\\}\\\\}\",\n                                \"begin\": \"[a-zA-Z0-9_]+=\",\n                                \"returnBegin\": true,\n                                \"relevance\": 0,\n                                \"contains\": [\n                                    {\n                                        \"className\": \"attr\",\n                                        \"begin\": \"[a-zA-Z0-9_]+\"\n                                    }\n                                ]\n                            },\n                            {\n                                \"className\": \"number\",\n                                \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n                                \"relevance\": 0\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        {\n            \"className\": \"template-variable\",\n            \"begin\": \"\\\\{\\\\{[a-zA-Z][a-zA-Z\\\\-]+\",\n            \"end\": \"\\\\}\\\\}\",\n            \"keywords\": {\n                \"keyword\": \"as\",\n                \"built_in\": \"action collection component concat debugger each each-in else get hash if input link-to loc log mut outlet partial query-params render textarea unbound unless with yield view\"\n            },\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0.starts.contains.0\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/http.json",
    "content": "{\n    \"aliases\": [\n        \"https\"\n    ],\n    \"illegal\": \"\\\\S\",\n    \"contains\": [\n        {\n            \"begin\": \"^HTTP\\/[0-9\\\\.]+\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"\\\\b\\\\d{3}\\\\b\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"^[A-Z]+ (.*?) HTTP\\/[0-9\\\\.]+$\",\n            \"returnBegin\": true,\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"className\": \"string\",\n                    \"begin\": \" \",\n                    \"end\": \" \",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true\n                },\n                {\n                    \"begin\": \"HTTP\\/[0-9\\\\.]+\"\n                },\n                {\n                    \"className\": \"keyword\",\n                    \"begin\": \"[A-Z]+\"\n                }\n            ]\n        },\n        {\n            \"className\": \"attribute\",\n            \"begin\": \"^\\\\w\",\n            \"end\": \": \",\n            \"excludeEnd\": true,\n            \"illegal\": \"\\\\n|\\\\s|=\",\n            \"starts\": {\n                \"end\": \"$\",\n                \"relevance\": 0\n            }\n        },\n        {\n            \"begin\": \"\\\\n\\\\n\",\n            \"starts\": {\n                \"subLanguage\": [],\n                \"endsWithParent\": true\n            }\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/hy.json",
    "content": "{\n    \"aliases\": [\n        \"hylang\"\n    ],\n    \"illegal\": \"\\\\S\",\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^#!\",\n            \"end\": \"$\"\n        },\n        {\n            \"begin\": \"\\\\(\",\n            \"end\": \"\\\\)\",\n            \"contains\": [\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"comment\",\n                    \"end\": \"\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"keywords\": {\n                        \"builtin-name\": \"!= % %= & &= * ** **= *= *map + += , --build-class-- --import-- -= . \\/ \\/\\/ \\/\\/= \\/= < << <<= <= = > >= >> >>= @ @= ^ ^= abs accumulate all and any ap-compose ap-dotimes ap-each ap-each-while ap-filter ap-first ap-if ap-last ap-map ap-map-when ap-pipe ap-reduce ap-reject apply as-> ascii assert assoc bin break butlast callable calling-module-name car case cdr chain chr coll? combinations compile compress cond cons cons? continue count curry cut cycle dec def default-method defclass defmacro defmacro-alias defmacro\\/g! defmain defmethod defmulti defn defn-alias defnc defnr defreader defseq del delattr delete-route dict-comp dir disassemble dispatch-reader-macro distinct divmod do doto drop drop-last drop-while empty? end-sequence eval eval-and-compile eval-when-compile even? every? except exec filter first flatten float? fn fnc fnr for for* format fraction genexpr gensym get getattr global globals group-by hasattr hash hex id identity if if* if-not if-python2 import in inc input instance? integer integer-char? integer? interleave interpose is is-coll is-cons is-empty is-even is-every is-float is-instance is-integer is-integer-char is-iterable is-iterator is-keyword is-neg is-none is-not is-numeric is-odd is-pos is-string is-symbol is-zero isinstance islice issubclass iter iterable? iterate iterator? keyword keyword? lambda last len let lif lif-not list* list-comp locals loop macro-error macroexpand macroexpand-1 macroexpand-all map max merge-with method-decorator min multi-decorator multicombinations name neg? next none? nonlocal not not-in not? nth numeric? oct odd? open or ord partition permutations pos? post-route postwalk pow prewalk print product profile\\/calls profile\\/cpu put-route quasiquote quote raise range read read-str recursive-replace reduce remove repeat repeatedly repr require rest round route route-with-methods rwm second seq set-comp setattr setv some sorted string string? sum switch symbol? take take-nth take-while tee try unless unquote unquote-splicing vars walk when while with with* with-decorator with-gensyms xi xor yield yield-from zero? zip zip-longest | |= ~\"\n                    },\n                    \"lexemes\": \"[a-zA-Z_\\\\-!.?+*=<>&#'][a-zA-Z_\\\\-!.?+*=<>&#'0-9\\/;:]*\",\n                    \"className\": \"name\",\n                    \"begin\": \"[a-zA-Z_\\\\-!.?+*=<>&#'][a-zA-Z_\\\\-!.?+*=<>&#'0-9\\/;:]*\",\n                    \"starts\": {\n                        \"endsWithParent\": true,\n                        \"relevance\": 0,\n                        \"contains\": [\n                            {\n                                \"$ref\": \"#contains.1\"\n                            },\n                            {\n                                \"className\": \"string\",\n                                \"begin\": \"\\\"\",\n                                \"end\": \"\\\"\",\n                                \"illegal\": null,\n                                \"contains\": [\n                                    {\n                                        \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                        \"relevance\": 0\n                                    }\n                                ]\n                            },\n                            {\n                                \"className\": \"comment\",\n                                \"begin\": \"\\\\^[a-zA-Z_\\\\-!.?+*=<>&#'][a-zA-Z_\\\\-!.?+*=<>&#'0-9\\/;:]*\"\n                            },\n                            {\n                                \"className\": \"comment\",\n                                \"begin\": \"\\\\^\\\\{\",\n                                \"end\": \"\\\\}\",\n                                \"contains\": [\n                                    {\n                                        \"$ref\": \"#contains.1.contains.0.contains.0\"\n                                    },\n                                    {\n                                        \"className\": \"doctag\",\n                                        \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                        \"relevance\": 0\n                                    }\n                                ]\n                            },\n                            {\n                                \"className\": \"comment\",\n                                \"begin\": \";\",\n                                \"end\": \"$\",\n                                \"contains\": [\n                                    {\n                                        \"$ref\": \"#contains.1.contains.0.contains.0\"\n                                    },\n                                    {\n                                        \"className\": \"doctag\",\n                                        \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                        \"relevance\": 0\n                                    }\n                                ],\n                                \"relevance\": 0\n                            },\n                            {\n                                \"className\": \"symbol\",\n                                \"begin\": \"[:]{1,2}[a-zA-Z_\\\\-!.?+*=<>&#'][a-zA-Z_\\\\-!.?+*=<>&#'0-9\\/;:]*\"\n                            },\n                            {\n                                \"begin\": \"[\\\\[\\\\{]\",\n                                \"end\": \"[\\\\]\\\\}]\",\n                                \"contains\": {\n                                    \"$ref\": \"#contains.1.contains.1.starts.contains\"\n                                }\n                            },\n                            {\n                                \"className\": \"number\",\n                                \"begin\": \"[-+]?\\\\d+(\\\\.\\\\d+)?\",\n                                \"relevance\": 0\n                            },\n                            {\n                                \"className\": \"literal\",\n                                \"begin\": \"\\\\b([Tt]rue|[Ff]alse|nil|None)\\\\b\"\n                            },\n                            {\n                                \"begin\": \"[a-zA-Z_\\\\-!.?+*=<>&#'][a-zA-Z_\\\\-!.?+*=<>&#'0-9\\/;:]*\",\n                                \"relevance\": 0\n                            }\n                        ]\n                    }\n                },\n                {\n                    \"$ref\": \"#contains.1.contains.1.starts\"\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.1.contains.1.starts.contains.1\"\n        },\n        {\n            \"$ref\": \"#contains.1.contains.1.starts.contains.2\"\n        },\n        {\n            \"$ref\": \"#contains.1.contains.1.starts.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.1.contains.1.starts.contains.4\"\n        },\n        {\n            \"$ref\": \"#contains.1.contains.1.starts.contains.5\"\n        },\n        {\n            \"$ref\": \"#contains.1.contains.1.starts.contains.6\"\n        },\n        {\n            \"$ref\": \"#contains.1.contains.1.starts.contains.7\"\n        },\n        {\n            \"$ref\": \"#contains.1.contains.1.starts.contains.8\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/inform7.json",
    "content": "{\n    \"aliases\": [\n        \"i7\"\n    ],\n    \"case_insensitive\": true,\n    \"keywords\": {\n        \"keyword\": \"thing room person man woman animal container supporter backdrop door scenery open closed locked inside gender is are say understand kind of rule\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"className\": \"subst\",\n                    \"begin\": \"\\\\[\",\n                    \"end\": \"\\\\]\"\n                }\n            ]\n        },\n        {\n            \"className\": \"section\",\n            \"begin\": \"^(Volume|Book|Part|Chapter|Section|Table)\\\\b\",\n            \"end\": \"$\"\n        },\n        {\n            \"begin\": \"^(Check|Carry out|Report|Instead of|To|Rule|When|Before|After)\\\\b\",\n            \"end\": \":\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\(This\",\n                    \"end\": \"\\\\)\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\[\",\n            \"end\": \"\\\\]\",\n            \"contains\": [\n                \"self\"\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/ini.json",
    "content": "{\n    \"aliases\": [\n        \"toml\"\n    ],\n    \"case_insensitive\": true,\n    \"illegal\": \"\\\\S\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"variants\": [\n                {\n                    \"begin\": \";\",\n                    \"end\": \"$\"\n                },\n                {\n                    \"begin\": \"#\",\n                    \"end\": \"$\"\n                }\n            ]\n        },\n        {\n            \"className\": \"section\",\n            \"begin\": \"\\\\[+\",\n            \"end\": \"\\\\]+\"\n        },\n        {\n            \"begin\": \"^[a-z0-9\\\\[\\\\]_\\\\.-]+(?=\\\\s*=\\\\s*)\",\n            \"className\": \"attr\",\n            \"starts\": {\n                \"end\": \"$\",\n                \"contains\": [\n                    {\n                        \"$ref\": \"#contains.0\"\n                    },\n                    {\n                        \"begin\": \"\\\\[\",\n                        \"end\": \"\\\\]\",\n                        \"contains\": [\n                            {\n                                \"$ref\": \"#contains.0\"\n                            },\n                            {\n                                \"className\": \"literal\",\n                                \"begin\": \"\\\\bon|off|true|false|yes|no\\\\b\"\n                            },\n                            {\n                                \"className\": \"variable\",\n                                \"variants\": [\n                                    {\n                                        \"begin\": \"\\\\$[\\\\w\\\\d\\\"][\\\\w\\\\d_]*\"\n                                    },\n                                    {\n                                        \"begin\": \"\\\\$\\\\{(.*?)}\"\n                                    }\n                                ]\n                            },\n                            {\n                                \"className\": \"string\",\n                                \"contains\": [\n                                    {\n                                        \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                        \"relevance\": 0\n                                    }\n                                ],\n                                \"variants\": [\n                                    {\n                                        \"begin\": \"'''\",\n                                        \"end\": \"'''\",\n                                        \"relevance\": 10\n                                    },\n                                    {\n                                        \"begin\": \"\\\"\\\"\\\"\",\n                                        \"end\": \"\\\"\\\"\\\"\",\n                                        \"relevance\": 10\n                                    },\n                                    {\n                                        \"begin\": \"\\\"\",\n                                        \"end\": \"\\\"\"\n                                    },\n                                    {\n                                        \"begin\": \"'\",\n                                        \"end\": \"'\"\n                                    }\n                                ]\n                            },\n                            {\n                                \"className\": \"number\",\n                                \"relevance\": 0,\n                                \"variants\": [\n                                    {\n                                        \"begin\": \"([\\\\+\\\\-]+)?[\\\\d]+_[\\\\d_]+\"\n                                    },\n                                    {\n                                        \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\"\n                                    }\n                                ]\n                            },\n                            \"self\"\n                        ],\n                        \"relevance\": 0\n                    },\n                    {\n                        \"$ref\": \"#contains.2.starts.contains.1.contains.1\"\n                    },\n                    {\n                        \"$ref\": \"#contains.2.starts.contains.1.contains.2\"\n                    },\n                    {\n                        \"$ref\": \"#contains.2.starts.contains.1.contains.3\"\n                    },\n                    {\n                        \"$ref\": \"#contains.2.starts.contains.1.contains.4\"\n                    }\n                ]\n            }\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/irpf90.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"keywords\": {\n        \"literal\": \".False. .True.\",\n        \"keyword\": \"kind do while private call intrinsic where elsewhere type endtype endmodule endselect endinterface end enddo endif if forall endforall only contains default return stop then public subroutine|10 function program .and. .or. .not. .le. .eq. .ge. .gt. .lt. goto save else use module select case access blank direct exist file fmt form formatted iostat name named nextrec number opened rec recl sequential status unformatted unit continue format pause cycle exit c_null_char c_alert c_backspace c_form_feed flush wait decimal round iomsg synchronous nopass non_overridable pass protected volatile abstract extends import non_intrinsic value deferred generic final enumerator class associate bind enum c_int c_short c_long c_long_long c_signed_char c_size_t c_int8_t c_int16_t c_int32_t c_int64_t c_int_least8_t c_int_least16_t c_int_least32_t c_int_least64_t c_int_fast8_t c_int_fast16_t c_int_fast32_t c_int_fast64_t c_intmax_t C_intptr_t c_float c_double c_long_double c_float_complex c_double_complex c_long_double_complex c_bool c_char c_null_ptr c_null_funptr c_new_line c_carriage_return c_horizontal_tab c_vertical_tab iso_c_binding c_loc c_funloc c_associated  c_f_pointer c_ptr c_funptr iso_fortran_env character_storage_size error_unit file_storage_size input_unit iostat_end iostat_eor numeric_storage_size output_unit c_f_procpointer ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode newunit contiguous recursive pad position action delim readwrite eor advance nml interface procedure namelist include sequence elemental pure integer real character complex logical dimension allocatable|10 parameter external implicit|10 none double precision assign intent optional pointer target in out common equivalence data begin_provider &begin_provider end_provider begin_shell end_shell begin_template end_template subst assert touch soft_touch provide no_dep free irp_if irp_else irp_endif irp_write irp_read\",\n        \"built_in\": \"alog alog10 amax0 amax1 amin0 amin1 amod cabs ccos cexp clog csin csqrt dabs dacos dasin datan datan2 dcos dcosh ddim dexp dint dlog dlog10 dmax1 dmin1 dmod dnint dsign dsin dsinh dsqrt dtan dtanh float iabs idim idint idnint ifix isign max0 max1 min0 min1 sngl algama cdabs cdcos cdexp cdlog cdsin cdsqrt cqabs cqcos cqexp cqlog cqsin cqsqrt dcmplx dconjg derf derfc dfloat dgamma dimag dlgama iqint qabs qacos qasin qatan qatan2 qcmplx qconjg qcos qcosh qdim qerf qerfc qexp qgamma qimag qlgama qlog qlog10 qmax1 qmin1 qmod qnint qsign qsin qsinh qsqrt qtan qtanh abs acos aimag aint anint asin atan atan2 char cmplx conjg cos cosh exp ichar index int log log10 max min nint sign sin sinh sqrt tan tanh print write dim lge lgt lle llt mod nullify allocate deallocate adjustl adjustr all allocated any associated bit_size btest ceiling count cshift date_and_time digits dot_product eoshift epsilon exponent floor fraction huge iand ibclr ibits ibset ieor ior ishft ishftc lbound len_trim matmul maxexponent maxloc maxval merge minexponent minloc minval modulo mvbits nearest pack present product radix random_number random_seed range repeat reshape rrspacing scale scan selected_int_kind selected_real_kind set_exponent shape size spacing spread sum system_clock tiny transpose trim ubound unpack verify achar iachar transfer dble entry dprod cpu_time command_argument_count get_command get_command_argument get_environment_variable is_iostat_end ieee_arithmetic ieee_support_underflow_control ieee_get_underflow_mode ieee_set_underflow_mode is_iostat_eor move_alloc new_line selected_char_kind same_type_as extends_type_ofacosh asinh atanh bessel_j0 bessel_j1 bessel_jn bessel_y0 bessel_y1 bessel_yn erf erfc erfc_scaled gamma log_gamma hypot norm2 atomic_define atomic_ref execute_command_line leadz trailz storage_size merge_bits bge bgt ble blt dshiftl dshiftr findloc iall iany iparity image_index lcobound ucobound maskl maskr num_images parity popcnt poppar shifta shiftl shiftr this_image IRP_ALIGN irp_here\"\n    },\n    \"illegal\": \"\\\\\\/\\\\*\",\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"subroutine function program\",\n            \"illegal\": \"[${=\\\\n]\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"!\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"begin_doc\",\n            \"end\": \"end_doc\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.3.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(?=\\\\b|\\\\+|\\\\-|\\\\.)(?=\\\\.\\\\d|\\\\d)(?:\\\\d+)?(?:\\\\.?\\\\d*)(?:[de][+-]?\\\\d+)?\\\\b\\\\.?\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/isbl.json",
    "content": "{\n    \"aliases\": [\n        \"isbl\"\n    ],\n    \"case_insensitive\": true,\n    \"lexemes\": \"[A-Za-zА\\\\-Яа-яёЁ_!][A-Za-zА\\\\-Яа-яёЁ_0-9]*\",\n    \"keywords\": {\n        \"keyword\": \"and и else иначе endexcept endfinally endforeach конецвсе endif конецесли endwhile конецпока except exitfor finally foreach все if если in в not не or или try while пока \",\n        \"built_in\": \"SYSRES_CONST_ACCES_RIGHT_TYPE_EDIT SYSRES_CONST_ACCES_RIGHT_TYPE_FULL SYSRES_CONST_ACCES_RIGHT_TYPE_VIEW SYSRES_CONST_ACCESS_MODE_REQUISITE_CODE SYSRES_CONST_ACCESS_NO_ACCESS_VIEW SYSRES_CONST_ACCESS_NO_ACCESS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_ADD_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_CHANGE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_DELETE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_EXECUTE_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_NO_ACCESS_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_RATIFY_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW SYSRES_CONST_ACCESS_RIGHTS_VIEW_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_CODE SYSRES_CONST_ACCESS_RIGHTS_VIEW_REQUISITE_YES_CODE SYSRES_CONST_ACCESS_TYPE_CHANGE SYSRES_CONST_ACCESS_TYPE_CHANGE_CODE SYSRES_CONST_ACCESS_TYPE_EXISTS SYSRES_CONST_ACCESS_TYPE_EXISTS_CODE SYSRES_CONST_ACCESS_TYPE_FULL SYSRES_CONST_ACCESS_TYPE_FULL_CODE SYSRES_CONST_ACCESS_TYPE_VIEW SYSRES_CONST_ACCESS_TYPE_VIEW_CODE SYSRES_CONST_ACTION_TYPE_ABORT SYSRES_CONST_ACTION_TYPE_ACCEPT SYSRES_CONST_ACTION_TYPE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ADD_ATTACHMENT SYSRES_CONST_ACTION_TYPE_CHANGE_CARD SYSRES_CONST_ACTION_TYPE_CHANGE_KIND SYSRES_CONST_ACTION_TYPE_CHANGE_STORAGE SYSRES_CONST_ACTION_TYPE_CONTINUE SYSRES_CONST_ACTION_TYPE_COPY SYSRES_CONST_ACTION_TYPE_CREATE SYSRES_CONST_ACTION_TYPE_CREATE_VERSION SYSRES_CONST_ACTION_TYPE_DELETE SYSRES_CONST_ACTION_TYPE_DELETE_ATTACHMENT SYSRES_CONST_ACTION_TYPE_DELETE_VERSION SYSRES_CONST_ACTION_TYPE_DISABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENABLE_DELEGATE_ACCESS_RIGHTS SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_CERTIFICATE_AND_PASSWORD SYSRES_CONST_ACTION_TYPE_ENCRYPTION_BY_PASSWORD SYSRES_CONST_ACTION_TYPE_EXPORT_WITH_LOCK SYSRES_CONST_ACTION_TYPE_EXPORT_WITHOUT_LOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITH_UNLOCK SYSRES_CONST_ACTION_TYPE_IMPORT_WITHOUT_UNLOCK SYSRES_CONST_ACTION_TYPE_LIFE_CYCLE_STAGE SYSRES_CONST_ACTION_TYPE_LOCK SYSRES_CONST_ACTION_TYPE_LOCK_FOR_SERVER SYSRES_CONST_ACTION_TYPE_LOCK_MODIFY SYSRES_CONST_ACTION_TYPE_MARK_AS_READED SYSRES_CONST_ACTION_TYPE_MARK_AS_UNREADED SYSRES_CONST_ACTION_TYPE_MODIFY SYSRES_CONST_ACTION_TYPE_MODIFY_CARD SYSRES_CONST_ACTION_TYPE_MOVE_TO_ARCHIVE SYSRES_CONST_ACTION_TYPE_OFF_ENCRYPTION SYSRES_CONST_ACTION_TYPE_PASSWORD_CHANGE SYSRES_CONST_ACTION_TYPE_PERFORM SYSRES_CONST_ACTION_TYPE_RECOVER_FROM_LOCAL_COPY SYSRES_CONST_ACTION_TYPE_RESTART SYSRES_CONST_ACTION_TYPE_RESTORE_FROM_ARCHIVE SYSRES_CONST_ACTION_TYPE_REVISION SYSRES_CONST_ACTION_TYPE_SEND_BY_MAIL SYSRES_CONST_ACTION_TYPE_SIGN SYSRES_CONST_ACTION_TYPE_START SYSRES_CONST_ACTION_TYPE_UNLOCK SYSRES_CONST_ACTION_TYPE_UNLOCK_FROM_SERVER SYSRES_CONST_ACTION_TYPE_VERSION_STATE SYSRES_CONST_ACTION_TYPE_VERSION_VISIBILITY SYSRES_CONST_ACTION_TYPE_VIEW SYSRES_CONST_ACTION_TYPE_VIEW_SHADOW_COPY SYSRES_CONST_ACTION_TYPE_WORKFLOW_DESCRIPTION_MODIFY SYSRES_CONST_ACTION_TYPE_WRITE_HISTORY SYSRES_CONST_ACTIVE_VERSION_STATE_PICK_VALUE SYSRES_CONST_ADD_REFERENCE_MODE_NAME SYSRES_CONST_ADDITION_REQUISITE_CODE SYSRES_CONST_ADDITIONAL_PARAMS_REQUISITE_CODE SYSRES_CONST_ADITIONAL_JOB_END_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_READ_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_START_DATE_REQUISITE_NAME SYSRES_CONST_ADITIONAL_JOB_STATE_REQUISITE_NAME SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_ADDING_USER_TO_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_CREATION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_DATABASE_USER_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_COMP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_DELETION_USER_FROM_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_GRANTING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_MAIN_SERVER_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_IS_PUBLIC_CHANGED_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_FILTERER_RESTRICTION_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_PRIVILEGE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_REMOVING_RIGHTS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_CREATION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION SYSRES_CONST_ADMINISTRATION_HISTORY_SERVER_LOGIN_DELETION_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_CATEGORY_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_COMP_TITLE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_FULL_NAME_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_PARENT_GROUP_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_AUTH_TYPE_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_LOGIN_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION SYSRES_CONST_ADMINISTRATION_HISTORY_UPDATING_USER_STATUS_ACTION_CODE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE SYSRES_CONST_ADMINISTRATION_HISTORY_USER_PASSWORD_CHANGE_ACTION SYSRES_CONST_ALL_ACCEPT_CONDITION_RUS SYSRES_CONST_ALL_USERS_GROUP SYSRES_CONST_ALL_USERS_GROUP_NAME SYSRES_CONST_ALL_USERS_SERVER_GROUP_NAME SYSRES_CONST_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_APP_VIEWER_TYPE_REQUISITE_CODE SYSRES_CONST_APPROVING_SIGNATURE_NAME SYSRES_CONST_APPROVING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE SYSRES_CONST_ASSISTANT_SUBSTITUE_TYPE_CODE SYSRES_CONST_ATTACH_TYPE_COMPONENT_TOKEN SYSRES_CONST_ATTACH_TYPE_DOC SYSRES_CONST_ATTACH_TYPE_EDOC SYSRES_CONST_ATTACH_TYPE_FOLDER SYSRES_CONST_ATTACH_TYPE_JOB SYSRES_CONST_ATTACH_TYPE_REFERENCE SYSRES_CONST_ATTACH_TYPE_TASK SYSRES_CONST_AUTH_ENCODED_PASSWORD SYSRES_CONST_AUTH_ENCODED_PASSWORD_CODE SYSRES_CONST_AUTH_NOVELL SYSRES_CONST_AUTH_PASSWORD SYSRES_CONST_AUTH_PASSWORD_CODE SYSRES_CONST_AUTH_WINDOWS SYSRES_CONST_AUTHENTICATING_SIGNATURE_NAME SYSRES_CONST_AUTHENTICATING_SIGNATURE_REQUISITE_CODE SYSRES_CONST_AUTO_ENUM_METHOD_FLAG SYSRES_CONST_AUTO_NUMERATION_CODE SYSRES_CONST_AUTO_STRONG_ENUM_METHOD_FLAG SYSRES_CONST_AUTOTEXT_NAME_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_TEXT_REQUISITE_CODE SYSRES_CONST_AUTOTEXT_USAGE_ALL SYSRES_CONST_AUTOTEXT_USAGE_ALL_CODE SYSRES_CONST_AUTOTEXT_USAGE_SIGN SYSRES_CONST_AUTOTEXT_USAGE_SIGN_CODE SYSRES_CONST_AUTOTEXT_USAGE_WORK SYSRES_CONST_AUTOTEXT_USAGE_WORK_CODE SYSRES_CONST_AUTOTEXT_USE_ANYWHERE_CODE SYSRES_CONST_AUTOTEXT_USE_ON_SIGNING_CODE SYSRES_CONST_AUTOTEXT_USE_ON_WORK_CODE SYSRES_CONST_BEGIN_DATE_REQUISITE_CODE SYSRES_CONST_BLACK_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BLUE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_BTN_PART SYSRES_CONST_CALCULATED_ROLE_TYPE_CODE SYSRES_CONST_CALL_TYPE_VARIABLE_BUTTON_VALUE SYSRES_CONST_CALL_TYPE_VARIABLE_PROGRAM_VALUE SYSRES_CONST_CANCEL_MESSAGE_FUNCTION_RESULT SYSRES_CONST_CARD_PART SYSRES_CONST_CARD_REFERENCE_MODE_NAME SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_AND_ENCRYPT_VALUE SYSRES_CONST_CERTIFICATE_TYPE_REQUISITE_SIGN_VALUE SYSRES_CONST_CHECK_PARAM_VALUE_DATE_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_FLOAT_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_INTEGER_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_PICK_PARAM_TYPE SYSRES_CONST_CHECK_PARAM_VALUE_REEFRENCE_PARAM_TYPE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_CLOSED_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_CODE_COMPONENT_TYPE_ADMIN SYSRES_CONST_CODE_COMPONENT_TYPE_DEVELOPER SYSRES_CONST_CODE_COMPONENT_TYPE_DOCS SYSRES_CONST_CODE_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_CODE_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_CODE_COMPONENT_TYPE_OTHER SYSRES_CONST_CODE_COMPONENT_TYPE_REFERENCE SYSRES_CONST_CODE_COMPONENT_TYPE_REPORT SYSRES_CONST_CODE_COMPONENT_TYPE_SCRIPT SYSRES_CONST_CODE_COMPONENT_TYPE_URL SYSRES_CONST_CODE_REQUISITE_ACCESS SYSRES_CONST_CODE_REQUISITE_CODE SYSRES_CONST_CODE_REQUISITE_COMPONENT SYSRES_CONST_CODE_REQUISITE_DESCRIPTION SYSRES_CONST_CODE_REQUISITE_EXCLUDE_COMPONENT SYSRES_CONST_CODE_REQUISITE_RECORD SYSRES_CONST_COMMENT_REQ_CODE SYSRES_CONST_COMMON_SETTINGS_REQUISITE_CODE SYSRES_CONST_COMP_CODE_GRD SYSRES_CONST_COMPONENT_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_COMPONENT_TYPE_ADMIN_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DEVELOPER_COMPONENTS SYSRES_CONST_COMPONENT_TYPE_DOCS SYSRES_CONST_COMPONENT_TYPE_EDOC_CARDS SYSRES_CONST_COMPONENT_TYPE_EDOCS SYSRES_CONST_COMPONENT_TYPE_EXTERNAL_EXECUTABLE SYSRES_CONST_COMPONENT_TYPE_OTHER SYSRES_CONST_COMPONENT_TYPE_REFERENCE_TYPES SYSRES_CONST_COMPONENT_TYPE_REFERENCES SYSRES_CONST_COMPONENT_TYPE_REPORTS SYSRES_CONST_COMPONENT_TYPE_SCRIPTS SYSRES_CONST_COMPONENT_TYPE_URL SYSRES_CONST_COMPONENTS_REMOTE_SERVERS_VIEW_CODE SYSRES_CONST_CONDITION_BLOCK_DESCRIPTION SYSRES_CONST_CONST_FIRM_STATUS_COMMON SYSRES_CONST_CONST_FIRM_STATUS_INDIVIDUAL SYSRES_CONST_CONST_NEGATIVE_VALUE SYSRES_CONST_CONST_POSITIVE_VALUE SYSRES_CONST_CONST_SERVER_STATUS_DONT_REPLICATE SYSRES_CONST_CONST_SERVER_STATUS_REPLICATE SYSRES_CONST_CONTENTS_REQUISITE_CODE SYSRES_CONST_DATA_TYPE_BOOLEAN SYSRES_CONST_DATA_TYPE_DATE SYSRES_CONST_DATA_TYPE_FLOAT SYSRES_CONST_DATA_TYPE_INTEGER SYSRES_CONST_DATA_TYPE_PICK SYSRES_CONST_DATA_TYPE_REFERENCE SYSRES_CONST_DATA_TYPE_STRING SYSRES_CONST_DATA_TYPE_TEXT SYSRES_CONST_DATA_TYPE_VARIANT SYSRES_CONST_DATE_CLOSE_REQ_CODE SYSRES_CONST_DATE_FORMAT_DATE_ONLY_CHAR SYSRES_CONST_DATE_OPEN_REQ_CODE SYSRES_CONST_DATE_REQUISITE SYSRES_CONST_DATE_REQUISITE_CODE SYSRES_CONST_DATE_REQUISITE_NAME SYSRES_CONST_DATE_REQUISITE_TYPE SYSRES_CONST_DATE_TYPE_CHAR SYSRES_CONST_DATETIME_FORMAT_VALUE SYSRES_CONST_DEA_ACCESS_RIGHTS_ACTION_CODE SYSRES_CONST_DESCRIPTION_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_DET1_PART SYSRES_CONST_DET2_PART SYSRES_CONST_DET3_PART SYSRES_CONST_DET4_PART SYSRES_CONST_DET5_PART SYSRES_CONST_DET6_PART SYSRES_CONST_DETAIL_DATASET_KEY_REQUISITE_CODE SYSRES_CONST_DETAIL_PICK_REQUISITE_CODE SYSRES_CONST_DETAIL_REQ_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ACCESS_TYPE_NAME SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_CODE SYSRES_CONST_DO_NOT_USE_ON_VIEW_ACCESS_TYPE_NAME SYSRES_CONST_DOCUMENT_STORAGES_CODE SYSRES_CONST_DOCUMENT_TEMPLATES_TYPE_NAME SYSRES_CONST_DOUBLE_REQUISITE_CODE SYSRES_CONST_EDITOR_CLOSE_FILE_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_CLOSE_PROCESS_OBSERV_TYPE_CODE SYSRES_CONST_EDITOR_TYPE_REQUISITE_CODE SYSRES_CONST_EDITORS_APPLICATION_NAME_REQUISITE_CODE SYSRES_CONST_EDITORS_CREATE_SEVERAL_PROCESSES_REQUISITE_CODE SYSRES_CONST_EDITORS_EXTENSION_REQUISITE_CODE SYSRES_CONST_EDITORS_OBSERVER_BY_PROCESS_TYPE SYSRES_CONST_EDITORS_REFERENCE_CODE SYSRES_CONST_EDITORS_REPLACE_SPEC_CHARS_REQUISITE_CODE SYSRES_CONST_EDITORS_USE_PLUGINS_REQUISITE_CODE SYSRES_CONST_EDITORS_VIEW_DOCUMENT_OPENED_TO_EDIT_CODE SYSRES_CONST_EDOC_CARD_TYPE_REQUISITE_CODE SYSRES_CONST_EDOC_CARD_TYPES_LINK_REQUISITE_CODE SYSRES_CONST_EDOC_CERTIFICATE_AND_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_CERTIFICATE_ENCODE_CODE SYSRES_CONST_EDOC_DATE_REQUISITE_CODE SYSRES_CONST_EDOC_KIND_REFERENCE_CODE SYSRES_CONST_EDOC_KINDS_BY_TEMPLATE_ACTION_CODE SYSRES_CONST_EDOC_MANAGE_ACCESS_CODE SYSRES_CONST_EDOC_NONE_ENCODE_CODE SYSRES_CONST_EDOC_NUMBER_REQUISITE_CODE SYSRES_CONST_EDOC_PASSWORD_ENCODE_CODE SYSRES_CONST_EDOC_READONLY_ACCESS_CODE SYSRES_CONST_EDOC_SHELL_LIFE_TYPE_VIEW_VALUE SYSRES_CONST_EDOC_SIZE_RESTRICTION_PRIORITY_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_CHECK_ACCESS_RIGHTS_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_COMPUTER_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_DATABASE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_EDIT_IN_STORAGE_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_LOCAL_PATH_REQUISITE_CODE SYSRES_CONST_EDOC_STORAGE_SHARED_SOURCE_NAME_REQUISITE_CODE SYSRES_CONST_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_EDOC_TYPES_REFERENCE_CODE SYSRES_CONST_EDOC_VERSION_ACTIVE_STAGE_CODE SYSRES_CONST_EDOC_VERSION_DESIGN_STAGE_CODE SYSRES_CONST_EDOC_VERSION_OBSOLETE_STAGE_CODE SYSRES_CONST_EDOC_WRITE_ACCES_CODE SYSRES_CONST_EDOCUMENT_CARD_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_END_DATE_REQUISITE_CODE SYSRES_CONST_ENUMERATION_TYPE_REQUISITE_CODE SYSRES_CONST_EXECUTE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_EXECUTIVE_FILE_STORAGE_TYPE SYSRES_CONST_EXIST_CONST SYSRES_CONST_EXIST_VALUE SYSRES_CONST_EXPORT_LOCK_TYPE_ASK SYSRES_CONST_EXPORT_LOCK_TYPE_WITH_LOCK SYSRES_CONST_EXPORT_LOCK_TYPE_WITHOUT_LOCK SYSRES_CONST_EXPORT_VERSION_TYPE_ASK SYSRES_CONST_EXPORT_VERSION_TYPE_LAST SYSRES_CONST_EXPORT_VERSION_TYPE_LAST_ACTIVE SYSRES_CONST_EXTENSION_REQUISITE_CODE SYSRES_CONST_FILTER_NAME_REQUISITE_CODE SYSRES_CONST_FILTER_REQUISITE_CODE SYSRES_CONST_FILTER_TYPE_COMMON_CODE SYSRES_CONST_FILTER_TYPE_COMMON_NAME SYSRES_CONST_FILTER_TYPE_USER_CODE SYSRES_CONST_FILTER_TYPE_USER_NAME SYSRES_CONST_FILTER_VALUE_REQUISITE_NAME SYSRES_CONST_FLOAT_NUMBER_FORMAT_CHAR SYSRES_CONST_FLOAT_REQUISITE_TYPE SYSRES_CONST_FOLDER_AUTHOR_VALUE SYSRES_CONST_FOLDER_KIND_ANY_OBJECTS SYSRES_CONST_FOLDER_KIND_COMPONENTS SYSRES_CONST_FOLDER_KIND_EDOCS SYSRES_CONST_FOLDER_KIND_JOBS SYSRES_CONST_FOLDER_KIND_TASKS SYSRES_CONST_FOLDER_TYPE_COMMON SYSRES_CONST_FOLDER_TYPE_COMPONENT SYSRES_CONST_FOLDER_TYPE_FAVORITES SYSRES_CONST_FOLDER_TYPE_INBOX SYSRES_CONST_FOLDER_TYPE_OUTBOX SYSRES_CONST_FOLDER_TYPE_QUICK_LAUNCH SYSRES_CONST_FOLDER_TYPE_SEARCH SYSRES_CONST_FOLDER_TYPE_SHORTCUTS SYSRES_CONST_FOLDER_TYPE_USER SYSRES_CONST_FROM_DICTIONARY_ENUM_METHOD_FLAG SYSRES_CONST_FULL_SUBSTITUTE_TYPE SYSRES_CONST_FULL_SUBSTITUTE_TYPE_CODE SYSRES_CONST_FUNCTION_CANCEL_RESULT SYSRES_CONST_FUNCTION_CATEGORY_SYSTEM SYSRES_CONST_FUNCTION_CATEGORY_USER SYSRES_CONST_FUNCTION_FAILURE_RESULT SYSRES_CONST_FUNCTION_SAVE_RESULT SYSRES_CONST_GENERATED_REQUISITE SYSRES_CONST_GREEN_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_GROUP_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_CODE SYSRES_CONST_GROUP_CATEGORY_NORMAL_NAME SYSRES_CONST_GROUP_CATEGORY_SERVICE_CODE SYSRES_CONST_GROUP_CATEGORY_SERVICE_NAME SYSRES_CONST_GROUP_COMMON_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_FULL_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_CODES_REQUISITE_CODE SYSRES_CONST_GROUP_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_GROUP_SERVICE_CATEGORY_FIELD_VALUE SYSRES_CONST_GROUP_USER_REQUISITE_CODE SYSRES_CONST_GROUPS_REFERENCE_CODE SYSRES_CONST_GROUPS_REQUISITE_CODE SYSRES_CONST_HIDDEN_MODE_NAME SYSRES_CONST_HIGH_LVL_REQUISITE_CODE SYSRES_CONST_HISTORY_ACTION_CREATE_CODE SYSRES_CONST_HISTORY_ACTION_DELETE_CODE SYSRES_CONST_HISTORY_ACTION_EDIT_CODE SYSRES_CONST_HOUR_CHAR SYSRES_CONST_ID_REQUISITE_CODE SYSRES_CONST_IDSPS_REQUISITE_CODE SYSRES_CONST_IMAGE_MODE_COLOR SYSRES_CONST_IMAGE_MODE_GREYSCALE SYSRES_CONST_IMAGE_MODE_MONOCHROME SYSRES_CONST_IMPORTANCE_HIGH SYSRES_CONST_IMPORTANCE_LOW SYSRES_CONST_IMPORTANCE_NORMAL SYSRES_CONST_IN_DESIGN_VERSION_STATE_PICK_VALUE SYSRES_CONST_INCOMING_WORK_RULE_TYPE_CODE SYSRES_CONST_INT_REQUISITE SYSRES_CONST_INT_REQUISITE_TYPE SYSRES_CONST_INTEGER_NUMBER_FORMAT_CHAR SYSRES_CONST_INTEGER_TYPE_CHAR SYSRES_CONST_IS_GENERATED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_PUBLIC_ROLE_REQUISITE_CODE SYSRES_CONST_IS_REMOTE_USER_NEGATIVE_VALUE SYSRES_CONST_IS_REMOTE_USER_POSITIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_NEGATIVE_VALUE SYSRES_CONST_IS_STORED_REQUISITE_STORED_VALUE SYSRES_CONST_ITALIC_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_JOB_BLOCK_DESCRIPTION SYSRES_CONST_JOB_KIND_CONTROL_JOB SYSRES_CONST_JOB_KIND_JOB SYSRES_CONST_JOB_KIND_NOTICE SYSRES_CONST_JOB_STATE_ABORTED SYSRES_CONST_JOB_STATE_COMPLETE SYSRES_CONST_JOB_STATE_WORKING SYSRES_CONST_KIND_REQUISITE_CODE SYSRES_CONST_KIND_REQUISITE_NAME SYSRES_CONST_KINDS_CREATE_SHADOW_COPIES_REQUISITE_CODE SYSRES_CONST_KINDS_DEFAULT_EDOC_LIFE_STAGE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALL_TEPLATES_ALLOWED_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_LIFE_CYCLE_STAGE_CHANGING_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_ALLOW_MULTIPLE_ACTIVE_VERSIONS_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_SHARE_ACCES_RIGHTS_BY_DEFAULT_CODE SYSRES_CONST_KINDS_EDOC_TEMPLATE_REQUISITE_CODE SYSRES_CONST_KINDS_EDOC_TYPE_REQUISITE_CODE SYSRES_CONST_KINDS_SIGNERS_REQUISITES_CODE SYSRES_CONST_KOD_INPUT_TYPE SYSRES_CONST_LAST_UPDATE_DATE_REQUISITE_CODE SYSRES_CONST_LIFE_CYCLE_START_STAGE_REQUISITE_CODE SYSRES_CONST_LILAC_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_LINK_OBJECT_KIND_COMPONENT SYSRES_CONST_LINK_OBJECT_KIND_DOCUMENT SYSRES_CONST_LINK_OBJECT_KIND_EDOC SYSRES_CONST_LINK_OBJECT_KIND_FOLDER SYSRES_CONST_LINK_OBJECT_KIND_JOB SYSRES_CONST_LINK_OBJECT_KIND_REFERENCE SYSRES_CONST_LINK_OBJECT_KIND_TASK SYSRES_CONST_LINK_REF_TYPE_REQUISITE_CODE SYSRES_CONST_LIST_REFERENCE_MODE_NAME SYSRES_CONST_LOCALIZATION_DICTIONARY_MAIN_VIEW_CODE SYSRES_CONST_MAIN_VIEW_CODE SYSRES_CONST_MANUAL_ENUM_METHOD_FLAG SYSRES_CONST_MASTER_COMP_TYPE_REQUISITE_CODE SYSRES_CONST_MASTER_TABLE_REC_ID_REQUISITE_CODE SYSRES_CONST_MAXIMIZED_MODE_NAME SYSRES_CONST_ME_VALUE SYSRES_CONST_MESSAGE_ATTENTION_CAPTION SYSRES_CONST_MESSAGE_CONFIRMATION_CAPTION SYSRES_CONST_MESSAGE_ERROR_CAPTION SYSRES_CONST_MESSAGE_INFORMATION_CAPTION SYSRES_CONST_MINIMIZED_MODE_NAME SYSRES_CONST_MINUTE_CHAR SYSRES_CONST_MODULE_REQUISITE_CODE SYSRES_CONST_MONITORING_BLOCK_DESCRIPTION SYSRES_CONST_MONTH_FORMAT_VALUE SYSRES_CONST_NAME_LOCALIZE_ID_REQUISITE_CODE SYSRES_CONST_NAME_REQUISITE_CODE SYSRES_CONST_NAME_SINGULAR_REQUISITE_CODE SYSRES_CONST_NAMEAN_INPUT_TYPE SYSRES_CONST_NEGATIVE_PICK_VALUE SYSRES_CONST_NEGATIVE_VALUE SYSRES_CONST_NO SYSRES_CONST_NO_PICK_VALUE SYSRES_CONST_NO_SIGNATURE_REQUISITE_CODE SYSRES_CONST_NO_VALUE SYSRES_CONST_NONE_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE SYSRES_CONST_NONOPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_NORMAL_ACCESS_RIGHTS_TYPE_CODE SYSRES_CONST_NORMAL_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_NORMAL_MODE_NAME SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_CODE SYSRES_CONST_NOT_ALLOWED_ACCESS_TYPE_NAME SYSRES_CONST_NOTE_REQUISITE_CODE SYSRES_CONST_NOTICE_BLOCK_DESCRIPTION SYSRES_CONST_NUM_REQUISITE SYSRES_CONST_NUM_STR_REQUISITE_CODE SYSRES_CONST_NUMERATION_AUTO_NOT_STRONG SYSRES_CONST_NUMERATION_AUTO_STRONG SYSRES_CONST_NUMERATION_FROM_DICTONARY SYSRES_CONST_NUMERATION_MANUAL SYSRES_CONST_NUMERIC_TYPE_CHAR SYSRES_CONST_NUMREQ_REQUISITE_CODE SYSRES_CONST_OBSOLETE_VERSION_STATE_PICK_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_FEMININE SYSRES_CONST_OPERATING_RECORD_FLAG_VALUE_MASCULINE SYSRES_CONST_OPTIONAL_FORM_COMP_REQCODE_PREFIX SYSRES_CONST_ORANGE_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_ORIGINALREF_REQUISITE_CODE SYSRES_CONST_OURFIRM_REF_CODE SYSRES_CONST_OURFIRM_REQUISITE_CODE SYSRES_CONST_OURFIRM_VAR SYSRES_CONST_OUTGOING_WORK_RULE_TYPE_CODE SYSRES_CONST_PICK_NEGATIVE_RESULT SYSRES_CONST_PICK_POSITIVE_RESULT SYSRES_CONST_PICK_REQUISITE SYSRES_CONST_PICK_REQUISITE_TYPE SYSRES_CONST_PICK_TYPE_CHAR SYSRES_CONST_PLAN_STATUS_REQUISITE_CODE SYSRES_CONST_PLATFORM_VERSION_COMMENT SYSRES_CONST_PLUGINS_SETTINGS_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_POSITIVE_PICK_VALUE SYSRES_CONST_POWER_TO_CREATE_ACTION_CODE SYSRES_CONST_POWER_TO_SIGN_ACTION_CODE SYSRES_CONST_PRIORITY_REQUISITE_CODE SYSRES_CONST_QUALIFIED_TASK_TYPE SYSRES_CONST_QUALIFIED_TASK_TYPE_CODE SYSRES_CONST_RECSTAT_REQUISITE_CODE SYSRES_CONST_RED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_REF_ID_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_REF_REQUISITE SYSRES_CONST_REF_REQUISITE_TYPE SYSRES_CONST_REF_REQUISITES_REFERENCE_CODE_SELECTED_REQUISITE SYSRES_CONST_REFERENCE_RECORD_HISTORY_CREATE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_DELETE_ACTION_CODE SYSRES_CONST_REFERENCE_RECORD_HISTORY_MODIFY_ACTION_CODE SYSRES_CONST_REFERENCE_TYPE_CHAR SYSRES_CONST_REFERENCE_TYPE_REQUISITE_NAME SYSRES_CONST_REFERENCES_ADD_PARAMS_REQUISITE_CODE SYSRES_CONST_REFERENCES_DISPLAY_REQUISITE_REQUISITE_CODE SYSRES_CONST_REMOTE_SERVER_STATUS_WORKING SYSRES_CONST_REMOTE_SERVER_TYPE_MAIN SYSRES_CONST_REMOTE_SERVER_TYPE_SECONDARY SYSRES_CONST_REMOTE_USER_FLAG_VALUE_CODE SYSRES_CONST_REPORT_APP_EDITOR_INTERNAL SYSRES_CONST_REPORT_BASE_REPORT_ID_REQUISITE_CODE SYSRES_CONST_REPORT_BASE_REPORT_REQUISITE_CODE SYSRES_CONST_REPORT_SCRIPT_REQUISITE_CODE SYSRES_CONST_REPORT_TEMPLATE_REQUISITE_CODE SYSRES_CONST_REPORT_VIEWER_CODE_REQUISITE_CODE SYSRES_CONST_REQ_ALLOW_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_RECORD_DEFAULT_VALUE SYSRES_CONST_REQ_ALLOW_SERVER_COMPONENT_DEFAULT_VALUE SYSRES_CONST_REQ_MODE_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_EDIT_CODE SYSRES_CONST_REQ_MODE_HIDDEN_CODE SYSRES_CONST_REQ_MODE_NOT_AVAILABLE_CODE SYSRES_CONST_REQ_MODE_VIEW_CODE SYSRES_CONST_REQ_NUMBER_REQUISITE_CODE SYSRES_CONST_REQ_SECTION_VALUE SYSRES_CONST_REQ_TYPE_VALUE SYSRES_CONST_REQUISITE_FORMAT_BY_UNIT SYSRES_CONST_REQUISITE_FORMAT_DATE_FULL SYSRES_CONST_REQUISITE_FORMAT_DATE_TIME SYSRES_CONST_REQUISITE_FORMAT_LEFT SYSRES_CONST_REQUISITE_FORMAT_RIGHT SYSRES_CONST_REQUISITE_FORMAT_WITHOUT_UNIT SYSRES_CONST_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_REQUISITE_SECTION_ACTIONS SYSRES_CONST_REQUISITE_SECTION_BUTTON SYSRES_CONST_REQUISITE_SECTION_BUTTONS SYSRES_CONST_REQUISITE_SECTION_CARD SYSRES_CONST_REQUISITE_SECTION_TABLE SYSRES_CONST_REQUISITE_SECTION_TABLE10 SYSRES_CONST_REQUISITE_SECTION_TABLE11 SYSRES_CONST_REQUISITE_SECTION_TABLE12 SYSRES_CONST_REQUISITE_SECTION_TABLE13 SYSRES_CONST_REQUISITE_SECTION_TABLE14 SYSRES_CONST_REQUISITE_SECTION_TABLE15 SYSRES_CONST_REQUISITE_SECTION_TABLE16 SYSRES_CONST_REQUISITE_SECTION_TABLE17 SYSRES_CONST_REQUISITE_SECTION_TABLE18 SYSRES_CONST_REQUISITE_SECTION_TABLE19 SYSRES_CONST_REQUISITE_SECTION_TABLE2 SYSRES_CONST_REQUISITE_SECTION_TABLE20 SYSRES_CONST_REQUISITE_SECTION_TABLE21 SYSRES_CONST_REQUISITE_SECTION_TABLE22 SYSRES_CONST_REQUISITE_SECTION_TABLE23 SYSRES_CONST_REQUISITE_SECTION_TABLE24 SYSRES_CONST_REQUISITE_SECTION_TABLE3 SYSRES_CONST_REQUISITE_SECTION_TABLE4 SYSRES_CONST_REQUISITE_SECTION_TABLE5 SYSRES_CONST_REQUISITE_SECTION_TABLE6 SYSRES_CONST_REQUISITE_SECTION_TABLE7 SYSRES_CONST_REQUISITE_SECTION_TABLE8 SYSRES_CONST_REQUISITE_SECTION_TABLE9 SYSRES_CONST_REQUISITES_PSEUDOREFERENCE_REQUISITE_NUMBER_REQUISITE_CODE SYSRES_CONST_RIGHT_ALIGNMENT_CODE SYSRES_CONST_ROLES_REFERENCE_CODE SYSRES_CONST_ROUTE_STEP_AFTER_RUS SYSRES_CONST_ROUTE_STEP_AND_CONDITION_RUS SYSRES_CONST_ROUTE_STEP_OR_CONDITION_RUS SYSRES_CONST_ROUTE_TYPE_COMPLEX SYSRES_CONST_ROUTE_TYPE_PARALLEL SYSRES_CONST_ROUTE_TYPE_SERIAL SYSRES_CONST_SBDATASETDESC_NEGATIVE_VALUE SYSRES_CONST_SBDATASETDESC_POSITIVE_VALUE SYSRES_CONST_SBVIEWSDESC_POSITIVE_VALUE SYSRES_CONST_SCRIPT_BLOCK_DESCRIPTION SYSRES_CONST_SEARCH_BY_TEXT_REQUISITE_CODE SYSRES_CONST_SEARCHES_COMPONENT_CONTENT SYSRES_CONST_SEARCHES_CRITERIA_ACTION_NAME SYSRES_CONST_SEARCHES_EDOC_CONTENT SYSRES_CONST_SEARCHES_FOLDER_CONTENT SYSRES_CONST_SEARCHES_JOB_CONTENT SYSRES_CONST_SEARCHES_REFERENCE_CODE SYSRES_CONST_SEARCHES_TASK_CONTENT SYSRES_CONST_SECOND_CHAR SYSRES_CONST_SECTION_REQUISITE_ACTIONS_VALUE SYSRES_CONST_SECTION_REQUISITE_CARD_VALUE SYSRES_CONST_SECTION_REQUISITE_CODE SYSRES_CONST_SECTION_REQUISITE_DETAIL_1_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_2_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_3_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_4_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_5_VALUE SYSRES_CONST_SECTION_REQUISITE_DETAIL_6_VALUE SYSRES_CONST_SELECT_REFERENCE_MODE_NAME SYSRES_CONST_SELECT_TYPE_SELECTABLE SYSRES_CONST_SELECT_TYPE_SELECTABLE_ONLY_CHILD SYSRES_CONST_SELECT_TYPE_SELECTABLE_WITH_CHILD SYSRES_CONST_SELECT_TYPE_UNSLECTABLE SYSRES_CONST_SERVER_TYPE_MAIN SYSRES_CONST_SERVICE_USER_CATEGORY_FIELD_VALUE SYSRES_CONST_SETTINGS_USER_REQUISITE_CODE SYSRES_CONST_SIGNATURE_AND_ENCODE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SIGNATURE_CERTIFICATE_TYPE_CODE SYSRES_CONST_SINGULAR_TITLE_REQUISITE_CODE SYSRES_CONST_SQL_SERVER_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_SQL_SERVER_ENCODE_AUTHENTIFICATION_FLAG_VALUE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_CODE SYSRES_CONST_STANDART_ROUTE_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_STANDART_ROUTES_GROUPS_REFERENCE_CODE SYSRES_CONST_STATE_REQ_NAME SYSRES_CONST_STATE_REQUISITE_ACTIVE_VALUE SYSRES_CONST_STATE_REQUISITE_CLOSED_VALUE SYSRES_CONST_STATE_REQUISITE_CODE SYSRES_CONST_STATIC_ROLE_TYPE_CODE SYSRES_CONST_STATUS_PLAN_DEFAULT_VALUE SYSRES_CONST_STATUS_VALUE_AUTOCLEANING SYSRES_CONST_STATUS_VALUE_BLUE_SQUARE SYSRES_CONST_STATUS_VALUE_COMPLETE SYSRES_CONST_STATUS_VALUE_GREEN_SQUARE SYSRES_CONST_STATUS_VALUE_ORANGE_SQUARE SYSRES_CONST_STATUS_VALUE_PURPLE_SQUARE SYSRES_CONST_STATUS_VALUE_RED_SQUARE SYSRES_CONST_STATUS_VALUE_SUSPEND SYSRES_CONST_STATUS_VALUE_YELLOW_SQUARE SYSRES_CONST_STDROUTE_SHOW_TO_USERS_REQUISITE_CODE SYSRES_CONST_STORAGE_TYPE_FILE SYSRES_CONST_STORAGE_TYPE_SQL_SERVER SYSRES_CONST_STR_REQUISITE SYSRES_CONST_STRIKEOUT_LIFE_CYCLE_STAGE_DRAW_STYLE SYSRES_CONST_STRING_FORMAT_LEFT_ALIGN_CHAR SYSRES_CONST_STRING_FORMAT_RIGHT_ALIGN_CHAR SYSRES_CONST_STRING_REQUISITE_CODE SYSRES_CONST_STRING_REQUISITE_TYPE SYSRES_CONST_STRING_TYPE_CHAR SYSRES_CONST_SUBSTITUTES_PSEUDOREFERENCE_CODE SYSRES_CONST_SUBTASK_BLOCK_DESCRIPTION SYSRES_CONST_SYSTEM_SETTING_CURRENT_USER_PARAM_VALUE SYSRES_CONST_SYSTEM_SETTING_EMPTY_VALUE_PARAM_VALUE SYSRES_CONST_SYSTEM_VERSION_COMMENT SYSRES_CONST_TASK_ACCESS_TYPE_ALL SYSRES_CONST_TASK_ACCESS_TYPE_ALL_MEMBERS SYSRES_CONST_TASK_ACCESS_TYPE_MANUAL SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION SYSRES_CONST_TASK_ENCODE_TYPE_CERTIFICATION_AND_PASSWORD SYSRES_CONST_TASK_ENCODE_TYPE_NONE SYSRES_CONST_TASK_ENCODE_TYPE_PASSWORD SYSRES_CONST_TASK_ROUTE_ALL_CONDITION SYSRES_CONST_TASK_ROUTE_AND_CONDITION SYSRES_CONST_TASK_ROUTE_OR_CONDITION SYSRES_CONST_TASK_STATE_ABORTED SYSRES_CONST_TASK_STATE_COMPLETE SYSRES_CONST_TASK_STATE_CONTINUED SYSRES_CONST_TASK_STATE_CONTROL SYSRES_CONST_TASK_STATE_INIT SYSRES_CONST_TASK_STATE_WORKING SYSRES_CONST_TASK_TITLE SYSRES_CONST_TASK_TYPES_GROUPS_REFERENCE_CODE SYSRES_CONST_TASK_TYPES_REFERENCE_CODE SYSRES_CONST_TEMPLATES_REFERENCE_CODE SYSRES_CONST_TEST_DATE_REQUISITE_NAME SYSRES_CONST_TEST_DEV_DATABASE_NAME SYSRES_CONST_TEST_DEV_SYSTEM_CODE SYSRES_CONST_TEST_EDMS_DATABASE_NAME SYSRES_CONST_TEST_EDMS_MAIN_CODE SYSRES_CONST_TEST_EDMS_MAIN_DB_NAME SYSRES_CONST_TEST_EDMS_SECOND_CODE SYSRES_CONST_TEST_EDMS_SECOND_DB_NAME SYSRES_CONST_TEST_EDMS_SYSTEM_CODE SYSRES_CONST_TEST_NUMERIC_REQUISITE_NAME SYSRES_CONST_TEXT_REQUISITE SYSRES_CONST_TEXT_REQUISITE_CODE SYSRES_CONST_TEXT_REQUISITE_TYPE SYSRES_CONST_TEXT_TYPE_CHAR SYSRES_CONST_TYPE_CODE_REQUISITE_CODE SYSRES_CONST_TYPE_REQUISITE_CODE SYSRES_CONST_UNDEFINED_LIFE_CYCLE_STAGE_FONT_COLOR SYSRES_CONST_UNITS_SECTION_ID_REQUISITE_CODE SYSRES_CONST_UNITS_SECTION_REQUISITE_CODE SYSRES_CONST_UNOPERATING_RECORD_FLAG_VALUE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_CODE SYSRES_CONST_UNSTORED_DATA_REQUISITE_NAME SYSRES_CONST_USE_ACCESS_TYPE_CODE SYSRES_CONST_USE_ACCESS_TYPE_NAME SYSRES_CONST_USER_ACCOUNT_TYPE_VALUE_CODE SYSRES_CONST_USER_ADDITIONAL_INFORMATION_REQUISITE_CODE SYSRES_CONST_USER_AND_GROUP_ID_FROM_PSEUDOREFERENCE_REQUISITE_CODE SYSRES_CONST_USER_CATEGORY_NORMAL SYSRES_CONST_USER_CERTIFICATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_STATE_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_SUBJECT_NAME_REQUISITE_CODE SYSRES_CONST_USER_CERTIFICATE_THUMBPRINT_REQUISITE_CODE SYSRES_CONST_USER_COMMON_CATEGORY SYSRES_CONST_USER_COMMON_CATEGORY_CODE SYSRES_CONST_USER_FULL_NAME_REQUISITE_CODE SYSRES_CONST_USER_GROUP_TYPE_REQUISITE_CODE SYSRES_CONST_USER_LOGIN_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USER_REMOTE_SYSTEM_REQUISITE_CODE SYSRES_CONST_USER_RIGHTS_T_REQUISITE_CODE SYSRES_CONST_USER_SERVER_NAME_REQUISITE_CODE SYSRES_CONST_USER_SERVICE_CATEGORY SYSRES_CONST_USER_SERVICE_CATEGORY_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_CODE SYSRES_CONST_USER_STATUS_ADMINISTRATOR_NAME SYSRES_CONST_USER_STATUS_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_DEVELOPER_NAME SYSRES_CONST_USER_STATUS_DISABLED_CODE SYSRES_CONST_USER_STATUS_DISABLED_NAME SYSRES_CONST_USER_STATUS_SYSTEM_DEVELOPER_CODE SYSRES_CONST_USER_STATUS_USER_CODE SYSRES_CONST_USER_STATUS_USER_NAME SYSRES_CONST_USER_STATUS_USER_NAME_DEPRECATED SYSRES_CONST_USER_TYPE_FIELD_VALUE_USER SYSRES_CONST_USER_TYPE_REQUISITE_CODE SYSRES_CONST_USERS_CONTROLLER_REQUISITE_CODE SYSRES_CONST_USERS_IS_MAIN_SERVER_REQUISITE_CODE SYSRES_CONST_USERS_REFERENCE_CODE SYSRES_CONST_USERS_REGISTRATION_CERTIFICATES_ACTION_NAME SYSRES_CONST_USERS_REQUISITE_CODE SYSRES_CONST_USERS_SYSTEM_REQUISITE_CODE SYSRES_CONST_USERS_USER_ACCESS_RIGHTS_TYPR_REQUISITE_CODE SYSRES_CONST_USERS_USER_AUTHENTICATION_REQUISITE_CODE SYSRES_CONST_USERS_USER_COMPONENT_REQUISITE_CODE SYSRES_CONST_USERS_USER_GROUP_REQUISITE_CODE SYSRES_CONST_USERS_VIEW_CERTIFICATES_ACTION_NAME SYSRES_CONST_VIEW_DEFAULT_CODE SYSRES_CONST_VIEW_DEFAULT_NAME SYSRES_CONST_VIEWER_REQUISITE_CODE SYSRES_CONST_WAITING_BLOCK_DESCRIPTION SYSRES_CONST_WIZARD_FORM_LABEL_TEST_STRING  SYSRES_CONST_WIZARD_QUERY_PARAM_HEIGHT_ETALON_STRING SYSRES_CONST_WIZARD_REFERENCE_COMMENT_REQUISITE_CODE SYSRES_CONST_WORK_RULES_DESCRIPTION_REQUISITE_CODE SYSRES_CONST_WORK_TIME_CALENDAR_REFERENCE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE SYSRES_CONST_WORK_WORKFLOW_HARD_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORK_WORKFLOW_SOFT_ROUTE_TYPE_VALUE_CODE_RUS SYSRES_CONST_WORKFLOW_ROUTE_TYPR_HARD SYSRES_CONST_WORKFLOW_ROUTE_TYPR_SOFT SYSRES_CONST_XML_ENCODING SYSRES_CONST_XREC_STAT_REQUISITE_CODE SYSRES_CONST_XRECID_FIELD_NAME SYSRES_CONST_YES SYSRES_CONST_YES_NO_2_REQUISITE_CODE SYSRES_CONST_YES_NO_REQUISITE_CODE SYSRES_CONST_YES_NO_T_REF_TYPE_REQUISITE_CODE SYSRES_CONST_YES_PICK_VALUE SYSRES_CONST_YES_VALUE CR FALSE nil NO_VALUE NULL TAB TRUE YES_VALUE ADMINISTRATORS_GROUP_NAME CUSTOMIZERS_GROUP_NAME DEVELOPERS_GROUP_NAME SERVICE_USERS_GROUP_NAME DECISION_BLOCK_FIRST_OPERAND_PROPERTY DECISION_BLOCK_NAME_PROPERTY DECISION_BLOCK_OPERATION_PROPERTY DECISION_BLOCK_RESULT_TYPE_PROPERTY DECISION_BLOCK_SECOND_OPERAND_PROPERTY ANY_FILE_EXTENTION COMPRESSED_DOCUMENT_EXTENSION EXTENDED_DOCUMENT_EXTENSION SHORT_COMPRESSED_DOCUMENT_EXTENSION SHORT_EXTENDED_DOCUMENT_EXTENSION JOB_BLOCK_ABORT_DEADLINE_PROPERTY JOB_BLOCK_AFTER_FINISH_EVENT JOB_BLOCK_AFTER_QUERY_PARAMETERS_EVENT JOB_BLOCK_ATTACHMENT_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY JOB_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY JOB_BLOCK_BEFORE_QUERY_PARAMETERS_EVENT JOB_BLOCK_BEFORE_START_EVENT JOB_BLOCK_CREATED_JOBS_PROPERTY JOB_BLOCK_DEADLINE_PROPERTY JOB_BLOCK_EXECUTION_RESULTS_PROPERTY JOB_BLOCK_IS_PARALLEL_PROPERTY JOB_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY JOB_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY JOB_BLOCK_JOB_TEXT_PROPERTY JOB_BLOCK_NAME_PROPERTY JOB_BLOCK_NEED_SIGN_ON_PERFORM_PROPERTY JOB_BLOCK_PERFORMER_PROPERTY JOB_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY JOB_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY JOB_BLOCK_SUBJECT_PROPERTY ENGLISH_LANGUAGE_CODE RUSSIAN_LANGUAGE_CODE smHidden smMaximized smMinimized smNormal wmNo wmYes COMPONENT_TOKEN_LINK_KIND DOCUMENT_LINK_KIND EDOCUMENT_LINK_KIND FOLDER_LINK_KIND JOB_LINK_KIND REFERENCE_LINK_KIND TASK_LINK_KIND COMPONENT_TOKEN_LOCK_TYPE EDOCUMENT_VERSION_LOCK_TYPE MONITOR_BLOCK_AFTER_FINISH_EVENT MONITOR_BLOCK_BEFORE_START_EVENT MONITOR_BLOCK_DEADLINE_PROPERTY MONITOR_BLOCK_INTERVAL_PROPERTY MONITOR_BLOCK_INTERVAL_TYPE_PROPERTY MONITOR_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY MONITOR_BLOCK_NAME_PROPERTY MONITOR_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY MONITOR_BLOCK_SEARCH_SCRIPT_PROPERTY NOTICE_BLOCK_AFTER_FINISH_EVENT NOTICE_BLOCK_ATTACHMENT_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY NOTICE_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY NOTICE_BLOCK_BEFORE_START_EVENT NOTICE_BLOCK_CREATED_NOTICES_PROPERTY NOTICE_BLOCK_DEADLINE_PROPERTY NOTICE_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY NOTICE_BLOCK_NAME_PROPERTY NOTICE_BLOCK_NOTICE_TEXT_PROPERTY NOTICE_BLOCK_PERFORMER_PROPERTY NOTICE_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY NOTICE_BLOCK_SUBJECT_PROPERTY dseAfterCancel dseAfterClose dseAfterDelete dseAfterDeleteOutOfTransaction dseAfterInsert dseAfterOpen dseAfterScroll dseAfterUpdate dseAfterUpdateOutOfTransaction dseBeforeCancel dseBeforeClose dseBeforeDelete dseBeforeDetailUpdate dseBeforeInsert dseBeforeOpen dseBeforeUpdate dseOnAnyRequisiteChange dseOnCloseRecord dseOnDeleteError dseOnOpenRecord dseOnPrepareUpdate dseOnUpdateError dseOnUpdateRatifiedRecord dseOnValidDelete dseOnValidUpdate reOnChange reOnChangeValues SELECTION_BEGIN_ROUTE_EVENT SELECTION_END_ROUTE_EVENT CURRENT_PERIOD_IS_REQUIRED PREVIOUS_CARD_TYPE_NAME SHOW_RECORD_PROPERTIES_FORM ACCESS_RIGHTS_SETTING_DIALOG_CODE ADMINISTRATOR_USER_CODE ANALYTIC_REPORT_TYPE asrtHideLocal asrtHideRemote CALCULATED_ROLE_TYPE_CODE COMPONENTS_REFERENCE_DEVELOPER_VIEW_CODE DCTS_TEST_PROTOCOLS_FOLDER_PATH E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED E_EDOC_VERSION_ALREADY_APPROVINGLY_SIGNED_BY_USER E_EDOC_VERSION_ALREDY_SIGNED E_EDOC_VERSION_ALREDY_SIGNED_BY_USER EDOC_TYPES_CODE_REQUISITE_FIELD_NAME EDOCUMENTS_ALIAS_NAME FILES_FOLDER_PATH FILTER_OPERANDS_DELIMITER FILTER_OPERATIONS_DELIMITER FORMCARD_NAME FORMLIST_NAME GET_EXTENDED_DOCUMENT_EXTENSION_CREATION_MODE GET_EXTENDED_DOCUMENT_EXTENSION_IMPORT_MODE INTEGRATED_REPORT_TYPE IS_BUILDER_APPLICATION_ROLE IS_BUILDER_APPLICATION_ROLE2 IS_BUILDER_USERS ISBSYSDEV LOG_FOLDER_PATH mbCancel mbNo mbNoToAll mbOK mbYes mbYesToAll MEMORY_DATASET_DESRIPTIONS_FILENAME mrNo mrNoToAll mrYes mrYesToAll MULTIPLE_SELECT_DIALOG_CODE NONOPERATING_RECORD_FLAG_FEMININE NONOPERATING_RECORD_FLAG_MASCULINE OPERATING_RECORD_FLAG_FEMININE OPERATING_RECORD_FLAG_MASCULINE PROFILING_SETTINGS_COMMON_SETTINGS_CODE_VALUE PROGRAM_INITIATED_LOOKUP_ACTION ratDelete ratEdit ratInsert REPORT_TYPE REQUIRED_PICK_VALUES_VARIABLE rmCard rmList SBRTE_PROGID_DEV SBRTE_PROGID_RELEASE STATIC_ROLE_TYPE_CODE SUPPRESS_EMPTY_TEMPLATE_CREATION SYSTEM_USER_CODE UPDATE_DIALOG_DATASET USED_IN_OBJECT_HINT_PARAM USER_INITIATED_LOOKUP_ACTION USER_NAME_FORMAT USER_SELECTION_RESTRICTIONS WORKFLOW_TEST_PROTOCOLS_FOLDER_PATH ELS_SUBTYPE_CONTROL_NAME ELS_FOLDER_KIND_CONTROL_NAME REPEAT_PROCESS_CURRENT_OBJECT_EXCEPTION_NAME PRIVILEGE_COMPONENT_FULL_ACCESS PRIVILEGE_DEVELOPMENT_EXPORT PRIVILEGE_DEVELOPMENT_IMPORT PRIVILEGE_DOCUMENT_DELETE PRIVILEGE_ESD PRIVILEGE_FOLDER_DELETE PRIVILEGE_MANAGE_ACCESS_RIGHTS PRIVILEGE_MANAGE_REPLICATION PRIVILEGE_MANAGE_SESSION_SERVER PRIVILEGE_OBJECT_FULL_ACCESS PRIVILEGE_OBJECT_VIEW PRIVILEGE_RESERVE_LICENSE PRIVILEGE_SYSTEM_CUSTOMIZE PRIVILEGE_SYSTEM_DEVELOP PRIVILEGE_SYSTEM_INSTALL PRIVILEGE_TASK_DELETE PRIVILEGE_USER_PLUGIN_SETTINGS_CUSTOMIZE PRIVILEGES_PSEUDOREFERENCE_CODE ACCESS_TYPES_PSEUDOREFERENCE_CODE ALL_AVAILABLE_COMPONENTS_PSEUDOREFERENCE_CODE ALL_AVAILABLE_PRIVILEGES_PSEUDOREFERENCE_CODE ALL_REPLICATE_COMPONENTS_PSEUDOREFERENCE_CODE AVAILABLE_DEVELOPERS_COMPONENTS_PSEUDOREFERENCE_CODE COMPONENTS_PSEUDOREFERENCE_CODE FILTRATER_SETTINGS_CONFLICTS_PSEUDOREFERENCE_CODE GROUPS_PSEUDOREFERENCE_CODE RECEIVE_PROTOCOL_PSEUDOREFERENCE_CODE REFERENCE_REQUISITE_PSEUDOREFERENCE_CODE REFERENCE_REQUISITES_PSEUDOREFERENCE_CODE REFTYPES_PSEUDOREFERENCE_CODE REPLICATION_SEANCES_DIARY_PSEUDOREFERENCE_CODE SEND_PROTOCOL_PSEUDOREFERENCE_CODE SUBSTITUTES_PSEUDOREFERENCE_CODE SYSTEM_SETTINGS_PSEUDOREFERENCE_CODE UNITS_PSEUDOREFERENCE_CODE USERS_PSEUDOREFERENCE_CODE VIEWERS_PSEUDOREFERENCE_CODE CERTIFICATE_TYPE_ENCRYPT CERTIFICATE_TYPE_SIGN CERTIFICATE_TYPE_SIGN_AND_ENCRYPT STORAGE_TYPE_FILE STORAGE_TYPE_NAS_CIFS STORAGE_TYPE_SAPERION STORAGE_TYPE_SQL_SERVER COMPTYPE2_REQUISITE_DOCUMENTS_VALUE COMPTYPE2_REQUISITE_TASKS_VALUE COMPTYPE2_REQUISITE_FOLDERS_VALUE COMPTYPE2_REQUISITE_REFERENCES_VALUE SYSREQ_CODE SYSREQ_COMPTYPE2 SYSREQ_CONST_AVAILABLE_FOR_WEB SYSREQ_CONST_COMMON_CODE SYSREQ_CONST_COMMON_VALUE SYSREQ_CONST_FIRM_CODE SYSREQ_CONST_FIRM_STATUS SYSREQ_CONST_FIRM_VALUE SYSREQ_CONST_SERVER_STATUS SYSREQ_CONTENTS SYSREQ_DATE_OPEN SYSREQ_DATE_CLOSE SYSREQ_DESCRIPTION SYSREQ_DESCRIPTION_LOCALIZE_ID SYSREQ_DOUBLE SYSREQ_EDOC_ACCESS_TYPE SYSREQ_EDOC_AUTHOR SYSREQ_EDOC_CREATED SYSREQ_EDOC_DELEGATE_RIGHTS_REQUISITE_CODE SYSREQ_EDOC_EDITOR SYSREQ_EDOC_ENCODE_TYPE SYSREQ_EDOC_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_EXPORT_DATE SYSREQ_EDOC_EXPORTER SYSREQ_EDOC_KIND SYSREQ_EDOC_LIFE_STAGE_NAME SYSREQ_EDOC_LOCKED_FOR_SERVER_CODE SYSREQ_EDOC_MODIFIED SYSREQ_EDOC_NAME SYSREQ_EDOC_NOTE SYSREQ_EDOC_QUALIFIED_ID SYSREQ_EDOC_SESSION_KEY SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_NAME SYSREQ_EDOC_SESSION_KEY_ENCRYPTION_PLUGIN_VERSION SYSREQ_EDOC_SIGNATURE_TYPE SYSREQ_EDOC_SIGNED SYSREQ_EDOC_STORAGE SYSREQ_EDOC_STORAGES_ARCHIVE_STORAGE SYSREQ_EDOC_STORAGES_CHECK_RIGHTS SYSREQ_EDOC_STORAGES_COMPUTER_NAME SYSREQ_EDOC_STORAGES_EDIT_IN_STORAGE SYSREQ_EDOC_STORAGES_EXECUTIVE_STORAGE SYSREQ_EDOC_STORAGES_FUNCTION SYSREQ_EDOC_STORAGES_INITIALIZED SYSREQ_EDOC_STORAGES_LOCAL_PATH SYSREQ_EDOC_STORAGES_SAPERION_DATABASE_NAME SYSREQ_EDOC_STORAGES_SEARCH_BY_TEXT SYSREQ_EDOC_STORAGES_SERVER_NAME SYSREQ_EDOC_STORAGES_SHARED_SOURCE_NAME SYSREQ_EDOC_STORAGES_TYPE SYSREQ_EDOC_TEXT_MODIFIED SYSREQ_EDOC_TYPE_ACT_CODE SYSREQ_EDOC_TYPE_ACT_DESCRIPTION SYSREQ_EDOC_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE SYSREQ_EDOC_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_EDOC_TYPE_ACT_SECTION SYSREQ_EDOC_TYPE_ADD_PARAMS SYSREQ_EDOC_TYPE_COMMENT SYSREQ_EDOC_TYPE_EVENT_TEXT SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR SYSREQ_EDOC_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_EDOC_TYPE_NAME_LOCALIZE_ID SYSREQ_EDOC_TYPE_NUMERATION_METHOD SYSREQ_EDOC_TYPE_PSEUDO_REQUISITE_CODE SYSREQ_EDOC_TYPE_REQ_CODE SYSREQ_EDOC_TYPE_REQ_DESCRIPTION SYSREQ_EDOC_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_EDOC_TYPE_REQ_IS_LEADING SYSREQ_EDOC_TYPE_REQ_IS_REQUIRED SYSREQ_EDOC_TYPE_REQ_NUMBER SYSREQ_EDOC_TYPE_REQ_ON_CHANGE SYSREQ_EDOC_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_EDOC_TYPE_REQ_ON_SELECT SYSREQ_EDOC_TYPE_REQ_ON_SELECT_KIND SYSREQ_EDOC_TYPE_REQ_SECTION SYSREQ_EDOC_TYPE_VIEW_CARD SYSREQ_EDOC_TYPE_VIEW_CODE SYSREQ_EDOC_TYPE_VIEW_COMMENT SYSREQ_EDOC_TYPE_VIEW_IS_MAIN SYSREQ_EDOC_TYPE_VIEW_NAME SYSREQ_EDOC_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_EDOC_VERSION_AUTHOR SYSREQ_EDOC_VERSION_CRC SYSREQ_EDOC_VERSION_DATA SYSREQ_EDOC_VERSION_EDITOR SYSREQ_EDOC_VERSION_EXPORT_DATE SYSREQ_EDOC_VERSION_EXPORTER SYSREQ_EDOC_VERSION_HIDDEN SYSREQ_EDOC_VERSION_LIFE_STAGE SYSREQ_EDOC_VERSION_MODIFIED SYSREQ_EDOC_VERSION_NOTE SYSREQ_EDOC_VERSION_SIGNATURE_TYPE SYSREQ_EDOC_VERSION_SIGNED SYSREQ_EDOC_VERSION_SIZE SYSREQ_EDOC_VERSION_SOURCE SYSREQ_EDOC_VERSION_TEXT_MODIFIED SYSREQ_EDOCKIND_DEFAULT_VERSION_STATE_CODE SYSREQ_FOLDER_KIND SYSREQ_FUNC_CATEGORY SYSREQ_FUNC_COMMENT SYSREQ_FUNC_GROUP SYSREQ_FUNC_GROUP_COMMENT SYSREQ_FUNC_GROUP_NUMBER SYSREQ_FUNC_HELP SYSREQ_FUNC_PARAM_DEF_VALUE SYSREQ_FUNC_PARAM_IDENT SYSREQ_FUNC_PARAM_NUMBER SYSREQ_FUNC_PARAM_TYPE SYSREQ_FUNC_TEXT SYSREQ_GROUP_CATEGORY SYSREQ_ID SYSREQ_LAST_UPDATE SYSREQ_LEADER_REFERENCE SYSREQ_LINE_NUMBER SYSREQ_MAIN_RECORD_ID SYSREQ_NAME SYSREQ_NAME_LOCALIZE_ID SYSREQ_NOTE SYSREQ_ORIGINAL_RECORD SYSREQ_OUR_FIRM SYSREQ_PROFILING_SETTINGS_BATCH_LOGING SYSREQ_PROFILING_SETTINGS_BATCH_SIZE SYSREQ_PROFILING_SETTINGS_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_SQL_PROFILING_ENABLED SYSREQ_PROFILING_SETTINGS_START_LOGGED SYSREQ_RECORD_STATUS SYSREQ_REF_REQ_FIELD_NAME SYSREQ_REF_REQ_FORMAT SYSREQ_REF_REQ_GENERATED SYSREQ_REF_REQ_LENGTH SYSREQ_REF_REQ_PRECISION SYSREQ_REF_REQ_REFERENCE SYSREQ_REF_REQ_SECTION SYSREQ_REF_REQ_STORED SYSREQ_REF_REQ_TOKENS SYSREQ_REF_REQ_TYPE SYSREQ_REF_REQ_VIEW SYSREQ_REF_TYPE_ACT_CODE SYSREQ_REF_TYPE_ACT_DESCRIPTION SYSREQ_REF_TYPE_ACT_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_ACT_ON_EXECUTE SYSREQ_REF_TYPE_ACT_ON_EXECUTE_EXISTS SYSREQ_REF_TYPE_ACT_SECTION SYSREQ_REF_TYPE_ADD_PARAMS SYSREQ_REF_TYPE_COMMENT SYSREQ_REF_TYPE_COMMON_SETTINGS SYSREQ_REF_TYPE_DISPLAY_REQUISITE_NAME SYSREQ_REF_TYPE_EVENT_TEXT SYSREQ_REF_TYPE_MAIN_LEADING_REF SYSREQ_REF_TYPE_NAME_IN_SINGULAR SYSREQ_REF_TYPE_NAME_IN_SINGULAR_LOCALIZE_ID SYSREQ_REF_TYPE_NAME_LOCALIZE_ID SYSREQ_REF_TYPE_NUMERATION_METHOD SYSREQ_REF_TYPE_REQ_CODE SYSREQ_REF_TYPE_REQ_DESCRIPTION SYSREQ_REF_TYPE_REQ_DESCRIPTION_LOCALIZE_ID SYSREQ_REF_TYPE_REQ_IS_CONTROL SYSREQ_REF_TYPE_REQ_IS_FILTER SYSREQ_REF_TYPE_REQ_IS_LEADING SYSREQ_REF_TYPE_REQ_IS_REQUIRED SYSREQ_REF_TYPE_REQ_NUMBER SYSREQ_REF_TYPE_REQ_ON_CHANGE SYSREQ_REF_TYPE_REQ_ON_CHANGE_EXISTS SYSREQ_REF_TYPE_REQ_ON_SELECT SYSREQ_REF_TYPE_REQ_ON_SELECT_KIND SYSREQ_REF_TYPE_REQ_SECTION SYSREQ_REF_TYPE_VIEW_CARD SYSREQ_REF_TYPE_VIEW_CODE SYSREQ_REF_TYPE_VIEW_COMMENT SYSREQ_REF_TYPE_VIEW_IS_MAIN SYSREQ_REF_TYPE_VIEW_NAME SYSREQ_REF_TYPE_VIEW_NAME_LOCALIZE_ID SYSREQ_REFERENCE_TYPE_ID SYSREQ_STATE SYSREQ_STATЕ SYSREQ_SYSTEM_SETTINGS_VALUE SYSREQ_TYPE SYSREQ_UNIT SYSREQ_UNIT_ID SYSREQ_USER_GROUPS_GROUP_FULL_NAME SYSREQ_USER_GROUPS_GROUP_NAME SYSREQ_USER_GROUPS_GROUP_SERVER_NAME SYSREQ_USERS_ACCESS_RIGHTS SYSREQ_USERS_AUTHENTICATION SYSREQ_USERS_CATEGORY SYSREQ_USERS_COMPONENT SYSREQ_USERS_COMPONENT_USER_IS_PUBLIC SYSREQ_USERS_DOMAIN SYSREQ_USERS_FULL_USER_NAME SYSREQ_USERS_GROUP SYSREQ_USERS_IS_MAIN_SERVER SYSREQ_USERS_LOGIN SYSREQ_USERS_REFERENCE_USER_IS_PUBLIC SYSREQ_USERS_STATUS SYSREQ_USERS_USER_CERTIFICATE SYSREQ_USERS_USER_CERTIFICATE_INFO SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_NAME SYSREQ_USERS_USER_CERTIFICATE_PLUGIN_VERSION SYSREQ_USERS_USER_CERTIFICATE_STATE SYSREQ_USERS_USER_CERTIFICATE_SUBJECT_NAME SYSREQ_USERS_USER_CERTIFICATE_THUMBPRINT SYSREQ_USERS_USER_DEFAULT_CERTIFICATE SYSREQ_USERS_USER_DESCRIPTION SYSREQ_USERS_USER_GLOBAL_NAME SYSREQ_USERS_USER_LOGIN SYSREQ_USERS_USER_MAIN_SERVER SYSREQ_USERS_USER_TYPE SYSREQ_WORK_RULES_FOLDER_ID RESULT_VAR_NAME RESULT_VAR_NAME_ENG AUTO_NUMERATION_RULE_ID CANT_CHANGE_ID_REQUISITE_RULE_ID CANT_CHANGE_OURFIRM_REQUISITE_RULE_ID CHECK_CHANGING_REFERENCE_RECORD_USE_RULE_ID CHECK_CODE_REQUISITE_RULE_ID CHECK_DELETING_REFERENCE_RECORD_USE_RULE_ID CHECK_FILTRATER_CHANGES_RULE_ID CHECK_RECORD_INTERVAL_RULE_ID CHECK_REFERENCE_INTERVAL_RULE_ID CHECK_REQUIRED_DATA_FULLNESS_RULE_ID CHECK_REQUIRED_REQUISITES_FULLNESS_RULE_ID MAKE_RECORD_UNRATIFIED_RULE_ID RESTORE_AUTO_NUMERATION_RULE_ID SET_FIRM_CONTEXT_FROM_RECORD_RULE_ID SET_FIRST_RECORD_IN_LIST_FORM_RULE_ID SET_IDSPS_VALUE_RULE_ID SET_NEXT_CODE_VALUE_RULE_ID SET_OURFIRM_BOUNDS_RULE_ID SET_OURFIRM_REQUISITE_RULE_ID SCRIPT_BLOCK_AFTER_FINISH_EVENT SCRIPT_BLOCK_BEFORE_START_EVENT SCRIPT_BLOCK_EXECUTION_RESULTS_PROPERTY SCRIPT_BLOCK_NAME_PROPERTY SCRIPT_BLOCK_SCRIPT_PROPERTY SUBTASK_BLOCK_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_AFTER_FINISH_EVENT SUBTASK_BLOCK_ASSIGN_PARAMS_EVENT SUBTASK_BLOCK_ATTACHMENTS_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_GROUP_PROPERTY SUBTASK_BLOCK_ATTACHMENTS_RIGHTS_TYPE_PROPERTY SUBTASK_BLOCK_BEFORE_START_EVENT SUBTASK_BLOCK_CREATED_TASK_PROPERTY SUBTASK_BLOCK_CREATION_EVENT SUBTASK_BLOCK_DEADLINE_PROPERTY SUBTASK_BLOCK_IMPORTANCE_PROPERTY SUBTASK_BLOCK_INITIATOR_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_ABORT_DEADLINE_PROPERTY SUBTASK_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY SUBTASK_BLOCK_JOBS_TYPE_PROPERTY SUBTASK_BLOCK_NAME_PROPERTY SUBTASK_BLOCK_PARALLEL_ROUTE_PROPERTY SUBTASK_BLOCK_PERFORMERS_PROPERTY SUBTASK_BLOCK_RELATIVE_ABORT_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SUBTASK_BLOCK_REQUIRE_SIGN_PROPERTY SUBTASK_BLOCK_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_START_EVENT SUBTASK_BLOCK_STEP_CONTROL_PROPERTY SUBTASK_BLOCK_SUBJECT_PROPERTY SUBTASK_BLOCK_TASK_CONTROL_PROPERTY SUBTASK_BLOCK_TEXT_PROPERTY SUBTASK_BLOCK_UNLOCK_ATTACHMENTS_ON_STOP_PROPERTY SUBTASK_BLOCK_USE_STANDARD_ROUTE_PROPERTY SUBTASK_BLOCK_WAIT_FOR_TASK_COMPLETE_PROPERTY SYSCOMP_CONTROL_JOBS SYSCOMP_FOLDERS SYSCOMP_JOBS SYSCOMP_NOTICES SYSCOMP_TASKS SYSDLG_CREATE_EDOCUMENT SYSDLG_CREATE_EDOCUMENT_VERSION SYSDLG_CURRENT_PERIOD SYSDLG_EDIT_FUNCTION_HELP SYSDLG_EDOCUMENT_KINDS_FOR_TEMPLATE SYSDLG_EXPORT_MULTIPLE_EDOCUMENTS SYSDLG_EXPORT_SINGLE_EDOCUMENT SYSDLG_IMPORT_EDOCUMENT SYSDLG_MULTIPLE_SELECT SYSDLG_SETUP_ACCESS_RIGHTS SYSDLG_SETUP_DEFAULT_RIGHTS SYSDLG_SETUP_FILTER_CONDITION SYSDLG_SETUP_SIGN_RIGHTS SYSDLG_SETUP_TASK_OBSERVERS SYSDLG_SETUP_TASK_ROUTE SYSDLG_SETUP_USERS_LIST SYSDLG_SIGN_EDOCUMENT SYSDLG_SIGN_MULTIPLE_EDOCUMENTS SYSREF_ACCESS_RIGHTS_TYPES SYSREF_ADMINISTRATION_HISTORY SYSREF_ALL_AVAILABLE_COMPONENTS SYSREF_ALL_AVAILABLE_PRIVILEGES SYSREF_ALL_REPLICATING_COMPONENTS SYSREF_AVAILABLE_DEVELOPERS_COMPONENTS SYSREF_CALENDAR_EVENTS SYSREF_COMPONENT_TOKEN_HISTORY SYSREF_COMPONENT_TOKENS SYSREF_COMPONENTS SYSREF_CONSTANTS SYSREF_DATA_RECEIVE_PROTOCOL SYSREF_DATA_SEND_PROTOCOL SYSREF_DIALOGS SYSREF_DIALOGS_REQUISITES SYSREF_EDITORS SYSREF_EDOC_CARDS SYSREF_EDOC_TYPES SYSREF_EDOCUMENT_CARD_REQUISITES SYSREF_EDOCUMENT_CARD_TYPES SYSREF_EDOCUMENT_CARD_TYPES_REFERENCE SYSREF_EDOCUMENT_CARDS SYSREF_EDOCUMENT_HISTORY SYSREF_EDOCUMENT_KINDS SYSREF_EDOCUMENT_REQUISITES SYSREF_EDOCUMENT_SIGNATURES SYSREF_EDOCUMENT_TEMPLATES SYSREF_EDOCUMENT_TEXT_STORAGES SYSREF_EDOCUMENT_VIEWS SYSREF_FILTERER_SETUP_CONFLICTS SYSREF_FILTRATER_SETTING_CONFLICTS SYSREF_FOLDER_HISTORY SYSREF_FOLDERS SYSREF_FUNCTION_GROUPS SYSREF_FUNCTION_PARAMS SYSREF_FUNCTIONS SYSREF_JOB_HISTORY SYSREF_LINKS SYSREF_LOCALIZATION_DICTIONARY SYSREF_LOCALIZATION_LANGUAGES SYSREF_MODULES SYSREF_PRIVILEGES SYSREF_RECORD_HISTORY SYSREF_REFERENCE_REQUISITES SYSREF_REFERENCE_TYPE_VIEWS SYSREF_REFERENCE_TYPES SYSREF_REFERENCES SYSREF_REFERENCES_REQUISITES SYSREF_REMOTE_SERVERS SYSREF_REPLICATION_SESSIONS_LOG SYSREF_REPLICATION_SESSIONS_PROTOCOL SYSREF_REPORTS SYSREF_ROLES SYSREF_ROUTE_BLOCK_GROUPS SYSREF_ROUTE_BLOCKS SYSREF_SCRIPTS SYSREF_SEARCHES SYSREF_SERVER_EVENTS SYSREF_SERVER_EVENTS_HISTORY SYSREF_STANDARD_ROUTE_GROUPS SYSREF_STANDARD_ROUTES SYSREF_STATUSES SYSREF_SYSTEM_SETTINGS SYSREF_TASK_HISTORY SYSREF_TASK_KIND_GROUPS SYSREF_TASK_KINDS SYSREF_TASK_RIGHTS SYSREF_TASK_SIGNATURES SYSREF_TASKS SYSREF_UNITS SYSREF_USER_GROUPS SYSREF_USER_GROUPS_REFERENCE SYSREF_USER_SUBSTITUTION SYSREF_USERS SYSREF_USERS_REFERENCE SYSREF_VIEWERS SYSREF_WORKING_TIME_CALENDARS ACCESS_RIGHTS_TABLE_NAME EDMS_ACCESS_TABLE_NAME EDOC_TYPES_TABLE_NAME TEST_DEV_DB_NAME TEST_DEV_SYSTEM_CODE TEST_EDMS_DB_NAME TEST_EDMS_MAIN_CODE TEST_EDMS_MAIN_DB_NAME TEST_EDMS_SECOND_CODE TEST_EDMS_SECOND_DB_NAME TEST_EDMS_SYSTEM_CODE TEST_ISB5_MAIN_CODE TEST_ISB5_SECOND_CODE TEST_SQL_SERVER_2005_NAME TEST_SQL_SERVER_NAME ATTENTION_CAPTION cbsCommandLinks cbsDefault CONFIRMATION_CAPTION ERROR_CAPTION INFORMATION_CAPTION mrCancel mrOk EDOC_VERSION_ACTIVE_STAGE_CODE EDOC_VERSION_DESIGN_STAGE_CODE EDOC_VERSION_OBSOLETE_STAGE_CODE cpDataEnciphermentEnabled cpDigitalSignatureEnabled cpID cpIssuer cpPluginVersion cpSerial cpSubjectName cpSubjSimpleName cpValidFromDate cpValidToDate ISBL_SYNTAX NO_SYNTAX XML_SYNTAX WAIT_BLOCK_AFTER_FINISH_EVENT WAIT_BLOCK_BEFORE_START_EVENT WAIT_BLOCK_DEADLINE_PROPERTY WAIT_BLOCK_IS_RELATIVE_DEADLINE_PROPERTY WAIT_BLOCK_NAME_PROPERTY WAIT_BLOCK_RELATIVE_DEADLINE_TYPE_PROPERTY SYSRES_COMMON SYSRES_CONST SYSRES_MBFUNC SYSRES_SBDATA SYSRES_SBGUI SYSRES_SBINTF SYSRES_SBREFDSC SYSRES_SQLERRORS SYSRES_SYSCOMP atUser atGroup atRole aemEnabledAlways aemDisabledAlways aemEnabledOnBrowse aemEnabledOnEdit aemDisabledOnBrowseEmpty apBegin apEnd alLeft alRight asmNever asmNoButCustomize asmAsLastTime asmYesButCustomize asmAlways cirCommon cirRevoked ctSignature ctEncode ctSignatureEncode clbUnchecked clbChecked clbGrayed ceISB ceAlways ceNever ctDocument ctReference ctScript ctUnknown ctReport ctDialog ctFunction ctFolder ctEDocument ctTask ctJob ctNotice ctControlJob cfInternal cfDisplay ciUnspecified ciWrite ciRead ckFolder ckEDocument ckTask ckJob ckComponentToken ckAny ckReference ckScript ckReport ckDialog ctISBLEditor ctBevel ctButton ctCheckListBox ctComboBox ctComboEdit ctGrid ctDBCheckBox ctDBComboBox ctDBEdit ctDBEllipsis ctDBMemo ctDBNavigator ctDBRadioGroup ctDBStatusLabel ctEdit ctGroupBox ctInplaceHint ctMemo ctPanel ctListBox ctRadioButton ctRichEdit ctTabSheet ctWebBrowser ctImage ctHyperLink ctLabel ctDBMultiEllipsis ctRibbon ctRichView ctInnerPanel ctPanelGroup ctBitButton cctDate cctInteger cctNumeric cctPick cctReference cctString cctText cltInternal cltPrimary cltGUI dseBeforeOpen dseAfterOpen dseBeforeClose dseAfterClose dseOnValidDelete dseBeforeDelete dseAfterDelete dseAfterDeleteOutOfTransaction dseOnDeleteError dseBeforeInsert dseAfterInsert dseOnValidUpdate dseBeforeUpdate dseOnUpdateRatifiedRecord dseAfterUpdate dseAfterUpdateOutOfTransaction dseOnUpdateError dseAfterScroll dseOnOpenRecord dseOnCloseRecord dseBeforeCancel dseAfterCancel dseOnUpdateDeadlockError dseBeforeDetailUpdate dseOnPrepareUpdate dseOnAnyRequisiteChange dssEdit dssInsert dssBrowse dssInActive dftDate dftShortDate dftDateTime dftTimeStamp dotDays dotHours dotMinutes dotSeconds dtkndLocal dtkndUTC arNone arView arEdit arFull ddaView ddaEdit emLock emEdit emSign emExportWithLock emImportWithUnlock emChangeVersionNote emOpenForModify emChangeLifeStage emDelete emCreateVersion emImport emUnlockExportedWithLock emStart emAbort emReInit emMarkAsReaded emMarkAsUnreaded emPerform emAccept emResume emChangeRights emEditRoute emEditObserver emRecoveryFromLocalCopy emChangeWorkAccessType emChangeEncodeTypeToCertificate emChangeEncodeTypeToPassword emChangeEncodeTypeToNone emChangeEncodeTypeToCertificatePassword emChangeStandardRoute emGetText emOpenForView emMoveToStorage emCreateObject emChangeVersionHidden emDeleteVersion emChangeLifeCycleStage emApprovingSign emExport emContinue emLockFromEdit emUnLockForEdit emLockForServer emUnlockFromServer emDelegateAccessRights emReEncode ecotFile ecotProcess eaGet eaCopy eaCreate eaCreateStandardRoute edltAll edltNothing edltQuery essmText essmCard esvtLast esvtLastActive esvtSpecified edsfExecutive edsfArchive edstSQLServer edstFile edvstNone edvstEDocumentVersionCopy edvstFile edvstTemplate edvstScannedFile vsDefault vsDesign vsActive vsObsolete etNone etCertificate etPassword etCertificatePassword ecException ecWarning ecInformation estAll estApprovingOnly evtLast evtLastActive evtQuery fdtString fdtNumeric fdtInteger fdtDate fdtText fdtUnknown fdtWideString fdtLargeInteger ftInbox ftOutbox ftFavorites ftCommonFolder ftUserFolder ftComponents ftQuickLaunch ftShortcuts ftSearch grhAuto grhX1 grhX2 grhX3 hltText hltRTF hltHTML iffBMP iffJPEG iffMultiPageTIFF iffSinglePageTIFF iffTIFF iffPNG im8bGrayscale im24bRGB im1bMonochrome itBMP itJPEG itWMF itPNG ikhInformation ikhWarning ikhError ikhNoIcon icUnknown icScript icFunction icIntegratedReport icAnalyticReport icDataSetEventHandler icActionHandler icFormEventHandler icLookUpEventHandler icRequisiteChangeEventHandler icBeforeSearchEventHandler icRoleCalculation icSelectRouteEventHandler icBlockPropertyCalculation icBlockQueryParamsEventHandler icChangeSearchResultEventHandler icBlockEventHandler icSubTaskInitEventHandler icEDocDataSetEventHandler icEDocLookUpEventHandler icEDocActionHandler icEDocFormEventHandler icEDocRequisiteChangeEventHandler icStructuredConversionRule icStructuredConversionEventBefore icStructuredConversionEventAfter icWizardEventHandler icWizardFinishEventHandler icWizardStepEventHandler icWizardStepFinishEventHandler icWizardActionEnableEventHandler icWizardActionExecuteEventHandler icCreateJobsHandler icCreateNoticesHandler icBeforeLookUpEventHandler icAfterLookUpEventHandler icTaskAbortEventHandler icWorkflowBlockActionHandler icDialogDataSetEventHandler icDialogActionHandler icDialogLookUpEventHandler icDialogRequisiteChangeEventHandler icDialogFormEventHandler icDialogValidCloseEventHandler icBlockFormEventHandler icTaskFormEventHandler icReferenceMethod icEDocMethod icDialogMethod icProcessMessageHandler isShow isHide isByUserSettings jkJob jkNotice jkControlJob jtInner jtLeft jtRight jtFull jtCross lbpAbove lbpBelow lbpLeft lbpRight eltPerConnection eltPerUser sfcUndefined sfcBlack sfcGreen sfcRed sfcBlue sfcOrange sfcLilac sfsItalic sfsStrikeout sfsNormal ldctStandardRoute ldctWizard ldctScript ldctFunction ldctRouteBlock ldctIntegratedReport ldctAnalyticReport ldctReferenceType ldctEDocumentType ldctDialog ldctServerEvents mrcrtNone mrcrtUser mrcrtMaximal mrcrtCustom vtEqual vtGreaterOrEqual vtLessOrEqual vtRange rdYesterday rdToday rdTomorrow rdThisWeek rdThisMonth rdThisYear rdNextMonth rdNextWeek rdLastWeek rdLastMonth rdWindow rdFile rdPrinter rdtString rdtNumeric rdtInteger rdtDate rdtReference rdtAccount rdtText rdtPick rdtUnknown rdtLargeInteger rdtDocument reOnChange reOnChangeValues ttGlobal ttLocal ttUser ttSystem ssmBrowse ssmSelect ssmMultiSelect ssmBrowseModal smSelect smLike smCard stNone stAuthenticating stApproving sctString sctStream sstAnsiSort sstNaturalSort svtEqual svtContain soatString soatNumeric soatInteger soatDatetime soatReferenceRecord soatText soatPick soatBoolean soatEDocument soatAccount soatIntegerCollection soatNumericCollection soatStringCollection soatPickCollection soatDatetimeCollection soatBooleanCollection soatReferenceRecordCollection soatEDocumentCollection soatAccountCollection soatContents soatUnknown tarAbortByUser tarAbortByWorkflowException tvtAllWords tvtExactPhrase tvtAnyWord usNone usCompleted usRedSquare usBlueSquare usYellowSquare usGreenSquare usOrangeSquare usPurpleSquare usFollowUp utUnknown utUser utDeveloper utAdministrator utSystemDeveloper utDisconnected btAnd btDetailAnd btOr btNotOr btOnly vmView vmSelect vmNavigation vsmSingle vsmMultiple vsmMultipleCheck vsmNoSelection wfatPrevious wfatNext wfatCancel wfatFinish wfepUndefined wfepText3 wfepText6 wfepText9 wfepSpinEdit wfepDropDown wfepRadioGroup wfepFlag wfepText12 wfepText15 wfepText18 wfepText21 wfepText24 wfepText27 wfepText30 wfepRadioGroupColumn1 wfepRadioGroupColumn2 wfepRadioGroupColumn3 wfetQueryParameter wfetText wfetDelimiter wfetLabel wptString wptInteger wptNumeric wptBoolean wptDateTime wptPick wptText wptUser wptUserList wptEDocumentInfo wptEDocumentInfoList wptReferenceRecordInfo wptReferenceRecordInfoList wptFolderInfo wptTaskInfo wptContents wptFileName wptDate wsrComplete wsrGoNext wsrGoPrevious wsrCustom wsrCancel wsrGoFinal wstForm wstEDocument wstTaskCard wstReferenceRecordCard wstFinal waAll waPerformers waManual wsbStart wsbFinish wsbNotice wsbStep wsbDecision wsbWait wsbMonitor wsbScript wsbConnector wsbSubTask wsbLifeCycleStage wsbPause wdtInteger wdtFloat wdtString wdtPick wdtDateTime wdtBoolean wdtTask wdtJob wdtFolder wdtEDocument wdtReferenceRecord wdtUser wdtGroup wdtRole wdtIntegerCollection wdtFloatCollection wdtStringCollection wdtPickCollection wdtDateTimeCollection wdtBooleanCollection wdtTaskCollection wdtJobCollection wdtFolderCollection wdtEDocumentCollection wdtReferenceRecordCollection wdtUserCollection wdtGroupCollection wdtRoleCollection wdtContents wdtUserList wdtSearchDescription wdtDeadLine wdtPickSet wdtAccountCollection wiLow wiNormal wiHigh wrtSoft wrtHard wsInit wsRunning wsDone wsControlled wsAborted wsContinued wtmFull wtmFromCurrent wtmOnlyCurrent \",\n        \"class\": \"AltState Application CallType ComponentTokens CreatedJobs CreatedNotices ControlState DialogResult Dialogs EDocuments EDocumentVersionSource Folders GlobalIDs Job Jobs InputValue LookUpReference LookUpRequisiteNames LookUpSearch Object ParentComponent Processes References Requisite ReportName Reports Result Scripts Searches SelectedAttachments SelectedItems SelectMode Sender ServerEvents ServiceFactory ShiftState SubTask SystemDialogs Tasks Wizard Wizards Work ВызовСпособ ИмяОтчета РеквЗнач \",\n        \"literal\": \"null true false nil \"\n    },\n    \"illegal\": \"\\\\$|\\\\?|%|,|;$|~|#|@|<\\/\",\n    \"contains\": [\n        {\n            \"className\": \"function\",\n            \"begin\": \"[A-Za-zА\\\\-Яа-яёЁ_][A-Za-zА\\\\-Яа-яёЁ_0-9]*\\\\(\",\n            \"end\": \"\\\\)$\",\n            \"returnBegin\": true,\n            \"lexemes\": \"[A-Za-zА\\\\-Яа-яёЁ_!][A-Za-zА\\\\-Яа-яёЁ_0-9]*\",\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            },\n            \"illegal\": \"[\\\\[\\\\]\\\\|\\\\$\\\\?%,~#@]\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"lexemes\": \"[A-Za-zА\\\\-Яа-яёЁ_!][A-Za-zА\\\\-Яа-яёЁ_0-9]*\",\n                    \"keywords\": {\n                        \"built_in\": \"AddSubString AdjustLineBreaks AmountInWords Analysis ArrayDimCount ArrayHighBound ArrayLowBound ArrayOf ArrayReDim Assert Assigned BeginOfMonth BeginOfPeriod BuildProfilingOperationAnalysis CallProcedure CanReadFile CArrayElement CDataSetRequisite ChangeDate ChangeReferenceDataset Char CharPos CheckParam CheckParamValue CompareStrings ConstantExists ControlState ConvertDateStr Copy CopyFile CreateArray CreateCachedReference CreateConnection CreateDialog CreateDualListDialog CreateEditor CreateException CreateFile CreateFolderDialog CreateInputDialog CreateLinkFile CreateList CreateLock CreateMemoryDataSet CreateObject CreateOpenDialog CreateProgress CreateQuery CreateReference CreateReport CreateSaveDialog CreateScript CreateSQLPivotFunction CreateStringList CreateTreeListSelectDialog CSelectSQL CSQL CSubString CurrentUserID CurrentUserName CurrentVersion DataSetLocateEx DateDiff DateTimeDiff DateToStr DayOfWeek DeleteFile DirectoryExists DisableCheckAccessRights DisableCheckFullShowingRestriction DisableMassTaskSendingRestrictions DropTable DupeString EditText EnableCheckAccessRights EnableCheckFullShowingRestriction EnableMassTaskSendingRestrictions EndOfMonth EndOfPeriod ExceptionExists ExceptionsOff ExceptionsOn Execute ExecuteProcess Exit ExpandEnvironmentVariables ExtractFileDrive ExtractFileExt ExtractFileName ExtractFilePath ExtractParams FileExists FileSize FindFile FindSubString FirmContext ForceDirectories Format FormatDate FormatNumeric FormatSQLDate FormatString FreeException GetComponent GetComponentLaunchParam GetConstant GetLastException GetReferenceRecord GetRefTypeByRefID GetTableID GetTempFolder IfThen In IndexOf InputDialog InputDialogEx InteractiveMode IsFileLocked IsGraphicFile IsNumeric Length LoadString LoadStringFmt LocalTimeToUTC LowerCase Max MessageBox MessageBoxEx MimeDecodeBinary MimeDecodeString MimeEncodeBinary MimeEncodeString Min MoneyInWords MoveFile NewID Now OpenFile Ord Precision Raise ReadCertificateFromFile ReadFile ReferenceCodeByID ReferenceNumber ReferenceRequisiteMode ReferenceRequisiteValue RegionDateSettings RegionNumberSettings RegionTimeSettings RegRead RegWrite RenameFile Replace Round SelectServerCode SelectSQL ServerDateTime SetConstant SetManagedFolderFieldsState ShowConstantsInputDialog ShowMessage Sleep Split SQL SQL2XLSTAB SQLProfilingSendReport StrToDate SubString SubStringCount SystemSetting Time TimeDiff Today Transliterate Trim UpperCase UserStatus UTCToLocalTime ValidateXML VarIsClear VarIsEmpty VarIsNull WorkTimeDiff WriteFile WriteFileEx WriteObjectHistory Анализ БазаДанных БлокЕсть БлокЕстьРасш БлокИнфо БлокСнять БлокСнятьРасш БлокУстановить Ввод ВводМеню ВедС ВедСпр ВерхняяГраницаМассива ВнешПрогр Восст ВременнаяПапка Время ВыборSQL ВыбратьЗапись ВыделитьСтр Вызвать Выполнить ВыпПрогр ГрафическийФайл ГруппаДополнительно ДатаВремяСерв ДеньНедели ДиалогДаНет ДлинаСтр ДобПодстр ЕПусто ЕслиТо ЕЧисло ЗамПодстр ЗаписьСправочника ЗначПоляСпр ИДТипСпр ИзвлечьДиск ИзвлечьИмяФайла ИзвлечьПуть ИзвлечьРасширение ИзмДат ИзменитьРазмерМассива ИзмеренийМассива ИмяОрг ИмяПоляСпр Индекс ИндикаторЗакрыть ИндикаторОткрыть ИндикаторШаг ИнтерактивныйРежим ИтогТблСпр КодВидВедСпр КодВидСпрПоИД КодПоAnalit КодСимвола КодСпр КолПодстр КолПроп КонМес Конст КонстЕсть КонстЗнач КонТран КопироватьФайл КопияСтр КПериод КСтрТблСпр Макс МаксСтрТблСпр Массив Меню МенюРасш Мин НаборДанныхНайтиРасш НаимВидСпр НаимПоAnalit НаимСпр НастроитьПереводыСтрок НачМес НачТран НижняяГраницаМассива НомерСпр НПериод Окно Окр Окружение ОтлИнфДобавить ОтлИнфУдалить Отчет ОтчетАнал ОтчетИнт ПапкаСуществует Пауза ПВыборSQL ПереименоватьФайл Переменные ПереместитьФайл Подстр ПоискПодстр ПоискСтр ПолучитьИДТаблицы ПользовательДополнительно ПользовательИД ПользовательИмя ПользовательСтатус Прервать ПроверитьПараметр ПроверитьПараметрЗнач ПроверитьУсловие РазбСтр РазнВремя РазнДат РазнДатаВремя РазнРабВремя РегУстВрем РегУстДат РегУстЧсл РедТекст РеестрЗапись РеестрСписокИменПарам РеестрЧтение РеквСпр РеквСпрПр Сегодня Сейчас Сервер СерверПроцессИД СертификатФайлСчитать СжПроб Символ СистемаДиректумКод СистемаИнформация СистемаКод Содержит СоединениеЗакрыть СоединениеОткрыть СоздатьДиалог СоздатьДиалогВыбораИзДвухСписков СоздатьДиалогВыбораПапки СоздатьДиалогОткрытияФайла СоздатьДиалогСохраненияФайла СоздатьЗапрос СоздатьИндикатор СоздатьИсключение СоздатьКэшированныйСправочник СоздатьМассив СоздатьНаборДанных СоздатьОбъект СоздатьОтчет СоздатьПапку СоздатьРедактор СоздатьСоединение СоздатьСписок СоздатьСписокСтрок СоздатьСправочник СоздатьСценарий СоздСпр СостСпр Сохр СохрСпр СписокСистем Спр Справочник СпрБлокЕсть СпрБлокСнять СпрБлокСнятьРасш СпрБлокУстановить СпрИзмНабДан СпрКод СпрНомер СпрОбновить СпрОткрыть СпрОтменить СпрПарам СпрПолеЗнач СпрПолеИмя СпрРекв СпрРеквВведЗн СпрРеквНовые СпрРеквПр СпрРеквПредЗн СпрРеквРежим СпрРеквТипТекст СпрСоздать СпрСост СпрСохранить СпрТблИтог СпрТблСтр СпрТблСтрКол СпрТблСтрМакс СпрТблСтрМин СпрТблСтрПред СпрТблСтрСлед СпрТблСтрСозд СпрТблСтрУд СпрТекПредст СпрУдалить СравнитьСтр СтрВерхРегистр СтрНижнРегистр СтрТблСпр СумПроп Сценарий СценарийПарам ТекВерсия ТекОрг Точн Тран Транслитерация УдалитьТаблицу УдалитьФайл УдСпр УдСтрТблСпр Уст УстановкиКонстант ФайлАтрибутСчитать ФайлАтрибутУстановить ФайлВремя ФайлВремяУстановить ФайлВыбрать ФайлЗанят ФайлЗаписать ФайлИскать ФайлКопировать ФайлМожноЧитать ФайлОткрыть ФайлПереименовать ФайлПерекодировать ФайлПереместить ФайлПросмотреть ФайлРазмер ФайлСоздать ФайлСсылкаСоздать ФайлСуществует ФайлСчитать ФайлУдалить ФмтSQLДат ФмтДат ФмтСтр ФмтЧсл Формат ЦМассивЭлемент ЦНаборДанныхРеквизит ЦПодстр \"\n                    },\n                    \"begin\": \"[A-Za-zА\\\\-Яа-яёЁ_][A-Za-zА\\\\-Яа-яёЁ_0-9]*\\\\(\",\n                    \"end\": \"\\\\(\",\n                    \"returnBegin\": true,\n                    \"excludeEnd\": true\n                },\n                {\n                    \"begin\": \"\\\\.\\\\s*[a-zA-Z_]\\\\w*\",\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"variable\",\n                    \"lexemes\": \"[A-Za-zА\\\\-Яа-яёЁ_!][A-Za-zА\\\\-Яа-яёЁ_0-9]*\",\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"begin\": \"[A-Za-zА\\\\-Яа-яёЁ_!][A-Za-zА\\\\-Яа-яёЁ_0-9]*\",\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"className\": \"type\",\n                            \"begin\": \":[ \\\\t]*(IApplication|IAccessRights|IAccountRepository|IAccountSelectionRestrictions|IAction|IActionList|IAdministrationHistoryDescription|IAnchors|IApplication|IArchiveInfo|IAttachment|IAttachmentList|ICheckListBox|ICheckPointedList|IColumn|IComponent|IComponentDescription|IComponentToken|IComponentTokenFactory|IComponentTokenInfo|ICompRecordInfo|IConnection|IContents|IControl|IControlJob|IControlJobInfo|IControlList|ICrypto|ICrypto2|ICustomJob|ICustomJobInfo|ICustomListBox|ICustomObjectWizardStep|ICustomWork|ICustomWorkInfo|IDataSet|IDataSetAccessInfo|IDataSigner|IDateCriterion|IDateRequisite|IDateRequisiteDescription|IDateValue|IDeaAccessRights|IDeaObjectInfo|IDevelopmentComponentLock|IDialog|IDialogFactory|IDialogPickRequisiteItems|IDialogsFactory|IDICSFactory|IDocRequisite|IDocumentInfo|IDualListDialog|IECertificate|IECertificateInfo|IECertificates|IEditControl|IEditorForm|IEdmsExplorer|IEdmsObject|IEdmsObjectDescription|IEdmsObjectFactory|IEdmsObjectInfo|IEDocument|IEDocumentAccessRights|IEDocumentDescription|IEDocumentEditor|IEDocumentFactory|IEDocumentInfo|IEDocumentStorage|IEDocumentVersion|IEDocumentVersionListDialog|IEDocumentVersionSource|IEDocumentWizardStep|IEDocVerSignature|IEDocVersionState|IEnabledMode|IEncodeProvider|IEncrypter|IEvent|IEventList|IException|IExternalEvents|IExternalHandler|IFactory|IField|IFileDialog|IFolder|IFolderDescription|IFolderDialog|IFolderFactory|IFolderInfo|IForEach|IForm|IFormTitle|IFormWizardStep|IGlobalIDFactory|IGlobalIDInfo|IGrid|IHasher|IHistoryDescription|IHyperLinkControl|IImageButton|IImageControl|IInnerPanel|IInplaceHint|IIntegerCriterion|IIntegerList|IIntegerRequisite|IIntegerValue|IISBLEditorForm|IJob|IJobDescription|IJobFactory|IJobForm|IJobInfo|ILabelControl|ILargeIntegerCriterion|ILargeIntegerRequisite|ILargeIntegerValue|ILicenseInfo|ILifeCycleStage|IList|IListBox|ILocalIDInfo|ILocalization|ILock|IMemoryDataSet|IMessagingFactory|IMetadataRepository|INotice|INoticeInfo|INumericCriterion|INumericRequisite|INumericValue|IObject|IObjectDescription|IObjectImporter|IObjectInfo|IObserver|IPanelGroup|IPickCriterion|IPickProperty|IPickRequisite|IPickRequisiteDescription|IPickRequisiteItem|IPickRequisiteItems|IPickValue|IPrivilege|IPrivilegeList|IProcess|IProcessFactory|IProcessMessage|IProgress|IProperty|IPropertyChangeEvent|IQuery|IReference|IReferenceCriterion|IReferenceEnabledMode|IReferenceFactory|IReferenceHistoryDescription|IReferenceInfo|IReferenceRecordCardWizardStep|IReferenceRequisiteDescription|IReferencesFactory|IReferenceValue|IRefRequisite|IReport|IReportFactory|IRequisite|IRequisiteDescription|IRequisiteDescriptionList|IRequisiteFactory|IRichEdit|IRouteStep|IRule|IRuleList|ISchemeBlock|IScript|IScriptFactory|ISearchCriteria|ISearchCriterion|ISearchDescription|ISearchFactory|ISearchFolderInfo|ISearchForObjectDescription|ISearchResultRestrictions|ISecuredContext|ISelectDialog|IServerEvent|IServerEventFactory|IServiceDialog|IServiceFactory|ISignature|ISignProvider|ISignProvider2|ISignProvider3|ISimpleCriterion|IStringCriterion|IStringList|IStringRequisite|IStringRequisiteDescription|IStringValue|ISystemDialogsFactory|ISystemInfo|ITabSheet|ITask|ITaskAbortReasonInfo|ITaskCardWizardStep|ITaskDescription|ITaskFactory|ITaskInfo|ITaskRoute|ITextCriterion|ITextRequisite|ITextValue|ITreeListSelectDialog|IUser|IUserList|IValue|IView|IWebBrowserControl|IWizard|IWizardAction|IWizardFactory|IWizardFormElement|IWizardParam|IWizardPickParam|IWizardReferenceParam|IWizardStep|IWorkAccessRights|IWorkDescription|IWorkflowAskableParam|IWorkflowAskableParams|IWorkflowBlock|IWorkflowBlockResult|IWorkflowEnabledMode|IWorkflowParam|IWorkflowPickParam|IWorkflowReferenceParam|IWorkState|IWorkTreeCustomNode|IWorkTreeJobNode|IWorkTreeTaskNode|IXMLEditorForm|SBCrypto)\",\n                            \"end\": \"[ \\\\t]*=\",\n                            \"excludeEnd\": true\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.1\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"string\",\n                    \"variants\": [\n                        {\n                            \"begin\": \"\\\"\",\n                            \"end\": \"\\\"\"\n                        },\n                        {\n                            \"begin\": \"'\",\n                            \"end\": \"'\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n                    \"relevance\": 0\n                },\n                {\n                    \"variants\": [\n                        {\n                            \"className\": \"comment\",\n                            \"begin\": \"\\/\\/\",\n                            \"end\": \"$\",\n                            \"relevance\": 0,\n                            \"contains\": [\n                                {\n                                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                                },\n                                {\n                                    \"className\": \"doctag\",\n                                    \"begin\": \"\\\\b(?:TODO|DONE|BEGIN|END|STUB|CHG|FIXME|NOTE|BUG|XXX)\\\\b\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        },\n                        {\n                            \"className\": \"comment\",\n                            \"begin\": \"\\/\\\\*\",\n                            \"end\": \"\\\\*\\/\",\n                            \"relevance\": 0,\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.0.contains.5.variants.0.contains.0\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.0.contains.5.variants.0.contains.1\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.0.contains.2.contains.0\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.1\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.2\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.4\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.5\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/java.json",
    "content": "{\n    \"aliases\": [\n        \"jsp\"\n    ],\n    \"keywords\": \"false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do\",\n    \"illegal\": \"<\\\\\\/|#\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\w+@\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"@[A-Za-z]+\"\n                },\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.2\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.2\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.3.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class interface\",\n            \"end\": \"[{;=]\",\n            \"excludeEnd\": true,\n            \"keywords\": \"class interface\",\n            \"illegal\": \"[:\\\"\\\\[\\\\]]\",\n            \"contains\": [\n                {\n                    \"beginKeywords\": \"extends implements\"\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"new throw return else\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"begin\": \"([À\\\\-ʸa-zA-Z_$][À\\\\-ʸa-zA-Z_$0-9]*(<[À\\\\-ʸa-zA-Z_$][À\\\\-ʸa-zA-Z_$0-9]*(\\\\s*,\\\\s*[À\\\\-ʸa-zA-Z_$][À\\\\-ʸa-zA-Z_$0-9]*)*>)?\\\\s+)+[a-zA-Z_]\\\\w*\\\\s*\\\\(\",\n            \"returnBegin\": true,\n            \"end\": \"[{;=]\",\n            \"excludeEnd\": true,\n            \"keywords\": \"false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do\",\n            \"contains\": [\n                {\n                    \"begin\": \"[a-zA-Z_]\\\\w*\\\\s*\\\\(\",\n                    \"returnBegin\": true,\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.5.contains.1\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"keywords\": \"false synchronized int abstract float private char boolean var static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do\",\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.3\"\n                        },\n                        {\n                            \"$ref\": \"#contains.4\"\n                        },\n                        {\n                            \"className\": \"number\",\n                            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"$ref\": \"#contains.2\"\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.2\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)(\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))?|\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))([eE][-+]?\\\\d+)?)[lLfF]?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"@[A-Za-z]+\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/javascript.json",
    "content": "{\n    \"aliases\": [\n        \"js\",\n        \"jsx\",\n        \"mjs\",\n        \"cjs\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as\",\n        \"literal\": \"true false null undefined NaN Infinity\",\n        \"built_in\": \"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"relevance\": 10,\n            \"begin\": \"^\\\\s*['\\\"]use (strict|asm)['\\\"]\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^#!\",\n            \"end\": \"$\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"html`\",\n            \"end\": \"\",\n            \"starts\": {\n                \"end\": \"`\",\n                \"returnEnd\": false,\n                \"contains\": [\n                    {\n                        \"$ref\": \"#contains.2.contains.0\"\n                    },\n                    {\n                        \"className\": \"subst\",\n                        \"begin\": \"\\\\$\\\\{\",\n                        \"end\": \"\\\\}\",\n                        \"keywords\": {\n                            \"$ref\": \"#keywords\"\n                        },\n                        \"contains\": [\n                            {\n                                \"$ref\": \"#contains.2\"\n                            },\n                            {\n                                \"$ref\": \"#contains.3\"\n                            },\n                            {\n                                \"$ref\": \"#contains.4\"\n                            },\n                            {\n                                \"begin\": \"css`\",\n                                \"end\": \"\",\n                                \"starts\": {\n                                    \"end\": \"`\",\n                                    \"returnEnd\": false,\n                                    \"contains\": [\n                                        {\n                                            \"$ref\": \"#contains.2.contains.0\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.4.starts.contains.1\"\n                                        }\n                                    ],\n                                    \"subLanguage\": \"css\"\n                                }\n                            },\n                            {\n                                \"className\": \"string\",\n                                \"begin\": \"`\",\n                                \"end\": \"`\",\n                                \"contains\": [\n                                    {\n                                        \"$ref\": \"#contains.2.contains.0\"\n                                    },\n                                    {\n                                        \"$ref\": \"#contains.4.starts.contains.1\"\n                                    }\n                                ]\n                            },\n                            {\n                                \"className\": \"number\",\n                                \"variants\": [\n                                    {\n                                        \"begin\": \"\\\\b(0[bB][01]+)n?\"\n                                    },\n                                    {\n                                        \"begin\": \"\\\\b(0[oO][0-7]+)n?\"\n                                    },\n                                    {\n                                        \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)n?\"\n                                    }\n                                ],\n                                \"relevance\": 0\n                            },\n                            {\n                                \"className\": \"regexp\",\n                                \"begin\": \"\\\\\\/\",\n                                \"end\": \"\\\\\\/[gimuy]*\",\n                                \"illegal\": \"\\\\n\",\n                                \"contains\": [\n                                    {\n                                        \"$ref\": \"#contains.2.contains.0\"\n                                    },\n                                    {\n                                        \"begin\": \"\\\\[\",\n                                        \"end\": \"\\\\]\",\n                                        \"relevance\": 0,\n                                        \"contains\": [\n                                            {\n                                                \"$ref\": \"#contains.2.contains.0\"\n                                            }\n                                        ]\n                                    }\n                                ]\n                            }\n                        ]\n                    }\n                ],\n                \"subLanguage\": \"xml\"\n            }\n        },\n        {\n            \"$ref\": \"#contains.4.starts.contains.1.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.4.starts.contains.1.contains.4\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"@[A-Za-z]+\",\n                    \"contains\": [\n                        {\n                            \"className\": \"type\",\n                            \"begin\": \"\\\\{\",\n                            \"end\": \"\\\\}\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"className\": \"variable\",\n                            \"begin\": \"[A-Za-z$_][0-9A-Za-z$_]*(?=\\\\s*(-)|$)\",\n                            \"endsParent\": true,\n                            \"relevance\": 0\n                        },\n                        {\n                            \"begin\": \"(?=[^\\\\n])\\\\s\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.7.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.7.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.4.starts.contains.1.contains.5\"\n        },\n        {\n            \"begin\": \"[{,\\\\n]\\\\s*\",\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"begin\": \"[A-Za-z$_][0-9A-Za-z$_]*\\\\s*:\",\n                    \"returnBegin\": true,\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"className\": \"attr\",\n                            \"begin\": \"[A-Za-z$_][0-9A-Za-z$_]*\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"begin\": \"(!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|\\/=|\\/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~|\\\\b(case|return|throw)\\\\b)\\\\s*\",\n            \"keywords\": \"return throw case\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.7\"\n                },\n                {\n                    \"$ref\": \"#contains.9\"\n                },\n                {\n                    \"$ref\": \"#contains.4.starts.contains.1.contains.6\"\n                },\n                {\n                    \"className\": \"function\",\n                    \"begin\": \"(\\\\(.*?\\\\)|[A-Za-z$_][0-9A-Za-z$_]*)\\\\s*=>\",\n                    \"returnBegin\": true,\n                    \"end\": \"\\\\s*=>\",\n                    \"contains\": [\n                        {\n                            \"className\": \"params\",\n                            \"variants\": [\n                                {\n                                    \"begin\": \"[A-Za-z$_][0-9A-Za-z$_]*\"\n                                },\n                                {\n                                    \"begin\": \"\\\\(\\\\s*\\\\)\"\n                                },\n                                {\n                                    \"begin\": \"\\\\(\",\n                                    \"end\": \"\\\\)\",\n                                    \"excludeBegin\": true,\n                                    \"excludeEnd\": true,\n                                    \"keywords\": {\n                                        \"$ref\": \"#keywords\"\n                                    },\n                                    \"contains\": [\n                                        {\n                                            \"$ref\": \"#contains.2\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.3\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.4\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.4.starts.contains.1.contains.3\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.4.starts.contains.1.contains.4\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.4.starts.contains.1.contains.5\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.4.starts.contains.1.contains.6\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.9\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.7\"\n                                        }\n                                    ]\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"\",\n                    \"begin\": \"\\\\s\",\n                    \"end\": \"\\\\s*\",\n                    \"skip\": true\n                },\n                {\n                    \"variants\": [\n                        {\n                            \"begin\": \"<>\",\n                            \"end\": \"<\\/>\"\n                        },\n                        {\n                            \"begin\": \"<[A-Za-z0-9\\\\\\\\._:-]+\",\n                            \"end\": \"\\\\\\/[A-Za-z0-9\\\\\\\\._:-]+>|\\\\\\/>\"\n                        }\n                    ],\n                    \"subLanguage\": \"xml\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"<[A-Za-z0-9\\\\\\\\._:-]+\",\n                            \"end\": \"\\\\\\/[A-Za-z0-9\\\\\\\\._:-]+>|\\\\\\/>\",\n                            \"skip\": true,\n                            \"contains\": [\n                                \"self\"\n                            ]\n                        }\n                    ]\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"function\",\n            \"end\": \"\\\\{\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[A-Za-z$_][0-9A-Za-z$_]*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true,\n                    \"contains\": {\n                        \"$ref\": \"#contains.12.contains.3.contains.0.variants.2.contains\"\n                    }\n                }\n            ],\n            \"illegal\": \"\\\\[|%\"\n        },\n        {\n            \"begin\": \"\\\\$[(.]\"\n        },\n        {\n            \"begin\": \"\\\\.\\\\s*[a-zA-Z_]\\\\w*\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class\",\n            \"end\": \"[{;=]\",\n            \"excludeEnd\": true,\n            \"illegal\": \"[:\\\"\\\\[\\\\]]\",\n            \"contains\": [\n                {\n                    \"beginKeywords\": \"extends\"\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"constructor get set\",\n            \"end\": \"\\\\{\",\n            \"excludeEnd\": true\n        }\n    ],\n    \"illegal\": \"#(?!!)\"\n}\n"
  },
  {
    "path": "includes/Highlight/languages/jboss-cli.json",
    "content": "{\n    \"aliases\": [\n        \"wildfly-cli\"\n    ],\n    \"lexemes\": \"[a-z\\\\-]+\",\n    \"keywords\": {\n        \"keyword\": \"alias batch cd clear command connect connection-factory connection-info data-source deploy deployment-info deployment-overlay echo echo-dmr help history if jdbc-driver-info jms-queue|20 jms-topic|20 ls patch pwd quit read-attribute read-operation reload rollout-plan run-batch set shutdown try unalias undeploy unset version xa-data-source\",\n        \"literal\": \"true false\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"params\",\n            \"begin\": \"--[\\\\w\\\\-=\\\\\\/]+\"\n        },\n        {\n            \"className\": \"function\",\n            \"begin\": \":[\\\\w\\\\-.]+\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\\B(([\\\\\\/.])[\\\\w\\\\-.\\\\\\/=]+)+\"\n        },\n        {\n            \"className\": \"params\",\n            \"begin\": \"\\\\(\",\n            \"end\": \"\\\\)\",\n            \"contains\": [\n                {\n                    \"begin\": \"[\\\\w\\\\-]+ *=\",\n                    \"returnBegin\": true,\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"className\": \"attr\",\n                            \"begin\": \"[\\\\w\\\\-]+\"\n                        }\n                    ]\n                }\n            ],\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/json.json",
    "content": "{\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"{\",\n            \"end\": \"}\",\n            \"contains\": [\n                {\n                    \"className\": \"attr\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.0\"\n                        }\n                    ],\n                    \"illegal\": \"\\\\n\"\n                },\n                {\n                    \"end\": \",\",\n                    \"endsWithParent\": true,\n                    \"excludeEnd\": true,\n                    \"contains\": {\n                        \"$ref\": \"#contains\"\n                    },\n                    \"keywords\": {\n                        \"literal\": \"true false null\"\n                    },\n                    \"begin\": \":\"\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"\\/\\/\",\n                    \"end\": \"$\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"\\/\\\\*\",\n                    \"end\": \"\\\\*\\/\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2.contains.2.contains.0\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ],\n            \"illegal\": \"\\\\S\"\n        },\n        {\n            \"begin\": \"\\\\[\",\n            \"end\": \"\\\\]\",\n            \"contains\": [\n                {\n                    \"end\": \",\",\n                    \"endsWithParent\": true,\n                    \"excludeEnd\": true,\n                    \"contains\": {\n                        \"$ref\": \"#contains\"\n                    },\n                    \"keywords\": {\n                        \"$ref\": \"#contains.2.contains.1.keywords\"\n                    }\n                }\n            ],\n            \"illegal\": \"\\\\S\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.2\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.3\"\n        }\n    ],\n    \"keywords\": {\n        \"$ref\": \"#contains.2.contains.1.keywords\"\n    },\n    \"illegal\": \"\\\\S\"\n}\n"
  },
  {
    "path": "includes/Highlight/languages/julia-repl.json",
    "content": "{\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^julia>\",\n            \"relevance\": 10,\n            \"starts\": {\n                \"end\": \"^(?![ ]{6})\",\n                \"subLanguage\": \"julia\"\n            },\n            \"aliases\": [\n                \"jldoctest\"\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/julia.json",
    "content": "{\n    \"lexemes\": \"[A-Za-z_\\\\x{00A1}-\\\\x{FFFF}][A-Za-z_0-9\\\\x{00A1}-\\\\x{FFFF}]*\",\n    \"keywords\": {\n        \"keyword\": \"in isa where baremodule begin break catch ccall const continue do else elseif end export false finally for function global if import importall let local macro module quote return true try using while type immutable abstract bitstype typealias \",\n        \"literal\": \"true false ARGS C_NULL DevNull ENDIAN_BOM ENV I Inf Inf16 Inf32 Inf64 InsertionSort JULIA_HOME LOAD_PATH MergeSort NaN NaN16 NaN32 NaN64 PROGRAM_FILE QuickSort RoundDown RoundFromZero RoundNearest RoundNearestTiesAway RoundNearestTiesUp RoundToZero RoundUp STDERR STDIN STDOUT VERSION catalan e|0 eu|0 eulergamma golden im nothing pi γ π φ \",\n        \"built_in\": \"ANY AbstractArray AbstractChannel AbstractFloat AbstractMatrix AbstractRNG AbstractSerializer AbstractSet AbstractSparseArray AbstractSparseMatrix AbstractSparseVector AbstractString AbstractUnitRange AbstractVecOrMat AbstractVector Any ArgumentError Array AssertionError Associative Base64DecodePipe Base64EncodePipe Bidiagonal BigFloat BigInt BitArray BitMatrix BitVector Bool BoundsError BufferStream CachingPool CapturedException CartesianIndex CartesianRange Cchar Cdouble Cfloat Channel Char Cint Cintmax_t Clong Clonglong ClusterManager Cmd CodeInfo Colon Complex Complex128 Complex32 Complex64 CompositeException Condition ConjArray ConjMatrix ConjVector Cptrdiff_t Cshort Csize_t Cssize_t Cstring Cuchar Cuint Cuintmax_t Culong Culonglong Cushort Cwchar_t Cwstring DataType Date DateFormat DateTime DenseArray DenseMatrix DenseVecOrMat DenseVector Diagonal Dict DimensionMismatch Dims DirectIndexString Display DivideError DomainError EOFError EachLine Enum Enumerate ErrorException Exception ExponentialBackOff Expr Factorization FileMonitor Float16 Float32 Float64 Function Future GlobalRef GotoNode HTML Hermitian IO IOBuffer IOContext IOStream IPAddr IPv4 IPv6 IndexCartesian IndexLinear IndexStyle InexactError InitError Int Int128 Int16 Int32 Int64 Int8 IntSet Integer InterruptException InvalidStateException Irrational KeyError LabelNode LinSpace LineNumberNode LoadError LowerTriangular MIME Matrix MersenneTwister Method MethodError MethodTable Module NTuple NewvarNode NullException Nullable Number ObjectIdDict OrdinalRange OutOfMemoryError OverflowError Pair ParseError PartialQuickSort PermutedDimsArray Pipe PollingFileWatcher ProcessExitedException Ptr QuoteNode RandomDevice Range RangeIndex Rational RawFD ReadOnlyMemoryError Real ReentrantLock Ref Regex RegexMatch RemoteChannel RemoteException RevString RoundingMode RowVector SSAValue SegmentationFault SerializationState Set SharedArray SharedMatrix SharedVector Signed SimpleVector Slot SlotNumber SparseMatrixCSC SparseVector StackFrame StackOverflowError StackTrace StepRange StepRangeLen StridedArray StridedMatrix StridedVecOrMat StridedVector String SubArray SubString SymTridiagonal Symbol Symmetric SystemError TCPSocket Task Text TextDisplay Timer Tridiagonal Tuple Type TypeError TypeMapEntry TypeMapLevel TypeName TypeVar TypedSlot UDPSocket UInt UInt128 UInt16 UInt32 UInt64 UInt8 UndefRefError UndefVarError UnicodeError UniformScaling Union UnionAll UnitRange Unsigned UpperTriangular Val Vararg VecElement VecOrMat Vector VersionNumber Void WeakKeyDict WeakRef WorkerConfig WorkerPool \"\n    },\n    \"illegal\": \"<\\\\\\/\",\n    \"contains\": [\n        {\n            \"className\": \"number\",\n            \"begin\": \"(\\\\b0x[\\\\d_]*(\\\\.[\\\\d_]*)?|0x\\\\.\\\\d[\\\\d_]*)p[-+]?\\\\d+|\\\\b0[box][a-fA-F0-9][a-fA-F0-9_]*|(\\\\b\\\\d[\\\\d_]*(\\\\.[\\\\d_]*)?|\\\\.\\\\d[\\\\d_]*)([eEfF][-+]?\\\\d+)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'(.|\\\\\\\\[xXuU][a-zA-Z0-9]+)'\"\n        },\n        {\n            \"className\": \"string\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"subst\",\n                    \"begin\": \"\\\\$\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"contains\": {\n                        \"$ref\": \"#contains\"\n                    }\n                },\n                {\n                    \"className\": \"variable\",\n                    \"begin\": \"\\\\$[A-Za-z_\\\\x{00A1}-\\\\x{FFFF}][A-Za-z_0-9\\\\x{00A1}-\\\\x{FFFF}]*\"\n                }\n            ],\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\w*\\\"\\\"\\\"\",\n                    \"end\": \"\\\"\\\"\\\"\\\\w*\",\n                    \"relevance\": 10\n                },\n                {\n                    \"begin\": \"\\\\w*\\\"\",\n                    \"end\": \"\\\"\\\\w*\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.2.contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.2.contains.2\"\n                }\n            ],\n            \"begin\": \"`\",\n            \"end\": \"`\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"@[A-Za-z_\\\\x{00A1}-\\\\x{FFFF}][A-Za-z_0-9\\\\x{00A1}-\\\\x{FFFF}]*\"\n        },\n        {\n            \"className\": \"comment\",\n            \"variants\": [\n                {\n                    \"begin\": \"#=\",\n                    \"end\": \"=#\",\n                    \"relevance\": 10\n                },\n                {\n                    \"begin\": \"#\",\n                    \"end\": \"$\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\\\b(((abstract|primitive)\\\\s+)type|(mutable\\\\s+)?struct)\\\\b\"\n        },\n        {\n            \"begin\": \"<:\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/kotlin.json",
    "content": "{\n    \"aliases\": [\n        \"kt\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"abstract as val var vararg get set class object open private protected public noinline crossinline dynamic final enum if else do while for when throw try catch finally import package is in fun override companion reified inline lateinit init interface annotation data sealed internal infix operator out by constructor super tailrec where const inner suspend typealias external expect actual trait volatile transient native default\",\n        \"built_in\": \"Byte Short Char Int Long Boolean Float Double Void Unit Nothing\",\n        \"literal\": \"true false null\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"@[A-Za-z]+\"\n                },\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.1\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"\\/\\\\*\",\n                    \"end\": \"\\\\*\\/\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.1\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.1\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\\\b(break|continue|return|this)\\\\b\",\n            \"starts\": {\n                \"contains\": [\n                    {\n                        \"className\": \"symbol\",\n                        \"begin\": \"@\\\\w+\"\n                    }\n                ]\n            }\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"[a-zA-Z_]\\\\w*@\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"@(?:file|property|field|get|set|receiver|param|setparam|delegate)\\\\s*:(?:\\\\s*[a-zA-Z_]\\\\w*)?\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"@[a-zA-Z_]\\\\w*\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"contains\": [\n                        {\n                            \"className\": \"meta-string\",\n                            \"variants\": [\n                                {\n                                    \"begin\": \"\\\"\\\"\\\"\",\n                                    \"end\": \"\\\"\\\"\\\"(?=[^\\\"])\",\n                                    \"contains\": [\n                                        {\n                                            \"className\": \"variable\",\n                                            \"begin\": \"\\\\$[a-zA-Z_]\\\\w*\"\n                                        },\n                                        {\n                                            \"className\": \"subst\",\n                                            \"begin\": \"\\\\${\",\n                                            \"end\": \"}\",\n                                            \"contains\": [\n                                                {\n                                                    \"className\": \"number\",\n                                                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                                                    \"relevance\": 0\n                                                },\n                                                {\n                                                    \"className\": \"string\",\n                                                    \"variants\": {\n                                                        \"$ref\": \"#contains.6.contains.0.contains.0.variants\"\n                                                    }\n                                                }\n                                            ]\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"begin\": \"'\",\n                                    \"end\": \"'\",\n                                    \"illegal\": \"\\\\n\",\n                                    \"contains\": [\n                                        {\n                                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                            \"relevance\": 0\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"begin\": \"\\\"\",\n                                    \"end\": \"\\\"\",\n                                    \"illegal\": \"\\\\n\",\n                                    \"contains\": [\n                                        {\n                                            \"$ref\": \"#contains.6.contains.0.contains.0.variants.1.contains.0\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.6.contains.0.contains.0.variants.0.contains.0\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.6.contains.0.contains.0.variants.0.contains.1\"\n                                        }\n                                    ]\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"fun\",\n            \"end\": \"[(]|$\",\n            \"returnBegin\": true,\n            \"excludeEnd\": true,\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            },\n            \"illegal\": \"fun\\\\s+(<.*>)?[^\\\\s\\\\(]+(\\\\s+[^\\\\s\\\\(]+)\\\\s*=\",\n            \"relevance\": 5,\n            \"contains\": [\n                {\n                    \"begin\": \"[a-zA-Z_]\\\\w*\\\\s*\\\\(\",\n                    \"returnBegin\": true,\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"className\": \"title\",\n                            \"begin\": \"[a-zA-Z_]\\\\w*\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"type\",\n                    \"begin\": \"<\",\n                    \"end\": \">\",\n                    \"keywords\": \"reified\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"endsParent\": true,\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"begin\": \":\",\n                            \"end\": \"[=,\\\\\\/]\",\n                            \"endsWithParent\": true,\n                            \"contains\": [\n                                {\n                                    \"variants\": [\n                                        {\n                                            \"className\": \"type\",\n                                            \"begin\": \"[a-zA-Z_]\\\\w*\"\n                                        },\n                                        {\n                                            \"begin\": \"\\\\(\",\n                                            \"end\": \"\\\\)\",\n                                            \"contains\": [\n                                                {\n                                                    \"$ref\": \"#contains.7.contains.2.contains.0.contains.0\"\n                                                }\n                                            ]\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"$ref\": \"#contains.1\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.2\"\n                                }\n                            ],\n                            \"relevance\": 0\n                        },\n                        {\n                            \"$ref\": \"#contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.5\"\n                        },\n                        {\n                            \"$ref\": \"#contains.6\"\n                        },\n                        {\n                            \"$ref\": \"#contains.6.contains.0.contains.0.variants.0.contains.1.contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.6.contains.0.contains.0.variants.0.contains.1.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.2\"\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class interface trait\",\n            \"end\": \"[:\\\\{(]|$\",\n            \"excludeEnd\": true,\n            \"illegal\": \"extends implements\",\n            \"contains\": [\n                {\n                    \"beginKeywords\": \"public protected internal private constructor\"\n                },\n                {\n                    \"$ref\": \"#contains.7.contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"type\",\n                    \"begin\": \"<\",\n                    \"end\": \">\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true,\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"type\",\n                    \"begin\": \"[,:]\\\\s*\",\n                    \"end\": \"[<\\\\(,]|$\",\n                    \"excludeBegin\": true,\n                    \"returnEnd\": true\n                },\n                {\n                    \"$ref\": \"#contains.5\"\n                },\n                {\n                    \"$ref\": \"#contains.6\"\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.6.contains.0.contains.0.variants.0.contains.1.contains.1\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^#!\\/usr\\/bin\\/env\",\n            \"end\": \"$\",\n            \"illegal\": \"\\n\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+)(\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))?|\\\\.([\\\\d]+[\\\\d_]+[\\\\d]+|[\\\\d]+))([eE][-+]?\\\\d+)?)[lLfF]?\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/lasso.json",
    "content": "{\n    \"aliases\": [\n        \"ls\",\n        \"lassoscript\"\n    ],\n    \"case_insensitive\": true,\n    \"lexemes\": \"[a-zA-Z_][\\\\w.]*|&[lg]t;\",\n    \"keywords\": {\n        \"literal\": \"true false none minimal full all void and or not bw nbw ew new cn ncn lt lte gt gte eq neq rx nrx ft\",\n        \"built_in\": \"array date decimal duration integer map pair string tag xml null boolean bytes keyword list locale queue set stack staticarray local var variable global data self inherited currentcapture givenblock\",\n        \"keyword\": \"cache database_names database_schemanames database_tablenames define_tag define_type email_batch encode_set html_comment handle handle_error header if inline iterate ljax_target link link_currentaction link_currentgroup link_currentrecord link_detail link_firstgroup link_firstrecord link_lastgroup link_lastrecord link_nextgroup link_nextrecord link_prevgroup link_prevrecord log loop namespace_using output_none portal private protect records referer referrer repeating resultset rows search_args search_arguments select sort_args sort_arguments thread_atomic value_list while abort case else fail_if fail_ifnot fail if_empty if_false if_null if_true loop_abort loop_continue loop_count params params_up return return_value run_children soap_definetag soap_lastrequest soap_lastresponse tag_name ascending average by define descending do equals frozen group handle_failure import in into join let match max min on order parent protected provide public require returnhome skip split_thread sum take thread to trait type where with yield yieldhome\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"begin\": \"\\\\]|\\\\?>\",\n            \"relevance\": 0,\n            \"starts\": {\n                \"end\": \"\\\\[|<\\\\?(lasso(script)?|=)\",\n                \"returnEnd\": true,\n                \"relevance\": 0,\n                \"contains\": [\n                    {\n                        \"className\": \"comment\",\n                        \"begin\": \"<!--\",\n                        \"end\": \"-->\",\n                        \"contains\": [\n                            {\n                                \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                            },\n                            {\n                                \"className\": \"doctag\",\n                                \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                \"relevance\": 0\n                            }\n                        ],\n                        \"relevance\": 0\n                    }\n                ]\n            }\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"\\\\[noprocess\\\\]\",\n            \"starts\": {\n                \"end\": \"\\\\[\\/noprocess\\\\]\",\n                \"returnEnd\": true,\n                \"contains\": [\n                    {\n                        \"$ref\": \"#contains.0.starts.contains.0\"\n                    }\n                ]\n            }\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"\\\\[\\/noprocess|<\\\\?(lasso(script)?|=)\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"\\\\[no_square_brackets\",\n            \"starts\": {\n                \"end\": \"\\\\[\\/no_square_brackets\\\\]\",\n                \"lexemes\": \"[a-zA-Z_][\\\\w.]*|&[lg]t;\",\n                \"keywords\": {\n                    \"$ref\": \"#keywords\"\n                },\n                \"contains\": [\n                    {\n                        \"className\": \"meta\",\n                        \"begin\": \"\\\\]|\\\\?>\",\n                        \"relevance\": 0,\n                        \"starts\": {\n                            \"end\": \"\\\\[noprocess\\\\]|<\\\\?(lasso(script)?|=)\",\n                            \"returnEnd\": true,\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.0.starts.contains.0\"\n                                }\n                            ]\n                        }\n                    },\n                    {\n                        \"$ref\": \"#contains.1\"\n                    },\n                    {\n                        \"$ref\": \"#contains.2\"\n                    },\n                    {\n                        \"className\": \"comment\",\n                        \"begin\": \"\\/\\/\",\n                        \"end\": \"$\",\n                        \"contains\": [\n                            {\n                                \"$ref\": \"#contains.0.starts.contains.0.contains.0\"\n                            },\n                            {\n                                \"className\": \"doctag\",\n                                \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                \"relevance\": 0\n                            }\n                        ]\n                    },\n                    {\n                        \"className\": \"comment\",\n                        \"begin\": \"\\/\\\\*\",\n                        \"end\": \"\\\\*\\/\",\n                        \"contains\": [\n                            {\n                                \"$ref\": \"#contains.0.starts.contains.0.contains.0\"\n                            },\n                            {\n                                \"className\": \"doctag\",\n                                \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                \"relevance\": 0\n                            }\n                        ]\n                    },\n                    {\n                        \"className\": \"number\",\n                        \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)|(-?infinity|NaN)\\\\b\",\n                        \"relevance\": 0\n                    },\n                    {\n                        \"className\": \"string\",\n                        \"begin\": \"'\",\n                        \"end\": \"'\",\n                        \"illegal\": null,\n                        \"contains\": [\n                            {\n                                \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                \"relevance\": 0\n                            }\n                        ]\n                    },\n                    {\n                        \"className\": \"string\",\n                        \"begin\": \"\\\"\",\n                        \"end\": \"\\\"\",\n                        \"illegal\": null,\n                        \"contains\": [\n                            {\n                                \"$ref\": \"#contains.3.starts.contains.6.contains.0\"\n                            }\n                        ]\n                    },\n                    {\n                        \"className\": \"string\",\n                        \"begin\": \"`\",\n                        \"end\": \"`\"\n                    },\n                    {\n                        \"variants\": [\n                            {\n                                \"begin\": \"[#$][a-zA-Z_][\\\\w.]*\"\n                            },\n                            {\n                                \"begin\": \"#\",\n                                \"end\": \"\\\\d+\",\n                                \"illegal\": \"\\\\W\"\n                            }\n                        ]\n                    },\n                    {\n                        \"className\": \"type\",\n                        \"begin\": \"::\\\\s*\",\n                        \"end\": \"[a-zA-Z_][\\\\w.]*\",\n                        \"illegal\": \"\\\\W\"\n                    },\n                    {\n                        \"className\": \"params\",\n                        \"variants\": [\n                            {\n                                \"begin\": \"-(?!infinity)[a-zA-Z_][\\\\w.]*\",\n                                \"relevance\": 0\n                            },\n                            {\n                                \"begin\": \"(\\\\.\\\\.\\\\.)\"\n                            }\n                        ]\n                    },\n                    {\n                        \"begin\": \"(->|\\\\.)\\\\s*\",\n                        \"relevance\": 0,\n                        \"contains\": [\n                            {\n                                \"className\": \"symbol\",\n                                \"begin\": \"'[a-zA-Z_][\\\\w.]*'\"\n                            }\n                        ]\n                    },\n                    {\n                        \"className\": \"class\",\n                        \"beginKeywords\": \"define\",\n                        \"returnEnd\": true,\n                        \"end\": \"\\\\(|=>\",\n                        \"contains\": [\n                            {\n                                \"className\": \"title\",\n                                \"begin\": \"[a-zA-Z_][\\\\w.]*(=(?!>))?|[-+*\\/%](?!>)\",\n                                \"relevance\": 0\n                            }\n                        ]\n                    }\n                ]\n            }\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"\\\\[\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^#!\",\n            \"end\": \"lasso9$\",\n            \"relevance\": 10\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.4\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.5\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.6\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.7\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.8\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.9\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.10\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.11\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.12\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.13\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/ldif.json",
    "content": "{\n    \"contains\": [\n        {\n            \"className\": \"attribute\",\n            \"begin\": \"^dn\",\n            \"end\": \": \",\n            \"excludeEnd\": true,\n            \"starts\": {\n                \"end\": \"$\",\n                \"relevance\": 0\n            },\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"attribute\",\n            \"begin\": \"^\\\\w\",\n            \"end\": \": \",\n            \"excludeEnd\": true,\n            \"starts\": {\n                \"end\": \"$\",\n                \"relevance\": 0\n            }\n        },\n        {\n            \"className\": \"literal\",\n            \"begin\": \"^-\",\n            \"end\": \"$\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/leaf.json",
    "content": "{\n    \"contains\": [\n        {\n            \"className\": \"function\",\n            \"begin\": \"#+[A-Za-z_0-9]*\\\\(\",\n            \"end\": \" {\",\n            \"returnBegin\": true,\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"className\": \"keyword\",\n                    \"begin\": \"#+\"\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[A-Za-z_][A-Za-z_0-9]*\"\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"endsParent\": true,\n                    \"contains\": [\n                        {\n                            \"className\": \"string\",\n                            \"begin\": \"\\\"\",\n                            \"end\": \"\\\"\"\n                        },\n                        {\n                            \"className\": \"variable\",\n                            \"begin\": \"[A-Za-z_][A-Za-z_0-9]*\"\n                        }\n                    ]\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/less.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"illegal\": \"[=>'\\/<($\\\"]\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\\\b\",\n            \"starts\": {\n                \"end\": \"[;{}]\",\n                \"returnEnd\": true,\n                \"contains\": [\n                    {\n                        \"$ref\": \"#contains.0\"\n                    },\n                    {\n                        \"$ref\": \"#contains.1\"\n                    },\n                    {\n                        \"className\": \"string\",\n                        \"begin\": \"~?'.*?'\"\n                    },\n                    {\n                        \"className\": \"string\",\n                        \"begin\": \"~?\\\".*?\\\"\"\n                    },\n                    {\n                        \"className\": \"number\",\n                        \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\",\n                        \"relevance\": 0\n                    },\n                    {\n                        \"begin\": \"(url|data-uri)\\\\(\",\n                        \"starts\": {\n                            \"className\": \"string\",\n                            \"end\": \"[\\\\)\\\\n]\",\n                            \"excludeEnd\": true\n                        }\n                    },\n                    {\n                        \"className\": \"number\",\n                        \"begin\": \"#[0-9A-Fa-f]+\\\\b\"\n                    },\n                    {\n                        \"begin\": \"\\\\(\",\n                        \"end\": \"\\\\)\",\n                        \"contains\": {\n                            \"$ref\": \"#contains.2.starts.contains\"\n                        },\n                        \"relevance\": 0\n                    },\n                    {\n                        \"className\": \"variable\",\n                        \"begin\": \"@@?[\\\\w\\\\-]+\",\n                        \"relevance\": 10\n                    },\n                    {\n                        \"className\": \"variable\",\n                        \"begin\": \"@{[\\\\w\\\\-]+}\"\n                    },\n                    {\n                        \"className\": \"built_in\",\n                        \"begin\": \"~?`[^`]*?`\"\n                    },\n                    {\n                        \"className\": \"attribute\",\n                        \"begin\": \"[\\\\w\\\\-]+\\\\s*:\",\n                        \"end\": \":\",\n                        \"returnBegin\": true,\n                        \"excludeEnd\": true\n                    },\n                    {\n                        \"className\": \"meta\",\n                        \"begin\": \"!important\"\n                    }\n                ],\n                \"relevance\": 0\n            }\n        },\n        {\n            \"className\": \"variable\",\n            \"variants\": [\n                {\n                    \"begin\": \"@[\\\\w\\\\-]+\\\\s*:\",\n                    \"relevance\": 15\n                },\n                {\n                    \"begin\": \"@[\\\\w\\\\-]+\"\n                }\n            ],\n            \"starts\": {\n                \"end\": \"[;}]\",\n                \"returnEnd\": true,\n                \"contains\": [\n                    {\n                        \"$ref\": \"#contains.0\"\n                    },\n                    {\n                        \"$ref\": \"#contains.1\"\n                    },\n                    {\n                        \"$ref\": \"#contains.2.starts.contains.2\"\n                    },\n                    {\n                        \"$ref\": \"#contains.2.starts.contains.3\"\n                    },\n                    {\n                        \"$ref\": \"#contains.2.starts.contains.4\"\n                    },\n                    {\n                        \"$ref\": \"#contains.2.starts.contains.5\"\n                    },\n                    {\n                        \"$ref\": \"#contains.2.starts.contains.6\"\n                    },\n                    {\n                        \"$ref\": \"#contains.2.starts.contains.7\"\n                    },\n                    {\n                        \"$ref\": \"#contains.2.starts.contains.8\"\n                    },\n                    {\n                        \"$ref\": \"#contains.2.starts.contains.9\"\n                    },\n                    {\n                        \"$ref\": \"#contains.2.starts.contains.10\"\n                    },\n                    {\n                        \"$ref\": \"#contains.2.starts.contains.11\"\n                    },\n                    {\n                        \"$ref\": \"#contains.2.starts.contains.12\"\n                    },\n                    {\n                        \"begin\": \"{\",\n                        \"end\": \"}\",\n                        \"contains\": {\n                            \"$ref\": \"#contains\"\n                        }\n                    }\n                ]\n            }\n        },\n        {\n            \"begin\": \"([\\\\w\\\\-]+|@{[\\\\w\\\\-]+})\\\\s*:\",\n            \"returnBegin\": true,\n            \"end\": \"[;}]\",\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"className\": \"attribute\",\n                    \"begin\": \"([\\\\w\\\\-]+|@{[\\\\w\\\\-]+})\",\n                    \"end\": \":\",\n                    \"excludeEnd\": true,\n                    \"starts\": {\n                        \"endsWithParent\": true,\n                        \"illegal\": \"[<=$]\",\n                        \"relevance\": 0,\n                        \"contains\": {\n                            \"$ref\": \"#contains.2.starts.contains\"\n                        }\n                    }\n                }\n            ]\n        },\n        {\n            \"variants\": [\n                {\n                    \"begin\": \"[\\\\.#:&\\\\[>]\",\n                    \"end\": \"[;{}]\"\n                },\n                {\n                    \"begin\": \"([\\\\w\\\\-]+|@{[\\\\w\\\\-]+})\",\n                    \"end\": \"{\"\n                }\n            ],\n            \"returnBegin\": true,\n            \"returnEnd\": true,\n            \"illegal\": \"[<='$\\\"]\",\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.1\"\n                },\n                {\n                    \"beginKeywords\": \"when\",\n                    \"endsWithParent\": true,\n                    \"contains\": [\n                        {\n                            \"beginKeywords\": \"and not\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2.starts.contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2.starts.contains.3\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2.starts.contains.4\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2.starts.contains.5\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2.starts.contains.6\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2.starts.contains.7\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2.starts.contains.8\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2.starts.contains.9\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2.starts.contains.10\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2.starts.contains.11\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2.starts.contains.12\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"keyword\",\n                    \"begin\": \"all\\\\b\"\n                },\n                {\n                    \"className\": \"variable\",\n                    \"begin\": \"@{[\\\\w\\\\-]+}\"\n                },\n                {\n                    \"className\": \"selector-tag\",\n                    \"begin\": \"([\\\\w\\\\-]+|@{[\\\\w\\\\-]+})%?\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"selector-id\",\n                    \"begin\": \"#([\\\\w\\\\-]+|@{[\\\\w\\\\-]+})\"\n                },\n                {\n                    \"className\": \"selector-class\",\n                    \"begin\": \"\\\\.([\\\\w\\\\-]+|@{[\\\\w\\\\-]+})\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"selector-tag\",\n                    \"begin\": \"&\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"selector-attr\",\n                    \"begin\": \"\\\\[\",\n                    \"end\": \"\\\\]\"\n                },\n                {\n                    \"className\": \"selector-pseudo\",\n                    \"begin\": \":(:)?[a-zA-Z0-9\\\\_\\\\-\\\\+\\\\(\\\\)\\\"'.]+\"\n                },\n                {\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"contains\": {\n                        \"$ref\": \"#contains.3.starts.contains\"\n                    }\n                },\n                {\n                    \"begin\": \"!important\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/lisp.json",
    "content": "{\n    \"illegal\": \"\\\\S\",\n    \"contains\": [\n        {\n            \"className\": \"number\",\n            \"variants\": [\n                {\n                    \"begin\": \"(\\\\-|\\\\+)?\\\\d+(\\\\.\\\\d+|\\\\\\/\\\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\\\+|\\\\-)?\\\\d+)?\",\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"#(b|B)[0-1]+(\\/[0-1]+)?\"\n                },\n                {\n                    \"begin\": \"#(o|O)[0-7]+(\\/[0-7]+)?\"\n                },\n                {\n                    \"begin\": \"#(x|X)[0-9a-fA-F]+(\\/[0-9a-fA-F]+)?\"\n                },\n                {\n                    \"begin\": \"#(c|C)\\\\((\\\\-|\\\\+)?\\\\d+(\\\\.\\\\d+|\\\\\\/\\\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\\\+|\\\\-)?\\\\d+)? +(\\\\-|\\\\+)?\\\\d+(\\\\.\\\\d+|\\\\\\/\\\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\\\+|\\\\-)?\\\\d+)?\",\n                    \"end\": \"\\\\)\"\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^#!\",\n            \"end\": \"$\"\n        },\n        {\n            \"className\": \"literal\",\n            \"begin\": \"\\\\b(t{1}|nil)\\\\b\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": null,\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \";\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.3\"\n                },\n                {\n                    \"begin\": \"\\\\*\",\n                    \"end\": \"\\\\*\"\n                },\n                {\n                    \"className\": \"symbol\",\n                    \"begin\": \"[:&][a-zA-Z_\\\\-\\\\+\\\\*\\\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#][a-zA-Z0-9_\\\\-\\\\+\\\\*\\\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#!]*\"\n                },\n                {\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"contains\": [\n                        \"self\",\n                        {\n                            \"$ref\": \"#contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.3\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0\"\n                        },\n                        {\n                            \"begin\": \"[a-zA-Z_\\\\-\\\\+\\\\*\\\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#][a-zA-Z0-9_\\\\-\\\\+\\\\*\\\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#!]*\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.5.contains.4.contains.4\"\n                }\n            ],\n            \"variants\": [\n                {\n                    \"begin\": \"['`]\\\\(\",\n                    \"end\": \"\\\\)\"\n                },\n                {\n                    \"begin\": \"\\\\(quote \",\n                    \"end\": \"\\\\)\",\n                    \"keywords\": {\n                        \"name\": \"quote\"\n                    }\n                },\n                {\n                    \"begin\": \"'\\\\|[^|]*?\\\\|\"\n                }\n            ]\n        },\n        {\n            \"variants\": [\n                {\n                    \"begin\": \"'[a-zA-Z_\\\\-\\\\+\\\\*\\\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#][a-zA-Z0-9_\\\\-\\\\+\\\\*\\\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#!]*\"\n                },\n                {\n                    \"begin\": \"#'[a-zA-Z_\\\\-\\\\+\\\\*\\\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#][a-zA-Z0-9_\\\\-\\\\+\\\\*\\\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#!]*(::[a-zA-Z_\\\\-\\\\+\\\\*\\\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#][a-zA-Z0-9_\\\\-\\\\+\\\\*\\\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#!]*)*\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"\\\\(\\\\s*\",\n            \"end\": \"\\\\)\",\n            \"contains\": [\n                {\n                    \"className\": \"name\",\n                    \"variants\": [\n                        {\n                            \"begin\": \"[a-zA-Z_\\\\-\\\\+\\\\*\\\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#][a-zA-Z0-9_\\\\-\\\\+\\\\*\\\\\\/\\\\<\\\\=\\\\>\\\\&\\\\#!]*\"\n                        },\n                        {\n                            \"begin\": \"\\\\|[^|]*?\\\\|\"\n                        }\n                    ]\n                },\n                {\n                    \"endsWithParent\": true,\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.5\"\n                        },\n                        {\n                            \"$ref\": \"#contains.6\"\n                        },\n                        {\n                            \"$ref\": \"#contains.7\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.3\"\n                        },\n                        {\n                            \"$ref\": \"#contains.4\"\n                        },\n                        {\n                            \"$ref\": \"#contains.5.contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.5.contains.3\"\n                        },\n                        {\n                            \"begin\": \"\\\\|[^|]*?\\\\|\"\n                        },\n                        {\n                            \"$ref\": \"#contains.5.contains.4.contains.4\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.5.contains.4.contains.4\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/livecodeserver.json",
    "content": "{\n    \"case_insensitive\": false,\n    \"keywords\": {\n        \"keyword\": \"$_COOKIE $_FILES $_GET $_GET_BINARY $_GET_RAW $_POST $_POST_BINARY $_POST_RAW $_SESSION $_SERVER codepoint codepoints segment segments codeunit codeunits sentence sentences trueWord trueWords paragraph after byte bytes english the until http forever descending using line real8 with seventh for stdout finally element word words fourth before black ninth sixth characters chars stderr uInt1 uInt1s uInt2 uInt2s stdin string lines relative rel any fifth items from middle mid at else of catch then third it file milliseconds seconds second secs sec int1 int1s int4 int4s internet int2 int2s normal text item last long detailed effective uInt4 uInt4s repeat end repeat URL in try into switch to words https token binfile each tenth as ticks tick system real4 by dateItems without char character ascending eighth whole dateTime numeric short first ftp integer abbreviated abbr abbrev private case while if div mod wrap and or bitAnd bitNot bitOr bitXor among not in a an within contains ends with begins the keys of keys\",\n        \"literal\": \"SIX TEN FORMFEED NINE ZERO NONE SPACE FOUR FALSE COLON CRLF PI COMMA ENDOFFILE EOF EIGHT FIVE QUOTE EMPTY ONE TRUE RETURN CR LINEFEED RIGHT BACKSLASH NULL SEVEN TAB THREE TWO six ten formfeed nine zero none space four false colon crlf pi comma endoffile eof eight five quote empty one true return cr linefeed right backslash null seven tab three two RIVERSION RISTATE FILE_READ_MODE FILE_WRITE_MODE FILE_WRITE_MODE DIR_WRITE_MODE FILE_READ_UMASK FILE_WRITE_UMASK DIR_READ_UMASK DIR_WRITE_UMASK\",\n        \"built_in\": \"put abs acos aliasReference annuity arrayDecode arrayEncode asin atan atan2 average avg avgDev base64Decode base64Encode baseConvert binaryDecode binaryEncode byteOffset byteToNum cachedURL cachedURLs charToNum cipherNames codepointOffset codepointProperty codepointToNum codeunitOffset commandNames compound compress constantNames cos date dateFormat decompress difference directories diskSpace DNSServers exp exp1 exp2 exp10 extents files flushEvents folders format functionNames geometricMean global globals hasMemory harmonicMean hostAddress hostAddressToName hostName hostNameToAddress isNumber ISOToMac itemOffset keys len length libURLErrorData libUrlFormData libURLftpCommand libURLLastHTTPHeaders libURLLastRHHeaders libUrlMultipartFormAddPart libUrlMultipartFormData libURLVersion lineOffset ln ln1 localNames log log2 log10 longFilePath lower macToISO matchChunk matchText matrixMultiply max md5Digest median merge messageAuthenticationCode messageDigest millisec millisecs millisecond milliseconds min monthNames nativeCharToNum normalizeText num number numToByte numToChar numToCodepoint numToNativeChar offset open openfiles openProcesses openProcessIDs openSockets paragraphOffset paramCount param params peerAddress pendingMessages platform popStdDev populationStandardDeviation populationVariance popVariance processID random randomBytes replaceText result revCreateXMLTree revCreateXMLTreeFromFile revCurrentRecord revCurrentRecordIsFirst revCurrentRecordIsLast revDatabaseColumnCount revDatabaseColumnIsNull revDatabaseColumnLengths revDatabaseColumnNames revDatabaseColumnNamed revDatabaseColumnNumbered revDatabaseColumnTypes revDatabaseConnectResult revDatabaseCursors revDatabaseID revDatabaseTableNames revDatabaseType revDataFromQuery revdb_closeCursor revdb_columnbynumber revdb_columncount revdb_columnisnull revdb_columnlengths revdb_columnnames revdb_columntypes revdb_commit revdb_connect revdb_connections revdb_connectionerr revdb_currentrecord revdb_cursorconnection revdb_cursorerr revdb_cursors revdb_dbtype revdb_disconnect revdb_execute revdb_iseof revdb_isbof revdb_movefirst revdb_movelast revdb_movenext revdb_moveprev revdb_query revdb_querylist revdb_recordcount revdb_rollback revdb_tablenames revGetDatabaseDriverPath revNumberOfRecords revOpenDatabase revOpenDatabases revQueryDatabase revQueryDatabaseBlob revQueryResult revQueryIsAtStart revQueryIsAtEnd revUnixFromMacPath revXMLAttribute revXMLAttributes revXMLAttributeValues revXMLChildContents revXMLChildNames revXMLCreateTreeFromFileWithNamespaces revXMLCreateTreeWithNamespaces revXMLDataFromXPathQuery revXMLEvaluateXPath revXMLFirstChild revXMLMatchingNode revXMLNextSibling revXMLNodeContents revXMLNumberOfChildren revXMLParent revXMLPreviousSibling revXMLRootNode revXMLRPC_CreateRequest revXMLRPC_Documents revXMLRPC_Error revXMLRPC_GetHost revXMLRPC_GetMethod revXMLRPC_GetParam revXMLText revXMLRPC_Execute revXMLRPC_GetParamCount revXMLRPC_GetParamNode revXMLRPC_GetParamType revXMLRPC_GetPath revXMLRPC_GetPort revXMLRPC_GetProtocol revXMLRPC_GetRequest revXMLRPC_GetResponse revXMLRPC_GetSocket revXMLTree revXMLTrees revXMLValidateDTD revZipDescribeItem revZipEnumerateItems revZipOpenArchives round sampVariance sec secs seconds sentenceOffset sha1Digest shell shortFilePath sin specialFolderPath sqrt standardDeviation statRound stdDev sum sysError systemVersion tan tempName textDecode textEncode tick ticks time to tokenOffset toLower toUpper transpose truewordOffset trunc uniDecode uniEncode upper URLDecode URLEncode URLStatus uuid value variableNames variance version waitDepth weekdayNames wordOffset xsltApplyStylesheet xsltApplyStylesheetFromFile xsltLoadStylesheet xsltLoadStylesheetFromFile add breakpoint cancel clear local variable file word line folder directory URL close socket process combine constant convert create new alias folder directory decrypt delete variable word line folder directory URL dispatch divide do encrypt filter get include intersect kill libURLDownloadToFile libURLFollowHttpRedirects libURLftpUpload libURLftpUploadFile libURLresetAll libUrlSetAuthCallback libURLSetDriver libURLSetCustomHTTPHeaders libUrlSetExpect100 libURLSetFTPListCommand libURLSetFTPMode libURLSetFTPStopTime libURLSetStatusCallback load extension loadedExtensions multiply socket prepare process post seek rel relative read from process rename replace require resetAll resolve revAddXMLNode revAppendXML revCloseCursor revCloseDatabase revCommitDatabase revCopyFile revCopyFolder revCopyXMLNode revDeleteFolder revDeleteXMLNode revDeleteAllXMLTrees revDeleteXMLTree revExecuteSQL revGoURL revInsertXMLNode revMoveFolder revMoveToFirstRecord revMoveToLastRecord revMoveToNextRecord revMoveToPreviousRecord revMoveToRecord revMoveXMLNode revPutIntoXMLNode revRollBackDatabase revSetDatabaseDriverPath revSetXMLAttribute revXMLRPC_AddParam revXMLRPC_DeleteAllDocuments revXMLAddDTD revXMLRPC_Free revXMLRPC_FreeAll revXMLRPC_DeleteDocument revXMLRPC_DeleteParam revXMLRPC_SetHost revXMLRPC_SetMethod revXMLRPC_SetPort revXMLRPC_SetProtocol revXMLRPC_SetSocket revZipAddItemWithData revZipAddItemWithFile revZipAddUncompressedItemWithData revZipAddUncompressedItemWithFile revZipCancel revZipCloseArchive revZipDeleteItem revZipExtractItemToFile revZipExtractItemToVariable revZipSetProgressCallback revZipRenameItem revZipReplaceItemWithData revZipReplaceItemWithFile revZipOpenArchive send set sort split start stop subtract symmetric union unload vectorDotProduct wait write\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"variable\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\b([gtps][A-Z]{1}[a-zA-Z0-9]*)(\\\\[.+\\\\])?(?:\\\\s*?)\"\n                },\n                {\n                    \"begin\": \"\\\\$_[A-Z]+\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\\\bend\\\\sif\\\\b\"\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"function\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0\"\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"\\\\b([A-Za-z0-9_\\\\-]+)\\\\b\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2.contains.2.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"\\\\b(0b[01]+)\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0,\n                    \"variants\": [\n                        {\n                            \"begin\": \"\\\\b_*rig[A-Z]+[A-Za-z0-9_\\\\-]*\"\n                        },\n                        {\n                            \"begin\": \"\\\\b_[a-z0-9\\\\-]+\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"function\",\n            \"begin\": \"\\\\bend\\\\s+\",\n            \"end\": \"$\",\n            \"keywords\": \"end\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.2.contains.6\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"beginKeywords\": \"command on\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.2.contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.2.contains.2\"\n                },\n                {\n                    \"$ref\": \"#contains.2.contains.3\"\n                },\n                {\n                    \"$ref\": \"#contains.2.contains.4\"\n                },\n                {\n                    \"$ref\": \"#contains.2.contains.5\"\n                },\n                {\n                    \"$ref\": \"#contains.2.contains.6\"\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"variants\": [\n                {\n                    \"begin\": \"<\\\\?(rev|lc|livecode)\",\n                    \"relevance\": 10\n                },\n                {\n                    \"begin\": \"<\\\\?\"\n                },\n                {\n                    \"begin\": \"\\\\?>\"\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.2.contains.2\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.4\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.5\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.6\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.11.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"--\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.11.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"[^:]\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.11.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ],\n    \"illegal\": \";$|^\\\\[|^=|&|{\"\n}\n"
  },
  {
    "path": "includes/Highlight/languages/livescript.json",
    "content": "{\n    \"aliases\": [\n        \"ls\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger case default function var with then unless until loop of by when and or is isnt not it that otherwise from to til fallthrough super case default function var void const let enum export import native list map __hasProp __extends __slice __bind __indexOf\",\n        \"literal\": \"true false null undefined yes no on off it that void\",\n        \"built_in\": \"npm require console print module global window document\"\n    },\n    \"illegal\": \"\\\\\\/\\\\*\",\n    \"contains\": [\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b(0b[01]+)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(\\\\b0[xX][a-fA-F0-9_]+)|(\\\\b\\\\d(\\\\d|_\\\\d)*(\\\\.(\\\\d(\\\\d|_\\\\d)*)?)?(_*[eE]([-+]\\\\d(_\\\\d|\\\\d)*)?)?[_a-z]*)\",\n            \"relevance\": 0,\n            \"starts\": {\n                \"end\": \"(\\\\s*\\/)?\",\n                \"relevance\": 0\n            }\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"begin\": \"'''\",\n                    \"end\": \"'''\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2.variants.0.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\"\\\"\\\"\",\n                    \"end\": \"\\\"\\\"\\\"\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2.variants.0.contains.0\"\n                        },\n                        {\n                            \"className\": \"subst\",\n                            \"begin\": \"#\\\\{\",\n                            \"end\": \"}\",\n                            \"keywords\": {\n                                \"$ref\": \"#keywords\"\n                            },\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.0\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.1\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.2\"\n                                },\n                                {\n                                    \"className\": \"regexp\",\n                                    \"variants\": [\n                                        {\n                                            \"begin\": \"\\/\\/\",\n                                            \"end\": \"\\/\\/[gim]*\",\n                                            \"contains\": [\n                                                {\n                                                    \"$ref\": \"#contains.2.variants.2.contains.1\"\n                                                },\n                                                {\n                                                    \"className\": \"comment\",\n                                                    \"begin\": \"#\",\n                                                    \"end\": \"$\",\n                                                    \"contains\": [\n                                                        {\n                                                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                                                        },\n                                                        {\n                                                            \"className\": \"doctag\",\n                                                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                                            \"relevance\": 0\n                                                        }\n                                                    ]\n                                                }\n                                            ]\n                                        },\n                                        {\n                                            \"begin\": \"\\\\\\/(?![ *])(\\\\\\\\\\\\\\/|.)*?\\\\\\/[gim]*(?=\\\\W)\"\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"begin\": \"@[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*\"\n                                },\n                                {\n                                    \"begin\": \"``\",\n                                    \"end\": \"``\",\n                                    \"excludeBegin\": true,\n                                    \"excludeEnd\": true,\n                                    \"subLanguage\": \"javascript\"\n                                }\n                            ]\n                        },\n                        {\n                            \"className\": \"subst\",\n                            \"begin\": \"#[A-Za-z$_]\",\n                            \"end\": \"(?:\\\\-[0-9A-Za-z$_]|[0-9A-Za-z$_])*\",\n                            \"keywords\": {\n                                \"$ref\": \"#keywords\"\n                            }\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2.variants.0.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2.variants.2.contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2.variants.2.contains.2\"\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\\\\\\\",\n                    \"end\": \"(\\\\s|$)\",\n                    \"excludeEnd\": true\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.2.variants.2.contains.1.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.2.variants.2.contains.1.contains.4\"\n        },\n        {\n            \"$ref\": \"#contains.2.variants.2.contains.1.contains.5\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\\\/\\\\*\",\n            \"end\": \"\\\\*\\\\\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.variants.2.contains.1.contains.3.variants.0.contains.1.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.2.variants.2.contains.1.contains.3.variants.0.contains.1\"\n        },\n        {\n            \"begin\": \"(#=>|=>|\\\\|>>|-?->|\\\\!->)\"\n        },\n        {\n            \"className\": \"function\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"returnBegin\": true,\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\(\",\n                            \"end\": \"\\\\)\",\n                            \"keywords\": {\n                                \"$ref\": \"#keywords\"\n                            },\n                            \"contains\": [\n                                \"self\",\n                                {\n                                    \"$ref\": \"#contains.0\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.1\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.2\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.2.variants.2.contains.1.contains.3\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.2.variants.2.contains.1.contains.4\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.2.variants.2.contains.1.contains.5\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ],\n            \"returnBegin\": true,\n            \"variants\": [\n                {\n                    \"begin\": \"([A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*\\\\s*(?:=|:=)\\\\s*)?(\\\\(.*\\\\))?\\\\s*\\\\B\\\\->\\\\*?\",\n                    \"end\": \"\\\\->\\\\*?\"\n                },\n                {\n                    \"begin\": \"([A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*\\\\s*(?:=|:=)\\\\s*)?!?(\\\\(.*\\\\))?\\\\s*\\\\B[-~]{1,2}>\\\\*?\",\n                    \"end\": \"[-~]{1,2}>\\\\*?\"\n                },\n                {\n                    \"begin\": \"([A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*\\\\s*(?:=|:=)\\\\s*)?(\\\\(.*\\\\))?\\\\s*\\\\B!?[-~]{1,2}>\\\\*?\",\n                    \"end\": \"!?[-~]{1,2}>\\\\*?\"\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class\",\n            \"end\": \"$\",\n            \"illegal\": \"[:=\\\"\\\\[\\\\]]\",\n            \"contains\": [\n                {\n                    \"beginKeywords\": \"extends\",\n                    \"endsWithParent\": true,\n                    \"illegal\": \"[:=\\\"\\\\[\\\\]]\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.9.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.9.contains.0\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"[A-Za-z$_](?:-[0-9A-Za-z$_]|[0-9A-Za-z$_])*:\",\n            \"end\": \":\",\n            \"returnBegin\": true,\n            \"returnEnd\": true,\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/llvm.json",
    "content": "{\n    \"keywords\": \"begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double\",\n    \"contains\": [\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"i\\\\d+\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \";\",\n            \"end\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"[^\\\\\\\\]\\\"\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"title\",\n            \"variants\": [\n                {\n                    \"begin\": \"@([-a-zA-Z$._][\\\\w\\\\-$.]*)\"\n                },\n                {\n                    \"begin\": \"@\\\\d+\"\n                },\n                {\n                    \"begin\": \"!([-a-zA-Z$._][\\\\w\\\\-$.]*)\"\n                },\n                {\n                    \"begin\": \"!\\\\d+([-a-zA-Z$._][\\\\w\\\\-$.]*)\"\n                }\n            ]\n        },\n        {\n            \"className\": \"symbol\",\n            \"variants\": [\n                {\n                    \"begin\": \"%([-a-zA-Z$._][\\\\w\\\\-$.]*)\"\n                },\n                {\n                    \"begin\": \"%\\\\d+\"\n                },\n                {\n                    \"begin\": \"#\\\\d+\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"variants\": [\n                {\n                    \"begin\": \"0[xX][a-fA-F0-9]+\"\n                },\n                {\n                    \"begin\": \"-?\\\\d+(?:[.]\\\\d+)?(?:[eE][-+]?\\\\d+(?:[.]\\\\d+)?)?\"\n                }\n            ],\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/lsl.json",
    "content": "{\n    \"illegal\": \":\",\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"contains\": [\n                {\n                    \"className\": \"subst\",\n                    \"begin\": \"\\\\\\\\[tn\\\"\\\\\\\\]\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"variants\": [\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"\\/\\/\",\n                    \"end\": \"$\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"\\/\\\\*\",\n                    \"end\": \"\\\\*\\/\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.1.variants.0.contains.0\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\"\n        },\n        {\n            \"className\": \"section\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\b(?:state|default)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(?:state_(?:entry|exit)|touch(?:_(?:start|end))?|(?:land_)?collision(?:_(?:start|end))?|timer|listen|(?:no_)?sensor|control|(?:not_)?at_(?:rot_)?target|money|email|experience_permissions(?:_denied)?|run_time_permissions|changed|attach|dataserver|moving_(?:start|end)|link_message|(?:on|object)_rez|remote_data|http_re(?:sponse|quest)|path_update|transaction_result)\\\\b\"\n                }\n            ]\n        },\n        {\n            \"className\": \"built_in\",\n            \"begin\": \"\\\\b(?:ll(?:AgentInExperience|(?:Create|DataSize|Delete|KeyCount|Keys|Read|Update)KeyValue|GetExperience(?:Details|ErrorMessage)|ReturnObjectsBy(?:ID|Owner)|Json(?:2List|[GS]etValue|ValueType)|Sin|Cos|Tan|Atan2|Sqrt|Pow|Abs|Fabs|Frand|Floor|Ceil|Round|Vec(?:Mag|Norm|Dist)|Rot(?:Between|2(?:Euler|Fwd|Left|Up))|(?:Euler|Axes)2Rot|Whisper|(?:Region|Owner)?Say|Shout|Listen(?:Control|Remove)?|Sensor(?:Repeat|Remove)?|Detected(?:Name|Key|Owner|Type|Pos|Vel|Grab|Rot|Group|LinkNumber)|Die|Ground|Wind|(?:[GS]et)(?:AnimationOverride|MemoryLimit|PrimMediaParams|ParcelMusicURL|Object(?:Desc|Name)|PhysicsMaterial|Status|Scale|Color|Alpha|Texture|Pos|Rot|Force|Torque)|ResetAnimationOverride|(?:Scale|Offset|Rotate)Texture|(?:Rot)?Target(?:Remove)?|(?:Stop)?MoveToTarget|Apply(?:Rotational)?Impulse|Set(?:KeyframedMotion|ContentType|RegionPos|(?:Angular)?Velocity|Buoyancy|HoverHeight|ForceAndTorque|TimerEvent|ScriptState|Damage|TextureAnim|Sound(?:Queueing|Radius)|Vehicle(?:Type|(?:Float|Vector|Rotation)Param)|(?:Touch|Sit)?Text|Camera(?:Eye|At)Offset|PrimitiveParams|ClickAction|Link(?:Alpha|Color|PrimitiveParams(?:Fast)?|Texture(?:Anim)?|Camera|Media)|RemoteScriptAccessPin|PayPrice|LocalRot)|ScaleByFactor|Get(?:(?:Max|Min)ScaleFactor|ClosestNavPoint|StaticPath|SimStats|Env|PrimitiveParams|Link(?:PrimitiveParams|Number(?:OfSides)?|Key|Name|Media)|HTTPHeader|FreeURLs|Object(?:Details|PermMask|PrimCount)|Parcel(?:MaxPrims|Details|Prim(?:Count|Owners))|Attached(?:List)?|(?:SPMax|Free|Used)Memory|Region(?:Name|TimeDilation|FPS|Corner|AgentCount)|Root(?:Position|Rotation)|UnixTime|(?:Parcel|Region)Flags|(?:Wall|GMT)clock|SimulatorHostname|BoundingBox|GeometricCenter|Creator|NumberOf(?:Prims|NotecardLines|Sides)|Animation(?:List)?|(?:Camera|Local)(?:Pos|Rot)|Vel|Accel|Omega|Time(?:stamp|OfDay)|(?:Object|CenterOf)?Mass|MassMKS|Energy|Owner|(?:Owner)?Key|SunDirection|Texture(?:Offset|Scale|Rot)|Inventory(?:Number|Name|Key|Type|Creator|PermMask)|Permissions(?:Key)?|StartParameter|List(?:Length|EntryType)|Date|Agent(?:Size|Info|Language|List)|LandOwnerAt|NotecardLine|Script(?:Name|State))|(?:Get|Reset|GetAndReset)Time|PlaySound(?:Slave)?|LoopSound(?:Master|Slave)?|(?:Trigger|Stop|Preload)Sound|(?:(?:Get|Delete)Sub|Insert)String|To(?:Upper|Lower)|Give(?:InventoryList|Money)|RezObject|(?:Stop)?LookAt|Sleep|CollisionFilter|(?:Take|Release)Controls|DetachFromAvatar|AttachToAvatar(?:Temp)?|InstantMessage|(?:GetNext)?Email|StopHover|MinEventDelay|RotLookAt|String(?:Length|Trim)|(?:Start|Stop)Animation|TargetOmega|Request(?:Experience)?Permissions|(?:Create|Break)Link|BreakAllLinks|(?:Give|Remove)Inventory|Water|PassTouches|Request(?:Agent|Inventory)Data|TeleportAgent(?:Home|GlobalCoords)?|ModifyLand|CollisionSound|ResetScript|MessageLinked|PushObject|PassCollisions|AxisAngle2Rot|Rot2(?:Axis|Angle)|A(?:cos|sin)|AngleBetween|AllowInventoryDrop|SubStringIndex|List2(?:CSV|Integer|Json|Float|String|Key|Vector|Rot|List(?:Strided)?)|DeleteSubList|List(?:Statistics|Sort|Randomize|(?:Insert|Find|Replace)List)|EdgeOfWorld|AdjustSoundVolume|Key2Name|TriggerSoundLimited|EjectFromLand|(?:CSV|ParseString)2List|OverMyLand|SameGroup|UnSit|Ground(?:Slope|Normal|Contour)|GroundRepel|(?:Set|Remove)VehicleFlags|SitOnLink|(?:AvatarOn)?(?:Link)?SitTarget|Script(?:Danger|Profiler)|Dialog|VolumeDetect|ResetOtherScript|RemoteLoadScriptPin|(?:Open|Close)RemoteDataChannel|SendRemoteData|RemoteDataReply|(?:Integer|String)ToBase64|XorBase64|Log(?:10)?|Base64To(?:String|Integer)|ParseStringKeepNulls|RezAtRoot|RequestSimulatorData|ForceMouselook|(?:Load|Release|(?:E|Une)scape)URL|ParcelMedia(?:CommandList|Query)|ModPow|MapDestination|(?:RemoveFrom|AddTo|Reset)Land(?:Pass|Ban)List|(?:Set|Clear)CameraParams|HTTP(?:Request|Response)|TextBox|DetectedTouch(?:UV|Face|Pos|(?:N|Bin)ormal|ST)|(?:MD5|SHA1|DumpList2)String|Request(?:Secure)?URL|Clear(?:Prim|Link)Media|(?:Link)?ParticleSystem|(?:Get|Request)(?:Username|DisplayName)|RegionSayTo|CastRay|GenerateKey|TransferLindenDollars|ManageEstateAccess|(?:Create|Delete)Character|ExecCharacterCmd|Evade|FleeFrom|NavigateTo|PatrolPoints|Pursue|UpdateCharacter|WanderWithin))\\\\b\"\n        },\n        {\n            \"className\": \"literal\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\b(?:PI|TWO_PI|PI_BY_TWO|DEG_TO_RAD|RAD_TO_DEG|SQRT2)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(?:XP_ERROR_(?:EXPERIENCES_DISABLED|EXPERIENCE_(?:DISABLED|SUSPENDED)|INVALID_(?:EXPERIENCE|PARAMETERS)|KEY_NOT_FOUND|MATURITY_EXCEEDED|NONE|NOT_(?:FOUND|PERMITTED(?:_LAND)?)|NO_EXPERIENCE|QUOTA_EXCEEDED|RETRY_UPDATE|STORAGE_EXCEPTION|STORE_DISABLED|THROTTLED|UNKNOWN_ERROR)|JSON_APPEND|STATUS_(?:PHYSICS|ROTATE_[XYZ]|PHANTOM|SANDBOX|BLOCK_GRAB(?:_OBJECT)?|(?:DIE|RETURN)_AT_EDGE|CAST_SHADOWS|OK|MALFORMED_PARAMS|TYPE_MISMATCH|BOUNDS_ERROR|NOT_(?:FOUND|SUPPORTED)|INTERNAL_ERROR|WHITELIST_FAILED)|AGENT(?:_(?:BY_(?:LEGACY_|USER)NAME|FLYING|ATTACHMENTS|SCRIPTED|MOUSELOOK|SITTING|ON_OBJECT|AWAY|WALKING|IN_AIR|TYPING|CROUCHING|BUSY|ALWAYS_RUN|AUTOPILOT|LIST_(?:PARCEL(?:_OWNER)?|REGION)))?|CAMERA_(?:PITCH|DISTANCE|BEHINDNESS_(?:ANGLE|LAG)|(?:FOCUS|POSITION)(?:_(?:THRESHOLD|LOCKED|LAG))?|FOCUS_OFFSET|ACTIVE)|ANIM_ON|LOOP|REVERSE|PING_PONG|SMOOTH|ROTATE|SCALE|ALL_SIDES|LINK_(?:ROOT|SET|ALL_(?:OTHERS|CHILDREN)|THIS)|ACTIVE|PASS(?:IVE|_(?:ALWAYS|IF_NOT_HANDLED|NEVER))|SCRIPTED|CONTROL_(?:FWD|BACK|(?:ROT_)?(?:LEFT|RIGHT)|UP|DOWN|(?:ML_)?LBUTTON)|PERMISSION_(?:RETURN_OBJECTS|DEBIT|OVERRIDE_ANIMATIONS|SILENT_ESTATE_MANAGEMENT|TAKE_CONTROLS|TRIGGER_ANIMATION|ATTACH|CHANGE_LINKS|(?:CONTROL|TRACK)_CAMERA|TELEPORT)|INVENTORY_(?:TEXTURE|SOUND|OBJECT|SCRIPT|LANDMARK|CLOTHING|NOTECARD|BODYPART|ANIMATION|GESTURE|ALL|NONE)|CHANGED_(?:INVENTORY|COLOR|SHAPE|SCALE|TEXTURE|LINK|ALLOWED_DROP|OWNER|REGION(?:_START)?|TELEPORT|MEDIA)|OBJECT_(?:CLICK_ACTION|HOVER_HEIGHT|LAST_OWNER_ID|(?:PHYSICS|SERVER|STREAMING)_COST|UNKNOWN_DETAIL|CHARACTER_TIME|PHANTOM|PHYSICS|TEMP_(?:ATTACHED|ON_REZ)|NAME|DESC|POS|PRIM_(?:COUNT|EQUIVALENCE)|RETURN_(?:PARCEL(?:_OWNER)?|REGION)|REZZER_KEY|ROO?T|VELOCITY|OMEGA|OWNER|GROUP(?:_TAG)?|CREATOR|ATTACHED_(?:POINT|SLOTS_AVAILABLE)|RENDER_WEIGHT|(?:BODY_SHAPE|PATHFINDING)_TYPE|(?:RUNNING|TOTAL)_SCRIPT_COUNT|TOTAL_INVENTORY_COUNT|SCRIPT_(?:MEMORY|TIME))|TYPE_(?:INTEGER|FLOAT|STRING|KEY|VECTOR|ROTATION|INVALID)|(?:DEBUG|PUBLIC)_CHANNEL|ATTACH_(?:AVATAR_CENTER|CHEST|HEAD|BACK|PELVIS|MOUTH|CHIN|NECK|NOSE|BELLY|[LR](?:SHOULDER|HAND|FOOT|EAR|EYE|[UL](?:ARM|LEG)|HIP)|(?:LEFT|RIGHT)_PEC|HUD_(?:CENTER_[12]|TOP_(?:RIGHT|CENTER|LEFT)|BOTTOM(?:_(?:RIGHT|LEFT))?)|[LR]HAND_RING1|TAIL_(?:BASE|TIP)|[LR]WING|FACE_(?:JAW|[LR]EAR|[LR]EYE|TOUNGE)|GROIN|HIND_[LR]FOOT)|LAND_(?:LEVEL|RAISE|LOWER|SMOOTH|NOISE|REVERT)|DATA_(?:ONLINE|NAME|BORN|SIM_(?:POS|STATUS|RATING)|PAYINFO)|PAYMENT_INFO_(?:ON_FILE|USED)|REMOTE_DATA_(?:CHANNEL|REQUEST|REPLY)|PSYS_(?:PART_(?:BF_(?:ZERO|ONE(?:_MINUS_(?:DEST_COLOR|SOURCE_(ALPHA|COLOR)))?|DEST_COLOR|SOURCE_(ALPHA|COLOR))|BLEND_FUNC_(DEST|SOURCE)|FLAGS|(?:START|END)_(?:COLOR|ALPHA|SCALE|GLOW)|MAX_AGE|(?:RIBBON|WIND|INTERP_(?:COLOR|SCALE)|BOUNCE|FOLLOW_(?:SRC|VELOCITY)|TARGET_(?:POS|LINEAR)|EMISSIVE)_MASK)|SRC_(?:MAX_AGE|PATTERN|ANGLE_(?:BEGIN|END)|BURST_(?:RATE|PART_COUNT|RADIUS|SPEED_(?:MIN|MAX))|ACCEL|TEXTURE|TARGET_KEY|OMEGA|PATTERN_(?:DROP|EXPLODE|ANGLE(?:_CONE(?:_EMPTY)?)?)))|VEHICLE_(?:REFERENCE_FRAME|TYPE_(?:NONE|SLED|CAR|BOAT|AIRPLANE|BALLOON)|(?:LINEAR|ANGULAR)_(?:FRICTION_TIMESCALE|MOTOR_DIRECTION)|LINEAR_MOTOR_OFFSET|HOVER_(?:HEIGHT|EFFICIENCY|TIMESCALE)|BUOYANCY|(?:LINEAR|ANGULAR)_(?:DEFLECTION_(?:EFFICIENCY|TIMESCALE)|MOTOR_(?:DECAY_)?TIMESCALE)|VERTICAL_ATTRACTION_(?:EFFICIENCY|TIMESCALE)|BANKING_(?:EFFICIENCY|MIX|TIMESCALE)|FLAG_(?:NO_DEFLECTION_UP|LIMIT_(?:ROLL_ONLY|MOTOR_UP)|HOVER_(?:(?:WATER|TERRAIN|UP)_ONLY|GLOBAL_HEIGHT)|MOUSELOOK_(?:STEER|BANK)|CAMERA_DECOUPLED))|PRIM_(?:ALLOW_UNSIT|ALPHA_MODE(?:_(?:BLEND|EMISSIVE|MASK|NONE))?|NORMAL|SPECULAR|TYPE(?:_(?:BOX|CYLINDER|PRISM|SPHERE|TORUS|TUBE|RING|SCULPT))?|HOLE_(?:DEFAULT|CIRCLE|SQUARE|TRIANGLE)|MATERIAL(?:_(?:STONE|METAL|GLASS|WOOD|FLESH|PLASTIC|RUBBER))?|SHINY_(?:NONE|LOW|MEDIUM|HIGH)|BUMP_(?:NONE|BRIGHT|DARK|WOOD|BARK|BRICKS|CHECKER|CONCRETE|TILE|STONE|DISKS|GRAVEL|BLOBS|SIDING|LARGETILE|STUCCO|SUCTION|WEAVE)|TEXGEN_(?:DEFAULT|PLANAR)|SCRIPTED_SIT_ONLY|SCULPT_(?:TYPE_(?:SPHERE|TORUS|PLANE|CYLINDER|MASK)|FLAG_(?:MIRROR|INVERT))|PHYSICS(?:_(?:SHAPE_(?:CONVEX|NONE|PRIM|TYPE)))?|(?:POS|ROT)_LOCAL|SLICE|TEXT|FLEXIBLE|POINT_LIGHT|TEMP_ON_REZ|PHANTOM|POSITION|SIT_TARGET|SIZE|ROTATION|TEXTURE|NAME|OMEGA|DESC|LINK_TARGET|COLOR|BUMP_SHINY|FULLBRIGHT|TEXGEN|GLOW|MEDIA_(?:ALT_IMAGE_ENABLE|CONTROLS|(?:CURRENT|HOME)_URL|AUTO_(?:LOOP|PLAY|SCALE|ZOOM)|FIRST_CLICK_INTERACT|(?:WIDTH|HEIGHT)_PIXELS|WHITELIST(?:_ENABLE)?|PERMS_(?:INTERACT|CONTROL)|PARAM_MAX|CONTROLS_(?:STANDARD|MINI)|PERM_(?:NONE|OWNER|GROUP|ANYONE)|MAX_(?:URL_LENGTH|WHITELIST_(?:SIZE|COUNT)|(?:WIDTH|HEIGHT)_PIXELS)))|MASK_(?:BASE|OWNER|GROUP|EVERYONE|NEXT)|PERM_(?:TRANSFER|MODIFY|COPY|MOVE|ALL)|PARCEL_(?:MEDIA_COMMAND_(?:STOP|PAUSE|PLAY|LOOP|TEXTURE|URL|TIME|AGENT|UNLOAD|AUTO_ALIGN|TYPE|SIZE|DESC|LOOP_SET)|FLAG_(?:ALLOW_(?:FLY|(?:GROUP_)?SCRIPTS|LANDMARK|TERRAFORM|DAMAGE|CREATE_(?:GROUP_)?OBJECTS)|USE_(?:ACCESS_(?:GROUP|LIST)|BAN_LIST|LAND_PASS_LIST)|LOCAL_SOUND_ONLY|RESTRICT_PUSHOBJECT|ALLOW_(?:GROUP|ALL)_OBJECT_ENTRY)|COUNT_(?:TOTAL|OWNER|GROUP|OTHER|SELECTED|TEMP)|DETAILS_(?:NAME|DESC|OWNER|GROUP|AREA|ID|SEE_AVATARS))|LIST_STAT_(?:MAX|MIN|MEAN|MEDIAN|STD_DEV|SUM(?:_SQUARES)?|NUM_COUNT|GEOMETRIC_MEAN|RANGE)|PAY_(?:HIDE|DEFAULT)|REGION_FLAG_(?:ALLOW_DAMAGE|FIXED_SUN|BLOCK_TERRAFORM|SANDBOX|DISABLE_(?:COLLISIONS|PHYSICS)|BLOCK_FLY|ALLOW_DIRECT_TELEPORT|RESTRICT_PUSHOBJECT)|HTTP_(?:METHOD|MIMETYPE|BODY_(?:MAXLENGTH|TRUNCATED)|CUSTOM_HEADER|PRAGMA_NO_CACHE|VERBOSE_THROTTLE|VERIFY_CERT)|SIT_(?:INVALID_(?:AGENT|LINK_OBJECT)|NO(?:T_EXPERIENCE|_(?:ACCESS|EXPERIENCE_PERMISSION|SIT_TARGET)))|STRING_(?:TRIM(?:_(?:HEAD|TAIL))?)|CLICK_ACTION_(?:NONE|TOUCH|SIT|BUY|PAY|OPEN(?:_MEDIA)?|PLAY|ZOOM)|TOUCH_INVALID_FACE|PROFILE_(?:NONE|SCRIPT_MEMORY)|RC_(?:DATA_FLAGS|DETECT_PHANTOM|GET_(?:LINK_NUM|NORMAL|ROOT_KEY)|MAX_HITS|REJECT_(?:TYPES|AGENTS|(?:NON)?PHYSICAL|LAND))|RCERR_(?:CAST_TIME_EXCEEDED|SIM_PERF_LOW|UNKNOWN)|ESTATE_ACCESS_(?:ALLOWED_(?:AGENT|GROUP)_(?:ADD|REMOVE)|BANNED_AGENT_(?:ADD|REMOVE))|DENSITY|FRICTION|RESTITUTION|GRAVITY_MULTIPLIER|KFM_(?:COMMAND|CMD_(?:PLAY|STOP|PAUSE)|MODE|FORWARD|LOOP|PING_PONG|REVERSE|DATA|ROTATION|TRANSLATION)|ERR_(?:GENERIC|PARCEL_PERMISSIONS|MALFORMED_PARAMS|RUNTIME_PERMISSIONS|THROTTLED)|CHARACTER_(?:CMD_(?:(?:SMOOTH_)?STOP|JUMP)|DESIRED_(?:TURN_)?SPEED|RADIUS|STAY_WITHIN_PARCEL|LENGTH|ORIENTATION|ACCOUNT_FOR_SKIPPED_FRAMES|AVOIDANCE_MODE|TYPE(?:_(?:[ABCD]|NONE))?|MAX_(?:DECEL|TURN_RADIUS|(?:ACCEL|SPEED)))|PURSUIT_(?:OFFSET|FUZZ_FACTOR|GOAL_TOLERANCE|INTERCEPT)|REQUIRE_LINE_OF_SIGHT|FORCE_DIRECT_PATH|VERTICAL|HORIZONTAL|AVOID_(?:CHARACTERS|DYNAMIC_OBSTACLES|NONE)|PU_(?:EVADE_(?:HIDDEN|SPOTTED)|FAILURE_(?:DYNAMIC_PATHFINDING_DISABLED|INVALID_(?:GOAL|START)|NO_(?:NAVMESH|VALID_DESTINATION)|OTHER|TARGET_GONE|(?:PARCEL_)?UNREACHABLE)|(?:GOAL|SLOWDOWN_DISTANCE)_REACHED)|TRAVERSAL_TYPE(?:_(?:FAST|NONE|SLOW))?|CONTENT_TYPE_(?:ATOM|FORM|HTML|JSON|LLSD|RSS|TEXT|XHTML|XML)|GCNP_(?:RADIUS|STATIC)|(?:PATROL|WANDER)_PAUSE_AT_WAYPOINTS|OPT_(?:AVATAR|CHARACTER|EXCLUSION_VOLUME|LEGACY_LINKSET|MATERIAL_VOLUME|OTHER|STATIC_OBSTACLE|WALKABLE)|SIM_STAT_PCT_CHARS_STEPPED)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(?:FALSE|TRUE)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(?:ZERO_ROTATION)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(?:EOF|JSON_(?:ARRAY|DELETE|FALSE|INVALID|NULL|NUMBER|OBJECT|STRING|TRUE)|NULL_KEY|TEXTURE_(?:BLANK|DEFAULT|MEDIA|PLYWOOD|TRANSPARENT)|URL_REQUEST_(?:GRANTED|DENIED))\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(?:ZERO_VECTOR|TOUCH_INVALID_(?:TEXCOORD|VECTOR))\\\\b\"\n                }\n            ]\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \"\\\\b(?:integer|float|string|key|vector|quaternion|rotation|list)\\\\b\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/lua.json",
    "content": "{\n    \"lexemes\": \"[a-zA-Z_]\\\\w*\",\n    \"keywords\": {\n        \"literal\": \"true false nil\",\n        \"keyword\": \"and break do else elseif end for goto if in local not or repeat return then until while\",\n        \"built_in\": \"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstringmodule next pairs pcall print rawequal rawget rawset require select setfenvsetmetatable tonumber tostring type unpack xpcall arg selfcoroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"--(?!\\\\[=*\\\\[)\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"--\\\\[=*\\\\[\",\n            \"end\": \"\\\\]=*\\\\]\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\[=*\\\\[\",\n                    \"end\": \"\\\\]=*\\\\]\",\n                    \"contains\": [\n                        \"self\"\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"function\",\n            \"end\": \"\\\\)\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"([_a-zA-Z]\\\\w*\\\\.)*([_a-zA-Z]\\\\w*:)?[_a-zA-Z]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"endsWithParent\": true,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.1\"\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.1\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.4.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\\[=*\\\\[\",\n            \"end\": \"\\\\]=*\\\\]\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                }\n            ],\n            \"relevance\": 5\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/makefile.json",
    "content": "{\n    \"aliases\": [\n        \"mk\",\n        \"mak\"\n    ],\n    \"keywords\": \"define endef undefine ifdef ifndef ifeq ifneq else endif include -include sinclude override export unexport private vpath\",\n    \"lexemes\": \"[\\\\w\\\\-]+\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"variable\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\$\\\\([a-zA-Z_]\\\\w*\\\\)\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\\$[@%<?\\\\^\\\\+\\\\*]\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.variants.0.contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.1\"\n                }\n            ]\n        },\n        {\n            \"className\": \"variable\",\n            \"begin\": \"\\\\$\\\\([\\\\w\\\\-]+\\\\s\",\n            \"end\": \"\\\\)\",\n            \"keywords\": {\n                \"built_in\": \"subst patsubst strip findstring filter filter-out sort word wordlist firstword lastword dir notdir suffix basename addsuffix addprefix join wildcard realpath abspath error warning shell origin flavor foreach if or and call eval file value\"\n            },\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"^[a-zA-Z_]\\\\w*\\\\s*(?=[:+?]?=)\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^\\\\.PHONY:\",\n            \"end\": \"$\",\n            \"keywords\": {\n                \"meta-keyword\": \".PHONY\"\n            },\n            \"lexemes\": \"[\\\\.\\\\w]+\"\n        },\n        {\n            \"className\": \"section\",\n            \"begin\": \"^[^\\\\s]+:\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/markdown.json",
    "content": "{\n    \"aliases\": [\n        \"md\",\n        \"mkdown\",\n        \"mkd\"\n    ],\n    \"contains\": [\n        {\n            \"className\": \"section\",\n            \"variants\": [\n                {\n                    \"begin\": \"^#{1,6}\",\n                    \"end\": \"$\"\n                },\n                {\n                    \"begin\": \"^.+?\\\\n[=-]{2,}$\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"<\",\n            \"end\": \">\",\n            \"subLanguage\": \"xml\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"bullet\",\n            \"begin\": \"^\\\\s*([*+-]|(\\\\d+\\\\.))\\\\s+\"\n        },\n        {\n            \"className\": \"strong\",\n            \"begin\": \"[*_]{2}.+?[*_]{2}\"\n        },\n        {\n            \"className\": \"emphasis\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\*.+?\\\\*\"\n                },\n                {\n                    \"begin\": \"_.+?_\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"quote\",\n            \"begin\": \"^>\\\\s+\",\n            \"end\": \"$\"\n        },\n        {\n            \"className\": \"code\",\n            \"variants\": [\n                {\n                    \"begin\": \"^```\\\\w*\\\\s*$\",\n                    \"end\": \"^```[ ]*$\"\n                },\n                {\n                    \"begin\": \"`.+?`\"\n                },\n                {\n                    \"begin\": \"^( {4}|\\\\t)\",\n                    \"end\": \"$\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"begin\": \"^[-\\\\*]{3,}\",\n            \"end\": \"$\"\n        },\n        {\n            \"begin\": \"\\\\[.+?\\\\][\\\\(\\\\[].*?[\\\\)\\\\]]\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"\\\\[\",\n                    \"end\": \"\\\\]\",\n                    \"excludeBegin\": true,\n                    \"returnEnd\": true,\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"link\",\n                    \"begin\": \"\\\\]\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true\n                },\n                {\n                    \"className\": \"symbol\",\n                    \"begin\": \"\\\\]\\\\[\",\n                    \"end\": \"\\\\]\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true\n                }\n            ],\n            \"relevance\": 10\n        },\n        {\n            \"begin\": \"^\\\\[[^\\\\n]+\\\\]:\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"className\": \"symbol\",\n                    \"begin\": \"\\\\[\",\n                    \"end\": \"\\\\]\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true\n                },\n                {\n                    \"className\": \"link\",\n                    \"begin\": \":\\\\s*\",\n                    \"end\": \"$\",\n                    \"excludeBegin\": true\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/mathematica.json",
    "content": "{\n    \"aliases\": [\n        \"mma\",\n        \"wl\"\n    ],\n    \"lexemes\": \"(\\\\$|\\\\b)[a-zA-Z]\\\\w*\\\\b\",\n    \"keywords\": \"AASTriangle AbelianGroup Abort AbortKernels AbortProtect AbortScheduledTask Above Abs AbsArg AbsArgPlot Absolute AbsoluteCorrelation AbsoluteCorrelationFunction AbsoluteCurrentValue AbsoluteDashing AbsoluteFileName AbsoluteOptions AbsolutePointSize AbsoluteThickness AbsoluteTime AbsoluteTiming AcceptanceThreshold AccountingForm Accumulate Accuracy AccuracyGoal ActionDelay ActionMenu ActionMenuBox ActionMenuBoxOptions Activate Active ActiveClassification ActiveClassificationObject ActiveItem ActivePrediction ActivePredictionObject ActiveStyle AcyclicGraphQ AddOnHelpPath AddSides AddTo AddToSearchIndex AddUsers AdjacencyGraph AdjacencyList AdjacencyMatrix AdjustmentBox AdjustmentBoxOptions AdjustTimeSeriesForecast AdministrativeDivisionData AffineHalfSpace AffineSpace AffineStateSpaceModel AffineTransform After AggregatedEntityClass AggregationLayer AircraftData AirportData AirPressureData AirTemperatureData AiryAi AiryAiPrime AiryAiZero AiryBi AiryBiPrime AiryBiZero AlgebraicIntegerQ AlgebraicNumber AlgebraicNumberDenominator AlgebraicNumberNorm AlgebraicNumberPolynomial AlgebraicNumberTrace AlgebraicRules AlgebraicRulesData Algebraics AlgebraicUnitQ Alignment AlignmentMarker AlignmentPoint All AllowAdultContent AllowedCloudExtraParameters AllowedCloudParameterExtensions AllowedDimensions AllowedFrequencyRange AllowedHeads AllowGroupClose AllowIncomplete AllowInlineCells AllowKernelInitialization AllowLooseGrammar AllowReverseGroupClose AllowScriptLevelChange AllTrue Alphabet AlphabeticOrder AlphabeticSort AlphaChannel AlternateImage AlternatingFactorial AlternatingGroup AlternativeHypothesis Alternatives AltitudeMethod AmbientLight AmbiguityFunction AmbiguityList Analytic AnatomyData AnatomyForm AnatomyPlot3D AnatomySkinStyle AnatomyStyling AnchoredSearch And AndersonDarlingTest AngerJ AngleBisector AngleBracket AnglePath AnglePath3D AngleVector AngularGauge Animate AnimationCycleOffset AnimationCycleRepetitions AnimationDirection AnimationDisplayTime AnimationRate AnimationRepetitions AnimationRunning AnimationRunTime AnimationTimeIndex Animator AnimatorBox AnimatorBoxOptions AnimatorElements Annotate Annotation AnnotationDelete AnnotationNames AnnotationRules AnnotationValue Annuity AnnuityDue Annulus AnomalyDetection AnomalyDetectorFunction Anonymous Antialiasing AntihermitianMatrixQ Antisymmetric AntisymmetricMatrixQ Antonyms AnyOrder AnySubset AnyTrue Apart ApartSquareFree APIFunction Appearance AppearanceElements AppearanceRules AppellF1 Append AppendCheck AppendLayer AppendTo ApplicationIdentificationKey Apply ApplySides ArcCos ArcCosh ArcCot ArcCoth ArcCsc ArcCsch ArcCurvature ARCHProcess ArcLength ArcSec ArcSech ArcSin ArcSinDistribution ArcSinh ArcTan ArcTanh Area Arg ArgMax ArgMin ArgumentCountQ ARIMAProcess ArithmeticGeometricMean ARMAProcess Around AroundReplace ARProcess Array ArrayComponents ArrayDepth ArrayFilter ArrayFlatten ArrayMesh ArrayPad ArrayPlot ArrayQ ArrayResample ArrayReshape ArrayRules Arrays Arrow Arrow3DBox ArrowBox Arrowheads ASATriangle Ask AskAppend AskConfirm AskDisplay AskedQ AskedValue AskFunction AskState AskTemplateDisplay AspectRatio AspectRatioFixed Assert AssociateTo Association AssociationFormat AssociationMap AssociationQ AssociationThread AssumeDeterministic Assuming Assumptions AstronomicalData AsymptoticDSolveValue AsymptoticEqual AsymptoticEquivalent AsymptoticGreater AsymptoticGreaterEqual AsymptoticIntegrate AsymptoticLess AsymptoticLessEqual AsymptoticOutputTracker AsymptoticRSolveValue AsymptoticSolve AsymptoticSum Asynchronous AsynchronousTaskObject AsynchronousTasks Atom AtomCoordinates AtomCount AtomDiagramCoordinates AtomList AtomQ AttentionLayer Attributes Audio AudioAmplify AudioAnnotate AudioAnnotationLookup AudioBlockMap AudioCapture AudioChannelAssignment AudioChannelCombine AudioChannelMix AudioChannels AudioChannelSeparate AudioData AudioDelay AudioDelete AudioDevice AudioDistance AudioFade AudioFrequencyShift AudioGenerator AudioIdentify AudioInputDevice AudioInsert AudioIntervals AudioJoin AudioLabel AudioLength AudioLocalMeasurements AudioLooping AudioLoudness AudioMeasurements AudioNormalize AudioOutputDevice AudioOverlay AudioPad AudioPan AudioPartition AudioPause AudioPitchShift AudioPlay AudioPlot AudioQ AudioRecord AudioReplace AudioResample AudioReverb AudioSampleRate AudioSpectralMap AudioSpectralTransformation AudioSplit AudioStop AudioStream AudioStreams AudioTimeStretch AudioTrim AudioType AugmentedPolyhedron AugmentedSymmetricPolynomial Authenticate Authentication AuthenticationDialog AutoAction Autocomplete AutocompletionFunction AutoCopy AutocorrelationTest AutoDelete AutoEvaluateEvents AutoGeneratedPackage AutoIndent AutoIndentSpacings AutoItalicWords AutoloadPath AutoMatch Automatic AutomaticImageSize AutoMultiplicationSymbol AutoNumberFormatting AutoOpenNotebooks AutoOpenPalettes AutoQuoteCharacters AutoRefreshed AutoRemove AutorunSequencing AutoScaling AutoScroll AutoSpacing AutoStyleOptions AutoStyleWords AutoSubmitting Axes AxesEdge AxesLabel AxesOrigin AxesStyle AxiomaticTheory AxisBabyMonsterGroupB Back Background BackgroundAppearance BackgroundTasksSettings Backslash Backsubstitution Backward Ball Band BandpassFilter BandstopFilter BarabasiAlbertGraphDistribution BarChart BarChart3D BarcodeImage BarcodeRecognize BaringhausHenzeTest BarLegend BarlowProschanImportance BarnesG BarOrigin BarSpacing BartlettHannWindow BartlettWindow BaseDecode BaseEncode BaseForm Baseline BaselinePosition BaseStyle BasicRecurrentLayer BatchNormalizationLayer BatchSize BatesDistribution BattleLemarieWavelet BayesianMaximization BayesianMaximizationObject BayesianMinimization BayesianMinimizationObject Because BeckmannDistribution Beep Before Begin BeginDialogPacket BeginFrontEndInteractionPacket BeginPackage BellB BellY Below BenfordDistribution BeniniDistribution BenktanderGibratDistribution BenktanderWeibullDistribution BernoulliB BernoulliDistribution BernoulliGraphDistribution BernoulliProcess BernsteinBasis BesselFilterModel BesselI BesselJ BesselJZero BesselK BesselY BesselYZero Beta BetaBinomialDistribution BetaDistribution BetaNegativeBinomialDistribution BetaPrimeDistribution BetaRegularized Between BetweennessCentrality BeveledPolyhedron BezierCurve BezierCurve3DBox BezierCurve3DBoxOptions BezierCurveBox BezierCurveBoxOptions BezierFunction BilateralFilter Binarize BinaryDeserialize BinaryDistance BinaryFormat BinaryImageQ BinaryRead BinaryReadList BinarySerialize BinaryWrite BinCounts BinLists Binomial BinomialDistribution BinomialProcess BinormalDistribution BiorthogonalSplineWavelet BipartiteGraphQ BiquadraticFilterModel BirnbaumImportance BirnbaumSaundersDistribution BitAnd BitClear BitGet BitLength BitNot BitOr BitSet BitShiftLeft BitShiftRight BitXor BiweightLocation BiweightMidvariance Black BlackmanHarrisWindow BlackmanNuttallWindow BlackmanWindow Blank BlankForm BlankNullSequence BlankSequence Blend Block BlockchainAddressData BlockchainBase BlockchainBlockData BlockchainContractValue BlockchainData BlockchainGet BlockchainKeyEncode BlockchainPut BlockchainTokenData BlockchainTransaction BlockchainTransactionData BlockchainTransactionSign BlockchainTransactionSubmit BlockMap BlockRandom BlomqvistBeta BlomqvistBetaTest Blue Blur BodePlot BohmanWindow Bold Bond BondCount BondList BondQ Bookmarks Boole BooleanConsecutiveFunction BooleanConvert BooleanCountingFunction BooleanFunction BooleanGraph BooleanMaxterms BooleanMinimize BooleanMinterms BooleanQ BooleanRegion Booleans BooleanStrings BooleanTable BooleanVariables BorderDimensions BorelTannerDistribution Bottom BottomHatTransform BoundaryDiscretizeGraphics BoundaryDiscretizeRegion BoundaryMesh BoundaryMeshRegion BoundaryMeshRegionQ BoundaryStyle BoundedRegionQ BoundingRegion Bounds Box BoxBaselineShift BoxData BoxDimensions Boxed Boxes BoxForm BoxFormFormatTypes BoxFrame BoxID BoxMargins BoxMatrix BoxObject BoxRatios BoxRotation BoxRotationPoint BoxStyle BoxWhiskerChart Bra BracketingBar BraKet BrayCurtisDistance BreadthFirstScan Break BridgeData BrightnessEqualize BroadcastStationData Brown BrownForsytheTest BrownianBridgeProcess BrowserCategory BSplineBasis BSplineCurve BSplineCurve3DBox BSplineCurve3DBoxOptions BSplineCurveBox BSplineCurveBoxOptions BSplineFunction BSplineSurface BSplineSurface3DBox BSplineSurface3DBoxOptions BubbleChart BubbleChart3D BubbleScale BubbleSizes BuildingData BulletGauge BusinessDayQ ButterflyGraph ButterworthFilterModel Button ButtonBar ButtonBox ButtonBoxOptions ButtonCell ButtonContents ButtonData ButtonEvaluator ButtonExpandable ButtonFrame ButtonFunction ButtonMargins ButtonMinHeight ButtonNote ButtonNotebook ButtonSource ButtonStyle ButtonStyleMenuListing Byte ByteArray ByteArrayFormat ByteArrayQ ByteArrayToString ByteCount ByteOrderingC CachedValue CacheGraphics CachePersistence CalendarConvert CalendarData CalendarType Callout CalloutMarker CalloutStyle CallPacket CanberraDistance Cancel CancelButton CandlestickChart CanonicalGraph CanonicalizePolygon CanonicalizePolyhedron CanonicalName CanonicalWarpingCorrespondence CanonicalWarpingDistance CantorMesh CantorStaircase Cap CapForm CapitalDifferentialD Capitalize CapsuleShape CaptureRunning CardinalBSplineBasis CarlemanLinearize CarmichaelLambda CaseOrdering Cases CaseSensitive Cashflow Casoratian Catalan CatalanNumber Catch Catenate CatenateLayer CauchyDistribution CauchyWindow CayleyGraph CDF CDFDeploy CDFInformation CDFWavelet Ceiling CelestialSystem Cell CellAutoOverwrite CellBaseline CellBoundingBox CellBracketOptions CellChangeTimes CellContents CellContext CellDingbat CellDynamicExpression CellEditDuplicate CellElementsBoundingBox CellElementSpacings CellEpilog CellEvaluationDuplicate CellEvaluationFunction CellEvaluationLanguage CellEventActions CellFrame CellFrameColor CellFrameLabelMargins CellFrameLabels CellFrameMargins CellGroup CellGroupData CellGrouping CellGroupingRules CellHorizontalScrolling CellID CellLabel CellLabelAutoDelete CellLabelMargins CellLabelPositioning CellLabelStyle CellLabelTemplate CellMargins CellObject CellOpen CellPrint CellProlog Cells CellSize CellStyle CellTags CellularAutomaton CensoredDistribution Censoring Center CenterArray CenterDot CentralFeature CentralMoment CentralMomentGeneratingFunction Cepstrogram CepstrogramArray CepstrumArray CForm ChampernowneNumber ChangeOptions ChannelBase ChannelBrokerAction ChannelDatabin ChannelHistoryLength ChannelListen ChannelListener ChannelListeners ChannelListenerWait ChannelObject ChannelPreSendFunction ChannelReceiverFunction ChannelSend ChannelSubscribers ChanVeseBinarize Character CharacterCounts CharacterEncoding CharacterEncodingsPath CharacteristicFunction CharacteristicPolynomial CharacterName CharacterRange Characters ChartBaseStyle ChartElementData ChartElementDataFunction ChartElementFunction ChartElements ChartLabels ChartLayout ChartLegends ChartStyle Chebyshev1FilterModel Chebyshev2FilterModel ChebyshevDistance ChebyshevT ChebyshevU Check CheckAbort CheckAll Checkbox CheckboxBar CheckboxBox CheckboxBoxOptions ChemicalData ChessboardDistance ChiDistribution ChineseRemainder ChiSquareDistribution ChoiceButtons ChoiceDialog CholeskyDecomposition Chop ChromaticityPlot ChromaticityPlot3D ChromaticPolynomial Circle CircleBox CircleDot CircleMinus CirclePlus CirclePoints CircleThrough CircleTimes CirculantGraph CircularOrthogonalMatrixDistribution CircularQuaternionMatrixDistribution CircularRealMatrixDistribution CircularSymplecticMatrixDistribution CircularUnitaryMatrixDistribution Circumsphere CityData ClassifierFunction ClassifierInformation ClassifierMeasurements ClassifierMeasurementsObject Classify ClassPriors Clear ClearAll ClearAttributes ClearCookies ClearPermissions ClearSystemCache ClebschGordan ClickPane Clip ClipboardNotebook ClipFill ClippingStyle ClipPlanes ClipPlanesStyle ClipRange Clock ClockGauge ClockwiseContourIntegral Close Closed CloseKernels ClosenessCentrality Closing ClosingAutoSave ClosingEvent CloudAccountData CloudBase CloudConnect CloudDeploy CloudDirectory CloudDisconnect CloudEvaluate CloudExport CloudExpression CloudExpressions CloudFunction CloudGet CloudImport CloudLoggingData CloudObject CloudObjectInformation CloudObjectInformationData CloudObjectNameFormat CloudObjects CloudObjectURLType CloudPublish CloudPut CloudRenderingMethod CloudSave CloudShare CloudSubmit CloudSymbol CloudUnshare ClusterClassify ClusterDissimilarityFunction ClusteringComponents ClusteringTree CMYKColor Coarse CodeAssistOptions Coefficient CoefficientArrays CoefficientDomain CoefficientList CoefficientRules CoifletWavelet Collect Colon ColonForm ColorBalance ColorCombine ColorConvert ColorCoverage ColorData ColorDataFunction ColorDetect ColorDistance ColorFunction ColorFunctionScaling Colorize ColorNegate ColorOutput ColorProfileData ColorQ ColorQuantize ColorReplace ColorRules ColorSelectorSettings ColorSeparate ColorSetter ColorSetterBox ColorSetterBoxOptions ColorSlider ColorsNear ColorSpace ColorToneMapping Column ColumnAlignments ColumnBackgrounds ColumnForm ColumnLines ColumnsEqual ColumnSpacings ColumnWidths CombinedEntityClass CombinerFunction CometData CommonDefaultFormatTypes Commonest CommonestFilter CommonName CommonUnits CommunityBoundaryStyle CommunityGraphPlot CommunityLabels CommunityRegionStyle CompanyData CompatibleUnitQ CompilationOptions CompilationTarget Compile Compiled CompiledCodeFunction CompiledFunction CompilerOptions Complement CompleteGraph CompleteGraphQ CompleteKaryTree CompletionsListPacket Complex Complexes ComplexExpand ComplexInfinity ComplexityFunction ComplexListPlot ComplexPlot ComplexPlot3D ComponentMeasurements ComponentwiseContextMenu Compose ComposeList ComposeSeries CompositeQ Composition CompoundElement CompoundExpression CompoundPoissonDistribution CompoundPoissonProcess CompoundRenewalProcess Compress CompressedData ComputeUncertainty Condition ConditionalExpression Conditioned Cone ConeBox ConfidenceLevel ConfidenceRange ConfidenceTransform ConfigurationPath ConformAudio ConformImages Congruent ConicHullRegion ConicHullRegion3DBox ConicHullRegionBox ConicOptimization Conjugate ConjugateTranspose Conjunction Connect ConnectedComponents ConnectedGraphComponents ConnectedGraphQ ConnectedMeshComponents ConnectedMoleculeComponents ConnectedMoleculeQ ConnectionSettings ConnectLibraryCallbackFunction ConnectSystemModelComponents ConnesWindow ConoverTest ConsoleMessage ConsoleMessagePacket ConsolePrint Constant ConstantArray ConstantArrayLayer ConstantImage ConstantPlusLayer ConstantRegionQ Constants ConstantTimesLayer ConstellationData ConstrainedMax ConstrainedMin Construct Containing ContainsAll ContainsAny ContainsExactly ContainsNone ContainsOnly ContentFieldOptions ContentLocationFunction ContentObject ContentPadding ContentsBoundingBox ContentSelectable ContentSize Context ContextMenu Contexts ContextToFileName Continuation Continue ContinuedFraction ContinuedFractionK ContinuousAction ContinuousMarkovProcess ContinuousTask ContinuousTimeModelQ ContinuousWaveletData ContinuousWaveletTransform ContourDetect ContourGraphics ContourIntegral ContourLabels ContourLines ContourPlot ContourPlot3D Contours ContourShading ContourSmoothing ContourStyle ContraharmonicMean ContrastiveLossLayer Control ControlActive ControlAlignment ControlGroupContentsBox ControllabilityGramian ControllabilityMatrix ControllableDecomposition ControllableModelQ ControllerDuration ControllerInformation ControllerInformationData ControllerLinking ControllerManipulate ControllerMethod ControllerPath ControllerState ControlPlacement ControlsRendering ControlType Convergents ConversionOptions ConversionRules ConvertToBitmapPacket ConvertToPostScript ConvertToPostScriptPacket ConvexHullMesh ConvexPolygonQ ConvexPolyhedronQ ConvolutionLayer Convolve ConwayGroupCo1 ConwayGroupCo2 ConwayGroupCo3 CookieFunction Cookies CoordinateBoundingBox CoordinateBoundingBoxArray CoordinateBounds CoordinateBoundsArray CoordinateChartData CoordinatesToolOptions CoordinateTransform CoordinateTransformData CoprimeQ Coproduct CopulaDistribution Copyable CopyDatabin CopyDirectory CopyFile CopyTag CopyToClipboard CornerFilter CornerNeighbors Correlation CorrelationDistance CorrelationFunction CorrelationTest Cos Cosh CoshIntegral CosineDistance CosineWindow CosIntegral Cot Coth Count CountDistinct CountDistinctBy CounterAssignments CounterBox CounterBoxOptions CounterClockwiseContourIntegral CounterEvaluator CounterFunction CounterIncrements CounterStyle CounterStyleMenuListing CountRoots CountryData Counts CountsBy Covariance CovarianceEstimatorFunction CovarianceFunction CoxianDistribution CoxIngersollRossProcess CoxModel CoxModelFit CramerVonMisesTest CreateArchive CreateCellID CreateChannel CreateCloudExpression CreateDatabin CreateDataSystemModel CreateDialog CreateDirectory CreateDocument CreateFile CreateIntermediateDirectories CreateManagedLibraryExpression CreateNotebook CreatePalette CreatePalettePacket CreatePermissionsGroup CreateScheduledTask CreateSearchIndex CreateSystemModel CreateTemporary CreateUUID CreateWindow CriterionFunction CriticalityFailureImportance CriticalitySuccessImportance CriticalSection Cross CrossEntropyLossLayer CrossingCount CrossingDetect CrossingPolygon CrossMatrix Csc Csch CTCLossLayer Cube CubeRoot Cubics Cuboid CuboidBox Cumulant CumulantGeneratingFunction Cup CupCap Curl CurlyDoubleQuote CurlyQuote CurrencyConvert CurrentDate CurrentImage CurrentlySpeakingPacket CurrentNotebookImage CurrentScreenImage CurrentValue Curry CurvatureFlowFilter CurveClosed Cyan CycleGraph CycleIndexPolynomial Cycles CyclicGroup Cyclotomic Cylinder CylinderBox CylindricalDecompositionD DagumDistribution DamData DamerauLevenshteinDistance DampingFactor Darker Dashed Dashing DatabaseConnect DatabaseDisconnect DatabaseReference Databin DatabinAdd DatabinRemove Databins DatabinUpload DataCompression DataDistribution DataRange DataReversed Dataset Date DateBounds Dated DateDelimiters DateDifference DatedUnit DateFormat DateFunction DateHistogram DateList DateListLogPlot DateListPlot DateListStepPlot DateObject DateObjectQ DateOverlapsQ DatePattern DatePlus DateRange DateReduction DateString DateTicksFormat DateValue DateWithinQ DaubechiesWavelet DavisDistribution DawsonF DayCount DayCountConvention DayHemisphere DaylightQ DayMatchQ DayName DayNightTerminator DayPlus DayRange DayRound DeBruijnGraph DeBruijnSequence Debug DebugTag Decapitalize Decimal DecimalForm DeclareKnownSymbols DeclarePackage Decompose DeconvolutionLayer Decrement Decrypt DecryptFile DedekindEta DeepSpaceProbeData Default DefaultAxesStyle DefaultBaseStyle DefaultBoxStyle DefaultButton DefaultColor DefaultControlPlacement DefaultDuplicateCellStyle DefaultDuration DefaultElement DefaultFaceGridsStyle DefaultFieldHintStyle DefaultFont DefaultFontProperties DefaultFormatType DefaultFormatTypeForStyle DefaultFrameStyle DefaultFrameTicksStyle DefaultGridLinesStyle DefaultInlineFormatType DefaultInputFormatType DefaultLabelStyle DefaultMenuStyle DefaultNaturalLanguage DefaultNewCellStyle DefaultNewInlineCellStyle DefaultNotebook DefaultOptions DefaultOutputFormatType DefaultPrintPrecision DefaultStyle DefaultStyleDefinitions DefaultTextFormatType DefaultTextInlineFormatType DefaultTicksStyle DefaultTooltipStyle DefaultValue DefaultValues Defer DefineExternal DefineInputStreamMethod DefineOutputStreamMethod DefineResourceFunction Definition Degree DegreeCentrality DegreeGraphDistribution DegreeLexicographic DegreeReverseLexicographic DEigensystem DEigenvalues Deinitialization Del DelaunayMesh Delayed Deletable Delete DeleteAnomalies DeleteBorderComponents DeleteCases DeleteChannel DeleteCloudExpression DeleteContents DeleteDirectory DeleteDuplicates DeleteDuplicatesBy DeleteFile DeleteMissing DeleteObject DeletePermissionsKey DeleteSearchIndex DeleteSmallComponents DeleteStopwords DeleteWithContents DeletionWarning DelimitedArray DelimitedSequence Delimiter DelimiterFlashTime DelimiterMatching Delimiters DeliveryFunction Dendrogram Denominator DensityGraphics DensityHistogram DensityPlot DensityPlot3D DependentVariables Deploy Deployed Depth DepthFirstScan Derivative DerivativeFilter DerivedKey DescriptorStateSpace DesignMatrix DestroyAfterEvaluation Det DeviceClose DeviceConfigure DeviceExecute DeviceExecuteAsynchronous DeviceObject DeviceOpen DeviceOpenQ DeviceRead DeviceReadBuffer DeviceReadLatest DeviceReadList DeviceReadTimeSeries Devices DeviceStreams DeviceWrite DeviceWriteBuffer DGaussianWavelet DiacriticalPositioning Diagonal DiagonalizableMatrixQ DiagonalMatrix DiagonalMatrixQ Dialog DialogIndent DialogInput DialogLevel DialogNotebook DialogProlog DialogReturn DialogSymbols Diamond DiamondMatrix DiceDissimilarity DictionaryLookup DictionaryWordQ DifferenceDelta DifferenceOrder DifferenceQuotient DifferenceRoot DifferenceRootReduce Differences DifferentialD DifferentialRoot DifferentialRootReduce DifferentiatorFilter DigitalSignature DigitBlock DigitBlockMinimum DigitCharacter DigitCount DigitQ DihedralAngle DihedralGroup Dilation DimensionalCombinations DimensionalMeshComponents DimensionReduce DimensionReducerFunction DimensionReduction Dimensions DiracComb DiracDelta DirectedEdge DirectedEdges DirectedGraph DirectedGraphQ DirectedInfinity Direction Directive Directory DirectoryName DirectoryQ DirectoryStack DirichletBeta DirichletCharacter DirichletCondition DirichletConvolve DirichletDistribution DirichletEta DirichletL DirichletLambda DirichletTransform DirichletWindow DisableConsolePrintPacket DisableFormatting DiscreteChirpZTransform DiscreteConvolve DiscreteDelta DiscreteHadamardTransform DiscreteIndicator DiscreteLimit DiscreteLQEstimatorGains DiscreteLQRegulatorGains DiscreteLyapunovSolve DiscreteMarkovProcess DiscreteMaxLimit DiscreteMinLimit DiscretePlot DiscretePlot3D DiscreteRatio DiscreteRiccatiSolve DiscreteShift DiscreteTimeModelQ DiscreteUniformDistribution DiscreteVariables DiscreteWaveletData DiscreteWaveletPacketTransform DiscreteWaveletTransform DiscretizeGraphics DiscretizeRegion Discriminant DisjointQ Disjunction Disk DiskBox DiskMatrix DiskSegment Dispatch DispatchQ DispersionEstimatorFunction Display DisplayAllSteps DisplayEndPacket DisplayFlushImagePacket DisplayForm DisplayFunction DisplayPacket DisplayRules DisplaySetSizePacket DisplayString DisplayTemporary DisplayWith DisplayWithRef DisplayWithVariable DistanceFunction DistanceMatrix DistanceTransform Distribute Distributed DistributedContexts DistributeDefinitions DistributionChart DistributionDomain DistributionFitTest DistributionParameterAssumptions DistributionParameterQ Dithering Div Divergence Divide DivideBy Dividers DivideSides Divisible Divisors DivisorSigma DivisorSum DMSList DMSString Do DockedCells DocumentGenerator DocumentGeneratorInformation DocumentGeneratorInformationData DocumentGenerators DocumentNotebook DocumentWeightingRules Dodecahedron DomainRegistrationInformation DominantColors DOSTextFormat Dot DotDashed DotEqual DotLayer DotPlusLayer Dotted DoubleBracketingBar DoubleContourIntegral DoubleDownArrow DoubleLeftArrow DoubleLeftRightArrow DoubleLeftTee DoubleLongLeftArrow DoubleLongLeftRightArrow DoubleLongRightArrow DoubleRightArrow DoubleRightTee DoubleUpArrow DoubleUpDownArrow DoubleVerticalBar DoublyInfinite Down DownArrow DownArrowBar DownArrowUpArrow DownLeftRightVector DownLeftTeeVector DownLeftVector DownLeftVectorBar DownRightTeeVector DownRightVector DownRightVectorBar Downsample DownTee DownTeeArrow DownValues DragAndDrop DrawEdges DrawFrontFaces DrawHighlighted Drop DropoutLayer DSolve DSolveValue Dt DualLinearProgramming DualPolyhedron DualSystemsModel DumpGet DumpSave DuplicateFreeQ Duration Dynamic DynamicBox DynamicBoxOptions DynamicEvaluationTimeout DynamicGeoGraphics DynamicImage DynamicLocation DynamicModule DynamicModuleBox DynamicModuleBoxOptions DynamicModuleParent DynamicModuleValues DynamicName DynamicNamespace DynamicReference DynamicSetting DynamicUpdating DynamicWrapper DynamicWrapperBox DynamicWrapperBoxOptionsE EarthImpactData EarthquakeData EccentricityCentrality Echo EchoFunction EclipseType EdgeAdd EdgeBetweennessCentrality EdgeCapacity EdgeCapForm EdgeColor EdgeConnectivity EdgeContract EdgeCost EdgeCount EdgeCoverQ EdgeCycleMatrix EdgeDashing EdgeDelete EdgeDetect EdgeForm EdgeIndex EdgeJoinForm EdgeLabeling EdgeLabels EdgeLabelStyle EdgeList EdgeOpacity EdgeQ EdgeRenderingFunction EdgeRules EdgeShapeFunction EdgeStyle EdgeThickness EdgeWeight EdgeWeightedGraphQ Editable EditButtonSettings EditCellTagsSettings EditDistance EffectiveInterest Eigensystem Eigenvalues EigenvectorCentrality Eigenvectors Element ElementData ElementwiseLayer ElidedForms Eliminate EliminationOrder Ellipsoid EllipticE EllipticExp EllipticExpPrime EllipticF EllipticFilterModel EllipticK EllipticLog EllipticNomeQ EllipticPi EllipticReducedHalfPeriods EllipticTheta EllipticThetaPrime EmbedCode EmbeddedHTML EmbeddedService EmbeddingLayer EmbeddingObject EmitSound EmphasizeSyntaxErrors EmpiricalDistribution Empty EmptyGraphQ EmptyRegion EnableConsolePrintPacket Enabled Encode Encrypt EncryptedObject EncryptFile End EndAdd EndDialogPacket EndFrontEndInteractionPacket EndOfBuffer EndOfFile EndOfLine EndOfString EndPackage EngineEnvironment EngineeringForm Enter EnterExpressionPacket EnterTextPacket Entity EntityClass EntityClassList EntityCopies EntityFunction EntityGroup EntityInstance EntityList EntityPrefetch EntityProperties EntityProperty EntityPropertyClass EntityRegister EntityStore EntityStores EntityTypeName EntityUnregister EntityValue Entropy EntropyFilter Environment Epilog EpilogFunction Equal EqualColumns EqualRows EqualTilde EqualTo EquatedTo Equilibrium EquirippleFilterKernel Equivalent Erf Erfc Erfi ErlangB ErlangC ErlangDistribution Erosion ErrorBox ErrorBoxOptions ErrorNorm ErrorPacket ErrorsDialogSettings EscapeRadius EstimatedBackground EstimatedDistribution EstimatedProcess EstimatorGains EstimatorRegulator EuclideanDistance EulerAngles EulerCharacteristic EulerE EulerGamma EulerianGraphQ EulerMatrix EulerPhi Evaluatable Evaluate Evaluated EvaluatePacket EvaluateScheduledTask EvaluationBox EvaluationCell EvaluationCompletionAction EvaluationData EvaluationElements EvaluationEnvironment EvaluationMode EvaluationMonitor EvaluationNotebook EvaluationObject EvaluationOrder Evaluator EvaluatorNames EvenQ EventData EventEvaluator EventHandler EventHandlerTag EventLabels EventSeries ExactBlackmanWindow ExactNumberQ ExactRootIsolation ExampleData Except ExcludedForms ExcludedLines ExcludedPhysicalQuantities ExcludePods Exclusions ExclusionsStyle Exists Exit ExitDialog ExoplanetData Exp Expand ExpandAll ExpandDenominator ExpandFileName ExpandNumerator Expectation ExpectationE ExpectedValue ExpGammaDistribution ExpIntegralE ExpIntegralEi ExpirationDate Exponent ExponentFunction ExponentialDistribution ExponentialFamily ExponentialGeneratingFunction ExponentialMovingAverage ExponentialPowerDistribution ExponentPosition ExponentStep Export ExportAutoReplacements ExportByteArray ExportForm ExportPacket ExportString Expression ExpressionCell ExpressionPacket ExpressionUUID ExpToTrig ExtendedEntityClass ExtendedGCD Extension ExtentElementFunction ExtentMarkers ExtentSize ExternalBundle ExternalCall ExternalDataCharacterEncoding ExternalEvaluate ExternalFunction ExternalFunctionName ExternalObject ExternalOptions ExternalSessionObject ExternalSessions ExternalTypeSignature ExternalValue Extract ExtractArchive ExtractLayer ExtremeValueDistributionFaceForm FaceGrids FaceGridsStyle FacialFeatures Factor FactorComplete Factorial Factorial2 FactorialMoment FactorialMomentGeneratingFunction FactorialPower FactorInteger FactorList FactorSquareFree FactorSquareFreeList FactorTerms FactorTermsList Fail Failure FailureAction FailureDistribution FailureQ False FareySequence FARIMAProcess FeatureDistance FeatureExtract FeatureExtraction FeatureExtractor FeatureExtractorFunction FeatureNames FeatureNearest FeatureSpacePlot FeatureSpacePlot3D FeatureTypes FEDisableConsolePrintPacket FeedbackLinearize FeedbackSector FeedbackSectorStyle FeedbackType FEEnableConsolePrintPacket FetalGrowthData Fibonacci Fibonorial FieldCompletionFunction FieldHint FieldHintStyle FieldMasked FieldSize File FileBaseName FileByteCount FileConvert FileDate FileExistsQ FileExtension FileFormat FileHandler FileHash FileInformation FileName FileNameDepth FileNameDialogSettings FileNameDrop FileNameForms FileNameJoin FileNames FileNameSetter FileNameSplit FileNameTake FilePrint FileSize FileSystemMap FileSystemScan FileTemplate FileTemplateApply FileType FilledCurve FilledCurveBox FilledCurveBoxOptions Filling FillingStyle FillingTransform FilteredEntityClass FilterRules FinancialBond FinancialData FinancialDerivative FinancialIndicator Find FindAnomalies FindArgMax FindArgMin FindChannels FindClique FindClusters FindCookies FindCurvePath FindCycle FindDevices FindDistribution FindDistributionParameters FindDivisions FindEdgeCover FindEdgeCut FindEdgeIndependentPaths FindEquationalProof FindEulerianCycle FindExternalEvaluators FindFaces FindFile FindFit FindFormula FindFundamentalCycles FindGeneratingFunction FindGeoLocation FindGeometricConjectures FindGeometricTransform FindGraphCommunities FindGraphIsomorphism FindGraphPartition FindHamiltonianCycle FindHamiltonianPath FindHiddenMarkovStates FindIndependentEdgeSet FindIndependentVertexSet FindInstance FindIntegerNullVector FindKClan FindKClique FindKClub FindKPlex FindLibrary FindLinearRecurrence FindList FindMatchingColor FindMaximum FindMaximumFlow FindMaxValue FindMeshDefects FindMinimum FindMinimumCostFlow FindMinimumCut FindMinValue FindMoleculeSubstructure FindPath FindPeaks FindPermutation FindPostmanTour FindProcessParameters FindRepeat FindRoot FindSequenceFunction FindSettings FindShortestPath FindShortestTour FindSpanningTree FindSystemModelEquilibrium FindTextualAnswer FindThreshold FindTransientRepeat FindVertexCover FindVertexCut FindVertexIndependentPaths Fine FinishDynamic FiniteAbelianGroupCount FiniteGroupCount FiniteGroupData First FirstCase FirstPassageTimeDistribution FirstPosition FischerGroupFi22 FischerGroupFi23 FischerGroupFi24Prime FisherHypergeometricDistribution FisherRatioTest FisherZDistribution Fit FitAll FitRegularization FittedModel FixedOrder FixedPoint FixedPointList FlashSelection Flat Flatten FlattenAt FlattenLayer FlatTopWindow FlipView Floor FlowPolynomial FlushPrintOutputPacket Fold FoldList FoldPair FoldPairList FollowRedirects Font FontColor FontFamily FontForm FontName FontOpacity FontPostScriptName FontProperties FontReencoding FontSize FontSlant FontSubstitutions FontTracking FontVariations FontWeight For ForAll Format FormatRules FormatType FormatTypeAutoConvert FormatValues FormBox FormBoxOptions FormControl FormFunction FormLayoutFunction FormObject FormPage FormTheme FormulaData FormulaLookup FortranForm Forward ForwardBackward Fourier FourierCoefficient FourierCosCoefficient FourierCosSeries FourierCosTransform FourierDCT FourierDCTFilter FourierDCTMatrix FourierDST FourierDSTMatrix FourierMatrix FourierParameters FourierSequenceTransform FourierSeries FourierSinCoefficient FourierSinSeries FourierSinTransform FourierTransform FourierTrigSeries FractionalBrownianMotionProcess FractionalGaussianNoiseProcess FractionalPart FractionBox FractionBoxOptions FractionLine Frame FrameBox FrameBoxOptions Framed FrameInset FrameLabel Frameless FrameMargins FrameRate FrameStyle FrameTicks FrameTicksStyle FRatioDistribution FrechetDistribution FreeQ FrenetSerretSystem FrequencySamplingFilterKernel FresnelC FresnelF FresnelG FresnelS Friday FrobeniusNumber FrobeniusSolve FromAbsoluteTime FromCharacterCode FromCoefficientRules FromContinuedFraction FromDate FromDigits FromDMS FromEntity FromJulianDate FromLetterNumber FromPolarCoordinates FromRomanNumeral FromSphericalCoordinates FromUnixTime Front FrontEndDynamicExpression FrontEndEventActions FrontEndExecute FrontEndObject FrontEndResource FrontEndResourceString FrontEndStackSize FrontEndToken FrontEndTokenExecute FrontEndValueCache FrontEndVersion FrontFaceColor FrontFaceOpacity Full FullAxes FullDefinition FullForm FullGraphics FullInformationOutputRegulator FullOptions FullRegion FullSimplify Function FunctionCompile FunctionCompileExport FunctionCompileExportByteArray FunctionCompileExportLibrary FunctionCompileExportString FunctionDomain FunctionExpand FunctionInterpolation FunctionPeriod FunctionRange FunctionSpace FussellVeselyImportanceGaborFilter GaborMatrix GaborWavelet GainMargins GainPhaseMargins GalaxyData GalleryView Gamma GammaDistribution GammaRegularized GapPenalty GARCHProcess GatedRecurrentLayer Gather GatherBy GaugeFaceElementFunction GaugeFaceStyle GaugeFrameElementFunction GaugeFrameSize GaugeFrameStyle GaugeLabels GaugeMarkers GaugeStyle GaussianFilter GaussianIntegers GaussianMatrix GaussianOrthogonalMatrixDistribution GaussianSymplecticMatrixDistribution GaussianUnitaryMatrixDistribution GaussianWindow GCD GegenbauerC General GeneralizedLinearModelFit GenerateAsymmetricKeyPair GenerateConditions GeneratedCell GeneratedDocumentBinding GenerateDerivedKey GenerateDigitalSignature GenerateDocument GeneratedParameters GeneratedQuantityMagnitudes GenerateHTTPResponse GenerateSecuredAuthenticationKey GenerateSymmetricKey GeneratingFunction GeneratorDescription GeneratorHistoryLength GeneratorOutputType Generic GenericCylindricalDecomposition GenomeData GenomeLookup GeoAntipode GeoArea GeoArraySize GeoBackground GeoBoundingBox GeoBounds GeoBoundsRegion GeoBubbleChart GeoCenter GeoCircle GeodesicClosing GeodesicDilation GeodesicErosion GeodesicOpening GeoDestination GeodesyData GeoDirection GeoDisk GeoDisplacement GeoDistance GeoDistanceList GeoElevationData GeoEntities GeoGraphics GeogravityModelData GeoGridDirectionDifference GeoGridLines GeoGridLinesStyle GeoGridPosition GeoGridRange GeoGridRangePadding GeoGridUnitArea GeoGridUnitDistance GeoGridVector GeoGroup GeoHemisphere GeoHemisphereBoundary GeoHistogram GeoIdentify GeoImage GeoLabels GeoLength GeoListPlot GeoLocation GeologicalPeriodData GeomagneticModelData GeoMarker GeometricAssertion GeometricBrownianMotionProcess GeometricDistribution GeometricMean GeometricMeanFilter GeometricScene GeometricTransformation GeometricTransformation3DBox GeometricTransformation3DBoxOptions GeometricTransformationBox GeometricTransformationBoxOptions GeoModel GeoNearest GeoPath GeoPosition GeoPositionENU GeoPositionXYZ GeoProjection GeoProjectionData GeoRange GeoRangePadding GeoRegionValuePlot GeoResolution GeoScaleBar GeoServer GeoSmoothHistogram GeoStreamPlot GeoStyling GeoStylingImageFunction GeoVariant GeoVector GeoVectorENU GeoVectorPlot GeoVectorXYZ GeoVisibleRegion GeoVisibleRegionBoundary GeoWithinQ GeoZoomLevel GestureHandler GestureHandlerTag Get GetBoundingBoxSizePacket GetContext GetEnvironment GetFileName GetFrontEndOptionsDataPacket GetLinebreakInformationPacket GetMenusPacket GetPageBreakInformationPacket Glaisher GlobalClusteringCoefficient GlobalPreferences GlobalSession Glow GoldenAngle GoldenRatio GompertzMakehamDistribution GoodmanKruskalGamma GoodmanKruskalGammaTest Goto Grad Gradient GradientFilter GradientOrientationFilter GrammarApply GrammarRules GrammarToken Graph Graph3D GraphAssortativity GraphAutomorphismGroup GraphCenter GraphComplement GraphData GraphDensity GraphDiameter GraphDifference GraphDisjointUnion GraphDistance GraphDistanceMatrix GraphElementData GraphEmbedding GraphHighlight GraphHighlightStyle GraphHub Graphics Graphics3D Graphics3DBox Graphics3DBoxOptions GraphicsArray GraphicsBaseline GraphicsBox GraphicsBoxOptions GraphicsColor GraphicsColumn GraphicsComplex GraphicsComplex3DBox GraphicsComplex3DBoxOptions GraphicsComplexBox GraphicsComplexBoxOptions GraphicsContents GraphicsData GraphicsGrid GraphicsGridBox GraphicsGroup GraphicsGroup3DBox GraphicsGroup3DBoxOptions GraphicsGroupBox GraphicsGroupBoxOptions GraphicsGrouping GraphicsHighlightColor GraphicsRow GraphicsSpacing GraphicsStyle GraphIntersection GraphLayout GraphLinkEfficiency GraphPeriphery GraphPlot GraphPlot3D GraphPower GraphPropertyDistribution GraphQ GraphRadius GraphReciprocity GraphRoot GraphStyle GraphUnion Gray GrayLevel Greater GreaterEqual GreaterEqualLess GreaterEqualThan GreaterFullEqual GreaterGreater GreaterLess GreaterSlantEqual GreaterThan GreaterTilde Green GreenFunction Grid GridBaseline GridBox GridBoxAlignment GridBoxBackground GridBoxDividers GridBoxFrame GridBoxItemSize GridBoxItemStyle GridBoxOptions GridBoxSpacings GridCreationSettings GridDefaultElement GridElementStyleOptions GridFrame GridFrameMargins GridGraph GridLines GridLinesStyle GroebnerBasis GroupActionBase GroupBy GroupCentralizer GroupElementFromWord GroupElementPosition GroupElementQ GroupElements GroupElementToWord GroupGenerators Groupings GroupMultiplicationTable GroupOrbits GroupOrder GroupPageBreakWithin GroupSetwiseStabilizer GroupStabilizer GroupStabilizerChain GroupTogetherGrouping GroupTogetherNestedGrouping GrowCutComponents Gudermannian GuidedFilter GumbelDistributionHaarWavelet HadamardMatrix HalfLine HalfNormalDistribution HalfPlane HalfSpace HamiltonianGraphQ HammingDistance HammingWindow HandlerFunctions HandlerFunctionsKeys HankelH1 HankelH2 HankelMatrix HankelTransform HannPoissonWindow HannWindow HaradaNortonGroupHN HararyGraph HarmonicMean HarmonicMeanFilter HarmonicNumber Hash Haversine HazardFunction Head HeadCompose HeaderLines Heads HeavisideLambda HeavisidePi HeavisideTheta HeldGroupHe HeldPart HelpBrowserLookup HelpBrowserNotebook HelpBrowserSettings Here HermiteDecomposition HermiteH HermitianMatrixQ HessenbergDecomposition Hessian HexadecimalCharacter Hexahedron HexahedronBox HexahedronBoxOptions HiddenMarkovProcess HiddenSurface Highlighted HighlightGraph HighlightImage HighlightMesh HighpassFilter HigmanSimsGroupHS HilbertCurve HilbertFilter HilbertMatrix Histogram Histogram3D HistogramDistribution HistogramList HistogramTransform HistogramTransformInterpolation HistoricalPeriodData HitMissTransform HITSCentrality HjorthDistribution HodgeDual HoeffdingD HoeffdingDTest Hold HoldAll HoldAllComplete HoldComplete HoldFirst HoldForm HoldPattern HoldRest HolidayCalendar HomeDirectory HomePage Horizontal HorizontalForm HorizontalGauge HorizontalScrollPosition HornerForm HostLookup HotellingTSquareDistribution HoytDistribution HTMLSave HTTPErrorResponse HTTPRedirect HTTPRequest HTTPRequestData HTTPResponse Hue HumanGrowthData HumpDownHump HumpEqual HurwitzLerchPhi HurwitzZeta HyperbolicDistribution HypercubeGraph HyperexponentialDistribution Hyperfactorial Hypergeometric0F1 Hypergeometric0F1Regularized Hypergeometric1F1 Hypergeometric1F1Regularized Hypergeometric2F1 Hypergeometric2F1Regularized HypergeometricDistribution HypergeometricPFQ HypergeometricPFQRegularized HypergeometricU Hyperlink HyperlinkCreationSettings Hyperplane Hyphenation HyphenationOptions HypoexponentialDistribution HypothesisTestDataI IconData Iconize IconizedObject IconRules Icosahedron Identity IdentityMatrix If IgnoreCase IgnoreDiacritics IgnorePunctuation IgnoreSpellCheck IgnoringInactive Im Image Image3D Image3DProjection Image3DSlices ImageAccumulate ImageAdd ImageAdjust ImageAlign ImageApply ImageApplyIndexed ImageAspectRatio ImageAssemble ImageAugmentationLayer ImageBoundingBoxes ImageCache ImageCacheValid ImageCapture ImageCaptureFunction ImageCases ImageChannels ImageClip ImageCollage ImageColorSpace ImageCompose ImageContainsQ ImageContents ImageConvolve ImageCooccurrence ImageCorners ImageCorrelate ImageCorrespondingPoints ImageCrop ImageData ImageDeconvolve ImageDemosaic ImageDifference ImageDimensions ImageDisplacements ImageDistance ImageEffect ImageExposureCombine ImageFeatureTrack ImageFileApply ImageFileFilter ImageFileScan ImageFilter ImageFocusCombine ImageForestingComponents ImageFormattingWidth ImageForwardTransformation ImageGraphics ImageHistogram ImageIdentify ImageInstanceQ ImageKeypoints ImageLevels ImageLines ImageMargins ImageMarker ImageMarkers ImageMeasurements ImageMesh ImageMultiply ImageOffset ImagePad ImagePadding ImagePartition ImagePeriodogram ImagePerspectiveTransformation ImagePosition ImagePreviewFunction ImagePyramid ImagePyramidApply ImageQ ImageRangeCache ImageRecolor ImageReflect ImageRegion ImageResize ImageResolution ImageRestyle ImageRotate ImageRotated ImageSaliencyFilter ImageScaled ImageScan ImageSize ImageSizeAction ImageSizeCache ImageSizeMultipliers ImageSizeRaw ImageSubtract ImageTake ImageTransformation ImageTrim ImageType ImageValue ImageValuePositions ImagingDevice ImplicitRegion Implies Import ImportAutoReplacements ImportByteArray ImportOptions ImportString ImprovementImportance In Inactivate Inactive IncidenceGraph IncidenceList IncidenceMatrix IncludeAromaticBonds IncludeConstantBasis IncludeDefinitions IncludeDirectories IncludeFileExtension IncludeGeneratorTasks IncludeHydrogens IncludeInflections IncludeMetaInformation IncludePods IncludeQuantities IncludeRelatedTables IncludeSingularTerm IncludeWindowTimes Increment IndefiniteMatrixQ Indent IndentingNewlineSpacings IndentMaxFraction IndependenceTest IndependentEdgeSetQ IndependentPhysicalQuantity IndependentUnit IndependentUnitDimension IndependentVertexSetQ Indeterminate IndeterminateThreshold IndexCreationOptions Indexed IndexGraph IndexTag Inequality InexactNumberQ InexactNumbers InfiniteLine InfinitePlane Infinity Infix InflationAdjust InflationMethod Information InformationData InformationDataGrid Inherited InheritScope InhomogeneousPoissonProcess InitialEvaluationHistory Initialization InitializationCell InitializationCellEvaluation InitializationCellWarning InitializationObjects InitializationValue Initialize InitialSeeding InlineCounterAssignments InlineCounterIncrements InlineRules Inner InnerPolygon InnerPolyhedron Inpaint Input InputAliases InputAssumptions InputAutoReplacements InputField InputFieldBox InputFieldBoxOptions InputForm InputGrouping InputNamePacket InputNotebook InputPacket InputSettings InputStream InputString InputStringPacket InputToBoxFormPacket Insert InsertionFunction InsertionPointObject InsertLinebreaks InsertResults Inset Inset3DBox Inset3DBoxOptions InsetBox InsetBoxOptions Insphere Install InstallService InstanceNormalizationLayer InString Integer IntegerDigits IntegerExponent IntegerLength IntegerName IntegerPart IntegerPartitions IntegerQ IntegerReverse Integers IntegerString Integral Integrate Interactive InteractiveTradingChart Interlaced Interleaving InternallyBalancedDecomposition InterpolatingFunction InterpolatingPolynomial Interpolation InterpolationOrder InterpolationPoints InterpolationPrecision Interpretation InterpretationBox InterpretationBoxOptions InterpretationFunction Interpreter InterpretTemplate InterquartileRange Interrupt InterruptSettings IntersectingQ Intersection Interval IntervalIntersection IntervalMarkers IntervalMarkersStyle IntervalMemberQ IntervalSlider IntervalUnion Into Inverse InverseBetaRegularized InverseCDF InverseChiSquareDistribution InverseContinuousWaveletTransform InverseDistanceTransform InverseEllipticNomeQ InverseErf InverseErfc InverseFourier InverseFourierCosTransform InverseFourierSequenceTransform InverseFourierSinTransform InverseFourierTransform InverseFunction InverseFunctions InverseGammaDistribution InverseGammaRegularized InverseGaussianDistribution InverseGudermannian InverseHankelTransform InverseHaversine InverseImagePyramid InverseJacobiCD InverseJacobiCN InverseJacobiCS InverseJacobiDC InverseJacobiDN InverseJacobiDS InverseJacobiNC InverseJacobiND InverseJacobiNS InverseJacobiSC InverseJacobiSD InverseJacobiSN InverseLaplaceTransform InverseMellinTransform InversePermutation InverseRadon InverseRadonTransform InverseSeries InverseShortTimeFourier InverseSpectrogram InverseSurvivalFunction InverseTransformedRegion InverseWaveletTransform InverseWeierstrassP InverseWishartMatrixDistribution InverseZTransform Invisible InvisibleApplication InvisibleTimes IPAddress IrreduciblePolynomialQ IslandData IsolatingInterval IsomorphicGraphQ IsotopeData Italic Item ItemAspectRatio ItemBox ItemBoxOptions ItemSize ItemStyle ItoProcessJaccardDissimilarity JacobiAmplitude Jacobian JacobiCD JacobiCN JacobiCS JacobiDC JacobiDN JacobiDS JacobiNC JacobiND JacobiNS JacobiP JacobiSC JacobiSD JacobiSN JacobiSymbol JacobiZeta JankoGroupJ1 JankoGroupJ2 JankoGroupJ3 JankoGroupJ4 JarqueBeraALMTest JohnsonDistribution Join JoinAcross Joined JoinedCurve JoinedCurveBox JoinedCurveBoxOptions JoinForm JordanDecomposition JordanModelDecomposition JulianDate JuliaSetBoettcher JuliaSetIterationCount JuliaSetPlot JuliaSetPointsK KagiChart KaiserBesselWindow KaiserWindow KalmanEstimator KalmanFilter KarhunenLoeveDecomposition KaryTree KatzCentrality KCoreComponents KDistribution KEdgeConnectedComponents KEdgeConnectedGraphQ KelvinBei KelvinBer KelvinKei KelvinKer KendallTau KendallTauTest KernelExecute KernelFunction KernelMixtureDistribution Kernels Ket Key KeyCollisionFunction KeyComplement KeyDrop KeyDropFrom KeyExistsQ KeyFreeQ KeyIntersection KeyMap KeyMemberQ KeypointStrength Keys KeySelect KeySort KeySortBy KeyTake KeyUnion KeyValueMap KeyValuePattern Khinchin KillProcess KirchhoffGraph KirchhoffMatrix KleinInvariantJ KnapsackSolve KnightTourGraph KnotData KnownUnitQ KochCurve KolmogorovSmirnovTest KroneckerDelta KroneckerModelDecomposition KroneckerProduct KroneckerSymbol KuiperTest KumaraswamyDistribution Kurtosis KuwaharaFilter KVertexConnectedComponents KVertexConnectedGraphQLABColor Label Labeled LabeledSlider LabelingFunction LabelingSize LabelStyle LabelVisibility LaguerreL LakeData LambdaComponents LambertW LaminaData LanczosWindow LandauDistribution Language LanguageCategory LanguageData LanguageIdentify LanguageOptions LaplaceDistribution LaplaceTransform Laplacian LaplacianFilter LaplacianGaussianFilter Large Larger Last Latitude LatitudeLongitude LatticeData LatticeReduce Launch LaunchKernels LayeredGraphPlot LayerSizeFunction LayoutInformation LCHColor LCM LeaderSize LeafCount LeapYearQ LearnDistribution LearnedDistribution LearningRate LearningRateMultipliers LeastSquares LeastSquaresFilterKernel Left LeftArrow LeftArrowBar LeftArrowRightArrow LeftDownTeeVector LeftDownVector LeftDownVectorBar LeftRightArrow LeftRightVector LeftTee LeftTeeArrow LeftTeeVector LeftTriangle LeftTriangleBar LeftTriangleEqual LeftUpDownVector LeftUpTeeVector LeftUpVector LeftUpVectorBar LeftVector LeftVectorBar LegendAppearance Legended LegendFunction LegendLabel LegendLayout LegendMargins LegendMarkers LegendMarkerSize LegendreP LegendreQ LegendreType Length LengthWhile LerchPhi Less LessEqual LessEqualGreater LessEqualThan LessFullEqual LessGreater LessLess LessSlantEqual LessThan LessTilde LetterCharacter LetterCounts LetterNumber LetterQ Level LeveneTest LeviCivitaTensor LevyDistribution Lexicographic LibraryDataType LibraryFunction LibraryFunctionError LibraryFunctionInformation LibraryFunctionLoad LibraryFunctionUnload LibraryLoad LibraryUnload LicenseID LiftingFilterData LiftingWaveletTransform LightBlue LightBrown LightCyan Lighter LightGray LightGreen Lighting LightingAngle LightMagenta LightOrange LightPink LightPurple LightRed LightSources LightYellow Likelihood Limit LimitsPositioning LimitsPositioningTokens LindleyDistribution Line Line3DBox Line3DBoxOptions LinearFilter LinearFractionalOptimization LinearFractionalTransform LinearGradientImage LinearizingTransformationData LinearLayer LinearModelFit LinearOffsetFunction LinearOptimization LinearProgramming LinearRecurrence LinearSolve LinearSolveFunction LineBox LineBoxOptions LineBreak LinebreakAdjustments LineBreakChart LinebreakSemicolonWeighting LineBreakWithin LineColor LineGraph LineIndent LineIndentMaxFraction LineIntegralConvolutionPlot LineIntegralConvolutionScale LineLegend LineOpacity LineSpacing LineWrapParts LinkActivate LinkClose LinkConnect LinkConnectedQ LinkCreate LinkError LinkFlush LinkFunction LinkHost LinkInterrupt LinkLaunch LinkMode LinkObject LinkOpen LinkOptions LinkPatterns LinkProtocol LinkRankCentrality LinkRead LinkReadHeld LinkReadyQ Links LinkService LinkWrite LinkWriteHeld LiouvilleLambda List Listable ListAnimate ListContourPlot ListContourPlot3D ListConvolve ListCorrelate ListCurvePathPlot ListDeconvolve ListDensityPlot ListDensityPlot3D Listen ListFormat ListFourierSequenceTransform ListInterpolation ListLineIntegralConvolutionPlot ListLinePlot ListLogLinearPlot ListLogLogPlot ListLogPlot ListPicker ListPickerBox ListPickerBoxBackground ListPickerBoxOptions ListPlay ListPlot ListPlot3D ListPointPlot3D ListPolarPlot ListQ ListSliceContourPlot3D ListSliceDensityPlot3D ListSliceVectorPlot3D ListStepPlot ListStreamDensityPlot ListStreamPlot ListSurfacePlot3D ListVectorDensityPlot ListVectorPlot ListVectorPlot3D ListZTransform Literal LiteralSearch LocalAdaptiveBinarize LocalCache LocalClusteringCoefficient LocalizeDefinitions LocalizeVariables LocalObject LocalObjects LocalResponseNormalizationLayer LocalSubmit LocalSymbol LocalTime LocalTimeZone LocationEquivalenceTest LocationTest Locator LocatorAutoCreate LocatorBox LocatorBoxOptions LocatorCentering LocatorPane LocatorPaneBox LocatorPaneBoxOptions LocatorRegion Locked Log Log10 Log2 LogBarnesG LogGamma LogGammaDistribution LogicalExpand LogIntegral LogisticDistribution LogisticSigmoid LogitModelFit LogLikelihood LogLinearPlot LogLogisticDistribution LogLogPlot LogMultinormalDistribution LogNormalDistribution LogPlot LogRankTest LogSeriesDistribution LongEqual Longest LongestCommonSequence LongestCommonSequencePositions LongestCommonSubsequence LongestCommonSubsequencePositions LongestMatch LongestOrderedSequence LongForm Longitude LongLeftArrow LongLeftRightArrow LongRightArrow LongShortTermMemoryLayer Lookup Loopback LoopFreeGraphQ LossFunction LowerCaseQ LowerLeftArrow LowerRightArrow LowerTriangularize LowerTriangularMatrixQ LowpassFilter LQEstimatorGains LQGRegulator LQOutputRegulatorGains LQRegulatorGains LUBackSubstitution LucasL LuccioSamiComponents LUDecomposition LunarEclipse LUVColor LyapunovSolve LyonsGroupLyMachineID MachineName MachineNumberQ MachinePrecision MacintoshSystemPageSetup Magenta Magnification Magnify MailAddressValidation MailExecute MailFolder MailItem MailReceiverFunction MailResponseFunction MailSearch MailServerConnect MailServerConnection MailSettings MainSolve MaintainDynamicCaches Majority MakeBoxes MakeExpression MakeRules ManagedLibraryExpressionID ManagedLibraryExpressionQ MandelbrotSetBoettcher MandelbrotSetDistance MandelbrotSetIterationCount MandelbrotSetMemberQ MandelbrotSetPlot MangoldtLambda ManhattanDistance Manipulate Manipulator MannedSpaceMissionData MannWhitneyTest MantissaExponent Manual Map MapAll MapAt MapIndexed MAProcess MapThread MarchenkoPasturDistribution MarcumQ MardiaCombinedTest MardiaKurtosisTest MardiaSkewnessTest MarginalDistribution MarkovProcessProperties Masking MatchingDissimilarity MatchLocalNameQ MatchLocalNames MatchQ Material MathematicalFunctionData MathematicaNotation MathieuC MathieuCharacteristicA MathieuCharacteristicB MathieuCharacteristicExponent MathieuCPrime MathieuGroupM11 MathieuGroupM12 MathieuGroupM22 MathieuGroupM23 MathieuGroupM24 MathieuS MathieuSPrime MathMLForm MathMLText Matrices MatrixExp MatrixForm MatrixFunction MatrixLog MatrixNormalDistribution MatrixPlot MatrixPower MatrixPropertyDistribution MatrixQ MatrixRank MatrixTDistribution Max MaxBend MaxCellMeasure MaxColorDistance MaxDetect MaxDuration MaxExtraBandwidths MaxExtraConditions MaxFeatureDisplacement MaxFeatures MaxFilter MaximalBy Maximize MaxItems MaxIterations MaxLimit MaxMemoryUsed MaxMixtureKernels MaxOverlapFraction MaxPlotPoints MaxPoints MaxRecursion MaxStableDistribution MaxStepFraction MaxSteps MaxStepSize MaxTrainingRounds MaxValue MaxwellDistribution MaxWordGap McLaughlinGroupMcL Mean MeanAbsoluteLossLayer MeanAround MeanClusteringCoefficient MeanDegreeConnectivity MeanDeviation MeanFilter MeanGraphDistance MeanNeighborDegree MeanShift MeanShiftFilter MeanSquaredLossLayer Median MedianDeviation MedianFilter MedicalTestData Medium MeijerG MeijerGReduce MeixnerDistribution MellinConvolve MellinTransform MemberQ MemoryAvailable MemoryConstrained MemoryConstraint MemoryInUse MengerMesh Menu MenuAppearance MenuCommandKey MenuEvaluator MenuItem MenuList MenuPacket MenuSortingValue MenuStyle MenuView Merge MergeDifferences MergingFunction MersennePrimeExponent MersennePrimeExponentQ Mesh MeshCellCentroid MeshCellCount MeshCellHighlight MeshCellIndex MeshCellLabel MeshCellMarker MeshCellMeasure MeshCellQuality MeshCells MeshCellShapeFunction MeshCellStyle MeshCoordinates MeshFunctions MeshPrimitives MeshQualityGoal MeshRange MeshRefinementFunction MeshRegion MeshRegionQ MeshShading MeshStyle Message MessageDialog MessageList MessageName MessageObject MessageOptions MessagePacket Messages MessagesNotebook MetaCharacters MetaInformation MeteorShowerData Method MethodOptions MexicanHatWavelet MeyerWavelet Midpoint Min MinColorDistance MinDetect MineralData MinFilter MinimalBy MinimalPolynomial MinimalStateSpaceModel Minimize MinimumTimeIncrement MinIntervalSize MinkowskiQuestionMark MinLimit MinMax MinorPlanetData Minors MinRecursion MinSize MinStableDistribution Minus MinusPlus MinValue Missing MissingBehavior MissingDataMethod MissingDataRules MissingQ MissingString MissingStyle MissingValuePattern MittagLefflerE MixedFractionParts MixedGraphQ MixedMagnitude MixedRadix MixedRadixQuantity MixedUnit MixtureDistribution Mod Modal Mode Modular ModularInverse ModularLambda Module Modulus MoebiusMu Molecule MoleculeContainsQ MoleculeEquivalentQ MoleculeGraph MoleculeModify MoleculePattern MoleculePlot MoleculePlot3D MoleculeProperty MoleculeQ MoleculeValue Moment Momentary MomentConvert MomentEvaluate MomentGeneratingFunction MomentOfInertia Monday Monitor MonomialList MonomialOrder MonsterGroupM MoonPhase MoonPosition MorletWavelet MorphologicalBinarize MorphologicalBranchPoints MorphologicalComponents MorphologicalEulerNumber MorphologicalGraph MorphologicalPerimeter MorphologicalTransform MortalityData Most MountainData MouseAnnotation MouseAppearance MouseAppearanceTag MouseButtons Mouseover MousePointerNote MousePosition MovieData MovingAverage MovingMap MovingMedian MoyalDistribution Multicolumn MultiedgeStyle MultigraphQ MultilaunchWarning MultiLetterItalics MultiLetterStyle MultilineFunction Multinomial MultinomialDistribution MultinormalDistribution MultiplicativeOrder Multiplicity MultiplySides Multiselection MultivariateHypergeometricDistribution MultivariatePoissonDistribution MultivariateTDistributionN NakagamiDistribution NameQ Names NamespaceBox NamespaceBoxOptions Nand NArgMax NArgMin NBernoulliB NBodySimulation NBodySimulationData NCache NDEigensystem NDEigenvalues NDSolve NDSolveValue Nearest NearestFunction NearestNeighborGraph NearestTo NebulaData NeedCurrentFrontEndPackagePacket NeedCurrentFrontEndSymbolsPacket NeedlemanWunschSimilarity Needs Negative NegativeBinomialDistribution NegativeDefiniteMatrixQ NegativeIntegers NegativeMultinomialDistribution NegativeRationals NegativeReals NegativeSemidefiniteMatrixQ NeighborhoodData NeighborhoodGraph Nest NestedGreaterGreater NestedLessLess NestedScriptRules NestGraph NestList NestWhile NestWhileList NetAppend NetBidirectionalOperator NetChain NetDecoder NetDelete NetDrop NetEncoder NetEvaluationMode NetExtract NetFlatten NetFoldOperator NetGraph NetInformation NetInitialize NetInsert NetInsertSharedArrays NetJoin NetMapOperator NetMapThreadOperator NetMeasurements NetModel NetNestOperator NetPairEmbeddingOperator NetPort NetPortGradient NetPrepend NetRename NetReplace NetReplacePart NetSharedArray NetStateObject NetTake NetTrain NetTrainResultsObject NetworkPacketCapture NetworkPacketRecording NetworkPacketRecordingDuring NetworkPacketTrace NeumannValue NevilleThetaC NevilleThetaD NevilleThetaN NevilleThetaS NewPrimitiveStyle NExpectation Next NextCell NextDate NextPrime NextScheduledTaskTime NHoldAll NHoldFirst NHoldRest NicholsGridLines NicholsPlot NightHemisphere NIntegrate NMaximize NMaxValue NMinimize NMinValue NominalVariables NonAssociative NoncentralBetaDistribution NoncentralChiSquareDistribution NoncentralFRatioDistribution NoncentralStudentTDistribution NonCommutativeMultiply NonConstants NondimensionalizationTransform None NoneTrue NonlinearModelFit NonlinearStateSpaceModel NonlocalMeansFilter NonNegative NonNegativeIntegers NonNegativeRationals NonNegativeReals NonPositive NonPositiveIntegers NonPositiveRationals NonPositiveReals Nor NorlundB Norm Normal NormalDistribution NormalGrouping NormalizationLayer Normalize Normalized NormalizedSquaredEuclideanDistance NormalMatrixQ NormalsFunction NormFunction Not NotCongruent NotCupCap NotDoubleVerticalBar Notebook NotebookApply NotebookAutoSave NotebookClose NotebookConvertSettings NotebookCreate NotebookCreateReturnObject NotebookDefault NotebookDelete NotebookDirectory NotebookDynamicExpression NotebookEvaluate NotebookEventActions NotebookFileName NotebookFind NotebookFindReturnObject NotebookGet NotebookGetLayoutInformationPacket NotebookGetMisspellingsPacket NotebookImport NotebookInformation NotebookInterfaceObject NotebookLocate NotebookObject NotebookOpen NotebookOpenReturnObject NotebookPath NotebookPrint NotebookPut NotebookPutReturnObject NotebookRead NotebookResetGeneratedCells Notebooks NotebookSave NotebookSaveAs NotebookSelection NotebookSetupLayoutInformationPacket NotebooksMenu NotebookTemplate NotebookWrite NotElement NotEqualTilde NotExists NotGreater NotGreaterEqual NotGreaterFullEqual NotGreaterGreater NotGreaterLess NotGreaterSlantEqual NotGreaterTilde Nothing NotHumpDownHump NotHumpEqual NotificationFunction NotLeftTriangle NotLeftTriangleBar NotLeftTriangleEqual NotLess NotLessEqual NotLessFullEqual NotLessGreater NotLessLess NotLessSlantEqual NotLessTilde NotNestedGreaterGreater NotNestedLessLess NotPrecedes NotPrecedesEqual NotPrecedesSlantEqual NotPrecedesTilde NotReverseElement NotRightTriangle NotRightTriangleBar NotRightTriangleEqual NotSquareSubset NotSquareSubsetEqual NotSquareSuperset NotSquareSupersetEqual NotSubset NotSubsetEqual NotSucceeds NotSucceedsEqual NotSucceedsSlantEqual NotSucceedsTilde NotSuperset NotSupersetEqual NotTilde NotTildeEqual NotTildeFullEqual NotTildeTilde NotVerticalBar Now NoWhitespace NProbability NProduct NProductFactors NRoots NSolve NSum NSumTerms NuclearExplosionData NuclearReactorData Null NullRecords NullSpace NullWords Number NumberCompose NumberDecompose NumberExpand NumberFieldClassNumber NumberFieldDiscriminant NumberFieldFundamentalUnits NumberFieldIntegralBasis NumberFieldNormRepresentatives NumberFieldRegulator NumberFieldRootsOfUnity NumberFieldSignature NumberForm NumberFormat NumberLinePlot NumberMarks NumberMultiplier NumberPadding NumberPoint NumberQ NumberSeparator NumberSigns NumberString Numerator NumeratorDenominator NumericalOrder NumericalSort NumericArray NumericArrayQ NumericArrayType NumericFunction NumericQ NuttallWindow NValues NyquistGridLines NyquistPlotO ObservabilityGramian ObservabilityMatrix ObservableDecomposition ObservableModelQ OceanData Octahedron OddQ Off Offset OLEData On ONanGroupON Once OneIdentity Opacity OpacityFunction OpacityFunctionScaling Open OpenAppend Opener OpenerBox OpenerBoxOptions OpenerView OpenFunctionInspectorPacket Opening OpenRead OpenSpecialOptions OpenTemporary OpenWrite Operate OperatingSystem OptimumFlowData Optional OptionalElement OptionInspectorSettings OptionQ Options OptionsPacket OptionsPattern OptionValue OptionValueBox OptionValueBoxOptions Or Orange Order OrderDistribution OrderedQ Ordering OrderingBy OrderingLayer Orderless OrderlessPatternSequence OrnsteinUhlenbeckProcess Orthogonalize OrthogonalMatrixQ Out Outer OuterPolygon OuterPolyhedron OutputAutoOverwrite OutputControllabilityMatrix OutputControllableModelQ OutputForm OutputFormData OutputGrouping OutputMathEditExpression OutputNamePacket OutputResponse OutputSizeLimit OutputStream Over OverBar OverDot Overflow OverHat Overlaps Overlay OverlayBox OverlayBoxOptions Overscript OverscriptBox OverscriptBoxOptions OverTilde OverVector OverwriteTarget OwenT OwnValuesPackage PackingMethod PaddedForm Padding PaddingLayer PaddingSize PadeApproximant PadLeft PadRight PageBreakAbove PageBreakBelow PageBreakWithin PageFooterLines PageFooters PageHeaderLines PageHeaders PageHeight PageRankCentrality PageTheme PageWidth Pagination PairedBarChart PairedHistogram PairedSmoothHistogram PairedTTest PairedZTest PaletteNotebook PalettePath PalindromeQ Pane PaneBox PaneBoxOptions Panel PanelBox PanelBoxOptions Paneled PaneSelector PaneSelectorBox PaneSelectorBoxOptions PaperWidth ParabolicCylinderD ParagraphIndent ParagraphSpacing ParallelArray ParallelCombine ParallelDo Parallelepiped ParallelEvaluate Parallelization Parallelize ParallelMap ParallelNeeds Parallelogram ParallelProduct ParallelSubmit ParallelSum ParallelTable ParallelTry Parameter ParameterEstimator ParameterMixtureDistribution ParameterVariables ParametricFunction ParametricNDSolve ParametricNDSolveValue ParametricPlot ParametricPlot3D ParametricRegion ParentBox ParentCell ParentConnect ParentDirectory ParentForm Parenthesize ParentList ParentNotebook ParetoDistribution ParetoPickandsDistribution ParkData Part PartBehavior PartialCorrelationFunction PartialD ParticleAcceleratorData ParticleData Partition PartitionGranularity PartitionsP PartitionsQ PartLayer PartOfSpeech PartProtection ParzenWindow PascalDistribution PassEventsDown PassEventsUp Paste PasteAutoQuoteCharacters PasteBoxFormInlineCells PasteButton Path PathGraph PathGraphQ Pattern PatternSequence PatternTest PauliMatrix PaulWavelet Pause PausedTime PDF PeakDetect PeanoCurve PearsonChiSquareTest PearsonCorrelationTest PearsonDistribution PercentForm PerfectNumber PerfectNumberQ PerformanceGoal Perimeter PeriodicBoundaryCondition PeriodicInterpolation Periodogram PeriodogramArray Permanent Permissions PermissionsGroup PermissionsGroupMemberQ PermissionsGroups PermissionsKey PermissionsKeys PermutationCycles PermutationCyclesQ PermutationGroup PermutationLength PermutationList PermutationListQ PermutationMax PermutationMin PermutationOrder PermutationPower PermutationProduct PermutationReplace Permutations PermutationSupport Permute PeronaMalikFilter Perpendicular PerpendicularBisector PersistenceLocation PersistenceTime PersistentObject PersistentObjects PersistentValue PersonData PERTDistribution PetersenGraph PhaseMargins PhaseRange PhysicalSystemData Pi Pick PIDData PIDDerivativeFilter PIDFeedforward PIDTune Piecewise PiecewiseExpand PieChart PieChart3D PillaiTrace PillaiTraceTest PingTime Pink PitchRecognize Pivoting PixelConstrained PixelValue PixelValuePositions Placed Placeholder PlaceholderReplace Plain PlanarAngle PlanarGraph PlanarGraphQ PlanckRadiationLaw PlaneCurveData PlanetaryMoonData PlanetData PlantData Play PlayRange Plot Plot3D Plot3Matrix PlotDivision PlotJoined PlotLabel PlotLabels PlotLayout PlotLegends PlotMarkers PlotPoints PlotRange PlotRangeClipping PlotRangeClipPlanesStyle PlotRangePadding PlotRegion PlotStyle PlotTheme Pluralize Plus PlusMinus Pochhammer PodStates PodWidth Point Point3DBox Point3DBoxOptions PointBox PointBoxOptions PointFigureChart PointLegend PointSize PoissonConsulDistribution PoissonDistribution PoissonProcess PoissonWindow PolarAxes PolarAxesOrigin PolarGridLines PolarPlot PolarTicks PoleZeroMarkers PolyaAeppliDistribution PolyGamma Polygon Polygon3DBox Polygon3DBoxOptions PolygonalNumber PolygonAngle PolygonBox PolygonBoxOptions PolygonCoordinates PolygonDecomposition PolygonHoleScale PolygonIntersections PolygonScale Polyhedron PolyhedronAngle PolyhedronCoordinates PolyhedronData PolyhedronDecomposition PolyhedronGenus PolyLog PolynomialExtendedGCD PolynomialForm PolynomialGCD PolynomialLCM PolynomialMod PolynomialQ PolynomialQuotient PolynomialQuotientRemainder PolynomialReduce PolynomialRemainder Polynomials PoolingLayer PopupMenu PopupMenuBox PopupMenuBoxOptions PopupView PopupWindow Position PositionIndex Positive PositiveDefiniteMatrixQ PositiveIntegers PositiveRationals PositiveReals PositiveSemidefiniteMatrixQ PossibleZeroQ Postfix PostScript Power PowerDistribution PowerExpand PowerMod PowerModList PowerRange PowerSpectralDensity PowersRepresentations PowerSymmetricPolynomial Precedence PrecedenceForm Precedes PrecedesEqual PrecedesSlantEqual PrecedesTilde Precision PrecisionGoal PreDecrement Predict PredictionRoot PredictorFunction PredictorInformation PredictorMeasurements PredictorMeasurementsObject PreemptProtect PreferencesPath Prefix PreIncrement Prepend PrependLayer PrependTo PreprocessingRules PreserveColor PreserveImageOptions Previous PreviousCell PreviousDate PriceGraphDistribution PrimaryPlaceholder Prime PrimeNu PrimeOmega PrimePi PrimePowerQ PrimeQ Primes PrimeZetaP PrimitivePolynomialQ PrimitiveRoot PrimitiveRootList PrincipalComponents PrincipalValue Print PrintableASCIIQ PrintAction PrintForm PrintingCopies PrintingOptions PrintingPageRange PrintingStartingPageNumber PrintingStyleEnvironment Printout3D Printout3DPreviewer PrintPrecision PrintTemporary Prism PrismBox PrismBoxOptions PrivateCellOptions PrivateEvaluationOptions PrivateFontOptions PrivateFrontEndOptions PrivateKey PrivateNotebookOptions PrivatePaths Probability ProbabilityDistribution ProbabilityPlot ProbabilityPr ProbabilityScalePlot ProbitModelFit ProcessConnection ProcessDirectory ProcessEnvironment Processes ProcessEstimator ProcessInformation ProcessObject ProcessParameterAssumptions ProcessParameterQ ProcessStateDomain ProcessStatus ProcessTimeDomain Product ProductDistribution ProductLog ProgressIndicator ProgressIndicatorBox ProgressIndicatorBoxOptions Projection Prolog PromptForm ProofObject Properties Property PropertyList PropertyValue Proportion Proportional Protect Protected ProteinData Pruning PseudoInverse PsychrometricPropertyData PublicKey PublisherID PulsarData PunctuationCharacter Purple Put PutAppend Pyramid PyramidBox PyramidBoxOptionsQBinomial QFactorial QGamma QHypergeometricPFQ QnDispersion QPochhammer QPolyGamma QRDecomposition QuadraticIrrationalQ QuadraticOptimization Quantile QuantilePlot Quantity QuantityArray QuantityDistribution QuantityForm QuantityMagnitude QuantityQ QuantityUnit QuantityVariable QuantityVariableCanonicalUnit QuantityVariableDimensions QuantityVariableIdentifier QuantityVariablePhysicalQuantity Quartics QuartileDeviation Quartiles QuartileSkewness Query QueueingNetworkProcess QueueingProcess QueueProperties Quiet Quit Quotient QuotientRemainderRadialGradientImage RadialityCentrality RadicalBox RadicalBoxOptions RadioButton RadioButtonBar RadioButtonBox RadioButtonBoxOptions Radon RadonTransform RamanujanTau RamanujanTauL RamanujanTauTheta RamanujanTauZ Ramp Random RandomChoice RandomColor RandomComplex RandomEntity RandomFunction RandomGeoPosition RandomGraph RandomImage RandomInstance RandomInteger RandomPermutation RandomPoint RandomPolygon RandomPolyhedron RandomPrime RandomReal RandomSample RandomSeed RandomSeeding RandomVariate RandomWalkProcess RandomWord Range RangeFilter RangeSpecification RankedMax RankedMin RarerProbability Raster Raster3D Raster3DBox Raster3DBoxOptions RasterArray RasterBox RasterBoxOptions Rasterize RasterSize Rational RationalFunctions Rationalize Rationals Ratios RawArray RawBoxes RawData RawMedium RayleighDistribution Re Read ReadByteArray ReadLine ReadList ReadProtected ReadString Real RealAbs RealBlockDiagonalForm RealDigits RealExponent Reals RealSign Reap RecognitionPrior RecognitionThreshold Record RecordLists RecordSeparators Rectangle RectangleBox RectangleBoxOptions RectangleChart RectangleChart3D RectangularRepeatingElement RecurrenceFilter RecurrenceTable RecurringDigitsForm Red Reduce RefBox ReferenceLineStyle ReferenceMarkers ReferenceMarkerStyle Refine ReflectionMatrix ReflectionTransform Refresh RefreshRate Region RegionBinarize RegionBoundary RegionBounds RegionCentroid RegionDifference RegionDimension RegionDisjoint RegionDistance RegionDistanceFunction RegionEmbeddingDimension RegionEqual RegionFunction RegionImage RegionIntersection RegionMeasure RegionMember RegionMemberFunction RegionMoment RegionNearest RegionNearestFunction RegionPlot RegionPlot3D RegionProduct RegionQ RegionResize RegionSize RegionSymmetricDifference RegionUnion RegionWithin RegisterExternalEvaluator RegularExpression Regularization RegularlySampledQ RegularPolygon ReIm ReImLabels ReImPlot ReImStyle Reinstall RelationalDatabase RelationGraph Release ReleaseHold ReliabilityDistribution ReliefImage ReliefPlot RemoteAuthorizationCaching RemoteConnect RemoteConnectionObject RemoteFile RemoteRun RemoteRunProcess Remove RemoveAlphaChannel RemoveAsynchronousTask RemoveAudioStream RemoveBackground RemoveChannelListener RemoveChannelSubscribers Removed RemoveDiacritics RemoveInputStreamMethod RemoveOutputStreamMethod RemoveProperty RemoveScheduledTask RemoveUsers RenameDirectory RenameFile RenderAll RenderingOptions RenewalProcess RenkoChart RepairMesh Repeated RepeatedNull RepeatedString RepeatedTiming RepeatingElement Replace ReplaceAll ReplaceHeldPart ReplaceImageValue ReplaceList ReplacePart ReplacePixelValue ReplaceRepeated ReplicateLayer RequiredPhysicalQuantities Resampling ResamplingAlgorithmData ResamplingMethod Rescale RescalingTransform ResetDirectory ResetMenusPacket ResetScheduledTask ReshapeLayer Residue ResizeLayer Resolve ResourceAcquire ResourceData ResourceFunction ResourceObject ResourceRegister ResourceRemove ResourceSearch ResourceSubmissionObject ResourceSubmit ResourceSystemBase ResourceUpdate ResponseForm Rest RestartInterval Restricted Resultant ResumePacket Return ReturnEntersInput ReturnExpressionPacket ReturnInputFormPacket ReturnPacket ReturnReceiptFunction ReturnTextPacket Reverse ReverseBiorthogonalSplineWavelet ReverseElement ReverseEquilibrium ReverseGraph ReverseSort ReverseSortBy ReverseUpEquilibrium RevolutionAxis RevolutionPlot3D RGBColor RiccatiSolve RiceDistribution RidgeFilter RiemannR RiemannSiegelTheta RiemannSiegelZ RiemannXi Riffle Right RightArrow RightArrowBar RightArrowLeftArrow RightComposition RightCosetRepresentative RightDownTeeVector RightDownVector RightDownVectorBar RightTee RightTeeArrow RightTeeVector RightTriangle RightTriangleBar RightTriangleEqual RightUpDownVector RightUpTeeVector RightUpVector RightUpVectorBar RightVector RightVectorBar RiskAchievementImportance RiskReductionImportance RogersTanimotoDissimilarity RollPitchYawAngles RollPitchYawMatrix RomanNumeral Root RootApproximant RootIntervals RootLocusPlot RootMeanSquare RootOfUnityQ RootReduce Roots RootSum Rotate RotateLabel RotateLeft RotateRight RotationAction RotationBox RotationBoxOptions RotationMatrix RotationTransform Round RoundImplies RoundingRadius Row RowAlignments RowBackgrounds RowBox RowHeights RowLines RowMinHeight RowReduce RowsEqual RowSpacings RSolve RSolveValue RudinShapiro RudvalisGroupRu Rule RuleCondition RuleDelayed RuleForm RulePlot RulerUnits Run RunProcess RunScheduledTask RunThrough RuntimeAttributes RuntimeOptions RussellRaoDissimilaritySameQ SameTest SampledEntityClass SampleDepth SampledSoundFunction SampledSoundList SampleRate SamplingPeriod SARIMAProcess SARMAProcess SASTriangle SatelliteData SatisfiabilityCount SatisfiabilityInstances SatisfiableQ Saturday Save Saveable SaveAutoDelete SaveConnection SaveDefinitions SavitzkyGolayMatrix SawtoothWave Scale Scaled ScaleDivisions ScaledMousePosition ScaleOrigin ScalePadding ScaleRanges ScaleRangeStyle ScalingFunctions ScalingMatrix ScalingTransform Scan ScheduledTask ScheduledTaskActiveQ ScheduledTaskInformation ScheduledTaskInformationData ScheduledTaskObject ScheduledTasks SchurDecomposition ScientificForm ScientificNotationThreshold ScorerGi ScorerGiPrime ScorerHi ScorerHiPrime ScreenRectangle ScreenStyleEnvironment ScriptBaselineShifts ScriptForm ScriptLevel ScriptMinSize ScriptRules ScriptSizeMultipliers Scrollbars ScrollingOptions ScrollPosition SearchAdjustment SearchIndexObject SearchIndices SearchQueryString SearchResultObject Sec Sech SechDistribution SecondOrderConeOptimization SectionGrouping SectorChart SectorChart3D SectorOrigin SectorSpacing SecuredAuthenticationKey SecuredAuthenticationKeys SeedRandom Select Selectable SelectComponents SelectedCells SelectedNotebook SelectFirst Selection SelectionAnimate SelectionCell SelectionCellCreateCell SelectionCellDefaultStyle SelectionCellParentStyle SelectionCreateCell SelectionDebuggerTag SelectionDuplicateCell SelectionEvaluate SelectionEvaluateCreateCell SelectionMove SelectionPlaceholder SelectionSetStyle SelectWithContents SelfLoops SelfLoopStyle SemanticImport SemanticImportString SemanticInterpretation SemialgebraicComponentInstances SemidefiniteOptimization SendMail SendMessage Sequence SequenceAlignment SequenceAttentionLayer SequenceCases SequenceCount SequenceFold SequenceFoldList SequenceForm SequenceHold SequenceLastLayer SequenceMostLayer SequencePosition SequencePredict SequencePredictorFunction SequenceReplace SequenceRestLayer SequenceReverseLayer SequenceSplit Series SeriesCoefficient SeriesData ServiceConnect ServiceDisconnect ServiceExecute ServiceObject ServiceRequest ServiceResponse ServiceSubmit SessionSubmit SessionTime Set SetAccuracy SetAlphaChannel SetAttributes Setbacks SetBoxFormNamesPacket SetCloudDirectory SetCookies SetDelayed SetDirectory SetEnvironment SetEvaluationNotebook SetFileDate SetFileLoadingContext SetNotebookStatusLine SetOptions SetOptionsPacket SetPermissions SetPrecision SetProperty SetSecuredAuthenticationKey SetSelectedNotebook SetSharedFunction SetSharedVariable SetSpeechParametersPacket SetStreamPosition SetSystemModel SetSystemOptions Setter SetterBar SetterBox SetterBoxOptions Setting SetUsers SetValue Shading Shallow ShannonWavelet ShapiroWilkTest Share SharingList Sharpen ShearingMatrix ShearingTransform ShellRegion ShenCastanMatrix ShiftedGompertzDistribution ShiftRegisterSequence Short ShortDownArrow Shortest ShortestMatch ShortestPathFunction ShortLeftArrow ShortRightArrow ShortTimeFourier ShortTimeFourierData ShortUpArrow Show ShowAutoConvert ShowAutoSpellCheck ShowAutoStyles ShowCellBracket ShowCellLabel ShowCellTags ShowClosedCellArea ShowCodeAssist ShowContents ShowControls ShowCursorTracker ShowGroupOpenCloseIcon ShowGroupOpener ShowInvisibleCharacters ShowPageBreaks ShowPredictiveInterface ShowSelection ShowShortBoxForm ShowSpecialCharacters ShowStringCharacters ShowSyntaxStyles ShrinkingDelay ShrinkWrapBoundingBox SiderealTime SiegelTheta SiegelTukeyTest SierpinskiCurve SierpinskiMesh Sign Signature SignedRankTest SignedRegionDistance SignificanceLevel SignPadding SignTest SimilarityRules SimpleGraph SimpleGraphQ SimplePolygonQ SimplePolyhedronQ Simplex Simplify Sin Sinc SinghMaddalaDistribution SingleEvaluation SingleLetterItalics SingleLetterStyle SingularValueDecomposition SingularValueList SingularValuePlot SingularValues Sinh SinhIntegral SinIntegral SixJSymbol Skeleton SkeletonTransform SkellamDistribution Skewness SkewNormalDistribution SkinStyle Skip SliceContourPlot3D SliceDensityPlot3D SliceDistribution SliceVectorPlot3D Slider Slider2D Slider2DBox Slider2DBoxOptions SliderBox SliderBoxOptions SlideView Slot SlotSequence Small SmallCircle Smaller SmithDecomposition SmithDelayCompensator SmithWatermanSimilarity SmoothDensityHistogram SmoothHistogram SmoothHistogram3D SmoothKernelDistribution SnDispersion Snippet SnubPolyhedron SocialMediaData Socket SocketConnect SocketListen SocketListener SocketObject SocketOpen SocketReadMessage SocketReadyQ Sockets SocketWaitAll SocketWaitNext SoftmaxLayer SokalSneathDissimilarity SolarEclipse SolarSystemFeatureData SolidAngle SolidData SolidRegionQ Solve SolveAlways SolveDelayed Sort SortBy SortedBy SortedEntityClass Sound SoundAndGraphics SoundNote SoundVolume SourceLink Sow Space SpaceCurveData SpaceForm Spacer Spacings Span SpanAdjustments SpanCharacterRounding SpanFromAbove SpanFromBoth SpanFromLeft SpanLineThickness SpanMaxSize SpanMinSize SpanningCharacters SpanSymmetric SparseArray SpatialGraphDistribution SpatialMedian SpatialTransformationLayer Speak SpeakTextPacket SpearmanRankTest SpearmanRho SpeciesData SpecificityGoal SpectralLineData Spectrogram SpectrogramArray Specularity SpeechRecognize SpeechSynthesize SpellingCorrection SpellingCorrectionList SpellingDictionaries SpellingDictionariesPath SpellingOptions SpellingSuggestionsPacket Sphere SphereBox SpherePoints SphericalBesselJ SphericalBesselY SphericalHankelH1 SphericalHankelH2 SphericalHarmonicY SphericalPlot3D SphericalRegion SphericalShell SpheroidalEigenvalue SpheroidalJoiningFactor SpheroidalPS SpheroidalPSPrime SpheroidalQS SpheroidalQSPrime SpheroidalRadialFactor SpheroidalS1 SpheroidalS1Prime SpheroidalS2 SpheroidalS2Prime Splice SplicedDistribution SplineClosed SplineDegree SplineKnots SplineWeights Split SplitBy SpokenString Sqrt SqrtBox SqrtBoxOptions Square SquaredEuclideanDistance SquareFreeQ SquareIntersection SquareMatrixQ SquareRepeatingElement SquaresR SquareSubset SquareSubsetEqual SquareSuperset SquareSupersetEqual SquareUnion SquareWave SSSTriangle StabilityMargins StabilityMarginsStyle StableDistribution Stack StackBegin StackComplete StackedDateListPlot StackedListPlot StackInhibit StadiumShape StandardAtmosphereData StandardDeviation StandardDeviationFilter StandardForm Standardize Standardized StandardOceanData StandbyDistribution Star StarClusterData StarData StarGraph StartAsynchronousTask StartExternalSession StartingStepSize StartOfLine StartOfString StartProcess StartScheduledTask StartupSound StartWebSession StateDimensions StateFeedbackGains StateOutputEstimator StateResponse StateSpaceModel StateSpaceRealization StateSpaceTransform StateTransformationLinearize StationaryDistribution StationaryWaveletPacketTransform StationaryWaveletTransform StatusArea StatusCentrality StepMonitor StereochemistryElements StieltjesGamma StirlingS1 StirlingS2 StopAsynchronousTask StoppingPowerData StopScheduledTask StrataVariables StratonovichProcess StreamColorFunction StreamColorFunctionScaling StreamDensityPlot StreamMarkers StreamPlot StreamPoints StreamPosition Streams StreamScale StreamStyle String StringBreak StringByteCount StringCases StringContainsQ StringCount StringDelete StringDrop StringEndsQ StringExpression StringExtract StringForm StringFormat StringFreeQ StringInsert StringJoin StringLength StringMatchQ StringPadLeft StringPadRight StringPart StringPartition StringPosition StringQ StringRepeat StringReplace StringReplaceList StringReplacePart StringReverse StringRiffle StringRotateLeft StringRotateRight StringSkeleton StringSplit StringStartsQ StringTake StringTemplate StringToByteArray StringToStream StringTrim StripBoxes StripOnInput StripWrapperBoxes StrokeForm StructuralImportance StructuredArray StructuredSelection StruveH StruveL Stub StudentTDistribution Style StyleBox StyleBoxAutoDelete StyleData StyleDefinitions StyleForm StyleHints StyleKeyMapping StyleMenuListing StyleNameDialogSettings StyleNames StylePrint StyleSheetPath Subdivide Subfactorial Subgraph SubMinus SubPlus SubresultantPolynomialRemainders SubresultantPolynomials Subresultants Subscript SubscriptBox SubscriptBoxOptions Subscripted Subsequences Subset SubsetEqual SubsetMap SubsetQ Subsets SubStar SubstitutionSystem Subsuperscript SubsuperscriptBox SubsuperscriptBoxOptions Subtract SubtractFrom SubtractSides SubValues Succeeds SucceedsEqual SucceedsSlantEqual SucceedsTilde Success SuchThat Sum SumConvergence SummationLayer Sunday SunPosition Sunrise Sunset SuperDagger SuperMinus SupernovaData SuperPlus Superscript SuperscriptBox SuperscriptBoxOptions Superset SupersetEqual SuperStar Surd SurdForm SurfaceArea SurfaceColor SurfaceData SurfaceGraphics SurvivalDistribution SurvivalFunction SurvivalModel SurvivalModelFit SuspendPacket SuzukiDistribution SuzukiGroupSuz SwatchLegend Switch Symbol SymbolName SymletWavelet Symmetric SymmetricGroup SymmetricKey SymmetricMatrixQ SymmetricPolynomial SymmetricReduction Symmetrize SymmetrizedArray SymmetrizedArrayRules SymmetrizedDependentComponents SymmetrizedIndependentComponents SymmetrizedReplacePart SynchronousInitialization SynchronousUpdating Synonyms Syntax SyntaxForm SyntaxInformation SyntaxLength SyntaxPacket SyntaxQ SynthesizeMissingValues SystemDialogInput SystemException SystemGet SystemHelpPath SystemInformation SystemInformationData SystemInstall SystemModel SystemModeler SystemModelExamples SystemModelLinearize SystemModelParametricSimulate SystemModelPlot SystemModelProgressReporting SystemModelReliability SystemModels SystemModelSimulate SystemModelSimulateSensitivity SystemModelSimulationData SystemOpen SystemOptions SystemProcessData SystemProcesses SystemsConnectionsModel SystemsModelDelay SystemsModelDelayApproximate SystemsModelDelete SystemsModelDimensions SystemsModelExtract SystemsModelFeedbackConnect SystemsModelLabels SystemsModelLinearity SystemsModelMerge SystemsModelOrder SystemsModelParallelConnect SystemsModelSeriesConnect SystemsModelStateFeedbackConnect SystemsModelVectorRelativeOrders SystemStub SystemTestTab TabFilling Table TableAlignments TableDepth TableDirections TableForm TableHeadings TableSpacing TableView TableViewBox TableViewBoxBackground TableViewBoxOptions TabSpacings TabView TabViewBox TabViewBoxOptions TagBox TagBoxNote TagBoxOptions TaggingRules TagSet TagSetDelayed TagStyle TagUnset Take TakeDrop TakeLargest TakeLargestBy TakeList TakeSmallest TakeSmallestBy TakeWhile Tally Tan Tanh TargetDevice TargetFunctions TargetSystem TargetUnits TaskAbort TaskExecute TaskObject TaskRemove TaskResume Tasks TaskSuspend TaskWait TautologyQ TelegraphProcess TemplateApply TemplateArgBox TemplateBox TemplateBoxOptions TemplateEvaluate TemplateExpression TemplateIf TemplateObject TemplateSequence TemplateSlot TemplateSlotSequence TemplateUnevaluated TemplateVerbatim TemplateWith TemporalData TemporalRegularity Temporary TemporaryVariable TensorContract TensorDimensions TensorExpand TensorProduct TensorQ TensorRank TensorReduce TensorSymmetry TensorTranspose TensorWedge TestID TestReport TestReportObject TestResultObject Tetrahedron TetrahedronBox TetrahedronBoxOptions TeXForm TeXSave Text Text3DBox Text3DBoxOptions TextAlignment TextBand TextBoundingBox TextBox TextCases TextCell TextClipboardType TextContents TextData TextElement TextForm TextGrid TextJustification TextLine TextPacket TextParagraph TextPosition TextRecognize TextSearch TextSearchReport TextSentences TextString TextStructure TextStyle TextTranslation Texture TextureCoordinateFunction TextureCoordinateScaling TextWords Therefore ThermodynamicData ThermometerGauge Thick Thickness Thin Thinning ThisLink ThompsonGroupTh Thread ThreadingLayer ThreeJSymbol Threshold Through Throw ThueMorse Thumbnail Thursday Ticks TicksStyle TideData Tilde TildeEqual TildeFullEqual TildeTilde TimeConstrained TimeConstraint TimeDirection TimeFormat TimeGoal TimelinePlot TimeObject TimeObjectQ Times TimesBy TimeSeries TimeSeriesAggregate TimeSeriesForecast TimeSeriesInsert TimeSeriesInvertibility TimeSeriesMap TimeSeriesMapThread TimeSeriesModel TimeSeriesModelFit TimeSeriesResample TimeSeriesRescale TimeSeriesShift TimeSeriesThread TimeSeriesWindow TimeUsed TimeValue TimeWarpingCorrespondence TimeWarpingDistance TimeZone TimeZoneConvert TimeZoneOffset Timing Tiny TitleGrouping TitsGroupT ToBoxes ToCharacterCode ToColor ToContinuousTimeModel ToDate Today ToDiscreteTimeModel ToEntity ToeplitzMatrix ToExpression ToFileName Together Toggle ToggleFalse Toggler TogglerBar TogglerBox TogglerBoxOptions ToHeldExpression ToInvertibleTimeSeries TokenWords Tolerance ToLowerCase Tomorrow ToNumberField TooBig Tooltip TooltipBox TooltipBoxOptions TooltipDelay TooltipStyle Top TopHatTransform ToPolarCoordinates TopologicalSort ToRadicals ToRules ToSphericalCoordinates ToString Total TotalHeight TotalLayer TotalVariationFilter TotalWidth TouchPosition TouchscreenAutoZoom TouchscreenControlPlacement ToUpperCase Tr Trace TraceAbove TraceAction TraceBackward TraceDepth TraceDialog TraceForward TraceInternal TraceLevel TraceOff TraceOn TraceOriginal TracePrint TraceScan TrackedSymbols TrackingFunction TracyWidomDistribution TradingChart TraditionalForm TraditionalFunctionNotation TraditionalNotation TraditionalOrder TrainingProgressCheckpointing TrainingProgressFunction TrainingProgressMeasurements TrainingProgressReporting TrainingStoppingCriterion TransferFunctionCancel TransferFunctionExpand TransferFunctionFactor TransferFunctionModel TransferFunctionPoles TransferFunctionTransform TransferFunctionZeros TransformationClass TransformationFunction TransformationFunctions TransformationMatrix TransformedDistribution TransformedField TransformedProcess TransformedRegion TransitionDirection TransitionDuration TransitionEffect TransitiveClosureGraph TransitiveReductionGraph Translate TranslationOptions TranslationTransform Transliterate Transparent TransparentColor Transpose TransposeLayer TrapSelection TravelDirections TravelDirectionsData TravelDistance TravelDistanceList TravelMethod TravelTime TreeForm TreeGraph TreeGraphQ TreePlot TrendStyle Triangle TriangleCenter TriangleConstruct TriangleMeasurement TriangleWave TriangularDistribution TriangulateMesh Trig TrigExpand TrigFactor TrigFactorList Trigger TrigReduce TrigToExp TrimmedMean TrimmedVariance TropicalStormData True TrueQ TruncatedDistribution TruncatedPolyhedron TsallisQExponentialDistribution TsallisQGaussianDistribution TTest Tube TubeBezierCurveBox TubeBezierCurveBoxOptions TubeBox TubeBoxOptions TubeBSplineCurveBox TubeBSplineCurveBoxOptions Tuesday TukeyLambdaDistribution TukeyWindow TunnelData Tuples TuranGraph TuringMachine TuttePolynomial TwoWayRule Typed TypeSpecifierUnateQ Uncompress UnconstrainedParameters Undefined UnderBar Underflow Underlined Underoverscript UnderoverscriptBox UnderoverscriptBoxOptions Underscript UnderscriptBox UnderscriptBoxOptions UnderseaFeatureData UndirectedEdge UndirectedGraph UndirectedGraphQ UndoOptions UndoTrackedVariables Unequal UnequalTo Unevaluated UniformDistribution UniformGraphDistribution UniformPolyhedron UniformSumDistribution Uninstall Union UnionPlus Unique UnitaryMatrixQ UnitBox UnitConvert UnitDimensions Unitize UnitRootTest UnitSimplify UnitStep UnitSystem UnitTriangle UnitVector UnitVectorLayer UnityDimensions UniverseModelData UniversityData UnixTime Unprotect UnregisterExternalEvaluator UnsameQ UnsavedVariables Unset UnsetShared UntrackedVariables Up UpArrow UpArrowBar UpArrowDownArrow Update UpdateDynamicObjects UpdateDynamicObjectsSynchronous UpdateInterval UpdateSearchIndex UpDownArrow UpEquilibrium UpperCaseQ UpperLeftArrow UpperRightArrow UpperTriangularize UpperTriangularMatrixQ Upsample UpSet UpSetDelayed UpTee UpTeeArrow UpTo UpValues URL URLBuild URLDecode URLDispatcher URLDownload URLDownloadSubmit URLEncode URLExecute URLExpand URLFetch URLFetchAsynchronous URLParse URLQueryDecode URLQueryEncode URLRead URLResponseTime URLSave URLSaveAsynchronous URLShorten URLSubmit UseGraphicsRange UserDefinedWavelet Using UsingFrontEnd UtilityFunctionV2Get ValenceErrorHandling ValidationLength ValidationSet Value ValueBox ValueBoxOptions ValueDimensions ValueForm ValuePreprocessingFunction ValueQ Values ValuesData Variables Variance VarianceEquivalenceTest VarianceEstimatorFunction VarianceGammaDistribution VarianceTest VectorAngle VectorAround VectorColorFunction VectorColorFunctionScaling VectorDensityPlot VectorGlyphData VectorGreater VectorGreaterEqual VectorLess VectorLessEqual VectorMarkers VectorPlot VectorPlot3D VectorPoints VectorQ Vectors VectorScale VectorStyle Vee Verbatim Verbose VerboseConvertToPostScriptPacket VerificationTest VerifyConvergence VerifyDerivedKey VerifyDigitalSignature VerifyInterpretation VerifySecurityCertificates VerifySolutions VerifyTestAssumptions Version VersionNumber VertexAdd VertexCapacity VertexColors VertexComponent VertexConnectivity VertexContract VertexCoordinateRules VertexCoordinates VertexCorrelationSimilarity VertexCosineSimilarity VertexCount VertexCoverQ VertexDataCoordinates VertexDegree VertexDelete VertexDiceSimilarity VertexEccentricity VertexInComponent VertexInDegree VertexIndex VertexJaccardSimilarity VertexLabeling VertexLabels VertexLabelStyle VertexList VertexNormals VertexOutComponent VertexOutDegree VertexQ VertexRenderingFunction VertexReplace VertexShape VertexShapeFunction VertexSize VertexStyle VertexTextureCoordinates VertexWeight VertexWeightedGraphQ Vertical VerticalBar VerticalForm VerticalGauge VerticalSeparator VerticalSlider VerticalTilde ViewAngle ViewCenter ViewMatrix ViewPoint ViewPointSelectorSettings ViewPort ViewProjection ViewRange ViewVector ViewVertical VirtualGroupData Visible VisibleCell VoiceStyleData VoigtDistribution VolcanoData Volume VonMisesDistribution VoronoiMeshWaitAll WaitAsynchronousTask WaitNext WaitUntil WakebyDistribution WalleniusHypergeometricDistribution WaringYuleDistribution WarpingCorrespondence WarpingDistance WatershedComponents WatsonUSquareTest WattsStrogatzGraphDistribution WaveletBestBasis WaveletFilterCoefficients WaveletImagePlot WaveletListPlot WaveletMapIndexed WaveletMatrixPlot WaveletPhi WaveletPsi WaveletScale WaveletScalogram WaveletThreshold WeaklyConnectedComponents WeaklyConnectedGraphComponents WeaklyConnectedGraphQ WeakStationarity WeatherData WeatherForecastData WebAudioSearch WebElementObject WeberE WebExecute WebImage WebImageSearch WebSearch WebSessionObject WebSessions WebWindowObject Wedge Wednesday WeibullDistribution WeierstrassE1 WeierstrassE2 WeierstrassE3 WeierstrassEta1 WeierstrassEta2 WeierstrassEta3 WeierstrassHalfPeriods WeierstrassHalfPeriodW1 WeierstrassHalfPeriodW2 WeierstrassHalfPeriodW3 WeierstrassInvariantG2 WeierstrassInvariantG3 WeierstrassInvariants WeierstrassP WeierstrassPPrime WeierstrassSigma WeierstrassZeta WeightedAdjacencyGraph WeightedAdjacencyMatrix WeightedData WeightedGraphQ Weights WelchWindow WheelGraph WhenEvent Which While White WhiteNoiseProcess WhitePoint Whitespace WhitespaceCharacter WhittakerM WhittakerW WienerFilter WienerProcess WignerD WignerSemicircleDistribution WikipediaData WikipediaSearch WilksW WilksWTest WindDirectionData WindingCount WindingPolygon WindowClickSelect WindowElements WindowFloating WindowFrame WindowFrameElements WindowMargins WindowMovable WindowOpacity WindowPersistentStyles WindowSelected WindowSize WindowStatusArea WindowTitle WindowToolbars WindowWidth WindSpeedData WindVectorData WinsorizedMean WinsorizedVariance WishartMatrixDistribution With WolframAlpha WolframAlphaDate WolframAlphaQuantity WolframAlphaResult WolframLanguageData Word WordBoundary WordCharacter WordCloud WordCount WordCounts WordData WordDefinition WordFrequency WordFrequencyData WordList WordOrientation WordSearch WordSelectionFunction WordSeparators WordSpacings WordStem WordTranslation WorkingPrecision WrapAround Write WriteLine WriteString WronskianXMLElement XMLObject XMLTemplate Xnor Xor XYZColorYellow Yesterday YuleDissimilarityZernikeR ZeroSymmetric ZeroTest ZeroWidthTimes Zeta ZetaZero ZIPCodeData ZipfDistribution ZoomCenter ZoomFactor ZTest ZTransform$Aborted $ActivationGroupID $ActivationKey $ActivationUserRegistered $AddOnsDirectory $AllowExternalChannelFunctions $AssertFunction $Assumptions $AsynchronousTask $AudioInputDevices $AudioOutputDevices $BaseDirectory $BatchInput $BatchOutput $BlockchainBase $BoxForms $ByteOrdering $CacheBaseDirectory $Canceled $ChannelBase $CharacterEncoding $CharacterEncodings $CloudBase $CloudConnected $CloudCreditsAvailable $CloudEvaluation $CloudExpressionBase $CloudObjectNameFormat $CloudObjectURLType $CloudRootDirectory $CloudSymbolBase $CloudUserID $CloudUserUUID $CloudVersion $CloudVersionNumber $CloudWolframEngineVersionNumber $CommandLine $CompilationTarget $ConditionHold $ConfiguredKernels $Context $ContextPath $ControlActiveSetting $Cookies $CookieStore $CreationDate $CurrentLink $CurrentTask $CurrentWebSession $DateStringFormat $DefaultAudioInputDevice $DefaultAudioOutputDevice $DefaultFont $DefaultFrontEnd $DefaultImagingDevice $DefaultLocalBase $DefaultMailbox $DefaultNetworkInterface $DefaultPath $Display $DisplayFunction $DistributedContexts $DynamicEvaluation $Echo $EmbedCodeEnvironments $EmbeddableServices $EntityStores $Epilog $EvaluationCloudBase $EvaluationCloudObject $EvaluationEnvironment $ExportFormats $Failed $FinancialDataSource $FontFamilies $FormatType $FrontEnd $FrontEndSession $GeoEntityTypes $GeoLocation $GeoLocationCity $GeoLocationCountry $GeoLocationPrecision $GeoLocationSource $HistoryLength $HomeDirectory $HTMLExportRules $HTTPCookies $HTTPRequest $IgnoreEOF $ImageFormattingWidth $ImagingDevice $ImagingDevices $ImportFormats $IncomingMailSettings $InitialDirectory $Initialization $InitializationContexts $Input $InputFileName $InputStreamMethods $Inspector $InstallationDate $InstallationDirectory $InterfaceEnvironment $InterpreterTypes $IterationLimit $KernelCount $KernelID $Language $LaunchDirectory $LibraryPath $LicenseExpirationDate $LicenseID $LicenseProcesses $LicenseServer $LicenseSubprocesses $LicenseType $Line $Linked $LinkSupported $LoadedFiles $LocalBase $LocalSymbolBase $MachineAddresses $MachineDomain $MachineDomains $MachineEpsilon $MachineID $MachineName $MachinePrecision $MachineType $MaxExtraPrecision $MaxLicenseProcesses $MaxLicenseSubprocesses $MaxMachineNumber $MaxNumber $MaxPiecewiseCases $MaxPrecision $MaxRootDegree $MessageGroups $MessageList $MessagePrePrint $Messages $MinMachineNumber $MinNumber $MinorReleaseNumber $MinPrecision $MobilePhone $ModuleNumber $NetworkConnected $NetworkInterfaces $NetworkLicense $NewMessage $NewSymbol $Notebooks $NoValue $NumberMarks $Off $OperatingSystem $Output $OutputForms $OutputSizeLimit $OutputStreamMethods $Packages $ParentLink $ParentProcessID $PasswordFile $PatchLevelID $Path $PathnameSeparator $PerformanceGoal $Permissions $PermissionsGroupBase $PersistenceBase $PersistencePath $PipeSupported $PlotTheme $Post $Pre $PreferencesDirectory $PreInitialization $PrePrint $PreRead $PrintForms $PrintLiteral $Printout3DPreviewer $ProcessID $ProcessorCount $ProcessorType $ProductInformation $ProgramName $PublisherID $RandomState $RecursionLimit $RegisteredDeviceClasses $RegisteredUserName $ReleaseNumber $RequesterAddress $RequesterWolframID $RequesterWolframUUID $ResourceSystemBase $RootDirectory $ScheduledTask $ScriptCommandLine $ScriptInputString $SecuredAuthenticationKeyTokens $ServiceCreditsAvailable $Services $SessionID $SetParentLink $SharedFunctions $SharedVariables $SoundDisplay $SoundDisplayFunction $SourceLink $SSHAuthentication $SummaryBoxDataSizeLimit $SuppressInputFormHeads $SynchronousEvaluation $SyntaxHandler $System $SystemCharacterEncoding $SystemID $SystemMemory $SystemShell $SystemTimeZone $SystemWordLength $TemplatePath $TemporaryDirectory $TemporaryPrefix $TestFileName $TextStyle $TimedOut $TimeUnit $TimeZone $TimeZoneEntity $TopDirectory $TraceOff $TraceOn $TracePattern $TracePostAction $TracePreAction $UnitSystem $Urgent $UserAddOnsDirectory $UserAgentLanguages $UserAgentMachine $UserAgentName $UserAgentOperatingSystem $UserAgentString $UserAgentVersion $UserBaseDirectory $UserDocumentsDirectory $Username $UserName $UserURLBase $Version $VersionNumber $VoiceStyles $WolframID $WolframUUID\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\(\\\\*\",\n            \"end\": \"\\\\*\\\\)\",\n            \"contains\": [\n                \"self\",\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/matlab.json",
    "content": "{\n    \"keywords\": {\n        \"keyword\": \"break case catch classdef continue else elseif end enumerated events for function global if methods otherwise parfor persistent properties return spmd switch try while\",\n        \"built_in\": \"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun legend intersect ismember procrustes hold num2cell \"\n    },\n    \"illegal\": \"(\\/\\/|\\\"|#|\\/\\\\*|\\\\s+\\/\\\\w+)\",\n    \"contains\": [\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"function\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"variants\": [\n                        {\n                            \"begin\": \"\\\\(\",\n                            \"end\": \"\\\\)\"\n                        },\n                        {\n                            \"begin\": \"\\\\[\",\n                            \"end\": \"\\\\]\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"built_in\",\n            \"begin\": \"true|false\",\n            \"relevance\": 0,\n            \"starts\": {\n                \"relevance\": 0,\n                \"contains\": [\n                    {\n                        \"begin\": \"('|\\\\.')+\"\n                    }\n                ]\n            }\n        },\n        {\n            \"begin\": \"[a-zA-Z][a-zA-Z_0-9]*('|\\\\.')+\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0,\n            \"starts\": {\n                \"$ref\": \"#contains.1.starts\"\n            }\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"''\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"\\\\]|}|\\\\)\",\n            \"relevance\": 0,\n            \"starts\": {\n                \"$ref\": \"#contains.1.starts\"\n            }\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.4.contains.0\"\n                },\n                {\n                    \"begin\": \"\\\"\\\"\"\n                }\n            ],\n            \"starts\": {\n                \"$ref\": \"#contains.1.starts\"\n            }\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"^\\\\s*\\\\%\\\\{\\\\s*$\",\n            \"end\": \"^\\\\s*\\\\%\\\\}\\\\s*$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\%\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.7.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/maxima.json",
    "content": "{\n    \"lexemes\": \"[A-Za-z_%][0-9A-Za-z_%]*\",\n    \"keywords\": {\n        \"keyword\": \"if then else elseif for thru do while unless step in and or not\",\n        \"literal\": \"true false unknown inf minf ind und %e %i %pi %phi %gamma\",\n        \"built_in\": \" abasep abs absint absolute_real_time acos acosh acot acoth acsc acsch activate addcol add_edge add_edges addmatrices addrow add_vertex add_vertices adjacency_matrix adjoin adjoint af agd airy airy_ai airy_bi airy_dai airy_dbi algsys alg_type alias allroots alphacharp alphanumericp amortization %and annuity_fv annuity_pv antid antidiff AntiDifference append appendfile apply apply1 apply2 applyb1 apropos args arit_amortization arithmetic arithsum array arrayapply arrayinfo arraymake arraysetapply ascii asec asech asin asinh askinteger asksign assoc assoc_legendre_p assoc_legendre_q assume assume_external_byte_order asympa at atan atan2 atanh atensimp atom atvalue augcoefmatrix augmented_lagrangian_method av average_degree backtrace bars barsplot barsplot_description base64 base64_decode bashindices batch batchload bc2 bdvac belln benefit_cost bern bernpoly bernstein_approx bernstein_expand bernstein_poly bessel bessel_i bessel_j bessel_k bessel_simplify bessel_y beta beta_incomplete beta_incomplete_generalized beta_incomplete_regularized bezout bfallroots bffac bf_find_root bf_fmin_cobyla bfhzeta bfloat bfloatp bfpsi bfpsi0 bfzeta biconnected_components bimetric binomial bipartition block blockmatrixp bode_gain bode_phase bothcoef box boxplot boxplot_description break bug_report build_info|10 buildq build_sample burn cabs canform canten cardinality carg cartan cartesian_product catch cauchy_matrix cbffac cdf_bernoulli cdf_beta cdf_binomial cdf_cauchy cdf_chi2 cdf_continuous_uniform cdf_discrete_uniform cdf_exp cdf_f cdf_gamma cdf_general_finite_discrete cdf_geometric cdf_gumbel cdf_hypergeometric cdf_laplace cdf_logistic cdf_lognormal cdf_negative_binomial cdf_noncentral_chi2 cdf_noncentral_student_t cdf_normal cdf_pareto cdf_poisson cdf_rank_sum cdf_rayleigh cdf_signed_rank cdf_student_t cdf_weibull cdisplay ceiling central_moment cequal cequalignore cf cfdisrep cfexpand cgeodesic cgreaterp cgreaterpignore changename changevar chaosgame charat charfun charfun2 charlist charp charpoly chdir chebyshev_t chebyshev_u checkdiv check_overlaps chinese cholesky christof chromatic_index chromatic_number cint circulant_graph clear_edge_weight clear_rules clear_vertex_label clebsch_gordan clebsch_graph clessp clesspignore close closefile cmetric coeff coefmatrix cograd col collapse collectterms columnop columnspace columnswap columnvector combination combine comp2pui compare compfile compile compile_file complement_graph complete_bipartite_graph complete_graph complex_number_p components compose_functions concan concat conjugate conmetderiv connected_components connect_vertices cons constant constantp constituent constvalue cont2part content continuous_freq contortion contour_plot contract contract_edge contragrad contrib_ode convert coord copy copy_file copy_graph copylist copymatrix cor cos cosh cot coth cov cov1 covdiff covect covers crc24sum create_graph create_list csc csch csetup cspline ctaylor ct_coordsys ctransform ctranspose cube_graph cuboctahedron_graph cunlisp cv cycle_digraph cycle_graph cylindrical days360 dblint deactivate declare declare_constvalue declare_dimensions declare_fundamental_dimensions declare_fundamental_units declare_qty declare_translated declare_unit_conversion declare_units declare_weights decsym defcon define define_alt_display define_variable defint defmatch defrule defstruct deftaylor degree_sequence del delete deleten delta demo demoivre denom depends derivdegree derivlist describe desolve determinant dfloat dgauss_a dgauss_b dgeev dgemm dgeqrf dgesv dgesvd diag diagmatrix diag_matrix diagmatrixp diameter diff digitcharp dimacs_export dimacs_import dimension dimensionless dimensions dimensions_as_list direct directory discrete_freq disjoin disjointp disolate disp dispcon dispform dispfun dispJordan display disprule dispterms distrib divide divisors divsum dkummer_m dkummer_u dlange dodecahedron_graph dotproduct dotsimp dpart draw draw2d draw3d drawdf draw_file draw_graph dscalar echelon edge_coloring edge_connectivity edges eigens_by_jacobi eigenvalues eigenvectors eighth einstein eivals eivects elapsed_real_time elapsed_run_time ele2comp ele2polynome ele2pui elem elementp elevation_grid elim elim_allbut eliminate eliminate_using ellipse elliptic_e elliptic_ec elliptic_eu elliptic_f elliptic_kc elliptic_pi ematrix empty_graph emptyp endcons entermatrix entertensor entier equal equalp equiv_classes erf erfc erf_generalized erfi errcatch error errormsg errors euler ev eval_string evenp every evolution evolution2d evundiff example exp expand expandwrt expandwrt_factored expint expintegral_chi expintegral_ci expintegral_e expintegral_e1 expintegral_ei expintegral_e_simplify expintegral_li expintegral_shi expintegral_si explicit explose exponentialize express expt exsec extdiff extract_linear_equations extremal_subset ezgcd %f f90 facsum factcomb factor factorfacsum factorial factorout factorsum facts fast_central_elements fast_linsolve fasttimes featurep fernfale fft fib fibtophi fifth filename_merge file_search file_type fillarray findde find_root find_root_abs find_root_error find_root_rel first fix flatten flength float floatnump floor flower_snark flush flush1deriv flushd flushnd flush_output fmin_cobyla forget fortran fourcos fourexpand fourier fourier_elim fourint fourintcos fourintsin foursimp foursin fourth fposition frame_bracket freeof freshline fresnel_c fresnel_s from_adjacency_matrix frucht_graph full_listify fullmap fullmapl fullratsimp fullratsubst fullsetify funcsolve fundamental_dimensions fundamental_units fundef funmake funp fv g0 g1 gamma gamma_greek gamma_incomplete gamma_incomplete_generalized gamma_incomplete_regularized gauss gauss_a gauss_b gaussprob gcd gcdex gcdivide gcfac gcfactor gd generalized_lambert_w genfact gen_laguerre genmatrix gensym geo_amortization geo_annuity_fv geo_annuity_pv geomap geometric geometric_mean geosum get getcurrentdirectory get_edge_weight getenv get_lu_factors get_output_stream_string get_pixel get_plot_option get_tex_environment get_tex_environment_default get_vertex_label gfactor gfactorsum ggf girth global_variances gn gnuplot_close gnuplot_replot gnuplot_reset gnuplot_restart gnuplot_start go Gosper GosperSum gr2d gr3d gradef gramschmidt graph6_decode graph6_encode graph6_export graph6_import graph_center graph_charpoly graph_eigenvalues graph_flow graph_order graph_periphery graph_product graph_size graph_union great_rhombicosidodecahedron_graph great_rhombicuboctahedron_graph grid_graph grind grobner_basis grotzch_graph hamilton_cycle hamilton_path hankel hankel_1 hankel_2 harmonic harmonic_mean hav heawood_graph hermite hessian hgfred hilbertmap hilbert_matrix hipow histogram histogram_description hodge horner hypergeometric i0 i1 %ibes ic1 ic2 ic_convert ichr1 ichr2 icosahedron_graph icosidodecahedron_graph icurvature ident identfor identity idiff idim idummy ieqn %if ifactors iframes ifs igcdex igeodesic_coords ilt image imagpart imetric implicit implicit_derivative implicit_plot indexed_tensor indices induced_subgraph inferencep inference_result infix info_display init_atensor init_ctensor in_neighbors innerproduct inpart inprod inrt integerp integer_partitions integrate intersect intersection intervalp intopois intosum invariant1 invariant2 inverse_fft inverse_jacobi_cd inverse_jacobi_cn inverse_jacobi_cs inverse_jacobi_dc inverse_jacobi_dn inverse_jacobi_ds inverse_jacobi_nc inverse_jacobi_nd inverse_jacobi_ns inverse_jacobi_sc inverse_jacobi_sd inverse_jacobi_sn invert invert_by_adjoint invert_by_lu inv_mod irr is is_biconnected is_bipartite is_connected is_digraph is_edge_in_graph is_graph is_graph_or_digraph ishow is_isomorphic isolate isomorphism is_planar isqrt isreal_p is_sconnected is_tree is_vertex_in_graph items_inference %j j0 j1 jacobi jacobian jacobi_cd jacobi_cn jacobi_cs jacobi_dc jacobi_dn jacobi_ds jacobi_nc jacobi_nd jacobi_ns jacobi_p jacobi_sc jacobi_sd jacobi_sn JF jn join jordan julia julia_set julia_sin %k kdels kdelta kill killcontext kostka kron_delta kronecker_product kummer_m kummer_u kurtosis kurtosis_bernoulli kurtosis_beta kurtosis_binomial kurtosis_chi2 kurtosis_continuous_uniform kurtosis_discrete_uniform kurtosis_exp kurtosis_f kurtosis_gamma kurtosis_general_finite_discrete kurtosis_geometric kurtosis_gumbel kurtosis_hypergeometric kurtosis_laplace kurtosis_logistic kurtosis_lognormal kurtosis_negative_binomial kurtosis_noncentral_chi2 kurtosis_noncentral_student_t kurtosis_normal kurtosis_pareto kurtosis_poisson kurtosis_rayleigh kurtosis_student_t kurtosis_weibull label labels lagrange laguerre lambda lambert_w laplace laplacian_matrix last lbfgs lc2kdt lcharp lc_l lcm lc_u ldefint ldisp ldisplay legendre_p legendre_q leinstein length let letrules letsimp levi_civita lfreeof lgtreillis lhs li liediff limit Lindstedt linear linearinterpol linear_program linear_regression line_graph linsolve listarray list_correlations listify list_matrix_entries list_nc_monomials listoftens listofvars listp lmax lmin load loadfile local locate_matrix_entry log logcontract log_gamma lopow lorentz_gauge lowercasep lpart lratsubst lreduce lriemann lsquares_estimates lsquares_estimates_approximate lsquares_estimates_exact lsquares_mse lsquares_residual_mse lsquares_residuals lsum ltreillis lu_backsub lucas lu_factor %m macroexpand macroexpand1 make_array makebox makefact makegamma make_graph make_level_picture makelist makeOrders make_poly_continent make_poly_country make_polygon make_random_state make_rgb_picture makeset make_string_input_stream make_string_output_stream make_transform mandelbrot mandelbrot_set map mapatom maplist matchdeclare matchfix mat_cond mat_fullunblocker mat_function mathml_display mat_norm matrix matrixmap matrixp matrix_size mattrace mat_trace mat_unblocker max max_clique max_degree max_flow maximize_lp max_independent_set max_matching maybe md5sum mean mean_bernoulli mean_beta mean_binomial mean_chi2 mean_continuous_uniform mean_deviation mean_discrete_uniform mean_exp mean_f mean_gamma mean_general_finite_discrete mean_geometric mean_gumbel mean_hypergeometric mean_laplace mean_logistic mean_lognormal mean_negative_binomial mean_noncentral_chi2 mean_noncentral_student_t mean_normal mean_pareto mean_poisson mean_rayleigh mean_student_t mean_weibull median median_deviation member mesh metricexpandall mgf1_sha1 min min_degree min_edge_cut minfactorial minimalPoly minimize_lp minimum_spanning_tree minor minpack_lsquares minpack_solve min_vertex_cover min_vertex_cut mkdir mnewton mod mode_declare mode_identity ModeMatrix moebius mon2schur mono monomial_dimensions multibernstein_poly multi_display_for_texinfo multi_elem multinomial multinomial_coeff multi_orbit multiplot_mode multi_pui multsym multthru mycielski_graph nary natural_unit nc_degree ncexpt ncharpoly negative_picture neighbors new newcontext newdet new_graph newline newton new_variable next_prime nicedummies niceindices ninth nofix nonarray noncentral_moment nonmetricity nonnegintegerp nonscalarp nonzeroandfreeof notequal nounify nptetrad npv nroots nterms ntermst nthroot nullity nullspace num numbered_boundaries numberp number_to_octets num_distinct_partitions numerval numfactor num_partitions nusum nzeta nzetai nzetar octets_to_number octets_to_oid odd_girth oddp ode2 ode_check odelin oid_to_octets op opena opena_binary openr openr_binary openw openw_binary operatorp opsubst optimize %or orbit orbits ordergreat ordergreatp orderless orderlessp orthogonal_complement orthopoly_recur orthopoly_weight outermap out_neighbors outofpois pade parabolic_cylinder_d parametric parametric_surface parg parGosper parse_string parse_timedate part part2cont partfrac partition partition_set partpol path_digraph path_graph pathname_directory pathname_name pathname_type pdf_bernoulli pdf_beta pdf_binomial pdf_cauchy pdf_chi2 pdf_continuous_uniform pdf_discrete_uniform pdf_exp pdf_f pdf_gamma pdf_general_finite_discrete pdf_geometric pdf_gumbel pdf_hypergeometric pdf_laplace pdf_logistic pdf_lognormal pdf_negative_binomial pdf_noncentral_chi2 pdf_noncentral_student_t pdf_normal pdf_pareto pdf_poisson pdf_rank_sum pdf_rayleigh pdf_signed_rank pdf_student_t pdf_weibull pearson_skewness permanent permut permutation permutations petersen_graph petrov pickapart picture_equalp picturep piechart piechart_description planar_embedding playback plog plot2d plot3d plotdf ploteq plsquares pochhammer points poisdiff poisexpt poisint poismap poisplus poissimp poissubst poistimes poistrim polar polarform polartorect polar_to_xy poly_add poly_buchberger poly_buchberger_criterion poly_colon_ideal poly_content polydecomp poly_depends_p poly_elimination_ideal poly_exact_divide poly_expand poly_expt poly_gcd polygon poly_grobner poly_grobner_equal poly_grobner_member poly_grobner_subsetp poly_ideal_intersection poly_ideal_polysaturation poly_ideal_polysaturation1 poly_ideal_saturation poly_ideal_saturation1 poly_lcm poly_minimization polymod poly_multiply polynome2ele polynomialp poly_normal_form poly_normalize poly_normalize_list poly_polysaturation_extension poly_primitive_part poly_pseudo_divide poly_reduced_grobner poly_reduction poly_saturation_extension poly_s_polynomial poly_subtract polytocompanion pop postfix potential power_mod powerseries powerset prefix prev_prime primep primes principal_components print printf printfile print_graph printpois printprops prodrac product properties propvars psi psubst ptriangularize pui pui2comp pui2ele pui2polynome pui_direct puireduc push put pv qput qrange qty quad_control quad_qag quad_qagi quad_qagp quad_qags quad_qawc quad_qawf quad_qawo quad_qaws quadrilateral quantile quantile_bernoulli quantile_beta quantile_binomial quantile_cauchy quantile_chi2 quantile_continuous_uniform quantile_discrete_uniform quantile_exp quantile_f quantile_gamma quantile_general_finite_discrete quantile_geometric quantile_gumbel quantile_hypergeometric quantile_laplace quantile_logistic quantile_lognormal quantile_negative_binomial quantile_noncentral_chi2 quantile_noncentral_student_t quantile_normal quantile_pareto quantile_poisson quantile_rayleigh quantile_student_t quantile_weibull quartile_skewness quit qunit quotient racah_v racah_w radcan radius random random_bernoulli random_beta random_binomial random_bipartite_graph random_cauchy random_chi2 random_continuous_uniform random_digraph random_discrete_uniform random_exp random_f random_gamma random_general_finite_discrete random_geometric random_graph random_graph1 random_gumbel random_hypergeometric random_laplace random_logistic random_lognormal random_negative_binomial random_network random_noncentral_chi2 random_noncentral_student_t random_normal random_pareto random_permutation random_poisson random_rayleigh random_regular_graph random_student_t random_tournament random_tree random_weibull range rank rat ratcoef ratdenom ratdiff ratdisrep ratexpand ratinterpol rational rationalize ratnumer ratnump ratp ratsimp ratsubst ratvars ratweight read read_array read_binary_array read_binary_list read_binary_matrix readbyte readchar read_hashed_array readline read_list read_matrix read_nested_list readonly read_xpm real_imagpart_to_conjugate realpart realroots rearray rectangle rectform rectform_log_if_constant recttopolar rediff reduce_consts reduce_order region region_boundaries region_boundaries_plus rem remainder remarray rembox remcomps remcon remcoord remfun remfunction remlet remove remove_constvalue remove_dimensions remove_edge remove_fundamental_dimensions remove_fundamental_units remove_plot_option remove_vertex rempart remrule remsym remvalue rename rename_file reset reset_displays residue resolvante resolvante_alternee1 resolvante_bipartite resolvante_diedrale resolvante_klein resolvante_klein3 resolvante_produit_sym resolvante_unitaire resolvante_vierer rest resultant return reveal reverse revert revert2 rgb2level rhs ricci riemann rinvariant risch rk rmdir rncombine romberg room rootscontract round row rowop rowswap rreduce run_testsuite %s save saving scalarp scaled_bessel_i scaled_bessel_i0 scaled_bessel_i1 scalefactors scanmap scatterplot scatterplot_description scene schur2comp sconcat scopy scsimp scurvature sdowncase sec sech second sequal sequalignore set_alt_display setdifference set_draw_defaults set_edge_weight setelmx setequalp setify setp set_partitions set_plot_option set_prompt set_random_state set_tex_environment set_tex_environment_default setunits setup_autoload set_up_dot_simplifications set_vertex_label seventh sexplode sf sha1sum sha256sum shortest_path shortest_weighted_path show showcomps showratvars sierpinskiale sierpinskimap sign signum similaritytransform simp_inequality simplify_sum simplode simpmetderiv simtran sin sinh sinsert sinvertcase sixth skewness skewness_bernoulli skewness_beta skewness_binomial skewness_chi2 skewness_continuous_uniform skewness_discrete_uniform skewness_exp skewness_f skewness_gamma skewness_general_finite_discrete skewness_geometric skewness_gumbel skewness_hypergeometric skewness_laplace skewness_logistic skewness_lognormal skewness_negative_binomial skewness_noncentral_chi2 skewness_noncentral_student_t skewness_normal skewness_pareto skewness_poisson skewness_rayleigh skewness_student_t skewness_weibull slength smake small_rhombicosidodecahedron_graph small_rhombicuboctahedron_graph smax smin smismatch snowmap snub_cube_graph snub_dodecahedron_graph solve solve_rec solve_rec_rat some somrac sort sparse6_decode sparse6_encode sparse6_export sparse6_import specint spherical spherical_bessel_j spherical_bessel_y spherical_hankel1 spherical_hankel2 spherical_harmonic spherical_to_xyz splice split sposition sprint sqfr sqrt sqrtdenest sremove sremovefirst sreverse ssearch ssort sstatus ssubst ssubstfirst staircase standardize standardize_inverse_trig starplot starplot_description status std std1 std_bernoulli std_beta std_binomial std_chi2 std_continuous_uniform std_discrete_uniform std_exp std_f std_gamma std_general_finite_discrete std_geometric std_gumbel std_hypergeometric std_laplace std_logistic std_lognormal std_negative_binomial std_noncentral_chi2 std_noncentral_student_t std_normal std_pareto std_poisson std_rayleigh std_student_t std_weibull stemplot stirling stirling1 stirling2 strim striml strimr string stringout stringp strong_components struve_h struve_l sublis sublist sublist_indices submatrix subsample subset subsetp subst substinpart subst_parallel substpart substring subvar subvarp sum sumcontract summand_to_rec supcase supcontext symbolp symmdifference symmetricp system take_channel take_inference tan tanh taylor taylorinfo taylorp taylor_simplifier taytorat tcl_output tcontract tellrat tellsimp tellsimpafter tentex tenth test_mean test_means_difference test_normality test_proportion test_proportions_difference test_rank_sum test_sign test_signed_rank test_variance test_variance_ratio tex tex1 tex_display texput %th third throw time timedate timer timer_info tldefint tlimit todd_coxeter toeplitz tokens to_lisp topological_sort to_poly to_poly_solve totaldisrep totalfourier totient tpartpol trace tracematrix trace_options transform_sample translate translate_file transpose treefale tree_reduce treillis treinat triangle triangularize trigexpand trigrat trigreduce trigsimp trunc truncate truncated_cube_graph truncated_dodecahedron_graph truncated_icosahedron_graph truncated_tetrahedron_graph tr_warnings_get tube tutte_graph ueivects uforget ultraspherical underlying_graph undiff union unique uniteigenvectors unitp units unit_step unitvector unorder unsum untellrat untimer untrace uppercasep uricci uriemann uvect vandermonde_matrix var var1 var_bernoulli var_beta var_binomial var_chi2 var_continuous_uniform var_discrete_uniform var_exp var_f var_gamma var_general_finite_discrete var_geometric var_gumbel var_hypergeometric var_laplace var_logistic var_lognormal var_negative_binomial var_noncentral_chi2 var_noncentral_student_t var_normal var_pareto var_poisson var_rayleigh var_student_t var_weibull vector vectorpotential vectorsimp verbify vers vertex_coloring vertex_connectivity vertex_degree vertex_distance vertex_eccentricity vertex_in_degree vertex_out_degree vertices vertices_to_cycle vertices_to_path %w weyl wheel_graph wiener_index wigner_3j wigner_6j wigner_9j with_stdout write_binary_data writebyte write_data writefile wronskian xreduce xthru %y Zeilberger zeroequiv zerofor zeromatrix zeromatrixp zeta zgeev zheev zlange zn_add_table zn_carmichael_lambda zn_characteristic_factors zn_determinant zn_factor_generators zn_invert_by_lu zn_log zn_mult_table absboxchar activecontexts adapt_depth additive adim aform algebraic algepsilon algexact aliases allbut all_dotsimp_denoms allocation allsym alphabetic animation antisymmetric arrays askexp assume_pos assume_pos_pred assumescalar asymbol atomgrad atrig1 axes axis_3d axis_bottom axis_left axis_right axis_top azimuth background background_color backsubst berlefact bernstein_explicit besselexpand beta_args_sum_to_integer beta_expand bftorat bftrunc bindtest border boundaries_array box boxchar breakup %c capping cauchysum cbrange cbtics center cflength cframe_flag cnonmet_flag color color_bar color_bar_tics colorbox columns commutative complex cone context contexts contour contour_levels cosnpiflag ctaypov ctaypt ctayswitch ctayvar ct_coords ctorsion_flag ctrgsimp cube current_let_rule_package cylinder data_file_name debugmode decreasing default_let_rule_package delay dependencies derivabbrev derivsubst detout diagmetric diff dim dimensions dispflag display2d|10 display_format_internal distribute_over doallmxops domain domxexpt domxmxops domxnctimes dontfactor doscmxops doscmxplus dot0nscsimp dot0simp dot1simp dotassoc dotconstrules dotdistrib dotexptsimp dotident dotscrules draw_graph_program draw_realpart edge_color edge_coloring edge_partition edge_type edge_width %edispflag elevation %emode endphi endtheta engineering_format_floats enhanced3d %enumer epsilon_lp erfflag erf_representation errormsg error_size error_syms error_type %e_to_numlog eval even evenfun evflag evfun ev_point expandwrt_denom expintexpand expintrep expon expop exptdispflag exptisolate exptsubst facexpand facsum_combine factlim factorflag factorial_expand factors_only fb feature features file_name file_output_append file_search_demo file_search_lisp file_search_maxima|10 file_search_tests file_search_usage file_type_lisp file_type_maxima|10 fill_color fill_density filled_func fixed_vertices flipflag float2bf font font_size fortindent fortspaces fpprec fpprintprec functions gamma_expand gammalim gdet genindex gensumnum GGFCFMAX GGFINFINITY globalsolve gnuplot_command gnuplot_curve_styles gnuplot_curve_titles gnuplot_default_term_command gnuplot_dumb_term_command gnuplot_file_args gnuplot_file_name gnuplot_out_file gnuplot_pdf_term_command gnuplot_pm3d gnuplot_png_term_command gnuplot_postamble gnuplot_preamble gnuplot_ps_term_command gnuplot_svg_term_command gnuplot_term gnuplot_view_args Gosper_in_Zeilberger gradefs grid grid2d grind halfangles head_angle head_both head_length head_type height hypergeometric_representation %iargs ibase icc1 icc2 icounter idummyx ieqnprint ifb ifc1 ifc2 ifg ifgi ifr iframe_bracket_form ifri igeowedge_flag ikt1 ikt2 imaginary inchar increasing infeval infinity inflag infolists inm inmc1 inmc2 intanalysis integer integervalued integrate_use_rootsof integration_constant integration_constant_counter interpolate_color intfaclim ip_grid ip_grid_in irrational isolate_wrt_times iterations itr julia_parameter %k1 %k2 keepfloat key key_pos kinvariant kt label label_alignment label_orientation labels lassociative lbfgs_ncorrections lbfgs_nfeval_max leftjust legend letrat let_rule_packages lfg lg lhospitallim limsubst linear linear_solver linechar linel|10 linenum line_type linewidth line_width linsolve_params linsolvewarn lispdisp listarith listconstvars listdummyvars lmxchar load_pathname loadprint logabs logarc logcb logconcoeffp logexpand lognegint logsimp logx logx_secondary logy logy_secondary logz lriem m1pbranch macroexpansion macros mainvar manual_demo maperror mapprint matrix_element_add matrix_element_mult matrix_element_transpose maxapplydepth maxapplyheight maxima_tempdir|10 maxima_userdir|10 maxnegex MAX_ORD maxposex maxpsifracdenom maxpsifracnum maxpsinegint maxpsiposint maxtayorder mesh_lines_color method mod_big_prime mode_check_errorp mode_checkp mode_check_warnp mod_test mod_threshold modular_linear_solver modulus multiplicative multiplicities myoptions nary negdistrib negsumdispflag newline newtonepsilon newtonmaxiter nextlayerfactor niceindicespref nm nmc noeval nolabels nonegative_lp noninteger nonscalar noun noundisp nouns np npi nticks ntrig numer numer_pbranch obase odd oddfun opacity opproperties opsubst optimprefix optionset orientation origin orthopoly_returns_intervals outative outchar packagefile palette partswitch pdf_file pfeformat phiresolution %piargs piece pivot_count_sx pivot_max_sx plot_format plot_options plot_realpart png_file pochhammer_max_index points pointsize point_size points_joined point_type poislim poisson poly_coefficient_ring poly_elimination_order polyfactor poly_grobner_algorithm poly_grobner_debug poly_monomial_order poly_primary_elimination_order poly_return_term_list poly_secondary_elimination_order poly_top_reduction_only posfun position powerdisp pred prederror primep_number_of_tests product_use_gamma program programmode promote_float_to_bigfloat prompt proportional_axes props psexpand ps_file radexpand radius radsubstflag rassociative ratalgdenom ratchristof ratdenomdivide rateinstein ratepsilon ratfac rational ratmx ratprint ratriemann ratsimpexpons ratvarswitch ratweights ratweyl ratwtlvl real realonly redraw refcheck resolution restart resultant ric riem rmxchar %rnum_list rombergabs rombergit rombergmin rombergtol rootsconmode rootsepsilon run_viewer same_xy same_xyz savedef savefactors scalar scalarmatrixp scale scale_lp setcheck setcheckbreak setval show_edge_color show_edges show_edge_type show_edge_width show_id show_label showtime show_vertex_color show_vertex_size show_vertex_type show_vertices show_weight simp simplified_output simplify_products simpproduct simpsum sinnpiflag solvedecomposes solveexplicit solvefactors solvenullwarn solveradcan solvetrigwarn space sparse sphere spring_embedding_depth sqrtdispflag stardisp startphi starttheta stats_numer stringdisp structures style sublis_apply_lambda subnumsimp sumexpand sumsplitfact surface surface_hide svg_file symmetric tab taylordepth taylor_logexpand taylor_order_coefficients taylor_truncate_polynomials tensorkill terminal testsuite_files thetaresolution timer_devalue title tlimswitch tr track transcompile transform transform_xy translate_fast_arrays transparent transrun tr_array_as_ref tr_bound_function_applyp tr_file_tty_messagesp tr_float_can_branch_complex tr_function_call_default trigexpandplus trigexpandtimes triginverses trigsign trivial_solutions tr_numer tr_optimize_max_loop tr_semicompile tr_state_vars tr_warn_bad_function_calls tr_warn_fexpr tr_warn_meval tr_warn_mode tr_warn_undeclared tr_warn_undefined_variable tstep ttyoff tube_extremes ufg ug %unitexpand unit_vectors uric uriem use_fast_arrays user_preamble usersetunits values vect_cross verbose vertex_color vertex_coloring vertex_partition vertex_size vertex_type view warnings weyl width windowname windowtitle wired_surface wireframe xaxis xaxis_color xaxis_secondary xaxis_type xaxis_width xlabel xlabel_secondary xlength xrange xrange_secondary xtics xtics_axis xtics_rotate xtics_rotate_secondary xtics_secondary xtics_secondary_axis xu_grid x_voxel xy_file xyplane xy_scale yaxis yaxis_color yaxis_secondary yaxis_type yaxis_width ylabel ylabel_secondary ylength yrange yrange_secondary ytics ytics_axis ytics_rotate ytics_rotate_secondary ytics_secondary ytics_secondary_axis yv_grid y_voxel yx_ratio zaxis zaxis_color zaxis_type zaxis_width zeroa zerob zerobern zeta%pi zlabel zlabel_rotate zlength zmin zn_primroot_limit zn_primroot_pretest\",\n        \"symbol\": \"_ __ %|0 %%|0\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                \"self\"\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"relevance\": 0,\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\b(\\\\d+|\\\\d+\\\\.|\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)[Ee][-+]?\\\\d+\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(\\\\d+|\\\\d+\\\\.|\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)[Bb][-+]?\\\\d+\\\\b\",\n                    \"relevance\": 10\n                },\n                {\n                    \"begin\": \"\\\\b(\\\\.\\\\d+|\\\\d+\\\\.\\\\d+)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(\\\\d+|0[0-9A-Za-z]+)\\\\.?\\\\b\"\n                }\n            ]\n        }\n    ],\n    \"illegal\": \"@\"\n}\n"
  },
  {
    "path": "includes/Highlight/languages/mel.json",
    "content": "{\n    \"keywords\": \"int float string vector matrix if else switch case default while do for in break continue global proc return about abs addAttr addAttributeEditorNodeHelp addDynamic addNewShelfTab addPP addPanelCategory addPrefixToName advanceToNextDrivenKey affectedNet affects aimConstraint air alias aliasAttr align alignCtx alignCurve alignSurface allViewFit ambientLight angle angleBetween animCone animCurveEditor animDisplay animView annotate appendStringArray applicationName applyAttrPreset applyTake arcLenDimContext arcLengthDimension arclen arrayMapper art3dPaintCtx artAttrCtx artAttrPaintVertexCtx artAttrSkinPaintCtx artAttrTool artBuildPaintMenu artFluidAttrCtx artPuttyCtx artSelectCtx artSetPaintCtx artUserPaintCtx assignCommand assignInputDevice assignViewportFactories attachCurve attachDeviceAttr attachSurface attrColorSliderGrp attrCompatibility attrControlGrp attrEnumOptionMenu attrEnumOptionMenuGrp attrFieldGrp attrFieldSliderGrp attrNavigationControlGrp attrPresetEditWin attributeExists attributeInfo attributeMenu attributeQuery autoKeyframe autoPlace bakeClip bakeFluidShading bakePartialHistory bakeResults bakeSimulation basename basenameEx batchRender bessel bevel bevelPlus binMembership bindSkin blend2 blendShape blendShapeEditor blendShapePanel blendTwoAttr blindDataType boneLattice boundary boxDollyCtx boxZoomCtx bufferCurve buildBookmarkMenu buildKeyframeMenu button buttonManip CBG cacheFile cacheFileCombine cacheFileMerge cacheFileTrack camera cameraView canCreateManip canvas capitalizeString catch catchQuiet ceil changeSubdivComponentDisplayLevel changeSubdivRegion channelBox character characterMap characterOutlineEditor characterize chdir checkBox checkBoxGrp checkDefaultRenderGlobals choice circle circularFillet clamp clear clearCache clip clipEditor clipEditorCurrentTimeCtx clipSchedule clipSchedulerOutliner clipTrimBefore closeCurve closeSurface cluster cmdFileOutput cmdScrollFieldExecuter cmdScrollFieldReporter cmdShell coarsenSubdivSelectionList collision color colorAtPoint colorEditor colorIndex colorIndexSliderGrp colorSliderButtonGrp colorSliderGrp columnLayout commandEcho commandLine commandPort compactHairSystem componentEditor compositingInterop computePolysetVolume condition cone confirmDialog connectAttr connectControl connectDynamic connectJoint connectionInfo constrain constrainValue constructionHistory container containsMultibyte contextInfo control convertFromOldLayers convertIffToPsd convertLightmap convertSolidTx convertTessellation convertUnit copyArray copyFlexor copyKey copySkinWeights cos cpButton cpCache cpClothSet cpCollision cpConstraint cpConvClothToMesh cpForces cpGetSolverAttr cpPanel cpProperty cpRigidCollisionFilter cpSeam cpSetEdit cpSetSolverAttr cpSolver cpSolverTypes cpTool cpUpdateClothUVs createDisplayLayer createDrawCtx createEditor createLayeredPsdFile createMotionField createNewShelf createNode createRenderLayer createSubdivRegion cross crossProduct ctxAbort ctxCompletion ctxEditMode ctxTraverse currentCtx currentTime currentTimeCtx currentUnit curve curveAddPtCtx curveCVCtx curveEPCtx curveEditorCtx curveIntersect curveMoveEPCtx curveOnSurface curveSketchCtx cutKey cycleCheck cylinder dagPose date defaultLightListCheckBox defaultNavigation defineDataServer defineVirtualDevice deformer deg_to_rad delete deleteAttr deleteShadingGroupsAndMaterials deleteShelfTab deleteUI deleteUnusedBrushes delrandstr detachCurve detachDeviceAttr detachSurface deviceEditor devicePanel dgInfo dgdirty dgeval dgtimer dimWhen directKeyCtx directionalLight dirmap dirname disable disconnectAttr disconnectJoint diskCache displacementToPoly displayAffected displayColor displayCull displayLevelOfDetail displayPref displayRGBColor displaySmoothness displayStats displayString displaySurface distanceDimContext distanceDimension doBlur dolly dollyCtx dopeSheetEditor dot dotProduct doubleProfileBirailSurface drag dragAttrContext draggerContext dropoffLocator duplicate duplicateCurve duplicateSurface dynCache dynControl dynExport dynExpression dynGlobals dynPaintEditor dynParticleCtx dynPref dynRelEdPanel dynRelEditor dynamicLoad editAttrLimits editDisplayLayerGlobals editDisplayLayerMembers editRenderLayerAdjustment editRenderLayerGlobals editRenderLayerMembers editor editorTemplate effector emit emitter enableDevice encodeString endString endsWith env equivalent equivalentTol erf error eval evalDeferred evalEcho event exactWorldBoundingBox exclusiveLightCheckBox exec executeForEachObject exists exp expression expressionEditorListen extendCurve extendSurface extrude fcheck fclose feof fflush fgetline fgetword file fileBrowserDialog fileDialog fileExtension fileInfo filetest filletCurve filter filterCurve filterExpand filterStudioImport findAllIntersections findAnimCurves findKeyframe findMenuItem findRelatedSkinCluster finder firstParentOf fitBspline flexor floatEq floatField floatFieldGrp floatScrollBar floatSlider floatSlider2 floatSliderButtonGrp floatSliderGrp floor flow fluidCacheInfo fluidEmitter fluidVoxelInfo flushUndo fmod fontDialog fopen formLayout format fprint frameLayout fread freeFormFillet frewind fromNativePath fwrite gamma gauss geometryConstraint getApplicationVersionAsFloat getAttr getClassification getDefaultBrush getFileList getFluidAttr getInputDeviceRange getMayaPanelTypes getModifiers getPanel getParticleAttr getPluginResource getenv getpid glRender glRenderEditor globalStitch gmatch goal gotoBindPose grabColor gradientControl gradientControlNoAttr graphDollyCtx graphSelectContext graphTrackCtx gravity grid gridLayout group groupObjectsByName HfAddAttractorToAS HfAssignAS HfBuildEqualMap HfBuildFurFiles HfBuildFurImages HfCancelAFR HfConnectASToHF HfCreateAttractor HfDeleteAS HfEditAS HfPerformCreateAS HfRemoveAttractorFromAS HfSelectAttached HfSelectAttractors HfUnAssignAS hardenPointCurve hardware hardwareRenderPanel headsUpDisplay headsUpMessage help helpLine hermite hide hilite hitTest hotBox hotkey hotkeyCheck hsv_to_rgb hudButton hudSlider hudSliderButton hwReflectionMap hwRender hwRenderLoad hyperGraph hyperPanel hyperShade hypot iconTextButton iconTextCheckBox iconTextRadioButton iconTextRadioCollection iconTextScrollList iconTextStaticLabel ikHandle ikHandleCtx ikHandleDisplayScale ikSolver ikSplineHandleCtx ikSystem ikSystemInfo ikfkDisplayMethod illustratorCurves image imfPlugins inheritTransform insertJoint insertJointCtx insertKeyCtx insertKnotCurve insertKnotSurface instance instanceable instancer intField intFieldGrp intScrollBar intSlider intSliderGrp interToUI internalVar intersect iprEngine isAnimCurve isConnected isDirty isParentOf isSameObject isTrue isValidObjectName isValidString isValidUiName isolateSelect itemFilter itemFilterAttr itemFilterRender itemFilterType joint jointCluster jointCtx jointDisplayScale jointLattice keyTangent keyframe keyframeOutliner keyframeRegionCurrentTimeCtx keyframeRegionDirectKeyCtx keyframeRegionDollyCtx keyframeRegionInsertKeyCtx keyframeRegionMoveKeyCtx keyframeRegionScaleKeyCtx keyframeRegionSelectKeyCtx keyframeRegionSetKeyCtx keyframeRegionTrackCtx keyframeStats lassoContext lattice latticeDeformKeyCtx launch launchImageEditor layerButton layeredShaderPort layeredTexturePort layout layoutDialog lightList lightListEditor lightListPanel lightlink lineIntersection linearPrecision linstep listAnimatable listAttr listCameras listConnections listDeviceAttachments listHistory listInputDeviceAxes listInputDeviceButtons listInputDevices listMenuAnnotation listNodeTypes listPanelCategories listRelatives listSets listTransforms listUnselected listerEditor loadFluid loadNewShelf loadPlugin loadPluginLanguageResources loadPrefObjects localizedPanelLabel lockNode loft log longNameOf lookThru ls lsThroughFilter lsType lsUI Mayatomr mag makeIdentity makeLive makePaintable makeRoll makeSingleSurface makeTubeOn makebot manipMoveContext manipMoveLimitsCtx manipOptions manipRotateContext manipRotateLimitsCtx manipScaleContext manipScaleLimitsCtx marker match max memory menu menuBarLayout menuEditor menuItem menuItemToShelf menuSet menuSetPref messageLine min minimizeApp mirrorJoint modelCurrentTimeCtx modelEditor modelPanel mouse movIn movOut move moveIKtoFK moveKeyCtx moveVertexAlongDirection multiProfileBirailSurface mute nParticle nameCommand nameField namespace namespaceInfo newPanelItems newton nodeCast nodeIconButton nodeOutliner nodePreset nodeType noise nonLinear normalConstraint normalize nurbsBoolean nurbsCopyUVSet nurbsCube nurbsEditUV nurbsPlane nurbsSelect nurbsSquare nurbsToPoly nurbsToPolygonsPref nurbsToSubdiv nurbsToSubdivPref nurbsUVSet nurbsViewDirectionVector objExists objectCenter objectLayer objectType objectTypeUI obsoleteProc oceanNurbsPreviewPlane offsetCurve offsetCurveOnSurface offsetSurface openGLExtension openMayaPref optionMenu optionMenuGrp optionVar orbit orbitCtx orientConstraint outlinerEditor outlinerPanel overrideModifier paintEffectsDisplay pairBlend palettePort paneLayout panel panelConfiguration panelHistory paramDimContext paramDimension paramLocator parent parentConstraint particle particleExists particleInstancer particleRenderInfo partition pasteKey pathAnimation pause pclose percent performanceOptions pfxstrokes pickWalk picture pixelMove planarSrf plane play playbackOptions playblast plugAttr plugNode pluginInfo pluginResourceUtil pointConstraint pointCurveConstraint pointLight pointMatrixMult pointOnCurve pointOnSurface pointPosition poleVectorConstraint polyAppend polyAppendFacetCtx polyAppendVertex polyAutoProjection polyAverageNormal polyAverageVertex polyBevel polyBlendColor polyBlindData polyBoolOp polyBridgeEdge polyCacheMonitor polyCheck polyChipOff polyClipboard polyCloseBorder polyCollapseEdge polyCollapseFacet polyColorBlindData polyColorDel polyColorPerVertex polyColorSet polyCompare polyCone polyCopyUV polyCrease polyCreaseCtx polyCreateFacet polyCreateFacetCtx polyCube polyCut polyCutCtx polyCylinder polyCylindricalProjection polyDelEdge polyDelFacet polyDelVertex polyDuplicateAndConnect polyDuplicateEdge polyEditUV polyEditUVShell polyEvaluate polyExtrudeEdge polyExtrudeFacet polyExtrudeVertex polyFlipEdge polyFlipUV polyForceUV polyGeoSampler polyHelix polyInfo polyInstallAction polyLayoutUV polyListComponentConversion polyMapCut polyMapDel polyMapSew polyMapSewMove polyMergeEdge polyMergeEdgeCtx polyMergeFacet polyMergeFacetCtx polyMergeUV polyMergeVertex polyMirrorFace polyMoveEdge polyMoveFacet polyMoveFacetUV polyMoveUV polyMoveVertex polyNormal polyNormalPerVertex polyNormalizeUV polyOptUvs polyOptions polyOutput polyPipe polyPlanarProjection polyPlane polyPlatonicSolid polyPoke polyPrimitive polyPrism polyProjection polyPyramid polyQuad polyQueryBlindData polyReduce polySelect polySelectConstraint polySelectConstraintMonitor polySelectCtx polySelectEditCtx polySeparate polySetToFaceNormal polySewEdge polyShortestPathCtx polySmooth polySoftEdge polySphere polySphericalProjection polySplit polySplitCtx polySplitEdge polySplitRing polySplitVertex polyStraightenUVBorder polySubdivideEdge polySubdivideFacet polyToSubdiv polyTorus polyTransfer polyTriangulate polyUVSet polyUnite polyWedgeFace popen popupMenu pose pow preloadRefEd print progressBar progressWindow projFileViewer projectCurve projectTangent projectionContext projectionManip promptDialog propModCtx propMove psdChannelOutliner psdEditTextureFile psdExport psdTextureFile putenv pwd python querySubdiv quit rad_to_deg radial radioButton radioButtonGrp radioCollection radioMenuItemCollection rampColorPort rand randomizeFollicles randstate rangeControl readTake rebuildCurve rebuildSurface recordAttr recordDevice redo reference referenceEdit referenceQuery refineSubdivSelectionList refresh refreshAE registerPluginResource rehash reloadImage removeJoint removeMultiInstance removePanelCategory rename renameAttr renameSelectionList renameUI render renderGlobalsNode renderInfo renderLayerButton renderLayerParent renderLayerPostProcess renderLayerUnparent renderManip renderPartition renderQualityNode renderSettings renderThumbnailUpdate renderWindowEditor renderWindowSelectContext renderer reorder reorderDeformers requires reroot resampleFluid resetAE resetPfxToPolyCamera resetTool resolutionNode retarget reverseCurve reverseSurface revolve rgb_to_hsv rigidBody rigidSolver roll rollCtx rootOf rot rotate rotationInterpolation roundConstantRadius rowColumnLayout rowLayout runTimeCommand runup sampleImage saveAllShelves saveAttrPreset saveFluid saveImage saveInitialState saveMenu savePrefObjects savePrefs saveShelf saveToolSettings scale scaleBrushBrightness scaleComponents scaleConstraint scaleKey scaleKeyCtx sceneEditor sceneUIReplacement scmh scriptCtx scriptEditorInfo scriptJob scriptNode scriptTable scriptToShelf scriptedPanel scriptedPanelType scrollField scrollLayout sculpt searchPathArray seed selLoadSettings select selectContext selectCurveCV selectKey selectKeyCtx selectKeyframeRegionCtx selectMode selectPref selectPriority selectType selectedNodes selectionConnection separator setAttr setAttrEnumResource setAttrMapping setAttrNiceNameResource setConstraintRestPosition setDefaultShadingGroup setDrivenKeyframe setDynamic setEditCtx setEditor setFluidAttr setFocus setInfinity setInputDeviceMapping setKeyCtx setKeyPath setKeyframe setKeyframeBlendshapeTargetWts setMenuMode setNodeNiceNameResource setNodeTypeFlag setParent setParticleAttr setPfxToPolyCamera setPluginResource setProject setStampDensity setStartupMessage setState setToolTo setUITemplate setXformManip sets shadingConnection shadingGeometryRelCtx shadingLightRelCtx shadingNetworkCompare shadingNode shapeCompare shelfButton shelfLayout shelfTabLayout shellField shortNameOf showHelp showHidden showManipCtx showSelectionInTitle showShadingGroupAttrEditor showWindow sign simplify sin singleProfileBirailSurface size sizeBytes skinCluster skinPercent smoothCurve smoothTangentSurface smoothstep snap2to2 snapKey snapMode snapTogetherCtx snapshot soft softMod softModCtx sort sound soundControl source spaceLocator sphere sphrand spotLight spotLightPreviewPort spreadSheetEditor spring sqrt squareSurface srtContext stackTrace startString startsWith stitchAndExplodeShell stitchSurface stitchSurfacePoints strcmp stringArrayCatenate stringArrayContains stringArrayCount stringArrayInsertAtIndex stringArrayIntersector stringArrayRemove stringArrayRemoveAtIndex stringArrayRemoveDuplicates stringArrayRemoveExact stringArrayToString stringToStringArray strip stripPrefixFromName stroke subdAutoProjection subdCleanTopology subdCollapse subdDuplicateAndConnect subdEditUV subdListComponentConversion subdMapCut subdMapSewMove subdMatchTopology subdMirror subdToBlind subdToPoly subdTransferUVsToCache subdiv subdivCrease subdivDisplaySmoothness substitute substituteAllString substituteGeometry substring surface surfaceSampler surfaceShaderList swatchDisplayPort switchTable symbolButton symbolCheckBox sysFile system tabLayout tan tangentConstraint texLatticeDeformContext texManipContext texMoveContext texMoveUVShellContext texRotateContext texScaleContext texSelectContext texSelectShortestPathCtx texSmudgeUVContext texWinToolCtx text textCurves textField textFieldButtonGrp textFieldGrp textManip textScrollList textToShelf textureDisplacePlane textureHairColor texturePlacementContext textureWindow threadCount threePointArcCtx timeControl timePort timerX toNativePath toggle toggleAxis toggleWindowVisibility tokenize tokenizeList tolerance tolower toolButton toolCollection toolDropped toolHasOptions toolPropertyWindow torus toupper trace track trackCtx transferAttributes transformCompare transformLimits translator trim trunc truncateFluidCache truncateHairCache tumble tumbleCtx turbulence twoPointArcCtx uiRes uiTemplate unassignInputDevice undo undoInfo ungroup uniform unit unloadPlugin untangleUV untitledFileName untrim upAxis updateAE userCtx uvLink uvSnapshot validateShelfName vectorize view2dToolCtx viewCamera viewClipPlane viewFit viewHeadOn viewLookAt viewManip viewPlace viewSet visor volumeAxis vortex waitCursor warning webBrowser webBrowserPrefs whatIs window windowPref wire wireContext workspace wrinkle wrinkleContext writeTake xbmLangPathList xform\",\n    \"illegal\": \"<\\/\",\n    \"contains\": [\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"`\",\n            \"end\": \"`\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"[\\\\$\\\\%\\\\@](\\\\^\\\\w\\\\b|#\\\\w+|[^\\\\s\\\\w{]|{\\\\w+}|\\\\w+)\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.5.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/mercury.json",
    "content": "{\n    \"aliases\": [\n        \"m\",\n        \"moo\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"module use_module import_module include_module end_module initialise mutable initialize finalize finalise interface implementation pred mode func type inst solver any_pred any_func is semidet det nondet multi erroneous failure cc_nondet cc_multi typeclass instance where pragma promise external trace atomic or_else require_complete_switch require_det require_semidet require_multi require_nondet require_cc_multi require_cc_nondet require_erroneous require_failure\",\n        \"meta\": \"inline no_inline type_spec source_file fact_table obsolete memo loop_check minimal_model terminates does_not_terminate check_termination promise_equivalent_clauses foreign_proc foreign_decl foreign_code foreign_type foreign_import_module foreign_export_enum foreign_export foreign_enum may_call_mercury will_not_call_mercury thread_safe not_thread_safe maybe_thread_safe promise_pure promise_semipure tabled_for_io local untrailed trailed attach_to_io_state can_pass_as_mercury_type stable will_not_throw_exception may_modify_trail will_not_modify_trail may_duplicate may_not_duplicate affects_liveness does_not_affect_liveness doesnt_affect_liveness no_sharing unknown_sharing sharing\",\n        \"built_in\": \"some all not if then else true fail false try catch catch_any semidet_true semidet_false semidet_fail impure_true impure semipure\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"built_in\",\n            \"variants\": [\n                {\n                    \"begin\": \"<=>\"\n                },\n                {\n                    \"begin\": \"<=\",\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"=>\",\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"\\/\\\\\\\\\"\n                },\n                {\n                    \"begin\": \"\\\\\\\\\\\\\\/\"\n                }\n            ]\n        },\n        {\n            \"className\": \"built_in\",\n            \"variants\": [\n                {\n                    \"begin\": \":-\\\\|-->\"\n                },\n                {\n                    \"begin\": \"=\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"%\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"0'.\\\\|0[box][0-9a-fA-F]*\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                },\n                {\n                    \"className\": \"subst\",\n                    \"begin\": \"\\\\\\\\[abfnrtv]\\\\|\\\\\\\\x[0-9a-fA-F]*\\\\\\\\\\\\|%[-+# *.0-9]*[dioxXucsfeEgGp]\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \":-\"\n        },\n        {\n            \"begin\": \"\\\\.$\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/mipsasm.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"aliases\": [\n        \"mips\"\n    ],\n    \"lexemes\": \"\\\\.?[a-zA-Z]\\\\w*\",\n    \"keywords\": {\n        \"meta\": \".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .ltorg \",\n        \"built_in\": \"$0 $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14 $15 $16 $17 $18 $19 $20 $21 $22 $23 $24 $25 $26 $27 $28 $29 $30 $31 zero at v0 v1 a0 a1 a2 a3 a4 a5 a6 a7 t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 s0 s1 s2 s3 s4 s5 s6 s7 s8 k0 k1 gp sp fp ra $f0 $f1 $f2 $f2 $f4 $f5 $f6 $f7 $f8 $f9 $f10 $f11 $f12 $f13 $f14 $f15 $f16 $f17 $f18 $f19 $f20 $f21 $f22 $f23 $f24 $f25 $f26 $f27 $f28 $f29 $f30 $f31 Context Random EntryLo0 EntryLo1 Context PageMask Wired EntryHi HWREna BadVAddr Count Compare SR IntCtl SRSCtl SRSMap Cause EPC PRId EBase Config Config1 Config2 Config3 LLAddr Debug DEPC DESAVE CacheErr ECC ErrorEPC TagLo DataLo TagHi DataHi WatchLo WatchHi PerfCtl PerfCnt \"\n    },\n    \"contains\": [\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\\\b(addi?u?|andi?|b(al)?|beql?|bgez(al)?l?|bgtzl?|blezl?|bltz(al)?l?|bnel?|cl[oz]|divu?|ext|ins|j(al)?|jalr(.hb)?|jr(.hb)?|lbu?|lhu?|ll|lui|lw[lr]?|maddu?|mfhi|mflo|movn|movz|move|msubu?|mthi|mtlo|mul|multu?|nop|nor|ori?|rotrv?|sb|sc|se[bh]|sh|sllv?|slti?u?|srav?|srlv?|subu?|sw[lr]?|xori?|wsbh|abs.[sd]|add.[sd]|alnv.ps|bc1[ft]l?|c.(s?f|un|u?eq|[ou]lt|[ou]le|ngle?|seq|l[et]|ng[et]).[sd]|(ceil|floor|round|trunc).[lw].[sd]|cfc1|cvt.d.[lsw]|cvt.l.[dsw]|cvt.ps.s|cvt.s.[dlw]|cvt.s.p[lu]|cvt.w.[dls]|div.[ds]|ldx?c1|luxc1|lwx?c1|madd.[sd]|mfc1|mov[fntz]?.[ds]|msub.[sd]|mth?c1|mul.[ds]|neg.[ds]|nmadd.[ds]|nmsub.[ds]|p[lu][lu].ps|recip.fmt|r?sqrt.[ds]|sdx?c1|sub.[ds]|suxc1|swx?c1|break|cache|d?eret|[de]i|ehb|mfc0|mtc0|pause|prefx?|rdhwr|rdpgpr|sdbbp|ssnop|synci?|syscall|teqi?|tgei?u?|tlb(p|r|w[ir])|tlti?u?|tnei?|wait|wrpgpr)\",\n            \"end\": \"\\\\s\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"[;#](?!s*$)\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"[^\\\\\\\\]'\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"title\",\n            \"begin\": \"\\\\|\",\n            \"end\": \"\\\\|\",\n            \"illegal\": \"\\\\n\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"variants\": [\n                {\n                    \"begin\": \"0x[0-9a-f]+\"\n                },\n                {\n                    \"begin\": \"\\\\b-?\\\\d+\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"symbol\",\n            \"variants\": [\n                {\n                    \"begin\": \"^\\\\s*[a-z_\\\\.\\\\$][a-z0-9_\\\\.\\\\$]+:\"\n                },\n                {\n                    \"begin\": \"^\\\\s*[0-9]+:\"\n                },\n                {\n                    \"begin\": \"[0-9]+[bf]\"\n                }\n            ],\n            \"relevance\": 0\n        }\n    ],\n    \"illegal\": \"\\/\"\n}\n"
  },
  {
    "path": "includes/Highlight/languages/mizar.json",
    "content": "{\n    \"keywords\": \"environ vocabularies notations constructors definitions registrations theorems schemes requirements begin end definition registration cluster existence pred func defpred deffunc theorem proof let take assume then thus hence ex for st holds consider reconsider such that and in provided of as from be being by means equals implies iff redefine define now not or attr is mode suppose per cases set thesis contradiction scheme reserve struct correctness compatibility coherence symmetry assymetry reflexivity irreflexivity connectedness uniqueness commutativity idempotence involutiveness projectivity\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"::\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/mojolicious.json",
    "content": "{\n    \"subLanguage\": \"xml\",\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^__(END|DATA)__$\"\n        },\n        {\n            \"begin\": \"^\\\\s*%{1,2}={0,2}\",\n            \"end\": \"$\",\n            \"subLanguage\": \"perl\"\n        },\n        {\n            \"begin\": \"<%{1,2}={0,2}\",\n            \"end\": \"={0,1}%>\",\n            \"subLanguage\": \"perl\",\n            \"excludeBegin\": true,\n            \"excludeEnd\": true\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/monkey.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"keywords\": {\n        \"keyword\": \"public private property continue exit extern new try catch eachin not abstract final select case default const local global field end if then else elseif endif while wend repeat until forever for to step next return module inline throw import\",\n        \"built_in\": \"DebugLog DebugStop Error Print ACos ACosr ASin ASinr ATan ATan2 ATan2r ATanr Abs Abs Ceil Clamp Clamp Cos Cosr Exp Floor Log Max Max Min Min Pow Sgn Sgn Sin Sinr Sqrt Tan Tanr Seed PI HALFPI TWOPI\",\n        \"literal\": \"true false null and or shl shr mod\"\n    },\n    \"illegal\": \"\\\\\\/\\\\*\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#rem\",\n            \"end\": \"#end\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"'\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"function method\",\n            \"end\": \"[(=:]|$\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class interface\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"beginKeywords\": \"extends implements\"\n                },\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"built_in\",\n            \"begin\": \"\\\\b(self|super)\\\\b\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"\\\\s*#\",\n            \"end\": \"$\",\n            \"keywords\": {\n                \"meta-keyword\": \"if else elseif endif end then\"\n            }\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^\\\\s*strict\\\\b\"\n        },\n        {\n            \"beginKeywords\": \"alias\",\n            \"end\": \"=\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"relevance\": 0,\n            \"variants\": [\n                {\n                    \"begin\": \"[$][a-fA-F0-9]+\"\n                },\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/moonscript.json",
    "content": "{\n    \"aliases\": [\n        \"moon\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"if then not for in while do return else elseif break continue switch and or unless when class extends super local import export from using\",\n        \"literal\": \"true false nil\",\n        \"built_in\": \"_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table\"\n    },\n    \"illegal\": \"\\\\\\/\\\\*\",\n    \"contains\": [\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0,\n            \"starts\": {\n                \"end\": \"(\\\\s*\\/)?\",\n                \"relevance\": 0\n            }\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.1.variants.0.contains.0\"\n                        },\n                        {\n                            \"className\": \"subst\",\n                            \"begin\": \"#\\\\{\",\n                            \"end\": \"}\",\n                            \"keywords\": {\n                                \"$ref\": \"#keywords\"\n                            },\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.0\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.1\"\n                                },\n                                {\n                                    \"className\": \"built_in\",\n                                    \"begin\": \"@__[a-zA-Z]\\\\w*\"\n                                },\n                                {\n                                    \"begin\": \"@[a-zA-Z]\\\\w*\"\n                                },\n                                {\n                                    \"begin\": \"[a-zA-Z]\\\\w*\\\\\\\\[a-zA-Z]\\\\w*\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.1.variants.1.contains.1.contains.2\"\n        },\n        {\n            \"$ref\": \"#contains.1.variants.1.contains.1.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.1.variants.1.contains.1.contains.4\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"--\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"function\",\n            \"begin\": \"^\\\\s*[A-Za-z$_][0-9A-Za-z$_]*\\\\s*=\\\\s*(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>\",\n            \"end\": \"[-=]>\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[A-Za-z$_][0-9A-Za-z$_]*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\([^\\\\(]\",\n                    \"returnBegin\": true,\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\(\",\n                            \"end\": \"\\\\)\",\n                            \"keywords\": {\n                                \"$ref\": \"#keywords\"\n                            },\n                            \"contains\": [\n                                \"self\",\n                                {\n                                    \"$ref\": \"#contains.0\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.1\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.1.variants.1.contains.1.contains.2\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.1.variants.1.contains.1.contains.3\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.1.variants.1.contains.1.contains.4\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"begin\": \"[\\\\(,:=]\\\\s*\",\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"className\": \"function\",\n                    \"begin\": \"(\\\\(.*\\\\))?\\\\s*\\\\B[-=]>\",\n                    \"end\": \"[-=]>\",\n                    \"returnBegin\": true,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.6.contains.1\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class\",\n            \"end\": \"$\",\n            \"illegal\": \"[:=\\\"\\\\[\\\\]]\",\n            \"contains\": [\n                {\n                    \"beginKeywords\": \"extends\",\n                    \"endsWithParent\": true,\n                    \"illegal\": \"[:=\\\"\\\\[\\\\]]\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.6.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"name\",\n            \"begin\": \"[A-Za-z$_][0-9A-Za-z$_]*:\",\n            \"end\": \":\",\n            \"returnBegin\": true,\n            \"returnEnd\": true,\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/n1ql.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"contains\": [\n        {\n            \"beginKeywords\": \"build create index delete drop explain infer|10 insert merge prepare select update upsert|10\",\n            \"end\": \";\",\n            \"endsWithParent\": true,\n            \"keywords\": {\n                \"keyword\": \"all alter analyze and any array as asc begin between binary boolean break bucket build by call case cast cluster collate collection commit connect continue correlate cover create database dataset datastore declare decrement delete derived desc describe distinct do drop each element else end every except exclude execute exists explain fetch first flatten for force from function grant group gsi having if ignore ilike in include increment index infer inline inner insert intersect into is join key keys keyspace known last left let letting like limit lsm map mapping matched materialized merge minus namespace nest not number object offset on option or order outer over parse partition password path pool prepare primary private privilege procedure public raw realm reduce rename return returning revoke right role rollback satisfies schema select self semi set show some start statistics string system then to transaction trigger truncate under union unique unknown unnest unset update upsert use user using validate value valued values via view when where while with within work xor\",\n                \"literal\": \"true false null missing|5\",\n                \"built_in\": \"array_agg array_append array_concat array_contains array_count array_distinct array_ifnull array_length array_max array_min array_position array_prepend array_put array_range array_remove array_repeat array_replace array_reverse array_sort array_sum avg count max min sum greatest least ifmissing ifmissingornull ifnull missingif nullif ifinf ifnan ifnanorinf naninf neginfif posinfif clock_millis clock_str date_add_millis date_add_str date_diff_millis date_diff_str date_part_millis date_part_str date_trunc_millis date_trunc_str duration_to_str millis str_to_millis millis_to_str millis_to_utc millis_to_zone_name now_millis now_str str_to_duration str_to_utc str_to_zone_name decode_json encode_json encoded_size poly_length base64 base64_encode base64_decode meta uuid abs acos asin atan atan2 ceil cos degrees e exp ln log floor pi power radians random round sign sin sqrt tan trunc object_length object_names object_pairs object_inner_pairs object_values object_inner_values object_add object_put object_remove object_unwrap regexp_contains regexp_like regexp_position regexp_replace contains initcap length lower ltrim position repeat replace rtrim split substr title trim upper isarray isatom isboolean isnumber isobject isstring type toarray toatom toboolean tonumber toobject tostring\"\n            },\n            \"contains\": [\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        }\n                    ],\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.0.contains.0\"\n                        }\n                    ],\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"symbol\",\n                    \"begin\": \"`\",\n                    \"end\": \"`\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.0.contains.0\"\n                        }\n                    ],\n                    \"relevance\": 2\n                },\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"\\/\\\\*\",\n                    \"end\": \"\\\\*\\/\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.0.contains.4\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/nginx.json",
    "content": "{\n    \"aliases\": [\n        \"nginxconf\"\n    ],\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"begin\": \"[a-zA-Z_]\\\\w*\\\\s+{\",\n            \"returnBegin\": true,\n            \"end\": \"{\",\n            \"contains\": [\n                {\n                    \"className\": \"section\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"[a-zA-Z_]\\\\w*\\\\s\",\n            \"end\": \";|{\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"className\": \"attribute\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"starts\": {\n                        \"endsWithParent\": true,\n                        \"lexemes\": \"[a-z\\/_]+\",\n                        \"keywords\": {\n                            \"literal\": \"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll \\/dev\\/poll\"\n                        },\n                        \"relevance\": 0,\n                        \"illegal\": \"=>\",\n                        \"contains\": [\n                            {\n                                \"$ref\": \"#contains.0\"\n                            },\n                            {\n                                \"className\": \"string\",\n                                \"contains\": [\n                                    {\n                                        \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                        \"relevance\": 0\n                                    },\n                                    {\n                                        \"className\": \"variable\",\n                                        \"variants\": [\n                                            {\n                                                \"begin\": \"\\\\$\\\\d+\"\n                                            },\n                                            {\n                                                \"begin\": \"\\\\$\\\\{\",\n                                                \"end\": \"}\"\n                                            },\n                                            {\n                                                \"begin\": \"[\\\\$\\\\@][a-zA-Z_]\\\\w*\"\n                                            }\n                                        ]\n                                    }\n                                ],\n                                \"variants\": [\n                                    {\n                                        \"begin\": \"\\\"\",\n                                        \"end\": \"\\\"\"\n                                    },\n                                    {\n                                        \"begin\": \"'\",\n                                        \"end\": \"'\"\n                                    }\n                                ]\n                            },\n                            {\n                                \"begin\": \"([a-z]+):\\/\",\n                                \"end\": \"\\\\s\",\n                                \"endsWithParent\": true,\n                                \"excludeEnd\": true,\n                                \"contains\": [\n                                    {\n                                        \"$ref\": \"#contains.2.contains.0.starts.contains.1.contains.1\"\n                                    }\n                                ]\n                            },\n                            {\n                                \"className\": \"regexp\",\n                                \"contains\": [\n                                    {\n                                        \"$ref\": \"#contains.2.contains.0.starts.contains.1.contains.0\"\n                                    },\n                                    {\n                                        \"$ref\": \"#contains.2.contains.0.starts.contains.1.contains.1\"\n                                    }\n                                ],\n                                \"variants\": [\n                                    {\n                                        \"begin\": \"\\\\s\\\\^\",\n                                        \"end\": \"\\\\s|{|;\",\n                                        \"returnEnd\": true\n                                    },\n                                    {\n                                        \"begin\": \"~\\\\*?\\\\s+\",\n                                        \"end\": \"\\\\s|{|;\",\n                                        \"returnEnd\": true\n                                    },\n                                    {\n                                        \"begin\": \"\\\\*(\\\\.[a-z\\\\-]+)+\"\n                                    },\n                                    {\n                                        \"begin\": \"([a-z\\\\-]+\\\\.)+\\\\*\"\n                                    }\n                                ]\n                            },\n                            {\n                                \"className\": \"number\",\n                                \"begin\": \"\\\\b\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}\\\\.\\\\d{1,3}(:\\\\d{1,5})?\\\\b\"\n                            },\n                            {\n                                \"className\": \"number\",\n                                \"begin\": \"\\\\b\\\\d+[kKmMgGdshdwy]*\\\\b\",\n                                \"relevance\": 0\n                            },\n                            {\n                                \"$ref\": \"#contains.2.contains.0.starts.contains.1.contains.1\"\n                            }\n                        ]\n                    }\n                }\n            ],\n            \"relevance\": 0\n        }\n    ],\n    \"illegal\": \"[^\\\\s\\\\}]\"\n}\n"
  },
  {
    "path": "includes/Highlight/languages/nimrod.json",
    "content": "{\n    \"aliases\": [\n        \"nim\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"addr and as asm bind block break case cast const continue converter discard distinct div do elif else end enum except export finally for from generic if import in include interface is isnot iterator let macro method mixin mod nil not notin object of or out proc ptr raise ref return shl shr static template try tuple type using var when while with without xor yield\",\n        \"literal\": \"shared guarded stdin stdout stderr result true false\",\n        \"built_in\": \"int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 float float32 float64 bool char string cstring pointer expr stmt void auto any range array openarray varargs seq set clong culong cchar cschar cshort cint csize clonglong cfloat cdouble clongdouble cuchar cushort cuint culonglong cstringarray semistatic\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"begin\": \"{\\\\.\",\n            \"end\": \"\\\\.}\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"[a-zA-Z]\\\\w*\\\"\",\n            \"end\": \"\\\"\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\"\\\"\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"([a-zA-Z]\\\\w*)?\\\"\\\"\\\"\",\n            \"end\": \"\\\"\\\"\\\"\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \"\\\\b[A-Z]\\\\w+\\\\b\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"relevance\": 0,\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\b(0[xX][0-9a-fA-F][_0-9a-fA-F]*)('?[iIuU](8|16|32|64))?\"\n                },\n                {\n                    \"begin\": \"\\\\b(0o[0-7][_0-7]*)('?[iIuUfF](8|16|32|64))?\"\n                },\n                {\n                    \"begin\": \"\\\\b(0(b|B)[01][_01]*)('?[iIuUfF](8|16|32|64))?\"\n                },\n                {\n                    \"begin\": \"\\\\b(\\\\d[_\\\\d]*)('?[iIuUfF](8|16|32|64))?\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/nix.json",
    "content": "{\n    \"aliases\": [\n        \"nixos\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"rec with let in inherit assert if else then\",\n        \"literal\": \"true false or and null\",\n        \"built_in\": \"import abort baseNameOf dirOf isNull builtins map removeAttrs throw toString derivation\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"contains\": [\n                {\n                    \"className\": \"subst\",\n                    \"begin\": \"\\\\$\\\\{\",\n                    \"end\": \"}\",\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"contains\": {\n                        \"$ref\": \"#contains\"\n                    }\n                }\n            ],\n            \"variants\": [\n                {\n                    \"begin\": \"''\",\n                    \"end\": \"''\"\n                },\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"[a-zA-Z0-9\\\\-_]+(\\\\s*=)\",\n            \"returnBegin\": true,\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"className\": \"attr\",\n                    \"begin\": \"\\\\S+\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/nsis.json",
    "content": "{\n    \"case_insensitive\": false,\n    \"keywords\": {\n        \"keyword\": \"Abort AddBrandingImage AddSize AllowRootDirInstall AllowSkipFiles AutoCloseWindow BGFont BGGradient BrandingText BringToFront Call CallInstDLL Caption ChangeUI CheckBitmap ClearErrors CompletedText ComponentText CopyFiles CRCCheck CreateDirectory CreateFont CreateShortCut Delete DeleteINISec DeleteINIStr DeleteRegKey DeleteRegValue DetailPrint DetailsButtonText DirText DirVar DirVerify EnableWindow EnumRegKey EnumRegValue Exch Exec ExecShell ExecShellWait ExecWait ExpandEnvStrings File FileBufSize FileClose FileErrorText FileOpen FileRead FileReadByte FileReadUTF16LE FileReadWord FileSeek FileWrite FileWriteByte FileWriteUTF16LE FileWriteWord FindClose FindFirst FindNext FindWindow FlushINI FunctionEnd GetCurInstType GetCurrentAddress GetDlgItem GetDLLVersion GetDLLVersionLocal GetErrorLevel GetFileTime GetFileTimeLocal GetFullPathName GetFunctionAddress GetInstDirError GetLabelAddress GetTempFileName Goto HideWindow Icon IfAbort IfErrors IfFileExists IfRebootFlag IfSilent InitPluginsDir InstallButtonText InstallColors InstallDir InstallDirRegKey InstProgressFlags InstType InstTypeGetText InstTypeSetText Int64Cmp Int64CmpU Int64Fmt IntCmp IntCmpU IntFmt IntOp IntPtrCmp IntPtrCmpU IntPtrOp IsWindow LangString LicenseBkColor LicenseData LicenseForceSelection LicenseLangString LicenseText LoadLanguageFile LockWindow LogSet LogText ManifestDPIAware ManifestSupportedOS MessageBox MiscButtonText Name Nop OutFile Page PageCallbacks PageExEnd Pop Push Quit ReadEnvStr ReadINIStr ReadRegDWORD ReadRegStr Reboot RegDLL Rename RequestExecutionLevel ReserveFile Return RMDir SearchPath SectionEnd SectionGetFlags SectionGetInstTypes SectionGetSize SectionGetText SectionGroupEnd SectionIn SectionSetFlags SectionSetInstTypes SectionSetSize SectionSetText SendMessage SetAutoClose SetBrandingImage SetCompress SetCompressor SetCompressorDictSize SetCtlColors SetCurInstType SetDatablockOptimize SetDateSave SetDetailsPrint SetDetailsView SetErrorLevel SetErrors SetFileAttributes SetFont SetOutPath SetOverwrite SetRebootFlag SetRegView SetShellVarContext SetSilent ShowInstDetails ShowUninstDetails ShowWindow SilentInstall SilentUnInstall Sleep SpaceTexts StrCmp StrCmpS StrCpy StrLen SubCaption Unicode UninstallButtonText UninstallCaption UninstallIcon UninstallSubCaption UninstallText UninstPage UnRegDLL Var VIAddVersionKey VIFileVersion VIProductVersion WindowIcon WriteINIStr WriteRegBin WriteRegDWORD WriteRegExpandStr WriteRegMultiStr WriteRegNone WriteRegStr WriteUninstaller XPStyle\",\n        \"literal\": \"admin all auto both bottom bzip2 colored components current custom directory false force hide highest ifdiff ifnewer instfiles lastused leave left license listonly lzma nevershow none normal notset off on open print right show silent silentlog smooth textonly top true try un.components un.custom un.directory un.instfiles un.license uninstConfirm user Win10 Win7 Win8 WinVista zlib\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \";\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"Function PageEx Section SectionGroup\",\n            \"end\": \"$\"\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\"\n                },\n                {\n                    \"begin\": \"'\",\n                    \"end\": \"'\"\n                },\n                {\n                    \"begin\": \"`\",\n                    \"end\": \"`\"\n                }\n            ],\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"className\": \"meta\",\n                    \"begin\": \"\\\\$(\\\\\\\\[nrt]|\\\\$)\"\n                },\n                {\n                    \"className\": \"variable\",\n                    \"begin\": \"\\\\$(ADMINTOOLS|APPDATA|CDBURN_AREA|CMDLINE|COMMONFILES32|COMMONFILES64|COMMONFILES|COOKIES|DESKTOP|DOCUMENTS|EXEDIR|EXEFILE|EXEPATH|FAVORITES|FONTS|HISTORY|HWNDPARENT|INSTDIR|INTERNET_CACHE|LANGUAGE|LOCALAPPDATA|MUSIC|NETHOOD|OUTDIR|PICTURES|PLUGINSDIR|PRINTHOOD|PROFILE|PROGRAMFILES32|PROGRAMFILES64|PROGRAMFILES|QUICKLAUNCH|RECENT|RESOURCES_LOCALIZED|RESOURCES|SENDTO|SMPROGRAMS|SMSTARTUP|STARTMENU|SYSDIR|TEMP|TEMPLATES|VIDEOS|WINDIR)\"\n                },\n                {\n                    \"className\": \"variable\",\n                    \"begin\": \"\\\\$+{[\\\\w\\\\.:-]+}\"\n                },\n                {\n                    \"className\": \"variable\",\n                    \"begin\": \"\\\\$+\\\\w+\",\n                    \"illegal\": \"\\\\(\\\\){}\"\n                },\n                {\n                    \"className\": \"variable\",\n                    \"begin\": \"\\\\$+\\\\([\\\\w\\\\^\\\\.:-]+\\\\)\"\n                }\n            ]\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\\\!(addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|searchparse|searchreplace|system|tempfile|undef|verbose|warning)\"\n        },\n        {\n            \"$ref\": \"#contains.4.contains.2\"\n        },\n        {\n            \"$ref\": \"#contains.4.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.4.contains.4\"\n        },\n        {\n            \"className\": \"params\",\n            \"begin\": \"(ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY)\"\n        },\n        {\n            \"className\": \"class\",\n            \"begin\": \"\\\\w+\\\\:\\\\:\\\\w+\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/objectivec.json",
    "content": "{\n    \"aliases\": [\n        \"mm\",\n        \"objc\",\n        \"obj-c\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN\",\n        \"literal\": \"false true FALSE TRUE nil YES NO NULL\",\n        \"built_in\": \"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once\"\n    },\n    \"lexemes\": \"[a-zA-Z@][a-zA-Z0-9_]*\",\n    \"illegal\": \"<\\/\",\n    \"contains\": [\n        {\n            \"className\": \"built_in\",\n            \"begin\": \"\\\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\\\w+\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.4.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"begin\": \"@\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.4.contains.0\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"#\\\\s*[a-z]+\\\\b\",\n            \"end\": \"$\",\n            \"keywords\": {\n                \"meta-keyword\": \"if else elif endif define undef warning error line pragma ifdef ifndef include\"\n            },\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\\\\\n\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"meta-string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": {\n                        \"$ref\": \"#contains.4.contains\"\n                    }\n                },\n                {\n                    \"className\": \"meta-string\",\n                    \"begin\": \"<.*?>\",\n                    \"end\": \"$\",\n                    \"illegal\": \"\\\\n\"\n                },\n                {\n                    \"$ref\": \"#contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.2\"\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"begin\": \"(@interface|@class|@protocol|@implementation)\\\\b\",\n            \"end\": \"({|$)\",\n            \"excludeEnd\": true,\n            \"keywords\": \"@interface @class @protocol @implementation\",\n            \"lexemes\": \"[a-zA-Z@][a-zA-Z0-9_]*\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"begin\": \"\\\\.[a-zA-Z_]\\\\w*\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/ocaml.json",
    "content": "{\n    \"aliases\": [\n        \"ml\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value\",\n        \"built_in\": \"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref\",\n        \"literal\": \"true false\"\n    },\n    \"illegal\": \"\\\\\\/\\\\\\/|>>\",\n    \"lexemes\": \"[a-z_]\\\\w*!?\",\n    \"contains\": [\n        {\n            \"className\": \"literal\",\n            \"begin\": \"\\\\[(\\\\|\\\\|)?\\\\]|\\\\(\\\\)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\(\\\\*\",\n            \"end\": \"\\\\*\\\\)\",\n            \"contains\": [\n                \"self\",\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"'[A-Za-z_](?!')[\\\\w']*\"\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \"`[A-Z][\\\\w']*\"\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \"\\\\b[A-Z][\\\\w']*\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"[a-z_]\\\\w*'[\\\\w']*\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": null,\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"[-=]>\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/openscad.json",
    "content": "{\n    \"aliases\": [\n        \"scad\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"function module include use for intersection_for if else \\\\%\",\n        \"literal\": \"false true PI undef\",\n        \"built_in\": \"circle square polygon text sphere cube cylinder polyhedron translate rotate scale resize mirror multmatrix color offset hull minkowski union difference intersection abs sign sin cos tan acos asin atan atan2 floor round ceil ln log pow sqrt exp rands min max concat lookup str chr search version version_num norm cross parent_module echo import import_dxf dxf_linear_extrude linear_extrude rotate_extrude surface projection render children dxf_cross dxf_dim let assign\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?(e-?\\\\d+)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"meta\",\n            \"keywords\": {\n                \"meta-keyword\": \"include use\"\n            },\n            \"begin\": \"include|use <\",\n            \"end\": \">\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": null,\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\\\$(f[asn]|t|vp[rtd]|children)\"\n        },\n        {\n            \"begin\": \"[*!#%]\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"module function\",\n            \"end\": \"\\\\=|\\\\{\",\n            \"contains\": [\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"contains\": [\n                        \"self\",\n                        {\n                            \"$ref\": \"#contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.4\"\n                        },\n                        {\n                            \"$ref\": \"#contains.5\"\n                        },\n                        {\n                            \"className\": \"literal\",\n                            \"begin\": \"false|true|PI|undef\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/oxygene.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"lexemes\": \"\\\\.?\\\\w+\",\n    \"keywords\": \"abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained\",\n    \"illegal\": \"(\\\"|\\\\$[G-Zg-z]|\\\\\\/\\\\*|<\\/|=>|->)\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"{\",\n            \"end\": \"}\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\(\\\\*\",\n            \"end\": \"\\\\*\\\\)\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"contains\": [\n                {\n                    \"begin\": \"''\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"(#\\\\d+)+\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"function constructor destructor procedure method\",\n            \"end\": \"[:;]\",\n            \"keywords\": \"function constructor|10 destructor|10 procedure|10 method|10\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"keywords\": \"abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.3\"\n                        },\n                        {\n                            \"$ref\": \"#contains.4\"\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.1\"\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"begin\": \"=\\\\bclass\\\\b\",\n            \"end\": \"end;\",\n            \"keywords\": \"abstract add and array as asc aspect assembly async begin break block by case class concat const copy constructor continue create default delegate desc distinct div do downto dynamic each else empty end ensure enum equals event except exit extension external false final finalize finalizer finally flags for forward from function future global group has if implementation implements implies in index inherited inline interface into invariants is iterator join locked locking loop matching method mod module namespace nested new nil not notify nullable of old on operator or order out override parallel params partial pinned private procedure property protected public queryable raise read readonly record reintroduce remove repeat require result reverse sealed select self sequence set shl shr skip static step soft take then to true try tuple type union unit unsafe until uses using var virtual raises volatile where while with write xor yield await mapped deprecated stdcall cdecl pascal register safecall overload library platform reference packed strict published autoreleasepool selector strong weak unretained\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.3\"\n                },\n                {\n                    \"$ref\": \"#contains.4\"\n                },\n                {\n                    \"$ref\": \"#contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.2\"\n                },\n                {\n                    \"$ref\": \"#contains.6\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/parser3.json",
    "content": "{\n    \"subLanguage\": \"xml\",\n    \"relevance\": 0,\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"^#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\^rem{\",\n            \"end\": \"}\",\n            \"contains\": [\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"{\",\n                    \"end\": \"}\",\n                    \"contains\": [\n                        \"self\",\n                        {\n                            \"$ref\": \"#contains.0.contains.0\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^@(?:BASE|USE|CLASS|OPTIONS)$\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"title\",\n            \"begin\": \"@[\\\\w\\\\-]+\\\\[[\\\\w^;\\\\-]*\\\\](?:\\\\[[\\\\w^;\\\\-]*\\\\])?(?:.*)$\"\n        },\n        {\n            \"className\": \"variable\",\n            \"begin\": \"\\\\$\\\\{?[\\\\w\\\\-\\\\.\\\\:]+\\\\}?\"\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\\\^[\\\\w\\\\-\\\\.\\\\:]+\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\^#[0-9a-fA-F]+\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/perl.json",
    "content": "{\n    \"aliases\": [\n        \"pl\",\n        \"pm\"\n    ],\n    \"lexemes\": \"[\\\\w\\\\.]+\",\n    \"keywords\": \"getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when\",\n    \"contains\": [\n        {\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\$\\\\d\"\n                },\n                {\n                    \"begin\": \"[\\\\$%@](\\\\^\\\\w\\\\b|#\\\\w+(::\\\\w+)*|{\\\\w+}|\\\\w+(::\\\\w*)*)\"\n                },\n                {\n                    \"begin\": \"[\\\\$%@][^\\\\s\\\\w{]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"^\\\\=\\\\w\",\n            \"end\": \"\\\\=cut\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"endsWithParent\": true\n        },\n        {\n            \"begin\": \"->{\",\n            \"end\": \"}\",\n            \"contains\": {\n                \"$ref\": \"#contains\"\n            }\n        },\n        {\n            \"className\": \"string\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"subst\",\n                    \"begin\": \"[$@]\\\\{\",\n                    \"end\": \"\\\\}\",\n                    \"keywords\": \"getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when\",\n                    \"contains\": {\n                        \"$ref\": \"#contains\"\n                    }\n                },\n                {\n                    \"$ref\": \"#contains.0\"\n                }\n            ],\n            \"variants\": [\n                {\n                    \"begin\": \"q[qwxr]?\\\\s*\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"relevance\": 5\n                },\n                {\n                    \"begin\": \"q[qwxr]?\\\\s*\\\\[\",\n                    \"end\": \"\\\\]\",\n                    \"relevance\": 5\n                },\n                {\n                    \"begin\": \"q[qwxr]?\\\\s*\\\\{\",\n                    \"end\": \"\\\\}\",\n                    \"relevance\": 5\n                },\n                {\n                    \"begin\": \"q[qwxr]?\\\\s*\\\\|\",\n                    \"end\": \"\\\\|\",\n                    \"relevance\": 5\n                },\n                {\n                    \"begin\": \"q[qwxr]?\\\\s*\\\\<\",\n                    \"end\": \"\\\\>\",\n                    \"relevance\": 5\n                },\n                {\n                    \"begin\": \"qw\\\\s+q\",\n                    \"end\": \"q\",\n                    \"relevance\": 5\n                },\n                {\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.4.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\"\n                },\n                {\n                    \"begin\": \"`\",\n                    \"end\": \"`\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.4.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"{\\\\w+}\",\n                    \"contains\": [],\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"-?\\\\w+\\\\s*\\\\=\\\\>\",\n                    \"contains\": [],\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"(\\\\\\/\\\\\\/|!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|\\/=|\\/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~|\\\\b(split|return|print|reverse|grep)\\\\b)\\\\s*\",\n            \"keywords\": \"split return print reverse grep\",\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1\"\n                },\n                {\n                    \"className\": \"regexp\",\n                    \"begin\": \"(s|tr|y)\\/(\\\\\\\\.|[^\\/])*\\/(\\\\\\\\.|[^\\/])*\\/[a-z]*\",\n                    \"relevance\": 10\n                },\n                {\n                    \"className\": \"regexp\",\n                    \"begin\": \"(m|qr)?\\/\",\n                    \"end\": \"\\/[a-z]*\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.4.contains.0\"\n                        }\n                    ],\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"sub\",\n            \"end\": \"(\\\\s*\\\\(.*?\\\\))?[;{]\",\n            \"excludeEnd\": true,\n            \"relevance\": 5,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"begin\": \"-\\\\w\\\\b\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"^__DATA__$\",\n            \"end\": \"^__END__$\",\n            \"subLanguage\": \"mojolicious\",\n            \"contains\": [\n                {\n                    \"begin\": \"^@@.*\",\n                    \"end\": \"$\",\n                    \"className\": \"comment\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/pf.json",
    "content": "{\n    \"aliases\": [\n        \"pf.conf\"\n    ],\n    \"lexemes\": \"[a-z0-9_<>-]+\",\n    \"keywords\": {\n        \"built_in\": \"block match pass load anchor|5 antispoof|10 set table\",\n        \"keyword\": \"in out log quick on rdomain inet inet6 proto from port os to routeallow-opts divert-packet divert-reply divert-to flags group icmp-typeicmp6-type label once probability recieved-on rtable prio queuetos tag tagged user keep fragment for os dropaf-to|10 binat-to|10 nat-to|10 rdr-to|10 bitmask least-stats random round-robinsource-hash static-portdup-to reply-to route-toparent bandwidth default min max qlimitblock-policy debug fingerprints hostid limit loginterface optimizationreassemble ruleset-optimization basic none profile skip state-defaultsstate-policy timeoutconst counters persistno modulate synproxy state|5 floating if-bound no-sync pflow|10 sloppysource-track global rule max-src-nodes max-src-states max-src-connmax-src-conn-rate overload flushscrub|5 max-mss min-ttl no-df|10 random-id\",\n        \"literal\": \"all any no-route self urpf-failed egress|5 unknown\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"variable\",\n            \"begin\": \"\\\\$[\\\\w\\\\d#@][\\\\w\\\\d_]*\"\n        },\n        {\n            \"className\": \"variable\",\n            \"begin\": \"<(?!\\\\\\/)\",\n            \"end\": \">\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/pgsql.json",
    "content": "{\n    \"aliases\": [\n        \"postgres\",\n        \"postgresql\"\n    ],\n    \"case_insensitive\": true,\n    \"keywords\": {\n        \"keyword\": \"ABORT ALTER ANALYZE BEGIN CALL CHECKPOINT|10 CLOSE CLUSTER COMMENT COMMIT COPY CREATE DEALLOCATE DECLARE DELETE DISCARD DO DROP END EXECUTE EXPLAIN FETCH GRANT IMPORT INSERT LISTEN LOAD LOCK MOVE NOTIFY PREPARE REASSIGN|10 REFRESH REINDEX RELEASE RESET REVOKE ROLLBACK SAVEPOINT SECURITY SELECT SET SHOW START TRUNCATE UNLISTEN|10 UPDATE VACUUM|10 VALUES AGGREGATE COLLATION CONVERSION|10 DATABASE DEFAULT PRIVILEGES DOMAIN TRIGGER EXTENSION FOREIGN WRAPPER|10 TABLE FUNCTION GROUP LANGUAGE LARGE OBJECT MATERIALIZED VIEW OPERATOR CLASS FAMILY POLICY PUBLICATION|10 ROLE RULE SCHEMA SEQUENCE SERVER STATISTICS SUBSCRIPTION SYSTEM TABLESPACE CONFIGURATION DICTIONARY PARSER TEMPLATE TYPE USER MAPPING PREPARED ACCESS METHOD CAST AS TRANSFORM TRANSACTION OWNED TO INTO SESSION AUTHORIZATION INDEX PROCEDURE ASSERTION ALL ANALYSE AND ANY ARRAY ASC ASYMMETRIC|10 BOTH CASE CHECK COLLATE COLUMN CONCURRENTLY|10 CONSTRAINT CROSS DEFERRABLE RANGE DESC DISTINCT ELSE EXCEPT FOR FREEZE|10 FROM FULL HAVING ILIKE IN INITIALLY INNER INTERSECT IS ISNULL JOIN LATERAL LEADING LIKE LIMIT NATURAL NOT NOTNULL NULL OFFSET ON ONLY OR ORDER OUTER OVERLAPS PLACING PRIMARY REFERENCES RETURNING SIMILAR SOME SYMMETRIC TABLESAMPLE THEN TRAILING UNION UNIQUE USING VARIADIC|10 VERBOSE WHEN WHERE WINDOW WITH BY RETURNS INOUT OUT SETOF|10 IF STRICT CURRENT CONTINUE OWNER LOCATION OVER PARTITION WITHIN BETWEEN ESCAPE EXTERNAL INVOKER DEFINER WORK RENAME VERSION CONNECTION CONNECT TABLES TEMP TEMPORARY FUNCTIONS SEQUENCES TYPES SCHEMAS OPTION CASCADE RESTRICT ADD ADMIN EXISTS VALID VALIDATE ENABLE DISABLE REPLICA|10 ALWAYS PASSING COLUMNS PATH REF VALUE OVERRIDING IMMUTABLE STABLE VOLATILE BEFORE AFTER EACH ROW PROCEDURAL ROUTINE NO HANDLER VALIDATOR OPTIONS STORAGE OIDS|10 WITHOUT INHERIT DEPENDS CALLED INPUT LEAKPROOF|10 COST ROWS NOWAIT SEARCH UNTIL ENCRYPTED|10 PASSWORD CONFLICT|10 INSTEAD INHERITS CHARACTERISTICS WRITE CURSOR ALSO STATEMENT SHARE EXCLUSIVE INLINE ISOLATION REPEATABLE READ COMMITTED SERIALIZABLE UNCOMMITTED LOCAL GLOBAL SQL PROCEDURES RECURSIVE SNAPSHOT ROLLUP CUBE TRUSTED|10 INCLUDE FOLLOWING PRECEDING UNBOUNDED RANGE GROUPS UNENCRYPTED|10 SYSID FORMAT DELIMITER HEADER QUOTE ENCODING FILTER OFF FORCE_QUOTE FORCE_NOT_NULL FORCE_NULL COSTS BUFFERS TIMING SUMMARY DISABLE_PAGE_SKIPPING RESTART CYCLE GENERATED IDENTITY DEFERRED IMMEDIATE LEVEL LOGGED UNLOGGED OF NOTHING NONE EXCLUDE ATTRIBUTE USAGE ROUTINES TRUE FALSE NAN INFINITY ALIAS BEGIN CONSTANT DECLARE END EXCEPTION RETURN PERFORM|10 RAISE GET DIAGNOSTICS STACKED|10 FOREACH LOOP ELSIF EXIT WHILE REVERSE SLICE DEBUG LOG INFO NOTICE WARNING ASSERT OPEN SUPERUSER NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE INHERIT NOINHERIT LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS \",\n        \"built_in\": \"CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURRENT_CATALOG|10 CURRENT_DATE LOCALTIME LOCALTIMESTAMP CURRENT_ROLE|10 CURRENT_SCHEMA|10 SESSION_USER PUBLIC FOUND NEW OLD TG_NAME|10 TG_WHEN|10 TG_LEVEL|10 TG_OP|10 TG_RELID|10 TG_RELNAME|10 TG_TABLE_NAME|10 TG_TABLE_SCHEMA|10 TG_NARGS|10 TG_ARGV|10 TG_EVENT|10 TG_TAG|10 ROW_COUNT RESULT_OID|10 PG_CONTEXT|10 RETURNED_SQLSTATE COLUMN_NAME CONSTRAINT_NAME PG_DATATYPE_NAME|10 MESSAGE_TEXT TABLE_NAME SCHEMA_NAME PG_EXCEPTION_DETAIL|10 PG_EXCEPTION_HINT|10 PG_EXCEPTION_CONTEXT|10 SQLSTATE SQLERRM|10 SUCCESSFUL_COMPLETION WARNING DYNAMIC_RESULT_SETS_RETURNED IMPLICIT_ZERO_BIT_PADDING NULL_VALUE_ELIMINATED_IN_SET_FUNCTION PRIVILEGE_NOT_GRANTED PRIVILEGE_NOT_REVOKED STRING_DATA_RIGHT_TRUNCATION DEPRECATED_FEATURE NO_DATA NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED SQL_STATEMENT_NOT_YET_COMPLETE CONNECTION_EXCEPTION CONNECTION_DOES_NOT_EXIST CONNECTION_FAILURE SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION TRANSACTION_RESOLUTION_UNKNOWN PROTOCOL_VIOLATION TRIGGERED_ACTION_EXCEPTION FEATURE_NOT_SUPPORTED INVALID_TRANSACTION_INITIATION LOCATOR_EXCEPTION INVALID_LOCATOR_SPECIFICATION INVALID_GRANTOR INVALID_GRANT_OPERATION INVALID_ROLE_SPECIFICATION DIAGNOSTICS_EXCEPTION STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER CASE_NOT_FOUND CARDINALITY_VIOLATION DATA_EXCEPTION ARRAY_SUBSCRIPT_ERROR CHARACTER_NOT_IN_REPERTOIRE DATETIME_FIELD_OVERFLOW DIVISION_BY_ZERO ERROR_IN_ASSIGNMENT ESCAPE_CHARACTER_CONFLICT INDICATOR_OVERFLOW INTERVAL_FIELD_OVERFLOW INVALID_ARGUMENT_FOR_LOGARITHM INVALID_ARGUMENT_FOR_NTILE_FUNCTION INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION INVALID_ARGUMENT_FOR_POWER_FUNCTION INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION INVALID_CHARACTER_VALUE_FOR_CAST INVALID_DATETIME_FORMAT INVALID_ESCAPE_CHARACTER INVALID_ESCAPE_OCTET INVALID_ESCAPE_SEQUENCE NONSTANDARD_USE_OF_ESCAPE_CHARACTER INVALID_INDICATOR_PARAMETER_VALUE INVALID_PARAMETER_VALUE INVALID_REGULAR_EXPRESSION INVALID_ROW_COUNT_IN_LIMIT_CLAUSE INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE INVALID_TABLESAMPLE_ARGUMENT INVALID_TABLESAMPLE_REPEAT INVALID_TIME_ZONE_DISPLACEMENT_VALUE INVALID_USE_OF_ESCAPE_CHARACTER MOST_SPECIFIC_TYPE_MISMATCH NULL_VALUE_NOT_ALLOWED NULL_VALUE_NO_INDICATOR_PARAMETER NUMERIC_VALUE_OUT_OF_RANGE SEQUENCE_GENERATOR_LIMIT_EXCEEDED STRING_DATA_LENGTH_MISMATCH STRING_DATA_RIGHT_TRUNCATION SUBSTRING_ERROR TRIM_ERROR UNTERMINATED_C_STRING ZERO_LENGTH_CHARACTER_STRING FLOATING_POINT_EXCEPTION INVALID_TEXT_REPRESENTATION INVALID_BINARY_REPRESENTATION BAD_COPY_FILE_FORMAT UNTRANSLATABLE_CHARACTER NOT_AN_XML_DOCUMENT INVALID_XML_DOCUMENT INVALID_XML_CONTENT INVALID_XML_COMMENT INVALID_XML_PROCESSING_INSTRUCTION INTEGRITY_CONSTRAINT_VIOLATION RESTRICT_VIOLATION NOT_NULL_VIOLATION FOREIGN_KEY_VIOLATION UNIQUE_VIOLATION CHECK_VIOLATION EXCLUSION_VIOLATION INVALID_CURSOR_STATE INVALID_TRANSACTION_STATE ACTIVE_SQL_TRANSACTION BRANCH_TRANSACTION_ALREADY_ACTIVE HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION READ_ONLY_SQL_TRANSACTION SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED NO_ACTIVE_SQL_TRANSACTION IN_FAILED_SQL_TRANSACTION IDLE_IN_TRANSACTION_SESSION_TIMEOUT INVALID_SQL_STATEMENT_NAME TRIGGERED_DATA_CHANGE_VIOLATION INVALID_AUTHORIZATION_SPECIFICATION INVALID_PASSWORD DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST DEPENDENT_OBJECTS_STILL_EXIST INVALID_TRANSACTION_TERMINATION SQL_ROUTINE_EXCEPTION FUNCTION_EXECUTED_NO_RETURN_STATEMENT MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED INVALID_CURSOR_NAME EXTERNAL_ROUTINE_EXCEPTION CONTAINING_SQL_NOT_PERMITTED MODIFYING_SQL_DATA_NOT_PERMITTED PROHIBITED_SQL_STATEMENT_ATTEMPTED READING_SQL_DATA_NOT_PERMITTED EXTERNAL_ROUTINE_INVOCATION_EXCEPTION INVALID_SQLSTATE_RETURNED NULL_VALUE_NOT_ALLOWED TRIGGER_PROTOCOL_VIOLATED SRF_PROTOCOL_VIOLATED EVENT_TRIGGER_PROTOCOL_VIOLATED SAVEPOINT_EXCEPTION INVALID_SAVEPOINT_SPECIFICATION INVALID_CATALOG_NAME INVALID_SCHEMA_NAME TRANSACTION_ROLLBACK TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION SERIALIZATION_FAILURE STATEMENT_COMPLETION_UNKNOWN DEADLOCK_DETECTED SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION SYNTAX_ERROR INSUFFICIENT_PRIVILEGE CANNOT_COERCE GROUPING_ERROR WINDOWING_ERROR INVALID_RECURSION INVALID_FOREIGN_KEY INVALID_NAME NAME_TOO_LONG RESERVED_NAME DATATYPE_MISMATCH INDETERMINATE_DATATYPE COLLATION_MISMATCH INDETERMINATE_COLLATION WRONG_OBJECT_TYPE GENERATED_ALWAYS UNDEFINED_COLUMN UNDEFINED_FUNCTION UNDEFINED_TABLE UNDEFINED_PARAMETER UNDEFINED_OBJECT DUPLICATE_COLUMN DUPLICATE_CURSOR DUPLICATE_DATABASE DUPLICATE_FUNCTION DUPLICATE_PREPARED_STATEMENT DUPLICATE_SCHEMA DUPLICATE_TABLE DUPLICATE_ALIAS DUPLICATE_OBJECT AMBIGUOUS_COLUMN AMBIGUOUS_FUNCTION AMBIGUOUS_PARAMETER AMBIGUOUS_ALIAS INVALID_COLUMN_REFERENCE INVALID_COLUMN_DEFINITION INVALID_CURSOR_DEFINITION INVALID_DATABASE_DEFINITION INVALID_FUNCTION_DEFINITION INVALID_PREPARED_STATEMENT_DEFINITION INVALID_SCHEMA_DEFINITION INVALID_TABLE_DEFINITION INVALID_OBJECT_DEFINITION WITH_CHECK_OPTION_VIOLATION INSUFFICIENT_RESOURCES DISK_FULL OUT_OF_MEMORY TOO_MANY_CONNECTIONS CONFIGURATION_LIMIT_EXCEEDED PROGRAM_LIMIT_EXCEEDED STATEMENT_TOO_COMPLEX TOO_MANY_COLUMNS TOO_MANY_ARGUMENTS OBJECT_NOT_IN_PREREQUISITE_STATE OBJECT_IN_USE CANT_CHANGE_RUNTIME_PARAM LOCK_NOT_AVAILABLE OPERATOR_INTERVENTION QUERY_CANCELED ADMIN_SHUTDOWN CRASH_SHUTDOWN CANNOT_CONNECT_NOW DATABASE_DROPPED SYSTEM_ERROR IO_ERROR UNDEFINED_FILE DUPLICATE_FILE SNAPSHOT_TOO_OLD CONFIG_FILE_ERROR LOCK_FILE_EXISTS FDW_ERROR FDW_COLUMN_NAME_NOT_FOUND FDW_DYNAMIC_PARAMETER_VALUE_NEEDED FDW_FUNCTION_SEQUENCE_ERROR FDW_INCONSISTENT_DESCRIPTOR_INFORMATION FDW_INVALID_ATTRIBUTE_VALUE FDW_INVALID_COLUMN_NAME FDW_INVALID_COLUMN_NUMBER FDW_INVALID_DATA_TYPE FDW_INVALID_DATA_TYPE_DESCRIPTORS FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER FDW_INVALID_HANDLE FDW_INVALID_OPTION_INDEX FDW_INVALID_OPTION_NAME FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH FDW_INVALID_STRING_FORMAT FDW_INVALID_USE_OF_NULL_POINTER FDW_TOO_MANY_HANDLES FDW_OUT_OF_MEMORY FDW_NO_SCHEMAS FDW_OPTION_NAME_NOT_FOUND FDW_REPLY_HANDLE FDW_SCHEMA_NOT_FOUND FDW_TABLE_NOT_FOUND FDW_UNABLE_TO_CREATE_EXECUTION FDW_UNABLE_TO_CREATE_REPLY FDW_UNABLE_TO_ESTABLISH_CONNECTION PLPGSQL_ERROR RAISE_EXCEPTION NO_DATA_FOUND TOO_MANY_ROWS ASSERT_FAILURE INTERNAL_ERROR DATA_CORRUPTED INDEX_CORRUPTED \"\n    },\n    \"illegal\": \":==|\\\\W\\\\s*\\\\(\\\\*|(^|\\\\s)\\\\$[a-z]|{{|[a-z]:\\\\s*$|\\\\.\\\\.\\\\.|TO:|DO:\",\n    \"contains\": [\n        {\n            \"className\": \"keyword\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\bTEXT\\\\s*SEARCH\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(PRIMARY|FOREIGN|FOR(\\\\s+NO)?)\\\\s+KEY\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bPARALLEL\\\\s+(UNSAFE|RESTRICTED|SAFE)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bSTORAGE\\\\s+(PLAIN|EXTERNAL|EXTENDED|MAIN)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bMATCH\\\\s+(FULL|PARTIAL|SIMPLE)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bNULLS\\\\s+(FIRST|LAST)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bEVENT\\\\s+TRIGGER\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(MAPPING|OR)\\\\s+REPLACE\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(FROM|TO)\\\\s+(PROGRAM|STDIN|STDOUT)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(SHARE|EXCLUSIVE)\\\\s+MODE\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(LEFT|RIGHT)\\\\s+(OUTER\\\\s+)?JOIN\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(FETCH|MOVE)\\\\s+(NEXT|PRIOR|FIRST|LAST|ABSOLUTE|RELATIVE|FORWARD|BACKWARD)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bPRESERVE\\\\s+ROWS\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bDISCARD\\\\s+PLANS\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bREFERENCING\\\\s+(OLD|NEW)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bSKIP\\\\s+LOCKED\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bGROUPING\\\\s+SETS\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(BINARY|INSENSITIVE|SCROLL|NO\\\\s+SCROLL)\\\\s+(CURSOR|FOR)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(WITH|WITHOUT)\\\\s+HOLD\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bWITH\\\\s+(CASCADED|LOCAL)\\\\s+CHECK\\\\s+OPTION\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bEXCLUDE\\\\s+(TIES|NO\\\\s+OTHERS)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bFORMAT\\\\s+(TEXT|XML|JSON|YAML)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bSET\\\\s+((SESSION|LOCAL)\\\\s+)?NAMES\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bIS\\\\s+(NOT\\\\s+)?UNKNOWN\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bSECURITY\\\\s+LABEL\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bSTANDALONE\\\\s+(YES|NO|NO\\\\s+VALUE)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bWITH\\\\s+(NO\\\\s+)?DATA\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(FOREIGN|SET)\\\\s+DATA\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bSET\\\\s+(CATALOG|CONSTRAINTS)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(WITH|FOR)\\\\s+ORDINALITY\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bIS\\\\s+(NOT\\\\s+)?DOCUMENT\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bXML\\\\s+OPTION\\\\s+(DOCUMENT|CONTENT)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(STRIP|PRESERVE)\\\\s+WHITESPACE\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bNO\\\\s+(ACTION|MAXVALUE|MINVALUE)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bPARTITION\\\\s+BY\\\\s+(RANGE|LIST|HASH)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bAT\\\\s+TIME\\\\s+ZONE\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bGRANTED\\\\s+BY\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bRETURN\\\\s+(QUERY|NEXT)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(ATTACH|DETACH)\\\\s+PARTITION\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bFORCE\\\\s+ROW\\\\s+LEVEL\\\\s+SECURITY\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(INCLUDING|EXCLUDING)\\\\s+(COMMENTS|CONSTRAINTS|DEFAULTS|IDENTITY|INDEXES|STATISTICS|STORAGE|ALL)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bAS\\\\s+(ASSIGNMENT|IMPLICIT|PERMISSIVE|RESTRICTIVE|ENUM|RANGE)\\\\b\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"\\\\b(FORMAT|FAMILY|VERSION)\\\\s*\\\\(\"\n        },\n        {\n            \"begin\": \"\\\\bINCLUDE\\\\s*\\\\(\",\n            \"keywords\": \"INCLUDE\"\n        },\n        {\n            \"begin\": \"\\\\bRANGE(?!\\\\s*(BETWEEN|UNBOUNDED|CURRENT|[-0-9]+))\"\n        },\n        {\n            \"begin\": \"\\\\b(VERSION|OWNER|TEMPLATE|TABLESPACE|CONNECTION\\\\s+LIMIT|PROCEDURE|RESTRICT|JOIN|PARSER|COPY|START|END|COLLATION|INPUT|ANALYZE|STORAGE|LIKE|DEFAULT|DELIMITER|ENCODING|COLUMN|CONSTRAINT|TABLE|SCHEMA)\\\\s*=\"\n        },\n        {\n            \"begin\": \"\\\\b(PG_\\\\w+?|HAS_[A-Z_]+_PRIVILEGE)\\\\b\",\n            \"relevance\": 10\n        },\n        {\n            \"begin\": \"\\\\bEXTRACT\\\\s*\\\\(\",\n            \"end\": \"\\\\bFROM\\\\b\",\n            \"returnEnd\": true,\n            \"keywords\": {\n                \"type\": \"CENTURY DAY DECADE DOW DOY EPOCH HOUR ISODOW ISOYEAR MICROSECONDS MILLENNIUM MILLISECONDS MINUTE MONTH QUARTER SECOND TIMEZONE TIMEZONE_HOUR TIMEZONE_MINUTE WEEK YEAR\"\n            }\n        },\n        {\n            \"begin\": \"\\\\b(XMLELEMENT|XMLPI)\\\\s*\\\\(\\\\s*NAME\",\n            \"keywords\": {\n                \"keyword\": \"NAME\"\n            }\n        },\n        {\n            \"begin\": \"\\\\b(XMLPARSE|XMLSERIALIZE)\\\\s*\\\\(\\\\s*(DOCUMENT|CONTENT)\",\n            \"keywords\": {\n                \"keyword\": \"DOCUMENT CONTENT\"\n            }\n        },\n        {\n            \"beginKeywords\": \"CACHE INCREMENT MAXVALUE MINVALUE\",\n            \"end\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"returnEnd\": true,\n            \"keywords\": \"BY CACHE INCREMENT MAXVALUE MINVALUE\"\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \"\\\\b(WITH|WITHOUT)\\\\s+TIME\\\\s+ZONE\\\\b\"\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \"\\\\bINTERVAL\\\\s+(YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)(\\\\s+TO\\\\s+(MONTH|HOUR|MINUTE|SECOND))?\\\\b\"\n        },\n        {\n            \"begin\": \"\\\\bRETURNS\\\\s+(LANGUAGE_HANDLER|TRIGGER|EVENT_TRIGGER|FDW_HANDLER|INDEX_AM_HANDLER|TSM_HANDLER)\\\\b\",\n            \"keywords\": {\n                \"keyword\": \"RETURNS\",\n                \"type\": \"LANGUAGE_HANDLER TRIGGER EVENT_TRIGGER FDW_HANDLER INDEX_AM_HANDLER TSM_HANDLER\"\n            }\n        },\n        {\n            \"begin\": \"\\\\b(ARRAY_AGG|AVG|BIT_AND|BIT_OR|BOOL_AND|BOOL_OR|COUNT|EVERY|JSON_AGG|JSONB_AGG|JSON_OBJECT_AGG|JSONB_OBJECT_AGG|MAX|MIN|MODE|STRING_AGG|SUM|XMLAGG|CORR|COVAR_POP|COVAR_SAMP|REGR_AVGX|REGR_AVGY|REGR_COUNT|REGR_INTERCEPT|REGR_R2|REGR_SLOPE|REGR_SXX|REGR_SXY|REGR_SYY|STDDEV|STDDEV_POP|STDDEV_SAMP|VARIANCE|VAR_POP|VAR_SAMP|PERCENTILE_CONT|PERCENTILE_DISC|ROW_NUMBER|RANK|DENSE_RANK|PERCENT_RANK|CUME_DIST|NTILE|LAG|LEAD|FIRST_VALUE|LAST_VALUE|NTH_VALUE|NUM_NONNULLS|NUM_NULLS|ABS|CBRT|CEIL|CEILING|DEGREES|DIV|EXP|FLOOR|LN|LOG|MOD|PI|POWER|RADIANS|ROUND|SCALE|SIGN|SQRT|TRUNC|WIDTH_BUCKET|RANDOM|SETSEED|ACOS|ACOSD|ASIN|ASIND|ATAN|ATAND|ATAN2|ATAN2D|COS|COSD|COT|COTD|SIN|SIND|TAN|TAND|BIT_LENGTH|CHAR_LENGTH|CHARACTER_LENGTH|LOWER|OCTET_LENGTH|OVERLAY|POSITION|SUBSTRING|TREAT|TRIM|UPPER|ASCII|BTRIM|CHR|CONCAT|CONCAT_WS|CONVERT|CONVERT_FROM|CONVERT_TO|DECODE|ENCODE|INITCAPLEFT|LENGTH|LPAD|LTRIM|MD5|PARSE_IDENT|PG_CLIENT_ENCODING|QUOTE_IDENT|QUOTE_LITERAL|QUOTE_NULLABLE|REGEXP_MATCH|REGEXP_MATCHES|REGEXP_REPLACE|REGEXP_SPLIT_TO_ARRAY|REGEXP_SPLIT_TO_TABLE|REPEAT|REPLACE|REVERSE|RIGHT|RPAD|RTRIM|SPLIT_PART|STRPOS|SUBSTR|TO_ASCII|TO_HEX|TRANSLATE|OCTET_LENGTH|GET_BIT|GET_BYTE|SET_BIT|SET_BYTE|TO_CHAR|TO_DATE|TO_NUMBER|TO_TIMESTAMP|AGE|CLOCK_TIMESTAMP|DATE_PART|DATE_TRUNC|ISFINITE|JUSTIFY_DAYS|JUSTIFY_HOURS|JUSTIFY_INTERVAL|MAKE_DATE|MAKE_INTERVAL|MAKE_TIME|MAKE_TIMESTAMP|MAKE_TIMESTAMPTZ|NOW|STATEMENT_TIMESTAMP|TIMEOFDAY|TRANSACTION_TIMESTAMP|ENUM_FIRST|ENUM_LAST|ENUM_RANGE|AREA|CENTER|DIAMETER|HEIGHT|ISCLOSED|ISOPEN|NPOINTS|PCLOSE|POPEN|RADIUS|WIDTH|BOX|BOUND_BOX|CIRCLE|LINE|LSEG|PATH|POLYGON|ABBREV|BROADCAST|HOST|HOSTMASK|MASKLEN|NETMASK|NETWORK|SET_MASKLEN|TEXT|INET_SAME_FAMILYINET_MERGE|MACADDR8_SET7BIT|ARRAY_TO_TSVECTOR|GET_CURRENT_TS_CONFIG|NUMNODE|PLAINTO_TSQUERY|PHRASETO_TSQUERY|WEBSEARCH_TO_TSQUERY|QUERYTREE|SETWEIGHT|STRIP|TO_TSQUERY|TO_TSVECTOR|JSON_TO_TSVECTOR|JSONB_TO_TSVECTOR|TS_DELETE|TS_FILTER|TS_HEADLINE|TS_RANK|TS_RANK_CD|TS_REWRITE|TSQUERY_PHRASE|TSVECTOR_TO_ARRAY|TSVECTOR_UPDATE_TRIGGER|TSVECTOR_UPDATE_TRIGGER_COLUMN|XMLCOMMENT|XMLCONCAT|XMLELEMENT|XMLFOREST|XMLPI|XMLROOT|XMLEXISTS|XML_IS_WELL_FORMED|XML_IS_WELL_FORMED_DOCUMENT|XML_IS_WELL_FORMED_CONTENT|XPATH|XPATH_EXISTS|XMLTABLE|XMLNAMESPACES|TABLE_TO_XML|TABLE_TO_XMLSCHEMA|TABLE_TO_XML_AND_XMLSCHEMA|QUERY_TO_XML|QUERY_TO_XMLSCHEMA|QUERY_TO_XML_AND_XMLSCHEMA|CURSOR_TO_XML|CURSOR_TO_XMLSCHEMA|SCHEMA_TO_XML|SCHEMA_TO_XMLSCHEMA|SCHEMA_TO_XML_AND_XMLSCHEMA|DATABASE_TO_XML|DATABASE_TO_XMLSCHEMA|DATABASE_TO_XML_AND_XMLSCHEMA|XMLATTRIBUTES|TO_JSON|TO_JSONB|ARRAY_TO_JSON|ROW_TO_JSON|JSON_BUILD_ARRAY|JSONB_BUILD_ARRAY|JSON_BUILD_OBJECT|JSONB_BUILD_OBJECT|JSON_OBJECT|JSONB_OBJECT|JSON_ARRAY_LENGTH|JSONB_ARRAY_LENGTH|JSON_EACH|JSONB_EACH|JSON_EACH_TEXT|JSONB_EACH_TEXT|JSON_EXTRACT_PATH|JSONB_EXTRACT_PATH|JSON_OBJECT_KEYS|JSONB_OBJECT_KEYS|JSON_POPULATE_RECORD|JSONB_POPULATE_RECORD|JSON_POPULATE_RECORDSET|JSONB_POPULATE_RECORDSET|JSON_ARRAY_ELEMENTS|JSONB_ARRAY_ELEMENTS|JSON_ARRAY_ELEMENTS_TEXT|JSONB_ARRAY_ELEMENTS_TEXT|JSON_TYPEOF|JSONB_TYPEOF|JSON_TO_RECORD|JSONB_TO_RECORD|JSON_TO_RECORDSET|JSONB_TO_RECORDSET|JSON_STRIP_NULLS|JSONB_STRIP_NULLS|JSONB_SET|JSONB_INSERT|JSONB_PRETTY|CURRVAL|LASTVAL|NEXTVAL|SETVAL|COALESCE|NULLIF|GREATEST|LEAST|ARRAY_APPEND|ARRAY_CAT|ARRAY_NDIMS|ARRAY_DIMS|ARRAY_FILL|ARRAY_LENGTH|ARRAY_LOWER|ARRAY_POSITION|ARRAY_POSITIONS|ARRAY_PREPEND|ARRAY_REMOVE|ARRAY_REPLACE|ARRAY_TO_STRING|ARRAY_UPPER|CARDINALITY|STRING_TO_ARRAY|UNNEST|ISEMPTY|LOWER_INC|UPPER_INC|LOWER_INF|UPPER_INF|RANGE_MERGE|GENERATE_SERIES|GENERATE_SUBSCRIPTS|CURRENT_DATABASE|CURRENT_QUERY|CURRENT_SCHEMA|CURRENT_SCHEMAS|INET_CLIENT_ADDR|INET_CLIENT_PORT|INET_SERVER_ADDR|INET_SERVER_PORT|ROW_SECURITY_ACTIVE|FORMAT_TYPE|TO_REGCLASS|TO_REGPROC|TO_REGPROCEDURE|TO_REGOPER|TO_REGOPERATOR|TO_REGTYPE|TO_REGNAMESPACE|TO_REGROLE|COL_DESCRIPTION|OBJ_DESCRIPTION|SHOBJ_DESCRIPTION|TXID_CURRENT|TXID_CURRENT_IF_ASSIGNED|TXID_CURRENT_SNAPSHOT|TXID_SNAPSHOT_XIP|TXID_SNAPSHOT_XMAX|TXID_SNAPSHOT_XMIN|TXID_VISIBLE_IN_SNAPSHOT|TXID_STATUS|CURRENT_SETTING|SET_CONFIG|BRIN_SUMMARIZE_NEW_VALUES|BRIN_SUMMARIZE_RANGE|BRIN_DESUMMARIZE_RANGE|GIN_CLEAN_PENDING_LIST|SUPPRESS_REDUNDANT_UPDATES_TRIGGER|LO_FROM_BYTEA|LO_PUT|LO_GET|LO_CREAT|LO_CREATE|LO_UNLINK|LO_IMPORT|LO_EXPORT|LOREAD|LOWRITE|GROUPING|CAST)\\\\s*\\\\(\"\n        },\n        {\n            \"begin\": \"\\\\.(BIGINT|INT8|BIGSERIAL|SERIAL8|BIT|VARYING|VARBIT|BOOLEAN|BOOL|BOX|BYTEA|CHARACTER|CHAR|VARCHAR|CIDR|CIRCLE|DATE|DOUBLE|PRECISION|FLOAT8|FLOAT|INET|INTEGER|INT|INT4|INTERVAL|JSON|JSONB|LINE|LSEG|MACADDR|MACADDR8|MONEY|NUMERIC|DEC|DECIMAL|PATH|POINT|POLYGON|REAL|FLOAT4|SMALLINT|INT2|SMALLSERIAL|SERIAL2|SERIAL|SERIAL4|TEXT|TIME|ZONE|TIMETZ|TIMESTAMP|TIMESTAMPTZ|TSQUERY|TSVECTOR|TXID_SNAPSHOT|UUID|XML|NATIONAL|NCHAR|INT4RANGE|INT8RANGE|NUMRANGE|TSRANGE|TSTZRANGE|DATERANGE|ANYELEMENT|ANYARRAY|ANYNONARRAY|ANYENUM|ANYRANGE|CSTRING|INTERNAL|RECORD|PG_DDL_COMMAND|VOID|UNKNOWN|OPAQUE|REFCURSOR|NAME|OID|REGPROC|REGPROCEDURE|REGOPER|REGOPERATOR|REGCLASS|REGTYPE|REGROLE|REGNAMESPACE|REGCONFIG|REGDICTIONARY)\\\\b\"\n        },\n        {\n            \"begin\": \"\\\\b(BIGINT|INT8|BIGSERIAL|SERIAL8|BIT|VARYING|VARBIT|BOOLEAN|BOOL|BOX|BYTEA|CHARACTER|CHAR|VARCHAR|CIDR|CIRCLE|DATE|DOUBLE|PRECISION|FLOAT8|FLOAT|INET|INTEGER|INT|INT4|INTERVAL|JSON|JSONB|LINE|LSEG|MACADDR|MACADDR8|MONEY|NUMERIC|DEC|DECIMAL|PATH|POINT|POLYGON|REAL|FLOAT4|SMALLINT|INT2|SMALLSERIAL|SERIAL2|SERIAL|SERIAL4|TEXT|TIME|ZONE|TIMETZ|TIMESTAMP|TIMESTAMPTZ|TSQUERY|TSVECTOR|TXID_SNAPSHOT|UUID|XML|NATIONAL|NCHAR|INT4RANGE|INT8RANGE|NUMRANGE|TSRANGE|TSTZRANGE|DATERANGE|ANYELEMENT|ANYARRAY|ANYNONARRAY|ANYENUM|ANYRANGE|CSTRING|INTERNAL|RECORD|PG_DDL_COMMAND|VOID|UNKNOWN|OPAQUE|REFCURSOR|NAME|OID|REGPROC|REGPROCEDURE|REGOPER|REGOPERATOR|REGCLASS|REGTYPE|REGROLE|REGNAMESPACE|REGCONFIG|REGDICTIONARY)\\\\s+PATH\\\\b\",\n            \"keywords\": {\n                \"keyword\": \"PATH\",\n                \"type\": \"BIGINT INT8 BIGSERIAL SERIAL8 BIT VARYING VARBIT BOOLEAN BOOL BOX BYTEA CHARACTER CHAR VARCHAR CIDR CIRCLE DATE DOUBLE PRECISION FLOAT8 FLOAT INET INTEGER INT INT4 INTERVAL JSON JSONB LINE LSEG|10 MACADDR MACADDR8 MONEY NUMERIC DEC DECIMAL POINT POLYGON REAL FLOAT4 SMALLINT INT2 SMALLSERIAL|10 SERIAL2|10 SERIAL|10 SERIAL4|10 TEXT TIME ZONE TIMETZ|10 TIMESTAMP TIMESTAMPTZ|10 TSQUERY|10 TSVECTOR|10 TXID_SNAPSHOT|10 UUID XML NATIONAL NCHAR INT4RANGE|10 INT8RANGE|10 NUMRANGE|10 TSRANGE|10 TSTZRANGE|10 DATERANGE|10 ANYELEMENT ANYARRAY ANYNONARRAY ANYENUM ANYRANGE CSTRING INTERNAL RECORD PG_DDL_COMMAND VOID UNKNOWN OPAQUE REFCURSOR NAME OID REGPROC|10 REGPROCEDURE|10 REGOPER|10 REGOPERATOR|10 REGCLASS|10 REGTYPE|10 REGROLE|10 REGNAMESPACE|10 REGCONFIG|10 REGDICTIONARY|10 \"\n            }\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \"\\\\b(BIGINT|INT8|BIGSERIAL|SERIAL8|BIT|VARYING|VARBIT|BOOLEAN|BOOL|BOX|BYTEA|CHARACTER|CHAR|VARCHAR|CIDR|CIRCLE|DATE|DOUBLE|PRECISION|FLOAT8|FLOAT|INET|INTEGER|INT|INT4|INTERVAL|JSON|JSONB|LINE|LSEG|MACADDR|MACADDR8|MONEY|NUMERIC|DEC|DECIMAL|PATH|POINT|POLYGON|REAL|FLOAT4|SMALLINT|INT2|SMALLSERIAL|SERIAL2|SERIAL|SERIAL4|TEXT|TIME|ZONE|TIMETZ|TIMESTAMP|TIMESTAMPTZ|TSQUERY|TSVECTOR|TXID_SNAPSHOT|UUID|XML|NATIONAL|NCHAR|INT4RANGE|INT8RANGE|NUMRANGE|TSRANGE|TSTZRANGE|DATERANGE|ANYELEMENT|ANYARRAY|ANYNONARRAY|ANYENUM|ANYRANGE|CSTRING|INTERNAL|RECORD|PG_DDL_COMMAND|VOID|UNKNOWN|OPAQUE|REFCURSOR|NAME|OID|REGPROC|REGPROCEDURE|REGOPER|REGOPERATOR|REGCLASS|REGTYPE|REGROLE|REGNAMESPACE|REGCONFIG|REGDICTIONARY)\\\\b\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"contains\": [\n                {\n                    \"begin\": \"''\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"(e|E|u&|U&)'\",\n            \"end\": \"'\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\.\"\n                }\n            ],\n            \"relevance\": 10\n        },\n        {\n            \"begin\": \"\\\\$([a-zA-Z_]?|[a-zA-Z_][a-zA-Z_0-9]*)\\\\$\",\n            \"endSameAsBegin\": true,\n            \"contains\": [\n                {\n                    \"subLanguage\": [\n                        \"pgsql\",\n                        \"perl\",\n                        \"python\",\n                        \"tcl\",\n                        \"r\",\n                        \"lua\",\n                        \"java\",\n                        \"php\",\n                        \"ruby\",\n                        \"bash\",\n                        \"scheme\",\n                        \"xml\",\n                        \"json\"\n                    ],\n                    \"endsWithParent\": true\n                }\n            ]\n        },\n        {\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\"\\\"\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"--\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.22.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"variants\": [\n                {\n                    \"begin\": \"%(ROW)?TYPE\",\n                    \"relevance\": 10\n                },\n                {\n                    \"begin\": \"\\\\$\\\\d+\"\n                },\n                {\n                    \"begin\": \"^#\\\\w\",\n                    \"end\": \"$\"\n                }\n            ]\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"<<\\\\s*[a-zA-Z_][a-zA-Z_0-9$]*\\\\s*>>\",\n            \"relevance\": 10\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/php.json",
    "content": "{\n    \"aliases\": [\n        \"php\",\n        \"php3\",\n        \"php4\",\n        \"php5\",\n        \"php6\",\n        \"php7\"\n    ],\n    \"case_insensitive\": true,\n    \"keywords\": \"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"className\": \"meta\",\n                    \"begin\": \"<\\\\?(php)?|\\\\?>\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"@[A-Za-z]+\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"__halt_compiler.+?;\",\n            \"end\": false,\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"endsWithParent\": true,\n            \"keywords\": \"__halt_compiler\",\n            \"lexemes\": \"[a-zA-Z_]\\\\w*\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"<<<['\\\"]?\\\\w+['\\\"]?$\",\n            \"end\": \"^\\\\w+;?$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"subst\",\n                    \"variants\": [\n                        {\n                            \"begin\": \"\\\\$\\\\w+\"\n                        },\n                        {\n                            \"begin\": \"\\\\{\\\\$\",\n                            \"end\": \"\\\\}\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.1.contains.0\"\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\\\$this\\\\b\"\n        },\n        {\n            \"begin\": \"\\\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*\"\n        },\n        {\n            \"begin\": \"(::|->)+[a-zA-Z_\\\\x7f-\\\\xff][a-zA-Z0-9_\\\\x7f-\\\\xff]*\"\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"function\",\n            \"end\": \"[;{]\",\n            \"excludeEnd\": true,\n            \"illegal\": \"\\\\$|\\\\[|%\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"contains\": [\n                        \"self\",\n                        {\n                            \"$ref\": \"#contains.7\"\n                        },\n                        {\n                            \"className\": \"comment\",\n                            \"begin\": \"\\/\\\\*\",\n                            \"end\": \"\\\\*\\/\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.0.contains.0\"\n                                },\n                                {\n                                    \"className\": \"doctag\",\n                                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        },\n                        {\n                            \"className\": \"string\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.4.contains.0\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.1.contains.0\"\n                                }\n                            ],\n                            \"variants\": [\n                                {\n                                    \"begin\": \"b\\\"\",\n                                    \"end\": \"\\\"\"\n                                },\n                                {\n                                    \"begin\": \"b'\",\n                                    \"end\": \"'\"\n                                },\n                                {\n                                    \"className\": \"string\",\n                                    \"begin\": \"'\",\n                                    \"end\": \"'\",\n                                    \"illegal\": null,\n                                    \"contains\": [\n                                        {\n                                            \"$ref\": \"#contains.4.contains.0\"\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"className\": \"string\",\n                                    \"begin\": \"\\\"\",\n                                    \"end\": \"\\\"\",\n                                    \"illegal\": null,\n                                    \"contains\": [\n                                        {\n                                            \"$ref\": \"#contains.4.contains.0\"\n                                        }\n                                    ]\n                                }\n                            ]\n                        },\n                        {\n                            \"variants\": [\n                                {\n                                    \"className\": \"number\",\n                                    \"begin\": \"\\\\b(0b[01]+)\",\n                                    \"relevance\": 0\n                                },\n                                {\n                                    \"className\": \"number\",\n                                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class interface\",\n            \"end\": \"{\",\n            \"excludeEnd\": true,\n            \"illegal\": \"[:\\\\(\\\\$\\\"]\",\n            \"contains\": [\n                {\n                    \"beginKeywords\": \"extends implements\"\n                },\n                {\n                    \"$ref\": \"#contains.9.contains.0\"\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"namespace\",\n            \"end\": \";\",\n            \"illegal\": \"[\\\\.']\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.9.contains.0\"\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"use\",\n            \"end\": \";\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.9.contains.0\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"=>\"\n        },\n        {\n            \"$ref\": \"#contains.9.contains.1.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.9.contains.1.contains.4\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/plaintext.json",
    "content": "{\n    \"disableAutodetect\": true\n}\n"
  },
  {
    "path": "includes/Highlight/languages/pony.json",
    "content": "{\n    \"keywords\": {\n        \"keyword\": \"actor addressof and as be break class compile_error compile_intrinsic consume continue delegate digestof do else elseif embed end error for fun if ifdef in interface is isnt lambda let match new not object or primitive recover repeat return struct then trait try type until use var where while with xor\",\n        \"meta\": \"iso val tag trn box ref\",\n        \"literal\": \"this false true\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"type\",\n            \"begin\": \"\\\\b_?[A-Z][\\\\w]*\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\\\"\\\"\",\n            \"end\": \"\\\"\\\"\\\"\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"[a-zA-Z]\\\\w*'\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|\\\\b0[bB][01]+|(\\\\b\\\\d+(_\\\\d+)?(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/powershell.json",
    "content": "{\n    \"aliases\": [\n        \"ps\",\n        \"ps1\"\n    ],\n    \"lexemes\": \"-?[A-z\\\\.\\\\-]+\",\n    \"case_insensitive\": true,\n    \"keywords\": {\n        \"keyword\": \"if else foreach return do while until elseif begin for trap data dynamicparam end break throw param continue finally in switch exit filter try process catch hidden static parameter\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"function\",\n            \"begin\": \"\\\\[.*\\\\]\\\\s*[\\\\w]+[ ]??\\\\(\",\n            \"end\": \"$\",\n            \"returnBegin\": true,\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\[\",\n                    \"end\": \"\\\\]\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true,\n                    \"relevance\": 0,\n                    \"contains\": [\n                        \"self\",\n                        {\n                            \"$ref\": \"#contains.0\"\n                        },\n                        {\n                            \"className\": \"comment\",\n                            \"begin\": null,\n                            \"end\": null,\n                            \"contains\": [\n                                {\n                                    \"className\": \"doctag\",\n                                    \"variants\": [\n                                        {\n                                            \"begin\": \"\\\\.(synopsis|description|example|inputs|outputs|notes|link|component|role|functionality)\"\n                                        },\n                                        {\n                                            \"begin\": \"\\\\.(parameter|forwardhelptargetname|forwardhelpcategory|remotehelprunspace|externalhelp)\\\\s+\\\\S+\"\n                                        }\n                                    ]\n                                }\n                            ],\n                            \"variants\": [\n                                {\n                                    \"begin\": \"#\",\n                                    \"end\": \"$\"\n                                },\n                                {\n                                    \"begin\": \"<#\",\n                                    \"end\": \"#>\"\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \"`[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"className\": \"number\",\n                            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"className\": \"string\",\n                            \"variants\": [\n                                {\n                                    \"begin\": \"\\\"\",\n                                    \"end\": \"\\\"\"\n                                },\n                                {\n                                    \"begin\": \"@\\\"\",\n                                    \"end\": \"^\\\"@\"\n                                }\n                            ],\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.0.contains.0.contains.3\"\n                                },\n                                {\n                                    \"className\": \"variable\",\n                                    \"variants\": [\n                                        {\n                                            \"begin\": \"\\\\$\\\\B\"\n                                        },\n                                        {\n                                            \"className\": \"keyword\",\n                                            \"begin\": \"\\\\$this\"\n                                        },\n                                        {\n                                            \"begin\": \"\\\\$[\\\\w\\\\d][\\\\w\\\\d_:]*\"\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"className\": \"variable\",\n                                    \"begin\": \"\\\\$[A-z]\",\n                                    \"end\": \"[^A-z]\"\n                                }\n                            ]\n                        },\n                        {\n                            \"className\": \"string\",\n                            \"variants\": [\n                                {\n                                    \"begin\": \"'\",\n                                    \"end\": \"'\"\n                                },\n                                {\n                                    \"begin\": \"@'\",\n                                    \"end\": \"^'@\"\n                                }\n                            ]\n                        },\n                        {\n                            \"className\": \"built_in\",\n                            \"variants\": [\n                                {\n                                    \"begin\": \"(Add|Clear|Close|Copy|Enter|Exit|Find|Format|Get|Hide|Join|Lock|Move|New|Open|Optimize|Pop|Push|Redo|Remove|Rename|Reset|Resize|Search|Select|Set|Show|Skip|Split|Step|Switch|Undo|Unlock|Watch|Backup|Checkpoint|Compare|Compress|Convert|ConvertFrom|ConvertTo|Dismount|Edit|Expand|Export|Group|Import|Initialize|Limit|Merge|New|Out|Publish|Restore|Save|Sync|Unpublish|Update|Approve|Assert|Complete|Confirm|Deny|Disable|Enable|Install|Invoke|Register|Request|Restart|Resume|Start|Stop|Submit|Suspend|Uninstall|Unregister|Wait|Debug|Measure|Ping|Repair|Resolve|Test|Trace|Connect|Disconnect|Read|Receive|Send|Write|Block|Grant|Protect|Revoke|Unblock|Unprotect|Use|ForEach|Sort|Tee|Where)+(-)[\\\\w\\\\d]+\"\n                                }\n                            ]\n                        },\n                        {\n                            \"$ref\": \"#contains.0.contains.0.contains.5.contains.1\"\n                        },\n                        {\n                            \"className\": \"literal\",\n                            \"begin\": \"\\\\$(null|true|false)\\\\b\"\n                        },\n                        {\n                            \"className\": \"selector-tag\",\n                            \"begin\": \"\\\\@\\\\B\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"begin\": \"(string|char|byte|int|long|bool|decimal|single|double|DateTime|xml|array|hashtable|void)\",\n                            \"className\": \"built_in\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"className\": \"type\",\n                            \"begin\": \"[\\\\.\\\\w\\\\d]+\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"keyword\",\n                    \"begin\": \"(if|else|foreach|return|do|while|until|elseif|begin|for|trap|data|dynamicparam|end|break|throw|param|continue|finally|in|switch|exit|filter|try|process|catch|hidden|static|parameter)\\\\b\",\n                    \"endsParent\": true,\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0,\n                    \"endsParent\": true\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.2\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.4\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.5\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.6\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.7\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.5.contains.1\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.9\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0.contains.10\"\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class enum\",\n            \"end\": \"\\\\s*[{]\",\n            \"excludeEnd\": true,\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"function\",\n            \"begin\": \"function\\\\s+\",\n            \"end\": \"\\\\s*\\\\{|$\",\n            \"excludeEnd\": true,\n            \"returnBegin\": true,\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"begin\": \"function\",\n                    \"relevance\": 0,\n                    \"className\": \"keyword\"\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"\\\\w[\\\\w\\\\d]*((-)[\\\\w\\\\d]+)*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"className\": \"params\",\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.0.contains.5.contains.1\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"begin\": \"using\\\\s\",\n            \"end\": \"$\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0.contains.5\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0.contains.6\"\n                },\n                {\n                    \"className\": \"keyword\",\n                    \"begin\": \"(using|assembly|command|module|namespace|type)\"\n                }\n            ]\n        },\n        {\n            \"variants\": [\n                {\n                    \"className\": \"operator\",\n                    \"begin\": \"(-and|-as|-band|-bnot|-bor|-bxor|-casesensitive|-ccontains|-ceq|-cge|-cgt|-cle|-clike|-clt|-cmatch|-cne|-cnotcontains|-cnotlike|-cnotmatch|-contains|-creplace|-csplit|-eq|-exact|-f|-file|-ge|-gt|-icontains|-ieq|-ige|-igt|-ile|-ilike|-ilt|-imatch|-in|-ine|-inotcontains|-inotlike|-inotmatch|-ireplace|-is|-isnot|-isplit|-join|-le|-like|-lt|-match|-ne|-not|-notcontains|-notin|-notlike|-notmatch|-or|-regex|-replace|-shl|-shr|-split|-wildcard|-xor)\\\\b\"\n                },\n                {\n                    \"className\": \"literal\",\n                    \"begin\": \"(-)[\\\\w\\\\d]+\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.0.contains.0\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/processing.json",
    "content": "{\n    \"keywords\": {\n        \"keyword\": \"BufferedReader PVector PFont PImage PGraphics HashMap boolean byte char color double float int long String Array FloatDict FloatList IntDict IntList JSONArray JSONObject Object StringDict StringList Table TableRow XML false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private\",\n        \"literal\": \"P2D P3D HALF_PI PI QUARTER_PI TAU TWO_PI\",\n        \"title\": \"setup draw\",\n        \"built_in\": \"displayHeight displayWidth mouseY mouseX mousePressed pmouseX pmouseY key keyCode pixels focused frameCount frameRate height width size createGraphics beginDraw createShape loadShape PShape arc ellipse line point quad rect triangle bezier bezierDetail bezierPoint bezierTangent curve curveDetail curvePoint curveTangent curveTightness shape shapeMode beginContour beginShape bezierVertex curveVertex endContour endShape quadraticVertex vertex ellipseMode noSmooth rectMode smooth strokeCap strokeJoin strokeWeight mouseClicked mouseDragged mouseMoved mousePressed mouseReleased mouseWheel keyPressed keyPressedkeyReleased keyTyped print println save saveFrame day hour millis minute month second year background clear colorMode fill noFill noStroke stroke alpha blue brightness color green hue lerpColor red saturation modelX modelY modelZ screenX screenY screenZ ambient emissive shininess specular add createImage beginCamera camera endCamera frustum ortho perspective printCamera printProjection cursor frameRate noCursor exit loop noLoop popStyle pushStyle redraw binary boolean byte char float hex int str unbinary unhex join match matchAll nf nfc nfp nfs split splitTokens trim append arrayCopy concat expand reverse shorten sort splice subset box sphere sphereDetail createInput createReader loadBytes loadJSONArray loadJSONObject loadStrings loadTable loadXML open parseXML saveTable selectFolder selectInput beginRaw beginRecord createOutput createWriter endRaw endRecord PrintWritersaveBytes saveJSONArray saveJSONObject saveStream saveStrings saveXML selectOutput popMatrix printMatrix pushMatrix resetMatrix rotate rotateX rotateY rotateZ scale shearX shearY translate ambientLight directionalLight lightFalloff lights lightSpecular noLights normal pointLight spotLight image imageMode loadImage noTint requestImage tint texture textureMode textureWrap blend copy filter get loadPixels set updatePixels blendMode loadShader PShaderresetShader shader createFont loadFont text textFont textAlign textLeading textMode textSize textWidth textAscent textDescent abs ceil constrain dist exp floor lerp log mag map max min norm pow round sq sqrt acos asin atan atan2 cos degrees radians sin tan noise noiseDetail noiseSeed random randomGaussian randomSeed\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/profile.json",
    "content": "{\n    \"contains\": [\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"[a-zA-Z_][\\\\da-zA-Z_]+\\\\.[\\\\da-zA-Z_]{1,3}\",\n            \"end\": \":\",\n            \"excludeEnd\": true\n        },\n        {\n            \"begin\": \"(ncalls|tottime|cumtime)\",\n            \"end\": \"$\",\n            \"keywords\": \"ncalls tottime|10 cumtime|10 filename\",\n            \"relevance\": 10\n        },\n        {\n            \"begin\": \"function calls\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0\"\n                }\n            ],\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.4.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\\(\",\n            \"end\": \"\\\\)$\",\n            \"excludeBegin\": true,\n            \"excludeEnd\": true,\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/prolog.json",
    "content": "{\n    \"contains\": [\n        {\n            \"begin\": \"[a-z][A-Za-z0-9_]*\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"symbol\",\n            \"variants\": [\n                {\n                    \"begin\": \"[A-Z][a-zA-Z0-9_]*\"\n                },\n                {\n                    \"begin\": \"_[A-Za-z0-9_]*\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"\\\\(\",\n            \"end\": \"\\\\)\",\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.2\"\n                },\n                {\n                    \"begin\": \":-\"\n                },\n                {\n                    \"begin\": \"\\\\[\",\n                    \"end\": \"\\\\]\",\n                    \"contains\": {\n                        \"$ref\": \"#contains.2.contains\"\n                    }\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"%\",\n                    \"end\": \"$\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"\\/\\\\*\",\n                    \"end\": \"\\\\*\\/\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2.contains.5.contains.0\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2.contains.7.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"`\",\n                    \"end\": \"`\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2.contains.7.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"0\\\\'(\\\\\\\\\\\\'|.)\"\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"0\\\\'\\\\\\\\s\"\n                },\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.2.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.4\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.5\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.6\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.7\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.8\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.9\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.10\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.11\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.12\"\n        },\n        {\n            \"begin\": \"\\\\.$\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/properties.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"illegal\": \"\\\\S\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"^\\\\s*[!#]\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"begin\": \"([^\\\\\\\\\\\\W:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+([ \\\\t\\\\f]*[:=][ \\\\t\\\\f]*|[ \\\\t\\\\f]+)\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"className\": \"attr\",\n                    \"begin\": \"([^\\\\\\\\\\\\W:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+\",\n                    \"endsParent\": true,\n                    \"relevance\": 0\n                }\n            ],\n            \"starts\": {\n                \"end\": \"([ \\\\t\\\\f]*[:=][ \\\\t\\\\f]*|[ \\\\t\\\\f]+)\",\n                \"relevance\": 0,\n                \"starts\": {\n                    \"className\": \"string\",\n                    \"end\": \"$\",\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\\\\\n\"\n                        }\n                    ]\n                }\n            }\n        },\n        {\n            \"begin\": \"([^\\\\\\\\:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+([ \\\\t\\\\f]*[:=][ \\\\t\\\\f]*|[ \\\\t\\\\f]+)\",\n            \"returnBegin\": true,\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"className\": \"meta\",\n                    \"begin\": \"([^\\\\\\\\:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+\",\n                    \"endsParent\": true,\n                    \"relevance\": 0\n                }\n            ],\n            \"starts\": {\n                \"$ref\": \"#contains.1.starts\"\n            }\n        },\n        {\n            \"className\": \"attr\",\n            \"relevance\": 0,\n            \"begin\": \"([^\\\\\\\\:= \\\\t\\\\f\\\\n]|\\\\\\\\.)+[ \\\\t\\\\f]*$\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/protobuf.json",
    "content": "{\n    \"keywords\": {\n        \"keyword\": \"package import option optional required repeated group oneof\",\n        \"built_in\": \"double float int32 int64 uint32 uint64 sint32 sint64 fixed32 fixed64 sfixed32 sfixed64 bool string bytes\",\n        \"literal\": \"true false\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"message enum service\",\n            \"end\": \"\\\\{\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0,\n                    \"starts\": {\n                        \"endsWithParent\": true,\n                        \"excludeEnd\": true\n                    }\n                }\n            ]\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"rpc\",\n            \"end\": \";\",\n            \"excludeEnd\": true,\n            \"keywords\": \"rpc returns\"\n        },\n        {\n            \"begin\": \"^\\\\s*[A-Z_]+\",\n            \"end\": \"\\\\s*=\",\n            \"excludeEnd\": true\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/puppet.json",
    "content": "{\n    \"aliases\": [\n        \"pp\"\n    ],\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"variable\",\n            \"begin\": \"\\\\$([A-Za-z_]|::)(\\\\w|::)*\"\n        },\n        {\n            \"className\": \"string\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                },\n                {\n                    \"$ref\": \"#contains.1\"\n                }\n            ],\n            \"variants\": [\n                {\n                    \"begin\": \"'\",\n                    \"end\": \"'\"\n                },\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\"\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"class\",\n            \"end\": \"\\\\{|;\",\n            \"illegal\": \"=\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"([A-Za-z_]|::)(\\\\w|::)*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"$ref\": \"#contains.0\"\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"define\",\n            \"end\": \"\\\\{\",\n            \"contains\": [\n                {\n                    \"className\": \"section\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"endsParent\": true\n                }\n            ]\n        },\n        {\n            \"begin\": \"[a-zA-Z]\\\\w*\\\\s+\\\\{\",\n            \"returnBegin\": true,\n            \"end\": \"\\\\S\",\n            \"contains\": [\n                {\n                    \"className\": \"keyword\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\"\n                },\n                {\n                    \"begin\": \"\\\\{\",\n                    \"end\": \"\\\\}\",\n                    \"keywords\": {\n                        \"keyword\": \"and case default else elsif false if in import enherits node or true undef unless main settings $string \",\n                        \"literal\": \"alias audit before loglevel noop require subscribe tag owner ensure group mode name|0 changes context force incl lens load_path onlyif provider returns root show_diff type_check en_address ip_address realname command environment hour monute month monthday special target weekday creates cwd ogoutput refresh refreshonly tries try_sleep umask backup checksum content ctime force ignore links mtime purge recurse recurselimit replace selinux_ignore_defaults selrange selrole seltype seluser source souirce_permissions sourceselect validate_cmd validate_replacement allowdupe attribute_membership auth_membership forcelocal gid ia_load_module members system host_aliases ip allowed_trunk_vlans description device_url duplex encapsulation etherchannel native_vlan speed principals allow_root auth_class auth_type authenticate_user k_of_n mechanisms rule session_owner shared options device fstype enable hasrestart directory present absent link atboot blockdevice device dump pass remounts poller_tag use message withpath adminfile allow_virtual allowcdrom category configfiles flavor install_options instance package_settings platform responsefile status uninstall_options vendor unless_system_user unless_uid binary control flags hasstatus manifest pattern restart running start stop allowdupe auths expiry gid groups home iterations key_membership keys managehome membership password password_max_age password_min_age profile_membership profiles project purge_ssh_keys role_membership roles salt shell uid baseurl cost descr enabled enablegroups exclude failovermethod gpgcheck gpgkey http_caching include includepkgs keepalive metadata_expire metalink mirrorlist priority protect proxy proxy_password proxy_username repo_gpgcheck s3_enabled skip_if_unavailable sslcacert sslclientcert sslclientkey sslverify mounted\",\n                        \"built_in\": \"architecture augeasversion blockdevices boardmanufacturer boardproductname boardserialnumber cfkey dhcp_servers domain ec2_ ec2_userdata facterversion filesystems ldom fqdn gid hardwareisa hardwaremodel hostname id|0 interfaces ipaddress ipaddress_ ipaddress6 ipaddress6_ iphostnumber is_virtual kernel kernelmajversion kernelrelease kernelversion kernelrelease kernelversion lsbdistcodename lsbdistdescription lsbdistid lsbdistrelease lsbmajdistrelease lsbminordistrelease lsbrelease macaddress macaddress_ macosx_buildversion macosx_productname macosx_productversion macosx_productverson_major macosx_productversion_minor manufacturer memoryfree memorysize netmask metmask_ network_ operatingsystem operatingsystemmajrelease operatingsystemrelease osfamily partitions path physicalprocessorcount processor processorcount productname ps puppetversion rubysitedir rubyversion selinux selinux_config_mode selinux_config_policy selinux_current_mode selinux_current_mode selinux_enforced selinux_policyversion serialnumber sp_ sshdsakey sshecdsakey sshrsakey swapencrypted swapfree swapsize timezone type uniqueid uptime uptime_days uptime_hours uptime_seconds uuid virtual vlans xendomains zfs_version zonenae zones zpool_version\"\n                    },\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0\"\n                        },\n                        {\n                            \"begin\": \"[a-zA-Z_]+\\\\s*=>\",\n                            \"returnBegin\": true,\n                            \"end\": \"=>\",\n                            \"contains\": [\n                                {\n                                    \"className\": \"attr\",\n                                    \"begin\": \"[a-zA-Z]\\\\w*\"\n                                }\n                            ]\n                        },\n                        {\n                            \"className\": \"number\",\n                            \"begin\": \"(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"$ref\": \"#contains.1\"\n                        }\n                    ]\n                }\n            ],\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/purebasic.json",
    "content": "{\n    \"aliases\": [\n        \"pb\",\n        \"pbi\"\n    ],\n    \"keywords\": \"Align And Array As Break CallDebugger Case CompilerCase CompilerDefault CompilerElse CompilerElseIf CompilerEndIf CompilerEndSelect CompilerError CompilerIf CompilerSelect CompilerWarning Continue Data DataSection Debug DebugLevel Declare DeclareC DeclareCDLL DeclareDLL DeclareModule Default Define Dim DisableASM DisableDebugger DisableExplicit Else ElseIf EnableASM EnableDebugger EnableExplicit End EndDataSection EndDeclareModule EndEnumeration EndIf EndImport EndInterface EndMacro EndModule EndProcedure EndSelect EndStructure EndStructureUnion EndWith Enumeration EnumerationBinary Extends FakeReturn For ForEach ForEver Global Gosub Goto If Import ImportC IncludeBinary IncludeFile IncludePath Interface List Macro MacroExpandedCount Map Module NewList NewMap Next Not Or Procedure ProcedureC ProcedureCDLL ProcedureDLL ProcedureReturn Protected Prototype PrototypeC ReDim Read Repeat Restore Return Runtime Select Shared Static Step Structure StructureUnion Swap Threaded To UndefineMacro Until Until  UnuseModule UseModule Wend While With XIncludeFile XOr\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \";\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"begin\": \"\\\\b(Procedure|Declare)(C|CDLL|DLL)?\\\\b\",\n            \"end\": \"\\\\(\",\n            \"excludeEnd\": true,\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"className\": \"keyword\",\n                    \"begin\": \"(Procedure|Declare)(C|CDLL|DLL)?\",\n                    \"excludeEnd\": true\n                },\n                {\n                    \"className\": \"type\",\n                    \"begin\": \"\\\\.\\\\w*\"\n                },\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"(~)?\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\"\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"#[a-zA-Z_]\\\\w*\\\\$?\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/python.json",
    "content": "{\n    \"aliases\": [\n        \"py\",\n        \"gyp\",\n        \"ipython\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda async await nonlocal|10\",\n        \"built_in\": \"Ellipsis NotImplemented\",\n        \"literal\": \"False None True\"\n    },\n    \"illegal\": \"(<\\\\\\/|->|\\\\?)|=>\",\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^(>>>|\\\\.\\\\.\\\\.) \"\n        },\n        {\n            \"className\": \"number\",\n            \"relevance\": 0,\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\b(0b[01]+)[lLjJ]?\"\n                },\n                {\n                    \"begin\": \"\\\\b(0o[0-7]+)[lLjJ]?\"\n                },\n                {\n                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)[lLjJ]?\"\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"if\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ],\n            \"variants\": [\n                {\n                    \"begin\": \"(u|b)?r?'''\",\n                    \"end\": \"'''\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.3.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0\"\n                        }\n                    ],\n                    \"relevance\": 10\n                },\n                {\n                    \"begin\": \"(u|b)?r?\\\"\\\"\\\"\",\n                    \"end\": \"\\\"\\\"\\\"\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.3.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0\"\n                        }\n                    ],\n                    \"relevance\": 10\n                },\n                {\n                    \"begin\": \"(fr|rf|f)'''\",\n                    \"end\": \"'''\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.3.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0\"\n                        },\n                        {\n                            \"begin\": \"\\\\{\\\\{\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"className\": \"subst\",\n                            \"begin\": \"\\\\{\",\n                            \"end\": \"\\\\}\",\n                            \"keywords\": {\n                                \"$ref\": \"#keywords\"\n                            },\n                            \"illegal\": \"#\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.3\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.1\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.0\"\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"(fr|rf|f)\\\"\\\"\\\"\",\n                    \"end\": \"\\\"\\\"\\\"\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.3.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.3.variants.2.contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.3.variants.2.contains.3\"\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"(u|r|ur)'\",\n                    \"end\": \"'\",\n                    \"relevance\": 10\n                },\n                {\n                    \"begin\": \"(u|r|ur)\\\"\",\n                    \"end\": \"\\\"\",\n                    \"relevance\": 10\n                },\n                {\n                    \"begin\": \"(b|br)'\",\n                    \"end\": \"'\"\n                },\n                {\n                    \"begin\": \"(b|br)\\\"\",\n                    \"end\": \"\\\"\"\n                },\n                {\n                    \"begin\": \"(fr|rf|f)'\",\n                    \"end\": \"'\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.3.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.3.variants.2.contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.3.variants.2.contains.3\"\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"(fr|rf|f)\\\"\",\n                    \"end\": \"\\\"\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.3.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.3.variants.2.contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.3.variants.2.contains.3\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.3.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.3.contains.0\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"variants\": [\n                {\n                    \"className\": \"function\",\n                    \"beginKeywords\": \"def\"\n                },\n                {\n                    \"className\": \"class\",\n                    \"beginKeywords\": \"class\"\n                }\n            ],\n            \"end\": \":\",\n            \"illegal\": \"[${=;\\\\n,]\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"contains\": [\n                        \"self\",\n                        {\n                            \"$ref\": \"#contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.3\"\n                        },\n                        {\n                            \"$ref\": \"#contains.4\"\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"->\",\n                    \"endsWithParent\": true,\n                    \"keywords\": \"None\"\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^[\\\\t ]*@\",\n            \"end\": \"$\"\n        },\n        {\n            \"begin\": \"\\\\b(print|exec)\\\\(\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/q.json",
    "content": "{\n    \"aliases\": [\n        \"k\",\n        \"kdb\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"do while select delete by update from\",\n        \"literal\": \"0b 1b\",\n        \"built_in\": \"neg not null string reciprocal floor ceiling signum mod xbar xlog and or each scan over prior mmu lsq inv md5 ltime gtime count first var dev med cov cor all any rand sums prds mins maxs fills deltas ratios avgs differ prev next rank reverse iasc idesc asc desc msum mcount mavg mdev xrank mmin mmax xprev rotate distinct group where flip type key til get value attr cut set upsert raze union inter except cross sv vs sublist enlist read0 read1 hopen hclose hdel hsym hcount peach system ltrim rtrim trim lower upper ssr view tables views cols xcols keys xkey xcol xasc xdesc fkeys meta lj aj aj0 ij pj asof uj ww wj wj1 fby xgroup ungroup ej save load rsave rload show csv parse eval min max avg wavg wsum sin cos tan sum\",\n        \"type\": \"`float `double int `timestamp `timespan `datetime `time `boolean `symbol `char `byte `short `long `real `month `date `minute `second `guid\"\n    },\n    \"lexemes\": \"(`?)[A-Za-z0-9_]+\\\\b\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/qml.json",
    "content": "{\n    \"aliases\": [\n        \"qt\"\n    ],\n    \"case_insensitive\": false,\n    \"keywords\": {\n        \"keyword\": \"in of on if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await import\",\n        \"literal\": \"true false null undefined NaN Infinity\",\n        \"built_in\": \"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Behavior bool color coordinate date double enumeration font geocircle georectangle geoshape int list matrix4x4 parent point quaternion real rect size string url variant vector2d vector3d vector4dPromise\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^\\\\s*['\\\"]use (strict|asm)['\\\"]\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"`\",\n            \"end\": \"`\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                },\n                {\n                    \"className\": \"subst\",\n                    \"begin\": \"\\\\$\\\\{\",\n                    \"end\": \"\\\\}\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.4.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\b(0[bB][01]+)\"\n                },\n                {\n                    \"begin\": \"\\\\b(0[oO][0-7]+)\"\n                },\n                {\n                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"(!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|\\/=|\\/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~|\\\\b(case|return|throw)\\\\b)\\\\s*\",\n            \"keywords\": \"return throw case\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.4\"\n                },\n                {\n                    \"$ref\": \"#contains.5\"\n                },\n                {\n                    \"className\": \"regexp\",\n                    \"begin\": \"\\\\\\/\",\n                    \"end\": \"\\\\\\/[gimuy]*\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.1.contains.0\"\n                        },\n                        {\n                            \"begin\": \"\\\\[\",\n                            \"end\": \"\\\\]\",\n                            \"relevance\": 0,\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.1.contains.0\"\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"<\",\n                    \"end\": \">\\\\s*[);\\\\]]\",\n                    \"relevance\": 0,\n                    \"subLanguage\": \"xml\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\\\bsignal\\\\b\",\n            \"starts\": {\n                \"className\": \"string\",\n                \"end\": \"(\\\\(|:|=|;|,|\\/\\/|\\/\\\\*|$)\",\n                \"returnEnd\": true\n            }\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\\\bproperty\\\\b\",\n            \"starts\": {\n                \"className\": \"string\",\n                \"end\": \"(:|=|;|,|\\/\\/|\\/\\\\*|$)\",\n                \"returnEnd\": true\n            }\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"function\",\n            \"end\": \"\\\\{\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[A-Za-z$_][0-9A-Za-z$_]*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.4\"\n                        },\n                        {\n                            \"$ref\": \"#contains.5\"\n                        }\n                    ]\n                }\n            ],\n            \"illegal\": \"\\\\[|%\"\n        },\n        {\n            \"begin\": \"\\\\.[a-zA-Z]\\\\w*\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"attribute\",\n            \"begin\": \"\\\\bid\\\\s*:\",\n            \"starts\": {\n                \"className\": \"string\",\n                \"end\": \"[a-zA-Z_][a-zA-Z0-9\\\\._]*\",\n                \"returnEnd\": false\n            }\n        },\n        {\n            \"begin\": \"[a-zA-Z_][a-zA-Z0-9\\\\._]*\\\\s*:\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"className\": \"attribute\",\n                    \"begin\": \"[a-zA-Z_][a-zA-Z0-9\\\\._]*\",\n                    \"end\": \"\\\\s*:\",\n                    \"excludeEnd\": true,\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"[a-zA-Z_][a-zA-Z0-9\\\\._]*\\\\s*{\",\n            \"end\": \"{\",\n            \"returnBegin\": true,\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_][a-zA-Z0-9\\\\._]*\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ],\n    \"illegal\": \"#\"\n}\n"
  },
  {
    "path": "includes/Highlight/languages/r.json",
    "content": "{\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"begin\": \"([a-zA-Z]|\\\\.[a-zA-Z.])[a-zA-Z0-9._]*\",\n            \"lexemes\": \"([a-zA-Z]|\\\\.[a-zA-Z.])[a-zA-Z0-9._]*\",\n            \"keywords\": {\n                \"keyword\": \"function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...\",\n                \"literal\": \"NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10\"\n            },\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"0[xX][0-9a-fA-F]+[Li]?\\\\b\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\d+(?:[eE][+\\\\-]?\\\\d*)?L\\\\b\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\d+\\\\.(?!\\\\d)(?:i\\\\b)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\d+(?:\\\\.\\\\d*)?(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\.\\\\d+(?:[eE][+\\\\-]?\\\\d*)?i?\\\\b\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"`\",\n            \"end\": \"`\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ],\n            \"variants\": [\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\"\n                },\n                {\n                    \"begin\": \"'\",\n                    \"end\": \"'\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/reasonml.json",
    "content": "{\n    \"aliases\": [\n        \"re\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"and as asr assert begin class constraint do done downto else end exception externalfor fun function functor if in include inherit initializerland lazy let lor lsl lsr lxor match method mod module mutable new nonrecobject of open or private rec sig struct then to try type val virtual when while with\",\n        \"built_in\": \"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit \",\n        \"literal\": \"true false\"\n    },\n    \"illegal\": \"(:\\\\-|:=|\\\\${|\\\\+=)\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"illegal\": \"^(\\\\#,\\\\\\/\\\\\\/)\"\n        },\n        {\n            \"className\": \"character\",\n            \"begin\": \"'(\\\\\\\\[^']+|[^'])'\",\n            \"illegal\": \"\\\\n\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"literal\",\n            \"begin\": \"\\\\(\\\\)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"literal\",\n            \"begin\": \"\\\\[\\\\|\",\n            \"end\": \"\\\\|\\\\]\",\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"className\": \"identifier\",\n                    \"relevance\": 0,\n                    \"begin\": \"~?[a-z$_][0-9a-zA-Z$_]*\"\n                },\n                {\n                    \"className\": \"operator\",\n                    \"relevance\": 0,\n                    \"begin\": \"(\\\\|\\\\||\\\\&\\\\&|\\\\+\\\\+|\\\\*\\\\*|\\\\+\\\\.|\\\\*|\\\\\\/|\\\\*\\\\.|\\\\\\/\\\\.|\\\\.\\\\.\\\\.|\\\\|\\\\>|==|===)\"\n                },\n                {\n                    \"className\": \"number\",\n                    \"relevance\": 0,\n                    \"variants\": [\n                        {\n                            \"begin\": \"\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)\"\n                        },\n                        {\n                            \"begin\": \"\\\\(\\\\-\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)\\\\)\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"literal\",\n            \"begin\": \"\\\\[\",\n            \"end\": \"\\\\]\",\n            \"relevance\": 0,\n            \"contains\": {\n                \"$ref\": \"#contains.4.contains\"\n            }\n        },\n        {\n            \"className\": \"constructor\",\n            \"begin\": \"`?[A-Z$_][0-9a-zA-Z$_]*\\\\(\",\n            \"end\": \"\\\\)\",\n            \"illegal\": \"\\\\n\",\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            },\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2\"\n                },\n                {\n                    \"$ref\": \"#contains.4.contains.1\"\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\b~?[a-z$_][0-9a-zA-Z$_]*\"\n                }\n            ]\n        },\n        {\n            \"className\": \"operator\",\n            \"begin\": \"\\\\s+(\\\\|\\\\||\\\\&\\\\&|\\\\+\\\\+|\\\\*\\\\*|\\\\+\\\\.|\\\\*|\\\\\\/|\\\\*\\\\.|\\\\\\/\\\\.|\\\\.\\\\.\\\\.|\\\\|\\\\>|==|===)\\\\s+\",\n            \"illegal\": \"\\\\-\\\\->\",\n            \"relevance\": 0\n        },\n        {\n            \"$ref\": \"#contains.4.contains.2\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"pattern-match\",\n            \"begin\": \"\\\\|\",\n            \"returnBegin\": true,\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            },\n            \"end\": \"=>\",\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6\"\n                },\n                {\n                    \"$ref\": \"#contains.4.contains.1\"\n                },\n                {\n                    \"relevance\": 0,\n                    \"className\": \"constructor\",\n                    \"begin\": \"`?[A-Z$_][0-9a-zA-Z$_]*\"\n                }\n            ]\n        },\n        {\n            \"className\": \"function\",\n            \"relevance\": 0,\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            },\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\s(\\\\(\\\\.?.*?\\\\)|~?[a-z$_][0-9a-zA-Z$_]*)\\\\s*=>\",\n                    \"end\": \"\\\\s*=>\",\n                    \"returnBegin\": true,\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"className\": \"params\",\n                            \"variants\": [\n                                {\n                                    \"begin\": \"~?[a-z$_][0-9a-zA-Z$_]*\"\n                                },\n                                {\n                                    \"begin\": \"~?[a-z$_][0-9a-zA-Z$_]*(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?\"\n                                },\n                                {\n                                    \"begin\": \"\\\\(\\\\s*\\\\)\"\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\\s\\\\(\\\\.?[^;\\\\|]*\\\\)\\\\s*=>\",\n                    \"end\": \"\\\\s=>\",\n                    \"returnBegin\": true,\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"className\": \"params\",\n                            \"relevance\": 0,\n                            \"variants\": [\n                                {\n                                    \"begin\": \"~?[a-z$_][0-9a-zA-Z$_]*\",\n                                    \"end\": \"(,|\\\\n|\\\\))\",\n                                    \"relevance\": 0,\n                                    \"contains\": [\n                                        {\n                                            \"$ref\": \"#contains.4.contains.1\"\n                                        },\n                                        {\n                                            \"className\": \"typing\",\n                                            \"begin\": \":\",\n                                            \"end\": \"(,|\\\\n)\",\n                                            \"returnBegin\": true,\n                                            \"relevance\": 0,\n                                            \"contains\": [\n                                                {\n                                                    \"className\": \"module\",\n                                                    \"begin\": \"\\\\b`?[A-Z$_][0-9a-zA-Z$_]*\",\n                                                    \"returnBegin\": true,\n                                                    \"end\": \".\",\n                                                    \"relevance\": 0,\n                                                    \"contains\": [\n                                                        {\n                                                            \"className\": \"identifier\",\n                                                            \"begin\": \"`?[A-Z$_][0-9a-zA-Z$_]*\",\n                                                            \"relevance\": 0\n                                                        }\n                                                    ]\n                                                },\n                                                {\n                                                    \"className\": \"module-access\",\n                                                    \"keywords\": {\n                                                        \"$ref\": \"#keywords\"\n                                                    },\n                                                    \"returnBegin\": true,\n                                                    \"variants\": [\n                                                        {\n                                                            \"begin\": \"\\\\b(`?[A-Z$_][0-9a-zA-Z$_]*\\\\.)+~?[a-z$_][0-9a-zA-Z$_]*\"\n                                                        },\n                                                        {\n                                                            \"begin\": \"\\\\b(`?[A-Z$_][0-9a-zA-Z$_]*\\\\.)+\\\\(\",\n                                                            \"end\": \"\\\\)\",\n                                                            \"returnBegin\": true,\n                                                            \"contains\": [\n                                                                {\n                                                                    \"$ref\": \"#contains.11\"\n                                                                },\n                                                                {\n                                                                    \"begin\": \"\\\\(\",\n                                                                    \"end\": \"\\\\)\",\n                                                                    \"skip\": true\n                                                                },\n                                                                {\n                                                                    \"$ref\": \"#contains.2\"\n                                                                },\n                                                                {\n                                                                    \"$ref\": \"#contains.4.contains.1\"\n                                                                },\n                                                                {\n                                                                    \"className\": \"module\",\n                                                                    \"begin\": \"\\\\b`?[A-Z$_][0-9a-zA-Z$_]*\",\n                                                                    \"returnBegin\": true,\n                                                                    \"end\": \".\",\n                                                                    \"contains\": [\n                                                                        {\n                                                                            \"className\": \"identifier\",\n                                                                            \"begin\": \"`?[A-Z$_][0-9a-zA-Z$_]*\",\n                                                                            \"relevance\": 0\n                                                                        }\n                                                                    ]\n                                                                },\n                                                                {\n                                                                    \"$ref\": \"#contains.11\"\n                                                                }\n                                                            ]\n                                                        },\n                                                        {\n                                                            \"begin\": \"\\\\b(`?[A-Z$_][0-9a-zA-Z$_]*\\\\.)+{\",\n                                                            \"end\": \"}\"\n                                                        }\n                                                    ],\n                                                    \"contains\": [\n                                                        {\n                                                            \"$ref\": \"#contains.2\"\n                                                        },\n                                                        {\n                                                            \"$ref\": \"#contains.4.contains.1\"\n                                                        },\n                                                        {\n                                                            \"$ref\": \"#contains.11.variants.1.contains.0.variants.0.contains.1.contains.1.variants.1.contains.4\"\n                                                        },\n                                                        {\n                                                            \"$ref\": \"#contains.11\"\n                                                        }\n                                                    ]\n                                                }\n                                            ]\n                                        }\n                                    ]\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\\(\\\\.\\\\s~?[a-z$_][0-9a-zA-Z$_]*\\\\)\\\\s*=>\"\n                }\n            ]\n        },\n        {\n            \"className\": \"module-def\",\n            \"begin\": \"\\\\bmodule\\\\s+~?[a-z$_][0-9a-zA-Z$_]*\\\\s+`?[A-Z$_][0-9a-zA-Z$_]*\\\\s+=\\\\s+{\",\n            \"end\": \"}\",\n            \"returnBegin\": true,\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            },\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"className\": \"module\",\n                    \"relevance\": 0,\n                    \"begin\": \"`?[A-Z$_][0-9a-zA-Z$_]*\"\n                },\n                {\n                    \"begin\": \"{\",\n                    \"end\": \"}\",\n                    \"skip\": true\n                },\n                {\n                    \"$ref\": \"#contains.2\"\n                },\n                {\n                    \"$ref\": \"#contains.4.contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.11.variants.1.contains.0.variants.0.contains.1.contains.1.variants.1.contains.4\"\n                },\n                {\n                    \"$ref\": \"#contains.11\"\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.11.variants.1.contains.0.variants.0.contains.1.contains.1\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/rib.json",
    "content": "{\n    \"keywords\": \"ArchiveRecord AreaLightSource Atmosphere Attribute AttributeBegin AttributeEnd Basis Begin Blobby Bound Clipping ClippingPlane Color ColorSamples ConcatTransform Cone CoordinateSystem CoordSysTransform CropWindow Curves Cylinder DepthOfField Detail DetailRange Disk Displacement Display End ErrorHandler Exposure Exterior Format FrameAspectRatio FrameBegin FrameEnd GeneralPolygon GeometricApproximation Geometry Hider Hyperboloid Identity Illuminate Imager Interior LightSource MakeCubeFaceEnvironment MakeLatLongEnvironment MakeShadow MakeTexture Matte MotionBegin MotionEnd NuPatch ObjectBegin ObjectEnd ObjectInstance Opacity Option Orientation Paraboloid Patch PatchMesh Perspective PixelFilter PixelSamples PixelVariance Points PointsGeneralPolygons PointsPolygons Polygon Procedural Projection Quantize ReadArchive RelativeDetail ReverseOrientation Rotate Scale ScreenWindow ShadingInterpolation ShadingRate Shutter Sides Skew SolidBegin SolidEnd Sphere SubdivisionMesh Surface TextureCoordinates Torus Transform TransformBegin TransformEnd TransformPoints Translate TrimCurve WorldBegin WorldEnd\",\n    \"illegal\": \"<\\/\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/roboconf.json",
    "content": "{\n    \"aliases\": [\n        \"graph\",\n        \"instances\"\n    ],\n    \"case_insensitive\": true,\n    \"keywords\": \"import\",\n    \"contains\": [\n        {\n            \"begin\": \"^facet [a-zA-Z\\\\-_][^\\\\n{]+\\\\{\",\n            \"end\": \"}\",\n            \"keywords\": \"facet\",\n            \"contains\": [\n                {\n                    \"className\": \"attribute\",\n                    \"begin\": \"[a-zA-Z\\\\-_]+\",\n                    \"end\": \"\\\\s*:\",\n                    \"excludeEnd\": true,\n                    \"starts\": {\n                        \"end\": \";\",\n                        \"relevance\": 0,\n                        \"contains\": [\n                            {\n                                \"className\": \"variable\",\n                                \"begin\": \"\\\\.[a-zA-Z\\\\-_]+\"\n                            },\n                            {\n                                \"className\": \"keyword\",\n                                \"begin\": \"\\\\(optional\\\\)\"\n                            }\n                        ]\n                    }\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"#\",\n                    \"end\": \"$\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"begin\": \"^\\\\s*instance of [a-zA-Z\\\\-_][^\\\\n{]+\\\\{\",\n            \"end\": \"}\",\n            \"keywords\": \"name count channels instance-data instance-state instance of\",\n            \"illegal\": \"\\\\S\",\n            \"contains\": [\n                \"self\",\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.1\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"^[a-zA-Z\\\\-_][^\\\\n{]+\\\\{\",\n            \"end\": \"}\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.1\"\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.0.contains.1\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/routeros.json",
    "content": "{\n    \"aliases\": [\n        \"routeros\",\n        \"mikrotik\"\n    ],\n    \"case_insensitive\": true,\n    \"lexemes\": \":?[\\\\w\\\\-]+\",\n    \"keywords\": {\n        \"literal\": \"true false yes no nothing nil null\",\n        \"keyword\": \"foreach do while for if from to step else on-error and or not in :foreach :do :while :for :if :from :to :step :else :on-error :and :or :not :in :global :local :beep :delay :put :len :typeof :pick :log :time :set :find :environment :terminal :error :execute :parse :resolve :toarray :tobool :toid :toip :toip6 :tonum :tostr :totime\"\n    },\n    \"contains\": [\n        {\n            \"variants\": [\n                {\n                    \"begin\": \"^@\",\n                    \"end\": \"$\"\n                },\n                {\n                    \"begin\": \"\\\\\\/\\\\*\",\n                    \"end\": \"\\\\*\\\\\\/\"\n                },\n                {\n                    \"begin\": \"%%\",\n                    \"end\": \"$\"\n                },\n                {\n                    \"begin\": \"^'\",\n                    \"end\": \"$\"\n                },\n                {\n                    \"begin\": \"^\\\\s*\\\\\\/[\\\\w\\\\-]+=\",\n                    \"end\": \"$\"\n                },\n                {\n                    \"begin\": \"\\\\\\/\\\\\\/\",\n                    \"end\": \"$\"\n                },\n                {\n                    \"begin\": \"^\\\\[\\\\<\",\n                    \"end\": \"\\\\>\\\\]$\"\n                },\n                {\n                    \"begin\": \"<\\\\\\/\",\n                    \"end\": \">\"\n                },\n                {\n                    \"begin\": \"^facet \",\n                    \"end\": \"\\\\}\"\n                },\n                {\n                    \"begin\": \"^1\\\\.\\\\.(\\\\d+)$\",\n                    \"end\": \"$\"\n                }\n            ],\n            \"illegal\": \".\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"^#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"variable\",\n                    \"variants\": [\n                        {\n                            \"begin\": \"\\\\$[\\\\w\\\\d#@][\\\\w\\\\d_]*\"\n                        },\n                        {\n                            \"begin\": \"\\\\$\\\\{(.*?)}\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"variable\",\n                    \"begin\": \"\\\\$\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2.contains.0\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.1\"\n        },\n        {\n            \"begin\": \"[\\\\w\\\\-]+\\\\=([^\\\\s\\\\{\\\\}\\\\[\\\\]\\\\(\\\\)]+)\",\n            \"relevance\": 0,\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"className\": \"attribute\",\n                    \"begin\": \"[^=]+\"\n                },\n                {\n                    \"begin\": \"=\",\n                    \"endsWithParent\": true,\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.3\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2.contains.1\"\n                        },\n                        {\n                            \"className\": \"literal\",\n                            \"begin\": \"\\\\b(true|false|yes|no|nothing|nil|null)\\\\b\"\n                        },\n                        {\n                            \"begin\": \"(\\\"[^\\\"]*\\\"|[^\\\\s\\\\{\\\\}\\\\[\\\\]]+)\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\*[0-9a-fA-F]+\"\n        },\n        {\n            \"begin\": \"\\\\b(add|remove|enable|disable|set|get|print|export|edit|find|run|debug|error|info|warning)([\\\\s[(]|])\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"className\": \"builtin-name\",\n                    \"begin\": \"\\\\w+\"\n                }\n            ]\n        },\n        {\n            \"className\": \"built_in\",\n            \"variants\": [\n                {\n                    \"begin\": \"(\\\\.\\\\.\\/|\\/|\\\\s)((traffic-flow|traffic-generator|firewall|scheduler|aaa|accounting|address-list|address|align|area|bandwidth-server|bfd|bgp|bridge|client|clock|community|config|connection|console|customer|default|dhcp-client|dhcp-server|discovery|dns|e-mail|ethernet|filter|firewall|firmware|gps|graphing|group|hardware|health|hotspot|identity|igmp-proxy|incoming|instance|interface|ip|ipsec|ipv6|irq|l2tp-server|lcd|ldp|logging|mac-server|mac-winbox|mangle|manual|mirror|mme|mpls|nat|nd|neighbor|network|note|ntp|ospf|ospf-v3|ovpn-server|page|peer|pim|ping|policy|pool|port|ppp|pppoe-client|pptp-server|prefix|profile|proposal|proxy|queue|radius|resource|rip|ripng|route|routing|screen|script|security-profiles|server|service|service-port|settings|shares|smb|sms|sniffer|snmp|snooper|socks|sstp-server|system|tool|tracking|type|upgrade|upnp|user-manager|users|user|vlan|secret|vrrp|watchdog|web-access|wireless|pptp|pppoe|lan|wan|layer7-protocol|lease|simple|raw);?\\\\s)+\",\n                    \"relevance\": 10\n                },\n                {\n                    \"begin\": \"\\\\.\\\\.\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/rsl.json",
    "content": "{\n    \"keywords\": {\n        \"keyword\": \"float color point normal vector matrix while for if do return else break extern continue\",\n        \"built_in\": \"abs acos ambient area asin atan atmosphere attribute calculatenormal ceil cellnoise clamp comp concat cos degrees depth Deriv diffuse distance Du Dv environment exp faceforward filterstep floor format fresnel incident length lightsource log match max min mod noise normalize ntransform opposite option phong pnoise pow printf ptlined radians random reflect refract renderinfo round setcomp setxcomp setycomp setzcomp shadow sign sin smoothstep specular specularbrdf spline sqrt step tan texture textureinfo trace transform vtransform xcomp ycomp zcomp\"\n    },\n    \"illegal\": \"<\\/\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"#\",\n            \"end\": \"$\"\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"surface displacement light volume imager\",\n            \"end\": \"\\\\(\"\n        },\n        {\n            \"beginKeywords\": \"illuminate illuminance gather\",\n            \"end\": \"\\\\(\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/ruby.json",
    "content": "{\n    \"aliases\": [\n        \"rb\",\n        \"gemspec\",\n        \"podspec\",\n        \"thor\",\n        \"irb\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor\",\n        \"literal\": \"true false nil\"\n    },\n    \"illegal\": \"\\\\\\/\\\\*\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"@[A-Za-z]+\"\n                },\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"^\\\\=begin\",\n            \"end\": \"^\\\\=end\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.1\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"^__END__\",\n            \"end\": \"\\\\n$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.1\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"begin\": \"^\\\\s*=>\",\n            \"starts\": {\n                \"end\": \"$\",\n                \"contains\": [\n                    {\n                        \"className\": \"string\",\n                        \"contains\": [\n                            {\n                                \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                                \"relevance\": 0\n                            },\n                            {\n                                \"className\": \"subst\",\n                                \"begin\": \"#\\\\{\",\n                                \"end\": \"}\",\n                                \"keywords\": {\n                                    \"$ref\": \"#keywords\"\n                                },\n                                \"contains\": {\n                                    \"$ref\": \"#contains.3.starts.contains\"\n                                }\n                            }\n                        ],\n                        \"variants\": [\n                            {\n                                \"begin\": \"'\",\n                                \"end\": \"'\"\n                            },\n                            {\n                                \"begin\": \"\\\"\",\n                                \"end\": \"\\\"\"\n                            },\n                            {\n                                \"begin\": \"`\",\n                                \"end\": \"`\"\n                            },\n                            {\n                                \"begin\": \"%[qQwWx]?\\\\(\",\n                                \"end\": \"\\\\)\"\n                            },\n                            {\n                                \"begin\": \"%[qQwWx]?\\\\[\",\n                                \"end\": \"\\\\]\"\n                            },\n                            {\n                                \"begin\": \"%[qQwWx]?{\",\n                                \"end\": \"}\"\n                            },\n                            {\n                                \"begin\": \"%[qQwWx]?<\",\n                                \"end\": \">\"\n                            },\n                            {\n                                \"begin\": \"%[qQwWx]?\\/\",\n                                \"end\": \"\\/\"\n                            },\n                            {\n                                \"begin\": \"%[qQwWx]?%\",\n                                \"end\": \"%\"\n                            },\n                            {\n                                \"begin\": \"%[qQwWx]?-\",\n                                \"end\": \"-\"\n                            },\n                            {\n                                \"begin\": \"%[qQwWx]?\\\\|\",\n                                \"end\": \"\\\\|\"\n                            },\n                            {\n                                \"begin\": \"\\\\B\\\\?(\\\\\\\\\\\\d{1,3}|\\\\\\\\x[A-Fa-f0-9]{1,2}|\\\\\\\\u[A-Fa-f0-9]{4}|\\\\\\\\?\\\\S)\\\\b\"\n                            },\n                            {\n                                \"begin\": \"<<[-~]?'?(\\\\w+)(?:.|\\\\n)*?\\\\n\\\\s*\\\\1\\\\b\",\n                                \"returnBegin\": true,\n                                \"contains\": [\n                                    {\n                                        \"begin\": \"<<[-~]?'?\"\n                                    },\n                                    {\n                                        \"begin\": \"\\\\w+\",\n                                        \"endSameAsBegin\": true,\n                                        \"contains\": [\n                                            {\n                                                \"$ref\": \"#contains.3.starts.contains.0.contains.0\"\n                                            },\n                                            {\n                                                \"$ref\": \"#contains.3.starts.contains.0.contains.1\"\n                                            }\n                                        ]\n                                    }\n                                ]\n                            }\n                        ]\n                    },\n                    {\n                        \"begin\": \"#<\",\n                        \"end\": \">\"\n                    },\n                    {\n                        \"className\": \"class\",\n                        \"beginKeywords\": \"class module\",\n                        \"end\": \"$|;\",\n                        \"illegal\": \"=\",\n                        \"contains\": [\n                            {\n                                \"className\": \"title\",\n                                \"begin\": \"[A-Za-z_]\\\\w*(::\\\\w+)*(\\\\?|\\\\!)?\",\n                                \"relevance\": 0\n                            },\n                            {\n                                \"begin\": \"<\\\\s*\",\n                                \"contains\": [\n                                    {\n                                        \"begin\": \"([a-zA-Z]\\\\w*::)?[a-zA-Z]\\\\w*\"\n                                    }\n                                ]\n                            },\n                            {\n                                \"$ref\": \"#contains.0\"\n                            },\n                            {\n                                \"$ref\": \"#contains.1\"\n                            },\n                            {\n                                \"$ref\": \"#contains.2\"\n                            }\n                        ]\n                    },\n                    {\n                        \"className\": \"function\",\n                        \"beginKeywords\": \"def\",\n                        \"end\": \"$|;\",\n                        \"contains\": [\n                            {\n                                \"className\": \"title\",\n                                \"begin\": \"[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-\\/+%^&*~`|]|\\\\[\\\\]=?\",\n                                \"relevance\": 0\n                            },\n                            {\n                                \"className\": \"params\",\n                                \"begin\": \"\\\\(\",\n                                \"end\": \"\\\\)\",\n                                \"endsParent\": true,\n                                \"keywords\": {\n                                    \"$ref\": \"#keywords\"\n                                },\n                                \"contains\": {\n                                    \"$ref\": \"#contains.3.starts.contains\"\n                                }\n                            },\n                            {\n                                \"$ref\": \"#contains.0\"\n                            },\n                            {\n                                \"$ref\": \"#contains.1\"\n                            },\n                            {\n                                \"$ref\": \"#contains.2\"\n                            }\n                        ]\n                    },\n                    {\n                        \"begin\": \"[a-zA-Z]\\\\w*::\"\n                    },\n                    {\n                        \"className\": \"symbol\",\n                        \"begin\": \"[a-zA-Z_]\\\\w*(\\\\!|\\\\?)?:\",\n                        \"relevance\": 0\n                    },\n                    {\n                        \"className\": \"symbol\",\n                        \"begin\": \":(?!\\\\s)\",\n                        \"contains\": [\n                            {\n                                \"$ref\": \"#contains.3.starts.contains.0\"\n                            },\n                            {\n                                \"begin\": \"[a-zA-Z_]\\\\w*[!?=]?|[-+~]\\\\@|<<|>>|=~|===?|<=>|[<>]=?|\\\\*\\\\*|[-\\/+%^&*~`|]|\\\\[\\\\]=?\"\n                            }\n                        ],\n                        \"relevance\": 0\n                    },\n                    {\n                        \"className\": \"number\",\n                        \"begin\": \"(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b\",\n                        \"relevance\": 0\n                    },\n                    {\n                        \"begin\": \"(\\\\$\\\\W)|((\\\\$|\\\\@\\\\@?)(\\\\w+))\"\n                    },\n                    {\n                        \"className\": \"params\",\n                        \"begin\": \"\\\\|\",\n                        \"end\": \"\\\\|\",\n                        \"keywords\": {\n                            \"$ref\": \"#keywords\"\n                        }\n                    },\n                    {\n                        \"begin\": \"(!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|\\/=|\\/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~|unless)\\\\s*\",\n                        \"keywords\": \"unless\",\n                        \"contains\": [\n                            {\n                                \"$ref\": \"#contains.3.starts.contains.1\"\n                            },\n                            {\n                                \"className\": \"regexp\",\n                                \"contains\": [\n                                    {\n                                        \"$ref\": \"#contains.3.starts.contains.0.contains.0\"\n                                    },\n                                    {\n                                        \"$ref\": \"#contains.3.starts.contains.0.contains.1\"\n                                    }\n                                ],\n                                \"illegal\": \"\\\\n\",\n                                \"variants\": [\n                                    {\n                                        \"begin\": \"\\/\",\n                                        \"end\": \"\\/[a-z]*\"\n                                    },\n                                    {\n                                        \"begin\": \"%r{\",\n                                        \"end\": \"}[a-z]*\"\n                                    },\n                                    {\n                                        \"begin\": \"%r\\\\(\",\n                                        \"end\": \"\\\\)[a-z]*\"\n                                    },\n                                    {\n                                        \"begin\": \"%r!\",\n                                        \"end\": \"![a-z]*\"\n                                    },\n                                    {\n                                        \"begin\": \"%r\\\\[\",\n                                        \"end\": \"\\\\][a-z]*\"\n                                    }\n                                ]\n                            },\n                            {\n                                \"$ref\": \"#contains.0\"\n                            },\n                            {\n                                \"$ref\": \"#contains.1\"\n                            },\n                            {\n                                \"$ref\": \"#contains.2\"\n                            }\n                        ],\n                        \"relevance\": 0\n                    },\n                    {\n                        \"$ref\": \"#contains.0\"\n                    },\n                    {\n                        \"$ref\": \"#contains.1\"\n                    },\n                    {\n                        \"$ref\": \"#contains.2\"\n                    }\n                ]\n            }\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^([>?]>|[\\\\w#]+\\\\(\\\\w+\\\\):\\\\d+:\\\\d+>|(\\\\w+-)?\\\\d+\\\\.\\\\d+\\\\.\\\\d(p\\\\d+)?[^>]+>)\",\n            \"starts\": {\n                \"end\": \"$\",\n                \"contains\": {\n                    \"$ref\": \"#contains.3.starts.contains\"\n                }\n            }\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.0\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.1\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.2\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.4\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.5\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.6\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.7\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.8\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.9\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.10\"\n        },\n        {\n            \"$ref\": \"#contains.0\"\n        },\n        {\n            \"$ref\": \"#contains.1\"\n        },\n        {\n            \"$ref\": \"#contains.2\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/ruleslanguage.json",
    "content": "{\n    \"keywords\": {\n        \"keyword\": \"BILL_PERIOD BILL_START BILL_STOP RS_EFFECTIVE_START RS_EFFECTIVE_STOP RS_JURIS_CODE RS_OPCO_CODE INTDADDATTRIBUTE|5 INTDADDVMSG|5 INTDBLOCKOP|5 INTDBLOCKOPNA|5 INTDCLOSE|5 INTDCOUNT|5 INTDCOUNTSTATUSCODE|5 INTDCREATEMASK|5 INTDCREATEDAYMASK|5 INTDCREATEFACTORMASK|5 INTDCREATEHANDLE|5 INTDCREATEOVERRIDEDAYMASK|5 INTDCREATEOVERRIDEMASK|5 INTDCREATESTATUSCODEMASK|5 INTDCREATETOUPERIOD|5 INTDDELETE|5 INTDDIPTEST|5 INTDEXPORT|5 INTDGETERRORCODE|5 INTDGETERRORMESSAGE|5 INTDISEQUAL|5 INTDJOIN|5 INTDLOAD|5 INTDLOADACTUALCUT|5 INTDLOADDATES|5 INTDLOADHIST|5 INTDLOADLIST|5 INTDLOADLISTDATES|5 INTDLOADLISTENERGY|5 INTDLOADLISTHIST|5 INTDLOADRELATEDCHANNEL|5 INTDLOADSP|5 INTDLOADSTAGING|5 INTDLOADUOM|5 INTDLOADUOMDATES|5 INTDLOADUOMHIST|5 INTDLOADVERSION|5 INTDOPEN|5 INTDREADFIRST|5 INTDREADNEXT|5 INTDRECCOUNT|5 INTDRELEASE|5 INTDREPLACE|5 INTDROLLAVG|5 INTDROLLPEAK|5 INTDSCALAROP|5 INTDSCALE|5 INTDSETATTRIBUTE|5 INTDSETDSTPARTICIPANT|5 INTDSETSTRING|5 INTDSETVALUE|5 INTDSETVALUESTATUS|5 INTDSHIFTSTARTTIME|5 INTDSMOOTH|5 INTDSORT|5 INTDSPIKETEST|5 INTDSUBSET|5 INTDTOU|5 INTDTOURELEASE|5 INTDTOUVALUE|5 INTDUPDATESTATS|5 INTDVALUE|5 STDEV INTDDELETEEX|5 INTDLOADEXACTUAL|5 INTDLOADEXCUT|5 INTDLOADEXDATES|5 INTDLOADEX|5 INTDLOADEXRELATEDCHANNEL|5 INTDSAVEEX|5 MVLOAD|5 MVLOADACCT|5 MVLOADACCTDATES|5 MVLOADACCTHIST|5 MVLOADDATES|5 MVLOADHIST|5 MVLOADLIST|5 MVLOADLISTDATES|5 MVLOADLISTHIST|5 IF FOR NEXT DONE SELECT END CALL ABORT CLEAR CHANNEL FACTOR LIST NUMBER OVERRIDE SET WEEK DISTRIBUTIONNODE ELSE WHEN THEN OTHERWISE IENUM CSV INCLUDE LEAVE RIDER SAVE DELETE NOVALUE SECTION WARN SAVE_UPDATE DETERMINANT LABEL REPORT REVENUE EACH IN FROM TOTAL CHARGE BLOCK AND OR CSV_FILE RATE_CODE AUXILIARY_DEMAND UIDACCOUNT RS BILL_PERIOD_SELECT HOURS_PER_MONTH INTD_ERROR_STOP SEASON_SCHEDULE_NAME ACCOUNTFACTOR ARRAYUPPERBOUND CALLSTOREDPROC GETADOCONNECTION GETCONNECT GETDATASOURCE GETQUALIFIER GETUSERID HASVALUE LISTCOUNT LISTOP LISTUPDATE LISTVALUE PRORATEFACTOR RSPRORATE SETBINPATH SETDBMONITOR WQ_OPEN BILLINGHOURS DATE DATEFROMFLOAT DATETIMEFROMSTRING DATETIMETOSTRING DATETOFLOAT DAY DAYDIFF DAYNAME DBDATETIME HOUR MINUTE MONTH MONTHDIFF MONTHHOURS MONTHNAME ROUNDDATE SAMEWEEKDAYLASTYEAR SECOND WEEKDAY WEEKDIFF YEAR YEARDAY YEARSTR COMPSUM HISTCOUNT HISTMAX HISTMIN HISTMINNZ HISTVALUE MAXNRANGE MAXRANGE MINRANGE COMPIKVA COMPKVA COMPKVARFROMKQKW COMPLF IDATTR FLAG LF2KW LF2KWH MAXKW POWERFACTOR READING2USAGE AVGSEASON MAXSEASON MONTHLYMERGE SEASONVALUE SUMSEASON ACCTREADDATES ACCTTABLELOAD CONFIGADD CONFIGGET CREATEOBJECT CREATEREPORT EMAILCLIENT EXPBLKMDMUSAGE EXPMDMUSAGE EXPORT_USAGE FACTORINEFFECT GETUSERSPECIFIEDSTOP INEFFECT ISHOLIDAY RUNRATE SAVE_PROFILE SETREPORTTITLE USEREXIT WATFORRUNRATE TO TABLE ACOS ASIN ATAN ATAN2 BITAND CEIL COS COSECANT COSH COTANGENT DIVQUOT DIVREM EXP FABS FLOOR FMOD FREPM FREXPN LOG LOG10 MAX MAXN MIN MINNZ MODF POW ROUND ROUND2VALUE ROUNDINT SECANT SIN SINH SQROOT TAN TANH FLOAT2STRING FLOAT2STRINGNC INSTR LEFT LEN LTRIM MID RIGHT RTRIM STRING STRINGNC TOLOWER TOUPPER TRIM NUMDAYS READ_DATE STAGING\",\n        \"built_in\": \"IDENTIFIER OPTIONS XML_ELEMENT XML_OP XML_ELEMENT_OF DOMDOCCREATE DOMDOCLOADFILE DOMDOCLOADXML DOMDOCSAVEFILE DOMDOCGETROOT DOMDOCADDPI DOMNODEGETNAME DOMNODEGETTYPE DOMNODEGETVALUE DOMNODEGETCHILDCT DOMNODEGETFIRSTCHILD DOMNODEGETSIBLING DOMNODECREATECHILDELEMENT DOMNODESETATTRIBUTE DOMNODEGETCHILDELEMENTCT DOMNODEGETFIRSTCHILDELEMENT DOMNODEGETSIBLINGELEMENT DOMNODEGETATTRIBUTECT DOMNODEGETATTRIBUTEI DOMNODEGETATTRIBUTEBYNAME DOMNODEGETBYNAME\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"literal\",\n            \"variants\": [\n                {\n                    \"begin\": \"#\\\\s+[a-zA-Z\\\\ \\\\.]*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"#[a-zA-Z\\\\ \\\\.]+\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/rust.json",
    "content": "{\n    \"aliases\": [\n        \"rs\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"abstract as async await become box break const continue crate do dyn else enum extern false final fn for if impl in let loop macro match mod move mut override priv pub ref return self Self static struct super trait true try type typeof unsafe unsized use virtual where while yield\",\n        \"literal\": \"true false Some None Ok Err\",\n        \"built_in\": \"drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!\"\n    },\n    \"lexemes\": \"[a-zA-Z]\\\\w*!?\",\n    \"illegal\": \"<\\/\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                \"self\",\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"b?\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": null,\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"begin\": \"r(#*)\\\"(.|\\\\n)*?\\\"\\\\1(?!#)\"\n                },\n                {\n                    \"begin\": \"b?'\\\\\\\\?(x\\\\w{2}|u\\\\w{4}|U\\\\w{8}|.)'\"\n                }\n            ]\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"'[a-zA-Z_][a-zA-Z0-9_]*\"\n        },\n        {\n            \"className\": \"number\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\b0b([01_]+)([ui](8|16|32|64|128|size)|f(32|64))?\"\n                },\n                {\n                    \"begin\": \"\\\\b0o([0-7_]+)([ui](8|16|32|64|128|size)|f(32|64))?\"\n                },\n                {\n                    \"begin\": \"\\\\b0x([A-Fa-f0-9_]+)([ui](8|16|32|64|128|size)|f(32|64))?\"\n                },\n                {\n                    \"begin\": \"\\\\b(\\\\d[\\\\d_]*(\\\\.[0-9_]+)?([eE][+-]?[0-9_]+)?)([ui](8|16|32|64|128|size)|f(32|64))?\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"fn\",\n            \"end\": \"(\\\\(|<)\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"#\\\\!?\\\\[\",\n            \"end\": \"\\\\]\",\n            \"contains\": [\n                {\n                    \"className\": \"meta-string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\"\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"type\",\n            \"end\": \";\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0,\n                    \"endsParent\": true\n                }\n            ],\n            \"illegal\": \"\\\\S\"\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"trait enum struct union\",\n            \"end\": \"{\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0,\n                    \"endsParent\": true\n                }\n            ],\n            \"illegal\": \"[\\\\w\\\\d]\"\n        },\n        {\n            \"begin\": \"[a-zA-Z]\\\\w*::\",\n            \"keywords\": {\n                \"built_in\": \"drop i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize f32 f64 str char bool Box Option Result String Vec Copy Send Sized Sync Drop Fn FnMut FnOnce ToOwned Clone Debug PartialEq PartialOrd Eq Ord AsRef AsMut Into From Default Iterator Extend IntoIterator DoubleEndedIterator ExactSizeIterator SliceConcatExt ToString assert! assert_eq! bitflags! bytes! cfg! col! concat! concat_idents! debug_assert! debug_assert_eq! env! panic! file! format! format_args! include_bin! include_str! line! local_data_key! module_path! option_env! print! println! select! stringify! try! unimplemented! unreachable! vec! write! writeln! macro_rules! assert_ne! debug_assert_ne!\"\n            }\n        },\n        {\n            \"begin\": \"->\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/sas.json",
    "content": "{\n    \"aliases\": [\n        \"sas\",\n        \"SAS\"\n    ],\n    \"case_insensitive\": true,\n    \"keywords\": {\n        \"literal\": \"null missing _all_ _automatic_ _character_ _infile_ _n_ _name_ _null_ _numeric_ _user_ _webout_\",\n        \"meta\": \"do if then else end until while abort array attrib by call cards cards4 catname continue datalines datalines4 delete delim delimiter display dm drop endsas error file filename footnote format goto in infile informat input keep label leave length libname link list lostcard merge missing modify options output out page put redirect remove rename replace retain return select set skip startsas stop title update waitsas where window x systask add and alter as cascade check create delete describe distinct drop foreign from group having index insert into in key like message modify msgtype not null on or order primary references reset restrict select set table unique update validate view where\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"^\\\\s*(proc [\\\\w\\\\d_]+|data|run|quit)[\\\\s\\\\;]\"\n        },\n        {\n            \"className\": \"variable\",\n            \"begin\": \"\\\\&[a-zA-Z_\\\\&][a-zA-Z0-9_]*\\\\.?\"\n        },\n        {\n            \"className\": \"emphasis\",\n            \"begin\": \"^\\\\s*datalines|cards.*;\",\n            \"end\": \"^\\\\s*;\\\\s*$\"\n        },\n        {\n            \"className\": \"built_in\",\n            \"begin\": \"%(bquote|nrbquote|cmpres|qcmpres|compstor|datatyp|display|do|else|end|eval|global|goto|if|index|input|keydef|label|left|length|let|local|lowcase|macro|mend|nrbquote|nrquote|nrstr|put|qcmpres|qleft|qlowcase|qscan|qsubstr|qsysfunc|qtrim|quote|qupcase|scan|str|substr|superq|syscall|sysevalf|sysexec|sysfunc|sysget|syslput|sysprod|sysrc|sysrput|then|to|trim|unquote|until|upcase|verify|while|window)\"\n        },\n        {\n            \"className\": \"name\",\n            \"begin\": \"%[a-zA-Z_][a-zA-Z_0-9]*\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"[^%](abs|addr|airy|arcos|arsin|atan|attrc|attrn|band|betainv|blshift|bnot|bor|brshift|bxor|byte|cdf|ceil|cexist|cinv|close|cnonct|collate|compbl|compound|compress|cos|cosh|css|curobs|cv|daccdb|daccdbsl|daccsl|daccsyd|dacctab|dairy|date|datejul|datepart|datetime|day|dclose|depdb|depdbsl|depdbsl|depsl|depsl|depsyd|depsyd|deptab|deptab|dequote|dhms|dif|digamma|dim|dinfo|dnum|dopen|doptname|doptnum|dread|dropnote|dsname|erf|erfc|exist|exp|fappend|fclose|fcol|fdelete|fetch|fetchobs|fexist|fget|fileexist|filename|fileref|finfo|finv|fipname|fipnamel|fipstate|floor|fnonct|fnote|fopen|foptname|foptnum|fpoint|fpos|fput|fread|frewind|frlen|fsep|fuzz|fwrite|gaminv|gamma|getoption|getvarc|getvarn|hbound|hms|hosthelp|hour|ibessel|index|indexc|indexw|input|inputc|inputn|int|intck|intnx|intrr|irr|jbessel|juldate|kurtosis|lag|lbound|left|length|lgamma|libname|libref|log|log10|log2|logpdf|logpmf|logsdf|lowcase|max|mdy|mean|min|minute|mod|month|mopen|mort|n|netpv|nmiss|normal|note|npv|open|ordinal|pathname|pdf|peek|peekc|pmf|point|poisson|poke|probbeta|probbnml|probchi|probf|probgam|probhypr|probit|probnegb|probnorm|probt|put|putc|putn|qtr|quote|ranbin|rancau|ranexp|rangam|range|rank|rannor|ranpoi|rantbl|rantri|ranuni|repeat|resolve|reverse|rewind|right|round|saving|scan|sdf|second|sign|sin|sinh|skewness|soundex|spedis|sqrt|std|stderr|stfips|stname|stnamel|substr|sum|symget|sysget|sysmsg|sysprod|sysrc|system|tan|tanh|time|timepart|tinv|tnonct|today|translate|tranwrd|trigamma|trim|trimn|trunc|uniform|upcase|uss|var|varfmt|varinfmt|varlabel|varlen|varname|varnum|varray|varrayx|vartype|verify|vformat|vformatd|vformatdx|vformatn|vformatnx|vformatw|vformatwx|vformatx|vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|vinformatn|vinformatnx|vinformatw|vinformatwx|vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|vnamex|vtype|vtypex|weekday|year|yyq|zipfips|zipname|zipnamel|zipstate)[(]\"\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.6.variants.0.contains.0\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\*\",\n            \"end\": \";\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.7.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/scala.json",
    "content": "{\n    \"keywords\": {\n        \"literal\": \"true false null\",\n        \"keyword\": \"type yield lazy override def with val var sealed abstract private trait object if forSome for while throw finally protected extends import final return else break new catch super class case package default try this match continue throws implicit\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\"\\\"\\\"\",\n                    \"end\": \"\\\"\\\"\\\"\",\n                    \"relevance\": 10\n                },\n                {\n                    \"begin\": \"[a-z]+\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2.variants.0.contains.0\"\n                        },\n                        {\n                            \"className\": \"subst\",\n                            \"variants\": [\n                                {\n                                    \"begin\": \"\\\\$[A-Za-z0-9_]+\"\n                                },\n                                {\n                                    \"begin\": \"\\\\${\",\n                                    \"end\": \"}\"\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"[a-z]+\\\"\\\"\\\"\",\n                    \"end\": \"\\\"\\\"\\\"\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.2.variants.2.contains.1\"\n                        }\n                    ],\n                    \"relevance\": 10\n                }\n            ]\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"'\\\\w[\\\\w\\\\d_]*(?!')\"\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \"\\\\b[A-Z][A-Za-z0-9_]*\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"def\",\n            \"end\": \"[:={\\\\[(\\\\n;]\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[^0-9\\\\n\\\\t \\\"'(),.`{}\\\\[\\\\]:;][^\\\\n\\\\t \\\"'(),.`{}\\\\[\\\\]:;]+|[^0-9\\\\n\\\\t \\\"'(),.`{}\\\\[\\\\]:;=]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class object trait type\",\n            \"end\": \"[:={\\\\[\\\\n;]\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"beginKeywords\": \"extends with\",\n                    \"relevance\": 10\n                },\n                {\n                    \"begin\": \"\\\\[\",\n                    \"end\": \"\\\\]\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true,\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.4\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true,\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.4\"\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.5.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"@[A-Za-z]+\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/scheme.json",
    "content": "{\n    \"illegal\": \"\\\\S\",\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^#!\",\n            \"end\": \"$\"\n        },\n        {\n            \"className\": \"number\",\n            \"variants\": [\n                {\n                    \"begin\": \"(\\\\-|\\\\+)?\\\\d+([.\\/]\\\\d+)?\",\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"(\\\\-|\\\\+)?\\\\d+([.\\/]\\\\d+)?[+\\\\-](\\\\-|\\\\+)?\\\\d+([.\\/]\\\\d+)?i\",\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"#b[0-1]+(\\/[0-1]+)?\"\n                },\n                {\n                    \"begin\": \"#o[0-7]+(\\/[0-7]+)?\"\n                },\n                {\n                    \"begin\": \"#x[0-9a-f]+(\\/[0-9a-f]+)?\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"'[^\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}\\\",'`;#|\\\\\\\\\\\\s]+\"\n        },\n        {\n            \"variants\": [\n                {\n                    \"begin\": \"'\"\n                },\n                {\n                    \"begin\": \"`\"\n                }\n            ],\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"contains\": [\n                        \"self\",\n                        {\n                            \"className\": \"literal\",\n                            \"begin\": \"(#t|#f|#\\\\\\\\[^\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}\\\",'`;#|\\\\\\\\\\\\s]+|#\\\\\\\\.)\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.1\"\n                        },\n                        {\n                            \"begin\": \"[^\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}\\\",'`;#|\\\\\\\\\\\\s]+\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"$ref\": \"#contains.3\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\"\n                },\n                {\n                    \"begin\": \"\\\\[\",\n                    \"end\": \"\\\\]\"\n                }\n            ],\n            \"contains\": [\n                {\n                    \"begin\": \"lambda\",\n                    \"endsWithParent\": true,\n                    \"returnBegin\": true,\n                    \"contains\": [\n                        {\n                            \"className\": \"name\",\n                            \"begin\": \"[^\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}\\\",'`;#|\\\\\\\\\\\\s]+\",\n                            \"lexemes\": \"[^\\\\(\\\\)\\\\[\\\\]\\\\{\\\\}\\\",'`;#|\\\\\\\\\\\\s]+\",\n                            \"keywords\": {\n                                \"builtin-name\": \"case-lambda call\\/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let\\/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit\\/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules ' * + , ,@ - ... \\/ ; < <= = => > >= ` abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci<? char-ci=? char-ci>=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char<? char=? char>=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci<? string-ci=? string-ci>=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string<? string=? string>=? string>? string? substring symbol->string symbol? tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?\"\n                            }\n                        },\n                        {\n                            \"begin\": \"\\\\(\",\n                            \"end\": \"\\\\)\",\n                            \"endsParent\": true,\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.4.contains.0.contains.4\"\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.5.contains.0.contains.0\"\n                },\n                {\n                    \"endsWithParent\": true,\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.4.contains.0.contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.2\"\n                        },\n                        {\n                            \"$ref\": \"#contains.4.contains.0.contains.4\"\n                        },\n                        {\n                            \"$ref\": \"#contains.3\"\n                        },\n                        {\n                            \"$ref\": \"#contains.4\"\n                        },\n                        {\n                            \"$ref\": \"#contains.5\"\n                        },\n                        {\n                            \"className\": \"comment\",\n                            \"begin\": \";\",\n                            \"end\": \"$\",\n                            \"contains\": [\n                                {\n                                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                                },\n                                {\n                                    \"className\": \"doctag\",\n                                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                    \"relevance\": 0\n                                }\n                            ],\n                            \"relevance\": 0\n                        },\n                        {\n                            \"className\": \"comment\",\n                            \"begin\": \"#\\\\|\",\n                            \"end\": \"\\\\|#\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.5.contains.2.contains.7.contains.0\"\n                                },\n                                {\n                                    \"className\": \"doctag\",\n                                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.5.contains.2.contains.7\"\n        },\n        {\n            \"$ref\": \"#contains.5.contains.2.contains.8\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/scilab.json",
    "content": "{\n    \"aliases\": [\n        \"sci\"\n    ],\n    \"lexemes\": \"%?\\\\w+\",\n    \"keywords\": {\n        \"keyword\": \"abort break case clear catch continue do elseif else endfunction end for function global if pause return resume select try then while\",\n        \"literal\": \"%f %F %t %T %pi %eps %inf %nan %e %i %z %s\",\n        \"built_in\": \"abs and acos asin atan ceil cd chdir clearglobal cosh cos cumprod deff disp error exec execstr exists exp eye gettext floor fprintf fread fsolve imag isdef isempty isinfisnan isvector lasterror length load linspace list listfiles log10 log2 log max min msprintf mclose mopen ones or pathconvert poly printf prod pwd rand real round sinh sin size gsort sprintf sqrt strcat strcmps tring sum system tanh tan type typename warning zeros matrix\"\n    },\n    \"illegal\": \"(\\\"|#|\\/\\\\*|\\\\s+\\/\\\\w+)\",\n    \"contains\": [\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"function\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"[a-zA-Z_][a-zA-Z_0-9]*('+[\\\\.']*|[\\\\.']+)\",\n            \"end\": \"\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"\\\\[\",\n            \"end\": \"\\\\]'*[\\\\.']*\",\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"'|\\\"\",\n                    \"end\": \"'|\\\"\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"begin\": \"''\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.2.contains.0\"\n        },\n        {\n            \"$ref\": \"#contains.2.contains.1\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/scss.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"illegal\": \"[=\\/|']\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"selector-id\",\n            \"begin\": \"\\\\#[A-Za-z0-9_\\\\-]+\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"selector-class\",\n            \"begin\": \"\\\\.[A-Za-z0-9_\\\\-]+\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"selector-attr\",\n            \"begin\": \"\\\\[\",\n            \"end\": \"\\\\]\",\n            \"illegal\": \"$\"\n        },\n        {\n            \"className\": \"selector-tag\",\n            \"begin\": \"\\\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\\\b\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"selector-pseudo\",\n            \"begin\": \":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)\"\n        },\n        {\n            \"className\": \"selector-pseudo\",\n            \"begin\": \"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)\"\n        },\n        {\n            \"className\": \"variable\",\n            \"begin\": \"(\\\\$[a-zA-Z\\\\-][a-zA-Z0-9_\\\\-]*)\\\\b\"\n        },\n        {\n            \"className\": \"attribute\",\n            \"begin\": \"\\\\b(src|z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\\\b\",\n            \"illegal\": \"[^\\\\s]\"\n        },\n        {\n            \"begin\": \"\\\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\\\b\"\n        },\n        {\n            \"begin\": \":\",\n            \"end\": \";\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.8\"\n                },\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"#[0-9A-Fa-f]+\"\n                },\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.11.contains.3.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"meta\",\n                    \"begin\": \"!important\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"@(page|font-face)\",\n            \"lexemes\": \"@[a-z\\\\-]+\",\n            \"keywords\": \"@page @font-face\"\n        },\n        {\n            \"begin\": \"@\",\n            \"end\": \"[{;]\",\n            \"returnBegin\": true,\n            \"keywords\": \"and or not only\",\n            \"contains\": [\n                {\n                    \"begin\": \"@[a-z\\\\-]+\",\n                    \"className\": \"keyword\"\n                },\n                {\n                    \"$ref\": \"#contains.8\"\n                },\n                {\n                    \"$ref\": \"#contains.11.contains.3\"\n                },\n                {\n                    \"$ref\": \"#contains.11.contains.4\"\n                },\n                {\n                    \"$ref\": \"#contains.11.contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.11.contains.2\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/shell.json",
    "content": "{\n    \"aliases\": [\n        \"console\"\n    ],\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^\\\\s{0,3}[\\/\\\\w\\\\d\\\\[\\\\]()@-]*[>%$#]\",\n            \"starts\": {\n                \"end\": \"$\",\n                \"subLanguage\": \"bash\"\n            }\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/smali.json",
    "content": "{\n    \"aliases\": [\n        \"smali\"\n    ],\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"keyword\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\s*\\\\.end\\\\s[a-zA-Z0-9]*\"\n                },\n                {\n                    \"begin\": \"^[ ]*\\\\.[a-zA-Z]*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"\\\\s:[a-zA-Z_0-9]*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"\\\\s(transient|constructor|abstract|final|synthetic|public|private|protected|static|bridge|system)\"\n                }\n            ]\n        },\n        {\n            \"className\": \"built_in\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\s(add|and|cmp|cmpg|cmpl|const|div|double|float|goto|if|int|long|move|mul|neg|new|nop|not|or|rem|return|shl|shr|sput|sub|throw|ushr|xor)\\\\s\"\n                },\n                {\n                    \"begin\": \"\\\\s(add|and|cmp|cmpg|cmpl|const|div|double|float|goto|if|int|long|move|mul|neg|new|nop|not|or|rem|return|shl|shr|sput|sub|throw|ushr|xor)((\\\\-|\\/)[a-zA-Z0-9]+)+\\\\s\",\n                    \"relevance\": 10\n                },\n                {\n                    \"begin\": \"\\\\s(aget|aput|array|check|execute|fill|filled|goto\\/16|goto\\/32|iget|instance|invoke|iput|monitor|packed|sget|sparse)((\\\\-|\\/)[a-zA-Z0-9]+)*\\\\s\",\n                    \"relevance\": 10\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"begin\": \"L[^(;:\\n]*;\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"[vp][0-9]+\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/smalltalk.json",
    "content": "{\n    \"aliases\": [\n        \"st\"\n    ],\n    \"keywords\": \"self super nil true false thisContext\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \"\\\\b[A-Z][A-Za-z0-9_]*\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"[a-z][a-zA-Z0-9_]*:\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"#[a-zA-Z_]\\\\w*\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\\$.{1}\"\n        },\n        {\n            \"begin\": \"\\\\|[ ]*[a-z][a-zA-Z0-9_]*([ ]+[a-z][a-zA-Z0-9_]*)*[ ]*\\\\|\",\n            \"returnBegin\": true,\n            \"end\": \"\\\\|\",\n            \"illegal\": \"\\\\S\",\n            \"contains\": [\n                {\n                    \"begin\": \"(\\\\|[ ]*)?[a-z][a-zA-Z0-9_]*\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"\\\\#\\\\(\",\n            \"end\": \"\\\\)\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.6\"\n                },\n                {\n                    \"$ref\": \"#contains.4\"\n                },\n                {\n                    \"$ref\": \"#contains.5\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/sml.json",
    "content": "{\n    \"aliases\": [\n        \"ml\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"abstype and andalso as case datatype do else end eqtype exception fn fun functor handle if in include infix infixr let local nonfix of op open orelse raise rec sharing sig signature struct structure then type val with withtype where while\",\n        \"built_in\": \"array bool char exn int list option order real ref string substring vector unit word\",\n        \"literal\": \"true false NONE SOME LESS EQUAL GREATER nil\"\n    },\n    \"illegal\": \"\\\\\\/\\\\\\/|>>\",\n    \"lexemes\": \"[a-z_]\\\\w*!?\",\n    \"contains\": [\n        {\n            \"className\": \"literal\",\n            \"begin\": \"\\\\[(\\\\|\\\\|)?\\\\]|\\\\(\\\\)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\(\\\\*\",\n            \"end\": \"\\\\*\\\\)\",\n            \"contains\": [\n                \"self\",\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"'[A-Za-z_](?!')[\\\\w']*\"\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \"`[A-Z][\\\\w']*\"\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \"\\\\b[A-Z][\\\\w']*\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"[a-z_]\\\\w*'[\\\\w']*\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": null,\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"[-=]>\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/sqf.json",
    "content": "{\n    \"aliases\": [\n        \"sqf\"\n    ],\n    \"case_insensitive\": true,\n    \"keywords\": {\n        \"keyword\": \"case catch default do else exit exitWith for forEach from if private switch then throw to try waitUntil while with\",\n        \"built_in\": \"abs accTime acos action actionIDs actionKeys actionKeysImages actionKeysNames actionKeysNamesArray actionName actionParams activateAddons activatedAddons activateKey add3DENConnection add3DENEventHandler add3DENLayer addAction addBackpack addBackpackCargo addBackpackCargoGlobal addBackpackGlobal addCamShake addCuratorAddons addCuratorCameraArea addCuratorEditableObjects addCuratorEditingArea addCuratorPoints addEditorObject addEventHandler addForce addGoggles addGroupIcon addHandgunItem addHeadgear addItem addItemCargo addItemCargoGlobal addItemPool addItemToBackpack addItemToUniform addItemToVest addLiveStats addMagazine addMagazineAmmoCargo addMagazineCargo addMagazineCargoGlobal addMagazineGlobal addMagazinePool addMagazines addMagazineTurret addMenu addMenuItem addMissionEventHandler addMPEventHandler addMusicEventHandler addOwnedMine addPlayerScores addPrimaryWeaponItem addPublicVariableEventHandler addRating addResources addScore addScoreSide addSecondaryWeaponItem addSwitchableUnit addTeamMember addToRemainsCollector addTorque addUniform addVehicle addVest addWaypoint addWeapon addWeaponCargo addWeaponCargoGlobal addWeaponGlobal addWeaponItem addWeaponPool addWeaponTurret admin agent agents AGLToASL aimedAtTarget aimPos airDensityRTD airplaneThrottle airportSide AISFinishHeal alive all3DENEntities allAirports allControls allCurators allCutLayers allDead allDeadMen allDisplays allGroups allMapMarkers allMines allMissionObjects allow3DMode allowCrewInImmobile allowCuratorLogicIgnoreAreas allowDamage allowDammage allowFileOperations allowFleeing allowGetIn allowSprint allPlayers allSimpleObjects allSites allTurrets allUnits allUnitsUAV allVariables ammo ammoOnPylon and animate animateBay animateDoor animatePylon animateSource animationNames animationPhase animationSourcePhase animationState append apply armoryPoints arrayIntersect asin ASLToAGL ASLToATL assert assignAsCargo assignAsCargoIndex assignAsCommander assignAsDriver assignAsGunner assignAsTurret assignCurator assignedCargo assignedCommander assignedDriver assignedGunner assignedItems assignedTarget assignedTeam assignedVehicle assignedVehicleRole assignItem assignTeam assignToAirport atan atan2 atg ATLToASL attachedObject attachedObjects attachedTo attachObject attachTo attackEnabled backpack backpackCargo backpackContainer backpackItems backpackMagazines backpackSpaceFor behaviour benchmark binocular boundingBox boundingBoxReal boundingCenter breakOut breakTo briefingName buildingExit buildingPos buttonAction buttonSetAction cadetMode call callExtension camCommand camCommit camCommitPrepared camCommitted camConstuctionSetParams camCreate camDestroy cameraEffect cameraEffectEnableHUD cameraInterest cameraOn cameraView campaignConfigFile camPreload camPreloaded camPrepareBank camPrepareDir camPrepareDive camPrepareFocus camPrepareFov camPrepareFovRange camPreparePos camPrepareRelPos camPrepareTarget camSetBank camSetDir camSetDive camSetFocus camSetFov camSetFovRange camSetPos camSetRelPos camSetTarget camTarget camUseNVG canAdd canAddItemToBackpack canAddItemToUniform canAddItemToVest cancelSimpleTaskDestination canFire canMove canSlingLoad canStand canSuspend canTriggerDynamicSimulation canUnloadInCombat canVehicleCargo captive captiveNum cbChecked cbSetChecked ceil channelEnabled cheatsEnabled checkAIFeature checkVisibility className clearAllItemsFromBackpack clearBackpackCargo clearBackpackCargoGlobal clearGroupIcons clearItemCargo clearItemCargoGlobal clearItemPool clearMagazineCargo clearMagazineCargoGlobal clearMagazinePool clearOverlay clearRadio clearWeaponCargo clearWeaponCargoGlobal clearWeaponPool clientOwner closeDialog closeDisplay closeOverlay collapseObjectTree collect3DENHistory collectiveRTD combatMode commandArtilleryFire commandChat commander commandFire commandFollow commandFSM commandGetOut commandingMenu commandMove commandRadio commandStop commandSuppressiveFire commandTarget commandWatch comment commitOverlay compile compileFinal completedFSM composeText configClasses configFile configHierarchy configName configProperties configSourceAddonList configSourceMod configSourceModList confirmSensorTarget connectTerminalToUAV controlsGroupCtrl copyFromClipboard copyToClipboard copyWaypoints cos count countEnemy countFriendly countSide countType countUnknown create3DENComposition create3DENEntity createAgent createCenter createDialog createDiaryLink createDiaryRecord createDiarySubject createDisplay createGearDialog createGroup createGuardedPoint createLocation createMarker createMarkerLocal createMenu createMine createMissionDisplay createMPCampaignDisplay createSimpleObject createSimpleTask createSite createSoundSource createTask createTeam createTrigger createUnit createVehicle createVehicleCrew createVehicleLocal crew ctAddHeader ctAddRow ctClear ctCurSel ctData ctFindHeaderRows ctFindRowHeader ctHeaderControls ctHeaderCount ctRemoveHeaders ctRemoveRows ctrlActivate ctrlAddEventHandler ctrlAngle ctrlAutoScrollDelay ctrlAutoScrollRewind ctrlAutoScrollSpeed ctrlChecked ctrlClassName ctrlCommit ctrlCommitted ctrlCreate ctrlDelete ctrlEnable ctrlEnabled ctrlFade ctrlHTMLLoaded ctrlIDC ctrlIDD ctrlMapAnimAdd ctrlMapAnimClear ctrlMapAnimCommit ctrlMapAnimDone ctrlMapCursor ctrlMapMouseOver ctrlMapScale ctrlMapScreenToWorld ctrlMapWorldToScreen ctrlModel ctrlModelDirAndUp ctrlModelScale ctrlParent ctrlParentControlsGroup ctrlPosition ctrlRemoveAllEventHandlers ctrlRemoveEventHandler ctrlScale ctrlSetActiveColor ctrlSetAngle ctrlSetAutoScrollDelay ctrlSetAutoScrollRewind ctrlSetAutoScrollSpeed ctrlSetBackgroundColor ctrlSetChecked ctrlSetEventHandler ctrlSetFade ctrlSetFocus ctrlSetFont ctrlSetFontH1 ctrlSetFontH1B ctrlSetFontH2 ctrlSetFontH2B ctrlSetFontH3 ctrlSetFontH3B ctrlSetFontH4 ctrlSetFontH4B ctrlSetFontH5 ctrlSetFontH5B ctrlSetFontH6 ctrlSetFontH6B ctrlSetFontHeight ctrlSetFontHeightH1 ctrlSetFontHeightH2 ctrlSetFontHeightH3 ctrlSetFontHeightH4 ctrlSetFontHeightH5 ctrlSetFontHeightH6 ctrlSetFontHeightSecondary ctrlSetFontP ctrlSetFontPB ctrlSetFontSecondary ctrlSetForegroundColor ctrlSetModel ctrlSetModelDirAndUp ctrlSetModelScale ctrlSetPixelPrecision ctrlSetPosition ctrlSetScale ctrlSetStructuredText ctrlSetText ctrlSetTextColor ctrlSetTooltip ctrlSetTooltipColorBox ctrlSetTooltipColorShade ctrlSetTooltipColorText ctrlShow ctrlShown ctrlText ctrlTextHeight ctrlTextWidth ctrlType ctrlVisible ctRowControls ctRowCount ctSetCurSel ctSetData ctSetHeaderTemplate ctSetRowTemplate ctSetValue ctValue curatorAddons curatorCamera curatorCameraArea curatorCameraAreaCeiling curatorCoef curatorEditableObjects curatorEditingArea curatorEditingAreaType curatorMouseOver curatorPoints curatorRegisteredObjects curatorSelected curatorWaypointCost current3DENOperation currentChannel currentCommand currentMagazine currentMagazineDetail currentMagazineDetailTurret currentMagazineTurret currentMuzzle currentNamespace currentTask currentTasks currentThrowable currentVisionMode currentWaypoint currentWeapon currentWeaponMode currentWeaponTurret currentZeroing cursorObject cursorTarget customChat customRadio cutFadeOut cutObj cutRsc cutText damage date dateToNumber daytime deActivateKey debriefingText debugFSM debugLog deg delete3DENEntities deleteAt deleteCenter deleteCollection deleteEditorObject deleteGroup deleteGroupWhenEmpty deleteIdentity deleteLocation deleteMarker deleteMarkerLocal deleteRange deleteResources deleteSite deleteStatus deleteTeam deleteVehicle deleteVehicleCrew deleteWaypoint detach detectedMines diag_activeMissionFSMs diag_activeScripts diag_activeSQFScripts diag_activeSQSScripts diag_captureFrame diag_captureFrameToFile diag_captureSlowFrame diag_codePerformance diag_drawMode diag_enable diag_enabled diag_fps diag_fpsMin diag_frameNo diag_lightNewLoad diag_list diag_log diag_logSlowFrame diag_mergeConfigFile diag_recordTurretLimits diag_setLightNew diag_tickTime diag_toggle dialog diarySubjectExists didJIP didJIPOwner difficulty difficultyEnabled difficultyEnabledRTD difficultyOption direction directSay disableAI disableCollisionWith disableConversation disableDebriefingStats disableMapIndicators disableNVGEquipment disableRemoteSensors disableSerialization disableTIEquipment disableUAVConnectability disableUserInput displayAddEventHandler displayCtrl displayParent displayRemoveAllEventHandlers displayRemoveEventHandler displaySetEventHandler dissolveTeam distance distance2D distanceSqr distributionRegion do3DENAction doArtilleryFire doFire doFollow doFSM doGetOut doMove doorPhase doStop doSuppressiveFire doTarget doWatch drawArrow drawEllipse drawIcon drawIcon3D drawLine drawLine3D drawLink drawLocation drawPolygon drawRectangle drawTriangle driver drop dynamicSimulationDistance dynamicSimulationDistanceCoef dynamicSimulationEnabled dynamicSimulationSystemEnabled echo edit3DENMissionAttributes editObject editorSetEventHandler effectiveCommander emptyPositions enableAI enableAIFeature enableAimPrecision enableAttack enableAudioFeature enableAutoStartUpRTD enableAutoTrimRTD enableCamShake enableCaustics enableChannel enableCollisionWith enableCopilot enableDebriefingStats enableDiagLegend enableDynamicSimulation enableDynamicSimulationSystem enableEndDialog enableEngineArtillery enableEnvironment enableFatigue enableGunLights enableInfoPanelComponent enableIRLasers enableMimics enablePersonTurret enableRadio enableReload enableRopeAttach enableSatNormalOnDetail enableSaving enableSentences enableSimulation enableSimulationGlobal enableStamina enableTeamSwitch enableTraffic enableUAVConnectability enableUAVWaypoints enableVehicleCargo enableVehicleSensor enableWeaponDisassembly endLoadingScreen endMission engineOn enginesIsOnRTD enginesRpmRTD enginesTorqueRTD entities environmentEnabled estimatedEndServerTime estimatedTimeLeft evalObjectArgument everyBackpack everyContainer exec execEditorScript execFSM execVM exp expectedDestination exportJIPMessages eyeDirection eyePos face faction fadeMusic fadeRadio fadeSound fadeSpeech failMission fillWeaponsFromPool find findCover findDisplay findEditorObject findEmptyPosition findEmptyPositionReady findIf findNearestEnemy finishMissionInit finite fire fireAtTarget firstBackpack flag flagAnimationPhase flagOwner flagSide flagTexture fleeing floor flyInHeight flyInHeightASL fog fogForecast fogParams forceAddUniform forcedMap forceEnd forceFlagTexture forceFollowRoad forceMap forceRespawn forceSpeed forceWalk forceWeaponFire forceWeatherChange forEachMember forEachMemberAgent forEachMemberTeam forgetTarget format formation formationDirection formationLeader formationMembers formationPosition formationTask formatText formLeader freeLook fromEditor fuel fullCrew gearIDCAmmoCount gearSlotAmmoCount gearSlotData get3DENActionState get3DENAttribute get3DENCamera get3DENConnections get3DENEntity get3DENEntityID get3DENGrid get3DENIconsVisible get3DENLayerEntities get3DENLinesVisible get3DENMissionAttribute get3DENMouseOver get3DENSelected getAimingCoef getAllEnvSoundControllers getAllHitPointsDamage getAllOwnedMines getAllSoundControllers getAmmoCargo getAnimAimPrecision getAnimSpeedCoef getArray getArtilleryAmmo getArtilleryComputerSettings getArtilleryETA getAssignedCuratorLogic getAssignedCuratorUnit getBackpackCargo getBleedingRemaining getBurningValue getCameraViewDirection getCargoIndex getCenterOfMass getClientState getClientStateNumber getCompatiblePylonMagazines getConnectedUAV getContainerMaxLoad getCursorObjectParams getCustomAimCoef getDammage getDescription getDir getDirVisual getDLCAssetsUsage getDLCAssetsUsageByName getDLCs getEditorCamera getEditorMode getEditorObjectScope getElevationOffset getEnvSoundController getFatigue getForcedFlagTexture getFriend getFSMVariable getFuelCargo getGroupIcon getGroupIconParams getGroupIcons getHideFrom getHit getHitIndex getHitPointDamage getItemCargo getMagazineCargo getMarkerColor getMarkerPos getMarkerSize getMarkerType getMass getMissionConfig getMissionConfigValue getMissionDLCs getMissionLayerEntities getModelInfo getMousePosition getMusicPlayedTime getNumber getObjectArgument getObjectChildren getObjectDLC getObjectMaterials getObjectProxy getObjectTextures getObjectType getObjectViewDistance getOxygenRemaining getPersonUsedDLCs getPilotCameraDirection getPilotCameraPosition getPilotCameraRotation getPilotCameraTarget getPlateNumber getPlayerChannel getPlayerScores getPlayerUID getPos getPosASL getPosASLVisual getPosASLW getPosATL getPosATLVisual getPosVisual getPosWorld getPylonMagazines getRelDir getRelPos getRemoteSensorsDisabled getRepairCargo getResolution getShadowDistance getShotParents getSlingLoad getSoundController getSoundControllerResult getSpeed getStamina getStatValue getSuppression getTerrainGrid getTerrainHeightASL getText getTotalDLCUsageTime getUnitLoadout getUnitTrait getUserMFDText getUserMFDvalue getVariable getVehicleCargo getWeaponCargo getWeaponSway getWingsOrientationRTD getWingsPositionRTD getWPPos glanceAt globalChat globalRadio goggles goto group groupChat groupFromNetId groupIconSelectable groupIconsVisible groupId groupOwner groupRadio groupSelectedUnits groupSelectUnit gunner gusts halt handgunItems handgunMagazine handgunWeapon handsHit hasInterface hasPilotCamera hasWeapon hcAllGroups hcGroupParams hcLeader hcRemoveAllGroups hcRemoveGroup hcSelected hcSelectGroup hcSetGroup hcShowBar hcShownBar headgear hideBody hideObject hideObjectGlobal hideSelection hint hintC hintCadet hintSilent hmd hostMission htmlLoad HUDMovementLevels humidity image importAllGroups importance in inArea inAreaArray incapacitatedState inflame inflamed infoPanel infoPanelComponentEnabled infoPanelComponents infoPanels inGameUISetEventHandler inheritsFrom initAmbientLife inPolygon inputAction inRangeOfArtillery insertEditorObject intersect is3DEN is3DENMultiplayer isAbleToBreathe isAgent isArray isAutoHoverOn isAutonomous isAutotest isBleeding isBurning isClass isCollisionLightOn isCopilotEnabled isDamageAllowed isDedicated isDLCAvailable isEngineOn isEqualTo isEqualType isEqualTypeAll isEqualTypeAny isEqualTypeArray isEqualTypeParams isFilePatchingEnabled isFlashlightOn isFlatEmpty isForcedWalk isFormationLeader isGroupDeletedWhenEmpty isHidden isInRemainsCollector isInstructorFigureEnabled isIRLaserOn isKeyActive isKindOf isLaserOn isLightOn isLocalized isManualFire isMarkedForCollection isMultiplayer isMultiplayerSolo isNil isNull isNumber isObjectHidden isObjectRTD isOnRoad isPipEnabled isPlayer isRealTime isRemoteExecuted isRemoteExecutedJIP isServer isShowing3DIcons isSimpleObject isSprintAllowed isStaminaEnabled isSteamMission isStreamFriendlyUIEnabled isText isTouchingGround isTurnedOut isTutHintsEnabled isUAVConnectable isUAVConnected isUIContext isUniformAllowed isVehicleCargo isVehicleRadarOn isVehicleSensorEnabled isWalking isWeaponDeployed isWeaponRested itemCargo items itemsWithMagazines join joinAs joinAsSilent joinSilent joinString kbAddDatabase kbAddDatabaseTargets kbAddTopic kbHasTopic kbReact kbRemoveTopic kbTell kbWasSaid keyImage keyName knowsAbout land landAt landResult language laserTarget lbAdd lbClear lbColor lbColorRight lbCurSel lbData lbDelete lbIsSelected lbPicture lbPictureRight lbSelection lbSetColor lbSetColorRight lbSetCurSel lbSetData lbSetPicture lbSetPictureColor lbSetPictureColorDisabled lbSetPictureColorSelected lbSetPictureRight lbSetPictureRightColor lbSetPictureRightColorDisabled lbSetPictureRightColorSelected lbSetSelectColor lbSetSelectColorRight lbSetSelected lbSetText lbSetTextRight lbSetTooltip lbSetValue lbSize lbSort lbSortByValue lbText lbTextRight lbValue leader leaderboardDeInit leaderboardGetRows leaderboardInit leaderboardRequestRowsFriends leaderboardsRequestUploadScore leaderboardsRequestUploadScoreKeepBest leaderboardState leaveVehicle libraryCredits libraryDisclaimers lifeState lightAttachObject lightDetachObject lightIsOn lightnings limitSpeed linearConversion lineIntersects lineIntersectsObjs lineIntersectsSurfaces lineIntersectsWith linkItem list listObjects listRemoteTargets listVehicleSensors ln lnbAddArray lnbAddColumn lnbAddRow lnbClear lnbColor lnbCurSelRow lnbData lnbDeleteColumn lnbDeleteRow lnbGetColumnsPosition lnbPicture lnbSetColor lnbSetColumnsPos lnbSetCurSelRow lnbSetData lnbSetPicture lnbSetText lnbSetValue lnbSize lnbSort lnbSortByValue lnbText lnbValue load loadAbs loadBackpack loadFile loadGame loadIdentity loadMagazine loadOverlay loadStatus loadUniform loadVest local localize locationPosition lock lockCameraTo lockCargo lockDriver locked lockedCargo lockedDriver lockedTurret lockIdentity lockTurret lockWP log logEntities logNetwork logNetworkTerminate lookAt lookAtPos magazineCargo magazines magazinesAllTurrets magazinesAmmo magazinesAmmoCargo magazinesAmmoFull magazinesDetail magazinesDetailBackpack magazinesDetailUniform magazinesDetailVest magazinesTurret magazineTurretAmmo mapAnimAdd mapAnimClear mapAnimCommit mapAnimDone mapCenterOnCamera mapGridPosition markAsFinishedOnSteam markerAlpha markerBrush markerColor markerDir markerPos markerShape markerSize markerText markerType max members menuAction menuAdd menuChecked menuClear menuCollapse menuData menuDelete menuEnable menuEnabled menuExpand menuHover menuPicture menuSetAction menuSetCheck menuSetData menuSetPicture menuSetValue menuShortcut menuShortcutText menuSize menuSort menuText menuURL menuValue min mineActive mineDetectedBy missionConfigFile missionDifficulty missionName missionNamespace missionStart missionVersion mod modelToWorld modelToWorldVisual modelToWorldVisualWorld modelToWorldWorld modParams moonIntensity moonPhase morale move move3DENCamera moveInAny moveInCargo moveInCommander moveInDriver moveInGunner moveInTurret moveObjectToEnd moveOut moveTime moveTo moveToCompleted moveToFailed musicVolume name nameSound nearEntities nearestBuilding nearestLocation nearestLocations nearestLocationWithDubbing nearestObject nearestObjects nearestTerrainObjects nearObjects nearObjectsReady nearRoads nearSupplies nearTargets needReload netId netObjNull newOverlay nextMenuItemIndex nextWeatherChange nMenuItems not numberOfEnginesRTD numberToDate objectCurators objectFromNetId objectParent objStatus onBriefingGroup onBriefingNotes onBriefingPlan onBriefingTeamSwitch onCommandModeChanged onDoubleClick onEachFrame onGroupIconClick onGroupIconOverEnter onGroupIconOverLeave onHCGroupSelectionChanged onMapSingleClick onPlayerConnected onPlayerDisconnected onPreloadFinished onPreloadStarted onShowNewObject onTeamSwitch openCuratorInterface openDLCPage openMap openSteamApp openYoutubeVideo or orderGetIn overcast overcastForecast owner param params parseNumber parseSimpleArray parseText parsingNamespace particlesQuality pickWeaponPool pitch pixelGrid pixelGridBase pixelGridNoUIScale pixelH pixelW playableSlotsNumber playableUnits playAction playActionNow player playerRespawnTime playerSide playersNumber playGesture playMission playMove playMoveNow playMusic playScriptedMission playSound playSound3D position positionCameraToWorld posScreenToWorld posWorldToScreen ppEffectAdjust ppEffectCommit ppEffectCommitted ppEffectCreate ppEffectDestroy ppEffectEnable ppEffectEnabled ppEffectForceInNVG precision preloadCamera preloadObject preloadSound preloadTitleObj preloadTitleRsc preprocessFile preprocessFileLineNumbers primaryWeapon primaryWeaponItems primaryWeaponMagazine priority processDiaryLink productVersion profileName profileNamespace profileNameSteam progressLoadingScreen progressPosition progressSetPosition publicVariable publicVariableClient publicVariableServer pushBack pushBackUnique putWeaponPool queryItemsPool queryMagazinePool queryWeaponPool rad radioChannelAdd radioChannelCreate radioChannelRemove radioChannelSetCallSign radioChannelSetLabel radioVolume rain rainbow random rank rankId rating rectangular registeredTasks registerTask reload reloadEnabled remoteControl remoteExec remoteExecCall remoteExecutedOwner remove3DENConnection remove3DENEventHandler remove3DENLayer removeAction removeAll3DENEventHandlers removeAllActions removeAllAssignedItems removeAllContainers removeAllCuratorAddons removeAllCuratorCameraAreas removeAllCuratorEditingAreas removeAllEventHandlers removeAllHandgunItems removeAllItems removeAllItemsWithMagazines removeAllMissionEventHandlers removeAllMPEventHandlers removeAllMusicEventHandlers removeAllOwnedMines removeAllPrimaryWeaponItems removeAllWeapons removeBackpack removeBackpackGlobal removeCuratorAddons removeCuratorCameraArea removeCuratorEditableObjects removeCuratorEditingArea removeDrawIcon removeDrawLinks removeEventHandler removeFromRemainsCollector removeGoggles removeGroupIcon removeHandgunItem removeHeadgear removeItem removeItemFromBackpack removeItemFromUniform removeItemFromVest removeItems removeMagazine removeMagazineGlobal removeMagazines removeMagazinesTurret removeMagazineTurret removeMenuItem removeMissionEventHandler removeMPEventHandler removeMusicEventHandler removeOwnedMine removePrimaryWeaponItem removeSecondaryWeaponItem removeSimpleTask removeSwitchableUnit removeTeamMember removeUniform removeVest removeWeapon removeWeaponAttachmentCargo removeWeaponCargo removeWeaponGlobal removeWeaponTurret reportRemoteTarget requiredVersion resetCamShake resetSubgroupDirection resize resources respawnVehicle restartEditorCamera reveal revealMine reverse reversedMouseY roadAt roadsConnectedTo roleDescription ropeAttachedObjects ropeAttachedTo ropeAttachEnabled ropeAttachTo ropeCreate ropeCut ropeDestroy ropeDetach ropeEndPosition ropeLength ropes ropeUnwind ropeUnwound rotorsForcesRTD rotorsRpmRTD round runInitScript safeZoneH safeZoneW safeZoneWAbs safeZoneX safeZoneXAbs safeZoneY save3DENInventory saveGame saveIdentity saveJoysticks saveOverlay saveProfileNamespace saveStatus saveVar savingEnabled say say2D say3D scopeName score scoreSide screenshot screenToWorld scriptDone scriptName scudState secondaryWeapon secondaryWeaponItems secondaryWeaponMagazine select selectBestPlaces selectDiarySubject selectedEditorObjects selectEditorObject selectionNames selectionPosition selectLeader selectMax selectMin selectNoPlayer selectPlayer selectRandom selectRandomWeighted selectWeapon selectWeaponTurret sendAUMessage sendSimpleCommand sendTask sendTaskResult sendUDPMessage serverCommand serverCommandAvailable serverCommandExecutable serverName serverTime set set3DENAttribute set3DENAttributes set3DENGrid set3DENIconsVisible set3DENLayer set3DENLinesVisible set3DENLogicType set3DENMissionAttribute set3DENMissionAttributes set3DENModelsVisible set3DENObjectType set3DENSelected setAccTime setActualCollectiveRTD setAirplaneThrottle setAirportSide setAmmo setAmmoCargo setAmmoOnPylon setAnimSpeedCoef setAperture setApertureNew setArmoryPoints setAttributes setAutonomous setBehaviour setBleedingRemaining setBrakesRTD setCameraInterest setCamShakeDefParams setCamShakeParams setCamUseTI setCaptive setCenterOfMass setCollisionLight setCombatMode setCompassOscillation setConvoySeparation setCuratorCameraAreaCeiling setCuratorCoef setCuratorEditingAreaType setCuratorWaypointCost setCurrentChannel setCurrentTask setCurrentWaypoint setCustomAimCoef setCustomWeightRTD setDamage setDammage setDate setDebriefingText setDefaultCamera setDestination setDetailMapBlendPars setDir setDirection setDrawIcon setDriveOnPath setDropInterval setDynamicSimulationDistance setDynamicSimulationDistanceCoef setEditorMode setEditorObjectScope setEffectCondition setEngineRPMRTD setFace setFaceAnimation setFatigue setFeatureType setFlagAnimationPhase setFlagOwner setFlagSide setFlagTexture setFog setFormation setFormationTask setFormDir setFriend setFromEditor setFSMVariable setFuel setFuelCargo setGroupIcon setGroupIconParams setGroupIconsSelectable setGroupIconsVisible setGroupId setGroupIdGlobal setGroupOwner setGusts setHideBehind setHit setHitIndex setHitPointDamage setHorizonParallaxCoef setHUDMovementLevels setIdentity setImportance setInfoPanel setLeader setLightAmbient setLightAttenuation setLightBrightness setLightColor setLightDayLight setLightFlareMaxDistance setLightFlareSize setLightIntensity setLightnings setLightUseFlare setLocalWindParams setMagazineTurretAmmo setMarkerAlpha setMarkerAlphaLocal setMarkerBrush setMarkerBrushLocal setMarkerColor setMarkerColorLocal setMarkerDir setMarkerDirLocal setMarkerPos setMarkerPosLocal setMarkerShape setMarkerShapeLocal setMarkerSize setMarkerSizeLocal setMarkerText setMarkerTextLocal setMarkerType setMarkerTypeLocal setMass setMimic setMousePosition setMusicEffect setMusicEventHandler setName setNameSound setObjectArguments setObjectMaterial setObjectMaterialGlobal setObjectProxy setObjectTexture setObjectTextureGlobal setObjectViewDistance setOvercast setOwner setOxygenRemaining setParticleCircle setParticleClass setParticleFire setParticleParams setParticleRandom setPilotCameraDirection setPilotCameraRotation setPilotCameraTarget setPilotLight setPiPEffect setPitch setPlateNumber setPlayable setPlayerRespawnTime setPos setPosASL setPosASL2 setPosASLW setPosATL setPosition setPosWorld setPylonLoadOut setPylonsPriority setRadioMsg setRain setRainbow setRandomLip setRank setRectangular setRepairCargo setRotorBrakeRTD setShadowDistance setShotParents setSide setSimpleTaskAlwaysVisible setSimpleTaskCustomData setSimpleTaskDescription setSimpleTaskDestination setSimpleTaskTarget setSimpleTaskType setSimulWeatherLayers setSize setSkill setSlingLoad setSoundEffect setSpeaker setSpeech setSpeedMode setStamina setStaminaScheme setStatValue setSuppression setSystemOfUnits setTargetAge setTaskMarkerOffset setTaskResult setTaskState setTerrainGrid setText setTimeMultiplier setTitleEffect setTrafficDensity setTrafficDistance setTrafficGap setTrafficSpeed setTriggerActivation setTriggerArea setTriggerStatements setTriggerText setTriggerTimeout setTriggerType setType setUnconscious setUnitAbility setUnitLoadout setUnitPos setUnitPosWeak setUnitRank setUnitRecoilCoefficient setUnitTrait setUnloadInCombat setUserActionText setUserMFDText setUserMFDvalue setVariable setVectorDir setVectorDirAndUp setVectorUp setVehicleAmmo setVehicleAmmoDef setVehicleArmor setVehicleCargo setVehicleId setVehicleLock setVehiclePosition setVehicleRadar setVehicleReceiveRemoteTargets setVehicleReportOwnPosition setVehicleReportRemoteTargets setVehicleTIPars setVehicleVarName setVelocity setVelocityModelSpace setVelocityTransformation setViewDistance setVisibleIfTreeCollapsed setWantedRPMRTD setWaves setWaypointBehaviour setWaypointCombatMode setWaypointCompletionRadius setWaypointDescription setWaypointForceBehaviour setWaypointFormation setWaypointHousePosition setWaypointLoiterRadius setWaypointLoiterType setWaypointName setWaypointPosition setWaypointScript setWaypointSpeed setWaypointStatements setWaypointTimeout setWaypointType setWaypointVisible setWeaponReloadingTime setWind setWindDir setWindForce setWindStr setWingForceScaleRTD setWPPos show3DIcons showChat showCinemaBorder showCommandingMenu showCompass showCuratorCompass showGPS showHUD showLegend showMap shownArtilleryComputer shownChat shownCompass shownCuratorCompass showNewEditorObject shownGPS shownHUD shownMap shownPad shownRadio shownScoretable shownUAVFeed shownWarrant shownWatch showPad showRadio showScoretable showSubtitles showUAVFeed showWarrant showWatch showWaypoint showWaypoints side sideChat sideEnemy sideFriendly sideRadio simpleTasks simulationEnabled simulCloudDensity simulCloudOcclusion simulInClouds simulWeatherSync sin size sizeOf skill skillFinal skipTime sleep sliderPosition sliderRange sliderSetPosition sliderSetRange sliderSetSpeed sliderSpeed slingLoadAssistantShown soldierMagazines someAmmo sort soundVolume spawn speaker speed speedMode splitString sqrt squadParams stance startLoadingScreen step stop stopEngineRTD stopped str sunOrMoon supportInfo suppressFor surfaceIsWater surfaceNormal surfaceType swimInDepth switchableUnits switchAction switchCamera switchGesture switchLight switchMove synchronizedObjects synchronizedTriggers synchronizedWaypoints synchronizeObjectsAdd synchronizeObjectsRemove synchronizeTrigger synchronizeWaypoint systemChat systemOfUnits tan targetKnowledge targets targetsAggregate targetsQuery taskAlwaysVisible taskChildren taskCompleted taskCustomData taskDescription taskDestination taskHint taskMarkerOffset taskParent taskResult taskState taskType teamMember teamName teams teamSwitch teamSwitchEnabled teamType terminate terrainIntersect terrainIntersectASL terrainIntersectAtASL text textLog textLogFormat tg time timeMultiplier titleCut titleFadeOut titleObj titleRsc titleText toArray toFixed toLower toString toUpper triggerActivated triggerActivation triggerArea triggerAttachedVehicle triggerAttachObject triggerAttachVehicle triggerDynamicSimulation triggerStatements triggerText triggerTimeout triggerTimeoutCurrent triggerType turretLocal turretOwner turretUnit tvAdd tvClear tvCollapse tvCollapseAll tvCount tvCurSel tvData tvDelete tvExpand tvExpandAll tvPicture tvSetColor tvSetCurSel tvSetData tvSetPicture tvSetPictureColor tvSetPictureColorDisabled tvSetPictureColorSelected tvSetPictureRight tvSetPictureRightColor tvSetPictureRightColorDisabled tvSetPictureRightColorSelected tvSetText tvSetTooltip tvSetValue tvSort tvSortByValue tvText tvTooltip tvValue type typeName typeOf UAVControl uiNamespace uiSleep unassignCurator unassignItem unassignTeam unassignVehicle underwater uniform uniformContainer uniformItems uniformMagazines unitAddons unitAimPosition unitAimPositionVisual unitBackpack unitIsUAV unitPos unitReady unitRecoilCoefficient units unitsBelowHeight unlinkItem unlockAchievement unregisterTask updateDrawIcon updateMenuItem updateObjectTree useAISteeringComponent useAudioTimeForMoves userInputDisabled vectorAdd vectorCos vectorCrossProduct vectorDiff vectorDir vectorDirVisual vectorDistance vectorDistanceSqr vectorDotProduct vectorFromTo vectorMagnitude vectorMagnitudeSqr vectorModelToWorld vectorModelToWorldVisual vectorMultiply vectorNormalized vectorUp vectorUpVisual vectorWorldToModel vectorWorldToModelVisual vehicle vehicleCargoEnabled vehicleChat vehicleRadio vehicleReceiveRemoteTargets vehicleReportOwnPosition vehicleReportRemoteTargets vehicles vehicleVarName velocity velocityModelSpace verifySignature vest vestContainer vestItems vestMagazines viewDistance visibleCompass visibleGPS visibleMap visiblePosition visiblePositionASL visibleScoretable visibleWatch waves waypointAttachedObject waypointAttachedVehicle waypointAttachObject waypointAttachVehicle waypointBehaviour waypointCombatMode waypointCompletionRadius waypointDescription waypointForceBehaviour waypointFormation waypointHousePosition waypointLoiterRadius waypointLoiterType waypointName waypointPosition waypoints waypointScript waypointsEnabledUAV waypointShow waypointSpeed waypointStatements waypointTimeout waypointTimeoutCurrent waypointType waypointVisible weaponAccessories weaponAccessoriesCargo weaponCargo weaponDirection weaponInertia weaponLowered weapons weaponsItems weaponsItemsCargo weaponState weaponsTurret weightRTD WFSideText wind \",\n        \"literal\": \"blufor civilian configNull controlNull displayNull east endl false grpNull independent lineBreak locationNull nil objNull opfor pi resistance scriptNull sideAmbientLife sideEmpty sideLogic sideUnknown taskNull teamMemberNull true west\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"variable\",\n            \"begin\": \"\\\\b_+[a-zA-Z_]\\\\w*\"\n        },\n        {\n            \"className\": \"title\",\n            \"begin\": \"[a-zA-Z][a-zA-Z0-9]+_fnc_\\\\w*\"\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\"\\\"\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"''\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"#\\\\s*[a-z]+\\\\b\",\n            \"end\": \"$\",\n            \"keywords\": {\n                \"meta-keyword\": \"define undef ifdef ifndef else endif include\"\n            },\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\\\\\n\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"meta-string\",\n                    \"variants\": {\n                        \"$ref\": \"#contains.5.variants\"\n                    }\n                },\n                {\n                    \"className\": \"meta-string\",\n                    \"begin\": \"<[^\\\\n>]*>\",\n                    \"end\": \"$\",\n                    \"illegal\": \"\\\\n\"\n                },\n                {\n                    \"$ref\": \"#contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.1\"\n                }\n            ]\n        }\n    ],\n    \"illegal\": \"#|^\\\\$ \"\n}\n"
  },
  {
    "path": "includes/Highlight/languages/sql.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"illegal\": \"[<>{}*]\",\n    \"contains\": [\n        {\n            \"beginKeywords\": \"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment values with\",\n            \"end\": \";\",\n            \"endsWithParent\": true,\n            \"lexemes\": \"[\\\\w\\\\.]+\",\n            \"keywords\": {\n                \"keyword\": \"as abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias all allocate allow alter always analyze ancillary and anti any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound bucket buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain explode export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force foreign form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour hours http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lateral lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minutes minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notnull notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second seconds section securefile security seed segment select self semi sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tablesample tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unnest unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace window with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek\",\n                \"literal\": \"true false null unknown\",\n                \"built_in\": \"array bigint binary bit blob bool boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text time timestamp tinyint varchar varchar2 varying void\"\n            },\n            \"contains\": [\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"''\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\"\\\"\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"`\",\n                    \"end\": \"`\"\n                },\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"\\/\\\\*\",\n                    \"end\": \"\\\\*\\/\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"--\",\n                    \"end\": \"$\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.4.contains.0\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"comment\",\n                    \"begin\": \"#\",\n                    \"end\": \"$\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.4.contains.0\"\n                        },\n                        {\n                            \"className\": \"doctag\",\n                            \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.0.contains.4\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.5\"\n        },\n        {\n            \"$ref\": \"#contains.0.contains.6\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/stan.json",
    "content": "{\n    \"aliases\": [\n        \"stanfuncs\"\n    ],\n    \"keywords\": {\n        \"title\": \"functions model data parameters quantities transformed generated\",\n        \"keyword\": \"for in if else while break continue return int real vector ordered positive_ordered simplex unit_vector row_vector matrix cholesky_factor_corr|10 cholesky_factor_cov|10 corr_matrix|10 cov_matrix|10 void print reject increment_log_prob|10 integrate_ode|10 integrate_ode_rk45|10 integrate_ode_bdf|10 algebra_solver\",\n        \"built_in\": \"Phi Phi_approx abs acos acosh algebra_solver append_array append_col append_row asin asinh atan atan2 atanh bernoulli_cdf bernoulli_lccdf bernoulli_lcdf bernoulli_logit_lpmf bernoulli_logit_rng bernoulli_lpmf bernoulli_rng bessel_first_kind bessel_second_kind beta_binomial_cdf beta_binomial_lccdf beta_binomial_lcdf beta_binomial_lpmf beta_binomial_rng beta_cdf beta_lccdf beta_lcdf beta_lpdf beta_rng binary_log_loss binomial_cdf binomial_coefficient_log binomial_lccdf binomial_lcdf binomial_logit_lpmf binomial_lpmf binomial_rng block categorical_logit_lpmf categorical_logit_rng categorical_lpmf categorical_rng cauchy_cdf cauchy_lccdf cauchy_lcdf cauchy_lpdf cauchy_rng cbrt ceil chi_square_cdf chi_square_lccdf chi_square_lcdf chi_square_lpdf chi_square_rng cholesky_decompose choose col cols columns_dot_product columns_dot_self cos cosh cov_exp_quad crossprod csr_extract_u csr_extract_v csr_extract_w csr_matrix_times_vector csr_to_dense_matrix cumulative_sum determinant diag_matrix diag_post_multiply diag_pre_multiply diagonal digamma dims dirichlet_lpdf dirichlet_rng distance dot_product dot_self double_exponential_cdf double_exponential_lccdf double_exponential_lcdf double_exponential_lpdf double_exponential_rng e eigenvalues_sym eigenvectors_sym erf erfc exp exp2 exp_mod_normal_cdf exp_mod_normal_lccdf exp_mod_normal_lcdf exp_mod_normal_lpdf exp_mod_normal_rng expm1 exponential_cdf exponential_lccdf exponential_lcdf exponential_lpdf exponential_rng fabs falling_factorial fdim floor fma fmax fmin fmod frechet_cdf frechet_lccdf frechet_lcdf frechet_lpdf frechet_rng gamma_cdf gamma_lccdf gamma_lcdf gamma_lpdf gamma_p gamma_q gamma_rng gaussian_dlm_obs_lpdf get_lp gumbel_cdf gumbel_lccdf gumbel_lcdf gumbel_lpdf gumbel_rng head hypergeometric_lpmf hypergeometric_rng hypot inc_beta int_step integrate_ode integrate_ode_bdf integrate_ode_rk45 inv inv_Phi inv_chi_square_cdf inv_chi_square_lccdf inv_chi_square_lcdf inv_chi_square_lpdf inv_chi_square_rng inv_cloglog inv_gamma_cdf inv_gamma_lccdf inv_gamma_lcdf inv_gamma_lpdf inv_gamma_rng inv_logit inv_sqrt inv_square inv_wishart_lpdf inv_wishart_rng inverse inverse_spd is_inf is_nan lbeta lchoose lgamma lkj_corr_cholesky_lpdf lkj_corr_cholesky_rng lkj_corr_lpdf lkj_corr_rng lmgamma lmultiply log log10 log1m log1m_exp log1m_inv_logit log1p log1p_exp log2 log_determinant log_diff_exp log_falling_factorial log_inv_logit log_mix log_rising_factorial log_softmax log_sum_exp logistic_cdf logistic_lccdf logistic_lcdf logistic_lpdf logistic_rng logit lognormal_cdf lognormal_lccdf lognormal_lcdf lognormal_lpdf lognormal_rng machine_precision matrix_exp max mdivide_left_spd mdivide_left_tri_low mdivide_right_spd mdivide_right_tri_low mean min modified_bessel_first_kind modified_bessel_second_kind multi_gp_cholesky_lpdf multi_gp_lpdf multi_normal_cholesky_lpdf multi_normal_cholesky_rng multi_normal_lpdf multi_normal_prec_lpdf multi_normal_rng multi_student_t_lpdf multi_student_t_rng multinomial_lpmf multinomial_rng multiply_log multiply_lower_tri_self_transpose neg_binomial_2_cdf neg_binomial_2_lccdf neg_binomial_2_lcdf neg_binomial_2_log_lpmf neg_binomial_2_log_rng neg_binomial_2_lpmf neg_binomial_2_rng neg_binomial_cdf neg_binomial_lccdf neg_binomial_lcdf neg_binomial_lpmf neg_binomial_rng negative_infinity normal_cdf normal_lccdf normal_lcdf normal_lpdf normal_rng not_a_number num_elements ordered_logistic_lpmf ordered_logistic_rng owens_t pareto_cdf pareto_lccdf pareto_lcdf pareto_lpdf pareto_rng pareto_type_2_cdf pareto_type_2_lccdf pareto_type_2_lcdf pareto_type_2_lpdf pareto_type_2_rng pi poisson_cdf poisson_lccdf poisson_lcdf poisson_log_lpmf poisson_log_rng poisson_lpmf poisson_rng positive_infinity pow print prod qr_Q qr_R quad_form quad_form_diag quad_form_sym rank rayleigh_cdf rayleigh_lccdf rayleigh_lcdf rayleigh_lpdf rayleigh_rng reject rep_array rep_matrix rep_row_vector rep_vector rising_factorial round row rows rows_dot_product rows_dot_self scaled_inv_chi_square_cdf scaled_inv_chi_square_lccdf scaled_inv_chi_square_lcdf scaled_inv_chi_square_lpdf scaled_inv_chi_square_rng sd segment sin singular_values sinh size skew_normal_cdf skew_normal_lccdf skew_normal_lcdf skew_normal_lpdf skew_normal_rng softmax sort_asc sort_desc sort_indices_asc sort_indices_desc sqrt sqrt2 square squared_distance step student_t_cdf student_t_lccdf student_t_lcdf student_t_lpdf student_t_rng sub_col sub_row sum tail tan tanh target tcrossprod tgamma to_array_1d to_array_2d to_matrix to_row_vector to_vector trace trace_gen_quad_form trace_quad_form trigamma trunc uniform_cdf uniform_lccdf uniform_lcdf uniform_lpdf uniform_rng variance von_mises_lpdf von_mises_rng weibull_cdf weibull_lccdf weibull_lcdf weibull_lpdf weibull_rng wiener_lpdf wishart_lpdf wishart_rng\"\n    },\n    \"lexemes\": \"[a-zA-Z]\\\\w*\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0,\n            \"keywords\": {\n                \"meta-keyword\": \"include\"\n            }\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\\\/\\\\*\",\n            \"end\": \"\\\\*\\\\\\/\",\n            \"contains\": [\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"@(return|param)\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"begin\": \"<\\\\s*lower\\\\s*=\",\n            \"keywords\": \"lower\"\n        },\n        {\n            \"begin\": \"[<,]*upper\\\\s*=\",\n            \"keywords\": \"upper\"\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\\\btarget\\\\s*\\\\+=\",\n            \"relevance\": 10\n        },\n        {\n            \"begin\": \"~\\\\s*([a-zA-Z]\\\\w*)\\\\s*\\\\(\",\n            \"keywords\": \"bernoulli bernoulli_logit beta beta_binomial binomial binomial_logit categorical categorical_logit cauchy chi_square dirichlet double_exponential exp_mod_normal exponential frechet gamma gaussian_dlm_obs gumbel hypergeometric inv_chi_square inv_gamma inv_wishart lkj_corr lkj_corr_cholesky logistic lognormal multi_gp multi_gp_cholesky multi_normal multi_normal_cholesky multi_normal_prec multi_student_t multinomial neg_binomial neg_binomial_2 neg_binomial_2_log normal ordered_logistic pareto pareto_type_2 poisson poisson_log rayleigh scaled_inv_chi_square skew_normal student_t uniform von_mises weibull wiener wishart\"\n        },\n        {\n            \"className\": \"number\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\b\\\\d+(?:\\\\.\\\\d*)?(?:[eE][+-]?\\\\d+)?\"\n                },\n                {\n                    \"begin\": \"\\\\.\\\\d+(?:[eE][+-]?\\\\d+)?\\\\b\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/stata.json",
    "content": "{\n    \"aliases\": [\n        \"do\",\n        \"ado\"\n    ],\n    \"case_insensitive\": true,\n    \"keywords\": \"if else in foreach for forv forva forval forvalu forvalue forvalues by bys bysort xi quietly qui capture about ac ac_7 acprplot acprplot_7 adjust ado adopath adoupdate alpha ameans an ano anov anova anova_estat anova_terms anovadef aorder ap app appe appen append arch arch_dr arch_estat arch_p archlm areg areg_p args arima arima_dr arima_estat arima_p as asmprobit asmprobit_estat asmprobit_lf asmprobit_mfx__dlg asmprobit_p ass asse asser assert avplot avplot_7 avplots avplots_7 bcskew0 bgodfrey bias binreg bip0_lf biplot bipp_lf bipr_lf bipr_p biprobit bitest bitesti bitowt blogit bmemsize boot bootsamp bootstrap bootstrap_8 boxco_l boxco_p boxcox boxcox_6 boxcox_p bprobit br break brier bro brow brows browse brr brrstat bs bs_7 bsampl_w bsample bsample_7 bsqreg bstat bstat_7 bstat_8 bstrap bstrap_7 bubble bubbleplot ca ca_estat ca_p cabiplot camat canon canon_8 canon_8_p canon_estat canon_p cap caprojection capt captu captur capture cat cc cchart cchart_7 cci cd censobs_table centile cf char chdir checkdlgfiles checkestimationsample checkhlpfiles checksum chelp ci cii cl class classutil clear cli clis clist clo clog clog_lf clog_p clogi clogi_sw clogit clogit_lf clogit_p clogitp clogl_sw cloglog clonevar clslistarray cluster cluster_measures cluster_stop cluster_tree cluster_tree_8 clustermat cmdlog cnr cnre cnreg cnreg_p cnreg_sw cnsreg codebook collaps4 collapse colormult_nb colormult_nw compare compress conf confi confir confirm conren cons const constr constra constrai constrain constraint continue contract copy copyright copysource cor corc corr corr2data corr_anti corr_kmo corr_smc corre correl correla correlat correlate corrgram cou coun count cox cox_p cox_sw coxbase coxhaz coxvar cprplot cprplot_7 crc cret cretu cretur creturn cross cs cscript cscript_log csi ct ct_is ctset ctst_5 ctst_st cttost cumsp cumsp_7 cumul cusum cusum_7 cutil d|0 datasig datasign datasigna datasignat datasignatu datasignatur datasignature datetof db dbeta de dec deco decod decode deff des desc descr descri describ describe destring dfbeta dfgls dfuller di di_g dir dirstats dis discard disp disp_res disp_s displ displa display distinct do doe doed doedi doedit dotplot dotplot_7 dprobit drawnorm drop ds ds_util dstdize duplicates durbina dwstat dydx e|0 ed edi edit egen eivreg emdef en enc enco encod encode eq erase ereg ereg_lf ereg_p ereg_sw ereghet ereghet_glf ereghet_glf_sh ereghet_gp ereghet_ilf ereghet_ilf_sh ereghet_ip eret eretu eretur ereturn err erro error esize est est_cfexist est_cfname est_clickable est_expand est_hold est_table est_unhold est_unholdok estat estat_default estat_summ estat_vce_only esti estimates etodow etof etomdy ex exi exit expand expandcl fac fact facto factor factor_estat factor_p factor_pca_rotated factor_rotate factormat fcast fcast_compute fcast_graph fdades fdadesc fdadescr fdadescri fdadescrib fdadescribe fdasav fdasave fdause fh_st file open file read file close file filefilter fillin find_hlp_file findfile findit findit_7 fit fl fli flis flist for5_0 forest forestplot form forma format fpredict frac_154 frac_adj frac_chk frac_cox frac_ddp frac_dis frac_dv frac_in frac_mun frac_pp frac_pq frac_pv frac_wgt frac_xo fracgen fracplot fracplot_7 fracpoly fracpred fron_ex fron_hn fron_p fron_tn fron_tn2 frontier ftodate ftoe ftomdy ftowdate funnel funnelplot g|0 gamhet_glf gamhet_gp gamhet_ilf gamhet_ip gamma gamma_d2 gamma_p gamma_sw gammahet gdi_hexagon gdi_spokes ge gen gene gener genera generat generate genrank genstd genvmean gettoken gl gladder gladder_7 glim_l01 glim_l02 glim_l03 glim_l04 glim_l05 glim_l06 glim_l07 glim_l08 glim_l09 glim_l10 glim_l11 glim_l12 glim_lf glim_mu glim_nw1 glim_nw2 glim_nw3 glim_p glim_v1 glim_v2 glim_v3 glim_v4 glim_v5 glim_v6 glim_v7 glm glm_6 glm_p glm_sw glmpred glo glob globa global glogit glogit_8 glogit_p gmeans gnbre_lf gnbreg gnbreg_5 gnbreg_p gomp_lf gompe_sw gomper_p gompertz gompertzhet gomphet_glf gomphet_glf_sh gomphet_gp gomphet_ilf gomphet_ilf_sh gomphet_ip gphdot gphpen gphprint gprefs gprobi_p gprobit gprobit_8 gr gr7 gr_copy gr_current gr_db gr_describe gr_dir gr_draw gr_draw_replay gr_drop gr_edit gr_editviewopts gr_example gr_example2 gr_export gr_print gr_qscheme gr_query gr_read gr_rename gr_replay gr_save gr_set gr_setscheme gr_table gr_undo gr_use graph graph7 grebar greigen greigen_7 greigen_8 grmeanby grmeanby_7 gs_fileinfo gs_filetype gs_graphinfo gs_stat gsort gwood h|0 hadimvo hareg hausman haver he heck_d2 heckma_p heckman heckp_lf heckpr_p heckprob hel help hereg hetpr_lf hetpr_p hetprob hettest hexdump hilite hist hist_7 histogram hlogit hlu hmeans hotel hotelling hprobit hreg hsearch icd9 icd9_ff icd9p iis impute imtest inbase include inf infi infil infile infix inp inpu input ins insheet insp inspe inspec inspect integ inten intreg intreg_7 intreg_p intrg2_ll intrg_ll intrg_ll2 ipolate iqreg ir irf irf_create irfm iri is_svy is_svysum isid istdize ivprob_1_lf ivprob_lf ivprobit ivprobit_p ivreg ivreg_footnote ivtob_1_lf ivtob_lf ivtobit ivtobit_p jackknife jacknife jknife jknife_6 jknife_8 jkstat joinby kalarma1 kap kap_3 kapmeier kappa kapwgt kdensity kdensity_7 keep ksm ksmirnov ktau kwallis l|0 la lab labbe labbeplot labe label labelbook ladder levels levelsof leverage lfit lfit_p li lincom line linktest lis list lloghet_glf lloghet_glf_sh lloghet_gp lloghet_ilf lloghet_ilf_sh lloghet_ip llogi_sw llogis_p llogist llogistic llogistichet lnorm_lf lnorm_sw lnorma_p lnormal lnormalhet lnormhet_glf lnormhet_glf_sh lnormhet_gp lnormhet_ilf lnormhet_ilf_sh lnormhet_ip lnskew0 loadingplot loc loca local log logi logis_lf logistic logistic_p logit logit_estat logit_p loglogs logrank loneway lookfor lookup lowess lowess_7 lpredict lrecomp lroc lroc_7 lrtest ls lsens lsens_7 lsens_x lstat ltable ltable_7 ltriang lv lvr2plot lvr2plot_7 m|0 ma mac macr macro makecns man manova manova_estat manova_p manovatest mantel mark markin markout marksample mat mat_capp mat_order mat_put_rr mat_rapp mata mata_clear mata_describe mata_drop mata_matdescribe mata_matsave mata_matuse mata_memory mata_mlib mata_mosave mata_rename mata_which matalabel matcproc matlist matname matr matri matrix matrix_input__dlg matstrik mcc mcci md0_ md1_ md1debug_ md2_ md2debug_ mds mds_estat mds_p mdsconfig mdslong mdsmat mdsshepard mdytoe mdytof me_derd mean means median memory memsize menl meqparse mer merg merge meta mfp mfx mhelp mhodds minbound mixed_ll mixed_ll_reparm mkassert mkdir mkmat mkspline ml ml_5 ml_adjs ml_bhhhs ml_c_d ml_check ml_clear ml_cnt ml_debug ml_defd ml_e0 ml_e0_bfgs ml_e0_cycle ml_e0_dfp ml_e0i ml_e1 ml_e1_bfgs ml_e1_bhhh ml_e1_cycle ml_e1_dfp ml_e2 ml_e2_cycle ml_ebfg0 ml_ebfr0 ml_ebfr1 ml_ebh0q ml_ebhh0 ml_ebhr0 ml_ebr0i ml_ecr0i ml_edfp0 ml_edfr0 ml_edfr1 ml_edr0i ml_eds ml_eer0i ml_egr0i ml_elf ml_elf_bfgs ml_elf_bhhh ml_elf_cycle ml_elf_dfp ml_elfi ml_elfs ml_enr0i ml_enrr0 ml_erdu0 ml_erdu0_bfgs ml_erdu0_bhhh ml_erdu0_bhhhq ml_erdu0_cycle ml_erdu0_dfp ml_erdu0_nrbfgs ml_exde ml_footnote ml_geqnr ml_grad0 ml_graph ml_hbhhh ml_hd0 ml_hold ml_init ml_inv ml_log ml_max ml_mlout ml_mlout_8 ml_model ml_nb0 ml_opt ml_p ml_plot ml_query ml_rdgrd ml_repor ml_s_e ml_score ml_searc ml_technique ml_unhold mleval mlf_ mlmatbysum mlmatsum mlog mlogi mlogit mlogit_footnote mlogit_p mlopts mlsum mlvecsum mnl0_ mor more mov move mprobit mprobit_lf mprobit_p mrdu0_ mrdu1_ mvdecode mvencode mvreg mvreg_estat n|0 nbreg nbreg_al nbreg_lf nbreg_p nbreg_sw nestreg net newey newey_7 newey_p news nl nl_7 nl_9 nl_9_p nl_p nl_p_7 nlcom nlcom_p nlexp2 nlexp2_7 nlexp2a nlexp2a_7 nlexp3 nlexp3_7 nlgom3 nlgom3_7 nlgom4 nlgom4_7 nlinit nllog3 nllog3_7 nllog4 nllog4_7 nlog_rd nlogit nlogit_p nlogitgen nlogittree nlpred no nobreak noi nois noisi noisil noisily note notes notes_dlg nptrend numlabel numlist odbc old_ver olo olog ologi ologi_sw ologit ologit_p ologitp on one onew onewa oneway op_colnm op_comp op_diff op_inv op_str opr opro oprob oprob_sw oprobi oprobi_p oprobit oprobitp opts_exclusive order orthog orthpoly ou out outf outfi outfil outfile outs outsh outshe outshee outsheet ovtest pac pac_7 palette parse parse_dissim pause pca pca_8 pca_display pca_estat pca_p pca_rotate pcamat pchart pchart_7 pchi pchi_7 pcorr pctile pentium pergram pergram_7 permute permute_8 personal peto_st pkcollapse pkcross pkequiv pkexamine pkexamine_7 pkshape pksumm pksumm_7 pl plo plot plugin pnorm pnorm_7 poisgof poiss_lf poiss_sw poisso_p poisson poisson_estat post postclose postfile postutil pperron pr prais prais_e prais_e2 prais_p predict predictnl preserve print pro prob probi probit probit_estat probit_p proc_time procoverlay procrustes procrustes_estat procrustes_p profiler prog progr progra program prop proportion prtest prtesti pwcorr pwd q\\\\s qby qbys qchi qchi_7 qladder qladder_7 qnorm qnorm_7 qqplot qqplot_7 qreg qreg_c qreg_p qreg_sw qu quadchk quantile quantile_7 que quer query range ranksum ratio rchart rchart_7 rcof recast reclink recode reg reg3 reg3_p regdw regr regre regre_p2 regres regres_p regress regress_estat regriv_p remap ren rena renam rename renpfix repeat replace report reshape restore ret retu retur return rm rmdir robvar roccomp roccomp_7 roccomp_8 rocf_lf rocfit rocfit_8 rocgold rocplot rocplot_7 roctab roctab_7 rolling rologit rologit_p rot rota rotat rotate rotatemat rreg rreg_p ru run runtest rvfplot rvfplot_7 rvpplot rvpplot_7 sa safesum sample sampsi sav save savedresults saveold sc sca scal scala scalar scatter scm_mine sco scob_lf scob_p scobi_sw scobit scor score scoreplot scoreplot_help scree screeplot screeplot_help sdtest sdtesti se search separate seperate serrbar serrbar_7 serset set set_defaults sfrancia sh she shel shell shewhart shewhart_7 signestimationsample signrank signtest simul simul_7 simulate simulate_8 sktest sleep slogit slogit_d2 slogit_p smooth snapspan so sor sort spearman spikeplot spikeplot_7 spikeplt spline_x split sqreg sqreg_p sret sretu sretur sreturn ssc st st_ct st_hc st_hcd st_hcd_sh st_is st_issys st_note st_promo st_set st_show st_smpl st_subid stack statsby statsby_8 stbase stci stci_7 stcox stcox_estat stcox_fr stcox_fr_ll stcox_p stcox_sw stcoxkm stcoxkm_7 stcstat stcurv stcurve stcurve_7 stdes stem stepwise stereg stfill stgen stir stjoin stmc stmh stphplot stphplot_7 stphtest stphtest_7 stptime strate strate_7 streg streg_sw streset sts sts_7 stset stsplit stsum sttocc sttoct stvary stweib su suest suest_8 sum summ summa summar summari summariz summarize sunflower sureg survcurv survsum svar svar_p svmat svy svy_disp svy_dreg svy_est svy_est_7 svy_estat svy_get svy_gnbreg_p svy_head svy_header svy_heckman_p svy_heckprob_p svy_intreg_p svy_ivreg_p svy_logistic_p svy_logit_p svy_mlogit_p svy_nbreg_p svy_ologit_p svy_oprobit_p svy_poisson_p svy_probit_p svy_regress_p svy_sub svy_sub_7 svy_x svy_x_7 svy_x_p svydes svydes_8 svygen svygnbreg svyheckman svyheckprob svyintreg svyintreg_7 svyintrg svyivreg svylc svylog_p svylogit svymarkout svymarkout_8 svymean svymlog svymlogit svynbreg svyolog svyologit svyoprob svyoprobit svyopts svypois svypois_7 svypoisson svyprobit svyprobt svyprop svyprop_7 svyratio svyreg svyreg_p svyregress svyset svyset_7 svyset_8 svytab svytab_7 svytest svytotal sw sw_8 swcnreg swcox swereg swilk swlogis swlogit swologit swoprbt swpois swprobit swqreg swtobit swweib symmetry symmi symplot symplot_7 syntax sysdescribe sysdir sysuse szroeter ta tab tab1 tab2 tab_or tabd tabdi tabdis tabdisp tabi table tabodds tabodds_7 tabstat tabu tabul tabula tabulat tabulate te tempfile tempname tempvar tes test testnl testparm teststd tetrachoric time_it timer tis tob tobi tobit tobit_p tobit_sw token tokeni tokeniz tokenize tostring total translate translator transmap treat_ll treatr_p treatreg trim trimfill trnb_cons trnb_mean trpoiss_d2 trunc_ll truncr_p truncreg tsappend tset tsfill tsline tsline_ex tsreport tsrevar tsrline tsset tssmooth tsunab ttest ttesti tut_chk tut_wait tutorial tw tware_st two twoway twoway__fpfit_serset twoway__function_gen twoway__histogram_gen twoway__ipoint_serset twoway__ipoints_serset twoway__kdensity_gen twoway__lfit_serset twoway__normgen_gen twoway__pci_serset twoway__qfit_serset twoway__scatteri_serset twoway__sunflower_gen twoway_ksm_serset ty typ type typeof u|0 unab unabbrev unabcmd update us use uselabel var var_mkcompanion var_p varbasic varfcast vargranger varirf varirf_add varirf_cgraph varirf_create varirf_ctable varirf_describe varirf_dir varirf_drop varirf_erase varirf_graph varirf_ograph varirf_rename varirf_set varirf_table varlist varlmar varnorm varsoc varstable varstable_w varstable_w2 varwle vce vec vec_fevd vec_mkphi vec_p vec_p_w vecirf_create veclmar veclmar_w vecnorm vecnorm_w vecrank vecstable verinst vers versi versio version view viewsource vif vwls wdatetof webdescribe webseek webuse weib1_lf weib2_lf weib_lf weib_lf0 weibhet_glf weibhet_glf_sh weibhet_glfa weibhet_glfa_sh weibhet_gp weibhet_ilf weibhet_ilf_sh weibhet_ilfa weibhet_ilfa_sh weibhet_ip weibu_sw weibul_p weibull weibull_c weibull_s weibullhet wh whelp whi which whil while wilc_st wilcoxon win wind windo window winexec wntestb wntestb_7 wntestq xchart xchart_7 xcorr xcorr_7 xi xi_6 xmlsav xmlsave xmluse xpose xsh xshe xshel xshell xt_iis xt_tis xtab_p xtabond xtbin_p xtclog xtcloglog xtcloglog_8 xtcloglog_d2 xtcloglog_pa_p xtcloglog_re_p xtcnt_p xtcorr xtdata xtdes xtfront_p xtfrontier xtgee xtgee_elink xtgee_estat xtgee_makeivar xtgee_p xtgee_plink xtgls xtgls_p xthaus xthausman xtht_p xthtaylor xtile xtint_p xtintreg xtintreg_8 xtintreg_d2 xtintreg_p xtivp_1 xtivp_2 xtivreg xtline xtline_ex xtlogit xtlogit_8 xtlogit_d2 xtlogit_fe_p xtlogit_pa_p xtlogit_re_p xtmixed xtmixed_estat xtmixed_p xtnb_fe xtnb_lf xtnbreg xtnbreg_pa_p xtnbreg_refe_p xtpcse xtpcse_p xtpois xtpoisson xtpoisson_d2 xtpoisson_pa_p xtpoisson_refe_p xtpred xtprobit xtprobit_8 xtprobit_d2 xtprobit_re_p xtps_fe xtps_lf xtps_ren xtps_ren_8 xtrar_p xtrc xtrc_p xtrchh xtrefe_p xtreg xtreg_be xtreg_fe xtreg_ml xtreg_pa_p xtreg_re xtregar xtrere_p xtset xtsf_ll xtsf_llti xtsum xttab xttest0 xttobit xttobit_8 xttobit_p xttrans yx yxview__barlike_draw yxview_area_draw yxview_bar_draw yxview_dot_draw yxview_dropline_draw yxview_function_draw yxview_iarrow_draw yxview_ilabels_draw yxview_normal_draw yxview_pcarrow_draw yxview_pcbarrow_draw yxview_pccapsym_draw yxview_pcscatter_draw yxview_pcspike_draw yxview_rarea_draw yxview_rbar_draw yxview_rbarm_draw yxview_rcap_draw yxview_rcapsym_draw yxview_rconnected_draw yxview_rline_draw yxview_rscatter_draw yxview_rspike_draw yxview_spike_draw yxview_sunflower_draw zap_s zinb zinb_llf zinb_plf zip zip_llf zip_p zip_plf zt_ct_5 zt_hc_5 zt_hcd_5 zt_is_5 zt_iss_5 zt_sho_5 zt_smp_5 ztbase_5 ztcox_5 ztdes_5 ztereg_5 ztfill_5 ztgen_5 ztir_5 ztjoin_5 ztnb ztnb_p ztp ztp_p zts_5 ztset_5 ztspli_5 ztsum_5 zttoct_5 ztvary_5 ztweib_5\",\n    \"contains\": [\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"`[a-zA-Z0-9_]+'\"\n        },\n        {\n            \"className\": \"variable\",\n            \"begin\": \"\\\\$\\\\{?[a-zA-Z0-9_]+\\\\}?\"\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"begin\": \"`\\\"[^\\r\\n]*?\\\"'\"\n                },\n                {\n                    \"begin\": \"\\\"[^\\r\\n\\\"]*\\\"\"\n                }\n            ]\n        },\n        {\n            \"className\": \"built_in\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\b(abs|acos|asin|atan|atan2|atanh|ceil|cloglog|comb|cos|digamma|exp|floor|invcloglog|invlogit|ln|lnfact|lnfactorial|lngamma|log|log10|max|min|mod|reldif|round|sign|sin|sqrt|sum|tan|tanh|trigamma|trunc|betaden|Binomial|binorm|binormal|chi2|chi2tail|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|F|Fden|Ftail|gammaden|gammap|ibeta|invbinomial|invchi2|invchi2tail|invF|invFtail|invgammap|invibeta|invnchi2|invnFtail|invnibeta|invnorm|invnormal|invttail|nbetaden|nchi2|nFden|nFtail|nibeta|norm|normal|normalden|normd|npnchi2|tden|ttail|uniform|abbrev|char|index|indexnot|length|lower|ltrim|match|plural|proper|real|regexm|regexr|regexs|reverse|rtrim|string|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrtrim|strtrim|strupper|subinstr|subinword|substr|trim|upper|word|wordcount|_caller|autocode|byteorder|chop|clip|cond|e|epsdouble|epsfloat|group|inlist|inrange|irecode|matrix|maxbyte|maxdouble|maxfloat|maxint|maxlong|mi|minbyte|mindouble|minfloat|minint|minlong|missing|r|recode|replay|return|s|scalar|d|date|day|dow|doy|halfyear|mdy|month|quarter|week|year|d|daily|dofd|dofh|dofm|dofq|dofw|dofy|h|halfyearly|hofd|m|mofd|monthly|q|qofd|quarterly|tin|twithin|w|weekly|wofd|y|yearly|yh|ym|yofd|yq|yw|cholesky|colnumb|colsof|corr|det|diag|diag0cnt|el|get|hadamard|I|inv|invsym|issym|issymmetric|J|matmissing|matuniform|mreldif|nullmat|rownumb|rowsof|sweep|syminv|trace|vec|vecdiag)(?=\\\\()\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"^[ \\t]*\\\\*.*$\",\n            \"end\": false,\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.4.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.4.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/step21.json",
    "content": "{\n    \"aliases\": [\n        \"p21\",\n        \"step\",\n        \"stp\"\n    ],\n    \"case_insensitive\": true,\n    \"lexemes\": \"[A-Z_][A-Z0-9_.]*\",\n    \"keywords\": {\n        \"keyword\": \"HEADER ENDSEC DATA\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"begin\": \"ISO-10303-21;\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"END-ISO-10303-21;\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\\\\*!\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": null,\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": null,\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\"\n        },\n        {\n            \"className\": \"symbol\",\n            \"variants\": [\n                {\n                    \"begin\": \"#\",\n                    \"end\": \"\\\\d+\",\n                    \"illegal\": \"\\\\W\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/stylus.json",
    "content": "{\n    \"aliases\": [\n        \"styl\"\n    ],\n    \"case_insensitive\": false,\n    \"keywords\": \"if else for in\",\n    \"illegal\": \"(\\\\?|(\\\\bReturn\\\\b)|(\\\\bEnd\\\\b)|(\\\\bend\\\\b)|(\\\\bdef\\\\b)|;|#\\\\s|\\\\*\\\\s|===\\\\s|\\\\||%)\",\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})\"\n        },\n        {\n            \"begin\": \"\\\\.[a-zA-Z][a-zA-Z0-9_\\\\-]*(?=[\\\\.\\\\s\\\\n\\\\[\\\\:,])\",\n            \"className\": \"selector-class\"\n        },\n        {\n            \"begin\": \"\\\\#[a-zA-Z][a-zA-Z0-9_\\\\-]*(?=[\\\\.\\\\s\\\\n\\\\[\\\\:,])\",\n            \"className\": \"selector-id\"\n        },\n        {\n            \"begin\": \"\\\\b(a|abbr|address|article|aside|audio|b|blockquote|body|button|canvas|caption|cite|code|dd|del|details|dfn|div|dl|dt|em|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|html|i|iframe|img|input|ins|kbd|label|legend|li|mark|menu|nav|object|ol|p|q|quote|samp|section|span|strong|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|tr|ul|var|video)(?=[\\\\.\\\\s\\\\n\\\\[\\\\:,])\",\n            \"className\": \"selector-tag\"\n        },\n        {\n            \"begin\": \"&?:?:\\\\b(after|before|first-letter|first-line|active|first-child|focus|hover|lang|link|visited)(?=[\\\\.\\\\s\\\\n\\\\[\\\\:,])\"\n        },\n        {\n            \"begin\": \"@(charset|css|debug|extend|font-face|for|import|include|media|mixin|page|warn|while)\\\\b\"\n        },\n        {\n            \"className\": \"variable\",\n            \"begin\": \"\\\\$[a-zA-Z]\\\\w*\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"begin\": \"^[a-zA-Z][a-zA-Z0-9_\\\\-]*\\\\(.*\\\\)\",\n            \"illegal\": \"[\\\\n]\",\n            \"returnBegin\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"\\\\b[a-zA-Z][a-zA-Z0-9_\\\\-]*\"\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.4\"\n                        },\n                        {\n                            \"$ref\": \"#contains.10\"\n                        },\n                        {\n                            \"$ref\": \"#contains.1\"\n                        },\n                        {\n                            \"$ref\": \"#contains.11\"\n                        },\n                        {\n                            \"$ref\": \"#contains.12\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"attribute\",\n            \"begin\": \"\\\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|table-layout|tab-size|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-resolution|image-rendering|image-orientation|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|columns|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\\\b\",\n            \"starts\": {\n                \"end\": \";|$\",\n                \"contains\": [\n                    {\n                        \"$ref\": \"#contains.4\"\n                    },\n                    {\n                        \"$ref\": \"#contains.10\"\n                    },\n                    {\n                        \"$ref\": \"#contains.1\"\n                    },\n                    {\n                        \"$ref\": \"#contains.0\"\n                    },\n                    {\n                        \"$ref\": \"#contains.11\"\n                    },\n                    {\n                        \"$ref\": \"#contains.12\"\n                    },\n                    {\n                        \"$ref\": \"#contains.3\"\n                    }\n                ],\n                \"illegal\": \"\\\\.\",\n                \"relevance\": 0\n            }\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/subunit.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\\[\\n(multipart)?\",\n            \"end\": \"\\\\]\\n\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\\d{4}-\\\\d{2}-\\\\d{2}(\\\\s+)\\\\d{2}:\\\\d{2}:\\\\d{2}.\\\\d+Z\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"(\\\\+|-)\\\\d+\"\n        },\n        {\n            \"className\": \"keyword\",\n            \"relevance\": 10,\n            \"variants\": [\n                {\n                    \"begin\": \"^(test|testing|success|successful|failure|error|skip|xfail|uxsuccess)(:?)\\\\s+(test)?\"\n                },\n                {\n                    \"begin\": \"^progress(:?)(\\\\s+)?(pop|push)?\"\n                },\n                {\n                    \"begin\": \"^tags:\"\n                },\n                {\n                    \"begin\": \"^time:\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/swift.json",
    "content": "{\n    \"keywords\": {\n        \"keyword\": \"#available #colorLiteral #column #else #elseif #endif #file #fileLiteral #function #if #imageLiteral #line #selector #sourceLocation _ __COLUMN__ __FILE__ __FUNCTION__ __LINE__ Any as as! as? associatedtype associativity break case catch class continue convenience default defer deinit didSet do dynamic dynamicType else enum extension fallthrough false fileprivate final for func get guard if import in indirect infix init inout internal is lazy left let mutating nil none nonmutating open operator optional override postfix precedence prefix private protocol Protocol public repeat required rethrows return right self Self set static struct subscript super switch throw throws true try try! try? Type typealias unowned var weak where while willSet\",\n        \"literal\": \"true false nil\",\n        \"built_in\": \"abs advance alignof alignofValue anyGenerator assert assertionFailure bridgeFromObjectiveC bridgeFromObjectiveCUnconditional bridgeToObjectiveC bridgeToObjectiveCUnconditional c contains count countElements countLeadingZeros debugPrint debugPrintln distance dropFirst dropLast dump encodeBitsAsWords enumerate equal fatalError filter find getBridgedObjectiveCType getVaList indices insertionSort isBridgedToObjectiveC isBridgedVerbatimToObjectiveC isUniquelyReferenced isUniquelyReferencedNonObjC join lazy lexicographicalCompare map max maxElement min minElement numericCast overlaps partition posix precondition preconditionFailure print println quickSort readLine reduce reflect reinterpretCast reverse roundUpToAlignment sizeof sizeofValue sort split startsWith stride strideof strideofValue swap toString transcode underestimateCount unsafeAddressOf unsafeBitCast unsafeDowncast unsafeUnwrap unsafeReflect withExtendedLifetime withObjectAtPlusZero withUnsafePointer withUnsafePointerToObject withUnsafeMutablePointer withUnsafeMutablePointers withUnsafePointer withUnsafePointers withVaList zip\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"subst\",\n                    \"begin\": \"\\\\\\\\\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"contains\": [\n                        {\n                            \"className\": \"number\",\n                            \"begin\": \"\\\\b([\\\\d_]+(\\\\.[\\\\deE_]+)?|0x[a-fA-F0-9_]+(\\\\.[a-fA-F0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\\\b\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ],\n            \"variants\": [\n                {\n                    \"begin\": \"\\\"\\\"\\\"\",\n                    \"end\": \"\\\"\\\"\\\"\"\n                },\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                \"self\",\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \"\\\\b[A-Z][\\\\wÀ\\\\-ʸ']*[!?]\"\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \"\\\\b[A-Z][\\\\wÀ\\\\-ʸ']*\",\n            \"relevance\": 0\n        },\n        {\n            \"$ref\": \"#contains.0.contains.1.contains.0\"\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"func\",\n            \"end\": \"{\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[A-Za-z$_][0-9A-Za-z$_]*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"<\",\n                    \"end\": \">\"\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"endsParent\": true,\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"contains\": [\n                        \"self\",\n                        {\n                            \"$ref\": \"#contains.0.contains.1.contains.0\"\n                        },\n                        {\n                            \"$ref\": \"#contains.0\"\n                        },\n                        {\n                            \"className\": \"comment\",\n                            \"begin\": \"\\/\\\\*\",\n                            \"end\": \"\\\\*\\/\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.1.contains.0\"\n                                },\n                                {\n                                    \"className\": \"doctag\",\n                                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        },\n                        {\n                            \"begin\": \":\"\n                        }\n                    ],\n                    \"illegal\": \"[\\\"']\"\n                }\n            ],\n            \"illegal\": \"\\\\[|%\"\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"struct protocol class extension enum\",\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            },\n            \"end\": \"\\\\{\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[A-Za-z$_][\\\\x{00C0}-\\\\x{02B8}0-9A-Za-z$_]*\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"(@discardableResult|@warn_unused_result|@exported|@lazy|@noescape|@NSCopying|@NSManaged|@objc|@objcMembers|@convention|@required|@noreturn|@IBAction|@IBDesignable|@IBInspectable|@IBOutlet|@infix|@prefix|@postfix|@autoclosure|@testable|@available|@nonobjc|@NSApplicationMain|@UIApplicationMain|@dynamicMemberLookup|@propertyWrapper)\"\n        },\n        {\n            \"beginKeywords\": \"import\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1\"\n                },\n                {\n                    \"$ref\": \"#contains.2\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/taggerscript.json",
    "content": "{\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\$noop\\\\(\",\n            \"end\": \"\\\\)\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"contains\": [\n                        \"self\",\n                        {\n                            \"begin\": \"\\\\\\\\.\"\n                        }\n                    ]\n                }\n            ],\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\\\$(?!noop)[a-zA-Z][_a-zA-Z0-9]*\",\n            \"end\": \"\\\\(\",\n            \"excludeEnd\": true\n        },\n        {\n            \"className\": \"variable\",\n            \"begin\": \"%[_a-zA-Z0-9:]*\",\n            \"end\": \"%\"\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"\\\\\\\\.\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/tap.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"variants\": [\n                {\n                    \"begin\": \"^TAP version (\\\\d+)$\"\n                },\n                {\n                    \"begin\": \"^1\\\\.\\\\.(\\\\d+)$\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"(s+)?---$\",\n            \"end\": \"\\\\.\\\\.\\\\.$\",\n            \"subLanguage\": \"yaml\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \" (\\\\d+) \"\n        },\n        {\n            \"className\": \"symbol\",\n            \"variants\": [\n                {\n                    \"begin\": \"^ok\"\n                },\n                {\n                    \"begin\": \"^not ok\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/tcl.json",
    "content": "{\n    \"aliases\": [\n        \"tk\"\n    ],\n    \"keywords\": \"after append apply array auto_execok auto_import auto_load auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror binary break catch cd chan clock close concat continue dde dict encoding eof error eval exec exit expr fblocked fconfigure fcopy file fileevent filename flush for foreach format gets glob global history http if incr info interp join lappend|10 lassign|10 lindex|10 linsert|10 list llength|10 load lrange|10 lrepeat|10 lreplace|10 lreverse|10 lsearch|10 lset|10 lsort|10 mathfunc mathop memory msgcat namespace open package parray pid pkg::create pkg_mkIndex platform platform::shell proc puts pwd read refchan regexp registry regsub|10 rename return safe scan seek set socket source split string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord tcl_startOfPreviousWord tcl_wordBreakAfter tcl_wordBreakBefore tcltest tclvars tell time tm trace unknown unload unset update uplevel upvar variable vwait while\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \";[ \\\\t]*#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"^[ \\\\t]*#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"proc\",\n            \"end\": \"[\\\\{]\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[ \\\\t\\\\n\\\\r]+(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\",\n                    \"end\": \"[ \\\\t\\\\n\\\\r]\",\n                    \"endsWithParent\": true,\n                    \"excludeEnd\": true\n                }\n            ]\n        },\n        {\n            \"excludeEnd\": true,\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\$(\\\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\\\\(([a-zA-Z0-9_])*\\\\)\",\n                    \"end\": \"[^a-zA-Z0-9_\\\\}\\\\$]\"\n                },\n                {\n                    \"begin\": \"\\\\$(\\\\{)?(::)?[a-zA-Z_]((::)?[a-zA-Z0-9_])*\",\n                    \"end\": \"(\\\\))?[^a-zA-Z0-9_\\\\}\\\\$]\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ],\n            \"variants\": [\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": null,\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.4.contains.0\"\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"variants\": [\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"\\\\b(0b[01]+)\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                    \"relevance\": 0\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/tex.json",
    "content": "{\n    \"contains\": [\n        {\n            \"className\": \"tag\",\n            \"begin\": \"\\\\\\\\\",\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"className\": \"name\",\n                    \"variants\": [\n                        {\n                            \"begin\": \"[a-zA-Z\\\\x{0430}-\\\\x{044f}\\\\x{0410}-\\\\x{042f}]+[*]?\"\n                        },\n                        {\n                            \"begin\": \"[^a-zA-Z\\\\x{0430}-\\\\x{044f}\\\\x{0410}-\\\\x{042f0}-9]\"\n                        }\n                    ],\n                    \"starts\": {\n                        \"endsWithParent\": true,\n                        \"relevance\": 0,\n                        \"contains\": [\n                            {\n                                \"className\": \"string\",\n                                \"variants\": [\n                                    {\n                                        \"begin\": \"\\\\[\",\n                                        \"end\": \"\\\\]\"\n                                    },\n                                    {\n                                        \"begin\": \"\\\\{\",\n                                        \"end\": \"\\\\}\"\n                                    }\n                                ]\n                            },\n                            {\n                                \"begin\": \"\\\\s*=\\\\s*\",\n                                \"endsWithParent\": true,\n                                \"relevance\": 0,\n                                \"contains\": [\n                                    {\n                                        \"className\": \"number\",\n                                        \"begin\": \"-?\\\\d*\\\\.?\\\\d+(pt|pc|mm|cm|in|dd|cc|ex|em)?\"\n                                    }\n                                ]\n                            }\n                        ]\n                    }\n                }\n            ]\n        },\n        {\n            \"className\": \"formula\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0\"\n                }\n            ],\n            \"relevance\": 0,\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\$\\\\$\",\n                    \"end\": \"\\\\$\\\\$\"\n                },\n                {\n                    \"begin\": \"\\\\$\",\n                    \"end\": \"\\\\$\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"%\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/thrift.json",
    "content": "{\n    \"keywords\": {\n        \"keyword\": \"namespace const typedef struct enum service exception void oneway set list map required optional\",\n        \"built_in\": \"bool byte i16 i32 i64 double string binary\",\n        \"literal\": \"true false\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"struct enum service exception\",\n            \"end\": \"\\\\{\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0,\n                    \"starts\": {\n                        \"endsWithParent\": true,\n                        \"excludeEnd\": true\n                    }\n                }\n            ]\n        },\n        {\n            \"begin\": \"\\\\b(set|list|map)\\\\s*<\",\n            \"end\": \">\",\n            \"keywords\": \"bool byte i16 i32 i64 double string binary\",\n            \"contains\": [\n                \"self\"\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/tp.json",
    "content": "{\n    \"keywords\": {\n        \"keyword\": \"ABORT ACC ADJUST AND AP_LD BREAK CALL CNT COL CONDITION CONFIG DA DB DIV DETECT ELSE END ENDFOR ERR_NUM ERROR_PROG FINE FOR GP GUARD INC IF JMP LINEAR_MAX_SPEED LOCK MOD MONITOR OFFSET Offset OR OVERRIDE PAUSE PREG PTH RT_LD RUN SELECT SKIP Skip TA TB TO TOOL_OFFSET Tool_Offset UF UT UFRAME_NUM UTOOL_NUM UNLOCK WAIT X Y Z W P R STRLEN SUBSTR FINDSTR VOFFSET PROG ATTR MN POS\",\n        \"literal\": \"ON OFF max_speed LPOS JPOS ENABLE DISABLE START STOP RESET\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"built_in\",\n            \"begin\": \"(AR|P|PAYLOAD|PR|R|SR|RSR|LBL|VR|UALM|MESSAGE|UTOOL|UFRAME|TIMER|TIMER_OVERFLOW|JOINT_MAX_SPEED|RESUME_PROG|DIAG_REC)\\\\[\",\n            \"end\": \"\\\\]\",\n            \"contains\": [\n                \"self\",\n                {\n                    \"className\": \"number\",\n                    \"begin\": \"[1-9][0-9]*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"symbol\",\n                    \"begin\": \":[^\\\\]]+\"\n                }\n            ]\n        },\n        {\n            \"className\": \"built_in\",\n            \"begin\": \"(AI|AO|DI|DO|F|RI|RO|UI|UO|GI|GO|SI|SO)\\\\[\",\n            \"end\": \"\\\\]\",\n            \"contains\": [\n                \"self\",\n                {\n                    \"$ref\": \"#contains.0.contains.1\"\n                },\n                {\n                    \"className\": \"string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.2\"\n                }\n            ]\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\/(PROG|ATTR|MN|POS|END)\\\\b\"\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"(CALL|RUN|POINT_LOGIC|LBL)\\\\b\"\n        },\n        {\n            \"className\": \"keyword\",\n            \"begin\": \"\\\\b(ACC|CNT|Skip|Offset|PSPD|RT_LD|AP_LD|Tool_Offset)\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\d+(sec|msec|mm\\/sec|cm\\/min|inch\\/min|deg\\/sec|mm|in|cm)?\\\\b\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"[;$]\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"!\",\n            \"end\": \"[;$]\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"--eg:\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.1.contains.2\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"variable\",\n            \"begin\": \"\\\\$[A-Za-z0-9_]+\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/twig.json",
    "content": "{\n    \"aliases\": [\n        \"craftcms\"\n    ],\n    \"case_insensitive\": true,\n    \"subLanguage\": \"xml\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\{#\",\n            \"end\": \"#}\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"template-tag\",\n            \"begin\": \"\\\\{%\",\n            \"end\": \"%}\",\n            \"contains\": [\n                {\n                    \"className\": \"name\",\n                    \"begin\": \"\\\\w+\",\n                    \"keywords\": \"apply autoescape block deprecated do embed extends filter flush for from if import include macro sandbox set use verbatim with endapply endautoescape endblock enddeprecated enddo endembed endextends endfilter endflush endfor endfrom endif endimport endinclude endmacro endsandbox endset enduse endverbatim endwith\",\n                    \"starts\": {\n                        \"endsWithParent\": true,\n                        \"contains\": [\n                            {\n                                \"begin\": \"\\\\|[A-Za-z_]+:?\",\n                                \"keywords\": \"abs batch capitalize column convert_encoding date date_modify default escape filter first format inky_to_html inline_css join json_encode keys last length lower map markdown merge nl2br number_format raw reduce replace reverse round slice sort spaceless split striptags title trim upper url_encode\",\n                                \"contains\": [\n                                    {\n                                        \"beginKeywords\": \"attribute block constant cycle date dump include max min parent random range source template_from_string\",\n                                        \"keywords\": {\n                                            \"name\": \"attribute block constant cycle date dump include max min parent random range source template_from_string\"\n                                        },\n                                        \"relevance\": 0,\n                                        \"contains\": [\n                                            {\n                                                \"className\": \"params\",\n                                                \"begin\": \"\\\\(\",\n                                                \"end\": \"\\\\)\"\n                                            }\n                                        ]\n                                    }\n                                ]\n                            },\n                            {\n                                \"$ref\": \"#contains.1.contains.0.starts.contains.0.contains.0\"\n                            }\n                        ],\n                        \"relevance\": 0\n                    }\n                }\n            ]\n        },\n        {\n            \"className\": \"template-variable\",\n            \"begin\": \"\\\\{\\\\{\",\n            \"end\": \"}}\",\n            \"contains\": [\n                \"self\",\n                {\n                    \"$ref\": \"#contains.1.contains.0.starts.contains.0\"\n                },\n                {\n                    \"$ref\": \"#contains.1.contains.0.starts.contains.0.contains.0\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/typescript.json",
    "content": "{\n    \"aliases\": [\n        \"ts\"\n    ],\n    \"keywords\": {\n        \"keyword\": \"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class public private protected get set super static implements enum export import declare type namespace abstract as from extends async await\",\n        \"literal\": \"true false null undefined NaN Infinity\",\n        \"built_in\": \"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document any number boolean string void Promise\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^\\\\s*['\\\"]use strict['\\\"]\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"html`\",\n            \"end\": \"\",\n            \"starts\": {\n                \"end\": \"`\",\n                \"returnEnd\": false,\n                \"contains\": [\n                    {\n                        \"$ref\": \"#contains.1.contains.0\"\n                    },\n                    {\n                        \"className\": \"subst\",\n                        \"begin\": \"\\\\$\\\\{\",\n                        \"end\": \"\\\\}\",\n                        \"keywords\": {\n                            \"$ref\": \"#keywords\"\n                        },\n                        \"contains\": [\n                            {\n                                \"$ref\": \"#contains.1\"\n                            },\n                            {\n                                \"$ref\": \"#contains.2\"\n                            },\n                            {\n                                \"$ref\": \"#contains.3\"\n                            },\n                            {\n                                \"begin\": \"css`\",\n                                \"end\": \"\",\n                                \"starts\": {\n                                    \"end\": \"`\",\n                                    \"returnEnd\": false,\n                                    \"contains\": [\n                                        {\n                                            \"$ref\": \"#contains.1.contains.0\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.3.starts.contains.1\"\n                                        }\n                                    ],\n                                    \"subLanguage\": \"css\"\n                                }\n                            },\n                            {\n                                \"className\": \"string\",\n                                \"begin\": \"`\",\n                                \"end\": \"`\",\n                                \"contains\": [\n                                    {\n                                        \"$ref\": \"#contains.1.contains.0\"\n                                    },\n                                    {\n                                        \"$ref\": \"#contains.3.starts.contains.1\"\n                                    }\n                                ]\n                            },\n                            {\n                                \"className\": \"number\",\n                                \"variants\": [\n                                    {\n                                        \"begin\": \"\\\\b(0[bB][01]+)n?\"\n                                    },\n                                    {\n                                        \"begin\": \"\\\\b(0[oO][0-7]+)n?\"\n                                    },\n                                    {\n                                        \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)n?\"\n                                    }\n                                ],\n                                \"relevance\": 0\n                            },\n                            {\n                                \"className\": \"regexp\",\n                                \"begin\": \"\\\\\\/\",\n                                \"end\": \"\\\\\\/[gimuy]*\",\n                                \"illegal\": \"\\\\n\",\n                                \"contains\": [\n                                    {\n                                        \"$ref\": \"#contains.1.contains.0\"\n                                    },\n                                    {\n                                        \"begin\": \"\\\\[\",\n                                        \"end\": \"\\\\]\",\n                                        \"relevance\": 0,\n                                        \"contains\": [\n                                            {\n                                                \"$ref\": \"#contains.1.contains.0\"\n                                            }\n                                        ]\n                                    }\n                                ]\n                            }\n                        ]\n                    }\n                ],\n                \"subLanguage\": \"xml\"\n            }\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.1.contains.3\"\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.1.contains.4\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"$ref\": \"#contains.3.starts.contains.1.contains.5\"\n        },\n        {\n            \"begin\": \"(!|!=|!==|%|%=|&|&&|&=|\\\\*|\\\\*=|\\\\+|\\\\+=|,|-|-=|\\/=|\\/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\\\?|\\\\[|\\\\{|\\\\(|\\\\^|\\\\^=|\\\\||\\\\|=|\\\\|\\\\||~|\\\\b(case|return|throw)\\\\b)\\\\s*\",\n            \"keywords\": \"return throw case\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6\"\n                },\n                {\n                    \"$ref\": \"#contains.7\"\n                },\n                {\n                    \"$ref\": \"#contains.3.starts.contains.1.contains.6\"\n                },\n                {\n                    \"className\": \"function\",\n                    \"begin\": \"(\\\\(.*?\\\\)|[a-zA-Z]\\\\w*)\\\\s*=>\",\n                    \"returnBegin\": true,\n                    \"end\": \"\\\\s*=>\",\n                    \"contains\": [\n                        {\n                            \"className\": \"params\",\n                            \"variants\": [\n                                {\n                                    \"begin\": \"[a-zA-Z]\\\\w*\"\n                                },\n                                {\n                                    \"begin\": \"\\\\(\\\\s*\\\\)\"\n                                },\n                                {\n                                    \"begin\": \"\\\\(\",\n                                    \"end\": \"\\\\)\",\n                                    \"excludeBegin\": true,\n                                    \"excludeEnd\": true,\n                                    \"keywords\": {\n                                        \"$ref\": \"#keywords\"\n                                    },\n                                    \"contains\": [\n                                        \"self\",\n                                        {\n                                            \"$ref\": \"#contains.6\"\n                                        },\n                                        {\n                                            \"$ref\": \"#contains.7\"\n                                        }\n                                    ]\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"function\",\n            \"end\": \"[\\\\{;]\",\n            \"excludeEnd\": true,\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            },\n            \"contains\": [\n                \"self\",\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[A-Za-z$_][0-9A-Za-z$_]*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"excludeBegin\": true,\n                    \"excludeEnd\": true,\n                    \"keywords\": {\n                        \"$ref\": \"#keywords\"\n                    },\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.6\"\n                        },\n                        {\n                            \"$ref\": \"#contains.7\"\n                        },\n                        {\n                            \"className\": \"meta\",\n                            \"begin\": \"@[A-Za-z$_][0-9A-Za-z$_]*\"\n                        },\n                        {\n                            \"begin\": \"\\\\(\",\n                            \"end\": \"\\\\)\",\n                            \"keywords\": {\n                                \"$ref\": \"#keywords\"\n                            },\n                            \"contains\": [\n                                \"self\",\n                                {\n                                    \"$ref\": \"#contains.2\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.1\"\n                                },\n                                {\n                                    \"className\": \"number\",\n                                    \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ],\n            \"illegal\": \"%\",\n            \"relevance\": 0\n        },\n        {\n            \"beginKeywords\": \"constructor\",\n            \"end\": \"[\\\\{;]\",\n            \"excludeEnd\": true,\n            \"contains\": [\n                \"self\",\n                {\n                    \"$ref\": \"#contains.10.contains.2\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"module\\\\.\",\n            \"keywords\": {\n                \"built_in\": \"module\"\n            },\n            \"relevance\": 0\n        },\n        {\n            \"beginKeywords\": \"module\",\n            \"end\": \"\\\\{\",\n            \"excludeEnd\": true\n        },\n        {\n            \"beginKeywords\": \"interface\",\n            \"end\": \"\\\\{\",\n            \"excludeEnd\": true,\n            \"keywords\": \"interface extends\"\n        },\n        {\n            \"begin\": \"\\\\$[(.]\"\n        },\n        {\n            \"begin\": \"\\\\.[a-zA-Z]\\\\w*\",\n            \"relevance\": 0\n        },\n        {\n            \"$ref\": \"#contains.10.contains.2.contains.2\"\n        },\n        {\n            \"$ref\": \"#contains.10.contains.2.contains.3\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/vala.json",
    "content": "{\n    \"keywords\": {\n        \"keyword\": \"char uchar unichar int uint long ulong short ushort int8 int16 int32 int64 uint8 uint16 uint32 uint64 float double bool struct enum string void weak unowned owned async signal static abstract interface override virtual delegate if while do for foreach else switch case break default return try catch public private protected internal using new this get set const stdout stdin stderr var\",\n        \"built_in\": \"DBus GLib CCode Gee Object Gtk Posix\",\n        \"literal\": \"false true null\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class interface namespace\",\n            \"end\": \"{\",\n            \"excludeEnd\": true,\n            \"illegal\": \"[^,:\\\\n\\\\s\\\\.]\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.1.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\\\"\\\"\",\n            \"end\": \"\\\"\\\"\\\"\",\n            \"relevance\": 5\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.4.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^#\",\n            \"end\": \"$\",\n            \"relevance\": 2\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/vbnet.json",
    "content": "{\n    \"aliases\": [\n        \"vb\"\n    ],\n    \"case_insensitive\": true,\n    \"keywords\": {\n        \"keyword\": \"addhandler addressof alias and andalso aggregate ansi as async assembly auto await binary by byref byval call case catch class compare const continue custom declare default delegate dim distinct do each equals else elseif end enum erase error event exit explicit finally for friend from function get global goto group handles if implements imports in inherits interface into is isfalse isnot istrue iterator join key let lib like loop me mid mod module mustinherit mustoverride mybase myclass nameof namespace narrowing new next not notinheritable notoverridable of off on operator option optional or order orelse overloads overridable overrides paramarray partial preserve private property protected public raiseevent readonly redim rem removehandler resume return select set shadows shared skip static step stop structure strict sub synclock take text then throw to try unicode until using when where while widening with withevents writeonly xor yield\",\n        \"built_in\": \"boolean byte cbool cbyte cchar cdate cdec cdbl char cint clng cobj csbyte cshort csng cstr ctype date decimal directcast double gettype getxmlnamespace iif integer long object sbyte short single string trycast typeof uinteger ulong ushort\",\n        \"literal\": \"true false nothing\"\n    },\n    \"illegal\": \"\\/\\/|{|}|endif|gosub|variant|wend|^\\\\$ \",\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\"\\\"\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"'\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"'''|<!--|-->\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"<\\/?\",\n                    \"end\": \">\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.1.contains.0.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"$ref\": \"#contains.1.contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"returnBegin\": true\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"keywords\": {\n                \"meta-keyword\": \"if else elseif end region externalsource\"\n            }\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/vbscript-html.json",
    "content": "{\n    \"subLanguage\": \"xml\",\n    \"contains\": [\n        {\n            \"begin\": \"<%\",\n            \"end\": \"%>\",\n            \"subLanguage\": \"vbscript\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/vbscript.json",
    "content": "{\n    \"aliases\": [\n        \"vbs\"\n    ],\n    \"case_insensitive\": true,\n    \"keywords\": {\n        \"keyword\": \"call class const dim do loop erase execute executeglobal exit for each next function if then else on error option explicit new private property let get public randomize redim rem select case set stop sub while wend with end to elseif is or xor and not class_initialize class_terminate default preserve in me byval byref step resume goto\",\n        \"built_in\": \"lcase month vartype instrrev ubound setlocale getobject rgb getref string weekdayname rnd dateadd monthname now day minute isarray cbool round formatcurrency conversions csng timevalue second year space abs clng timeserial fixs len asc isempty maths dateserial atn timer isobject filter weekday datevalue ccur isdate instr datediff formatdatetime replace isnull right sgn array snumeric log cdbl hex chr lbound msgbox ucase getlocale cos cdate cbyte rtrim join hour oct typename trim strcomp int createobject loadpicture tan formatnumber mid scriptenginebuildversion scriptengine split scriptengineminorversion cint sin datepart ltrim sqr scriptenginemajorversion time derived eval date formatpercent exp inputbox left ascw chrw regexp server response request cstr err\",\n        \"literal\": \"true false null nothing empty\"\n    },\n    \"illegal\": \"\\/\\/\",\n    \"contains\": [\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\"\\\"\"\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"'\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/verilog.json",
    "content": "{\n    \"aliases\": [\n        \"v\",\n        \"sv\",\n        \"svh\"\n    ],\n    \"case_insensitive\": false,\n    \"keywords\": {\n        \"keyword\": \"accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind bins binsof bit break buf|0 bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin function generate|5 genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import incdir include initial inout input inside instance int integer interconnect interface intersect join join_any join_none large let liblist library local localparam logic longint macromodule matches medium modport module nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 or output package packed parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor\",\n        \"literal\": \"null\",\n        \"built_in\": \"$finish $stop $exit $fatal $error $warning $info $realtime $time $printtimescale $bitstoreal $bitstoshortreal $itor $signed $cast $bits $stime $timeformat $realtobits $shortrealtobits $rtoi $unsigned $asserton $assertkill $assertpasson $assertfailon $assertnonvacuouson $assertoff $assertcontrol $assertpassoff $assertfailoff $assertvacuousoff $isunbounded $sampled $fell $changed $past_gclk $fell_gclk $changed_gclk $rising_gclk $steady_gclk $coverage_control $coverage_get $coverage_save $set_coverage_db_name $rose $stable $past $rose_gclk $stable_gclk $future_gclk $falling_gclk $changing_gclk $display $coverage_get_max $coverage_merge $get_coverage $load_coverage_db $typename $unpacked_dimensions $left $low $increment $clog2 $ln $log10 $exp $sqrt $pow $floor $ceil $sin $cos $tan $countbits $onehot $isunknown $fatal $warning $dimensions $right $high $size $asin $acos $atan $atan2 $hypot $sinh $cosh $tanh $asinh $acosh $atanh $countones $onehot0 $error $info $random $dist_chi_square $dist_erlang $dist_exponential $dist_normal $dist_poisson $dist_t $dist_uniform $q_initialize $q_remove $q_exam $async$and$array $async$nand$array $async$or$array $async$nor$array $sync$and$array $sync$nand$array $sync$or$array $sync$nor$array $q_add $q_full $psprintf $async$and$plane $async$nand$plane $async$or$plane $async$nor$plane $sync$and$plane $sync$nand$plane $sync$or$plane $sync$nor$plane $system $display $displayb $displayh $displayo $strobe $strobeb $strobeh $strobeo $write $readmemb $readmemh $writememh $value$plusargs $dumpvars $dumpon $dumplimit $dumpports $dumpportson $dumpportslimit $writeb $writeh $writeo $monitor $monitorb $monitorh $monitoro $writememb $dumpfile $dumpoff $dumpall $dumpflush $dumpportsoff $dumpportsall $dumpportsflush $fclose $fdisplay $fdisplayb $fdisplayh $fdisplayo $fstrobe $fstrobeb $fstrobeh $fstrobeo $swrite $swriteb $swriteh $swriteo $fscanf $fread $fseek $fflush $feof $fopen $fwrite $fwriteb $fwriteh $fwriteo $fmonitor $fmonitorb $fmonitorh $fmonitoro $sformat $sformatf $fgetc $ungetc $fgets $sscanf $rewind $ftell $ferror\"\n    },\n    \"lexemes\": \"[\\\\w\\\\$]+\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                }\n            ],\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\b((\\\\d+'(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)\"\n                },\n                {\n                    \"begin\": \"\\\\B(('(b|h|o|d|B|H|O|D))[0-9xzXZa-fA-F_]+)\"\n                },\n                {\n                    \"begin\": \"\\\\b([0-9_])+\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"variable\",\n            \"variants\": [\n                {\n                    \"begin\": \"#\\\\((?!parameter).+\\\\)\"\n                },\n                {\n                    \"begin\": \"\\\\.\\\\w+\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"`\",\n            \"end\": \"$\",\n            \"keywords\": {\n                \"meta-keyword\": \"define __FILE__ __LINE__ begin_keywords celldefine default_nettype define else elsif end_keywords endcelldefine endif ifdef ifndef include line nounconnected_drive pragma resetall timescale unconnected_drive undef undefineall\"\n            },\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/vhdl.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"keywords\": {\n        \"keyword\": \"abs access after alias all and architecture array assert assume assume_guarantee attribute begin block body buffer bus case component configuration constant context cover disconnect downto default else elsif end entity exit fairness file for force function generate generic group guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package parameter port postponed procedure process property protected pure range record register reject release rem report restrict restrict_guarantee return rol ror select sequence severity shared signal sla sll sra srl strong subtype then to transport type unaffected units until use variable view vmode vprop vunit wait when while with xnor xor\",\n        \"built_in\": \"boolean bit character integer time delay_length natural positive string bit_vector file_open_kind file_open_status std_logic std_logic_vector unsigned signed boolean_vector integer_vector std_ulogic std_ulogic_vector unresolved_unsigned u_unsigned unresolved_signed u_signed real_vector time_vector\",\n        \"literal\": \"false true note warning error failure line text side width\"\n    },\n    \"illegal\": \"{\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"--\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b(\\\\d(_|\\\\d)*#\\\\w+(\\\\.\\\\w+)?#([eE][-+]?\\\\d(_|\\\\d)*)?|\\\\d(_|\\\\d)*(\\\\.\\\\d(_|\\\\d)*)?([eE][-+]?\\\\d(_|\\\\d)*)?)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'(U|X|0|1|Z|W|L|H|-)'\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                }\n            ]\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"'[A-Za-z](_?[A-Za-z0-9])*\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2.contains.0\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/vim.json",
    "content": "{\n    \"lexemes\": \"[!#@\\\\w]+\",\n    \"keywords\": {\n        \"keyword\": \"N|0 P|0 X|0 a|0 ab abc abo al am an|0 ar arga argd arge argdo argg argl argu as au aug aun b|0 bN ba bad bd be bel bf bl bm bn bo bp br brea breaka breakd breakl bro bufdo buffers bun bw c|0 cN cNf ca cabc caddb cad caddf cal cat cb cc ccl cd ce cex cf cfir cgetb cgete cg changes chd che checkt cl cla clo cm cmapc cme cn cnew cnf cno cnorea cnoreme co col colo com comc comp con conf cope cp cpf cq cr cs cst cu cuna cunme cw delm deb debugg delc delf dif diffg diffo diffp diffpu diffs diffthis dig di dl dell dj dli do doautoa dp dr ds dsp e|0 ea ec echoe echoh echom echon el elsei em en endfo endf endt endw ene ex exe exi exu f|0 files filet fin fina fini fir fix fo foldc foldd folddoc foldo for fu go gr grepa gu gv ha helpf helpg helpt hi hid his ia iabc if ij il im imapc ime ino inorea inoreme int is isp iu iuna iunme j|0 ju k|0 keepa kee keepj lN lNf l|0 lad laddb laddf la lan lat lb lc lch lcl lcs le lefta let lex lf lfir lgetb lgete lg lgr lgrepa lh ll lla lli lmak lm lmapc lne lnew lnf ln loadk lo loc lockv lol lope lp lpf lr ls lt lu lua luad luaf lv lvimgrepa lw m|0 ma mak map mapc marks mat me menut mes mk mks mksp mkv mkvie mod mz mzf nbc nb nbs new nm nmapc nme nn nnoreme noa no noh norea noreme norm nu nun nunme ol o|0 om omapc ome on ono onoreme opt ou ounme ow p|0 profd prof pro promptr pc ped pe perld po popu pp pre prev ps pt ptN ptf ptj ptl ptn ptp ptr pts pu pw py3 python3 py3d py3f py pyd pyf quita qa rec red redi redr redraws reg res ret retu rew ri rightb rub rubyd rubyf rund ru rv sN san sa sal sav sb sbN sba sbf sbl sbm sbn sbp sbr scrip scripte scs se setf setg setl sf sfir sh sim sig sil sl sla sm smap smapc sme sn sni sno snor snoreme sor so spelld spe spelli spellr spellu spellw sp spr sre st sta startg startr star stopi stj sts sun sunm sunme sus sv sw sy synti sync tN tabN tabc tabdo tabe tabf tabfir tabl tabm tabnew tabn tabo tabp tabr tabs tab ta tags tc tcld tclf te tf th tj tl tm tn to tp tr try ts tu u|0 undoj undol una unh unl unlo unm unme uns up ve verb vert vim vimgrepa vi viu vie vm vmapc vme vne vn vnoreme vs vu vunme windo w|0 wN wa wh wi winc winp wn wp wq wqa ws wu wv x|0 xa xmapc xm xme xn xnoreme xu xunme y|0 z|0 ~ Next Print append abbreviate abclear aboveleft all amenu anoremenu args argadd argdelete argedit argglobal arglocal argument ascii autocmd augroup aunmenu buffer bNext ball badd bdelete behave belowright bfirst blast bmodified bnext botright bprevious brewind break breakadd breakdel breaklist browse bunload bwipeout change cNext cNfile cabbrev cabclear caddbuffer caddexpr caddfile call catch cbuffer cclose center cexpr cfile cfirst cgetbuffer cgetexpr cgetfile chdir checkpath checktime clist clast close cmap cmapclear cmenu cnext cnewer cnfile cnoremap cnoreabbrev cnoremenu copy colder colorscheme command comclear compiler continue confirm copen cprevious cpfile cquit crewind cscope cstag cunmap cunabbrev cunmenu cwindow delete delmarks debug debuggreedy delcommand delfunction diffupdate diffget diffoff diffpatch diffput diffsplit digraphs display deletel djump dlist doautocmd doautoall deletep drop dsearch dsplit edit earlier echo echoerr echohl echomsg else elseif emenu endif endfor endfunction endtry endwhile enew execute exit exusage file filetype find finally finish first fixdel fold foldclose folddoopen folddoclosed foldopen function global goto grep grepadd gui gvim hardcopy help helpfind helpgrep helptags highlight hide history insert iabbrev iabclear ijump ilist imap imapclear imenu inoremap inoreabbrev inoremenu intro isearch isplit iunmap iunabbrev iunmenu join jumps keepalt keepmarks keepjumps lNext lNfile list laddexpr laddbuffer laddfile last language later lbuffer lcd lchdir lclose lcscope left leftabove lexpr lfile lfirst lgetbuffer lgetexpr lgetfile lgrep lgrepadd lhelpgrep llast llist lmake lmap lmapclear lnext lnewer lnfile lnoremap loadkeymap loadview lockmarks lockvar lolder lopen lprevious lpfile lrewind ltag lunmap luado luafile lvimgrep lvimgrepadd lwindow move mark make mapclear match menu menutranslate messages mkexrc mksession mkspell mkvimrc mkview mode mzscheme mzfile nbclose nbkey nbsart next nmap nmapclear nmenu nnoremap nnoremenu noautocmd noremap nohlsearch noreabbrev noremenu normal number nunmap nunmenu oldfiles open omap omapclear omenu only onoremap onoremenu options ounmap ounmenu ownsyntax print profdel profile promptfind promptrepl pclose pedit perl perldo pop popup ppop preserve previous psearch ptag ptNext ptfirst ptjump ptlast ptnext ptprevious ptrewind ptselect put pwd py3do py3file python pydo pyfile quit quitall qall read recover redo redir redraw redrawstatus registers resize retab return rewind right rightbelow ruby rubydo rubyfile rundo runtime rviminfo substitute sNext sandbox sargument sall saveas sbuffer sbNext sball sbfirst sblast sbmodified sbnext sbprevious sbrewind scriptnames scriptencoding scscope set setfiletype setglobal setlocal sfind sfirst shell simalt sign silent sleep slast smagic smapclear smenu snext sniff snomagic snoremap snoremenu sort source spelldump spellgood spellinfo spellrepall spellundo spellwrong split sprevious srewind stop stag startgreplace startreplace startinsert stopinsert stjump stselect sunhide sunmap sunmenu suspend sview swapname syntax syntime syncbind tNext tabNext tabclose tabedit tabfind tabfirst tablast tabmove tabnext tabonly tabprevious tabrewind tag tcl tcldo tclfile tearoff tfirst throw tjump tlast tmenu tnext topleft tprevious trewind tselect tunmenu undo undojoin undolist unabbreviate unhide unlet unlockvar unmap unmenu unsilent update vglobal version verbose vertical vimgrep vimgrepadd visual viusage view vmap vmapclear vmenu vnew vnoremap vnoremenu vsplit vunmap vunmenu write wNext wall while winsize wincmd winpos wnext wprevious wqall wsverb wundo wviminfo xit xall xmapclear xmap xmenu xnoremap xnoremenu xunmap xunmenu yank\",\n        \"built_in\": \"synIDtrans atan2 range matcharg did_filetype asin feedkeys xor argv complete_check add getwinposx getqflist getwinposy screencol clearmatches empty extend getcmdpos mzeval garbagecollect setreg ceil sqrt diff_hlID inputsecret get getfperm getpid filewritable shiftwidth max sinh isdirectory synID system inputrestore winline atan visualmode inputlist tabpagewinnr round getregtype mapcheck hasmapto histdel argidx findfile sha256 exists toupper getcmdline taglist string getmatches bufnr strftime winwidth bufexists strtrans tabpagebuflist setcmdpos remote_read printf setloclist getpos getline bufwinnr float2nr len getcmdtype diff_filler luaeval resolve libcallnr foldclosedend reverse filter has_key bufname str2float strlen setline getcharmod setbufvar index searchpos shellescape undofile foldclosed setqflist buflisted strchars str2nr virtcol floor remove undotree remote_expr winheight gettabwinvar reltime cursor tabpagenr finddir localtime acos getloclist search tanh matchend rename gettabvar strdisplaywidth type abs py3eval setwinvar tolower wildmenumode log10 spellsuggest bufloaded synconcealed nextnonblank server2client complete settabwinvar executable input wincol setmatches getftype hlID inputsave searchpair or screenrow line settabvar histadd deepcopy strpart remote_peek and eval getftime submatch screenchar winsaveview matchadd mkdir screenattr getfontname libcall reltimestr getfsize winnr invert pow getbufline byte2line soundfold repeat fnameescape tagfiles sin strwidth spellbadword trunc maparg log lispindent hostname setpos globpath remote_foreground getchar synIDattr fnamemodify cscope_connection stridx winbufnr indent min complete_add nr2char searchpairpos inputdialog values matchlist items hlexists strridx browsedir expand fmod pathshorten line2byte argc count getwinvar glob foldtextresult getreg foreground cosh matchdelete has char2nr simplify histget searchdecl iconv winrestcmd pumvisible writefile foldlevel haslocaldir keys cos matchstr foldtext histnr tan tempname getcwd byteidx getbufvar islocked escape eventhandler remote_send serverlist winrestview synstack pyeval prevnonblank readfile cindent filereadable changenr exp\"\n    },\n    \"illegal\": \";\",\n    \"contains\": [\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"(\\\\\\\\\\\"|\\\\n\\\\\\\\|[^\\\"\\\\n])*\\\"\"\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\"\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"variable\",\n            \"begin\": \"[bwtglsav]:[\\\\w\\\\d_]*\"\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"function function!\",\n            \"end\": \"$\",\n            \"relevance\": 0,\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\"\n                }\n            ]\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"<[\\\\w\\\\-]+>\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/x86asm.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"lexemes\": \"[.%]?[a-zA-Z]\\\\w*\",\n    \"keywords\": {\n        \"keyword\": \"lock rep repe repz repne repnz xaquire xrelease bnd nobnd aaa aad aam aas adc add and arpl bb0_reset bb1_reset bound bsf bsr bswap bt btc btr bts call cbw cdq cdqe clc cld cli clts cmc cmp cmpsb cmpsd cmpsq cmpsw cmpxchg cmpxchg486 cmpxchg8b cmpxchg16b cpuid cpu_read cpu_write cqo cwd cwde daa das dec div dmint emms enter equ f2xm1 fabs fadd faddp fbld fbstp fchs fclex fcmovb fcmovbe fcmove fcmovnb fcmovnbe fcmovne fcmovnu fcmovu fcom fcomi fcomip fcomp fcompp fcos fdecstp fdisi fdiv fdivp fdivr fdivrp femms feni ffree ffreep fiadd ficom ficomp fidiv fidivr fild fimul fincstp finit fist fistp fisttp fisub fisubr fld fld1 fldcw fldenv fldl2e fldl2t fldlg2 fldln2 fldpi fldz fmul fmulp fnclex fndisi fneni fninit fnop fnsave fnstcw fnstenv fnstsw fpatan fprem fprem1 fptan frndint frstor fsave fscale fsetpm fsin fsincos fsqrt fst fstcw fstenv fstp fstsw fsub fsubp fsubr fsubrp ftst fucom fucomi fucomip fucomp fucompp fxam fxch fxtract fyl2x fyl2xp1 hlt ibts icebp idiv imul in inc incbin insb insd insw int int01 int1 int03 int3 into invd invpcid invlpg invlpga iret iretd iretq iretw jcxz jecxz jrcxz jmp jmpe lahf lar lds lea leave les lfence lfs lgdt lgs lidt lldt lmsw loadall loadall286 lodsb lodsd lodsq lodsw loop loope loopne loopnz loopz lsl lss ltr mfence monitor mov movd movq movsb movsd movsq movsw movsx movsxd movzx mul mwait neg nop not or out outsb outsd outsw packssdw packsswb packuswb paddb paddd paddsb paddsiw paddsw paddusb paddusw paddw pand pandn pause paveb pavgusb pcmpeqb pcmpeqd pcmpeqw pcmpgtb pcmpgtd pcmpgtw pdistib pf2id pfacc pfadd pfcmpeq pfcmpge pfcmpgt pfmax pfmin pfmul pfrcp pfrcpit1 pfrcpit2 pfrsqit1 pfrsqrt pfsub pfsubr pi2fd pmachriw pmaddwd pmagw pmulhriw pmulhrwa pmulhrwc pmulhw pmullw pmvgezb pmvlzb pmvnzb pmvzb pop popa popad popaw popf popfd popfq popfw por prefetch prefetchw pslld psllq psllw psrad psraw psrld psrlq psrlw psubb psubd psubsb psubsiw psubsw psubusb psubusw psubw punpckhbw punpckhdq punpckhwd punpcklbw punpckldq punpcklwd push pusha pushad pushaw pushf pushfd pushfq pushfw pxor rcl rcr rdshr rdmsr rdpmc rdtsc rdtscp ret retf retn rol ror rdm rsdc rsldt rsm rsts sahf sal salc sar sbb scasb scasd scasq scasw sfence sgdt shl shld shr shrd sidt sldt skinit smi smint smintold smsw stc std sti stosb stosd stosq stosw str sub svdc svldt svts swapgs syscall sysenter sysexit sysret test ud0 ud1 ud2b ud2 ud2a umov verr verw fwait wbinvd wrshr wrmsr xadd xbts xchg xlatb xlat xor cmove cmovz cmovne cmovnz cmova cmovnbe cmovae cmovnb cmovb cmovnae cmovbe cmovna cmovg cmovnle cmovge cmovnl cmovl cmovnge cmovle cmovng cmovc cmovnc cmovo cmovno cmovs cmovns cmovp cmovpe cmovnp cmovpo je jz jne jnz ja jnbe jae jnb jb jnae jbe jna jg jnle jge jnl jl jnge jle jng jc jnc jo jno js jns jpo jnp jpe jp sete setz setne setnz seta setnbe setae setnb setnc setb setnae setcset setbe setna setg setnle setge setnl setl setnge setle setng sets setns seto setno setpe setp setpo setnp addps addss andnps andps cmpeqps cmpeqss cmpleps cmpless cmpltps cmpltss cmpneqps cmpneqss cmpnleps cmpnless cmpnltps cmpnltss cmpordps cmpordss cmpunordps cmpunordss cmpps cmpss comiss cvtpi2ps cvtps2pi cvtsi2ss cvtss2si cvttps2pi cvttss2si divps divss ldmxcsr maxps maxss minps minss movaps movhps movlhps movlps movhlps movmskps movntps movss movups mulps mulss orps rcpps rcpss rsqrtps rsqrtss shufps sqrtps sqrtss stmxcsr subps subss ucomiss unpckhps unpcklps xorps fxrstor fxrstor64 fxsave fxsave64 xgetbv xsetbv xsave xsave64 xsaveopt xsaveopt64 xrstor xrstor64 prefetchnta prefetcht0 prefetcht1 prefetcht2 maskmovq movntq pavgb pavgw pextrw pinsrw pmaxsw pmaxub pminsw pminub pmovmskb pmulhuw psadbw pshufw pf2iw pfnacc pfpnacc pi2fw pswapd maskmovdqu clflush movntdq movnti movntpd movdqa movdqu movdq2q movq2dq paddq pmuludq pshufd pshufhw pshuflw pslldq psrldq psubq punpckhqdq punpcklqdq addpd addsd andnpd andpd cmpeqpd cmpeqsd cmplepd cmplesd cmpltpd cmpltsd cmpneqpd cmpneqsd cmpnlepd cmpnlesd cmpnltpd cmpnltsd cmpordpd cmpordsd cmpunordpd cmpunordsd cmppd comisd cvtdq2pd cvtdq2ps cvtpd2dq cvtpd2pi cvtpd2ps cvtpi2pd cvtps2dq cvtps2pd cvtsd2si cvtsd2ss cvtsi2sd cvtss2sd cvttpd2pi cvttpd2dq cvttps2dq cvttsd2si divpd divsd maxpd maxsd minpd minsd movapd movhpd movlpd movmskpd movupd mulpd mulsd orpd shufpd sqrtpd sqrtsd subpd subsd ucomisd unpckhpd unpcklpd xorpd addsubpd addsubps haddpd haddps hsubpd hsubps lddqu movddup movshdup movsldup clgi stgi vmcall vmclear vmfunc vmlaunch vmload vmmcall vmptrld vmptrst vmread vmresume vmrun vmsave vmwrite vmxoff vmxon invept invvpid pabsb pabsw pabsd palignr phaddw phaddd phaddsw phsubw phsubd phsubsw pmaddubsw pmulhrsw pshufb psignb psignw psignd extrq insertq movntsd movntss lzcnt blendpd blendps blendvpd blendvps dppd dpps extractps insertps movntdqa mpsadbw packusdw pblendvb pblendw pcmpeqq pextrb pextrd pextrq phminposuw pinsrb pinsrd pinsrq pmaxsb pmaxsd pmaxud pmaxuw pminsb pminsd pminud pminuw pmovsxbw pmovsxbd pmovsxbq pmovsxwd pmovsxwq pmovsxdq pmovzxbw pmovzxbd pmovzxbq pmovzxwd pmovzxwq pmovzxdq pmuldq pmulld ptest roundpd roundps roundsd roundss crc32 pcmpestri pcmpestrm pcmpistri pcmpistrm pcmpgtq popcnt getsec pfrcpv pfrsqrtv movbe aesenc aesenclast aesdec aesdeclast aesimc aeskeygenassist vaesenc vaesenclast vaesdec vaesdeclast vaesimc vaeskeygenassist vaddpd vaddps vaddsd vaddss vaddsubpd vaddsubps vandpd vandps vandnpd vandnps vblendpd vblendps vblendvpd vblendvps vbroadcastss vbroadcastsd vbroadcastf128 vcmpeq_ospd vcmpeqpd vcmplt_ospd vcmpltpd vcmple_ospd vcmplepd vcmpunord_qpd vcmpunordpd vcmpneq_uqpd vcmpneqpd vcmpnlt_uspd vcmpnltpd vcmpnle_uspd vcmpnlepd vcmpord_qpd vcmpordpd vcmpeq_uqpd vcmpnge_uspd vcmpngepd vcmpngt_uspd vcmpngtpd vcmpfalse_oqpd vcmpfalsepd vcmpneq_oqpd vcmpge_ospd vcmpgepd vcmpgt_ospd vcmpgtpd vcmptrue_uqpd vcmptruepd vcmplt_oqpd vcmple_oqpd vcmpunord_spd vcmpneq_uspd vcmpnlt_uqpd vcmpnle_uqpd vcmpord_spd vcmpeq_uspd vcmpnge_uqpd vcmpngt_uqpd vcmpfalse_ospd vcmpneq_ospd vcmpge_oqpd vcmpgt_oqpd vcmptrue_uspd vcmppd vcmpeq_osps vcmpeqps vcmplt_osps vcmpltps vcmple_osps vcmpleps vcmpunord_qps vcmpunordps vcmpneq_uqps vcmpneqps vcmpnlt_usps vcmpnltps vcmpnle_usps vcmpnleps vcmpord_qps vcmpordps vcmpeq_uqps vcmpnge_usps vcmpngeps vcmpngt_usps vcmpngtps vcmpfalse_oqps vcmpfalseps vcmpneq_oqps vcmpge_osps vcmpgeps vcmpgt_osps vcmpgtps vcmptrue_uqps vcmptrueps vcmplt_oqps vcmple_oqps vcmpunord_sps vcmpneq_usps vcmpnlt_uqps vcmpnle_uqps vcmpord_sps vcmpeq_usps vcmpnge_uqps vcmpngt_uqps vcmpfalse_osps vcmpneq_osps vcmpge_oqps vcmpgt_oqps vcmptrue_usps vcmpps vcmpeq_ossd vcmpeqsd vcmplt_ossd vcmpltsd vcmple_ossd vcmplesd vcmpunord_qsd vcmpunordsd vcmpneq_uqsd vcmpneqsd vcmpnlt_ussd vcmpnltsd vcmpnle_ussd vcmpnlesd vcmpord_qsd vcmpordsd vcmpeq_uqsd vcmpnge_ussd vcmpngesd vcmpngt_ussd vcmpngtsd vcmpfalse_oqsd vcmpfalsesd vcmpneq_oqsd vcmpge_ossd vcmpgesd vcmpgt_ossd vcmpgtsd vcmptrue_uqsd vcmptruesd vcmplt_oqsd vcmple_oqsd vcmpunord_ssd vcmpneq_ussd vcmpnlt_uqsd vcmpnle_uqsd vcmpord_ssd vcmpeq_ussd vcmpnge_uqsd vcmpngt_uqsd vcmpfalse_ossd vcmpneq_ossd vcmpge_oqsd vcmpgt_oqsd vcmptrue_ussd vcmpsd vcmpeq_osss vcmpeqss vcmplt_osss vcmpltss vcmple_osss vcmpless vcmpunord_qss vcmpunordss vcmpneq_uqss vcmpneqss vcmpnlt_usss vcmpnltss vcmpnle_usss vcmpnless vcmpord_qss vcmpordss vcmpeq_uqss vcmpnge_usss vcmpngess vcmpngt_usss vcmpngtss vcmpfalse_oqss vcmpfalsess vcmpneq_oqss vcmpge_osss vcmpgess vcmpgt_osss vcmpgtss vcmptrue_uqss vcmptruess vcmplt_oqss vcmple_oqss vcmpunord_sss vcmpneq_usss vcmpnlt_uqss vcmpnle_uqss vcmpord_sss vcmpeq_usss vcmpnge_uqss vcmpngt_uqss vcmpfalse_osss vcmpneq_osss vcmpge_oqss vcmpgt_oqss vcmptrue_usss vcmpss vcomisd vcomiss vcvtdq2pd vcvtdq2ps vcvtpd2dq vcvtpd2ps vcvtps2dq vcvtps2pd vcvtsd2si vcvtsd2ss vcvtsi2sd vcvtsi2ss vcvtss2sd vcvtss2si vcvttpd2dq vcvttps2dq vcvttsd2si vcvttss2si vdivpd vdivps vdivsd vdivss vdppd vdpps vextractf128 vextractps vhaddpd vhaddps vhsubpd vhsubps vinsertf128 vinsertps vlddqu vldqqu vldmxcsr vmaskmovdqu vmaskmovps vmaskmovpd vmaxpd vmaxps vmaxsd vmaxss vminpd vminps vminsd vminss vmovapd vmovaps vmovd vmovq vmovddup vmovdqa vmovqqa vmovdqu vmovqqu vmovhlps vmovhpd vmovhps vmovlhps vmovlpd vmovlps vmovmskpd vmovmskps vmovntdq vmovntqq vmovntdqa vmovntpd vmovntps vmovsd vmovshdup vmovsldup vmovss vmovupd vmovups vmpsadbw vmulpd vmulps vmulsd vmulss vorpd vorps vpabsb vpabsw vpabsd vpacksswb vpackssdw vpackuswb vpackusdw vpaddb vpaddw vpaddd vpaddq vpaddsb vpaddsw vpaddusb vpaddusw vpalignr vpand vpandn vpavgb vpavgw vpblendvb vpblendw vpcmpestri vpcmpestrm vpcmpistri vpcmpistrm vpcmpeqb vpcmpeqw vpcmpeqd vpcmpeqq vpcmpgtb vpcmpgtw vpcmpgtd vpcmpgtq vpermilpd vpermilps vperm2f128 vpextrb vpextrw vpextrd vpextrq vphaddw vphaddd vphaddsw vphminposuw vphsubw vphsubd vphsubsw vpinsrb vpinsrw vpinsrd vpinsrq vpmaddwd vpmaddubsw vpmaxsb vpmaxsw vpmaxsd vpmaxub vpmaxuw vpmaxud vpminsb vpminsw vpminsd vpminub vpminuw vpminud vpmovmskb vpmovsxbw vpmovsxbd vpmovsxbq vpmovsxwd vpmovsxwq vpmovsxdq vpmovzxbw vpmovzxbd vpmovzxbq vpmovzxwd vpmovzxwq vpmovzxdq vpmulhuw vpmulhrsw vpmulhw vpmullw vpmulld vpmuludq vpmuldq vpor vpsadbw vpshufb vpshufd vpshufhw vpshuflw vpsignb vpsignw vpsignd vpslldq vpsrldq vpsllw vpslld vpsllq vpsraw vpsrad vpsrlw vpsrld vpsrlq vptest vpsubb vpsubw vpsubd vpsubq vpsubsb vpsubsw vpsubusb vpsubusw vpunpckhbw vpunpckhwd vpunpckhdq vpunpckhqdq vpunpcklbw vpunpcklwd vpunpckldq vpunpcklqdq vpxor vrcpps vrcpss vrsqrtps vrsqrtss vroundpd vroundps vroundsd vroundss vshufpd vshufps vsqrtpd vsqrtps vsqrtsd vsqrtss vstmxcsr vsubpd vsubps vsubsd vsubss vtestps vtestpd vucomisd vucomiss vunpckhpd vunpckhps vunpcklpd vunpcklps vxorpd vxorps vzeroall vzeroupper pclmullqlqdq pclmulhqlqdq pclmullqhqdq pclmulhqhqdq pclmulqdq vpclmullqlqdq vpclmulhqlqdq vpclmullqhqdq vpclmulhqhqdq vpclmulqdq vfmadd132ps vfmadd132pd vfmadd312ps vfmadd312pd vfmadd213ps vfmadd213pd vfmadd123ps vfmadd123pd vfmadd231ps vfmadd231pd vfmadd321ps vfmadd321pd vfmaddsub132ps vfmaddsub132pd vfmaddsub312ps vfmaddsub312pd vfmaddsub213ps vfmaddsub213pd vfmaddsub123ps vfmaddsub123pd vfmaddsub231ps vfmaddsub231pd vfmaddsub321ps vfmaddsub321pd vfmsub132ps vfmsub132pd vfmsub312ps vfmsub312pd vfmsub213ps vfmsub213pd vfmsub123ps vfmsub123pd vfmsub231ps vfmsub231pd vfmsub321ps vfmsub321pd vfmsubadd132ps vfmsubadd132pd vfmsubadd312ps vfmsubadd312pd vfmsubadd213ps vfmsubadd213pd vfmsubadd123ps vfmsubadd123pd vfmsubadd231ps vfmsubadd231pd vfmsubadd321ps vfmsubadd321pd vfnmadd132ps vfnmadd132pd vfnmadd312ps vfnmadd312pd vfnmadd213ps vfnmadd213pd vfnmadd123ps vfnmadd123pd vfnmadd231ps vfnmadd231pd vfnmadd321ps vfnmadd321pd vfnmsub132ps vfnmsub132pd vfnmsub312ps vfnmsub312pd vfnmsub213ps vfnmsub213pd vfnmsub123ps vfnmsub123pd vfnmsub231ps vfnmsub231pd vfnmsub321ps vfnmsub321pd vfmadd132ss vfmadd132sd vfmadd312ss vfmadd312sd vfmadd213ss vfmadd213sd vfmadd123ss vfmadd123sd vfmadd231ss vfmadd231sd vfmadd321ss vfmadd321sd vfmsub132ss vfmsub132sd vfmsub312ss vfmsub312sd vfmsub213ss vfmsub213sd vfmsub123ss vfmsub123sd vfmsub231ss vfmsub231sd vfmsub321ss vfmsub321sd vfnmadd132ss vfnmadd132sd vfnmadd312ss vfnmadd312sd vfnmadd213ss vfnmadd213sd vfnmadd123ss vfnmadd123sd vfnmadd231ss vfnmadd231sd vfnmadd321ss vfnmadd321sd vfnmsub132ss vfnmsub132sd vfnmsub312ss vfnmsub312sd vfnmsub213ss vfnmsub213sd vfnmsub123ss vfnmsub123sd vfnmsub231ss vfnmsub231sd vfnmsub321ss vfnmsub321sd rdfsbase rdgsbase rdrand wrfsbase wrgsbase vcvtph2ps vcvtps2ph adcx adox rdseed clac stac xstore xcryptecb xcryptcbc xcryptctr xcryptcfb xcryptofb montmul xsha1 xsha256 llwpcb slwpcb lwpval lwpins vfmaddpd vfmaddps vfmaddsd vfmaddss vfmaddsubpd vfmaddsubps vfmsubaddpd vfmsubaddps vfmsubpd vfmsubps vfmsubsd vfmsubss vfnmaddpd vfnmaddps vfnmaddsd vfnmaddss vfnmsubpd vfnmsubps vfnmsubsd vfnmsubss vfrczpd vfrczps vfrczsd vfrczss vpcmov vpcomb vpcomd vpcomq vpcomub vpcomud vpcomuq vpcomuw vpcomw vphaddbd vphaddbq vphaddbw vphadddq vphaddubd vphaddubq vphaddubw vphaddudq vphadduwd vphadduwq vphaddwd vphaddwq vphsubbw vphsubdq vphsubwd vpmacsdd vpmacsdqh vpmacsdql vpmacssdd vpmacssdqh vpmacssdql vpmacsswd vpmacssww vpmacswd vpmacsww vpmadcsswd vpmadcswd vpperm vprotb vprotd vprotq vprotw vpshab vpshad vpshaq vpshaw vpshlb vpshld vpshlq vpshlw vbroadcasti128 vpblendd vpbroadcastb vpbroadcastw vpbroadcastd vpbroadcastq vpermd vpermpd vpermps vpermq vperm2i128 vextracti128 vinserti128 vpmaskmovd vpmaskmovq vpsllvd vpsllvq vpsravd vpsrlvd vpsrlvq vgatherdpd vgatherqpd vgatherdps vgatherqps vpgatherdd vpgatherqd vpgatherdq vpgatherqq xabort xbegin xend xtest andn bextr blci blcic blsi blsic blcfill blsfill blcmsk blsmsk blsr blcs bzhi mulx pdep pext rorx sarx shlx shrx tzcnt tzmsk t1mskc valignd valignq vblendmpd vblendmps vbroadcastf32x4 vbroadcastf64x4 vbroadcasti32x4 vbroadcasti64x4 vcompresspd vcompressps vcvtpd2udq vcvtps2udq vcvtsd2usi vcvtss2usi vcvttpd2udq vcvttps2udq vcvttsd2usi vcvttss2usi vcvtudq2pd vcvtudq2ps vcvtusi2sd vcvtusi2ss vexpandpd vexpandps vextractf32x4 vextractf64x4 vextracti32x4 vextracti64x4 vfixupimmpd vfixupimmps vfixupimmsd vfixupimmss vgetexppd vgetexpps vgetexpsd vgetexpss vgetmantpd vgetmantps vgetmantsd vgetmantss vinsertf32x4 vinsertf64x4 vinserti32x4 vinserti64x4 vmovdqa32 vmovdqa64 vmovdqu32 vmovdqu64 vpabsq vpandd vpandnd vpandnq vpandq vpblendmd vpblendmq vpcmpltd vpcmpled vpcmpneqd vpcmpnltd vpcmpnled vpcmpd vpcmpltq vpcmpleq vpcmpneqq vpcmpnltq vpcmpnleq vpcmpq vpcmpequd vpcmpltud vpcmpleud vpcmpnequd vpcmpnltud vpcmpnleud vpcmpud vpcmpequq vpcmpltuq vpcmpleuq vpcmpnequq vpcmpnltuq vpcmpnleuq vpcmpuq vpcompressd vpcompressq vpermi2d vpermi2pd vpermi2ps vpermi2q vpermt2d vpermt2pd vpermt2ps vpermt2q vpexpandd vpexpandq vpmaxsq vpmaxuq vpminsq vpminuq vpmovdb vpmovdw vpmovqb vpmovqd vpmovqw vpmovsdb vpmovsdw vpmovsqb vpmovsqd vpmovsqw vpmovusdb vpmovusdw vpmovusqb vpmovusqd vpmovusqw vpord vporq vprold vprolq vprolvd vprolvq vprord vprorq vprorvd vprorvq vpscatterdd vpscatterdq vpscatterqd vpscatterqq vpsraq vpsravq vpternlogd vpternlogq vptestmd vptestmq vptestnmd vptestnmq vpxord vpxorq vrcp14pd vrcp14ps vrcp14sd vrcp14ss vrndscalepd vrndscaleps vrndscalesd vrndscaless vrsqrt14pd vrsqrt14ps vrsqrt14sd vrsqrt14ss vscalefpd vscalefps vscalefsd vscalefss vscatterdpd vscatterdps vscatterqpd vscatterqps vshuff32x4 vshuff64x2 vshufi32x4 vshufi64x2 kandnw kandw kmovw knotw kortestw korw kshiftlw kshiftrw kunpckbw kxnorw kxorw vpbroadcastmb2q vpbroadcastmw2d vpconflictd vpconflictq vplzcntd vplzcntq vexp2pd vexp2ps vrcp28pd vrcp28ps vrcp28sd vrcp28ss vrsqrt28pd vrsqrt28ps vrsqrt28sd vrsqrt28ss vgatherpf0dpd vgatherpf0dps vgatherpf0qpd vgatherpf0qps vgatherpf1dpd vgatherpf1dps vgatherpf1qpd vgatherpf1qps vscatterpf0dpd vscatterpf0dps vscatterpf0qpd vscatterpf0qps vscatterpf1dpd vscatterpf1dps vscatterpf1qpd vscatterpf1qps prefetchwt1 bndmk bndcl bndcu bndcn bndmov bndldx bndstx sha1rnds4 sha1nexte sha1msg1 sha1msg2 sha256rnds2 sha256msg1 sha256msg2 hint_nop0 hint_nop1 hint_nop2 hint_nop3 hint_nop4 hint_nop5 hint_nop6 hint_nop7 hint_nop8 hint_nop9 hint_nop10 hint_nop11 hint_nop12 hint_nop13 hint_nop14 hint_nop15 hint_nop16 hint_nop17 hint_nop18 hint_nop19 hint_nop20 hint_nop21 hint_nop22 hint_nop23 hint_nop24 hint_nop25 hint_nop26 hint_nop27 hint_nop28 hint_nop29 hint_nop30 hint_nop31 hint_nop32 hint_nop33 hint_nop34 hint_nop35 hint_nop36 hint_nop37 hint_nop38 hint_nop39 hint_nop40 hint_nop41 hint_nop42 hint_nop43 hint_nop44 hint_nop45 hint_nop46 hint_nop47 hint_nop48 hint_nop49 hint_nop50 hint_nop51 hint_nop52 hint_nop53 hint_nop54 hint_nop55 hint_nop56 hint_nop57 hint_nop58 hint_nop59 hint_nop60 hint_nop61 hint_nop62 hint_nop63\",\n        \"built_in\": \"ip eip rip al ah bl bh cl ch dl dh sil dil bpl spl r8b r9b r10b r11b r12b r13b r14b r15b ax bx cx dx si di bp sp r8w r9w r10w r11w r12w r13w r14w r15w eax ebx ecx edx esi edi ebp esp eip r8d r9d r10d r11d r12d r13d r14d r15d rax rbx rcx rdx rsi rdi rbp rsp r8 r9 r10 r11 r12 r13 r14 r15 cs ds es fs gs ss st st0 st1 st2 st3 st4 st5 st6 st7 mm0 mm1 mm2 mm3 mm4 mm5 mm6 mm7 xmm0  xmm1  xmm2  xmm3  xmm4  xmm5  xmm6  xmm7  xmm8  xmm9 xmm10  xmm11 xmm12 xmm13 xmm14 xmm15 xmm16 xmm17 xmm18 xmm19 xmm20 xmm21 xmm22 xmm23 xmm24 xmm25 xmm26 xmm27 xmm28 xmm29 xmm30 xmm31 ymm0  ymm1  ymm2  ymm3  ymm4  ymm5  ymm6  ymm7  ymm8  ymm9 ymm10  ymm11 ymm12 ymm13 ymm14 ymm15 ymm16 ymm17 ymm18 ymm19 ymm20 ymm21 ymm22 ymm23 ymm24 ymm25 ymm26 ymm27 ymm28 ymm29 ymm30 ymm31 zmm0  zmm1  zmm2  zmm3  zmm4  zmm5  zmm6  zmm7  zmm8  zmm9 zmm10  zmm11 zmm12 zmm13 zmm14 zmm15 zmm16 zmm17 zmm18 zmm19 zmm20 zmm21 zmm22 zmm23 zmm24 zmm25 zmm26 zmm27 zmm28 zmm29 zmm30 zmm31 k0 k1 k2 k3 k4 k5 k6 k7 bnd0 bnd1 bnd2 bnd3 cr0 cr1 cr2 cr3 cr4 cr8 dr0 dr1 dr2 dr3 dr8 tr3 tr4 tr5 tr6 tr7 r0 r1 r2 r3 r4 r5 r6 r7 r0b r1b r2b r3b r4b r5b r6b r7b r0w r1w r2w r3w r4w r5w r6w r7w r0d r1d r2d r3d r4d r5d r6d r7d r0h r1h r2h r3h r0l r1l r2l r3l r4l r5l r6l r7l r8l r9l r10l r11l r12l r13l r14l r15l db dw dd dq dt ddq do dy dz resb resw resd resq rest resdq reso resy resz incbin equ times byte word dword qword nosplit rel abs seg wrt strict near far a32 ptr\",\n        \"meta\": \"%define %xdefine %+ %undef %defstr %deftok %assign %strcat %strlen %substr %rotate %elif %else %endif %if %ifmacro %ifctx %ifidn %ifidni %ifid %ifnum %ifstr %iftoken %ifempty %ifenv %error %warning %fatal %rep %endrep %include %push %pop %repl %pathsearch %depend %use %arg %stacksize %local %line %comment %endcomment .nolist __FILE__ __LINE__ __SECT__  __BITS__ __OUTPUT_FORMAT__ __DATE__ __TIME__ __DATE_NUM__ __TIME_NUM__ __UTC_DATE__ __UTC_TIME__ __UTC_DATE_NUM__ __UTC_TIME_NUM__  __PASS__ struc endstruc istruc at iend align alignb sectalign daz nodaz up down zero default option assume public bits use16 use32 use64 default section segment absolute extern global common cpu float __utf16__ __utf16le__ __utf16be__ __utf32__ __utf32le__ __utf32be__ __float8__ __float16__ __float32__ __float64__ __float80m__ __float80e__ __float128l__ __float128h__ __Infinity__ __QNaN__ __SNaN__ Inf NaN QNaN SNaN float8 float16 float32 float64 float80m float80e float128l float128h __FLOAT_DAZ__ __FLOAT_ROUND__ __FLOAT__\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \";\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"number\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\b(?:([0-9][0-9_]*)?\\\\.[0-9_]*(?:[eE][+-]?[0-9_]+)?|(0[Xx])?[0-9][0-9_]*\\\\.?[0-9_]*(?:[pP](?:[+-]?[0-9_]+)?)?)\\\\b\",\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"\\\\$[0-9][0-9A-Fa-f]*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"begin\": \"\\\\b(?:[0-9A-Fa-f][0-9A-Fa-f_]*[Hh]|[0-9][0-9_]*[DdTt]?|[0-7][0-7_]*[QqOo]|[0-1][0-1_]*[BbYy])\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(?:0[Xx][0-9A-Fa-f_]+|0[DdTt][0-9_]+|0[QqOo][0-7_]+|0[BbYy][0-1_]+)\\\\b\"\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"begin\": \"'\",\n                    \"end\": \"[^\\\\\\\\]'\"\n                },\n                {\n                    \"begin\": \"`\",\n                    \"end\": \"[^\\\\\\\\]`\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"symbol\",\n            \"variants\": [\n                {\n                    \"begin\": \"^\\\\s*[A-Za-z._?][A-Za-z0-9_$#@~.?]*(:|\\\\s+label)\"\n                },\n                {\n                    \"begin\": \"^\\\\s*%%[A-Za-z0-9_$#@~.?]*:\"\n                }\n            ],\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"subst\",\n            \"begin\": \"%[0-9]+\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"subst\",\n            \"begin\": \"%!S+\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^\\\\s*\\\\.[\\\\w_\\\\-]+\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/xl.json",
    "content": "{\n    \"aliases\": [\n        \"tao\"\n    ],\n    \"lexemes\": \"[a-zA-Z][a-zA-Z0-9_?]*\",\n    \"keywords\": {\n        \"keyword\": \"if then else do while until for loop import with is as where when by data constant integer real text name boolean symbol infix prefix postfix block tree\",\n        \"literal\": \"true false nil\",\n        \"built_in\": \"in mod rem and or xor not abs sign floor ceil sqrt sin cos tan asin acos atan exp expm1 log log2 log10 log1p pi at text_length text_range text_find text_replace contains page slide basic_slide title_slide title subtitle fade_in fade_out fade_at clear_color color line_color line_width texture_wrap texture_transform texture scale_?x scale_?y scale_?z? translate_?x translate_?y translate_?z? rotate_?x rotate_?y rotate_?z? rectangle circle ellipse sphere path line_to move_to quad_to curve_to theme background contents locally time mouse_?x mouse_?y mouse_buttons ObjectLoader Animate MovieCredits Slides Filters Shading Materials LensFlare Mapping VLCAudioVideo StereoDecoder PointCloud NetworkAccess RemoteControl RegExp ChromaKey Snowfall NodeJS Speech Charts\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"\\\"\",\n            \"end\": \"\\\"\",\n            \"illegal\": \"\\\\n\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"'\",\n            \"end\": \"'\",\n            \"illegal\": \"\\\\n\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"<<\",\n            \"end\": \">>\"\n        },\n        {\n            \"className\": \"function\",\n            \"begin\": \"[a-z][^\\\\n]*->\",\n            \"returnBegin\": true,\n            \"end\": \"->\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z]\\\\w*\",\n                    \"relevance\": 0,\n                    \"starts\": {\n                        \"endsWithParent\": true,\n                        \"keywords\": {\n                            \"$ref\": \"#keywords\"\n                        }\n                    }\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"import\",\n            \"end\": \"$\",\n            \"keywords\": {\n                \"$ref\": \"#keywords\"\n            },\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.2\"\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"[0-9]+#[0-9A-Z_]+(\\\\.[0-9-A-Z_]+)?#?([Ee][+-]?[0-9]+)?\"\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"\\\\b\\\\d+(\\\\.\\\\d+)?\",\n            \"relevance\": 0\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/xml.json",
    "content": "{\n    \"aliases\": [\n        \"html\",\n        \"xhtml\",\n        \"rss\",\n        \"atom\",\n        \"xjb\",\n        \"xsd\",\n        \"xsl\",\n        \"plist\",\n        \"wsf\",\n        \"svg\"\n    ],\n    \"case_insensitive\": true,\n    \"contains\": [\n        {\n            \"className\": \"meta\",\n            \"begin\": \"<![a-z]\",\n            \"end\": \">\",\n            \"relevance\": 10,\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\s\",\n                    \"contains\": [\n                        {\n                            \"className\": \"meta-keyword\",\n                            \"begin\": \"#?[a-z_][a-z1-9_\\\\-]+\",\n                            \"illegal\": \"\\\\n\"\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"meta-string\",\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"className\": \"meta-string\",\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"illegal\": \"\\\\n\",\n                    \"contains\": [\n                        {\n                            \"$ref\": \"#contains.0.contains.1.contains.0\"\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"\\\\(\",\n                    \"contains\": {\n                        \"$ref\": \"#contains.0.contains.0.contains\"\n                    },\n                    \"end\": \"\\\\)\"\n                },\n                {\n                    \"begin\": \"\\\\[\",\n                    \"end\": \"\\\\]\",\n                    \"contains\": [\n                        {\n                            \"className\": \"meta\",\n                            \"begin\": \"<![a-z]\",\n                            \"end\": \">\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.0.contains.0\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.0.contains.3\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.0.contains.1\"\n                                },\n                                {\n                                    \"$ref\": \"#contains.0.contains.2\"\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"<!--\",\n            \"end\": \"-->\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"relevance\": 10\n        },\n        {\n            \"begin\": \"<\\\\!\\\\[CDATA\\\\[\",\n            \"end\": \"\\\\]\\\\]>\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"symbol\",\n            \"begin\": \"&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"<\\\\?xml\",\n            \"end\": \"\\\\?>\",\n            \"relevance\": 10\n        },\n        {\n            \"begin\": \"<\\\\?(php)?\",\n            \"end\": \"\\\\?>\",\n            \"subLanguage\": \"php\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\/\\\\*\",\n                    \"end\": \"\\\\*\\/\",\n                    \"skip\": true\n                },\n                {\n                    \"begin\": \"b\\\"\",\n                    \"end\": \"\\\"\",\n                    \"skip\": true\n                },\n                {\n                    \"begin\": \"b'\",\n                    \"end\": \"'\",\n                    \"skip\": true\n                },\n                {\n                    \"className\": null,\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"illegal\": null,\n                    \"contains\": null,\n                    \"skip\": true\n                },\n                {\n                    \"className\": null,\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"illegal\": null,\n                    \"contains\": null,\n                    \"skip\": true\n                }\n            ]\n        },\n        {\n            \"className\": \"tag\",\n            \"begin\": \"<style(?=\\\\s|>)\",\n            \"end\": \">\",\n            \"keywords\": {\n                \"name\": \"style\"\n            },\n            \"contains\": [\n                {\n                    \"endsWithParent\": true,\n                    \"illegal\": \"<\",\n                    \"relevance\": 0,\n                    \"contains\": [\n                        {\n                            \"className\": \"attr\",\n                            \"begin\": \"[A-Za-z0-9\\\\._:-]+\",\n                            \"relevance\": 0\n                        },\n                        {\n                            \"begin\": \"=\\\\s*\",\n                            \"relevance\": 0,\n                            \"contains\": [\n                                {\n                                    \"className\": \"string\",\n                                    \"endsParent\": true,\n                                    \"variants\": [\n                                        {\n                                            \"begin\": \"\\\"\",\n                                            \"end\": \"\\\"\",\n                                            \"contains\": [\n                                                {\n                                                    \"$ref\": \"#contains.3\"\n                                                }\n                                            ]\n                                        },\n                                        {\n                                            \"begin\": \"'\",\n                                            \"end\": \"'\",\n                                            \"contains\": [\n                                                {\n                                                    \"$ref\": \"#contains.3\"\n                                                }\n                                            ]\n                                        },\n                                        {\n                                            \"begin\": \"[^\\\\s\\\"'=<>`]+\"\n                                        }\n                                    ]\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ],\n            \"starts\": {\n                \"end\": \"<\\/style>\",\n                \"returnEnd\": true,\n                \"subLanguage\": [\n                    \"css\",\n                    \"xml\"\n                ]\n            }\n        },\n        {\n            \"className\": \"tag\",\n            \"begin\": \"<script(?=\\\\s|>)\",\n            \"end\": \">\",\n            \"keywords\": {\n                \"name\": \"script\"\n            },\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                }\n            ],\n            \"starts\": {\n                \"end\": \"<\\/script>\",\n                \"returnEnd\": true,\n                \"subLanguage\": [\n                    \"actionscript\",\n                    \"javascript\",\n                    \"handlebars\",\n                    \"xml\"\n                ]\n            }\n        },\n        {\n            \"className\": \"tag\",\n            \"begin\": \"<\\/?\",\n            \"end\": \"\\/?>\",\n            \"contains\": [\n                {\n                    \"className\": \"name\",\n                    \"begin\": \"[^\\\\\\/><\\\\s]+\",\n                    \"relevance\": 0\n                },\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/xquery.json",
    "content": "{\n    \"aliases\": [\n        \"xpath\",\n        \"xq\"\n    ],\n    \"case_insensitive\": false,\n    \"lexemes\": \"[a-zA-Z\\\\$][a-zA-Z0-9_:\\\\-]*\",\n    \"illegal\": \"(proc)|(abstract)|(extends)|(until)|(#)\",\n    \"keywords\": {\n        \"keyword\": \"module schema namespace boundary-space preserve no-preserve strip default collation base-uri ordering context decimal-format decimal-separator copy-namespaces empty-sequence except exponent-separator external grouping-separator inherit no-inherit lax minus-sign per-mille percent schema-attribute schema-element strict unordered zero-digit declare import option function validate variable for at in let where order group by return if then else tumbling sliding window start when only end previous next stable ascending descending allowing empty greatest least some every satisfies switch case typeswitch try catch and or to union intersect instance of treat as castable cast map array delete insert into replace value rename copy modify update\",\n        \"type\": \"item document-node node attribute document element comment namespace namespace-node processing-instruction text construction xs:anyAtomicType xs:untypedAtomic xs:duration xs:time xs:decimal xs:float xs:double xs:gYearMonth xs:gYear xs:gMonthDay xs:gMonth xs:gDay xs:boolean xs:base64Binary xs:hexBinary xs:anyURI xs:QName xs:NOTATION xs:dateTime xs:dateTimeStamp xs:date xs:string xs:normalizedString xs:token xs:language xs:NMTOKEN xs:Name xs:NCName xs:ID xs:IDREF xs:ENTITY xs:integer xs:nonPositiveInteger xs:negativeInteger xs:long xs:int xs:short xs:byte xs:nonNegativeInteger xs:unisignedLong xs:unsignedInt xs:unsignedShort xs:unsignedByte xs:positiveInteger xs:yearMonthDuration xs:dayTimeDuration\",\n        \"literal\": \"eq ne lt le gt ge is self:: child:: descendant:: descendant-or-self:: attribute:: following:: following-sibling:: parent:: ancestor:: ancestor-or-self:: preceding:: preceding-sibling:: NaN\"\n    },\n    \"contains\": [\n        {\n            \"className\": \"variable\",\n            \"begin\": \"[\\\\$][\\\\w\\\\-:]+\"\n        },\n        {\n            \"className\": \"built_in\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\barray\\\\:\",\n                    \"end\": \"(?:append|filter|flatten|fold\\\\-(?:left|right)|for-each(?:\\\\-pair)?|get|head|insert\\\\-before|join|put|remove|reverse|size|sort|subarray|tail)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bmap\\\\:\",\n                    \"end\": \"(?:contains|entry|find|for\\\\-each|get|keys|merge|put|remove|size)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bmath\\\\:\",\n                    \"end\": \"(?:a(?:cos|sin|tan[2]?)|cos|exp(?:10)?|log(?:10)?|pi|pow|sin|sqrt|tan)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\bop\\\\:\",\n                    \"end\": \"\\\\(\",\n                    \"excludeEnd\": true\n                },\n                {\n                    \"begin\": \"\\\\bfn\\\\:\",\n                    \"end\": \"\\\\(\",\n                    \"excludeEnd\": true\n                },\n                {\n                    \"begin\": \"[^<\\\\\\/\\\\$\\\\:'\\\"-]\\\\b(?:abs|accumulator\\\\-(?:after|before)|adjust\\\\-(?:date(?:Time)?|time)\\\\-to\\\\-timezone|analyze\\\\-string|apply|available\\\\-(?:environment\\\\-variables|system\\\\-properties)|avg|base\\\\-uri|boolean|ceiling|codepoints?\\\\-(?:equal|to\\\\-string)|collation\\\\-key|collection|compare|concat|contains(?:\\\\-token)?|copy\\\\-of|count|current(?:\\\\-)?(?:date(?:Time)?|time|group(?:ing\\\\-key)?|output\\\\-uri|merge\\\\-(?:group|key))?data|dateTime|days?\\\\-from\\\\-(?:date(?:Time)?|duration)|deep\\\\-equal|default\\\\-(?:collation|language)|distinct\\\\-values|document(?:\\\\-uri)?|doc(?:\\\\-available)?|element\\\\-(?:available|with\\\\-id)|empty|encode\\\\-for\\\\-uri|ends\\\\-with|environment\\\\-variable|error|escape\\\\-html\\\\-uri|exactly\\\\-one|exists|false|filter|floor|fold\\\\-(?:left|right)|for\\\\-each(?:\\\\-pair)?|format\\\\-(?:date(?:Time)?|time|integer|number)|function\\\\-(?:arity|available|lookup|name)|generate\\\\-id|has\\\\-children|head|hours\\\\-from\\\\-(?:dateTime|duration|time)|id(?:ref)?|implicit\\\\-timezone|in\\\\-scope\\\\-prefixes|index\\\\-of|innermost|insert\\\\-before|iri\\\\-to\\\\-uri|json\\\\-(?:doc|to\\\\-xml)|key|lang|last|load\\\\-xquery\\\\-module|local\\\\-name(?:\\\\-from\\\\-QName)?|(?:lower|upper)\\\\-case|matches|max|minutes\\\\-from\\\\-(?:dateTime|duration|time)|min|months?\\\\-from\\\\-(?:date(?:Time)?|duration)|name(?:space\\\\-uri\\\\-?(?:for\\\\-prefix|from\\\\-QName)?)?|nilled|node\\\\-name|normalize\\\\-(?:space|unicode)|not|number|one\\\\-or\\\\-more|outermost|parse\\\\-(?:ietf\\\\-date|json)|path|position|(?:prefix\\\\-from\\\\-)?QName|random\\\\-number\\\\-generator|regex\\\\-group|remove|replace|resolve\\\\-(?:QName|uri)|reverse|root|round(?:\\\\-half\\\\-to\\\\-even)?|seconds\\\\-from\\\\-(?:dateTime|duration|time)|snapshot|sort|starts\\\\-with|static\\\\-base\\\\-uri|stream\\\\-available|string\\\\-?(?:join|length|to\\\\-codepoints)?|subsequence|substring\\\\-?(?:after|before)?|sum|system\\\\-property|tail|timezone\\\\-from\\\\-(?:date(?:Time)?|time)|tokenize|trace|trans(?:form|late)|true|type\\\\-available|unordered|unparsed\\\\-(?:entity|text)?\\\\-?(?:public\\\\-id|uri|available|lines)?|uri\\\\-collection|xml\\\\-to\\\\-json|years?\\\\-from\\\\-(?:date(?:Time)?|duration)|zero\\\\-or\\\\-one)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\blocal\\\\:\",\n                    \"end\": \"\\\\(\",\n                    \"excludeEnd\": true\n                },\n                {\n                    \"begin\": \"\\\\bzip\\\\:\",\n                    \"end\": \"(?:zip\\\\-file|(?:xml|html|text|binary)\\\\-entry| (?:update\\\\-)?entries)\\\\b\"\n                },\n                {\n                    \"begin\": \"\\\\b(?:util|db|functx|app|xdmp|xmldb)\\\\:\",\n                    \"end\": \"\\\\(\",\n                    \"excludeEnd\": true\n                }\n            ]\n        },\n        {\n            \"className\": \"string\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"\\\"\\\"\",\n                            \"relevance\": 0\n                        }\n                    ]\n                },\n                {\n                    \"begin\": \"'\",\n                    \"end\": \"'\",\n                    \"contains\": [\n                        {\n                            \"begin\": \"''\",\n                            \"relevance\": 0\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(\\\\b0[0-7_]+)|(\\\\b0x[0-9a-fA-F_]+)|(\\\\b[1-9][0-9_]*(\\\\.[0-9_]+)?)|[0_]\\\\b\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\\\(:\",\n            \"end\": \":\\\\)\",\n            \"relevance\": 10,\n            \"contains\": [\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"@\\\\w+\"\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"%[\\\\w\\\\-:]+\"\n        },\n        {\n            \"className\": \"title\",\n            \"begin\": \"\\\\bxquery version \\\"[13]\\\\.[01]\\\"\\\\s?(?:encoding \\\".+\\\")?\",\n            \"end\": \";\"\n        },\n        {\n            \"beginKeywords\": \"element attribute comment document processing-instruction\",\n            \"end\": \"{\",\n            \"excludeEnd\": true\n        },\n        {\n            \"begin\": \"<([\\\\w\\\\._:\\\\-]+)((\\\\s*.*)=('|\\\").*('|\\\"))?>\",\n            \"end\": \"(\\\\\\/[\\\\w\\\\._:\\\\-]+>)\",\n            \"subLanguage\": \"xml\",\n            \"contains\": [\n                {\n                    \"begin\": \"{\",\n                    \"end\": \"}\",\n                    \"subLanguage\": \"xquery\"\n                },\n                \"self\"\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/yaml.json",
    "content": "{\n    \"case_insensitive\": true,\n    \"aliases\": [\n        \"yml\",\n        \"YAML\",\n        \"yaml\"\n    ],\n    \"contains\": [\n        {\n            \"className\": \"attr\",\n            \"variants\": [\n                {\n                    \"begin\": \"\\\\w[\\\\w :\\\\\\/.-]*:(?=[ \\t]|$)\"\n                },\n                {\n                    \"begin\": \"\\\"\\\\w[\\\\w :\\\\\\/.-]*\\\":(?=[ \\t]|$)\"\n                },\n                {\n                    \"begin\": \"'\\\\w[\\\\w :\\\\\\/.-]*':(?=[ \\t]|$)\"\n                }\n            ]\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"^---s*$\",\n            \"relevance\": 10\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"[\\\\|>]([0-9]?[+-])?[ ]*\\\\n( *)[\\\\S ]+\\\\n(\\\\2[\\\\S ]+\\\\n?)*\"\n        },\n        {\n            \"begin\": \"<%[%=-]?\",\n            \"end\": \"[%-]?%>\",\n            \"subLanguage\": \"ruby\",\n            \"excludeBegin\": true,\n            \"excludeEnd\": true,\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \"![a-zA-Z_]\\\\w*\"\n        },\n        {\n            \"className\": \"type\",\n            \"begin\": \"!![a-zA-Z_]\\\\w*\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"&[a-zA-Z_]\\\\w*$\"\n        },\n        {\n            \"className\": \"meta\",\n            \"begin\": \"\\\\*[a-zA-Z_]\\\\w*$\"\n        },\n        {\n            \"className\": \"bullet\",\n            \"begin\": \"\\\\-(?=[ ]|$)\",\n            \"relevance\": 0\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"true false yes no null\",\n            \"keywords\": {\n                \"literal\": \"true false yes no null\"\n            }\n        },\n        {\n            \"className\": \"number\",\n            \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\\\\b\"\n        },\n        {\n            \"className\": \"string\",\n            \"relevance\": 0,\n            \"variants\": [\n                {\n                    \"begin\": \"'\",\n                    \"end\": \"'\"\n                },\n                {\n                    \"begin\": \"\\\"\",\n                    \"end\": \"\\\"\"\n                },\n                {\n                    \"begin\": \"\\\\S+\"\n                }\n            ],\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"template-variable\",\n                    \"variants\": [\n                        {\n                            \"begin\": \"{{\",\n                            \"end\": \"}}\"\n                        },\n                        {\n                            \"begin\": \"%{\",\n                            \"end\": \"}\"\n                        }\n                    ]\n                }\n            ]\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/languages/zephir.json",
    "content": "{\n    \"aliases\": [\n        \"zep\"\n    ],\n    \"case_insensitive\": true,\n    \"keywords\": \"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var let while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally int uint long ulong char uchar double float bool boolean stringlikely unlikely\",\n    \"contains\": [\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\/\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\\\\b\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"#\",\n            \"end\": \"$\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"\\/\\\\*\",\n            \"end\": \"\\\\*\\/\",\n            \"contains\": [\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"@[A-Za-z]+\"\n                },\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"className\": \"comment\",\n            \"begin\": \"__halt_compiler.+?;\",\n            \"end\": false,\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.0.contains.0\"\n                },\n                {\n                    \"className\": \"doctag\",\n                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                    \"relevance\": 0\n                }\n            ],\n            \"endsWithParent\": true,\n            \"keywords\": \"__halt_compiler\",\n            \"lexemes\": \"[a-zA-Z_]\\\\w*\"\n        },\n        {\n            \"className\": \"string\",\n            \"begin\": \"<<<['\\\"]?\\\\w+['\\\"]?$\",\n            \"end\": \"^\\\\w+;\",\n            \"contains\": [\n                {\n                    \"begin\": \"\\\\\\\\[\\\\s\\\\S]\",\n                    \"relevance\": 0\n                }\n            ]\n        },\n        {\n            \"begin\": \"(::|->)+[a-zA-Z_\\\\x7f-\\\\xff][a-zA-Z0-9_\\\\x7f-\\\\xff]*\"\n        },\n        {\n            \"className\": \"function\",\n            \"beginKeywords\": \"function\",\n            \"end\": \"[;{]\",\n            \"excludeEnd\": true,\n            \"illegal\": \"\\\\$|\\\\[|%\",\n            \"contains\": [\n                {\n                    \"className\": \"title\",\n                    \"begin\": \"[a-zA-Z_]\\\\w*\",\n                    \"relevance\": 0\n                },\n                {\n                    \"className\": \"params\",\n                    \"begin\": \"\\\\(\",\n                    \"end\": \"\\\\)\",\n                    \"contains\": [\n                        \"self\",\n                        {\n                            \"className\": \"comment\",\n                            \"begin\": \"\\/\\\\*\",\n                            \"end\": \"\\\\*\\/\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.0.contains.0\"\n                                },\n                                {\n                                    \"className\": \"doctag\",\n                                    \"begin\": \"(?:TODO|FIXME|NOTE|BUG|XXX):\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        },\n                        {\n                            \"className\": \"string\",\n                            \"contains\": [\n                                {\n                                    \"$ref\": \"#contains.4.contains.0\"\n                                }\n                            ],\n                            \"variants\": [\n                                {\n                                    \"begin\": \"b\\\"\",\n                                    \"end\": \"\\\"\"\n                                },\n                                {\n                                    \"begin\": \"b'\",\n                                    \"end\": \"'\"\n                                },\n                                {\n                                    \"className\": \"string\",\n                                    \"begin\": \"'\",\n                                    \"end\": \"'\",\n                                    \"illegal\": null,\n                                    \"contains\": [\n                                        {\n                                            \"$ref\": \"#contains.4.contains.0\"\n                                        }\n                                    ]\n                                },\n                                {\n                                    \"className\": \"string\",\n                                    \"begin\": \"\\\"\",\n                                    \"end\": \"\\\"\",\n                                    \"illegal\": null,\n                                    \"contains\": [\n                                        {\n                                            \"$ref\": \"#contains.4.contains.0\"\n                                        }\n                                    ]\n                                }\n                            ]\n                        },\n                        {\n                            \"variants\": [\n                                {\n                                    \"className\": \"number\",\n                                    \"begin\": \"\\\\b(0b[01]+)\",\n                                    \"relevance\": 0\n                                },\n                                {\n                                    \"className\": \"number\",\n                                    \"begin\": \"(-?)(\\\\b0[xX][a-fA-F0-9]+|(\\\\b\\\\d+(\\\\.\\\\d*)?|\\\\.\\\\d+)([eE][-+]?\\\\d+)?)\",\n                                    \"relevance\": 0\n                                }\n                            ]\n                        }\n                    ]\n                }\n            ]\n        },\n        {\n            \"className\": \"class\",\n            \"beginKeywords\": \"class interface\",\n            \"end\": \"{\",\n            \"excludeEnd\": true,\n            \"illegal\": \"[:\\\\(\\\\$\\\"]\",\n            \"contains\": [\n                {\n                    \"beginKeywords\": \"extends implements\"\n                },\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"namespace\",\n            \"end\": \";\",\n            \"illegal\": \"[\\\\.']\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                }\n            ]\n        },\n        {\n            \"beginKeywords\": \"use\",\n            \"end\": \";\",\n            \"contains\": [\n                {\n                    \"$ref\": \"#contains.6.contains.0\"\n                }\n            ]\n        },\n        {\n            \"begin\": \"=>\"\n        },\n        {\n            \"$ref\": \"#contains.6.contains.1.contains.2\"\n        },\n        {\n            \"$ref\": \"#contains.6.contains.1.contains.3\"\n        }\n    ]\n}\n"
  },
  {
    "path": "includes/Highlight/list_languages.php",
    "content": "<?php\r\n/*\r\n * Paste $v3.2 2025/08/21 https://github.com/boxlabss/PASTE\r\n * demo: https://paste.boxlabs.uk/\r\n *\r\n * https://phpaste.sourceforge.io/\r\n *\r\n * This program is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 3\r\n * of the License, or (at your option) any later version.\r\n * \r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License in LICENCE for more details.\r\n *\r\n *\tThis file is part of Paste.\r\n *\tHelpers to enumerate highlight.php languages.\r\n *\tWe only look at filenames; we don't execute language files.\r\n *\r\n * \trender.php - bootstrap.php - list_languages.php in this directory are ours\r\n */\r\n\r\nrequire_once __DIR__ . '/bootstrap.php';\r\n\r\n// Returns the active languages directory that will be used by the highlighter.\r\nfunction highlight_lang_dir(): string {\r\n    return defined('HL_LANG_DIR') ? HL_LANG_DIR : (is_dir(__DIR__ . '/languages'));\r\n}\r\n\r\n/**\r\n * Return an array of languages available, sorted by display name.\r\n * Each item: ['id' => 'php', 'name' => 'Php', 'filename' => 'php.php']\r\n */\r\nfunction highlight_supported_languages(?string $dir = null): array {\r\n    $dir = $dir ?: highlight_lang_dir();\r\n    if (!is_dir($dir)) return [];\r\n\r\n    // .php (current highlight.php) and .json\r\n    $files = glob($dir . '/*.{php,json}', GLOB_BRACE) ?: [];\r\n    $out = [];\r\n    foreach ($files as $f) {\r\n        $id = pathinfo($f, PATHINFO_FILENAME);\r\n        // Friendly name from id (title case, hyphens/underscores to spaces)\r\n        $name = ucwords(str_replace(['-', '_'], ' ', $id));\r\n        $out[] = [\r\n            'id'       => $id,\r\n            'name'     => $name,\r\n            'filename' => basename($f),\r\n        ];\r\n    }\r\n    usort($out, static function($a,$b){\r\n        $c = strcasecmp($a['name'],$b['name']);\r\n        return $c !== 0 ? $c : strcasecmp($a['id'],$b['id']);\r\n    });\r\n    return $out;\r\n}\r\n"
  },
  {
    "path": "includes/Highlight/render.php",
    "content": "<?php\r\n/*\r\n * Paste $v3.2 2025/08/21 https://github.com/boxlabss/PASTE\r\n * demo: https://paste.boxlabs.uk/\r\n *\r\n * https://phpaste.sourceforge.io/\r\n *\r\n * This program is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 3\r\n * of the License, or (at your option) any later version.\r\n * \r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License in LICENCE for more details.\r\n *\r\n *\tThis file is part of Paste.\r\n *\tServer side rendering for highlight.php\r\n *\tUsage:\r\n *\trequire_once __DIR__ . '/includes/Highlight/render.php';\r\n *\techo highlight_render($code, $langIdOrEmpty, $withLineNumbers = false, $highlightLines = [])\r\n *\r\n * \trender.php - bootstrap.php - list_languages.php in this directory are ours\r\n */\r\n\r\ndeclare(strict_types=1);\r\n\r\nrequire_once __DIR__ . '/bootstrap.php'; // also part of Paste\r\n\r\n// Simple wrapper that can add line numbers\r\nfunction highlight_render(string $code, string $languageId = '', bool $withLineNumbers = false, array $highlightLines = []): string {\r\n    $esc = static fn(string $s) => htmlspecialchars($s, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');\r\n    $hl  = function_exists('make_highlighter') ? make_highlighter() : null;\r\n\r\n    $value = $esc($code);\r\n    $langClass = '';\r\n    if ($hl) {\r\n        try {\r\n            if ($languageId !== '') {\r\n                $res = $hl->highlight($languageId, $code);\r\n            } else {\r\n                $res = $hl->highlightAuto($code);\r\n            }\r\n            $value     = $res->value; // already safe HTML\r\n            $langClass = $res->language ? ('language-' . $res->language) : '';\r\n        } catch (\\Throwable $e) { /* fall back to escaped */ }\r\n    }\r\n\r\n    if (!$withLineNumbers) {\r\n        return '<pre class=\"hljs\"><code class=\"hljs ' . $langClass . '\">' . $value . '</code></pre>';\r\n    }\r\n\r\n    // line-numbered render\r\n    $lines = explode(\"\\n\", $value);\r\n    $hlset = $highlightLines ? array_flip($highlightLines) : [];\r\n    $out   = [];\r\n    $out[] = '<pre class=\"hljs\"><code class=\"hljs ' . $langClass . '\"><ol class=\"hljs-ln\">';\r\n    foreach ($lines as $i => $lineHtml) {\r\n        $ln  = $i + 1;\r\n        $cls = isset($hlset[$ln]) ? ' class=\"hljs-ln-line hljs-hl\"' : ' class=\"hljs-ln-line\"';\r\n        $out[] = '<li' . $cls . '><span class=\"hljs-ln-n\">' . $ln . '</span><span class=\"hljs-ln-c\">' . $lineHtml . '</span></li>';\r\n    }\r\n    $out[] = '</ol></code></pre>';\r\n    return implode('', $out);\r\n}\r\n\r\n// CSS\r\nfunction highlight_line_css(): string {\r\n    return <<<CSS\r\n.hljs { overflow:auto; }\r\n.hljs-ln { list-style:none; margin:0; padding:0; counter-reset: hljs-ln; }\r\n.hljs-ln-line { display:flex; align-items:flex-start; white-space:pre; }\r\n.hljs-ln-n { user-select:none; min-width:3em; text-align:right; padding:0 .75em 0 .5em; opacity:.6; border-right:1px solid rgba(0,0,0,.1); }\r\n.hljs-ln-c { display:inline-block; padding-left:.75em; }\r\n.hljs-hl { background: rgba(38,92,255,0.14); }\r\nCSS;\r\n}"
  },
  {
    "path": "includes/Highlight/styles/a11y-dark.css",
    "content": "/* a11y-dark theme */\n/* Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css */\n/* @author: ericwbailey */\n\n/* Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #d4d0ab;\n}\n\n/* Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-deletion {\n  color: #ffa07a;\n}\n\n/* Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-meta,\n.hljs-link {\n  color: #f5ab35;\n}\n\n/* Yellow */\n.hljs-attribute {\n  color: #ffd700;\n}\n\n/* Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n  color: #abe338;\n}\n\n/* Blue */\n.hljs-title,\n.hljs-section {\n  color: #00e0e0;\n}\n\n/* Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #dcc6e0;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #2b2b2b;\n  color: #f8f8f2;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n\n@media screen and (-ms-high-contrast: active) {\n  .hljs-addition,\n  .hljs-attribute,\n  .hljs-built_in,\n  .hljs-builtin-name,\n  .hljs-bullet,\n  .hljs-comment,\n  .hljs-link,\n  .hljs-literal,\n  .hljs-meta,\n  .hljs-number,\n  .hljs-params,\n  .hljs-string,\n  .hljs-symbol,\n  .hljs-type,\n  .hljs-quote {\n        color: highlight;\n    }\n\n    .hljs-keyword,\n    .hljs-selector-tag {\n        font-weight: bold;\n    }\n}\n"
  },
  {
    "path": "includes/Highlight/styles/a11y-light.css",
    "content": "/* a11y-light theme */\n/* Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css */\n/* @author: ericwbailey */\n\n/* Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #696969;\n}\n\n/* Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-deletion {\n  color: #d91e18;\n}\n\n/* Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-meta,\n.hljs-link {\n  color: #aa5d00;\n}\n\n/* Yellow */\n.hljs-attribute {\n  color: #aa5d00;\n}\n\n/* Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n  color: #008000;\n}\n\n/* Blue */\n.hljs-title,\n.hljs-section {\n  color: #007faa;\n}\n\n/* Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #7928a1;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #fefefe;\n  color: #545454;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n\n@media screen and (-ms-high-contrast: active) {\n  .hljs-addition,\n  .hljs-attribute,\n  .hljs-built_in,\n  .hljs-builtin-name,\n  .hljs-bullet,\n  .hljs-comment,\n  .hljs-link,\n  .hljs-literal,\n  .hljs-meta,\n  .hljs-number,\n  .hljs-params,\n  .hljs-string,\n  .hljs-symbol,\n  .hljs-type,\n  .hljs-quote {\n        color: highlight;\n    }\n\n    .hljs-keyword,\n    .hljs-selector-tag {\n        font-weight: bold;\n    }\n}\n"
  },
  {
    "path": "includes/Highlight/styles/agate.css",
    "content": "/*!\n * Agate by Taufik Nurrohman <https://github.com/taufik-nurrohman>\n * ---------------------------------------------------------------\n *\n * #ade5fc\n * #a2fca2\n * #c6b4f0\n * #d36363\n * #fcc28c\n * #fc9b9b\n * #ffa\n * #fff\n * #333\n * #62c8f3\n * #888\n *\n */\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #333;\n  color: white;\n}\n\n.hljs-name,\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-code,\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-tag {\n  color: #62c8f3;\n}\n\n.hljs-variable,\n.hljs-template-variable,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #ade5fc;\n}\n\n.hljs-string,\n.hljs-bullet {\n  color: #a2fca2;\n}\n\n.hljs-type,\n.hljs-title,\n.hljs-section,\n.hljs-attribute,\n.hljs-quote,\n.hljs-built_in,\n.hljs-builtin-name {\n  color: #ffa;\n}\n\n.hljs-number,\n.hljs-symbol,\n.hljs-bullet {\n  color: #d36363;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal {\n  color: #fcc28c;\n}\n\n.hljs-comment,\n.hljs-deletion,\n.hljs-code {\n  color: #888;\n}\n\n.hljs-regexp,\n.hljs-link {\n  color: #c6b4f0;\n}\n\n.hljs-meta {\n  color: #fc9b9b;\n}\n\n.hljs-deletion {\n  background-color: #fc9b9b;\n  color: #333;\n}\n\n.hljs-addition {\n  background-color: #a2fca2;\n  color: #333;\n}\n\n.hljs a {\n  color: inherit;\n}\n\n.hljs a:focus,\n.hljs a:hover {\n  color: inherit;\n  text-decoration: underline;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/an-old-hope.css",
    "content": "/* \n\nAn Old Hope – Star Wars Syntax (c) Gustavo Costa <gusbemacbe@gmail.com>\nOriginal theme - Ocean Dark Theme – by https://github.com/gavsiu\nBased on Jesse Leite's Atom syntax theme 'An Old Hope' – https://github.com/JesseLeite/an-old-hope-syntax-atom\n\n*/\n\n/* Death Star Comment */\n.hljs-comment,\n.hljs-quote \n{\n  color: #B6B18B;\n}\n\n/* Darth Vader */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-deletion \n{\n  color: #EB3C54;\n}\n\n/* Threepio */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-meta,\n.hljs-link \n{\n  color: #E7CE56;\n}\n\n/* Luke Skywalker */\n.hljs-attribute \n{\n  color: #EE7C2B;\n}\n\n/* Obi Wan Kenobi */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition \n{\n  color: #4FB4D7;\n}\n\n/* Yoda */\n.hljs-title,\n.hljs-section \n{\n  color: #78BB65;\n}\n\n/* Mace Windu */\n.hljs-keyword,\n.hljs-selector-tag \n{\n  color: #B45EA4;\n}\n\n/* Millenium Falcon */\n.hljs \n{\n  display: block;\n  overflow-x: auto;\n  background: #1C1D21;\n  color: #c0c5ce;\n  padding: 0.5em;\n}\n\n.hljs-emphasis \n{\n  font-style: italic;\n}\n\n.hljs-strong \n{\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/androidstudio.css",
    "content": "/*\nDate: 24 Fev 2015\nAuthor: Pedro Oliveira <kanytu@gmail . com>\n*/\n\n.hljs {\n  color: #a9b7c6;\n  background: #282b2e;\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n}\n\n.hljs-number,\n.hljs-literal,\n.hljs-symbol,\n.hljs-bullet {\n  color: #6897BB;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-deletion {\n  color: #cc7832;\n}\n\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link {\n  color: #629755;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #808080;\n}\n\n.hljs-meta {\n  color: #bbb529;\n}\n\n.hljs-string,\n.hljs-attribute,\n.hljs-addition {\n  color: #6A8759;\n}\n\n.hljs-section,\n.hljs-title,\n.hljs-type {\n  color: #ffc66d;\n}\n\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #e8bf6a;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/arduino-light.css",
    "content": "/*\n\nArduino® Light Theme - Stefania Mellai <s.mellai@arduino.cc>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #FFFFFF;\n}\n\n.hljs,\n.hljs-subst {\n  color: #434f54;\n}\n\n.hljs-keyword,\n.hljs-attribute,\n.hljs-selector-tag,\n.hljs-doctag,\n.hljs-name {\n  color: #00979D;\n}\n\n.hljs-built_in,\n.hljs-literal,\n.hljs-bullet,\n.hljs-code,\n.hljs-addition {\n  color: #D35400;\n}\n\n.hljs-regexp,\n.hljs-symbol,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n  color: #00979D;\n}\n\n.hljs-type,\n.hljs-string,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-quote,\n.hljs-template-tag,\n.hljs-deletion {\n  color: #005C5F;\n}\n\n.hljs-title,\n.hljs-section {\n  color: #880000;\n  font-weight: bold;\n}\n\n.hljs-comment {\n  color: rgba(149,165,166,.8);\n}\n\n.hljs-meta-keyword {\n  color: #728E00;\n}\n\n.hljs-meta {\n  color: #434f54;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-function {\n  color: #728E00;\n}\n\n.hljs-number {\n  color: #8A7B52;  \n}\n"
  },
  {
    "path": "includes/Highlight/styles/arta.css",
    "content": "/*\nDate: 17.V.2011\nAuthor: pumbur <pumbur@pumbur.net>\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #222;\n}\n\n.hljs,\n.hljs-subst {\n  color: #aaa;\n}\n\n.hljs-section {\n  color: #fff;\n}\n\n.hljs-comment,\n.hljs-quote,\n.hljs-meta {\n  color: #444;\n}\n\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-regexp {\n  color: #ffcc33;\n}\n\n.hljs-number,\n.hljs-addition {\n  color: #00cc66;\n}\n\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-link {\n  color: #32aaee;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #6644aa;\n}\n\n.hljs-title,\n.hljs-variable,\n.hljs-deletion,\n.hljs-template-tag {\n  color: #bb1166;\n}\n\n.hljs-section,\n.hljs-doctag,\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/ascetic.css",
    "content": "/*\n\nOriginal style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: white;\n  color: black;\n}\n\n.hljs-string,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-section,\n.hljs-addition,\n.hljs-attribute,\n.hljs-link {\n  color: #888;\n}\n\n.hljs-comment,\n.hljs-quote,\n.hljs-meta,\n.hljs-deletion {\n  color: #ccc;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-section,\n.hljs-name,\n.hljs-type,\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-cave-dark.css",
    "content": "/* Base16 Atelier Cave Dark - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Cave Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #7e7887;\n}\n\n/* Atelier-Cave Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-regexp,\n.hljs-link,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #be4678;\n}\n\n/* Atelier-Cave Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #aa573c;\n}\n\n/* Atelier-Cave Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #2a9292;\n}\n\n/* Atelier-Cave Blue */\n.hljs-title,\n.hljs-section {\n  color: #576ddb;\n}\n\n/* Atelier-Cave Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #955ae7;\n}\n\n.hljs-deletion,\n.hljs-addition {\n  color: #19171c;\n  display: inline-block;\n  width: 100%;\n}\n\n.hljs-deletion {\n  background-color: #be4678;\n}\n\n.hljs-addition {\n  background-color: #2a9292;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #19171c;\n  color: #8b8792;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-cave-light.css",
    "content": "/* Base16 Atelier Cave Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Cave Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #655f6d;\n}\n\n/* Atelier-Cave Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #be4678;\n}\n\n/* Atelier-Cave Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #aa573c;\n}\n\n/* Atelier-Cave Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #2a9292;\n}\n\n/* Atelier-Cave Blue */\n.hljs-title,\n.hljs-section {\n  color: #576ddb;\n}\n\n/* Atelier-Cave Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #955ae7;\n}\n\n.hljs-deletion,\n.hljs-addition {\n  color: #19171c;\n  display: inline-block;\n  width: 100%;\n}\n\n.hljs-deletion {\n  background-color: #be4678;\n}\n\n.hljs-addition {\n  background-color: #2a9292;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #efecf4;\n  color: #585260;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-dune-dark.css",
    "content": "/* Base16 Atelier Dune Dark - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Dune Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #999580;\n}\n\n/* Atelier-Dune Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #d73737;\n}\n\n/* Atelier-Dune Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #b65611;\n}\n\n/* Atelier-Dune Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #60ac39;\n}\n\n/* Atelier-Dune Blue */\n.hljs-title,\n.hljs-section {\n  color: #6684e1;\n}\n\n/* Atelier-Dune Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #b854d4;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #20201d;\n  color: #a6a28c;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-dune-light.css",
    "content": "/* Base16 Atelier Dune Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Dune Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #7d7a68;\n}\n\n/* Atelier-Dune Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #d73737;\n}\n\n/* Atelier-Dune Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #b65611;\n}\n\n/* Atelier-Dune Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #60ac39;\n}\n\n/* Atelier-Dune Blue */\n.hljs-title,\n.hljs-section {\n  color: #6684e1;\n}\n\n/* Atelier-Dune Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #b854d4;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #fefbec;\n  color: #6e6b5e;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-estuary-dark.css",
    "content": "/* Base16 Atelier Estuary Dark - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/estuary) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Estuary Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #878573;\n}\n\n/* Atelier-Estuary Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #ba6236;\n}\n\n/* Atelier-Estuary Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #ae7313;\n}\n\n/* Atelier-Estuary Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #7d9726;\n}\n\n/* Atelier-Estuary Blue */\n.hljs-title,\n.hljs-section {\n  color: #36a166;\n}\n\n/* Atelier-Estuary Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #5f9182;\n}\n\n.hljs-deletion,\n.hljs-addition {\n  color: #22221b;\n  display: inline-block;\n  width: 100%;\n}\n\n.hljs-deletion {\n  background-color: #ba6236;\n}\n\n.hljs-addition {\n  background-color: #7d9726;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #22221b;\n  color: #929181;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-estuary-light.css",
    "content": "/* Base16 Atelier Estuary Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/estuary) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Estuary Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #6c6b5a;\n}\n\n/* Atelier-Estuary Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #ba6236;\n}\n\n/* Atelier-Estuary Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #ae7313;\n}\n\n/* Atelier-Estuary Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #7d9726;\n}\n\n/* Atelier-Estuary Blue */\n.hljs-title,\n.hljs-section {\n  color: #36a166;\n}\n\n/* Atelier-Estuary Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #5f9182;\n}\n\n.hljs-deletion,\n.hljs-addition {\n  color: #22221b;\n  display: inline-block;\n  width: 100%;\n}\n\n.hljs-deletion {\n  background-color: #ba6236;\n}\n\n.hljs-addition {\n  background-color: #7d9726;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #f4f3ec;\n  color: #5f5e4e;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-forest-dark.css",
    "content": "/* Base16 Atelier Forest Dark - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Forest Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #9c9491;\n}\n\n/* Atelier-Forest Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #f22c40;\n}\n\n/* Atelier-Forest Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #df5320;\n}\n\n/* Atelier-Forest Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #7b9726;\n}\n\n/* Atelier-Forest Blue */\n.hljs-title,\n.hljs-section {\n  color: #407ee7;\n}\n\n/* Atelier-Forest Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #6666ea;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #1b1918;\n  color: #a8a19f;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-forest-light.css",
    "content": "/* Base16 Atelier Forest Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Forest Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #766e6b;\n}\n\n/* Atelier-Forest Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #f22c40;\n}\n\n/* Atelier-Forest Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #df5320;\n}\n\n/* Atelier-Forest Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #7b9726;\n}\n\n/* Atelier-Forest Blue */\n.hljs-title,\n.hljs-section {\n  color: #407ee7;\n}\n\n/* Atelier-Forest Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #6666ea;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #f1efee;\n  color: #68615e;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-heath-dark.css",
    "content": "/* Base16 Atelier Heath Dark - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Heath Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #9e8f9e;\n}\n\n/* Atelier-Heath Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #ca402b;\n}\n\n/* Atelier-Heath Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #a65926;\n}\n\n/* Atelier-Heath Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #918b3b;\n}\n\n/* Atelier-Heath Blue */\n.hljs-title,\n.hljs-section {\n  color: #516aec;\n}\n\n/* Atelier-Heath Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #7b59c0;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #1b181b;\n  color: #ab9bab;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-heath-light.css",
    "content": "/* Base16 Atelier Heath Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Heath Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #776977;\n}\n\n/* Atelier-Heath Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #ca402b;\n}\n\n/* Atelier-Heath Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #a65926;\n}\n\n/* Atelier-Heath Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #918b3b;\n}\n\n/* Atelier-Heath Blue */\n.hljs-title,\n.hljs-section {\n  color: #516aec;\n}\n\n/* Atelier-Heath Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #7b59c0;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #f7f3f7;\n  color: #695d69;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-lakeside-dark.css",
    "content": "/* Base16 Atelier Lakeside Dark - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Lakeside Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #7195a8;\n}\n\n/* Atelier-Lakeside Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #d22d72;\n}\n\n/* Atelier-Lakeside Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #935c25;\n}\n\n/* Atelier-Lakeside Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #568c3b;\n}\n\n/* Atelier-Lakeside Blue */\n.hljs-title,\n.hljs-section {\n  color: #257fad;\n}\n\n/* Atelier-Lakeside Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #6b6bb8;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #161b1d;\n  color: #7ea2b4;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-lakeside-light.css",
    "content": "/* Base16 Atelier Lakeside Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Lakeside Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #5a7b8c;\n}\n\n/* Atelier-Lakeside Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #d22d72;\n}\n\n/* Atelier-Lakeside Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #935c25;\n}\n\n/* Atelier-Lakeside Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #568c3b;\n}\n\n/* Atelier-Lakeside Blue */\n.hljs-title,\n.hljs-section {\n  color: #257fad;\n}\n\n/* Atelier-Lakeside Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #6b6bb8;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #ebf8ff;\n  color: #516d7b;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-plateau-dark.css",
    "content": "/* Base16 Atelier Plateau Dark - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/plateau) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Plateau Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #7e7777;\n}\n\n/* Atelier-Plateau Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #ca4949;\n}\n\n/* Atelier-Plateau Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #b45a3c;\n}\n\n/* Atelier-Plateau Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #4b8b8b;\n}\n\n/* Atelier-Plateau Blue */\n.hljs-title,\n.hljs-section {\n  color: #7272ca;\n}\n\n/* Atelier-Plateau Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #8464c4;\n}\n\n.hljs-deletion,\n.hljs-addition {\n  color: #1b1818;\n  display: inline-block;\n  width: 100%;\n}\n\n.hljs-deletion {\n  background-color: #ca4949;\n}\n\n.hljs-addition {\n  background-color: #4b8b8b;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #1b1818;\n  color: #8a8585;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-plateau-light.css",
    "content": "/* Base16 Atelier Plateau Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/plateau) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Plateau Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #655d5d;\n}\n\n/* Atelier-Plateau Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #ca4949;\n}\n\n/* Atelier-Plateau Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #b45a3c;\n}\n\n/* Atelier-Plateau Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #4b8b8b;\n}\n\n/* Atelier-Plateau Blue */\n.hljs-title,\n.hljs-section {\n  color: #7272ca;\n}\n\n/* Atelier-Plateau Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #8464c4;\n}\n\n.hljs-deletion,\n.hljs-addition {\n  color: #1b1818;\n  display: inline-block;\n  width: 100%;\n}\n\n.hljs-deletion {\n  background-color: #ca4949;\n}\n\n.hljs-addition {\n  background-color: #4b8b8b;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #f4ecec;\n  color: #585050;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-savanna-dark.css",
    "content": "/* Base16 Atelier Savanna Dark - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/savanna) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Savanna Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #78877d;\n}\n\n/* Atelier-Savanna Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #b16139;\n}\n\n/* Atelier-Savanna Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #9f713c;\n}\n\n/* Atelier-Savanna Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #489963;\n}\n\n/* Atelier-Savanna Blue */\n.hljs-title,\n.hljs-section {\n  color: #478c90;\n}\n\n/* Atelier-Savanna Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #55859b;\n}\n\n.hljs-deletion,\n.hljs-addition {\n  color: #171c19;\n  display: inline-block;\n  width: 100%;\n}\n\n.hljs-deletion {\n  background-color: #b16139;\n}\n\n.hljs-addition {\n  background-color: #489963;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #171c19;\n  color: #87928a;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-savanna-light.css",
    "content": "/* Base16 Atelier Savanna Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/savanna) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Savanna Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #5f6d64;\n}\n\n/* Atelier-Savanna Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #b16139;\n}\n\n/* Atelier-Savanna Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #9f713c;\n}\n\n/* Atelier-Savanna Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #489963;\n}\n\n/* Atelier-Savanna Blue */\n.hljs-title,\n.hljs-section {\n  color: #478c90;\n}\n\n/* Atelier-Savanna Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #55859b;\n}\n\n.hljs-deletion,\n.hljs-addition {\n  color: #171c19;\n  display: inline-block;\n  width: 100%;\n}\n\n.hljs-deletion {\n  background-color: #b16139;\n}\n\n.hljs-addition {\n  background-color: #489963;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #ecf4ee;\n  color: #526057;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-seaside-dark.css",
    "content": "/* Base16 Atelier Seaside Dark - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Seaside Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #809980;\n}\n\n/* Atelier-Seaside Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #e6193c;\n}\n\n/* Atelier-Seaside Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #87711d;\n}\n\n/* Atelier-Seaside Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #29a329;\n}\n\n/* Atelier-Seaside Blue */\n.hljs-title,\n.hljs-section {\n  color: #3d62f5;\n}\n\n/* Atelier-Seaside Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #ad2bee;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #131513;\n  color: #8ca68c;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-seaside-light.css",
    "content": "/* Base16 Atelier Seaside Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Seaside Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #687d68;\n}\n\n/* Atelier-Seaside Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #e6193c;\n}\n\n/* Atelier-Seaside Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #87711d;\n}\n\n/* Atelier-Seaside Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #29a329;\n}\n\n/* Atelier-Seaside Blue */\n.hljs-title,\n.hljs-section {\n  color: #3d62f5;\n}\n\n/* Atelier-Seaside Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #ad2bee;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #f4fbf4;\n  color: #5e6e5e;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-sulphurpool-dark.css",
    "content": "/* Base16 Atelier Sulphurpool Dark - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Sulphurpool Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #898ea4;\n}\n\n/* Atelier-Sulphurpool Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #c94922;\n}\n\n/* Atelier-Sulphurpool Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #c76b29;\n}\n\n/* Atelier-Sulphurpool Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #ac9739;\n}\n\n/* Atelier-Sulphurpool Blue */\n.hljs-title,\n.hljs-section {\n  color: #3d8fd1;\n}\n\n/* Atelier-Sulphurpool Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #6679cc;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #202746;\n  color: #979db4;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atelier-sulphurpool-light.css",
    "content": "/* Base16 Atelier Sulphurpool Light - Theme */\n/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */\n/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */\n\n/* Atelier-Sulphurpool Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #6b7394;\n}\n\n/* Atelier-Sulphurpool Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-regexp,\n.hljs-link,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #c94922;\n}\n\n/* Atelier-Sulphurpool Orange */\n.hljs-number,\n.hljs-meta,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #c76b29;\n}\n\n/* Atelier-Sulphurpool Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet {\n  color: #ac9739;\n}\n\n/* Atelier-Sulphurpool Blue */\n.hljs-title,\n.hljs-section {\n  color: #3d8fd1;\n}\n\n/* Atelier-Sulphurpool Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #6679cc;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #f5f7ff;\n  color: #5e6687;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atom-one-dark-reasonable.css",
    "content": "/*\n\nAtom One Dark With support for ReasonML by Gidi Morris, based off work by Daniel Gamage\n\nOriginal One Dark Syntax theme from https://github.com/atom/one-dark-syntax\n\n*/\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  color: #abb2bf;\n  background: #282c34;\n}\n.hljs-keyword, .hljs-operator {\n  color: #F92672;\n}\n.hljs-pattern-match {\n  color: #F92672;\n}\n.hljs-pattern-match .hljs-constructor {\n  color: #61aeee;\n}\n.hljs-function {\n  color: #61aeee;\n}\n.hljs-function .hljs-params {\n  color: #A6E22E;\n}\n.hljs-function .hljs-params .hljs-typing {\n  color: #FD971F;\n}\n.hljs-module-access .hljs-module {\n  color: #7e57c2;\n}\n.hljs-constructor {\n  color: #e2b93d;\n}\n.hljs-constructor .hljs-string {\n  color: #9CCC65;\n}\n.hljs-comment, .hljs-quote {\n  color: #b18eb1;\n  font-style: italic;\n}\n.hljs-doctag, .hljs-formula {\n  color: #c678dd;\n}\n.hljs-section, .hljs-name, .hljs-selector-tag, .hljs-deletion, .hljs-subst {\n  color: #e06c75;\n}\n.hljs-literal {\n  color: #56b6c2;\n}\n.hljs-string, .hljs-regexp, .hljs-addition, .hljs-attribute, .hljs-meta-string {\n  color: #98c379;\n}\n.hljs-built_in, .hljs-class .hljs-title {\n  color: #e6c07b;\n}\n.hljs-attr, .hljs-variable, .hljs-template-variable, .hljs-type, .hljs-selector-class, .hljs-selector-attr, .hljs-selector-pseudo, .hljs-number {\n  color: #d19a66;\n}\n.hljs-symbol, .hljs-bullet, .hljs-link, .hljs-meta, .hljs-selector-id, .hljs-title {\n  color: #61aeee;\n}\n.hljs-emphasis {\n  font-style: italic;\n}\n.hljs-strong {\n  font-weight: bold;\n}\n.hljs-link {\n  text-decoration: underline;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atom-one-dark.css",
    "content": "/*\n\nAtom One Dark by Daniel Gamage\nOriginal One Dark Syntax theme from https://github.com/atom/one-dark-syntax\n\nbase:    #282c34\nmono-1:  #abb2bf\nmono-2:  #818896\nmono-3:  #5c6370\nhue-1:   #56b6c2\nhue-2:   #61aeee\nhue-3:   #c678dd\nhue-4:   #98c379\nhue-5:   #e06c75\nhue-5-2: #be5046\nhue-6:   #d19a66\nhue-6-2: #e6c07b\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  color: #abb2bf;\n  background: #282c34;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #5c6370;\n  font-style: italic;\n}\n\n.hljs-doctag,\n.hljs-keyword,\n.hljs-formula {\n  color: #c678dd;\n}\n\n.hljs-section,\n.hljs-name,\n.hljs-selector-tag,\n.hljs-deletion,\n.hljs-subst {\n  color: #e06c75;\n}\n\n.hljs-literal {\n  color: #56b6c2;\n}\n\n.hljs-string,\n.hljs-regexp,\n.hljs-addition,\n.hljs-attribute,\n.hljs-meta-string {\n  color: #98c379;\n}\n\n.hljs-built_in,\n.hljs-class .hljs-title {\n  color: #e6c07b;\n}\n\n.hljs-attr,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-type,\n.hljs-selector-class,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-number {\n  color: #d19a66;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-link,\n.hljs-meta,\n.hljs-selector-id,\n.hljs-title {\n  color: #61aeee;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-link {\n  text-decoration: underline;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/atom-one-light.css",
    "content": "/*\n\nAtom One Light by Daniel Gamage\nOriginal One Light Syntax theme from https://github.com/atom/one-light-syntax\n\nbase:    #fafafa\nmono-1:  #383a42\nmono-2:  #686b77\nmono-3:  #a0a1a7\nhue-1:   #0184bb\nhue-2:   #4078f2\nhue-3:   #a626a4\nhue-4:   #50a14f\nhue-5:   #e45649\nhue-5-2: #c91243\nhue-6:   #986801\nhue-6-2: #c18401\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  color: #383a42;\n  background: #fafafa;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #a0a1a7;\n  font-style: italic;\n}\n\n.hljs-doctag,\n.hljs-keyword,\n.hljs-formula {\n  color: #a626a4;\n}\n\n.hljs-section,\n.hljs-name,\n.hljs-selector-tag,\n.hljs-deletion,\n.hljs-subst {\n  color: #e45649;\n}\n\n.hljs-literal {\n  color: #0184bb;\n}\n\n.hljs-string,\n.hljs-regexp,\n.hljs-addition,\n.hljs-attribute,\n.hljs-meta-string {\n  color: #50a14f;\n}\n\n.hljs-built_in,\n.hljs-class .hljs-title {\n  color: #c18401;\n}\n\n.hljs-attr,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-type,\n.hljs-selector-class,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-number {\n  color: #986801;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-link,\n.hljs-meta,\n.hljs-selector-id,\n.hljs-title {\n  color: #4078f2;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-link {\n  text-decoration: underline;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/brown-paper.css",
    "content": "/*\n\nBrown Paper style from goldblog.com.ua (c) Zaripov Yura <yur4ik7@ukr.net>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background:#b7a68e url(./brown-papersq.png);\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal {\n  color:#005599;\n  font-weight:bold;\n}\n\n.hljs,\n.hljs-subst {\n  color: #363c69;\n}\n\n.hljs-string,\n.hljs-title,\n.hljs-section,\n.hljs-type,\n.hljs-attribute,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-built_in,\n.hljs-addition,\n.hljs-variable,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-link,\n.hljs-name {\n  color: #2c009f;\n}\n\n.hljs-comment,\n.hljs-quote,\n.hljs-meta,\n.hljs-deletion {\n  color: #802022;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-doctag,\n.hljs-title,\n.hljs-section,\n.hljs-type,\n.hljs-name,\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/codepen-embed.css",
    "content": "/*\n  codepen.io Embed Theme\n  Author: Justin Perry <http://github.com/ourmaninamsterdam>\n  Original theme - https://github.com/chriskempson/tomorrow-theme\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #222;\n  color: #fff;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #777;\n}\n\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-regexp,\n.hljs-meta,\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-params,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-link,\n.hljs-deletion {\n  color: #ab875d;\n}\n\n.hljs-section,\n.hljs-title,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-type,\n.hljs-attribute {\n  color: #9b869b;\n}\n\n.hljs-string,\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-addition {\n  color: #8f9c6c;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/color-brewer.css",
    "content": "/*\n\nColorbrewer theme\nOriginal: https://github.com/mbostock/colorbrewer-theme (c) Mike Bostock <mike@ocks.org>\nPorted by Fabrício Tavares de Oliveira\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #fff;\n}\n\n.hljs,\n.hljs-subst {\n  color: #000;\n}\n\n.hljs-string,\n.hljs-meta,\n.hljs-symbol,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-addition {\n  color: #756bb1;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #636363;\n}\n\n.hljs-number,\n.hljs-regexp,\n.hljs-literal,\n.hljs-bullet,\n.hljs-link {\n  color: #31a354;\n}\n\n.hljs-deletion,\n.hljs-variable {\n  color: #88f;\n}\n\n\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-title,\n.hljs-section,\n.hljs-built_in,\n.hljs-doctag,\n.hljs-type,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-strong {\n  color: #3182bd;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-attribute {\n  color: #e6550d;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/darcula.css",
    "content": "/*\n\nDarcula color scheme from the JetBrains family of IDEs\n\n*/\n\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #2b2b2b;\n  color: #bababa;\n}\n\n.hljs-strong,\n.hljs-emphasis {\n  color: #a8a8a2;\n}\n\n.hljs-bullet,\n.hljs-quote,\n.hljs-link,\n.hljs-number,\n.hljs-regexp,\n.hljs-literal {\n  color: #6896ba;\n}\n\n.hljs-code,\n.hljs-selector-class {\n  color: #a6e22e;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-section,\n.hljs-attribute,\n.hljs-name,\n.hljs-variable {\n  color: #cb7832;\n}\n\n.hljs-params {\n  color: #b9b9b9;\n}\n\n.hljs-string {\n  color: #6a8759;\n}\n\n.hljs-subst,\n.hljs-type,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-symbol,\n.hljs-selector-id,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-addition {\n  color: #e0c46c;\n}\n\n.hljs-comment,\n.hljs-deletion,\n.hljs-meta {\n  color: #7f7f7f;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/dark.css",
    "content": "/*\n\nDark style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #444;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-section,\n.hljs-link {\n  color: white;\n}\n\n.hljs,\n.hljs-subst {\n  color: #ddd;\n}\n\n.hljs-string,\n.hljs-title,\n.hljs-name,\n.hljs-type,\n.hljs-attribute,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-built_in,\n.hljs-addition,\n.hljs-variable,\n.hljs-template-tag,\n.hljs-template-variable {\n  color: #d88;\n}\n\n.hljs-comment,\n.hljs-quote,\n.hljs-deletion,\n.hljs-meta {\n  color: #777;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-title,\n.hljs-section,\n.hljs-doctag,\n.hljs-type,\n.hljs-name,\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/darkula.css",
    "content": "/*\n  Deprecated due to a typo in the name and left here for compatibility purpose only.\n  Please use darcula.css instead.\n*/\n\n@import url('darcula.css');\n"
  },
  {
    "path": "includes/Highlight/styles/default.css",
    "content": "/*\n\nOriginal highlight.js style (c) Ivan Sagalaev <maniac@softwaremaniacs.org>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #F0F0F0;\n}\n\n\n/* Base color: saturation 0; */\n\n.hljs,\n.hljs-subst {\n  color: #444;\n}\n\n.hljs-comment {\n  color: #888888;\n}\n\n.hljs-keyword,\n.hljs-attribute,\n.hljs-selector-tag,\n.hljs-meta-keyword,\n.hljs-doctag,\n.hljs-name {\n  font-weight: bold;\n}\n\n\n/* User color: hue: 0 */\n\n.hljs-type,\n.hljs-string,\n.hljs-number,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-quote,\n.hljs-template-tag,\n.hljs-deletion {\n  color: #880000;\n}\n\n.hljs-title,\n.hljs-section {\n  color: #880000;\n  font-weight: bold;\n}\n\n.hljs-regexp,\n.hljs-symbol,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n  color: #BC6060;\n}\n\n\n/* Language color: hue: 90; */\n\n.hljs-literal {\n  color: #78A960;\n}\n\n.hljs-built_in,\n.hljs-bullet,\n.hljs-code,\n.hljs-addition {\n  color: #397300;\n}\n\n\n/* Meta color: hue: 200 */\n\n.hljs-meta {\n  color: #1f7199;\n}\n\n.hljs-meta-string {\n  color: #4d99bf;\n}\n\n\n/* Misc effects */\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/docco.css",
    "content": "/*\nDocco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars)\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  color: #000;\n  background: #f8f8ff;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #408080;\n  font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-subst {\n  color: #954121;\n}\n\n.hljs-number {\n  color: #40a070;\n}\n\n.hljs-string,\n.hljs-doctag {\n  color: #219161;\n}\n\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-section,\n.hljs-type {\n  color: #19469d;\n}\n\n.hljs-params {\n  color: #00f;\n}\n\n.hljs-title {\n  color: #458;\n  font-weight: bold;\n}\n\n.hljs-tag,\n.hljs-name,\n.hljs-attribute {\n  color: #000080;\n  font-weight: normal;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n  color: #008080;\n}\n\n.hljs-regexp,\n.hljs-link {\n  color: #b68;\n}\n\n.hljs-symbol,\n.hljs-bullet {\n  color: #990073;\n}\n\n.hljs-built_in,\n.hljs-builtin-name {\n  color: #0086b3;\n}\n\n.hljs-meta {\n  color: #999;\n  font-weight: bold;\n}\n\n.hljs-deletion {\n  background: #fdd;\n}\n\n.hljs-addition {\n  background: #dfd;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/dracula.css",
    "content": "/*\n\nDracula Theme v1.2.0\n\nhttps://github.com/zenorocha/dracula-theme\n\nCopyright 2015, All rights reserved\n\nCode licensed under the MIT license\nhttp://zenorocha.mit-license.org\n\n@author Éverton Ribeiro <nuxlli@gmail.com>\n@author Zeno Rocha <hi@zenorocha.com>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #282a36;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-section,\n.hljs-link {\n  color: #8be9fd;\n}\n\n.hljs-function .hljs-keyword {\n  color: #ff79c6;\n}\n\n.hljs,\n.hljs-subst {\n  color: #f8f8f2;\n}\n\n.hljs-string,\n.hljs-title,\n.hljs-name,\n.hljs-type,\n.hljs-attribute,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition,\n.hljs-variable,\n.hljs-template-tag,\n.hljs-template-variable {\n  color: #f1fa8c;\n}\n\n.hljs-comment,\n.hljs-quote,\n.hljs-deletion,\n.hljs-meta {\n  color: #6272a4;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-title,\n.hljs-section,\n.hljs-doctag,\n.hljs-type,\n.hljs-name,\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/far.css",
    "content": "/*\n\nFAR Style (c) MajestiC <majestic2k@gmail.com>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #000080;\n}\n\n.hljs,\n.hljs-subst {\n  color: #0ff;\n}\n\n.hljs-string,\n.hljs-attribute,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-addition {\n  color: #ff0;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-section,\n.hljs-type,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-variable {\n  color: #fff;\n}\n\n.hljs-comment,\n.hljs-quote,\n.hljs-doctag,\n.hljs-deletion {\n  color: #888;\n}\n\n.hljs-number,\n.hljs-regexp,\n.hljs-literal,\n.hljs-link {\n  color: #0f0;\n}\n\n.hljs-meta {\n  color: #008080;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-title,\n.hljs-section,\n.hljs-name,\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/foundation.css",
    "content": "/*\nDescription: Foundation 4 docs style for highlight.js\nAuthor: Dan Allen <dan.j.allen@gmail.com>\nWebsite: http://foundation.zurb.com/docs/\nVersion: 1.0\nDate: 2013-04-02\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #eee;\n  color: black;\n}\n\n.hljs-link,\n.hljs-emphasis,\n.hljs-attribute,\n.hljs-addition {\n  color: #070;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong,\n.hljs-string,\n.hljs-deletion {\n  color: #d14;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-quote,\n.hljs-comment {\n  color: #998;\n  font-style: italic;\n}\n\n.hljs-section,\n.hljs-title {\n  color: #900;\n}\n\n.hljs-class .hljs-title,\n.hljs-type {\n  color: #458;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n  color: #336699;\n}\n\n.hljs-bullet {\n  color: #997700;\n}\n\n.hljs-meta {\n  color: #3344bb;\n}\n\n.hljs-code,\n.hljs-number,\n.hljs-literal,\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #099;\n}\n\n.hljs-regexp {\n  background-color: #fff0ff;\n  color: #880088;\n}\n\n.hljs-symbol {\n  color: #990073;\n}\n\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #007700;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/github-gist.css",
    "content": "/**\n * GitHub Gist Theme\n * Author : Anthony Attard - https://github.com/AnthonyAttard\n * Author : Louis Barranqueiro - https://github.com/LouisBarranqueiro\n */\n\n.hljs {\n  display: block;\n  background: white;\n  padding: 0.5em;\n  color: #333333;\n  overflow-x: auto;\n}\n\n.hljs-comment,\n.hljs-meta {\n  color: #969896;\n}\n\n.hljs-variable,\n.hljs-template-variable,\n.hljs-strong,\n.hljs-emphasis,\n.hljs-quote {\n  color: #df5000;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-type {\n  color: #d73a49;\n}\n\n.hljs-literal,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-attribute {\n  color: #0086b3;\n}\n\n.hljs-section,\n.hljs-name {\n  color: #63a35c;\n}\n\n.hljs-tag {\n  color: #333333;\n}\n\n.hljs-title,\n.hljs-attr,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n  color: #6f42c1;\n}\n\n.hljs-addition {\n  color: #55a532;\n  background-color: #eaffea;\n}\n\n.hljs-deletion {\n  color: #bd2c00;\n  background-color: #ffecec;\n}\n\n.hljs-link {\n  text-decoration: underline;\n}\n\n.hljs-number {\n  color: #005cc5;\n}\n\n.hljs-string {\n  color: #032f62;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/github.css",
    "content": "/*\n\ngithub.com style (c) Vasily Polovnyov <vast@whiteants.net>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  color: #333;\n  background: #f8f8f8;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #998;\n  font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-subst {\n  color: #333;\n  font-weight: bold;\n}\n\n.hljs-number,\n.hljs-literal,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag .hljs-attr {\n  color: #008080;\n}\n\n.hljs-string,\n.hljs-doctag {\n  color: #d14;\n}\n\n.hljs-title,\n.hljs-section,\n.hljs-selector-id {\n  color: #900;\n  font-weight: bold;\n}\n\n.hljs-subst {\n  font-weight: normal;\n}\n\n.hljs-type,\n.hljs-class .hljs-title {\n  color: #458;\n  font-weight: bold;\n}\n\n.hljs-tag,\n.hljs-name,\n.hljs-attribute {\n  color: #000080;\n  font-weight: normal;\n}\n\n.hljs-regexp,\n.hljs-link {\n  color: #009926;\n}\n\n.hljs-symbol,\n.hljs-bullet {\n  color: #990073;\n}\n\n.hljs-built_in,\n.hljs-builtin-name {\n  color: #0086b3;\n}\n\n.hljs-meta {\n  color: #999;\n  font-weight: bold;\n}\n\n.hljs-deletion {\n  background: #fdd;\n}\n\n.hljs-addition {\n  background: #dfd;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/gml.css",
    "content": "/*\n\nGML Theme - Meseta <meseta@gmail.com>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #222222;\n  color: #C0C0C0;\n}\n\n.hljs-keyword {\n  color: #FFB871;\n  font-weight: bold;\n}\n\n.hljs-built_in {\n  color: #FFB871;\n}\n\n.hljs-literal {\n  color: #FF8080;\n}\n\n.hljs-symbol {\n  color: #58E55A;\n}\n\n.hljs-comment {\n  color: #5B995B;\n}\n\n.hljs-string {\n  color: #FFFF00;\n}\n\n.hljs-number {\n  color: #FF8080;\n}\n\n.hljs-attribute,\n.hljs-selector-tag,\n.hljs-doctag,\n.hljs-name,\n.hljs-bullet,\n.hljs-code,\n.hljs-addition,\n.hljs-regexp,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-type,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-quote,\n.hljs-template-tag,\n.hljs-deletion,\n.hljs-title,\n.hljs-section,\n.hljs-function,\n.hljs-meta-keyword,\n.hljs-meta,\n.hljs-subst {\n  color: #C0C0C0;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/googlecode.css",
    "content": "/*\n\nGoogle Code style (c) Aahan Krish <geekpanth3r@gmail.com>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: white;\n  color: black;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #800;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-section,\n.hljs-title,\n.hljs-name {\n  color: #008;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n  color: #660;\n}\n\n.hljs-string,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-regexp {\n  color: #080;\n}\n\n.hljs-literal,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-meta,\n.hljs-number,\n.hljs-link {\n  color: #066;\n}\n\n.hljs-title,\n.hljs-doctag,\n.hljs-type,\n.hljs-attr,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-params {\n  color: #606;\n}\n\n.hljs-attribute,\n.hljs-subst {\n  color: #000;\n}\n\n.hljs-formula {\n  background-color: #eee;\n  font-style: italic;\n}\n\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #9B703F\n}\n\n.hljs-addition {\n  background-color: #baeeba;\n}\n\n.hljs-deletion {\n  background-color: #ffc8bd;\n}\n\n.hljs-doctag,\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/gradient-dark.css",
    "content": "/*\n\nGradient Dark (c) Samia Ali <samiaab1990@gmail.com>\n\n*/\n\n.hljs\n{\ndisplay: block;\noverflow-x: auto;\npadding: 0.5em;\nbackground: rgb(80,31,122);\nbackground: linear-gradient(166deg, rgba(80,31,122,1) 0%, rgba(40,32,179,1) 80%);\ncolor:#e7e4eb;\n}\n\n.hljs-subtr{\n  color:#e7e4eb;\n}\n\n.hljs-doctag,\n.hljs-meta,\n.hljs-comment,\n.hljs-quote\n{\n  color:#af8dd9;\n}\n\n.hljs-selector-tag,\n.hljs-selector-id,\n.hljs-template-tag,\n.hljs-regexp,\n.hljs-attr,\n.hljs-tag\n{\n  color:#AEFBFF;\n}\n\n.hljs-params,\n.hljs-selector-class,\n.hljs-bullet\n\n{\n  color:#F19FFF;\n  \n}\n\n.hljs-keyword,\n.hljs-section,\n.hljs-meta-keyword,\n.hljs-symbol,\n.hljs-type\n\n{\n\n  color:#17fc95;\n}\n\n.hljs-addition,\n.hljs-number,\n.hljs-link\n{\n  color:#C5FE00;\n}\n\n\n.hljs-string\n{\n  color: #38c0ff;\n}\n\n\n.hljs-attribute,\n.hljs-addition\n{\n  color:#E7FF9F;\n}\n\n.hljs-variable,\n.hljs-template-variable\n\n{\n  color:#E447FF;\n}\n\n.hljs-builtin-name,\n.hljs-built_in,\n.hljs-formula,\n.hljs-name,\n.hljs-title,\n.hljs-class,\n.hljs-function\n{\n  color: #FFC800;\n\n}\n\n.hljs-selector-pseudo,\n.hljs-deletion,\n.hljs-literal\n{\n  color:#FF9E44;\n\n}\n\n.hljs-emphasis,\n.hljs-quote\n{\n  font-style:italic;\n}\n\n.hljs-params,\n.hljs-selector-class,\n.hljs-strong,\n.hljs-selector-tag,\n.hljs-selector-id,\n.hljs-template-tag,\n.hljs-section,\n.hljs-keyword\n{\n  font-weight:bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/gradient-light.css",
    "content": "/*\n\nGradient Light (c) Samia Ali <samiaab1990@gmail.com>\n\n*/\n\n.hljs\n{\ndisplay: block;\noverflow-x: auto;\npadding: 0.5em;\nbackground: rgb(255,253,141);\nbackground: linear-gradient(142deg, rgba(255,253,141,1) 0%, rgba(252,183,255,1) 35%, rgba(144,236,255,1) 100%);\ncolor:#250482;\n}\n\n.hljs-subtr{\ncolor:#01958B;\n}\n\n.hljs-doctag,\n.hljs-meta,\n.hljs-comment,\n.hljs-quote\n{\n  color:#CB7200;\n}\n\n.hljs-selector-tag,\n.hljs-selector-id,\n.hljs-template-tag,\n.hljs-regexp,\n.hljs-attr,\n.hljs-tag\n{\n  color:#07BD5F;\n}\n\n.hljs-params,\n.hljs-selector-class,\n.hljs-bullet\n\n{\n  color:#43449F;\n  \n}\n\n.hljs-keyword,\n.hljs-section,\n.hljs-meta-keyword,\n.hljs-symbol,\n.hljs-type\n\n{\n\n  color:#7D2801;\n}\n\n.hljs-addition,\n.hljs-number,\n.hljs-link\n{\n  color:#7F0096;\n}\n\n\n.hljs-string\n{\n  color: #38c0ff;\n}\n\n\n.hljs-attribute,\n.hljs-addition\n{\n  color:#296562;\n}\n\n.hljs-variable,\n.hljs-template-variable\n\n{\n  color:#025C8F;\n}\n\n.hljs-builtin-name,\n.hljs-built_in,\n.hljs-formula,\n.hljs-name,\n.hljs-title,\n.hljs-class,\n.hljs-function\n{\n  color: #529117;\n\n}\n\n.hljs-selector-pseudo,\n.hljs-deletion,\n.hljs-literal\n{\n  color:#AD13FF;\n\n}\n\n.hljs-emphasis,\n.hljs-quote\n{\n  font-style:italic;\n}\n\n.hljs-params,\n.hljs-selector-class,\n.hljs-strong,\n.hljs-selector-tag,\n.hljs-selector-id,\n.hljs-template-tag,\n.hljs-section,\n.hljs-keyword\n{\n  font-weight:bold;\n}\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "includes/Highlight/styles/grayscale.css",
    "content": "/*\n\ngrayscale style (c) MY Sun <simonmysun@gmail.com>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  color: #333;\n  background: #fff;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #777;\n  font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-subst {\n  color: #333;\n  font-weight: bold;\n}\n\n.hljs-number,\n.hljs-literal {\n  color: #777;\n}\n\n.hljs-string,\n.hljs-doctag,\n.hljs-formula {\n  color: #333;\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAJ0lEQVQIW2O8e/fufwYGBgZBQUEQxcCIIfDu3Tuwivfv30NUoAsAALHpFMMLqZlPAAAAAElFTkSuQmCC) repeat;\n}\n\n.hljs-title,\n.hljs-section,\n.hljs-selector-id {\n  color: #000;\n  font-weight: bold;\n}\n\n.hljs-subst {\n  font-weight: normal;\n}\n\n.hljs-class .hljs-title,\n.hljs-type,\n.hljs-name {\n  color: #333;\n  font-weight: bold;\n}\n\n.hljs-tag {\n  color: #333;\n}\n\n.hljs-regexp {\n    color: #333;\n    background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAN37979r6yszIgujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQDexSef15DBCwAAAABJRU5ErkJggg==) repeat;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-link {\n  color: #000;\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAKElEQVQIW2NkQAO7d+/+z4gsBhJwdXVlhAvCBECKwIIwAbhKZBUwBQA6hBpm5efZsgAAAABJRU5ErkJggg==) repeat;\n}\n\n.hljs-built_in,\n.hljs-builtin-name {\n  color: #000;\n  text-decoration: underline;\n}\n\n.hljs-meta {\n  color: #999;\n  font-weight: bold;\n}\n\n.hljs-deletion {\n  color: #fff;\n  background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAE0lEQVQIW2MMDQ39zzhz5kwIAQAyxweWgUHd1AAAAABJRU5ErkJggg==) repeat;\n}\n\n.hljs-addition {\n  color: #000;\n  background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAALUlEQVQYV2N89+7dfwYk8P79ewZBQUFkIQZGOiu6e/cuiptQHAPl0NtNxAQBAM97Oejj3Dg7AAAAAElFTkSuQmCC) repeat;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/gruvbox-dark.css",
    "content": "/*\n\nGruvbox style (dark) (c) Pavel Pertsev (original style at https://github.com/morhetz/gruvbox)\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #282828;\n}\n\n.hljs,\n.hljs-subst {\n  color: #ebdbb2;\n}\n\n/* Gruvbox Red */\n.hljs-deletion,\n.hljs-formula,\n.hljs-keyword,\n.hljs-link,\n.hljs-selector-tag {\n  color: #fb4934;\n}\n\n/* Gruvbox Blue */\n.hljs-built_in,\n.hljs-emphasis,\n.hljs-name,\n.hljs-quote,\n.hljs-strong,\n.hljs-title,\n.hljs-variable {\n  color: #83a598;\n}\n\n/* Gruvbox Yellow */\n.hljs-attr,\n.hljs-params,\n.hljs-template-tag,\n.hljs-type {\n  color: #fabd2f;\n}\n\n/* Gruvbox Purple */\n.hljs-builtin-name,\n.hljs-doctag,\n.hljs-literal,\n.hljs-number {\n  color: #8f3f71;\n}\n\n/* Gruvbox Orange */\n.hljs-code,\n.hljs-meta,\n.hljs-regexp,\n.hljs-selector-id,\n.hljs-template-variable {\n  color: #fe8019;\n}\n\n/* Gruvbox Green */\n.hljs-addition,\n.hljs-meta-string,\n.hljs-section,\n.hljs-selector-attr,\n.hljs-selector-class,\n.hljs-string,\n.hljs-symbol {\n  color: #b8bb26;\n}\n\n/* Gruvbox Aqua */\n.hljs-attribute,\n.hljs-bullet,\n.hljs-class,\n.hljs-function,\n.hljs-function .hljs-keyword,\n.hljs-meta-keyword,\n.hljs-selector-pseudo,\n.hljs-tag {\n  color: #8ec07c;\n}\n\n/* Gruvbox Gray */\n.hljs-comment {\n  color: #928374;\n}\n\n/* Gruvbox Purple */\n.hljs-link_label,\n.hljs-literal,\n.hljs-number {\n  color: #d3869b;\n}\n\n.hljs-comment,\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-section,\n.hljs-strong,\n.hljs-tag {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/gruvbox-light.css",
    "content": "/*\n\nGruvbox style (light) (c) Pavel Pertsev (original style at https://github.com/morhetz/gruvbox)\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #fbf1c7;\n}\n\n.hljs,\n.hljs-subst {\n  color: #3c3836;\n}\n\n/* Gruvbox Red */\n.hljs-deletion,\n.hljs-formula,\n.hljs-keyword,\n.hljs-link,\n.hljs-selector-tag {\n  color: #9d0006;\n}\n\n/* Gruvbox Blue */\n.hljs-built_in,\n.hljs-emphasis,\n.hljs-name,\n.hljs-quote,\n.hljs-strong,\n.hljs-title,\n.hljs-variable {\n  color: #076678;\n}\n\n/* Gruvbox Yellow */\n.hljs-attr,\n.hljs-params,\n.hljs-template-tag,\n.hljs-type {\n  color: #b57614;\n}\n\n/* Gruvbox Purple */\n.hljs-builtin-name,\n.hljs-doctag,\n.hljs-literal,\n.hljs-number {\n  color: #8f3f71;\n}\n\n/* Gruvbox Orange */\n.hljs-code,\n.hljs-meta,\n.hljs-regexp,\n.hljs-selector-id,\n.hljs-template-variable {\n  color: #af3a03;\n}\n\n/* Gruvbox Green */\n.hljs-addition,\n.hljs-meta-string,\n.hljs-section,\n.hljs-selector-attr,\n.hljs-selector-class,\n.hljs-string,\n.hljs-symbol {\n  color: #79740e;\n}\n\n/* Gruvbox Aqua */\n.hljs-attribute,\n.hljs-bullet,\n.hljs-class,\n.hljs-function,\n.hljs-function .hljs-keyword,\n.hljs-meta-keyword,\n.hljs-selector-pseudo,\n.hljs-tag {\n  color: #427b58;\n}\n\n/* Gruvbox Gray */\n.hljs-comment {\n  color: #928374;\n}\n\n/* Gruvbox Purple */\n.hljs-link_label,\n.hljs-literal,\n.hljs-number {\n  color: #8f3f71;\n}\n\n.hljs-comment,\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-section,\n.hljs-strong,\n.hljs-tag {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/hopscotch.css",
    "content": "/*\n * Hopscotch\n * by Jan T. Sott\n * https://github.com/idleberg/Hopscotch\n *\n * This work is licensed under the Creative Commons CC0 1.0 Universal License\n */\n\n/* Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #989498;\n}\n\n/* Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-link,\n.hljs-deletion {\n  color: #dd464c;\n}\n\n/* Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params {\n  color: #fd8b19;\n}\n\n/* Yellow */\n.hljs-class .hljs-title {\n  color: #fdcc59;\n}\n\n/* Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n  color: #8fc13e;\n}\n\n/* Aqua */\n.hljs-meta {\n  color: #149b93;\n}\n\n/* Blue */\n.hljs-function,\n.hljs-section,\n.hljs-title {\n  color: #1290bf;\n}\n\n/* Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #c85e7c;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #322931;\n  color: #b9b5b8;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/hybrid.css",
    "content": "/*\n\nvim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid)\n\n*/\n\n/*background color*/\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #1d1f21;\n}\n\n/*selection color*/\n.hljs::selection,\n.hljs span::selection {\n  background: #373b41;\n}\n\n.hljs::-moz-selection,\n.hljs span::-moz-selection {\n  background: #373b41;\n}\n\n/*foreground color*/\n.hljs {\n  color: #c5c8c6;\n}\n\n/*color: fg_yellow*/\n.hljs-title,\n.hljs-name {\n  color: #f0c674;\n}\n\n/*color: fg_comment*/\n.hljs-comment,\n.hljs-meta,\n.hljs-meta .hljs-keyword {\n  color: #707880;\n}\n\n/*color: fg_red*/\n.hljs-number,\n.hljs-symbol,\n.hljs-literal,\n.hljs-deletion,\n.hljs-link {\n color: #cc6666\n}\n\n/*color: fg_green*/\n.hljs-string,\n.hljs-doctag,\n.hljs-addition,\n.hljs-regexp,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n  color: #b5bd68;\n}\n\n/*color: fg_purple*/\n.hljs-attribute,\n.hljs-code,\n.hljs-selector-id {\n color: #b294bb;\n}\n\n/*color: fg_blue*/\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-bullet,\n.hljs-tag {\n color: #81a2be;\n}\n\n/*color: fg_aqua*/\n.hljs-subst,\n.hljs-variable,\n.hljs-template-tag,\n.hljs-template-variable {\n  color: #8abeb7;\n}\n\n/*color: fg_orange*/\n.hljs-type,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-quote,\n.hljs-section,\n.hljs-selector-class {\n  color: #de935f;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/idea.css",
    "content": "/*\n\nIntellij Idea-like styling (c) Vasily Polovnyov <vast@whiteants.net>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  color: #000;\n  background: #fff;\n}\n\n.hljs-subst,\n.hljs-title {\n  font-weight: normal;\n  color: #000;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #808080;\n  font-style: italic;\n}\n\n.hljs-meta {\n  color: #808000;\n}\n\n.hljs-tag {\n  background: #efefef;\n}\n\n.hljs-section,\n.hljs-name,\n.hljs-literal,\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-type,\n.hljs-selector-id,\n.hljs-selector-class {\n  font-weight: bold;\n  color: #000080;\n}\n\n.hljs-attribute,\n.hljs-number,\n.hljs-regexp,\n.hljs-link {\n  font-weight: bold;\n  color: #0000ff;\n}\n\n.hljs-number,\n.hljs-regexp,\n.hljs-link {\n  font-weight: normal;\n}\n\n.hljs-string {\n  color: #008000;\n  font-weight: bold;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-formula {\n  color: #000;\n  background: #d0eded;\n  font-style: italic;\n}\n\n.hljs-doctag {\n  text-decoration: underline;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n  color: #660e7a;\n}\n\n.hljs-addition {\n  background: #baeeba;\n}\n\n.hljs-deletion {\n  background: #ffc8bd;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/ir-black.css",
    "content": "/*\n  IR_Black style (c) Vasily Mikhailitchenko <vaskas@programica.ru>\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #000;\n  color: #f8f8f8;\n}\n\n.hljs-comment,\n.hljs-quote,\n.hljs-meta {\n  color: #7c7c7c;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-tag,\n.hljs-name {\n  color: #96cbfe;\n}\n\n.hljs-attribute,\n.hljs-selector-id {\n  color: #ffffb6;\n}\n\n.hljs-string,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-addition {\n  color: #a8ff60;\n}\n\n.hljs-subst {\n  color: #daefa3;\n}\n\n.hljs-regexp,\n.hljs-link {\n  color: #e9c062;\n}\n\n.hljs-title,\n.hljs-section,\n.hljs-type,\n.hljs-doctag {\n  color: #ffffb6;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-literal {\n  color: #c6c5fe;\n}\n\n.hljs-number,\n.hljs-deletion {\n  color:#ff73fd;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/isbl-editor-dark.css",
    "content": "/*\n\nISBL Editor style dark color scheme (c) Dmitriy Tarasov <dimatar@gmail.com>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #404040;\n  color: #f0f0f0;\n}\n\n/* Base color: saturation 0; */\n\n.hljs,\n.hljs-subst {\n  color: #f0f0f0;\n}\n\n.hljs-comment {\n  color: #b5b5b5;\n  font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-attribute,\n.hljs-selector-tag,\n.hljs-meta-keyword,\n.hljs-doctag,\n.hljs-name {\n  color: #f0f0f0;\n  font-weight: bold;\n}\n\n\n/* User color: hue: 0 */\n\n.hljs-string {\n  color: #97bf0d;\n}\n\n.hljs-type,\n.hljs-number,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-quote,\n.hljs-template-tag,\n.hljs-deletion {\n  color: #f0f0f0;\n}\n\n.hljs-title,\n.hljs-section {\n  color: #df471e;\n}\n\n.hljs-title>.hljs-built_in {\n  color: #81bce9;\n  font-weight: normal;\n}\n\n.hljs-regexp,\n.hljs-symbol,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n  color: #e2c696;\n}\n\n/* Language color: hue: 90; */\n\n.hljs-built_in,\n.hljs-literal {\n  color: #97bf0d;\n  font-weight: bold;\n}\n\n.hljs-bullet,\n.hljs-code,\n.hljs-addition {\n  color: #397300;\n}\n\n.hljs-class  {\n  color: #ce9d4d;\n  font-weight: bold;\n}\n\n/* Meta color: hue: 200 */\n\n.hljs-meta {\n  color: #1f7199;\n}\n\n.hljs-meta-string {\n  color: #4d99bf;\n}\n\n\n/* Misc effects */\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/isbl-editor-light.css",
    "content": "/*\n\nISBL Editor style light color schemec (c) Dmitriy Tarasov <dimatar@gmail.com>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: white;\n  color: black;\n}\n\n/* Base color: saturation 0; */\n\n.hljs-subst {\n  color: black;\n}\n\n.hljs-comment {\n  color: #555555;\n  font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-attribute,\n.hljs-selector-tag,\n.hljs-meta-keyword,\n.hljs-doctag,\n.hljs-name {\n  color: #000000;\n  font-weight: bold;\n}\n\n\n/* User color: hue: 0 */\n\n.hljs-string {\n  color: #000080;\n}\n\n.hljs-type,\n.hljs-number,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-quote,\n.hljs-template-tag,\n.hljs-deletion {\n  color: #000000;\n}\n\n.hljs-title,\n.hljs-section {\n  color: #fb2c00;\n}\n\n.hljs-title>.hljs-built_in {\n  color: #008080;\n  font-weight: normal;\n}\n\n.hljs-regexp,\n.hljs-symbol,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n  color: #5e1700;\n}\n\n/* Language color: hue: 90; */\n\n.hljs-built_in,\n.hljs-literal {\n  color: #000080;\n  font-weight: bold;\n}\n\n.hljs-bullet,\n.hljs-code,\n.hljs-addition {\n  color: #397300;\n}\n\n.hljs-class  {\n  color: #6f1C00;\n  font-weight: bold;\n}\n\n/* Meta color: hue: 200 */\n\n.hljs-meta {\n  color: #1f7199;\n}\n\n.hljs-meta-string {\n  color: #4d99bf;\n}\n\n\n/* Misc effects */\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/kimbie.dark.css",
    "content": "/*\n    Name:     Kimbie (dark)\n    Author:   Jan T. Sott\n    License:  Creative Commons Attribution-ShareAlike 4.0 Unported License\n    URL:      https://github.com/idleberg/Kimbie-highlight.js\n*/\n\n/* Kimbie Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #d6baad;\n}\n\n/* Kimbie Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-meta {\n  color: #dc3958;\n}\n\n/* Kimbie Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-deletion,\n.hljs-link {\n  color: #f79a32;\n}\n\n/* Kimbie Yellow */\n.hljs-title,\n.hljs-section,\n.hljs-attribute {\n  color: #f06431;\n}\n\n/* Kimbie Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n  color: #889b4a;\n}\n\n/* Kimbie Purple */\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-function {\n  color: #98676a;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #221a0f;\n  color: #d3af86;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/kimbie.light.css",
    "content": "/*\n    Name:     Kimbie (light)\n    Author:   Jan T. Sott\n    License:  Creative Commons Attribution-ShareAlike 4.0 Unported License\n    URL:      https://github.com/idleberg/Kimbie-highlight.js\n*/\n\n/* Kimbie Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #a57a4c;\n}\n\n/* Kimbie Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-meta {\n  color: #dc3958;\n}\n\n/* Kimbie Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-deletion,\n.hljs-link {\n  color: #f79a32;\n}\n\n/* Kimbie Yellow */\n.hljs-title,\n.hljs-section,\n.hljs-attribute {\n  color: #f06431;\n}\n\n/* Kimbie Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n  color: #889b4a;\n}\n\n/* Kimbie Purple */\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-function {\n  color: #98676a;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #fbebd4;\n  color: #84613d;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/lightfair.css",
    "content": "/*\n\nLightfair style (c) Tristian Kelly <tristian.kelly560@gmail.com>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #fff;\n}\n\n.hljs-name {\n    color:#01a3a3;\n}\n\n.hljs-tag,.hljs-meta {\n    color:#778899;\n}\n\n.hljs,\n.hljs-subst {\n    color: #444\n}\n\n.hljs-comment {\n    color: #888888\n}\n\n.hljs-keyword,\n.hljs-attribute,\n.hljs-selector-tag,\n.hljs-meta-keyword,\n.hljs-doctag,\n.hljs-name {\n    font-weight: bold\n}\n\n.hljs-type,\n.hljs-string,\n.hljs-number,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-quote,\n.hljs-template-tag,\n.hljs-deletion {\n    color: #4286f4\n}\n\n.hljs-title,\n.hljs-section {\n    color: #4286f4;\n    font-weight: bold\n}\n\n.hljs-regexp,\n.hljs-symbol,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n    color: #BC6060\n}\n\n.hljs-literal {\n    color: #62bcbc\n}\n\n.hljs-built_in,\n.hljs-bullet,\n.hljs-code,\n.hljs-addition {\n    color: #25c6c6\n}\n\n.hljs-meta-string {\n    color: #4d99bf\n}\n\n.hljs-emphasis {\n    font-style: italic\n}\n\n.hljs-strong {\n    font-weight: bold\n}\n"
  },
  {
    "path": "includes/Highlight/styles/lioshi.css",
    "content": "/* lioshi Theme */\n/* Original theme - https://github.com/lioshi/vscode-lioshi-theme */\n\n/* Comment */\n.hljs-comment {\n  color: #8d8d8d;\n}\n\n/* quote */\n.hljs-quote {\n  color: #b3c7d8;\n}\n\n/* Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-deletion {\n  color: #cc6666;\n}\n\n/* Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-subst\n.hljs-link {\n  color: #de935f;\n}\n\n/* Yellow */\n.hljs-attribute {\n  color: #f0c674;\n}\n\n/* Green */\n.hljs-string,\n.hljs-bullet,\n.hljs-params,\n.hljs-addition {\n  color: #b5bd68;\n}\n\n/* Blue */\n.hljs-title,\n.hljs-meta,\n.hljs-section {\n  color: #81a2be;\n}\n\n/* Purple */\n.hljs-selector-tag,\n.hljs-keyword,\n.hljs-function,\n.hljs-class {\n  color: #be94bb;\n}\n\n/* Purple light */\n.hljs-symbol {\n  color: #dbc4d9;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #303030;\n  color: #c5c8c6;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n\n\n\n\n"
  },
  {
    "path": "includes/Highlight/styles/magula.css",
    "content": "/*\nDescription: Magula style for highligh.js\nAuthor: Ruslan Keba <rukeba@gmail.com>\nWebsite: http://rukeba.com/\nVersion: 1.0\nDate: 2009-01-03\nMusic: Aphex Twin / Xtal\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background-color: #f4f4f4;\n  color: black;\n}\n\n.hljs-subst {\n  color: black;\n}\n\n.hljs-string,\n.hljs-title,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-attribute,\n.hljs-addition,\n.hljs-variable,\n.hljs-template-tag,\n.hljs-template-variable {\n  color: #050;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #777;\n}\n\n.hljs-number,\n.hljs-regexp,\n.hljs-literal,\n.hljs-type,\n.hljs-link {\n  color: #800;\n}\n\n.hljs-deletion,\n.hljs-meta {\n  color: #00e;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-doctag,\n.hljs-title,\n.hljs-section,\n.hljs-built_in,\n.hljs-tag,\n.hljs-name {\n  font-weight: bold;\n  color: navy;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/mono-blue.css",
    "content": "/*\n  Five-color theme from a single blue hue.\n*/\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #eaeef3;\n  color: #00193a;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-title,\n.hljs-section,\n.hljs-doctag,\n.hljs-name,\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-comment {\n  color: #738191;\n}\n\n.hljs-string,\n.hljs-title,\n.hljs-section,\n.hljs-built_in,\n.hljs-literal,\n.hljs-type,\n.hljs-addition,\n.hljs-tag,\n.hljs-quote,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #0048ab;\n}\n\n.hljs-meta,\n.hljs-subst,\n.hljs-symbol,\n.hljs-regexp,\n.hljs-attribute,\n.hljs-deletion,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link,\n.hljs-bullet {\n  color: #4c81c9;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/monokai-sublime.css",
    "content": "/*\n\nMonokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #23241f;\n}\n\n.hljs,\n.hljs-tag,\n.hljs-subst {\n  color: #f8f8f2;\n}\n\n.hljs-strong,\n.hljs-emphasis {\n  color: #a8a8a2;\n}\n\n.hljs-bullet,\n.hljs-quote,\n.hljs-number,\n.hljs-regexp,\n.hljs-literal,\n.hljs-link {\n  color: #ae81ff;\n}\n\n.hljs-code,\n.hljs-title,\n.hljs-section,\n.hljs-selector-class {\n  color: #a6e22e;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-name,\n.hljs-attr {\n  color: #f92672;\n}\n\n.hljs-symbol,\n.hljs-attribute {\n  color: #66d9ef;\n}\n\n.hljs-params,\n.hljs-class .hljs-title {\n  color: #f8f8f2;\n}\n\n.hljs-string,\n.hljs-type,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-selector-id,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-addition,\n.hljs-variable,\n.hljs-template-variable {\n  color: #e6db74;\n}\n\n.hljs-comment,\n.hljs-deletion,\n.hljs-meta {\n  color: #75715e;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/monokai.css",
    "content": "/*\nMonokai style - ported by Luigi Maselli - http://grigio.org\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #272822;\n  color: #ddd;\n}\n\n.hljs-tag,\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-strong,\n.hljs-name {\n  color: #f92672;\n}\n\n.hljs-code {\n  color: #66d9ef;\n}\n\n.hljs-class .hljs-title {\n  color: white;\n}\n\n.hljs-attribute,\n.hljs-symbol,\n.hljs-regexp,\n.hljs-link {\n  color: #bf79db;\n}\n\n.hljs-string,\n.hljs-bullet,\n.hljs-subst,\n.hljs-title,\n.hljs-section,\n.hljs-emphasis,\n.hljs-type,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-addition,\n.hljs-variable,\n.hljs-template-tag,\n.hljs-template-variable {\n  color: #a6e22e;\n}\n\n.hljs-comment,\n.hljs-quote,\n.hljs-deletion,\n.hljs-meta {\n  color: #75715e;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-doctag,\n.hljs-title,\n.hljs-section,\n.hljs-type,\n.hljs-selector-id {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/night-owl.css",
    "content": "/*\n\nNight Owl for highlight.js (c) Carl Baxter <carl@cbax.tech>\n\nAn adaptation of Sarah Drasner's Night Owl VS Code Theme \nhttps://github.com/sdras/night-owl-vscode-theme \n\nCopyright (c) 2018 Sarah Drasner\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #011627;\n  color: #d6deeb;\n}\n\n/* General Purpose */\n.hljs-keyword {\n  color: #c792ea;\n  font-style: italic;\n}\n.hljs-built_in {\n  color: #addb67;\n  font-style: italic;\n}\n.hljs-type {\n  color: #82aaff;\n}\n.hljs-literal {\n  color: #ff5874;\n}\n.hljs-number {\n  color: #F78C6C;\n}\n.hljs-regexp {\n  color: #5ca7e4;\n}\n.hljs-string {\n  color: #ecc48d;\n}\n.hljs-subst {\n  color: #d3423e;\n}\n.hljs-symbol {\n  color: #82aaff;\n}\n.hljs-class {\n  color: #ffcb8b;\n}\n.hljs-function {\n  color: #82AAFF;\n}\n.hljs-title {\n  color: #DCDCAA;\n  font-style: italic;\n}\n.hljs-params {\n  color: #7fdbca;\n}\n\n/* Meta */\n.hljs-comment {\n  color: #637777;\n  font-style: italic;\n}\n.hljs-doctag {\n  color: #7fdbca;\n}\n.hljs-meta {\n  color: #82aaff;\n}\n.hljs-meta-keyword {\n  color: #82aaff;\n}\n.hljs-meta-string {\n  color: #ecc48d;\n}\n\n/* Tags, attributes, config */\n.hljs-section {\n  color: #82b1ff;\n}\n.hljs-tag,\n.hljs-name,\n.hljs-builtin-name {\n  color: #7fdbca;\n}\n.hljs-attr {\n  color: #7fdbca;\n}\n.hljs-attribute {\n  color: #80cbc4;\n}\n.hljs-variable {\n  color: #addb67;\n}\n\n/* Markup */\n.hljs-bullet {\n  color: #d9f5dd;\n}\n.hljs-code {\n  color: #80CBC4;\n}\n.hljs-emphasis {\n  color: #c792ea;\n  font-style: italic;\n}\n.hljs-strong {\n  color: #addb67;\n  font-weight: bold;\n}\n.hljs-formula {\n  color: #c792ea;\n}\n.hljs-link {\n  color: #ff869a;\n}\n.hljs-quote {\n  color: #697098;\n  font-style: italic;\n}\n\n/* CSS */\n.hljs-selector-tag {\n  color: #ff6363;\n}\n\n.hljs-selector-id {\n  color: #fad430;\n}\n\n.hljs-selector-class {\n  color: #addb67;\n  font-style: italic;\n}\n\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n  color: #c792ea;\n  font-style: italic;\n}\n\n/* Templates */\n.hljs-template-tag {\n  color: #c792ea;\n}\n.hljs-template-variable {\n  color: #addb67;\n}\n\n/* diff */\n.hljs-addition {\n  color: #addb67ff;\n  font-style: italic;\n}\n\n.hljs-deletion {\n  color: #EF535090;\n  font-style: italic;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/nnfx-dark.css",
    "content": "/**\n * nnfx dark - a theme inspired by Netscape Navigator/Firefox\n *\n * @version 1.0.0\n * @author (c) 2020 Jim Mason <jmason@ibinx.com>\n * @license https://creativecommons.org/licenses/by-sa/4.0  CC BY-SA 4.0\n */\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #333;\n  color: #fff;\n}\n\n.xml .hljs-meta {\n  font-weight: bold;\n  font-style: italic;\n  color: #69f;\n}\n\n.hljs-comment,\n.hljs-quote {\n  font-style: italic;\n  color: #9c6;\n}\n\n.hljs-name,\n.hljs-keyword {\n  color: #a7a;\n}\n\n.hljs-name,\n.hljs-attr {\n  font-weight: bold;\n}\n\n.hljs-string {\n  font-weight: normal;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n  color: #588;\n}\n\n.hljs-code,\n.hljs-string,\n.hljs-meta-string,\n.hljs-number,\n.hljs-regexp,\n.hljs-link {\n  color: #bce;\n}\n\n.hljs-title,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-built_in,\n.hljs-builtin-name {\n  color: #d40;\n}\n\n.hljs-section,\n.hljs-meta {\n  color: #a85;\n}\n\n.hljs-class .hljs-title,\n.hljs-type {\n  color: #96c;\n}\n\n.hljs-function .hljs-title,\n.hljs-attr,\n.hljs-subst {\n  color: #fff;\n}\n\n.hljs-formula {\n  background-color: #eee;\n  font-style: italic;\n}\n\n.hljs-addition {\n  background-color: #797;\n}\n\n.hljs-deletion {\n  background-color: #c99;\n}\n\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #964;\n}\n\n.hljs-doctag,\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/nnfx.css",
    "content": "/**\n * nnfx - a theme inspired by Netscape Navigator/Firefox\n *\n * @version 1.0.0\n * @author (c) 2020 Jim Mason <jmason@ibinx.com>\n * @license https://creativecommons.org/licenses/by-sa/4.0  CC BY-SA 4.0\n */\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #fff;\n  color: #000;\n}\n\n.xml .hljs-meta {\n  font-weight: bold;\n  font-style: italic;\n  color: #48b;\n}\n\n.hljs-comment,\n.hljs-quote {\n  font-style: italic;\n  color: #070;\n}\n\n.hljs-name,\n.hljs-keyword {\n  color: #808;\n}\n\n.hljs-name,\n.hljs-attr {\n  font-weight: bold;\n}\n\n.hljs-string {\n  font-weight: normal;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n  color: #477;\n}\n\n.hljs-code,\n.hljs-string,\n.hljs-meta-string,\n.hljs-number,\n.hljs-regexp,\n.hljs-link {\n  color: #00f;\n}\n\n.hljs-title,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-built_in,\n.hljs-builtin-name {\n  color: #f40;\n}\n\n.hljs-section,\n.hljs-meta {\n  color: #642;\n}\n\n.hljs-class .hljs-title,\n.hljs-type {\n  color: #639;\n}\n\n.hljs-function .hljs-title,\n.hljs-attr,\n.hljs-subst {\n  color: #000;\n}\n\n.hljs-formula {\n  background-color: #eee;\n  font-style: italic;\n}\n\n.hljs-addition {\n  background-color: #beb;\n}\n\n.hljs-deletion {\n  background-color: #fbb;\n}\n\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #964;\n}\n\n.hljs-doctag,\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/nord.css",
    "content": "/*\n * Copyright (c) 2017-present Arctic Ice Studio <development@arcticicestudio.com>\n * Copyright (c) 2017-present Sven Greb <development@svengreb.de>\n *\n * Project:    Nord highlight.js\n * Version:    0.1.0\n * Repository: https://github.com/arcticicestudio/nord-highlightjs\n * License:    MIT\n * References:\n *   https://github.com/arcticicestudio/nord\n */\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #2E3440;\n}\n\n.hljs,\n.hljs-subst {\n  color: #D8DEE9;\n}\n\n.hljs-selector-tag {\n  color: #81A1C1;\n}\n\n.hljs-selector-id {\n  color: #8FBCBB;\n  font-weight: bold;\n}\n\n.hljs-selector-class {\n  color: #8FBCBB;\n}\n\n.hljs-selector-attr {\n  color: #8FBCBB;\n}\n\n.hljs-selector-pseudo {\n  color: #88C0D0;\n}\n\n.hljs-addition {\n  background-color: rgba(163, 190, 140, 0.5);\n}\n\n.hljs-deletion {\n  background-color: rgba(191, 97, 106, 0.5);\n}\n\n.hljs-built_in,\n.hljs-type {\n  color: #8FBCBB;\n}\n\n.hljs-class {\n  color: #8FBCBB;\n}\n\n.hljs-function {\n  color: #88C0D0;\n}\n\n.hljs-function > .hljs-title {\n  color: #88C0D0;\n}\n\n.hljs-keyword,\n.hljs-literal,\n.hljs-symbol {\n  color: #81A1C1;\n}\n\n.hljs-number {\n  color: #B48EAD;\n}\n\n.hljs-regexp {\n  color: #EBCB8B;\n}\n\n.hljs-string {\n  color: #A3BE8C;\n}\n\n.hljs-title {\n  color: #8FBCBB;\n}\n\n.hljs-params {\n  color: #D8DEE9;\n}\n\n.hljs-bullet {\n  color: #81A1C1;\n}\n\n.hljs-code {\n  color: #8FBCBB;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-formula {\n  color: #8FBCBB;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-link:hover {\n  text-decoration: underline;\n}\n\n.hljs-quote {\n  color: #4C566A;\n}\n\n.hljs-comment {\n  color: #4C566A;\n}\n\n.hljs-doctag {\n  color: #8FBCBB;\n}\n\n.hljs-meta,\n.hljs-meta-keyword {\n  color: #5E81AC;\n}\n\n.hljs-meta-string {\n  color: #A3BE8C;\n}\n\n.hljs-attr {\n  color: #8FBCBB;\n}\n\n.hljs-attribute {\n  color: #D8DEE9;\n}\n\n.hljs-builtin-name {\n  color: #81A1C1;\n}\n\n.hljs-name {\n  color: #81A1C1;\n}\n\n.hljs-section {\n  color: #88C0D0;\n}\n\n.hljs-tag {\n  color: #81A1C1;\n}\n\n.hljs-variable {\n  color: #D8DEE9;\n}\n\n.hljs-template-variable {\n  color: #D8DEE9;\n}\n\n.hljs-template-tag {\n  color: #5E81AC;\n}\n\n.abnf .hljs-attribute {\n  color: #88C0D0;\n}\n\n.abnf .hljs-symbol {\n  color: #EBCB8B;\n}\n\n.apache .hljs-attribute {\n  color: #88C0D0;\n}\n\n.apache .hljs-section {\n  color: #81A1C1;\n}\n\n.arduino .hljs-built_in {\n  color: #88C0D0;\n}\n\n.aspectj .hljs-meta {\n  color: #D08770;\n}\n\n.aspectj > .hljs-title {\n  color: #88C0D0;\n}\n\n.bnf .hljs-attribute {\n  color: #8FBCBB;\n}\n\n.clojure .hljs-name {\n  color: #88C0D0;\n}\n\n.clojure .hljs-symbol {\n  color: #EBCB8B;\n}\n\n.coq .hljs-built_in {\n  color: #88C0D0;\n}\n\n.cpp .hljs-meta-string {\n  color: #8FBCBB;\n}\n\n.css .hljs-built_in {\n  color: #88C0D0;\n}\n\n.css .hljs-keyword {\n  color: #D08770;\n}\n\n.diff .hljs-meta {\n  color: #8FBCBB;\n}\n\n.ebnf .hljs-attribute {\n  color: #8FBCBB;\n}\n\n.glsl .hljs-built_in {\n  color: #88C0D0;\n}\n\n.groovy .hljs-meta:not(:first-child) {\n  color: #D08770;\n}\n\n.haxe .hljs-meta {\n  color: #D08770;\n}\n\n.java .hljs-meta {\n  color: #D08770;\n}\n\n.ldif .hljs-attribute {\n  color: #8FBCBB;\n}\n\n.lisp .hljs-name {\n  color: #88C0D0;\n}\n\n.lua .hljs-built_in {\n  color: #88C0D0;\n}\n\n.moonscript .hljs-built_in {\n  color: #88C0D0;\n}\n\n.nginx .hljs-attribute {\n  color: #88C0D0;\n}\n\n.nginx .hljs-section {\n  color: #5E81AC;\n}\n\n.pf .hljs-built_in {\n  color: #88C0D0;\n}\n\n.processing .hljs-built_in {\n  color: #88C0D0;\n}\n\n.scss .hljs-keyword {\n  color: #81A1C1;\n}\n\n.stylus .hljs-keyword {\n  color: #81A1C1;\n}\n\n.swift .hljs-meta {\n  color: #D08770;\n}\n\n.vim .hljs-built_in {\n  color: #88C0D0;\n  font-style: italic;\n}\n\n.yaml .hljs-meta {\n  color: #D08770;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/obsidian.css",
    "content": "/**\n * Obsidian style\n * ported by Alexander Marenin (http://github.com/ioncreature)\n */\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #282b2e;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-selector-id {\n  color: #93c763;\n}\n\n.hljs-number {\n  color: #ffcd22;\n}\n\n.hljs {\n  color: #e0e2e4;\n}\n\n.hljs-attribute {\n  color: #668bb0;\n}\n\n.hljs-code,\n.hljs-class .hljs-title,\n.hljs-section {\n  color: white;\n}\n\n.hljs-regexp,\n.hljs-link {\n  color: #d39745;\n}\n\n.hljs-meta {\n  color: #557182;\n}\n\n.hljs-tag,\n.hljs-name,\n.hljs-bullet,\n.hljs-subst,\n.hljs-emphasis,\n.hljs-type,\n.hljs-built_in,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-addition,\n.hljs-variable,\n.hljs-template-tag,\n.hljs-template-variable {\n  color: #8cbbad;\n}\n\n.hljs-string,\n.hljs-symbol {\n  color: #ec7600;\n}\n\n.hljs-comment,\n.hljs-quote,\n.hljs-deletion {\n  color: #818e96;\n}\n\n.hljs-selector-class {\n  color: #A082BD\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-doctag,\n.hljs-title,\n.hljs-section,\n.hljs-type,\n.hljs-name,\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/ocean.css",
    "content": "/* Ocean Dark Theme */\n/* https://github.com/gavsiu */\n/* Original theme - https://github.com/chriskempson/base16 */\n\n/* Ocean Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #65737e;\n}\n\n/* Ocean Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-deletion {\n  color: #bf616a;\n}\n\n/* Ocean Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-meta,\n.hljs-link {\n  color: #d08770;\n}\n\n/* Ocean Yellow */\n.hljs-attribute {\n  color: #ebcb8b;\n}\n\n/* Ocean Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n  color: #a3be8c;\n}\n\n/* Ocean Blue */\n.hljs-title,\n.hljs-section {\n  color: #8fa1b3;\n}\n\n/* Ocean Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #b48ead;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #2b303b;\n  color: #c0c5ce;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/paraiso-dark.css",
    "content": "/*\n    Paraíso (dark)\n    Created by Jan T. Sott (http://github.com/idleberg)\n    Inspired by the art of Rubens LP (http://www.rubenslp.com.br)\n*/\n\n/* Paraíso Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #8d8687;\n}\n\n/* Paraíso Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-link,\n.hljs-meta {\n  color: #ef6155;\n}\n\n/* Paraíso Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-deletion {\n  color: #f99b15;\n}\n\n/* Paraíso Yellow */\n.hljs-title,\n.hljs-section,\n.hljs-attribute {\n  color: #fec418;\n}\n\n/* Paraíso Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n  color: #48b685;\n}\n\n/* Paraíso Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #815ba4;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #2f1e2e;\n  color: #a39e9b;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/paraiso-light.css",
    "content": "/*\n    Paraíso (light)\n    Created by Jan T. Sott (http://github.com/idleberg)\n    Inspired by the art of Rubens LP (http://www.rubenslp.com.br)\n*/\n\n/* Paraíso Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #776e71;\n}\n\n/* Paraíso Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-link,\n.hljs-meta {\n  color: #ef6155;\n}\n\n/* Paraíso Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-deletion {\n  color: #f99b15;\n}\n\n/* Paraíso Yellow */\n.hljs-title,\n.hljs-section,\n.hljs-attribute {\n  color: #fec418;\n}\n\n/* Paraíso Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n  color: #48b685;\n}\n\n/* Paraíso Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #815ba4;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #e7e9db;\n  color: #4f424c;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/pojoaque.css",
    "content": "/*\n\nPojoaque Style by Jason Tate\nhttp://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html\nBased on Solarized Style from http://ethanschoonover.com/solarized\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  color: #dccf8f;\n  background: url(./pojoaque.jpg) repeat scroll left top #181914;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #586e75;\n  font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-addition {\n  color: #b64926;\n}\n\n.hljs-number,\n.hljs-string,\n.hljs-doctag,\n.hljs-regexp {\n  color: #468966;\n}\n\n.hljs-title,\n.hljs-section,\n.hljs-built_in,\n.hljs-name {\n  color: #ffb03b;\n}\n\n.hljs-variable,\n.hljs-template-variable,\n.hljs-class .hljs-title,\n.hljs-type,\n.hljs-tag {\n  color: #b58900;\n}\n\n.hljs-attribute {\n  color: #b89859;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-link,\n.hljs-subst,\n.hljs-meta {\n  color: #cb4b16;\n}\n\n.hljs-deletion {\n  color: #dc322f;\n}\n\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #d3a60c;\n}\n\n.hljs-formula {\n  background: #073642;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/purebasic.css",
    "content": "/*\n\nPureBASIC native IDE style ( version 1.0 - April 2016 )\n\nby Tristano Ajmone <tajmone@gmail.com>\n\nPublic Domain\n\nNOTE_1:\tPureBASIC code syntax highlighting only applies the following classes:\n\t\t\t.hljs-comment\n\t\t\t.hljs-function\n\t\t\t.hljs-keywords\n\t\t\t.hljs-string\n\t\t\t.hljs-symbol\n\n\t\tOther classes are added here for the benefit of styling other languages with the look and feel of PureBASIC native IDE style.\n\t\tIf you need to customize a stylesheet for PureBASIC only, remove all non-relevant classes -- PureBASIC-related classes are followed by\n\t\ta \"--- used for PureBASIC ... ---\" comment on same line.\n\nNOTE_2:\tColor names provided in comments were derived using \"Name that Color\" online tool:\n\t\t\thttp://chir.ag/projects/name-that-color\n*/\n\n.hljs {\n\tdisplay: block;\n\toverflow-x: auto;\n\tpadding: 0.5em;\n\tbackground: #FFFFDF; /* Half and Half (approx.) */\n/* --- Uncomment to add PureBASIC native IDE styled font!\n\tfont-family: Consolas;\n*/\n}\n\n.hljs, /* --- used for PureBASIC base color --- */\n.hljs-type,  /* --- used for PureBASIC Procedures return type --- */\n.hljs-function, /* --- used for wrapping PureBASIC Procedures definitions --- */\n.hljs-name,\n.hljs-number,\n.hljs-attr,\n.hljs-params,\n.hljs-subst {\n\tcolor: #000000; /* Black */\n}\n\n.hljs-comment, /* --- used for PureBASIC Comments --- */\n.hljs-regexp,\n.hljs-section,\n.hljs-selector-pseudo,\n.hljs-addition {\n\tcolor: #00AAAA; /* Persian Green (approx.) */\n}\n\n.hljs-title, /* --- used for PureBASIC Procedures Names --- */\n.hljs-tag,\n.hljs-variable,\n.hljs-code  {\n\tcolor: #006666; /* Blue Stone (approx.) */\n}\n\n.hljs-keyword, /* --- used for PureBASIC Keywords --- */\n.hljs-class,\n.hljs-meta-keyword,\n.hljs-selector-class,\n.hljs-built_in,\n.hljs-builtin-name {\n\tcolor: #006666; /* Blue Stone (approx.) */\n\tfont-weight: bold;\n}\n\n.hljs-string, /* --- used for PureBASIC Strings --- */\n.hljs-selector-attr {\n\tcolor: #0080FF; /* Azure Radiance (approx.) */\n}\n\n.hljs-symbol, /* --- used for PureBASIC Constants --- */\n.hljs-link,\n.hljs-deletion,\n.hljs-attribute {\n\tcolor: #924B72; /* Cannon Pink (approx.) */\n}\n\n.hljs-meta,\n.hljs-literal,\n.hljs-selector-id {\n\tcolor: #924B72; /* Cannon Pink (approx.) */\n\tfont-weight: bold;\n}\n\n.hljs-strong,\n.hljs-name {\n\tfont-weight: bold;\n}\n\n.hljs-emphasis {\n\tfont-style: italic;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/qtcreator_dark.css",
    "content": "/*\n\nQt Creator dark color scheme\n\n*/\n\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #000000;\n}\n\n.hljs,\n.hljs-subst,\n.hljs-tag,\n.hljs-title {\n  color: #aaaaaa;\n}\n\n.hljs-strong,\n.hljs-emphasis {\n  color: #a8a8a2;\n}\n\n.hljs-bullet,\n.hljs-quote,\n.hljs-number,\n.hljs-regexp,\n.hljs-literal {\n  color: #ff55ff;\n}\n\n.hljs-code\n.hljs-selector-class {\n  color: #aaaaff;\n}\n\n.hljs-emphasis,\n.hljs-stronge,\n.hljs-type {\n  font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-function,\n.hljs-section,\n.hljs-symbol,\n.hljs-name {\n  color: #ffff55;\n}\n\n.hljs-attribute {\n  color: #ff5555;\n}\n\n.hljs-variable,\n.hljs-params,\n.hljs-class .hljs-title {\n  color: #8888ff;\n}\n\n.hljs-string,\n.hljs-selector-id,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-type,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-addition,\n.hljs-link {\n  color: #ff55ff;\n}\n\n.hljs-comment,\n.hljs-meta,\n.hljs-deletion {\n  color: #55ffff;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/qtcreator_light.css",
    "content": "/*\n\nQt Creator light color scheme\n\n*/\n\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #ffffff;\n}\n\n.hljs,\n.hljs-subst,\n.hljs-tag,\n.hljs-title {\n  color: #000000;\n}\n\n.hljs-strong,\n.hljs-emphasis {\n  color: #000000;\n}\n\n.hljs-bullet,\n.hljs-quote,\n.hljs-number,\n.hljs-regexp,\n.hljs-literal {\n  color: #000080;\n}\n\n.hljs-code\n.hljs-selector-class {\n  color: #800080;\n}\n\n.hljs-emphasis,\n.hljs-stronge,\n.hljs-type {\n  font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-function,\n.hljs-section,\n.hljs-symbol,\n.hljs-name {\n  color: #808000;\n}\n\n.hljs-attribute {\n  color: #800000;\n}\n\n.hljs-variable,\n.hljs-params,\n.hljs-class .hljs-title {\n  color: #0055AF;\n}\n\n.hljs-string,\n.hljs-selector-id,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-type,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-addition,\n.hljs-link {\n  color: #008000;\n}\n\n.hljs-comment,\n.hljs-meta,\n.hljs-deletion {\n  color: #008000;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/railscasts.css",
    "content": "/*\n\nRailscasts-like style (c) Visoft, Inc. (Damien White)\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #232323;\n  color: #e6e1dc;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #bc9458;\n  font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #c26230;\n}\n\n.hljs-string,\n.hljs-number,\n.hljs-regexp,\n.hljs-variable,\n.hljs-template-variable {\n  color: #a5c261;\n}\n\n.hljs-subst {\n  color: #519f50;\n}\n\n.hljs-tag,\n.hljs-name {\n  color: #e8bf6a;\n}\n\n.hljs-type {\n  color: #da4939;\n}\n\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-attr,\n.hljs-link {\n  color: #6d9cbe;\n}\n\n.hljs-params {\n  color: #d0d0ff;\n}\n\n.hljs-attribute {\n  color: #cda869;\n}\n\n.hljs-meta {\n  color: #9b859d;\n}\n\n.hljs-title,\n.hljs-section {\n  color: #ffc66d;\n}\n\n.hljs-addition {\n  background-color: #144212;\n  color: #e6e1dc;\n  display: inline-block;\n  width: 100%;\n}\n\n.hljs-deletion {\n  background-color: #600;\n  color: #e6e1dc;\n  display: inline-block;\n  width: 100%;\n}\n\n.hljs-selector-class {\n  color: #9b703f;\n}\n\n.hljs-selector-id {\n  color: #8b98ab;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-link {\n  text-decoration: underline;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/rainbow.css",
    "content": "/*\n\nStyle with support for rainbow parens\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #474949;\n  color: #d1d9e1;\n}\n\n\n.hljs-comment,\n.hljs-quote {\n  color: #969896;\n  font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-type,\n.hljs-addition {\n  color: #cc99cc;\n}\n\n.hljs-number,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n  color: #f99157;\n}\n\n.hljs-string,\n.hljs-doctag,\n.hljs-regexp {\n  color: #8abeb7;\n}\n\n.hljs-title,\n.hljs-name,\n.hljs-section,\n.hljs-built_in {\n  color: #b5bd68;\n}\n\n.hljs-variable,\n.hljs-template-variable,\n.hljs-selector-id,\n.hljs-class .hljs-title {\n   color: #ffcc66;\n}\n\n.hljs-section,\n.hljs-name,\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-subst,\n.hljs-meta,\n.hljs-link {\n  color: #f99157;\n}\n\n.hljs-deletion {\n  color: #dc322f;\n}\n\n.hljs-formula {\n  background: #eee8d5;\n}\n\n.hljs-attr,\n.hljs-attribute {\n  color: #81a2be;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/routeros.css",
    "content": "/*\n\n highlight.js style for Microtik RouterOS script\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #F0F0F0;\n}\n\n/* Base color: saturation 0; */\n\n.hljs,\n.hljs-subst {\n  color: #444;\n}\n\n.hljs-comment {\n  color: #888888;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-meta-keyword,\n.hljs-doctag,\n.hljs-name {\n  font-weight: bold;\n}\n\n.hljs-attribute {\n  color: #0E9A00;\n}    \n\n.hljs-function {\n  color: #99069A;\n}\n\n.hljs-builtin-name {\n  color: #99069A;\n}\n\n/* User color: hue: 0 */\n\n.hljs-type,\n.hljs-string,\n.hljs-number,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-quote,\n.hljs-template-tag,\n.hljs-deletion {\n  color: #880000;\n}\n\n.hljs-title,\n.hljs-section {\n  color: #880000;\n  font-weight: bold;\n}\n\n.hljs-regexp,\n.hljs-symbol,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n  color: #BC6060;\n}\n\n\n/* Language color: hue: 90; */\n\n.hljs-literal {\n  color: #78A960;\n}\n\n.hljs-built_in,\n.hljs-bullet,\n.hljs-code,\n.hljs-addition {\n  color: #0C9A9A;\n}\n\n\n/* Meta color: hue: 200 */\n\n.hljs-meta {\n  color: #1f7199;\n}\n\n.hljs-meta-string {\n  color: #4d99bf;\n}\n\n\n/* Misc effects */\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/school-book.css",
    "content": "/*\n\nSchool Book style from goldblog.com.ua (c) Zaripov Yura <yur4ik7@ukr.net>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 15px 0.5em 0.5em 30px;\n  font-size: 11px;\n  line-height:16px;\n  background:#f6f6ae url(./school-book.png);\n  border-top: solid 2px #d2e8b9;\n  border-bottom: solid 1px #d2e8b9;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal {\n  color:#005599;\n  font-weight:bold;\n}\n\n.hljs,\n.hljs-subst {\n  color: #3e5915;\n}\n\n.hljs-string,\n.hljs-title,\n.hljs-section,\n.hljs-type,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-attribute,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-addition,\n.hljs-variable,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-link {\n  color: #2c009f;\n}\n\n.hljs-comment,\n.hljs-quote,\n.hljs-deletion,\n.hljs-meta {\n  color: #e60415;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-doctag,\n.hljs-title,\n.hljs-section,\n.hljs-type,\n.hljs-name,\n.hljs-selector-id,\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/shades-of-purple.css",
    "content": "/**\n * Shades of Purple Theme — for Highlightjs.\n *\n * @author (c) Ahmad Awais <https://twitter.com/mrahmadawais/>\n * @link GitHub Repo → https://github.com/ahmadawais/Shades-of-Purple-HighlightJS\n * @version 1.5.0\n */\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  /* Custom font is optional */\n  /* font-family: 'Operator Mono', 'Fira Code', 'Menlo', 'Monaco', 'Courier New', 'monospace';  */\n  padding: 0.5em;\n  background: #2d2b57;\n  font-weight: normal;\n}\n\n.hljs-title {\n  color: #fad000;\n  font-weight: normal;\n}\n\n.hljs-name {\n  color: #a1feff;\n}\n\n.hljs-tag {\n  color: #ffffff;\n}\n\n.hljs-attr {\n  color: #f8d000;\n  font-style: italic;\n}\n\n.hljs-built_in,\n.hljs-selector-tag,\n.hljs-section {\n  color: #fb9e00;\n}\n\n.hljs-keyword {\n  color: #fb9e00;\n}\n\n.hljs,\n.hljs-subst {\n  color: #e3dfff;\n}\n\n.hljs-string,\n.hljs-attribute,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition,\n.hljs-code,\n.hljs-regexp,\n.hljs-selector-class,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-template-tag,\n.hljs-quote,\n.hljs-deletion {\n  color: #4cd213;\n}\n\n.hljs-meta,\n.hljs-meta-string {\n  color: #fb9e00;\n}\n\n.hljs-comment {\n  color: #ac65ff;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-name,\n.hljs-strong {\n  font-weight: normal;\n}\n\n.hljs-literal,\n.hljs-number {\n  color: #fa658d;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/solarized-dark.css",
    "content": "/*\n\nOrginal Style from ethanschoonover.com/solarized (c) Jeremy Hull <sourdrums@gmail.com>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #002b36;\n  color: #839496;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #586e75;\n}\n\n/* Solarized Green */\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-addition {\n  color: #859900;\n}\n\n/* Solarized Cyan */\n.hljs-number,\n.hljs-string,\n.hljs-meta .hljs-meta-string,\n.hljs-literal,\n.hljs-doctag,\n.hljs-regexp {\n  color: #2aa198;\n}\n\n/* Solarized Blue */\n.hljs-title,\n.hljs-section,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #268bd2;\n}\n\n/* Solarized Yellow */\n.hljs-attribute,\n.hljs-attr,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-class .hljs-title,\n.hljs-type {\n  color: #b58900;\n}\n\n/* Solarized Orange */\n.hljs-symbol,\n.hljs-bullet,\n.hljs-subst,\n.hljs-meta,\n.hljs-meta .hljs-keyword,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-link {\n  color: #cb4b16;\n}\n\n/* Solarized Red */\n.hljs-built_in,\n.hljs-deletion {\n  color: #dc322f;\n}\n\n.hljs-formula {\n  background: #073642;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/solarized-light.css",
    "content": "/*\n\nOrginal Style from ethanschoonover.com/solarized (c) Jeremy Hull <sourdrums@gmail.com>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #fdf6e3;\n  color: #657b83;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #93a1a1;\n}\n\n/* Solarized Green */\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-addition {\n  color: #859900;\n}\n\n/* Solarized Cyan */\n.hljs-number,\n.hljs-string,\n.hljs-meta .hljs-meta-string,\n.hljs-literal,\n.hljs-doctag,\n.hljs-regexp {\n  color: #2aa198;\n}\n\n/* Solarized Blue */\n.hljs-title,\n.hljs-section,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #268bd2;\n}\n\n/* Solarized Yellow */\n.hljs-attribute,\n.hljs-attr,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-class .hljs-title,\n.hljs-type {\n  color: #b58900;\n}\n\n/* Solarized Orange */\n.hljs-symbol,\n.hljs-bullet,\n.hljs-subst,\n.hljs-meta,\n.hljs-meta .hljs-keyword,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-link {\n  color: #cb4b16;\n}\n\n/* Solarized Red */\n.hljs-built_in,\n.hljs-deletion {\n  color: #dc322f;\n}\n\n.hljs-formula {\n  background: #eee8d5;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/srcery.css",
    "content": "/*\nDescription: Srcery dark color scheme for highlight.js\nAuthor: Chen Bin <chen.bin@gmail.com>\nWebsite: https://srcery-colors.github.io/\nDate: 2020-04-06\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #1C1B19;\n  color: #FCE8C3;\n}\n\n.hljs-strong,\n.hljs-emphasis {\n  color: #918175;\n}\n\n.hljs-bullet,\n.hljs-quote,\n.hljs-link,\n.hljs-number,\n.hljs-regexp,\n.hljs-literal {\n  color: #FF5C8F;\n}\n\n.hljs-code,\n.hljs-selector-class {\n  color: #68A8E4\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-section,\n.hljs-attribute,\n.hljs-variable {\n  color: #EF2F27;\n}\n\n.hljs-name,\n.hljs-title {\n  color: #FBB829;\n}\n\n.hljs-type,\n.hljs-params {\n  color: #0AAEB3;\n}\n\n.hljs-string {\n  color: #98BC37;\n}\n\n.hljs-subst,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-symbol,\n.hljs-selector-id,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-addition {\n  color: #C07ABE;\n}\n\n.hljs-comment,\n.hljs-deletion,\n.hljs-meta {\n  color: #918175;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/stackoverflow-dark.css",
    "content": "/*!\n * StackOverflow.com dark style\n *\n * @stackoverflow/stacks v0.56.0\n * https://github.com/StackExchange/Stacks\n */\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  color: #ffffff;\n  background: #1c1b1b;\n}\n\n.hljs-comment {\n  color: #999999;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-meta-keyword,\n.hljs-doctag,\n.hljs-section,\n.hljs-selector-class,\n.hljs-meta,\n.hljs-selector-pseudo,\n.hljs-attr {\n  color: #88aece;\n}\n\n.hljs-attribute {\n  color: v#c59bc1;\n}\n\n.hljs-name,\n.hljs-type,\n.hljs-number,\n.hljs-selector-id,\n.hljs-quote,\n.hljs-template-tag,\n.hljs-built_in,\n.hljs-title,\n.hljs-literal {\n  color: #f08d49;\n}\n\n.hljs-string,\n.hljs-regexp,\n.hljs-symbol,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link,\n.hljs-selector-attr,\n.hljs-meta-string {\n  color: #b5bd68;\n}\n\n.hljs-bullet,\n.hljs-code {\n  color: #cccccc;\n}\n\n.hljs-deletion {\n  color: #de7176;\n}\n\n.hljs-addition {\n  color: #76c490;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/stackoverflow-light.css",
    "content": "/*!\n * StackOverflow.com light style\n *\n * @stackoverflow/stacks v0.56.0\n * https://github.com/StackExchange/Stacks\n */\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  color: #2f3337;\n  background: #f6f6f6;\n}\n\n.hljs-comment {\n  color: #656e77;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-meta-keyword,\n.hljs-doctag,\n.hljs-section,\n.hljs-selector-class,\n.hljs-meta,\n.hljs-selector-pseudo,\n.hljs-attr {\n  color: #015692;\n}\n\n.hljs-attribute {\n  color: #803378;\n}\n\n.hljs-name,\n.hljs-type,\n.hljs-number,\n.hljs-selector-id,\n.hljs-quote,\n.hljs-template-tag,\n.hljs-built_in,\n.hljs-title,\n.hljs-literal {\n  color: #b75501;\n}\n\n.hljs-string,\n.hljs-regexp,\n.hljs-symbol,\n.hljs-variable,\n.hljs-template-variable,\n.hljs-link,\n.hljs-selector-attr,\n.hljs-meta-string {\n  color: #54790d;\n}\n\n.hljs-bullet,\n.hljs-code {\n  color: #535a60;\n}\n\n.hljs-deletion {\n  color: #c02d2e;\n}\n\n.hljs-addition {\n  color: #2f6f44;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/sunburst.css",
    "content": "/*\n\nSunburst-like style (c) Vasily Polovnyov <vast@whiteants.net>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #000;\n  color: #f8f8f8;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #aeaeae;\n  font-style: italic;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-type {\n  color: #e28964;\n}\n\n.hljs-string {\n  color: #65b042;\n}\n\n.hljs-subst {\n  color: #daefa3;\n}\n\n.hljs-regexp,\n.hljs-link {\n  color: #e9c062;\n}\n\n.hljs-title,\n.hljs-section,\n.hljs-tag,\n.hljs-name {\n  color: #89bdff;\n}\n\n.hljs-class .hljs-title,\n.hljs-doctag {\n  text-decoration: underline;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-number {\n  color: #3387cc;\n}\n\n.hljs-params,\n.hljs-variable,\n.hljs-template-variable {\n  color: #3e87e3;\n}\n\n.hljs-attribute {\n  color: #cda869;\n}\n\n.hljs-meta {\n  color: #8996a8;\n}\n\n.hljs-formula {\n  background-color: #0e2231;\n  color: #f8f8f8;\n  font-style: italic;\n}\n\n.hljs-addition {\n  background-color: #253b22;\n  color: #f8f8f8;\n}\n\n.hljs-deletion {\n  background-color: #420e09;\n  color: #f8f8f8;\n}\n\n.hljs-selector-class {\n  color: #9b703f;\n}\n\n.hljs-selector-id {\n  color: #8b98ab;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/tomorrow-night-blue.css",
    "content": "/* Tomorrow Night Blue Theme */\n/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */\n/* Original theme - https://github.com/chriskempson/tomorrow-theme */\n/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */\n\n/* Tomorrow Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #7285b7;\n}\n\n/* Tomorrow Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-deletion {\n  color: #ff9da4;\n}\n\n/* Tomorrow Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-meta,\n.hljs-link {\n  color: #ffc58f;\n}\n\n/* Tomorrow Yellow */\n.hljs-attribute {\n  color: #ffeead;\n}\n\n/* Tomorrow Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n  color: #d1f1a9;\n}\n\n/* Tomorrow Blue */\n.hljs-title,\n.hljs-section {\n  color: #bbdaff;\n}\n\n/* Tomorrow Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #ebbbff;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #002451;\n  color: white;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/tomorrow-night-bright.css",
    "content": "/* Tomorrow Night Bright Theme */\n/* Original theme - https://github.com/chriskempson/tomorrow-theme */\n/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */\n\n/* Tomorrow Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #969896;\n}\n\n/* Tomorrow Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-deletion {\n  color: #d54e53;\n}\n\n/* Tomorrow Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-meta,\n.hljs-link {\n  color: #e78c45;\n}\n\n/* Tomorrow Yellow */\n.hljs-attribute {\n  color: #e7c547;\n}\n\n/* Tomorrow Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n  color: #b9ca4a;\n}\n\n/* Tomorrow Blue */\n.hljs-title,\n.hljs-section {\n  color: #7aa6da;\n}\n\n/* Tomorrow Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #c397d8;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: black;\n  color: #eaeaea;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/tomorrow-night-eighties.css",
    "content": "/* Tomorrow Night Eighties Theme */\n/* Original theme - https://github.com/chriskempson/tomorrow-theme */\n/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */\n\n/* Tomorrow Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #999999;\n}\n\n/* Tomorrow Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-deletion {\n  color: #f2777a;\n}\n\n/* Tomorrow Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-meta,\n.hljs-link {\n  color: #f99157;\n}\n\n/* Tomorrow Yellow */\n.hljs-attribute {\n  color: #ffcc66;\n}\n\n/* Tomorrow Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n  color: #99cc99;\n}\n\n/* Tomorrow Blue */\n.hljs-title,\n.hljs-section {\n  color: #6699cc;\n}\n\n/* Tomorrow Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #cc99cc;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #2d2d2d;\n  color: #cccccc;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/tomorrow-night.css",
    "content": "/* Tomorrow Night Theme */\n/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */\n/* Original theme - https://github.com/chriskempson/tomorrow-theme */\n/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */\n\n/* Tomorrow Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #969896;\n}\n\n/* Tomorrow Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-deletion {\n  color: #cc6666;\n}\n\n/* Tomorrow Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-meta,\n.hljs-link {\n  color: #de935f;\n}\n\n/* Tomorrow Yellow */\n.hljs-attribute {\n  color: #f0c674;\n}\n\n/* Tomorrow Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n  color: #b5bd68;\n}\n\n/* Tomorrow Blue */\n.hljs-title,\n.hljs-section {\n  color: #81a2be;\n}\n\n/* Tomorrow Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #b294bb;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: #1d1f21;\n  color: #c5c8c6;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/tomorrow.css",
    "content": "/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */\n\n/* Tomorrow Comment */\n.hljs-comment,\n.hljs-quote {\n  color: #8e908c;\n}\n\n/* Tomorrow Red */\n.hljs-variable,\n.hljs-template-variable,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-regexp,\n.hljs-deletion {\n  color: #c82829;\n}\n\n/* Tomorrow Orange */\n.hljs-number,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-literal,\n.hljs-type,\n.hljs-params,\n.hljs-meta,\n.hljs-link {\n  color: #f5871f;\n}\n\n/* Tomorrow Yellow */\n.hljs-attribute {\n  color: #eab700;\n}\n\n/* Tomorrow Green */\n.hljs-string,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-addition {\n  color: #718c00;\n}\n\n/* Tomorrow Blue */\n.hljs-title,\n.hljs-section {\n  color: #4271ae;\n}\n\n/* Tomorrow Purple */\n.hljs-keyword,\n.hljs-selector-tag {\n  color: #8959a8;\n}\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  background: white;\n  color: #4d4d4c;\n  padding: 0.5em;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/vs.css",
    "content": "/*\n\nVisual Studio-like style based on original C# coloring by Jason Diamond <jason@diamond.name>\n\n*/\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: white;\n  color: black;\n}\n\n.hljs-comment,\n.hljs-quote,\n.hljs-variable {\n  color: #008000;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-built_in,\n.hljs-name,\n.hljs-tag {\n  color: #00f;\n}\n\n.hljs-string,\n.hljs-title,\n.hljs-section,\n.hljs-attribute,\n.hljs-literal,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-type,\n.hljs-addition {\n  color: #a31515;\n}\n\n.hljs-deletion,\n.hljs-selector-attr,\n.hljs-selector-pseudo,\n.hljs-meta {\n  color: #2b91af;\n}\n\n.hljs-doctag {\n  color: #808080;\n}\n\n.hljs-attr {\n  color: #f00;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-link {\n  color: #00b0e8;\n}\n\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/vs2015.css",
    "content": "/*\n * Visual Studio 2015 dark style\n * Author: Nicolas LLOBERA <nllobera@gmail.com>\n */\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #1E1E1E;\n  color: #DCDCDC;\n}\n\n.hljs-keyword,\n.hljs-literal,\n.hljs-symbol,\n.hljs-name {\n  color: #569CD6;\n}\n.hljs-link {\n  color: #569CD6;\n  text-decoration: underline;\n}\n\n.hljs-built_in,\n.hljs-type {\n  color: #4EC9B0;\n}\n\n.hljs-number,\n.hljs-class {\n  color: #B8D7A3;\n}\n\n.hljs-string,\n.hljs-meta-string {\n  color: #D69D85;\n}\n\n.hljs-regexp,\n.hljs-template-tag {\n  color: #9A5334;\n}\n\n.hljs-subst,\n.hljs-function,\n.hljs-title,\n.hljs-params,\n.hljs-formula {\n  color: #DCDCDC;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #57A64A;\n  font-style: italic;\n}\n\n.hljs-doctag {\n  color: #608B4E;\n}\n\n.hljs-meta,\n.hljs-meta-keyword,\n.hljs-tag {\n  color: #9B9B9B;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n  color: #BD63C5;\n}\n\n.hljs-attr,\n.hljs-attribute,\n.hljs-builtin-name {\n  color: #9CDCFE;\n}\n\n.hljs-section {\n  color: gold;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n\n/*.hljs-code {\n  font-family:'Monospace';\n}*/\n\n.hljs-bullet,\n.hljs-selector-tag,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-selector-attr,\n.hljs-selector-pseudo {\n  color: #D7BA7D;\n}\n\n.hljs-addition {\n  background-color: #144212;\n  display: inline-block;\n  width: 100%;\n}\n\n.hljs-deletion {\n  background-color: #600;\n  display: inline-block;\n  width: 100%;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/xcode.css",
    "content": "/*\n\nXCode style (c) Angel Garcia <angelgarcia.mail@gmail.com>\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #fff;\n  color: black;\n}\n\n/* Gray DOCTYPE selectors like WebKit */\n.xml .hljs-meta {\n  color: #c0c0c0;\n}\n\n.hljs-comment,\n.hljs-quote {\n  color: #007400;\n}\n\n.hljs-tag,\n.hljs-attribute,\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-literal,\n.hljs-name {\n  color: #aa0d91;\n}\n\n.hljs-variable,\n.hljs-template-variable {\n  color: #3F6E74;\n}\n\n.hljs-code,\n.hljs-string,\n.hljs-meta-string {\n  color: #c41a16;\n}\n\n.hljs-regexp,\n.hljs-link {\n  color: #0E0EFF;\n}\n\n.hljs-title,\n.hljs-symbol,\n.hljs-bullet,\n.hljs-number {\n  color: #1c00cf;\n}\n\n.hljs-section,\n.hljs-meta {\n  color: #643820;\n}\n\n\n.hljs-class .hljs-title,\n.hljs-type,\n.hljs-built_in,\n.hljs-builtin-name,\n.hljs-params {\n  color: #5c2699;\n}\n\n.hljs-attr {\n  color: #836C28;\n}\n\n.hljs-subst {\n  color: #000;\n}\n\n.hljs-formula {\n  background-color: #eee;\n  font-style: italic;\n}\n\n.hljs-addition {\n  background-color: #baeeba;\n}\n\n.hljs-deletion {\n  background-color: #ffc8bd;\n}\n\n.hljs-selector-id,\n.hljs-selector-class {\n  color: #9b703f;\n}\n\n.hljs-doctag,\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/xt256.css",
    "content": "\n/*\n  xt256.css\n\n  Contact: initbar [at] protonmail [dot] ch\n         : github.com/initbar\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  color: #eaeaea;\n  background: #000;\n  padding: 0.5em;\n}\n\n.hljs-subst {\n  color: #eaeaea;\n}\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n\n.hljs-builtin-name,\n.hljs-type {\n  color: #eaeaea;\n}\n\n.hljs-params {\n  color: #da0000;\n}\n\n.hljs-literal,\n.hljs-number,\n.hljs-name {\n  color: #ff0000;\n  font-weight: bolder;\n}\n\n.hljs-comment {\n  color: #969896;\n}\n\n.hljs-selector-id,\n.hljs-quote {\n  color: #00ffff;\n}\n\n.hljs-template-variable,\n.hljs-variable,\n.hljs-title {\n  color: #00ffff;\n  font-weight: bold;\n}\n\n.hljs-selector-class,\n.hljs-keyword,\n.hljs-symbol {\n  color: #fff000;\n}\n\n.hljs-string,\n.hljs-bullet {\n  color: #00ff00;\n}\n\n.hljs-tag,\n.hljs-section {\n  color: #000fff;\n}\n\n.hljs-selector-tag {\n  color: #000fff;\n  font-weight: bold;\n}\n\n.hljs-attribute,\n.hljs-built_in,\n.hljs-regexp,\n.hljs-link {\n  color: #ff00ff;\n}\n\n.hljs-meta {\n  color: #fff;\n  font-weight: bolder;\n}\n"
  },
  {
    "path": "includes/Highlight/styles/zenburn.css",
    "content": "/*\n\nZenburn style from voldmar.ru (c) Vladimir Epifanov <voldmar@voldmar.ru>\nbased on dark.css by Ivan Sagalaev\n\n*/\n\n.hljs {\n  display: block;\n  overflow-x: auto;\n  padding: 0.5em;\n  background: #3f3f3f;\n  color: #dcdcdc;\n}\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-tag {\n  color: #e3ceab;\n}\n\n.hljs-template-tag {\n  color: #dcdcdc;\n}\n\n.hljs-number {\n  color: #8cd0d3;\n}\n\n.hljs-variable,\n.hljs-template-variable,\n.hljs-attribute {\n  color: #efdcbc;\n}\n\n.hljs-literal {\n  color: #efefaf;\n}\n\n.hljs-subst {\n  color: #8f8f8f;\n}\n\n.hljs-title,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-section,\n.hljs-type {\n  color: #efef8f;\n}\n\n.hljs-symbol,\n.hljs-bullet,\n.hljs-link {\n  color: #dca3a3;\n}\n\n.hljs-deletion,\n.hljs-string,\n.hljs-built_in,\n.hljs-builtin-name {\n  color: #cc9393;\n}\n\n.hljs-addition,\n.hljs-comment,\n.hljs-quote,\n.hljs-meta {\n  color: #7f9f7f;\n}\n\n\n.hljs-emphasis {\n  font-style: italic;\n}\n\n.hljs-strong {\n  font-weight: bold;\n}\n"
  },
  {
    "path": "includes/Parsedown/LICENSE.txt",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2013 Emanuil Rusev, erusev.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE."
  },
  {
    "path": "includes/Parsedown/Parsedown.php",
    "content": "<?php\n\n#\n#\n# Parsedown\n# http://parsedown.org\n#\n# (c) Emanuil Rusev\n# http://erusev.com\n#\n# For the full license information, view the LICENSE file that was distributed\n# with this source code.\n#\n#\n\nclass Parsedown\n{\n    # ~\n\n    const version = '1.8.0';\n\n    # ~\n\n    function text($text)\n    {\n        $Elements = $this->textElements($text);\n\n        # convert to markup\n        $markup = $this->elements($Elements);\n\n        # trim line breaks\n        $markup = trim($markup, \"\\n\");\n\n        return $markup;\n    }\n\n    protected function textElements($text)\n    {\n        # make sure no definitions are set\n        $this->DefinitionData = array();\n\n        # standardize line breaks\n        $text = str_replace(array(\"\\r\\n\", \"\\r\"), \"\\n\", $text);\n\n        # remove surrounding line breaks\n        $text = trim($text, \"\\n\");\n\n        # split text into lines\n        $lines = explode(\"\\n\", $text);\n\n        # iterate through lines to identify blocks\n        return $this->linesElements($lines);\n    }\n\n    #\n    # Setters\n    #\n\n    function setBreaksEnabled($breaksEnabled)\n    {\n        $this->breaksEnabled = $breaksEnabled;\n\n        return $this;\n    }\n\n    protected $breaksEnabled;\n\n    function setMarkupEscaped($markupEscaped)\n    {\n        $this->markupEscaped = $markupEscaped;\n\n        return $this;\n    }\n\n    protected $markupEscaped;\n\n    function setUrlsLinked($urlsLinked)\n    {\n        $this->urlsLinked = $urlsLinked;\n\n        return $this;\n    }\n\n    protected $urlsLinked = true;\n\n    function setSafeMode($safeMode)\n    {\n        $this->safeMode = (bool) $safeMode;\n\n        return $this;\n    }\n\n    protected $safeMode;\n\n    function setStrictMode($strictMode)\n    {\n        $this->strictMode = (bool) $strictMode;\n\n        return $this;\n    }\n\n    protected $strictMode;\n\n    protected $safeLinksWhitelist = array(\n        'http://',\n        'https://',\n        'ftp://',\n        'ftps://',\n        'mailto:',\n        'tel:',\n        'data:image/png;base64,',\n        'data:image/gif;base64,',\n        'data:image/jpeg;base64,',\n        'irc:',\n        'ircs:',\n        'git:',\n        'ssh:',\n        'news:',\n        'steam:',\n    );\n\n    #\n    # Lines\n    #\n\n    protected $BlockTypes = array(\n        '#' => array('Header'),\n        '*' => array('Rule', 'List'),\n        '+' => array('List'),\n        '-' => array('SetextHeader', 'Table', 'Rule', 'List'),\n        '0' => array('List'),\n        '1' => array('List'),\n        '2' => array('List'),\n        '3' => array('List'),\n        '4' => array('List'),\n        '5' => array('List'),\n        '6' => array('List'),\n        '7' => array('List'),\n        '8' => array('List'),\n        '9' => array('List'),\n        ':' => array('Table'),\n        '<' => array('Comment', 'Markup'),\n        '=' => array('SetextHeader'),\n        '>' => array('Quote'),\n        '[' => array('Reference'),\n        '_' => array('Rule'),\n        '`' => array('FencedCode'),\n        '|' => array('Table'),\n        '~' => array('FencedCode'),\n    );\n\n    # ~\n\n    protected $unmarkedBlockTypes = array(\n        'Code',\n    );\n\n    #\n    # Blocks\n    #\n\n    protected function lines(array $lines)\n    {\n        return $this->elements($this->linesElements($lines));\n    }\n\n    protected function linesElements(array $lines)\n    {\n        $Elements = array();\n        $CurrentBlock = null;\n\n        foreach ($lines as $line)\n        {\n            if (chop($line) === '')\n            {\n                if (isset($CurrentBlock))\n                {\n                    $CurrentBlock['interrupted'] = (isset($CurrentBlock['interrupted'])\n                        ? $CurrentBlock['interrupted'] + 1 : 1\n                    );\n                }\n\n                continue;\n            }\n\n            while (($beforeTab = strstr($line, \"\\t\", true)) !== false)\n            {\n                $shortage = 4 - mb_strlen($beforeTab, 'utf-8') % 4;\n\n                $line = $beforeTab\n                    . str_repeat(' ', $shortage)\n                    . substr($line, strlen($beforeTab) + 1)\n                ;\n            }\n\n            $indent = strspn($line, ' ');\n\n            $text = $indent > 0 ? substr($line, $indent) : $line;\n\n            # ~\n\n            $Line = array('body' => $line, 'indent' => $indent, 'text' => $text);\n\n            # ~\n\n            if (isset($CurrentBlock['continuable']))\n            {\n                $methodName = 'block' . $CurrentBlock['type'] . 'Continue';\n                $Block = $this->$methodName($Line, $CurrentBlock);\n\n                if (isset($Block))\n                {\n                    $CurrentBlock = $Block;\n\n                    continue;\n                }\n                else\n                {\n                    if ($this->isBlockCompletable($CurrentBlock['type']))\n                    {\n                        $methodName = 'block' . $CurrentBlock['type'] . 'Complete';\n                        $CurrentBlock = $this->$methodName($CurrentBlock);\n                    }\n                }\n            }\n\n            # ~\n\n            $marker = $text[0];\n\n            # ~\n\n            $blockTypes = $this->unmarkedBlockTypes;\n\n            if (isset($this->BlockTypes[$marker]))\n            {\n                foreach ($this->BlockTypes[$marker] as $blockType)\n                {\n                    $blockTypes []= $blockType;\n                }\n            }\n\n            #\n            # ~\n\n            foreach ($blockTypes as $blockType)\n            {\n                $Block = $this->{\"block$blockType\"}($Line, $CurrentBlock);\n\n                if (isset($Block))\n                {\n                    $Block['type'] = $blockType;\n\n                    if ( ! isset($Block['identified']))\n                    {\n                        if (isset($CurrentBlock))\n                        {\n                            $Elements[] = $this->extractElement($CurrentBlock);\n                        }\n\n                        $Block['identified'] = true;\n                    }\n\n                    if ($this->isBlockContinuable($blockType))\n                    {\n                        $Block['continuable'] = true;\n                    }\n\n                    $CurrentBlock = $Block;\n\n                    continue 2;\n                }\n            }\n\n            # ~\n\n            if (isset($CurrentBlock) and $CurrentBlock['type'] === 'Paragraph')\n            {\n                $Block = $this->paragraphContinue($Line, $CurrentBlock);\n            }\n\n            if (isset($Block))\n            {\n                $CurrentBlock = $Block;\n            }\n            else\n            {\n                if (isset($CurrentBlock))\n                {\n                    $Elements[] = $this->extractElement($CurrentBlock);\n                }\n\n                $CurrentBlock = $this->paragraph($Line);\n\n                $CurrentBlock['identified'] = true;\n            }\n        }\n\n        # ~\n\n        if (isset($CurrentBlock['continuable']) and $this->isBlockCompletable($CurrentBlock['type']))\n        {\n            $methodName = 'block' . $CurrentBlock['type'] . 'Complete';\n            $CurrentBlock = $this->$methodName($CurrentBlock);\n        }\n\n        # ~\n\n        if (isset($CurrentBlock))\n        {\n            $Elements[] = $this->extractElement($CurrentBlock);\n        }\n\n        # ~\n\n        return $Elements;\n    }\n\n    protected function extractElement(array $Component)\n    {\n        if ( ! isset($Component['element']))\n        {\n            if (isset($Component['markup']))\n            {\n                $Component['element'] = array('rawHtml' => $Component['markup']);\n            }\n            elseif (isset($Component['hidden']))\n            {\n                $Component['element'] = array();\n            }\n        }\n\n        return $Component['element'];\n    }\n\n    protected function isBlockContinuable($Type)\n    {\n        return method_exists($this, 'block' . $Type . 'Continue');\n    }\n\n    protected function isBlockCompletable($Type)\n    {\n        return method_exists($this, 'block' . $Type . 'Complete');\n    }\n\n    #\n    # Code\n\n    protected function blockCode($Line, $Block = null)\n    {\n        if (isset($Block) and $Block['type'] === 'Paragraph' and ! isset($Block['interrupted']))\n        {\n            return;\n        }\n\n        if ($Line['indent'] >= 4)\n        {\n            $text = substr($Line['body'], 4);\n\n            $Block = array(\n                'element' => array(\n                    'name' => 'pre',\n                    'element' => array(\n                        'name' => 'code',\n                        'text' => $text,\n                    ),\n                ),\n            );\n\n            return $Block;\n        }\n    }\n\n    protected function blockCodeContinue($Line, $Block)\n    {\n        if ($Line['indent'] >= 4)\n        {\n            if (isset($Block['interrupted']))\n            {\n                $Block['element']['element']['text'] .= str_repeat(\"\\n\", $Block['interrupted']);\n\n                unset($Block['interrupted']);\n            }\n\n            $Block['element']['element']['text'] .= \"\\n\";\n\n            $text = substr($Line['body'], 4);\n\n            $Block['element']['element']['text'] .= $text;\n\n            return $Block;\n        }\n    }\n\n    protected function blockCodeComplete($Block)\n    {\n        return $Block;\n    }\n\n    #\n    # Comment\n\n    protected function blockComment($Line)\n    {\n        if ($this->markupEscaped or $this->safeMode)\n        {\n            return;\n        }\n\n        if (strpos($Line['text'], '<!--') === 0)\n        {\n            $Block = array(\n                'element' => array(\n                    'rawHtml' => $Line['body'],\n                    'autobreak' => true,\n                ),\n            );\n\n            if (strpos($Line['text'], '-->') !== false)\n            {\n                $Block['closed'] = true;\n            }\n\n            return $Block;\n        }\n    }\n\n    protected function blockCommentContinue($Line, array $Block)\n    {\n        if (isset($Block['closed']))\n        {\n            return;\n        }\n\n        $Block['element']['rawHtml'] .= \"\\n\" . $Line['body'];\n\n        if (strpos($Line['text'], '-->') !== false)\n        {\n            $Block['closed'] = true;\n        }\n\n        return $Block;\n    }\n\n    #\n    # Fenced Code\n\n    protected function blockFencedCode($Line)\n    {\n        $marker = $Line['text'][0];\n\n        $openerLength = strspn($Line['text'], $marker);\n\n        if ($openerLength < 3)\n        {\n            return;\n        }\n\n        $infostring = trim(substr($Line['text'], $openerLength), \"\\t \");\n\n        if (strpos($infostring, '`') !== false)\n        {\n            return;\n        }\n\n        $Element = array(\n            'name' => 'code',\n            'text' => '',\n        );\n\n        if ($infostring !== '')\n        {\n            /**\n             * https://www.w3.org/TR/2011/WD-html5-20110525/elements.html#classes\n             * Every HTML element may have a class attribute specified.\n             * The attribute, if specified, must have a value that is a set\n             * of space-separated tokens representing the various classes\n             * that the element belongs to.\n             * [...]\n             * The space characters, for the purposes of this specification,\n             * are U+0020 SPACE, U+0009 CHARACTER TABULATION (tab),\n             * U+000A LINE FEED (LF), U+000C FORM FEED (FF), and\n             * U+000D CARRIAGE RETURN (CR).\n             */\n            $language = substr($infostring, 0, strcspn($infostring, \" \\t\\n\\f\\r\"));\n\n            $Element['attributes'] = array('class' => \"language-$language\");\n        }\n\n        $Block = array(\n            'char' => $marker,\n            'openerLength' => $openerLength,\n            'element' => array(\n                'name' => 'pre',\n                'element' => $Element,\n            ),\n        );\n\n        return $Block;\n    }\n\n    protected function blockFencedCodeContinue($Line, $Block)\n    {\n        if (isset($Block['complete']))\n        {\n            return;\n        }\n\n        if (isset($Block['interrupted']))\n        {\n            $Block['element']['element']['text'] .= str_repeat(\"\\n\", $Block['interrupted']);\n\n            unset($Block['interrupted']);\n        }\n\n        if (($len = strspn($Line['text'], $Block['char'])) >= $Block['openerLength']\n            and chop(substr($Line['text'], $len), ' ') === ''\n        ) {\n            $Block['element']['element']['text'] = substr($Block['element']['element']['text'], 1);\n\n            $Block['complete'] = true;\n\n            return $Block;\n        }\n\n        $Block['element']['element']['text'] .= \"\\n\" . $Line['body'];\n\n        return $Block;\n    }\n\n    protected function blockFencedCodeComplete($Block)\n    {\n        return $Block;\n    }\n\n    #\n    # Header\n\n    protected function blockHeader($Line)\n    {\n        $level = strspn($Line['text'], '#');\n\n        if ($level > 6)\n        {\n            return;\n        }\n\n        $text = trim($Line['text'], '#');\n\n        if ($this->strictMode and isset($text[0]) and $text[0] !== ' ')\n        {\n            return;\n        }\n\n        $text = trim($text, ' ');\n\n        $Block = array(\n            'element' => array(\n                'name' => 'h' . $level,\n                'handler' => array(\n                    'function' => 'lineElements',\n                    'argument' => $text,\n                    'destination' => 'elements',\n                )\n            ),\n        );\n\n        return $Block;\n    }\n\n    #\n    # List\n\n    protected function blockList($Line, ?array $CurrentBlock = null)\n    {\n        list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]{1,9}+[.\\)]');\n\n        if (preg_match('/^('.$pattern.'([ ]++|$))(.*+)/', $Line['text'], $matches))\n        {\n            $contentIndent = strlen($matches[2]);\n\n            if ($contentIndent >= 5)\n            {\n                $contentIndent -= 1;\n                $matches[1] = substr($matches[1], 0, -$contentIndent);\n                $matches[3] = str_repeat(' ', $contentIndent) . $matches[3];\n            }\n            elseif ($contentIndent === 0)\n            {\n                $matches[1] .= ' ';\n            }\n\n            $markerWithoutWhitespace = strstr($matches[1], ' ', true);\n\n            $Block = array(\n                'indent' => $Line['indent'],\n                'pattern' => $pattern,\n                'data' => array(\n                    'type' => $name,\n                    'marker' => $matches[1],\n                    'markerType' => ($name === 'ul' ? $markerWithoutWhitespace : substr($markerWithoutWhitespace, -1)),\n                ),\n                'element' => array(\n                    'name' => $name,\n                    'elements' => array(),\n                ),\n            );\n            $Block['data']['markerTypeRegex'] = preg_quote($Block['data']['markerType'], '/');\n\n            if ($name === 'ol')\n            {\n                $listStart = ltrim(strstr($matches[1], $Block['data']['markerType'], true), '0') ?: '0';\n\n                if ($listStart !== '1')\n                {\n                    if (\n                        isset($CurrentBlock)\n                        and $CurrentBlock['type'] === 'Paragraph'\n                        and ! isset($CurrentBlock['interrupted'])\n                    ) {\n                        return;\n                    }\n\n                    $Block['element']['attributes'] = array('start' => $listStart);\n                }\n            }\n\n            $Block['li'] = array(\n                'name' => 'li',\n                'handler' => array(\n                    'function' => 'li',\n                    'argument' => !empty($matches[3]) ? array($matches[3]) : array(),\n                    'destination' => 'elements'\n                )\n            );\n\n            $Block['element']['elements'] []= & $Block['li'];\n\n            return $Block;\n        }\n    }\n\n    protected function blockListContinue($Line, array $Block)\n    {\n        if (isset($Block['interrupted']) and empty($Block['li']['handler']['argument']))\n        {\n            return null;\n        }\n\n        $requiredIndent = ($Block['indent'] + strlen($Block['data']['marker']));\n\n        if ($Line['indent'] < $requiredIndent\n            and (\n                (\n                    $Block['data']['type'] === 'ol'\n                    and preg_match('/^[0-9]++'.$Block['data']['markerTypeRegex'].'(?:[ ]++(.*)|$)/', $Line['text'], $matches)\n                ) or (\n                    $Block['data']['type'] === 'ul'\n                    and preg_match('/^'.$Block['data']['markerTypeRegex'].'(?:[ ]++(.*)|$)/', $Line['text'], $matches)\n                )\n            )\n        ) {\n            if (isset($Block['interrupted']))\n            {\n                $Block['li']['handler']['argument'] []= '';\n\n                $Block['loose'] = true;\n\n                unset($Block['interrupted']);\n            }\n\n            unset($Block['li']);\n\n            $text = isset($matches[1]) ? $matches[1] : '';\n\n            $Block['indent'] = $Line['indent'];\n\n            $Block['li'] = array(\n                'name' => 'li',\n                'handler' => array(\n                    'function' => 'li',\n                    'argument' => array($text),\n                    'destination' => 'elements'\n                )\n            );\n\n            $Block['element']['elements'] []= & $Block['li'];\n\n            return $Block;\n        }\n        elseif ($Line['indent'] < $requiredIndent and $this->blockList($Line))\n        {\n            return null;\n        }\n\n        if ($Line['text'][0] === '[' and $this->blockReference($Line))\n        {\n            return $Block;\n        }\n\n        if ($Line['indent'] >= $requiredIndent)\n        {\n            if (isset($Block['interrupted']))\n            {\n                $Block['li']['handler']['argument'] []= '';\n\n                $Block['loose'] = true;\n\n                unset($Block['interrupted']);\n            }\n\n            $text = substr($Line['body'], $requiredIndent);\n\n            $Block['li']['handler']['argument'] []= $text;\n\n            return $Block;\n        }\n\n        if ( ! isset($Block['interrupted']))\n        {\n            $text = preg_replace('/^[ ]{0,'.$requiredIndent.'}+/', '', $Line['body']);\n\n            $Block['li']['handler']['argument'] []= $text;\n\n            return $Block;\n        }\n    }\n\n    protected function blockListComplete(array $Block)\n    {\n        if (isset($Block['loose']))\n        {\n            foreach ($Block['element']['elements'] as &$li)\n            {\n                if (end($li['handler']['argument']) !== '')\n                {\n                    $li['handler']['argument'] []= '';\n                }\n            }\n        }\n\n        return $Block;\n    }\n\n    #\n    # Quote\n\n    protected function blockQuote($Line)\n    {\n        if (preg_match('/^>[ ]?+(.*+)/', $Line['text'], $matches))\n        {\n            $Block = array(\n                'element' => array(\n                    'name' => 'blockquote',\n                    'handler' => array(\n                        'function' => 'linesElements',\n                        'argument' => (array) $matches[1],\n                        'destination' => 'elements',\n                    )\n                ),\n            );\n\n            return $Block;\n        }\n    }\n\n    protected function blockQuoteContinue($Line, array $Block)\n    {\n        if (isset($Block['interrupted']))\n        {\n            return;\n        }\n\n        if ($Line['text'][0] === '>' and preg_match('/^>[ ]?+(.*+)/', $Line['text'], $matches))\n        {\n            $Block['element']['handler']['argument'] []= $matches[1];\n\n            return $Block;\n        }\n\n        if ( ! isset($Block['interrupted']))\n        {\n            $Block['element']['handler']['argument'] []= $Line['text'];\n\n            return $Block;\n        }\n    }\n\n    #\n    # Rule\n\n    protected function blockRule($Line)\n    {\n        $marker = $Line['text'][0];\n\n        if (substr_count($Line['text'], $marker) >= 3 and chop($Line['text'], \" $marker\") === '')\n        {\n            $Block = array(\n                'element' => array(\n                    'name' => 'hr',\n                ),\n            );\n\n            return $Block;\n        }\n    }\n\n    #\n    # Setext\n\n    protected function blockSetextHeader($Line, ?array $Block = null)\n    {\n        if ( ! isset($Block) or $Block['type'] !== 'Paragraph' or isset($Block['interrupted']))\n        {\n            return;\n        }\n\n        if ($Line['indent'] < 4 and chop(chop($Line['text'], ' '), $Line['text'][0]) === '')\n        {\n            $Block['element']['name'] = $Line['text'][0] === '=' ? 'h1' : 'h2';\n\n            return $Block;\n        }\n    }\n\n    #\n    # Markup\n\n    protected function blockMarkup($Line)\n    {\n        if ($this->markupEscaped or $this->safeMode)\n        {\n            return;\n        }\n\n        if (preg_match('/^<[\\/]?+(\\w*)(?:[ ]*+'.$this->regexHtmlAttribute.')*+[ ]*+(\\/)?>/', $Line['text'], $matches))\n        {\n            $element = strtolower($matches[1]);\n\n            if (in_array($element, $this->textLevelElements))\n            {\n                return;\n            }\n\n            $Block = array(\n                'name' => $matches[1],\n                'element' => array(\n                    'rawHtml' => $Line['text'],\n                    'autobreak' => true,\n                ),\n            );\n\n            return $Block;\n        }\n    }\n\n    protected function blockMarkupContinue($Line, array $Block)\n    {\n        if (isset($Block['closed']) or isset($Block['interrupted']))\n        {\n            return;\n        }\n\n        $Block['element']['rawHtml'] .= \"\\n\" . $Line['body'];\n\n        return $Block;\n    }\n\n    #\n    # Reference\n\n    protected function blockReference($Line)\n    {\n        if (strpos($Line['text'], ']') !== false\n            and preg_match('/^\\[(.+?)\\]:[ ]*+<?(\\S+?)>?(?:[ ]+[\"\\'(](.+)[\"\\')])?[ ]*+$/', $Line['text'], $matches)\n        ) {\n            $id = strtolower($matches[1]);\n\n            $Data = array(\n                'url' => $matches[2],\n                'title' => isset($matches[3]) ? $matches[3] : null,\n            );\n\n            $this->DefinitionData['Reference'][$id] = $Data;\n\n            $Block = array(\n                'element' => array(),\n            );\n\n            return $Block;\n        }\n    }\n\n    #\n    # Table\n\n    protected function blockTable($Line, ?array $Block = null)\n    {\n        if ( ! isset($Block) or $Block['type'] !== 'Paragraph' or isset($Block['interrupted']))\n        {\n            return;\n        }\n\n        if (\n            strpos($Block['element']['handler']['argument'], '|') === false\n            and strpos($Line['text'], '|') === false\n            and strpos($Line['text'], ':') === false\n            or strpos($Block['element']['handler']['argument'], \"\\n\") !== false\n        ) {\n            return;\n        }\n\n        if (chop($Line['text'], ' -:|') !== '')\n        {\n            return;\n        }\n\n        $alignments = array();\n\n        $divider = $Line['text'];\n\n        $divider = trim($divider);\n        $divider = trim($divider, '|');\n\n        $dividerCells = explode('|', $divider);\n\n        foreach ($dividerCells as $dividerCell)\n        {\n            $dividerCell = trim($dividerCell);\n\n            if ($dividerCell === '')\n            {\n                return;\n            }\n\n            $alignment = null;\n\n            if ($dividerCell[0] === ':')\n            {\n                $alignment = 'left';\n            }\n\n            if (substr($dividerCell, - 1) === ':')\n            {\n                $alignment = $alignment === 'left' ? 'center' : 'right';\n            }\n\n            $alignments []= $alignment;\n        }\n\n        # ~\n\n        $HeaderElements = array();\n\n        $header = $Block['element']['handler']['argument'];\n\n        $header = trim($header);\n        $header = trim($header, '|');\n\n        $headerCells = explode('|', $header);\n\n        if (count($headerCells) !== count($alignments))\n        {\n            return;\n        }\n\n        foreach ($headerCells as $index => $headerCell)\n        {\n            $headerCell = trim($headerCell);\n\n            $HeaderElement = array(\n                'name' => 'th',\n                'handler' => array(\n                    'function' => 'lineElements',\n                    'argument' => $headerCell,\n                    'destination' => 'elements',\n                )\n            );\n\n            if (isset($alignments[$index]))\n            {\n                $alignment = $alignments[$index];\n\n                $HeaderElement['attributes'] = array(\n                    'style' => \"text-align: $alignment;\",\n                );\n            }\n\n            $HeaderElements []= $HeaderElement;\n        }\n\n        # ~\n\n        $Block = array(\n            'alignments' => $alignments,\n            'identified' => true,\n            'element' => array(\n                'name' => 'table',\n                'elements' => array(),\n            ),\n        );\n\n        $Block['element']['elements'] []= array(\n            'name' => 'thead',\n        );\n\n        $Block['element']['elements'] []= array(\n            'name' => 'tbody',\n            'elements' => array(),\n        );\n\n        $Block['element']['elements'][0]['elements'] []= array(\n            'name' => 'tr',\n            'elements' => $HeaderElements,\n        );\n\n        return $Block;\n    }\n\n    protected function blockTableContinue($Line, array $Block)\n    {\n        if (isset($Block['interrupted']))\n        {\n            return;\n        }\n\n        if (count($Block['alignments']) === 1 or $Line['text'][0] === '|' or strpos($Line['text'], '|'))\n        {\n            $Elements = array();\n\n            $row = $Line['text'];\n\n            $row = trim($row);\n            $row = trim($row, '|');\n\n            preg_match_all('/(?:(\\\\\\\\[|])|[^|`]|`[^`]++`|`)++/', $row, $matches);\n\n            $cells = array_slice($matches[0], 0, count($Block['alignments']));\n\n            foreach ($cells as $index => $cell)\n            {\n                $cell = trim($cell);\n\n                $Element = array(\n                    'name' => 'td',\n                    'handler' => array(\n                        'function' => 'lineElements',\n                        'argument' => $cell,\n                        'destination' => 'elements',\n                    )\n                );\n\n                if (isset($Block['alignments'][$index]))\n                {\n                    $Element['attributes'] = array(\n                        'style' => 'text-align: ' . $Block['alignments'][$index] . ';',\n                    );\n                }\n\n                $Elements []= $Element;\n            }\n\n            $Element = array(\n                'name' => 'tr',\n                'elements' => $Elements,\n            );\n\n            $Block['element']['elements'][1]['elements'] []= $Element;\n\n            return $Block;\n        }\n    }\n\n    #\n    # ~\n    #\n\n    protected function paragraph($Line)\n    {\n        return array(\n            'type' => 'Paragraph',\n            'element' => array(\n                'name' => 'p',\n                'handler' => array(\n                    'function' => 'lineElements',\n                    'argument' => $Line['text'],\n                    'destination' => 'elements',\n                ),\n            ),\n        );\n    }\n\n    protected function paragraphContinue($Line, array $Block)\n    {\n        if (isset($Block['interrupted']))\n        {\n            return;\n        }\n\n        $Block['element']['handler']['argument'] .= \"\\n\".$Line['text'];\n\n        return $Block;\n    }\n\n    #\n    # Inline Elements\n    #\n\n    protected $InlineTypes = array(\n        '!' => array('Image'),\n        '&' => array('SpecialCharacter'),\n        '*' => array('Emphasis'),\n        ':' => array('Url'),\n        '<' => array('UrlTag', 'EmailTag', 'Markup'),\n        '[' => array('Link'),\n        '_' => array('Emphasis'),\n        '`' => array('Code'),\n        '~' => array('Strikethrough'),\n        '\\\\' => array('EscapeSequence'),\n    );\n\n    # ~\n\n    protected $inlineMarkerList = '!*_&[:<`~\\\\';\n\n    #\n    # ~\n    #\n\n    public function line($text, $nonNestables = array())\n    {\n        return $this->elements($this->lineElements($text, $nonNestables));\n    }\n\n    protected function lineElements($text, $nonNestables = array())\n    {\n        # standardize line breaks\n        $text = str_replace(array(\"\\r\\n\", \"\\r\"), \"\\n\", $text);\n\n        $Elements = array();\n\n        $nonNestables = (empty($nonNestables)\n            ? array()\n            : array_combine($nonNestables, $nonNestables)\n        );\n\n        # $excerpt is based on the first occurrence of a marker\n\n        while ($excerpt = strpbrk($text, $this->inlineMarkerList))\n        {\n            $marker = $excerpt[0];\n\n            $markerPosition = strlen($text) - strlen($excerpt);\n\n            $Excerpt = array('text' => $excerpt, 'context' => $text);\n\n            foreach ($this->InlineTypes[$marker] as $inlineType)\n            {\n                # check to see if the current inline type is nestable in the current context\n\n                if (isset($nonNestables[$inlineType]))\n                {\n                    continue;\n                }\n\n                $Inline = $this->{\"inline$inlineType\"}($Excerpt);\n\n                if ( ! isset($Inline))\n                {\n                    continue;\n                }\n\n                # makes sure that the inline belongs to \"our\" marker\n\n                if (isset($Inline['position']) and $Inline['position'] > $markerPosition)\n                {\n                    continue;\n                }\n\n                # sets a default inline position\n\n                if ( ! isset($Inline['position']))\n                {\n                    $Inline['position'] = $markerPosition;\n                }\n\n                # cause the new element to 'inherit' our non nestables\n\n\n                $Inline['element']['nonNestables'] = isset($Inline['element']['nonNestables'])\n                    ? array_merge($Inline['element']['nonNestables'], $nonNestables)\n                    : $nonNestables\n                ;\n\n                # the text that comes before the inline\n                $unmarkedText = substr($text, 0, $Inline['position']);\n\n                # compile the unmarked text\n                $InlineText = $this->inlineText($unmarkedText);\n                $Elements[] = $InlineText['element'];\n\n                # compile the inline\n                $Elements[] = $this->extractElement($Inline);\n\n                # remove the examined text\n                $text = substr($text, $Inline['position'] + $Inline['extent']);\n\n                continue 2;\n            }\n\n            # the marker does not belong to an inline\n\n            $unmarkedText = substr($text, 0, $markerPosition + 1);\n\n            $InlineText = $this->inlineText($unmarkedText);\n            $Elements[] = $InlineText['element'];\n\n            $text = substr($text, $markerPosition + 1);\n        }\n\n        $InlineText = $this->inlineText($text);\n        $Elements[] = $InlineText['element'];\n\n        foreach ($Elements as &$Element)\n        {\n            if ( ! isset($Element['autobreak']))\n            {\n                $Element['autobreak'] = false;\n            }\n        }\n\n        return $Elements;\n    }\n\n    #\n    # ~\n    #\n\n    protected function inlineText($text)\n    {\n        $Inline = array(\n            'extent' => strlen($text),\n            'element' => array(),\n        );\n\n        $Inline['element']['elements'] = self::pregReplaceElements(\n            $this->breaksEnabled ? '/[ ]*+\\n/' : '/(?:[ ]*+\\\\\\\\|[ ]{2,}+)\\n/',\n            array(\n                array('name' => 'br'),\n                array('text' => \"\\n\"),\n            ),\n            $text\n        );\n\n        return $Inline;\n    }\n\n    protected function inlineCode($Excerpt)\n    {\n        $marker = $Excerpt['text'][0];\n\n        if (preg_match('/^(['.$marker.']++)[ ]*+(.+?)[ ]*+(?<!['.$marker.'])\\1(?!'.$marker.')/s', $Excerpt['text'], $matches))\n        {\n            $text = $matches[2];\n            $text = preg_replace('/[ ]*+\\n/', ' ', $text);\n\n            return array(\n                'extent' => strlen($matches[0]),\n                'element' => array(\n                    'name' => 'code',\n                    'text' => $text,\n                ),\n            );\n        }\n    }\n\n    protected function inlineEmailTag($Excerpt)\n    {\n        $hostnameLabel = '[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?';\n\n        $commonMarkEmail = '[a-zA-Z0-9.!#$%&\\'*+\\/=?^_`{|}~-]++@'\n            . $hostnameLabel . '(?:\\.' . $hostnameLabel . ')*';\n\n        if (strpos($Excerpt['text'], '>') !== false\n            and preg_match(\"/^<((mailto:)?$commonMarkEmail)>/i\", $Excerpt['text'], $matches)\n        ){\n            $url = $matches[1];\n\n            if ( ! isset($matches[2]))\n            {\n                $url = \"mailto:$url\";\n            }\n\n            return array(\n                'extent' => strlen($matches[0]),\n                'element' => array(\n                    'name' => 'a',\n                    'text' => $matches[1],\n                    'attributes' => array(\n                        'href' => $url,\n                    ),\n                ),\n            );\n        }\n    }\n\n    protected function inlineEmphasis($Excerpt)\n    {\n        if ( ! isset($Excerpt['text'][1]))\n        {\n            return;\n        }\n\n        $marker = $Excerpt['text'][0];\n\n        if ($Excerpt['text'][1] === $marker and preg_match($this->StrongRegex[$marker], $Excerpt['text'], $matches))\n        {\n            $emphasis = 'strong';\n        }\n        elseif (preg_match($this->EmRegex[$marker], $Excerpt['text'], $matches))\n        {\n            $emphasis = 'em';\n        }\n        else\n        {\n            return;\n        }\n\n        return array(\n            'extent' => strlen($matches[0]),\n            'element' => array(\n                'name' => $emphasis,\n                'handler' => array(\n                    'function' => 'lineElements',\n                    'argument' => $matches[1],\n                    'destination' => 'elements',\n                )\n            ),\n        );\n    }\n\n    protected function inlineEscapeSequence($Excerpt)\n    {\n        if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters))\n        {\n            return array(\n                'element' => array('rawHtml' => $Excerpt['text'][1]),\n                'extent' => 2,\n            );\n        }\n    }\n\n    protected function inlineImage($Excerpt)\n    {\n        if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[')\n        {\n            return;\n        }\n\n        $Excerpt['text']= substr($Excerpt['text'], 1);\n\n        $Link = $this->inlineLink($Excerpt);\n\n        if ($Link === null)\n        {\n            return;\n        }\n\n        $Inline = array(\n            'extent' => $Link['extent'] + 1,\n            'element' => array(\n                'name' => 'img',\n                'attributes' => array(\n                    'src' => $Link['element']['attributes']['href'],\n                    'alt' => $Link['element']['handler']['argument'],\n                ),\n                'autobreak' => true,\n            ),\n        );\n\n        $Inline['element']['attributes'] += $Link['element']['attributes'];\n\n        unset($Inline['element']['attributes']['href']);\n\n        return $Inline;\n    }\n\n    protected function inlineLink($Excerpt)\n    {\n        $Element = array(\n            'name' => 'a',\n            'handler' => array(\n                'function' => 'lineElements',\n                'argument' => null,\n                'destination' => 'elements',\n            ),\n            'nonNestables' => array('Url', 'Link'),\n            'attributes' => array(\n                'href' => null,\n                'title' => null,\n            ),\n        );\n\n        $extent = 0;\n\n        $remainder = $Excerpt['text'];\n\n        if (preg_match('/\\[((?:[^][]++|(?R))*+)\\]/', $remainder, $matches))\n        {\n            $Element['handler']['argument'] = $matches[1];\n\n            $extent += strlen($matches[0]);\n\n            $remainder = substr($remainder, $extent);\n        }\n        else\n        {\n            return;\n        }\n\n        if (preg_match('/^[(]\\s*+((?:[^ ()]++|[(][^ )]+[)])++)(?:[ ]+(\"[^\"]*+\"|\\'[^\\']*+\\'))?\\s*+[)]/', $remainder, $matches))\n        {\n            $Element['attributes']['href'] = $matches[1];\n\n            if (isset($matches[2]))\n            {\n                $Element['attributes']['title'] = substr($matches[2], 1, - 1);\n            }\n\n            $extent += strlen($matches[0]);\n        }\n        else\n        {\n            if (preg_match('/^\\s*\\[(.*?)\\]/', $remainder, $matches))\n            {\n                $definition = strlen($matches[1]) ? $matches[1] : $Element['handler']['argument'];\n                $definition = strtolower($definition);\n\n                $extent += strlen($matches[0]);\n            }\n            else\n            {\n                $definition = strtolower($Element['handler']['argument']);\n            }\n\n            if ( ! isset($this->DefinitionData['Reference'][$definition]))\n            {\n                return;\n            }\n\n            $Definition = $this->DefinitionData['Reference'][$definition];\n\n            $Element['attributes']['href'] = $Definition['url'];\n            $Element['attributes']['title'] = $Definition['title'];\n        }\n\n        return array(\n            'extent' => $extent,\n            'element' => $Element,\n        );\n    }\n\n    protected function inlineMarkup($Excerpt)\n    {\n        if ($this->markupEscaped or $this->safeMode or strpos($Excerpt['text'], '>') === false)\n        {\n            return;\n        }\n\n        if ($Excerpt['text'][1] === '/' and preg_match('/^<\\/\\w[\\w-]*+[ ]*+>/s', $Excerpt['text'], $matches))\n        {\n            return array(\n                'element' => array('rawHtml' => $matches[0]),\n                'extent' => strlen($matches[0]),\n            );\n        }\n\n        if ($Excerpt['text'][1] === '!' and preg_match('/^<!---?[^>-](?:-?+[^-])*-->/s', $Excerpt['text'], $matches))\n        {\n            return array(\n                'element' => array('rawHtml' => $matches[0]),\n                'extent' => strlen($matches[0]),\n            );\n        }\n\n        if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\\w[\\w-]*+(?:[ ]*+'.$this->regexHtmlAttribute.')*+[ ]*+\\/?>/s', $Excerpt['text'], $matches))\n        {\n            return array(\n                'element' => array('rawHtml' => $matches[0]),\n                'extent' => strlen($matches[0]),\n            );\n        }\n    }\n\n    protected function inlineSpecialCharacter($Excerpt)\n    {\n        if (substr($Excerpt['text'], 1, 1) !== ' ' and strpos($Excerpt['text'], ';') !== false\n            and preg_match('/^&(#?+[0-9a-zA-Z]++);/', $Excerpt['text'], $matches)\n        ) {\n            return array(\n                'element' => array('rawHtml' => '&' . $matches[1] . ';'),\n                'extent' => strlen($matches[0]),\n            );\n        }\n\n        return;\n    }\n\n    protected function inlineStrikethrough($Excerpt)\n    {\n        if ( ! isset($Excerpt['text'][1]))\n        {\n            return;\n        }\n\n        if ($Excerpt['text'][1] === '~' and preg_match('/^~~(?=\\S)(.+?)(?<=\\S)~~/', $Excerpt['text'], $matches))\n        {\n            return array(\n                'extent' => strlen($matches[0]),\n                'element' => array(\n                    'name' => 'del',\n                    'handler' => array(\n                        'function' => 'lineElements',\n                        'argument' => $matches[1],\n                        'destination' => 'elements',\n                    )\n                ),\n            );\n        }\n    }\n\n    protected function inlineUrl($Excerpt)\n    {\n        if ($this->urlsLinked !== true or ! isset($Excerpt['text'][2]) or $Excerpt['text'][2] !== '/')\n        {\n            return;\n        }\n\n        if (strpos($Excerpt['context'], 'http') !== false\n            and preg_match('/\\bhttps?+:[\\/]{2}[^\\s<]+\\b\\/*+/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE)\n        ) {\n            $url = $matches[0][0];\n\n            $Inline = array(\n                'extent' => strlen($matches[0][0]),\n                'position' => $matches[0][1],\n                'element' => array(\n                    'name' => 'a',\n                    'text' => $url,\n                    'attributes' => array(\n                        'href' => $url,\n                    ),\n                ),\n            );\n\n            return $Inline;\n        }\n    }\n\n    protected function inlineUrlTag($Excerpt)\n    {\n        if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\\w++:\\/{2}[^ >]++)>/i', $Excerpt['text'], $matches))\n        {\n            $url = $matches[1];\n\n            return array(\n                'extent' => strlen($matches[0]),\n                'element' => array(\n                    'name' => 'a',\n                    'text' => $url,\n                    'attributes' => array(\n                        'href' => $url,\n                    ),\n                ),\n            );\n        }\n    }\n\n    # ~\n\n    protected function unmarkedText($text)\n    {\n        $Inline = $this->inlineText($text);\n        return $this->element($Inline['element']);\n    }\n\n    #\n    # Handlers\n    #\n\n    protected function handle(array $Element)\n    {\n        if (isset($Element['handler']))\n        {\n            if (!isset($Element['nonNestables']))\n            {\n                $Element['nonNestables'] = array();\n            }\n\n            if (is_string($Element['handler']))\n            {\n                $function = $Element['handler'];\n                $argument = $Element['text'];\n                unset($Element['text']);\n                $destination = 'rawHtml';\n            }\n            else\n            {\n                $function = $Element['handler']['function'];\n                $argument = $Element['handler']['argument'];\n                $destination = $Element['handler']['destination'];\n            }\n\n            $Element[$destination] = $this->{$function}($argument, $Element['nonNestables']);\n\n            if ($destination === 'handler')\n            {\n                $Element = $this->handle($Element);\n            }\n\n            unset($Element['handler']);\n        }\n\n        return $Element;\n    }\n\n    protected function handleElementRecursive(array $Element)\n    {\n        return $this->elementApplyRecursive(array($this, 'handle'), $Element);\n    }\n\n    protected function handleElementsRecursive(array $Elements)\n    {\n        return $this->elementsApplyRecursive(array($this, 'handle'), $Elements);\n    }\n\n    protected function elementApplyRecursive($closure, array $Element)\n    {\n        $Element = call_user_func($closure, $Element);\n\n        if (isset($Element['elements']))\n        {\n            $Element['elements'] = $this->elementsApplyRecursive($closure, $Element['elements']);\n        }\n        elseif (isset($Element['element']))\n        {\n            $Element['element'] = $this->elementApplyRecursive($closure, $Element['element']);\n        }\n\n        return $Element;\n    }\n\n    protected function elementApplyRecursiveDepthFirst($closure, array $Element)\n    {\n        if (isset($Element['elements']))\n        {\n            $Element['elements'] = $this->elementsApplyRecursiveDepthFirst($closure, $Element['elements']);\n        }\n        elseif (isset($Element['element']))\n        {\n            $Element['element'] = $this->elementsApplyRecursiveDepthFirst($closure, $Element['element']);\n        }\n\n        $Element = call_user_func($closure, $Element);\n\n        return $Element;\n    }\n\n    protected function elementsApplyRecursive($closure, array $Elements)\n    {\n        foreach ($Elements as &$Element)\n        {\n            $Element = $this->elementApplyRecursive($closure, $Element);\n        }\n\n        return $Elements;\n    }\n\n    protected function elementsApplyRecursiveDepthFirst($closure, array $Elements)\n    {\n        foreach ($Elements as &$Element)\n        {\n            $Element = $this->elementApplyRecursiveDepthFirst($closure, $Element);\n        }\n\n        return $Elements;\n    }\n\n    protected function element(array $Element)\n    {\n        if ($this->safeMode)\n        {\n            $Element = $this->sanitiseElement($Element);\n        }\n\n        # identity map if element has no handler\n        $Element = $this->handle($Element);\n\n        $hasName = isset($Element['name']);\n\n        $markup = '';\n\n        if ($hasName)\n        {\n            $markup .= '<' . $Element['name'];\n\n            if (isset($Element['attributes']))\n            {\n                foreach ($Element['attributes'] as $name => $value)\n                {\n                    if ($value === null)\n                    {\n                        continue;\n                    }\n\n                    $markup .= \" $name=\\\"\".self::escape($value).'\"';\n                }\n            }\n        }\n\n        $permitRawHtml = false;\n\n        if (isset($Element['text']))\n        {\n            $text = $Element['text'];\n        }\n        // very strongly consider an alternative if you're writing an\n        // extension\n        elseif (isset($Element['rawHtml']))\n        {\n            $text = $Element['rawHtml'];\n\n            $allowRawHtmlInSafeMode = isset($Element['allowRawHtmlInSafeMode']) && $Element['allowRawHtmlInSafeMode'];\n            $permitRawHtml = !$this->safeMode || $allowRawHtmlInSafeMode;\n        }\n\n        $hasContent = isset($text) || isset($Element['element']) || isset($Element['elements']);\n\n        if ($hasContent)\n        {\n            $markup .= $hasName ? '>' : '';\n\n            if (isset($Element['elements']))\n            {\n                $markup .= $this->elements($Element['elements']);\n            }\n            elseif (isset($Element['element']))\n            {\n                $markup .= $this->element($Element['element']);\n            }\n            else\n            {\n                if (!$permitRawHtml)\n                {\n                    $markup .= self::escape($text, true);\n                }\n                else\n                {\n                    $markup .= $text;\n                }\n            }\n\n            $markup .= $hasName ? '</' . $Element['name'] . '>' : '';\n        }\n        elseif ($hasName)\n        {\n            $markup .= ' />';\n        }\n\n        return $markup;\n    }\n\n    protected function elements(array $Elements)\n    {\n        $markup = '';\n\n        $autoBreak = true;\n\n        foreach ($Elements as $Element)\n        {\n            if (empty($Element))\n            {\n                continue;\n            }\n\n            $autoBreakNext = (isset($Element['autobreak'])\n                ? $Element['autobreak'] : isset($Element['name'])\n            );\n            // (autobreak === false) covers both sides of an element\n            $autoBreak = !$autoBreak ? $autoBreak : $autoBreakNext;\n\n            $markup .= ($autoBreak ? \"\\n\" : '') . $this->element($Element);\n            $autoBreak = $autoBreakNext;\n        }\n\n        $markup .= $autoBreak ? \"\\n\" : '';\n\n        return $markup;\n    }\n\n    # ~\n\n    protected function li($lines)\n    {\n        $Elements = $this->linesElements($lines);\n\n        if ( ! in_array('', $lines)\n            and isset($Elements[0]) and isset($Elements[0]['name'])\n            and $Elements[0]['name'] === 'p'\n        ) {\n            unset($Elements[0]['name']);\n        }\n\n        return $Elements;\n    }\n\n    #\n    # AST Convenience\n    #\n\n    /**\n     * Replace occurrences $regexp with $Elements in $text. Return an array of\n     * elements representing the replacement.\n     */\n    protected static function pregReplaceElements($regexp, $Elements, $text)\n    {\n        $newElements = array();\n\n        while (preg_match($regexp, $text, $matches, PREG_OFFSET_CAPTURE))\n        {\n            $offset = $matches[0][1];\n            $before = substr($text, 0, $offset);\n            $after = substr($text, $offset + strlen($matches[0][0]));\n\n            $newElements[] = array('text' => $before);\n\n            foreach ($Elements as $Element)\n            {\n                $newElements[] = $Element;\n            }\n\n            $text = $after;\n        }\n\n        $newElements[] = array('text' => $text);\n\n        return $newElements;\n    }\n\n    #\n    # Deprecated Methods\n    #\n\n    function parse($text)\n    {\n        $markup = $this->text($text);\n\n        return $markup;\n    }\n\n    protected function sanitiseElement(array $Element)\n    {\n        static $goodAttribute = '/^[a-zA-Z0-9][a-zA-Z0-9-_]*+$/';\n        static $safeUrlNameToAtt  = array(\n            'a'   => 'href',\n            'img' => 'src',\n        );\n\n        if ( ! isset($Element['name']))\n        {\n            unset($Element['attributes']);\n            return $Element;\n        }\n\n        if (isset($safeUrlNameToAtt[$Element['name']]))\n        {\n            $Element = $this->filterUnsafeUrlInAttribute($Element, $safeUrlNameToAtt[$Element['name']]);\n        }\n\n        if ( ! empty($Element['attributes']))\n        {\n            foreach ($Element['attributes'] as $att => $val)\n            {\n                # filter out badly parsed attribute\n                if ( ! preg_match($goodAttribute, $att))\n                {\n                    unset($Element['attributes'][$att]);\n                }\n                # dump onevent attribute\n                elseif (self::striAtStart($att, 'on'))\n                {\n                    unset($Element['attributes'][$att]);\n                }\n            }\n        }\n\n        return $Element;\n    }\n\n    protected function filterUnsafeUrlInAttribute(array $Element, $attribute)\n    {\n        foreach ($this->safeLinksWhitelist as $scheme)\n        {\n            if (self::striAtStart($Element['attributes'][$attribute], $scheme))\n            {\n                return $Element;\n            }\n        }\n\n        $Element['attributes'][$attribute] = str_replace(':', '%3A', $Element['attributes'][$attribute]);\n\n        return $Element;\n    }\n\n    #\n    # Static Methods\n    #\n\n    protected static function escape($text, $allowQuotes = false)\n    {\n        return htmlspecialchars($text, $allowQuotes ? ENT_NOQUOTES : ENT_QUOTES, 'UTF-8');\n    }\n\n    protected static function striAtStart($string, $needle)\n    {\n        $len = strlen($needle);\n\n        if ($len > strlen($string))\n        {\n            return false;\n        }\n        else\n        {\n            return strtolower(substr($string, 0, $len)) === strtolower($needle);\n        }\n    }\n\n    static function instance($name = 'default')\n    {\n        if (isset(self::$instances[$name]))\n        {\n            return self::$instances[$name];\n        }\n\n        $instance = new static();\n\n        self::$instances[$name] = $instance;\n\n        return $instance;\n    }\n\n    private static $instances = array();\n\n    #\n    # Fields\n    #\n\n    protected $DefinitionData;\n\n    #\n    # Read-Only\n\n    protected $specialCharacters = array(\n        '\\\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|', '~'\n    );\n\n    protected $StrongRegex = array(\n        '*' => '/^[*]{2}((?:\\\\\\\\\\*|[^*]|[*][^*]*+[*])+?)[*]{2}(?![*])/s',\n        '_' => '/^__((?:\\\\\\\\_|[^_]|_[^_]*+_)+?)__(?!_)/us',\n    );\n\n    protected $EmRegex = array(\n        '*' => '/^[*]((?:\\\\\\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s',\n        '_' => '/^_((?:\\\\\\\\_|[^_]|__[^_]*__)+?)_(?!_)\\b/us',\n    );\n\n    protected $regexHtmlAttribute = '[a-zA-Z_:][\\w:.-]*+(?:\\s*+=\\s*+(?:[^\"\\'=<>`\\s]+|\"[^\"]*+\"|\\'[^\\']*+\\'))?+';\n\n    protected $voidElements = array(\n        'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source',\n    );\n\n    protected $textLevelElements = array(\n        'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont',\n        'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing',\n        'i', 'rp', 'del', 'code',          'strike', 'marquee',\n        'q', 'rt', 'ins', 'font',          'strong',\n        's', 'tt', 'kbd', 'mark',\n        'u', 'xm', 'sub', 'nobr',\n                   'sup', 'ruby',\n                   'var', 'span',\n                   'wbr', 'time',\n    );\n}"
  },
  {
    "path": "includes/Parsedown/index.php",
    "content": "Directory listing not allowed."
  },
  {
    "path": "includes/captcha.php",
    "content": "<?php\n// ...\n?>"
  },
  {
    "path": "includes/captchabg/index.php",
    "content": ""
  },
  {
    "path": "includes/fonts/index.php",
    "content": ""
  },
  {
    "path": "includes/functions.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\ndeclare(strict_types=1);\n\n// Set default timezone\ndate_default_timezone_set('UTC');\n\n// Start database connection\ntry {\n    $dsn = \"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\";\n    $pdo = new PDO($dsn, $dbuser, $dbpassword, [\n        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,\n        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\n        PDO::ATTR_EMULATE_PREPARES => false,\n    ]);\n} catch (PDOException $e) {\n    die(\"Unable to connect to database: \" . $e->getMessage());\n}\n\nfunction str_contains_polyfill(string $haystack, string $needle, bool $ignoreCase = false): bool\n{\n    if (function_exists('str_contains')) {\n        return str_contains($haystack, $needle);\n    }\n    if ($ignoreCase) {\n        $haystack = strtolower($haystack);\n        $needle = strtolower($needle);\n    }\n    return strpos($haystack, $needle) !== false;\n}\n\n// Encrypt pastes with AES-256-CBC from our randomly generated $sec_key\nfunction encrypt(string $value, string $sec_key): string\n{\n    $cipher = \"AES-256-CBC\";\n    $ivlen = openssl_cipher_iv_length($cipher);\n    $iv = openssl_random_pseudo_bytes($ivlen);\n    $encrypted = openssl_encrypt($value, $cipher, $sec_key, OPENSSL_RAW_DATA, $iv);\n    if ($encrypted === false) {\n        throw new RuntimeException('Encryption failed.');\n    }\n    $hmac = hash_hmac('sha256', $encrypted, $sec_key, true);\n    return base64_encode($iv . $hmac . $encrypted);\n}\n\nfunction decrypt(string $value, string $sec_key): ?string\n{\n    $decoded = base64_decode($value, true);\n    if ($decoded === false) {\n        return null;\n    }\n    $cipher = \"AES-256-CBC\";\n    $ivlen = openssl_cipher_iv_length($cipher);\n    $sha256len = 32;\n    if (strlen($decoded) < $ivlen + $sha256len) {\n        return null;\n    }\n    $iv = substr($decoded, 0, $ivlen);\n    $hmac = substr($decoded, $ivlen, $sha256len);\n    $encrypted = substr($decoded, $ivlen + $sha256len);\n    $calculated_hmac = hash_hmac('sha256', $encrypted, $sec_key, true);\n    if (!hash_equals($hmac, $calculated_hmac)) {\n        return null;\n    }\n    $decrypted = openssl_decrypt($encrypted, $cipher, $sec_key, OPENSSL_RAW_DATA, $iv);\n    return $decrypted !== false ? $decrypted : null;\n}\n\nfunction deleteMyPaste(PDO $pdo, int $paste_id): bool\n{\n    try {\n        $query = \"DELETE FROM pastes WHERE id = :paste_id\";\n        $stmt = $pdo->prepare($query);\n        return $stmt->execute(['paste_id' => $paste_id]);\n    } catch (PDOException $e) {\n        error_log(\"Failed to delete paste ID {$paste_id}: \" . $e->getMessage());\n        return false;\n    }\n}\n\nif (isset($_POST['delete']) && isset($_SESSION['username']) && isset($paste_id)) {\n    try {\n        // Verify ownership\n        $stmt = $pdo->prepare(\"SELECT member FROM pastes WHERE id = ?\");\n        $stmt->execute([$paste_id]);\n        $paste = $stmt->fetch(PDO::FETCH_ASSOC);\n        if ($paste && $paste['member'] === $_SESSION['username']) {\n            if (deleteMyPaste($pdo, $paste_id)) {\n                header(\"Location: \" . ($mod_rewrite ? $baseurl . \"/profile\" : $baseurl . \"/profile.php\"));\n                exit;\n            } else {\n                $error = \"Failed to delete paste.\";\n            }\n        } else {\n            $error = \"You do not have permission to delete this paste.\";\n        }\n    } catch (Exception $e) {\n        $error = \"Error deleting paste: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n    }\n}\n\nfunction getRecent(PDO $pdo, int $count = 5, int $offset = 0, string $sortColumn = 'date', string $sortDirection = 'DESC'): array\n{\n    try {\n        $sortColumn = in_array($sortColumn, ['date', 'title', 'code', 'views']) ? $sortColumn : 'date';\n        $sortDirection = in_array($sortDirection, ['ASC', 'DESC']) ? $sortDirection : 'DESC';\n        $query = \"SELECT id, title, content, visible, code, expiry, password, member, date, UNIX_TIMESTAMP(date) AS now_time, encrypt \n                  FROM pastes WHERE visible = '0' AND password = 'NONE' ORDER BY $sortColumn $sortDirection LIMIT :count OFFSET :offset\";\n        $stmt = $pdo->prepare($query);\n        $stmt->bindValue(':count', $count, PDO::PARAM_INT);\n        $stmt->bindValue(':offset', $offset, PDO::PARAM_INT);\n        $stmt->execute();\n        $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);\n        foreach ($rows as &$row) {\n            if ($row['encrypt'] == \"1\") {\n                $row['content'] = decrypt($row['content'], hex2bin(SECRET)) ?? '';\n                $row['title'] = decrypt($row['title'], hex2bin(SECRET)) ?? $row['title'];\n            }\n        }\n        unset($row);\n        return $rows;\n    } catch (PDOException $e) {\n        error_log(\"Failed to fetch recent pastes: \" . $e->getMessage());\n        return [];\n    }\n}\n\nfunction getUserRecent(PDO $pdo, string $username, int $count = 5): array\n{\n    try {\n        $query = \"SELECT id, title, content, visible, code, expiry, password, member, date, UNIX_TIMESTAMP(date) AS now_time, encrypt \n                  FROM pastes WHERE member = :username ORDER BY id DESC LIMIT :count\";\n        $stmt = $pdo->prepare($query);\n        $stmt->bindValue(':username', $username, PDO::PARAM_STR);\n        $stmt->bindValue(':count', $count, PDO::PARAM_INT);\n        $stmt->execute();\n        $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);\n        foreach ($rows as &$row) {\n            if ($row['encrypt'] == \"1\") {\n                $row['content'] = decrypt($row['content'], hex2bin(SECRET)) ?? '';\n                $row['title'] = decrypt($row['title'], hex2bin(SECRET)) ?? $row['title'];\n            }\n        }\n        unset($row);\n        return $rows;\n    } catch (PDOException $e) {\n        error_log(\"Failed to fetch user recent pastes for {$username}: \" . $e->getMessage());\n        return [];\n    }\n}\n\nfunction getUserPastes(PDO $pdo, string $username): array\n{\n    try {\n        $query = \"\n            SELECT p.id, p.title, p.content, p.visible, p.code, p.password, p.member, p.date, \n                   UNIX_TIMESTAMP(p.date) AS now_time, p.encrypt, p.expiry, \n                   COALESCE(COUNT(pv.id), 0) AS views\n            FROM pastes p\n            LEFT JOIN paste_views pv ON p.id = pv.paste_id\n            WHERE p.member = :username\n            GROUP BY p.id, p.title, p.content, p.visible, p.code, p.password, p.member, p.date, p.encrypt, p.expiry\n            ORDER BY p.id DESC\n        \";\n        $stmt = $pdo->prepare($query);\n        $stmt->bindValue(':username', $username, PDO::PARAM_STR);\n        $stmt->execute();\n        $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);\n        foreach ($rows as &$row) {\n            if ($row['encrypt'] == \"1\") {\n                $row['content'] = decrypt($row['content'], hex2bin(SECRET)) ?? '';\n                $row['title'] = decrypt($row['title'], hex2bin(SECRET)) ?? $row['title'];\n            }\n        }\n        unset($row);\n        return $rows;\n    } catch (PDOException $e) {\n        error_log(\"Failed to fetch user pastes for $username: \" . $e->getMessage());\n        return [];\n    }\n}\n\nfunction getTotalPastes(PDO $pdo, string $username): int\n{\n    try {\n        $query = \"SELECT COUNT(*) FROM pastes WHERE member = :username\";\n        $stmt = $pdo->prepare($query);\n        $stmt->execute(['username' => $username]);\n        return (int) $stmt->fetchColumn();\n    } catch (PDOException $e) {\n        error_log(\"Failed to count pastes for {$username}: \" . $e->getMessage());\n        return 0;\n    }\n}\n\nfunction isValidUsername(string $str): bool\n{\n    return preg_match('/^[A-Za-z0-9.#\\\\-$]+$/', $str) === 1;\n}\n\nfunction existingUser(PDO $pdo, string $username): bool\n{\n    try {\n        $query = \"SELECT COUNT(*) FROM users WHERE username = :username\";\n        $stmt = $pdo->prepare($query);\n        $stmt->execute(['username' => $username]);\n        return $stmt->fetchColumn() > 0;\n    } catch (PDOException $e) {\n        error_log(\"Failed to check existing user {$username}: \" . $e->getMessage());\n        return false;\n    }\n}\n\n// Function to get paste view count from paste_views\nfunction getPasteViewCount(PDO $pdo, int $paste_id): int\n{\n    try {\n        $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM paste_views WHERE paste_id = :paste_id\");\n        $stmt->execute(['paste_id' => $paste_id]);\n        return (int) $stmt->fetchColumn();\n    } catch (PDOException $e) {\n        error_log(\"Failed to get view count for paste ID {$paste_id}: \" . $e->getMessage());\n        return 0;\n    }\n}\n\nfunction pageViewTrack(PDO $pdo, string $ip): void {\n    $date = date('Y-m-d');\n    try {\n        $stmt = $pdo->prepare(\"SELECT id, tpage, tvisit FROM page_view WHERE date = ?\");\n        $stmt->execute([$date]);\n        $row = $stmt->fetch();\n\n        if ($row) {\n            $page_view_id = $row['id'];\n            $tpage = (int)$row['tpage'] + 1;\n            $tvisit = (int)$row['tvisit'];\n\n            $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM visitor_ips WHERE ip = ? AND visit_date = ?\");\n            $stmt->execute([$ip, $date]);\n            if ($stmt->fetchColumn() == 0) {\n                $tvisit += 1;\n                $stmt = $pdo->prepare(\"INSERT INTO visitor_ips (ip, visit_date) VALUES (?, ?)\");\n                $stmt->execute([$ip, $date]);\n            }\n\n            $stmt = $pdo->prepare(\"UPDATE page_view SET tpage = ?, tvisit = ? WHERE id = ?\");\n            $stmt->execute([$tpage, $tvisit, $page_view_id]);\n        } else {\n            $stmt = $pdo->prepare(\"INSERT INTO page_view (date, tpage, tvisit) VALUES (?, ?, ?)\");\n            $stmt->execute([$date, 1, 1]);\n\n            $stmt = $pdo->prepare(\"INSERT INTO visitor_ips (ip, visit_date) VALUES (?, ?)\");\n            $stmt->execute([$ip, $date]);\n        }\n    } catch (PDOException $e) {\n        error_log(\"Page view tracking error: \" . $e->getMessage());\n    }\n}\n\nfunction updateMyView(PDO $pdo, int $paste_id): bool\n{\n    try {\n        $ip = $_SERVER['REMOTE_ADDR'];\n        $view_date = date('Y-m-d');\n\n        // Check if this IP has viewed the paste today\n        $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM paste_views WHERE paste_id = :paste_id AND ip = :ip AND view_date = :view_date\");\n        $stmt->execute(['paste_id' => $paste_id, 'ip' => $ip, 'view_date' => $view_date]);\n        $has_viewed = $stmt->fetchColumn() > 0;\n\n        if (!$has_viewed) {\n            // Log the unique view in paste_views table\n            $stmt = $pdo->prepare(\"INSERT INTO paste_views (paste_id, ip, view_date) VALUES (:paste_id, :ip, :view_date)\");\n            $stmt->execute(['paste_id' => $paste_id, 'ip' => $ip, 'view_date' => $view_date]);\n            return true;\n        }\n\n        return false; // Not a unique view\n    } catch (PDOException $e) {\n        error_log(\"Failed to update view count for paste ID {$paste_id}: \" . $e->getMessage());\n        return false;\n    }\n}\n\n// Function to format file size in a human-readable format for view.php\nfunction formatSize($bytes) {\n    if ($bytes >= 1024 * 1024) {\n        return number_format($bytes / (1024 * 1024), 2) . ' MB';\n    } elseif ($bytes >= 1024) {\n        return number_format($bytes / 1024, 2) . ' KB';\n    } else {\n        return $bytes . ' bytes';\n    }\n}\n\nfunction conTime(int $timestamp): string\n{\n    if ($timestamp <= 0) {\n        return '0 seconds';\n    }\n    $now = time();\n    $diff = $now - $timestamp;\n    if ($diff < 0) {\n        return 'In the future';\n    }\n    $periods = [\n        'year' => 31536000,\n        'month' => 2592000,\n        'day' => 86400,\n        'hour' => 3600,\n        'minute' => 60,\n        'second' => 1\n    ];\n    $result = '';\n    foreach ($periods as $name => $duration) {\n        $value = floor($diff / $duration);\n        if ($value >= 1) {\n            $result .= \"$value $name\" . ($value > 1 ? 's' : '') . ' ';\n            $diff -= $value * $duration;\n        }\n    }\n    return trim($result) ?: 'just now';\n}\n\nfunction getRelativeTime(int $seconds): string\n{\n    if ($seconds <= 0) {\n        return '0 seconds';\n    }\n    $now = new DateTime('@0');\n    $then = new DateTime(\"@$seconds\");\n    $diff = $now->diff($then);\n    $ret = '';\n    foreach ([\n        'y' => 'year',\n        'm' => 'month',\n        'd' => 'day',\n        'h' => 'hour',\n        'i' => 'minute',\n        's' => 'second'\n    ] as $time => $timename) {\n        if ($diff->$time !== 0) {\n            $ret .= $diff->$time . ' ' . $timename;\n            if (abs($diff->$time) !== 1) {\n                $ret .= 's';\n            }\n            $ret .= ' ';\n        }\n    }\n    return trim($ret);\n}\n\nfunction formatRealTime(string $dateStr): string\n{\n    // Convert database date (Y-m-d H:i:s) to a formatted date with time\n    if (empty($dateStr)) {\n        return 'Invalid date';\n    }\n    try {\n        $date = new DateTime($dateStr, new DateTimeZone('UTC'));\n        return $date->format('jS F Y H:i'); // e.g., \"11th August 2025 23:43\"\n    } catch (Exception $e) {\n        return 'Invalid date';\n    }\n}\n\nfunction truncate(string $input, int $maxWords, int $maxChars): string\n{\n    $words = preg_split('/\\s+/', trim($input), $maxWords + 1, PREG_SPLIT_NO_EMPTY);\n    $words = array_slice($words, 0, $maxWords);\n    $result = '';\n    $chars = 0;\n    foreach ($words as $word) {\n        $chars += strlen($word) + 1;\n        if ($chars > $maxChars) {\n            break;\n        }\n        $result .= $word . ' ';\n    }\n    $result = rtrim($result);\n    return $result === $input ? $result : $result . '[...]';\n}\n\nfunction doDownload(int $paste_id, string $p_title, string $p_content, string $p_code): bool\n{\n    if (!$p_code || !$p_content) {\n        header('HTTP/1.1 404 Not Found');\n        return false;\n    }\n    $ext = match ($p_code) {\n        'bash' => 'sh',\n        'actionscript', 'html4strict' => 'html',\n        'javascript' => 'js',\n        'perl' => 'pl',\n        'csharp' => 'cs',\n        'ruby' => 'rb',\n        'python' => 'py',\n        'sql' => 'sql',\n        'php' => 'php',\n        'c' => 'c',\n        'cpp' => 'cpp',\n        'css' => 'css',\n        'xml' => 'xml',\n        default => 'txt',\n    };\n    header('Content-Type: text/plain; charset=utf-8');\n    header('Content-Disposition: attachment; filename=\"' . htmlspecialchars($p_title, ENT_QUOTES, 'UTF-8') . '.' . $ext . '\"');\n    echo $p_content;\n    return true;\n}\n\nfunction rawView(int $paste_id, string $p_title, string $p_content, string $p_code): bool\n{\n    if (!$paste_id || !$p_code || !$p_content) {\n        header('HTTP/1.1 404 Not Found');\n        error_log(\"Debug: rawView - Invalid input: paste_id=$paste_id, p_code=$p_code, p_content length=\" . strlen($p_content));\n        return false;\n    }\n    header('Content-Type: text/plain; charset=utf-8');\n    echo $p_content;\n    return true;\n}\n\nfunction embedView( $paste_id, $p_title, $p_content, $p_code, $title, $baseurl, $ges_style, $lang ) {\n    $stats = false;\n    if ( $p_content ) {\n        $output = \"<div class='paste_embed_container'>\";\n        $output .= \"<style>\n            .paste_embed_container {\n                font-family: monospace;\n                font-size: 13px;\n                color: #333;\n                background: #fff;\n                border-radius: 8px;\n                overflow: hidden;\n                border: 1px solid #ccc;\n                margin-bottom: 1em;\n                position: relative;\n                box-shadow: 0 4px 12px rgba(0,0,0,0.1);\n                direction: ltr;\n            }\n            /* Footer with black gradient */\n            .paste_embed_footer {\n                font-size: 12px;\n                padding: 8px;\n                background: linear-gradient(90deg, #000000, #333333);\n                color: #ffffff;\n                border-top: 1px solid #ccc;\n            }\n            .paste_embed_footer a {\n                color: #ffffff;\n                text-decoration: none;\n            }\n            .paste_embed_footer a:hover {\n                text-decoration: underline;\n            }\n            .paste_embed_code {\n                margin: 0;\n                padding: 12px;\n                max-height: 300px;\n                overflow-y: auto;\n                overflow-x: auto;\n                scroll-behavior: smooth;\n                position: relative;\n                background: #fafafa;\n            }\n            /* Fade effect */\n            .fade-out {\n                position: absolute;\n                bottom: 38px;\n                left: 0;\n                right: 0;\n                height: 40px;\n                background: linear-gradient(to bottom, rgba(250,250,250,0) 0%, rgba(250,250,250,1) 100%);\n                pointer-events: none;\n            }\n            $ges_style\n        </style>\";\n\n        // Code content\n        $output .= \"<div class='paste_embed_code'>\" . $p_content . \"</div>\";\n        $output .= \"<div class='fade-out'></div>\";\n\n        // Footer\n        $output .= \"<div class='paste_embed_footer'>\n            <a href='$baseurl/$paste_id'>$p_title</a> {$lang['embed-hosted-by']}\n            <a href='$baseurl'>$title</a> | \n            <a href='$baseurl/raw/$paste_id'>\" . strtolower($lang['view-raw']) . \"</a>\n        </div>\";\n\n        $output .= \"</div>\";\n\n        header( 'Content-type: text/javascript; charset=utf-8;' );\n        echo 'document.write(' . json_encode( $output ) . ')';\n        $stats = true;\n    } else {\n        header( 'HTTP/1.1 404 Not Found' );\n    }\n    return $stats;\n}\n\n\nfunction getEmbedUrl($paste_id, $mod_rewrite, $baseurl) {\n    if ($mod_rewrite) {\n        return $baseurl . 'embed/' . $paste_id;\n    } else {\n        return $baseurl . 'paste.php?embed&id=' . $paste_id;\n    }\n}\n\nfunction addToSitemap(PDO $pdo, int $paste_id, string $priority, string $changefreq, bool $mod_rewrite): bool\n{\n    try {\n\t    global $baseurl, $mod_rewrite;\n        $c_date = date('Y-m-d H:i:s');\n        $server_name = $mod_rewrite\n            ? $baseurl . $paste_id\n            : $baseurl . \"paste.php?id=\" . $paste_id;\n        $site_data = file_exists('sitemap.xml') ? file_get_contents('sitemap.xml') : '<?xml version=\"1.0\" encoding=\"UTF-8\"?><urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">';\n        $site_data = rtrim($site_data, \"</urlset>\");\n        $c_sitemap = \"\\t<url>\\n\\t\\t<loc>\" . htmlspecialchars($server_name, ENT_QUOTES, 'UTF-8') . \"</loc>\\n\\t\\t<priority>$priority</priority>\\n\\t\\t<changefreq>$changefreq</changefreq>\\n\\t\\t<lastmod>$c_date</lastmod>\\n\\t</url>\\n</urlset>\";\n        $full_map = $site_data . $c_sitemap;\n        return file_put_contents('sitemap.xml', $full_map) !== false;\n    } catch (Exception $e) {\n        error_log(\"Failed to update sitemap for paste ID {$paste_id}: \" . $e->getMessage());\n        return false;\n    }\n}\n\nfunction is_banned(PDO $pdo, string $ip): bool\n{\n    try {\n        $query = \"SELECT COUNT(*) FROM ban_user WHERE ip = :ip\";\n        $stmt = $pdo->prepare($query);\n        $stmt->execute(['ip' => $ip]);\n        return $stmt->fetchColumn() > 0;\n    } catch (PDOException $e) {\n        error_log(\"Failed to check ban status for IP {$ip}: \" . $e->getMessage());\n        return false;\n    }\n}\n\n// Get a single page by its slug-like name (pages.page_name), only if active.\nfunction getPageByName(PDO $pdo, string $page_name): ?array\n{\n    try {\n        $stmt = $pdo->prepare(\"\n            SELECT id, last_date, page_name, page_title, page_content, location, nav_parent, sort_order, is_active\n            FROM pages\n            WHERE page_name = :name AND is_active = 1\n            LIMIT 1\n        \");\n        $stmt->execute(['name' => $page_name]);\n        $row = $stmt->fetch();\n        return $row ?: null;\n    } catch (PDOException $e) {\n        error_log(\"getPageByName failed for {$page_name}: \" . $e->getMessage());\n        return null;\n    }\n}\n\n/**\n * Build a page URL that respects mod_rewrite.\n * With mod_rewrite:  {$baseurl}page/{page_name}\n * Without:          {$baseurl}page.php?p={page_name}\n */\nfunction getPageUrl(string $page_name): string\n{\n    global $baseurl, $mod_rewrite;\n\n    $safe = rawurlencode($page_name);\n    if (!empty($mod_rewrite) && $mod_rewrite === \"1\") {\n        return rtrim($baseurl, '/') . '/page/' . $safe;\n    }\n    return rtrim($baseurl, '/') . '/pages.php?p=' . $safe;\n}\n\n/**\n * Fetch pages for a given location (header|footer).\n * Returns a hierarchical array: each item has keys: id, name, title, url, children[]\n */\nfunction getNavLinks(PDO $pdo, string $location): array\n{\n    $location = in_array($location, ['header', 'footer'], true) ? $location : 'header';\n\n    try {\n        // Get all active pages that match this location or are marked for both\n        $stmt = $pdo->prepare(\"\n            SELECT id, page_name, page_title, nav_parent, sort_order\n            FROM pages\n            WHERE is_active = 1\n              AND (location = :loc OR location = 'both')\n            ORDER BY sort_order ASC, page_title ASC\n        \");\n        $stmt->execute(['loc' => $location]);\n        $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);\n\n        // Index by id, pre-fill structure\n        $items = [];\n        foreach ($rows as $r) {\n            $items[(int)$r['id']] = [\n                'id'       => (int)$r['id'],\n                'name'     => (string)$r['page_name'],\n                'title'    => (string)$r['page_title'],\n                'parent'   => $r['nav_parent'] !== null ? (int)$r['nav_parent'] : null,\n                'order'    => (int)$r['sort_order'],\n                'url'      => getPageUrl((string)$r['page_name']),\n                'children' => [],\n            ];\n        }\n\n        // Build tree\n        $tree = [];\n        foreach ($items as $id => &$node) {\n            if ($node['parent'] !== null && isset($items[$node['parent']])) {\n                $items[$node['parent']]['children'][] = &$node;\n            } else {\n                $tree[] = &$node;\n            }\n        }\n        unset($node); // break reference\n\n        // Ensure children are sorted (by sort_order then title)\n        $sortFn = static function (&$list) use (&$sortFn) {\n            usort($list, static function ($a, $b) {\n                return ($a['order'] <=> $b['order']) ?: strcasecmp($a['title'], $b['title']);\n            });\n            foreach ($list as &$i) {\n                if (!empty($i['children'])) {\n                    $sortFn($i['children']);\n                }\n            }\n            unset($i);\n        };\n        $sortFn($tree);\n\n        return $tree;\n    } catch (PDOException $e) {\n        error_log(\"getNavLinks failed for {$location}: \" . $e->getMessage());\n        return [];\n    }\n}\n\n\n// Simple HTML renderer for nav links.\nfunction renderNavListSimple(array $links, string $separator = ''): string\n{\n    // Render a flat inline list if separator provided, else nested <ul>\n    if ($separator !== '') {\n        $flat = [];\n        $stack = $links;\n        while ($stack) {\n            $node = array_shift($stack);\n            $flat[] = '<a href=\"' . htmlspecialchars($node['url'], ENT_QUOTES, 'UTF-8') . '\">' .\n                      htmlspecialchars($node['title'], ENT_QUOTES, 'UTF-8') . '</a>';\n            foreach ($node['children'] as $child) {\n                $stack[] = $child;\n            }\n        }\n        return implode($separator, $flat);\n    }\n\n    $render = static function (array $nodes) use (&$render): string {\n        $html = \"<ul>\";\n        foreach ($nodes as $n) {\n            $html .= '<li><a href=\"' . htmlspecialchars($n['url'], ENT_QUOTES, 'UTF-8') . '\">' .\n                     htmlspecialchars($n['title'], ENT_QUOTES, 'UTF-8') . '</a>';\n            if (!empty($n['children'])) {\n                $html .= $render($n['children']);\n            }\n            $html .= '</li>';\n        }\n        $html .= \"</ul>\";\n        return $html;\n    };\n    return $render($links);\n}\n\n// Fetch only the content of a page by name if active (helper for page.php).\nfunction getPageContentByName(PDO $pdo, string $page_name): ?array\n{\n    try {\n        $stmt = $pdo->prepare(\"\n            SELECT page_title, page_content, last_date\n            FROM pages\n            WHERE page_name = :name AND is_active = 1\n            LIMIT 1\n        \");\n        $stmt->execute(['name' => $page_name]);\n        $row = $stmt->fetch(PDO::FETCH_ASSOC);\n        return $row ?: null;\n    } catch (PDOException $e) {\n        error_log(\"getPageContentByName failed for {$page_name}: \" . $e->getMessage());\n        return null;\n    }\n}\n\n/**\n * Bootstrap 5 nav renderer (supports one dropdown level).\n * Returns <li> items ready to live inside <ul class=\"navbar-nav\">.\n */\nfunction renderBootstrapNav(array $links): string\n{\n    $html = '';\n    foreach ($links as $item) {\n        $title = htmlspecialchars($item['title'], ENT_QUOTES, 'UTF-8');\n        $url   = htmlspecialchars($item['url'],   ENT_QUOTES, 'UTF-8');\n\n        if (!empty($item['children'])) {\n            $id = 'dd_' . $item['id'];\n            $html .= '<li class=\"nav-item dropdown\">';\n            $html .= '<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"'. $id .'\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">'. $title .'</a>';\n            $html .= '<ul class=\"dropdown-menu\" aria-labelledby=\"'. $id .'\">';\n            foreach ($item['children'] as $child) {\n                $ctitle = htmlspecialchars($child['title'], ENT_QUOTES, 'UTF-8');\n                $curl   = htmlspecialchars($child['url'],   ENT_QUOTES, 'UTF-8');\n                $html  .= '<li><a class=\"dropdown-item\" href=\"'. $curl .'\">'. $ctitle .'</a></li>';\n            }\n            $html .= '</ul></li>';\n        } else {\n            $html .= '<li class=\"nav-item\"><a class=\"nav-link\" href=\"'. $url .'\">'. $title .'</a></li>';\n        }\n    }\n    return $html;\n}\n\n/**\n * sanitizer for Markdown output.\n * Keeps only common Markdown tags + safe attributes, strips on* and style, validates href/src.\n */\nif (!function_exists('sanitize_allowlist_html')) {\n    function sanitize_allowlist_html(string $html): string {\n        $allowedTags = [\n            'p','br','hr','em','strong','i','b','u','s','del','ins','code','pre','kbd','samp',\n            'blockquote','ul','ol','li','dl','dt','dd',\n            'h1','h2','h3','h4','h5','h6',\n            'table','thead','tbody','tfoot','tr','th','td',\n            'a','img'\n        ];\n        $allowedAttrs = [\n            'a'   => ['href','title'],\n            'img' => ['src','alt','title'],\n            '*'   => [] // no other attributes anywhere\n        ];\n\n        $prev = libxml_use_internal_errors(true);\n        $doc = new DOMDocument();\n        $doc->loadHTML('<?xml encoding=\"utf-8\" ?>'.$html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);\n        libxml_clear_errors();\n        libxml_use_internal_errors($prev);\n\n        $walker = function(DOMNode $node) use (&$walker, $allowedTags, $allowedAttrs) {\n            for ($i = $node->childNodes->length - 1; $i >= 0; $i--) {\n                $child = $node->childNodes->item($i);\n                if (!($child instanceof DOMElement)) continue;\n\n                $tag = strtolower($child->nodeName);\n                if (!in_array($tag, $allowedTags, true)) {\n                    // unwrap unknown element but keep its children/text\n                    while ($child->firstChild) {\n                        $node->insertBefore($child->firstChild, $child);\n                    }\n                    $node->removeChild($child);\n                    continue;\n                }\n\n                // clean attributes\n                $allowed = $allowedAttrs[$tag] ?? $allowedAttrs['*'];\n                $toRemove = [];\n                foreach (iterator_to_array($child->attributes) as $attr) {\n                    $name = strtolower($attr->name);\n                    $val  = $attr->value;\n\n                    // nuke event handlers and inline styles entirely\n                    if (str_starts_with($name, 'on') || $name === 'style') { $toRemove[] = $name; continue; }\n\n                    // enforce allowlist\n                    if (!in_array($name, $allowed, true)) { $toRemove[] = $name; continue; }\n\n                    // validate href/src values\n                    if ($tag === 'a' && $name === 'href') {\n                        if (!preg_match('#^(https?://|mailto:)#i', $val)) { $toRemove[] = $name; continue; }\n                        // add safe rel/target\n                        $child->setAttribute('rel', 'nofollow noopener noreferrer');\n                        $child->setAttribute('target', '_blank');\n                    }\n                    if ($tag === 'img' && $name === 'src') {\n                        // allow only http/https images, disallow svg (can execute scripts)\n                        if (!preg_match('#^https?://#i', $val)) { $toRemove[] = $name; continue; }\n                        $path = parse_url($val, PHP_URL_PATH) ?? '';\n                        if (preg_match('#\\.svg(\\?.*)?$#i', (string)$path)) { $toRemove[] = $name; continue; }\n                    }\n                }\n                foreach ($toRemove as $r) { $child->removeAttribute($r); }\n\n                $walker($child);\n            }\n        };\n        $walker($doc);\n\n        return $doc->saveHTML() ?: '';\n    }\n}\n\n?>"
  },
  {
    "path": "includes/geshi/4cs.php",
    "content": "<?php\n/*************************************************************************************\n * 4cs.php\n * ------\n * Author: Jason Curl (jason.curl@continental-corporation.com)\n * Copyright: (c) 2009 Jason Curl\n * Release Version: 1.0.9.1\n * Date Started: 2009/09/05\n *\n * 4CS language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009/09/05\n *   -  First Release\n *\n * TODO (updated 2009/09/01)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'GADV 4CS',\n    'COMMENT_SINGLE' => array(1 => \"//\"),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'All', 'AllMatches', 'And', 'And_Filters', 'As', 'Asc', 'BasedOn',\n            'BestMatch', 'Block', 'Buffer', 'ByRef', 'ByVal', 'Call', 'Channel',\n            'Chr', 'Clear', 'Close', 'Confirm', 'Const', 'Continue', 'Cos',\n            'Critical', 'Declare', 'Default', 'DefaultChannel', 'DefaultDelayTime',\n            'DefaultReceiveMode', 'DefaultResponseTime', '#Define', 'DelayTime',\n            'Delete', 'Div', 'Else', '#Else', 'ElseIf', '#ElseIf', 'End', 'EndCritical',\n            'EndInlineC', 'EndFunction', 'EndIf', '#EndIf', 'EndInputList',\n            'EndLocalChannel', 'EndScenario', 'EndSub', 'EndWhile', 'Error',\n            'ErrorLevelOff', 'ErrorLevelOn', 'ErrorLevelSet', 'ErrorLevelSetRaw',\n            'Event', 'EventMode', 'EventOff', 'EventOn', 'EventSet', 'EventSetRaw',\n            'Execute', 'Exit', 'Exp', 'FileClose', 'FilterClear', 'FileEOF', 'FileOpen',\n            'FileRead', 'FileSize', 'FileWrite', 'FilterAdd', 'FilterMode',\n            'FilterOff', 'FilterOn', 'For', 'Format', 'Function', 'GoOnline', 'GoTo',\n            'Handle', 'Hide', 'If', '#If', '#IfDef', '#IfNDef', 'Ignore', '#Include',\n            'InlineC', 'Input', 'InputItem', 'InputList', 'Kill', 'LBound', 'LocalChannel',\n            'Local', 'Log', 'Log10', 'LogOff', 'LogOn', 'Loop', 'Message', 'Mod',\n            'MonitorChannel', 'MostFormat', 'MostMessage', 'Named', 'Never', 'Next',\n            'NoOrder', 'Not', 'Nothing', 'NoWait', 'Numeric', 'OnError', 'OnEvent',\n            'Or', 'Or_Filters', 'Order', 'Pass', 'Pow', 'Prototype', 'Quit', 'Raise',\n            'Random', 'Receive', 'ReceiveMode', 'ReceiveRaw', 'Redim', 'Remote', 'Repeat',\n            'Repeated', 'ResponseTime', 'Resume', 'ResumeCritical', 'RT_Common',\n            'RT_Dll_Call', 'RT_FILEIO', 'RT_General', 'RT_HardwareAccess',\n            'RT_MessageVariableAccess', 'RT_Scenario', 'RT_VariableAccess', 'Runtime',\n            'Scenario', 'ScenarioEnd', 'ScenarioStart', 'ScenarioStatus', 'ScenarioTerminate',\n            'Send', 'SendRaw', 'Set', 'SetError', 'Sin', 'Single', 'Show', 'Start',\n            'StartCritical', 'Starts', 'Static', 'Step', 'Stop', 'String', 'Sub',\n            'System_Error', 'TerminateAllChilds', 'Terminates', 'Then', 'Throw', 'TimeOut',\n            'To', 'TooLate', 'Trunc', 'UBound', 'Unexpected', 'Until', 'User_Error',\n            'View', 'Wait', 'Warning', 'While', 'XOr'\n            ),\n        2 => array(\n            'alias', 'winapi', 'long', 'char', 'double', 'float', 'int', 'short', 'lib'\n            )\n        ),\n    'SYMBOLS' => array(\n        '=', ':=', '<', '>', '<>'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000C0; font-weight: bold;',\n            2 => 'color: #808080;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000080;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #800080;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #66cc66;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000080;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/6502acme.php",
    "content": "<?php\n/*************************************************************************************\n * 6502acme.php\n * -------\n * Author: Warren Willmey\n * Copyright: (c) 2010 Warren Willmey.\n * Release Version: 1.0.9.1\n * Date Started: 2010/05/26\n *\n * MOS 6502 (more specifically 6510) ACME Cross Assembler 0.93 by Marco Baye language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/07/22\n *  -  First Release\n *\n * TODO (updated 2010/07/22)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'MOS 6502 (6510) ACME Cross Assembler format',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        /* 6502/6510 Opcodes. */\n        1 => array(\n            'adc', 'and', 'asl', 'bcc', 'bcs', 'beq', 'bit', 'bmi',\n            'bne', 'bpl', 'brk', 'bvc', 'bvs', 'clc', 'cld', 'cli',\n            'clv', 'cmp', 'cpx', 'cpy', 'dec', 'dex', 'dey', 'eor',\n            'inc', 'inx', 'iny', 'jmp', 'jsr', 'lda', 'ldx', 'ldy',\n            'lsr', 'nop', 'ora', 'pha', 'php', 'pla', 'plp', 'rol',\n            'ror', 'rti', 'rts', 'sbc', 'sec', 'sed', 'sei', 'sta',\n            'stx', 'sty', 'tax', 'tay', 'tsx', 'txa', 'txs', 'tya',\n            ),\n        /* Index Registers, yes the 6502 has other registers by they are only\n        * accessable by specific opcodes. The 65816 also has access to the stack pointer S. */\n        2 => array(\n            'x', 'y', 's'\n            ),\n        /* Directives or \"pseudo opcodes\" as defined by ACME 0.93 file AllPOs.txt. */\n        3 => array(\n            '!8', '!08', '!by', '!byte',\n            '!16', '!wo', '!word',\n            '!24', '!32',\n            '!fi', '!fill',\n            '!align',\n            '!ct', '!convtab',\n            '!tx', '!text',\n            '!pet',\n            '!raw',\n            '!scrxor',\n            '!to',\n            '!source',\n            '!bin', '!binary',\n            '!zn', '!zone',\n            '!sl',\n            '!svl',\n            '!sal',\n            '!if', '!ifdef',\n            '!for',\n            '!set',\n            '!do', 'while', 'until',\n            '!eof', '!endoffile',\n            '!warn', '!error', '!serious',\n            '!macro',\n//            , '*='        // Not a valid keyword (uses both * and = signs) moved to symbols instead.\n            '!initmem',\n            '!pseudopc',\n            '!cpu',\n            '!al', '!as', '!rl', '!rs',\n            ),\n\n        /* 6502/6510 undocumented opcodes (often referred to as illegal instructions).\n        *  These are present in the 6502/6510 but NOT in the newer CMOS revisions of the 65C02 or 65816.\n        *  As they are undocumented instructions there are no \"official\" names for them, there are also\n        *  several more that mainly perform various forms of crash and are not supported by ACME 0.93.\n        */\n        4 => array(\n            'anc', 'arr', 'asr', 'dcp', 'dop', 'isc', 'jam', 'lax',\n            'rla', 'rra', 'sax', 'sbx', 'slo', 'sre', 'top',\n            ),\n        /* 65c02 instructions, MOS added a few (much needed) instructions in the CMOS version of the 6502, but stupidly removed the undocumented/illegal opcodes.\n        *  ACME 0.93 does not support the rmb0-7 and smb0-7 instructions (they are currently rem'ed out).  */\n        5 => array(\n            'bra', 'phx', 'phy', 'plx', 'ply', 'stz', 'trb', 'tsb'\n            ),\n        /* 65816 instructions. */\n        6 => array(\n            'brl', 'cop', 'jml', 'jsl', 'mvn', 'mvp', 'pea', 'pei',\n            'per', 'phb', 'phd', 'phk', 'plb', 'pld', 'rep', 'rtl',\n            'sep', 'tcd', 'tcs', 'tdc', 'tsc', 'txy', 'tyx', 'wdm',\n            'xba', 'xce',\n            ),\n        /* Deprecated directives or \"pseudo opcodes\" as defined by ACME 0.93 file AllPOs.txt. */\n        7 => array(\n            '!cbm',\n            '!sz', '!subzone',\n            '!realpc',\n            ),\n        /* Math functions, some are aliases for the symbols. */\n        8 => array(\n            'not', 'div', 'mod', 'xor', 'or', 'sin', 'cos', 'tan',\n            'arcsin', 'arccos', 'arctan', 'int', 'float',\n\n            ),\n\n        ),\n    'SYMBOLS' => array(\n//        '[', ']', '(', ')', '{', '}',    // These are already defined by GeSHi as BRACKETS.\n        '*=', '#', '!', '^', '-', '*', '/',\n        '%', '+', '-', '<<', '>>', '>>>',\n        '<', '>', '^', '<=', '<', '>=', '>', '!=',\n        '=', '&', '|', '<>',\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false,\n        8 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #00f; font-weight:bold;',\n            2 => 'color: #00f; font-weight:bold;',\n            3 => 'color: #080; font-weight:bold;',\n            4 => 'color: #f00; font-weight:bold;',\n            5 => 'color: #80f; font-weight:bold;',\n            6 => 'color: #f08; font-weight:bold;',\n            7 => 'color: #a04; font-weight:bold; font-style: italic;',\n            8 => 'color: #000;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #999; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #009; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #080;'\n            ),\n        'NUMBERS' => array(\n            GESHI_NUMBER_INT_BASIC          => 'color: #f00;',\n            GESHI_NUMBER_HEX_PREFIX_DOLLAR  => 'color: #f00;',\n            GESHI_NUMBER_HEX_PREFIX         => 'color: #f00;',\n            GESHI_NUMBER_BIN_PREFIX_PERCENT => 'color: #f00;',\n            GESHI_NUMBER_FLT_NONSCI         => 'color: #f00;',\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #080;'\n            ),\n        'REGEXPS' => array(\n            0   => 'color: #f00;'\n            , 1 => 'color: #933;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => '',\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC |\n        GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_HEX_PREFIX_DOLLAR |\n        GESHI_NUMBER_HEX_PREFIX |\n        GESHI_NUMBER_BIN_PREFIX_PERCENT,\n        // AMCE Octal format not support and gets picked up as Decimal unfortunately.\n    'REGEXPS' => array(\n        //ACME .# Binary number format. e.g. %..##..##..##\n        0 => '\\%[\\.\\#]{1,64}',\n        //ACME Local Labels\n        1 => '\\.[_a-zA-Z][_a-zA-Z0-9]*',\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 8,\n    'PARSER_CONTROL' => array(\n        'NUMBERS' => array(\n            'PRECHECK_RX' => '/[\\da-fA-F\\.\\$\\%]/'\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/6502kickass.php",
    "content": "<?php\n/*************************************************************************************\n * 6502kickass.php\n * -------\n * Author: Warren Willmey\n * Copyright: (c) 2010 Warren Willmey.\n * Release Version: 1.0.9.1\n * Date Started: 2010/06/07\n *\n * MOS 6502 (6510) Kick Assembler 3.13 language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/07/22\n *  -  First Release\n *\n * TODO (updated 2010/07/22)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'MOS 6502 (6510) Kick Assembler format',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        /* 6502/6510 Opcodes including undocumented opcodes as Kick Assembler 3.13 does not make a distinction - they are ALL valid. */\n        1 => array(\n            'adc', 'ahx', 'alr', 'anc', 'anc2', 'and', 'arr', 'asl',\n            'axs', 'bcc', 'bcs', 'beq', 'bit', 'bmi', 'bne', 'bpl',\n            'brk', 'bvc', 'bvs', 'clc', 'cld', 'cli', 'clv', 'cmp',\n            'cpx', 'cpy', 'dcp', 'dec', 'dex', 'dey', 'eor', 'inc',\n            'inx', 'iny', 'isc', 'jmp', 'jsr', 'las', 'lax', 'lda',\n            'ldx', 'ldy', 'lsr', 'nop', 'ora', 'pha', 'php', 'pla',\n            'plp', 'rla', 'rol', 'ror', 'rra', 'rti', 'rts', 'sax',\n            'sbc', 'sbc2', 'sec', 'sed', 'sei', 'shx', 'shy', 'slo',\n            'sre', 'sta', 'stx', 'sty', 'tas', 'tax', 'tay', 'tsx',\n            'txa', 'txs', 'tya', 'xaa',\n            ),\n        /* DTV additional Opcodes. */\n        2 => array(\n            'bra', 'sac', 'sir'\n            ),\n        /* Index Registers, yes the 6502 has other registers by they are only\n        * accessable by specific opcodes. */\n        3 => array(\n            'x', 'y'\n            ),\n        /* Directives. */\n        4 => array(\n            '.pc', '.pseudopc', 'virtual', '.align', '.byte', '.word', '.text', '.fill',\n            '.import source', '.import binary', '.import c64', '.import text', '.import', '.print', '.printnow',\n            '.error', '.var', '.eval', '.const', '.eval const', '.enum', '.label', '.define', '.struct',\n            'if', '.for', '.macro', '.function', '.return', '.pseudocommand', '.namespace', '.filenamespace',\n            '.assert', '.asserterror',\n            ),\n        /* Kick Assembler 3.13 Functions/Operators. */\n        5 => array(\n            'size', 'charAt', 'substring', 'asNumber', 'asBoolean', 'toIntString', 'toBinaryString', 'toOctalString',\n            'toHexString', 'lock',                                       // String functions/operators.\n            'get', 'set', 'add', 'remove', 'shuffle',                    // List functions.\n            'put', 'keys',                                               // Hashtable functions.\n            'getType', 'getValue', 'CmdArgument',                        // Pseudo Commands functions.\n            'asmCommandSize',                                            // Opcode Constants functions.\n            'LoadBinary', 'getSize',\n            'LoadSid', 'getData',\n            'LoadPicture', 'width', 'height', 'getPixel', 'getSinglecolorByte', 'getMulticolorByte',\n            'createFile', 'writeln',\n            'cmdLineVars',\n            'getX', 'getY', 'getZ',                                             // Vector functions.\n            'RotationMatrix', 'ScaleMatrix', 'MoveMatrix', 'PerspectiveMatrix', // Matrix functions.\n\n            ),\n\n        /* Kick Assembler 3.13 Math Functions. */\n        6 => array(\n            'abs', 'acos', 'asin', 'atan', 'atan2', 'cbrt', 'ceil', 'cos', 'cosh',\n            'exp', 'expm1', 'floor', 'hypot', 'IEEEremainder', 'log', 'log10',\n            'log1p', 'max', 'min', 'pow', 'mod', 'random', 'round', 'signum',\n            'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'toDegrees', 'toRadians',\n            ),\n\n        /* Kick Assembler 3.13 Objects/Data Types. */\n        7 => array(\n            'List',          // List() Object.\n            'Hashtable',     // Hashtable() Object.\n            'Vector',        // Vector() Object.\n            'Matrix',        // Matrix() Object.\n            ),\n\n        /* Kick Assembler 3.13 Constants. */\n        8 => array(\n            'PI', 'E',                                                         // Math Constants.\n            'AT_ABSOLUTE' , 'AT_ABSOLUTEX' , 'AT_ABSOLUTEY' , 'AT_IMMEDIATE',  // Pseudo Commands Constants.\n            'AT_INDIRECT' , 'AT_IZEROPAGEX' , 'AT_IZEROPAGEY' , 'AT_NONE',\n            'BLACK', 'WHITE', 'RED', 'CYAN', 'PURPLE', 'GREEN', 'BLUE',        // Colour Constants.\n            'YELLOW', 'ORANGE', 'BROWN', 'LIGHT_RED', 'DARK_GRAY', 'GRAY',\n            'LIGHT_GREEN', 'LIGHT_BLUE', 'LIGHT_GRAY',\n            'C64FILE',                                                         // Template Tag names.\n            'BF_C64FILE', 'BF_BITMAP_SINGLECOLOR', 'BF_KOALA' , 'BF_FLI',      // Binary format constant\n            ),\n\n        ),\n    'SYMBOLS' => array(\n//        '[', ']', '(', ')', '{', '}',    // These are already defined by GeSHi as BRACKETS.\n        '-', '+', '-', '*', '/', '>', '<', '<<', '>>', '&', '|', '^', '=', '==',\n        '!=', '>=', '<=', '!', '&&', '||', '#',\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #00f; font-weight:bold;',\n            2 => 'color: #00f; font-weight:bold;',\n            3 => 'color: #00f; font-weight:bold;',\n            4 => 'color: #080; font-weight:bold;',\n            5 => 'color: #80f; font-weight:bold;',\n            6 => 'color: #f08; font-weight:bold;',\n            7 => 'color: #a04; font-weight:bold; font-style: italic;',\n            8 => 'color: #f08; font-weight:bold;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #999; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #009; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #080;'\n            ),\n        'NUMBERS' => array(\n            GESHI_NUMBER_INT_BASIC          => 'color: #f00;',\n            GESHI_NUMBER_HEX_PREFIX_DOLLAR  => 'color: #f00;',\n            GESHI_NUMBER_BIN_PREFIX_PERCENT => 'color: #f00;',\n            GESHI_NUMBER_FLT_NONSCI         => 'color: #f00;',\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #080;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #933;',\n            1 => 'color: #933;',\n            2 => 'color: #933;',\n            3 => 'color: #00f; font-weight:bold;',\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => '',\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC |\n        GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_HEX_PREFIX_DOLLAR |\n        GESHI_NUMBER_BIN_PREFIX_PERCENT,\n        // AMCE Octal format not support and gets picked up as Decimal unfortunately.\n    'REGEXPS' => array(\n        //Labels end with a collon.\n        0 => '[!]{0,1}[_a-zA-Z][_a-zA-Z0-9]*\\:',\n        //Multi Labels (local labels) references start with ! and end with + or - for forward/backward reference.\n        1 => '![_a-zA-Z][_a-zA-Z0-9]*[+-]',\n        //Macros start with a colon :Macro.\n        2 => ':[_a-zA-Z][_a-zA-Z0-9]*',\n        // Opcode Constants, such as LDA_IMM, STA_IZPY are basically all 6502 opcodes\n        // in UPPER case followed by _underscore_ and the ADDRESS MODE.\n        // As you might imagine that is rather a lot ( 78 supported Opcodes * 12 Addressing modes = 936 variations)\n        // So I thought it better and easier to maintain as a regular expression.\n        // NOTE: The order of the Address Modes must be maintained or it wont work properly (eg. place ZP first and find out!)\n        3 => '[A-Z]{3}[2]?_(?:IMM|IND|IZPX|IZPY|ZPX|ZPY|ABSX|ABSY|REL|ABS|ZP)',\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 8,\n    'PARSER_CONTROL' => array(\n        'NUMBERS'  => array(\n            'PRECHECK_RX' => '/[\\da-fA-F\\.\\$\\%]/'\n            ),\n        'KEYWORDS' => array(\n            5 => array (\n                'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\|\\;>|^&'\\\"])\"\n                ),\n            6 => array (\n                'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\|\\;>|^&'\\\"])\"\n                ),\n            8 => array (\n                'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\|\\;>|^&'\\\"])\"\n                )\n            )\n        ),\n);\n"
  },
  {
    "path": "includes/geshi/6502tasm.php",
    "content": "<?php\n/*************************************************************************************\n * 6502tasm.php\n * -------\n * Author: Warren Willmey\n * Copyright: (c) 2010 Warren Willmey.\n * Release Version: 1.0.9.1\n * Date Started: 2010/06/02\n *\n * MOS 6502 (6510) TASM/64TASS (64TASS being the super set of TASM) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/07/22\n *  -  First Release\n *\n * TODO (updated 2010/07/22)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'MOS 6502 (6510) TASM/64TASS 1.46 Assembler format',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        /* 6502/6510 Opcodes. */\n        1 => array(\n            'adc', 'and', 'asl', 'bcc', 'bcs', 'beq', 'bit', 'bmi',\n            'bne', 'bpl', 'brk', 'bvc', 'bvs', 'clc', 'cld', 'cli',\n            'clv', 'cmp', 'cpx', 'cpy', 'dec', 'dex', 'dey', 'eor',\n            'inc', 'inx', 'iny', 'jmp', 'jsr', 'lda', 'ldx', 'ldy',\n            'lsr', 'nop', 'ora', 'pha', 'php', 'pla', 'plp', 'rol',\n            'ror', 'rti', 'rts', 'sbc', 'sec', 'sed', 'sei', 'sta',\n            'stx', 'sty', 'tax', 'tay', 'tsx', 'txa', 'txs', 'tya',\n            ),\n        /* Index Registers, yes the 6502 has other registers by they are only\n        * accessable by specific opcodes. The 65816 also has access to the stack pointer S. */\n        2 => array(\n            'x', 'y', 's'\n            ),\n        /* Directives. */\n        3 => array(\n            '.al', '.align', '.as', '.assert', '.binary', '.byte', '.cerror', '.char',\n            '.comment', '.cpu', '.cwarn', '.databank', '.dpage', '.else', '.elsif',\n            '.enc', '.endc', '.endif', '.endm', '.endp', '.error', '.fi', '.fill',\n            '.for', '.here', '.if', '.ifeq', '.ifmi', '.ifne', '.ifpl',\n            '.include', '.int', '.logical', '.long', '.macro', '.next', '.null', '.offs',\n            '.page', '.pend', '.proc', '.rept', '.rta', '.shift', '.text', '.warn', '.word',\n            '.xl', '.xs',\n//            , '*='        // Not a valid keyword (uses both * and = signs) moved to symbols instead.\n            ),\n\n        /* 6502/6510 undocumented opcodes (often referred to as illegal instructions).\n        *  These are present in the 6502/6510 but NOT in the newer CMOS revisions of the 65C02 or 65816.\n        *  As they are undocumented instructions there are no \"official\" names for them, these are the names\n        *  used by 64TASS V1.46.\n        */\n        4 => array(\n            'ahx', 'alr', 'anc', 'ane', 'arr', 'asr', 'axs', 'dcm',\n            'dcp', 'ins', 'isb', 'isc', 'jam', 'lae', 'las', 'lax',\n            'lds', 'lxa', 'rla', 'rra', 'sax', 'sbx', 'sha', 'shs',\n            'shx', 'shy', 'slo', 'sre', 'tas', 'xaa',\n            ),\n        /* 65c02 instructions, MOS added a few (much needed) instructions in the\n        *  CMOS version of the 6502, but stupidly removed the undocumented/illegal opcodes.  */\n        5 => array(\n            'bra', 'dea', 'gra', 'ina', 'phx', 'phy', 'plx', 'ply',\n            'stz', 'trb', 'tsb',\n            ),\n        /* 65816 instructions. */\n        6 => array(\n            'brl', 'cop', 'jml', 'jsl', 'mvn', 'mvp', 'pea', 'pei',\n            'per', 'phb', 'phd', 'phk', 'plb', 'pld', 'rep', 'rtl',\n            'sep', 'stp', 'swa', 'tad', 'tcd', 'tcs', 'tda',\n            'tdc', 'tsa', 'tsc', 'txy', 'tyx', 'wai', 'xba', 'xce',\n            ),\n        /* Deprecated directives (or yet to be implemented). */\n        7 => array(\n            '.global', '.check'\n            ),\n        ),\n    'SYMBOLS' => array(\n//        '[', ']', '(', ')', '{', '}',    // These are already defined by GeSHi as BRACKETS.\n        '*=', '#', '<', '>', '`', '=', '<', '>',\n        '!=', '>=', '<=', '+', '-', '*', '/', '//', '|',\n        '^', '&', '<<', '>>', '-', '~', '!',\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #00f; font-weight:bold;',\n            2 => 'color: #00f; font-weight:bold;',\n            3 => 'color: #080; font-weight:bold;',\n            4 => 'color: #f00; font-weight:bold;',\n            5 => 'color: #80f; font-weight:bold;',\n            6 => 'color: #f08; font-weight:bold;',\n            7 => 'color: #a04; font-weight:bold; font-style: italic;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #999; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #009; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #080;'\n            ),\n        'NUMBERS' => array(\n            GESHI_NUMBER_INT_BASIC          => 'color: #f00;',\n            GESHI_NUMBER_HEX_PREFIX_DOLLAR  => 'color: #f00;',\n            GESHI_NUMBER_BIN_PREFIX_PERCENT => 'color: #f00;',\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #080;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC |\n        GESHI_NUMBER_HEX_PREFIX_DOLLAR |\n        GESHI_NUMBER_BIN_PREFIX_PERCENT,\n        // AMCE Octal format not support and gets picked up as Decimal unfortunately.\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 8,\n    'PARSER_CONTROL' => array(\n        'NUMBERS' => array(\n            'PRECHECK_RX' => '/[\\da-fA-F\\.\\$\\%]/'\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/68000devpac.php",
    "content": "<?php\n/*************************************************************************************\n * 68000devpac.php\n * -------\n * Author: Warren Willmey\n * Copyright: (c) 2010 Warren Willmey.\n * Release Version: 1.0.9.1\n * Date Started: 2010/06/09\n *\n * Motorola 68000 - HiSoft Devpac ST 2 Assembler language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/07/22\n *  -  First Release\n *\n * TODO (updated 2010/07/22)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Motorola 68000 - HiSoft Devpac ST 2 Assembler format',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        /* Directives. */\n        1 => array(\n            'end', 'include', 'incbin', 'opt', 'even', 'cnop', 'dc.b', 'dc.w',\n            'dc.l', 'ds.b', 'ds.w', 'ds.l', 'dcb.b', 'dcb.w', 'dcb.l',\n            'fail', 'output', '__g2', 'rept', 'endr', 'list', 'nolist', 'plen',\n            'llen', 'ttl', 'subttl', 'spc', 'page', 'listchar', 'format',\n            'equ', 'equr', 'set', 'reg', 'rs.b', 'rs.w', 'rs.l', 'rsreset',\n            'rsset', '__rs', 'ifeq', 'ifne', 'ifgt', 'ifge', 'iflt', 'ifle', 'endc',\n            'ifd', 'ifnd', 'ifc', 'ifnc', 'elseif', 'iif', 'macro', 'endm', 'mexit',\n            'narg', '\\@', 'section', 'text', 'data', 'bss', 'xdef', 'xref', 'org',\n            'offset', '__lk', 'comment',\n            ),\n        /* 68000 Opcodes. */\n        2 => array(\n            'abcd',    'add', 'adda', 'addi', 'addq', 'addx',  'and', 'andi',\n            'asl',     'asr',  'bcc', 'bchg', 'bclr',  'bcs',  'beq',  'bge',\n            'bgt',     'bhi',  'ble',  'bls',  'blt',  'bmi',  'bne',  'bpl',\n            'bra',    'bset',  'bsr', 'btst',  'bvc',  'bvs',  'chk',  'clr',\n            'cmp',    'cmpa', 'cmpi', 'cmpm', 'dbcc', 'dbcs', 'dbeq',  'dbf',\n            'dbge',   'dbgt', 'dbhi', 'dble', 'dbls', 'dblt', 'dbmi', 'dbne',\n            'dbpl',   'dbra',  'dbt', 'dbvc', 'dbvs', 'divs', 'divu',  'eor',\n            'eori',    'exg',  'ext','illegal','jmp',  'jsr',  'lea', 'link',\n            'lsl',     'lsr', 'move','movea','movem','movep','moveq', 'muls',\n            'mulu',   'nbcd',  'neg', 'negx',  'nop',  'not',   'or',  'ori',\n            'pea',   'reset',  'rol',  'ror', 'roxl', 'roxr',  'rte',  'rtr',\n            'rts',    'sbcd',  'scc',  'scs',  'seq',   'sf',  'sge',  'sgt',\n            'shi',     'sle',  'sls',  'slt',  'smi',  'sne',  'spl',   'st',\n            'stop',    'sub', 'suba', 'subi', 'subq', 'subx',  'svc',  'svs',\n            'swap',    'tas', 'trap','trapv',  'tst', 'unlk',\n            ),\n        /* oprand sizes. */\n        3 => array(\n            'b', 'w', 'l' , 's'\n            ),\n        /* 68000 Registers. */\n        4 => array(\n            'd0', 'd1', 'd2', 'd3', 'd4', 'd5', 'd6', 'd7',\n            'a0', 'a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'sp', 'usp', 'ssp',\n            'pc', 'ccr', 'sr',\n            ),\n        ),\n    'SYMBOLS' => array(\n//        '[', ']', '(', ')', '{', '}',    // These are already defined by GeSHi as BRACKETS.\n        '+', '-', '~', '<<', '>>', '&',\n        '!', '^', '*', '/', '=', '<', '>',\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #f08; font-weight:bold;',\n            2 => 'color: #00f; font-weight:bold;',\n            3 => 'color: #00f; font-weight:bold;',\n            4 => 'color: #080; font-weight:bold;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #999; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #009; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #080;'\n            ),\n        'NUMBERS' => array(\n            GESHI_NUMBER_INT_BASIC          => 'color: #f00;',\n            GESHI_NUMBER_HEX_PREFIX_DOLLAR  => 'color: #f00;',\n            GESHI_NUMBER_BIN_PREFIX_PERCENT => 'color: #f00;',\n            GESHI_NUMBER_OCT_PREFIX_AT      => 'color: #f00;',\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #080;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #933;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC |\n        GESHI_NUMBER_HEX_PREFIX_DOLLAR |\n        GESHI_NUMBER_OCT_PREFIX_AT |\n        GESHI_NUMBER_BIN_PREFIX_PERCENT,\n    'REGEXPS' => array(\n        //Labels may end in a colon.\n        0 => '(?<=\\A\\x20|\\r|\\n|^)[\\._a-zA-Z][\\._a-zA-Z0-9]*[\\:]?[\\s]'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 8,\n    'PARSER_CONTROL' => array(\n        'NUMBERS' => array(\n            'PRECHECK_RX' => '/[\\da-fA-F\\.\\$\\%\\@]/'\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/abap.php",
    "content": "<?php\n/*************************************************************************************\n * abap.php\n * --------\n * Author: Andres Picazo (andres@andrespicazo.com)\n * Contributors:\n *  - Sandra Rossi (sandra.rossi@gmail.com)\n *  - Jacob Laursen (jlu@kmd.dk)\n * Copyright: (c) 2007 Andres Picazo\n * Release Version: 1.0.9.1\n * Date Started: 2004/06/04\n *\n * ABAP language file for GeSHi.\n *\n * Reference abap language documentation (abap 7.1) : http://help.sap.com/abapdocu/en/ABENABAP_INDEX.htm\n *\n * ABAP syntax is highly complex, several problems could not be addressed, see TODO below if you dare ;-)\n * Be aware that in ABAP language, keywords may be composed of several tokens,\n *    separated by one or more spaces or carriage returns\n *    (for example CONCATENATE 'hello' 'world' INTO string SEPARATED  BY ' ')\n *    it's why we must decode them with REGEXPS. As there are many keywords with several tokens,\n *    I had to create a separate section in the code to simplify the reading.\n * Be aware that some words may be highlighted several times like for \"ref to data\", which is first\n *    highlighted for \"ref to data\", then secondly for \"ref to\". It is very important to\n *    position \"ref to\" after \"ref to data\" otherwise \"data\" wouldn't be highlighted because\n *    of the previous highlight.\n * Control, declarative and other statements are assigned URLs to sap documentation website:\n *    http://help.sap.com/abapdocu/en/ABAP<statement_name>.htm\n *\n * CHANGES\n * -------\n * 2009/02/25 (1.0.8.3)\n *   -  Some more rework of the language file\n * 2009/01/04 (1.0.8.2)\n *   -  Major Release, more than 1000 statements and keywords added = whole abap 7.1 (Sandra Rossi)\n * 2007/06/27 (1.0.0)\n *   -  First Release\n *\n * TODO\n * ----\n *   - in DATA data TYPE type, 2nd \"data\" and 2nd \"type\" are highlighted with data\n *     style, but should be ignored. Same problem for all words!!! This is quite impossible to\n *     solve it as we should define syntaxes of all statements (huge effort!) and use a lex\n *     or something like that instead of regexp I guess.\n *   - Some words are considered as being statement names (report, tables, etc.) though they\n *     are used as keyword in some statements. For example: FORM xxxx TABLES itab. It was\n *     arbitrary decided to define them as statement instead of keyword, because it may be\n *     useful to have the URL to SAP help for some of them.\n *   - if a comment is between 2 words of a keyword (for example SEPARATED \"comment \\n BY),\n *     it is not considered as a keyword, but it should!\n *   - for statements like \"READ DATASET\", GeSHi does not allow to set URLs because these\n *     statements are determined by REGEXPS. For \"READ DATASET\", the URL should be\n *     ABAPREAD_DATASET.htm. If a technical solution is found, be careful : URLs\n *     are sometimes not valid because the URL does not exist. For example, for \"AT NEW\"\n *     statement, the URL should be ABAPAT_ITAB.htm (not ABAPAT_NEW.htm).\n *     There are many other exceptions.\n *     Note: for adding this functionality within your php program, you can execute this code:\n *       function add_urls_to_multi_tokens( $matches ) {\n *           $url = preg_replace( \"/[ \\n]+/\" , \"_\" , $matches[3] );\n *           if( $url == $matches[3] ) return $matches[0] ;\n *           else return $matches[1].\"<a href=\\\"http://help.sap.com/abapdocu/en/ABAP\".strtoupper($url).\".htm\\\">\".$matches[3].\"</a>\".$matches[4];\n *           }\n *       $html = $geshi->parse_code();\n *       $html = preg_replace_callback( \"£(zzz:(control|statement|data);\\\">)(.+?)(</span>)£s\", \"add_urls_to_multi_tokens\", $html );\n *       echo $html;\n *   - Numbers followed by a dot terminating the statement are not properly recognized\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'ABAP',\n    'COMMENT_SINGLE' => array(\n        1 => '\"'\n        ),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        // lines beginning with star at 1st position are comments\n        // (star anywhere else is not a comment, especially be careful with\n        // \"assign dref->* to <fs>\" statement)\n        2 => '/^\\*.*?$/m'\n        ),\n    'CASE_KEYWORDS' => 0,\n    'QUOTEMARKS' => array(\n        1 => \"'\",\n        2 => \"`\"\n        ),\n    'ESCAPE_CHAR' => '',\n\n    'KEYWORDS' => array(\n        //***********************************************\n        // Section 2 : process sequences of several tokens\n        //***********************************************\n\n        7 => array(\n            'at new',\n            'at end of',\n            'at first',\n            'at last',\n            'loop at',\n            'loop at screen',\n            ),\n\n        8 => array(\n            'private section',\n            'protected section',\n            'public section',\n            'at line-selection',\n            'at selection-screen',\n            'at user-command',\n            'assign component',\n            'assign table field',\n            'call badi',\n            'call customer-function',\n            'call customer subscreen',\n            'call dialog',\n            'call function',\n            'call method',\n            'call screen',\n            'call selection-screen',\n            'call transaction',\n            'call transformation',\n            'close cursor',\n            'close dataset',\n            'commit work',\n            'convert date',\n            'convert text',\n            'convert time stamp',\n            'create data',\n            'create object',\n            'delete dataset',\n            'delete from',\n            'describe distance',\n            'describe field',\n            'describe list',\n            'describe table',\n            'exec sql',\n            'exit from sql',\n            'exit from step-loop',\n            'export dynpro',\n            'export nametab',\n            'free memory',\n            'generate subroutine-pool',\n            'get badi',\n            'get bit',\n            'get cursor',\n            'get dataset',\n            'get locale',\n            'get parameter',\n            'get pf-status',\n            'get property',\n            'get reference',\n            'get run time',\n            'get time',\n            'get time stamp',\n            'import directory',\n            'insert report',\n            'insert text-pool',\n            'leave list-processing',\n            'leave program',\n            'leave screen',\n            'leave to list-processing',\n            'leave to transaction',\n            'modify line',\n            'modify screen',\n            'move percentage',\n            'open cursor',\n            'open dataset',\n            'raise event',\n            'raise exception',\n            'read dataset',\n            'read line',\n            'read report',\n            'read table',\n            'read textpool',\n            'receive results from function',\n            'refresh control',\n            'rollback work',\n            'set bit',\n            'set blank lines',\n            'set country',\n            'set cursor',\n            'set dataset',\n            'set extended check',\n            'set handler',\n            'set hold data',\n            'set language',\n            'set left scroll-boundary',\n            'set locale',\n            'set margin',\n            'set parameter',\n            'set pf-status',\n            'set property',\n            'set run time analyzer',\n            'set run time clock',\n            'set screen',\n            'set titlebar',\n            'set update task',\n            'set user-command',\n            'suppress dialog',\n            'truncate dataset',\n            'wait until',\n            'wait up to',\n            ),\n\n        9 => array(\n            'accepting duplicate keys',\n            'accepting padding',\n            'accepting truncation',\n            'according to',\n            'actual length',\n            'adjacent duplicates',\n            'after input',\n            'all blob columns',\n            'all clob columns',\n            'all fields',\n            'all methods',\n            'all other columns',\n            'and mark',\n            'and return to screen',\n            'and return',\n            'and skip first screen',\n            'and wait',\n            'any table',\n            'appendage type',\n            'archive mode',\n            'archiving parameters',\n            'area handle',\n            'as checkbox',\n            'as icon',\n            'as line',\n            'as listbox',\n            'as person table',\n            'as search patterns',\n            'as separate unit',\n            'as subscreen',\n            'as symbol',\n            'as text',\n            'as window',\n            'at cursor-selection',\n            'at exit-command',\n            'at next application statement',\n            'at position',\n\n            'backup into',\n            'before output',\n            'before unwind',\n            'begin of block',\n            'begin of common part',\n            'begin of line',\n            'begin of screen',\n            'begin of tabbed block',\n            'begin of version',\n            'begin of',\n            'big endian',\n            'binary mode',\n            'binary search',\n            'by kernel module',\n            'bypassing buffer',\n\n            'client specified',\n            'code page',\n            'code page hint',\n            'code page into',\n            'color black',\n            'color blue',\n            'color green',\n            'color pink',\n            'color red',\n            'color yellow',\n            'compression off',\n            'compression on',\n            'connect to',\n            'corresponding fields of table',\n            'corresponding fields of',\n            'cover page',\n            'cover text',\n            'create package',\n            'create private',\n            'create protected',\n            'create public',\n            'current position',\n\n            'data buffer',\n            'data values',\n            'dataset expiration',\n            'daylight saving time',\n            'default key',\n            'default program',\n            'default screen',\n            'defining database',\n            'deleting leading',\n            'deleting trailing',\n            'directory entry',\n            'display like',\n            'display offset',\n            'during line-selection',\n            'dynamic selections',\n\n            'edit mask',\n            'end of block',\n            'end of common part',\n            'end of file',\n            'end of line',\n            'end of screen',\n            'end of tabbed block',\n            'end of version',\n            'end of',\n            'endian into',\n            'ending at',\n            'enhancement options into',\n            'enhancement into',\n            'environment time format',\n            'execute procedure',\n            'exporting list to memory',\n            'extension type',\n\n            'field format',\n            'field selection',\n            'field value into',\n            'final methods',\n            'first occurrence of',\n            'fixed-point arithmetic',\n            'for all entries',\n            'for all instances',\n            'for appending',\n            'for columns',\n            'for event of',\n            'for field',\n            'for high',\n            'for input',\n            'for lines',\n            'for low',\n            'for node',\n            'for output',\n            'for select',\n            'for table',\n            'for testing',\n            'for update',\n            'for user',\n            'frame entry',\n            'frame program from',\n            'from code page',\n            'from context',\n            'from database',\n            'from logfile id',\n            'from number format',\n            'from screen',\n            'from table',\n            'function key',\n\n            'get connection',\n            'global friends',\n            'group by',\n\n            'hashed table of',\n            'hashed table',\n\n            'if found',\n            'ignoring case',\n            'ignoring conversion errors',\n            'ignoring structure boundaries',\n            'implementations from',\n            'in background',\n            'in background task',\n            'in background unit',\n            'in binary mode',\n            'in byte mode',\n            'in char-to-hex mode',\n            'in character mode',\n            'in group',\n            'in legacy binary mode',\n            'in legacy text mode',\n            'in program',\n            'in remote task',\n            'in text mode',\n            'in table',\n            'in update task',\n            'include bound',\n            'include into',\n            'include program from',\n            'include structure',\n            'include type',\n            'including gaps',\n            'index table',\n            'inheriting from',\n            'init destination',\n            'initial line of',\n            'initial line',\n            'initial size',\n            'internal table',\n            'into sortable code',\n\n            'keep in spool',\n            'keeping directory entry',\n            'keeping logical unit of work',\n            'keeping task',\n            'keywords from',\n\n            'left margin',\n            'left outer',\n            'levels into',\n            'line format',\n            'line into',\n            'line of',\n            'line page',\n            'line value from',\n            'line value into',\n            'lines of',\n            'list authority',\n            'list dataset',\n            'list name',\n            'little endian',\n            'lob handle for',\n            'local friends',\n            'locator for',\n            'lower case',\n\n            'main table field',\n            'match count',\n            'match length',\n            'match line',\n            'match offset',\n            'matchcode object',\n            'maximum length',\n            'maximum width into',\n            'memory id',\n            'message into',\n            'messages into',\n            'modif id',\n\n            'nesting level',\n            'new list identification',\n            'next cursor',\n            'no database selection',\n            'no dialog',\n            'no end of line',\n            'no fields',\n            'no flush',\n            'no intervals',\n            'no intervals off',\n            'no standard page heading',\n            'no-extension off',\n            'non-unique key',\n            'non-unique sorted key',\n            'not at end of mode',\n            'number of lines',\n            'number of pages',\n\n            'object key',\n            'obligatory off',\n            'of current page',\n            'of page',\n            'of program',\n            'offset into',\n            'on block',\n            'on commit',\n            'on end of task',\n            'on end of',\n            'on exit-command',\n            'on help-request for',\n            'on radiobutton group',\n            'on rollback',\n            'on value-request for',\n            'open for package',\n            'option class-coding',\n            'option class',\n            'option coding',\n            'option expand',\n            'option syncpoints',\n            'options from',\n            'order by',\n            'overflow into',\n\n            'package section',\n            'package size',\n            'preferred parameter',\n            'preserving identifier escaping',\n            'primary key',\n            'print off',\n            'print on',\n            'program from',\n            'program type',\n\n            'radiobutton groups',\n            'radiobutton group',\n            'range of',\n            'reader for',\n            'receive buffer',\n            'reduced functionality',\n            'ref to data',\n            'ref to object',\n            'ref to',\n\n            'reference into',\n            'renaming with suffix',\n            'replacement character',\n            'replacement count',\n            'replacement length',\n            'replacement line',\n            'replacement offset',\n            'respecting blanks',\n            'respecting case',\n            'result into',\n            'risk level',\n\n            'sap cover page',\n            'search fkeq',\n            'search fkge',\n            'search gkeq',\n            'search gkge',\n            'section of',\n            'send buffer',\n            'separated by',\n            'shared buffer',\n            'shared memory',\n            'shared memory enabled',\n            'skipping byte-order mark',\n            'sorted by',\n            'sorted table of',\n            'sorted table',\n            'spool parameters',\n            'standard table of',\n            'standard table',\n            'starting at',\n            'starting new task',\n            'statements into',\n            'structure default',\n            'structures into',\n\n            'table field',\n            'table of',\n            'text mode',\n            'time stamp',\n            'time zone',\n            'to code page',\n            'to column',\n            'to context',\n            'to first page',\n            'to last page',\n            'to last line',\n            'to line',\n            'to lower case',\n            'to number format',\n            'to page',\n            'to sap spool',\n            'to upper case',\n            'tokens into',\n            'transporting no fields',\n            'type tableview',\n            'type tabstrip',\n\n            'unicode enabling',\n            'up to',\n            'upper case',\n            'using edit mask',\n            'using key',\n            'using no edit mask',\n            'using screen',\n            'using selection-screen',\n            'using selection-set',\n            'using selection-sets of program',\n\n            'valid between',\n            'valid from',\n            'value check',\n            'via job',\n            'via selection-screen',\n            'visible length',\n\n            'whenever found',\n            'with analysis',\n            'with byte-order mark',\n            'with comments',\n            'with current switchstates',\n            'with explicit enhancements',\n            'with frame',\n            'with free selections',\n            'with further secondary keys',\n            'with header line',\n            'with hold',\n            'with implicit enhancements',\n            'with inactive enhancements',\n            'with includes',\n            'with key',\n            'with linefeed',\n            'with list tokenization',\n            'with native linefeed',\n            'with non-unique key',\n            'with null',\n            'with pragmas',\n            'with precompiled headers',\n            'with selection-table',\n            'with smart linefeed',\n            'with table key',\n            'with test code',\n            'with type-pools',\n            'with unique key',\n            'with unix linefeed',\n            'with windows linefeed',\n            'without further secondary keys',\n            'without selection-screen',\n            'without spool dynpro',\n            'without trmac',\n            'word into',\n            'writer for'\n            ),\n\n        //**********************************************************\n        // Other abap statements\n        //**********************************************************\n        3 => array(\n            'add',\n            'add-corresponding',\n            'aliases',\n            'append',\n            'assign',\n            'at',\n            'authority-check',\n\n            'break-point',\n\n            'clear',\n            'collect',\n            'compute',\n            'concatenate',\n            'condense',\n            'class',\n            'class-events',\n            'class-methods',\n            'class-pool',\n\n            'define',\n            'delete',\n            'demand',\n            'detail',\n            'divide',\n            'divide-corresponding',\n\n            'editor-call',\n            'end-of-file',\n            'end-enhancement-section',\n            'end-of-definition',\n            'end-of-page',\n            'end-of-selection',\n            'endclass',\n            'endenhancement',\n            'endexec',\n            'endform',\n            'endfunction',\n            'endinterface',\n            'endmethod',\n            'endmodule',\n            'endon',\n            'endprovide',\n            'endselect',\n            'enhancement',\n            'enhancement-point',\n            'enhancement-section',\n            'export',\n            'extract',\n            'events',\n\n            'fetch',\n            'field-groups',\n            'find',\n            'format',\n            'form',\n            'free',\n            'function-pool',\n            'function',\n\n            'get',\n\n            'hide',\n\n            'import',\n            'infotypes',\n            'input',\n            'insert',\n            'include',\n            'initialization',\n            'interface',\n            'interface-pool',\n            'interfaces',\n\n            'leave',\n            'load-of-program',\n            'log-point',\n\n            'maximum',\n            'message',\n            'methods',\n            'method',\n            'minimum',\n            'modify',\n            'move',\n            'move-corresponding',\n            'multiply',\n            'multiply-corresponding',\n\n            'new-line',\n            'new-page',\n            'new-section',\n\n            'overlay',\n\n            'pack',\n            'perform',\n            'position',\n            'print-control',\n            'program',\n            'provide',\n            'put',\n\n            'raise',\n            'refresh',\n            'reject',\n            'replace',\n            'report',\n            'reserve',\n\n            'scroll',\n            'search',\n            'select',\n            'selection-screen',\n            'shift',\n            'skip',\n            'sort',\n            'split',\n            'start-of-selection',\n            'submit',\n            'subtract',\n            'subtract-corresponding',\n            'sum',\n            'summary',\n            'summing',\n            'supply',\n            'syntax-check',\n\n            'top-of-page',\n            'transfer',\n            'translate',\n            'type-pool',\n\n            'uline',\n            'unpack',\n            'update',\n\n            'window',\n            'write'\n\n            ),\n\n        //**********************************************************\n        // keywords\n        //**********************************************************\n\n        4 => array(\n            'abbreviated',\n            'abstract',\n            'accept',\n            'acos',\n            'activation',\n            'alias',\n            'align',\n            'all',\n            'allocate',\n            'and',\n            'assigned',\n            'any',\n            'appending',\n            'area',\n            'as',\n            'ascending',\n            'asin',\n            'assigning',\n            'atan',\n            'attributes',\n            'avg',\n\n            'backward',\n            'between',\n            'bit-and',\n            'bit-not',\n            'bit-or',\n            'bit-set',\n            'bit-xor',\n            'boolc',\n            'boolx',\n            'bound',\n            'bt',\n            'blocks',\n            'bounds',\n            'boxed',\n            'by',\n            'byte-ca',\n            'byte-cn',\n            'byte-co',\n            'byte-cs',\n            'byte-na',\n            'byte-ns',\n\n            'ca',\n            'calling',\n            'casting',\n            'ceil',\n            'center',\n            'centered',\n            'changing',\n            'char_off',\n            'charlen',\n            'circular',\n            'class_constructor',\n            'client',\n            'clike',\n            'close',\n            'cmax',\n            'cmin',\n            'cn',\n            'cnt',\n            'co',\n            'col_background',\n            'col_group',\n            'col_heading',\n            'col_key',\n            'col_negative',\n            'col_normal',\n            'col_positive',\n            'col_total',\n            'color',\n            'column',\n            'comment',\n            'comparing',\n            'components',\n            'condition',\n            'context',\n            'copies',\n            'count',\n            'country',\n            'cpi',\n            'creating',\n            'critical',\n            'concat_lines_of',\n            'cos',\n            'cosh',\n            'count_any_not_of',\n            'count_any_of',\n            'cp',\n            'cs',\n            'csequence',\n            'currency',\n            'current',\n            'cx_static_check',\n            'cx_root',\n            'cx_dynamic_check',\n\n            'dangerous',\n            'database',\n            'datainfo',\n            'date',\n            'dbmaxlen',\n            'dd/mm/yy',\n            'dd/mm/yyyy',\n            'ddmmyy',\n            'deallocate',\n            'decfloat',\n            'decfloat16',\n            'decfloat34',\n            'decimals',\n            'default',\n            'deferred',\n            'definition',\n            'department',\n            'descending',\n            'destination',\n            'disconnect',\n            'display-mode',\n            'distance',\n            'distinct',\n            'div',\n            'dummy',\n\n            'encoding',\n            'end-lines',\n            'engineering',\n            'environment',\n            'eq',\n            'equiv',\n            'error_message',\n            'errormessage',\n            'escape',\n            'exact',\n            'exception-table',\n            'exceptions',\n            'exclude',\n            'excluding',\n            'exists',\n            'exp',\n            'exponent',\n            'exporting',\n            'extended_monetary',\n\n            'field',\n            'filter-table',\n            'filters',\n            'filter',\n            'final',\n            'find_any_not_of',\n            'find_any_of',\n            'find_end',\n            'floor',\n            'first-line',\n            'font',\n            'forward',\n            'for',\n            'frac',\n            'from_mixed',\n            'friends',\n            'from',\n\n            'giving',\n            'ge',\n            'gt',\n\n            'handle',\n            'harmless',\n            'having',\n            'head-lines',\n            'help-id',\n            'help-request',\n            'high',\n            'hold',\n            'hotspot',\n\n            'id',\n            'ids',\n            'immediately',\n            'implementation',\n            'importing',\n            'in',\n            'initial',\n            'incl',\n            'including',\n            'increment',\n            'index',\n            'index-line',\n            'inner',\n            'inout',\n            'intensified',\n            'into',\n            'inverse',\n            'is',\n            'iso',\n\n            'join',\n\n            'key',\n            'kind',\n\n            'log10',\n            'language',\n            'late',\n            'layout',\n            'le',\n            'lt',\n            'left-justified',\n            'leftplus',\n            'leftspace',\n            'left',\n            'length',\n            'level',\n            'like',\n            'line-count',\n            'line-size',\n            'lines',\n            'line',\n            'load',\n            'long',\n            'lower',\n            'low',\n            'lpi',\n\n            'matches',\n            'match',\n            'mail',\n            'major-id',\n            'max',\n            'medium',\n            'memory',\n            'message-id',\n            'module',\n            'minor-id',\n            'min',\n            'mm/dd/yyyy',\n            'mm/dd/yy',\n            'mmddyy',\n            'mode',\n            'modifier',\n            'mod',\n            'monetary',\n\n            'name',\n            'nb',\n            'ne',\n            'next',\n            'no-display',\n            'no-extension',\n            'no-gap',\n            'no-gaps',\n            'no-grouping',\n            'no-heading',\n            'no-scrolling',\n            'no-sign',\n            'no-title',\n            'no-topofpage',\n            'no-zero',\n            'nodes',\n            'non-unicode',\n            'no',\n            'number',\n            'nmax',\n            'nmin',\n            'not',\n            'null',\n            'numeric',\n            'numofchar',\n\n            'o',\n            'objects',\n            'obligatory',\n            'occurs',\n            'offset',\n            'off',\n            'of',\n            'only',\n            'open',\n            'option',\n            'optional',\n            'options',\n            'output-length',\n            'output',\n            'out',\n            'on change of',\n            'or',\n            'others',\n\n            'pad',\n            'page',\n            'pages',\n            'parameter-table',\n            'part',\n            'performing',\n            'pos_high',\n            'pos_low',\n            'priority',\n            'public',\n            'pushbutton',\n\n            'queue-only',\n            'quickinfo',\n\n            'raising',\n            'range',\n            'read-only',\n            'received',\n            'receiver',\n            'receiving',\n            'redefinition',\n            'reference',\n            'regex',\n            'replacing',\n            'reset',\n            'responsible',\n            'result',\n            'results',\n            'resumable',\n            'returncode',\n            'returning',\n            'right',\n            'right-specified',\n            'rightplus',\n            'rightspace',\n            'round',\n            'rows',\n            'repeat',\n            'requested',\n            'rescale',\n            'reverse',\n\n            'scale_preserving',\n            'scale_preserving_scientific',\n            'scientific',\n            'scientific_with_leading_zero',\n            'screen',\n            'scrolling',\n            'seconds',\n            'segment',\n            'shift_left',\n            'shift_right',\n            'sign',\n            'simple',\n            'sin',\n            'sinh',\n            'short',\n            'shortdump-id',\n            'sign_as_postfix',\n            'single',\n            'size',\n            'some',\n            'source',\n            'space',\n            'spots',\n            'stable',\n            'state',\n            'static',\n            'statusinfo',\n            'sqrt',\n            'string',\n            'strlen',\n            'structure',\n            'style',\n            'subkey',\n            'submatches',\n            'substring',\n            'substring_after',\n            'substring_before',\n            'substring_from',\n            'substring_to',\n            'super',\n            'supplied',\n            'switch',\n\n            'tan',\n            'tanh',\n            'table_line',\n            'table',\n            'tab',\n            'then',\n            'timestamp',\n            'times',\n            'time',\n            'timezone',\n            'title-lines',\n            'title',\n            'top-lines',\n            'to',\n            'to_lower',\n            'to_mixed',\n            'to_upper',\n            'trace-file',\n            'trace-table',\n            'transporting',\n            'trunc',\n            'type',\n\n            'under',\n            'unique',\n            'unit',\n            'user-command',\n            'using',\n            'utf-8',\n\n            'valid',\n            'value',\n            'value-request',\n            'values',\n            'vary',\n            'varying',\n            'version',\n\n            'warning',\n            'where',\n            'width',\n            'with',\n            'word',\n            'with-heading',\n            'with-title',\n\n            'xsequence',\n            'xstring',\n            'xstrlen',\n\n            'yes',\n            'yymmdd',\n\n            'z',\n            'zero'\n\n            ),\n\n        //**********************************************************\n        // screen statements\n        //**********************************************************\n\n        5 => array(\n            'call subscreen',\n            'chain',\n            'endchain',\n            'on chain-input',\n            'on chain-request',\n            'on help-request',\n            'on input',\n            'on request',\n            'on value-request',\n            'process'\n            ),\n\n        //**********************************************************\n        // internal statements\n        //**********************************************************\n\n        6 => array(\n            'generate dynpro',\n            'generate report',\n            'import dynpro',\n            'import nametab',\n            'include methods',\n            'load report',\n            'scan abap-source',\n            'scan and check abap-source',\n            'syntax-check for dynpro',\n            'syntax-check for program',\n            'syntax-trace',\n            'system-call',\n            'system-exit',\n            'verification-message'\n            ),\n\n        //**********************************************************\n        // Control statements\n        //**********************************************************\n\n        1 => array(\n            'assert',\n            'case',\n            'catch',\n            'check',\n            'cleanup',\n            'continue',\n            'do',\n            'else',\n            'elseif',\n            'endat',\n            'endcase',\n            'endcatch',\n            'endif',\n            'enddo',\n            'endloop',\n            'endtry',\n            'endwhile',\n            'exit',\n            'if',\n            'loop',\n            'resume',\n            'retry',\n            'return',\n            'stop',\n            'try',\n            'when',\n            'while'\n\n            ),\n\n        //**********************************************************\n        // variable declaration statements\n        //**********************************************************\n\n        2 => array(\n            'class-data',\n            'controls',\n            'constants',\n            'data',\n            'field-symbols',\n            'fields',\n            'local',\n            'parameters',\n            'ranges',\n            'select-options',\n            'statics',\n            'tables',\n            'type-pools',\n            'types'\n            )\n        ),\n    'SYMBOLS' => array(\n        0 => array(\n            '->*', '->', '=>',\n            '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '!', '%', '^', '&', ':', ',', '.'\n            ),\n        1 => array(\n            '>=', '<=', '<', '>', '='\n            ),\n        2 => array(\n            '?='\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false,\n        8 => false,\n        9 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000066; font-weight: bold; zzz:control;', //control statements\n            2 => 'color: #cc4050; font-weight: bold; zzz:data;', //data statements\n            3 => 'color: #005066; font-weight: bold; zzz:statement;', //first token of other statements\n            4 => 'color: #500066; font-weight: bold; zzz:keyword;', // next tokens of other statements (\"keywords\")\n            5 => 'color: #005066; font-weight: bold; zzz:statement;',\n            6 => 'color: #000066; font-weight: bold; zzz:control;',\n            7 => 'color: #000066; font-weight: bold; zzz:control;',\n            8 => 'color: #005066; font-weight: bold; zzz:statement;',\n            9 => 'color: #500066; font-weight: bold; zzz:keyword;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            2 => 'color: #339933;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #808080;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #4da619;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #3399ff;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;',\n            2 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #808080;',\n            1 => 'color: #800080;',\n            2 => 'color: #0000ff;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => 'http://help.sap.com/abapdocu_740/en/ABAP{FNAMEU}.htm',\n        2 => 'http://help.sap.com/abapdocu_740/en/ABAP{FNAMEU}.htm',\n        3 => 'http://help.sap.com/abapdocu_740/en/ABAP{FNAMEU}.htm',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => '',\n        9 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '-&gt;',\n        2 => '=&gt;'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            7 => array(\n                'SPACE_AS_WHITESPACE' => true\n                ),\n            8 => array(\n                'SPACE_AS_WHITESPACE' => true\n                ),\n            9 => array(\n                'SPACE_AS_WHITESPACE' => true\n                )\n            )\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/actionscript.php",
    "content": "<?php\n/*************************************************************************************\n * actionscript.php\n * ----------------\n * Author: Steffen Krause (Steffen.krause@muse.de)\n * Copyright: (c) 2004 Steffen Krause, Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/06/20\n *\n * Actionscript language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2004/11/27 (1.0.1)\n *  -  Added support for multiple object splitters\n * 2004/10/27 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'ActionScript',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            '#include', 'for', 'foreach', 'each', 'if', 'elseif', 'else', 'while', 'do', 'dowhile',\n            'endwhile', 'endif', 'switch', 'case', 'endswitch', 'return', 'break', 'continue', 'in'\n            ),\n        2 => array(\n            'null', 'false', 'true', 'var',\n            'default', 'function', 'class',\n            'new', '_global'\n            ),\n        3 => array(\n            '#endinitclip', '#initclip', '__proto__', '_accProps', '_alpha', '_currentframe',\n            '_droptarget', '_focusrect', '_framesloaded', '_height', '_highquality', '_lockroot',\n            '_name', '_parent', '_quality', '_root', '_rotation', '_soundbuftime', '_target', '_totalframes',\n            '_url', '_visible', '_width', '_x', '_xmouse', '_xscale', '_y', '_ymouse', '_yscale', 'abs',\n            'Accessibility', 'acos', 'activityLevel', 'add', 'addListener', 'addPage', 'addProperty',\n            'addRequestHeader', 'align', 'allowDomain', 'allowInsecureDomain', 'and', 'appendChild',\n            'apply', 'Arguments', 'Array', 'asfunction', 'asin', 'atan', 'atan2', 'attachAudio', 'attachMovie',\n            'attachSound', 'attachVideo', 'attributes', 'autosize', 'avHardwareDisable', 'background',\n            'backgroundColor', 'BACKSPACE', 'bandwidth', 'beginFill', 'beginGradientFill', 'blockIndent',\n            'bold', 'Boolean', 'border', 'borderColor', 'bottomScroll', 'bufferLength', 'bufferTime',\n            'builtInItems', 'bullet', 'Button', 'bytesLoaded', 'bytesTotal', 'call', 'callee', 'caller',\n            'Camera', 'capabilities', 'CAPSLOCK', 'caption', 'catch', 'ceil', 'charAt', 'charCodeAt',\n            'childNodes', 'chr', 'clear', 'clearInterval', 'cloneNode', 'close', 'Color', 'concat',\n            'connect', 'condenseWhite', 'constructor', 'contentType', 'ContextMenu', 'ContextMenuItem',\n            'CONTROL', 'copy', 'cos', 'createElement', 'createEmptyMovieClip', 'createTextField',\n            'createTextNode', 'currentFps', 'curveTo', 'CustomActions', 'customItems', 'data', 'Date',\n            'deblocking', 'delete', 'DELETEKEY', 'docTypeDecl', 'domain', 'DOWN',\n            'duplicateMovieClip', 'duration', 'dynamic', 'E', 'embedFonts', 'enabled',\n            'END', 'endFill', 'ENTER', 'eq', 'Error', 'ESCAPE(Konstante)', 'escape(Funktion)', 'eval',\n            'exactSettings', 'exp', 'extends', 'finally', 'findText', 'firstChild', 'floor',\n            'flush', 'focusEnabled', 'font', 'fps', 'fromCharCode', 'fscommand',\n            'gain', 'ge', 'get', 'getAscii', 'getBeginIndex', 'getBounds', 'getBytesLoaded', 'getBytesTotal',\n            'getCaretIndex', 'getCode', 'getCount', 'getDate', 'getDay', 'getDepth', 'getEndIndex', 'getFocus',\n            'getFontList', 'getFullYear', 'getHours', 'getInstanceAtDepth', 'getLocal', 'getMilliseconds',\n            'getMinutes', 'getMonth', 'getNewTextFormat', 'getNextHighestDepth', 'getPan', 'getProgress',\n            'getProperty', 'getRGB', 'getSeconds', 'getSelected', 'getSelectedText', 'getSize', 'getStyle',\n            'getStyleNames', 'getSWFVersion', 'getText', 'getTextExtent', 'getTextFormat', 'getTextSnapshot',\n            'getTime', 'getTimer', 'getTimezoneOffset', 'getTransform', 'getURL', 'getUTCDate', 'getUTCDay',\n            'getUTCFullYear', 'getUTCHours', 'getUTCMilliseconds', 'getUTCMinutes', 'getUTCMonth', 'getUTCSeconds',\n            'getVersion', 'getVolume', 'getYear', 'globalToLocal', 'goto', 'gotoAndPlay', 'gotoAndStop',\n            'hasAccessibility', 'hasAudio', 'hasAudioEncoder', 'hasChildNodes', 'hasEmbeddedVideo', 'hasMP3',\n            'hasPrinting', 'hasScreenBroadcast', 'hasScreenPlayback', 'hasStreamingAudio', 'hasStreamingVideo',\n            'hasVideoEncoder', 'height', 'hide', 'hideBuiltInItems', 'hitArea', 'hitTest', 'hitTestTextNearPos',\n            'HOME', 'hscroll', 'html', 'htmlText', 'ID3', 'ifFrameLoaded', 'ignoreWhite', 'implements',\n            'import', 'indent', 'index', 'indexOf', 'Infinity', '-Infinity', 'INSERT', 'insertBefore', 'install',\n            'instanceof', 'int', 'interface', 'isActive', 'isDebugger', 'isDown', 'isFinite', 'isNaN', 'isToggled',\n            'italic', 'join', 'Key', 'language', 'lastChild', 'lastIndexOf', 'le', 'leading', 'LEFT', 'leftMargin',\n            'length', 'level', 'lineStyle', 'lineTo', 'list', 'LN10', 'LN2', 'load', 'loadClip', 'loaded', 'loadMovie',\n            'loadMovieNum', 'loadSound', 'loadVariables', 'loadVariablesNum', 'LoadVars', 'LocalConnection',\n            'localFileReadDisable', 'localToGlobal', 'log', 'LOG10E', 'LOG2E', 'manufacturer', 'Math', 'max',\n            'MAX_VALUE', 'maxChars', 'maxhscroll', 'maxscroll', 'mbchr', 'mblength', 'mbord', 'mbsubstring', 'menu',\n            'message', 'Microphone', 'min', 'MIN_VALUE', 'MMExecute', 'motionLevel', 'motionTimeOut', 'Mouse',\n            'mouseWheelEnabled', 'moveTo', 'Movieclip', 'MovieClipLoader', 'multiline', 'muted', 'name', 'names', 'NaN',\n            'ne', 'NEGATIVE_INFINITY', 'NetConnection', 'NetStream', 'newline', 'nextFrame',\n            'nextScene', 'nextSibling', 'nodeName', 'nodeType', 'nodeValue', 'not', 'Number', 'Object',\n            'on', 'onActivity', 'onChanged', 'onClipEvent', 'onClose', 'onConnect', 'onData', 'onDragOut',\n            'onDragOver', 'onEnterFrame', 'onID3', 'onKeyDown', 'onKeyUp', 'onKillFocus', 'onLoad', 'onLoadComplete',\n            'onLoadError', 'onLoadInit', 'onLoadProgress', 'onLoadStart', 'onMouseDown', 'onMouseMove', 'onMouseUp',\n            'onMouseWheel', 'onPress', 'onRelease', 'onReleaseOutside', 'onResize', 'onRollOut', 'onRollOver',\n            'onScroller', 'onSelect', 'onSetFocus', 'onSoundComplete', 'onStatus', 'onUnload', 'onUpdate', 'onXML',\n            'or(logischesOR)', 'ord', 'os', 'parentNode', 'parseCSS', 'parseFloat', 'parseInt', 'parseXML', 'password',\n            'pause', 'PGDN', 'PGUP', 'PI', 'pixelAspectRatio', 'play', 'playerType', 'pop', 'position',\n            'POSITIVE_INFINITY', 'pow', 'prevFrame', 'previousSibling', 'prevScene', 'print', 'printAsBitmap',\n            'printAsBitmapNum', 'PrintJob', 'printNum', 'private', 'prototype', 'public', 'push', 'quality',\n            'random', 'rate', 'registerClass', 'removeListener', 'removeMovieClip', 'removeNode', 'removeTextField',\n            'replaceSel', 'replaceText', 'resolutionX', 'resolutionY', 'restrict', 'reverse', 'RIGHT',\n            'rightMargin', 'round', 'scaleMode', 'screenColor', 'screenDPI', 'screenResolutionX', 'screenResolutionY',\n            'scroll', 'seek', 'selectable', 'Selection', 'send', 'sendAndLoad', 'separatorBefore', 'serverString',\n            'set', 'setvariable', 'setBufferTime', 'setClipboard', 'setDate', 'setFocus', 'setFullYear', 'setGain',\n            'setHours', 'setInterval', 'setMask', 'setMilliseconds', 'setMinutes', 'setMode', 'setMonth',\n            'setMotionLevel', 'setNewTextFormat', 'setPan', 'setProperty', 'setQuality', 'setRate', 'setRGB',\n            'setSeconds', 'setSelectColor', 'setSelected', 'setSelection', 'setSilenceLevel', 'setStyle',\n            'setTextFormat', 'setTime', 'setTransform', 'setUseEchoSuppression', 'setUTCDate', 'setUTCFullYear',\n            'setUTCHours', 'setUTCMilliseconds', 'setUTCMinutes', 'setUTCMonth', 'setUTCSeconds', 'setVolume',\n            'setYear', 'SharedObject', 'SHIFT(Konstante)', 'shift(Methode)', 'show', 'showMenu', 'showSettings',\n            'silenceLevel', 'silenceTimeout', 'sin', 'size', 'slice', 'smoothing', 'sort', 'sortOn', 'Sound', 'SPACE',\n            'splice', 'split', 'sqrt', 'SQRT1_2', 'SQRT2', 'Stage', 'start', 'startDrag', 'static', 'status', 'stop',\n            'stopAllSounds', 'stopDrag', 'String', 'StyleSheet(Klasse)', 'styleSheet(Eigenschaft)', 'substr',\n            'substring', 'super', 'swapDepths', 'System', 'TAB', 'tabChildren', 'tabEnabled', 'tabIndex',\n            'tabStops', 'tan', 'target', 'targetPath', 'tellTarget', 'text', 'textColor', 'TextField', 'TextFormat',\n            'textHeight', 'TextSnapshot', 'textWidth', 'this', 'throw', 'time', 'toggleHighQuality', 'toLowerCase',\n            'toString', 'toUpperCase', 'trace', 'trackAsMenu', 'try', 'type', 'typeof', 'undefined',\n            'underline', 'unescape', 'uninstall', 'unloadClip', 'unloadMovie', 'unLoadMovieNum', 'unshift', 'unwatch',\n            'UP', 'updateAfterEvent', 'updateProperties', 'url', 'useCodePage', 'useEchoSuppression', 'useHandCursor',\n            'UTC', 'valueOf', 'variable', 'version', 'Video', 'visible', 'void', 'watch', 'width',\n            'with', 'wordwrap', 'XML', 'xmlDecl', 'XMLNode', 'XMLSocket'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #0066CC;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            2 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/actionscript3.php",
    "content": "<?php\n/*************************************************************************************\n * actionscript3.php\n * ----------------\n * Author: Jordi Boggiano (j.boggiano@seld.be)\n * Copyright: (c) 2007 Jordi Boggiano (http://www.seld.be/), Benny Baumann (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2007/11/26\n *\n * ActionScript3 language file for GeSHi.\n *\n * All keywords scraped from the Flex 2.0.1 Documentation\n *\n * The default style is based on FlexBuilder2 coloring, with the addition of class, package, method and\n * constant names that are highlighted to help identifying problem when used on public pastebins.\n *\n * For styling, keywords data from 0 to 1 (accessible through .kw1, etc.) are described here :\n *\n *   1 : operators\n *   2 : 'var' keyword\n *   3 : 'function' keyword\n *   4 : 'class' and 'package' keywords\n *   5 : all flash.* class names plus Top Level classes, mx are excluded\n *   6 : all flash.* package names, mx are excluded\n *   7 : valid flash method names and properties (there is no type checks sadly, for example String().x will be highlighted as 'x' is valid, but obviously strings don't have a x property)\n *   8 : valid flash constant names (again, no type check)\n *\n *\n * CHANGES\n * -------\n * 2007/12/06 (1.0.7.22)\n *  -  Added the 'this' keyword (oops)\n *\n * TODO (updated 2007/11/30)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'ActionScript 3',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Regular expressions\n        2 => \"/(?<=[\\\\s^])(s|tr|y)\\\\/(?!\\s)(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+(?<!\\s)\\\\/(?!\\s)(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])*(?<!\\s)\\\\/[msixpogcde]*(?=[\\\\s$\\\\.\\\\;])|(?<=[\\\\s^(=])(m|q[qrwx]?)?\\\\/(?!\\s)(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+(?<!\\s)\\\\/[msixpogc]*(?=[\\\\s$\\\\.\\\\,\\\\;\\\\)])/iU\",\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'with', 'while', 'void', 'undefined', 'typeof', 'try', 'true',\n            'throw', 'this', 'switch', 'super', 'set', 'return', 'public', 'protected',\n            'private', 'null', 'new', 'is', 'internal', 'instanceof', 'in',\n            'import', 'if', 'get', 'for', 'false', 'else', 'each', 'do',\n            'delete', 'default', 'continue', 'catch', 'case', 'break', 'as',\n            'extends', 'override'\n            ),\n        2 => array(\n            'var'\n            ),\n        3 => array(\n            'function'\n            ),\n        4 => array(\n            'class', 'package'\n            ),\n        6 => array(\n            'flash.xml', 'flash.utils', 'flash.ui', 'flash.text',\n            'flash.system', 'flash.profiler', 'flash.printing', 'flash.net',\n            'flash.media', 'flash.geom', 'flash.filters', 'flash.external',\n            'flash.events', 'flash.errors', 'flash.display',\n            'flash.accessibility'\n            ),\n        7 => array(\n            'zoom', 'year', 'y', 'xmlDecl', 'x', 'writeUnsignedInt',\n            'writeUTFBytes', 'writeUTF', 'writeShort', 'writeObject',\n            'writeMultiByte', 'writeInt', 'writeFloat', 'writeExternal',\n            'writeDynamicProperty', 'writeDynamicProperties', 'writeDouble',\n            'writeBytes', 'writeByte', 'writeBoolean', 'wordWrap',\n            'willTrigger', 'width', 'volume', 'visible', 'videoWidth',\n            'videoHeight', 'version', 'valueOf', 'value', 'usingTLS',\n            'useRichTextClipboard', 'useHandCursor', 'useEchoSuppression',\n            'useCodePage', 'url', 'uri', 'uploadCompleteData', 'upload',\n            'updateProperties', 'updateAfterEvent', 'upState', 'unshift',\n            'unlock', 'unload', 'union', 'unescapeMultiByte', 'unescape',\n            'underline', 'uncompress', 'type', 'ty', 'tx', 'transparent',\n            'translate', 'transformPoint', 'transform', 'trackAsMenu', 'track',\n            'trace', 'totalMemory', 'totalFrames', 'topLeft', 'top',\n            'togglePause', 'toXMLString', 'toUpperCase', 'toUTCString',\n            'toTimeString', 'toString', 'toPrecision', 'toLowerCase',\n            'toLocaleUpperCase', 'toLocaleTimeString', 'toLocaleString',\n            'toLocaleLowerCase', 'toLocaleDateString', 'toFixed',\n            'toExponential', 'toDateString', 'timezoneOffset', 'timerComplete',\n            'timer', 'time', 'threshold', 'thickness', 'textWidth',\n            'textSnapshot', 'textInput', 'textHeight', 'textColor', 'text',\n            'test', 'target', 'tan', 'tabStops', 'tabIndexChange', 'tabIndex',\n            'tabEnabledChange', 'tabEnabled', 'tabChildrenChange',\n            'tabChildren', 'sync', 'swfVersion', 'swapChildrenAt',\n            'swapChildren', 'subtract', 'substring', 'substr', 'styleSheet',\n            'styleNames', 'strength', 'stopPropagation',\n            'stopImmediatePropagation', 'stopDrag', 'stopAll', 'stop', 'status',\n            'startDrag', 'start', 'stageY', 'stageX', 'stageWidth',\n            'stageHeight', 'stageFocusRect', 'stage', 'sqrt', 'split', 'splice',\n            'source', 'soundTransform', 'soundComplete', 'sortOn', 'sort',\n            'songName', 'some', 'socketData', 'smoothing', 'slice', 'size',\n            'sin', 'silent', 'silenceTimeout', 'silenceLevel', 'showSettings',\n            'showRedrawRegions', 'showDefaultContextMenu', 'show', 'shortcut',\n            'shiftKey', 'shift', 'sharpness', 'sharedEvents', 'shadowColor',\n            'shadowAlpha', 'settings', 'setUseEchoSuppression', 'setUTCSeconds',\n            'setUTCMonth', 'setUTCMinutes', 'setUTCMilliseconds', 'setUTCHours',\n            'setUTCFullYear', 'setUTCDate', 'setTimeout', 'setTime',\n            'setTextFormat', 'setStyle', 'setSilenceLevel', 'setSettings',\n            'setSelection', 'setSelected', 'setSelectColor', 'setSeconds',\n            'setQuality', 'setPropertyIsEnumerable', 'setProperty', 'setPixels',\n            'setPixel32', 'setPixel', 'setNamespace', 'setName',\n            'setMotionLevel', 'setMonth', 'setMode', 'setMinutes',\n            'setMilliseconds', 'setLoopback', 'setLoopBack', 'setLocalName',\n            'setKeyFrameInterval', 'setInterval', 'setHours', 'setFullYear',\n            'setEmpty', 'setDirty', 'setDate', 'setCompositionString',\n            'setClipboard', 'setChildren', 'setChildIndex',\n            'setAdvancedAntiAliasingTable', 'serverString', 'separatorBefore',\n            'sendToURL', 'send', 'selectionEndIndex', 'selectionBeginIndex',\n            'selectable', 'select', 'seek', 'securityError', 'securityDomain',\n            'secondsUTC', 'seconds', 'search', 'scrollV', 'scrollRect',\n            'scrollH', 'scroll', 'screenResolutionY', 'screenResolutionX',\n            'screenDPI', 'screenColor', 'scenes', 'scaleY', 'scaleX',\n            'scaleMode', 'scale9Grid', 'scale', 'save', 'sandboxType',\n            'sameDomain', 'running', 'round', 'rotation', 'rotate', 'root',\n            'rollOver', 'rollOut', 'rightToRight', 'rightToLeft', 'rightPeak',\n            'rightMargin', 'right', 'rewind', 'reverse', 'resume', 'restrict',\n            'resize', 'reset', 'requestHeaders', 'replaceText',\n            'replaceSelectedText', 'replace', 'repeatCount', 'render',\n            'removedFromStage', 'removed', 'removeNode', 'removeNamespace',\n            'removeEventListener', 'removeChildAt', 'removeChild',\n            'relatedObject', 'registerFont', 'registerClassAlias', 'redOffset',\n            'redMultiplier', 'rect', 'receiveVideo', 'receiveAudio',\n            'readUnsignedShort', 'readUnsignedInt', 'readUnsignedByte',\n            'readUTFBytes', 'readUTF', 'readShort', 'readObject',\n            'readMultiByte', 'readInt', 'readFloat', 'readExternal',\n            'readDouble', 'readBytes', 'readByte', 'readBoolean', 'ratios',\n            'rate', 'random', 'quality', 'push', 'publish', 'proxyType',\n            'prototype', 'propertyIsEnumerable', 'progress',\n            'processingInstructions', 'printAsBitmap', 'print',\n            'previousSibling', 'preventDefault', 'prevScene', 'prevFrame',\n            'prettyPrinting', 'prettyIndent', 'preserveAlpha', 'prependChild',\n            'prefix', 'pow', 'position', 'pop', 'polar', 'playerType', 'play',\n            'pixelSnapping', 'pixelDissolve', 'pixelBounds', 'pixelAspectRatio',\n            'perlinNoise', 'pause', 'parseXML', 'parseInt', 'parseFloat',\n            'parseCSS', 'parse', 'parentNode', 'parentDomain',\n            'parentAllowsChild', 'parent', 'parameters', 'paperWidth',\n            'paperHeight', 'pan', 'paletteMap', 'pageWidth', 'pageHeight',\n            'overState', 'outsideCutoff', 'os', 'orientation', 'open',\n            'opaqueBackground', 'onPlayStatus', 'onMetaData', 'onCuePoint',\n            'offsetPoint', 'offset', 'objectID', 'objectEncoding', 'numLock',\n            'numLines', 'numFrames', 'numChildren', 'normalize', 'noise',\n            'nodeValue', 'nodeType', 'nodeName', 'nodeKind', 'noAutoLabeling',\n            'nextValue', 'nextSibling', 'nextScene', 'nextNameIndex',\n            'nextName', 'nextFrame', 'netStatus', 'navigateToURL',\n            'namespaceURI', 'namespaceDeclarations', 'namespace', 'names',\n            'name', 'muted', 'multiline', 'moveTo', 'mouseY', 'mouseX',\n            'mouseWheelEnabled', 'mouseWheel', 'mouseUp', 'mouseTarget',\n            'mouseOver', 'mouseOut', 'mouseMove', 'mouseLeave',\n            'mouseFocusChange', 'mouseEnabled', 'mouseDown', 'mouseChildren',\n            'motionTimeout', 'motionLevel', 'monthUTC', 'month',\n            'modificationDate', 'mode', 'minutesUTC', 'minutes', 'min',\n            'millisecondsUTC', 'milliseconds', 'method', 'message', 'merge',\n            'menuSelect', 'menuItemSelect', 'maxScrollV', 'maxScrollH',\n            'maxLevel', 'maxChars', 'max', 'matrixY', 'matrixX', 'matrix',\n            'match', 'mask', 'mapPoint', 'mapBitmap', 'map', 'manufacturer',\n            'macType', 'loopback', 'loop', 'log', 'lock', 'localeCompare',\n            'localY', 'localX', 'localToGlobal', 'localName',\n            'localFileReadDisable', 'loaderURL', 'loaderInfo', 'loader',\n            'loadPolicyFile', 'loadBytes', 'load', 'liveDelay', 'link',\n            'lineTo', 'lineStyle', 'lineGradientStyle', 'level',\n            'letterSpacing', 'length', 'leftToRight', 'leftToLeft', 'leftPeak',\n            'leftMargin', 'left', 'leading', 'lastIndexOf', 'lastIndex',\n            'lastChild', 'language', 'labels', 'knockout', 'keyUp',\n            'keyLocation', 'keyFrameInterval', 'keyFocusChange', 'keyDown',\n            'keyCode', 'kerning', 'join', 'italic', 'isXMLName',\n            'isPrototypeOf', 'isNaN', 'isFocusInaccessible', 'isFinite',\n            'isEmpty', 'isDefaultPrevented', 'isDebugger', 'isBuffering',\n            'isAttribute', 'isAccessible', 'ioError', 'invert', 'invalidate',\n            'intersects', 'intersection', 'interpolate', 'insideCutoff',\n            'insertChildBefore', 'insertChildAfter', 'insertBefore', 'inner',\n            'init', 'info', 'inflatePoint', 'inflate', 'indexOf', 'index',\n            'indent', 'inScopeNamespaces', 'imeComposition', 'ime',\n            'ignoreWhitespace', 'ignoreWhite', 'ignoreProcessingInstructions',\n            'ignoreComments', 'ignoreCase', 'identity', 'idMap', 'id3',\n            'httpStatus', 'htmlText', 'hoursUTC', 'hours', 'hitTestTextNearPos',\n            'hitTestState', 'hitTestPoint', 'hitTestObject', 'hitTest',\n            'hitArea', 'highlightColor', 'highlightAlpha', 'hideObject',\n            'hideBuiltInItems', 'hide', 'height', 'hasVideoEncoder', 'hasTLS',\n            'hasStreamingVideo', 'hasStreamingAudio', 'hasSimpleContent',\n            'hasScreenPlayback', 'hasScreenBroadcast', 'hasProperty',\n            'hasPrinting', 'hasOwnProperty', 'hasMP3', 'hasIME', 'hasGlyphs',\n            'hasEventListener', 'hasEmbeddedVideo', 'hasDefinition',\n            'hasComplexContent', 'hasChildNodes', 'hasAudioEncoder', 'hasAudio',\n            'hasAccessibility', 'gridFitType', 'greenOffset', 'greenMultiplier',\n            'graphics', 'gotoAndStop', 'gotoAndPlay', 'globalToLocal', 'global',\n            'getUTCSeconds', 'getUTCMonth', 'getUTCMinutes',\n            'getUTCMilliseconds', 'getUTCHours', 'getUTCFullYear', 'getUTCDay',\n            'getUTCDate', 'getTimezoneOffset', 'getTimer', 'getTime',\n            'getTextRunInfo', 'getTextFormat', 'getText', 'getStyle',\n            'getStackTrace', 'getSelectedText', 'getSelected', 'getSeconds',\n            'getRemote', 'getRect', 'getQualifiedSuperclassName',\n            'getQualifiedClassName', 'getProperty', 'getPrefixForNamespace',\n            'getPixels', 'getPixel32', 'getPixel', 'getParagraphLength',\n            'getObjectsUnderPoint', 'getNamespaceForPrefix', 'getMonth',\n            'getMinutes', 'getMilliseconds', 'getMicrophone', 'getLocal',\n            'getLineText', 'getLineOffset', 'getLineMetrics', 'getLineLength',\n            'getLineIndexOfChar', 'getLineIndexAtPoint', 'getImageReference',\n            'getHours', 'getFullYear', 'getFirstCharInParagraph',\n            'getDescendants', 'getDefinitionByName', 'getDefinition', 'getDay',\n            'getDate', 'getColorBoundsRect', 'getClassByAlias', 'getChildIndex',\n            'getChildByName', 'getChildAt', 'getCharIndexAtPoint',\n            'getCharBoundaries', 'getCamera', 'getBounds', 'genre',\n            'generateFilterRect', 'gain', 'fullYearUTC', 'fullYear',\n            'fullScreen', 'fscommand', 'fromCharCode', 'framesLoaded',\n            'frameRate', 'frame', 'fps', 'forwardAndBack', 'formatToString',\n            'forceSimple', 'forEach', 'fontType', 'fontStyle', 'fontSize',\n            'fontName', 'font', 'focusRect', 'focusOut', 'focusIn', 'focus',\n            'flush', 'floor', 'floodFill', 'firstChild', 'findText', 'filters',\n            'filter', 'fillRect', 'fileList', 'extension', 'extended', 'exp',\n            'exec', 'exactSettings', 'every', 'eventPhase', 'escapeMultiByte',\n            'escape', 'errorID', 'error', 'equals', 'enumerateFonts',\n            'enterFrame', 'endian', 'endFill', 'encodeURIComponent',\n            'encodeURI', 'enabled', 'embedFonts', 'elements',\n            'dynamicPropertyWriter', 'dropTarget', 'drawRoundRect', 'drawRect',\n            'drawEllipse', 'drawCircle', 'draw', 'download', 'downState',\n            'doubleClickEnabled', 'doubleClick', 'dotall', 'domain',\n            'docTypeDecl', 'doConversion', 'divisor', 'distance', 'dispose',\n            'displayState', 'displayMode', 'displayAsPassword', 'dispatchEvent',\n            'description', 'describeType', 'descent', 'descendants',\n            'deltaTransformPoint', 'delta', 'deleteProperty', 'delay',\n            'defaultTextFormat', 'defaultSettings', 'defaultObjectEncoding',\n            'decodeURIComponent', 'decodeURI', 'decode', 'deblocking',\n            'deactivate', 'dayUTC', 'day', 'dateUTC', 'date', 'dataFormat',\n            'data', 'd', 'customItems', 'curveTo', 'currentTarget',\n            'currentScene', 'currentLabels', 'currentLabel', 'currentFrame',\n            'currentFPS', 'currentDomain', 'currentCount', 'ctrlKey', 'creator',\n            'creationDate', 'createTextNode', 'createGradientBox',\n            'createElement', 'createBox', 'cos', 'copyPixels', 'copyChannel',\n            'copy', 'conversionMode', 'contextMenuOwner', 'contextMenu',\n            'contentType', 'contentLoaderInfo', 'content', 'containsRect',\n            'containsPoint', 'contains', 'constructor', 'connectedProxyType',\n            'connected', 'connect', 'condenseWhite', 'concatenatedMatrix',\n            'concatenatedColorTransform', 'concat', 'computeSpectrum',\n            'compress', 'componentY', 'componentX', 'complete', 'compare',\n            'comments', 'comment', 'colors', 'colorTransform', 'color', 'code',\n            'close', 'cloneNode', 'clone', 'client', 'click', 'clearTimeout',\n            'clearInterval', 'clear', 'clamp', 'children', 'childNodes',\n            'childIndex', 'childAllowsParent', 'child', 'checkPolicyFile',\n            'charCount', 'charCodeAt', 'charCode', 'charAt', 'changeList',\n            'change', 'ceil', 'caretIndex', 'caption', 'capsLock', 'cancelable',\n            'cancel', 'callee', 'callProperty', 'call', 'cacheAsBitmap', 'c',\n            'bytesTotal', 'bytesLoaded', 'bytesAvailable', 'buttonMode',\n            'buttonDown', 'bullet', 'builtInItems', 'bufferTime',\n            'bufferLength', 'bubbles', 'browse', 'bottomScrollV', 'bottomRight',\n            'bottom', 'borderColor', 'border', 'bold', 'blurY', 'blurX',\n            'blueOffset', 'blueMultiplier', 'blockIndent', 'blendMode',\n            'bitmapData', 'bias', 'beginGradientFill', 'beginFill',\n            'beginBitmapFill', 'bandwidth', 'backgroundColor', 'background',\n            'b', 'available', 'avHardwareDisable', 'autoSize', 'attributes',\n            'attribute', 'attachNetStream', 'attachCamera', 'attachAudio',\n            'atan2', 'atan', 'asyncError', 'asin', 'ascent', 'artist',\n            'areSoundsInaccessible', 'areInaccessibleObjectsUnderPoint',\n            'applyFilter', 'apply', 'applicationDomain', 'appendText',\n            'appendChild', 'antiAliasType', 'angle', 'alwaysShowSelection',\n            'altKey', 'alphas', 'alphaOffset', 'alphaMultiplier', 'alpha',\n            'allowInsecureDomain', 'allowDomain', 'align', 'album',\n            'addedToStage', 'added', 'addPage', 'addNamespace', 'addHeader',\n            'addEventListener', 'addChildAt', 'addChild', 'addCallback', 'add',\n            'activityLevel', 'activity', 'active', 'activating', 'activate',\n            'actionScriptVersion', 'acos', 'accessibilityProperties', 'abs'\n            ),\n        8 => array(\n            'WRAP', 'VERTICAL', 'VARIABLES',\n            'UTC', 'UPLOAD_COMPLETE_DATA', 'UP', 'UNLOAD', 'UNKNOWN',\n            'UNIQUESORT', 'TOP_RIGHT', 'TOP_LEFT', 'TOP', 'TIMER_COMPLETE',\n            'TIMER', 'TEXT_NODE', 'TEXT_INPUT', 'TEXT', 'TAB_INDEX_CHANGE',\n            'TAB_ENABLED_CHANGE', 'TAB_CHILDREN_CHANGE', 'TAB', 'SYNC',\n            'SUBTRACT', 'SUBPIXEL', 'STATUS', 'STANDARD', 'SQUARE', 'SQRT2',\n            'SQRT1_2', 'SPACE', 'SOUND_COMPLETE', 'SOCKET_DATA', 'SHOW_ALL',\n            'SHIFT', 'SETTINGS_MANAGER', 'SELECT', 'SECURITY_ERROR', 'SCROLL',\n            'SCREEN', 'ROUND', 'ROLL_OVER', 'ROLL_OUT', 'RIGHT', 'RGB',\n            'RETURNINDEXEDARRAY', 'RESIZE', 'REPEAT', 'RENDER',\n            'REMOVED_FROM_STAGE', 'REMOVED', 'REMOTE', 'REGULAR', 'REFLECT',\n            'RED', 'RADIAL', 'PROGRESS', 'PRIVACY', 'POST', 'POSITIVE_INFINITY',\n            'PORTRAIT', 'PIXEL', 'PI', 'PENDING', 'PAGE_UP', 'PAGE_DOWN', 'PAD',\n            'OVERLAY', 'OUTER', 'OPEN', 'NaN', 'NUM_PAD', 'NUMPAD_SUBTRACT',\n            'NUMPAD_MULTIPLY', 'NUMPAD_ENTER', 'NUMPAD_DIVIDE',\n            'NUMPAD_DECIMAL', 'NUMPAD_ADD', 'NUMPAD_9', 'NUMPAD_8', 'NUMPAD_7',\n            'NUMPAD_6', 'NUMPAD_5', 'NUMPAD_4', 'NUMPAD_3', 'NUMPAD_2',\n            'NUMPAD_1', 'NUMPAD_0', 'NUMERIC', 'NO_SCALE', 'NO_BORDER',\n            'NORMAL', 'NONE', 'NEVER', 'NET_STATUS', 'NEGATIVE_INFINITY',\n            'MULTIPLY', 'MOUSE_WHEEL', 'MOUSE_UP', 'MOUSE_OVER', 'MOUSE_OUT',\n            'MOUSE_MOVE', 'MOUSE_LEAVE', 'MOUSE_FOCUS_CHANGE', 'MOUSE_DOWN',\n            'MITER', 'MIN_VALUE', 'MICROPHONE', 'MENU_SELECT',\n            'MENU_ITEM_SELECT', 'MEDIUM', 'MAX_VALUE', 'LOW', 'LOG2E', 'LOG10E',\n            'LOCAL_WITH_NETWORK', 'LOCAL_WITH_FILE', 'LOCAL_TRUSTED',\n            'LOCAL_STORAGE', 'LN2', 'LN10', 'LITTLE_ENDIAN', 'LINK',\n            'LINEAR_RGB', 'LINEAR', 'LIGHT_COLOR', 'LIGHTEN', 'LEFT', 'LCD',\n            'LAYER', 'LANDSCAPE', 'KOREAN', 'KEY_UP', 'KEY_FOCUS_CHANGE',\n            'KEY_DOWN', 'JUSTIFY', 'JAPANESE_KATAKANA_HALF',\n            'JAPANESE_KATAKANA_FULL', 'JAPANESE_HIRAGANA', 'Infinity', 'ITALIC',\n            'IO_ERROR', 'INVERT', 'INSERT', 'INPUT', 'INNER', 'INIT',\n            'IME_COMPOSITION', 'IGNORE', 'ID3', 'HTTP_STATUS', 'HORIZONTAL',\n            'HOME', 'HIGH', 'HARDLIGHT', 'GREEN', 'GET', 'FULLSCREEN', 'FULL',\n            'FOCUS_OUT', 'FOCUS_IN', 'FLUSHED', 'FLASH9', 'FLASH8', 'FLASH7',\n            'FLASH6', 'FLASH5', 'FLASH4', 'FLASH3', 'FLASH2', 'FLASH1', 'F9',\n            'F8', 'F7', 'F6', 'F5', 'F4', 'F3', 'F2', 'F15', 'F14', 'F13',\n            'F12', 'F11', 'F10', 'F1', 'EXACT_FIT', 'ESCAPE', 'ERROR', 'ERASE',\n            'ENTER_FRAME', 'ENTER', 'END', 'EMBEDDED', 'ELEMENT_NODE', 'E',\n            'DYNAMIC', 'DOWN', 'DOUBLE_CLICK', 'DIFFERENCE', 'DEVICE',\n            'DESCENDING', 'DELETE', 'DEFAULT', 'DEACTIVATE', 'DATA',\n            'DARK_COLOR', 'DARKEN', 'CRT', 'CONTROL', 'CONNECT', 'COMPLETE',\n            'COLOR', 'CLOSE', 'CLICK', 'CLAMP', 'CHINESE', 'CHANGE', 'CENTER',\n            'CASEINSENSITIVE', 'CAPTURING_PHASE', 'CAPS_LOCK', 'CANCEL',\n            'CAMERA', 'BUBBLING_PHASE', 'BOTTOM_RIGHT', 'BOTTOM_LEFT', 'BOTTOM',\n            'BOLD_ITALIC', 'BOLD', 'BLUE', 'BINARY', 'BIG_ENDIAN', 'BEVEL',\n            'BEST', 'BACKSPACE', 'AUTO', 'AT_TARGET', 'ASYNC_ERROR', 'AMF3',\n            'AMF0', 'ALWAYS', 'ALPHANUMERIC_HALF', 'ALPHANUMERIC_FULL', 'ALPHA',\n            'ADVANCED', 'ADDED_TO_STAGE', 'ADDED', 'ADD', 'ACTIVITY',\n            'ACTIONSCRIPT3', 'ACTIONSCRIPT2'\n            ),\n        //FIX: Must be last in order to avoid conflicts with keywords present\n        //in other keyword groups, that might get highlighted as part of the URL.\n        //I know this is not a proper work-around, but should do just fine.\n        5 => array(\n            'uint', 'int', 'arguments', 'XMLSocket', 'XMLNodeType', 'XMLNode',\n            'XMLList', 'XMLDocument', 'XML', 'Video', 'VerifyError',\n            'URLVariables', 'URLStream', 'URLRequestMethod', 'URLRequestHeader',\n            'URLRequest', 'URLLoaderDataFormat', 'URLLoader', 'URIError',\n            'TypeError', 'Transform', 'TimerEvent', 'Timer', 'TextSnapshot',\n            'TextRenderer', 'TextLineMetrics', 'TextFormatAlign', 'TextFormat',\n            'TextFieldType', 'TextFieldAutoSize', 'TextField', 'TextEvent',\n            'TextDisplayMode', 'TextColorType', 'System', 'SyntaxError',\n            'SyncEvent', 'StyleSheet', 'String', 'StatusEvent', 'StaticText',\n            'StageScaleMode', 'StageQuality', 'StageAlign', 'Stage',\n            'StackOverflowError', 'Sprite', 'SpreadMethod', 'SoundTransform',\n            'SoundMixer', 'SoundLoaderContext', 'SoundChannel', 'Sound',\n            'Socket', 'SimpleButton', 'SharedObjectFlushStatus', 'SharedObject',\n            'Shape', 'SecurityPanel', 'SecurityErrorEvent', 'SecurityError',\n            'SecurityDomain', 'Security', 'ScriptTimeoutError', 'Scene',\n            'SWFVersion', 'Responder', 'RegExp', 'ReferenceError', 'Rectangle',\n            'RangeError', 'QName', 'Proxy', 'ProgressEvent',\n            'PrintJobOrientation', 'PrintJobOptions', 'PrintJob', 'Point',\n            'PixelSnapping', 'ObjectEncoding', 'Object', 'Number', 'NetStream',\n            'NetStatusEvent', 'NetConnection', 'Namespace', 'MovieClip',\n            'MouseEvent', 'Mouse', 'MorphShape', 'Microphone', 'MemoryError',\n            'Matrix', 'Math', 'LocalConnection', 'LoaderInfo', 'LoaderContext',\n            'Loader', 'LineScaleMode', 'KeyboardEvent', 'Keyboard',\n            'KeyLocation', 'JointStyle', 'InvalidSWFError',\n            'InterpolationMethod', 'InteractiveObject', 'IllegalOperationError',\n            'IOErrorEvent', 'IOError', 'IMEEvent', 'IMEConversionMode', 'IME',\n            'IExternalizable', 'IEventDispatcher', 'IDynamicPropertyWriter',\n            'IDynamicPropertyOutput', 'IDataOutput', 'IDataInput', 'ID3Info',\n            'IBitmapDrawable', 'HTTPStatusEvent', 'GridFitType', 'Graphics',\n            'GradientType', 'GradientGlowFilter', 'GradientBevelFilter',\n            'GlowFilter', 'Function', 'FrameLabel', 'FontType', 'FontStyle',\n            'Font', 'FocusEvent', 'FileReferenceList', 'FileReference',\n            'FileFilter', 'ExternalInterface', 'EventPhase', 'EventDispatcher',\n            'Event', 'EvalError', 'ErrorEvent', 'Error', 'Endian', 'EOFError',\n            'DropShadowFilter', 'DisplayObjectContainer', 'DisplayObject',\n            'DisplacementMapFilterMode', 'DisplacementMapFilter', 'Dictionary',\n            'DefinitionError', 'Date', 'DataEvent', 'ConvolutionFilter',\n            'ContextMenuItem', 'ContextMenuEvent', 'ContextMenuBuiltInItems',\n            'ContextMenu', 'ColorTransform', 'ColorMatrixFilter', 'Class',\n            'CapsStyle', 'Capabilities', 'Camera', 'CSMSettings', 'ByteArray',\n            'Boolean', 'BlurFilter', 'BlendMode', 'BitmapFilterType',\n            'BitmapFilterQuality', 'BitmapFilter', 'BitmapDataChannel',\n            'BitmapData', 'Bitmap', 'BevelFilter', 'AsyncErrorEvent', 'Array',\n            'ArgumentError', 'ApplicationDomain', 'AntiAliasType',\n            'ActivityEvent', 'ActionScriptVersion', 'AccessibilityProperties',\n            'Accessibility', 'AVM1Movie'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '!', '%', '&', '*', '|', '/', '<', '>', '^', '-', '+', '~', '?', ':', ';', '.', ','\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0033ff; font-weight: bold;',\n            2 => 'color: #6699cc; font-weight: bold;',\n            3 => 'color: #339966; font-weight: bold;',\n            4 => 'color: #9900cc; font-weight: bold;',\n            5 => 'color: #004993;',\n            6 => 'color: #004993;',\n            7 => 'color: #004993;',\n            8 => 'color: #004993;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #009900; font-style: italic;',\n            2 => 'color: #009966; font-style: italic;',\n            'MULTI' => 'color: #3f5fbf;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #990000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #000000; font-weight:bold;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #000000;',\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000066; font-weight: bold;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => 'http://www.google.com/search?q={FNAMEL}%20inurl:http://livedocs.adobe.com/flex/201/langref/%20inurl:{FNAMEL}.html',\n        6 => '',\n        7 => '',\n        8 => ''\n        ),\n    'OOLANG' => false,//Save some time as OO identifiers aren't used\n    'OBJECT_SPLITTERS' => array(\n        // commented out because it's not very relevant for AS, as all properties, methods and constants are dot-accessed.\n        // I believe it's preferable to have package highlighting for example, which is not possible with this enabled.\n        // 0 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/ada.php",
    "content": "<?php\n/*************************************************************************************\n * ada.php\n * -------\n * Author: Tux (tux@inmail.cz)\n * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/07/29\n *\n * Ada language file for GeSHi.\n * Words are from SciTe configuration file\n *\n * CHANGES\n * -------\n * 2004/11/27 (1.0.2)\n *  -  Added support for multiple object splitters\n * 2004/10/27 (1.0.1)\n *   -  Removed apostrophe as string delimiter\n *   -  Added URL support\n * 2004/08/05 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Ada',\n    'COMMENT_SINGLE' => array(1 => '--'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'begin', 'declare', 'do', 'else', 'elsif', 'exception', 'for', 'if',\n            'is', 'loop', 'while', 'then', 'end', 'select', 'case', 'until',\n            'goto', 'return'\n            ),\n        2 => array(\n            'abs', 'and', 'at', 'mod', 'not', 'or', 'rem', 'xor'\n            ),\n        3 => array(\n            'abort', 'abstract', 'accept', 'access', 'aliased', 'all', 'array',\n            'body', 'constant', 'delay', 'delta', 'digits', 'entry', 'exit',\n            'function', 'generic', 'in', 'interface', 'limited', 'new', 'null',\n            'of', 'others', 'out', 'overriding', 'package', 'pragma', 'private',\n            'procedure', 'protected', 'raise', 'range', 'record', 'renames',\n            'requeue', 'reverse', 'separate', 'subtype', 'synchronized',\n            'tagged', 'task', 'terminate', 'type', 'use', 'when', 'with'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #00007f;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #46aa03; font-weight:bold;',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #adadad; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #7f007f;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/aimms.php",
    "content": "<?php\n/*************************************************************************************\n * aimms.php\n * --------\n * Author: Guido Diepen (guido.diepen@aimms.com)\n * Copyright: (c) 2011 Guido Diepen (http://www.aimms.com)\n * Release Version: 1.0.9.1\n * Date Started: 2011/05/05\n *\n * AIMMS language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2004/07/14 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/07/14)\n * -------------------------\n * * Make sure the last few function I may have missed\n *   (like eval()) are included for highlighting\n * * Split to several files - php4, php5 etc\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'AIMMS3',\n    'COMMENT_SINGLE' => array(1 => '!'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'HARDQUOTE' => array(\"'\", \"'\"),\n    'HARDESCAPE' => array(\"'\", \"\\\\\"),\n    'HARDCHAR' => \"\\\\\",\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'if', 'then', 'else', 'endif', 'elseif', 'for', 'do', 'while' , 'endfor' , 'endwhile', 'break', 'switch', 'endswitch',\n            'display', 'return', 'in', 'apply'\n\n            ),\n        2 => array(\n            'main model' , 'declaration section', 'procedure', 'endprocedure', 'endmodel', 'endsection' , 'set', 'parameter',\n            'string parameter', 'element parameter', 'quantity'\n            ),\n        3 => array(\n            'identifier', 'index', 'index domain', 'body'\n            ),\n        4 => array(\n            'ActiveCard','Card','ConvertUnit','DistributionCumulative','DistributionDensity','DistributionDeviation',\n            'DistributionInverseCumulative','DistributionInverseDensity','DistributionKurtosis','DistributionMean',\n            'DistributionSkewness','DistributionVariance','Element','EvaluateUnit','First','FormatString','Last',\n            'Ord','Unit','Val','Aggregate','AttributeToString','CaseCompareIdentifier','CaseCreateDifferenceFile',\n            'CloseDataSource','CreateTimeTable','ConstraintVariables','ConvertReferenceDate','CloneElement',\n            'FindNthString','FindReplaceNthString','FindReplaceStrings','FindString','StringOccurrences',\n            'CurrentToMoment','CurrentToString','CurrentToTimeSlot','DaylightsavingEndDate','DaylightsavingStartDate',\n            'DeclaredSubset','DomainIndex','IndexRange','IsRunningAsViewer','ListingFileCopy','ListingFileDelete',\n            'DirectoryGetFiles','DirectoryGetSubdirectories','DirectSQL','Disaggregate','ElementCast','ElementRange',\n            'EnvironmentGetString','EnvironmentSetString','errh::Adapt','errh::Attribute','errh::Category',\n            'errh::Code','errh::Column','errh::CreationTime','errh::Filename','errh::InsideCategory',\n            'errh::IsMarkedAsHandled','errh::Line','errh::MarkAsHandled','errh::Message','errh::Multiplicity',\n            'errh::Node','errh::NumberOfLocations','errh::Severity','ExcelAddNewSheet','ExcelAssignParameter',\n            'ExcelAssignSet','ExcelAssignTable','ExcelAssignValue','ExcelClearRange','ExcelCloseWorkbook',\n            'ExcelColumnName','ExcelColumnNumber','ExcelCopyRange','ExcelCreateWorkbook','ExcelDeleteSheet',\n            'ExcelPrint','ExcelRetrieveParameter','ExcelRetrieveSet','ExcelRetrieveTable','ExcelRetrieveValue',\n            'ExcelRunMacro','ExcelSaveWorkbook','ExcelSetActiveSheet','ExcelSetUpdateLinksBehavior',\n            'ExcelSetVisibility','FindUsedElements','GenerateCUT','GMP::Coefficient::Get',\n            'GMP::Coefficient::GetQuadratic','GMP::Coefficient::Set','GMP::Coefficient::SetQuadratic',\n            'GMP::Column::Add','GMP::Column::Delete','GMP::Column::Freeze','GMP::Column::GetLowerbound',\n            'GMP::Column::GetScale','GMP::Column::GetStatus','GMP::Column::GetType','GMP::Column::GetUpperbound',\n            'GMP::Column::SetAsObjective','GMP::Column::SetLowerbound','GMP::Column::SetType',\n            'GMP::Column::SetUpperbound','GMP::Column::Unfreeze','GMP::Instance::AddIntegerEliminationRows',\n            'GMP::Instance::CalculateSubGradient','GMP::Instance::Copy','GMP::Instance::CreateDual',\n            'GMP::Instance::CreateMasterMip','GMP::Instance::CreatePresolved',\n            'GMP::SolverSession::CreateProgressCategory','GMP::Instance::CreateProgressCategory',\n            'GMP::Instance::CreateSolverSession','GMP::Stochastic::CreateBendersRootproblem',\n            'GMP::Instance::Delete','GMP::Instance::DeleteIntegerEliminationRows',\n            'GMP::Instance::DeleteSolverSession','GMP::Instance::FindApproximatelyFeasibleSolution',\n            'GMP::Instance::FixColumns','GMP::Instance::Generate','GMP::Instance::GenerateRobustCounterpart',\n            'GMP::Instance::GenerateStochasticProgram','GMP::SolverSession::GetCallbackInterruptStatus',\n            'GMP::SolverSession::WaitForCompletion','GMP::SolverSession::WaitForSingleCompletion',\n            'GMP::SolverSession::ExecutionStatus','GMP::Instance::GetDirection','GMP::Instance::GetLinearObjective',\n            'GMP::Instance::GetMathematicalProgrammingType','GMP::Instance::GetMemoryUsed',\n            'GMP::Instance::GetNumberOfColumns','GMP::Instance::GetNumberOfIndicatorRows',\n            'GMP::Instance::GetNumberOfIntegerColumns','GMP::Instance::GetNumberOfNonlinearColumns',\n            'GMP::Instance::GetNumberOfNonlinearNonzeros','GMP::Instance::GetNumberOfNonlinearRows',\n            'GMP::Instance::GetNumberOfNonzeros','GMP::Instance::GetNumberOfRows',\n            'GMP::Instance::GetNumberOfSOS1Rows','GMP::Instance::GetNumberOfSOS2Rows',\n            'GMP::Instance::GetObjective','GMP::Instance::GetOptionValue','GMP::Instance::GetSolver',\n            'GMP::Instance::GetSymbolicMathematicalProgram','GMP::Instance::MemoryStatistics',\n            'GMP::Instance::Rename','GMP::Instance::SetCallbackAddCut','GMP::Instance::SetCallbackBranch',\n            'GMP::Instance::SetCallbackHeuristic','GMP::Instance::SetCallbackIncumbent',\n            'GMP::Instance::SetCallbackIterations','GMP::Instance::SetCallbackNewIncumbent',\n            'GMP::Instance::SetCallbackStatusChange','GMP::Instance::SetCutoff','GMP::Instance::SetDirection',\n            'GMP::Instance::SetMathematicalProgrammingType','GMP::Instance::SetSolver','GMP::Instance::Solve',\n            'GMP::Stochastic::GetObjectiveBound','GMP::Stochastic::GetRelativeWeight',\n            'GMP::Stochastic::GetRepresentativeScenario','GMP::Stochastic::UpdateBendersSubproblem',\n            'GMP::Linearization::Add','GMP::Linearization::AddSingle','GMP::Linearization::Delete',\n            'GMP::Linearization::GetDeviation','GMP::Linearization::GetDeviationBound',\n            'GMP::Linearization::GetLagrangeMultiplier','GMP::Linearization::GetType',\n            'GMP::Linearization::GetWeight','GMP::Linearization::RemoveDeviation',\n            'GMP::Linearization::SetDeviationBound','GMP::Linearization::SetType',\n            'GMP::Linearization::SetWeight','GMP::ProgressWindow::DeleteCategory',\n            'GMP::ProgressWindow::DisplayLine','GMP::ProgressWindow::DisplayProgramStatus',\n            'GMP::ProgressWindow::DisplaySolver','GMP::ProgressWindow::DisplaySolverStatus',\n            'GMP::ProgressWindow::FreezeLine','GMP::ProgressWindow::UnfreezeLine',\n            'GMP::QuadraticCoefficient::Get','GMP::QuadraticCoefficient::Set','GMP::Row::Activate',\n            'GMP::Stochastic::AddBendersFeasibilityCut','GMP::Stochastic::AddBendersOptimalityCut',\n            'GMP::Stochastic::BendersFindFeasibilityReference','GMP::Stochastic::MergeSolution',\n            'GMP::Row::Add','GMP::Row::Deactivate','GMP::Row::Delete','GMP::Row::DeleteIndicatorCondition',\n            'GMP::Row::Generate','GMP::Row::GetConvex','GMP::Row::GetIndicatorColumn',\n            'GMP::Row::GetIndicatorCondition','GMP::Row::GetLeftHandSide','GMP::Row::GetRelaxationOnly',\n            'GMP::Row::GetRightHandSide','GMP::Row::GetScale','GMP::Row::GetStatus','GMP::Row::GetType',\n            'GMP::Row::SetConvex','GMP::Row::SetIndicatorCondition','GMP::Row::SetLeftHandSide',\n            'GMP::Row::SetRelaxationOnly','GMP::Row::SetRightHandSide','GMP::Row::SetType',\n            'GMP::Solution::Check','GMP::Solution::Copy','GMP::Solution::Count','GMP::Solution::Delete',\n            'GMP::Solution::DeleteAll','GMP::Solution::GetColumnValue','GMP::Solution::GetCPUSecondsUsed',\n            'GMP::Solution::GetDistance','GMP::Solution::GetFirstOrderDerivative',\n            'GMP::Solution::GetIterationsUsed','GMP::Solution::GetNodesUsed','GMP::Solution::GetLinearObjective',\n            'GMP::Solution::GetMemoryUsed','GMP::Solution::GetObjective','GMP::Solution::GetPenalizedObjective',\n            'GMP::Solution::GetProgramStatus','GMP::Solution::GetRowValue','GMP::Solution::GetSolutionsSet',\n            'GMP::Solution::GetSolverStatus','GMP::Solution::IsDualDegenerated','GMP::Solution::IsInteger',\n            'GMP::Solution::IsPrimalDegenerated','GMP::Solution::SetMIPStartFlag','GMP::Solution::Move',\n            'GMP::Solution::RandomlyGenerate','GMP::Solution::RetrieveFromModel',\n            'GMP::Solution::RetrieveFromSolverSession','GMP::Solution::SendToModel',\n            'GMP::Solution::SendToModelSelection','GMP::Solution::SendToSolverSession',\n            'GMP::Solution::SetIterationCount','GMP::Solution::SetProgramStatus','GMP::Solution::SetSolverStatus',\n            'GMP::Solution::UpdatePenaltyWeights','GMP::Solution::ConstructMean',\n            'GMP::SolverSession::AsynchronousExecute','GMP::SolverSession::Execute',\n            'GMP::SolverSession::Interrupt','GMP::SolverSession::AddLinearization',\n            'GMP::SolverSession::GenerateBranchLowerBound','GMP::SolverSession::GenerateBranchUpperBound',\n            'GMP::SolverSession::GenerateBranchRow','GMP::SolverSession::GenerateCut',\n            'GMP::SolverSession::GenerateBinaryEliminationRow','GMP::SolverSession::GetCPUSecondsUsed',\n            'GMP::SolverSession::GetHost','GMP::SolverSession::GetInstance',\n            'GMP::SolverSession::GetIterationsUsed','GMP::SolverSession::GetNodesLeft',\n            'GMP::SolverSession::GetNodesUsed','GMP::SolverSession::GetNodeNumber',\n            'GMP::SolverSession::GetNodeObjective','GMP::SolverSession::GetNumberOfBranchNodes',\n            'GMP::SolverSession::GetLinearObjective','GMP::SolverSession::GetMemoryUsed',\n            'GMP::SolverSession::GetObjective','GMP::SolverSession::GetOptionValue',\n            'GMP::SolverSession::GetProgramStatus','GMP::SolverSession::GetSolver',\n            'GMP::SolverSession::GetSolverStatus','GMP::SolverSession::RejectIncumbent',\n            'GMP::Event::Create','GMP::Event::Delete','GMP::Event::Reset','GMP::Event::Set',\n            'GMP::SolverSession::SetObjective','GMP::SolverSession::SetOptionValue',\n            'GMP::Instance::SetCPUSecondsLimit','GMP::Instance::SetIterationLimit',\n            'GMP::Instance::SetMemoryLimit','GMP::Instance::SetOptionValue','GMP::Tuning::SolveSingleMPS',\n            'GMP::Tuning::TuneMultipleMPS','GMP::Tuning::TuneSingleGMP',\n            'GMP::Solver::GetAsynchronousSessionsLimit','GMP::Robust::EvaluateAdjustableVariables',\n            'GenerateXML','GetDatasourceProperty','ReadGeneratedXML','ReadXML','ReferencedIdentifiers',\n            'WriteXML','IdentifierAttributes','IdentifierDimension','IsRuntimeIdentifier','IdentifierMemory',\n            'IdentifierMemoryStatistics','IdentifierText','IdentifierType','IdentifierUnit','ScalarValue',\n            'SectionIdentifiers','SubRange','MemoryInUse','CommitTransaction','RollbackTransaction',\n            'MemoryStatistics','me::AllowedAttribute','me::ChangeType','me::ChangeTypeAllowed','me::Children',\n            'me::ChildTypeAllowed','me::Compile','me::Create','me::CreateLibrary','me::Delete','me::ExportNode',\n            'me::GetAttribute','me::ImportLibrary','me::ImportNode','me::IsRunnable','me::Move','me::Parent',\n            'me::Rename','me::SetAttribute','MomentToString','MomentToTimeSlot','OptionGetValue',\n            'OptionGetKeywords','OptionGetString','OptionSetString','OptionSetValue','PeriodToString',\n            'ProfilerContinue','ProfilerPause','ProfilerRestart','RestoreInactiveElements',\n            'RetrieveCurrentVariableValues','SetAddRecursive','SetElementAdd','SetElementRename',\n            'SQLColumnData','SQLCreateConnectionString','SQLDriverName','SQLNumberOfColumns',\n            'SQLNumberOfDrivers','SQLNumberOfTables','SQLNumberOfViews','SQLTableName','SQLViewName',\n            'StartTransaction','StringToElement','StringToMoment','StringToTimeSlot','TestDatabaseColumn',\n            'TestDatabaseTable','TestDataSource','TestDate','TimeslotCharacteristic','TimeslotToMoment',\n            'TimeslotToString','TimeZoneOffset','VariableConstraints','PageOpen','PageOpenSingle','PageClose',\n            'PageGetActive','PageSetFocus','PageGetFocus','PageSetCursor','PageRefreshAll','PageGetChild',\n            'PageGetParent','PageGetNext','PageGetPrevious','PageGetNextInTreeWalk','PageGetUsedIdentifiers',\n            'PageGetTitle','PageGetAll','PageCopyTableToClipboard','PageCopyTableToExcel','PrintPage',\n            'PrintPageCount','PrintStartReport','PrintEndReport','PivotTableReloadState','PivotTableSaveState',\n            'PivotTableDeleteState','FileSelect','FileSelectNew','FileDelete','FileExists','FileCopy',\n            'FileMove','FileView','FileEdit','FilePrint','FileTime','FileTouch','FileAppend','FileGetSize',\n            'DirectorySelect','DirectoryCreate','DirectoryDelete','DirectoryExists','DirectoryCopy',\n            'DirectoryMove','DirectoryGetCurrent','DialogProgress','DialogMessage','DialogError',\n            'StatusMessage','DialogAsk','DialogGetString','DialogGetDate','DialogGetNumber','DialogGetElement',\n            'DialogGetElementByText','DialogGetElementByData','DialogGetPassword','DialogGetColor','CaseNew',\n            'CaseFind','CaseCreate','CaseLoadCurrent','CaseMerge','CaseLoadIntoCurrent','CaseSelect',\n            'CaseSelectNew','CaseSetCurrent','CaseSave','CaseSaveAll','CaseSaveAs','CaseSelectMultiple',\n            'CaseGetChangedStatus','CaseSetChangedStatus','CaseDelete','CaseGetType','CaseGetDatasetReference',\n            'CaseWriteToSingleFile','CaseReadFromSingleFile','DatasetNew','DatasetFind','DatasetCreate',\n            'DatasetLoadCurrent','DatasetMerge','DatasetLoadIntoCurrent','DatasetSelect','DatasetSelectNew',\n            'DatasetSetCurrent','DatasetSave','DatasetSaveAll','DatasetSaveAs','DatasetGetChangedStatus',\n            'DatasetSetChangedStatus','DatasetDelete','DatasetGetCategory','DataFileGetName',\n            'DataFileGetAcronym','DataFileSetAcronym','DataFileGetComment','DataFileSetComment',\n            'DataFileGetPath','DataFileGetTime','DataFileGetOwner','DataFileGetGroup','DataFileReadPermitted',\n            'DataFileWritePermitted','DataFileExists','DataFileCopy','DataCategoryContents','CaseTypeContents',\n            'CaseTypeCategories','Execute','OpenDocument','TestInternetConnection','GeoFindCoordinates',\n            'ShowHelpTopic','Delay','ScheduleAt','ExitAimms','SessionArgument','SessionHasVisibleGUI',\n            'ProjectDeveloperMode','DebuggerBreakpoint','ShowProgressWindow','ShowMessageWindow',\n            'SolverGetControl','SolverReleaseControl','ProfilerStart','DataManagerImport','DataManagerExport',\n            'DataManagerFileNew','DataManagerFileOpen','DataManagerFileGetCurrent','DataImport220',\n            'SecurityGetUsers','SecurityGetGroups','UserColorAdd','UserColorDelete','UserColorGetRGB',\n            'UserColorModify','LicenseNumber','LicenseType','LicenseStartDate','LicenseExpirationDate',\n            'LicenseMaintenanceExpirationDate','VARLicenseExpirationDate','AimmsRevisionString',\n            'VARLicenseCreate','HistogramCreate','HistogramDelete','HistogramSetDomain',\n            'HistogramAddObservation','HistogramGetFrequencies','HistogramGetBounds',\n            'HistogramGetObservationCount','HistogramGetAverage','HistogramGetDeviation',\n            'HistogramGetSkewness','HistogramGetKurtosis','DateDifferenceDays','DateDifferenceYearFraction',\n            'PriceFractional','PriceDecimal','RateEffective','RateNominal','DepreciationLinearLife',\n            'DepreciationLinearRate','DepreciationNonLinearSumOfYear','DepreciationNonLinearLife',\n            'DepreciationNonLinearFactor','DepreciationNonLinearRate','DepreciationSum',\n            'InvestmentConstantPresentValue','InvestmentConstantFutureValue',\n            'InvestmentConstantPeriodicPayment','InvestmentConstantInterestPayment',\n            'InvestmentConstantPrincipalPayment','InvestmentConstantCumulativePrincipalPayment',\n            'InvestmentConstantCumulativeInterestPayment','InvestmentConstantNumberPeriods',\n            'InvestmentConstantRateAll','InvestmentConstantRate','InvestmentVariablePresentValue',\n            'InvestmentVariablePresentValueInperiodic','InvestmentSingleFutureValue',\n            'InvestmentVariableInternalRateReturnAll','InvestmentVariableInternalRateReturn',\n            'InvestmentVariableInternalRateReturnInperiodicAll','InvestmentVariableInternalRateReturnInperiodic',\n            'InvestmentVariableInternalRateReturnModified','SecurityDiscountedPrice',\n            'SecurityDiscountedRedemption','SecurityDiscountedYield','SecurityDiscountedRate',\n            'TreasuryBillPrice','TreasuryBillYield','TreasuryBillBondEquivalent','SecurityMaturityPrice',\n            'SecurityMaturityCouponRate','SecurityMaturityYield','SecurityMaturityAccruedInterest',\n            'SecurityCouponNumber','SecurityCouponPreviousDate','SecurityCouponNextDate','SecurityCouponDays',\n            'SecurityCouponDaysPreSettlement','SecurityCouponDaysPostSettlement','SecurityPeriodicPrice',\n            'SecurityPeriodicRedemption','SecurityPeriodicCouponRate','SecurityPeriodicYieldAll',\n            'SecurityPeriodicYield','SecurityPeriodicAccruedInterest','SecurityPeriodicDuration',\n            'SecurityPeriodicDurationModified','Abs','AtomicUnit','Ceil','Character','CharacterNumber','Cube',\n            'Degrees','Div','Exp','FileRead','Floor','Log','Log10','Mapval','Max','Min','Mod','Power',\n            'Radians','Round','Sign','Sqr','Sqrt','StringCapitalize','StringLength','StringToLower',\n            'StringToUnit','StringToUpper','SubString','Trunc','Binomial','NegativeBinomial','Poisson',\n            'Geometric','HyperGeometric','Uniform','Normal','LogNormal','Triangular','Exponential','Weibull',\n            'Beta','Gamma','Logistic','Pareto','ExtremeValue','Precision','Factorial','Combination',\n            'Permutation','Errorf','Cos','Sin','Tan','ArcCos','ArcSin','ArcTan','Cosh','Sinh','Tanh',\n            'ArcCosh','ArcSinh','ArcTanh'\n            )\n        ),\n    'SYMBOLS' => array(\n        0 => array(\n            '(', ')', '[', ']', '{', '}',\n            '%', '&', '|', '/',\n            '<', '>', '>=' , '<=', ':=',\n            '=', '-', '+', '*',\n            '.', ','\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000FF;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #404040;',\n            4 => 'color: #990000; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #808080; font-style: italic ',\n            'HARD' => 'color: #808080; font-style: italic'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000; font-style: italic;',\n            'MULTI' => 'color: #008000; font-style: italic;'\n            ),\n\n        'METHODS' => array(\n            1 => 'color: #004000;',\n            2 => 'color: #004000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;',\n            1 => 'color: #000000; font-weight: bold;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            3 => '',\n            4 => '',\n            5 => ''\n            ),\n        'ESCAPE_CHAR' => array()\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => false,\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/algol68.php",
    "content": "<?php\n/*************************************************************************************\n * algol68.php\n * --------\n * Author: Neville Dempsey (NevilleD.sourceforge@sgr-a.net)\n * Copyright: (c) 2010 Neville Dempsey (https://sourceforge.net/projects/algol68/files/)\n * Release Version: 1.0.9.1\n * Date Started: 2010/04/24\n *\n * ALGOL 68 language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/04/24 (1.0.8.8.0)\n *   - First Release - machine generated by http://rosettacode.org/geshi/\n * 2010/05/24 (1.0.8.8.1)\n *   - #2324 - converted comment detection to RegEx\n * 2010/06/16 (1.0.8.8.2)\n *   - separate symbols from keywords - quick fix\n * 2010/06/16 (1.0.8.8.3)\n *   - reverse length order symbols\n *   - Add RegEx for BITS and REAL literals (INT to do)\n *   - recognise LONG and SHORT prefixes to literals\n * 2010/07/23 (1.0.8.8.4)\n *   - fix errors detected by langcheck.php, eg rm tab, fix indenting, rm duplicate keywords, fix symbols as keywords etc\n *   - removed bulk of local variables from name space.\n *   - unfolded arrays\n *\n * TODO (updated yyyy/mm/dd)\n * -------------------------\n *   - Use \"Parser Control\" to fix KEYWORD parsing, eg: (INT minus one= -1; print(ABSminus one))\n *   - Parse $FORMATS$ more fully - if possible.\n *   - Pull reserved words from the source of A68G and A68RS\n *   - Pull stdlib PROC/OP/MODE symbols from the soruce of A68G and A68RS\n *   - Pull PROC/OP/MODE extensions from the soruce of A68G and A68RS\n *   - Use RegEx to detect extended precision PROC names, eg 'long long sin' etc\n *   - Use RegEx to detect white space std PROC names, eg 'new line'\n *   - Use RegEx to detect white space ext PROC names, eg 'cgs speed of light'\n *   - Use RegEx to detect BOLD symbols, eg userdefined MODEs and OPs\n *   - Add REgEx for INT literals - Adding INT breaks formatting...\n *   - Adding PIPE as a key word breaks formatting of \"|\" symbols!!\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\nif(!function_exists('geshi_langfile_algol68_vars')) {\n    function geshi_langfile_algol68_vars(){\n        $pre='(?<![0-9a-z_\\.])';\n        $post='?(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)';\n        $post=\"\"; # assuming the RegEx is greedy #\n\n        $_=\"\\s*\";\n\n        $srad=\"Rr\";        $rrad=\"[\".$srad.\"]\";  # either one digit, OR opt-space in digits #\n        $sbin=\"0-1\";       $rbin=\"[\".$sbin.\"]\";  $_bin=$rbin.\"(?:[\".$sbin.\"\\s]*\".$rbin.\"|)\";\n        $snib=\"0-3\";       $rnib=\"[\".$snib.\"]\";  $_nib=$rnib.\"(?:[\".$snib.\"\\s]*\".$rnib.\"|)\";\n        $soct=\"0-7\";       $roct=\"[\".$soct.\"]\";  $_oct=$roct.\"(?:[\".$soct.\"\\s]*\".$roct.\"|)\";\n        $sdec=\"0-9\";       $rdec=\"[\".$sdec.\"]\";  $_dec=$rdec.\"(?:[\".$sdec.\"\\s]*\".$rdec.\"|)\";\n        $shex=\"0-9A-Fa-f\"; $rhex=\"[\".$shex.\"]\";  $_hex=$rhex.\"(?:[\".$shex.\"\\s]*\".$rhex.\"|)\";\n\n        # Define BITS: #\n        $prebits=$pre; $postbits=$post;\n        $bl=\"2\".$_.$rrad.$_.$_bin;\n        $bl=$bl.\"|\".\"2\".$_.$rrad.$_.$_bin;\n        $bl=$bl.\"|\".\"4\".$_.$rrad.$_.$_nib;\n        $bl=$bl.\"|\".\"8\".$_.$rrad.$_.$_oct;\n        $bl=$bl.\"|\".\"1\".$_.\"0\".$_.$rrad.$_.$_dec;\n        $bl=$bl.\"|\".\"1\".$_.\"6\".$_.$rrad.$_.$_hex;\n\n        # Define INT: #\n        $preint=$pre; $postint=$post;\n        # for some reason \".0 e - 2\" is not recognised, but \".0 e + 2\" IS!\n        # work around: remove spaces between sign and digits! Maybe because\n        # of the Unary '-' Operator\n        $sign_=\"(?:-|\\-|[-]|[\\-]|\\+|)\";  # attempts # // FIXME: This should be used or removed. Assignment beneath\n\n        $sign_=\"(?:-\\s*|\\+\\s*|)\"; # n.b. sign is followed by white space #\n\n        $_int=$sign_.$_dec;\n        $il=          $_int;                      # +_9           #\n\n        //$GESHI_NUMBER_INT_BASIC='(?:(?<![0-9a-z_\\.%])|(?<=\\.\\.))(?<![\\d\\.]e[+\\-])([1-9]\\d*?|0)(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)';\n\n        # Define REAL: #\n        $prereal=$pre; $postreal=$post;\n        $sexp=\"Ee\\\\\\\\\";   $_exp=\"(?:⏨|[\".$sexp.\"])\".$_.$_int;\n        $_decimal=\"[.]\".$_.$_dec;\n\n        # Add permitted permutations of various parts #\n        $rl=        $_int.$_.$_decimal.$_.$_exp; # +_9_._9_e_+_9 #\n        $rl=$rl.\"|\".$_int.$_.\"[.]\".$_.$_exp;     # +_9_.___e_+_9 #\n        $rl=$rl.\"|\".$_int.$_.$_exp;              # +_9_____e_+_9 #\n        $rl=$rl.\"|\".$sign_.$_decimal.$_.$_exp;   # +___._9_e_+_9 #\n\n        $rl=$rl.\"|\".$_int.$_.$_decimal;          # +_9_._9       #\n        $rl=$rl.\"|\".$sign_.$_decimal;            # +___._9       #\n\n        # The following line damaged formatting...\n        #$rl=$rl.\"|\".$_int;                       # +_9           #\n\n        # Apparently Algol68 does not support '2.', c.f. Algol 68G\n        #$rl=$rl.\"|\".$_int.$_.\"[.]\";             # +_9_.         #\n\n        # Literal prefixes are overridden by KEYWORDS :-(\n        $LONGS=\"(?:(?:(LONG\\s+)*|(SHORT\\s+))*|)\";\n\n        return array(\n            \"BITS\" => $prebits.$LONGS.\"(?:\".$bl.\")\".$postbits,\n            \"INT\" => $preint.$LONGS.\"(?:\".$il.\")\".$postint,\n            \"REAL\" => $prereal.$LONGS.\"(?:\".$rl.\")\".$postreal,\n\n            \"BOLD\" => 'color: #b1b100; font-weight: bold;',\n            \"ITALIC\" => 'color: #b1b100;', # procedures traditionally italic #\n            \"NONSTD\" => 'color: #FF0000; font-weight: bold;', # RED #\n            \"COMMENT\" => 'color: #666666; font-style: italic;'\n        );\n    }\n}\n$a68=geshi_langfile_algol68_vars();\n\n$language_data = array(\n    'LANG_NAME' => 'ALGOL 68',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(\n        '¢' => '¢',\n        '£' => '£',\n        '#' => '#',\n        ),\n    'COMMENT_REGEXP' => array(\n        1 => '/\\bCO((?:MMENT)?)\\b.*?\\bCO\\\\1\\b/i',\n        2 => '/\\bPR((?:AGMAT)?)\\b.*?\\bPR\\\\1\\b/i',\n        3 => '/\\bQUOTE\\b.*?\\bQUOTE\\b/i'\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\"',\n    'NUMBERS' => GESHI_NUMBER_HEX_SUFFIX,  # Warning: Feature!! #\n#                GESHI_NUMBER_HEX_SUFFIX, # Attempt ignore default #\n    'KEYWORDS' => array(\n# Extensions\n        1 => array('KEEP', 'FINISH', 'USE', 'SYSPROCS', 'IOSTATE', 'USING', 'ENVIRON', 'PROGRAM', 'CONTEXT'),\n#        2 => array('CASE', 'IN', 'OUSE', 'IN', 'OUT', 'ESAC', '(', '|', '|:', ')', 'FOR', 'FROM', 'TO', 'BY', 'WHILE', 'DO', 'OD', 'IF', 'THEN', 'ELIF', 'THEN', 'ELSE', 'FI', 'PAR', 'BEGIN', 'EXIT', 'END', 'GO', 'GOTO', 'FORALL', 'UPTO', 'DOWNTO', 'FOREACH', 'ASSERT'), #\n        2 => array('CASE', 'IN', 'OUSE', /* 'IN',*/ 'OUT', 'ESAC', 'PAR', 'BEGIN', 'EXIT', 'END', 'GO TO', 'GOTO', 'FOR', 'FROM', 'TO', 'BY', 'WHILE', 'DO', 'OD', 'IF', 'THEN', 'ELIF', /* 'THEN',*/ 'ELSE', 'FI' ),\n        3 => array('BITS', 'BOOL', 'BYTES', 'CHAR', 'COMPL', 'INT', 'REAL', 'SEMA', 'STRING', 'VOID'),\n        4 => array('MODE', 'OP', 'PRIO', 'PROC', 'FLEX', 'HEAP', 'LOC', 'REF', 'LONG', 'SHORT', 'EITHER'),\n# Extensions or deprecated keywords\n# 'PIPE': keyword somehow interferes with the internal operation of GeSHi\n        5 => array('FORALL', 'UPTO', 'DOWNTO', 'FOREACH', 'ASSERT', 'CTB', 'CT', 'CTAB', 'COMPLEX', 'VECTOR', 'SOUND' /*, 'PIPE'*/),\n        6 => array('CHANNEL', 'FILE', 'FORMAT', 'STRUCT', 'UNION', 'OF'),\n# '(', '|', '|:', ')',  #\n#        7 => array('OF', 'AT', '@', 'IS', ':=:', 'ISNT', ':/=:', ':≠:', 'CTB', 'CT', '::', 'CTAB', '::=', 'TRUE', 'FALSE', 'EMPTY', 'NIL', '○', 'SKIP', '~'),\n        7 => array('AT', 'IS', 'ISNT', 'TRUE', 'FALSE', 'EMPTY', 'NIL', 'SKIP'),\n        8 => array('NOT', 'UP', 'DOWN', 'LWB', 'UPB', /* '-',*/ 'ABS', 'ARG', 'BIN', 'ENTIER', 'LENG', 'LEVEL', 'ODD', 'REPR', 'ROUND', 'SHORTEN', 'CONJ', 'SIGN'),\n# OPERATORS ordered roughtly by PRIORITY #\n#       9 => array('¬', '↑', '↓', '⌊', '⌈', '~', '⎩', '⎧'),\n#        10 => array('+*', 'I', '+×', '⊥', '!', '⏨'),\n        10 => array('I'),\n#        11 => array('SHL', 'SHR', '**', 'UP', 'DOWN', 'LWB', 'UPB', '↑', '↓', '⌊', '⌈', '⎩', '⎧'),\n        11 => array('SHL', 'SHR', /*'UP', 'DOWN', 'LWB', 'UPB'*/),\n#        12 => array('*', '/', '%', 'OVER', '%*', 'MOD', 'ELEM', '×', '÷', '÷×', '÷*', '%×', '□', '÷:'),\n        12 => array('OVER', 'MOD', 'ELEM'),\n#        13 => array('-', '+'),\n#        14 => array('<', 'LT', '<=', 'LE', '>=', 'GE', '>', 'GT', '≤', '≥'),\n        14 => array('LT', 'LE', 'GE', 'GT'),\n#        15 => array('=', 'EQ', '/=', 'NE', '≠', '~='),\n        15 => array('EQ', 'NE'),\n#        16 => array('&', 'AND', '∧', 'OR', '∨', '/\\\\', '\\\\/'),\n        16 => array('AND', 'OR'),\n        17 => array('MINUSAB', 'PLUSAB', 'TIMESAB', 'DIVAB', 'OVERAB', 'MODAB', 'PLUSTO'),\n#        18 => array('-:=', '+:=', '*:=', '/:=', '%:=', '%*:=', '+=:', '×:=', '÷:=', '÷×:=', '÷*:=', '%×:=', '÷::=', 'MINUS', 'PLUS', 'DIV', 'MOD', 'PRUS'),\n# Extensions or deprecated keywords\n        18 => array('MINUS', 'PLUS', 'DIV', /* 'MOD',*/ 'PRUS', 'IS NOT'),\n# Extensions or deprecated keywords\n        19 => array('THEF', 'ANDF', 'ORF', 'ANDTH', 'OREL', 'ANDTHEN', 'ORELSE'),\n# Built in procedures - from standard prelude #\n        20 => array('int lengths', 'intlengths', 'int shorths', 'intshorths', 'max int', 'maxint', 'real lengths', 'reallengths', 'real shorths', 'realshorths', 'bits lengths', 'bitslengths', 'bits shorths', 'bitsshorths', 'bytes lengths', 'byteslengths', 'bytes shorths', 'bytesshorths', 'max abs char', 'maxabschar', 'int width', 'intwidth', 'long int width', 'longintwidth', 'long long int width', 'longlongintwidth', 'real width', 'realwidth', 'long real width', 'longrealwidth', 'long long real width', 'longlongrealwidth', 'exp width', 'expwidth', 'long exp width', 'longexpwidth', 'long long exp width', 'longlongexpwidth', 'bits width', 'bitswidth', 'long bits width', 'longbitswidth', 'long long bits width', 'longlongbitswidth', 'bytes width', 'byteswidth', 'long bytes width', 'longbyteswidth', 'max real', 'maxreal', 'small real', 'smallreal', 'long max int', 'longmaxint', 'long long max int', 'longlongmaxint', 'long max real', 'longmaxreal', 'long small real', 'longsmallreal', 'long long max real', 'longlongmaxreal', 'long long small real', 'longlongsmallreal', 'long max bits', 'longmaxbits', 'long long max bits', 'longlongmaxbits', 'null character', 'nullcharacter', 'blank', 'flip', 'flop', 'error char', 'errorchar', 'exp char', 'expchar', 'newline char', 'newlinechar', 'formfeed char', 'formfeedchar', 'tab char', 'tabchar'),\n        21 => array('stand in channel', 'standinchannel', 'stand out channel', 'standoutchannel', 'stand back channel', 'standbackchannel', 'stand draw channel', 'standdrawchannel', 'stand error channel', 'standerrorchannel'),\n        22 => array('put possible', 'putpossible', 'get possible', 'getpossible', 'bin possible', 'binpossible', 'set possible', 'setpossible', 'reset possible', 'resetpossible', 'reidf possible', 'reidfpossible', 'draw possible', 'drawpossible', 'compressible', 'on logical file end', 'onlogicalfileend', 'on physical file end', 'onphysicalfileend', 'on line end', 'onlineend', 'on page end', 'onpageend', 'on format end', 'onformatend', 'on value error', 'onvalueerror', 'on open error', 'onopenerror', 'on transput error', 'ontransputerror', 'on format error', 'onformaterror', 'open', 'establish', 'create', 'associate', 'close', 'lock', 'scratch', 'space', 'new line', 'newline', 'print', 'write f', 'writef', 'print f', 'printf', 'write bin', 'writebin', 'print bin', 'printbin', 'read f', 'readf', 'read bin', 'readbin', 'put f', 'putf', 'get f', 'getf', 'make term', 'maketerm', 'make device', 'makedevice', 'idf', 'term', 'read int', 'readint', 'read long int', 'readlongint', 'read long long int', 'readlonglongint', 'read real', 'readreal', 'read long real', 'readlongreal', 'read long long real', 'readlonglongreal', 'read complex', 'readcomplex', 'read long complex', 'readlongcomplex', 'read long long complex', 'readlonglongcomplex', 'read bool', 'readbool', 'read bits', 'readbits', 'read long bits', 'readlongbits', 'read long long bits', 'readlonglongbits', 'read char', 'readchar', 'read string', 'readstring', 'print int', 'printint', 'print long int', 'printlongint', 'print long long int', 'printlonglongint', 'print real', 'printreal', 'print long real', 'printlongreal', 'print long long real', 'printlonglongreal', 'print complex', 'printcomplex', 'print long complex', 'printlongcomplex', 'print long long complex', 'printlonglongcomplex', 'print bool', 'printbool', 'print bits', 'printbits', 'print long bits', 'printlongbits', 'print long long bits', 'printlonglongbits', 'print char', 'printchar', 'print string', 'printstring', 'whole', 'fixed', 'float'),\n        23 => array('pi', 'long pi', 'longpi', 'long long pi', 'longlongpi'),\n        24 => array('sqrt', 'curt', 'cbrt', 'exp', 'ln', 'log', 'sin', 'arc sin', 'arcsin', 'cos', 'arc cos', 'arccos', 'tan', 'arc tan', 'arctan', 'long sqrt', 'longsqrt', 'long curt', 'longcurt', 'long cbrt', 'longcbrt', 'long exp', 'longexp', 'long ln', 'longln', 'long log', 'longlog', 'long sin', 'longsin', 'long arc sin', 'longarcsin', 'long cos', 'longcos', 'long arc cos', 'longarccos', 'long tan', 'longtan', 'long arc tan', 'longarctan', 'long long sqrt', 'longlongsqrt', 'long long curt', 'longlongcurt', 'long long cbrt', 'longlongcbrt', 'long long exp', 'longlongexp', 'long long ln', 'longlongln', 'long long log', 'longlonglog', 'long long sin', 'longlongsin', 'long long arc sin', 'longlongarcsin', 'long long cos', 'longlongcos', 'long long arc cos', 'longlongarccos', 'long long tan', 'longlongtan', 'long long arc tan', 'longlongarctan'),\n        25 => array('first random', 'firstrandom', 'next random', 'nextrandom', 'long next random', 'longnextrandom', 'long long next random', 'longlongnextrandom'),\n        26 => array('real', 'bits pack', 'bitspack', 'long bits pack', 'longbitspack', 'long long bits pack', 'longlongbitspack', 'bytes pack', 'bytespack', 'long bytes pack', 'longbytespack', 'char in string', 'charinstring', 'last char in string', 'lastcharinstring', 'string in string', 'stringinstring'),\n        27 => array('utc time', 'utctime', 'local time', 'localtime', 'argc', 'argv', 'get env', 'getenv', 'reset errno', 'reseterrno', 'errno', 'strerror'),\n        28 => array('sinh', 'long sinh', 'longsinh', 'long long sinh', 'longlongsinh', 'arc sinh', 'arcsinh', 'long arc sinh', 'longarcsinh', 'long long arc sinh', 'longlongarcsinh', 'cosh', 'long cosh', 'longcosh', 'long long cosh', 'longlongcosh', 'arc cosh', 'arccosh', 'long arc cosh', 'longarccosh', 'long long arc cosh', 'longlongarccosh', 'tanh', 'long tanh', 'longtanh', 'long long tanh', 'longlongtanh', 'arc tanh', 'arctanh', 'long arc tanh', 'longarctanh', 'long long arc tanh', 'longlongarctanh', 'arc tan2', 'arctan2', 'long arc tan2', 'longarctan2', 'long long arc tan2', 'longlongarctan2'),\n        29 => array('complex sqrt', 'complexsqrt', 'long complex sqrt', 'longcomplexsqrt', 'long long complex sqrt', 'longlongcomplexsqrt', 'complex exp', 'complexexp', 'long complex exp', 'longcomplexexp', 'long long complex exp', 'longlongcomplexexp', 'complex ln', 'complexln', 'long complex ln', 'longcomplexln', 'long long complex ln', 'longlongcomplexln', 'complex sin', 'complexsin', 'long complex sin', 'longcomplexsin', 'long long complex sin', 'longlongcomplexsin', 'complex arc sin', 'complexarcsin', 'long complex arc sin', 'longcomplexarcsin', 'long long complex arc sin', 'longlongcomplexarcsin', 'complex cos', 'complexcos', 'long complex cos', 'longcomplexcos', 'long long complex cos', 'longlongcomplexcos', 'complex arc cos', 'complexarccos', 'long complex arc cos', 'longcomplexarccos', 'long long complex arc cos', 'longlongcomplexarccos', 'complex tan', 'complextan', 'long complex tan', 'longcomplextan', 'long long complex tan', 'longlongcomplextan', 'complex arc tan', 'complexarctan', 'long complex arc tan', 'longcomplexarctan', 'long long complex arc tan', 'longlongcomplexarctan', 'complex sinh', 'complexsinh', 'complex arc sinh', 'complexarcsinh', 'complex cosh', 'complexcosh', 'complex arc cosh', 'complexarccosh', 'complex tanh', 'complextanh', 'complex arc tanh', 'complexarctanh')\n        ),\n    'SYMBOLS' => array(\n        1 => array( /* reverse length sorted... */ '÷×:=', '%×:=', ':≠:', '÷*:=', '÷::=', '%*:=', ':/=:', '×:=', '÷:=', '÷×', '%:=', '%×', '*:=', '+:=', '+=:', '+×', '-:=', '/:=', '::=', ':=:', '÷*', '÷:', '↑', '↓', '∧', '∨', '≠', '≤', '≥', '⊥', '⌈', '⌊', '⎧', '⎩', /* '⏨', */ '□', '○', '%*', '**', '+*', '/=', '::', '/\\\\', '\\\\/', '<=', '>=', '|:', '~=', '¬', '×', '÷', '!', '%', '&', '(', ')', '*', '+', ',', '-', '/', ':', ';', '<', '=', '>', '?', '@', '[', ']', '^', '{', '|', '}', '~')\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true,\n#        9 => true,\n        10 => true,\n        11 => true,\n        12 => true,\n#        13 => true,\n        14 => true,\n        15 => true,\n        16 => true,\n        17 => true,\n        18 => true,\n        19 => true,\n        20 => true,\n        21 => true,\n        22 => true,\n        23 => true,\n        24 => true,\n        25 => true,\n        26 => true,\n        27 => true,\n        28 => true,\n        29 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => $a68['NONSTD'], 2 => $a68['BOLD'], 3 => $a68['BOLD'], 4 => $a68['BOLD'],\n            5 => $a68['NONSTD'], 6 => $a68['BOLD'], 7 => $a68['BOLD'], 8 => $a68['BOLD'],\n            /* 9 => $a68['BOLD'],*/ 10 => $a68['BOLD'], 11 => $a68['BOLD'], 12 => $a68['BOLD'],\n            /* 13 => $a68['BOLD'],*/ 14 => $a68['BOLD'], 15 => $a68['BOLD'], 16 => $a68['BOLD'], 17 => $a68['BOLD'],\n            18 => $a68['NONSTD'], 19 => $a68['NONSTD'],\n            20 => $a68['ITALIC'], 21 => $a68['ITALIC'], 22 => $a68['ITALIC'], 23 => $a68['ITALIC'],\n            24 => $a68['ITALIC'], 25 => $a68['ITALIC'], 26 => $a68['ITALIC'], 27 => $a68['ITALIC'],\n            28 => $a68['ITALIC'], 29 => $a68['ITALIC']\n            ),\n        'COMMENTS' => array(\n            1 => $a68['COMMENT'], 2 => $a68['COMMENT'], 3 => $a68['COMMENT'], /* 4 => $a68['COMMENT'],\n            5 => $a68['COMMENT'],*/ 'MULTI' => $a68['COMMENT']\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;',\n            ),\n        'METHODS' => array(\n            0 => 'color: #004000;',\n            1 => 'color: #004000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;',\n            1 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            0  => 'color: #cc66cc;',   # BITS #\n            1  => 'color: #cc66cc;',   # REAL #\n            /* 2  => 'color: #cc66cc;',   # INT # */\n            ),\n        'SCRIPT' => array()\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => '',\n#        9 => '',\n        10 => '',\n        11 => '',\n        12 => '',\n#        13 => '',\n        14 => '',\n        15 => '',\n        16 => '',\n        17 => '',\n        18 => '',\n        19 => '',\n        20 => '',\n        21 => '',\n        22 => '',\n        23 => '',\n        24 => '',\n        25 => '',\n        26 => '',\n        27 => '',\n        28 => '',\n        29 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        0 => '→',\n        1 => 'OF'\n        ),\n    'REGEXPS' => array(\n        0 => $a68['BITS'],\n        1 => $a68['REAL']\n        # 2 => $a68['INT'], # Breaks formatting for some reason #\n        # 2 => $GESHI_NUMBER_INT_BASIC # Also breaks formatting  #\n    ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n\nunset($a68);\n"
  },
  {
    "path": "includes/geshi/apache.php",
    "content": "<?php\n/*************************************************************************************\n * apache.php\n * ----------\n * Author: Tux (tux@inmail.cz)\n * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/29/07\n *\n * Apache language file for GeSHi.\n * Words are from SciTe configuration file\n *\n * CHANGES\n * -------\n * 2008/17/06 (1.0.8)\n *  -  Added support for apache configuration sections (milian)\n *  -  Added missing php keywords (milian)\n *  -  Added some more keywords\n *  -  Disabled highlighting of brackets by default\n * 2004/11/27 (1.0.2)\n *  -  Added support for multiple object splitters\n * 2004/10/27 (1.0.1)\n *   -  Added support for URLs\n * 2004/08/05 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2004/07/29)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Apache configuration',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        /*keywords*/\n        1 => array(\n            //core.c\n            'AcceptFilter','AcceptPathInfo','AccessConfig','AccessFileName',\n            'AddDefaultCharset','AddOutputFilterByType','AllowEncodedSlashes',\n            'AllowOverride','AuthName','AuthType','ContentDigest',\n            'CoreDumpDirectory','DefaultType','DocumentRoot','EnableMMAP',\n            'EnableSendfile','ErrorDocument','ErrorLog','FileETag','ForceType',\n            'HostnameLookups','Include','LimitInternalRecursion',\n            'LimitRequestBody','LimitRequestFields','LimitRequestFieldsize',\n            'LimitRequestLine','LimitXMLRequestBody','LogLevel','MaxMemFree',\n            'MaxRequestsPerChild','NameVirtualHost','Options','PidFile','Port',\n            'Protocol','Require','RLimitCPU','RLimitMEM','RLimitNPROC',\n            'Satisfy','ScoreBoardFile','ServerAdmin','ServerAlias','ServerName',\n            'ServerPath','ServerRoot','ServerSignature','ServerTokens',\n            'SetHandler','SetInputFilter','SetOutputFilter','ThreadStackSize',\n            'Timeout','TraceEnable','UseCanonicalName',\n            'UseCanonicalPhysicalPort',\n\n            //http_core.c\n            'KeepAlive','KeepAliveTimeout','MaxKeepAliveRequests',\n\n            //mod_actions.c\n            'Action','Script',\n\n            //mod_alias.c\n            'Alias','AliasMatch','Redirect','RedirectMatch','RedirectPermanent',\n            'RedirectTemp','ScriptAlias','ScriptAliasMatch',\n\n            //mod_asis.c\n\n            //mod_auth_basic.c\n            'AuthBasicAuthoritative','AuthBasicProvider',\n\n            //mod_auth_digest.c\n            'AuthDigestAlgorithm','AuthDigestDomain','AuthDigestNcCheck',\n            'AuthDigestNonceFormat','AuthDigestNonceLifetime',\n            'AuthDigestProvider','AuthDigestQop','AuthDigestShmemSize',\n\n            //mod_authn_alias.c\n\n            //mod_authn_anon.c\n            'Anonymous','Anonymous_LogEmail','Anonymous_MustGiveEmail',\n            'Anonymous_NoUserId','Anonymous_VerifyEmail',\n\n            //mod_authn_dbd.c\n            'AuthDBDUserPWQuery','AuthDBDUserRealmQuery',\n\n            //mod_authn_dbm.c\n            'AuthDBMType','AuthDBMUserFile',\n\n            //mod_authn_default.c\n            'AuthDefaultAuthoritative',\n\n            //mod_authn_file.c\n            'AuthUserFile',\n\n            //mod_authnz_ldap.c\n            'AuthLDAPBindDN','AuthLDAPBindPassword','AuthLDAPCharsetConfig',\n            'AuthLDAPCompareDNOnServer','AuthLDAPDereferenceAliases',\n            'AuthLDAPGroupAttribute','AuthLDAPGroupAttributeIsDN',\n            'AuthLDAPRemoteUserAttribute','AuthLDAPRemoteUserIsDN',\n            'AuthLDAPURL','AuthzLDAPAuthoritative',\n\n            //mod_authz_dbm.c\n            'AuthDBMGroupFile','AuthzDBMAuthoritative','AuthzDBMType',\n\n            //mod_authz_default.c\n            'AuthzDefaultAuthoritative',\n\n            //mod_authz_groupfile.c\n            'AuthGroupFile','AuthzGroupFileAuthoritative',\n\n            //mod_authz_host.c\n            'Allow','Deny','Order',\n\n            //mod_authz_owner.c\n            'AuthzOwnerAuthoritative',\n\n            //mod_authz_svn.c\n            'AuthzForceUsernameCase','AuthzSVNAccessFile','AuthzSVNAnonymous',\n            'AuthzSVNAuthoritative','AuthzSVNNoAuthWhenAnonymousAllowed',\n\n            //mod_authz_user.c\n            'AuthzUserAuthoritative',\n\n            //mod_autoindex.c\n            'AddAlt','AddAltByEncoding','AddAltByType','AddDescription',\n            'AddIcon','AddIconByEncoding','AddIconByType','DefaultIcon',\n            'FancyIndexing','HeaderName','IndexHeadInsert','IndexIgnore',\n            'IndexOptions','IndexOrderDefault','IndexStyleSheet','ReadmeName',\n\n            //mod_bt.c\n            'Tracker','TrackerDetailURL','TrackerFlags','TrackerHashMaxAge',\n            'TrackerHashMinAge','TrackerHashWatermark','TrackerHome',\n            'TrackerReturnInterval','TrackerReturnMax',\n            'TrackerReturnPeerFactor','TrackerReturnPeers','TrackerRootInclude',\n            'TrackerStyleSheet',\n\n            //mod_bw.c\n            'BandWidth','BandWidthError','BandWidthModule','BandWidthPacket',\n            'ForceBandWidthModule','LargeFileLimit','MaxConnection',\n            'MinBandWidth',\n\n            //mod_cache.c\n            'CacheDefaultExpire','CacheDisable','CacheEnable',\n            'CacheIgnoreCacheControl','CacheIgnoreHeaders',\n            'CacheIgnoreNoLastMod','CacheIgnoreQueryString',\n            'CacheLastModifiedFactor','CacheMaxExpire','CacheStoreNoStore',\n            'CacheStorePrivate',\n\n            //mod_cern_meta.c\n            'MetaDir','MetaFiles','MetaSuffix',\n\n            //mod_cgi.c\n            'ScriptLog','ScriptLogBuffer','ScriptLogLength',\n\n            //mod_charset_lite.c\n            'CharsetDefault','CharsetOptions','CharsetSourceEnc',\n\n            //mod_dav.c\n            'DAV','DAVDepthInfinity','DAVMinTimeout',\n\n            //mod_dav_fs.c\n            'DAVLockDB',\n\n            //mod_dav_lock.c\n            'DAVGenericLockDB',\n\n            //mod_dav_svn.c\n            'SVNActivitiesDB','SVNAllowBulkUpdates','SVNAutoversioning',\n            'SVNIndexXSLT','SVNListParentPath','SVNMasterURI','SVNParentPath',\n            'SVNPath','SVNPathAuthz','SVNReposName','SVNSpecialURI',\n\n            //mod_dbd.c\n            'DBDExptime','DBDKeep','DBDMax','DBDMin','DBDParams','DBDPersist',\n            'DBDPrepareSQL','DBDriver',\n\n            //mod_deflate.c\n            'DeflateBufferSize','DeflateCompressionLevel','DeflateFilterNote',\n            'DeflateMemLevel','DeflateWindowSize',\n\n            //mod_dir.c\n            'DirectoryIndex','DirectorySlash',\n\n            //mod_disk_cache.c\n            'CacheDirLength','CacheDirLevels','CacheMaxFileSize',\n            'CacheMinFileSize','CacheRoot',\n\n            //mod_dumpio.c\n            'DumpIOInput','DumpIOLogLevel','DumpIOOutput',\n\n            //mod_env.c\n            'PassEnv','SetEnv','UnsetEnv',\n\n            //mod_expires.c\n            'ExpiresActive','ExpiresByType','ExpiresDefault',\n\n            //mod_ext_filter.c\n            'ExtFilterDefine','ExtFilterOptions',\n\n            //mod_file_cache.c\n            'cachefile','mmapfile',\n\n            //mod_filter.c\n            'FilterChain','FilterDeclare','FilterProtocol','FilterProvider',\n            'FilterTrace',\n\n            //mod_gnutls.c\n            'GnuTLSCache','GnuTLSCacheTimeout','GnuTLSCertificateFile',\n            'GnuTLSKeyFile','GnuTLSPGPCertificateFile','GnuTLSPGPKeyFile',\n            'GnuTLSClientVerify','GnuTLSClientCAFile','GnuTLSPGPKeyringFile',\n            'GnuTLSEnable','GnuTLSDHFile','GnuTLSRSAFile','GnuTLSSRPPasswdFile',\n            'GnuTLSSRPPasswdConfFile','GnuTLSPriorities',\n            'GnuTLSExportCertificates',\n\n            //mod_headers.c\n            'Header','RequestHeader',\n\n            //mod_imagemap.c\n            'ImapBase','ImapDefault','ImapMenu',\n\n            //mod_include.c\n            'SSIAccessEnable','SSIEndTag','SSIErrorMsg','SSIStartTag',\n            'SSITimeFormat','SSIUndefinedEcho','XBitHack',\n\n            //mod_ident.c\n            'IdentityCheck','IdentityCheckTimeout',\n\n            //mod_info.c\n            'AddModuleInfo',\n\n            //mod_isapi.c\n            'ISAPIAppendLogToErrors','ISAPIAppendLogToQuery','ISAPICacheFile',\n            'ISAPIFakeAsync','ISAPILogNotSupported','ISAPIReadAheadBuffer',\n\n            //mod_log_config.c\n            'BufferedLogs','CookieLog','CustomLog','LogFormat','TransferLog',\n\n            //mod_log_forensic.c\n            'ForensicLog',\n\n            //mod_log_rotate.c\n            'RotateInterval','RotateLogs','RotateLogsLocalTime',\n\n            //mod_logio.c\n\n            //mod_mem_cache.c\n            'MCacheMaxObjectCount','MCacheMaxObjectSize',\n            'MCacheMaxStreamingBuffer','MCacheMinObjectSize',\n            'MCacheRemovalAlgorithm','MCacheSize',\n\n            //mod_mime.c\n            'AddCharset','AddEncoding','AddHandler','AddInputFilter',\n            'AddLanguage','AddOutputFilter','AddType','DefaultLanguage',\n            'ModMimeUsePathInfo','MultiviewsMatch','RemoveCharset',\n            'RemoveEncoding','RemoveHandler','RemoveInputFilter',\n            'RemoveLanguage','RemoveOutputFilter','RemoveType','TypesConfig',\n\n            //mod_mime_magic.c\n            'MimeMagicFile',\n\n            //mod_negotiation.c\n            'CacheNegotiatedDocs','ForceLanguagePriority','LanguagePriority',\n\n            //mod_php5.c\n            'php_admin_flag','php_admin_value','php_flag','php_value',\n            'PHPINIDir',\n\n            //mod_proxy.c\n            'AllowCONNECT','BalancerMember','NoProxy','ProxyBadHeader',\n            'ProxyBlock','ProxyDomain','ProxyErrorOverride',\n            'ProxyFtpDirCharset','ProxyIOBufferSize','ProxyMaxForwards',\n            'ProxyPass','ProxyPassInterpolateEnv','ProxyPassMatch',\n            'ProxyPassReverse','ProxyPassReverseCookieDomain',\n            'ProxyPassReverseCookiePath','ProxyPreserveHost',\n            'ProxyReceiveBufferSize','ProxyRemote','ProxyRemoteMatch',\n            'ProxyRequests','ProxySet','ProxyStatus','ProxyTimeout','ProxyVia',\n\n            //mod_proxy_ajp.c\n\n            //mod_proxy_balancer.c\n\n            //mod_proxy_connect.c\n\n            //mod_proxy_ftp.c\n\n            //mod_proxy_http.c\n\n            //mod_rewrite.c\n            'RewriteBase','RewriteCond','RewriteEngine','RewriteLock',\n            'RewriteLog','RewriteLogLevel','RewriteMap','RewriteOptions',\n            'RewriteRule',\n\n            //mod_setenvif.c\n            'BrowserMatch','BrowserMatchNoCase','SetEnvIf','SetEnvIfNoCase',\n\n            //mod_so.c\n            'LoadFile','LoadModule',\n\n            //mod_speling.c\n            'CheckCaseOnly','CheckSpelling',\n\n            //mod_ssl.c\n            'SSLCACertificateFile','SSLCACertificatePath','SSLCADNRequestFile',\n            'SSLCADNRequestPath','SSLCARevocationFile','SSLCARevocationPath',\n            'SSLCertificateChainFile','SSLCertificateFile',\n            'SSLCertificateKeyFile','SSLCipherSuite','SSLCryptoDevice',\n            'SSLEngine','SSLHonorCipherOrder','SSLMutex','SSLOptions',\n            'SSLPassPhraseDialog','SSLProtocol','SSLProxyCACertificateFile',\n            'SSLProxyCACertificatePath','SSLProxyCARevocationFile',\n            'SSLProxyCARevocationPath','SSLProxyCipherSuite','SSLProxyEngine',\n            'SSLProxyMachineCertificateFile','SSLProxyMachineCertificatePath',\n            'SSLProxyProtocol','SSLProxyVerify','SSLProxyVerifyDepth',\n            'SSLRandomSeed','SSLRenegBufferSize','SSLRequire','SSLRequireSSL',\n            'SSLSessionCache','SSLSessionCacheTimeout','SSLUserName',\n            'SSLVerifyClient','SSLVerifyDepth',\n\n            //mod_status.c\n            'ExtendedStatus','SeeRequestTail',\n\n            //mod_substitute.c\n            'Substitute',\n\n            //mod_suexec.c\n            'SuexecUserGroup',\n\n            //mod_unique_id.c\n\n            //mod_upload_progress\n            'ReportUploads', 'TrackUploads', 'UploadProgressSharedMemorySize',\n\n            //mod_userdir.c\n            'UserDir',\n\n            //mod_usertrack.c\n            'CookieDomain','CookieExpires','CookieName','CookieStyle',\n            'CookieTracking',\n\n            //mod_version.c\n\n            //mod_vhost_alias.c\n            'VirtualDocumentRoot','VirtualDocumentRootIP',\n            'VirtualScriptAlias','VirtualScriptAliasIP',\n\n            //mod_view.c\n            'ViewEnable',\n\n            //mod_win32.c\n            'ScriptInterpreterSource',\n\n            //mpm_winnt.c\n            'Listen','ListenBacklog','ReceiveBufferSize','SendBufferSize',\n            'ThreadLimit','ThreadsPerChild','Win32DisableAcceptEx',\n\n            //mpm_common.c\n            'AcceptMutex','AddModule','ClearModuleList','EnableExceptionHook',\n            'Group','LockFile','MaxClients','MaxSpareServers','MaxSpareThreads',\n            'MinSpareServers','MinSpareThreads','ServerLimit','StartServers',\n            'StartThreads','User',\n\n            //util_ldap.c\n            'LDAPCacheEntries','LDAPCacheTTL','LDAPConnectionTimeout',\n            'LDAPOpCacheEntries','LDAPOpCacheTTL','LDAPSharedCacheFile',\n            'LDAPSharedCacheSize','LDAPTrustedClientCert',\n            'LDAPTrustedGlobalCert','LDAPTrustedMode','LDAPVerifyServerCert',\n\n            //Unknown Mods ...\n            'AgentLog','BindAddress','bs2000account','CacheForceCompletion',\n            'CacheGCInterval','CacheSize','NoCache','qsc','RefererIgnore',\n            'RefererLog','Resourceconfig','ServerType','SingleListen'\n            ),\n        /*keywords 2*/\n        2 => array(\n            'all','on','off','standalone','inetd','indexes',\n            'force-response-1.0','downgrade-1.0','nokeepalive',\n            'includes','followsymlinks','none',\n            'x-compress','x-gzip'\n        ),\n        /*keywords 3*/\n        3 => array(\n            //core.c\n            'Directory','DirectoryMatch','Files','FilesMatch','IfDefine',\n            'IfModule','Limit','LimitExcept','Location','LocationMatch',\n            'VirtualHost',\n\n            //mod_authn_alias.c\n            'AuthnProviderAlias',\n\n            //mod_proxy.c\n            'Proxy','ProxyMatch',\n\n            //mod_version.c\n            'IfVersion'\n        )\n    ),\n    'SYMBOLS' => array(\n        '+', '-'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #00007f;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #000000; font-weight:bold;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #adadad; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #339933;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #7f007f;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #008000;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'BRACKETS' => GESHI_NEVER,\n            'SYMBOLS' => GESHI_NEVER\n        ),\n        'KEYWORDS' => array(\n            3 => array(\n                'DISALLOWED_BEFORE' => '(?<=&lt;|&lt;\\/)',\n                'DISALLOWED_AFTER' => '(?=\\s|\\/|&gt;)',\n            )\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/applescript.php",
    "content": "<?php\n/*************************************************************************************\n * applescript.php\n * --------\n * Author: Stephan Klimek (http://www.initware.org)\n * Copyright: Stephan Klimek (http://www.initware.org)\n * Release Version: 1.0.9.1\n * Date Started: 2005/07/20\n *\n * AppleScript language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *  -  Added description of extra language features (SF#1970248)\n *\n * TODO\n * -------------------------\n * URL settings to references\n *\n **************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'AppleScript',\n    'COMMENT_SINGLE' => array(1 => '--'),\n    'COMMENT_MULTI' => array( '(*' => '*)'),\n    'COMMENT_REGEXP' => array(\n        2 => '/(?<=[a-z])\\'/i',\n        3 => '/(?<![a-z])\\'.*?\\'/i',\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'application','close','count','delete','duplicate','exists','launch','make','move','open',\n            'print','quit','reopen','run','save','saving', 'idle', 'path to', 'number', 'alias', 'list', 'text', 'string',\n            'integer', 'it','me','version','pi','result','space','tab','anything','case','diacriticals','expansion',\n            'hyphens','punctuation','bold','condensed','expanded','hidden','italic','outline','plain',\n            'shadow','strikethrough','subscript','superscript','underline','ask','no','yes','false', 'id',\n            'true','weekday','monday','mon','tuesday','tue','wednesday','wed','thursday','thu','friday',\n            'fri','saturday','sat','sunday','sun','month','january','jan','february','feb','march',\n            'mar','april','apr','may','june','jun','july','jul','august','aug','september', 'quote', 'do JavaScript',\n            'sep','october','oct','november','nov','december','dec','minutes','hours', 'name', 'default answer',\n            'days','weeks', 'folder', 'folders', 'file', 'files', 'window', 'eject', 'disk', 'reveal', 'sleep',\n            'shut down', 'restart', 'display dialog', 'buttons', 'invisibles', 'item', 'items', 'delimiters', 'offset of',\n            'AppleScript\\'s', 'choose file', 'choose folder', 'choose from list', 'beep', 'contents', 'do shell script',\n            'paragraph', 'paragraphs', 'missing value', 'quoted form', 'desktop', 'POSIX path', 'POSIX file',\n            'activate', 'document', 'adding', 'receiving', 'content', 'new', 'properties', 'info for', 'bounds',\n            'selection', 'extension', 'into', 'onto', 'by', 'between', 'against', 'set the clipboard to', 'the clipboard'\n            ),\n        2 => array(\n            'each','some','every','whose','where','index','first','second','third','fourth',\n            'fifth','sixth','seventh','eighth','ninth','tenth','last','front','back','st','nd',\n            'rd','th','middle','named','through','thru','before','after','beginning','the', 'as',\n            'div','mod','and','not','or','contains','equal','equals','isnt', 'less', 'greater'\n            ),\n        3 => array(\n            'script','property','prop','end','to','set','global','local','on','of',\n            'in','given','with','without','return','continue','tell','if','then','else','repeat',\n            'times','while','until','from','exit','try','error','considering','ignoring','timeout',\n            'transaction','my','get','put','is', 'copy'\n            )\n        ),\n    'SYMBOLS' => array(\n        ')','+','-','^','*','/','&','<','>=','<','<=','=','�'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0066ff;',\n            2 => 'color: #ff0033;',\n            3 => 'color: #ff0033; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            2 => '',\n            3 => 'color: #ff0000;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000000; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #009900;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #000000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;',\n            2 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #339933;',\n            4 => 'color: #0066ff;',\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => ',+-=&lt;&gt;/?^&amp;*'\n        ),\n    'REGEXPS' => array(\n        //Variables\n        0 => '[\\\\$%@]+[a-zA-Z_][a-zA-Z0-9_]*',\n        //File descriptors\n        4 => '&lt;[a-zA-Z_][a-zA-Z0-9_]*&gt;',\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'SPACE_AS_WHITESPACE' => true\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/apt_sources.php",
    "content": "<?php\n/*************************************************************************************\n * apt_sources.php\n * ----------\n * Author: Milian Wolff (mail@milianw.de)\n * Copyright: (c) 2008 Milian Wolff (http://milianw.de)\n * Release Version: 1.0.9.1\n * Date Started: 2008/06/17\n *\n * Apt sources.list language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/06/17 (1.0.8)\n *  -  Initial import\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Apt sources',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        /*keywords*/\n        1 => array(\n            'deb-src', 'deb'\n            ),\n        2 => array(\n            //Generic\n            'stable', 'old-stable', 'testing', 'testing-proposed-updates',\n            'unstable', 'unstable-proposed-updates', 'experimental',\n            'non-US', 'security', 'volatile', 'volatile-sloppy',\n            'apt-build',\n            'stable/updates',\n            //Debian\n            'buzz', 'rex', 'bo', 'hamm', 'slink', 'potato', 'woody', 'sarge',\n            'etch', 'lenny', 'wheezy', 'jessie', 'sid',\n            //Ubuntu\n            'warty', 'warty-updates', 'warty-security', 'warty-proposed', 'warty-backports',\n            'hoary', 'hoary-updates', 'hoary-security', 'hoary-proposed', 'hoary-backports',\n            'breezy', 'breezy-updates', 'breezy-security', 'breezy-proposed', 'breezy-backports',\n            'dapper', 'dapper-updates', 'dapper-security', 'dapper-proposed', 'dapper-backports',\n            'edgy', 'edgy-updates', 'edgy-security', 'edgy-proposed', 'edgy-backports',\n            'feisty', 'feisty-updates', 'feisty-security', 'feisty-proposed', 'feisty-backports',\n            'gutsy', 'gutsy-updates', 'gutsy-security', 'gutsy-proposed', 'gutsy-backports',\n            'hardy', 'hardy-updates', 'hardy-security', 'hardy-proposed', 'hardy-backports',\n            'intrepid', 'intrepid-updates', 'intrepid-security', 'intrepid-proposed', 'intrepid-backports',\n            'jaunty', 'jaunty-updates', 'jaunty-security', 'jaunty-proposed', 'jaunty-backports',\n            'karmic', 'karmic-updates', 'karmic-security', 'karmic-proposed', 'karmic-backports',\n            'lucid', 'lucid-updates', 'lucid-security', 'lucid-proposed', 'lucid-backports',\n            'maverick', 'maverick-updates', 'maverick-security', 'maverick-proposed', 'maverick-backports',\n            'natty', 'natty-updates', 'natty-security', 'natty-proposed', 'natty-backports',\n            'oneiric', 'oneiric-updates', 'oneiric-security', 'oneiric-proposed', 'oneiric-backports',\n            'precise', 'precise-updates', 'precise-security', 'precise-proposed', 'precise-backports',\n            'quantal', 'quantal-updates', 'quantal-security', 'quantal-proposed', 'quantal-backports',\n            'raring', 'raring-updates', 'raring-security', 'raring-proposed', 'raring-backports',\n            'saucy', 'saucy-updates', 'saucy-security', 'saucy-proposed', 'saucy-backports',\n            'trusty', 'trusty-updates', 'trusty-security', 'trusty-proposed', 'trusty-backports'\n            ),\n        3 => array(\n            'main', 'restricted', 'preview', 'contrib', 'non-free',\n            'commercial', 'universe', 'multiverse'\n            )\n        ),\n    'REGEXPS' => array(\n        0 => \"(((http|ftp):\\/\\/|file:\\/)[^\\s]+)|(cdrom:\\[[^\\]]*\\][^\\s]*)\",\n        ),\n    'SYMBOLS' => array(\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => true,\n        3 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #00007f;',\n            2 => 'color: #b1b100;',\n            3 => 'color: #b16000;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #adadad; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'BRACKETS' => array(\n            ),\n        'STRINGS' => array(\n            ),\n        'NUMBERS' => array(\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #009900;',\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'NUMBERS' => GESHI_NEVER,\n            'METHODS' => GESHI_NEVER,\n            'SCRIPT' => GESHI_NEVER,\n            'SYMBOLS' => GESHI_NEVER,\n            'ESCAPE_CHAR' => GESHI_NEVER,\n            'BRACKETS' => GESHI_NEVER,\n            'STRINGS' => GESHI_NEVER,\n        ),\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9\\$_\\|\\#;>|^\\/])',\n            'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\\|%\\\\-&\\.])'\n        )\n    ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/arm.php",
    "content": "<?php\n/*************************************************************************************\n * arm.php\n * -------\n * Author: Marat Dukhan (mdukhan3.at.gatech.dot.edu)\n * Copyright: (c) Marat Dukhan (mdukhan3.at.gatech.dot.edu)\n * Release Version: 1.0.9.1\n * Date Started: 2011/10/06\n *\n * ARM Assembler language file for GeSHi.\n * Based on the following documents:\n *   - \"ARM Architecture Reference Manual: ARMv7-A and ARMv7-R edition\"\n *   - \"Intel XScale Technology: Intel Wireless MMX2 Coprocessor\",\n *       Revision 1.5, July 2006\n *\n * CHANGES\n * -------\n * 2011/10/06\n *   -  First Release (supported UAL syntax for up to ARMv7 A/R, VFPv3, NEON, WMMX/WMMX2)\n *\n * TODO (updated 2011/10/06)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'ARM ASSEMBLER',\n    'COMMENT_SINGLE' => array(\n        1 => ';'\n        ),\n    'COMMENT_MULTI' => array(),\n    //Line address prefix suppression\n    'COMMENT_REGEXP' => array(\n        2 => \"/^(?:[0-9a-f]{0,4}:)?[0-9a-f]{4}(?:[0-9a-f]{4})?/mi\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        /* Unconditional Data Processing Instructions */\n        1 => array(\n            /* Data Processing: Unconditional Addition & Subtraction */\n            'adc.w','adcal.w',\n            'adc','adcal',\n            'add.w','addal.w',\n            'add','addal',\n            'addw','addwal',\n            'rsb.w','rsbal.w',\n            'rsb','rsbal',\n            'rsc','rscal',\n            'sbc.w','sbcal.w',\n            'sbc','sbcal',\n            'sub.w','subal.w',\n            'sub','subal',\n            'neg.w','negal.w',\n            'neg','negal',\n            'adr.w','adral.w',\n            'adr','adral',\n            /* Data Processing: Unconditional Logical */\n            'and.w','andal.w',\n            'and','andal',\n            'bic.w','bical.w',\n            'bic','bical',\n            'orr.w','orral.w',\n            'orr','orral',\n            'orn.w','ornal.w',\n            'orn','ornal',\n            'eor.w','eoral.w',\n            'eor','eoral',\n            'mov.w','moval.w',\n            'mov','moval',\n            'movw','movwal',\n            'movt','movtal',\n            'cpy','cpyal',\n            'mvn.w','mvnal.w',\n            'mvn','mvnal',\n            /* Data Processing: Unconditional Shifts and Rotates */\n            'asr.w','asral.w',\n            'asr','asral',\n            'lsl.w','lslal.w',\n            'lsl','lslal',\n            'lsr.w','lsral.w',\n            'lsr','lsral',\n            'ror.w','roral.w',\n            'ror','roral',\n            'rrx','rrxal',\n            /* Data Processing: Unconditional Word Multiply and Multiply-Add */\n            'mul','mulal',\n            'mla','mlaal',\n            'mls','mlsal',\n            'smull','smullal',\n            'muls','mulsal',\n            'umull','umullal',\n            'smlal','smlalal',\n            'umlal','umlalal',\n            /* Data Processing: Unconditional Halfword Multiply and Multiply-Add (ARMv5TE) */\n            'smulbb','smulbbal',\n            'smulbt','smulbtal',\n            'smultb','smultbal',\n            'smultt','smulttal',\n            'smulwb','smulwbal',\n            'smulwt','smulwtal',\n            'smlalbb','smlalbbal',\n            'smlalbt','smlalbtal',\n            'smlaltb','smlaltbal',\n            'smlaltt','smlalttal',\n            'smlabb','smlabbal',\n            'smlabt','smlabtal',\n            'smlatb','smlatbal',\n            'smlatt','smlattal',\n            'smlawb','smlawbal',\n            'smlawt','smlawtal',\n            /* Data Processing: Unconditional Bit Operations */\n            'ubfx','ubfxal',\n            'sbfx','sbfxal',\n            'bfc','bfcal',\n            'bfi','bfial',\n            'clz','clzal',\n            /* Data Processing: Unconditional Divide (ARMv7-R) */\n            'sdiv','sdival',\n            'udiv','udival'\n            ),\n        /* Conditional Data Processing Instructions */\n        2 => array(\n            /* Data Processing: Conditional Addition & Subtraction */\n            'adceq.w','adcne.w','adccs.w','adchs.w','adccc.w','adclo.w','adcmi.w','adcpl.w','adcvs.w','adcvc.w','adchi.w','adcls.w','adcge.w','adclt.w','adcgt.w','adcle.w',\n            'adceq','adcne','adccs','adchs','adccc','adclo','adcmi','adcpl','adcvs','adcvc','adchi','adcls','adcge','adclt','adcgt','adcle',\n            'addeq.w','addne.w','addcs.w','addhs.w','addcc.w','addlo.w','addmi.w','addpl.w','addvs.w','addvc.w','addhi.w','addls.w','addge.w','addlt.w','addgt.w','addle.w',\n            'addeq','addne','addcs','addhs','addcc','addlo','addmi','addpl','addvs','addvc','addhi','addls','addge','addlt','addgt','addle',\n            'addweq','addwne','addwcs','addwhs','addwcc','addwlo','addwmi','addwpl','addwvs','addwvc','addwhi','addwls','addwge','addwlt','addwgt','addwle',\n            'rsbeq.w','rsbne.w','rsbcs.w','rsbhs.w','rsbcc.w','rsblo.w','rsbmi.w','rsbpl.w','rsbvs.w','rsbvc.w','rsbhi.w','rsbls.w','rsbge.w','rsblt.w','rsbgt.w','rsble.w',\n            'rsbeq','rsbne','rsbcs','rsbhs','rsbcc','rsblo','rsbmi','rsbpl','rsbvs','rsbvc','rsbhi','rsbls','rsbge','rsblt','rsbgt','rsble',\n            'rsceq','rscne','rsccs','rschs','rsccc','rsclo','rscmi','rscpl','rscvs','rscvc','rschi','rscls','rscge','rsclt','rscgt','rscle',\n            'sbceq.w','sbcne.w','sbccs.w','sbchs.w','sbccc.w','sbclo.w','sbcmi.w','sbcpl.w','sbcvs.w','sbcvc.w','sbchi.w','sbcls.w','sbcge.w','sbclt.w','sbcgt.w','sbcle.w',\n            'sbceq','sbcne','sbccs','sbchs','sbccc','sbclo','sbcmi','sbcpl','sbcvs','sbcvc','sbchi','sbcls','sbcge','sbclt','sbcgt','sbcle',\n            'subeq.w','subne.w','subcs.w','subhs.w','subcc.w','sublo.w','submi.w','subpl.w','subvs.w','subvc.w','subhi.w','subls.w','subge.w','sublt.w','subgt.w','suble.w',\n            'subeq','subne','subcs','subhs','subcc','sublo','submi','subpl','subvs','subvc','subhi','subls','subge','sublt','subgt','suble',\n            'negeq.w','negne.w','negcs.w','neghs.w','negcc.w','neglo.w','negmi.w','negpl.w','negvs.w','negvc.w','neghi.w','negls.w','negge.w','neglt.w','neggt.w','negle.w',\n            'negeq','negne','negcs','neghs','negcc','neglo','negmi','negpl','negvs','negvc','neghi','negls','negge','neglt','neggt','negle',\n            'adreq.w','adrne.w','adrcs.w','adrhs.w','adrcc.w','adrlo.w','adrmi.w','adrpl.w','adrvs.w','adrvc.w','adrhi.w','adrls.w','adrge.w','adrlt.w','adrgt.w','adrle.w',\n            'adreq','adrne','adrcs','adrhs','adrcc','adrlo','adrmi','adrpl','adrvs','adrvc','adrhi','adrls','adrge','adrlt','adrgt','adrle',\n            /* Data Processing: Conditional Logical */\n            'andeq.w','andne.w','andcs.w','andhs.w','andcc.w','andlo.w','andmi.w','andpl.w','andvs.w','andvc.w','andhi.w','andls.w','andge.w','andlt.w','andgt.w','andle.w',\n            'andeq','andne','andcs','andhs','andcc','andlo','andmi','andpl','andvs','andvc','andhi','andls','andge','andlt','andgt','andle',\n            'biceq.w','bicne.w','biccs.w','bichs.w','biccc.w','biclo.w','bicmi.w','bicpl.w','bicvs.w','bicvc.w','bichi.w','bicls.w','bicge.w','biclt.w','bicgt.w','bicle.w',\n            'biceq','bicne','biccs','bichs','biccc','biclo','bicmi','bicpl','bicvs','bicvc','bichi','bicls','bicge','biclt','bicgt','bicle',\n            'orreq.w','orrne.w','orrcs.w','orrhs.w','orrcc.w','orrlo.w','orrmi.w','orrpl.w','orrvs.w','orrvc.w','orrhi.w','orrls.w','orrge.w','orrlt.w','orrgt.w','orrle.w',\n            'orreq','orrne','orrcs','orrhs','orrcc','orrlo','orrmi','orrpl','orrvs','orrvc','orrhi','orrls','orrge','orrlt','orrgt','orrle',\n            'orneq.w','ornne.w','orncs.w','ornhs.w','orncc.w','ornlo.w','ornmi.w','ornpl.w','ornvs.w','ornvc.w','ornhi.w','ornls.w','ornge.w','ornlt.w','orngt.w','ornle.w',\n            'orneq','ornne','orncs','ornhs','orncc','ornlo','ornmi','ornpl','ornvs','ornvc','ornhi','ornls','ornge','ornlt','orngt','ornle',\n            'eoreq.w','eorne.w','eorcs.w','eorhs.w','eorcc.w','eorlo.w','eormi.w','eorpl.w','eorvs.w','eorvc.w','eorhi.w','eorls.w','eorge.w','eorlt.w','eorgt.w','eorle.w',\n            'eoreq','eorne','eorcs','eorhs','eorcc','eorlo','eormi','eorpl','eorvs','eorvc','eorhi','eorls','eorge','eorlt','eorgt','eorle',\n            'moveq.w','movne.w','movcs.w','movhs.w','movcc.w','movlo.w','movmi.w','movpl.w','movvs.w','movvc.w','movhi.w','movls.w','movge.w','movlt.w','movgt.w','movle.w',\n            'moveq','movne','movcs','movhs','movcc','movlo','movmi','movpl','movvs','movvc','movhi','movls','movge','movlt','movgt','movle',\n            'movweq','movwne','movwcs','movwhs','movwcc','movwlo','movwmi','movwpl','movwvs','movwvc','movwhi','movwls','movwge','movwlt','movwgt','movwle',\n            'movteq','movtne','movtcs','movths','movtcc','movtlo','movtmi','movtpl','movtvs','movtvc','movthi','movtls','movtge','movtlt','movtgt','movtle',\n            'cpyeq','cpyne','cpycs','cpyhs','cpycc','cpylo','cpymi','cpypl','cpyvs','cpyvc','cpyhi','cpyls','cpyge','cpylt','cpygt','cpyle',\n            'mvneq.w','mvnne.w','mvncs.w','mvnhs.w','mvncc.w','mvnlo.w','mvnmi.w','mvnpl.w','mvnvs.w','mvnvc.w','mvnhi.w','mvnls.w','mvnge.w','mvnlt.w','mvngt.w','mvnle.w',\n            'mvneq','mvnne','mvncs','mvnhs','mvncc','mvnlo','mvnmi','mvnpl','mvnvs','mvnvc','mvnhi','mvnls','mvnge','mvnlt','mvngt','mvnle',\n            /* Data Processing: Conditional Shifts and Rotates */\n            'asreq.w','asrne.w','asrcs.w','asrhs.w','asrcc.w','asrlo.w','asrmi.w','asrpl.w','asrvs.w','asrvc.w','asrhi.w','asrls.w','asrge.w','asrlt.w','asrgt.w','asrle.w',\n            'asreq','asrne','asrcs','asrhs','asrcc','asrlo','asrmi','asrpl','asrvs','asrvc','asrhi','asrls','asrge','asrlt','asrgt','asrle',\n            'lsleq.w','lslne.w','lslcs.w','lslhs.w','lslcc.w','lsllo.w','lslmi.w','lslpl.w','lslvs.w','lslvc.w','lslhi.w','lslls.w','lslge.w','lsllt.w','lslgt.w','lslle.w',\n            'lsleq','lslne','lslcs','lslhs','lslcc','lsllo','lslmi','lslpl','lslvs','lslvc','lslhi','lslls','lslge','lsllt','lslgt','lslle',\n            'lsreq.w','lsrne.w','lsrcs.w','lsrhs.w','lsrcc.w','lsrlo.w','lsrmi.w','lsrpl.w','lsrvs.w','lsrvc.w','lsrhi.w','lsrls.w','lsrge.w','lsrlt.w','lsrgt.w','lsrle.w',\n            'lsreq','lsrne','lsrcs','lsrhs','lsrcc','lsrlo','lsrmi','lsrpl','lsrvs','lsrvc','lsrhi','lsrls','lsrge','lsrlt','lsrgt','lsrle',\n            'roreq.w','rorne.w','rorcs.w','rorhs.w','rorcc.w','rorlo.w','rormi.w','rorpl.w','rorvs.w','rorvc.w','rorhi.w','rorls.w','rorge.w','rorlt.w','rorgt.w','rorle.w',\n            'roreq','rorne','rorcs','rorhs','rorcc','rorlo','rormi','rorpl','rorvs','rorvc','rorhi','rorls','rorge','rorlt','rorgt','rorle',\n            'rrxeq','rrxne','rrxcs','rrxhs','rrxcc','rrxlo','rrxmi','rrxpl','rrxvs','rrxvc','rrxhi','rrxls','rrxge','rrxlt','rrxgt','rrxle',\n            /* Data Processing: Conditional Word Multiply and Multiply-Add */\n            'muleq','mulne','mulcs','mulhs','mulcc','mullo','mulmi','mulpl','mulvs','mulvc','mulhi','mulls','mulge','mullt','mulgt','mulle',\n            'mlaeq','mlane','mlacs','mlahs','mlacc','mlalo','mlami','mlapl','mlavs','mlavc','mlahi','mlals','mlage','mlalt','mlagt','mlale',\n            'mlseq','mlsne','mlscs','mlshs','mlscc','mlslo','mlsmi','mlspl','mlsvs','mlsvc','mlshi','mlsls','mlsge','mlslt','mlsgt','mlsle',\n            'smulleq','smullne','smullcs','smullhs','smullcc','smulllo','smullmi','smullpl','smullvs','smullvc','smullhi','smullls','smullge','smulllt','smullgt','smullle',\n            'mulseq','mulsne','mulscs','mulshs','mulscc','mulslo','mulsmi','mulspl','mulsvs','mulsvc','mulshi','mulsls','mulsge','mulslt','mulsgt','mulsle',\n            'umulleq','umullne','umullcs','umullhs','umullcc','umulllo','umullmi','umullpl','umullvs','umullvc','umullhi','umullls','umullge','umulllt','umullgt','umullle',\n            'smlaleq','smlalne','smlalcs','smlalhs','smlalcc','smlallo','smlalmi','smlalpl','smlalvs','smlalvc','smlalhi','smlalls','smlalge','smlallt','smlalgt','smlalle',\n            'umlaleq','umlalne','umlalcs','umlalhs','umlalcc','umlallo','umlalmi','umlalpl','umlalvs','umlalvc','umlalhi','umlalls','umlalge','umlallt','umlalgt','umlalle',\n            /* Data Processing: Conditional Halfword Multiply and Multiply-Add (ARMv5TE) */\n            'smulbbeq','smulbbne','smulbbcs','smulbbhs','smulbbcc','smulbblo','smulbbmi','smulbbpl','smulbbvs','smulbbvc','smulbbhi','smulbbls','smulbbge','smulbblt','smulbbgt','smulbble',\n            'smulbteq','smulbtne','smulbtcs','smulbths','smulbtcc','smulbtlo','smulbtmi','smulbtpl','smulbtvs','smulbtvc','smulbthi','smulbtls','smulbtge','smulbtlt','smulbtgt','smulbtle',\n            'smultbeq','smultbne','smultbcs','smultbhs','smultbcc','smultblo','smultbmi','smultbpl','smultbvs','smultbvc','smultbhi','smultbls','smultbge','smultblt','smultbgt','smultble',\n            'smultteq','smulttne','smulttcs','smultths','smulttcc','smulttlo','smulttmi','smulttpl','smulttvs','smulttvc','smultthi','smulttls','smulttge','smulttlt','smulttgt','smulttle',\n            'smulwbeq','smulwbne','smulwbcs','smulwbhs','smulwbcc','smulwblo','smulwbmi','smulwbpl','smulwbvs','smulwbvc','smulwbhi','smulwbls','smulwbge','smulwblt','smulwbgt','smulwble',\n            'smulwteq','smulwtne','smulwtcs','smulwths','smulwtcc','smulwtlo','smulwtmi','smulwtpl','smulwtvs','smulwtvc','smulwthi','smulwtls','smulwtge','smulwtlt','smulwtgt','smulwtle',\n            'smlalbbeq','smlalbbne','smlalbbcs','smlalbbhs','smlalbbcc','smlalbblo','smlalbbmi','smlalbbpl','smlalbbvs','smlalbbvc','smlalbbhi','smlalbbls','smlalbbge','smlalbblt','smlalbbgt','smlalbble',\n            'smlalbteq','smlalbtne','smlalbtcs','smlalbths','smlalbtcc','smlalbtlo','smlalbtmi','smlalbtpl','smlalbtvs','smlalbtvc','smlalbthi','smlalbtls','smlalbtge','smlalbtlt','smlalbtgt','smlalbtle',\n            'smlaltbeq','smlaltbne','smlaltbcs','smlaltbhs','smlaltbcc','smlaltblo','smlaltbmi','smlaltbpl','smlaltbvs','smlaltbvc','smlaltbhi','smlaltbls','smlaltbge','smlaltblt','smlaltbgt','smlaltble',\n            'smlaltteq','smlalttne','smlalttcs','smlaltths','smlalttcc','smlalttlo','smlalttmi','smlalttpl','smlalttvs','smlalttvc','smlaltthi','smlalttls','smlalttge','smlalttlt','smlalttgt','smlalttle',\n            'smlabbeq','smlabbne','smlabbcs','smlabbhs','smlabbcc','smlabblo','smlabbmi','smlabbpl','smlabbvs','smlabbvc','smlabbhi','smlabbls','smlabbge','smlabblt','smlabbgt','smlabble',\n            'smlabteq','smlabtne','smlabtcs','smlabths','smlabtcc','smlabtlo','smlabtmi','smlabtpl','smlabtvs','smlabtvc','smlabthi','smlabtls','smlabtge','smlabtlt','smlabtgt','smlabtle',\n            'smlatbeq','smlatbne','smlatbcs','smlatbhs','smlatbcc','smlatblo','smlatbmi','smlatbpl','smlatbvs','smlatbvc','smlatbhi','smlatbls','smlatbge','smlatblt','smlatbgt','smlatble',\n            'smlatteq','smlattne','smlattcs','smlatths','smlattcc','smlattlo','smlattmi','smlattpl','smlattvs','smlattvc','smlatthi','smlattls','smlattge','smlattlt','smlattgt','smlattle',\n            'smlawbeq','smlawbne','smlawbcs','smlawbhs','smlawbcc','smlawblo','smlawbmi','smlawbpl','smlawbvs','smlawbvc','smlawbhi','smlawbls','smlawbge','smlawblt','smlawbgt','smlawble',\n            'smlawteq','smlawtne','smlawtcs','smlawths','smlawtcc','smlawtlo','smlawtmi','smlawtpl','smlawtvs','smlawtvc','smlawthi','smlawtls','smlawtge','smlawtlt','smlawtgt','smlawtle',\n            /* Data Processing: Conditional Bit Operations */\n            'ubfxeq','ubfxne','ubfxcs','ubfxhs','ubfxcc','ubfxlo','ubfxmi','ubfxpl','ubfxvs','ubfxvc','ubfxhi','ubfxls','ubfxge','ubfxlt','ubfxgt','ubfxle',\n            'sbfxeq','sbfxne','sbfxcs','sbfxhs','sbfxcc','sbfxlo','sbfxmi','sbfxpl','sbfxvs','sbfxvc','sbfxhi','sbfxls','sbfxge','sbfxlt','sbfxgt','sbfxle',\n            'bfceq','bfcne','bfccs','bfchs','bfccc','bfclo','bfcmi','bfcpl','bfcvs','bfcvc','bfchi','bfcls','bfcge','bfclt','bfcgt','bfcle',\n            'bfieq','bfine','bfics','bfihs','bficc','bfilo','bfimi','bfipl','bfivs','bfivc','bfihi','bfils','bfige','bfilt','bfigt','bfile',\n            'clzeq','clzne','clzcs','clzhs','clzcc','clzlo','clzmi','clzpl','clzvs','clzvc','clzhi','clzls','clzge','clzlt','clzgt','clzle',\n            /* ARMv7-R: Conditional Divide */\n            'sdiveq','sdivne','sdivcs','sdivhs','sdivcc','sdivlo','sdivmi','sdivpl','sdivvs','sdivvc','sdivhi','sdivls','sdivge','sdivlt','sdivgt','sdivle',\n            'udiveq','udivne','udivcs','udivhs','udivcc','udivlo','udivmi','udivpl','udivvs','udivvc','udivhi','udivls','udivge','udivlt','udivgt','udivle'\n            ),\n        /* Unconditional Memory Access */\n        3 => array(\n            /* Memory Access: Unconditional Memory Loads and Prefetches */\n            'ldm.w','ldmal.w',\n            'ldm','ldmal',\n            'ldmda','ldmdaal',\n            'ldmdb','ldmdbal',\n            'ldmib','ldmibal',\n            'ldmia','ldmiaal',\n            'ldmea','ldmeaal',\n            'ldmed','ldmedal',\n            'ldmfa','ldmfaal',\n            'ldmfd','ldmfdal',\n            'ldrd','ldrdal',\n            'ldr.w','ldral.w',\n            'ldr','ldral',\n            'ldrh.w','ldrhal.w',\n            'ldrh','ldrhal',\n            'ldrb.w','ldrbal.w',\n            'ldrb','ldrbal',\n            'ldrsh.w','ldrshal.w',\n            'ldrsh','ldrshal',\n            'ldrsb.w','ldrsbal.w',\n            'ldrsb','ldrsbal',\n            'ldrt','ldrtal',\n            'ldrht','ldrhtal',\n            'ldrbt','ldrbtal',\n            'ldrsht','ldrshtal',\n            'ldrsbt','ldrsbtal',\n            'pop.w','popal.w',\n            'pop','popal',\n            'pld','pldal',\n            'pldw','pldwal',\n            'pli','plial',\n            /* Memory Access: Unconditional Memory Stores */\n            'stm.w','stmal.w',\n            'stm','stmal',\n            'stmda','stmdaal',\n            'stmdb','stmdbal',\n            'stmib','stmibal',\n            'stmia','stmiaal',\n            'stmea','stmeaal',\n            'stmed','stmedal',\n            'stdfa','stdfaal',\n            'stdfd','stdfdal',\n            'strd','strdal',\n            'str.w','stral.w',\n            'str','stral',\n            'strh.w','strhal.w',\n            'strh','strhal',\n            'strb.w','strbal.w',\n            'strb','strbal',\n            'strt','strtal',\n            'strht','strhtal',\n            'strbt','strbtal',\n            'push.w','pushal.w',\n            'push','pushal'\n            ),\n        /* Conditional Memory Access */\n        4 => array(\n            /* Memory Access: Conditional Memory Loads and Prefetches */\n            'ldmeq.w','ldmne.w','ldmcs.w','ldmhs.w','ldmcc.w','ldmlo.w','ldmmi.w','ldmpl.w','ldmvs.w','ldmvc.w','ldmhi.w','ldmls.w','ldmge.w','ldmlt.w','ldmgt.w','ldmle.w',\n            'ldmeq','ldmne','ldmcs','ldmhs','ldmcc','ldmlo','ldmmi','ldmpl','ldmvs','ldmvc','ldmhi','ldmls','ldmge','ldmlt','ldmgt','ldmle',\n            'ldmdaeq','ldmdane','ldmdacs','ldmdahs','ldmdacc','ldmdalo','ldmdami','ldmdapl','ldmdavs','ldmdavc','ldmdahi','ldmdals','ldmdage','ldmdalt','ldmdagt','ldmdale',\n            'ldmdbeq','ldmdbne','ldmdbcs','ldmdbhs','ldmdbcc','ldmdblo','ldmdbmi','ldmdbpl','ldmdbvs','ldmdbvc','ldmdbhi','ldmdbls','ldmdbge','ldmdblt','ldmdbgt','ldmdble',\n            'ldmibeq','ldmibne','ldmibcs','ldmibhs','ldmibcc','ldmiblo','ldmibmi','ldmibpl','ldmibvs','ldmibvc','ldmibhi','ldmibls','ldmibge','ldmiblt','ldmibgt','ldmible',\n            'ldmiaeq','ldmiane','ldmiacs','ldmiahs','ldmiacc','ldmialo','ldmiami','ldmiapl','ldmiavs','ldmiavc','ldmiahi','ldmials','ldmiage','ldmialt','ldmiagt','ldmiale',\n            'ldmeaeq','ldmeane','ldmeacs','ldmeahs','ldmeacc','ldmealo','ldmeami','ldmeapl','ldmeavs','ldmeavc','ldmeahi','ldmeals','ldmeage','ldmealt','ldmeagt','ldmeale',\n            'ldmedeq','ldmedne','ldmedcs','ldmedhs','ldmedcc','ldmedlo','ldmedmi','ldmedpl','ldmedvs','ldmedvc','ldmedhi','ldmedls','ldmedge','ldmedlt','ldmedgt','ldmedle',\n            'ldmfaeq','ldmfane','ldmfacs','ldmfahs','ldmfacc','ldmfalo','ldmfami','ldmfapl','ldmfavs','ldmfavc','ldmfahi','ldmfals','ldmfage','ldmfalt','ldmfagt','ldmfale',\n            'ldmfdeq','ldmfdne','ldmfdcs','ldmfdhs','ldmfdcc','ldmfdlo','ldmfdmi','ldmfdpl','ldmfdvs','ldmfdvc','ldmfdhi','ldmfdls','ldmfdge','ldmfdlt','ldmfdgt','ldmfdle',\n            'ldrdeq','ldrdne','ldrdcs','ldrdhs','ldrdcc','ldrdlo','ldrdmi','ldrdpl','ldrdvs','ldrdvc','ldrdhi','ldrdls','ldrdge','ldrdlt','ldrdgt','ldrdle',\n            'ldreq.w','ldrne.w','ldrcs.w','ldrhs.w','ldrcc.w','ldrlo.w','ldrmi.w','ldrpl.w','ldrvs.w','ldrvc.w','ldrhi.w','ldrls.w','ldrge.w','ldrlt.w','ldrgt.w','ldrle.w',\n            'ldreq','ldrne','ldrcs','ldrhs','ldrcc','ldrlo','ldrmi','ldrpl','ldrvs','ldrvc','ldrhi','ldrls','ldrge','ldrlt','ldrgt','ldrle',\n            'ldrheq.w','ldrhne.w','ldrhcs.w','ldrhhs.w','ldrhcc.w','ldrhlo.w','ldrhmi.w','ldrhpl.w','ldrhvs.w','ldrhvc.w','ldrhhi.w','ldrhls.w','ldrhge.w','ldrhlt.w','ldrhgt.w','ldrhle.w',\n            'ldrheq','ldrhne','ldrhcs','ldrhhs','ldrhcc','ldrhlo','ldrhmi','ldrhpl','ldrhvs','ldrhvc','ldrhhi','ldrhls','ldrhge','ldrhlt','ldrhgt','ldrhle',\n            'ldrbeq.w','ldrbne.w','ldrbcs.w','ldrbhs.w','ldrbcc.w','ldrblo.w','ldrbmi.w','ldrbpl.w','ldrbvs.w','ldrbvc.w','ldrbhi.w','ldrbls.w','ldrbge.w','ldrblt.w','ldrbgt.w','ldrble.w',\n            'ldrbeq','ldrbne','ldrbcs','ldrbhs','ldrbcc','ldrblo','ldrbmi','ldrbpl','ldrbvs','ldrbvc','ldrbhi','ldrbls','ldrbge','ldrblt','ldrbgt','ldrble',\n            'ldrsheq.w','ldrshne.w','ldrshcs.w','ldrshhs.w','ldrshcc.w','ldrshlo.w','ldrshmi.w','ldrshpl.w','ldrshvs.w','ldrshvc.w','ldrshhi.w','ldrshls.w','ldrshge.w','ldrshlt.w','ldrshgt.w','ldrshle.w',\n            'ldrsheq','ldrshne','ldrshcs','ldrshhs','ldrshcc','ldrshlo','ldrshmi','ldrshpl','ldrshvs','ldrshvc','ldrshhi','ldrshls','ldrshge','ldrshlt','ldrshgt','ldrshle',\n            'ldrsbeq.w','ldrsbne.w','ldrsbcs.w','ldrsbhs.w','ldrsbcc.w','ldrsblo.w','ldrsbmi.w','ldrsbpl.w','ldrsbvs.w','ldrsbvc.w','ldrsbhi.w','ldrsbls.w','ldrsbge.w','ldrsblt.w','ldrsbgt.w','ldrsble.w',\n            'ldrsbeq','ldrsbne','ldrsbcs','ldrsbhs','ldrsbcc','ldrsblo','ldrsbmi','ldrsbpl','ldrsbvs','ldrsbvc','ldrsbhi','ldrsbls','ldrsbge','ldrsblt','ldrsbgt','ldrsble',\n            'ldrteq','ldrtne','ldrtcs','ldrths','ldrtcc','ldrtlo','ldrtmi','ldrtpl','ldrtvs','ldrtvc','ldrthi','ldrtls','ldrtge','ldrtlt','ldrtgt','ldrtle',\n            'ldrhteq','ldrhtne','ldrhtcs','ldrhths','ldrhtcc','ldrhtlo','ldrhtmi','ldrhtpl','ldrhtvs','ldrhtvc','ldrhthi','ldrhtls','ldrhtge','ldrhtlt','ldrhtgt','ldrhtle',\n            'ldrbteq','ldrbtne','ldrbtcs','ldrbths','ldrbtcc','ldrbtlo','ldrbtmi','ldrbtpl','ldrbtvs','ldrbtvc','ldrbthi','ldrbtls','ldrbtge','ldrbtlt','ldrbtgt','ldrbtle',\n            'ldrshteq','ldrshtne','ldrshtcs','ldrshths','ldrshtcc','ldrshtlo','ldrshtmi','ldrshtpl','ldrshtvs','ldrshtvc','ldrshthi','ldrshtls','ldrshtge','ldrshtlt','ldrshtgt','ldrshtle',\n            'ldrsbteq','ldrsbtne','ldrsbtcs','ldrsbths','ldrsbtcc','ldrsbtlo','ldrsbtmi','ldrsbtpl','ldrsbtvs','ldrsbtvc','ldrsbthi','ldrsbtls','ldrsbtge','ldrsbtlt','ldrsbtgt','ldrsbtle',\n            'popeq.w','popne.w','popcs.w','pophs.w','popcc.w','poplo.w','popmi.w','poppl.w','popvs.w','popvc.w','pophi.w','popls.w','popge.w','poplt.w','popgt.w','pople.w',\n            'popeq','popne','popcs','pophs','popcc','poplo','popmi','poppl','popvs','popvc','pophi','popls','popge','poplt','popgt','pople',\n            'pldeq','pldne','pldcs','pldhs','pldcc','pldlo','pldmi','pldpl','pldvs','pldvc','pldhi','pldls','pldge','pldlt','pldgt','pldle',\n            'pldweq','pldwne','pldwcs','pldwhs','pldwcc','pldwlo','pldwmi','pldwpl','pldwvs','pldwvc','pldwhi','pldwls','pldwge','pldwlt','pldwgt','pldwle',\n            'plieq','pline','plics','plihs','plicc','plilo','plimi','plipl','plivs','plivc','plihi','plils','plige','plilt','pligt','plile',\n            /* Memory Access: Conditional Memory Stores */\n            'stmeq.w','stmne.w','stmcs.w','stmhs.w','stmcc.w','stmlo.w','stmmi.w','stmpl.w','stmvs.w','stmvc.w','stmhi.w','stmls.w','stmge.w','stmlt.w','stmgt.w','stmle.w',\n            'stmeq','stmne','stmcs','stmhs','stmcc','stmlo','stmmi','stmpl','stmvs','stmvc','stmhi','stmls','stmge','stmlt','stmgt','stmle',\n            'stmdaeq','stmdane','stmdacs','stmdahs','stmdacc','stmdalo','stmdami','stmdapl','stmdavs','stmdavc','stmdahi','stmdals','stmdage','stmdalt','stmdagt','stmdale',\n            'stmdbeq','stmdbne','stmdbcs','stmdbhs','stmdbcc','stmdblo','stmdbmi','stmdbpl','stmdbvs','stmdbvc','stmdbhi','stmdbls','stmdbge','stmdblt','stmdbgt','stmdble',\n            'stmibeq','stmibne','stmibcs','stmibhs','stmibcc','stmiblo','stmibmi','stmibpl','stmibvs','stmibvc','stmibhi','stmibls','stmibge','stmiblt','stmibgt','stmible',\n            'stmiaeq','stmiane','stmiacs','stmiahs','stmiacc','stmialo','stmiami','stmiapl','stmiavs','stmiavc','stmiahi','stmials','stmiage','stmialt','stmiagt','stmiale',\n            'stmeaeq','stmeane','stmeacs','stmeahs','stmeacc','stmealo','stmeami','stmeapl','stmeavs','stmeavc','stmeahi','stmeals','stmeage','stmealt','stmeagt','stmeale',\n            'stmedeq','stmedne','stmedcs','stmedhs','stmedcc','stmedlo','stmedmi','stmedpl','stmedvs','stmedvc','stmedhi','stmedls','stmedge','stmedlt','stmedgt','stmedle',\n            'stdfaeq','stdfane','stdfacs','stdfahs','stdfacc','stdfalo','stdfami','stdfapl','stdfavs','stdfavc','stdfahi','stdfals','stdfage','stdfalt','stdfagt','stdfale',\n            'stdfdeq','stdfdne','stdfdcs','stdfdhs','stdfdcc','stdfdlo','stdfdmi','stdfdpl','stdfdvs','stdfdvc','stdfdhi','stdfdls','stdfdge','stdfdlt','stdfdgt','stdfdle',\n            'strdeq','strdne','strdcs','strdhs','strdcc','strdlo','strdmi','strdpl','strdvs','strdvc','strdhi','strdls','strdge','strdlt','strdgt','strdle',\n            'streq.w','strne.w','strcs.w','strhs.w','strcc.w','strlo.w','strmi.w','strpl.w','strvs.w','strvc.w','strhi.w','strls.w','strge.w','strlt.w','strgt.w','strle.w',\n            'streq','strne','strcs','strhs','strcc','strlo','strmi','strpl','strvs','strvc','strhi','strls','strge','strlt','strgt','strle',\n            'strheq.w','strhne.w','strhcs.w','strhhs.w','strhcc.w','strhlo.w','strhmi.w','strhpl.w','strhvs.w','strhvc.w','strhhi.w','strhls.w','strhge.w','strhlt.w','strhgt.w','strhle.w',\n            'strheq','strhne','strhcs','strhhs','strhcc','strhlo','strhmi','strhpl','strhvs','strhvc','strhhi','strhls','strhge','strhlt','strhgt','strhle',\n            'strbeq.w','strbne.w','strbcs.w','strbhs.w','strbcc.w','strblo.w','strbmi.w','strbpl.w','strbvs.w','strbvc.w','strbhi.w','strbls.w','strbge.w','strblt.w','strbgt.w','strble.w',\n            'strbeq','strbne','strbcs','strbhs','strbcc','strblo','strbmi','strbpl','strbvs','strbvc','strbhi','strbls','strbge','strblt','strbgt','strble',\n            'strteq','strtne','strtcs','strths','strtcc','strtlo','strtmi','strtpl','strtvs','strtvc','strthi','strtls','strtge','strtlt','strtgt','strtle',\n            'strhteq','strhtne','strhtcs','strhths','strhtcc','strhtlo','strhtmi','strhtpl','strhtvs','strhtvc','strhthi','strhtls','strhtge','strhtlt','strhtgt','strhtle',\n            'strbteq','strbtne','strbtcs','strbths','strbtcc','strbtlo','strbtmi','strbtpl','strbtvs','strbtvc','strbthi','strbtls','strbtge','strbtlt','strbtgt','strbtle',\n            'pusheq.w','pushne.w','pushcs.w','pushhs.w','pushcc.w','pushlo.w','pushmi.w','pushpl.w','pushvs.w','pushvc.w','pushhi.w','pushls.w','pushge.w','pushlt.w','pushgt.w','pushle.w',\n            'pusheq','pushne','pushcs','pushhs','pushcc','pushlo','pushmi','pushpl','pushvs','pushvc','pushhi','pushls','pushge','pushlt','pushgt','pushle'\n            ),\n        /* Unconditional Flags-Affecting Instructions */\n        5 => array(\n            /* Set Flags: Unconditional Addition and Subtraction */\n            'adds.w','addsal.w',\n            'adds','addsal',\n            'subs.w','subsal.w',\n            'subs','subsal',\n            'rsbs.w','rsbsal.w',\n            'rsbs','rsbsal',\n            'negs.w','negsal.w',\n            'negs','negsal',\n            'adcs.w','adcsal.w',\n            'adcs','adcsal',\n            'sbcs.w','sbcsal.w',\n            'sbcs','sbcsal',\n            'rscs','rscsal',\n            'cmp.w','cmpal.w',\n            'cmp','cmpal',\n            'cmn.w','cmnal.w',\n            'cmn','cmnal',\n            /* Set Flags: Unconditional Logical */\n            'ands.w','andsal.w',\n            'ands','andsal',\n            'bics.w','bicsal.w',\n            'bics','bicsal',\n            'orrs.w','orrsal.w',\n            'orrs','orrsal',\n            'orns.w','ornsal.w',\n            'orns','ornsal',\n            'eors.w','eorsal.w',\n            'eors','eorsal',\n            'mvns.w','mvnsal.w',\n            'mvns','mvnsal',\n            'movs.w','movsal.w',\n            'movs','movsal',\n            'teq','teqal',\n            'tst.w','tstal.w',\n            'tst','tstal',\n            'mrs','mrsal',\n            'msr','msral',\n            /* Set Flags: Unconditional Shifts and Rotates */\n            'asrs.w','asrsal.w',\n            'asrs','asrsal',\n            'lsls.w','lslsal.w',\n            'lsls','lslsal',\n            'lsrs.w','lsrsal.w',\n            'lsrs','lsrsal',\n            'rors.w','rorsal.w',\n            'rors','rorsal',\n            'rrxs','rrxsal',\n            /* Set Flags: Unconditional Multiply and Multiply-Add */\n            'mlas','mlasal',\n            'smulls','smullsal',\n            'umulls','umullsal',\n            'smlals','smlalsal',\n            'umlals','umlalsal'\n            ),\n        /* Conditional Flags-Affecting Instructions */\n        6 => array(\n            /* Set Flags: Conditional Addition and Subtraction */\n            'addseq.w','addsne.w','addscs.w','addshs.w','addscc.w','addslo.w','addsmi.w','addspl.w','addsvs.w','addsvc.w','addshi.w','addsls.w','addsge.w','addslt.w','addsgt.w','addsle.w',\n            'addseq','addsne','addscs','addshs','addscc','addslo','addsmi','addspl','addsvs','addsvc','addshi','addsls','addsge','addslt','addsgt','addsle',\n            'subseq.w','subsne.w','subscs.w','subshs.w','subscc.w','subslo.w','subsmi.w','subspl.w','subsvs.w','subsvc.w','subshi.w','subsls.w','subsge.w','subslt.w','subsgt.w','subsle.w',\n            'subseq','subsne','subscs','subshs','subscc','subslo','subsmi','subspl','subsvs','subsvc','subshi','subsls','subsge','subslt','subsgt','subsle',\n            'rsbseq.w','rsbsne.w','rsbscs.w','rsbshs.w','rsbscc.w','rsbslo.w','rsbsmi.w','rsbspl.w','rsbsvs.w','rsbsvc.w','rsbshi.w','rsbsls.w','rsbsge.w','rsbslt.w','rsbsgt.w','rsbsle.w',\n            'rsbseq','rsbsne','rsbscs','rsbshs','rsbscc','rsbslo','rsbsmi','rsbspl','rsbsvs','rsbsvc','rsbshi','rsbsls','rsbsge','rsbslt','rsbsgt','rsbsle',\n            'negseq.w','negsne.w','negscs.w','negshs.w','negscc.w','negslo.w','negsmi.w','negspl.w','negsvs.w','negsvc.w','negshi.w','negsls.w','negsge.w','negslt.w','negsgt.w','negsle.w',\n            'negseq','negsne','negscs','negshs','negscc','negslo','negsmi','negspl','negsvs','negsvc','negshi','negsls','negsge','negslt','negsgt','negsle',\n            'adcseq.w','adcsne.w','adcscs.w','adcshs.w','adcscc.w','adcslo.w','adcsmi.w','adcspl.w','adcsvs.w','adcsvc.w','adcshi.w','adcsls.w','adcsge.w','adcslt.w','adcsgt.w','adcsle.w',\n            'adcseq','adcsne','adcscs','adcshs','adcscc','adcslo','adcsmi','adcspl','adcsvs','adcsvc','adcshi','adcsls','adcsge','adcslt','adcsgt','adcsle',\n            'sbcseq.w','sbcsne.w','sbcscs.w','sbcshs.w','sbcscc.w','sbcslo.w','sbcsmi.w','sbcspl.w','sbcsvs.w','sbcsvc.w','sbcshi.w','sbcsls.w','sbcsge.w','sbcslt.w','sbcsgt.w','sbcsle.w',\n            'sbcseq','sbcsne','sbcscs','sbcshs','sbcscc','sbcslo','sbcsmi','sbcspl','sbcsvs','sbcsvc','sbcshi','sbcsls','sbcsge','sbcslt','sbcsgt','sbcsle',\n            'rscseq','rscsne','rscscs','rscshs','rscscc','rscslo','rscsmi','rscspl','rscsvs','rscsvc','rscshi','rscsls','rscsge','rscslt','rscsgt','rscsle',\n            'cmpeq.w','cmpne.w','cmpcs.w','cmphs.w','cmpcc.w','cmplo.w','cmpmi.w','cmppl.w','cmpvs.w','cmpvc.w','cmphi.w','cmpls.w','cmpge.w','cmplt.w','cmpgt.w','cmple.w',\n            'cmpeq','cmpne','cmpcs','cmphs','cmpcc','cmplo','cmpmi','cmppl','cmpvs','cmpvc','cmphi','cmpls','cmpge','cmplt','cmpgt','cmple',\n            'cmneq.w','cmnne.w','cmncs.w','cmnhs.w','cmncc.w','cmnlo.w','cmnmi.w','cmnpl.w','cmnvs.w','cmnvc.w','cmnhi.w','cmnls.w','cmnge.w','cmnlt.w','cmngt.w','cmnle.w',\n            'cmneq','cmnne','cmncs','cmnhs','cmncc','cmnlo','cmnmi','cmnpl','cmnvs','cmnvc','cmnhi','cmnls','cmnge','cmnlt','cmngt','cmnle',\n            /* Set Flags: Conditional Logical */\n            'andseq.w','andsne.w','andscs.w','andshs.w','andscc.w','andslo.w','andsmi.w','andspl.w','andsvs.w','andsvc.w','andshi.w','andsls.w','andsge.w','andslt.w','andsgt.w','andsle.w',\n            'andseq','andsne','andscs','andshs','andscc','andslo','andsmi','andspl','andsvs','andsvc','andshi','andsls','andsge','andslt','andsgt','andsle',\n            'bicseq.w','bicsne.w','bicscs.w','bicshs.w','bicscc.w','bicslo.w','bicsmi.w','bicspl.w','bicsvs.w','bicsvc.w','bicshi.w','bicsls.w','bicsge.w','bicslt.w','bicsgt.w','bicsle.w',\n            'bicseq','bicsne','bicscs','bicshs','bicscc','bicslo','bicsmi','bicspl','bicsvs','bicsvc','bicshi','bicsls','bicsge','bicslt','bicsgt','bicsle',\n            'orrseq.w','orrsne.w','orrscs.w','orrshs.w','orrscc.w','orrslo.w','orrsmi.w','orrspl.w','orrsvs.w','orrsvc.w','orrshi.w','orrsls.w','orrsge.w','orrslt.w','orrsgt.w','orrsle.w',\n            'orrseq','orrsne','orrscs','orrshs','orrscc','orrslo','orrsmi','orrspl','orrsvs','orrsvc','orrshi','orrsls','orrsge','orrslt','orrsgt','orrsle',\n            'ornseq.w','ornsne.w','ornscs.w','ornshs.w','ornscc.w','ornslo.w','ornsmi.w','ornspl.w','ornsvs.w','ornsvc.w','ornshi.w','ornsls.w','ornsge.w','ornslt.w','ornsgt.w','ornsle.w',\n            'ornseq','ornsne','ornscs','ornshs','ornscc','ornslo','ornsmi','ornspl','ornsvs','ornsvc','ornshi','ornsls','ornsge','ornslt','ornsgt','ornsle',\n            'eorseq.w','eorsne.w','eorscs.w','eorshs.w','eorscc.w','eorslo.w','eorsmi.w','eorspl.w','eorsvs.w','eorsvc.w','eorshi.w','eorsls.w','eorsge.w','eorslt.w','eorsgt.w','eorsle.w',\n            'eorseq','eorsne','eorscs','eorshs','eorscc','eorslo','eorsmi','eorspl','eorsvs','eorsvc','eorshi','eorsls','eorsge','eorslt','eorsgt','eorsle',\n            'mvnseq.w','mvnsne.w','mvnscs.w','mvnshs.w','mvnscc.w','mvnslo.w','mvnsmi.w','mvnspl.w','mvnsvs.w','mvnsvc.w','mvnshi.w','mvnsls.w','mvnsge.w','mvnslt.w','mvnsgt.w','mvnsle.w',\n            'mvnseq','mvnsne','mvnscs','mvnshs','mvnscc','mvnslo','mvnsmi','mvnspl','mvnsvs','mvnsvc','mvnshi','mvnsls','mvnsge','mvnslt','mvnsgt','mvnsle',\n            'movseq.w','movsne.w','movscs.w','movshs.w','movscc.w','movslo.w','movsmi.w','movspl.w','movsvs.w','movsvc.w','movshi.w','movsls.w','movsge.w','movslt.w','movsgt.w','movsle.w',\n            'movseq','movsne','movscs','movshs','movscc','movslo','movsmi','movspl','movsvs','movsvc','movshi','movsls','movsge','movslt','movsgt','movsle',\n            'teqeq','teqne','teqcs','teqhs','teqcc','teqlo','teqmi','teqpl','teqvs','teqvc','teqhi','teqls','teqge','teqlt','teqgt','teqle',\n            'tsteq.w','tstne.w','tstcs.w','tsths.w','tstcc.w','tstlo.w','tstmi.w','tstpl.w','tstvs.w','tstvc.w','tsthi.w','tstls.w','tstge.w','tstlt.w','tstgt.w','tstle.w',\n            'tsteq','tstne','tstcs','tsths','tstcc','tstlo','tstmi','tstpl','tstvs','tstvc','tsthi','tstls','tstge','tstlt','tstgt','tstle',\n            'mrseq','mrsne','mrscs','mrshs','mrscc','mrslo','mrsmi','mrspl','mrsvs','mrsvc','mrshi','mrsls','mrsge','mrslt','mrsgt','mrsle',\n            'msreq','msrne','msrcs','msrhs','msrcc','msrlo','msrmi','msrpl','msrvs','msrvc','msrhi','msrls','msrge','msrlt','msrgt','msrle',\n            /* Set Flags: Conditional Shifts and Rotates */\n            'asrseq.w','asrsne.w','asrscs.w','asrshs.w','asrscc.w','asrslo.w','asrsmi.w','asrspl.w','asrsvs.w','asrsvc.w','asrshi.w','asrsls.w','asrsge.w','asrslt.w','asrsgt.w','asrsle.w',\n            'asrseq','asrsne','asrscs','asrshs','asrscc','asrslo','asrsmi','asrspl','asrsvs','asrsvc','asrshi','asrsls','asrsge','asrslt','asrsgt','asrsle',\n            'lslseq.w','lslsne.w','lslscs.w','lslshs.w','lslscc.w','lslslo.w','lslsmi.w','lslspl.w','lslsvs.w','lslsvc.w','lslshi.w','lslsls.w','lslsge.w','lslslt.w','lslsgt.w','lslsle.w',\n            'lslseq','lslsne','lslscs','lslshs','lslscc','lslslo','lslsmi','lslspl','lslsvs','lslsvc','lslshi','lslsls','lslsge','lslslt','lslsgt','lslsle',\n            'lsrseq.w','lsrsne.w','lsrscs.w','lsrshs.w','lsrscc.w','lsrslo.w','lsrsmi.w','lsrspl.w','lsrsvs.w','lsrsvc.w','lsrshi.w','lsrsls.w','lsrsge.w','lsrslt.w','lsrsgt.w','lsrsle.w',\n            'lsrseq','lsrsne','lsrscs','lsrshs','lsrscc','lsrslo','lsrsmi','lsrspl','lsrsvs','lsrsvc','lsrshi','lsrsls','lsrsge','lsrslt','lsrsgt','lsrsle',\n            'rorseq.w','rorsne.w','rorscs.w','rorshs.w','rorscc.w','rorslo.w','rorsmi.w','rorspl.w','rorsvs.w','rorsvc.w','rorshi.w','rorsls.w','rorsge.w','rorslt.w','rorsgt.w','rorsle.w',\n            'rorseq','rorsne','rorscs','rorshs','rorscc','rorslo','rorsmi','rorspl','rorsvs','rorsvc','rorshi','rorsls','rorsge','rorslt','rorsgt','rorsle',\n            'rrxseq','rrxsne','rrxscs','rrxshs','rrxscc','rrxslo','rrxsmi','rrxspl','rrxsvs','rrxsvc','rrxshi','rrxsls','rrxsge','rrxslt','rrxsgt','rrxsle',\n            /* Set Flags: Conditional Multiply and Multiply-Add */\n            'mlaseq','mlasne','mlascs','mlashs','mlascc','mlaslo','mlasmi','mlaspl','mlasvs','mlasvc','mlashi','mlasls','mlasge','mlaslt','mlasgt','mlasle',\n            'smullseq','smullsne','smullscs','smullshs','smullscc','smullslo','smullsmi','smullspl','smullsvs','smullsvc','smullshi','smullsls','smullsge','smullslt','smullsgt','smullsle',\n            'umullseq','umullsne','umullscs','umullshs','umullscc','umullslo','umullsmi','umullspl','umullsvs','umullsvc','umullshi','umullsls','umullsge','umullslt','umullsgt','umullsle',\n            'smlalseq','smlalsne','smlalscs','smlalshs','smlalscc','smlalslo','smlalsmi','smlalspl','smlalsvs','smlalsvc','smlalshi','smlalsls','smlalsge','smlalslt','smlalsgt','smlalsle',\n            'umlalseq','umlalsne','umlalscs','umlalshs','umlalscc','umlalslo','umlalsmi','umlalspl','umlalsvs','umlalsvc','umlalshi','umlalsls','umlalsge','umlalslt','umlalsgt','umlalsle'\n            ),\n        /* Unconditional Flow Control Instructions */\n        7 => array(\n            /* Flow Control: Unconditional Branch and If-Then-Else */\n            'b.w','bal.w',\n            'b','bal',\n            'bl','blal',\n            'bx','bxal',\n            'blx','blxal',\n            'bxj','bxjal',\n            'cbnz',\n            'cbz',\n            'tbb','tbbal',\n            'tbh','tbhal',\n            'it',\n            'itt',\n            'ite',\n            'ittt',\n            'itet',\n            'itte',\n            'itee',\n            'itttt',\n            'itett',\n            'ittet',\n            'iteet',\n            'ittte',\n            'itete',\n            'ittee',\n            'iteee'\n            ),\n        /* Conditional Flow Control Instructions */\n        8 => array(\n            /* Flow Control: Conditional Branch and If-Then-Else */\n            'beq.w','bne.w','bcs.w','bhs.w','bcc.w','blo.w','bmi.w','bpl.w','bvs.w','bvc.w','bhi.w','bls.w','bge.w','blt.w','bgt.w','ble.w',\n            'beq','bne','bcs','bhs','bcc','blo','bmi','bpl','bvs','bvc','bhi','bls','bge','blt','bgt','ble',\n            'bleq','blne','blcs','blhs','blcc','bllo','blmi','blpl','blvs','blvc','blhi','blls','blge','bllt','blgt','blle',\n            'bxeq','bxne','bxcs','bxhs','bxcc','bxlo','bxmi','bxpl','bxvs','bxvc','bxhi','bxls','bxge','bxlt','bxgt','bxle',\n            'blxeq','blxne','blxcs','blxhs','blxcc','blxlo','blxmi','blxpl','blxvs','blxvc','blxhi','blxls','blxge','blxlt','blxgt','blxle',\n            'bxjeq','bxjne','bxjcs','bxjhs','bxjcc','bxjlo','bxjmi','bxjpl','bxjvs','bxjvc','bxjhi','bxjls','bxjge','bxjlt','bxjgt','bxjle',\n            'tbbeq','tbbne','tbbcs','tbbhs','tbbcc','tbblo','tbbmi','tbbpl','tbbvs','tbbvc','tbbhi','tbbls','tbbge','tbblt','tbbgt','tbble',\n            'tbheq','tbhne','tbhcs','tbhhs','tbhcc','tbhlo','tbhmi','tbhpl','tbhvs','tbhvc','tbhhi','tbhls','tbhge','tbhlt','tbhgt','tbhle'\n            ),\n        /* Unconditional Syncronization Instructions */\n        9 => array(\n            /* Synchronization: Unconditional Loads, Stores and Barriers */\n            'ldrexd','ldrexdal',\n            'ldrex','ldrexal',\n            'ldrexh','ldrexhal',\n            'ldrexb','ldrexbal',\n            'strexd','strexdal',\n            'strex','strexal',\n            'strexh','strexhal',\n            'strexb','strexbal',\n            'clrex','clrexal',\n            'swp','swpal',\n            'swpb','swpbal',\n            'dbc','dbcal',\n            'dsb','dsbal',\n            'isb','isbal',\n            'yield.w','yieldal.w',\n            'yield','yieldal',\n            'nop.w','nopal.w',\n            'nop','nopal'\n            ),\n        /* Conditional Syncronization Instructions */\n        10 => array(\n            /* Synchronization: Conditional Loads, Stores and Barriers */\n            'ldrexdeq','ldrexdne','ldrexdcs','ldrexdhs','ldrexdcc','ldrexdlo','ldrexdmi','ldrexdpl','ldrexdvs','ldrexdvc','ldrexdhi','ldrexdls','ldrexdge','ldrexdlt','ldrexdgt','ldrexdle',\n            'ldrexeq','ldrexne','ldrexcs','ldrexhs','ldrexcc','ldrexlo','ldrexmi','ldrexpl','ldrexvs','ldrexvc','ldrexhi','ldrexls','ldrexge','ldrexlt','ldrexgt','ldrexle',\n            'ldrexheq','ldrexhne','ldrexhcs','ldrexhhs','ldrexhcc','ldrexhlo','ldrexhmi','ldrexhpl','ldrexhvs','ldrexhvc','ldrexhhi','ldrexhls','ldrexhge','ldrexhlt','ldrexhgt','ldrexhle',\n            'ldrexbeq','ldrexbne','ldrexbcs','ldrexbhs','ldrexbcc','ldrexblo','ldrexbmi','ldrexbpl','ldrexbvs','ldrexbvc','ldrexbhi','ldrexbls','ldrexbge','ldrexblt','ldrexbgt','ldrexble',\n            'strexdeq','strexdne','strexdcs','strexdhs','strexdcc','strexdlo','strexdmi','strexdpl','strexdvs','strexdvc','strexdhi','strexdls','strexdge','strexdlt','strexdgt','strexdle',\n            'strexeq','strexne','strexcs','strexhs','strexcc','strexlo','strexmi','strexpl','strexvs','strexvc','strexhi','strexls','strexge','strexlt','strexgt','strexle',\n            'strexheq','strexhne','strexhcs','strexhhs','strexhcc','strexhlo','strexhmi','strexhpl','strexhvs','strexhvc','strexhhi','strexhls','strexhge','strexhlt','strexhgt','strexhle',\n            'strexbeq','strexbne','strexbcs','strexbhs','strexbcc','strexblo','strexbmi','strexbpl','strexbvs','strexbvc','strexbhi','strexbls','strexbge','strexblt','strexbgt','strexble',\n            'clrexeq','clrexne','clrexcs','clrexhs','clrexcc','clrexlo','clrexmi','clrexpl','clrexvs','clrexvc','clrexhi','clrexls','clrexge','clrexlt','clrexgt','clrexle',\n            'swpeq','swpne','swpcs','swphs','swpcc','swplo','swpmi','swppl','swpvs','swpvc','swphi','swpls','swpge','swplt','swpgt','swple',\n            'swpbeq','swpbne','swpbcs','swpbhs','swpbcc','swpblo','swpbmi','swpbpl','swpbvs','swpbvc','swpbhi','swpbls','swpbge','swpblt','swpbgt','swpble',\n            'dbceq','dbcne','dbccs','dbchs','dbccc','dbclo','dbcmi','dbcpl','dbcvs','dbcvc','dbchi','dbcls','dbcge','dbclt','dbcgt','dbcle',\n            'dsbeq','dsbne','dsbcs','dsbhs','dsbcc','dsblo','dsbmi','dsbpl','dsbvs','dsbvc','dsbhi','dsbls','dsbge','dsblt','dsbgt','dsble',\n            'isbeq','isbne','isbcs','isbhs','isbcc','isblo','isbmi','isbpl','isbvs','isbvc','isbhi','isbls','isbge','isblt','isbgt','isble',\n            'yieldeq.w','yieldne.w','yieldcs.w','yieldhs.w','yieldcc.w','yieldlo.w','yieldmi.w','yieldpl.w','yieldvs.w','yieldvc.w','yieldhi.w','yieldls.w','yieldge.w','yieldlt.w','yieldgt.w','yieldle.w',\n            'yieldeq','yieldne','yieldcs','yieldhs','yieldcc','yieldlo','yieldmi','yieldpl','yieldvs','yieldvc','yieldhi','yieldls','yieldge','yieldlt','yieldgt','yieldle',\n            'nopeq.w','nopne.w','nopcs.w','nophs.w','nopcc.w','noplo.w','nopmi.w','noppl.w','nopvs.w','nopvc.w','nophi.w','nopls.w','nopge.w','noplt.w','nopgt.w','nople.w',\n            'nopeq','nopne','nopcs','nophs','nopcc','noplo','nopmi','noppl','nopvs','nopvc','nophi','nopls','nopge','noplt','nopgt','nople'\n            ),\n        /* Unconditional ARMv6 SIMD */\n        11 => array(\n            /* ARMv6 SIMD: Unconditional Addition, Subtraction & Saturation */\n            'sadd16','sadd16al',\n            'sadd8','sadd8al',\n            'uadd16','uadd16al',\n            'uadd8','uadd8al',\n            'ssub16','ssub16al',\n            'ssub8','ssub8al',\n            'usub16','usub16al',\n            'usub8','usub8al',\n            'sasx','sasxal',\n            'ssax','ssaxal',\n            'uasx','uasxal',\n            'usax','usaxal',\n            'usad8','usad8al',\n            'usada8','usada8al',\n            /* ARMv6 SIMD: Unconditional Halving Addition & Subtraction */\n            'shadd16','shadd16al',\n            'shadd8','shadd8al',\n            'uhadd16','uhadd16al',\n            'uhadd8','uhadd8al',\n            'shsub16','shsub16al',\n            'shsub8','shsub8al',\n            'uhsub16','uhsub16al',\n            'uhsub8','uhsub8al',\n            'shasx','shasxal',\n            'shsax','shsaxal',\n            'uhasx','uhasxal',\n            'uhsax','uhsaxal',\n            /* ARMv6 SIMD: Unconditional Saturating Operations */\n            'qadd','qaddal',\n            'qadd16','qadd16al',\n            'qadd8','qadd8al',\n            'uqadd16','uqadd16al',\n            'uqadd8','uqadd8al',\n            'qsub','qsubal',\n            'qsub16','qsub16al',\n            'qsub8','qsub8al',\n            'uqsub16','uqsub16al',\n            'uqsub8','uqsub8al',\n            'qasx','qasxal',\n            'qsax','qsaxal',\n            'uqasx','uqasxal',\n            'uqsax','uqsaxal',\n            'qdadd','qdaddal',\n            'qdsub','qdsubal',\n            'ssat','ssatal',\n            'ssat16','ssat16al',\n            'usat','usatal',\n            'usat16','usat16al',\n            /* ARMv6 SIMD: Unconditional Permutation and Combine Operations */\n            'sxtah','sxtahal',\n            'sxtab','sxtabal',\n            'sxtab16','sxtab16al',\n            'uxtah','uxtahal',\n            'uxtab','uxtabal',\n            'uxtab16','uxtab16al',\n            'sxth.w','sxthal.w',\n            'sxth','sxthal',\n            'sxtb.w','sxtbal.w',\n            'sxtb','sxtbal',\n            'sxtb16','sxtb16al',\n            'uxth.w','uxthal.w',\n            'uxth','uxthal',\n            'uxtb.w','uxtbal.w',\n            'uxtb','uxtbal',\n            'uxtb16','uxtb16al',\n            'pkhbt','pkhbtal',\n            'pkhtb','pkhtbal',\n            'rbit','rbital',\n            'rev.w','reval.w',\n            'rev','reval',\n            'rev16.w','rev16al.w',\n            'rev16','rev16al',\n            'revsh.w','revshal.w',\n            'revsh','revshal',\n            'sel','selal',\n            /* ARMv6 SIMD: Unconditional Multiply and Multiply-Add */\n            'smlad','smladal',\n            'smladx','smladxal',\n            'smlsd','smlsdal',\n            'smlsdx','smlsdxal',\n            'smlald','smlaldal',\n            'smlaldx','smlaldxal',\n            'smlsld','smlsldal',\n            'smlsldx','smlsldxal',\n            'smmul','smmulal',\n            'smmulr','smmulral',\n            'smmla','smmlaal',\n            'smmlar','smmlaral',\n            'smmls','smmlsal',\n            'smmlsr','smmlsral',\n            'smuad','smuadal',\n            'smuadx','smuadxal',\n            'smusd','smusdal',\n            'smusdx','smusdxal',\n            'umaal','umaalal'\n            ),\n        /* Conditional ARMv6 SIMD */\n        12 => array(\n            /* ARMv6 SIMD: Conditional Addition, Subtraction & Saturation */\n            'sadd16eq','sadd16ne','sadd16cs','sadd16hs','sadd16cc','sadd16lo','sadd16mi','sadd16pl','sadd16vs','sadd16vc','sadd16hi','sadd16ls','sadd16ge','sadd16lt','sadd16gt','sadd16le',\n            'sadd8eq','sadd8ne','sadd8cs','sadd8hs','sadd8cc','sadd8lo','sadd8mi','sadd8pl','sadd8vs','sadd8vc','sadd8hi','sadd8ls','sadd8ge','sadd8lt','sadd8gt','sadd8le',\n            'uadd16eq','uadd16ne','uadd16cs','uadd16hs','uadd16cc','uadd16lo','uadd16mi','uadd16pl','uadd16vs','uadd16vc','uadd16hi','uadd16ls','uadd16ge','uadd16lt','uadd16gt','uadd16le',\n            'uadd8eq','uadd8ne','uadd8cs','uadd8hs','uadd8cc','uadd8lo','uadd8mi','uadd8pl','uadd8vs','uadd8vc','uadd8hi','uadd8ls','uadd8ge','uadd8lt','uadd8gt','uadd8le',\n            'ssub16eq','ssub16ne','ssub16cs','ssub16hs','ssub16cc','ssub16lo','ssub16mi','ssub16pl','ssub16vs','ssub16vc','ssub16hi','ssub16ls','ssub16ge','ssub16lt','ssub16gt','ssub16le',\n            'ssub8eq','ssub8ne','ssub8cs','ssub8hs','ssub8cc','ssub8lo','ssub8mi','ssub8pl','ssub8vs','ssub8vc','ssub8hi','ssub8ls','ssub8ge','ssub8lt','ssub8gt','ssub8le',\n            'usub16eq','usub16ne','usub16cs','usub16hs','usub16cc','usub16lo','usub16mi','usub16pl','usub16vs','usub16vc','usub16hi','usub16ls','usub16ge','usub16lt','usub16gt','usub16le',\n            'usub8eq','usub8ne','usub8cs','usub8hs','usub8cc','usub8lo','usub8mi','usub8pl','usub8vs','usub8vc','usub8hi','usub8ls','usub8ge','usub8lt','usub8gt','usub8le',\n            'sasxeq','sasxne','sasxcs','sasxhs','sasxcc','sasxlo','sasxmi','sasxpl','sasxvs','sasxvc','sasxhi','sasxls','sasxge','sasxlt','sasxgt','sasxle',\n            'ssaxeq','ssaxne','ssaxcs','ssaxhs','ssaxcc','ssaxlo','ssaxmi','ssaxpl','ssaxvs','ssaxvc','ssaxhi','ssaxls','ssaxge','ssaxlt','ssaxgt','ssaxle',\n            'uasxeq','uasxne','uasxcs','uasxhs','uasxcc','uasxlo','uasxmi','uasxpl','uasxvs','uasxvc','uasxhi','uasxls','uasxge','uasxlt','uasxgt','uasxle',\n            'usaxeq','usaxne','usaxcs','usaxhs','usaxcc','usaxlo','usaxmi','usaxpl','usaxvs','usaxvc','usaxhi','usaxls','usaxge','usaxlt','usaxgt','usaxle',\n            'usad8eq','usad8ne','usad8cs','usad8hs','usad8cc','usad8lo','usad8mi','usad8pl','usad8vs','usad8vc','usad8hi','usad8ls','usad8ge','usad8lt','usad8gt','usad8le',\n            'usada8eq','usada8ne','usada8cs','usada8hs','usada8cc','usada8lo','usada8mi','usada8pl','usada8vs','usada8vc','usada8hi','usada8ls','usada8ge','usada8lt','usada8gt','usada8le',\n            /* ARMv6 SIMD: Conditional Halving Addition & Subtraction */\n            'shadd16eq','shadd16ne','shadd16cs','shadd16hs','shadd16cc','shadd16lo','shadd16mi','shadd16pl','shadd16vs','shadd16vc','shadd16hi','shadd16ls','shadd16ge','shadd16lt','shadd16gt','shadd16le',\n            'shadd8eq','shadd8ne','shadd8cs','shadd8hs','shadd8cc','shadd8lo','shadd8mi','shadd8pl','shadd8vs','shadd8vc','shadd8hi','shadd8ls','shadd8ge','shadd8lt','shadd8gt','shadd8le',\n            'uhadd16eq','uhadd16ne','uhadd16cs','uhadd16hs','uhadd16cc','uhadd16lo','uhadd16mi','uhadd16pl','uhadd16vs','uhadd16vc','uhadd16hi','uhadd16ls','uhadd16ge','uhadd16lt','uhadd16gt','uhadd16le',\n            'uhadd8eq','uhadd8ne','uhadd8cs','uhadd8hs','uhadd8cc','uhadd8lo','uhadd8mi','uhadd8pl','uhadd8vs','uhadd8vc','uhadd8hi','uhadd8ls','uhadd8ge','uhadd8lt','uhadd8gt','uhadd8le',\n            'shsub16eq','shsub16ne','shsub16cs','shsub16hs','shsub16cc','shsub16lo','shsub16mi','shsub16pl','shsub16vs','shsub16vc','shsub16hi','shsub16ls','shsub16ge','shsub16lt','shsub16gt','shsub16le',\n            'shsub8eq','shsub8ne','shsub8cs','shsub8hs','shsub8cc','shsub8lo','shsub8mi','shsub8pl','shsub8vs','shsub8vc','shsub8hi','shsub8ls','shsub8ge','shsub8lt','shsub8gt','shsub8le',\n            'uhsub16eq','uhsub16ne','uhsub16cs','uhsub16hs','uhsub16cc','uhsub16lo','uhsub16mi','uhsub16pl','uhsub16vs','uhsub16vc','uhsub16hi','uhsub16ls','uhsub16ge','uhsub16lt','uhsub16gt','uhsub16le',\n            'uhsub8eq','uhsub8ne','uhsub8cs','uhsub8hs','uhsub8cc','uhsub8lo','uhsub8mi','uhsub8pl','uhsub8vs','uhsub8vc','uhsub8hi','uhsub8ls','uhsub8ge','uhsub8lt','uhsub8gt','uhsub8le',\n            'shasxeq','shasxne','shasxcs','shasxhs','shasxcc','shasxlo','shasxmi','shasxpl','shasxvs','shasxvc','shasxhi','shasxls','shasxge','shasxlt','shasxgt','shasxle',\n            'shsaxeq','shsaxne','shsaxcs','shsaxhs','shsaxcc','shsaxlo','shsaxmi','shsaxpl','shsaxvs','shsaxvc','shsaxhi','shsaxls','shsaxge','shsaxlt','shsaxgt','shsaxle',\n            'uhasxeq','uhasxne','uhasxcs','uhasxhs','uhasxcc','uhasxlo','uhasxmi','uhasxpl','uhasxvs','uhasxvc','uhasxhi','uhasxls','uhasxge','uhasxlt','uhasxgt','uhasxle',\n            'uhsaxeq','uhsaxne','uhsaxcs','uhsaxhs','uhsaxcc','uhsaxlo','uhsaxmi','uhsaxpl','uhsaxvs','uhsaxvc','uhsaxhi','uhsaxls','uhsaxge','uhsaxlt','uhsaxgt','uhsaxle',\n            /* ARMv6 SIMD: Conditional Saturating Operations */\n            'qaddeq','qaddne','qaddcs','qaddhs','qaddcc','qaddlo','qaddmi','qaddpl','qaddvs','qaddvc','qaddhi','qaddls','qaddge','qaddlt','qaddgt','qaddle',\n            'qadd16eq','qadd16ne','qadd16cs','qadd16hs','qadd16cc','qadd16lo','qadd16mi','qadd16pl','qadd16vs','qadd16vc','qadd16hi','qadd16ls','qadd16ge','qadd16lt','qadd16gt','qadd16le',\n            'qadd8eq','qadd8ne','qadd8cs','qadd8hs','qadd8cc','qadd8lo','qadd8mi','qadd8pl','qadd8vs','qadd8vc','qadd8hi','qadd8ls','qadd8ge','qadd8lt','qadd8gt','qadd8le',\n            'uqadd16eq','uqadd16ne','uqadd16cs','uqadd16hs','uqadd16cc','uqadd16lo','uqadd16mi','uqadd16pl','uqadd16vs','uqadd16vc','uqadd16hi','uqadd16ls','uqadd16ge','uqadd16lt','uqadd16gt','uqadd16le',\n            'uqadd8eq','uqadd8ne','uqadd8cs','uqadd8hs','uqadd8cc','uqadd8lo','uqadd8mi','uqadd8pl','uqadd8vs','uqadd8vc','uqadd8hi','uqadd8ls','uqadd8ge','uqadd8lt','uqadd8gt','uqadd8le',\n            'qsubeq','qsubne','qsubcs','qsubhs','qsubcc','qsublo','qsubmi','qsubpl','qsubvs','qsubvc','qsubhi','qsubls','qsubge','qsublt','qsubgt','qsuble',\n            'qsub16eq','qsub16ne','qsub16cs','qsub16hs','qsub16cc','qsub16lo','qsub16mi','qsub16pl','qsub16vs','qsub16vc','qsub16hi','qsub16ls','qsub16ge','qsub16lt','qsub16gt','qsub16le',\n            'qsub8eq','qsub8ne','qsub8cs','qsub8hs','qsub8cc','qsub8lo','qsub8mi','qsub8pl','qsub8vs','qsub8vc','qsub8hi','qsub8ls','qsub8ge','qsub8lt','qsub8gt','qsub8le',\n            'uqsub16eq','uqsub16ne','uqsub16cs','uqsub16hs','uqsub16cc','uqsub16lo','uqsub16mi','uqsub16pl','uqsub16vs','uqsub16vc','uqsub16hi','uqsub16ls','uqsub16ge','uqsub16lt','uqsub16gt','uqsub16le',\n            'uqsub8eq','uqsub8ne','uqsub8cs','uqsub8hs','uqsub8cc','uqsub8lo','uqsub8mi','uqsub8pl','uqsub8vs','uqsub8vc','uqsub8hi','uqsub8ls','uqsub8ge','uqsub8lt','uqsub8gt','uqsub8le',\n            'qasxeq','qasxne','qasxcs','qasxhs','qasxcc','qasxlo','qasxmi','qasxpl','qasxvs','qasxvc','qasxhi','qasxls','qasxge','qasxlt','qasxgt','qasxle',\n            'qsaxeq','qsaxne','qsaxcs','qsaxhs','qsaxcc','qsaxlo','qsaxmi','qsaxpl','qsaxvs','qsaxvc','qsaxhi','qsaxls','qsaxge','qsaxlt','qsaxgt','qsaxle',\n            'uqasxeq','uqasxne','uqasxcs','uqasxhs','uqasxcc','uqasxlo','uqasxmi','uqasxpl','uqasxvs','uqasxvc','uqasxhi','uqasxls','uqasxge','uqasxlt','uqasxgt','uqasxle',\n            'uqsaxeq','uqsaxne','uqsaxcs','uqsaxhs','uqsaxcc','uqsaxlo','uqsaxmi','uqsaxpl','uqsaxvs','uqsaxvc','uqsaxhi','uqsaxls','uqsaxge','uqsaxlt','uqsaxgt','uqsaxle',\n            'qdaddeq','qdaddne','qdaddcs','qdaddhs','qdaddcc','qdaddlo','qdaddmi','qdaddpl','qdaddvs','qdaddvc','qdaddhi','qdaddls','qdaddge','qdaddlt','qdaddgt','qdaddle',\n            'qdsubeq','qdsubne','qdsubcs','qdsubhs','qdsubcc','qdsublo','qdsubmi','qdsubpl','qdsubvs','qdsubvc','qdsubhi','qdsubls','qdsubge','qdsublt','qdsubgt','qdsuble',\n            'ssateq','ssatne','ssatcs','ssaths','ssatcc','ssatlo','ssatmi','ssatpl','ssatvs','ssatvc','ssathi','ssatls','ssatge','ssatlt','ssatgt','ssatle',\n            'ssat16eq','ssat16ne','ssat16cs','ssat16hs','ssat16cc','ssat16lo','ssat16mi','ssat16pl','ssat16vs','ssat16vc','ssat16hi','ssat16ls','ssat16ge','ssat16lt','ssat16gt','ssat16le',\n            'usateq','usatne','usatcs','usaths','usatcc','usatlo','usatmi','usatpl','usatvs','usatvc','usathi','usatls','usatge','usatlt','usatgt','usatle',\n            'usat16eq','usat16ne','usat16cs','usat16hs','usat16cc','usat16lo','usat16mi','usat16pl','usat16vs','usat16vc','usat16hi','usat16ls','usat16ge','usat16lt','usat16gt','usat16le',\n            /* ARMv6 SIMD: Conditional Permutation and Combine Operations */\n            'sxtaheq','sxtahne','sxtahcs','sxtahhs','sxtahcc','sxtahlo','sxtahmi','sxtahpl','sxtahvs','sxtahvc','sxtahhi','sxtahls','sxtahge','sxtahlt','sxtahgt','sxtahle',\n            'sxtabeq','sxtabne','sxtabcs','sxtabhs','sxtabcc','sxtablo','sxtabmi','sxtabpl','sxtabvs','sxtabvc','sxtabhi','sxtabls','sxtabge','sxtablt','sxtabgt','sxtable',\n            'sxtab16eq','sxtab16ne','sxtab16cs','sxtab16hs','sxtab16cc','sxtab16lo','sxtab16mi','sxtab16pl','sxtab16vs','sxtab16vc','sxtab16hi','sxtab16ls','sxtab16ge','sxtab16lt','sxtab16gt','sxtab16le',\n            'uxtaheq','uxtahne','uxtahcs','uxtahhs','uxtahcc','uxtahlo','uxtahmi','uxtahpl','uxtahvs','uxtahvc','uxtahhi','uxtahls','uxtahge','uxtahlt','uxtahgt','uxtahle',\n            'uxtabeq','uxtabne','uxtabcs','uxtabhs','uxtabcc','uxtablo','uxtabmi','uxtabpl','uxtabvs','uxtabvc','uxtabhi','uxtabls','uxtabge','uxtablt','uxtabgt','uxtable',\n            'uxtab16eq','uxtab16ne','uxtab16cs','uxtab16hs','uxtab16cc','uxtab16lo','uxtab16mi','uxtab16pl','uxtab16vs','uxtab16vc','uxtab16hi','uxtab16ls','uxtab16ge','uxtab16lt','uxtab16gt','uxtab16le',\n            'sxtheq.w','sxthne.w','sxthcs.w','sxthhs.w','sxthcc.w','sxthlo.w','sxthmi.w','sxthpl.w','sxthvs.w','sxthvc.w','sxthhi.w','sxthls.w','sxthge.w','sxthlt.w','sxthgt.w','sxthle.w',\n            'sxtheq','sxthne','sxthcs','sxthhs','sxthcc','sxthlo','sxthmi','sxthpl','sxthvs','sxthvc','sxthhi','sxthls','sxthge','sxthlt','sxthgt','sxthle',\n            'sxtbeq.w','sxtbne.w','sxtbcs.w','sxtbhs.w','sxtbcc.w','sxtblo.w','sxtbmi.w','sxtbpl.w','sxtbvs.w','sxtbvc.w','sxtbhi.w','sxtbls.w','sxtbge.w','sxtblt.w','sxtbgt.w','sxtble.w',\n            'sxtbeq','sxtbne','sxtbcs','sxtbhs','sxtbcc','sxtblo','sxtbmi','sxtbpl','sxtbvs','sxtbvc','sxtbhi','sxtbls','sxtbge','sxtblt','sxtbgt','sxtble',\n            'sxtb16eq','sxtb16ne','sxtb16cs','sxtb16hs','sxtb16cc','sxtb16lo','sxtb16mi','sxtb16pl','sxtb16vs','sxtb16vc','sxtb16hi','sxtb16ls','sxtb16ge','sxtb16lt','sxtb16gt','sxtb16le',\n            'uxtheq.w','uxthne.w','uxthcs.w','uxthhs.w','uxthcc.w','uxthlo.w','uxthmi.w','uxthpl.w','uxthvs.w','uxthvc.w','uxthhi.w','uxthls.w','uxthge.w','uxthlt.w','uxthgt.w','uxthle.w',\n            'uxtheq','uxthne','uxthcs','uxthhs','uxthcc','uxthlo','uxthmi','uxthpl','uxthvs','uxthvc','uxthhi','uxthls','uxthge','uxthlt','uxthgt','uxthle',\n            'uxtbeq.w','uxtbne.w','uxtbcs.w','uxtbhs.w','uxtbcc.w','uxtblo.w','uxtbmi.w','uxtbpl.w','uxtbvs.w','uxtbvc.w','uxtbhi.w','uxtbls.w','uxtbge.w','uxtblt.w','uxtbgt.w','uxtble.w',\n            'uxtbeq','uxtbne','uxtbcs','uxtbhs','uxtbcc','uxtblo','uxtbmi','uxtbpl','uxtbvs','uxtbvc','uxtbhi','uxtbls','uxtbge','uxtblt','uxtbgt','uxtble',\n            'uxtb16eq','uxtb16ne','uxtb16cs','uxtb16hs','uxtb16cc','uxtb16lo','uxtb16mi','uxtb16pl','uxtb16vs','uxtb16vc','uxtb16hi','uxtb16ls','uxtb16ge','uxtb16lt','uxtb16gt','uxtb16le',\n            'pkhbteq','pkhbtne','pkhbtcs','pkhbths','pkhbtcc','pkhbtlo','pkhbtmi','pkhbtpl','pkhbtvs','pkhbtvc','pkhbthi','pkhbtls','pkhbtge','pkhbtlt','pkhbtgt','pkhbtle',\n            'pkhtbeq','pkhtbne','pkhtbcs','pkhtbhs','pkhtbcc','pkhtblo','pkhtbmi','pkhtbpl','pkhtbvs','pkhtbvc','pkhtbhi','pkhtbls','pkhtbge','pkhtblt','pkhtbgt','pkhtble',\n            'rbiteq','rbitne','rbitcs','rbiths','rbitcc','rbitlo','rbitmi','rbitpl','rbitvs','rbitvc','rbithi','rbitls','rbitge','rbitlt','rbitgt','rbitle',\n            'reveq.w','revne.w','revcs.w','revhs.w','revcc.w','revlo.w','revmi.w','revpl.w','revvs.w','revvc.w','revhi.w','revls.w','revge.w','revlt.w','revgt.w','revle.w',\n            'reveq','revne','revcs','revhs','revcc','revlo','revmi','revpl','revvs','revvc','revhi','revls','revge','revlt','revgt','revle',\n            'rev16eq.w','rev16ne.w','rev16cs.w','rev16hs.w','rev16cc.w','rev16lo.w','rev16mi.w','rev16pl.w','rev16vs.w','rev16vc.w','rev16hi.w','rev16ls.w','rev16ge.w','rev16lt.w','rev16gt.w','rev16le.w',\n            'rev16eq','rev16ne','rev16cs','rev16hs','rev16cc','rev16lo','rev16mi','rev16pl','rev16vs','rev16vc','rev16hi','rev16ls','rev16ge','rev16lt','rev16gt','rev16le',\n            'revsheq.w','revshne.w','revshcs.w','revshhs.w','revshcc.w','revshlo.w','revshmi.w','revshpl.w','revshvs.w','revshvc.w','revshhi.w','revshls.w','revshge.w','revshlt.w','revshgt.w','revshle.w',\n            'revsheq','revshne','revshcs','revshhs','revshcc','revshlo','revshmi','revshpl','revshvs','revshvc','revshhi','revshls','revshge','revshlt','revshgt','revshle',\n            'seleq','selne','selcs','selhs','selcc','sello','selmi','selpl','selvs','selvc','selhi','sells','selge','sellt','selgt','selle',\n            /* ARMv6 SIMD: Conditional Multiply and Multiply-Add */\n            'smladeq','smladne','smladcs','smladhs','smladcc','smladlo','smladmi','smladpl','smladvs','smladvc','smladhi','smladls','smladge','smladlt','smladgt','smladle',\n            'smladxeq','smladxne','smladxcs','smladxhs','smladxcc','smladxlo','smladxmi','smladxpl','smladxvs','smladxvc','smladxhi','smladxls','smladxge','smladxlt','smladxgt','smladxle',\n            'smlsdeq','smlsdne','smlsdcs','smlsdhs','smlsdcc','smlsdlo','smlsdmi','smlsdpl','smlsdvs','smlsdvc','smlsdhi','smlsdls','smlsdge','smlsdlt','smlsdgt','smlsdle',\n            'smlsdxeq','smlsdxne','smlsdxcs','smlsdxhs','smlsdxcc','smlsdxlo','smlsdxmi','smlsdxpl','smlsdxvs','smlsdxvc','smlsdxhi','smlsdxls','smlsdxge','smlsdxlt','smlsdxgt','smlsdxle',\n            'smlaldeq','smlaldne','smlaldcs','smlaldhs','smlaldcc','smlaldlo','smlaldmi','smlaldpl','smlaldvs','smlaldvc','smlaldhi','smlaldls','smlaldge','smlaldlt','smlaldgt','smlaldle',\n            'smlaldxeq','smlaldxne','smlaldxcs','smlaldxhs','smlaldxcc','smlaldxlo','smlaldxmi','smlaldxpl','smlaldxvs','smlaldxvc','smlaldxhi','smlaldxls','smlaldxge','smlaldxlt','smlaldxgt','smlaldxle',\n            'smlsldeq','smlsldne','smlsldcs','smlsldhs','smlsldcc','smlsldlo','smlsldmi','smlsldpl','smlsldvs','smlsldvc','smlsldhi','smlsldls','smlsldge','smlsldlt','smlsldgt','smlsldle',\n            'smlsldxeq','smlsldxne','smlsldxcs','smlsldxhs','smlsldxcc','smlsldxlo','smlsldxmi','smlsldxpl','smlsldxvs','smlsldxvc','smlsldxhi','smlsldxls','smlsldxge','smlsldxlt','smlsldxgt','smlsldxle',\n            'smmuleq','smmulne','smmulcs','smmulhs','smmulcc','smmullo','smmulmi','smmulpl','smmulvs','smmulvc','smmulhi','smmulls','smmulge','smmullt','smmulgt','smmulle',\n            'smmulreq','smmulrne','smmulrcs','smmulrhs','smmulrcc','smmulrlo','smmulrmi','smmulrpl','smmulrvs','smmulrvc','smmulrhi','smmulrls','smmulrge','smmulrlt','smmulrgt','smmulrle',\n            'smmlaeq','smmlane','smmlacs','smmlahs','smmlacc','smmlalo','smmlami','smmlapl','smmlavs','smmlavc','smmlahi','smmlals','smmlage','smmlalt','smmlagt','smmlale',\n            'smmlareq','smmlarne','smmlarcs','smmlarhs','smmlarcc','smmlarlo','smmlarmi','smmlarpl','smmlarvs','smmlarvc','smmlarhi','smmlarls','smmlarge','smmlarlt','smmlargt','smmlarle',\n            'smmlseq','smmlsne','smmlscs','smmlshs','smmlscc','smmlslo','smmlsmi','smmlspl','smmlsvs','smmlsvc','smmlshi','smmlsls','smmlsge','smmlslt','smmlsgt','smmlsle',\n            'smmlsreq','smmlsrne','smmlsrcs','smmlsrhs','smmlsrcc','smmlsrlo','smmlsrmi','smmlsrpl','smmlsrvs','smmlsrvc','smmlsrhi','smmlsrls','smmlsrge','smmlsrlt','smmlsrgt','smmlsrle',\n            'smuadeq','smuadne','smuadcs','smuadhs','smuadcc','smuadlo','smuadmi','smuadpl','smuadvs','smuadvc','smuadhi','smuadls','smuadge','smuadlt','smuadgt','smuadle',\n            'smuadxeq','smuadxne','smuadxcs','smuadxhs','smuadxcc','smuadxlo','smuadxmi','smuadxpl','smuadxvs','smuadxvc','smuadxhi','smuadxls','smuadxge','smuadxlt','smuadxgt','smuadxle',\n            'smusdeq','smusdne','smusdcs','smusdhs','smusdcc','smusdlo','smusdmi','smusdpl','smusdvs','smusdvc','smusdhi','smusdls','smusdge','smusdlt','smusdgt','smusdle',\n            'smusdxeq','smusdxne','smusdxcs','smusdxhs','smusdxcc','smusdxlo','smusdxmi','smusdxpl','smusdxvs','smusdxvc','smusdxhi','smusdxls','smusdxge','smusdxlt','smusdxgt','smusdxle',\n            'umaaleq','umaalne','umaalcs','umaalhs','umaalcc','umaallo','umaalmi','umaalpl','umaalvs','umaalvc','umaalhi','umaalls','umaalge','umaallt','umaalgt','umaalle'\n            ),\n        /* Unconditional Coprocessor Instructions */\n        13 => array(\n            /* Data Processing: Unconditional Coprocessor Instructions */\n            'cdp','cdpal',\n            'cdp2','cdp2al',\n            'ldc','ldcal',\n            'ldcl','ldclal',\n            'ldc2','ldc2al',\n            'ldc2l','ldc2lal',\n            'stc','stcal',\n            'stcl','stclal',\n            'stc2','stc2al',\n            'stc2l','stc2lal',\n            'mcr','mcral',\n            'mcr2','mcr2al',\n            'mcrr','mcrral',\n            'mcrr2','mcrr2al',\n            'mrc','mrcal',\n            'mrc2','mrc2al',\n            'mrrc','mrrcal',\n            'mrrc2','mrrc2al'\n            ),\n        /* Conditional Coprocessor Instructions */\n        14 => array(\n            /* Data Processing: Conditional Coprocessor Instructions */\n            'cdpeq','cdpne','cdpcs','cdphs','cdpcc','cdplo','cdpmi','cdppl','cdpvs','cdpvc','cdphi','cdpls','cdpge','cdplt','cdpgt','cdple',\n            'cdp2eq','cdp2ne','cdp2cs','cdp2hs','cdp2cc','cdp2lo','cdp2mi','cdp2pl','cdp2vs','cdp2vc','cdp2hi','cdp2ls','cdp2ge','cdp2lt','cdp2gt','cdp2le',\n            'ldceq','ldcne','ldccs','ldchs','ldccc','ldclo','ldcmi','ldcpl','ldcvs','ldcvc','ldchi','ldcls','ldcge','ldclt','ldcgt','ldcle',\n            'ldcleq','ldclne','ldclcs','ldclhs','ldclcc','ldcllo','ldclmi','ldclpl','ldclvs','ldclvc','ldclhi','ldclls','ldclge','ldcllt','ldclgt','ldclle',\n            'ldc2eq','ldc2ne','ldc2cs','ldc2hs','ldc2cc','ldc2lo','ldc2mi','ldc2pl','ldc2vs','ldc2vc','ldc2hi','ldc2ls','ldc2ge','ldc2lt','ldc2gt','ldc2le',\n            'ldc2leq','ldc2lne','ldc2lcs','ldc2lhs','ldc2lcc','ldc2llo','ldc2lmi','ldc2lpl','ldc2lvs','ldc2lvc','ldc2lhi','ldc2lls','ldc2lge','ldc2llt','ldc2lgt','ldc2lle',\n            'stceq','stcne','stccs','stchs','stccc','stclo','stcmi','stcpl','stcvs','stcvc','stchi','stcls','stcge','stclt','stcgt','stcle',\n            'stcleq','stclne','stclcs','stclhs','stclcc','stcllo','stclmi','stclpl','stclvs','stclvc','stclhi','stclls','stclge','stcllt','stclgt','stclle',\n            'stc2eq','stc2ne','stc2cs','stc2hs','stc2cc','stc2lo','stc2mi','stc2pl','stc2vs','stc2vc','stc2hi','stc2ls','stc2ge','stc2lt','stc2gt','stc2le',\n            'stc2leq','stc2lne','stc2lcs','stc2lhs','stc2lcc','stc2llo','stc2lmi','stc2lpl','stc2lvs','stc2lvc','stc2lhi','stc2lls','stc2lge','stc2llt','stc2lgt','stc2lle',\n            'mcreq','mcrne','mcrcs','mcrhs','mcrcc','mcrlo','mcrmi','mcrpl','mcrvs','mcrvc','mcrhi','mcrls','mcrge','mcrlt','mcrgt','mcrle',\n            'mcr2eq','mcr2ne','mcr2cs','mcr2hs','mcr2cc','mcr2lo','mcr2mi','mcr2pl','mcr2vs','mcr2vc','mcr2hi','mcr2ls','mcr2ge','mcr2lt','mcr2gt','mcr2le',\n            'mcrreq','mcrrne','mcrrcs','mcrrhs','mcrrcc','mcrrlo','mcrrmi','mcrrpl','mcrrvs','mcrrvc','mcrrhi','mcrrls','mcrrge','mcrrlt','mcrrgt','mcrrle',\n            'mcrr2eq','mcrr2ne','mcrr2cs','mcrr2hs','mcrr2cc','mcrr2lo','mcrr2mi','mcrr2pl','mcrr2vs','mcrr2vc','mcrr2hi','mcrr2ls','mcrr2ge','mcrr2lt','mcrr2gt','mcrr2le',\n            'mrceq','mrcne','mrccs','mrchs','mrccc','mrclo','mrcmi','mrcpl','mrcvs','mrcvc','mrchi','mrcls','mrcge','mrclt','mrcgt','mrcle',\n            'mrc2eq','mrc2ne','mrc2cs','mrc2hs','mrc2cc','mrc2lo','mrc2mi','mrc2pl','mrc2vs','mrc2vc','mrc2hi','mrc2ls','mrc2ge','mrc2lt','mrc2gt','mrc2le',\n            'mrrceq','mrrcne','mrrccs','mrrchs','mrrccc','mrrclo','mrrcmi','mrrcpl','mrrcvs','mrrcvc','mrrchi','mrrcls','mrrcge','mrrclt','mrrcgt','mrrcle',\n            'mrrc2eq','mrrc2ne','mrrc2cs','mrrc2hs','mrrc2cc','mrrc2lo','mrrc2mi','mrrc2pl','mrrc2vs','mrrc2vc','mrrc2hi','mrrc2ls','mrrc2ge','mrrc2lt','mrrc2gt','mrrc2le'\n            ),\n        /* Unconditional System Instructions */\n        15 => array(\n            /* System: Unconditional Debug and State-Change Instructions */\n            'bkpt',\n            'dbg','dbgal',\n            'setend',\n            'svc','svcal',\n            'sev.w','seval.w',\n            'sev','seval',\n            'wfe.w','wfeal.w',\n            'wfe','wfeal',\n            'wfi.w','wfial.w',\n            'wfi','wfial',\n            /* System: Unconditional ThumbEE Instructions */\n            'enterx',\n            'leavex',\n            'chka.n','chkaal.n',\n            'chka','chkaal',\n            'hb.n','hbal.n',\n            'hb','hbal',\n            'hbl.n','hblal.n',\n            'hbl','hblal',\n            'hblp.n','hblpal.n',\n            'hblp','hblpal',\n            'hbp.n','hbpal.n',\n            'hbp','hbpal',\n            /* System: Unconditional Privileged Instructions */\n            'cpsie.n',\n            'cpsie.w',\n            'cpsie',\n            'cpsid.n',\n            'cpsid.w',\n            'cpsid',\n            'smc','smcal',\n            'rfeda','rfedaal',\n            'rfedb','rfedbal',\n            'rfeia','rfeiaal',\n            'rfeib','rfeibal',\n            'srsda','srsdaal',\n            'srsdb','srsdbal',\n            'srsia','srsiaal',\n            'srsib','srsibal'\n            ),\n        /* Conditional System Instructions */\n        16 => array(\n            /* System: Conditional Debug and State-Change Instructions */\n            'dbgeq','dbgne','dbgcs','dbghs','dbgcc','dbglo','dbgmi','dbgpl','dbgvs','dbgvc','dbghi','dbgls','dbgge','dbglt','dbggt','dbgle',\n            'svceq','svcne','svccs','svchs','svccc','svclo','svcmi','svcpl','svcvs','svcvc','svchi','svcls','svcge','svclt','svcgt','svcle',\n            'seveq.w','sevne.w','sevcs.w','sevhs.w','sevcc.w','sevlo.w','sevmi.w','sevpl.w','sevvs.w','sevvc.w','sevhi.w','sevls.w','sevge.w','sevlt.w','sevgt.w','sevle.w',\n            'seveq','sevne','sevcs','sevhs','sevcc','sevlo','sevmi','sevpl','sevvs','sevvc','sevhi','sevls','sevge','sevlt','sevgt','sevle',\n            'wfeeq.w','wfene.w','wfecs.w','wfehs.w','wfecc.w','wfelo.w','wfemi.w','wfepl.w','wfevs.w','wfevc.w','wfehi.w','wfels.w','wfege.w','wfelt.w','wfegt.w','wfele.w',\n            'wfeeq','wfene','wfecs','wfehs','wfecc','wfelo','wfemi','wfepl','wfevs','wfevc','wfehi','wfels','wfege','wfelt','wfegt','wfele',\n            'wfieq.w','wfine.w','wfics.w','wfihs.w','wficc.w','wfilo.w','wfimi.w','wfipl.w','wfivs.w','wfivc.w','wfihi.w','wfils.w','wfige.w','wfilt.w','wfigt.w','wfile.w',\n            'wfieq','wfine','wfics','wfihs','wficc','wfilo','wfimi','wfipl','wfivs','wfivc','wfihi','wfils','wfige','wfilt','wfigt','wfile',\n            /* System: Conditional ThumbEE Instructions */\n            'chkaeq.n','chkane.n','chkacs.n','chkahs.n','chkacc.n','chkalo.n','chkami.n','chkapl.n','chkavs.n','chkavc.n','chkahi.n','chkals.n','chkage.n','chkalt.n','chkagt.n','chkale.n',\n            'chkaeq','chkane','chkacs','chkahs','chkacc','chkalo','chkami','chkapl','chkavs','chkavc','chkahi','chkals','chkage','chkalt','chkagt','chkale',\n            'hbeq.n','hbne.n','hbcs.n','hbhs.n','hbcc.n','hblo.n','hbmi.n','hbpl.n','hbvs.n','hbvc.n','hbhi.n','hbls.n','hbge.n','hblt.n','hbgt.n','hble.n',\n            'hbeq','hbne','hbcs','hbhs','hbcc','hblo','hbmi','hbpl','hbvs','hbvc','hbhi','hbls','hbge','hblt','hbgt','hble',\n            'hbleq.n','hblne.n','hblcs.n','hblhs.n','hblcc.n','hbllo.n','hblmi.n','hblpl.n','hblvs.n','hblvc.n','hblhi.n','hblls.n','hblge.n','hbllt.n','hblgt.n','hblle.n',\n            'hbleq','hblne','hblcs','hblhs','hblcc','hbllo','hblmi','hblpl','hblvs','hblvc','hblhi','hblls','hblge','hbllt','hblgt','hblle',\n            'hblpeq.n','hblpne.n','hblpcs.n','hblphs.n','hblpcc.n','hblplo.n','hblpmi.n','hblppl.n','hblpvs.n','hblpvc.n','hblphi.n','hblpls.n','hblpge.n','hblplt.n','hblpgt.n','hblple.n',\n            'hblpeq','hblpne','hblpcs','hblphs','hblpcc','hblplo','hblpmi','hblppl','hblpvs','hblpvc','hblphi','hblpls','hblpge','hblplt','hblpgt','hblple',\n            'hbpeq.n','hbpne.n','hbpcs.n','hbphs.n','hbpcc.n','hbplo.n','hbpmi.n','hbppl.n','hbpvs.n','hbpvc.n','hbphi.n','hbpls.n','hbpge.n','hbplt.n','hbpgt.n','hbple.n',\n            'hbpeq','hbpne','hbpcs','hbphs','hbpcc','hbplo','hbpmi','hbppl','hbpvs','hbpvc','hbphi','hbpls','hbpge','hbplt','hbpgt','hbple',\n            /* System: Conditional Privileged Instructions */\n            'smceq','smcne','smccs','smchs','smccc','smclo','smcmi','smcpl','smcvs','smcvc','smchi','smcls','smcge','smclt','smcgt','smcle',\n            'rfedaeq','rfedane','rfedacs','rfedahs','rfedacc','rfedalo','rfedami','rfedapl','rfedavs','rfedavc','rfedahi','rfedals','rfedage','rfedalt','rfedagt','rfedale',\n            'rfedbeq','rfedbne','rfedbcs','rfedbhs','rfedbcc','rfedblo','rfedbmi','rfedbpl','rfedbvs','rfedbvc','rfedbhi','rfedbls','rfedbge','rfedblt','rfedbgt','rfedble',\n            'rfeiaeq','rfeiane','rfeiacs','rfeiahs','rfeiacc','rfeialo','rfeiami','rfeiapl','rfeiavs','rfeiavc','rfeiahi','rfeials','rfeiage','rfeialt','rfeiagt','rfeiale',\n            'rfeibeq','rfeibne','rfeibcs','rfeibhs','rfeibcc','rfeiblo','rfeibmi','rfeibpl','rfeibvs','rfeibvc','rfeibhi','rfeibls','rfeibge','rfeiblt','rfeibgt','rfeible',\n            'srsdaeq','srsdane','srsdacs','srsdahs','srsdacc','srsdalo','srsdami','srsdapl','srsdavs','srsdavc','srsdahi','srsdals','srsdage','srsdalt','srsdagt','srsdale',\n            'srsdbeq','srsdbne','srsdbcs','srsdbhs','srsdbcc','srsdblo','srsdbmi','srsdbpl','srsdbvs','srsdbvc','srsdbhi','srsdbls','srsdbge','srsdblt','srsdbgt','srsdble',\n            'srsiaeq','srsiane','srsiacs','srsiahs','srsiacc','srsialo','srsiami','srsiapl','srsiavs','srsiavc','srsiahi','srsials','srsiage','srsialt','srsiagt','srsiale',\n            'srsibeq','srsibne','srsibcs','srsibhs','srsibcc','srsiblo','srsibmi','srsibpl','srsibvs','srsibvc','srsibhi','srsibls','srsibge','srsiblt','srsibgt','srsible'\n            ),\n        /* Unconditional WMMX/WMMX2 instructions */\n        17 => array(\n            /* Unconditional WMMX/WMMX2 SIMD Instructions */\n            'tandcb','tandcbal',\n            'tandch','tandchal',\n            'tandcw','tandcwal',\n            'tbcstb','tbcstbal',\n            'tbcsth','tbcsthal',\n            'tbcstw','tbcstwal',\n            'textrcb','textrcbal',\n            'textrch','textrchal',\n            'textrcw','textrcwal',\n            'textrmsb','textrmsbal',\n            'textrmsh','textrmshal',\n            'textrmsw','textrmswal',\n            'textrmub','textrmubal',\n            'textrmuh','textrmuhal',\n            'textrmuw','textrmuwal',\n            'tinsrb','tinsrbal',\n            'tinsrh','tinsrhal',\n            'tinsrw','tinsrwal',\n            'tmcr','tmcral',\n            'tmcrr','tmcrral',\n            'tmia','tmiaal',\n            'tmiaph','tmiaphal',\n            'tmiabb','tmiabbal',\n            'tmiabt','tmiabtal',\n            'tmiatb','tmiatbal',\n            'tmiatt','tmiattal',\n            'tmovmskb','tmovmskbal',\n            'tmovmskh','tmovmskhal',\n            'tmovmskw','tmovmskwal',\n            'tmrc','tmrcal',\n            'tmrrc','tmrrcal',\n            'torcb','torcbal',\n            'torch','torchal',\n            'torcw','torcwal',\n            'torvscb','torvscbal',\n            'torvsch','torvschal',\n            'torvscw','torvscwal',\n            'wabsb','wabsbal',\n            'wabsh','wabshal',\n            'wabsw','wabswal',\n            'wabsdiffb','wabsdiffbal',\n            'wabsdiffh','wabsdiffhal',\n            'wabsdiffw','wabsdiffwal',\n            'waccb','waccbal',\n            'wacch','wacchal',\n            'waccw','waccwal',\n            'waddb','waddbal',\n            'waddh','waddhal',\n            'waddw','waddwal',\n            'waddbc','waddbcal',\n            'waddhc','waddhcal',\n            'waddwc','waddwcal',\n            'waddbss','waddbssal',\n            'waddhss','waddhssal',\n            'waddwss','waddwssal',\n            'waddbus','waddbusal',\n            'waddhus','waddhusal',\n            'waddwus','waddwusal',\n            'waddsubhx','waddsubhxal',\n            'waligni','walignial',\n            'walignr0','walignr0al',\n            'walignr1','walignr1al',\n            'walignr2','walignr2al',\n            'walignr3','walignr3al',\n            'wand','wandal',\n            'wandn','wandnal',\n            'wavg2b','wavg2bal',\n            'wavg2h','wavg2hal',\n            'wavg2br','wavg2bral',\n            'wavg2hr','wavg2hral',\n            'wavg4','wavg4al',\n            'wavg4r','wavg4ral',\n            'wcmpeqb','wcmpeqbal',\n            'wcmpeqh','wcmpeqhal',\n            'wcmpeqw','wcmpeqwal',\n            'wcmpgtsb','wcmpgtsbal',\n            'wcmpgtsh','wcmpgtshal',\n            'wcmpgtsw','wcmpgtswal',\n            'wcmpgtub','wcmpgtubal',\n            'wcmpgtuh','wcmpgtuhal',\n            'wcmpgtuw','wcmpgtuwal',\n            'wldrb','wldrbal',\n            'wldrh','wldrhal',\n            'wldrw','wldrwal',\n            'wldrd','wldrdal',\n            'wmacs','wmacsal',\n            'wmacu','wmacual',\n            'wmacsz','wmacszal',\n            'wmacuz','wmacuzal',\n            'wmadds','wmaddsal',\n            'wmaddu','wmaddual',\n            'wmaddsx','wmaddsxal',\n            'wmaddux','wmadduxal',\n            'wmaddsn','wmaddsnal',\n            'wmaddun','wmaddunal',\n            'wmaxsb','wmaxsbal',\n            'wmaxsh','wmaxshal',\n            'wmaxsw','wmaxswal',\n            'wmaxub','wmaxubal',\n            'wmaxuh','wmaxuhal',\n            'wmaxuw','wmaxuwal',\n            'wmerge','wmergeal',\n            'wmiabb','wmiabbal',\n            'wmiabt','wmiabtal',\n            'wmiatb','wmiatbal',\n            'wmiatt','wmiattal',\n            'wmiabbn','wmiabbnal',\n            'wmiabtn','wmiabtnal',\n            'wmiatbn','wmiatbnal',\n            'wmiattn','wmiattnal',\n            'wmiawbb','wmiawbbal',\n            'wmiawbt','wmiawbtal',\n            'wmiawtb','wmiawtbal',\n            'wmiawtt','wmiawttal',\n            'wmiawbbn','wmiawbbnal',\n            'wmiawbtn','wmiawbtnal',\n            'wmiawtbn','wmiawtbnal',\n            'wmiawttn','wmiawttnal',\n            'wminsb','wminsbal',\n            'wminsh','wminshal',\n            'wminsw','wminswal',\n            'wminub','wminubal',\n            'wminuh','wminuhal',\n            'wminuw','wminuwal',\n            'wmov','wmoval',\n            'wmulsm','wmulsmal',\n            'wmulsl','wmulslal',\n            'wmulum','wmulumal',\n            'wmulul','wmululal',\n            'wmulsmr','wmulsmral',\n            'wmulslr','wmulslral',\n            'wmulumr','wmulumral',\n            'wmululr','wmululral',\n            'wmulwum','wmulwumal',\n            'wmulwsm','wmulwsmal',\n            'wmulwl','wmulwlal',\n            'wmulwumr','wmulwumral',\n            'wmulwsmr','wmulwsmral',\n            'wor','woral',\n            'wpackhss','wpackhssal',\n            'wpackwss','wpackwssal',\n            'wpackdss','wpackdssal',\n            'wpackhus','wpackhusal',\n            'wpackwus','wpackwusal',\n            'wpackdus','wpackdusal',\n            'wqmiabb','wqmiabbal',\n            'wqmiabt','wqmiabtal',\n            'wqmiatb','wqmiatbal',\n            'wqmiatt','wqmiattal',\n            'wqmiabbn','wqmiabbnal',\n            'wqmiabtn','wqmiabtnal',\n            'wqmiatbn','wqmiatbnal',\n            'wqmiattn','wqmiattnal',\n            'wqmulm','wqmulmal',\n            'wqmulmr','wqmulmral',\n            'wqmulwm','wqmulwmal',\n            'wqmulwmr','wqmulwmral',\n            'wrorh','wrorhal',\n            'wrorw','wrorwal',\n            'wrord','wrordal',\n            'wrorhg','wrorhgal',\n            'wrorwg','wrorwgal',\n            'wrordg','wrordgal',\n            'wsadb','wsadbal',\n            'wsadh','wsadhal',\n            'wsadbz','wsadbzal',\n            'wsadhz','wsadhzal',\n            'wshufh','wshufhal',\n            'wsllh','wsllhal',\n            'wsllw','wsllwal',\n            'wslld','wslldal',\n            'wsllhg','wsllhgal',\n            'wsllwg','wsllwgal',\n            'wslldg','wslldgal',\n            'wsrah','wsrahal',\n            'wsraw','wsrawal',\n            'wsrad','wsradal',\n            'wsrahg','wsrahgal',\n            'wsrawg','wsrawgal',\n            'wsradg','wsradgal',\n            'wsrlh','wsrlhal',\n            'wsrlw','wsrlwal',\n            'wsrld','wsrldal',\n            'wsrlhg','wsrlhgal',\n            'wsrlwg','wsrlwgal',\n            'wsrldg','wsrldgal',\n            'wstrb','wstrbal',\n            'wstrh','wstrhal',\n            'wstrw','wstrwal',\n            'wstrd','wstrdal',\n            'wsubb','wsubbal',\n            'wsubh','wsubhal',\n            'wsubw','wsubwal',\n            'wsubbss','wsubbssal',\n            'wsubhss','wsubhssal',\n            'wsubwss','wsubwssal',\n            'wsubbus','wsubbusal',\n            'wsubhus','wsubhusal',\n            'wsubwus','wsubwusal',\n            'wsubaddhx','wsubaddhxal',\n            'wunpckehsb','wunpckehsbal',\n            'wunpckehsh','wunpckehshal',\n            'wunpckehsw','wunpckehswal',\n            'wunpckehub','wunpckehubal',\n            'wunpckehuh','wunpckehuhal',\n            'wunpckehuw','wunpckehuwal',\n            'wunpckihb','wunpckihbal',\n            'wunpckihh','wunpckihhal',\n            'wunpckihw','wunpckihwal',\n            'wunpckelsb','wunpckelsbal',\n            'wunpckelsh','wunpckelshal',\n            'wunpckelsw','wunpckelswal',\n            'wunpckelub','wunpckelubal',\n            'wunpckeluh','wunpckeluhal',\n            'wunpckeluw','wunpckeluwal',\n            'wunpckilb','wunpckilbal',\n            'wunpckilh','wunpckilhal',\n            'wunpckilw','wunpckilwal',\n            'wxor','wxoral',\n            'wzero','wzeroal'\n            ),\n        /* Conditional WMMX/WMMX2 SIMD Instructions */\n        18 => array(\n            /* Conditional WMMX/WMMX2 SIMD Instructions */\n            'tandcbeq','tandcbne','tandcbcs','tandcbhs','tandcbcc','tandcblo','tandcbmi','tandcbpl','tandcbvs','tandcbvc','tandcbhi','tandcbls','tandcbge','tandcblt','tandcbgt','tandcble',\n            'tandcheq','tandchne','tandchcs','tandchhs','tandchcc','tandchlo','tandchmi','tandchpl','tandchvs','tandchvc','tandchhi','tandchls','tandchge','tandchlt','tandchgt','tandchle',\n            'tandcweq','tandcwne','tandcwcs','tandcwhs','tandcwcc','tandcwlo','tandcwmi','tandcwpl','tandcwvs','tandcwvc','tandcwhi','tandcwls','tandcwge','tandcwlt','tandcwgt','tandcwle',\n            'tbcstbeq','tbcstbne','tbcstbcs','tbcstbhs','tbcstbcc','tbcstblo','tbcstbmi','tbcstbpl','tbcstbvs','tbcstbvc','tbcstbhi','tbcstbls','tbcstbge','tbcstblt','tbcstbgt','tbcstble',\n            'tbcstheq','tbcsthne','tbcsthcs','tbcsthhs','tbcsthcc','tbcsthlo','tbcsthmi','tbcsthpl','tbcsthvs','tbcsthvc','tbcsthhi','tbcsthls','tbcsthge','tbcsthlt','tbcsthgt','tbcsthle',\n            'tbcstweq','tbcstwne','tbcstwcs','tbcstwhs','tbcstwcc','tbcstwlo','tbcstwmi','tbcstwpl','tbcstwvs','tbcstwvc','tbcstwhi','tbcstwls','tbcstwge','tbcstwlt','tbcstwgt','tbcstwle',\n            'textrcbeq','textrcbne','textrcbcs','textrcbhs','textrcbcc','textrcblo','textrcbmi','textrcbpl','textrcbvs','textrcbvc','textrcbhi','textrcbls','textrcbge','textrcblt','textrcbgt','textrcble',\n            'textrcheq','textrchne','textrchcs','textrchhs','textrchcc','textrchlo','textrchmi','textrchpl','textrchvs','textrchvc','textrchhi','textrchls','textrchge','textrchlt','textrchgt','textrchle',\n            'textrcweq','textrcwne','textrcwcs','textrcwhs','textrcwcc','textrcwlo','textrcwmi','textrcwpl','textrcwvs','textrcwvc','textrcwhi','textrcwls','textrcwge','textrcwlt','textrcwgt','textrcwle',\n            'textrmsbeq','textrmsbne','textrmsbcs','textrmsbhs','textrmsbcc','textrmsblo','textrmsbmi','textrmsbpl','textrmsbvs','textrmsbvc','textrmsbhi','textrmsbls','textrmsbge','textrmsblt','textrmsbgt','textrmsble',\n            'textrmsheq','textrmshne','textrmshcs','textrmshhs','textrmshcc','textrmshlo','textrmshmi','textrmshpl','textrmshvs','textrmshvc','textrmshhi','textrmshls','textrmshge','textrmshlt','textrmshgt','textrmshle',\n            'textrmsweq','textrmswne','textrmswcs','textrmswhs','textrmswcc','textrmswlo','textrmswmi','textrmswpl','textrmswvs','textrmswvc','textrmswhi','textrmswls','textrmswge','textrmswlt','textrmswgt','textrmswle',\n            'textrmubeq','textrmubne','textrmubcs','textrmubhs','textrmubcc','textrmublo','textrmubmi','textrmubpl','textrmubvs','textrmubvc','textrmubhi','textrmubls','textrmubge','textrmublt','textrmubgt','textrmuble',\n            'textrmuheq','textrmuhne','textrmuhcs','textrmuhhs','textrmuhcc','textrmuhlo','textrmuhmi','textrmuhpl','textrmuhvs','textrmuhvc','textrmuhhi','textrmuhls','textrmuhge','textrmuhlt','textrmuhgt','textrmuhle',\n            'textrmuweq','textrmuwne','textrmuwcs','textrmuwhs','textrmuwcc','textrmuwlo','textrmuwmi','textrmuwpl','textrmuwvs','textrmuwvc','textrmuwhi','textrmuwls','textrmuwge','textrmuwlt','textrmuwgt','textrmuwle',\n            'tinsrbeq','tinsrbne','tinsrbcs','tinsrbhs','tinsrbcc','tinsrblo','tinsrbmi','tinsrbpl','tinsrbvs','tinsrbvc','tinsrbhi','tinsrbls','tinsrbge','tinsrblt','tinsrbgt','tinsrble',\n            'tinsrheq','tinsrhne','tinsrhcs','tinsrhhs','tinsrhcc','tinsrhlo','tinsrhmi','tinsrhpl','tinsrhvs','tinsrhvc','tinsrhhi','tinsrhls','tinsrhge','tinsrhlt','tinsrhgt','tinsrhle',\n            'tinsrweq','tinsrwne','tinsrwcs','tinsrwhs','tinsrwcc','tinsrwlo','tinsrwmi','tinsrwpl','tinsrwvs','tinsrwvc','tinsrwhi','tinsrwls','tinsrwge','tinsrwlt','tinsrwgt','tinsrwle',\n            'tmcreq','tmcrne','tmcrcs','tmcrhs','tmcrcc','tmcrlo','tmcrmi','tmcrpl','tmcrvs','tmcrvc','tmcrhi','tmcrls','tmcrge','tmcrlt','tmcrgt','tmcrle',\n            'tmcrreq','tmcrrne','tmcrrcs','tmcrrhs','tmcrrcc','tmcrrlo','tmcrrmi','tmcrrpl','tmcrrvs','tmcrrvc','tmcrrhi','tmcrrls','tmcrrge','tmcrrlt','tmcrrgt','tmcrrle',\n            'tmiaeq','tmiane','tmiacs','tmiahs','tmiacc','tmialo','tmiami','tmiapl','tmiavs','tmiavc','tmiahi','tmials','tmiage','tmialt','tmiagt','tmiale',\n            'tmiapheq','tmiaphne','tmiaphcs','tmiaphhs','tmiaphcc','tmiaphlo','tmiaphmi','tmiaphpl','tmiaphvs','tmiaphvc','tmiaphhi','tmiaphls','tmiaphge','tmiaphlt','tmiaphgt','tmiaphle',\n            'tmiabbeq','tmiabbne','tmiabbcs','tmiabbhs','tmiabbcc','tmiabblo','tmiabbmi','tmiabbpl','tmiabbvs','tmiabbvc','tmiabbhi','tmiabbls','tmiabbge','tmiabblt','tmiabbgt','tmiabble',\n            'tmiabteq','tmiabtne','tmiabtcs','tmiabths','tmiabtcc','tmiabtlo','tmiabtmi','tmiabtpl','tmiabtvs','tmiabtvc','tmiabthi','tmiabtls','tmiabtge','tmiabtlt','tmiabtgt','tmiabtle',\n            'tmiatbeq','tmiatbne','tmiatbcs','tmiatbhs','tmiatbcc','tmiatblo','tmiatbmi','tmiatbpl','tmiatbvs','tmiatbvc','tmiatbhi','tmiatbls','tmiatbge','tmiatblt','tmiatbgt','tmiatble',\n            'tmiatteq','tmiattne','tmiattcs','tmiatths','tmiattcc','tmiattlo','tmiattmi','tmiattpl','tmiattvs','tmiattvc','tmiatthi','tmiattls','tmiattge','tmiattlt','tmiattgt','tmiattle',\n            'tmovmskbeq','tmovmskbne','tmovmskbcs','tmovmskbhs','tmovmskbcc','tmovmskblo','tmovmskbmi','tmovmskbpl','tmovmskbvs','tmovmskbvc','tmovmskbhi','tmovmskbls','tmovmskbge','tmovmskblt','tmovmskbgt','tmovmskble',\n            'tmovmskheq','tmovmskhne','tmovmskhcs','tmovmskhhs','tmovmskhcc','tmovmskhlo','tmovmskhmi','tmovmskhpl','tmovmskhvs','tmovmskhvc','tmovmskhhi','tmovmskhls','tmovmskhge','tmovmskhlt','tmovmskhgt','tmovmskhle',\n            'tmovmskweq','tmovmskwne','tmovmskwcs','tmovmskwhs','tmovmskwcc','tmovmskwlo','tmovmskwmi','tmovmskwpl','tmovmskwvs','tmovmskwvc','tmovmskwhi','tmovmskwls','tmovmskwge','tmovmskwlt','tmovmskwgt','tmovmskwle',\n            'tmrceq','tmrcne','tmrccs','tmrchs','tmrccc','tmrclo','tmrcmi','tmrcpl','tmrcvs','tmrcvc','tmrchi','tmrcls','tmrcge','tmrclt','tmrcgt','tmrcle',\n            'tmrrceq','tmrrcne','tmrrccs','tmrrchs','tmrrccc','tmrrclo','tmrrcmi','tmrrcpl','tmrrcvs','tmrrcvc','tmrrchi','tmrrcls','tmrrcge','tmrrclt','tmrrcgt','tmrrcle',\n            'torcbeq','torcbne','torcbcs','torcbhs','torcbcc','torcblo','torcbmi','torcbpl','torcbvs','torcbvc','torcbhi','torcbls','torcbge','torcblt','torcbgt','torcble',\n            'torcheq','torchne','torchcs','torchhs','torchcc','torchlo','torchmi','torchpl','torchvs','torchvc','torchhi','torchls','torchge','torchlt','torchgt','torchle',\n            'torcweq','torcwne','torcwcs','torcwhs','torcwcc','torcwlo','torcwmi','torcwpl','torcwvs','torcwvc','torcwhi','torcwls','torcwge','torcwlt','torcwgt','torcwle',\n            'torvscbeq','torvscbne','torvscbcs','torvscbhs','torvscbcc','torvscblo','torvscbmi','torvscbpl','torvscbvs','torvscbvc','torvscbhi','torvscbls','torvscbge','torvscblt','torvscbgt','torvscble',\n            'torvscheq','torvschne','torvschcs','torvschhs','torvschcc','torvschlo','torvschmi','torvschpl','torvschvs','torvschvc','torvschhi','torvschls','torvschge','torvschlt','torvschgt','torvschle',\n            'torvscweq','torvscwne','torvscwcs','torvscwhs','torvscwcc','torvscwlo','torvscwmi','torvscwpl','torvscwvs','torvscwvc','torvscwhi','torvscwls','torvscwge','torvscwlt','torvscwgt','torvscwle',\n            'wabsbeq','wabsbne','wabsbcs','wabsbhs','wabsbcc','wabsblo','wabsbmi','wabsbpl','wabsbvs','wabsbvc','wabsbhi','wabsbls','wabsbge','wabsblt','wabsbgt','wabsble',\n            'wabsheq','wabshne','wabshcs','wabshhs','wabshcc','wabshlo','wabshmi','wabshpl','wabshvs','wabshvc','wabshhi','wabshls','wabshge','wabshlt','wabshgt','wabshle',\n            'wabsweq','wabswne','wabswcs','wabswhs','wabswcc','wabswlo','wabswmi','wabswpl','wabswvs','wabswvc','wabswhi','wabswls','wabswge','wabswlt','wabswgt','wabswle',\n            'wabsdiffbeq','wabsdiffbne','wabsdiffbcs','wabsdiffbhs','wabsdiffbcc','wabsdiffblo','wabsdiffbmi','wabsdiffbpl','wabsdiffbvs','wabsdiffbvc','wabsdiffbhi','wabsdiffbls','wabsdiffbge','wabsdiffblt','wabsdiffbgt','wabsdiffble',\n            'wabsdiffheq','wabsdiffhne','wabsdiffhcs','wabsdiffhhs','wabsdiffhcc','wabsdiffhlo','wabsdiffhmi','wabsdiffhpl','wabsdiffhvs','wabsdiffhvc','wabsdiffhhi','wabsdiffhls','wabsdiffhge','wabsdiffhlt','wabsdiffhgt','wabsdiffhle',\n            'wabsdiffweq','wabsdiffwne','wabsdiffwcs','wabsdiffwhs','wabsdiffwcc','wabsdiffwlo','wabsdiffwmi','wabsdiffwpl','wabsdiffwvs','wabsdiffwvc','wabsdiffwhi','wabsdiffwls','wabsdiffwge','wabsdiffwlt','wabsdiffwgt','wabsdiffwle',\n            'waccbeq','waccbne','waccbcs','waccbhs','waccbcc','waccblo','waccbmi','waccbpl','waccbvs','waccbvc','waccbhi','waccbls','waccbge','waccblt','waccbgt','waccble',\n            'waccheq','wacchne','wacchcs','wacchhs','wacchcc','wacchlo','wacchmi','wacchpl','wacchvs','wacchvc','wacchhi','wacchls','wacchge','wacchlt','wacchgt','wacchle',\n            'waccweq','waccwne','waccwcs','waccwhs','waccwcc','waccwlo','waccwmi','waccwpl','waccwvs','waccwvc','waccwhi','waccwls','waccwge','waccwlt','waccwgt','waccwle',\n            'waddbeq','waddbne','waddbcs','waddbhs','waddbcc','waddblo','waddbmi','waddbpl','waddbvs','waddbvc','waddbhi','waddbls','waddbge','waddblt','waddbgt','waddble',\n            'waddheq','waddhne','waddhcs','waddhhs','waddhcc','waddhlo','waddhmi','waddhpl','waddhvs','waddhvc','waddhhi','waddhls','waddhge','waddhlt','waddhgt','waddhle',\n            'waddweq','waddwne','waddwcs','waddwhs','waddwcc','waddwlo','waddwmi','waddwpl','waddwvs','waddwvc','waddwhi','waddwls','waddwge','waddwlt','waddwgt','waddwle',\n            'waddbceq','waddbcne','waddbccs','waddbchs','waddbccc','waddbclo','waddbcmi','waddbcpl','waddbcvs','waddbcvc','waddbchi','waddbcls','waddbcge','waddbclt','waddbcgt','waddbcle',\n            'waddhceq','waddhcne','waddhccs','waddhchs','waddhccc','waddhclo','waddhcmi','waddhcpl','waddhcvs','waddhcvc','waddhchi','waddhcls','waddhcge','waddhclt','waddhcgt','waddhcle',\n            'waddwceq','waddwcne','waddwccs','waddwchs','waddwccc','waddwclo','waddwcmi','waddwcpl','waddwcvs','waddwcvc','waddwchi','waddwcls','waddwcge','waddwclt','waddwcgt','waddwcle',\n            'waddbsseq','waddbssne','waddbsscs','waddbsshs','waddbsscc','waddbsslo','waddbssmi','waddbsspl','waddbssvs','waddbssvc','waddbsshi','waddbssls','waddbssge','waddbsslt','waddbssgt','waddbssle',\n            'waddhsseq','waddhssne','waddhsscs','waddhsshs','waddhsscc','waddhsslo','waddhssmi','waddhsspl','waddhssvs','waddhssvc','waddhsshi','waddhssls','waddhssge','waddhsslt','waddhssgt','waddhssle',\n            'waddwsseq','waddwssne','waddwsscs','waddwsshs','waddwsscc','waddwsslo','waddwssmi','waddwsspl','waddwssvs','waddwssvc','waddwsshi','waddwssls','waddwssge','waddwsslt','waddwssgt','waddwssle',\n            'waddbuseq','waddbusne','waddbuscs','waddbushs','waddbuscc','waddbuslo','waddbusmi','waddbuspl','waddbusvs','waddbusvc','waddbushi','waddbusls','waddbusge','waddbuslt','waddbusgt','waddbusle',\n            'waddhuseq','waddhusne','waddhuscs','waddhushs','waddhuscc','waddhuslo','waddhusmi','waddhuspl','waddhusvs','waddhusvc','waddhushi','waddhusls','waddhusge','waddhuslt','waddhusgt','waddhusle',\n            'waddwuseq','waddwusne','waddwuscs','waddwushs','waddwuscc','waddwuslo','waddwusmi','waddwuspl','waddwusvs','waddwusvc','waddwushi','waddwusls','waddwusge','waddwuslt','waddwusgt','waddwusle',\n            'waddsubhxeq','waddsubhxne','waddsubhxcs','waddsubhxhs','waddsubhxcc','waddsubhxlo','waddsubhxmi','waddsubhxpl','waddsubhxvs','waddsubhxvc','waddsubhxhi','waddsubhxls','waddsubhxge','waddsubhxlt','waddsubhxgt','waddsubhxle',\n            'walignieq','walignine','walignics','walignihs','walignicc','walignilo','walignimi','walignipl','walignivs','walignivc','walignihi','walignils','walignige','walignilt','walignigt','walignile',\n            'walignr0eq','walignr0ne','walignr0cs','walignr0hs','walignr0cc','walignr0lo','walignr0mi','walignr0pl','walignr0vs','walignr0vc','walignr0hi','walignr0ls','walignr0ge','walignr0lt','walignr0gt','walignr0le',\n            'walignr1eq','walignr1ne','walignr1cs','walignr1hs','walignr1cc','walignr1lo','walignr1mi','walignr1pl','walignr1vs','walignr1vc','walignr1hi','walignr1ls','walignr1ge','walignr1lt','walignr1gt','walignr1le',\n            'walignr2eq','walignr2ne','walignr2cs','walignr2hs','walignr2cc','walignr2lo','walignr2mi','walignr2pl','walignr2vs','walignr2vc','walignr2hi','walignr2ls','walignr2ge','walignr2lt','walignr2gt','walignr2le',\n            'walignr3eq','walignr3ne','walignr3cs','walignr3hs','walignr3cc','walignr3lo','walignr3mi','walignr3pl','walignr3vs','walignr3vc','walignr3hi','walignr3ls','walignr3ge','walignr3lt','walignr3gt','walignr3le',\n            'wandeq','wandne','wandcs','wandhs','wandcc','wandlo','wandmi','wandpl','wandvs','wandvc','wandhi','wandls','wandge','wandlt','wandgt','wandle',\n            'wandneq','wandnne','wandncs','wandnhs','wandncc','wandnlo','wandnmi','wandnpl','wandnvs','wandnvc','wandnhi','wandnls','wandnge','wandnlt','wandngt','wandnle',\n            'wavg2beq','wavg2bne','wavg2bcs','wavg2bhs','wavg2bcc','wavg2blo','wavg2bmi','wavg2bpl','wavg2bvs','wavg2bvc','wavg2bhi','wavg2bls','wavg2bge','wavg2blt','wavg2bgt','wavg2ble',\n            'wavg2heq','wavg2hne','wavg2hcs','wavg2hhs','wavg2hcc','wavg2hlo','wavg2hmi','wavg2hpl','wavg2hvs','wavg2hvc','wavg2hhi','wavg2hls','wavg2hge','wavg2hlt','wavg2hgt','wavg2hle',\n            'wavg2breq','wavg2brne','wavg2brcs','wavg2brhs','wavg2brcc','wavg2brlo','wavg2brmi','wavg2brpl','wavg2brvs','wavg2brvc','wavg2brhi','wavg2brls','wavg2brge','wavg2brlt','wavg2brgt','wavg2brle',\n            'wavg2hreq','wavg2hrne','wavg2hrcs','wavg2hrhs','wavg2hrcc','wavg2hrlo','wavg2hrmi','wavg2hrpl','wavg2hrvs','wavg2hrvc','wavg2hrhi','wavg2hrls','wavg2hrge','wavg2hrlt','wavg2hrgt','wavg2hrle',\n            'wavg4eq','wavg4ne','wavg4cs','wavg4hs','wavg4cc','wavg4lo','wavg4mi','wavg4pl','wavg4vs','wavg4vc','wavg4hi','wavg4ls','wavg4ge','wavg4lt','wavg4gt','wavg4le',\n            'wavg4req','wavg4rne','wavg4rcs','wavg4rhs','wavg4rcc','wavg4rlo','wavg4rmi','wavg4rpl','wavg4rvs','wavg4rvc','wavg4rhi','wavg4rls','wavg4rge','wavg4rlt','wavg4rgt','wavg4rle',\n            'wcmpeqbeq','wcmpeqbne','wcmpeqbcs','wcmpeqbhs','wcmpeqbcc','wcmpeqblo','wcmpeqbmi','wcmpeqbpl','wcmpeqbvs','wcmpeqbvc','wcmpeqbhi','wcmpeqbls','wcmpeqbge','wcmpeqblt','wcmpeqbgt','wcmpeqble',\n            'wcmpeqheq','wcmpeqhne','wcmpeqhcs','wcmpeqhhs','wcmpeqhcc','wcmpeqhlo','wcmpeqhmi','wcmpeqhpl','wcmpeqhvs','wcmpeqhvc','wcmpeqhhi','wcmpeqhls','wcmpeqhge','wcmpeqhlt','wcmpeqhgt','wcmpeqhle',\n            'wcmpeqweq','wcmpeqwne','wcmpeqwcs','wcmpeqwhs','wcmpeqwcc','wcmpeqwlo','wcmpeqwmi','wcmpeqwpl','wcmpeqwvs','wcmpeqwvc','wcmpeqwhi','wcmpeqwls','wcmpeqwge','wcmpeqwlt','wcmpeqwgt','wcmpeqwle',\n            'wcmpgtsbeq','wcmpgtsbne','wcmpgtsbcs','wcmpgtsbhs','wcmpgtsbcc','wcmpgtsblo','wcmpgtsbmi','wcmpgtsbpl','wcmpgtsbvs','wcmpgtsbvc','wcmpgtsbhi','wcmpgtsbls','wcmpgtsbge','wcmpgtsblt','wcmpgtsbgt','wcmpgtsble',\n            'wcmpgtsheq','wcmpgtshne','wcmpgtshcs','wcmpgtshhs','wcmpgtshcc','wcmpgtshlo','wcmpgtshmi','wcmpgtshpl','wcmpgtshvs','wcmpgtshvc','wcmpgtshhi','wcmpgtshls','wcmpgtshge','wcmpgtshlt','wcmpgtshgt','wcmpgtshle',\n            'wcmpgtsweq','wcmpgtswne','wcmpgtswcs','wcmpgtswhs','wcmpgtswcc','wcmpgtswlo','wcmpgtswmi','wcmpgtswpl','wcmpgtswvs','wcmpgtswvc','wcmpgtswhi','wcmpgtswls','wcmpgtswge','wcmpgtswlt','wcmpgtswgt','wcmpgtswle',\n            'wcmpgtubeq','wcmpgtubne','wcmpgtubcs','wcmpgtubhs','wcmpgtubcc','wcmpgtublo','wcmpgtubmi','wcmpgtubpl','wcmpgtubvs','wcmpgtubvc','wcmpgtubhi','wcmpgtubls','wcmpgtubge','wcmpgtublt','wcmpgtubgt','wcmpgtuble',\n            'wcmpgtuheq','wcmpgtuhne','wcmpgtuhcs','wcmpgtuhhs','wcmpgtuhcc','wcmpgtuhlo','wcmpgtuhmi','wcmpgtuhpl','wcmpgtuhvs','wcmpgtuhvc','wcmpgtuhhi','wcmpgtuhls','wcmpgtuhge','wcmpgtuhlt','wcmpgtuhgt','wcmpgtuhle',\n            'wcmpgtuweq','wcmpgtuwne','wcmpgtuwcs','wcmpgtuwhs','wcmpgtuwcc','wcmpgtuwlo','wcmpgtuwmi','wcmpgtuwpl','wcmpgtuwvs','wcmpgtuwvc','wcmpgtuwhi','wcmpgtuwls','wcmpgtuwge','wcmpgtuwlt','wcmpgtuwgt','wcmpgtuwle',\n            'wldrbeq','wldrbne','wldrbcs','wldrbhs','wldrbcc','wldrblo','wldrbmi','wldrbpl','wldrbvs','wldrbvc','wldrbhi','wldrbls','wldrbge','wldrblt','wldrbgt','wldrble',\n            'wldrheq','wldrhne','wldrhcs','wldrhhs','wldrhcc','wldrhlo','wldrhmi','wldrhpl','wldrhvs','wldrhvc','wldrhhi','wldrhls','wldrhge','wldrhlt','wldrhgt','wldrhle',\n            'wldrweq','wldrwne','wldrwcs','wldrwhs','wldrwcc','wldrwlo','wldrwmi','wldrwpl','wldrwvs','wldrwvc','wldrwhi','wldrwls','wldrwge','wldrwlt','wldrwgt','wldrwle',\n            'wldrdeq','wldrdne','wldrdcs','wldrdhs','wldrdcc','wldrdlo','wldrdmi','wldrdpl','wldrdvs','wldrdvc','wldrdhi','wldrdls','wldrdge','wldrdlt','wldrdgt','wldrdle',\n            'wmacseq','wmacsne','wmacscs','wmacshs','wmacscc','wmacslo','wmacsmi','wmacspl','wmacsvs','wmacsvc','wmacshi','wmacsls','wmacsge','wmacslt','wmacsgt','wmacsle',\n            'wmacueq','wmacune','wmacucs','wmacuhs','wmacucc','wmaculo','wmacumi','wmacupl','wmacuvs','wmacuvc','wmacuhi','wmaculs','wmacuge','wmacult','wmacugt','wmacule',\n            'wmacszeq','wmacszne','wmacszcs','wmacszhs','wmacszcc','wmacszlo','wmacszmi','wmacszpl','wmacszvs','wmacszvc','wmacszhi','wmacszls','wmacszge','wmacszlt','wmacszgt','wmacszle',\n            'wmacuzeq','wmacuzne','wmacuzcs','wmacuzhs','wmacuzcc','wmacuzlo','wmacuzmi','wmacuzpl','wmacuzvs','wmacuzvc','wmacuzhi','wmacuzls','wmacuzge','wmacuzlt','wmacuzgt','wmacuzle',\n            'wmaddseq','wmaddsne','wmaddscs','wmaddshs','wmaddscc','wmaddslo','wmaddsmi','wmaddspl','wmaddsvs','wmaddsvc','wmaddshi','wmaddsls','wmaddsge','wmaddslt','wmaddsgt','wmaddsle',\n            'wmaddueq','wmaddune','wmadducs','wmadduhs','wmadducc','wmaddulo','wmaddumi','wmaddupl','wmadduvs','wmadduvc','wmadduhi','wmadduls','wmadduge','wmaddult','wmaddugt','wmaddule',\n            'wmaddsxeq','wmaddsxne','wmaddsxcs','wmaddsxhs','wmaddsxcc','wmaddsxlo','wmaddsxmi','wmaddsxpl','wmaddsxvs','wmaddsxvc','wmaddsxhi','wmaddsxls','wmaddsxge','wmaddsxlt','wmaddsxgt','wmaddsxle',\n            'wmadduxeq','wmadduxne','wmadduxcs','wmadduxhs','wmadduxcc','wmadduxlo','wmadduxmi','wmadduxpl','wmadduxvs','wmadduxvc','wmadduxhi','wmadduxls','wmadduxge','wmadduxlt','wmadduxgt','wmadduxle',\n            'wmaddsneq','wmaddsnne','wmaddsncs','wmaddsnhs','wmaddsncc','wmaddsnlo','wmaddsnmi','wmaddsnpl','wmaddsnvs','wmaddsnvc','wmaddsnhi','wmaddsnls','wmaddsnge','wmaddsnlt','wmaddsngt','wmaddsnle',\n            'wmadduneq','wmaddunne','wmadduncs','wmaddunhs','wmadduncc','wmaddunlo','wmaddunmi','wmaddunpl','wmaddunvs','wmaddunvc','wmaddunhi','wmaddunls','wmaddunge','wmaddunlt','wmaddungt','wmaddunle',\n            'wmaxsbeq','wmaxsbne','wmaxsbcs','wmaxsbhs','wmaxsbcc','wmaxsblo','wmaxsbmi','wmaxsbpl','wmaxsbvs','wmaxsbvc','wmaxsbhi','wmaxsbls','wmaxsbge','wmaxsblt','wmaxsbgt','wmaxsble',\n            'wmaxsheq','wmaxshne','wmaxshcs','wmaxshhs','wmaxshcc','wmaxshlo','wmaxshmi','wmaxshpl','wmaxshvs','wmaxshvc','wmaxshhi','wmaxshls','wmaxshge','wmaxshlt','wmaxshgt','wmaxshle',\n            'wmaxsweq','wmaxswne','wmaxswcs','wmaxswhs','wmaxswcc','wmaxswlo','wmaxswmi','wmaxswpl','wmaxswvs','wmaxswvc','wmaxswhi','wmaxswls','wmaxswge','wmaxswlt','wmaxswgt','wmaxswle',\n            'wmaxubeq','wmaxubne','wmaxubcs','wmaxubhs','wmaxubcc','wmaxublo','wmaxubmi','wmaxubpl','wmaxubvs','wmaxubvc','wmaxubhi','wmaxubls','wmaxubge','wmaxublt','wmaxubgt','wmaxuble',\n            'wmaxuheq','wmaxuhne','wmaxuhcs','wmaxuhhs','wmaxuhcc','wmaxuhlo','wmaxuhmi','wmaxuhpl','wmaxuhvs','wmaxuhvc','wmaxuhhi','wmaxuhls','wmaxuhge','wmaxuhlt','wmaxuhgt','wmaxuhle',\n            'wmaxuweq','wmaxuwne','wmaxuwcs','wmaxuwhs','wmaxuwcc','wmaxuwlo','wmaxuwmi','wmaxuwpl','wmaxuwvs','wmaxuwvc','wmaxuwhi','wmaxuwls','wmaxuwge','wmaxuwlt','wmaxuwgt','wmaxuwle',\n            'wmergeeq','wmergene','wmergecs','wmergehs','wmergecc','wmergelo','wmergemi','wmergepl','wmergevs','wmergevc','wmergehi','wmergels','wmergege','wmergelt','wmergegt','wmergele',\n            'wmiabbeq','wmiabbne','wmiabbcs','wmiabbhs','wmiabbcc','wmiabblo','wmiabbmi','wmiabbpl','wmiabbvs','wmiabbvc','wmiabbhi','wmiabbls','wmiabbge','wmiabblt','wmiabbgt','wmiabble',\n            'wmiabteq','wmiabtne','wmiabtcs','wmiabths','wmiabtcc','wmiabtlo','wmiabtmi','wmiabtpl','wmiabtvs','wmiabtvc','wmiabthi','wmiabtls','wmiabtge','wmiabtlt','wmiabtgt','wmiabtle',\n            'wmiatbeq','wmiatbne','wmiatbcs','wmiatbhs','wmiatbcc','wmiatblo','wmiatbmi','wmiatbpl','wmiatbvs','wmiatbvc','wmiatbhi','wmiatbls','wmiatbge','wmiatblt','wmiatbgt','wmiatble',\n            'wmiatteq','wmiattne','wmiattcs','wmiatths','wmiattcc','wmiattlo','wmiattmi','wmiattpl','wmiattvs','wmiattvc','wmiatthi','wmiattls','wmiattge','wmiattlt','wmiattgt','wmiattle',\n            'wmiabbneq','wmiabbnne','wmiabbncs','wmiabbnhs','wmiabbncc','wmiabbnlo','wmiabbnmi','wmiabbnpl','wmiabbnvs','wmiabbnvc','wmiabbnhi','wmiabbnls','wmiabbnge','wmiabbnlt','wmiabbngt','wmiabbnle',\n            'wmiabtneq','wmiabtnne','wmiabtncs','wmiabtnhs','wmiabtncc','wmiabtnlo','wmiabtnmi','wmiabtnpl','wmiabtnvs','wmiabtnvc','wmiabtnhi','wmiabtnls','wmiabtnge','wmiabtnlt','wmiabtngt','wmiabtnle',\n            'wmiatbneq','wmiatbnne','wmiatbncs','wmiatbnhs','wmiatbncc','wmiatbnlo','wmiatbnmi','wmiatbnpl','wmiatbnvs','wmiatbnvc','wmiatbnhi','wmiatbnls','wmiatbnge','wmiatbnlt','wmiatbngt','wmiatbnle',\n            'wmiattneq','wmiattnne','wmiattncs','wmiattnhs','wmiattncc','wmiattnlo','wmiattnmi','wmiattnpl','wmiattnvs','wmiattnvc','wmiattnhi','wmiattnls','wmiattnge','wmiattnlt','wmiattngt','wmiattnle',\n            'wmiawbbeq','wmiawbbne','wmiawbbcs','wmiawbbhs','wmiawbbcc','wmiawbblo','wmiawbbmi','wmiawbbpl','wmiawbbvs','wmiawbbvc','wmiawbbhi','wmiawbbls','wmiawbbge','wmiawbblt','wmiawbbgt','wmiawbble',\n            'wmiawbteq','wmiawbtne','wmiawbtcs','wmiawbths','wmiawbtcc','wmiawbtlo','wmiawbtmi','wmiawbtpl','wmiawbtvs','wmiawbtvc','wmiawbthi','wmiawbtls','wmiawbtge','wmiawbtlt','wmiawbtgt','wmiawbtle',\n            'wmiawtbeq','wmiawtbne','wmiawtbcs','wmiawtbhs','wmiawtbcc','wmiawtblo','wmiawtbmi','wmiawtbpl','wmiawtbvs','wmiawtbvc','wmiawtbhi','wmiawtbls','wmiawtbge','wmiawtblt','wmiawtbgt','wmiawtble',\n            'wmiawtteq','wmiawttne','wmiawttcs','wmiawtths','wmiawttcc','wmiawttlo','wmiawttmi','wmiawttpl','wmiawttvs','wmiawttvc','wmiawtthi','wmiawttls','wmiawttge','wmiawttlt','wmiawttgt','wmiawttle',\n            'wmiawbbneq','wmiawbbnne','wmiawbbncs','wmiawbbnhs','wmiawbbncc','wmiawbbnlo','wmiawbbnmi','wmiawbbnpl','wmiawbbnvs','wmiawbbnvc','wmiawbbnhi','wmiawbbnls','wmiawbbnge','wmiawbbnlt','wmiawbbngt','wmiawbbnle',\n            'wmiawbtneq','wmiawbtnne','wmiawbtncs','wmiawbtnhs','wmiawbtncc','wmiawbtnlo','wmiawbtnmi','wmiawbtnpl','wmiawbtnvs','wmiawbtnvc','wmiawbtnhi','wmiawbtnls','wmiawbtnge','wmiawbtnlt','wmiawbtngt','wmiawbtnle',\n            'wmiawtbneq','wmiawtbnne','wmiawtbncs','wmiawtbnhs','wmiawtbncc','wmiawtbnlo','wmiawtbnmi','wmiawtbnpl','wmiawtbnvs','wmiawtbnvc','wmiawtbnhi','wmiawtbnls','wmiawtbnge','wmiawtbnlt','wmiawtbngt','wmiawtbnle',\n            'wmiawttneq','wmiawttnne','wmiawttncs','wmiawttnhs','wmiawttncc','wmiawttnlo','wmiawttnmi','wmiawttnpl','wmiawttnvs','wmiawttnvc','wmiawttnhi','wmiawttnls','wmiawttnge','wmiawttnlt','wmiawttngt','wmiawttnle',\n            'wminsbeq','wminsbne','wminsbcs','wminsbhs','wminsbcc','wminsblo','wminsbmi','wminsbpl','wminsbvs','wminsbvc','wminsbhi','wminsbls','wminsbge','wminsblt','wminsbgt','wminsble',\n            'wminsheq','wminshne','wminshcs','wminshhs','wminshcc','wminshlo','wminshmi','wminshpl','wminshvs','wminshvc','wminshhi','wminshls','wminshge','wminshlt','wminshgt','wminshle',\n            'wminsweq','wminswne','wminswcs','wminswhs','wminswcc','wminswlo','wminswmi','wminswpl','wminswvs','wminswvc','wminswhi','wminswls','wminswge','wminswlt','wminswgt','wminswle',\n            'wminubeq','wminubne','wminubcs','wminubhs','wminubcc','wminublo','wminubmi','wminubpl','wminubvs','wminubvc','wminubhi','wminubls','wminubge','wminublt','wminubgt','wminuble',\n            'wminuheq','wminuhne','wminuhcs','wminuhhs','wminuhcc','wminuhlo','wminuhmi','wminuhpl','wminuhvs','wminuhvc','wminuhhi','wminuhls','wminuhge','wminuhlt','wminuhgt','wminuhle',\n            'wminuweq','wminuwne','wminuwcs','wminuwhs','wminuwcc','wminuwlo','wminuwmi','wminuwpl','wminuwvs','wminuwvc','wminuwhi','wminuwls','wminuwge','wminuwlt','wminuwgt','wminuwle',\n            'wmoveq','wmovne','wmovcs','wmovhs','wmovcc','wmovlo','wmovmi','wmovpl','wmovvs','wmovvc','wmovhi','wmovls','wmovge','wmovlt','wmovgt','wmovle',\n            'wmulsmeq','wmulsmne','wmulsmcs','wmulsmhs','wmulsmcc','wmulsmlo','wmulsmmi','wmulsmpl','wmulsmvs','wmulsmvc','wmulsmhi','wmulsmls','wmulsmge','wmulsmlt','wmulsmgt','wmulsmle',\n            'wmulsleq','wmulslne','wmulslcs','wmulslhs','wmulslcc','wmulsllo','wmulslmi','wmulslpl','wmulslvs','wmulslvc','wmulslhi','wmulslls','wmulslge','wmulsllt','wmulslgt','wmulslle',\n            'wmulumeq','wmulumne','wmulumcs','wmulumhs','wmulumcc','wmulumlo','wmulummi','wmulumpl','wmulumvs','wmulumvc','wmulumhi','wmulumls','wmulumge','wmulumlt','wmulumgt','wmulumle',\n            'wmululeq','wmululne','wmululcs','wmululhs','wmululcc','wmulullo','wmululmi','wmululpl','wmululvs','wmululvc','wmululhi','wmululls','wmululge','wmulullt','wmululgt','wmululle',\n            'wmulsmreq','wmulsmrne','wmulsmrcs','wmulsmrhs','wmulsmrcc','wmulsmrlo','wmulsmrmi','wmulsmrpl','wmulsmrvs','wmulsmrvc','wmulsmrhi','wmulsmrls','wmulsmrge','wmulsmrlt','wmulsmrgt','wmulsmrle',\n            'wmulslreq','wmulslrne','wmulslrcs','wmulslrhs','wmulslrcc','wmulslrlo','wmulslrmi','wmulslrpl','wmulslrvs','wmulslrvc','wmulslrhi','wmulslrls','wmulslrge','wmulslrlt','wmulslrgt','wmulslrle',\n            'wmulumreq','wmulumrne','wmulumrcs','wmulumrhs','wmulumrcc','wmulumrlo','wmulumrmi','wmulumrpl','wmulumrvs','wmulumrvc','wmulumrhi','wmulumrls','wmulumrge','wmulumrlt','wmulumrgt','wmulumrle',\n            'wmululreq','wmululrne','wmululrcs','wmululrhs','wmululrcc','wmululrlo','wmululrmi','wmululrpl','wmululrvs','wmululrvc','wmululrhi','wmululrls','wmululrge','wmululrlt','wmululrgt','wmululrle',\n            'wmulwumeq','wmulwumne','wmulwumcs','wmulwumhs','wmulwumcc','wmulwumlo','wmulwummi','wmulwumpl','wmulwumvs','wmulwumvc','wmulwumhi','wmulwumls','wmulwumge','wmulwumlt','wmulwumgt','wmulwumle',\n            'wmulwsmeq','wmulwsmne','wmulwsmcs','wmulwsmhs','wmulwsmcc','wmulwsmlo','wmulwsmmi','wmulwsmpl','wmulwsmvs','wmulwsmvc','wmulwsmhi','wmulwsmls','wmulwsmge','wmulwsmlt','wmulwsmgt','wmulwsmle',\n            'wmulwleq','wmulwlne','wmulwlcs','wmulwlhs','wmulwlcc','wmulwllo','wmulwlmi','wmulwlpl','wmulwlvs','wmulwlvc','wmulwlhi','wmulwlls','wmulwlge','wmulwllt','wmulwlgt','wmulwlle',\n            'wmulwumreq','wmulwumrne','wmulwumrcs','wmulwumrhs','wmulwumrcc','wmulwumrlo','wmulwumrmi','wmulwumrpl','wmulwumrvs','wmulwumrvc','wmulwumrhi','wmulwumrls','wmulwumrge','wmulwumrlt','wmulwumrgt','wmulwumrle',\n            'wmulwsmreq','wmulwsmrne','wmulwsmrcs','wmulwsmrhs','wmulwsmrcc','wmulwsmrlo','wmulwsmrmi','wmulwsmrpl','wmulwsmrvs','wmulwsmrvc','wmulwsmrhi','wmulwsmrls','wmulwsmrge','wmulwsmrlt','wmulwsmrgt','wmulwsmrle',\n            'woreq','worne','worcs','worhs','worcc','worlo','wormi','worpl','worvs','worvc','worhi','worls','worge','worlt','worgt','worle',\n            'wpackhsseq','wpackhssne','wpackhsscs','wpackhsshs','wpackhsscc','wpackhsslo','wpackhssmi','wpackhsspl','wpackhssvs','wpackhssvc','wpackhsshi','wpackhssls','wpackhssge','wpackhsslt','wpackhssgt','wpackhssle',\n            'wpackwsseq','wpackwssne','wpackwsscs','wpackwsshs','wpackwsscc','wpackwsslo','wpackwssmi','wpackwsspl','wpackwssvs','wpackwssvc','wpackwsshi','wpackwssls','wpackwssge','wpackwsslt','wpackwssgt','wpackwssle',\n            'wpackdsseq','wpackdssne','wpackdsscs','wpackdsshs','wpackdsscc','wpackdsslo','wpackdssmi','wpackdsspl','wpackdssvs','wpackdssvc','wpackdsshi','wpackdssls','wpackdssge','wpackdsslt','wpackdssgt','wpackdssle',\n            'wpackhuseq','wpackhusne','wpackhuscs','wpackhushs','wpackhuscc','wpackhuslo','wpackhusmi','wpackhuspl','wpackhusvs','wpackhusvc','wpackhushi','wpackhusls','wpackhusge','wpackhuslt','wpackhusgt','wpackhusle',\n            'wpackwuseq','wpackwusne','wpackwuscs','wpackwushs','wpackwuscc','wpackwuslo','wpackwusmi','wpackwuspl','wpackwusvs','wpackwusvc','wpackwushi','wpackwusls','wpackwusge','wpackwuslt','wpackwusgt','wpackwusle',\n            'wpackduseq','wpackdusne','wpackduscs','wpackdushs','wpackduscc','wpackduslo','wpackdusmi','wpackduspl','wpackdusvs','wpackdusvc','wpackdushi','wpackdusls','wpackdusge','wpackduslt','wpackdusgt','wpackdusle',\n            'wqmiabbeq','wqmiabbne','wqmiabbcs','wqmiabbhs','wqmiabbcc','wqmiabblo','wqmiabbmi','wqmiabbpl','wqmiabbvs','wqmiabbvc','wqmiabbhi','wqmiabbls','wqmiabbge','wqmiabblt','wqmiabbgt','wqmiabble',\n            'wqmiabteq','wqmiabtne','wqmiabtcs','wqmiabths','wqmiabtcc','wqmiabtlo','wqmiabtmi','wqmiabtpl','wqmiabtvs','wqmiabtvc','wqmiabthi','wqmiabtls','wqmiabtge','wqmiabtlt','wqmiabtgt','wqmiabtle',\n            'wqmiatbeq','wqmiatbne','wqmiatbcs','wqmiatbhs','wqmiatbcc','wqmiatblo','wqmiatbmi','wqmiatbpl','wqmiatbvs','wqmiatbvc','wqmiatbhi','wqmiatbls','wqmiatbge','wqmiatblt','wqmiatbgt','wqmiatble',\n            'wqmiatteq','wqmiattne','wqmiattcs','wqmiatths','wqmiattcc','wqmiattlo','wqmiattmi','wqmiattpl','wqmiattvs','wqmiattvc','wqmiatthi','wqmiattls','wqmiattge','wqmiattlt','wqmiattgt','wqmiattle',\n            'wqmiabbneq','wqmiabbnne','wqmiabbncs','wqmiabbnhs','wqmiabbncc','wqmiabbnlo','wqmiabbnmi','wqmiabbnpl','wqmiabbnvs','wqmiabbnvc','wqmiabbnhi','wqmiabbnls','wqmiabbnge','wqmiabbnlt','wqmiabbngt','wqmiabbnle',\n            'wqmiabtneq','wqmiabtnne','wqmiabtncs','wqmiabtnhs','wqmiabtncc','wqmiabtnlo','wqmiabtnmi','wqmiabtnpl','wqmiabtnvs','wqmiabtnvc','wqmiabtnhi','wqmiabtnls','wqmiabtnge','wqmiabtnlt','wqmiabtngt','wqmiabtnle',\n            'wqmiatbneq','wqmiatbnne','wqmiatbncs','wqmiatbnhs','wqmiatbncc','wqmiatbnlo','wqmiatbnmi','wqmiatbnpl','wqmiatbnvs','wqmiatbnvc','wqmiatbnhi','wqmiatbnls','wqmiatbnge','wqmiatbnlt','wqmiatbngt','wqmiatbnle',\n            'wqmiattneq','wqmiattnne','wqmiattncs','wqmiattnhs','wqmiattncc','wqmiattnlo','wqmiattnmi','wqmiattnpl','wqmiattnvs','wqmiattnvc','wqmiattnhi','wqmiattnls','wqmiattnge','wqmiattnlt','wqmiattngt','wqmiattnle',\n            'wqmulmeq','wqmulmne','wqmulmcs','wqmulmhs','wqmulmcc','wqmulmlo','wqmulmmi','wqmulmpl','wqmulmvs','wqmulmvc','wqmulmhi','wqmulmls','wqmulmge','wqmulmlt','wqmulmgt','wqmulmle',\n            'wqmulmreq','wqmulmrne','wqmulmrcs','wqmulmrhs','wqmulmrcc','wqmulmrlo','wqmulmrmi','wqmulmrpl','wqmulmrvs','wqmulmrvc','wqmulmrhi','wqmulmrls','wqmulmrge','wqmulmrlt','wqmulmrgt','wqmulmrle',\n            'wqmulwmeq','wqmulwmne','wqmulwmcs','wqmulwmhs','wqmulwmcc','wqmulwmlo','wqmulwmmi','wqmulwmpl','wqmulwmvs','wqmulwmvc','wqmulwmhi','wqmulwmls','wqmulwmge','wqmulwmlt','wqmulwmgt','wqmulwmle',\n            'wqmulwmreq','wqmulwmrne','wqmulwmrcs','wqmulwmrhs','wqmulwmrcc','wqmulwmrlo','wqmulwmrmi','wqmulwmrpl','wqmulwmrvs','wqmulwmrvc','wqmulwmrhi','wqmulwmrls','wqmulwmrge','wqmulwmrlt','wqmulwmrgt','wqmulwmrle',\n            'wrorheq','wrorhne','wrorhcs','wrorhhs','wrorhcc','wrorhlo','wrorhmi','wrorhpl','wrorhvs','wrorhvc','wrorhhi','wrorhls','wrorhge','wrorhlt','wrorhgt','wrorhle',\n            'wrorweq','wrorwne','wrorwcs','wrorwhs','wrorwcc','wrorwlo','wrorwmi','wrorwpl','wrorwvs','wrorwvc','wrorwhi','wrorwls','wrorwge','wrorwlt','wrorwgt','wrorwle',\n            'wrordeq','wrordne','wrordcs','wrordhs','wrordcc','wrordlo','wrordmi','wrordpl','wrordvs','wrordvc','wrordhi','wrordls','wrordge','wrordlt','wrordgt','wrordle',\n            'wrorhgeq','wrorhgne','wrorhgcs','wrorhghs','wrorhgcc','wrorhglo','wrorhgmi','wrorhgpl','wrorhgvs','wrorhgvc','wrorhghi','wrorhgls','wrorhgge','wrorhglt','wrorhggt','wrorhgle',\n            'wrorwgeq','wrorwgne','wrorwgcs','wrorwghs','wrorwgcc','wrorwglo','wrorwgmi','wrorwgpl','wrorwgvs','wrorwgvc','wrorwghi','wrorwgls','wrorwgge','wrorwglt','wrorwggt','wrorwgle',\n            'wrordgeq','wrordgne','wrordgcs','wrordghs','wrordgcc','wrordglo','wrordgmi','wrordgpl','wrordgvs','wrordgvc','wrordghi','wrordgls','wrordgge','wrordglt','wrordggt','wrordgle',\n            'wsadbeq','wsadbne','wsadbcs','wsadbhs','wsadbcc','wsadblo','wsadbmi','wsadbpl','wsadbvs','wsadbvc','wsadbhi','wsadbls','wsadbge','wsadblt','wsadbgt','wsadble',\n            'wsadheq','wsadhne','wsadhcs','wsadhhs','wsadhcc','wsadhlo','wsadhmi','wsadhpl','wsadhvs','wsadhvc','wsadhhi','wsadhls','wsadhge','wsadhlt','wsadhgt','wsadhle',\n            'wsadbzeq','wsadbzne','wsadbzcs','wsadbzhs','wsadbzcc','wsadbzlo','wsadbzmi','wsadbzpl','wsadbzvs','wsadbzvc','wsadbzhi','wsadbzls','wsadbzge','wsadbzlt','wsadbzgt','wsadbzle',\n            'wsadhzeq','wsadhzne','wsadhzcs','wsadhzhs','wsadhzcc','wsadhzlo','wsadhzmi','wsadhzpl','wsadhzvs','wsadhzvc','wsadhzhi','wsadhzls','wsadhzge','wsadhzlt','wsadhzgt','wsadhzle',\n            'wshufheq','wshufhne','wshufhcs','wshufhhs','wshufhcc','wshufhlo','wshufhmi','wshufhpl','wshufhvs','wshufhvc','wshufhhi','wshufhls','wshufhge','wshufhlt','wshufhgt','wshufhle',\n            'wsllheq','wsllhne','wsllhcs','wsllhhs','wsllhcc','wsllhlo','wsllhmi','wsllhpl','wsllhvs','wsllhvc','wsllhhi','wsllhls','wsllhge','wsllhlt','wsllhgt','wsllhle',\n            'wsllweq','wsllwne','wsllwcs','wsllwhs','wsllwcc','wsllwlo','wsllwmi','wsllwpl','wsllwvs','wsllwvc','wsllwhi','wsllwls','wsllwge','wsllwlt','wsllwgt','wsllwle',\n            'wslldeq','wslldne','wslldcs','wslldhs','wslldcc','wslldlo','wslldmi','wslldpl','wslldvs','wslldvc','wslldhi','wslldls','wslldge','wslldlt','wslldgt','wslldle',\n            'wsllhgeq','wsllhgne','wsllhgcs','wsllhghs','wsllhgcc','wsllhglo','wsllhgmi','wsllhgpl','wsllhgvs','wsllhgvc','wsllhghi','wsllhgls','wsllhgge','wsllhglt','wsllhggt','wsllhgle',\n            'wsllwgeq','wsllwgne','wsllwgcs','wsllwghs','wsllwgcc','wsllwglo','wsllwgmi','wsllwgpl','wsllwgvs','wsllwgvc','wsllwghi','wsllwgls','wsllwgge','wsllwglt','wsllwggt','wsllwgle',\n            'wslldgeq','wslldgne','wslldgcs','wslldghs','wslldgcc','wslldglo','wslldgmi','wslldgpl','wslldgvs','wslldgvc','wslldghi','wslldgls','wslldgge','wslldglt','wslldggt','wslldgle',\n            'wsraheq','wsrahne','wsrahcs','wsrahhs','wsrahcc','wsrahlo','wsrahmi','wsrahpl','wsrahvs','wsrahvc','wsrahhi','wsrahls','wsrahge','wsrahlt','wsrahgt','wsrahle',\n            'wsraweq','wsrawne','wsrawcs','wsrawhs','wsrawcc','wsrawlo','wsrawmi','wsrawpl','wsrawvs','wsrawvc','wsrawhi','wsrawls','wsrawge','wsrawlt','wsrawgt','wsrawle',\n            'wsradeq','wsradne','wsradcs','wsradhs','wsradcc','wsradlo','wsradmi','wsradpl','wsradvs','wsradvc','wsradhi','wsradls','wsradge','wsradlt','wsradgt','wsradle',\n            'wsrahgeq','wsrahgne','wsrahgcs','wsrahghs','wsrahgcc','wsrahglo','wsrahgmi','wsrahgpl','wsrahgvs','wsrahgvc','wsrahghi','wsrahgls','wsrahgge','wsrahglt','wsrahggt','wsrahgle',\n            'wsrawgeq','wsrawgne','wsrawgcs','wsrawghs','wsrawgcc','wsrawglo','wsrawgmi','wsrawgpl','wsrawgvs','wsrawgvc','wsrawghi','wsrawgls','wsrawgge','wsrawglt','wsrawggt','wsrawgle',\n            'wsradgeq','wsradgne','wsradgcs','wsradghs','wsradgcc','wsradglo','wsradgmi','wsradgpl','wsradgvs','wsradgvc','wsradghi','wsradgls','wsradgge','wsradglt','wsradggt','wsradgle',\n            'wsrlheq','wsrlhne','wsrlhcs','wsrlhhs','wsrlhcc','wsrlhlo','wsrlhmi','wsrlhpl','wsrlhvs','wsrlhvc','wsrlhhi','wsrlhls','wsrlhge','wsrlhlt','wsrlhgt','wsrlhle',\n            'wsrlweq','wsrlwne','wsrlwcs','wsrlwhs','wsrlwcc','wsrlwlo','wsrlwmi','wsrlwpl','wsrlwvs','wsrlwvc','wsrlwhi','wsrlwls','wsrlwge','wsrlwlt','wsrlwgt','wsrlwle',\n            'wsrldeq','wsrldne','wsrldcs','wsrldhs','wsrldcc','wsrldlo','wsrldmi','wsrldpl','wsrldvs','wsrldvc','wsrldhi','wsrldls','wsrldge','wsrldlt','wsrldgt','wsrldle',\n            'wsrlhgeq','wsrlhgne','wsrlhgcs','wsrlhghs','wsrlhgcc','wsrlhglo','wsrlhgmi','wsrlhgpl','wsrlhgvs','wsrlhgvc','wsrlhghi','wsrlhgls','wsrlhgge','wsrlhglt','wsrlhggt','wsrlhgle',\n            'wsrlwgeq','wsrlwgne','wsrlwgcs','wsrlwghs','wsrlwgcc','wsrlwglo','wsrlwgmi','wsrlwgpl','wsrlwgvs','wsrlwgvc','wsrlwghi','wsrlwgls','wsrlwgge','wsrlwglt','wsrlwggt','wsrlwgle',\n            'wsrldgeq','wsrldgne','wsrldgcs','wsrldghs','wsrldgcc','wsrldglo','wsrldgmi','wsrldgpl','wsrldgvs','wsrldgvc','wsrldghi','wsrldgls','wsrldgge','wsrldglt','wsrldggt','wsrldgle',\n            'wstrbeq','wstrbne','wstrbcs','wstrbhs','wstrbcc','wstrblo','wstrbmi','wstrbpl','wstrbvs','wstrbvc','wstrbhi','wstrbls','wstrbge','wstrblt','wstrbgt','wstrble',\n            'wstrheq','wstrhne','wstrhcs','wstrhhs','wstrhcc','wstrhlo','wstrhmi','wstrhpl','wstrhvs','wstrhvc','wstrhhi','wstrhls','wstrhge','wstrhlt','wstrhgt','wstrhle',\n            'wstrweq','wstrwne','wstrwcs','wstrwhs','wstrwcc','wstrwlo','wstrwmi','wstrwpl','wstrwvs','wstrwvc','wstrwhi','wstrwls','wstrwge','wstrwlt','wstrwgt','wstrwle',\n            'wstrdeq','wstrdne','wstrdcs','wstrdhs','wstrdcc','wstrdlo','wstrdmi','wstrdpl','wstrdvs','wstrdvc','wstrdhi','wstrdls','wstrdge','wstrdlt','wstrdgt','wstrdle',\n            'wsubbeq','wsubbne','wsubbcs','wsubbhs','wsubbcc','wsubblo','wsubbmi','wsubbpl','wsubbvs','wsubbvc','wsubbhi','wsubbls','wsubbge','wsubblt','wsubbgt','wsubble',\n            'wsubheq','wsubhne','wsubhcs','wsubhhs','wsubhcc','wsubhlo','wsubhmi','wsubhpl','wsubhvs','wsubhvc','wsubhhi','wsubhls','wsubhge','wsubhlt','wsubhgt','wsubhle',\n            'wsubweq','wsubwne','wsubwcs','wsubwhs','wsubwcc','wsubwlo','wsubwmi','wsubwpl','wsubwvs','wsubwvc','wsubwhi','wsubwls','wsubwge','wsubwlt','wsubwgt','wsubwle',\n            'wsubbsseq','wsubbssne','wsubbsscs','wsubbsshs','wsubbsscc','wsubbsslo','wsubbssmi','wsubbsspl','wsubbssvs','wsubbssvc','wsubbsshi','wsubbssls','wsubbssge','wsubbsslt','wsubbssgt','wsubbssle',\n            'wsubhsseq','wsubhssne','wsubhsscs','wsubhsshs','wsubhsscc','wsubhsslo','wsubhssmi','wsubhsspl','wsubhssvs','wsubhssvc','wsubhsshi','wsubhssls','wsubhssge','wsubhsslt','wsubhssgt','wsubhssle',\n            'wsubwsseq','wsubwssne','wsubwsscs','wsubwsshs','wsubwsscc','wsubwsslo','wsubwssmi','wsubwsspl','wsubwssvs','wsubwssvc','wsubwsshi','wsubwssls','wsubwssge','wsubwsslt','wsubwssgt','wsubwssle',\n            'wsubbuseq','wsubbusne','wsubbuscs','wsubbushs','wsubbuscc','wsubbuslo','wsubbusmi','wsubbuspl','wsubbusvs','wsubbusvc','wsubbushi','wsubbusls','wsubbusge','wsubbuslt','wsubbusgt','wsubbusle',\n            'wsubhuseq','wsubhusne','wsubhuscs','wsubhushs','wsubhuscc','wsubhuslo','wsubhusmi','wsubhuspl','wsubhusvs','wsubhusvc','wsubhushi','wsubhusls','wsubhusge','wsubhuslt','wsubhusgt','wsubhusle',\n            'wsubwuseq','wsubwusne','wsubwuscs','wsubwushs','wsubwuscc','wsubwuslo','wsubwusmi','wsubwuspl','wsubwusvs','wsubwusvc','wsubwushi','wsubwusls','wsubwusge','wsubwuslt','wsubwusgt','wsubwusle',\n            'wsubaddhxeq','wsubaddhxne','wsubaddhxcs','wsubaddhxhs','wsubaddhxcc','wsubaddhxlo','wsubaddhxmi','wsubaddhxpl','wsubaddhxvs','wsubaddhxvc','wsubaddhxhi','wsubaddhxls','wsubaddhxge','wsubaddhxlt','wsubaddhxgt','wsubaddhxle',\n            'wunpckehsbeq','wunpckehsbne','wunpckehsbcs','wunpckehsbhs','wunpckehsbcc','wunpckehsblo','wunpckehsbmi','wunpckehsbpl','wunpckehsbvs','wunpckehsbvc','wunpckehsbhi','wunpckehsbls','wunpckehsbge','wunpckehsblt','wunpckehsbgt','wunpckehsble',\n            'wunpckehsheq','wunpckehshne','wunpckehshcs','wunpckehshhs','wunpckehshcc','wunpckehshlo','wunpckehshmi','wunpckehshpl','wunpckehshvs','wunpckehshvc','wunpckehshhi','wunpckehshls','wunpckehshge','wunpckehshlt','wunpckehshgt','wunpckehshle',\n            'wunpckehsweq','wunpckehswne','wunpckehswcs','wunpckehswhs','wunpckehswcc','wunpckehswlo','wunpckehswmi','wunpckehswpl','wunpckehswvs','wunpckehswvc','wunpckehswhi','wunpckehswls','wunpckehswge','wunpckehswlt','wunpckehswgt','wunpckehswle',\n            'wunpckehubeq','wunpckehubne','wunpckehubcs','wunpckehubhs','wunpckehubcc','wunpckehublo','wunpckehubmi','wunpckehubpl','wunpckehubvs','wunpckehubvc','wunpckehubhi','wunpckehubls','wunpckehubge','wunpckehublt','wunpckehubgt','wunpckehuble',\n            'wunpckehuheq','wunpckehuhne','wunpckehuhcs','wunpckehuhhs','wunpckehuhcc','wunpckehuhlo','wunpckehuhmi','wunpckehuhpl','wunpckehuhvs','wunpckehuhvc','wunpckehuhhi','wunpckehuhls','wunpckehuhge','wunpckehuhlt','wunpckehuhgt','wunpckehuhle',\n            'wunpckehuweq','wunpckehuwne','wunpckehuwcs','wunpckehuwhs','wunpckehuwcc','wunpckehuwlo','wunpckehuwmi','wunpckehuwpl','wunpckehuwvs','wunpckehuwvc','wunpckehuwhi','wunpckehuwls','wunpckehuwge','wunpckehuwlt','wunpckehuwgt','wunpckehuwle',\n            'wunpckihbeq','wunpckihbne','wunpckihbcs','wunpckihbhs','wunpckihbcc','wunpckihblo','wunpckihbmi','wunpckihbpl','wunpckihbvs','wunpckihbvc','wunpckihbhi','wunpckihbls','wunpckihbge','wunpckihblt','wunpckihbgt','wunpckihble',\n            'wunpckihheq','wunpckihhne','wunpckihhcs','wunpckihhhs','wunpckihhcc','wunpckihhlo','wunpckihhmi','wunpckihhpl','wunpckihhvs','wunpckihhvc','wunpckihhhi','wunpckihhls','wunpckihhge','wunpckihhlt','wunpckihhgt','wunpckihhle',\n            'wunpckihweq','wunpckihwne','wunpckihwcs','wunpckihwhs','wunpckihwcc','wunpckihwlo','wunpckihwmi','wunpckihwpl','wunpckihwvs','wunpckihwvc','wunpckihwhi','wunpckihwls','wunpckihwge','wunpckihwlt','wunpckihwgt','wunpckihwle',\n            'wunpckelsbeq','wunpckelsbne','wunpckelsbcs','wunpckelsbhs','wunpckelsbcc','wunpckelsblo','wunpckelsbmi','wunpckelsbpl','wunpckelsbvs','wunpckelsbvc','wunpckelsbhi','wunpckelsbls','wunpckelsbge','wunpckelsblt','wunpckelsbgt','wunpckelsble',\n            'wunpckelsheq','wunpckelshne','wunpckelshcs','wunpckelshhs','wunpckelshcc','wunpckelshlo','wunpckelshmi','wunpckelshpl','wunpckelshvs','wunpckelshvc','wunpckelshhi','wunpckelshls','wunpckelshge','wunpckelshlt','wunpckelshgt','wunpckelshle',\n            'wunpckelsweq','wunpckelswne','wunpckelswcs','wunpckelswhs','wunpckelswcc','wunpckelswlo','wunpckelswmi','wunpckelswpl','wunpckelswvs','wunpckelswvc','wunpckelswhi','wunpckelswls','wunpckelswge','wunpckelswlt','wunpckelswgt','wunpckelswle',\n            'wunpckelubeq','wunpckelubne','wunpckelubcs','wunpckelubhs','wunpckelubcc','wunpckelublo','wunpckelubmi','wunpckelubpl','wunpckelubvs','wunpckelubvc','wunpckelubhi','wunpckelubls','wunpckelubge','wunpckelublt','wunpckelubgt','wunpckeluble',\n            'wunpckeluheq','wunpckeluhne','wunpckeluhcs','wunpckeluhhs','wunpckeluhcc','wunpckeluhlo','wunpckeluhmi','wunpckeluhpl','wunpckeluhvs','wunpckeluhvc','wunpckeluhhi','wunpckeluhls','wunpckeluhge','wunpckeluhlt','wunpckeluhgt','wunpckeluhle',\n            'wunpckeluweq','wunpckeluwne','wunpckeluwcs','wunpckeluwhs','wunpckeluwcc','wunpckeluwlo','wunpckeluwmi','wunpckeluwpl','wunpckeluwvs','wunpckeluwvc','wunpckeluwhi','wunpckeluwls','wunpckeluwge','wunpckeluwlt','wunpckeluwgt','wunpckeluwle',\n            'wunpckilbeq','wunpckilbne','wunpckilbcs','wunpckilbhs','wunpckilbcc','wunpckilblo','wunpckilbmi','wunpckilbpl','wunpckilbvs','wunpckilbvc','wunpckilbhi','wunpckilbls','wunpckilbge','wunpckilblt','wunpckilbgt','wunpckilble',\n            'wunpckilheq','wunpckilhne','wunpckilhcs','wunpckilhhs','wunpckilhcc','wunpckilhlo','wunpckilhmi','wunpckilhpl','wunpckilhvs','wunpckilhvc','wunpckilhhi','wunpckilhls','wunpckilhge','wunpckilhlt','wunpckilhgt','wunpckilhle',\n            'wunpckilweq','wunpckilwne','wunpckilwcs','wunpckilwhs','wunpckilwcc','wunpckilwlo','wunpckilwmi','wunpckilwpl','wunpckilwvs','wunpckilwvc','wunpckilwhi','wunpckilwls','wunpckilwge','wunpckilwlt','wunpckilwgt','wunpckilwle',\n            'wxoreq','wxorne','wxorcs','wxorhs','wxorcc','wxorlo','wxormi','wxorpl','wxorvs','wxorvc','wxorhi','wxorls','wxorge','wxorlt','wxorgt','wxorle',\n            'wzeroeq','wzerone','wzerocs','wzerohs','wzerocc','wzerolo','wzeromi','wzeropl','wzerovs','wzerovc','wzerohi','wzerols','wzeroge','wzerolt','wzerogt','wzerole'\n            ),\n        /* Unconditional VFPv3 & NEON SIMD Memory Access Instructions */\n        19 => array(\n            /* Unconditional VFPv3 & NEON SIMD Memory Access: Loads */\n            'vld.8','vldal.8',\n            'vld.16','vldal.16',\n            'vld.32','vldal.32',\n            'vld.64','vldal.64',\n\n            'vld1.8','vld1al.8',\n            'vld1.16','vld1al.16',\n            'vld1.32','vld1al.32',\n\n            'vld2.8','vld2al.8',\n            'vld2.16','vld2al.16',\n            'vld2.32','vld2al.32',\n\n            'vld3.8','vld3al.8',\n            'vld3.16','vld3al.16',\n            'vld3.32','vld3al.32',\n\n            'vld4.8','vld4al.8',\n            'vld4.16','vld4al.16',\n            'vld4.32','vld4al.32',\n\n            'vldm','vldmal',\n            'vldm.32','vldmal.32',\n            'vldm.64','vldmal.64',\n\n            'vldmia','vldmiaal',\n            'vldmia.32','vldmiaal.32',\n            'vldmia.64','vldmiaal.64',\n\n            'vldmdb','vldmdbal',\n            'vldmdb.32','vldmdbal.32',\n            'vldmdb.64','vldmdbal.64',\n\n            'vldr','vldral',\n            'vldr.32','vldral.32',\n            'vldr.64','vldral.64',\n\n            'vpop','vpopal',\n            'vpop.32','vpopal.32',\n            'vpop.64','vpopal.64',\n\n            /* Unconditional VFPv3 & NEON SIMD Memory Access: Stores */\n            'vst1.8','vst1al.8',\n            'vst1.16','vst1al.16',\n            'vst1.32','vst1al.32',\n            'vst1.64','vst1al.64',\n\n            'vst2.8','vst2al.8',\n            'vst2.16','vst2al.16',\n            'vst2.32','vst2al.32',\n\n            'vst3.8','vst3al.8',\n            'vst3.16','vst3al.16',\n            'vst3.32','vst3al.32',\n\n            'vst4.8','vst4al.8',\n            'vst4.16','vst4al.16',\n            'vst4.32','vst4al.32',\n\n            'vstm','vstmal',\n            'vstm.32','vstmal.32',\n            'vstm.64','vstmal.64',\n\n            'vstmia','vstmiaal',\n            'vstmia.32','vstmiaal.32',\n            'vstmia.64','vstmiaal.64',\n\n            'vstmdb','vstmdbal',\n            'vstmdb.32','vstmdbal.32',\n            'vstmdb.64','vstmdbal.64',\n\n            'vstr','vstral',\n            'vstr.32','vstral.32',\n            'vstr.64','vstral.64',\n\n            'vpush','vpushal',\n            'vpush.32','vpushal.32',\n            'vpush.64','vpushal.64'\n            ),\n        /* Unconditional NEON SIMD Logical Instructions */\n        20 => array(\n            'vand','vandal',\n            'vand.i8','vandal.i8',\n            'vand.i16','vandal.i16',\n            'vand.i32','vandal.i32',\n            'vand.i64','vandal.i64',\n            'vand.s8','vandal.s8',\n            'vand.s16','vandal.s16',\n            'vand.s32','vandal.s32',\n            'vand.s64','vandal.s64',\n            'vand.u8','vandal.u8',\n            'vand.u16','vandal.u16',\n            'vand.u32','vandal.u32',\n            'vand.u64','vandal.u64',\n            'vand.f32','vandal.f32',\n            'vand.f64','vandal.f64',\n\n            'vbic','vbical',\n            'vbic.i8','vbical.i8',\n            'vbic.i16','vbical.i16',\n            'vbic.i32','vbical.i32',\n            'vbic.i64','vbical.i64',\n            'vbic.s8','vbical.s8',\n            'vbic.s16','vbical.s16',\n            'vbic.s32','vbical.s32',\n            'vbic.s64','vbical.s64',\n            'vbic.u8','vbical.u8',\n            'vbic.u16','vbical.u16',\n            'vbic.u32','vbical.u32',\n            'vbic.u64','vbical.u64',\n            'vbic.f32','vbical.f32',\n            'vbic.f64','vbical.f64',\n\n            'vbif','vbifal',\n            'vbif.i8','vbifal.i8',\n            'vbif.i16','vbifal.i16',\n            'vbif.i32','vbifal.i32',\n            'vbif.i64','vbifal.i64',\n            'vbif.s8','vbifal.s8',\n            'vbif.s16','vbifal.s16',\n            'vbif.s32','vbifal.s32',\n            'vbif.s64','vbifal.s64',\n            'vbif.u8','vbifal.u8',\n            'vbif.u16','vbifal.u16',\n            'vbif.u32','vbifal.u32',\n            'vbif.u64','vbifal.u64',\n            'vbif.f32','vbifal.f32',\n            'vbif.f64','vbifal.f64',\n\n            'vbit','vbital',\n            'vbit.i8','vbital.i8',\n            'vbit.i16','vbital.i16',\n            'vbit.i32','vbital.i32',\n            'vbit.i64','vbital.i64',\n            'vbit.s8','vbital.s8',\n            'vbit.s16','vbital.s16',\n            'vbit.s32','vbital.s32',\n            'vbit.s64','vbital.s64',\n            'vbit.u8','vbital.u8',\n            'vbit.u16','vbital.u16',\n            'vbit.u32','vbital.u32',\n            'vbit.u64','vbital.u64',\n            'vbit.f32','vbital.f32',\n            'vbit.f64','vbital.f64',\n\n            'vbsl','vbslal',\n            'vbsl.i8','vbslal.i8',\n            'vbsl.i16','vbslal.i16',\n            'vbsl.i32','vbslal.i32',\n            'vbsl.i64','vbslal.i64',\n            'vbsl.s8','vbslal.s8',\n            'vbsl.s16','vbslal.s16',\n            'vbsl.s32','vbslal.s32',\n            'vbsl.s64','vbslal.s64',\n            'vbsl.u8','vbslal.u8',\n            'vbsl.u16','vbslal.u16',\n            'vbsl.u32','vbslal.u32',\n            'vbsl.u64','vbslal.u64',\n            'vbsl.f32','vbslal.f32',\n            'vbsl.f64','vbslal.f64',\n\n            'veor','veoral',\n            'veor.i8','veoral.i8',\n            'veor.i16','veoral.i16',\n            'veor.i32','veoral.i32',\n            'veor.i64','veoral.i64',\n            'veor.s8','veoral.s8',\n            'veor.s16','veoral.s16',\n            'veor.s32','veoral.s32',\n            'veor.s64','veoral.s64',\n            'veor.u8','veoral.u8',\n            'veor.u16','veoral.u16',\n            'veor.u32','veoral.u32',\n            'veor.u64','veoral.u64',\n            'veor.f32','veoral.f32',\n            'veor.f64','veoral.f64',\n\n            'vmov','vmoval',\n            'vmov.8','vmoval.8',\n            'vmov.16','vmoval.16',\n            'vmov.32','vmoval.32',\n            'vmov.i8','vmoval.i8',\n            'vmov.i16','vmoval.i16',\n            'vmov.i32','vmoval.i32',\n            'vmov.i64','vmoval.i64',\n            'vmov.f32','vmoval.f32',\n            'vmov.f64','vmoval.f64',\n\n            'vmvn','vmvnal',\n            'vmvn.s8','vmvnal.s8',\n            'vmvn.s16','vmvnal.s16',\n            'vmvn.s32','vmvnal.s32',\n            'vmvn.s64','vmvnal.s64',\n            'vmvn.u8','vmvnal.u8',\n            'vmvn.u16','vmvnal.u16',\n            'vmvn.u32','vmvnal.u32',\n            'vmvn.u64','vmvnal.u64',\n            'vmvn.i8','vmvnal.i8',\n            'vmvn.i16','vmvnal.i16',\n            'vmvn.i32','vmvnal.i32',\n            'vmvn.i64','vmvnal.i64',\n            'vmvn.f32','vmvnal.f32',\n            'vmvn.f64','vmvnal.f64',\n\n            'vorn','vornal',\n            'vorn.s8','vornal.s8',\n            'vorn.s16','vornal.s16',\n            'vorn.s32','vornal.s32',\n            'vorn.s64','vornal.s64',\n            'vorn.u8','vornal.u8',\n            'vorn.u16','vornal.u16',\n            'vorn.u32','vornal.u32',\n            'vorn.u64','vornal.u64',\n            'vorn.i8','vornal.i8',\n            'vorn.i16','vornal.i16',\n            'vorn.i32','vornal.i32',\n            'vorn.i64','vornal.i64',\n            'vorn.f32','vornal.f32',\n            'vorn.f64','vornal.f64',\n\n            'vorr','vorral',\n            'vorr.s8','vorral.s8',\n            'vorr.s16','vorral.s16',\n            'vorr.s32','vorral.s32',\n            'vorr.s64','vorral.s64',\n            'vorr.u8','vorral.u8',\n            'vorr.u16','vorral.u16',\n            'vorr.u32','vorral.u32',\n            'vorr.u64','vorral.u64',\n            'vorr.i8','vorral.i8',\n            'vorr.i16','vorral.i16',\n            'vorr.i32','vorral.i32',\n            'vorr.i64','vorral.i64',\n            'vorr.f32','vorral.f32',\n            'vorr.f64','vorral.f64',\n\n            'vswp','vswpal',\n            'vswp.s8','vswpal.s8',\n            'vswp.s16','vswpal.s16',\n            'vswp.s32','vswpal.s32',\n            'vswp.s64','vswpal.s64',\n            'vswp.u8','vswpal.u8',\n            'vswp.u16','vswpal.u16',\n            'vswp.u32','vswpal.u32',\n            'vswp.u64','vswpal.u64',\n            'vswp.i8','vswpal.i8',\n            'vswp.i16','vswpal.i16',\n            'vswp.i32','vswpal.i32',\n            'vswp.i64','vswpal.i64',\n            'vswp.f32','vswpal.f32',\n            'vswp.f64','vswpal.f64'\n            ),\n        /* Unconditional NEON SIMD ARM Registers Interop Instructions */\n        21 => array(\n            'vmrs','vmrsal',\n            'vmsr','vmsral'\n            ),\n        /* Unconditional NEON SIMD Bit/Byte-Level Instructions */\n        22 => array(\n            'vcnt.8','vcntal.8',\n            'vdup.8','vdupal.8',\n\n            'vdup.16','vdupal.16',\n            'vdup.32','vdupal.32',\n\n            'vext.8','vextal.8',\n            'vext.16','vextal.16',\n\n            'vext.32','vextal.32',\n            'vext.64','vextal.64',\n\n            'vrev16.8','vrev16al.8',\n            'vrev32.8','vrev32al.8',\n            'vrev32.16','vrev32al.16',\n            'vrev64.8','vrev64al.8',\n            'vrev64.16','vrev64al.16',\n            'vrev64.32','vrev64al.32',\n\n            'vsli.8','vslial.8',\n            'vsli.16','vslial.16',\n            'vsli.32','vslial.32',\n            'vsli.64','vslial.64',\n\n            'vsri.8','vsrial.8',\n            'vsri.16','vsrial.16',\n            'vsri.32','vsrial.32',\n            'vsri.64','vsrial.64',\n\n            'vtbl.8','vtblal.8',\n\n            'vtbx','vtbxal',\n\n            'vtrn.8','vtrnal.8',\n            'vtrn.16','vtrnal.16',\n            'vtrn.32','vtrnal.32',\n\n            'vtst.8','vtstal.8',\n            'vtst.16','vtstal.16',\n            'vtst.32','vtstal.32',\n\n            'vuzp.8','vuzpal.8',\n            'vuzp.16','vuzpal.16',\n            'vuzp.32','vuzpal.32',\n\n            'vzip.8','vzipal.8',\n            'vzip.16','vzipal.16',\n            'vzip.32','vzipal.32',\n\n            'vmull.p8','vmullal.p8'\n            ),\n        /* Unconditional NEON SIMD Universal Integer Instructions */\n        23 => array(\n            'vadd.i8','vaddal.i8',\n            'vadd.i16','vaddal.i16',\n            'vadd.i32','vaddal.i32',\n            'vadd.i64','vaddal.i64',\n\n            'vsub.i8','vsubal.i8',\n            'vsub.i16','vsubal.i16',\n            'vsub.i32','vsubal.i32',\n            'vsub.i64','vsubal.i64',\n\n            'vaddhn.i16','vaddhnal.i16',\n            'vaddhn.i32','vaddhnal.i32',\n            'vaddhn.i64','vaddhnal.i64',\n\n            'vsubhn.i16','vsubhnal.i16',\n            'vsubhn.i32','vsubhnal.i32',\n            'vsubhn.i64','vsubhnal.i64',\n\n            'vraddhn.i16','vraddhnal.i16',\n            'vraddhn.i32','vraddhnal.i32',\n            'vraddhn.i64','vraddhnal.i64',\n\n            'vrsubhn.i16','vrsubhnal.i16',\n            'vrsubhn.i32','vrsubhnal.i32',\n            'vrsubhn.i64','vrsubhnal.i64',\n\n            'vpadd.i8','vpaddal.i8',\n            'vpadd.i16','vpaddal.i16',\n            'vpadd.i32','vpaddal.i32',\n\n            'vceq.i8','vceqal.i8',\n            'vceq.i16','vceqal.i16',\n            'vceq.i32','vceqal.i32',\n\n            'vclz.i8','vclzal.i8',\n            'vclz.i16','vclzal.i16',\n            'vclz.i32','vclzal.i32',\n\n            'vmovn.i16','vmovnal.i16',\n            'vmovn.i32','vmovnal.i32',\n            'vmovn.i64','vmovnal.i64',\n\n            'vmla.s8','vmlaal.s8',\n            'vmla.s16','vmlaal.s16',\n            'vmla.s32','vmlaal.s32',\n            'vmla.u8','vmlaal.u8',\n            'vmla.u16','vmlaal.u16',\n            'vmla.u32','vmlaal.u32',\n            'vmla.i8','vmlaal.i8',\n            'vmla.i16','vmlaal.i16',\n            'vmla.i32','vmlaal.i32',\n\n            'vmls.s8','vmlsal.s8',\n            'vmls.s16','vmlsal.s16',\n            'vmls.s32','vmlsal.s32',\n            'vmls.u8','vmlsal.u8',\n            'vmls.u16','vmlsal.u16',\n            'vmls.u32','vmlsal.u32',\n            'vmls.i8','vmlsal.i8',\n            'vmls.i16','vmlsal.i16',\n            'vmls.i32','vmlsal.i32',\n\n            'vmul.s8','vmulal.s8',\n            'vmul.s16','vmulal.s16',\n            'vmul.s32','vmulal.s32',\n            'vmul.u8','vmulal.u8',\n            'vmul.u16','vmulal.u16',\n            'vmul.u32','vmulal.u32',\n            'vmul.i8','vmulal.i8',\n            'vmul.i16','vmulal.i16',\n            'vmul.i32','vmulal.i32',\n            'vmul.p8','vmulal.p8',\n\n            'vrshrn.i16','vrshrnal.i16',\n            'vrshrn.i32','vrshrnal.i32',\n            'vrshrn.i64','vrshrnal.i64',\n\n            'vshrn.i16','vshrnal.i16',\n            'vshrn.i32','vshrnal.i32',\n            'vshrn.i64','vshrnal.i64',\n\n            'vshl.i8','vshlal.i8',\n            'vshl.i16','vshlal.i16',\n            'vshl.i32','vshlal.i32',\n            'vshl.i64','vshlal.i64',\n\n            'vshll.i8','vshllal.i8',\n            'vshll.i16','vshllal.i16',\n            'vshll.i32','vshllal.i32'\n            ),\n        /* Unconditional NEON SIMD Signed Integer Instructions */\n        24 => array(\n            'vaba.s8','vabaal.s8',\n            'vaba.s16','vabaal.s16',\n            'vaba.s32','vabaal.s32',\n\n            'vabal.s8','vabalal.s8',\n            'vabal.s16','vabalal.s16',\n            'vabal.s32','vabalal.s32',\n\n            'vabd.s8','vabdal.s8',\n            'vabd.s16','vabdal.s16',\n            'vabd.s32','vabdal.s32',\n\n            'vabs.s8','vabsal.s8',\n            'vabs.s16','vabsal.s16',\n            'vabs.s32','vabsal.s32',\n\n            'vaddl.s8','vaddlal.s8',\n            'vaddl.s16','vaddlal.s16',\n            'vaddl.s32','vaddlal.s32',\n\n            'vcge.s8','vcgeal.s8',\n            'vcge.s16','vcgeal.s16',\n            'vcge.s32','vcgeal.s32',\n\n            'vcle.s8','vcleal.s8',\n            'vcle.s16','vcleal.s16',\n            'vcle.s32','vcleal.s32',\n\n            'vcgt.s8','vcgtal.s8',\n            'vcgt.s16','vcgtal.s16',\n            'vcgt.s32','vcgtal.s32',\n\n            'vclt.s8','vcltal.s8',\n            'vclt.s16','vcltal.s16',\n            'vclt.s32','vcltal.s32',\n\n            'vcls.s8','vclsal.s8',\n            'vcls.s16','vclsal.s16',\n            'vcls.s32','vclsal.s32',\n\n            'vaddw.s8','vaddwal.s8',\n            'vaddw.s16','vaddwal.s16',\n            'vaddw.s32','vaddwal.s32',\n\n            'vhadd.s8','vhaddal.s8',\n            'vhadd.s16','vhaddal.s16',\n            'vhadd.s32','vhaddal.s32',\n\n            'vhsub.s8','vhsubal.s8',\n            'vhsub.s16','vhsubal.s16',\n            'vhsub.s32','vhsubal.s32',\n\n            'vmax.s8','vmaxal.s8',\n            'vmax.s16','vmaxal.s16',\n            'vmax.s32','vmaxal.s32',\n\n            'vmin.s8','vminal.s8',\n            'vmin.s16','vminal.s16',\n            'vmin.s32','vminal.s32',\n\n            'vmlal.s8','vmlalal.s8',\n            'vmlal.s16','vmlalal.s16',\n            'vmlal.s32','vmlalal.s32',\n\n            'vmlsl.s8','vmlslal.s8',\n            'vmlsl.s16','vmlslal.s16',\n            'vmlsl.s32','vmlslal.s32',\n\n            'vneg.s8','vnegal.s8',\n            'vneg.s16','vnegal.s16',\n            'vneg.s32','vnegal.s32',\n\n            'vpadal.s8','vpadalal.s8',\n            'vpadal.s16','vpadalal.s16',\n            'vpadal.s32','vpadalal.s32',\n\n            'vmovl.s8','vmovlal.s8',\n            'vmovl.s16','vmovlal.s16',\n            'vmovl.s32','vmovlal.s32',\n\n            'vmull.s8','vmullal.s8',\n            'vmull.s16','vmullal.s16',\n            'vmull.s32','vmullal.s32',\n\n            'vpaddl.s8','vpaddlal.s8',\n            'vpaddl.s16','vpaddlal.s16',\n            'vpaddl.s32','vpaddlal.s32',\n\n            'vpmax.s8','vpmaxal.s8',\n            'vpmax.s16','vpmaxal.s16',\n            'vpmax.s32','vpmaxal.s32',\n\n            'vpmin.s8','vpminal.s8',\n            'vpmin.s16','vpminal.s16',\n            'vpmin.s32','vpminal.s32',\n\n            'vqabs.s8','vqabsal.s8',\n            'vqabs.s16','vqabsal.s16',\n            'vqabs.s32','vqabsal.s32',\n\n            'vqadd.s8','vqaddal.s8',\n            'vqadd.s16','vqaddal.s16',\n            'vqadd.s32','vqaddal.s32',\n            'vqadd.s64','vqaddal.s64',\n\n            'vqdmlal.s16','vqdmlalal.s16',\n            'vqdmlal.s32','vqdmlalal.s32',\n\n            'vqdmlsl.s16','vqdmlslal.s16',\n            'vqdmlsl.s32','vqdmlslal.s32',\n\n            'vqdmulh.s16','vqdmulhal.s16',\n            'vqdmulh.s32','vqdmulhal.s32',\n\n            'vqdmull.s16','vqdmullal.s16',\n            'vqdmull.s32','vqdmullal.s32',\n\n            'vqmovn.s16','vqmovnal.s16',\n            'vqmovn.s32','vqmovnal.s32',\n            'vqmovn.s64','vqmovnal.s64',\n\n            'vqmovun.s16','vqmovunal.s16',\n            'vqmovun.s32','vqmovunal.s32',\n            'vqmovun.s64','vqmovunal.s64',\n\n            'vqneg.s8','vqnegal.s8',\n            'vqneg.s16','vqnegal.s16',\n            'vqneg.s32','vqnegal.s32',\n\n            'vqrdmulh.s16','vqrdmulhal.s16',\n            'vqrdmulh.s32','vqrdmulhal.s32',\n\n            'vqrshl.s8','vqrshlal.s8',\n            'vqrshl.s16','vqrshlal.s16',\n            'vqrshl.s32','vqrshlal.s32',\n            'vqrshl.s64','vqrshlal.s64',\n\n            'vqrshrn.s16','vqrshrnal.s16',\n            'vqrshrn.s32','vqrshrnal.s32',\n            'vqrshrn.s64','vqrshrnal.s64',\n\n            'vqrshrun.s16','vqrshrunal.s16',\n            'vqrshrun.s32','vqrshrunal.s32',\n            'vqrshrun.s64','vqrshrunal.s64',\n\n            'vqshl.s8','vqshlal.s8',\n            'vqshl.s16','vqshlal.s16',\n            'vqshl.s32','vqshlal.s32',\n            'vqshl.s64','vqshlal.s64',\n\n            'vqshlu.s8','vqshlual.s8',\n            'vqshlu.s16','vqshlual.s16',\n            'vqshlu.s32','vqshlual.s32',\n            'vqshlu.s64','vqshlual.s64',\n\n            'vqshrn.s16','vqshrnal.s16',\n            'vqshrn.s32','vqshrnal.s32',\n            'vqshrn.s64','vqshrnal.s64',\n\n            'vqshrun.s16','vqshrunal.s16',\n            'vqshrun.s32','vqshrunal.s32',\n            'vqshrun.s64','vqshrunal.s64',\n\n            'vqsub.s8','vqsubal.s8',\n            'vqsub.s16','vqsubal.s16',\n            'vqsub.s32','vqsubal.s32',\n            'vqsub.s64','vqsubal.s64',\n\n            'vrhadd.s8','vrhaddal.s8',\n            'vrhadd.s16','vrhaddal.s16',\n            'vrhadd.s32','vrhaddal.s32',\n\n            'vrshl.s8','vrshlal.s8',\n            'vrshl.s16','vrshlal.s16',\n            'vrshl.s32','vrshlal.s32',\n            'vrshl.s64','vrshlal.s64',\n\n            'vrshr.s8','vrshral.s8',\n            'vrshr.s16','vrshral.s16',\n            'vrshr.s32','vrshral.s32',\n            'vrshr.s64','vrshral.s64',\n\n            'vrsra.s8','vrsraal.s8',\n            'vrsra.s16','vrsraal.s16',\n            'vrsra.s32','vrsraal.s32',\n            'vrsra.s64','vrsraal.s64',\n\n            'vshl.s8','vshlal.s8',\n            'vshl.s16','vshlal.s16',\n            'vshl.s32','vshlal.s32',\n            'vshl.s64','vshlal.s64',\n\n            'vshll.s8','vshllal.s8',\n            'vshll.s16','vshllal.s16',\n            'vshll.s32','vshllal.s32',\n\n            'vshr.s8','vshral.s8',\n            'vshr.s16','vshral.s16',\n            'vshr.s32','vshral.s32',\n            'vshr.s64','vshral.s64',\n\n            'vsra.s8','vsraal.s8',\n            'vsra.s16','vsraal.s16',\n            'vsra.s32','vsraal.s32',\n            'vsra.s64','vsraal.s64',\n\n            'vsubl.s8','vsublal.s8',\n            'vsubl.s16','vsublal.s16',\n            'vsubl.s32','vsublal.s32',\n\n            'vsubh.s8','vsubhal.s8',\n            'vsubh.s16','vsubhal.s16',\n            'vsubh.s32','vsubhal.s32'\n            ),\n        /* Unconditional NEON SIMD Unsigned Integer Instructions */\n        25 => array(\n            'vaba.u8','vabaal.u8',\n            'vaba.u16','vabaal.u16',\n            'vaba.u32','vabaal.u32',\n\n            'vabal.u8','vabalal.u8',\n            'vabal.u16','vabalal.u16',\n            'vabal.u32','vabalal.u32',\n\n            'vabd.u8','vabdal.u8',\n            'vabd.u16','vabdal.u16',\n            'vabd.u32','vabdal.u32',\n\n            'vaddl.u8','vaddlal.u8',\n            'vaddl.u16','vaddlal.u16',\n            'vaddl.u32','vaddlal.u32',\n\n            'vsubl.u8','vsublal.u8',\n            'vsubl.u16','vsublal.u16',\n            'vsubl.u32','vsublal.u32',\n\n            'vaddw.u8','vaddwal.u8',\n            'vaddw.u16','vaddwal.u16',\n            'vaddw.u32','vaddwal.u32',\n\n            'vsubh.u8','vsubhal.u8',\n            'vsubh.u16','vsubhal.u16',\n            'vsubh.u32','vsubhal.u32',\n\n            'vhadd.u8','vhaddal.u8',\n            'vhadd.u16','vhaddal.u16',\n            'vhadd.u32','vhaddal.u32',\n\n            'vhsub.u8','vhsubal.u8',\n            'vhsub.u16','vhsubal.u16',\n            'vhsub.u32','vhsubal.u32',\n\n            'vpadal.u8','vpadalal.u8',\n            'vpadal.u16','vpadalal.u16',\n            'vpadal.u32','vpadalal.u32',\n\n            'vpaddl.u8','vpaddlal.u8',\n            'vpaddl.u16','vpaddlal.u16',\n            'vpaddl.u32','vpaddlal.u32',\n\n            'vcge.u8','vcgeal.u8',\n            'vcge.u16','vcgeal.u16',\n            'vcge.u32','vcgeal.u32',\n\n            'vcle.u8','vcleal.u8',\n            'vcle.u16','vcleal.u16',\n            'vcle.u32','vcleal.u32',\n\n            'vcgt.u8','vcgtal.u8',\n            'vcgt.u16','vcgtal.u16',\n            'vcgt.u32','vcgtal.u32',\n\n            'vclt.u8','vcltal.u8',\n            'vclt.u16','vcltal.u16',\n            'vclt.u32','vcltal.u32',\n\n            'vmax.u8','vmaxal.u8',\n            'vmax.u16','vmaxal.u16',\n            'vmax.u32','vmaxal.u32',\n\n            'vmin.u8','vminal.u8',\n            'vmin.u16','vminal.u16',\n            'vmin.u32','vminal.u32',\n\n            'vmlal.u8','vmlalal.u8',\n            'vmlal.u16','vmlalal.u16',\n            'vmlal.u32','vmlalal.u32',\n\n            'vmlsl.u8','vmlslal.u8',\n            'vmlsl.u16','vmlslal.u16',\n            'vmlsl.u32','vmlslal.u32',\n\n            'vmull.u8','vmullal.u8',\n            'vmull.u16','vmullal.u16',\n            'vmull.u32','vmullal.u32',\n\n            'vmovl.u8','vmovlal.u8',\n            'vmovl.u16','vmovlal.u16',\n            'vmovl.u32','vmovlal.u32',\n\n            'vshl.u8','vshlal.u8',\n            'vshl.u16','vshlal.u16',\n            'vshl.u32','vshlal.u32',\n            'vshl.u64','vshlal.u64',\n\n            'vshll.u8','vshllal.u8',\n            'vshll.u16','vshllal.u16',\n            'vshll.u32','vshllal.u32',\n\n            'vshr.u8','vshral.u8',\n            'vshr.u16','vshral.u16',\n            'vshr.u32','vshral.u32',\n            'vshr.u64','vshral.u64',\n\n            'vsra.u8','vsraal.u8',\n            'vsra.u16','vsraal.u16',\n            'vsra.u32','vsraal.u32',\n            'vsra.u64','vsraal.u64',\n\n            'vpmax.u8','vpmaxal.u8',\n            'vpmax.u16','vpmaxal.u16',\n            'vpmax.u32','vpmaxal.u32',\n\n            'vpmin.u8','vpminal.u8',\n            'vpmin.u16','vpminal.u16',\n            'vpmin.u32','vpminal.u32',\n\n            'vqadd.u8','vqaddal.u8',\n            'vqadd.u16','vqaddal.u16',\n            'vqadd.u32','vqaddal.u32',\n            'vqadd.u64','vqaddal.u64',\n\n            'vqsub.u8','vqsubal.u8',\n            'vqsub.u16','vqsubal.u16',\n            'vqsub.u32','vqsubal.u32',\n            'vqsub.u64','vqsubal.u64',\n\n            'vqmovn.u16','vqmovnal.u16',\n            'vqmovn.u32','vqmovnal.u32',\n            'vqmovn.u64','vqmovnal.u64',\n\n            'vqshl.u8','vqshlal.u8',\n            'vqshl.u16','vqshlal.u16',\n            'vqshl.u32','vqshlal.u32',\n            'vqshl.u64','vqshlal.u64',\n\n            'vqshrn.u16','vqshrnal.u16',\n            'vqshrn.u32','vqshrnal.u32',\n            'vqshrn.u64','vqshrnal.u64',\n\n            'vqrshl.u8','vqrshlal.u8',\n            'vqrshl.u16','vqrshlal.u16',\n            'vqrshl.u32','vqrshlal.u32',\n            'vqrshl.u64','vqrshlal.u64',\n\n            'vqrshrn.u16','vqrshrnal.u16',\n            'vqrshrn.u32','vqrshrnal.u32',\n            'vqrshrn.u64','vqrshrnal.u64',\n\n            'vrhadd.u8','vrhaddal.u8',\n            'vrhadd.u16','vrhaddal.u16',\n            'vrhadd.u32','vrhaddal.u32',\n\n            'vrshl.u8','vrshlal.u8',\n            'vrshl.u16','vrshlal.u16',\n            'vrshl.u32','vrshlal.u32',\n            'vrshl.u64','vrshlal.u64',\n\n            'vrshr.u8','vrshral.u8',\n            'vrshr.u16','vrshral.u16',\n            'vrshr.u32','vrshral.u32',\n            'vrshr.u64','vrshral.u64',\n\n            'vrsra.u8','vrsraal.u8',\n            'vrsra.u16','vrsraal.u16',\n            'vrsra.u32','vrsraal.u32',\n            'vrsra.u64','vrsraal.u64'\n            ),\n        /* Unconditional VFPv3 & NEON SIMD Floating-Point Instructions */\n        26 => array(\n            'vabd.f32','vabdal.f32',\n\n            'vabs.f32','vabsal.f32',\n            'vabs.f64','vabsal.f64',\n\n            'vacge.f32','vacgeal.f32',\n            'vacgt.f32','vacgtal.f32',\n            'vacle.f32','vacleal.f32',\n            'vaclt.f32','vacltal.f32',\n\n            'vadd.f32','vaddal.f32',\n            'vadd.f64','vaddal.f64',\n\n            'vceq.f32','vceqal.f32',\n            'vcge.f32','vcgeal.f32',\n            'vcle.f32','vcleal.f32',\n            'vcgt.f32','vcgtal.f32',\n            'vclt.f32','vcltal.f32',\n\n            'vcmp.f32','vcmpal.f32',\n            'vcmp.f64','vcmpal.f64',\n\n            'vcmpe.f32','vcmpeal.f32',\n            'vcmpe.f64','vcmpeal.f64',\n\n            'vcvt.s16.f32','vcvtal.s16.f32',\n            'vcvt.s16.f64','vcvtal.s16.f64',\n            'vcvt.s32.f32','vcvtal.s32.f32',\n            'vcvt.s32.f64','vcvtal.s32.f64',\n            'vcvt.u16.f32','vcvtal.u16.f32',\n            'vcvt.u16.f64','vcvtal.u16.f64',\n            'vcvt.u32.f32','vcvtal.u32.f32',\n            'vcvt.u32.f64','vcvtal.u32.f64',\n            'vcvt.f16.f32','vcvtal.f16.f32',\n            'vcvt.f32.s32','vcvtal.f32.s32',\n            'vcvt.f32.u32','vcvtal.f32.u32',\n            'vcvt.f32.f16','vcvtal.f32.f16',\n            'vcvt.f32.f64','vcvtal.f32.f64',\n            'vcvt.f64.s32','vcvtal.f64.s32',\n            'vcvt.f64.u32','vcvtal.f64.u32',\n            'vcvt.f64.f32','vcvtal.f64.f32',\n\n            'vcvtr.s32.f32','vcvtral.s32.f32',\n            'vcvtr.s32.f64','vcvtral.s32.f64',\n            'vcvtr.u32.f32','vcvtral.u32.f32',\n            'vcvtr.u32.f64','vcvtral.u32.f64',\n\n            'vcvtb.f16.f32','vcvtbal.f16.f32',\n            'vcvtb.f32.f16','vcvtbal.f32.f16',\n\n            'vcvtt.f16.f32','vcvttal.f16.f32',\n            'vcvtt.f32.f16','vcvttal.f32.f16',\n\n            'vdiv.f32','vdival.f32',\n            'vdiv.f64','vdival.f64',\n\n            'vmax.f32','vmaxal.f32',\n            'vmin.f32','vminal.f32',\n\n            'vmla.f32','vmlaal.f32',\n            'vmla.f64','vmlaal.f64',\n\n            'vmls.f32','vmlsal.f32',\n            'vmls.f64','vmlsal.f64',\n\n            'vmul.f32','vmulal.f32',\n            'vmul.f64','vmulal.f64',\n\n            'vneg.f32','vnegal.f32',\n            'vneg.f64','vnegal.f64',\n\n            'vnmla.f32','vnmlaal.f32',\n            'vnmla.f64','vnmlaal.f64',\n\n            'vnmls.f32','vnmlsal.f32',\n            'vnmls.f64','vnmlsal.f64',\n\n            'vnmul.f64','vnmulal.f64',\n            'vnmul.f32','vnmulal.f32',\n\n            'vpadd.f32','vpaddal.f32',\n\n            'vpmax.f32','vpmaxal.f32',\n            'vpmin.f32','vpminal.f32',\n\n            'vrecpe.u32','vrecpeal.u32',\n            'vrecpe.f32','vrecpeal.f32',\n            'vrecps.f32','vrecpsal.f32',\n\n            'vrsqrte.u32','vrsqrteal.u32',\n            'vrsqrte.f32','vrsqrteal.f32',\n            'vrsqrts.f32','vrsqrtsal.f32',\n\n            'vsqrt.f32','vsqrtal.f32',\n            'vsqrt.f64','vsqrtal.f64',\n\n            'vsub.f32','vsubal.f32',\n            'vsub.f64','vsubal.f64'\n            ),\n        /* Conditional VFPv3 & NEON SIMD Memory Access Instructions */\n        27 => array(\n            /* Conditional VFPv3 & NEON SIMD Memory Access: Loads */\n            'vldeq.8','vldne.8','vldcs.8','vldhs.8','vldcc.8','vldlo.8','vldmi.8','vldpl.8','vldvs.8','vldvc.8','vldhi.8','vldls.8','vldge.8','vldlt.8','vldgt.8','vldle.8',\n            'vldeq.16','vldne.16','vldcs.16','vldhs.16','vldcc.16','vldlo.16','vldmi.16','vldpl.16','vldvs.16','vldvc.16','vldhi.16','vldls.16','vldge.16','vldlt.16','vldgt.16','vldle.16',\n            'vldeq.32','vldne.32','vldcs.32','vldhs.32','vldcc.32','vldlo.32','vldmi.32','vldpl.32','vldvs.32','vldvc.32','vldhi.32','vldls.32','vldge.32','vldlt.32','vldgt.32','vldle.32',\n            'vldeq.64','vldne.64','vldcs.64','vldhs.64','vldcc.64','vldlo.64','vldmi.64','vldpl.64','vldvs.64','vldvc.64','vldhi.64','vldls.64','vldge.64','vldlt.64','vldgt.64','vldle.64',\n\n            'vld1eq.8','vld1ne.8','vld1cs.8','vld1hs.8','vld1cc.8','vld1lo.8','vld1mi.8','vld1pl.8','vld1vs.8','vld1vc.8','vld1hi.8','vld1ls.8','vld1ge.8','vld1lt.8','vld1gt.8','vld1le.8',\n            'vld1eq.16','vld1ne.16','vld1cs.16','vld1hs.16','vld1cc.16','vld1lo.16','vld1mi.16','vld1pl.16','vld1vs.16','vld1vc.16','vld1hi.16','vld1ls.16','vld1ge.16','vld1lt.16','vld1gt.16','vld1le.16',\n            'vld1eq.32','vld1ne.32','vld1cs.32','vld1hs.32','vld1cc.32','vld1lo.32','vld1mi.32','vld1pl.32','vld1vs.32','vld1vc.32','vld1hi.32','vld1ls.32','vld1ge.32','vld1lt.32','vld1gt.32','vld1le.32',\n\n            'vld2eq.8','vld2ne.8','vld2cs.8','vld2hs.8','vld2cc.8','vld2lo.8','vld2mi.8','vld2pl.8','vld2vs.8','vld2vc.8','vld2hi.8','vld2ls.8','vld2ge.8','vld2lt.8','vld2gt.8','vld2le.8',\n            'vld2eq.16','vld2ne.16','vld2cs.16','vld2hs.16','vld2cc.16','vld2lo.16','vld2mi.16','vld2pl.16','vld2vs.16','vld2vc.16','vld2hi.16','vld2ls.16','vld2ge.16','vld2lt.16','vld2gt.16','vld2le.16',\n            'vld2eq.32','vld2ne.32','vld2cs.32','vld2hs.32','vld2cc.32','vld2lo.32','vld2mi.32','vld2pl.32','vld2vs.32','vld2vc.32','vld2hi.32','vld2ls.32','vld2ge.32','vld2lt.32','vld2gt.32','vld2le.32',\n\n            'vld3eq.8','vld3ne.8','vld3cs.8','vld3hs.8','vld3cc.8','vld3lo.8','vld3mi.8','vld3pl.8','vld3vs.8','vld3vc.8','vld3hi.8','vld3ls.8','vld3ge.8','vld3lt.8','vld3gt.8','vld3le.8',\n            'vld3eq.16','vld3ne.16','vld3cs.16','vld3hs.16','vld3cc.16','vld3lo.16','vld3mi.16','vld3pl.16','vld3vs.16','vld3vc.16','vld3hi.16','vld3ls.16','vld3ge.16','vld3lt.16','vld3gt.16','vld3le.16',\n            'vld3eq.32','vld3ne.32','vld3cs.32','vld3hs.32','vld3cc.32','vld3lo.32','vld3mi.32','vld3pl.32','vld3vs.32','vld3vc.32','vld3hi.32','vld3ls.32','vld3ge.32','vld3lt.32','vld3gt.32','vld3le.32',\n\n            'vld4eq.8','vld4ne.8','vld4cs.8','vld4hs.8','vld4cc.8','vld4lo.8','vld4mi.8','vld4pl.8','vld4vs.8','vld4vc.8','vld4hi.8','vld4ls.8','vld4ge.8','vld4lt.8','vld4gt.8','vld4le.8',\n            'vld4eq.16','vld4ne.16','vld4cs.16','vld4hs.16','vld4cc.16','vld4lo.16','vld4mi.16','vld4pl.16','vld4vs.16','vld4vc.16','vld4hi.16','vld4ls.16','vld4ge.16','vld4lt.16','vld4gt.16','vld4le.16',\n            'vld4eq.32','vld4ne.32','vld4cs.32','vld4hs.32','vld4cc.32','vld4lo.32','vld4mi.32','vld4pl.32','vld4vs.32','vld4vc.32','vld4hi.32','vld4ls.32','vld4ge.32','vld4lt.32','vld4gt.32','vld4le.32',\n\n            'vldmeq','vldmne','vldmcs','vldmhs','vldmcc','vldmlo','vldmmi','vldmpl','vldmvs','vldmvc','vldmhi','vldmls','vldmge','vldmlt','vldmgt','vldmle',\n            'vldmeq.32','vldmne.32','vldmcs.32','vldmhs.32','vldmcc.32','vldmlo.32','vldmmi.32','vldmpl.32','vldmvs.32','vldmvc.32','vldmhi.32','vldmls.32','vldmge.32','vldmlt.32','vldmgt.32','vldmle.32',\n            'vldmeq.64','vldmne.64','vldmcs.64','vldmhs.64','vldmcc.64','vldmlo.64','vldmmi.64','vldmpl.64','vldmvs.64','vldmvc.64','vldmhi.64','vldmls.64','vldmge.64','vldmlt.64','vldmgt.64','vldmle.64',\n\n            'vldmiaeq','vldmiane','vldmiacs','vldmiahs','vldmiacc','vldmialo','vldmiami','vldmiapl','vldmiavs','vldmiavc','vldmiahi','vldmials','vldmiage','vldmialt','vldmiagt','vldmiale',\n            'vldmiaeq.32','vldmiane.32','vldmiacs.32','vldmiahs.32','vldmiacc.32','vldmialo.32','vldmiami.32','vldmiapl.32','vldmiavs.32','vldmiavc.32','vldmiahi.32','vldmials.32','vldmiage.32','vldmialt.32','vldmiagt.32','vldmiale.32',\n            'vldmiaeq.64','vldmiane.64','vldmiacs.64','vldmiahs.64','vldmiacc.64','vldmialo.64','vldmiami.64','vldmiapl.64','vldmiavs.64','vldmiavc.64','vldmiahi.64','vldmials.64','vldmiage.64','vldmialt.64','vldmiagt.64','vldmiale.64',\n\n            'vldmdbeq','vldmdbne','vldmdbcs','vldmdbhs','vldmdbcc','vldmdblo','vldmdbmi','vldmdbpl','vldmdbvs','vldmdbvc','vldmdbhi','vldmdbls','vldmdbge','vldmdblt','vldmdbgt','vldmdble',\n            'vldmdbeq.32','vldmdbne.32','vldmdbcs.32','vldmdbhs.32','vldmdbcc.32','vldmdblo.32','vldmdbmi.32','vldmdbpl.32','vldmdbvs.32','vldmdbvc.32','vldmdbhi.32','vldmdbls.32','vldmdbge.32','vldmdblt.32','vldmdbgt.32','vldmdble.32',\n            'vldmdbeq.64','vldmdbne.64','vldmdbcs.64','vldmdbhs.64','vldmdbcc.64','vldmdblo.64','vldmdbmi.64','vldmdbpl.64','vldmdbvs.64','vldmdbvc.64','vldmdbhi.64','vldmdbls.64','vldmdbge.64','vldmdblt.64','vldmdbgt.64','vldmdble.64',\n\n            'vldreq','vldrne','vldrcs','vldrhs','vldrcc','vldrlo','vldrmi','vldrpl','vldrvs','vldrvc','vldrhi','vldrls','vldrge','vldrlt','vldrgt','vldrle',\n            'vldreq.32','vldrne.32','vldrcs.32','vldrhs.32','vldrcc.32','vldrlo.32','vldrmi.32','vldrpl.32','vldrvs.32','vldrvc.32','vldrhi.32','vldrls.32','vldrge.32','vldrlt.32','vldrgt.32','vldrle.32',\n            'vldreq.64','vldrne.64','vldrcs.64','vldrhs.64','vldrcc.64','vldrlo.64','vldrmi.64','vldrpl.64','vldrvs.64','vldrvc.64','vldrhi.64','vldrls.64','vldrge.64','vldrlt.64','vldrgt.64','vldrle.64',\n\n            'vpopeq','vpopne','vpopcs','vpophs','vpopcc','vpoplo','vpopmi','vpoppl','vpopvs','vpopvc','vpophi','vpopls','vpopge','vpoplt','vpopgt','vpople',\n            'vpopeq.32','vpopne.32','vpopcs.32','vpophs.32','vpopcc.32','vpoplo.32','vpopmi.32','vpoppl.32','vpopvs.32','vpopvc.32','vpophi.32','vpopls.32','vpopge.32','vpoplt.32','vpopgt.32','vpople.32',\n            'vpopeq.64','vpopne.64','vpopcs.64','vpophs.64','vpopcc.64','vpoplo.64','vpopmi.64','vpoppl.64','vpopvs.64','vpopvc.64','vpophi.64','vpopls.64','vpopge.64','vpoplt.64','vpopgt.64','vpople.64',\n\n            /* Conditional VFPv3 & NEON SIMD Memory Access: Stores */\n            'vst1eq.8','vst1ne.8','vst1cs.8','vst1hs.8','vst1cc.8','vst1lo.8','vst1mi.8','vst1pl.8','vst1vs.8','vst1vc.8','vst1hi.8','vst1ls.8','vst1ge.8','vst1lt.8','vst1gt.8','vst1le.8',\n            'vst1eq.16','vst1ne.16','vst1cs.16','vst1hs.16','vst1cc.16','vst1lo.16','vst1mi.16','vst1pl.16','vst1vs.16','vst1vc.16','vst1hi.16','vst1ls.16','vst1ge.16','vst1lt.16','vst1gt.16','vst1le.16',\n            'vst1eq.32','vst1ne.32','vst1cs.32','vst1hs.32','vst1cc.32','vst1lo.32','vst1mi.32','vst1pl.32','vst1vs.32','vst1vc.32','vst1hi.32','vst1ls.32','vst1ge.32','vst1lt.32','vst1gt.32','vst1le.32',\n            'vst1eq.64','vst1ne.64','vst1cs.64','vst1hs.64','vst1cc.64','vst1lo.64','vst1mi.64','vst1pl.64','vst1vs.64','vst1vc.64','vst1hi.64','vst1ls.64','vst1ge.64','vst1lt.64','vst1gt.64','vst1le.64',\n\n            'vst2eq.8','vst2ne.8','vst2cs.8','vst2hs.8','vst2cc.8','vst2lo.8','vst2mi.8','vst2pl.8','vst2vs.8','vst2vc.8','vst2hi.8','vst2ls.8','vst2ge.8','vst2lt.8','vst2gt.8','vst2le.8',\n            'vst2eq.16','vst2ne.16','vst2cs.16','vst2hs.16','vst2cc.16','vst2lo.16','vst2mi.16','vst2pl.16','vst2vs.16','vst2vc.16','vst2hi.16','vst2ls.16','vst2ge.16','vst2lt.16','vst2gt.16','vst2le.16',\n            'vst2eq.32','vst2ne.32','vst2cs.32','vst2hs.32','vst2cc.32','vst2lo.32','vst2mi.32','vst2pl.32','vst2vs.32','vst2vc.32','vst2hi.32','vst2ls.32','vst2ge.32','vst2lt.32','vst2gt.32','vst2le.32',\n\n            'vst3eq.8','vst3ne.8','vst3cs.8','vst3hs.8','vst3cc.8','vst3lo.8','vst3mi.8','vst3pl.8','vst3vs.8','vst3vc.8','vst3hi.8','vst3ls.8','vst3ge.8','vst3lt.8','vst3gt.8','vst3le.8',\n            'vst3eq.16','vst3ne.16','vst3cs.16','vst3hs.16','vst3cc.16','vst3lo.16','vst3mi.16','vst3pl.16','vst3vs.16','vst3vc.16','vst3hi.16','vst3ls.16','vst3ge.16','vst3lt.16','vst3gt.16','vst3le.16',\n            'vst3eq.32','vst3ne.32','vst3cs.32','vst3hs.32','vst3cc.32','vst3lo.32','vst3mi.32','vst3pl.32','vst3vs.32','vst3vc.32','vst3hi.32','vst3ls.32','vst3ge.32','vst3lt.32','vst3gt.32','vst3le.32',\n\n            'vst4eq.8','vst4ne.8','vst4cs.8','vst4hs.8','vst4cc.8','vst4lo.8','vst4mi.8','vst4pl.8','vst4vs.8','vst4vc.8','vst4hi.8','vst4ls.8','vst4ge.8','vst4lt.8','vst4gt.8','vst4le.8',\n            'vst4eq.16','vst4ne.16','vst4cs.16','vst4hs.16','vst4cc.16','vst4lo.16','vst4mi.16','vst4pl.16','vst4vs.16','vst4vc.16','vst4hi.16','vst4ls.16','vst4ge.16','vst4lt.16','vst4gt.16','vst4le.16',\n            'vst4eq.32','vst4ne.32','vst4cs.32','vst4hs.32','vst4cc.32','vst4lo.32','vst4mi.32','vst4pl.32','vst4vs.32','vst4vc.32','vst4hi.32','vst4ls.32','vst4ge.32','vst4lt.32','vst4gt.32','vst4le.32',\n\n            'vstmeq','vstmne','vstmcs','vstmhs','vstmcc','vstmlo','vstmmi','vstmpl','vstmvs','vstmvc','vstmhi','vstmls','vstmge','vstmlt','vstmgt','vstmle',\n            'vstmeq.32','vstmne.32','vstmcs.32','vstmhs.32','vstmcc.32','vstmlo.32','vstmmi.32','vstmpl.32','vstmvs.32','vstmvc.32','vstmhi.32','vstmls.32','vstmge.32','vstmlt.32','vstmgt.32','vstmle.32',\n            'vstmeq.64','vstmne.64','vstmcs.64','vstmhs.64','vstmcc.64','vstmlo.64','vstmmi.64','vstmpl.64','vstmvs.64','vstmvc.64','vstmhi.64','vstmls.64','vstmge.64','vstmlt.64','vstmgt.64','vstmle.64',\n\n            'vstmiaeq','vstmiane','vstmiacs','vstmiahs','vstmiacc','vstmialo','vstmiami','vstmiapl','vstmiavs','vstmiavc','vstmiahi','vstmials','vstmiage','vstmialt','vstmiagt','vstmiale',\n            'vstmiaeq.32','vstmiane.32','vstmiacs.32','vstmiahs.32','vstmiacc.32','vstmialo.32','vstmiami.32','vstmiapl.32','vstmiavs.32','vstmiavc.32','vstmiahi.32','vstmials.32','vstmiage.32','vstmialt.32','vstmiagt.32','vstmiale.32',\n            'vstmiaeq.64','vstmiane.64','vstmiacs.64','vstmiahs.64','vstmiacc.64','vstmialo.64','vstmiami.64','vstmiapl.64','vstmiavs.64','vstmiavc.64','vstmiahi.64','vstmials.64','vstmiage.64','vstmialt.64','vstmiagt.64','vstmiale.64',\n\n            'vstmdbeq','vstmdbne','vstmdbcs','vstmdbhs','vstmdbcc','vstmdblo','vstmdbmi','vstmdbpl','vstmdbvs','vstmdbvc','vstmdbhi','vstmdbls','vstmdbge','vstmdblt','vstmdbgt','vstmdble',\n            'vstmdbeq.32','vstmdbne.32','vstmdbcs.32','vstmdbhs.32','vstmdbcc.32','vstmdblo.32','vstmdbmi.32','vstmdbpl.32','vstmdbvs.32','vstmdbvc.32','vstmdbhi.32','vstmdbls.32','vstmdbge.32','vstmdblt.32','vstmdbgt.32','vstmdble.32',\n            'vstmdbeq.64','vstmdbne.64','vstmdbcs.64','vstmdbhs.64','vstmdbcc.64','vstmdblo.64','vstmdbmi.64','vstmdbpl.64','vstmdbvs.64','vstmdbvc.64','vstmdbhi.64','vstmdbls.64','vstmdbge.64','vstmdblt.64','vstmdbgt.64','vstmdble.64',\n\n            'vstreq','vstrne','vstrcs','vstrhs','vstrcc','vstrlo','vstrmi','vstrpl','vstrvs','vstrvc','vstrhi','vstrls','vstrge','vstrlt','vstrgt','vstrle',\n            'vstreq.32','vstrne.32','vstrcs.32','vstrhs.32','vstrcc.32','vstrlo.32','vstrmi.32','vstrpl.32','vstrvs.32','vstrvc.32','vstrhi.32','vstrls.32','vstrge.32','vstrlt.32','vstrgt.32','vstrle.32',\n            'vstreq.64','vstrne.64','vstrcs.64','vstrhs.64','vstrcc.64','vstrlo.64','vstrmi.64','vstrpl.64','vstrvs.64','vstrvc.64','vstrhi.64','vstrls.64','vstrge.64','vstrlt.64','vstrgt.64','vstrle.64',\n\n            'vpusheq','vpushne','vpushcs','vpushhs','vpushcc','vpushlo','vpushmi','vpushpl','vpushvs','vpushvc','vpushhi','vpushls','vpushge','vpushlt','vpushgt','vpushle',\n            'vpusheq.32','vpushne.32','vpushcs.32','vpushhs.32','vpushcc.32','vpushlo.32','vpushmi.32','vpushpl.32','vpushvs.32','vpushvc.32','vpushhi.32','vpushls.32','vpushge.32','vpushlt.32','vpushgt.32','vpushle.32',\n            'vpusheq.64','vpushne.64','vpushcs.64','vpushhs.64','vpushcc.64','vpushlo.64','vpushmi.64','vpushpl.64','vpushvs.64','vpushvc.64','vpushhi.64','vpushls.64','vpushge.64','vpushlt.64','vpushgt.64','vpushle.64'\n            ),\n        /* Conditional NEON SIMD Logical Instructions */\n        28 => array(\n            'vandeq','vandne','vandcs','vandhs','vandcc','vandlo','vandmi','vandpl','vandvs','vandvc','vandhi','vandls','vandge','vandlt','vandgt','vandle',\n            'vandeq.i8','vandne.i8','vandcs.i8','vandhs.i8','vandcc.i8','vandlo.i8','vandmi.i8','vandpl.i8','vandvs.i8','vandvc.i8','vandhi.i8','vandls.i8','vandge.i8','vandlt.i8','vandgt.i8','vandle.i8',\n            'vandeq.i16','vandne.i16','vandcs.i16','vandhs.i16','vandcc.i16','vandlo.i16','vandmi.i16','vandpl.i16','vandvs.i16','vandvc.i16','vandhi.i16','vandls.i16','vandge.i16','vandlt.i16','vandgt.i16','vandle.i16',\n            'vandeq.i32','vandne.i32','vandcs.i32','vandhs.i32','vandcc.i32','vandlo.i32','vandmi.i32','vandpl.i32','vandvs.i32','vandvc.i32','vandhi.i32','vandls.i32','vandge.i32','vandlt.i32','vandgt.i32','vandle.i32',\n            'vandeq.i64','vandne.i64','vandcs.i64','vandhs.i64','vandcc.i64','vandlo.i64','vandmi.i64','vandpl.i64','vandvs.i64','vandvc.i64','vandhi.i64','vandls.i64','vandge.i64','vandlt.i64','vandgt.i64','vandle.i64',\n            'vandeq.s8','vandne.s8','vandcs.s8','vandhs.s8','vandcc.s8','vandlo.s8','vandmi.s8','vandpl.s8','vandvs.s8','vandvc.s8','vandhi.s8','vandls.s8','vandge.s8','vandlt.s8','vandgt.s8','vandle.s8',\n            'vandeq.s16','vandne.s16','vandcs.s16','vandhs.s16','vandcc.s16','vandlo.s16','vandmi.s16','vandpl.s16','vandvs.s16','vandvc.s16','vandhi.s16','vandls.s16','vandge.s16','vandlt.s16','vandgt.s16','vandle.s16',\n            'vandeq.s32','vandne.s32','vandcs.s32','vandhs.s32','vandcc.s32','vandlo.s32','vandmi.s32','vandpl.s32','vandvs.s32','vandvc.s32','vandhi.s32','vandls.s32','vandge.s32','vandlt.s32','vandgt.s32','vandle.s32',\n            'vandeq.s64','vandne.s64','vandcs.s64','vandhs.s64','vandcc.s64','vandlo.s64','vandmi.s64','vandpl.s64','vandvs.s64','vandvc.s64','vandhi.s64','vandls.s64','vandge.s64','vandlt.s64','vandgt.s64','vandle.s64',\n            'vandeq.u8','vandne.u8','vandcs.u8','vandhs.u8','vandcc.u8','vandlo.u8','vandmi.u8','vandpl.u8','vandvs.u8','vandvc.u8','vandhi.u8','vandls.u8','vandge.u8','vandlt.u8','vandgt.u8','vandle.u8',\n            'vandeq.u16','vandne.u16','vandcs.u16','vandhs.u16','vandcc.u16','vandlo.u16','vandmi.u16','vandpl.u16','vandvs.u16','vandvc.u16','vandhi.u16','vandls.u16','vandge.u16','vandlt.u16','vandgt.u16','vandle.u16',\n            'vandeq.u32','vandne.u32','vandcs.u32','vandhs.u32','vandcc.u32','vandlo.u32','vandmi.u32','vandpl.u32','vandvs.u32','vandvc.u32','vandhi.u32','vandls.u32','vandge.u32','vandlt.u32','vandgt.u32','vandle.u32',\n            'vandeq.u64','vandne.u64','vandcs.u64','vandhs.u64','vandcc.u64','vandlo.u64','vandmi.u64','vandpl.u64','vandvs.u64','vandvc.u64','vandhi.u64','vandls.u64','vandge.u64','vandlt.u64','vandgt.u64','vandle.u64',\n            'vandeq.f32','vandne.f32','vandcs.f32','vandhs.f32','vandcc.f32','vandlo.f32','vandmi.f32','vandpl.f32','vandvs.f32','vandvc.f32','vandhi.f32','vandls.f32','vandge.f32','vandlt.f32','vandgt.f32','vandle.f32',\n            'vandeq.f64','vandne.f64','vandcs.f64','vandhs.f64','vandcc.f64','vandlo.f64','vandmi.f64','vandpl.f64','vandvs.f64','vandvc.f64','vandhi.f64','vandls.f64','vandge.f64','vandlt.f64','vandgt.f64','vandle.f64',\n\n            'vbiceq','vbicne','vbiccs','vbichs','vbiccc','vbiclo','vbicmi','vbicpl','vbicvs','vbicvc','vbichi','vbicls','vbicge','vbiclt','vbicgt','vbicle',\n            'vbiceq.i8','vbicne.i8','vbiccs.i8','vbichs.i8','vbiccc.i8','vbiclo.i8','vbicmi.i8','vbicpl.i8','vbicvs.i8','vbicvc.i8','vbichi.i8','vbicls.i8','vbicge.i8','vbiclt.i8','vbicgt.i8','vbicle.i8',\n            'vbiceq.i16','vbicne.i16','vbiccs.i16','vbichs.i16','vbiccc.i16','vbiclo.i16','vbicmi.i16','vbicpl.i16','vbicvs.i16','vbicvc.i16','vbichi.i16','vbicls.i16','vbicge.i16','vbiclt.i16','vbicgt.i16','vbicle.i16',\n            'vbiceq.i32','vbicne.i32','vbiccs.i32','vbichs.i32','vbiccc.i32','vbiclo.i32','vbicmi.i32','vbicpl.i32','vbicvs.i32','vbicvc.i32','vbichi.i32','vbicls.i32','vbicge.i32','vbiclt.i32','vbicgt.i32','vbicle.i32',\n            'vbiceq.i64','vbicne.i64','vbiccs.i64','vbichs.i64','vbiccc.i64','vbiclo.i64','vbicmi.i64','vbicpl.i64','vbicvs.i64','vbicvc.i64','vbichi.i64','vbicls.i64','vbicge.i64','vbiclt.i64','vbicgt.i64','vbicle.i64',\n            'vbiceq.s8','vbicne.s8','vbiccs.s8','vbichs.s8','vbiccc.s8','vbiclo.s8','vbicmi.s8','vbicpl.s8','vbicvs.s8','vbicvc.s8','vbichi.s8','vbicls.s8','vbicge.s8','vbiclt.s8','vbicgt.s8','vbicle.s8',\n            'vbiceq.s16','vbicne.s16','vbiccs.s16','vbichs.s16','vbiccc.s16','vbiclo.s16','vbicmi.s16','vbicpl.s16','vbicvs.s16','vbicvc.s16','vbichi.s16','vbicls.s16','vbicge.s16','vbiclt.s16','vbicgt.s16','vbicle.s16',\n            'vbiceq.s32','vbicne.s32','vbiccs.s32','vbichs.s32','vbiccc.s32','vbiclo.s32','vbicmi.s32','vbicpl.s32','vbicvs.s32','vbicvc.s32','vbichi.s32','vbicls.s32','vbicge.s32','vbiclt.s32','vbicgt.s32','vbicle.s32',\n            'vbiceq.s64','vbicne.s64','vbiccs.s64','vbichs.s64','vbiccc.s64','vbiclo.s64','vbicmi.s64','vbicpl.s64','vbicvs.s64','vbicvc.s64','vbichi.s64','vbicls.s64','vbicge.s64','vbiclt.s64','vbicgt.s64','vbicle.s64',\n            'vbiceq.u8','vbicne.u8','vbiccs.u8','vbichs.u8','vbiccc.u8','vbiclo.u8','vbicmi.u8','vbicpl.u8','vbicvs.u8','vbicvc.u8','vbichi.u8','vbicls.u8','vbicge.u8','vbiclt.u8','vbicgt.u8','vbicle.u8',\n            'vbiceq.u16','vbicne.u16','vbiccs.u16','vbichs.u16','vbiccc.u16','vbiclo.u16','vbicmi.u16','vbicpl.u16','vbicvs.u16','vbicvc.u16','vbichi.u16','vbicls.u16','vbicge.u16','vbiclt.u16','vbicgt.u16','vbicle.u16',\n            'vbiceq.u32','vbicne.u32','vbiccs.u32','vbichs.u32','vbiccc.u32','vbiclo.u32','vbicmi.u32','vbicpl.u32','vbicvs.u32','vbicvc.u32','vbichi.u32','vbicls.u32','vbicge.u32','vbiclt.u32','vbicgt.u32','vbicle.u32',\n            'vbiceq.u64','vbicne.u64','vbiccs.u64','vbichs.u64','vbiccc.u64','vbiclo.u64','vbicmi.u64','vbicpl.u64','vbicvs.u64','vbicvc.u64','vbichi.u64','vbicls.u64','vbicge.u64','vbiclt.u64','vbicgt.u64','vbicle.u64',\n            'vbiceq.f32','vbicne.f32','vbiccs.f32','vbichs.f32','vbiccc.f32','vbiclo.f32','vbicmi.f32','vbicpl.f32','vbicvs.f32','vbicvc.f32','vbichi.f32','vbicls.f32','vbicge.f32','vbiclt.f32','vbicgt.f32','vbicle.f32',\n            'vbiceq.f64','vbicne.f64','vbiccs.f64','vbichs.f64','vbiccc.f64','vbiclo.f64','vbicmi.f64','vbicpl.f64','vbicvs.f64','vbicvc.f64','vbichi.f64','vbicls.f64','vbicge.f64','vbiclt.f64','vbicgt.f64','vbicle.f64',\n\n            'vbifeq','vbifne','vbifcs','vbifhs','vbifcc','vbiflo','vbifmi','vbifpl','vbifvs','vbifvc','vbifhi','vbifls','vbifge','vbiflt','vbifgt','vbifle',\n            'vbifeq.i8','vbifne.i8','vbifcs.i8','vbifhs.i8','vbifcc.i8','vbiflo.i8','vbifmi.i8','vbifpl.i8','vbifvs.i8','vbifvc.i8','vbifhi.i8','vbifls.i8','vbifge.i8','vbiflt.i8','vbifgt.i8','vbifle.i8',\n            'vbifeq.i16','vbifne.i16','vbifcs.i16','vbifhs.i16','vbifcc.i16','vbiflo.i16','vbifmi.i16','vbifpl.i16','vbifvs.i16','vbifvc.i16','vbifhi.i16','vbifls.i16','vbifge.i16','vbiflt.i16','vbifgt.i16','vbifle.i16',\n            'vbifeq.i32','vbifne.i32','vbifcs.i32','vbifhs.i32','vbifcc.i32','vbiflo.i32','vbifmi.i32','vbifpl.i32','vbifvs.i32','vbifvc.i32','vbifhi.i32','vbifls.i32','vbifge.i32','vbiflt.i32','vbifgt.i32','vbifle.i32',\n            'vbifeq.i64','vbifne.i64','vbifcs.i64','vbifhs.i64','vbifcc.i64','vbiflo.i64','vbifmi.i64','vbifpl.i64','vbifvs.i64','vbifvc.i64','vbifhi.i64','vbifls.i64','vbifge.i64','vbiflt.i64','vbifgt.i64','vbifle.i64',\n            'vbifeq.s8','vbifne.s8','vbifcs.s8','vbifhs.s8','vbifcc.s8','vbiflo.s8','vbifmi.s8','vbifpl.s8','vbifvs.s8','vbifvc.s8','vbifhi.s8','vbifls.s8','vbifge.s8','vbiflt.s8','vbifgt.s8','vbifle.s8',\n            'vbifeq.s16','vbifne.s16','vbifcs.s16','vbifhs.s16','vbifcc.s16','vbiflo.s16','vbifmi.s16','vbifpl.s16','vbifvs.s16','vbifvc.s16','vbifhi.s16','vbifls.s16','vbifge.s16','vbiflt.s16','vbifgt.s16','vbifle.s16',\n            'vbifeq.s32','vbifne.s32','vbifcs.s32','vbifhs.s32','vbifcc.s32','vbiflo.s32','vbifmi.s32','vbifpl.s32','vbifvs.s32','vbifvc.s32','vbifhi.s32','vbifls.s32','vbifge.s32','vbiflt.s32','vbifgt.s32','vbifle.s32',\n            'vbifeq.s64','vbifne.s64','vbifcs.s64','vbifhs.s64','vbifcc.s64','vbiflo.s64','vbifmi.s64','vbifpl.s64','vbifvs.s64','vbifvc.s64','vbifhi.s64','vbifls.s64','vbifge.s64','vbiflt.s64','vbifgt.s64','vbifle.s64',\n            'vbifeq.u8','vbifne.u8','vbifcs.u8','vbifhs.u8','vbifcc.u8','vbiflo.u8','vbifmi.u8','vbifpl.u8','vbifvs.u8','vbifvc.u8','vbifhi.u8','vbifls.u8','vbifge.u8','vbiflt.u8','vbifgt.u8','vbifle.u8',\n            'vbifeq.u16','vbifne.u16','vbifcs.u16','vbifhs.u16','vbifcc.u16','vbiflo.u16','vbifmi.u16','vbifpl.u16','vbifvs.u16','vbifvc.u16','vbifhi.u16','vbifls.u16','vbifge.u16','vbiflt.u16','vbifgt.u16','vbifle.u16',\n            'vbifeq.u32','vbifne.u32','vbifcs.u32','vbifhs.u32','vbifcc.u32','vbiflo.u32','vbifmi.u32','vbifpl.u32','vbifvs.u32','vbifvc.u32','vbifhi.u32','vbifls.u32','vbifge.u32','vbiflt.u32','vbifgt.u32','vbifle.u32',\n            'vbifeq.u64','vbifne.u64','vbifcs.u64','vbifhs.u64','vbifcc.u64','vbiflo.u64','vbifmi.u64','vbifpl.u64','vbifvs.u64','vbifvc.u64','vbifhi.u64','vbifls.u64','vbifge.u64','vbiflt.u64','vbifgt.u64','vbifle.u64',\n            'vbifeq.f32','vbifne.f32','vbifcs.f32','vbifhs.f32','vbifcc.f32','vbiflo.f32','vbifmi.f32','vbifpl.f32','vbifvs.f32','vbifvc.f32','vbifhi.f32','vbifls.f32','vbifge.f32','vbiflt.f32','vbifgt.f32','vbifle.f32',\n            'vbifeq.f64','vbifne.f64','vbifcs.f64','vbifhs.f64','vbifcc.f64','vbiflo.f64','vbifmi.f64','vbifpl.f64','vbifvs.f64','vbifvc.f64','vbifhi.f64','vbifls.f64','vbifge.f64','vbiflt.f64','vbifgt.f64','vbifle.f64',\n\n            'vbiteq','vbitne','vbitcs','vbiths','vbitcc','vbitlo','vbitmi','vbitpl','vbitvs','vbitvc','vbithi','vbitls','vbitge','vbitlt','vbitgt','vbitle',\n            'vbiteq.i8','vbitne.i8','vbitcs.i8','vbiths.i8','vbitcc.i8','vbitlo.i8','vbitmi.i8','vbitpl.i8','vbitvs.i8','vbitvc.i8','vbithi.i8','vbitls.i8','vbitge.i8','vbitlt.i8','vbitgt.i8','vbitle.i8',\n            'vbiteq.i16','vbitne.i16','vbitcs.i16','vbiths.i16','vbitcc.i16','vbitlo.i16','vbitmi.i16','vbitpl.i16','vbitvs.i16','vbitvc.i16','vbithi.i16','vbitls.i16','vbitge.i16','vbitlt.i16','vbitgt.i16','vbitle.i16',\n            'vbiteq.i32','vbitne.i32','vbitcs.i32','vbiths.i32','vbitcc.i32','vbitlo.i32','vbitmi.i32','vbitpl.i32','vbitvs.i32','vbitvc.i32','vbithi.i32','vbitls.i32','vbitge.i32','vbitlt.i32','vbitgt.i32','vbitle.i32',\n            'vbiteq.i64','vbitne.i64','vbitcs.i64','vbiths.i64','vbitcc.i64','vbitlo.i64','vbitmi.i64','vbitpl.i64','vbitvs.i64','vbitvc.i64','vbithi.i64','vbitls.i64','vbitge.i64','vbitlt.i64','vbitgt.i64','vbitle.i64',\n            'vbiteq.s8','vbitne.s8','vbitcs.s8','vbiths.s8','vbitcc.s8','vbitlo.s8','vbitmi.s8','vbitpl.s8','vbitvs.s8','vbitvc.s8','vbithi.s8','vbitls.s8','vbitge.s8','vbitlt.s8','vbitgt.s8','vbitle.s8',\n            'vbiteq.s16','vbitne.s16','vbitcs.s16','vbiths.s16','vbitcc.s16','vbitlo.s16','vbitmi.s16','vbitpl.s16','vbitvs.s16','vbitvc.s16','vbithi.s16','vbitls.s16','vbitge.s16','vbitlt.s16','vbitgt.s16','vbitle.s16',\n            'vbiteq.s32','vbitne.s32','vbitcs.s32','vbiths.s32','vbitcc.s32','vbitlo.s32','vbitmi.s32','vbitpl.s32','vbitvs.s32','vbitvc.s32','vbithi.s32','vbitls.s32','vbitge.s32','vbitlt.s32','vbitgt.s32','vbitle.s32',\n            'vbiteq.s64','vbitne.s64','vbitcs.s64','vbiths.s64','vbitcc.s64','vbitlo.s64','vbitmi.s64','vbitpl.s64','vbitvs.s64','vbitvc.s64','vbithi.s64','vbitls.s64','vbitge.s64','vbitlt.s64','vbitgt.s64','vbitle.s64',\n            'vbiteq.u8','vbitne.u8','vbitcs.u8','vbiths.u8','vbitcc.u8','vbitlo.u8','vbitmi.u8','vbitpl.u8','vbitvs.u8','vbitvc.u8','vbithi.u8','vbitls.u8','vbitge.u8','vbitlt.u8','vbitgt.u8','vbitle.u8',\n            'vbiteq.u16','vbitne.u16','vbitcs.u16','vbiths.u16','vbitcc.u16','vbitlo.u16','vbitmi.u16','vbitpl.u16','vbitvs.u16','vbitvc.u16','vbithi.u16','vbitls.u16','vbitge.u16','vbitlt.u16','vbitgt.u16','vbitle.u16',\n            'vbiteq.u32','vbitne.u32','vbitcs.u32','vbiths.u32','vbitcc.u32','vbitlo.u32','vbitmi.u32','vbitpl.u32','vbitvs.u32','vbitvc.u32','vbithi.u32','vbitls.u32','vbitge.u32','vbitlt.u32','vbitgt.u32','vbitle.u32',\n            'vbiteq.u64','vbitne.u64','vbitcs.u64','vbiths.u64','vbitcc.u64','vbitlo.u64','vbitmi.u64','vbitpl.u64','vbitvs.u64','vbitvc.u64','vbithi.u64','vbitls.u64','vbitge.u64','vbitlt.u64','vbitgt.u64','vbitle.u64',\n            'vbiteq.f32','vbitne.f32','vbitcs.f32','vbiths.f32','vbitcc.f32','vbitlo.f32','vbitmi.f32','vbitpl.f32','vbitvs.f32','vbitvc.f32','vbithi.f32','vbitls.f32','vbitge.f32','vbitlt.f32','vbitgt.f32','vbitle.f32',\n            'vbiteq.f64','vbitne.f64','vbitcs.f64','vbiths.f64','vbitcc.f64','vbitlo.f64','vbitmi.f64','vbitpl.f64','vbitvs.f64','vbitvc.f64','vbithi.f64','vbitls.f64','vbitge.f64','vbitlt.f64','vbitgt.f64','vbitle.f64',\n\n            'vbsleq','vbslne','vbslcs','vbslhs','vbslcc','vbsllo','vbslmi','vbslpl','vbslvs','vbslvc','vbslhi','vbslls','vbslge','vbsllt','vbslgt','vbslle',\n            'vbsleq.i8','vbslne.i8','vbslcs.i8','vbslhs.i8','vbslcc.i8','vbsllo.i8','vbslmi.i8','vbslpl.i8','vbslvs.i8','vbslvc.i8','vbslhi.i8','vbslls.i8','vbslge.i8','vbsllt.i8','vbslgt.i8','vbslle.i8',\n            'vbsleq.i16','vbslne.i16','vbslcs.i16','vbslhs.i16','vbslcc.i16','vbsllo.i16','vbslmi.i16','vbslpl.i16','vbslvs.i16','vbslvc.i16','vbslhi.i16','vbslls.i16','vbslge.i16','vbsllt.i16','vbslgt.i16','vbslle.i16',\n            'vbsleq.i32','vbslne.i32','vbslcs.i32','vbslhs.i32','vbslcc.i32','vbsllo.i32','vbslmi.i32','vbslpl.i32','vbslvs.i32','vbslvc.i32','vbslhi.i32','vbslls.i32','vbslge.i32','vbsllt.i32','vbslgt.i32','vbslle.i32',\n            'vbsleq.i64','vbslne.i64','vbslcs.i64','vbslhs.i64','vbslcc.i64','vbsllo.i64','vbslmi.i64','vbslpl.i64','vbslvs.i64','vbslvc.i64','vbslhi.i64','vbslls.i64','vbslge.i64','vbsllt.i64','vbslgt.i64','vbslle.i64',\n            'vbsleq.s8','vbslne.s8','vbslcs.s8','vbslhs.s8','vbslcc.s8','vbsllo.s8','vbslmi.s8','vbslpl.s8','vbslvs.s8','vbslvc.s8','vbslhi.s8','vbslls.s8','vbslge.s8','vbsllt.s8','vbslgt.s8','vbslle.s8',\n            'vbsleq.s16','vbslne.s16','vbslcs.s16','vbslhs.s16','vbslcc.s16','vbsllo.s16','vbslmi.s16','vbslpl.s16','vbslvs.s16','vbslvc.s16','vbslhi.s16','vbslls.s16','vbslge.s16','vbsllt.s16','vbslgt.s16','vbslle.s16',\n            'vbsleq.s32','vbslne.s32','vbslcs.s32','vbslhs.s32','vbslcc.s32','vbsllo.s32','vbslmi.s32','vbslpl.s32','vbslvs.s32','vbslvc.s32','vbslhi.s32','vbslls.s32','vbslge.s32','vbsllt.s32','vbslgt.s32','vbslle.s32',\n            'vbsleq.s64','vbslne.s64','vbslcs.s64','vbslhs.s64','vbslcc.s64','vbsllo.s64','vbslmi.s64','vbslpl.s64','vbslvs.s64','vbslvc.s64','vbslhi.s64','vbslls.s64','vbslge.s64','vbsllt.s64','vbslgt.s64','vbslle.s64',\n            'vbsleq.u8','vbslne.u8','vbslcs.u8','vbslhs.u8','vbslcc.u8','vbsllo.u8','vbslmi.u8','vbslpl.u8','vbslvs.u8','vbslvc.u8','vbslhi.u8','vbslls.u8','vbslge.u8','vbsllt.u8','vbslgt.u8','vbslle.u8',\n            'vbsleq.u16','vbslne.u16','vbslcs.u16','vbslhs.u16','vbslcc.u16','vbsllo.u16','vbslmi.u16','vbslpl.u16','vbslvs.u16','vbslvc.u16','vbslhi.u16','vbslls.u16','vbslge.u16','vbsllt.u16','vbslgt.u16','vbslle.u16',\n            'vbsleq.u32','vbslne.u32','vbslcs.u32','vbslhs.u32','vbslcc.u32','vbsllo.u32','vbslmi.u32','vbslpl.u32','vbslvs.u32','vbslvc.u32','vbslhi.u32','vbslls.u32','vbslge.u32','vbsllt.u32','vbslgt.u32','vbslle.u32',\n            'vbsleq.u64','vbslne.u64','vbslcs.u64','vbslhs.u64','vbslcc.u64','vbsllo.u64','vbslmi.u64','vbslpl.u64','vbslvs.u64','vbslvc.u64','vbslhi.u64','vbslls.u64','vbslge.u64','vbsllt.u64','vbslgt.u64','vbslle.u64',\n            'vbsleq.f32','vbslne.f32','vbslcs.f32','vbslhs.f32','vbslcc.f32','vbsllo.f32','vbslmi.f32','vbslpl.f32','vbslvs.f32','vbslvc.f32','vbslhi.f32','vbslls.f32','vbslge.f32','vbsllt.f32','vbslgt.f32','vbslle.f32',\n            'vbsleq.f64','vbslne.f64','vbslcs.f64','vbslhs.f64','vbslcc.f64','vbsllo.f64','vbslmi.f64','vbslpl.f64','vbslvs.f64','vbslvc.f64','vbslhi.f64','vbslls.f64','vbslge.f64','vbsllt.f64','vbslgt.f64','vbslle.f64',\n\n            'veoreq','veorne','veorcs','veorhs','veorcc','veorlo','veormi','veorpl','veorvs','veorvc','veorhi','veorls','veorge','veorlt','veorgt','veorle',\n            'veoreq.i8','veorne.i8','veorcs.i8','veorhs.i8','veorcc.i8','veorlo.i8','veormi.i8','veorpl.i8','veorvs.i8','veorvc.i8','veorhi.i8','veorls.i8','veorge.i8','veorlt.i8','veorgt.i8','veorle.i8',\n            'veoreq.i16','veorne.i16','veorcs.i16','veorhs.i16','veorcc.i16','veorlo.i16','veormi.i16','veorpl.i16','veorvs.i16','veorvc.i16','veorhi.i16','veorls.i16','veorge.i16','veorlt.i16','veorgt.i16','veorle.i16',\n            'veoreq.i32','veorne.i32','veorcs.i32','veorhs.i32','veorcc.i32','veorlo.i32','veormi.i32','veorpl.i32','veorvs.i32','veorvc.i32','veorhi.i32','veorls.i32','veorge.i32','veorlt.i32','veorgt.i32','veorle.i32',\n            'veoreq.i64','veorne.i64','veorcs.i64','veorhs.i64','veorcc.i64','veorlo.i64','veormi.i64','veorpl.i64','veorvs.i64','veorvc.i64','veorhi.i64','veorls.i64','veorge.i64','veorlt.i64','veorgt.i64','veorle.i64',\n            'veoreq.s8','veorne.s8','veorcs.s8','veorhs.s8','veorcc.s8','veorlo.s8','veormi.s8','veorpl.s8','veorvs.s8','veorvc.s8','veorhi.s8','veorls.s8','veorge.s8','veorlt.s8','veorgt.s8','veorle.s8',\n            'veoreq.s16','veorne.s16','veorcs.s16','veorhs.s16','veorcc.s16','veorlo.s16','veormi.s16','veorpl.s16','veorvs.s16','veorvc.s16','veorhi.s16','veorls.s16','veorge.s16','veorlt.s16','veorgt.s16','veorle.s16',\n            'veoreq.s32','veorne.s32','veorcs.s32','veorhs.s32','veorcc.s32','veorlo.s32','veormi.s32','veorpl.s32','veorvs.s32','veorvc.s32','veorhi.s32','veorls.s32','veorge.s32','veorlt.s32','veorgt.s32','veorle.s32',\n            'veoreq.s64','veorne.s64','veorcs.s64','veorhs.s64','veorcc.s64','veorlo.s64','veormi.s64','veorpl.s64','veorvs.s64','veorvc.s64','veorhi.s64','veorls.s64','veorge.s64','veorlt.s64','veorgt.s64','veorle.s64',\n            'veoreq.u8','veorne.u8','veorcs.u8','veorhs.u8','veorcc.u8','veorlo.u8','veormi.u8','veorpl.u8','veorvs.u8','veorvc.u8','veorhi.u8','veorls.u8','veorge.u8','veorlt.u8','veorgt.u8','veorle.u8',\n            'veoreq.u16','veorne.u16','veorcs.u16','veorhs.u16','veorcc.u16','veorlo.u16','veormi.u16','veorpl.u16','veorvs.u16','veorvc.u16','veorhi.u16','veorls.u16','veorge.u16','veorlt.u16','veorgt.u16','veorle.u16',\n            'veoreq.u32','veorne.u32','veorcs.u32','veorhs.u32','veorcc.u32','veorlo.u32','veormi.u32','veorpl.u32','veorvs.u32','veorvc.u32','veorhi.u32','veorls.u32','veorge.u32','veorlt.u32','veorgt.u32','veorle.u32',\n            'veoreq.u64','veorne.u64','veorcs.u64','veorhs.u64','veorcc.u64','veorlo.u64','veormi.u64','veorpl.u64','veorvs.u64','veorvc.u64','veorhi.u64','veorls.u64','veorge.u64','veorlt.u64','veorgt.u64','veorle.u64',\n            'veoreq.f32','veorne.f32','veorcs.f32','veorhs.f32','veorcc.f32','veorlo.f32','veormi.f32','veorpl.f32','veorvs.f32','veorvc.f32','veorhi.f32','veorls.f32','veorge.f32','veorlt.f32','veorgt.f32','veorle.f32',\n            'veoreq.f64','veorne.f64','veorcs.f64','veorhs.f64','veorcc.f64','veorlo.f64','veormi.f64','veorpl.f64','veorvs.f64','veorvc.f64','veorhi.f64','veorls.f64','veorge.f64','veorlt.f64','veorgt.f64','veorle.f64',\n\n            'vmoveq','vmovne','vmovcs','vmovhs','vmovcc','vmovlo','vmovmi','vmovpl','vmovvs','vmovvc','vmovhi','vmovls','vmovge','vmovlt','vmovgt','vmovle',\n            'vmoveq.8','vmovne.8','vmovcs.8','vmovhs.8','vmovcc.8','vmovlo.8','vmovmi.8','vmovpl.8','vmovvs.8','vmovvc.8','vmovhi.8','vmovls.8','vmovge.8','vmovlt.8','vmovgt.8','vmovle.8',\n            'vmoveq.16','vmovne.16','vmovcs.16','vmovhs.16','vmovcc.16','vmovlo.16','vmovmi.16','vmovpl.16','vmovvs.16','vmovvc.16','vmovhi.16','vmovls.16','vmovge.16','vmovlt.16','vmovgt.16','vmovle.16',\n            'vmoveq.32','vmovne.32','vmovcs.32','vmovhs.32','vmovcc.32','vmovlo.32','vmovmi.32','vmovpl.32','vmovvs.32','vmovvc.32','vmovhi.32','vmovls.32','vmovge.32','vmovlt.32','vmovgt.32','vmovle.32',\n            'vmoveq.i8','vmovne.i8','vmovcs.i8','vmovhs.i8','vmovcc.i8','vmovlo.i8','vmovmi.i8','vmovpl.i8','vmovvs.i8','vmovvc.i8','vmovhi.i8','vmovls.i8','vmovge.i8','vmovlt.i8','vmovgt.i8','vmovle.i8',\n            'vmoveq.i16','vmovne.i16','vmovcs.i16','vmovhs.i16','vmovcc.i16','vmovlo.i16','vmovmi.i16','vmovpl.i16','vmovvs.i16','vmovvc.i16','vmovhi.i16','vmovls.i16','vmovge.i16','vmovlt.i16','vmovgt.i16','vmovle.i16',\n            'vmoveq.i32','vmovne.i32','vmovcs.i32','vmovhs.i32','vmovcc.i32','vmovlo.i32','vmovmi.i32','vmovpl.i32','vmovvs.i32','vmovvc.i32','vmovhi.i32','vmovls.i32','vmovge.i32','vmovlt.i32','vmovgt.i32','vmovle.i32',\n            'vmoveq.i64','vmovne.i64','vmovcs.i64','vmovhs.i64','vmovcc.i64','vmovlo.i64','vmovmi.i64','vmovpl.i64','vmovvs.i64','vmovvc.i64','vmovhi.i64','vmovls.i64','vmovge.i64','vmovlt.i64','vmovgt.i64','vmovle.i64',\n            'vmoveq.f32','vmovne.f32','vmovcs.f32','vmovhs.f32','vmovcc.f32','vmovlo.f32','vmovmi.f32','vmovpl.f32','vmovvs.f32','vmovvc.f32','vmovhi.f32','vmovls.f32','vmovge.f32','vmovlt.f32','vmovgt.f32','vmovle.f32',\n            'vmoveq.f64','vmovne.f64','vmovcs.f64','vmovhs.f64','vmovcc.f64','vmovlo.f64','vmovmi.f64','vmovpl.f64','vmovvs.f64','vmovvc.f64','vmovhi.f64','vmovls.f64','vmovge.f64','vmovlt.f64','vmovgt.f64','vmovle.f64',\n\n            'vmvneq','vmvnne','vmvncs','vmvnhs','vmvncc','vmvnlo','vmvnmi','vmvnpl','vmvnvs','vmvnvc','vmvnhi','vmvnls','vmvnge','vmvnlt','vmvngt','vmvnle',\n            'vmvneq.s8','vmvnne.s8','vmvncs.s8','vmvnhs.s8','vmvncc.s8','vmvnlo.s8','vmvnmi.s8','vmvnpl.s8','vmvnvs.s8','vmvnvc.s8','vmvnhi.s8','vmvnls.s8','vmvnge.s8','vmvnlt.s8','vmvngt.s8','vmvnle.s8',\n            'vmvneq.s16','vmvnne.s16','vmvncs.s16','vmvnhs.s16','vmvncc.s16','vmvnlo.s16','vmvnmi.s16','vmvnpl.s16','vmvnvs.s16','vmvnvc.s16','vmvnhi.s16','vmvnls.s16','vmvnge.s16','vmvnlt.s16','vmvngt.s16','vmvnle.s16',\n            'vmvneq.s32','vmvnne.s32','vmvncs.s32','vmvnhs.s32','vmvncc.s32','vmvnlo.s32','vmvnmi.s32','vmvnpl.s32','vmvnvs.s32','vmvnvc.s32','vmvnhi.s32','vmvnls.s32','vmvnge.s32','vmvnlt.s32','vmvngt.s32','vmvnle.s32',\n            'vmvneq.s64','vmvnne.s64','vmvncs.s64','vmvnhs.s64','vmvncc.s64','vmvnlo.s64','vmvnmi.s64','vmvnpl.s64','vmvnvs.s64','vmvnvc.s64','vmvnhi.s64','vmvnls.s64','vmvnge.s64','vmvnlt.s64','vmvngt.s64','vmvnle.s64',\n            'vmvneq.u8','vmvnne.u8','vmvncs.u8','vmvnhs.u8','vmvncc.u8','vmvnlo.u8','vmvnmi.u8','vmvnpl.u8','vmvnvs.u8','vmvnvc.u8','vmvnhi.u8','vmvnls.u8','vmvnge.u8','vmvnlt.u8','vmvngt.u8','vmvnle.u8',\n            'vmvneq.u16','vmvnne.u16','vmvncs.u16','vmvnhs.u16','vmvncc.u16','vmvnlo.u16','vmvnmi.u16','vmvnpl.u16','vmvnvs.u16','vmvnvc.u16','vmvnhi.u16','vmvnls.u16','vmvnge.u16','vmvnlt.u16','vmvngt.u16','vmvnle.u16',\n            'vmvneq.u32','vmvnne.u32','vmvncs.u32','vmvnhs.u32','vmvncc.u32','vmvnlo.u32','vmvnmi.u32','vmvnpl.u32','vmvnvs.u32','vmvnvc.u32','vmvnhi.u32','vmvnls.u32','vmvnge.u32','vmvnlt.u32','vmvngt.u32','vmvnle.u32',\n            'vmvneq.u64','vmvnne.u64','vmvncs.u64','vmvnhs.u64','vmvncc.u64','vmvnlo.u64','vmvnmi.u64','vmvnpl.u64','vmvnvs.u64','vmvnvc.u64','vmvnhi.u64','vmvnls.u64','vmvnge.u64','vmvnlt.u64','vmvngt.u64','vmvnle.u64',\n            'vmvneq.i8','vmvnne.i8','vmvncs.i8','vmvnhs.i8','vmvncc.i8','vmvnlo.i8','vmvnmi.i8','vmvnpl.i8','vmvnvs.i8','vmvnvc.i8','vmvnhi.i8','vmvnls.i8','vmvnge.i8','vmvnlt.i8','vmvngt.i8','vmvnle.i8',\n            'vmvneq.i16','vmvnne.i16','vmvncs.i16','vmvnhs.i16','vmvncc.i16','vmvnlo.i16','vmvnmi.i16','vmvnpl.i16','vmvnvs.i16','vmvnvc.i16','vmvnhi.i16','vmvnls.i16','vmvnge.i16','vmvnlt.i16','vmvngt.i16','vmvnle.i16',\n            'vmvneq.i32','vmvnne.i32','vmvncs.i32','vmvnhs.i32','vmvncc.i32','vmvnlo.i32','vmvnmi.i32','vmvnpl.i32','vmvnvs.i32','vmvnvc.i32','vmvnhi.i32','vmvnls.i32','vmvnge.i32','vmvnlt.i32','vmvngt.i32','vmvnle.i32',\n            'vmvneq.i64','vmvnne.i64','vmvncs.i64','vmvnhs.i64','vmvncc.i64','vmvnlo.i64','vmvnmi.i64','vmvnpl.i64','vmvnvs.i64','vmvnvc.i64','vmvnhi.i64','vmvnls.i64','vmvnge.i64','vmvnlt.i64','vmvngt.i64','vmvnle.i64',\n            'vmvneq.f32','vmvnne.f32','vmvncs.f32','vmvnhs.f32','vmvncc.f32','vmvnlo.f32','vmvnmi.f32','vmvnpl.f32','vmvnvs.f32','vmvnvc.f32','vmvnhi.f32','vmvnls.f32','vmvnge.f32','vmvnlt.f32','vmvngt.f32','vmvnle.f32',\n            'vmvneq.f64','vmvnne.f64','vmvncs.f64','vmvnhs.f64','vmvncc.f64','vmvnlo.f64','vmvnmi.f64','vmvnpl.f64','vmvnvs.f64','vmvnvc.f64','vmvnhi.f64','vmvnls.f64','vmvnge.f64','vmvnlt.f64','vmvngt.f64','vmvnle.f64',\n\n            'vorneq','vornne','vorncs','vornhs','vorncc','vornlo','vornmi','vornpl','vornvs','vornvc','vornhi','vornls','vornge','vornlt','vorngt','vornle',\n            'vorneq.s8','vornne.s8','vorncs.s8','vornhs.s8','vorncc.s8','vornlo.s8','vornmi.s8','vornpl.s8','vornvs.s8','vornvc.s8','vornhi.s8','vornls.s8','vornge.s8','vornlt.s8','vorngt.s8','vornle.s8',\n            'vorneq.s16','vornne.s16','vorncs.s16','vornhs.s16','vorncc.s16','vornlo.s16','vornmi.s16','vornpl.s16','vornvs.s16','vornvc.s16','vornhi.s16','vornls.s16','vornge.s16','vornlt.s16','vorngt.s16','vornle.s16',\n            'vorneq.s32','vornne.s32','vorncs.s32','vornhs.s32','vorncc.s32','vornlo.s32','vornmi.s32','vornpl.s32','vornvs.s32','vornvc.s32','vornhi.s32','vornls.s32','vornge.s32','vornlt.s32','vorngt.s32','vornle.s32',\n            'vorneq.s64','vornne.s64','vorncs.s64','vornhs.s64','vorncc.s64','vornlo.s64','vornmi.s64','vornpl.s64','vornvs.s64','vornvc.s64','vornhi.s64','vornls.s64','vornge.s64','vornlt.s64','vorngt.s64','vornle.s64',\n            'vorneq.u8','vornne.u8','vorncs.u8','vornhs.u8','vorncc.u8','vornlo.u8','vornmi.u8','vornpl.u8','vornvs.u8','vornvc.u8','vornhi.u8','vornls.u8','vornge.u8','vornlt.u8','vorngt.u8','vornle.u8',\n            'vorneq.u16','vornne.u16','vorncs.u16','vornhs.u16','vorncc.u16','vornlo.u16','vornmi.u16','vornpl.u16','vornvs.u16','vornvc.u16','vornhi.u16','vornls.u16','vornge.u16','vornlt.u16','vorngt.u16','vornle.u16',\n            'vorneq.u32','vornne.u32','vorncs.u32','vornhs.u32','vorncc.u32','vornlo.u32','vornmi.u32','vornpl.u32','vornvs.u32','vornvc.u32','vornhi.u32','vornls.u32','vornge.u32','vornlt.u32','vorngt.u32','vornle.u32',\n            'vorneq.u64','vornne.u64','vorncs.u64','vornhs.u64','vorncc.u64','vornlo.u64','vornmi.u64','vornpl.u64','vornvs.u64','vornvc.u64','vornhi.u64','vornls.u64','vornge.u64','vornlt.u64','vorngt.u64','vornle.u64',\n            'vorneq.i8','vornne.i8','vorncs.i8','vornhs.i8','vorncc.i8','vornlo.i8','vornmi.i8','vornpl.i8','vornvs.i8','vornvc.i8','vornhi.i8','vornls.i8','vornge.i8','vornlt.i8','vorngt.i8','vornle.i8',\n            'vorneq.i16','vornne.i16','vorncs.i16','vornhs.i16','vorncc.i16','vornlo.i16','vornmi.i16','vornpl.i16','vornvs.i16','vornvc.i16','vornhi.i16','vornls.i16','vornge.i16','vornlt.i16','vorngt.i16','vornle.i16',\n            'vorneq.i32','vornne.i32','vorncs.i32','vornhs.i32','vorncc.i32','vornlo.i32','vornmi.i32','vornpl.i32','vornvs.i32','vornvc.i32','vornhi.i32','vornls.i32','vornge.i32','vornlt.i32','vorngt.i32','vornle.i32',\n            'vorneq.i64','vornne.i64','vorncs.i64','vornhs.i64','vorncc.i64','vornlo.i64','vornmi.i64','vornpl.i64','vornvs.i64','vornvc.i64','vornhi.i64','vornls.i64','vornge.i64','vornlt.i64','vorngt.i64','vornle.i64',\n            'vorneq.f32','vornne.f32','vorncs.f32','vornhs.f32','vorncc.f32','vornlo.f32','vornmi.f32','vornpl.f32','vornvs.f32','vornvc.f32','vornhi.f32','vornls.f32','vornge.f32','vornlt.f32','vorngt.f32','vornle.f32',\n            'vorneq.f64','vornne.f64','vorncs.f64','vornhs.f64','vorncc.f64','vornlo.f64','vornmi.f64','vornpl.f64','vornvs.f64','vornvc.f64','vornhi.f64','vornls.f64','vornge.f64','vornlt.f64','vorngt.f64','vornle.f64',\n\n            'vorreq','vorrne','vorrcs','vorrhs','vorrcc','vorrlo','vorrmi','vorrpl','vorrvs','vorrvc','vorrhi','vorrls','vorrge','vorrlt','vorrgt','vorrle',\n            'vorreq.s8','vorrne.s8','vorrcs.s8','vorrhs.s8','vorrcc.s8','vorrlo.s8','vorrmi.s8','vorrpl.s8','vorrvs.s8','vorrvc.s8','vorrhi.s8','vorrls.s8','vorrge.s8','vorrlt.s8','vorrgt.s8','vorrle.s8',\n            'vorreq.s16','vorrne.s16','vorrcs.s16','vorrhs.s16','vorrcc.s16','vorrlo.s16','vorrmi.s16','vorrpl.s16','vorrvs.s16','vorrvc.s16','vorrhi.s16','vorrls.s16','vorrge.s16','vorrlt.s16','vorrgt.s16','vorrle.s16',\n            'vorreq.s32','vorrne.s32','vorrcs.s32','vorrhs.s32','vorrcc.s32','vorrlo.s32','vorrmi.s32','vorrpl.s32','vorrvs.s32','vorrvc.s32','vorrhi.s32','vorrls.s32','vorrge.s32','vorrlt.s32','vorrgt.s32','vorrle.s32',\n            'vorreq.s64','vorrne.s64','vorrcs.s64','vorrhs.s64','vorrcc.s64','vorrlo.s64','vorrmi.s64','vorrpl.s64','vorrvs.s64','vorrvc.s64','vorrhi.s64','vorrls.s64','vorrge.s64','vorrlt.s64','vorrgt.s64','vorrle.s64',\n            'vorreq.u8','vorrne.u8','vorrcs.u8','vorrhs.u8','vorrcc.u8','vorrlo.u8','vorrmi.u8','vorrpl.u8','vorrvs.u8','vorrvc.u8','vorrhi.u8','vorrls.u8','vorrge.u8','vorrlt.u8','vorrgt.u8','vorrle.u8',\n            'vorreq.u16','vorrne.u16','vorrcs.u16','vorrhs.u16','vorrcc.u16','vorrlo.u16','vorrmi.u16','vorrpl.u16','vorrvs.u16','vorrvc.u16','vorrhi.u16','vorrls.u16','vorrge.u16','vorrlt.u16','vorrgt.u16','vorrle.u16',\n            'vorreq.u32','vorrne.u32','vorrcs.u32','vorrhs.u32','vorrcc.u32','vorrlo.u32','vorrmi.u32','vorrpl.u32','vorrvs.u32','vorrvc.u32','vorrhi.u32','vorrls.u32','vorrge.u32','vorrlt.u32','vorrgt.u32','vorrle.u32',\n            'vorreq.u64','vorrne.u64','vorrcs.u64','vorrhs.u64','vorrcc.u64','vorrlo.u64','vorrmi.u64','vorrpl.u64','vorrvs.u64','vorrvc.u64','vorrhi.u64','vorrls.u64','vorrge.u64','vorrlt.u64','vorrgt.u64','vorrle.u64',\n            'vorreq.i8','vorrne.i8','vorrcs.i8','vorrhs.i8','vorrcc.i8','vorrlo.i8','vorrmi.i8','vorrpl.i8','vorrvs.i8','vorrvc.i8','vorrhi.i8','vorrls.i8','vorrge.i8','vorrlt.i8','vorrgt.i8','vorrle.i8',\n            'vorreq.i16','vorrne.i16','vorrcs.i16','vorrhs.i16','vorrcc.i16','vorrlo.i16','vorrmi.i16','vorrpl.i16','vorrvs.i16','vorrvc.i16','vorrhi.i16','vorrls.i16','vorrge.i16','vorrlt.i16','vorrgt.i16','vorrle.i16',\n            'vorreq.i32','vorrne.i32','vorrcs.i32','vorrhs.i32','vorrcc.i32','vorrlo.i32','vorrmi.i32','vorrpl.i32','vorrvs.i32','vorrvc.i32','vorrhi.i32','vorrls.i32','vorrge.i32','vorrlt.i32','vorrgt.i32','vorrle.i32',\n            'vorreq.i64','vorrne.i64','vorrcs.i64','vorrhs.i64','vorrcc.i64','vorrlo.i64','vorrmi.i64','vorrpl.i64','vorrvs.i64','vorrvc.i64','vorrhi.i64','vorrls.i64','vorrge.i64','vorrlt.i64','vorrgt.i64','vorrle.i64',\n            'vorreq.f32','vorrne.f32','vorrcs.f32','vorrhs.f32','vorrcc.f32','vorrlo.f32','vorrmi.f32','vorrpl.f32','vorrvs.f32','vorrvc.f32','vorrhi.f32','vorrls.f32','vorrge.f32','vorrlt.f32','vorrgt.f32','vorrle.f32',\n            'vorreq.f64','vorrne.f64','vorrcs.f64','vorrhs.f64','vorrcc.f64','vorrlo.f64','vorrmi.f64','vorrpl.f64','vorrvs.f64','vorrvc.f64','vorrhi.f64','vorrls.f64','vorrge.f64','vorrlt.f64','vorrgt.f64','vorrle.f64',\n\n            'vswpeq','vswpne','vswpcs','vswphs','vswpcc','vswplo','vswpmi','vswppl','vswpvs','vswpvc','vswphi','vswpls','vswpge','vswplt','vswpgt','vswple',\n            'vswpeq.s8','vswpne.s8','vswpcs.s8','vswphs.s8','vswpcc.s8','vswplo.s8','vswpmi.s8','vswppl.s8','vswpvs.s8','vswpvc.s8','vswphi.s8','vswpls.s8','vswpge.s8','vswplt.s8','vswpgt.s8','vswple.s8',\n            'vswpeq.s16','vswpne.s16','vswpcs.s16','vswphs.s16','vswpcc.s16','vswplo.s16','vswpmi.s16','vswppl.s16','vswpvs.s16','vswpvc.s16','vswphi.s16','vswpls.s16','vswpge.s16','vswplt.s16','vswpgt.s16','vswple.s16',\n            'vswpeq.s32','vswpne.s32','vswpcs.s32','vswphs.s32','vswpcc.s32','vswplo.s32','vswpmi.s32','vswppl.s32','vswpvs.s32','vswpvc.s32','vswphi.s32','vswpls.s32','vswpge.s32','vswplt.s32','vswpgt.s32','vswple.s32',\n            'vswpeq.s64','vswpne.s64','vswpcs.s64','vswphs.s64','vswpcc.s64','vswplo.s64','vswpmi.s64','vswppl.s64','vswpvs.s64','vswpvc.s64','vswphi.s64','vswpls.s64','vswpge.s64','vswplt.s64','vswpgt.s64','vswple.s64',\n            'vswpeq.u8','vswpne.u8','vswpcs.u8','vswphs.u8','vswpcc.u8','vswplo.u8','vswpmi.u8','vswppl.u8','vswpvs.u8','vswpvc.u8','vswphi.u8','vswpls.u8','vswpge.u8','vswplt.u8','vswpgt.u8','vswple.u8',\n            'vswpeq.u16','vswpne.u16','vswpcs.u16','vswphs.u16','vswpcc.u16','vswplo.u16','vswpmi.u16','vswppl.u16','vswpvs.u16','vswpvc.u16','vswphi.u16','vswpls.u16','vswpge.u16','vswplt.u16','vswpgt.u16','vswple.u16',\n            'vswpeq.u32','vswpne.u32','vswpcs.u32','vswphs.u32','vswpcc.u32','vswplo.u32','vswpmi.u32','vswppl.u32','vswpvs.u32','vswpvc.u32','vswphi.u32','vswpls.u32','vswpge.u32','vswplt.u32','vswpgt.u32','vswple.u32',\n            'vswpeq.u64','vswpne.u64','vswpcs.u64','vswphs.u64','vswpcc.u64','vswplo.u64','vswpmi.u64','vswppl.u64','vswpvs.u64','vswpvc.u64','vswphi.u64','vswpls.u64','vswpge.u64','vswplt.u64','vswpgt.u64','vswple.u64',\n            'vswpeq.i8','vswpne.i8','vswpcs.i8','vswphs.i8','vswpcc.i8','vswplo.i8','vswpmi.i8','vswppl.i8','vswpvs.i8','vswpvc.i8','vswphi.i8','vswpls.i8','vswpge.i8','vswplt.i8','vswpgt.i8','vswple.i8',\n            'vswpeq.i16','vswpne.i16','vswpcs.i16','vswphs.i16','vswpcc.i16','vswplo.i16','vswpmi.i16','vswppl.i16','vswpvs.i16','vswpvc.i16','vswphi.i16','vswpls.i16','vswpge.i16','vswplt.i16','vswpgt.i16','vswple.i16',\n            'vswpeq.i32','vswpne.i32','vswpcs.i32','vswphs.i32','vswpcc.i32','vswplo.i32','vswpmi.i32','vswppl.i32','vswpvs.i32','vswpvc.i32','vswphi.i32','vswpls.i32','vswpge.i32','vswplt.i32','vswpgt.i32','vswple.i32',\n            'vswpeq.i64','vswpne.i64','vswpcs.i64','vswphs.i64','vswpcc.i64','vswplo.i64','vswpmi.i64','vswppl.i64','vswpvs.i64','vswpvc.i64','vswphi.i64','vswpls.i64','vswpge.i64','vswplt.i64','vswpgt.i64','vswple.i64',\n            'vswpeq.f32','vswpne.f32','vswpcs.f32','vswphs.f32','vswpcc.f32','vswplo.f32','vswpmi.f32','vswppl.f32','vswpvs.f32','vswpvc.f32','vswphi.f32','vswpls.f32','vswpge.f32','vswplt.f32','vswpgt.f32','vswple.f32',\n            'vswpeq.f64','vswpne.f64','vswpcs.f64','vswphs.f64','vswpcc.f64','vswplo.f64','vswpmi.f64','vswppl.f64','vswpvs.f64','vswpvc.f64','vswphi.f64','vswpls.f64','vswpge.f64','vswplt.f64','vswpgt.f64','vswple.f64'\n            ),\n        /* Conditional NEON SIMD ARM Registers Interop Instructions */\n        29 => array(\n            'vmrseq','vmrsne','vmrscs','vmrshs','vmrscc','vmrslo','vmrsmi','vmrspl','vmrsvs','vmrsvc','vmrshi','vmrsls','vmrsge','vmrslt','vmrsgt','vmrsle',\n            'vmsreq','vmsrne','vmsrcs','vmsrhs','vmsrcc','vmsrlo','vmsrmi','vmsrpl','vmsrvs','vmsrvc','vmsrhi','vmsrls','vmsrge','vmsrlt','vmsrgt','vmsrle'\n            ),\n        /* Conditional NEON SIMD Bit/Byte-Level Instructions */\n        30 => array(\n            'vcnteq.8','vcntne.8','vcntcs.8','vcnths.8','vcntcc.8','vcntlo.8','vcntmi.8','vcntpl.8','vcntvs.8','vcntvc.8','vcnthi.8','vcntls.8','vcntge.8','vcntlt.8','vcntgt.8','vcntle.8',\n            'vdupeq.8','vdupne.8','vdupcs.8','vduphs.8','vdupcc.8','vduplo.8','vdupmi.8','vduppl.8','vdupvs.8','vdupvc.8','vduphi.8','vdupls.8','vdupge.8','vduplt.8','vdupgt.8','vduple.8',\n\n            'vdupeq.16','vdupne.16','vdupcs.16','vduphs.16','vdupcc.16','vduplo.16','vdupmi.16','vduppl.16','vdupvs.16','vdupvc.16','vduphi.16','vdupls.16','vdupge.16','vduplt.16','vdupgt.16','vduple.16',\n            'vdupeq.32','vdupne.32','vdupcs.32','vduphs.32','vdupcc.32','vduplo.32','vdupmi.32','vduppl.32','vdupvs.32','vdupvc.32','vduphi.32','vdupls.32','vdupge.32','vduplt.32','vdupgt.32','vduple.32',\n\n            'vexteq.8','vextne.8','vextcs.8','vexths.8','vextcc.8','vextlo.8','vextmi.8','vextpl.8','vextvs.8','vextvc.8','vexthi.8','vextls.8','vextge.8','vextlt.8','vextgt.8','vextle.8',\n            'vexteq.16','vextne.16','vextcs.16','vexths.16','vextcc.16','vextlo.16','vextmi.16','vextpl.16','vextvs.16','vextvc.16','vexthi.16','vextls.16','vextge.16','vextlt.16','vextgt.16','vextle.16',\n\n            'vexteq.32','vextne.32','vextcs.32','vexths.32','vextcc.32','vextlo.32','vextmi.32','vextpl.32','vextvs.32','vextvc.32','vexthi.32','vextls.32','vextge.32','vextlt.32','vextgt.32','vextle.32',\n            'vexteq.64','vextne.64','vextcs.64','vexths.64','vextcc.64','vextlo.64','vextmi.64','vextpl.64','vextvs.64','vextvc.64','vexthi.64','vextls.64','vextge.64','vextlt.64','vextgt.64','vextle.64',\n\n            'vrev16eq.8','vrev16ne.8','vrev16cs.8','vrev16hs.8','vrev16cc.8','vrev16lo.8','vrev16mi.8','vrev16pl.8','vrev16vs.8','vrev16vc.8','vrev16hi.8','vrev16ls.8','vrev16ge.8','vrev16lt.8','vrev16gt.8','vrev16le.8',\n            'vrev32eq.8','vrev32ne.8','vrev32cs.8','vrev32hs.8','vrev32cc.8','vrev32lo.8','vrev32mi.8','vrev32pl.8','vrev32vs.8','vrev32vc.8','vrev32hi.8','vrev32ls.8','vrev32ge.8','vrev32lt.8','vrev32gt.8','vrev32le.8',\n            'vrev32eq.16','vrev32ne.16','vrev32cs.16','vrev32hs.16','vrev32cc.16','vrev32lo.16','vrev32mi.16','vrev32pl.16','vrev32vs.16','vrev32vc.16','vrev32hi.16','vrev32ls.16','vrev32ge.16','vrev32lt.16','vrev32gt.16','vrev32le.16',\n            'vrev64eq.8','vrev64ne.8','vrev64cs.8','vrev64hs.8','vrev64cc.8','vrev64lo.8','vrev64mi.8','vrev64pl.8','vrev64vs.8','vrev64vc.8','vrev64hi.8','vrev64ls.8','vrev64ge.8','vrev64lt.8','vrev64gt.8','vrev64le.8',\n            'vrev64eq.16','vrev64ne.16','vrev64cs.16','vrev64hs.16','vrev64cc.16','vrev64lo.16','vrev64mi.16','vrev64pl.16','vrev64vs.16','vrev64vc.16','vrev64hi.16','vrev64ls.16','vrev64ge.16','vrev64lt.16','vrev64gt.16','vrev64le.16',\n            'vrev64eq.32','vrev64ne.32','vrev64cs.32','vrev64hs.32','vrev64cc.32','vrev64lo.32','vrev64mi.32','vrev64pl.32','vrev64vs.32','vrev64vc.32','vrev64hi.32','vrev64ls.32','vrev64ge.32','vrev64lt.32','vrev64gt.32','vrev64le.32',\n\n            'vslieq.8','vsline.8','vslics.8','vslihs.8','vslicc.8','vslilo.8','vslimi.8','vslipl.8','vslivs.8','vslivc.8','vslihi.8','vslils.8','vslige.8','vslilt.8','vsligt.8','vslile.8',\n            'vslieq.16','vsline.16','vslics.16','vslihs.16','vslicc.16','vslilo.16','vslimi.16','vslipl.16','vslivs.16','vslivc.16','vslihi.16','vslils.16','vslige.16','vslilt.16','vsligt.16','vslile.16',\n            'vslieq.32','vsline.32','vslics.32','vslihs.32','vslicc.32','vslilo.32','vslimi.32','vslipl.32','vslivs.32','vslivc.32','vslihi.32','vslils.32','vslige.32','vslilt.32','vsligt.32','vslile.32',\n            'vslieq.64','vsline.64','vslics.64','vslihs.64','vslicc.64','vslilo.64','vslimi.64','vslipl.64','vslivs.64','vslivc.64','vslihi.64','vslils.64','vslige.64','vslilt.64','vsligt.64','vslile.64',\n\n            'vsrieq.8','vsrine.8','vsrics.8','vsrihs.8','vsricc.8','vsrilo.8','vsrimi.8','vsripl.8','vsrivs.8','vsrivc.8','vsrihi.8','vsrils.8','vsrige.8','vsrilt.8','vsrigt.8','vsrile.8',\n            'vsrieq.16','vsrine.16','vsrics.16','vsrihs.16','vsricc.16','vsrilo.16','vsrimi.16','vsripl.16','vsrivs.16','vsrivc.16','vsrihi.16','vsrils.16','vsrige.16','vsrilt.16','vsrigt.16','vsrile.16',\n            'vsrieq.32','vsrine.32','vsrics.32','vsrihs.32','vsricc.32','vsrilo.32','vsrimi.32','vsripl.32','vsrivs.32','vsrivc.32','vsrihi.32','vsrils.32','vsrige.32','vsrilt.32','vsrigt.32','vsrile.32',\n            'vsrieq.64','vsrine.64','vsrics.64','vsrihs.64','vsricc.64','vsrilo.64','vsrimi.64','vsripl.64','vsrivs.64','vsrivc.64','vsrihi.64','vsrils.64','vsrige.64','vsrilt.64','vsrigt.64','vsrile.64',\n\n            'vtbleq.8','vtblne.8','vtblcs.8','vtblhs.8','vtblcc.8','vtbllo.8','vtblmi.8','vtblpl.8','vtblvs.8','vtblvc.8','vtblhi.8','vtblls.8','vtblge.8','vtbllt.8','vtblgt.8','vtblle.8',\n\n            'vtbxeq','vtbxne','vtbxcs','vtbxhs','vtbxcc','vtbxlo','vtbxmi','vtbxpl','vtbxvs','vtbxvc','vtbxhi','vtbxls','vtbxge','vtbxlt','vtbxgt','vtbxle',\n\n            'vtrneq.8','vtrnne.8','vtrncs.8','vtrnhs.8','vtrncc.8','vtrnlo.8','vtrnmi.8','vtrnpl.8','vtrnvs.8','vtrnvc.8','vtrnhi.8','vtrnls.8','vtrnge.8','vtrnlt.8','vtrngt.8','vtrnle.8',\n            'vtrneq.16','vtrnne.16','vtrncs.16','vtrnhs.16','vtrncc.16','vtrnlo.16','vtrnmi.16','vtrnpl.16','vtrnvs.16','vtrnvc.16','vtrnhi.16','vtrnls.16','vtrnge.16','vtrnlt.16','vtrngt.16','vtrnle.16',\n            'vtrneq.32','vtrnne.32','vtrncs.32','vtrnhs.32','vtrncc.32','vtrnlo.32','vtrnmi.32','vtrnpl.32','vtrnvs.32','vtrnvc.32','vtrnhi.32','vtrnls.32','vtrnge.32','vtrnlt.32','vtrngt.32','vtrnle.32',\n\n            'vtsteq.8','vtstne.8','vtstcs.8','vtsths.8','vtstcc.8','vtstlo.8','vtstmi.8','vtstpl.8','vtstvs.8','vtstvc.8','vtsthi.8','vtstls.8','vtstge.8','vtstlt.8','vtstgt.8','vtstle.8',\n            'vtsteq.16','vtstne.16','vtstcs.16','vtsths.16','vtstcc.16','vtstlo.16','vtstmi.16','vtstpl.16','vtstvs.16','vtstvc.16','vtsthi.16','vtstls.16','vtstge.16','vtstlt.16','vtstgt.16','vtstle.16',\n            'vtsteq.32','vtstne.32','vtstcs.32','vtsths.32','vtstcc.32','vtstlo.32','vtstmi.32','vtstpl.32','vtstvs.32','vtstvc.32','vtsthi.32','vtstls.32','vtstge.32','vtstlt.32','vtstgt.32','vtstle.32',\n\n            'vuzpeq.8','vuzpne.8','vuzpcs.8','vuzphs.8','vuzpcc.8','vuzplo.8','vuzpmi.8','vuzppl.8','vuzpvs.8','vuzpvc.8','vuzphi.8','vuzpls.8','vuzpge.8','vuzplt.8','vuzpgt.8','vuzple.8',\n            'vuzpeq.16','vuzpne.16','vuzpcs.16','vuzphs.16','vuzpcc.16','vuzplo.16','vuzpmi.16','vuzppl.16','vuzpvs.16','vuzpvc.16','vuzphi.16','vuzpls.16','vuzpge.16','vuzplt.16','vuzpgt.16','vuzple.16',\n            'vuzpeq.32','vuzpne.32','vuzpcs.32','vuzphs.32','vuzpcc.32','vuzplo.32','vuzpmi.32','vuzppl.32','vuzpvs.32','vuzpvc.32','vuzphi.32','vuzpls.32','vuzpge.32','vuzplt.32','vuzpgt.32','vuzple.32',\n\n            'vzipeq.8','vzipne.8','vzipcs.8','vziphs.8','vzipcc.8','vziplo.8','vzipmi.8','vzippl.8','vzipvs.8','vzipvc.8','vziphi.8','vzipls.8','vzipge.8','vziplt.8','vzipgt.8','vziple.8',\n            'vzipeq.16','vzipne.16','vzipcs.16','vziphs.16','vzipcc.16','vziplo.16','vzipmi.16','vzippl.16','vzipvs.16','vzipvc.16','vziphi.16','vzipls.16','vzipge.16','vziplt.16','vzipgt.16','vziple.16',\n            'vzipeq.32','vzipne.32','vzipcs.32','vziphs.32','vzipcc.32','vziplo.32','vzipmi.32','vzippl.32','vzipvs.32','vzipvc.32','vziphi.32','vzipls.32','vzipge.32','vziplt.32','vzipgt.32','vziple.32',\n\n            'vmulleq.p8','vmullne.p8','vmullcs.p8','vmullhs.p8','vmullcc.p8','vmulllo.p8','vmullmi.p8','vmullpl.p8','vmullvs.p8','vmullvc.p8','vmullhi.p8','vmullls.p8','vmullge.p8','vmulllt.p8','vmullgt.p8','vmullle.p8'\n            ),\n        /* Conditional NEON SIMD Universal Integer Instructions */\n        31 => array(\n            'vaddeq.i8','vaddne.i8','vaddcs.i8','vaddhs.i8','vaddcc.i8','vaddlo.i8','vaddmi.i8','vaddpl.i8','vaddvs.i8','vaddvc.i8','vaddhi.i8','vaddls.i8','vaddge.i8','vaddlt.i8','vaddgt.i8','vaddle.i8',\n            'vaddeq.i16','vaddne.i16','vaddcs.i16','vaddhs.i16','vaddcc.i16','vaddlo.i16','vaddmi.i16','vaddpl.i16','vaddvs.i16','vaddvc.i16','vaddhi.i16','vaddls.i16','vaddge.i16','vaddlt.i16','vaddgt.i16','vaddle.i16',\n            'vaddeq.i32','vaddne.i32','vaddcs.i32','vaddhs.i32','vaddcc.i32','vaddlo.i32','vaddmi.i32','vaddpl.i32','vaddvs.i32','vaddvc.i32','vaddhi.i32','vaddls.i32','vaddge.i32','vaddlt.i32','vaddgt.i32','vaddle.i32',\n            'vaddeq.i64','vaddne.i64','vaddcs.i64','vaddhs.i64','vaddcc.i64','vaddlo.i64','vaddmi.i64','vaddpl.i64','vaddvs.i64','vaddvc.i64','vaddhi.i64','vaddls.i64','vaddge.i64','vaddlt.i64','vaddgt.i64','vaddle.i64',\n\n            'vsubeq.i8','vsubne.i8','vsubcs.i8','vsubhs.i8','vsubcc.i8','vsublo.i8','vsubmi.i8','vsubpl.i8','vsubvs.i8','vsubvc.i8','vsubhi.i8','vsubls.i8','vsubge.i8','vsublt.i8','vsubgt.i8','vsuble.i8',\n            'vsubeq.i16','vsubne.i16','vsubcs.i16','vsubhs.i16','vsubcc.i16','vsublo.i16','vsubmi.i16','vsubpl.i16','vsubvs.i16','vsubvc.i16','vsubhi.i16','vsubls.i16','vsubge.i16','vsublt.i16','vsubgt.i16','vsuble.i16',\n            'vsubeq.i32','vsubne.i32','vsubcs.i32','vsubhs.i32','vsubcc.i32','vsublo.i32','vsubmi.i32','vsubpl.i32','vsubvs.i32','vsubvc.i32','vsubhi.i32','vsubls.i32','vsubge.i32','vsublt.i32','vsubgt.i32','vsuble.i32',\n            'vsubeq.i64','vsubne.i64','vsubcs.i64','vsubhs.i64','vsubcc.i64','vsublo.i64','vsubmi.i64','vsubpl.i64','vsubvs.i64','vsubvc.i64','vsubhi.i64','vsubls.i64','vsubge.i64','vsublt.i64','vsubgt.i64','vsuble.i64',\n\n            'vaddhneq.i16','vaddhnne.i16','vaddhncs.i16','vaddhnhs.i16','vaddhncc.i16','vaddhnlo.i16','vaddhnmi.i16','vaddhnpl.i16','vaddhnvs.i16','vaddhnvc.i16','vaddhnhi.i16','vaddhnls.i16','vaddhnge.i16','vaddhnlt.i16','vaddhngt.i16','vaddhnle.i16',\n            'vaddhneq.i32','vaddhnne.i32','vaddhncs.i32','vaddhnhs.i32','vaddhncc.i32','vaddhnlo.i32','vaddhnmi.i32','vaddhnpl.i32','vaddhnvs.i32','vaddhnvc.i32','vaddhnhi.i32','vaddhnls.i32','vaddhnge.i32','vaddhnlt.i32','vaddhngt.i32','vaddhnle.i32',\n            'vaddhneq.i64','vaddhnne.i64','vaddhncs.i64','vaddhnhs.i64','vaddhncc.i64','vaddhnlo.i64','vaddhnmi.i64','vaddhnpl.i64','vaddhnvs.i64','vaddhnvc.i64','vaddhnhi.i64','vaddhnls.i64','vaddhnge.i64','vaddhnlt.i64','vaddhngt.i64','vaddhnle.i64',\n\n            'vsubhneq.i16','vsubhnne.i16','vsubhncs.i16','vsubhnhs.i16','vsubhncc.i16','vsubhnlo.i16','vsubhnmi.i16','vsubhnpl.i16','vsubhnvs.i16','vsubhnvc.i16','vsubhnhi.i16','vsubhnls.i16','vsubhnge.i16','vsubhnlt.i16','vsubhngt.i16','vsubhnle.i16',\n            'vsubhneq.i32','vsubhnne.i32','vsubhncs.i32','vsubhnhs.i32','vsubhncc.i32','vsubhnlo.i32','vsubhnmi.i32','vsubhnpl.i32','vsubhnvs.i32','vsubhnvc.i32','vsubhnhi.i32','vsubhnls.i32','vsubhnge.i32','vsubhnlt.i32','vsubhngt.i32','vsubhnle.i32',\n            'vsubhneq.i64','vsubhnne.i64','vsubhncs.i64','vsubhnhs.i64','vsubhncc.i64','vsubhnlo.i64','vsubhnmi.i64','vsubhnpl.i64','vsubhnvs.i64','vsubhnvc.i64','vsubhnhi.i64','vsubhnls.i64','vsubhnge.i64','vsubhnlt.i64','vsubhngt.i64','vsubhnle.i64',\n\n            'vraddhneq.i16','vraddhnne.i16','vraddhncs.i16','vraddhnhs.i16','vraddhncc.i16','vraddhnlo.i16','vraddhnmi.i16','vraddhnpl.i16','vraddhnvs.i16','vraddhnvc.i16','vraddhnhi.i16','vraddhnls.i16','vraddhnge.i16','vraddhnlt.i16','vraddhngt.i16','vraddhnle.i16',\n            'vraddhneq.i32','vraddhnne.i32','vraddhncs.i32','vraddhnhs.i32','vraddhncc.i32','vraddhnlo.i32','vraddhnmi.i32','vraddhnpl.i32','vraddhnvs.i32','vraddhnvc.i32','vraddhnhi.i32','vraddhnls.i32','vraddhnge.i32','vraddhnlt.i32','vraddhngt.i32','vraddhnle.i32',\n            'vraddhneq.i64','vraddhnne.i64','vraddhncs.i64','vraddhnhs.i64','vraddhncc.i64','vraddhnlo.i64','vraddhnmi.i64','vraddhnpl.i64','vraddhnvs.i64','vraddhnvc.i64','vraddhnhi.i64','vraddhnls.i64','vraddhnge.i64','vraddhnlt.i64','vraddhngt.i64','vraddhnle.i64',\n\n            'vrsubhneq.i16','vrsubhnne.i16','vrsubhncs.i16','vrsubhnhs.i16','vrsubhncc.i16','vrsubhnlo.i16','vrsubhnmi.i16','vrsubhnpl.i16','vrsubhnvs.i16','vrsubhnvc.i16','vrsubhnhi.i16','vrsubhnls.i16','vrsubhnge.i16','vrsubhnlt.i16','vrsubhngt.i16','vrsubhnle.i16',\n            'vrsubhneq.i32','vrsubhnne.i32','vrsubhncs.i32','vrsubhnhs.i32','vrsubhncc.i32','vrsubhnlo.i32','vrsubhnmi.i32','vrsubhnpl.i32','vrsubhnvs.i32','vrsubhnvc.i32','vrsubhnhi.i32','vrsubhnls.i32','vrsubhnge.i32','vrsubhnlt.i32','vrsubhngt.i32','vrsubhnle.i32',\n            'vrsubhneq.i64','vrsubhnne.i64','vrsubhncs.i64','vrsubhnhs.i64','vrsubhncc.i64','vrsubhnlo.i64','vrsubhnmi.i64','vrsubhnpl.i64','vrsubhnvs.i64','vrsubhnvc.i64','vrsubhnhi.i64','vrsubhnls.i64','vrsubhnge.i64','vrsubhnlt.i64','vrsubhngt.i64','vrsubhnle.i64',\n\n            'vpaddeq.i8','vpaddne.i8','vpaddcs.i8','vpaddhs.i8','vpaddcc.i8','vpaddlo.i8','vpaddmi.i8','vpaddpl.i8','vpaddvs.i8','vpaddvc.i8','vpaddhi.i8','vpaddls.i8','vpaddge.i8','vpaddlt.i8','vpaddgt.i8','vpaddle.i8',\n            'vpaddeq.i16','vpaddne.i16','vpaddcs.i16','vpaddhs.i16','vpaddcc.i16','vpaddlo.i16','vpaddmi.i16','vpaddpl.i16','vpaddvs.i16','vpaddvc.i16','vpaddhi.i16','vpaddls.i16','vpaddge.i16','vpaddlt.i16','vpaddgt.i16','vpaddle.i16',\n            'vpaddeq.i32','vpaddne.i32','vpaddcs.i32','vpaddhs.i32','vpaddcc.i32','vpaddlo.i32','vpaddmi.i32','vpaddpl.i32','vpaddvs.i32','vpaddvc.i32','vpaddhi.i32','vpaddls.i32','vpaddge.i32','vpaddlt.i32','vpaddgt.i32','vpaddle.i32',\n\n            'vceqeq.i8','vceqne.i8','vceqcs.i8','vceqhs.i8','vceqcc.i8','vceqlo.i8','vceqmi.i8','vceqpl.i8','vceqvs.i8','vceqvc.i8','vceqhi.i8','vceqls.i8','vceqge.i8','vceqlt.i8','vceqgt.i8','vceqle.i8',\n            'vceqeq.i16','vceqne.i16','vceqcs.i16','vceqhs.i16','vceqcc.i16','vceqlo.i16','vceqmi.i16','vceqpl.i16','vceqvs.i16','vceqvc.i16','vceqhi.i16','vceqls.i16','vceqge.i16','vceqlt.i16','vceqgt.i16','vceqle.i16',\n            'vceqeq.i32','vceqne.i32','vceqcs.i32','vceqhs.i32','vceqcc.i32','vceqlo.i32','vceqmi.i32','vceqpl.i32','vceqvs.i32','vceqvc.i32','vceqhi.i32','vceqls.i32','vceqge.i32','vceqlt.i32','vceqgt.i32','vceqle.i32',\n\n            'vclzeq.i8','vclzne.i8','vclzcs.i8','vclzhs.i8','vclzcc.i8','vclzlo.i8','vclzmi.i8','vclzpl.i8','vclzvs.i8','vclzvc.i8','vclzhi.i8','vclzls.i8','vclzge.i8','vclzlt.i8','vclzgt.i8','vclzle.i8',\n            'vclzeq.i16','vclzne.i16','vclzcs.i16','vclzhs.i16','vclzcc.i16','vclzlo.i16','vclzmi.i16','vclzpl.i16','vclzvs.i16','vclzvc.i16','vclzhi.i16','vclzls.i16','vclzge.i16','vclzlt.i16','vclzgt.i16','vclzle.i16',\n            'vclzeq.i32','vclzne.i32','vclzcs.i32','vclzhs.i32','vclzcc.i32','vclzlo.i32','vclzmi.i32','vclzpl.i32','vclzvs.i32','vclzvc.i32','vclzhi.i32','vclzls.i32','vclzge.i32','vclzlt.i32','vclzgt.i32','vclzle.i32',\n\n            'vmovneq.i16','vmovnne.i16','vmovncs.i16','vmovnhs.i16','vmovncc.i16','vmovnlo.i16','vmovnmi.i16','vmovnpl.i16','vmovnvs.i16','vmovnvc.i16','vmovnhi.i16','vmovnls.i16','vmovnge.i16','vmovnlt.i16','vmovngt.i16','vmovnle.i16',\n            'vmovneq.i32','vmovnne.i32','vmovncs.i32','vmovnhs.i32','vmovncc.i32','vmovnlo.i32','vmovnmi.i32','vmovnpl.i32','vmovnvs.i32','vmovnvc.i32','vmovnhi.i32','vmovnls.i32','vmovnge.i32','vmovnlt.i32','vmovngt.i32','vmovnle.i32',\n            'vmovneq.i64','vmovnne.i64','vmovncs.i64','vmovnhs.i64','vmovncc.i64','vmovnlo.i64','vmovnmi.i64','vmovnpl.i64','vmovnvs.i64','vmovnvc.i64','vmovnhi.i64','vmovnls.i64','vmovnge.i64','vmovnlt.i64','vmovngt.i64','vmovnle.i64',\n\n            'vmlaeq.s8','vmlane.s8','vmlacs.s8','vmlahs.s8','vmlacc.s8','vmlalo.s8','vmlami.s8','vmlapl.s8','vmlavs.s8','vmlavc.s8','vmlahi.s8','vmlals.s8','vmlage.s8','vmlalt.s8','vmlagt.s8','vmlale.s8',\n            'vmlaeq.s16','vmlane.s16','vmlacs.s16','vmlahs.s16','vmlacc.s16','vmlalo.s16','vmlami.s16','vmlapl.s16','vmlavs.s16','vmlavc.s16','vmlahi.s16','vmlals.s16','vmlage.s16','vmlalt.s16','vmlagt.s16','vmlale.s16',\n            'vmlaeq.s32','vmlane.s32','vmlacs.s32','vmlahs.s32','vmlacc.s32','vmlalo.s32','vmlami.s32','vmlapl.s32','vmlavs.s32','vmlavc.s32','vmlahi.s32','vmlals.s32','vmlage.s32','vmlalt.s32','vmlagt.s32','vmlale.s32',\n            'vmlaeq.u8','vmlane.u8','vmlacs.u8','vmlahs.u8','vmlacc.u8','vmlalo.u8','vmlami.u8','vmlapl.u8','vmlavs.u8','vmlavc.u8','vmlahi.u8','vmlals.u8','vmlage.u8','vmlalt.u8','vmlagt.u8','vmlale.u8',\n            'vmlaeq.u16','vmlane.u16','vmlacs.u16','vmlahs.u16','vmlacc.u16','vmlalo.u16','vmlami.u16','vmlapl.u16','vmlavs.u16','vmlavc.u16','vmlahi.u16','vmlals.u16','vmlage.u16','vmlalt.u16','vmlagt.u16','vmlale.u16',\n            'vmlaeq.u32','vmlane.u32','vmlacs.u32','vmlahs.u32','vmlacc.u32','vmlalo.u32','vmlami.u32','vmlapl.u32','vmlavs.u32','vmlavc.u32','vmlahi.u32','vmlals.u32','vmlage.u32','vmlalt.u32','vmlagt.u32','vmlale.u32',\n            'vmlaeq.i8','vmlane.i8','vmlacs.i8','vmlahs.i8','vmlacc.i8','vmlalo.i8','vmlami.i8','vmlapl.i8','vmlavs.i8','vmlavc.i8','vmlahi.i8','vmlals.i8','vmlage.i8','vmlalt.i8','vmlagt.i8','vmlale.i8',\n            'vmlaeq.i16','vmlane.i16','vmlacs.i16','vmlahs.i16','vmlacc.i16','vmlalo.i16','vmlami.i16','vmlapl.i16','vmlavs.i16','vmlavc.i16','vmlahi.i16','vmlals.i16','vmlage.i16','vmlalt.i16','vmlagt.i16','vmlale.i16',\n            'vmlaeq.i32','vmlane.i32','vmlacs.i32','vmlahs.i32','vmlacc.i32','vmlalo.i32','vmlami.i32','vmlapl.i32','vmlavs.i32','vmlavc.i32','vmlahi.i32','vmlals.i32','vmlage.i32','vmlalt.i32','vmlagt.i32','vmlale.i32',\n\n            'vmlseq.s8','vmlsne.s8','vmlscs.s8','vmlshs.s8','vmlscc.s8','vmlslo.s8','vmlsmi.s8','vmlspl.s8','vmlsvs.s8','vmlsvc.s8','vmlshi.s8','vmlsls.s8','vmlsge.s8','vmlslt.s8','vmlsgt.s8','vmlsle.s8',\n            'vmlseq.s16','vmlsne.s16','vmlscs.s16','vmlshs.s16','vmlscc.s16','vmlslo.s16','vmlsmi.s16','vmlspl.s16','vmlsvs.s16','vmlsvc.s16','vmlshi.s16','vmlsls.s16','vmlsge.s16','vmlslt.s16','vmlsgt.s16','vmlsle.s16',\n            'vmlseq.s32','vmlsne.s32','vmlscs.s32','vmlshs.s32','vmlscc.s32','vmlslo.s32','vmlsmi.s32','vmlspl.s32','vmlsvs.s32','vmlsvc.s32','vmlshi.s32','vmlsls.s32','vmlsge.s32','vmlslt.s32','vmlsgt.s32','vmlsle.s32',\n            'vmlseq.u8','vmlsne.u8','vmlscs.u8','vmlshs.u8','vmlscc.u8','vmlslo.u8','vmlsmi.u8','vmlspl.u8','vmlsvs.u8','vmlsvc.u8','vmlshi.u8','vmlsls.u8','vmlsge.u8','vmlslt.u8','vmlsgt.u8','vmlsle.u8',\n            'vmlseq.u16','vmlsne.u16','vmlscs.u16','vmlshs.u16','vmlscc.u16','vmlslo.u16','vmlsmi.u16','vmlspl.u16','vmlsvs.u16','vmlsvc.u16','vmlshi.u16','vmlsls.u16','vmlsge.u16','vmlslt.u16','vmlsgt.u16','vmlsle.u16',\n            'vmlseq.u32','vmlsne.u32','vmlscs.u32','vmlshs.u32','vmlscc.u32','vmlslo.u32','vmlsmi.u32','vmlspl.u32','vmlsvs.u32','vmlsvc.u32','vmlshi.u32','vmlsls.u32','vmlsge.u32','vmlslt.u32','vmlsgt.u32','vmlsle.u32',\n            'vmlseq.i8','vmlsne.i8','vmlscs.i8','vmlshs.i8','vmlscc.i8','vmlslo.i8','vmlsmi.i8','vmlspl.i8','vmlsvs.i8','vmlsvc.i8','vmlshi.i8','vmlsls.i8','vmlsge.i8','vmlslt.i8','vmlsgt.i8','vmlsle.i8',\n            'vmlseq.i16','vmlsne.i16','vmlscs.i16','vmlshs.i16','vmlscc.i16','vmlslo.i16','vmlsmi.i16','vmlspl.i16','vmlsvs.i16','vmlsvc.i16','vmlshi.i16','vmlsls.i16','vmlsge.i16','vmlslt.i16','vmlsgt.i16','vmlsle.i16',\n            'vmlseq.i32','vmlsne.i32','vmlscs.i32','vmlshs.i32','vmlscc.i32','vmlslo.i32','vmlsmi.i32','vmlspl.i32','vmlsvs.i32','vmlsvc.i32','vmlshi.i32','vmlsls.i32','vmlsge.i32','vmlslt.i32','vmlsgt.i32','vmlsle.i32',\n\n            'vmuleq.s8','vmulne.s8','vmulcs.s8','vmulhs.s8','vmulcc.s8','vmullo.s8','vmulmi.s8','vmulpl.s8','vmulvs.s8','vmulvc.s8','vmulhi.s8','vmulls.s8','vmulge.s8','vmullt.s8','vmulgt.s8','vmulle.s8',\n            'vmuleq.s16','vmulne.s16','vmulcs.s16','vmulhs.s16','vmulcc.s16','vmullo.s16','vmulmi.s16','vmulpl.s16','vmulvs.s16','vmulvc.s16','vmulhi.s16','vmulls.s16','vmulge.s16','vmullt.s16','vmulgt.s16','vmulle.s16',\n            'vmuleq.s32','vmulne.s32','vmulcs.s32','vmulhs.s32','vmulcc.s32','vmullo.s32','vmulmi.s32','vmulpl.s32','vmulvs.s32','vmulvc.s32','vmulhi.s32','vmulls.s32','vmulge.s32','vmullt.s32','vmulgt.s32','vmulle.s32',\n            'vmuleq.u8','vmulne.u8','vmulcs.u8','vmulhs.u8','vmulcc.u8','vmullo.u8','vmulmi.u8','vmulpl.u8','vmulvs.u8','vmulvc.u8','vmulhi.u8','vmulls.u8','vmulge.u8','vmullt.u8','vmulgt.u8','vmulle.u8',\n            'vmuleq.u16','vmulne.u16','vmulcs.u16','vmulhs.u16','vmulcc.u16','vmullo.u16','vmulmi.u16','vmulpl.u16','vmulvs.u16','vmulvc.u16','vmulhi.u16','vmulls.u16','vmulge.u16','vmullt.u16','vmulgt.u16','vmulle.u16',\n            'vmuleq.u32','vmulne.u32','vmulcs.u32','vmulhs.u32','vmulcc.u32','vmullo.u32','vmulmi.u32','vmulpl.u32','vmulvs.u32','vmulvc.u32','vmulhi.u32','vmulls.u32','vmulge.u32','vmullt.u32','vmulgt.u32','vmulle.u32',\n            'vmuleq.i8','vmulne.i8','vmulcs.i8','vmulhs.i8','vmulcc.i8','vmullo.i8','vmulmi.i8','vmulpl.i8','vmulvs.i8','vmulvc.i8','vmulhi.i8','vmulls.i8','vmulge.i8','vmullt.i8','vmulgt.i8','vmulle.i8',\n            'vmuleq.i16','vmulne.i16','vmulcs.i16','vmulhs.i16','vmulcc.i16','vmullo.i16','vmulmi.i16','vmulpl.i16','vmulvs.i16','vmulvc.i16','vmulhi.i16','vmulls.i16','vmulge.i16','vmullt.i16','vmulgt.i16','vmulle.i16',\n            'vmuleq.i32','vmulne.i32','vmulcs.i32','vmulhs.i32','vmulcc.i32','vmullo.i32','vmulmi.i32','vmulpl.i32','vmulvs.i32','vmulvc.i32','vmulhi.i32','vmulls.i32','vmulge.i32','vmullt.i32','vmulgt.i32','vmulle.i32',\n            'vmuleq.p8','vmulne.p8','vmulcs.p8','vmulhs.p8','vmulcc.p8','vmullo.p8','vmulmi.p8','vmulpl.p8','vmulvs.p8','vmulvc.p8','vmulhi.p8','vmulls.p8','vmulge.p8','vmullt.p8','vmulgt.p8','vmulle.p8',\n\n            'vrshrneq.i16','vrshrnne.i16','vrshrncs.i16','vrshrnhs.i16','vrshrncc.i16','vrshrnlo.i16','vrshrnmi.i16','vrshrnpl.i16','vrshrnvs.i16','vrshrnvc.i16','vrshrnhi.i16','vrshrnls.i16','vrshrnge.i16','vrshrnlt.i16','vrshrngt.i16','vrshrnle.i16',\n            'vrshrneq.i32','vrshrnne.i32','vrshrncs.i32','vrshrnhs.i32','vrshrncc.i32','vrshrnlo.i32','vrshrnmi.i32','vrshrnpl.i32','vrshrnvs.i32','vrshrnvc.i32','vrshrnhi.i32','vrshrnls.i32','vrshrnge.i32','vrshrnlt.i32','vrshrngt.i32','vrshrnle.i32',\n            'vrshrneq.i64','vrshrnne.i64','vrshrncs.i64','vrshrnhs.i64','vrshrncc.i64','vrshrnlo.i64','vrshrnmi.i64','vrshrnpl.i64','vrshrnvs.i64','vrshrnvc.i64','vrshrnhi.i64','vrshrnls.i64','vrshrnge.i64','vrshrnlt.i64','vrshrngt.i64','vrshrnle.i64',\n\n            'vshrneq.i16','vshrnne.i16','vshrncs.i16','vshrnhs.i16','vshrncc.i16','vshrnlo.i16','vshrnmi.i16','vshrnpl.i16','vshrnvs.i16','vshrnvc.i16','vshrnhi.i16','vshrnls.i16','vshrnge.i16','vshrnlt.i16','vshrngt.i16','vshrnle.i16',\n            'vshrneq.i32','vshrnne.i32','vshrncs.i32','vshrnhs.i32','vshrncc.i32','vshrnlo.i32','vshrnmi.i32','vshrnpl.i32','vshrnvs.i32','vshrnvc.i32','vshrnhi.i32','vshrnls.i32','vshrnge.i32','vshrnlt.i32','vshrngt.i32','vshrnle.i32',\n            'vshrneq.i64','vshrnne.i64','vshrncs.i64','vshrnhs.i64','vshrncc.i64','vshrnlo.i64','vshrnmi.i64','vshrnpl.i64','vshrnvs.i64','vshrnvc.i64','vshrnhi.i64','vshrnls.i64','vshrnge.i64','vshrnlt.i64','vshrngt.i64','vshrnle.i64',\n\n            'vshleq.i8','vshlne.i8','vshlcs.i8','vshlhs.i8','vshlcc.i8','vshllo.i8','vshlmi.i8','vshlpl.i8','vshlvs.i8','vshlvc.i8','vshlhi.i8','vshlls.i8','vshlge.i8','vshllt.i8','vshlgt.i8','vshlle.i8',\n            'vshleq.i16','vshlne.i16','vshlcs.i16','vshlhs.i16','vshlcc.i16','vshllo.i16','vshlmi.i16','vshlpl.i16','vshlvs.i16','vshlvc.i16','vshlhi.i16','vshlls.i16','vshlge.i16','vshllt.i16','vshlgt.i16','vshlle.i16',\n            'vshleq.i32','vshlne.i32','vshlcs.i32','vshlhs.i32','vshlcc.i32','vshllo.i32','vshlmi.i32','vshlpl.i32','vshlvs.i32','vshlvc.i32','vshlhi.i32','vshlls.i32','vshlge.i32','vshllt.i32','vshlgt.i32','vshlle.i32',\n            'vshleq.i64','vshlne.i64','vshlcs.i64','vshlhs.i64','vshlcc.i64','vshllo.i64','vshlmi.i64','vshlpl.i64','vshlvs.i64','vshlvc.i64','vshlhi.i64','vshlls.i64','vshlge.i64','vshllt.i64','vshlgt.i64','vshlle.i64',\n\n            'vshlleq.i8','vshllne.i8','vshllcs.i8','vshllhs.i8','vshllcc.i8','vshlllo.i8','vshllmi.i8','vshllpl.i8','vshllvs.i8','vshllvc.i8','vshllhi.i8','vshllls.i8','vshllge.i8','vshlllt.i8','vshllgt.i8','vshllle.i8',\n            'vshlleq.i16','vshllne.i16','vshllcs.i16','vshllhs.i16','vshllcc.i16','vshlllo.i16','vshllmi.i16','vshllpl.i16','vshllvs.i16','vshllvc.i16','vshllhi.i16','vshllls.i16','vshllge.i16','vshlllt.i16','vshllgt.i16','vshllle.i16',\n            'vshlleq.i32','vshllne.i32','vshllcs.i32','vshllhs.i32','vshllcc.i32','vshlllo.i32','vshllmi.i32','vshllpl.i32','vshllvs.i32','vshllvc.i32','vshllhi.i32','vshllls.i32','vshllge.i32','vshlllt.i32','vshllgt.i32','vshllle.i32'\n            ),\n        /* Conditional NEON SIMD Signed Integer Instructions */\n        32 => array(\n            'vabaeq.s8','vabane.s8','vabacs.s8','vabahs.s8','vabacc.s8','vabalo.s8','vabami.s8','vabapl.s8','vabavs.s8','vabavc.s8','vabahi.s8','vabals.s8','vabage.s8','vabalt.s8','vabagt.s8','vabale.s8',\n            'vabaeq.s16','vabane.s16','vabacs.s16','vabahs.s16','vabacc.s16','vabalo.s16','vabami.s16','vabapl.s16','vabavs.s16','vabavc.s16','vabahi.s16','vabals.s16','vabage.s16','vabalt.s16','vabagt.s16','vabale.s16',\n            'vabaeq.s32','vabane.s32','vabacs.s32','vabahs.s32','vabacc.s32','vabalo.s32','vabami.s32','vabapl.s32','vabavs.s32','vabavc.s32','vabahi.s32','vabals.s32','vabage.s32','vabalt.s32','vabagt.s32','vabale.s32',\n\n            'vabaleq.s8','vabalne.s8','vabalcs.s8','vabalhs.s8','vabalcc.s8','vaballo.s8','vabalmi.s8','vabalpl.s8','vabalvs.s8','vabalvc.s8','vabalhi.s8','vaballs.s8','vabalge.s8','vaballt.s8','vabalgt.s8','vaballe.s8',\n            'vabaleq.s16','vabalne.s16','vabalcs.s16','vabalhs.s16','vabalcc.s16','vaballo.s16','vabalmi.s16','vabalpl.s16','vabalvs.s16','vabalvc.s16','vabalhi.s16','vaballs.s16','vabalge.s16','vaballt.s16','vabalgt.s16','vaballe.s16',\n            'vabaleq.s32','vabalne.s32','vabalcs.s32','vabalhs.s32','vabalcc.s32','vaballo.s32','vabalmi.s32','vabalpl.s32','vabalvs.s32','vabalvc.s32','vabalhi.s32','vaballs.s32','vabalge.s32','vaballt.s32','vabalgt.s32','vaballe.s32',\n\n            'vabdeq.s8','vabdne.s8','vabdcs.s8','vabdhs.s8','vabdcc.s8','vabdlo.s8','vabdmi.s8','vabdpl.s8','vabdvs.s8','vabdvc.s8','vabdhi.s8','vabdls.s8','vabdge.s8','vabdlt.s8','vabdgt.s8','vabdle.s8',\n            'vabdeq.s16','vabdne.s16','vabdcs.s16','vabdhs.s16','vabdcc.s16','vabdlo.s16','vabdmi.s16','vabdpl.s16','vabdvs.s16','vabdvc.s16','vabdhi.s16','vabdls.s16','vabdge.s16','vabdlt.s16','vabdgt.s16','vabdle.s16',\n            'vabdeq.s32','vabdne.s32','vabdcs.s32','vabdhs.s32','vabdcc.s32','vabdlo.s32','vabdmi.s32','vabdpl.s32','vabdvs.s32','vabdvc.s32','vabdhi.s32','vabdls.s32','vabdge.s32','vabdlt.s32','vabdgt.s32','vabdle.s32',\n\n            'vabseq.s8','vabsne.s8','vabscs.s8','vabshs.s8','vabscc.s8','vabslo.s8','vabsmi.s8','vabspl.s8','vabsvs.s8','vabsvc.s8','vabshi.s8','vabsls.s8','vabsge.s8','vabslt.s8','vabsgt.s8','vabsle.s8',\n            'vabseq.s16','vabsne.s16','vabscs.s16','vabshs.s16','vabscc.s16','vabslo.s16','vabsmi.s16','vabspl.s16','vabsvs.s16','vabsvc.s16','vabshi.s16','vabsls.s16','vabsge.s16','vabslt.s16','vabsgt.s16','vabsle.s16',\n            'vabseq.s32','vabsne.s32','vabscs.s32','vabshs.s32','vabscc.s32','vabslo.s32','vabsmi.s32','vabspl.s32','vabsvs.s32','vabsvc.s32','vabshi.s32','vabsls.s32','vabsge.s32','vabslt.s32','vabsgt.s32','vabsle.s32',\n\n            'vaddleq.s8','vaddlne.s8','vaddlcs.s8','vaddlhs.s8','vaddlcc.s8','vaddllo.s8','vaddlmi.s8','vaddlpl.s8','vaddlvs.s8','vaddlvc.s8','vaddlhi.s8','vaddlls.s8','vaddlge.s8','vaddllt.s8','vaddlgt.s8','vaddlle.s8',\n            'vaddleq.s16','vaddlne.s16','vaddlcs.s16','vaddlhs.s16','vaddlcc.s16','vaddllo.s16','vaddlmi.s16','vaddlpl.s16','vaddlvs.s16','vaddlvc.s16','vaddlhi.s16','vaddlls.s16','vaddlge.s16','vaddllt.s16','vaddlgt.s16','vaddlle.s16',\n            'vaddleq.s32','vaddlne.s32','vaddlcs.s32','vaddlhs.s32','vaddlcc.s32','vaddllo.s32','vaddlmi.s32','vaddlpl.s32','vaddlvs.s32','vaddlvc.s32','vaddlhi.s32','vaddlls.s32','vaddlge.s32','vaddllt.s32','vaddlgt.s32','vaddlle.s32',\n\n            'vcgeeq.s8','vcgene.s8','vcgecs.s8','vcgehs.s8','vcgecc.s8','vcgelo.s8','vcgemi.s8','vcgepl.s8','vcgevs.s8','vcgevc.s8','vcgehi.s8','vcgels.s8','vcgege.s8','vcgelt.s8','vcgegt.s8','vcgele.s8',\n            'vcgeeq.s16','vcgene.s16','vcgecs.s16','vcgehs.s16','vcgecc.s16','vcgelo.s16','vcgemi.s16','vcgepl.s16','vcgevs.s16','vcgevc.s16','vcgehi.s16','vcgels.s16','vcgege.s16','vcgelt.s16','vcgegt.s16','vcgele.s16',\n            'vcgeeq.s32','vcgene.s32','vcgecs.s32','vcgehs.s32','vcgecc.s32','vcgelo.s32','vcgemi.s32','vcgepl.s32','vcgevs.s32','vcgevc.s32','vcgehi.s32','vcgels.s32','vcgege.s32','vcgelt.s32','vcgegt.s32','vcgele.s32',\n\n            'vcleeq.s8','vclene.s8','vclecs.s8','vclehs.s8','vclecc.s8','vclelo.s8','vclemi.s8','vclepl.s8','vclevs.s8','vclevc.s8','vclehi.s8','vclels.s8','vclege.s8','vclelt.s8','vclegt.s8','vclele.s8',\n            'vcleeq.s16','vclene.s16','vclecs.s16','vclehs.s16','vclecc.s16','vclelo.s16','vclemi.s16','vclepl.s16','vclevs.s16','vclevc.s16','vclehi.s16','vclels.s16','vclege.s16','vclelt.s16','vclegt.s16','vclele.s16',\n            'vcleeq.s32','vclene.s32','vclecs.s32','vclehs.s32','vclecc.s32','vclelo.s32','vclemi.s32','vclepl.s32','vclevs.s32','vclevc.s32','vclehi.s32','vclels.s32','vclege.s32','vclelt.s32','vclegt.s32','vclele.s32',\n\n            'vcgteq.s8','vcgtne.s8','vcgtcs.s8','vcgths.s8','vcgtcc.s8','vcgtlo.s8','vcgtmi.s8','vcgtpl.s8','vcgtvs.s8','vcgtvc.s8','vcgthi.s8','vcgtls.s8','vcgtge.s8','vcgtlt.s8','vcgtgt.s8','vcgtle.s8',\n            'vcgteq.s16','vcgtne.s16','vcgtcs.s16','vcgths.s16','vcgtcc.s16','vcgtlo.s16','vcgtmi.s16','vcgtpl.s16','vcgtvs.s16','vcgtvc.s16','vcgthi.s16','vcgtls.s16','vcgtge.s16','vcgtlt.s16','vcgtgt.s16','vcgtle.s16',\n            'vcgteq.s32','vcgtne.s32','vcgtcs.s32','vcgths.s32','vcgtcc.s32','vcgtlo.s32','vcgtmi.s32','vcgtpl.s32','vcgtvs.s32','vcgtvc.s32','vcgthi.s32','vcgtls.s32','vcgtge.s32','vcgtlt.s32','vcgtgt.s32','vcgtle.s32',\n\n            'vclteq.s8','vcltne.s8','vcltcs.s8','vclths.s8','vcltcc.s8','vcltlo.s8','vcltmi.s8','vcltpl.s8','vcltvs.s8','vcltvc.s8','vclthi.s8','vcltls.s8','vcltge.s8','vcltlt.s8','vcltgt.s8','vcltle.s8',\n            'vclteq.s16','vcltne.s16','vcltcs.s16','vclths.s16','vcltcc.s16','vcltlo.s16','vcltmi.s16','vcltpl.s16','vcltvs.s16','vcltvc.s16','vclthi.s16','vcltls.s16','vcltge.s16','vcltlt.s16','vcltgt.s16','vcltle.s16',\n            'vclteq.s32','vcltne.s32','vcltcs.s32','vclths.s32','vcltcc.s32','vcltlo.s32','vcltmi.s32','vcltpl.s32','vcltvs.s32','vcltvc.s32','vclthi.s32','vcltls.s32','vcltge.s32','vcltlt.s32','vcltgt.s32','vcltle.s32',\n\n            'vclseq.s8','vclsne.s8','vclscs.s8','vclshs.s8','vclscc.s8','vclslo.s8','vclsmi.s8','vclspl.s8','vclsvs.s8','vclsvc.s8','vclshi.s8','vclsls.s8','vclsge.s8','vclslt.s8','vclsgt.s8','vclsle.s8',\n            'vclseq.s16','vclsne.s16','vclscs.s16','vclshs.s16','vclscc.s16','vclslo.s16','vclsmi.s16','vclspl.s16','vclsvs.s16','vclsvc.s16','vclshi.s16','vclsls.s16','vclsge.s16','vclslt.s16','vclsgt.s16','vclsle.s16',\n            'vclseq.s32','vclsne.s32','vclscs.s32','vclshs.s32','vclscc.s32','vclslo.s32','vclsmi.s32','vclspl.s32','vclsvs.s32','vclsvc.s32','vclshi.s32','vclsls.s32','vclsge.s32','vclslt.s32','vclsgt.s32','vclsle.s32',\n\n            'vaddweq.s8','vaddwne.s8','vaddwcs.s8','vaddwhs.s8','vaddwcc.s8','vaddwlo.s8','vaddwmi.s8','vaddwpl.s8','vaddwvs.s8','vaddwvc.s8','vaddwhi.s8','vaddwls.s8','vaddwge.s8','vaddwlt.s8','vaddwgt.s8','vaddwle.s8',\n            'vaddweq.s16','vaddwne.s16','vaddwcs.s16','vaddwhs.s16','vaddwcc.s16','vaddwlo.s16','vaddwmi.s16','vaddwpl.s16','vaddwvs.s16','vaddwvc.s16','vaddwhi.s16','vaddwls.s16','vaddwge.s16','vaddwlt.s16','vaddwgt.s16','vaddwle.s16',\n            'vaddweq.s32','vaddwne.s32','vaddwcs.s32','vaddwhs.s32','vaddwcc.s32','vaddwlo.s32','vaddwmi.s32','vaddwpl.s32','vaddwvs.s32','vaddwvc.s32','vaddwhi.s32','vaddwls.s32','vaddwge.s32','vaddwlt.s32','vaddwgt.s32','vaddwle.s32',\n\n            'vhaddeq.s8','vhaddne.s8','vhaddcs.s8','vhaddhs.s8','vhaddcc.s8','vhaddlo.s8','vhaddmi.s8','vhaddpl.s8','vhaddvs.s8','vhaddvc.s8','vhaddhi.s8','vhaddls.s8','vhaddge.s8','vhaddlt.s8','vhaddgt.s8','vhaddle.s8',\n            'vhaddeq.s16','vhaddne.s16','vhaddcs.s16','vhaddhs.s16','vhaddcc.s16','vhaddlo.s16','vhaddmi.s16','vhaddpl.s16','vhaddvs.s16','vhaddvc.s16','vhaddhi.s16','vhaddls.s16','vhaddge.s16','vhaddlt.s16','vhaddgt.s16','vhaddle.s16',\n            'vhaddeq.s32','vhaddne.s32','vhaddcs.s32','vhaddhs.s32','vhaddcc.s32','vhaddlo.s32','vhaddmi.s32','vhaddpl.s32','vhaddvs.s32','vhaddvc.s32','vhaddhi.s32','vhaddls.s32','vhaddge.s32','vhaddlt.s32','vhaddgt.s32','vhaddle.s32',\n\n            'vhsubeq.s8','vhsubne.s8','vhsubcs.s8','vhsubhs.s8','vhsubcc.s8','vhsublo.s8','vhsubmi.s8','vhsubpl.s8','vhsubvs.s8','vhsubvc.s8','vhsubhi.s8','vhsubls.s8','vhsubge.s8','vhsublt.s8','vhsubgt.s8','vhsuble.s8',\n            'vhsubeq.s16','vhsubne.s16','vhsubcs.s16','vhsubhs.s16','vhsubcc.s16','vhsublo.s16','vhsubmi.s16','vhsubpl.s16','vhsubvs.s16','vhsubvc.s16','vhsubhi.s16','vhsubls.s16','vhsubge.s16','vhsublt.s16','vhsubgt.s16','vhsuble.s16',\n            'vhsubeq.s32','vhsubne.s32','vhsubcs.s32','vhsubhs.s32','vhsubcc.s32','vhsublo.s32','vhsubmi.s32','vhsubpl.s32','vhsubvs.s32','vhsubvc.s32','vhsubhi.s32','vhsubls.s32','vhsubge.s32','vhsublt.s32','vhsubgt.s32','vhsuble.s32',\n\n            'vmaxeq.s8','vmaxne.s8','vmaxcs.s8','vmaxhs.s8','vmaxcc.s8','vmaxlo.s8','vmaxmi.s8','vmaxpl.s8','vmaxvs.s8','vmaxvc.s8','vmaxhi.s8','vmaxls.s8','vmaxge.s8','vmaxlt.s8','vmaxgt.s8','vmaxle.s8',\n            'vmaxeq.s16','vmaxne.s16','vmaxcs.s16','vmaxhs.s16','vmaxcc.s16','vmaxlo.s16','vmaxmi.s16','vmaxpl.s16','vmaxvs.s16','vmaxvc.s16','vmaxhi.s16','vmaxls.s16','vmaxge.s16','vmaxlt.s16','vmaxgt.s16','vmaxle.s16',\n            'vmaxeq.s32','vmaxne.s32','vmaxcs.s32','vmaxhs.s32','vmaxcc.s32','vmaxlo.s32','vmaxmi.s32','vmaxpl.s32','vmaxvs.s32','vmaxvc.s32','vmaxhi.s32','vmaxls.s32','vmaxge.s32','vmaxlt.s32','vmaxgt.s32','vmaxle.s32',\n\n            'vmineq.s8','vminne.s8','vmincs.s8','vminhs.s8','vmincc.s8','vminlo.s8','vminmi.s8','vminpl.s8','vminvs.s8','vminvc.s8','vminhi.s8','vminls.s8','vminge.s8','vminlt.s8','vmingt.s8','vminle.s8',\n            'vmineq.s16','vminne.s16','vmincs.s16','vminhs.s16','vmincc.s16','vminlo.s16','vminmi.s16','vminpl.s16','vminvs.s16','vminvc.s16','vminhi.s16','vminls.s16','vminge.s16','vminlt.s16','vmingt.s16','vminle.s16',\n            'vmineq.s32','vminne.s32','vmincs.s32','vminhs.s32','vmincc.s32','vminlo.s32','vminmi.s32','vminpl.s32','vminvs.s32','vminvc.s32','vminhi.s32','vminls.s32','vminge.s32','vminlt.s32','vmingt.s32','vminle.s32',\n\n            'vmlaleq.s8','vmlalne.s8','vmlalcs.s8','vmlalhs.s8','vmlalcc.s8','vmlallo.s8','vmlalmi.s8','vmlalpl.s8','vmlalvs.s8','vmlalvc.s8','vmlalhi.s8','vmlalls.s8','vmlalge.s8','vmlallt.s8','vmlalgt.s8','vmlalle.s8',\n            'vmlaleq.s16','vmlalne.s16','vmlalcs.s16','vmlalhs.s16','vmlalcc.s16','vmlallo.s16','vmlalmi.s16','vmlalpl.s16','vmlalvs.s16','vmlalvc.s16','vmlalhi.s16','vmlalls.s16','vmlalge.s16','vmlallt.s16','vmlalgt.s16','vmlalle.s16',\n            'vmlaleq.s32','vmlalne.s32','vmlalcs.s32','vmlalhs.s32','vmlalcc.s32','vmlallo.s32','vmlalmi.s32','vmlalpl.s32','vmlalvs.s32','vmlalvc.s32','vmlalhi.s32','vmlalls.s32','vmlalge.s32','vmlallt.s32','vmlalgt.s32','vmlalle.s32',\n\n            'vmlsleq.s8','vmlslne.s8','vmlslcs.s8','vmlslhs.s8','vmlslcc.s8','vmlsllo.s8','vmlslmi.s8','vmlslpl.s8','vmlslvs.s8','vmlslvc.s8','vmlslhi.s8','vmlslls.s8','vmlslge.s8','vmlsllt.s8','vmlslgt.s8','vmlslle.s8',\n            'vmlsleq.s16','vmlslne.s16','vmlslcs.s16','vmlslhs.s16','vmlslcc.s16','vmlsllo.s16','vmlslmi.s16','vmlslpl.s16','vmlslvs.s16','vmlslvc.s16','vmlslhi.s16','vmlslls.s16','vmlslge.s16','vmlsllt.s16','vmlslgt.s16','vmlslle.s16',\n            'vmlsleq.s32','vmlslne.s32','vmlslcs.s32','vmlslhs.s32','vmlslcc.s32','vmlsllo.s32','vmlslmi.s32','vmlslpl.s32','vmlslvs.s32','vmlslvc.s32','vmlslhi.s32','vmlslls.s32','vmlslge.s32','vmlsllt.s32','vmlslgt.s32','vmlslle.s32',\n\n            'vnegeq.s8','vnegne.s8','vnegcs.s8','vneghs.s8','vnegcc.s8','vneglo.s8','vnegmi.s8','vnegpl.s8','vnegvs.s8','vnegvc.s8','vneghi.s8','vnegls.s8','vnegge.s8','vneglt.s8','vneggt.s8','vnegle.s8',\n            'vnegeq.s16','vnegne.s16','vnegcs.s16','vneghs.s16','vnegcc.s16','vneglo.s16','vnegmi.s16','vnegpl.s16','vnegvs.s16','vnegvc.s16','vneghi.s16','vnegls.s16','vnegge.s16','vneglt.s16','vneggt.s16','vnegle.s16',\n            'vnegeq.s32','vnegne.s32','vnegcs.s32','vneghs.s32','vnegcc.s32','vneglo.s32','vnegmi.s32','vnegpl.s32','vnegvs.s32','vnegvc.s32','vneghi.s32','vnegls.s32','vnegge.s32','vneglt.s32','vneggt.s32','vnegle.s32',\n\n            'vpadaleq.s8','vpadalne.s8','vpadalcs.s8','vpadalhs.s8','vpadalcc.s8','vpadallo.s8','vpadalmi.s8','vpadalpl.s8','vpadalvs.s8','vpadalvc.s8','vpadalhi.s8','vpadalls.s8','vpadalge.s8','vpadallt.s8','vpadalgt.s8','vpadalle.s8',\n            'vpadaleq.s16','vpadalne.s16','vpadalcs.s16','vpadalhs.s16','vpadalcc.s16','vpadallo.s16','vpadalmi.s16','vpadalpl.s16','vpadalvs.s16','vpadalvc.s16','vpadalhi.s16','vpadalls.s16','vpadalge.s16','vpadallt.s16','vpadalgt.s16','vpadalle.s16',\n            'vpadaleq.s32','vpadalne.s32','vpadalcs.s32','vpadalhs.s32','vpadalcc.s32','vpadallo.s32','vpadalmi.s32','vpadalpl.s32','vpadalvs.s32','vpadalvc.s32','vpadalhi.s32','vpadalls.s32','vpadalge.s32','vpadallt.s32','vpadalgt.s32','vpadalle.s32',\n\n            'vmovleq.s8','vmovlne.s8','vmovlcs.s8','vmovlhs.s8','vmovlcc.s8','vmovllo.s8','vmovlmi.s8','vmovlpl.s8','vmovlvs.s8','vmovlvc.s8','vmovlhi.s8','vmovlls.s8','vmovlge.s8','vmovllt.s8','vmovlgt.s8','vmovlle.s8',\n            'vmovleq.s16','vmovlne.s16','vmovlcs.s16','vmovlhs.s16','vmovlcc.s16','vmovllo.s16','vmovlmi.s16','vmovlpl.s16','vmovlvs.s16','vmovlvc.s16','vmovlhi.s16','vmovlls.s16','vmovlge.s16','vmovllt.s16','vmovlgt.s16','vmovlle.s16',\n            'vmovleq.s32','vmovlne.s32','vmovlcs.s32','vmovlhs.s32','vmovlcc.s32','vmovllo.s32','vmovlmi.s32','vmovlpl.s32','vmovlvs.s32','vmovlvc.s32','vmovlhi.s32','vmovlls.s32','vmovlge.s32','vmovllt.s32','vmovlgt.s32','vmovlle.s32',\n\n            'vmulleq.s8','vmullne.s8','vmullcs.s8','vmullhs.s8','vmullcc.s8','vmulllo.s8','vmullmi.s8','vmullpl.s8','vmullvs.s8','vmullvc.s8','vmullhi.s8','vmullls.s8','vmullge.s8','vmulllt.s8','vmullgt.s8','vmullle.s8',\n            'vmulleq.s16','vmullne.s16','vmullcs.s16','vmullhs.s16','vmullcc.s16','vmulllo.s16','vmullmi.s16','vmullpl.s16','vmullvs.s16','vmullvc.s16','vmullhi.s16','vmullls.s16','vmullge.s16','vmulllt.s16','vmullgt.s16','vmullle.s16',\n            'vmulleq.s32','vmullne.s32','vmullcs.s32','vmullhs.s32','vmullcc.s32','vmulllo.s32','vmullmi.s32','vmullpl.s32','vmullvs.s32','vmullvc.s32','vmullhi.s32','vmullls.s32','vmullge.s32','vmulllt.s32','vmullgt.s32','vmullle.s32',\n\n            'vpaddleq.s8','vpaddlne.s8','vpaddlcs.s8','vpaddlhs.s8','vpaddlcc.s8','vpaddllo.s8','vpaddlmi.s8','vpaddlpl.s8','vpaddlvs.s8','vpaddlvc.s8','vpaddlhi.s8','vpaddlls.s8','vpaddlge.s8','vpaddllt.s8','vpaddlgt.s8','vpaddlle.s8',\n            'vpaddleq.s16','vpaddlne.s16','vpaddlcs.s16','vpaddlhs.s16','vpaddlcc.s16','vpaddllo.s16','vpaddlmi.s16','vpaddlpl.s16','vpaddlvs.s16','vpaddlvc.s16','vpaddlhi.s16','vpaddlls.s16','vpaddlge.s16','vpaddllt.s16','vpaddlgt.s16','vpaddlle.s16',\n            'vpaddleq.s32','vpaddlne.s32','vpaddlcs.s32','vpaddlhs.s32','vpaddlcc.s32','vpaddllo.s32','vpaddlmi.s32','vpaddlpl.s32','vpaddlvs.s32','vpaddlvc.s32','vpaddlhi.s32','vpaddlls.s32','vpaddlge.s32','vpaddllt.s32','vpaddlgt.s32','vpaddlle.s32',\n\n            'vpmaxeq.s8','vpmaxne.s8','vpmaxcs.s8','vpmaxhs.s8','vpmaxcc.s8','vpmaxlo.s8','vpmaxmi.s8','vpmaxpl.s8','vpmaxvs.s8','vpmaxvc.s8','vpmaxhi.s8','vpmaxls.s8','vpmaxge.s8','vpmaxlt.s8','vpmaxgt.s8','vpmaxle.s8',\n            'vpmaxeq.s16','vpmaxne.s16','vpmaxcs.s16','vpmaxhs.s16','vpmaxcc.s16','vpmaxlo.s16','vpmaxmi.s16','vpmaxpl.s16','vpmaxvs.s16','vpmaxvc.s16','vpmaxhi.s16','vpmaxls.s16','vpmaxge.s16','vpmaxlt.s16','vpmaxgt.s16','vpmaxle.s16',\n            'vpmaxeq.s32','vpmaxne.s32','vpmaxcs.s32','vpmaxhs.s32','vpmaxcc.s32','vpmaxlo.s32','vpmaxmi.s32','vpmaxpl.s32','vpmaxvs.s32','vpmaxvc.s32','vpmaxhi.s32','vpmaxls.s32','vpmaxge.s32','vpmaxlt.s32','vpmaxgt.s32','vpmaxle.s32',\n\n            'vpmineq.s8','vpminne.s8','vpmincs.s8','vpminhs.s8','vpmincc.s8','vpminlo.s8','vpminmi.s8','vpminpl.s8','vpminvs.s8','vpminvc.s8','vpminhi.s8','vpminls.s8','vpminge.s8','vpminlt.s8','vpmingt.s8','vpminle.s8',\n            'vpmineq.s16','vpminne.s16','vpmincs.s16','vpminhs.s16','vpmincc.s16','vpminlo.s16','vpminmi.s16','vpminpl.s16','vpminvs.s16','vpminvc.s16','vpminhi.s16','vpminls.s16','vpminge.s16','vpminlt.s16','vpmingt.s16','vpminle.s16',\n            'vpmineq.s32','vpminne.s32','vpmincs.s32','vpminhs.s32','vpmincc.s32','vpminlo.s32','vpminmi.s32','vpminpl.s32','vpminvs.s32','vpminvc.s32','vpminhi.s32','vpminls.s32','vpminge.s32','vpminlt.s32','vpmingt.s32','vpminle.s32',\n\n            'vqabseq.s8','vqabsne.s8','vqabscs.s8','vqabshs.s8','vqabscc.s8','vqabslo.s8','vqabsmi.s8','vqabspl.s8','vqabsvs.s8','vqabsvc.s8','vqabshi.s8','vqabsls.s8','vqabsge.s8','vqabslt.s8','vqabsgt.s8','vqabsle.s8',\n            'vqabseq.s16','vqabsne.s16','vqabscs.s16','vqabshs.s16','vqabscc.s16','vqabslo.s16','vqabsmi.s16','vqabspl.s16','vqabsvs.s16','vqabsvc.s16','vqabshi.s16','vqabsls.s16','vqabsge.s16','vqabslt.s16','vqabsgt.s16','vqabsle.s16',\n            'vqabseq.s32','vqabsne.s32','vqabscs.s32','vqabshs.s32','vqabscc.s32','vqabslo.s32','vqabsmi.s32','vqabspl.s32','vqabsvs.s32','vqabsvc.s32','vqabshi.s32','vqabsls.s32','vqabsge.s32','vqabslt.s32','vqabsgt.s32','vqabsle.s32',\n\n            'vqaddeq.s8','vqaddne.s8','vqaddcs.s8','vqaddhs.s8','vqaddcc.s8','vqaddlo.s8','vqaddmi.s8','vqaddpl.s8','vqaddvs.s8','vqaddvc.s8','vqaddhi.s8','vqaddls.s8','vqaddge.s8','vqaddlt.s8','vqaddgt.s8','vqaddle.s8',\n            'vqaddeq.s16','vqaddne.s16','vqaddcs.s16','vqaddhs.s16','vqaddcc.s16','vqaddlo.s16','vqaddmi.s16','vqaddpl.s16','vqaddvs.s16','vqaddvc.s16','vqaddhi.s16','vqaddls.s16','vqaddge.s16','vqaddlt.s16','vqaddgt.s16','vqaddle.s16',\n            'vqaddeq.s32','vqaddne.s32','vqaddcs.s32','vqaddhs.s32','vqaddcc.s32','vqaddlo.s32','vqaddmi.s32','vqaddpl.s32','vqaddvs.s32','vqaddvc.s32','vqaddhi.s32','vqaddls.s32','vqaddge.s32','vqaddlt.s32','vqaddgt.s32','vqaddle.s32',\n            'vqaddeq.s64','vqaddne.s64','vqaddcs.s64','vqaddhs.s64','vqaddcc.s64','vqaddlo.s64','vqaddmi.s64','vqaddpl.s64','vqaddvs.s64','vqaddvc.s64','vqaddhi.s64','vqaddls.s64','vqaddge.s64','vqaddlt.s64','vqaddgt.s64','vqaddle.s64',\n\n            'vqdmlaleq.s16','vqdmlalne.s16','vqdmlalcs.s16','vqdmlalhs.s16','vqdmlalcc.s16','vqdmlallo.s16','vqdmlalmi.s16','vqdmlalpl.s16','vqdmlalvs.s16','vqdmlalvc.s16','vqdmlalhi.s16','vqdmlalls.s16','vqdmlalge.s16','vqdmlallt.s16','vqdmlalgt.s16','vqdmlalle.s16',\n            'vqdmlaleq.s32','vqdmlalne.s32','vqdmlalcs.s32','vqdmlalhs.s32','vqdmlalcc.s32','vqdmlallo.s32','vqdmlalmi.s32','vqdmlalpl.s32','vqdmlalvs.s32','vqdmlalvc.s32','vqdmlalhi.s32','vqdmlalls.s32','vqdmlalge.s32','vqdmlallt.s32','vqdmlalgt.s32','vqdmlalle.s32',\n\n            'vqdmlsleq.s16','vqdmlslne.s16','vqdmlslcs.s16','vqdmlslhs.s16','vqdmlslcc.s16','vqdmlsllo.s16','vqdmlslmi.s16','vqdmlslpl.s16','vqdmlslvs.s16','vqdmlslvc.s16','vqdmlslhi.s16','vqdmlslls.s16','vqdmlslge.s16','vqdmlsllt.s16','vqdmlslgt.s16','vqdmlslle.s16',\n            'vqdmlsleq.s32','vqdmlslne.s32','vqdmlslcs.s32','vqdmlslhs.s32','vqdmlslcc.s32','vqdmlsllo.s32','vqdmlslmi.s32','vqdmlslpl.s32','vqdmlslvs.s32','vqdmlslvc.s32','vqdmlslhi.s32','vqdmlslls.s32','vqdmlslge.s32','vqdmlsllt.s32','vqdmlslgt.s32','vqdmlslle.s32',\n\n            'vqdmulheq.s16','vqdmulhne.s16','vqdmulhcs.s16','vqdmulhhs.s16','vqdmulhcc.s16','vqdmulhlo.s16','vqdmulhmi.s16','vqdmulhpl.s16','vqdmulhvs.s16','vqdmulhvc.s16','vqdmulhhi.s16','vqdmulhls.s16','vqdmulhge.s16','vqdmulhlt.s16','vqdmulhgt.s16','vqdmulhle.s16',\n            'vqdmulheq.s32','vqdmulhne.s32','vqdmulhcs.s32','vqdmulhhs.s32','vqdmulhcc.s32','vqdmulhlo.s32','vqdmulhmi.s32','vqdmulhpl.s32','vqdmulhvs.s32','vqdmulhvc.s32','vqdmulhhi.s32','vqdmulhls.s32','vqdmulhge.s32','vqdmulhlt.s32','vqdmulhgt.s32','vqdmulhle.s32',\n\n            'vqdmulleq.s16','vqdmullne.s16','vqdmullcs.s16','vqdmullhs.s16','vqdmullcc.s16','vqdmulllo.s16','vqdmullmi.s16','vqdmullpl.s16','vqdmullvs.s16','vqdmullvc.s16','vqdmullhi.s16','vqdmullls.s16','vqdmullge.s16','vqdmulllt.s16','vqdmullgt.s16','vqdmullle.s16',\n            'vqdmulleq.s32','vqdmullne.s32','vqdmullcs.s32','vqdmullhs.s32','vqdmullcc.s32','vqdmulllo.s32','vqdmullmi.s32','vqdmullpl.s32','vqdmullvs.s32','vqdmullvc.s32','vqdmullhi.s32','vqdmullls.s32','vqdmullge.s32','vqdmulllt.s32','vqdmullgt.s32','vqdmullle.s32',\n\n            'vqmovneq.s16','vqmovnne.s16','vqmovncs.s16','vqmovnhs.s16','vqmovncc.s16','vqmovnlo.s16','vqmovnmi.s16','vqmovnpl.s16','vqmovnvs.s16','vqmovnvc.s16','vqmovnhi.s16','vqmovnls.s16','vqmovnge.s16','vqmovnlt.s16','vqmovngt.s16','vqmovnle.s16',\n            'vqmovneq.s32','vqmovnne.s32','vqmovncs.s32','vqmovnhs.s32','vqmovncc.s32','vqmovnlo.s32','vqmovnmi.s32','vqmovnpl.s32','vqmovnvs.s32','vqmovnvc.s32','vqmovnhi.s32','vqmovnls.s32','vqmovnge.s32','vqmovnlt.s32','vqmovngt.s32','vqmovnle.s32',\n            'vqmovneq.s64','vqmovnne.s64','vqmovncs.s64','vqmovnhs.s64','vqmovncc.s64','vqmovnlo.s64','vqmovnmi.s64','vqmovnpl.s64','vqmovnvs.s64','vqmovnvc.s64','vqmovnhi.s64','vqmovnls.s64','vqmovnge.s64','vqmovnlt.s64','vqmovngt.s64','vqmovnle.s64',\n\n            'vqmovuneq.s16','vqmovunne.s16','vqmovuncs.s16','vqmovunhs.s16','vqmovuncc.s16','vqmovunlo.s16','vqmovunmi.s16','vqmovunpl.s16','vqmovunvs.s16','vqmovunvc.s16','vqmovunhi.s16','vqmovunls.s16','vqmovunge.s16','vqmovunlt.s16','vqmovungt.s16','vqmovunle.s16',\n            'vqmovuneq.s32','vqmovunne.s32','vqmovuncs.s32','vqmovunhs.s32','vqmovuncc.s32','vqmovunlo.s32','vqmovunmi.s32','vqmovunpl.s32','vqmovunvs.s32','vqmovunvc.s32','vqmovunhi.s32','vqmovunls.s32','vqmovunge.s32','vqmovunlt.s32','vqmovungt.s32','vqmovunle.s32',\n            'vqmovuneq.s64','vqmovunne.s64','vqmovuncs.s64','vqmovunhs.s64','vqmovuncc.s64','vqmovunlo.s64','vqmovunmi.s64','vqmovunpl.s64','vqmovunvs.s64','vqmovunvc.s64','vqmovunhi.s64','vqmovunls.s64','vqmovunge.s64','vqmovunlt.s64','vqmovungt.s64','vqmovunle.s64',\n\n            'vqnegeq.s8','vqnegne.s8','vqnegcs.s8','vqneghs.s8','vqnegcc.s8','vqneglo.s8','vqnegmi.s8','vqnegpl.s8','vqnegvs.s8','vqnegvc.s8','vqneghi.s8','vqnegls.s8','vqnegge.s8','vqneglt.s8','vqneggt.s8','vqnegle.s8',\n            'vqnegeq.s16','vqnegne.s16','vqnegcs.s16','vqneghs.s16','vqnegcc.s16','vqneglo.s16','vqnegmi.s16','vqnegpl.s16','vqnegvs.s16','vqnegvc.s16','vqneghi.s16','vqnegls.s16','vqnegge.s16','vqneglt.s16','vqneggt.s16','vqnegle.s16',\n            'vqnegeq.s32','vqnegne.s32','vqnegcs.s32','vqneghs.s32','vqnegcc.s32','vqneglo.s32','vqnegmi.s32','vqnegpl.s32','vqnegvs.s32','vqnegvc.s32','vqneghi.s32','vqnegls.s32','vqnegge.s32','vqneglt.s32','vqneggt.s32','vqnegle.s32',\n\n            'vqrdmulheq.s16','vqrdmulhne.s16','vqrdmulhcs.s16','vqrdmulhhs.s16','vqrdmulhcc.s16','vqrdmulhlo.s16','vqrdmulhmi.s16','vqrdmulhpl.s16','vqrdmulhvs.s16','vqrdmulhvc.s16','vqrdmulhhi.s16','vqrdmulhls.s16','vqrdmulhge.s16','vqrdmulhlt.s16','vqrdmulhgt.s16','vqrdmulhle.s16',\n            'vqrdmulheq.s32','vqrdmulhne.s32','vqrdmulhcs.s32','vqrdmulhhs.s32','vqrdmulhcc.s32','vqrdmulhlo.s32','vqrdmulhmi.s32','vqrdmulhpl.s32','vqrdmulhvs.s32','vqrdmulhvc.s32','vqrdmulhhi.s32','vqrdmulhls.s32','vqrdmulhge.s32','vqrdmulhlt.s32','vqrdmulhgt.s32','vqrdmulhle.s32',\n\n            'vqrshleq.s8','vqrshlne.s8','vqrshlcs.s8','vqrshlhs.s8','vqrshlcc.s8','vqrshllo.s8','vqrshlmi.s8','vqrshlpl.s8','vqrshlvs.s8','vqrshlvc.s8','vqrshlhi.s8','vqrshlls.s8','vqrshlge.s8','vqrshllt.s8','vqrshlgt.s8','vqrshlle.s8',\n            'vqrshleq.s16','vqrshlne.s16','vqrshlcs.s16','vqrshlhs.s16','vqrshlcc.s16','vqrshllo.s16','vqrshlmi.s16','vqrshlpl.s16','vqrshlvs.s16','vqrshlvc.s16','vqrshlhi.s16','vqrshlls.s16','vqrshlge.s16','vqrshllt.s16','vqrshlgt.s16','vqrshlle.s16',\n            'vqrshleq.s32','vqrshlne.s32','vqrshlcs.s32','vqrshlhs.s32','vqrshlcc.s32','vqrshllo.s32','vqrshlmi.s32','vqrshlpl.s32','vqrshlvs.s32','vqrshlvc.s32','vqrshlhi.s32','vqrshlls.s32','vqrshlge.s32','vqrshllt.s32','vqrshlgt.s32','vqrshlle.s32',\n            'vqrshleq.s64','vqrshlne.s64','vqrshlcs.s64','vqrshlhs.s64','vqrshlcc.s64','vqrshllo.s64','vqrshlmi.s64','vqrshlpl.s64','vqrshlvs.s64','vqrshlvc.s64','vqrshlhi.s64','vqrshlls.s64','vqrshlge.s64','vqrshllt.s64','vqrshlgt.s64','vqrshlle.s64',\n\n            'vqrshrneq.s16','vqrshrnne.s16','vqrshrncs.s16','vqrshrnhs.s16','vqrshrncc.s16','vqrshrnlo.s16','vqrshrnmi.s16','vqrshrnpl.s16','vqrshrnvs.s16','vqrshrnvc.s16','vqrshrnhi.s16','vqrshrnls.s16','vqrshrnge.s16','vqrshrnlt.s16','vqrshrngt.s16','vqrshrnle.s16',\n            'vqrshrneq.s32','vqrshrnne.s32','vqrshrncs.s32','vqrshrnhs.s32','vqrshrncc.s32','vqrshrnlo.s32','vqrshrnmi.s32','vqrshrnpl.s32','vqrshrnvs.s32','vqrshrnvc.s32','vqrshrnhi.s32','vqrshrnls.s32','vqrshrnge.s32','vqrshrnlt.s32','vqrshrngt.s32','vqrshrnle.s32',\n            'vqrshrneq.s64','vqrshrnne.s64','vqrshrncs.s64','vqrshrnhs.s64','vqrshrncc.s64','vqrshrnlo.s64','vqrshrnmi.s64','vqrshrnpl.s64','vqrshrnvs.s64','vqrshrnvc.s64','vqrshrnhi.s64','vqrshrnls.s64','vqrshrnge.s64','vqrshrnlt.s64','vqrshrngt.s64','vqrshrnle.s64',\n\n            'vqrshruneq.s16','vqrshrunne.s16','vqrshruncs.s16','vqrshrunhs.s16','vqrshruncc.s16','vqrshrunlo.s16','vqrshrunmi.s16','vqrshrunpl.s16','vqrshrunvs.s16','vqrshrunvc.s16','vqrshrunhi.s16','vqrshrunls.s16','vqrshrunge.s16','vqrshrunlt.s16','vqrshrungt.s16','vqrshrunle.s16',\n            'vqrshruneq.s32','vqrshrunne.s32','vqrshruncs.s32','vqrshrunhs.s32','vqrshruncc.s32','vqrshrunlo.s32','vqrshrunmi.s32','vqrshrunpl.s32','vqrshrunvs.s32','vqrshrunvc.s32','vqrshrunhi.s32','vqrshrunls.s32','vqrshrunge.s32','vqrshrunlt.s32','vqrshrungt.s32','vqrshrunle.s32',\n            'vqrshruneq.s64','vqrshrunne.s64','vqrshruncs.s64','vqrshrunhs.s64','vqrshruncc.s64','vqrshrunlo.s64','vqrshrunmi.s64','vqrshrunpl.s64','vqrshrunvs.s64','vqrshrunvc.s64','vqrshrunhi.s64','vqrshrunls.s64','vqrshrunge.s64','vqrshrunlt.s64','vqrshrungt.s64','vqrshrunle.s64',\n\n            'vqshleq.s8','vqshlne.s8','vqshlcs.s8','vqshlhs.s8','vqshlcc.s8','vqshllo.s8','vqshlmi.s8','vqshlpl.s8','vqshlvs.s8','vqshlvc.s8','vqshlhi.s8','vqshlls.s8','vqshlge.s8','vqshllt.s8','vqshlgt.s8','vqshlle.s8',\n            'vqshleq.s16','vqshlne.s16','vqshlcs.s16','vqshlhs.s16','vqshlcc.s16','vqshllo.s16','vqshlmi.s16','vqshlpl.s16','vqshlvs.s16','vqshlvc.s16','vqshlhi.s16','vqshlls.s16','vqshlge.s16','vqshllt.s16','vqshlgt.s16','vqshlle.s16',\n            'vqshleq.s32','vqshlne.s32','vqshlcs.s32','vqshlhs.s32','vqshlcc.s32','vqshllo.s32','vqshlmi.s32','vqshlpl.s32','vqshlvs.s32','vqshlvc.s32','vqshlhi.s32','vqshlls.s32','vqshlge.s32','vqshllt.s32','vqshlgt.s32','vqshlle.s32',\n            'vqshleq.s64','vqshlne.s64','vqshlcs.s64','vqshlhs.s64','vqshlcc.s64','vqshllo.s64','vqshlmi.s64','vqshlpl.s64','vqshlvs.s64','vqshlvc.s64','vqshlhi.s64','vqshlls.s64','vqshlge.s64','vqshllt.s64','vqshlgt.s64','vqshlle.s64',\n\n            'vqshlueq.s8','vqshlune.s8','vqshlucs.s8','vqshluhs.s8','vqshlucc.s8','vqshlulo.s8','vqshlumi.s8','vqshlupl.s8','vqshluvs.s8','vqshluvc.s8','vqshluhi.s8','vqshluls.s8','vqshluge.s8','vqshlult.s8','vqshlugt.s8','vqshlule.s8',\n            'vqshlueq.s16','vqshlune.s16','vqshlucs.s16','vqshluhs.s16','vqshlucc.s16','vqshlulo.s16','vqshlumi.s16','vqshlupl.s16','vqshluvs.s16','vqshluvc.s16','vqshluhi.s16','vqshluls.s16','vqshluge.s16','vqshlult.s16','vqshlugt.s16','vqshlule.s16',\n            'vqshlueq.s32','vqshlune.s32','vqshlucs.s32','vqshluhs.s32','vqshlucc.s32','vqshlulo.s32','vqshlumi.s32','vqshlupl.s32','vqshluvs.s32','vqshluvc.s32','vqshluhi.s32','vqshluls.s32','vqshluge.s32','vqshlult.s32','vqshlugt.s32','vqshlule.s32',\n            'vqshlueq.s64','vqshlune.s64','vqshlucs.s64','vqshluhs.s64','vqshlucc.s64','vqshlulo.s64','vqshlumi.s64','vqshlupl.s64','vqshluvs.s64','vqshluvc.s64','vqshluhi.s64','vqshluls.s64','vqshluge.s64','vqshlult.s64','vqshlugt.s64','vqshlule.s64',\n\n            'vqshrneq.s16','vqshrnne.s16','vqshrncs.s16','vqshrnhs.s16','vqshrncc.s16','vqshrnlo.s16','vqshrnmi.s16','vqshrnpl.s16','vqshrnvs.s16','vqshrnvc.s16','vqshrnhi.s16','vqshrnls.s16','vqshrnge.s16','vqshrnlt.s16','vqshrngt.s16','vqshrnle.s16',\n            'vqshrneq.s32','vqshrnne.s32','vqshrncs.s32','vqshrnhs.s32','vqshrncc.s32','vqshrnlo.s32','vqshrnmi.s32','vqshrnpl.s32','vqshrnvs.s32','vqshrnvc.s32','vqshrnhi.s32','vqshrnls.s32','vqshrnge.s32','vqshrnlt.s32','vqshrngt.s32','vqshrnle.s32',\n            'vqshrneq.s64','vqshrnne.s64','vqshrncs.s64','vqshrnhs.s64','vqshrncc.s64','vqshrnlo.s64','vqshrnmi.s64','vqshrnpl.s64','vqshrnvs.s64','vqshrnvc.s64','vqshrnhi.s64','vqshrnls.s64','vqshrnge.s64','vqshrnlt.s64','vqshrngt.s64','vqshrnle.s64',\n\n            'vqshruneq.s16','vqshrunne.s16','vqshruncs.s16','vqshrunhs.s16','vqshruncc.s16','vqshrunlo.s16','vqshrunmi.s16','vqshrunpl.s16','vqshrunvs.s16','vqshrunvc.s16','vqshrunhi.s16','vqshrunls.s16','vqshrunge.s16','vqshrunlt.s16','vqshrungt.s16','vqshrunle.s16',\n            'vqshruneq.s32','vqshrunne.s32','vqshruncs.s32','vqshrunhs.s32','vqshruncc.s32','vqshrunlo.s32','vqshrunmi.s32','vqshrunpl.s32','vqshrunvs.s32','vqshrunvc.s32','vqshrunhi.s32','vqshrunls.s32','vqshrunge.s32','vqshrunlt.s32','vqshrungt.s32','vqshrunle.s32',\n            'vqshruneq.s64','vqshrunne.s64','vqshruncs.s64','vqshrunhs.s64','vqshruncc.s64','vqshrunlo.s64','vqshrunmi.s64','vqshrunpl.s64','vqshrunvs.s64','vqshrunvc.s64','vqshrunhi.s64','vqshrunls.s64','vqshrunge.s64','vqshrunlt.s64','vqshrungt.s64','vqshrunle.s64',\n\n            'vqsubeq.s8','vqsubne.s8','vqsubcs.s8','vqsubhs.s8','vqsubcc.s8','vqsublo.s8','vqsubmi.s8','vqsubpl.s8','vqsubvs.s8','vqsubvc.s8','vqsubhi.s8','vqsubls.s8','vqsubge.s8','vqsublt.s8','vqsubgt.s8','vqsuble.s8',\n            'vqsubeq.s16','vqsubne.s16','vqsubcs.s16','vqsubhs.s16','vqsubcc.s16','vqsublo.s16','vqsubmi.s16','vqsubpl.s16','vqsubvs.s16','vqsubvc.s16','vqsubhi.s16','vqsubls.s16','vqsubge.s16','vqsublt.s16','vqsubgt.s16','vqsuble.s16',\n            'vqsubeq.s32','vqsubne.s32','vqsubcs.s32','vqsubhs.s32','vqsubcc.s32','vqsublo.s32','vqsubmi.s32','vqsubpl.s32','vqsubvs.s32','vqsubvc.s32','vqsubhi.s32','vqsubls.s32','vqsubge.s32','vqsublt.s32','vqsubgt.s32','vqsuble.s32',\n            'vqsubeq.s64','vqsubne.s64','vqsubcs.s64','vqsubhs.s64','vqsubcc.s64','vqsublo.s64','vqsubmi.s64','vqsubpl.s64','vqsubvs.s64','vqsubvc.s64','vqsubhi.s64','vqsubls.s64','vqsubge.s64','vqsublt.s64','vqsubgt.s64','vqsuble.s64',\n\n            'vrhaddeq.s8','vrhaddne.s8','vrhaddcs.s8','vrhaddhs.s8','vrhaddcc.s8','vrhaddlo.s8','vrhaddmi.s8','vrhaddpl.s8','vrhaddvs.s8','vrhaddvc.s8','vrhaddhi.s8','vrhaddls.s8','vrhaddge.s8','vrhaddlt.s8','vrhaddgt.s8','vrhaddle.s8',\n            'vrhaddeq.s16','vrhaddne.s16','vrhaddcs.s16','vrhaddhs.s16','vrhaddcc.s16','vrhaddlo.s16','vrhaddmi.s16','vrhaddpl.s16','vrhaddvs.s16','vrhaddvc.s16','vrhaddhi.s16','vrhaddls.s16','vrhaddge.s16','vrhaddlt.s16','vrhaddgt.s16','vrhaddle.s16',\n            'vrhaddeq.s32','vrhaddne.s32','vrhaddcs.s32','vrhaddhs.s32','vrhaddcc.s32','vrhaddlo.s32','vrhaddmi.s32','vrhaddpl.s32','vrhaddvs.s32','vrhaddvc.s32','vrhaddhi.s32','vrhaddls.s32','vrhaddge.s32','vrhaddlt.s32','vrhaddgt.s32','vrhaddle.s32',\n\n            'vrshleq.s8','vrshlne.s8','vrshlcs.s8','vrshlhs.s8','vrshlcc.s8','vrshllo.s8','vrshlmi.s8','vrshlpl.s8','vrshlvs.s8','vrshlvc.s8','vrshlhi.s8','vrshlls.s8','vrshlge.s8','vrshllt.s8','vrshlgt.s8','vrshlle.s8',\n            'vrshleq.s16','vrshlne.s16','vrshlcs.s16','vrshlhs.s16','vrshlcc.s16','vrshllo.s16','vrshlmi.s16','vrshlpl.s16','vrshlvs.s16','vrshlvc.s16','vrshlhi.s16','vrshlls.s16','vrshlge.s16','vrshllt.s16','vrshlgt.s16','vrshlle.s16',\n            'vrshleq.s32','vrshlne.s32','vrshlcs.s32','vrshlhs.s32','vrshlcc.s32','vrshllo.s32','vrshlmi.s32','vrshlpl.s32','vrshlvs.s32','vrshlvc.s32','vrshlhi.s32','vrshlls.s32','vrshlge.s32','vrshllt.s32','vrshlgt.s32','vrshlle.s32',\n            'vrshleq.s64','vrshlne.s64','vrshlcs.s64','vrshlhs.s64','vrshlcc.s64','vrshllo.s64','vrshlmi.s64','vrshlpl.s64','vrshlvs.s64','vrshlvc.s64','vrshlhi.s64','vrshlls.s64','vrshlge.s64','vrshllt.s64','vrshlgt.s64','vrshlle.s64',\n\n            'vrshreq.s8','vrshrne.s8','vrshrcs.s8','vrshrhs.s8','vrshrcc.s8','vrshrlo.s8','vrshrmi.s8','vrshrpl.s8','vrshrvs.s8','vrshrvc.s8','vrshrhi.s8','vrshrls.s8','vrshrge.s8','vrshrlt.s8','vrshrgt.s8','vrshrle.s8',\n            'vrshreq.s16','vrshrne.s16','vrshrcs.s16','vrshrhs.s16','vrshrcc.s16','vrshrlo.s16','vrshrmi.s16','vrshrpl.s16','vrshrvs.s16','vrshrvc.s16','vrshrhi.s16','vrshrls.s16','vrshrge.s16','vrshrlt.s16','vrshrgt.s16','vrshrle.s16',\n            'vrshreq.s32','vrshrne.s32','vrshrcs.s32','vrshrhs.s32','vrshrcc.s32','vrshrlo.s32','vrshrmi.s32','vrshrpl.s32','vrshrvs.s32','vrshrvc.s32','vrshrhi.s32','vrshrls.s32','vrshrge.s32','vrshrlt.s32','vrshrgt.s32','vrshrle.s32',\n            'vrshreq.s64','vrshrne.s64','vrshrcs.s64','vrshrhs.s64','vrshrcc.s64','vrshrlo.s64','vrshrmi.s64','vrshrpl.s64','vrshrvs.s64','vrshrvc.s64','vrshrhi.s64','vrshrls.s64','vrshrge.s64','vrshrlt.s64','vrshrgt.s64','vrshrle.s64',\n\n            'vrsraeq.s8','vrsrane.s8','vrsracs.s8','vrsrahs.s8','vrsracc.s8','vrsralo.s8','vrsrami.s8','vrsrapl.s8','vrsravs.s8','vrsravc.s8','vrsrahi.s8','vrsrals.s8','vrsrage.s8','vrsralt.s8','vrsragt.s8','vrsrale.s8',\n            'vrsraeq.s16','vrsrane.s16','vrsracs.s16','vrsrahs.s16','vrsracc.s16','vrsralo.s16','vrsrami.s16','vrsrapl.s16','vrsravs.s16','vrsravc.s16','vrsrahi.s16','vrsrals.s16','vrsrage.s16','vrsralt.s16','vrsragt.s16','vrsrale.s16',\n            'vrsraeq.s32','vrsrane.s32','vrsracs.s32','vrsrahs.s32','vrsracc.s32','vrsralo.s32','vrsrami.s32','vrsrapl.s32','vrsravs.s32','vrsravc.s32','vrsrahi.s32','vrsrals.s32','vrsrage.s32','vrsralt.s32','vrsragt.s32','vrsrale.s32',\n            'vrsraeq.s64','vrsrane.s64','vrsracs.s64','vrsrahs.s64','vrsracc.s64','vrsralo.s64','vrsrami.s64','vrsrapl.s64','vrsravs.s64','vrsravc.s64','vrsrahi.s64','vrsrals.s64','vrsrage.s64','vrsralt.s64','vrsragt.s64','vrsrale.s64',\n\n            'vshleq.s8','vshlne.s8','vshlcs.s8','vshlhs.s8','vshlcc.s8','vshllo.s8','vshlmi.s8','vshlpl.s8','vshlvs.s8','vshlvc.s8','vshlhi.s8','vshlls.s8','vshlge.s8','vshllt.s8','vshlgt.s8','vshlle.s8',\n            'vshleq.s16','vshlne.s16','vshlcs.s16','vshlhs.s16','vshlcc.s16','vshllo.s16','vshlmi.s16','vshlpl.s16','vshlvs.s16','vshlvc.s16','vshlhi.s16','vshlls.s16','vshlge.s16','vshllt.s16','vshlgt.s16','vshlle.s16',\n            'vshleq.s32','vshlne.s32','vshlcs.s32','vshlhs.s32','vshlcc.s32','vshllo.s32','vshlmi.s32','vshlpl.s32','vshlvs.s32','vshlvc.s32','vshlhi.s32','vshlls.s32','vshlge.s32','vshllt.s32','vshlgt.s32','vshlle.s32',\n            'vshleq.s64','vshlne.s64','vshlcs.s64','vshlhs.s64','vshlcc.s64','vshllo.s64','vshlmi.s64','vshlpl.s64','vshlvs.s64','vshlvc.s64','vshlhi.s64','vshlls.s64','vshlge.s64','vshllt.s64','vshlgt.s64','vshlle.s64',\n\n            'vshlleq.s8','vshllne.s8','vshllcs.s8','vshllhs.s8','vshllcc.s8','vshlllo.s8','vshllmi.s8','vshllpl.s8','vshllvs.s8','vshllvc.s8','vshllhi.s8','vshllls.s8','vshllge.s8','vshlllt.s8','vshllgt.s8','vshllle.s8',\n            'vshlleq.s16','vshllne.s16','vshllcs.s16','vshllhs.s16','vshllcc.s16','vshlllo.s16','vshllmi.s16','vshllpl.s16','vshllvs.s16','vshllvc.s16','vshllhi.s16','vshllls.s16','vshllge.s16','vshlllt.s16','vshllgt.s16','vshllle.s16',\n            'vshlleq.s32','vshllne.s32','vshllcs.s32','vshllhs.s32','vshllcc.s32','vshlllo.s32','vshllmi.s32','vshllpl.s32','vshllvs.s32','vshllvc.s32','vshllhi.s32','vshllls.s32','vshllge.s32','vshlllt.s32','vshllgt.s32','vshllle.s32',\n\n            'vshreq.s8','vshrne.s8','vshrcs.s8','vshrhs.s8','vshrcc.s8','vshrlo.s8','vshrmi.s8','vshrpl.s8','vshrvs.s8','vshrvc.s8','vshrhi.s8','vshrls.s8','vshrge.s8','vshrlt.s8','vshrgt.s8','vshrle.s8',\n            'vshreq.s16','vshrne.s16','vshrcs.s16','vshrhs.s16','vshrcc.s16','vshrlo.s16','vshrmi.s16','vshrpl.s16','vshrvs.s16','vshrvc.s16','vshrhi.s16','vshrls.s16','vshrge.s16','vshrlt.s16','vshrgt.s16','vshrle.s16',\n            'vshreq.s32','vshrne.s32','vshrcs.s32','vshrhs.s32','vshrcc.s32','vshrlo.s32','vshrmi.s32','vshrpl.s32','vshrvs.s32','vshrvc.s32','vshrhi.s32','vshrls.s32','vshrge.s32','vshrlt.s32','vshrgt.s32','vshrle.s32',\n            'vshreq.s64','vshrne.s64','vshrcs.s64','vshrhs.s64','vshrcc.s64','vshrlo.s64','vshrmi.s64','vshrpl.s64','vshrvs.s64','vshrvc.s64','vshrhi.s64','vshrls.s64','vshrge.s64','vshrlt.s64','vshrgt.s64','vshrle.s64',\n\n            'vsraeq.s8','vsrane.s8','vsracs.s8','vsrahs.s8','vsracc.s8','vsralo.s8','vsrami.s8','vsrapl.s8','vsravs.s8','vsravc.s8','vsrahi.s8','vsrals.s8','vsrage.s8','vsralt.s8','vsragt.s8','vsrale.s8',\n            'vsraeq.s16','vsrane.s16','vsracs.s16','vsrahs.s16','vsracc.s16','vsralo.s16','vsrami.s16','vsrapl.s16','vsravs.s16','vsravc.s16','vsrahi.s16','vsrals.s16','vsrage.s16','vsralt.s16','vsragt.s16','vsrale.s16',\n            'vsraeq.s32','vsrane.s32','vsracs.s32','vsrahs.s32','vsracc.s32','vsralo.s32','vsrami.s32','vsrapl.s32','vsravs.s32','vsravc.s32','vsrahi.s32','vsrals.s32','vsrage.s32','vsralt.s32','vsragt.s32','vsrale.s32',\n            'vsraeq.s64','vsrane.s64','vsracs.s64','vsrahs.s64','vsracc.s64','vsralo.s64','vsrami.s64','vsrapl.s64','vsravs.s64','vsravc.s64','vsrahi.s64','vsrals.s64','vsrage.s64','vsralt.s64','vsragt.s64','vsrale.s64',\n\n            'vsubleq.s8','vsublne.s8','vsublcs.s8','vsublhs.s8','vsublcc.s8','vsubllo.s8','vsublmi.s8','vsublpl.s8','vsublvs.s8','vsublvc.s8','vsublhi.s8','vsublls.s8','vsublge.s8','vsubllt.s8','vsublgt.s8','vsublle.s8',\n            'vsubleq.s16','vsublne.s16','vsublcs.s16','vsublhs.s16','vsublcc.s16','vsubllo.s16','vsublmi.s16','vsublpl.s16','vsublvs.s16','vsublvc.s16','vsublhi.s16','vsublls.s16','vsublge.s16','vsubllt.s16','vsublgt.s16','vsublle.s16',\n            'vsubleq.s32','vsublne.s32','vsublcs.s32','vsublhs.s32','vsublcc.s32','vsubllo.s32','vsublmi.s32','vsublpl.s32','vsublvs.s32','vsublvc.s32','vsublhi.s32','vsublls.s32','vsublge.s32','vsubllt.s32','vsublgt.s32','vsublle.s32',\n\n            'vsubheq.s8','vsubhne.s8','vsubhcs.s8','vsubhhs.s8','vsubhcc.s8','vsubhlo.s8','vsubhmi.s8','vsubhpl.s8','vsubhvs.s8','vsubhvc.s8','vsubhhi.s8','vsubhls.s8','vsubhge.s8','vsubhlt.s8','vsubhgt.s8','vsubhle.s8',\n            'vsubheq.s16','vsubhne.s16','vsubhcs.s16','vsubhhs.s16','vsubhcc.s16','vsubhlo.s16','vsubhmi.s16','vsubhpl.s16','vsubhvs.s16','vsubhvc.s16','vsubhhi.s16','vsubhls.s16','vsubhge.s16','vsubhlt.s16','vsubhgt.s16','vsubhle.s16',\n            'vsubheq.s32','vsubhne.s32','vsubhcs.s32','vsubhhs.s32','vsubhcc.s32','vsubhlo.s32','vsubhmi.s32','vsubhpl.s32','vsubhvs.s32','vsubhvc.s32','vsubhhi.s32','vsubhls.s32','vsubhge.s32','vsubhlt.s32','vsubhgt.s32','vsubhle.s32'\n            ),\n        /* Conditional NEON SIMD Unsigned Integer Instructions */\n        33 => array(\n            'vabaeq.u8','vabane.u8','vabacs.u8','vabahs.u8','vabacc.u8','vabalo.u8','vabami.u8','vabapl.u8','vabavs.u8','vabavc.u8','vabahi.u8','vabals.u8','vabage.u8','vabalt.u8','vabagt.u8','vabale.u8',\n            'vabaeq.u16','vabane.u16','vabacs.u16','vabahs.u16','vabacc.u16','vabalo.u16','vabami.u16','vabapl.u16','vabavs.u16','vabavc.u16','vabahi.u16','vabals.u16','vabage.u16','vabalt.u16','vabagt.u16','vabale.u16',\n            'vabaeq.u32','vabane.u32','vabacs.u32','vabahs.u32','vabacc.u32','vabalo.u32','vabami.u32','vabapl.u32','vabavs.u32','vabavc.u32','vabahi.u32','vabals.u32','vabage.u32','vabalt.u32','vabagt.u32','vabale.u32',\n\n            'vabaleq.u8','vabalne.u8','vabalcs.u8','vabalhs.u8','vabalcc.u8','vaballo.u8','vabalmi.u8','vabalpl.u8','vabalvs.u8','vabalvc.u8','vabalhi.u8','vaballs.u8','vabalge.u8','vaballt.u8','vabalgt.u8','vaballe.u8',\n            'vabaleq.u16','vabalne.u16','vabalcs.u16','vabalhs.u16','vabalcc.u16','vaballo.u16','vabalmi.u16','vabalpl.u16','vabalvs.u16','vabalvc.u16','vabalhi.u16','vaballs.u16','vabalge.u16','vaballt.u16','vabalgt.u16','vaballe.u16',\n            'vabaleq.u32','vabalne.u32','vabalcs.u32','vabalhs.u32','vabalcc.u32','vaballo.u32','vabalmi.u32','vabalpl.u32','vabalvs.u32','vabalvc.u32','vabalhi.u32','vaballs.u32','vabalge.u32','vaballt.u32','vabalgt.u32','vaballe.u32',\n\n            'vabdeq.u8','vabdne.u8','vabdcs.u8','vabdhs.u8','vabdcc.u8','vabdlo.u8','vabdmi.u8','vabdpl.u8','vabdvs.u8','vabdvc.u8','vabdhi.u8','vabdls.u8','vabdge.u8','vabdlt.u8','vabdgt.u8','vabdle.u8',\n            'vabdeq.u16','vabdne.u16','vabdcs.u16','vabdhs.u16','vabdcc.u16','vabdlo.u16','vabdmi.u16','vabdpl.u16','vabdvs.u16','vabdvc.u16','vabdhi.u16','vabdls.u16','vabdge.u16','vabdlt.u16','vabdgt.u16','vabdle.u16',\n            'vabdeq.u32','vabdne.u32','vabdcs.u32','vabdhs.u32','vabdcc.u32','vabdlo.u32','vabdmi.u32','vabdpl.u32','vabdvs.u32','vabdvc.u32','vabdhi.u32','vabdls.u32','vabdge.u32','vabdlt.u32','vabdgt.u32','vabdle.u32',\n\n            'vaddleq.u8','vaddlne.u8','vaddlcs.u8','vaddlhs.u8','vaddlcc.u8','vaddllo.u8','vaddlmi.u8','vaddlpl.u8','vaddlvs.u8','vaddlvc.u8','vaddlhi.u8','vaddlls.u8','vaddlge.u8','vaddllt.u8','vaddlgt.u8','vaddlle.u8',\n            'vaddleq.u16','vaddlne.u16','vaddlcs.u16','vaddlhs.u16','vaddlcc.u16','vaddllo.u16','vaddlmi.u16','vaddlpl.u16','vaddlvs.u16','vaddlvc.u16','vaddlhi.u16','vaddlls.u16','vaddlge.u16','vaddllt.u16','vaddlgt.u16','vaddlle.u16',\n            'vaddleq.u32','vaddlne.u32','vaddlcs.u32','vaddlhs.u32','vaddlcc.u32','vaddllo.u32','vaddlmi.u32','vaddlpl.u32','vaddlvs.u32','vaddlvc.u32','vaddlhi.u32','vaddlls.u32','vaddlge.u32','vaddllt.u32','vaddlgt.u32','vaddlle.u32',\n\n            'vsubleq.u8','vsublne.u8','vsublcs.u8','vsublhs.u8','vsublcc.u8','vsubllo.u8','vsublmi.u8','vsublpl.u8','vsublvs.u8','vsublvc.u8','vsublhi.u8','vsublls.u8','vsublge.u8','vsubllt.u8','vsublgt.u8','vsublle.u8',\n            'vsubleq.u16','vsublne.u16','vsublcs.u16','vsublhs.u16','vsublcc.u16','vsubllo.u16','vsublmi.u16','vsublpl.u16','vsublvs.u16','vsublvc.u16','vsublhi.u16','vsublls.u16','vsublge.u16','vsubllt.u16','vsublgt.u16','vsublle.u16',\n            'vsubleq.u32','vsublne.u32','vsublcs.u32','vsublhs.u32','vsublcc.u32','vsubllo.u32','vsublmi.u32','vsublpl.u32','vsublvs.u32','vsublvc.u32','vsublhi.u32','vsublls.u32','vsublge.u32','vsubllt.u32','vsublgt.u32','vsublle.u32',\n\n            'vaddweq.u8','vaddwne.u8','vaddwcs.u8','vaddwhs.u8','vaddwcc.u8','vaddwlo.u8','vaddwmi.u8','vaddwpl.u8','vaddwvs.u8','vaddwvc.u8','vaddwhi.u8','vaddwls.u8','vaddwge.u8','vaddwlt.u8','vaddwgt.u8','vaddwle.u8',\n            'vaddweq.u16','vaddwne.u16','vaddwcs.u16','vaddwhs.u16','vaddwcc.u16','vaddwlo.u16','vaddwmi.u16','vaddwpl.u16','vaddwvs.u16','vaddwvc.u16','vaddwhi.u16','vaddwls.u16','vaddwge.u16','vaddwlt.u16','vaddwgt.u16','vaddwle.u16',\n            'vaddweq.u32','vaddwne.u32','vaddwcs.u32','vaddwhs.u32','vaddwcc.u32','vaddwlo.u32','vaddwmi.u32','vaddwpl.u32','vaddwvs.u32','vaddwvc.u32','vaddwhi.u32','vaddwls.u32','vaddwge.u32','vaddwlt.u32','vaddwgt.u32','vaddwle.u32',\n\n            'vsubheq.u8','vsubhne.u8','vsubhcs.u8','vsubhhs.u8','vsubhcc.u8','vsubhlo.u8','vsubhmi.u8','vsubhpl.u8','vsubhvs.u8','vsubhvc.u8','vsubhhi.u8','vsubhls.u8','vsubhge.u8','vsubhlt.u8','vsubhgt.u8','vsubhle.u8',\n            'vsubheq.u16','vsubhne.u16','vsubhcs.u16','vsubhhs.u16','vsubhcc.u16','vsubhlo.u16','vsubhmi.u16','vsubhpl.u16','vsubhvs.u16','vsubhvc.u16','vsubhhi.u16','vsubhls.u16','vsubhge.u16','vsubhlt.u16','vsubhgt.u16','vsubhle.u16',\n            'vsubheq.u32','vsubhne.u32','vsubhcs.u32','vsubhhs.u32','vsubhcc.u32','vsubhlo.u32','vsubhmi.u32','vsubhpl.u32','vsubhvs.u32','vsubhvc.u32','vsubhhi.u32','vsubhls.u32','vsubhge.u32','vsubhlt.u32','vsubhgt.u32','vsubhle.u32',\n\n            'vhaddeq.u8','vhaddne.u8','vhaddcs.u8','vhaddhs.u8','vhaddcc.u8','vhaddlo.u8','vhaddmi.u8','vhaddpl.u8','vhaddvs.u8','vhaddvc.u8','vhaddhi.u8','vhaddls.u8','vhaddge.u8','vhaddlt.u8','vhaddgt.u8','vhaddle.u8',\n            'vhaddeq.u16','vhaddne.u16','vhaddcs.u16','vhaddhs.u16','vhaddcc.u16','vhaddlo.u16','vhaddmi.u16','vhaddpl.u16','vhaddvs.u16','vhaddvc.u16','vhaddhi.u16','vhaddls.u16','vhaddge.u16','vhaddlt.u16','vhaddgt.u16','vhaddle.u16',\n            'vhaddeq.u32','vhaddne.u32','vhaddcs.u32','vhaddhs.u32','vhaddcc.u32','vhaddlo.u32','vhaddmi.u32','vhaddpl.u32','vhaddvs.u32','vhaddvc.u32','vhaddhi.u32','vhaddls.u32','vhaddge.u32','vhaddlt.u32','vhaddgt.u32','vhaddle.u32',\n\n            'vhsubeq.u8','vhsubne.u8','vhsubcs.u8','vhsubhs.u8','vhsubcc.u8','vhsublo.u8','vhsubmi.u8','vhsubpl.u8','vhsubvs.u8','vhsubvc.u8','vhsubhi.u8','vhsubls.u8','vhsubge.u8','vhsublt.u8','vhsubgt.u8','vhsuble.u8',\n            'vhsubeq.u16','vhsubne.u16','vhsubcs.u16','vhsubhs.u16','vhsubcc.u16','vhsublo.u16','vhsubmi.u16','vhsubpl.u16','vhsubvs.u16','vhsubvc.u16','vhsubhi.u16','vhsubls.u16','vhsubge.u16','vhsublt.u16','vhsubgt.u16','vhsuble.u16',\n            'vhsubeq.u32','vhsubne.u32','vhsubcs.u32','vhsubhs.u32','vhsubcc.u32','vhsublo.u32','vhsubmi.u32','vhsubpl.u32','vhsubvs.u32','vhsubvc.u32','vhsubhi.u32','vhsubls.u32','vhsubge.u32','vhsublt.u32','vhsubgt.u32','vhsuble.u32',\n\n            'vpadaleq.u8','vpadalne.u8','vpadalcs.u8','vpadalhs.u8','vpadalcc.u8','vpadallo.u8','vpadalmi.u8','vpadalpl.u8','vpadalvs.u8','vpadalvc.u8','vpadalhi.u8','vpadalls.u8','vpadalge.u8','vpadallt.u8','vpadalgt.u8','vpadalle.u8',\n            'vpadaleq.u16','vpadalne.u16','vpadalcs.u16','vpadalhs.u16','vpadalcc.u16','vpadallo.u16','vpadalmi.u16','vpadalpl.u16','vpadalvs.u16','vpadalvc.u16','vpadalhi.u16','vpadalls.u16','vpadalge.u16','vpadallt.u16','vpadalgt.u16','vpadalle.u16',\n            'vpadaleq.u32','vpadalne.u32','vpadalcs.u32','vpadalhs.u32','vpadalcc.u32','vpadallo.u32','vpadalmi.u32','vpadalpl.u32','vpadalvs.u32','vpadalvc.u32','vpadalhi.u32','vpadalls.u32','vpadalge.u32','vpadallt.u32','vpadalgt.u32','vpadalle.u32',\n\n            'vpaddleq.u8','vpaddlne.u8','vpaddlcs.u8','vpaddlhs.u8','vpaddlcc.u8','vpaddllo.u8','vpaddlmi.u8','vpaddlpl.u8','vpaddlvs.u8','vpaddlvc.u8','vpaddlhi.u8','vpaddlls.u8','vpaddlge.u8','vpaddllt.u8','vpaddlgt.u8','vpaddlle.u8',\n            'vpaddleq.u16','vpaddlne.u16','vpaddlcs.u16','vpaddlhs.u16','vpaddlcc.u16','vpaddllo.u16','vpaddlmi.u16','vpaddlpl.u16','vpaddlvs.u16','vpaddlvc.u16','vpaddlhi.u16','vpaddlls.u16','vpaddlge.u16','vpaddllt.u16','vpaddlgt.u16','vpaddlle.u16',\n            'vpaddleq.u32','vpaddlne.u32','vpaddlcs.u32','vpaddlhs.u32','vpaddlcc.u32','vpaddllo.u32','vpaddlmi.u32','vpaddlpl.u32','vpaddlvs.u32','vpaddlvc.u32','vpaddlhi.u32','vpaddlls.u32','vpaddlge.u32','vpaddllt.u32','vpaddlgt.u32','vpaddlle.u32',\n\n            'vcgeeq.u8','vcgene.u8','vcgecs.u8','vcgehs.u8','vcgecc.u8','vcgelo.u8','vcgemi.u8','vcgepl.u8','vcgevs.u8','vcgevc.u8','vcgehi.u8','vcgels.u8','vcgege.u8','vcgelt.u8','vcgegt.u8','vcgele.u8',\n            'vcgeeq.u16','vcgene.u16','vcgecs.u16','vcgehs.u16','vcgecc.u16','vcgelo.u16','vcgemi.u16','vcgepl.u16','vcgevs.u16','vcgevc.u16','vcgehi.u16','vcgels.u16','vcgege.u16','vcgelt.u16','vcgegt.u16','vcgele.u16',\n            'vcgeeq.u32','vcgene.u32','vcgecs.u32','vcgehs.u32','vcgecc.u32','vcgelo.u32','vcgemi.u32','vcgepl.u32','vcgevs.u32','vcgevc.u32','vcgehi.u32','vcgels.u32','vcgege.u32','vcgelt.u32','vcgegt.u32','vcgele.u32',\n\n            'vcleeq.u8','vclene.u8','vclecs.u8','vclehs.u8','vclecc.u8','vclelo.u8','vclemi.u8','vclepl.u8','vclevs.u8','vclevc.u8','vclehi.u8','vclels.u8','vclege.u8','vclelt.u8','vclegt.u8','vclele.u8',\n            'vcleeq.u16','vclene.u16','vclecs.u16','vclehs.u16','vclecc.u16','vclelo.u16','vclemi.u16','vclepl.u16','vclevs.u16','vclevc.u16','vclehi.u16','vclels.u16','vclege.u16','vclelt.u16','vclegt.u16','vclele.u16',\n            'vcleeq.u32','vclene.u32','vclecs.u32','vclehs.u32','vclecc.u32','vclelo.u32','vclemi.u32','vclepl.u32','vclevs.u32','vclevc.u32','vclehi.u32','vclels.u32','vclege.u32','vclelt.u32','vclegt.u32','vclele.u32',\n\n            'vcgteq.u8','vcgtne.u8','vcgtcs.u8','vcgths.u8','vcgtcc.u8','vcgtlo.u8','vcgtmi.u8','vcgtpl.u8','vcgtvs.u8','vcgtvc.u8','vcgthi.u8','vcgtls.u8','vcgtge.u8','vcgtlt.u8','vcgtgt.u8','vcgtle.u8',\n            'vcgteq.u16','vcgtne.u16','vcgtcs.u16','vcgths.u16','vcgtcc.u16','vcgtlo.u16','vcgtmi.u16','vcgtpl.u16','vcgtvs.u16','vcgtvc.u16','vcgthi.u16','vcgtls.u16','vcgtge.u16','vcgtlt.u16','vcgtgt.u16','vcgtle.u16',\n            'vcgteq.u32','vcgtne.u32','vcgtcs.u32','vcgths.u32','vcgtcc.u32','vcgtlo.u32','vcgtmi.u32','vcgtpl.u32','vcgtvs.u32','vcgtvc.u32','vcgthi.u32','vcgtls.u32','vcgtge.u32','vcgtlt.u32','vcgtgt.u32','vcgtle.u32',\n\n            'vclteq.u8','vcltne.u8','vcltcs.u8','vclths.u8','vcltcc.u8','vcltlo.u8','vcltmi.u8','vcltpl.u8','vcltvs.u8','vcltvc.u8','vclthi.u8','vcltls.u8','vcltge.u8','vcltlt.u8','vcltgt.u8','vcltle.u8',\n            'vclteq.u16','vcltne.u16','vcltcs.u16','vclths.u16','vcltcc.u16','vcltlo.u16','vcltmi.u16','vcltpl.u16','vcltvs.u16','vcltvc.u16','vclthi.u16','vcltls.u16','vcltge.u16','vcltlt.u16','vcltgt.u16','vcltle.u16',\n            'vclteq.u32','vcltne.u32','vcltcs.u32','vclths.u32','vcltcc.u32','vcltlo.u32','vcltmi.u32','vcltpl.u32','vcltvs.u32','vcltvc.u32','vclthi.u32','vcltls.u32','vcltge.u32','vcltlt.u32','vcltgt.u32','vcltle.u32',\n\n            'vmaxeq.u8','vmaxne.u8','vmaxcs.u8','vmaxhs.u8','vmaxcc.u8','vmaxlo.u8','vmaxmi.u8','vmaxpl.u8','vmaxvs.u8','vmaxvc.u8','vmaxhi.u8','vmaxls.u8','vmaxge.u8','vmaxlt.u8','vmaxgt.u8','vmaxle.u8',\n            'vmaxeq.u16','vmaxne.u16','vmaxcs.u16','vmaxhs.u16','vmaxcc.u16','vmaxlo.u16','vmaxmi.u16','vmaxpl.u16','vmaxvs.u16','vmaxvc.u16','vmaxhi.u16','vmaxls.u16','vmaxge.u16','vmaxlt.u16','vmaxgt.u16','vmaxle.u16',\n            'vmaxeq.u32','vmaxne.u32','vmaxcs.u32','vmaxhs.u32','vmaxcc.u32','vmaxlo.u32','vmaxmi.u32','vmaxpl.u32','vmaxvs.u32','vmaxvc.u32','vmaxhi.u32','vmaxls.u32','vmaxge.u32','vmaxlt.u32','vmaxgt.u32','vmaxle.u32',\n\n            'vmineq.u8','vminne.u8','vmincs.u8','vminhs.u8','vmincc.u8','vminlo.u8','vminmi.u8','vminpl.u8','vminvs.u8','vminvc.u8','vminhi.u8','vminls.u8','vminge.u8','vminlt.u8','vmingt.u8','vminle.u8',\n            'vmineq.u16','vminne.u16','vmincs.u16','vminhs.u16','vmincc.u16','vminlo.u16','vminmi.u16','vminpl.u16','vminvs.u16','vminvc.u16','vminhi.u16','vminls.u16','vminge.u16','vminlt.u16','vmingt.u16','vminle.u16',\n            'vmineq.u32','vminne.u32','vmincs.u32','vminhs.u32','vmincc.u32','vminlo.u32','vminmi.u32','vminpl.u32','vminvs.u32','vminvc.u32','vminhi.u32','vminls.u32','vminge.u32','vminlt.u32','vmingt.u32','vminle.u32',\n\n            'vmlaleq.u8','vmlalne.u8','vmlalcs.u8','vmlalhs.u8','vmlalcc.u8','vmlallo.u8','vmlalmi.u8','vmlalpl.u8','vmlalvs.u8','vmlalvc.u8','vmlalhi.u8','vmlalls.u8','vmlalge.u8','vmlallt.u8','vmlalgt.u8','vmlalle.u8',\n            'vmlaleq.u16','vmlalne.u16','vmlalcs.u16','vmlalhs.u16','vmlalcc.u16','vmlallo.u16','vmlalmi.u16','vmlalpl.u16','vmlalvs.u16','vmlalvc.u16','vmlalhi.u16','vmlalls.u16','vmlalge.u16','vmlallt.u16','vmlalgt.u16','vmlalle.u16',\n            'vmlaleq.u32','vmlalne.u32','vmlalcs.u32','vmlalhs.u32','vmlalcc.u32','vmlallo.u32','vmlalmi.u32','vmlalpl.u32','vmlalvs.u32','vmlalvc.u32','vmlalhi.u32','vmlalls.u32','vmlalge.u32','vmlallt.u32','vmlalgt.u32','vmlalle.u32',\n\n            'vmlsleq.u8','vmlslne.u8','vmlslcs.u8','vmlslhs.u8','vmlslcc.u8','vmlsllo.u8','vmlslmi.u8','vmlslpl.u8','vmlslvs.u8','vmlslvc.u8','vmlslhi.u8','vmlslls.u8','vmlslge.u8','vmlsllt.u8','vmlslgt.u8','vmlslle.u8',\n            'vmlsleq.u16','vmlslne.u16','vmlslcs.u16','vmlslhs.u16','vmlslcc.u16','vmlsllo.u16','vmlslmi.u16','vmlslpl.u16','vmlslvs.u16','vmlslvc.u16','vmlslhi.u16','vmlslls.u16','vmlslge.u16','vmlsllt.u16','vmlslgt.u16','vmlslle.u16',\n            'vmlsleq.u32','vmlslne.u32','vmlslcs.u32','vmlslhs.u32','vmlslcc.u32','vmlsllo.u32','vmlslmi.u32','vmlslpl.u32','vmlslvs.u32','vmlslvc.u32','vmlslhi.u32','vmlslls.u32','vmlslge.u32','vmlsllt.u32','vmlslgt.u32','vmlslle.u32',\n\n            'vmulleq.u8','vmullne.u8','vmullcs.u8','vmullhs.u8','vmullcc.u8','vmulllo.u8','vmullmi.u8','vmullpl.u8','vmullvs.u8','vmullvc.u8','vmullhi.u8','vmullls.u8','vmullge.u8','vmulllt.u8','vmullgt.u8','vmullle.u8',\n            'vmulleq.u16','vmullne.u16','vmullcs.u16','vmullhs.u16','vmullcc.u16','vmulllo.u16','vmullmi.u16','vmullpl.u16','vmullvs.u16','vmullvc.u16','vmullhi.u16','vmullls.u16','vmullge.u16','vmulllt.u16','vmullgt.u16','vmullle.u16',\n            'vmulleq.u32','vmullne.u32','vmullcs.u32','vmullhs.u32','vmullcc.u32','vmulllo.u32','vmullmi.u32','vmullpl.u32','vmullvs.u32','vmullvc.u32','vmullhi.u32','vmullls.u32','vmullge.u32','vmulllt.u32','vmullgt.u32','vmullle.u32',\n\n            'vmovleq.u8','vmovlne.u8','vmovlcs.u8','vmovlhs.u8','vmovlcc.u8','vmovllo.u8','vmovlmi.u8','vmovlpl.u8','vmovlvs.u8','vmovlvc.u8','vmovlhi.u8','vmovlls.u8','vmovlge.u8','vmovllt.u8','vmovlgt.u8','vmovlle.u8',\n            'vmovleq.u16','vmovlne.u16','vmovlcs.u16','vmovlhs.u16','vmovlcc.u16','vmovllo.u16','vmovlmi.u16','vmovlpl.u16','vmovlvs.u16','vmovlvc.u16','vmovlhi.u16','vmovlls.u16','vmovlge.u16','vmovllt.u16','vmovlgt.u16','vmovlle.u16',\n            'vmovleq.u32','vmovlne.u32','vmovlcs.u32','vmovlhs.u32','vmovlcc.u32','vmovllo.u32','vmovlmi.u32','vmovlpl.u32','vmovlvs.u32','vmovlvc.u32','vmovlhi.u32','vmovlls.u32','vmovlge.u32','vmovllt.u32','vmovlgt.u32','vmovlle.u32',\n\n            'vshleq.u8','vshlne.u8','vshlcs.u8','vshlhs.u8','vshlcc.u8','vshllo.u8','vshlmi.u8','vshlpl.u8','vshlvs.u8','vshlvc.u8','vshlhi.u8','vshlls.u8','vshlge.u8','vshllt.u8','vshlgt.u8','vshlle.u8',\n            'vshleq.u16','vshlne.u16','vshlcs.u16','vshlhs.u16','vshlcc.u16','vshllo.u16','vshlmi.u16','vshlpl.u16','vshlvs.u16','vshlvc.u16','vshlhi.u16','vshlls.u16','vshlge.u16','vshllt.u16','vshlgt.u16','vshlle.u16',\n            'vshleq.u32','vshlne.u32','vshlcs.u32','vshlhs.u32','vshlcc.u32','vshllo.u32','vshlmi.u32','vshlpl.u32','vshlvs.u32','vshlvc.u32','vshlhi.u32','vshlls.u32','vshlge.u32','vshllt.u32','vshlgt.u32','vshlle.u32',\n            'vshleq.u64','vshlne.u64','vshlcs.u64','vshlhs.u64','vshlcc.u64','vshllo.u64','vshlmi.u64','vshlpl.u64','vshlvs.u64','vshlvc.u64','vshlhi.u64','vshlls.u64','vshlge.u64','vshllt.u64','vshlgt.u64','vshlle.u64',\n\n            'vshlleq.u8','vshllne.u8','vshllcs.u8','vshllhs.u8','vshllcc.u8','vshlllo.u8','vshllmi.u8','vshllpl.u8','vshllvs.u8','vshllvc.u8','vshllhi.u8','vshllls.u8','vshllge.u8','vshlllt.u8','vshllgt.u8','vshllle.u8',\n            'vshlleq.u16','vshllne.u16','vshllcs.u16','vshllhs.u16','vshllcc.u16','vshlllo.u16','vshllmi.u16','vshllpl.u16','vshllvs.u16','vshllvc.u16','vshllhi.u16','vshllls.u16','vshllge.u16','vshlllt.u16','vshllgt.u16','vshllle.u16',\n            'vshlleq.u32','vshllne.u32','vshllcs.u32','vshllhs.u32','vshllcc.u32','vshlllo.u32','vshllmi.u32','vshllpl.u32','vshllvs.u32','vshllvc.u32','vshllhi.u32','vshllls.u32','vshllge.u32','vshlllt.u32','vshllgt.u32','vshllle.u32',\n\n            'vshreq.u8','vshrne.u8','vshrcs.u8','vshrhs.u8','vshrcc.u8','vshrlo.u8','vshrmi.u8','vshrpl.u8','vshrvs.u8','vshrvc.u8','vshrhi.u8','vshrls.u8','vshrge.u8','vshrlt.u8','vshrgt.u8','vshrle.u8',\n            'vshreq.u16','vshrne.u16','vshrcs.u16','vshrhs.u16','vshrcc.u16','vshrlo.u16','vshrmi.u16','vshrpl.u16','vshrvs.u16','vshrvc.u16','vshrhi.u16','vshrls.u16','vshrge.u16','vshrlt.u16','vshrgt.u16','vshrle.u16',\n            'vshreq.u32','vshrne.u32','vshrcs.u32','vshrhs.u32','vshrcc.u32','vshrlo.u32','vshrmi.u32','vshrpl.u32','vshrvs.u32','vshrvc.u32','vshrhi.u32','vshrls.u32','vshrge.u32','vshrlt.u32','vshrgt.u32','vshrle.u32',\n            'vshreq.u64','vshrne.u64','vshrcs.u64','vshrhs.u64','vshrcc.u64','vshrlo.u64','vshrmi.u64','vshrpl.u64','vshrvs.u64','vshrvc.u64','vshrhi.u64','vshrls.u64','vshrge.u64','vshrlt.u64','vshrgt.u64','vshrle.u64',\n\n            'vsraeq.u8','vsrane.u8','vsracs.u8','vsrahs.u8','vsracc.u8','vsralo.u8','vsrami.u8','vsrapl.u8','vsravs.u8','vsravc.u8','vsrahi.u8','vsrals.u8','vsrage.u8','vsralt.u8','vsragt.u8','vsrale.u8',\n            'vsraeq.u16','vsrane.u16','vsracs.u16','vsrahs.u16','vsracc.u16','vsralo.u16','vsrami.u16','vsrapl.u16','vsravs.u16','vsravc.u16','vsrahi.u16','vsrals.u16','vsrage.u16','vsralt.u16','vsragt.u16','vsrale.u16',\n            'vsraeq.u32','vsrane.u32','vsracs.u32','vsrahs.u32','vsracc.u32','vsralo.u32','vsrami.u32','vsrapl.u32','vsravs.u32','vsravc.u32','vsrahi.u32','vsrals.u32','vsrage.u32','vsralt.u32','vsragt.u32','vsrale.u32',\n            'vsraeq.u64','vsrane.u64','vsracs.u64','vsrahs.u64','vsracc.u64','vsralo.u64','vsrami.u64','vsrapl.u64','vsravs.u64','vsravc.u64','vsrahi.u64','vsrals.u64','vsrage.u64','vsralt.u64','vsragt.u64','vsrale.u64',\n\n            'vpmaxeq.u8','vpmaxne.u8','vpmaxcs.u8','vpmaxhs.u8','vpmaxcc.u8','vpmaxlo.u8','vpmaxmi.u8','vpmaxpl.u8','vpmaxvs.u8','vpmaxvc.u8','vpmaxhi.u8','vpmaxls.u8','vpmaxge.u8','vpmaxlt.u8','vpmaxgt.u8','vpmaxle.u8',\n            'vpmaxeq.u16','vpmaxne.u16','vpmaxcs.u16','vpmaxhs.u16','vpmaxcc.u16','vpmaxlo.u16','vpmaxmi.u16','vpmaxpl.u16','vpmaxvs.u16','vpmaxvc.u16','vpmaxhi.u16','vpmaxls.u16','vpmaxge.u16','vpmaxlt.u16','vpmaxgt.u16','vpmaxle.u16',\n            'vpmaxeq.u32','vpmaxne.u32','vpmaxcs.u32','vpmaxhs.u32','vpmaxcc.u32','vpmaxlo.u32','vpmaxmi.u32','vpmaxpl.u32','vpmaxvs.u32','vpmaxvc.u32','vpmaxhi.u32','vpmaxls.u32','vpmaxge.u32','vpmaxlt.u32','vpmaxgt.u32','vpmaxle.u32',\n\n            'vpmineq.u8','vpminne.u8','vpmincs.u8','vpminhs.u8','vpmincc.u8','vpminlo.u8','vpminmi.u8','vpminpl.u8','vpminvs.u8','vpminvc.u8','vpminhi.u8','vpminls.u8','vpminge.u8','vpminlt.u8','vpmingt.u8','vpminle.u8',\n            'vpmineq.u16','vpminne.u16','vpmincs.u16','vpminhs.u16','vpmincc.u16','vpminlo.u16','vpminmi.u16','vpminpl.u16','vpminvs.u16','vpminvc.u16','vpminhi.u16','vpminls.u16','vpminge.u16','vpminlt.u16','vpmingt.u16','vpminle.u16',\n            'vpmineq.u32','vpminne.u32','vpmincs.u32','vpminhs.u32','vpmincc.u32','vpminlo.u32','vpminmi.u32','vpminpl.u32','vpminvs.u32','vpminvc.u32','vpminhi.u32','vpminls.u32','vpminge.u32','vpminlt.u32','vpmingt.u32','vpminle.u32',\n\n            'vqaddeq.u8','vqaddne.u8','vqaddcs.u8','vqaddhs.u8','vqaddcc.u8','vqaddlo.u8','vqaddmi.u8','vqaddpl.u8','vqaddvs.u8','vqaddvc.u8','vqaddhi.u8','vqaddls.u8','vqaddge.u8','vqaddlt.u8','vqaddgt.u8','vqaddle.u8',\n            'vqaddeq.u16','vqaddne.u16','vqaddcs.u16','vqaddhs.u16','vqaddcc.u16','vqaddlo.u16','vqaddmi.u16','vqaddpl.u16','vqaddvs.u16','vqaddvc.u16','vqaddhi.u16','vqaddls.u16','vqaddge.u16','vqaddlt.u16','vqaddgt.u16','vqaddle.u16',\n            'vqaddeq.u32','vqaddne.u32','vqaddcs.u32','vqaddhs.u32','vqaddcc.u32','vqaddlo.u32','vqaddmi.u32','vqaddpl.u32','vqaddvs.u32','vqaddvc.u32','vqaddhi.u32','vqaddls.u32','vqaddge.u32','vqaddlt.u32','vqaddgt.u32','vqaddle.u32',\n            'vqaddeq.u64','vqaddne.u64','vqaddcs.u64','vqaddhs.u64','vqaddcc.u64','vqaddlo.u64','vqaddmi.u64','vqaddpl.u64','vqaddvs.u64','vqaddvc.u64','vqaddhi.u64','vqaddls.u64','vqaddge.u64','vqaddlt.u64','vqaddgt.u64','vqaddle.u64',\n\n            'vqsubeq.u8','vqsubne.u8','vqsubcs.u8','vqsubhs.u8','vqsubcc.u8','vqsublo.u8','vqsubmi.u8','vqsubpl.u8','vqsubvs.u8','vqsubvc.u8','vqsubhi.u8','vqsubls.u8','vqsubge.u8','vqsublt.u8','vqsubgt.u8','vqsuble.u8',\n            'vqsubeq.u16','vqsubne.u16','vqsubcs.u16','vqsubhs.u16','vqsubcc.u16','vqsublo.u16','vqsubmi.u16','vqsubpl.u16','vqsubvs.u16','vqsubvc.u16','vqsubhi.u16','vqsubls.u16','vqsubge.u16','vqsublt.u16','vqsubgt.u16','vqsuble.u16',\n            'vqsubeq.u32','vqsubne.u32','vqsubcs.u32','vqsubhs.u32','vqsubcc.u32','vqsublo.u32','vqsubmi.u32','vqsubpl.u32','vqsubvs.u32','vqsubvc.u32','vqsubhi.u32','vqsubls.u32','vqsubge.u32','vqsublt.u32','vqsubgt.u32','vqsuble.u32',\n            'vqsubeq.u64','vqsubne.u64','vqsubcs.u64','vqsubhs.u64','vqsubcc.u64','vqsublo.u64','vqsubmi.u64','vqsubpl.u64','vqsubvs.u64','vqsubvc.u64','vqsubhi.u64','vqsubls.u64','vqsubge.u64','vqsublt.u64','vqsubgt.u64','vqsuble.u64',\n\n            'vqmovneq.u16','vqmovnne.u16','vqmovncs.u16','vqmovnhs.u16','vqmovncc.u16','vqmovnlo.u16','vqmovnmi.u16','vqmovnpl.u16','vqmovnvs.u16','vqmovnvc.u16','vqmovnhi.u16','vqmovnls.u16','vqmovnge.u16','vqmovnlt.u16','vqmovngt.u16','vqmovnle.u16',\n            'vqmovneq.u32','vqmovnne.u32','vqmovncs.u32','vqmovnhs.u32','vqmovncc.u32','vqmovnlo.u32','vqmovnmi.u32','vqmovnpl.u32','vqmovnvs.u32','vqmovnvc.u32','vqmovnhi.u32','vqmovnls.u32','vqmovnge.u32','vqmovnlt.u32','vqmovngt.u32','vqmovnle.u32',\n            'vqmovneq.u64','vqmovnne.u64','vqmovncs.u64','vqmovnhs.u64','vqmovncc.u64','vqmovnlo.u64','vqmovnmi.u64','vqmovnpl.u64','vqmovnvs.u64','vqmovnvc.u64','vqmovnhi.u64','vqmovnls.u64','vqmovnge.u64','vqmovnlt.u64','vqmovngt.u64','vqmovnle.u64',\n\n            'vqshleq.u8','vqshlne.u8','vqshlcs.u8','vqshlhs.u8','vqshlcc.u8','vqshllo.u8','vqshlmi.u8','vqshlpl.u8','vqshlvs.u8','vqshlvc.u8','vqshlhi.u8','vqshlls.u8','vqshlge.u8','vqshllt.u8','vqshlgt.u8','vqshlle.u8',\n            'vqshleq.u16','vqshlne.u16','vqshlcs.u16','vqshlhs.u16','vqshlcc.u16','vqshllo.u16','vqshlmi.u16','vqshlpl.u16','vqshlvs.u16','vqshlvc.u16','vqshlhi.u16','vqshlls.u16','vqshlge.u16','vqshllt.u16','vqshlgt.u16','vqshlle.u16',\n            'vqshleq.u32','vqshlne.u32','vqshlcs.u32','vqshlhs.u32','vqshlcc.u32','vqshllo.u32','vqshlmi.u32','vqshlpl.u32','vqshlvs.u32','vqshlvc.u32','vqshlhi.u32','vqshlls.u32','vqshlge.u32','vqshllt.u32','vqshlgt.u32','vqshlle.u32',\n            'vqshleq.u64','vqshlne.u64','vqshlcs.u64','vqshlhs.u64','vqshlcc.u64','vqshllo.u64','vqshlmi.u64','vqshlpl.u64','vqshlvs.u64','vqshlvc.u64','vqshlhi.u64','vqshlls.u64','vqshlge.u64','vqshllt.u64','vqshlgt.u64','vqshlle.u64',\n\n            'vqshrneq.u16','vqshrnne.u16','vqshrncs.u16','vqshrnhs.u16','vqshrncc.u16','vqshrnlo.u16','vqshrnmi.u16','vqshrnpl.u16','vqshrnvs.u16','vqshrnvc.u16','vqshrnhi.u16','vqshrnls.u16','vqshrnge.u16','vqshrnlt.u16','vqshrngt.u16','vqshrnle.u16',\n            'vqshrneq.u32','vqshrnne.u32','vqshrncs.u32','vqshrnhs.u32','vqshrncc.u32','vqshrnlo.u32','vqshrnmi.u32','vqshrnpl.u32','vqshrnvs.u32','vqshrnvc.u32','vqshrnhi.u32','vqshrnls.u32','vqshrnge.u32','vqshrnlt.u32','vqshrngt.u32','vqshrnle.u32',\n            'vqshrneq.u64','vqshrnne.u64','vqshrncs.u64','vqshrnhs.u64','vqshrncc.u64','vqshrnlo.u64','vqshrnmi.u64','vqshrnpl.u64','vqshrnvs.u64','vqshrnvc.u64','vqshrnhi.u64','vqshrnls.u64','vqshrnge.u64','vqshrnlt.u64','vqshrngt.u64','vqshrnle.u64',\n\n            'vqrshleq.u8','vqrshlne.u8','vqrshlcs.u8','vqrshlhs.u8','vqrshlcc.u8','vqrshllo.u8','vqrshlmi.u8','vqrshlpl.u8','vqrshlvs.u8','vqrshlvc.u8','vqrshlhi.u8','vqrshlls.u8','vqrshlge.u8','vqrshllt.u8','vqrshlgt.u8','vqrshlle.u8',\n            'vqrshleq.u16','vqrshlne.u16','vqrshlcs.u16','vqrshlhs.u16','vqrshlcc.u16','vqrshllo.u16','vqrshlmi.u16','vqrshlpl.u16','vqrshlvs.u16','vqrshlvc.u16','vqrshlhi.u16','vqrshlls.u16','vqrshlge.u16','vqrshllt.u16','vqrshlgt.u16','vqrshlle.u16',\n            'vqrshleq.u32','vqrshlne.u32','vqrshlcs.u32','vqrshlhs.u32','vqrshlcc.u32','vqrshllo.u32','vqrshlmi.u32','vqrshlpl.u32','vqrshlvs.u32','vqrshlvc.u32','vqrshlhi.u32','vqrshlls.u32','vqrshlge.u32','vqrshllt.u32','vqrshlgt.u32','vqrshlle.u32',\n            'vqrshleq.u64','vqrshlne.u64','vqrshlcs.u64','vqrshlhs.u64','vqrshlcc.u64','vqrshllo.u64','vqrshlmi.u64','vqrshlpl.u64','vqrshlvs.u64','vqrshlvc.u64','vqrshlhi.u64','vqrshlls.u64','vqrshlge.u64','vqrshllt.u64','vqrshlgt.u64','vqrshlle.u64',\n\n            'vqrshrneq.u16','vqrshrnne.u16','vqrshrncs.u16','vqrshrnhs.u16','vqrshrncc.u16','vqrshrnlo.u16','vqrshrnmi.u16','vqrshrnpl.u16','vqrshrnvs.u16','vqrshrnvc.u16','vqrshrnhi.u16','vqrshrnls.u16','vqrshrnge.u16','vqrshrnlt.u16','vqrshrngt.u16','vqrshrnle.u16',\n            'vqrshrneq.u32','vqrshrnne.u32','vqrshrncs.u32','vqrshrnhs.u32','vqrshrncc.u32','vqrshrnlo.u32','vqrshrnmi.u32','vqrshrnpl.u32','vqrshrnvs.u32','vqrshrnvc.u32','vqrshrnhi.u32','vqrshrnls.u32','vqrshrnge.u32','vqrshrnlt.u32','vqrshrngt.u32','vqrshrnle.u32',\n            'vqrshrneq.u64','vqrshrnne.u64','vqrshrncs.u64','vqrshrnhs.u64','vqrshrncc.u64','vqrshrnlo.u64','vqrshrnmi.u64','vqrshrnpl.u64','vqrshrnvs.u64','vqrshrnvc.u64','vqrshrnhi.u64','vqrshrnls.u64','vqrshrnge.u64','vqrshrnlt.u64','vqrshrngt.u64','vqrshrnle.u64',\n\n            'vrhaddeq.u8','vrhaddne.u8','vrhaddcs.u8','vrhaddhs.u8','vrhaddcc.u8','vrhaddlo.u8','vrhaddmi.u8','vrhaddpl.u8','vrhaddvs.u8','vrhaddvc.u8','vrhaddhi.u8','vrhaddls.u8','vrhaddge.u8','vrhaddlt.u8','vrhaddgt.u8','vrhaddle.u8',\n            'vrhaddeq.u16','vrhaddne.u16','vrhaddcs.u16','vrhaddhs.u16','vrhaddcc.u16','vrhaddlo.u16','vrhaddmi.u16','vrhaddpl.u16','vrhaddvs.u16','vrhaddvc.u16','vrhaddhi.u16','vrhaddls.u16','vrhaddge.u16','vrhaddlt.u16','vrhaddgt.u16','vrhaddle.u16',\n            'vrhaddeq.u32','vrhaddne.u32','vrhaddcs.u32','vrhaddhs.u32','vrhaddcc.u32','vrhaddlo.u32','vrhaddmi.u32','vrhaddpl.u32','vrhaddvs.u32','vrhaddvc.u32','vrhaddhi.u32','vrhaddls.u32','vrhaddge.u32','vrhaddlt.u32','vrhaddgt.u32','vrhaddle.u32',\n\n            'vrshleq.u8','vrshlne.u8','vrshlcs.u8','vrshlhs.u8','vrshlcc.u8','vrshllo.u8','vrshlmi.u8','vrshlpl.u8','vrshlvs.u8','vrshlvc.u8','vrshlhi.u8','vrshlls.u8','vrshlge.u8','vrshllt.u8','vrshlgt.u8','vrshlle.u8',\n            'vrshleq.u16','vrshlne.u16','vrshlcs.u16','vrshlhs.u16','vrshlcc.u16','vrshllo.u16','vrshlmi.u16','vrshlpl.u16','vrshlvs.u16','vrshlvc.u16','vrshlhi.u16','vrshlls.u16','vrshlge.u16','vrshllt.u16','vrshlgt.u16','vrshlle.u16',\n            'vrshleq.u32','vrshlne.u32','vrshlcs.u32','vrshlhs.u32','vrshlcc.u32','vrshllo.u32','vrshlmi.u32','vrshlpl.u32','vrshlvs.u32','vrshlvc.u32','vrshlhi.u32','vrshlls.u32','vrshlge.u32','vrshllt.u32','vrshlgt.u32','vrshlle.u32',\n            'vrshleq.u64','vrshlne.u64','vrshlcs.u64','vrshlhs.u64','vrshlcc.u64','vrshllo.u64','vrshlmi.u64','vrshlpl.u64','vrshlvs.u64','vrshlvc.u64','vrshlhi.u64','vrshlls.u64','vrshlge.u64','vrshllt.u64','vrshlgt.u64','vrshlle.u64',\n\n            'vrshreq.u8','vrshrne.u8','vrshrcs.u8','vrshrhs.u8','vrshrcc.u8','vrshrlo.u8','vrshrmi.u8','vrshrpl.u8','vrshrvs.u8','vrshrvc.u8','vrshrhi.u8','vrshrls.u8','vrshrge.u8','vrshrlt.u8','vrshrgt.u8','vrshrle.u8',\n            'vrshreq.u16','vrshrne.u16','vrshrcs.u16','vrshrhs.u16','vrshrcc.u16','vrshrlo.u16','vrshrmi.u16','vrshrpl.u16','vrshrvs.u16','vrshrvc.u16','vrshrhi.u16','vrshrls.u16','vrshrge.u16','vrshrlt.u16','vrshrgt.u16','vrshrle.u16',\n            'vrshreq.u32','vrshrne.u32','vrshrcs.u32','vrshrhs.u32','vrshrcc.u32','vrshrlo.u32','vrshrmi.u32','vrshrpl.u32','vrshrvs.u32','vrshrvc.u32','vrshrhi.u32','vrshrls.u32','vrshrge.u32','vrshrlt.u32','vrshrgt.u32','vrshrle.u32',\n            'vrshreq.u64','vrshrne.u64','vrshrcs.u64','vrshrhs.u64','vrshrcc.u64','vrshrlo.u64','vrshrmi.u64','vrshrpl.u64','vrshrvs.u64','vrshrvc.u64','vrshrhi.u64','vrshrls.u64','vrshrge.u64','vrshrlt.u64','vrshrgt.u64','vrshrle.u64',\n\n            'vrsraeq.u8','vrsrane.u8','vrsracs.u8','vrsrahs.u8','vrsracc.u8','vrsralo.u8','vrsrami.u8','vrsrapl.u8','vrsravs.u8','vrsravc.u8','vrsrahi.u8','vrsrals.u8','vrsrage.u8','vrsralt.u8','vrsragt.u8','vrsrale.u8',\n            'vrsraeq.u16','vrsrane.u16','vrsracs.u16','vrsrahs.u16','vrsracc.u16','vrsralo.u16','vrsrami.u16','vrsrapl.u16','vrsravs.u16','vrsravc.u16','vrsrahi.u16','vrsrals.u16','vrsrage.u16','vrsralt.u16','vrsragt.u16','vrsrale.u16',\n            'vrsraeq.u32','vrsrane.u32','vrsracs.u32','vrsrahs.u32','vrsracc.u32','vrsralo.u32','vrsrami.u32','vrsrapl.u32','vrsravs.u32','vrsravc.u32','vrsrahi.u32','vrsrals.u32','vrsrage.u32','vrsralt.u32','vrsragt.u32','vrsrale.u32',\n            'vrsraeq.u64','vrsrane.u64','vrsracs.u64','vrsrahs.u64','vrsracc.u64','vrsralo.u64','vrsrami.u64','vrsrapl.u64','vrsravs.u64','vrsravc.u64','vrsrahi.u64','vrsrals.u64','vrsrage.u64','vrsralt.u64','vrsragt.u64','vrsrale.u64',\n            ),\n        /* Conditional VFPv3 & NEON SIMD Floating-Point Instructions */\n        34 => array(\n            'vabdeq.f32','vabdne.f32','vabdcs.f32','vabdhs.f32','vabdcc.f32','vabdlo.f32','vabdmi.f32','vabdpl.f32','vabdvs.f32','vabdvc.f32','vabdhi.f32','vabdls.f32','vabdge.f32','vabdlt.f32','vabdgt.f32','vabdle.f32',\n\n            'vabseq.f32','vabsne.f32','vabscs.f32','vabshs.f32','vabscc.f32','vabslo.f32','vabsmi.f32','vabspl.f32','vabsvs.f32','vabsvc.f32','vabshi.f32','vabsls.f32','vabsge.f32','vabslt.f32','vabsgt.f32','vabsle.f32',\n            'vabseq.f64','vabsne.f64','vabscs.f64','vabshs.f64','vabscc.f64','vabslo.f64','vabsmi.f64','vabspl.f64','vabsvs.f64','vabsvc.f64','vabshi.f64','vabsls.f64','vabsge.f64','vabslt.f64','vabsgt.f64','vabsle.f64',\n\n            'vacgeeq.f32','vacgene.f32','vacgecs.f32','vacgehs.f32','vacgecc.f32','vacgelo.f32','vacgemi.f32','vacgepl.f32','vacgevs.f32','vacgevc.f32','vacgehi.f32','vacgels.f32','vacgege.f32','vacgelt.f32','vacgegt.f32','vacgele.f32',\n            'vacgteq.f32','vacgtne.f32','vacgtcs.f32','vacgths.f32','vacgtcc.f32','vacgtlo.f32','vacgtmi.f32','vacgtpl.f32','vacgtvs.f32','vacgtvc.f32','vacgthi.f32','vacgtls.f32','vacgtge.f32','vacgtlt.f32','vacgtgt.f32','vacgtle.f32',\n            'vacleeq.f32','vaclene.f32','vaclecs.f32','vaclehs.f32','vaclecc.f32','vaclelo.f32','vaclemi.f32','vaclepl.f32','vaclevs.f32','vaclevc.f32','vaclehi.f32','vaclels.f32','vaclege.f32','vaclelt.f32','vaclegt.f32','vaclele.f32',\n            'vaclteq.f32','vacltne.f32','vacltcs.f32','vaclths.f32','vacltcc.f32','vacltlo.f32','vacltmi.f32','vacltpl.f32','vacltvs.f32','vacltvc.f32','vaclthi.f32','vacltls.f32','vacltge.f32','vacltlt.f32','vacltgt.f32','vacltle.f32',\n\n            'vaddeq.f32','vaddne.f32','vaddcs.f32','vaddhs.f32','vaddcc.f32','vaddlo.f32','vaddmi.f32','vaddpl.f32','vaddvs.f32','vaddvc.f32','vaddhi.f32','vaddls.f32','vaddge.f32','vaddlt.f32','vaddgt.f32','vaddle.f32',\n            'vaddeq.f64','vaddne.f64','vaddcs.f64','vaddhs.f64','vaddcc.f64','vaddlo.f64','vaddmi.f64','vaddpl.f64','vaddvs.f64','vaddvc.f64','vaddhi.f64','vaddls.f64','vaddge.f64','vaddlt.f64','vaddgt.f64','vaddle.f64',\n\n            'vceqeq.f32','vceqne.f32','vceqcs.f32','vceqhs.f32','vceqcc.f32','vceqlo.f32','vceqmi.f32','vceqpl.f32','vceqvs.f32','vceqvc.f32','vceqhi.f32','vceqls.f32','vceqge.f32','vceqlt.f32','vceqgt.f32','vceqle.f32',\n            'vcgeeq.f32','vcgene.f32','vcgecs.f32','vcgehs.f32','vcgecc.f32','vcgelo.f32','vcgemi.f32','vcgepl.f32','vcgevs.f32','vcgevc.f32','vcgehi.f32','vcgels.f32','vcgege.f32','vcgelt.f32','vcgegt.f32','vcgele.f32',\n            'vcleeq.f32','vclene.f32','vclecs.f32','vclehs.f32','vclecc.f32','vclelo.f32','vclemi.f32','vclepl.f32','vclevs.f32','vclevc.f32','vclehi.f32','vclels.f32','vclege.f32','vclelt.f32','vclegt.f32','vclele.f32',\n            'vcgteq.f32','vcgtne.f32','vcgtcs.f32','vcgths.f32','vcgtcc.f32','vcgtlo.f32','vcgtmi.f32','vcgtpl.f32','vcgtvs.f32','vcgtvc.f32','vcgthi.f32','vcgtls.f32','vcgtge.f32','vcgtlt.f32','vcgtgt.f32','vcgtle.f32',\n            'vclteq.f32','vcltne.f32','vcltcs.f32','vclths.f32','vcltcc.f32','vcltlo.f32','vcltmi.f32','vcltpl.f32','vcltvs.f32','vcltvc.f32','vclthi.f32','vcltls.f32','vcltge.f32','vcltlt.f32','vcltgt.f32','vcltle.f32',\n\n            'vcmpeq.f32','vcmpne.f32','vcmpcs.f32','vcmphs.f32','vcmpcc.f32','vcmplo.f32','vcmpmi.f32','vcmppl.f32','vcmpvs.f32','vcmpvc.f32','vcmphi.f32','vcmpls.f32','vcmpge.f32','vcmplt.f32','vcmpgt.f32','vcmple.f32',\n            'vcmpeq.f64','vcmpne.f64','vcmpcs.f64','vcmphs.f64','vcmpcc.f64','vcmplo.f64','vcmpmi.f64','vcmppl.f64','vcmpvs.f64','vcmpvc.f64','vcmphi.f64','vcmpls.f64','vcmpge.f64','vcmplt.f64','vcmpgt.f64','vcmple.f64',\n\n            'vcmpeeq.f32','vcmpene.f32','vcmpecs.f32','vcmpehs.f32','vcmpecc.f32','vcmpelo.f32','vcmpemi.f32','vcmpepl.f32','vcmpevs.f32','vcmpevc.f32','vcmpehi.f32','vcmpels.f32','vcmpege.f32','vcmpelt.f32','vcmpegt.f32','vcmpele.f32',\n            'vcmpeeq.f64','vcmpene.f64','vcmpecs.f64','vcmpehs.f64','vcmpecc.f64','vcmpelo.f64','vcmpemi.f64','vcmpepl.f64','vcmpevs.f64','vcmpevc.f64','vcmpehi.f64','vcmpels.f64','vcmpege.f64','vcmpelt.f64','vcmpegt.f64','vcmpele.f64',\n\n            'vcvteq.s16.f32','vcvtne.s16.f32','vcvtcs.s16.f32','vcvths.s16.f32','vcvtcc.s16.f32','vcvtlo.s16.f32','vcvtmi.s16.f32','vcvtpl.s16.f32','vcvtvs.s16.f32','vcvtvc.s16.f32','vcvthi.s16.f32','vcvtls.s16.f32','vcvtge.s16.f32','vcvtlt.s16.f32','vcvtgt.s16.f32','vcvtle.s16.f32',\n            'vcvteq.s16.f64','vcvtne.s16.f64','vcvtcs.s16.f64','vcvths.s16.f64','vcvtcc.s16.f64','vcvtlo.s16.f64','vcvtmi.s16.f64','vcvtpl.s16.f64','vcvtvs.s16.f64','vcvtvc.s16.f64','vcvthi.s16.f64','vcvtls.s16.f64','vcvtge.s16.f64','vcvtlt.s16.f64','vcvtgt.s16.f64','vcvtle.s16.f64',\n            'vcvteq.s32.f32','vcvtne.s32.f32','vcvtcs.s32.f32','vcvths.s32.f32','vcvtcc.s32.f32','vcvtlo.s32.f32','vcvtmi.s32.f32','vcvtpl.s32.f32','vcvtvs.s32.f32','vcvtvc.s32.f32','vcvthi.s32.f32','vcvtls.s32.f32','vcvtge.s32.f32','vcvtlt.s32.f32','vcvtgt.s32.f32','vcvtle.s32.f32',\n            'vcvteq.s32.f64','vcvtne.s32.f64','vcvtcs.s32.f64','vcvths.s32.f64','vcvtcc.s32.f64','vcvtlo.s32.f64','vcvtmi.s32.f64','vcvtpl.s32.f64','vcvtvs.s32.f64','vcvtvc.s32.f64','vcvthi.s32.f64','vcvtls.s32.f64','vcvtge.s32.f64','vcvtlt.s32.f64','vcvtgt.s32.f64','vcvtle.s32.f64',\n            'vcvteq.u16.f32','vcvtne.u16.f32','vcvtcs.u16.f32','vcvths.u16.f32','vcvtcc.u16.f32','vcvtlo.u16.f32','vcvtmi.u16.f32','vcvtpl.u16.f32','vcvtvs.u16.f32','vcvtvc.u16.f32','vcvthi.u16.f32','vcvtls.u16.f32','vcvtge.u16.f32','vcvtlt.u16.f32','vcvtgt.u16.f32','vcvtle.u16.f32',\n            'vcvteq.u16.f64','vcvtne.u16.f64','vcvtcs.u16.f64','vcvths.u16.f64','vcvtcc.u16.f64','vcvtlo.u16.f64','vcvtmi.u16.f64','vcvtpl.u16.f64','vcvtvs.u16.f64','vcvtvc.u16.f64','vcvthi.u16.f64','vcvtls.u16.f64','vcvtge.u16.f64','vcvtlt.u16.f64','vcvtgt.u16.f64','vcvtle.u16.f64',\n            'vcvteq.u32.f32','vcvtne.u32.f32','vcvtcs.u32.f32','vcvths.u32.f32','vcvtcc.u32.f32','vcvtlo.u32.f32','vcvtmi.u32.f32','vcvtpl.u32.f32','vcvtvs.u32.f32','vcvtvc.u32.f32','vcvthi.u32.f32','vcvtls.u32.f32','vcvtge.u32.f32','vcvtlt.u32.f32','vcvtgt.u32.f32','vcvtle.u32.f32',\n            'vcvteq.u32.f64','vcvtne.u32.f64','vcvtcs.u32.f64','vcvths.u32.f64','vcvtcc.u32.f64','vcvtlo.u32.f64','vcvtmi.u32.f64','vcvtpl.u32.f64','vcvtvs.u32.f64','vcvtvc.u32.f64','vcvthi.u32.f64','vcvtls.u32.f64','vcvtge.u32.f64','vcvtlt.u32.f64','vcvtgt.u32.f64','vcvtle.u32.f64',\n            'vcvteq.f16.f32','vcvtne.f16.f32','vcvtcs.f16.f32','vcvths.f16.f32','vcvtcc.f16.f32','vcvtlo.f16.f32','vcvtmi.f16.f32','vcvtpl.f16.f32','vcvtvs.f16.f32','vcvtvc.f16.f32','vcvthi.f16.f32','vcvtls.f16.f32','vcvtge.f16.f32','vcvtlt.f16.f32','vcvtgt.f16.f32','vcvtle.f16.f32',\n            'vcvteq.f32.s32','vcvtne.f32.s32','vcvtcs.f32.s32','vcvths.f32.s32','vcvtcc.f32.s32','vcvtlo.f32.s32','vcvtmi.f32.s32','vcvtpl.f32.s32','vcvtvs.f32.s32','vcvtvc.f32.s32','vcvthi.f32.s32','vcvtls.f32.s32','vcvtge.f32.s32','vcvtlt.f32.s32','vcvtgt.f32.s32','vcvtle.f32.s32',\n            'vcvteq.f32.u32','vcvtne.f32.u32','vcvtcs.f32.u32','vcvths.f32.u32','vcvtcc.f32.u32','vcvtlo.f32.u32','vcvtmi.f32.u32','vcvtpl.f32.u32','vcvtvs.f32.u32','vcvtvc.f32.u32','vcvthi.f32.u32','vcvtls.f32.u32','vcvtge.f32.u32','vcvtlt.f32.u32','vcvtgt.f32.u32','vcvtle.f32.u32',\n            'vcvteq.f32.f16','vcvtne.f32.f16','vcvtcs.f32.f16','vcvths.f32.f16','vcvtcc.f32.f16','vcvtlo.f32.f16','vcvtmi.f32.f16','vcvtpl.f32.f16','vcvtvs.f32.f16','vcvtvc.f32.f16','vcvthi.f32.f16','vcvtls.f32.f16','vcvtge.f32.f16','vcvtlt.f32.f16','vcvtgt.f32.f16','vcvtle.f32.f16',\n            'vcvteq.f32.f64','vcvtne.f32.f64','vcvtcs.f32.f64','vcvths.f32.f64','vcvtcc.f32.f64','vcvtlo.f32.f64','vcvtmi.f32.f64','vcvtpl.f32.f64','vcvtvs.f32.f64','vcvtvc.f32.f64','vcvthi.f32.f64','vcvtls.f32.f64','vcvtge.f32.f64','vcvtlt.f32.f64','vcvtgt.f32.f64','vcvtle.f32.f64',\n            'vcvteq.f64.s32','vcvtne.f64.s32','vcvtcs.f64.s32','vcvths.f64.s32','vcvtcc.f64.s32','vcvtlo.f64.s32','vcvtmi.f64.s32','vcvtpl.f64.s32','vcvtvs.f64.s32','vcvtvc.f64.s32','vcvthi.f64.s32','vcvtls.f64.s32','vcvtge.f64.s32','vcvtlt.f64.s32','vcvtgt.f64.s32','vcvtle.f64.s32',\n            'vcvteq.f64.u32','vcvtne.f64.u32','vcvtcs.f64.u32','vcvths.f64.u32','vcvtcc.f64.u32','vcvtlo.f64.u32','vcvtmi.f64.u32','vcvtpl.f64.u32','vcvtvs.f64.u32','vcvtvc.f64.u32','vcvthi.f64.u32','vcvtls.f64.u32','vcvtge.f64.u32','vcvtlt.f64.u32','vcvtgt.f64.u32','vcvtle.f64.u32',\n            'vcvteq.f64.f32','vcvtne.f64.f32','vcvtcs.f64.f32','vcvths.f64.f32','vcvtcc.f64.f32','vcvtlo.f64.f32','vcvtmi.f64.f32','vcvtpl.f64.f32','vcvtvs.f64.f32','vcvtvc.f64.f32','vcvthi.f64.f32','vcvtls.f64.f32','vcvtge.f64.f32','vcvtlt.f64.f32','vcvtgt.f64.f32','vcvtle.f64.f32',\n\n            'vcvtreq.s32.f32','vcvtrne.s32.f32','vcvtrcs.s32.f32','vcvtrhs.s32.f32','vcvtrcc.s32.f32','vcvtrlo.s32.f32','vcvtrmi.s32.f32','vcvtrpl.s32.f32','vcvtrvs.s32.f32','vcvtrvc.s32.f32','vcvtrhi.s32.f32','vcvtrls.s32.f32','vcvtrge.s32.f32','vcvtrlt.s32.f32','vcvtrgt.s32.f32','vcvtrle.s32.f32',\n            'vcvtreq.s32.f64','vcvtrne.s32.f64','vcvtrcs.s32.f64','vcvtrhs.s32.f64','vcvtrcc.s32.f64','vcvtrlo.s32.f64','vcvtrmi.s32.f64','vcvtrpl.s32.f64','vcvtrvs.s32.f64','vcvtrvc.s32.f64','vcvtrhi.s32.f64','vcvtrls.s32.f64','vcvtrge.s32.f64','vcvtrlt.s32.f64','vcvtrgt.s32.f64','vcvtrle.s32.f64',\n            'vcvtreq.u32.f32','vcvtrne.u32.f32','vcvtrcs.u32.f32','vcvtrhs.u32.f32','vcvtrcc.u32.f32','vcvtrlo.u32.f32','vcvtrmi.u32.f32','vcvtrpl.u32.f32','vcvtrvs.u32.f32','vcvtrvc.u32.f32','vcvtrhi.u32.f32','vcvtrls.u32.f32','vcvtrge.u32.f32','vcvtrlt.u32.f32','vcvtrgt.u32.f32','vcvtrle.u32.f32',\n            'vcvtreq.u32.f64','vcvtrne.u32.f64','vcvtrcs.u32.f64','vcvtrhs.u32.f64','vcvtrcc.u32.f64','vcvtrlo.u32.f64','vcvtrmi.u32.f64','vcvtrpl.u32.f64','vcvtrvs.u32.f64','vcvtrvc.u32.f64','vcvtrhi.u32.f64','vcvtrls.u32.f64','vcvtrge.u32.f64','vcvtrlt.u32.f64','vcvtrgt.u32.f64','vcvtrle.u32.f64',\n\n            'vcvtbeq.f16.f32','vcvtbne.f16.f32','vcvtbcs.f16.f32','vcvtbhs.f16.f32','vcvtbcc.f16.f32','vcvtblo.f16.f32','vcvtbmi.f16.f32','vcvtbpl.f16.f32','vcvtbvs.f16.f32','vcvtbvc.f16.f32','vcvtbhi.f16.f32','vcvtbls.f16.f32','vcvtbge.f16.f32','vcvtblt.f16.f32','vcvtbgt.f16.f32','vcvtble.f16.f32',\n            'vcvtbeq.f32.f16','vcvtbne.f32.f16','vcvtbcs.f32.f16','vcvtbhs.f32.f16','vcvtbcc.f32.f16','vcvtblo.f32.f16','vcvtbmi.f32.f16','vcvtbpl.f32.f16','vcvtbvs.f32.f16','vcvtbvc.f32.f16','vcvtbhi.f32.f16','vcvtbls.f32.f16','vcvtbge.f32.f16','vcvtblt.f32.f16','vcvtbgt.f32.f16','vcvtble.f32.f16',\n\n            'vcvtteq.f16.f32','vcvttne.f16.f32','vcvttcs.f16.f32','vcvtths.f16.f32','vcvttcc.f16.f32','vcvttlo.f16.f32','vcvttmi.f16.f32','vcvttpl.f16.f32','vcvttvs.f16.f32','vcvttvc.f16.f32','vcvtthi.f16.f32','vcvttls.f16.f32','vcvttge.f16.f32','vcvttlt.f16.f32','vcvttgt.f16.f32','vcvttle.f16.f32',\n            'vcvtteq.f32.f16','vcvttne.f32.f16','vcvttcs.f32.f16','vcvtths.f32.f16','vcvttcc.f32.f16','vcvttlo.f32.f16','vcvttmi.f32.f16','vcvttpl.f32.f16','vcvttvs.f32.f16','vcvttvc.f32.f16','vcvtthi.f32.f16','vcvttls.f32.f16','vcvttge.f32.f16','vcvttlt.f32.f16','vcvttgt.f32.f16','vcvttle.f32.f16',\n\n            'vdiveq.f32','vdivne.f32','vdivcs.f32','vdivhs.f32','vdivcc.f32','vdivlo.f32','vdivmi.f32','vdivpl.f32','vdivvs.f32','vdivvc.f32','vdivhi.f32','vdivls.f32','vdivge.f32','vdivlt.f32','vdivgt.f32','vdivle.f32',\n            'vdiveq.f64','vdivne.f64','vdivcs.f64','vdivhs.f64','vdivcc.f64','vdivlo.f64','vdivmi.f64','vdivpl.f64','vdivvs.f64','vdivvc.f64','vdivhi.f64','vdivls.f64','vdivge.f64','vdivlt.f64','vdivgt.f64','vdivle.f64',\n\n            'vmaxeq.f32','vmaxne.f32','vmaxcs.f32','vmaxhs.f32','vmaxcc.f32','vmaxlo.f32','vmaxmi.f32','vmaxpl.f32','vmaxvs.f32','vmaxvc.f32','vmaxhi.f32','vmaxls.f32','vmaxge.f32','vmaxlt.f32','vmaxgt.f32','vmaxle.f32',\n            'vmineq.f32','vminne.f32','vmincs.f32','vminhs.f32','vmincc.f32','vminlo.f32','vminmi.f32','vminpl.f32','vminvs.f32','vminvc.f32','vminhi.f32','vminls.f32','vminge.f32','vminlt.f32','vmingt.f32','vminle.f32',\n\n            'vmlaeq.f32','vmlane.f32','vmlacs.f32','vmlahs.f32','vmlacc.f32','vmlalo.f32','vmlami.f32','vmlapl.f32','vmlavs.f32','vmlavc.f32','vmlahi.f32','vmlals.f32','vmlage.f32','vmlalt.f32','vmlagt.f32','vmlale.f32',\n            'vmlaeq.f64','vmlane.f64','vmlacs.f64','vmlahs.f64','vmlacc.f64','vmlalo.f64','vmlami.f64','vmlapl.f64','vmlavs.f64','vmlavc.f64','vmlahi.f64','vmlals.f64','vmlage.f64','vmlalt.f64','vmlagt.f64','vmlale.f64',\n\n            'vmlseq.f32','vmlsne.f32','vmlscs.f32','vmlshs.f32','vmlscc.f32','vmlslo.f32','vmlsmi.f32','vmlspl.f32','vmlsvs.f32','vmlsvc.f32','vmlshi.f32','vmlsls.f32','vmlsge.f32','vmlslt.f32','vmlsgt.f32','vmlsle.f32',\n            'vmlseq.f64','vmlsne.f64','vmlscs.f64','vmlshs.f64','vmlscc.f64','vmlslo.f64','vmlsmi.f64','vmlspl.f64','vmlsvs.f64','vmlsvc.f64','vmlshi.f64','vmlsls.f64','vmlsge.f64','vmlslt.f64','vmlsgt.f64','vmlsle.f64',\n\n            'vmuleq.f32','vmulne.f32','vmulcs.f32','vmulhs.f32','vmulcc.f32','vmullo.f32','vmulmi.f32','vmulpl.f32','vmulvs.f32','vmulvc.f32','vmulhi.f32','vmulls.f32','vmulge.f32','vmullt.f32','vmulgt.f32','vmulle.f32',\n            'vmuleq.f64','vmulne.f64','vmulcs.f64','vmulhs.f64','vmulcc.f64','vmullo.f64','vmulmi.f64','vmulpl.f64','vmulvs.f64','vmulvc.f64','vmulhi.f64','vmulls.f64','vmulge.f64','vmullt.f64','vmulgt.f64','vmulle.f64',\n\n            'vnegeq.f32','vnegne.f32','vnegcs.f32','vneghs.f32','vnegcc.f32','vneglo.f32','vnegmi.f32','vnegpl.f32','vnegvs.f32','vnegvc.f32','vneghi.f32','vnegls.f32','vnegge.f32','vneglt.f32','vneggt.f32','vnegle.f32',\n            'vnegeq.f64','vnegne.f64','vnegcs.f64','vneghs.f64','vnegcc.f64','vneglo.f64','vnegmi.f64','vnegpl.f64','vnegvs.f64','vnegvc.f64','vneghi.f64','vnegls.f64','vnegge.f64','vneglt.f64','vneggt.f64','vnegle.f64',\n\n            'vnmlaeq.f32','vnmlane.f32','vnmlacs.f32','vnmlahs.f32','vnmlacc.f32','vnmlalo.f32','vnmlami.f32','vnmlapl.f32','vnmlavs.f32','vnmlavc.f32','vnmlahi.f32','vnmlals.f32','vnmlage.f32','vnmlalt.f32','vnmlagt.f32','vnmlale.f32',\n            'vnmlaeq.f64','vnmlane.f64','vnmlacs.f64','vnmlahs.f64','vnmlacc.f64','vnmlalo.f64','vnmlami.f64','vnmlapl.f64','vnmlavs.f64','vnmlavc.f64','vnmlahi.f64','vnmlals.f64','vnmlage.f64','vnmlalt.f64','vnmlagt.f64','vnmlale.f64',\n\n            'vnmlseq.f32','vnmlsne.f32','vnmlscs.f32','vnmlshs.f32','vnmlscc.f32','vnmlslo.f32','vnmlsmi.f32','vnmlspl.f32','vnmlsvs.f32','vnmlsvc.f32','vnmlshi.f32','vnmlsls.f32','vnmlsge.f32','vnmlslt.f32','vnmlsgt.f32','vnmlsle.f32',\n            'vnmlseq.f64','vnmlsne.f64','vnmlscs.f64','vnmlshs.f64','vnmlscc.f64','vnmlslo.f64','vnmlsmi.f64','vnmlspl.f64','vnmlsvs.f64','vnmlsvc.f64','vnmlshi.f64','vnmlsls.f64','vnmlsge.f64','vnmlslt.f64','vnmlsgt.f64','vnmlsle.f64',\n\n            'vnmuleq.f64','vnmulne.f64','vnmulcs.f64','vnmulhs.f64','vnmulcc.f64','vnmullo.f64','vnmulmi.f64','vnmulpl.f64','vnmulvs.f64','vnmulvc.f64','vnmulhi.f64','vnmulls.f64','vnmulge.f64','vnmullt.f64','vnmulgt.f64','vnmulle.f64',\n            'vnmuleq.f32','vnmulne.f32','vnmulcs.f32','vnmulhs.f32','vnmulcc.f32','vnmullo.f32','vnmulmi.f32','vnmulpl.f32','vnmulvs.f32','vnmulvc.f32','vnmulhi.f32','vnmulls.f32','vnmulge.f32','vnmullt.f32','vnmulgt.f32','vnmulle.f32',\n\n            'vpaddeq.f32','vpaddne.f32','vpaddcs.f32','vpaddhs.f32','vpaddcc.f32','vpaddlo.f32','vpaddmi.f32','vpaddpl.f32','vpaddvs.f32','vpaddvc.f32','vpaddhi.f32','vpaddls.f32','vpaddge.f32','vpaddlt.f32','vpaddgt.f32','vpaddle.f32',\n\n            'vpmaxeq.f32','vpmaxne.f32','vpmaxcs.f32','vpmaxhs.f32','vpmaxcc.f32','vpmaxlo.f32','vpmaxmi.f32','vpmaxpl.f32','vpmaxvs.f32','vpmaxvc.f32','vpmaxhi.f32','vpmaxls.f32','vpmaxge.f32','vpmaxlt.f32','vpmaxgt.f32','vpmaxle.f32',\n            'vpmineq.f32','vpminne.f32','vpmincs.f32','vpminhs.f32','vpmincc.f32','vpminlo.f32','vpminmi.f32','vpminpl.f32','vpminvs.f32','vpminvc.f32','vpminhi.f32','vpminls.f32','vpminge.f32','vpminlt.f32','vpmingt.f32','vpminle.f32',\n\n            'vrecpeeq.u32','vrecpene.u32','vrecpecs.u32','vrecpehs.u32','vrecpecc.u32','vrecpelo.u32','vrecpemi.u32','vrecpepl.u32','vrecpevs.u32','vrecpevc.u32','vrecpehi.u32','vrecpels.u32','vrecpege.u32','vrecpelt.u32','vrecpegt.u32','vrecpele.u32',\n            'vrecpeeq.f32','vrecpene.f32','vrecpecs.f32','vrecpehs.f32','vrecpecc.f32','vrecpelo.f32','vrecpemi.f32','vrecpepl.f32','vrecpevs.f32','vrecpevc.f32','vrecpehi.f32','vrecpels.f32','vrecpege.f32','vrecpelt.f32','vrecpegt.f32','vrecpele.f32',\n            'vrecpseq.f32','vrecpsne.f32','vrecpscs.f32','vrecpshs.f32','vrecpscc.f32','vrecpslo.f32','vrecpsmi.f32','vrecpspl.f32','vrecpsvs.f32','vrecpsvc.f32','vrecpshi.f32','vrecpsls.f32','vrecpsge.f32','vrecpslt.f32','vrecpsgt.f32','vrecpsle.f32',\n\n            'vrsqrteeq.u32','vrsqrtene.u32','vrsqrtecs.u32','vrsqrtehs.u32','vrsqrtecc.u32','vrsqrtelo.u32','vrsqrtemi.u32','vrsqrtepl.u32','vrsqrtevs.u32','vrsqrtevc.u32','vrsqrtehi.u32','vrsqrtels.u32','vrsqrtege.u32','vrsqrtelt.u32','vrsqrtegt.u32','vrsqrtele.u32',\n            'vrsqrteeq.f32','vrsqrtene.f32','vrsqrtecs.f32','vrsqrtehs.f32','vrsqrtecc.f32','vrsqrtelo.f32','vrsqrtemi.f32','vrsqrtepl.f32','vrsqrtevs.f32','vrsqrtevc.f32','vrsqrtehi.f32','vrsqrtels.f32','vrsqrtege.f32','vrsqrtelt.f32','vrsqrtegt.f32','vrsqrtele.f32',\n            'vrsqrtseq.f32','vrsqrtsne.f32','vrsqrtscs.f32','vrsqrtshs.f32','vrsqrtscc.f32','vrsqrtslo.f32','vrsqrtsmi.f32','vrsqrtspl.f32','vrsqrtsvs.f32','vrsqrtsvc.f32','vrsqrtshi.f32','vrsqrtsls.f32','vrsqrtsge.f32','vrsqrtslt.f32','vrsqrtsgt.f32','vrsqrtsle.f32',\n\n            'vsqrteq.f32','vsqrtne.f32','vsqrtcs.f32','vsqrths.f32','vsqrtcc.f32','vsqrtlo.f32','vsqrtmi.f32','vsqrtpl.f32','vsqrtvs.f32','vsqrtvc.f32','vsqrthi.f32','vsqrtls.f32','vsqrtge.f32','vsqrtlt.f32','vsqrtgt.f32','vsqrtle.f32',\n            'vsqrteq.f64','vsqrtne.f64','vsqrtcs.f64','vsqrths.f64','vsqrtcc.f64','vsqrtlo.f64','vsqrtmi.f64','vsqrtpl.f64','vsqrtvs.f64','vsqrtvc.f64','vsqrthi.f64','vsqrtls.f64','vsqrtge.f64','vsqrtlt.f64','vsqrtgt.f64','vsqrtle.f64',\n\n            'vsubeq.f32','vsubne.f32','vsubcs.f32','vsubhs.f32','vsubcc.f32','vsublo.f32','vsubmi.f32','vsubpl.f32','vsubvs.f32','vsubvc.f32','vsubhi.f32','vsubls.f32','vsubge.f32','vsublt.f32','vsubgt.f32','vsuble.f32',\n            'vsubeq.f64','vsubne.f64','vsubcs.f64','vsubhs.f64','vsubcc.f64','vsublo.f64','vsubmi.f64','vsubpl.f64','vsubvs.f64','vsubvc.f64','vsubhi.f64','vsubls.f64','vsubge.f64','vsublt.f64','vsubgt.f64','vsuble.f64'\n            ),\n        /* Registers */\n        35 => array(\n            /* General-Purpose Registers */\n            'r0','r1','r2','r3','r4','r5','r6','r7',\n            'r8','r9','r10','r11','r12','r13','r14','r15',\n            /* Scratch Registers */\n            'a1','a2','a3','a4',\n            /* Variable Registers */\n            'v1','v2','v3','v4','v5','v6','v7','v8',\n            /* Other Synonims for General-Purpose Registers */\n            'sb','sl','fp','ip','sp','lr','pc',\n            /* WMMX Data Registers */\n            'wr0','wr1','wr2','wr3','wr4','wr5','wr6','wr7',\n            'wr8','wr9','wr10','wr11','wr12','wr13','wr14','wr15',\n            /* WMMX Control Registers */\n            'wcid','wcon','wcssf','wcasf',\n            /* WMMX-Mapped General-Purpose Registers */\n            'wcgr0','wcgr1','wcgr2','wcgr3',\n            /* VFPv3 Registers */\n            's0','s1','s2','s3','s4','s5','s6','s7',\n            's8','s9','s10','s11','s12','s13','s14','s15',\n            's16','s17','s18','s19','s20','s21','s22','s23',\n            's24','s25','s26','s27','s28','s29','s30','s31',\n            /* VFPv3/NEON Registers */\n            'd0','d1','d2','d3','d4','d5','d6','d7',\n            'd8','d9','d10','d11','d12','d13','d14','d15',\n            'd16','d17','d18','d19','d20','d21','d22','d23',\n            'd24','d25','d26','d27','d28','d29','d30','d31',\n            /* NEON Registers */\n            'q0','q1','q2','q3','q4','q5','q6','q7',\n            'q8','q9','q10','q11','q12','q13','q14','q15'\n            )\n        ),\n    'SYMBOLS' => array(\n        '[', ']', '(', ')',\n        '+', '-', '*', '/', '%',\n        '.', ',', ';', ':'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false,\n        8 => false,\n        9 => false,\n        10 => false,\n        11 => false,\n        12 => false,\n        13 => false,\n        14 => false,\n        15 => false,\n        16 => false,\n        17 => false,\n        18 => false,\n        19 => false,\n        20 => false,\n        21 => false,\n        22 => false,\n        23 => false,\n        24 => false,\n        25 => false,\n        26 => false,\n        27 => false,\n        28 => false,\n        29 => false,\n        30 => false,\n        31 => false,\n        32 => false,\n        33 => false,\n        34 => false,\n        35 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            /* Unconditional Data Processing Instructions */\n            1 => 'color: #00007f; font-weight: normal; font-style: normal;',\n            /* Conditional Data Processing Instructions */\n            2 => 'color: #00007f; font-weight: normal; font-style: italic;',\n            /* Unconditional Memory Access Instructions */\n            3 => 'color: #00007f; font-weight: normal; font-style: normal;',\n            /* Conditional Memory Access Instructions */\n            4 => 'color: #00007f; font-weight: normal; font-style: italic;',\n            /* Unconditional Flags Changing Instructions */\n            5 => 'color: #00007f; font-weight: bold; font-style: normal;',\n            /* Conditional Flags Changing Instructions */\n            6 => 'color: #00007f; font-weight: bold; font-style: italic;',\n            /* Unconditional Flow Control Instructions */\n            7 => 'color: #0000ff; font-weight: normal; font-style: normal;',\n            /* Conditional Flow Control Instructions */\n            8 => 'color: #0000ff; font-weight: normal; font-style: italic;',\n            /* Unconditional Syncronization Instructions */\n            9 => 'color: #00007f; font-weight: normal; font-style: normal;',\n            /* Conditional Syncronization Instructions */\n            10 => 'color: #00007f; font-weight: normal; font-style: italic;',\n            /* Unonditional ARMv6 SIMD */\n            11 => 'color: #b00040; font-weight: normal; font-style: normal;',\n            /* Conditional ARMv6 SIMD */\n            12 => 'color: #b00040; font-weight: normal; font-style: italic;',\n            /* Unconditional Coprocessor Instructions */\n            13 => 'color: #00007f; font-weight: normal; font-style: normal;',\n            /* Conditional Coprocessor Instructions */\n            14 => 'color: #00007f; font-weight: bold; font-style: italic;',\n            /* Unconditional System Instructions */\n            15 => 'color: #00007f; font-weight: normal; font-style: normal;',\n            /* Conditional System Instructions */\n            16 => 'color: #00007f; font-weight: bold; font-style: italic;',\n            /* Unconditional WMMX/WMMX2 SIMD Instructions */\n            17 => 'color: #b00040; font-weight: normal; font-style: normal;',\n            /* Conditional WMMX/WMMX2 SIMD Instructions */\n            18 => 'color: #b00040; font-weight: normal; font-style: italic;',\n            /* Unconditional VFPv3 & NEON SIMD Memory Access Instructions */\n            19 => 'color: #b00040; font-weight: normal; font-style: normal;',\n            /* Unconditional NEON SIMD Logical Instructions */\n            20 => 'color: #b00040; font-weight: normal; font-style: italic;',\n            /* Unconditional NEON SIMD ARM Registers Interop Instructions */\n            21 => 'color: #b00040; font-weight: normal; font-style: italic;',\n            /* Unconditional NEON SIMD Bit/Byte-Level Instructions */\n            22 => 'color: #b00040; font-weight: normal; font-style: italic;',\n            /* Unconditional NEON SIMD Universal Integer Instructions */\n            23 => 'color: #b00040; font-weight: normal; font-style: italic;',\n            /* Unconditional NEON SIMD Signed Integer Instructions */\n            24 => 'color: #b00040; font-weight: normal; font-style: italic;',\n            /* Unconditional NEON SIMD Unsigned Integer Instructions */\n            25 => 'color: #b00040; font-weight: normal; font-style: italic;',\n            /* Unconditional VFPv3 & NEON SIMD Floating-Point Instructions */\n            26 => 'color: #b00040; font-weight: normal; font-style: italic;',\n            /* Conditional VFPv3 & NEON SIMD Memory Access Instructions */\n            27 => 'color: #b00040; font-weight: normal; font-style: italic;',\n            /* Conditional NEON SIMD Logical Instructions */\n            28 => 'color: #b00040; font-weight: normal; font-style: italic;',\n            /* Conditional NEON SIMD ARM Registers Interop Instructions */\n            29 => 'color: #b00040; font-weight: normal; font-style: italic;',\n            /* Conditional NEON SIMD Bit/Byte-Level Instructions */\n            30 => 'color: #b00040; font-weight: normal; font-style: italic;',\n            /* Conditional NEON SIMD Universal Integer Instructions */\n            31 => 'color: #b00040; font-weight: normal; font-style: italic;',\n            /* Conditional NEON SIMD Signed Integer Instructions */\n            32 => 'color: #b00040; font-weight: normal; font-style: italic;',\n            /* Conditional NEON SIMD Unsigned Integer Instructions */\n            33 => 'color: #b00040; font-weight: normal; font-style: italic;',\n            /* Conditional VFPv3 & NEON SIMD Floating-Point Instructions */\n            34 => 'color: #b00040; font-weight: normal; font-style: italic;',\n            /* Registers */\n            35 => 'color: #46aa03; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #adadad; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900; font-weight: bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #7f007f;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => '',\n        9 => '',\n        10 => '',\n        11 => '',\n        12 => '',\n        13 => '',\n        14 => '',\n        15 => '',\n        16 => '',\n        17 => '',\n        18 => '',\n        19 => '',\n        20 => '',\n        21 => '',\n        22 => '',\n        23 => '',\n        24 => '',\n        25 => '',\n        26 => '',\n        27 => '',\n        28 => '',\n        29 => '',\n        30 => '',\n        31 => '',\n        32 => '',\n        33 => '',\n        34 => '',\n        35 => ''\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_BIN_PREFIX_PERCENT |\n        GESHI_NUMBER_BIN_SUFFIX |\n        GESHI_NUMBER_HEX_PREFIX |\n        GESHI_NUMBER_HEX_SUFFIX |\n        GESHI_NUMBER_OCT_SUFFIX |\n        GESHI_NUMBER_INT_BASIC |\n        GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F |\n        GESHI_NUMBER_FLT_SCI_ZERO,\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 8,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\|\\#>|^])\",\n            'DISALLOWED_AFTER' => \"(?![a-zA-Z0-9_<\\|%])\"\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/asm.php",
    "content": "<?php\n/*************************************************************************************\n * asm.php\n * -------\n * Author: Tux (tux@inmail.cz)\n * Copyright: (c) 2004 Tux (http://tux.a4.cz/),\n *                2004-2009 Nigel McNie (http://qbnz.com/highlighter),\n *                2009-2011 Benny Baumann (http://qbnz.com/highlighter),\n *                2011 Dennis Yurichev (dennis@conus.info),\n *                2011 Marat Dukhan (mdukhan3.at.gatech.dot.edu)\n * Release Version: 1.0.9.1\n * Date Started: 2004/07/27\n *\n * x86 Assembler language file for GeSHi.\n * Based on the following documents:\n *   - \"Intel64 and IA-32 Architectures Programmer's Reference Manual\n *       Volume 2 (2A & 2B): Instructions Set Reference, A-Z\",\n *       Order Number 25383-039US, May 2011\n *   - \"Intel Advanced Vector Extensions Programming Reference\",\n *       Order Number 319433-011, June 2011\n *   - \"AMD64 Architecture Programmer's Manual Volume 3:\n *       General-Purpose and System Instructions\", Publication No. 24594,\n *       Revision 3.15, November 2009\n *   - \"AMD64 Architecture Programmer's Manual Volume 4:\n *       128-Bit and 256-Bit Media Instructions\", Publication No. 26568,\n *       Revision 3.12, May 2011\n *   - \"AMD64 Architecture Programmer's Manual Volume 5:\n *       64-Bit Media and x87 Floating-Point Instructions\",\n *       Publication No. 26569, Revision 3.11, December 2009\n *   - \"AMD64 Technology Lightweight Profiling Specification\",\n *       Publication No. 43724, Revision 3.08, August 2010\n *   - \"Application Note 108: Cyrix Extended MMX Instruction Set\"\n *   - \"VIA Padlock Programming Guide\", 3rd May 2005\n *   - http://en.wikipedia.org/wiki/X86_instruction_listings\n *   - NASM 2.10rc8 Online Documenation at\n *       http://www.nasm.us/xdoc/2.10rc8/html/nasmdoc0.html\n * Color scheme is taken from SciTE. Previous versions of this file\n * also used words from SciTE configuration file (based on NASM syntax)\n *\n * CHANGES\n * -------\n * 2011/10/07\n *   -  Rearranged instructions and registers into groups\n *   -  Updated to support the following extensions\n *          - CMOV, BMI1, BMI2, TBM, FSGSBASE\n *          - LZCNT, TZCNT, POPCNT, MOVBE, CRC32\n *          - MMX, MMX+, EMMX\n *          - 3dnow!, 3dnow!+, 3dnow! Geode, 3dnow! Prefetch\n *          - SSE, SSE2, SSE3, SSSE3, SSE4A, SSE4.1, SSE4.2\n *          - AVX, AVX2, XOP, FMA3, FMA4, CVT16\n *          - VMX, SVM\n *          - AES, PCLMULQDQ, Padlock, RDRAND\n *   -  Updated NASM macros and directives\n * 2010/07/01 (1.0.8.11)\n *   -  Added MMX/SSE/new x86-64 registers, MMX/SSE (up to 4.2) instructions\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n * 2004/11/27 (1.0.2)\n *   -  Added support for multiple object splitters\n * 2004/10/27 (1.0.1)\n *   -  Added support for URLs\n *   -  Added binary and hexadecimal regexps\n * 2004/08/05 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'ASM',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array(),\n    //Line address prefix suppression\n    'COMMENT_REGEXP' => array(2 => \"/^(?:[0-9a-f]{0,4}:)?[0-9a-f]{4}(?:[0-9a-f]{4})?/mi\"),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        /* General-Purpose */\n        1 => array(\n            /* BCD instructions */\n            'aaa','aad','aam','aas','daa','das',\n            /* Control flow instructions */\n            'ja','jae','jb','jbe','jc','je','jg','jge','jl','jle','jmp','jna',\n            'jnae','jnb','jnbe','jnc','jne','jng','jnge','jnl','jnle','jno','jnp','jns','jnz',\n            'jo','jp','jpe','jpo','js','jz','jcxz','jecxz','jrcxz','loop','loope','loopne',\n            'call','ret','enter','leave','syscall','sysenter','int','into',\n            /* Predicate instructions */\n            'seta','setae','setb','setbe','setc','sete','setg','setge','setl','setle','setna',\n            'setnae','setnb','setnbe','setnc','setne','setng','setnge','setnl','setnle','setno',\n            'setnp','setns','setnz','seto','setp','setpe','setpo','sets','setz','salc',\n            /* Conditional move instructions */\n            'cmovo','cmovno','cmovb','cmovc','cmovnae','cmovae','cmovnb','cmovnc','cmove','cmovz',\n            'cmovne','cmovnz','cmovbe','cmovna','cmova','cmovnbe','cmovs','cmovns','cmovp','cmovpe',\n            'cmovnp','cmovpo','cmovl','cmovnge','cmovge','cmovnl','cmovle','cmovng','cmovg','cmovnle',\n            /* ALU instructions */\n            'add','sub','adc','sbb','neg','cmp','inc','dec','and','or','xor','not','test',\n            'shl','shr','sal','sar','shld','shrd','rol','ror','rcl','rcr',\n            'cbw','cwd','cwde','cdq','cdqe','cqo','bsf','bsr','bt','btc','btr','bts',\n            'idiv','imul','div','mul','bswap','nop',\n            /* Memory instructions */\n            'lea','mov','movsx','movsxd','movzx','xlatb','bound','xchg','xadd','cmpxchg','cmpxchg8b','cmpxchg16b',\n            /* Stack instructions */\n            'push','pop','pusha','popa','pushad','popad','pushf','popf','pushfd','popfd','pushfq','popfq',\n            /* EFLAGS manipulations instructions */\n            'clc','cld','stc','std','cmc','lahf','sahf',\n            /* Prefix instructions */\n            'lock','rep','repe','repz','repne','repnz',\n            /* String instructions */\n            'cmps','cmpsb','cmpsw',/*'cmpsd',*/ 'cmpsq', /*CMPSD conflicts with the SSE2 instructions of the same name*/\n            'movs','movsb','movsw',/*'movsd',*/ 'movsq', /*MOVSD conflicts with the SSE2 instructions of the same name*/\n            'scas','scasb','scasw','scasd','scasq',\n            'stos','stosb','stosw','stosd','stosq',\n            'lods','lodsb','lodsw','lodsd','lodsq',\n            /* Information instructions */\n            'cpuid','rdtsc','rdtscp','rdpmc','xgetbv',\n            'sgdt','sidt','sldt','smsw','str','lar',\n            /* LWP instructions */\n            'llwpcb','slwpcb','lwpval','lwpins',\n            /* Instructions from miscellaneous extensions */\n            'crc32','popcnt','lzcnt','tzcnt','movbe','pclmulqdq','rdrand',\n            /* FSGSBASE instructions */\n            'rdfsbase','rdgsbase','wrfsbase','wrgsbase',\n            /* BMI1 instructions */\n            'andn','bextr','blsi','blsmk','blsr',\n            /* BMI2 instructions */\n            'bzhi','mulx','pdep','pext','rorx','sarx','shlx','shrx',\n            /* TBM instructions */\n            'blcfill','blci','blcic','blcmsk','blcs','blsfill','blsic','t1mskc','tzmsk',\n            /* Legacy instructions */\n            'arpl','ud2','lds','les','lfs','lgs','lss','lsl','verr','verw',\n            /* Privileged instructions */\n            'cli','sti','clts','hlt','rsm','in','insb','insw','insd',\n            'out','outsb','outsw','outsd','clflush','invd','invlpg','invpcid','wbinvd',\n            'iret','iretd','iretq','sysexit','sysret','lidt','lgdt','lldt','lmsw','ltr',\n            'monitor','mwait','rdmsr','wrmsr','swapgs',\n            'fxsave','fxsave64','fxrstor','fxrstor64',\n            'xsave','xsaveopt','xrstor','xsetbv','getsec',\n            /* VMX instructions */\n            'invept','invvpid','vmcall','vmclear','vmlaunch','vmresume',\n            'vmptrld','vmptrst','vmread','vmwrite','vmxoff','vmxon',\n            /* SVM (AMD-V) instructions */\n            'invlpga','skinit','clgi','stgi','vmload','vmsave','vmmcall','vmrun'\n            ),\n        /*FPU*/\n        2 => array(\n            'f2xm1','fabs','fadd','faddp','fbld','fbstp','fchs','fclex','fcom','fcomp','fcompp','fdecstp',\n            'fdisi','fdiv','fdivp','fdivr','fdivrp','feni','ffree','fiadd','ficom','ficomp','fidiv',\n            'fidivr','fild','fimul','fincstp','finit','fist','fistp','fisub','fisubr','fld','fld1',\n            'fldcw','fldenv','fldenvw','fldl2e','fldl2t','fldlg2','fldln2','fldpi','fldz','fmul',\n            'fmulp','fnclex','fndisi','fneni','fninit','fnop','fnsave','fnsavew','fnstcw','fnstenv',\n            'fnstenvw','fnstsw','fpatan','fprem','fptan','frndint','frstor','frstorw','fsave',\n            'fsavew','fscale','fsqrt','fst','fstcw','fstenv','fstenvw','fstp','fstsw','fsub','fsubp',\n            'fsubr','fsubrp','ftst','fwait','fxam','fxch','fxtract','fyl2x','fyl2xp1',\n            'fsetpm','fcos','fldenvd','fnsaved','fnstenvd','fprem1','frstord','fsaved','fsin','fsincos',\n            'fstenvd','fucom','fucomp','fucompp','ffreep',\n            /* FCMOV instructions */\n            'fcomi','fcomip','fucomi','fucomip',\n            'fcmovb','fcmove','fcmovbe','fcmovu','fcmovnb','fcmovne','fcmovnbe','fcmovnu',\n            /* SSE3 instructions */\n            'fisttp'\n            ),\n        /*SIMD*/\n        3 => array(\n            /* MMX instructions */\n            'movd','movq',\n            'paddb','paddw','paddd','paddsb','paddsw','paddusb','paddusw',\n            'psubb','psubw','psubd','psubsb','psubsw','psubusb','psubusw',\n            'pand','pandn','por','pxor',\n            'pcmpeqb','pcmpeqd','pcmpeqw','pcmpgtb','pcmpgtd','pcmpgtw',\n            'pmaddwd','pmulhw','pmullw',\n            'psllw','pslld','psllq','psrlw','psrld','psrlq','psraw','psrad',\n            'packuswb','packsswb','packssdw',\n            'punpcklbw','punpcklwd','punpckldq','punpckhbw','punpckhwd','punpckhdq',\n            'emms',\n            /* MMX+ instructions */\n            'pavgb','pavgw',\n            'pextrw','pinsrw','pmovmskb',\n            'pmaxsw','pmaxub','pminsw','pminub',\n            'pmulhuw','psadbw','pshufw',\n            'prefetchnta','prefetcht0','prefetcht1','prefetcht2',\n            'maskmovq','movntq','sfence',\n            /* EMMX instructions (only available on Cyrix MediaGXm) */\n            'paddsiw','psubsiw',\n            /*'pmulhrw',*/'pmachriw','pmulhriw', /* PMULHRW conflicts with the 3dnow! instruction of the same name */\n            'pmagw','pdistib','paveb',\n            'pmvzb','pmvnzb','pmvlzb','pmvgezb',\n            /* 3dnow! instructions! */\n            'pfacc','pfadd','pfsub','pfsubr','pfmul',\n            'pfcmpeq','pfcmpge','pfcmpgt',\n            'pfmax','pfmin',\n            'pfrcp','pfrcpit1','pfrcpit2','pfrsqit1','pfrsqrt',\n            'pi2fd','pf2id',\n            'pavgusb','pmulhrw',\n            'femms',\n            /* 3dnow!+ instructions */\n            'pfnacc','pfpnacc','pi2fw','pf2iw','pswapd',\n            /* 3dnow! Geode instructions */\n            'pfrsqrtv','pfrcpv',\n            /* 3dnow! Prefetch instructions */\n            'prefetch','prefetchw',\n            /* SSE instructions */\n            'addss','addps','subss','subps',\n            'mulss','mulps','divss','divps','sqrtss','sqrtps',\n            'rcpss','rcpps','rsqrtss','rsqrtps',\n            'maxss','maxps','minss','minps',\n            'cmpss','comiss','ucomiss','cmpps',\n            'cmpeqss','cmpltss','cmpless','cmpunordss','cmpneqss','cmpnltss','cmpnless','cmpordss',\n            'cmpeqps','cmpltps','cmpleps','cmpunordps','cmpneqps','cmpnltps','cmpnleps','cmpordps',\n            'andnps','andps','orps','xorps',\n            'cvtsi2ss','cvtss2si','cvttss2si',\n            'cvtpi2ps','cvtps2pi','cvttps2pi',\n            'movss','movlps','movhps','movlhps','movhlps','movaps','movups','movntps','movmskps',\n            'shufps','unpckhps','unpcklps',\n            'ldmxcsr','stmxcsr',\n            /* SSE2 instructions */\n            'addpd','addsd','subpd','subsd',\n            'mulsd','mulpd','divsd','divpd','sqrtsd','sqrtpd',\n            'maxsd','maxpd','minsd','minpd',\n            'cmpsd','comisd','ucomisd','cmppd',\n            'cmpeqsd','cmpltsd','cmplesd','cmpunordsd','cmpneqsd','cmpnltsd','cmpnlesd','cmpordsd',\n            'cmpeqpd','cmpltpd','cmplepd','cmpunordpd','cmpneqpd','cmpnltpd','cmpnlepd','cmpordpd',\n            'andnpd','andpd','orpd','xorpd',\n            'cvtsd2ss','cvtpd2ps','cvtss2sd','cvtps2pd',\n            'cvtdq2ps','cvtps2dq','cvttps2dq',\n            'cvtdq2pd','cvtpd2dq','cvttpd2dq',\n            'cvtsi2sd','cvtsd2si','cvttsd2si',\n            'cvtpi2pd','cvtpd2pi','cvttpd2pi',\n            'movsd','movlpd','movhpd','movapd','movupd','movntpd','movmskpd',\n            'shufpd','unpckhpd','unpcklpd',\n            'movnti','movdqa','movdqu','movntdq','maskmovdqu',\n            'movdq2q','movq2dq',\n            'paddq','psubq','pmuludq',\n            'pslldq','psrldq',\n            'punpcklqdq','punpckhqdq',\n            'pshufhw','pshuflw','pshufd',\n            'lfence','mfence',\n            /* SSE3 instructions */\n            'addsubps','addsubpd',\n            'haddps','haddpd','hsubps','hsubpd',\n            'movsldup','movshdup','movddup',\n            'lddqu',\n            /* SSSE3 instructions */\n            'psignb','psignw','psignd',\n            'pabsb','pabsw','pabsd',\n            'palignr','pshufb',\n            'pmulhrsw','pmaddubsw',\n            'phaddw','phaddd','phaddsw',\n            'phsubw','phsubd','phsubsw',\n            /* SSE4A instructions */\n            'extrq','insertq','movntsd','movntss',\n            /* SSE4.1 instructions */\n            'mpsadbw','phminposuw',\n            'pmuldq','pmulld',\n            'dpps','dppd',\n            'blendps','blendpd','blendvps','blendvpd','pblendvb','pblendw',\n            'pmaxsb','pmaxuw','pmaxsd','pmaxud','pminsb','pminuw','pminsd','pminud',\n            'roundps','roundss','roundpd','roundsd',\n            'insertps','pinsrb','pinsrd','pinsrq',\n            'extractps','pextrb','pextrd','pextrq',\n            'pmovsxbw','pmovsxbd','pmovsxbq','pmovsxwd','pmovsxwq','pmovsxdq',\n            'pmovzxbw','pmovzxbd','pmovzxbq','pmovzxwd','pmovzxwq','pmovzxdq',\n            'ptest',\n            'pcmpeqq',\n            'packusdw',\n            'movntdqa',\n            /* SSE4.2 instructions */\n            'pcmpgtq',\n            'pcmpestri','pcmpestrm','pcmpistri','pcmpistrm',\n            /* AES instructions */\n            'aesenc','aesenclast','aesdec','aesdeclast','aeskeygenassist','aesimc',\n            /* VIA Padlock instructions */\n            'xcryptcbc','xcryptcfb','xcryptctr','xcryptecb','xcryptofb',\n            'xsha1','xsha256','montmul','xstore',\n            /* AVX instructions */\n            'vaddss','vaddps','vaddsd','vaddpd','vsubss','vsubps','vsubsd','vsubpd',\n            'vaddsubps','vaddsubpd',\n            'vhaddps','vhaddpd','vhsubps','vhsubpd',\n            'vmulss','vmulps','vmulsd','vmulpd',\n            'vmaxss','vmaxps','vmaxsd','vmaxpd','vminss','vminps','vminsd','vminpd',\n            'vandps','vandpd','vandnps','vandnpd','vorps','vorpd','vxorps','vxorpd',\n            'vblendps','vblendpd','vblendvps','vblendvpd',\n            'vcmpss','vcomiss','vucomiss','vcmpsd','vcomisd','vucomisd','vcmpps','vcmppd',\n            'vcmpeqss','vcmpltss','vcmpless','vcmpunordss','vcmpneqss','vcmpnltss','vcmpnless','vcmpordss',\n            'vcmpeq_uqss','vcmpngess','vcmpngtss','vcmpfalsess','vcmpneq_oqss','vcmpgess','vcmpgtss','vcmptruess',\n            'vcmpeq_osss','vcmplt_oqss','vcmple_oqss','vcmpunord_sss','vcmpneq_usss','vcmpnlt_uqss','vcmpnle_uqss','vcmpord_sss',\n            'vcmpeq_usss','vcmpnge_uqss','vcmpngt_uqss','vcmpfalse_osss','vcmpneq_osss','vcmpge_oqss','vcmpgt_oqss','vcmptrue_usss',\n            'vcmpeqps','vcmpltps','vcmpleps','vcmpunordps','vcmpneqps','vcmpnltps','vcmpnleps','vcmpordps',\n            'vcmpeq_uqps','vcmpngeps','vcmpngtps','vcmpfalseps','vcmpneq_oqps','vcmpgeps','vcmpgtps','vcmptrueps',\n            'vcmpeq_osps','vcmplt_oqps','vcmple_oqps','vcmpunord_sps','vcmpneq_usps','vcmpnlt_uqps','vcmpnle_uqps','vcmpord_sps',\n            'vcmpeq_usps','vcmpnge_uqps','vcmpngt_uqps','vcmpfalse_osps','vcmpneq_osps','vcmpge_oqps','vcmpgt_oqps','vcmptrue_usps',\n            'vcmpeqsd','vcmpltsd','vcmplesd','vcmpunordsd','vcmpneqsd','vcmpnltsd','vcmpnlesd','vcmpordsd',\n            'vcmpeq_uqsd','vcmpngesd','vcmpngtsd','vcmpfalsesd','vcmpneq_oqsd','vcmpgesd','vcmpgtsd','vcmptruesd',\n            'vcmpeq_ossd','vcmplt_oqsd','vcmple_oqsd','vcmpunord_ssd','vcmpneq_ussd','vcmpnlt_uqsd','vcmpnle_uqsd','vcmpord_ssd',\n            'vcmpeq_ussd','vcmpnge_uqsd','vcmpngt_uqsd','vcmpfalse_ossd','vcmpneq_ossd','vcmpge_oqsd','vcmpgt_oqsd','vcmptrue_ussd',\n            'vcmpeqpd','vcmpltpd','vcmplepd','vcmpunordpd','vcmpneqpd','vcmpnltpd','vcmpnlepd','vcmpordpd',\n            'vcmpeq_uqpd','vcmpngepd','vcmpngtpd','vcmpfalsepd','vcmpneq_oqpd','vcmpgepd','vcmpgtpd','vcmptruepd',\n            'vcmpeq_ospd','vcmplt_oqpd','vcmple_oqpd','vcmpunord_spd','vcmpneq_uspd','vcmpnlt_uqpd','vcmpnle_uqpd','vcmpord_spd',\n            'vcmpeq_uspd','vcmpnge_uqpd','vcmpngt_uqpd','vcmpfalse_ospd','vcmpneq_ospd','vcmpge_oqpd','vcmpgt_oqpd','vcmptrue_uspd',\n            'vcvtsd2ss','vcvtpd2ps','vcvtss2sd','vcvtps2pd',\n            'vcvtsi2ss','vcvtss2si','vcvttss2si',\n            'vcvtpi2ps','vcvtps2pi','vcvttps2pi',\n            'vcvtdq2ps','vcvtps2dq','vcvttps2dq',\n            'vcvtdq2pd','vcvtpd2dq','vcvttpd2dq',\n            'vcvtsi2sd','vcvtsd2si','vcvttsd2si',\n            'vcvtpi2pd','vcvtpd2pi','vcvttpd2pi',\n            'vdivss','vdivps','vdivsd','vdivpd','vsqrtss','vsqrtps','vsqrtsd','vsqrtpd',\n            'vdpps','vdppd',\n            'vmaskmovps','vmaskmovpd',\n            'vmovss','vmovsd','vmovaps','vmovapd','vmovups','vmovupd','vmovntps','vmovntpd',\n            'vmovhlps','vmovlhps','vmovlps','vmovlpd','vmovhps','vmovhpd',\n            'vmovsldup','vmovshdup','vmovddup',\n            'vmovmskps','vmovmskpd',\n            'vroundss','vroundps','vroundsd','vroundpd',\n            'vrcpss','vrcpps','vrsqrtss','vrsqrtps',\n            'vunpcklps','vunpckhps','vunpcklpd','vunpckhpd',\n            'vbroadcastss','vbroadcastsd','vbroadcastf128',\n            'vextractps','vinsertps','vextractf128','vinsertf128',\n            'vshufps','vshufpd','vpermilps','vpermilpd','vperm2f128',\n            'vtestps','vtestpd',\n            'vpaddb','vpaddusb','vpaddsb','vpaddw','vpaddusw','vpaddsw','vpaddd','vpaddq',\n            'vpsubb','vpsubusb','vpsubsb','vpsubw','vpsubusw','vpsubsw','vpsubd','vpsubq',\n            'vphaddw','vphaddsw','vphaddd','vphsubw','vphsubsw','vphsubd',\n            'vpsllw','vpslld','vpsllq','vpsrlw','vpsrld','vpsrlq','vpsraw','vpsrad',\n            'vpand','vpandn','vpor','vpxor',\n            'vpblendwb','vpblendw',\n            'vpsignb','vpsignw','vpsignd',\n            'vpavgb','vpavgw',\n            'vpabsb','vpabsw','vpabsd',\n            'vmovd','vmovq','vmovdqa','vmovdqu','vlddqu','vmovntdq','vmovntdqa','vmaskmovdqu',\n            'vpmovsxbw','vpmovsxbd','vpmovsxbq','vpmovsxwd','vpmovsxwq','vpmovsxdq',\n            'vpmovzxbw','vpmovzxbd','vpmovzxbq','vpmovzxwd','vpmovzxwq','vpmovzxdq',\n            'vpackuswb','vpacksswb','vpackusdw','vpackssdw',\n            'vpcmpeqb','vpcmpeqw','vpcmpeqd','vpcmpeqq','vpcmpgtb','vpcmpgtw','vpcmpgtd','vpcmpgtq',\n            'vpmaddubsw','vpmaddwd',\n            'vpmullw','vpmulhuw','vpmulhw','vpmulhrsw','vpmulld','vpmuludq','vpmuldq',\n            'vpmaxub','vpmaxsb','vpmaxuw','vpmaxsw','vpmaxud','vpmaxsd',\n            'vpminub','vpminsb','vpminuw','vpminsw','vpminud','vpminsd',\n            'vpmovmskb','vptest',\n            'vpunpcklbw','vpunpcklwd','vpunpckldq','vpunpcklqdq',\n            'vpunpckhbw','vpunpckhwd','vpunpckhdq','vpunpckhqdq',\n            'vpslldq','vpsrldq','vpalignr',\n            'vpshufb','vpshuflw','vpshufhw','vpshufd',\n            'vpextrb','vpextrw','vpextrd','vpextrq','vpinsrb','vpinsrw','vpinsrd','vpinsrq',\n            'vpsadbw','vmpsadbw','vphminposuw',\n            'vpcmpestri','vpcmpestrm','vpcmpistri','vpcmpistrm',\n            'vpclmulqdq','vaesenc','vaesenclast','vaesdec','vaesdeclast','vaeskeygenassist','vaesimc',\n            'vldmxcsr','vstmxcsr','vzeroall','vzeroupper',\n            /* AVX2 instructions */\n            'vbroadcasti128','vpbroadcastb','vpbroadcastw','vpbroadcastd','vpbroadcastq',\n            'vpblendd',\n            'vpermd','vpermq','vperm2i128',\n            'vextracti128','vinserti128',\n            'vpmaskmovd','vpmaskmovq',\n            'vpsllvd','vpsllvq','vpsravd','vpsrlvd',\n            'vpgatherdd','vpgatherqd','vgatherdq','vgatherqq',\n            'vpermps','vpermpd',\n            'vgatherdpd','vgatherqpd','vgatherdps','vgatherqps',\n            /* XOP instructions */\n            'vfrczss','vfrczps','vfrczsd','vfrczpd',\n            'vpermil2ps','vperlil2pd',\n            'vpcomub','vpcomb','vpcomuw','vpcomw','vpcomud','vpcomd','vpcomuq','vpcomq',\n            'vphaddubw','vphaddbw','vphaddubd','vphaddbd','vphaddubq','vphaddbq',\n            'vphadduwd','vphaddwd','vphadduwq','vphaddwq','vphaddudq','vphadddq',\n            'vphsubbw','vphsubwd','vphsubdq',\n            'vpmacsdd','vpmacssdd','vpmacsdql','vpmacssdql','vpmacsdqh','vpmacssdqh',\n            'vpmacsww','vpmacssww','vpmacswd','vpmacsswd',\n            'vpmadcswd','vpmadcsswd',\n            'vpcmov','vpperm',\n            'vprotb','vprotw','vprotd','vprotq',\n            'vpshab','vpshaw','vpshad','vpshaq',\n            'vpshlb','vpshlw','vpshld','vpshlq',\n            /* CVT16 instructions */\n            'vcvtph2ps','vcvtps2ph',\n            /* FMA4 instructions */\n            'vfmaddss','vfmaddps','vfmaddsd','vfmaddpd',\n            'vfmsubss','vfmsubps','vfmsubsd','vfmsubpd',\n            'vnfmaddss','vnfmaddps','vnfmaddsd','vnfmaddpd',\n            'vnfmsubss','vnfmsubps','vnfmsubsd','vnfmsubpd',\n            'vfmaddsubps','vfmaddsubpd','vfmsubaddps','vfmsubaddpd',\n            /* FMA3 instructions */\n            'vfmadd132ss','vfmadd213ss','vfmadd231ss',\n            'vfmadd132ps','vfmadd213ps','vfmadd231ps',\n            'vfmadd132sd','vfmadd213sd','vfmadd231sd',\n            'vfmadd132pd','vfmadd213pd','vfmadd231pd',\n            'vfmaddsub132ps','vfmaddsub213ps','vfmaddsub231ps',\n            'vfmaddsub132pd','vfmaddsub213pd','vfmaddsub231pd',\n            'vfmsubadd132ps','vfmsubadd213ps','vfmsubadd231ps',\n            'vfmsubadd132pd','vfmsubadd213pd','vfmsubadd231pd',\n            'vfmsub132ss','vfmsub213ss','vfmsub231ss',\n            'vfmsub132ps','vfmsub213ps','vfmsub231ps',\n            'vfmsub132sd','vfmsub213sd','vfmsub231sd',\n            'vfmsub132pd','vfmsub213pd','vfmsub231pd',\n            'vfnmadd132ss','vfnmadd213ss','vfnmadd231ss',\n            'vfnmadd132ps','vfnmadd213ps','vfnmadd231ps',\n            'vfnmadd132sd','vfnmadd213sd','vfnmadd231sd',\n            'vfnmadd132pd','vfnmadd213pd','vfnmadd231pd',\n            'vfnmsub132ss','vfnmsub213ss','vfnmsub231ss',\n            'vfnmsub132ps','vfnmsub213ps','vfnmsub231ps',\n            'vfnmsub132sd','vfnmsub213sd','vfnmsub231sd',\n            'vfnmsub132pd','vfnmsub213pd','vfnmsub231pd'\n            ),\n        /*registers*/\n        4 => array(\n            /* General-Purpose Registers */\n            'al','ah','bl','bh','cl','ch','dl','dh','sil','dil','bpl','spl',\n            'r8b','r9b','r10b','r11b','r12b','r13b','r14b','r15b',\n            'ax','bx','cx','dx','si','di','bp','sp',\n            'r8w','r9w','r10w','r11w','r12w','r13w','r14w','r15w',\n            'eax','ebx','ecx','edx','esi','edi','ebp','esp',\n            'r8d','r9d','r10d','r11d','r12d','r13d','r14d','r15d',\n            'rax','rcx','rdx','rbx','rsp','rbp','rsi','rdi',\n            'r8','r9','r10','r11','r12','r13','r14','r15',\n            /* Debug Registers */\n            'dr0','dr1','dr2','dr3','dr6','dr7',\n            /* Control Registers */\n            'cr0','cr2','cr3','cr4','cr8',\n            /* Test Registers (Supported on Intel 486 only) */\n            'tr3','tr4','tr5','tr6','tr7',\n            /* Segment Registers */\n            'cs','ds','es','fs','gs','ss',\n            /* FPU Registers */\n            'st','st0','st1','st2','st3','st4','st5','st6','st7',\n            /* MMX Registers */\n            'mm0','mm1','mm2','mm3','mm4','mm5','mm6','mm7',\n            /* SSE Registers */\n            'xmm0','xmm1','xmm2','xmm3','xmm4','xmm5','xmm6','xmm7',\n            'xmm8','xmm9','xmm10','xmm11','xmm12','xmm13','xmm14','xmm15',\n            /* AVX Registers */\n            'ymm0','ymm1','ymm2','ymm3','ymm4','ymm5','ymm6','ymm7',\n            'ymm8','ymm9','ymm10','ymm11','ymm12','ymm13','ymm14','ymm15'\n            ),\n        /*Directive*/\n        5 => array(\n            'db','dw','dd','dq','dt','do','dy',\n            'resb','resw','resd','resq','rest','reso','resy','incbin','equ','times','safeseh',\n            '__utf16__','__utf32__',\n            'default','cpu','float','start','imagebase','osabi',\n            '..start','..imagebase','..gotpc','..gotoff','..gottpoff','..got','..plt','..sym','..tlsie',\n            'section','segment','__sect__','group','absolute',\n            '.bss','.comment','.data','.lbss','.ldata','.lrodata','.rdata','.rodata','.tbss','.tdata','.text',\n            'alloc','bss','code','exec','data','noalloc','nobits','noexec','nowrite','progbits','rdata','tls','write',\n            'private','public','common','stack','overlay','class',\n            'extern','global','import','export',\n            '%define','%idefine','%xdefine','%ixdefine','%assign','%undef',\n            '%defstr','%idefstr','%deftok','%ideftok',\n            '%strcat','%strlen','%substr',\n            '%macro','%imacro','%rmacro','%exitmacro','%endmacro','%unmacro',\n            '%if','%ifn','%elif','%elifn','%else','%endif',\n            '%ifdef','%ifndef','%elifdef','%elifndef',\n            '%ifmacro','%ifnmacro','%elifmacro','%elifnmacro',\n            '%ifctx','%ifnctx','%elifctx','%elifnctx',\n            '%ifidn','%ifnidn','%elifidn','%elifnidn',\n            '%ifidni','%ifnidni','%elifidni','%elifnidni',\n            '%ifid','%ifnid','%elifid','%elifnid',\n            '%ifnum','%ifnnum','%elifnum','%elifnnum',\n            '%ifstr','%ifnstr','%elifstr','%elifnstr',\n            '%iftoken','%ifntoken','%eliftoken','%elifntoken',\n            '%ifempty','%ifnempty','%elifempty','%elifnempty',\n            '%ifenv','%ifnenv','%elifenv','%elifnenv',\n            '%rep','%exitrep','%endrep',\n            '%while','%exitwhile','%endwhile',\n            '%include','%pathsearch','%depend','%use',\n            '%push','%pop','%repl','%arg','%local','%stacksize','flat','flat64','large','small',\n            '%error','%warning','%fatal',\n            '%00','.nolist','%rotate','%line','%!','%final','%clear',\n            'struc','endstruc','istruc','at','iend',\n            'align','alignb','sectalign',\n            'bits','use16','use32','use64',\n            '__nasm_major__','__nasm_minor__','__nasm_subminor__','___nasm_patchlevel__',\n            '__nasm_version_id__','__nasm_ver__',\n            '__file__','__line__','__pass__','__bits__','__output_format__',\n            '__date__','__time__','__date_num__','__time_num__','__posix_time__',\n            '__utc_date__','__utc_time__','__utc_date_num__','__utc_time_num__',\n            '__float_daz__','__float_round__','__float__',\n            /* Keywords from standard packages */\n            '__use_altreg__',\n            '__use_smartalign__','smartalign','__alignmode__',\n            '__use_fp__','__infinity__','__nan__','__qnan__','__snan__',\n            '__float8__','__float16__','__float32__','__float64__','__float80m__','__float80e__','__float128l__','__float128h__'\n            ),\n        /*Operands*/\n        6 => array(\n            'a16','a32','a64','o16','o32','o64','strict',\n            'byte','word','dword','qword','tword','oword','yword','nosplit',\n            '%0','%1','%2','%3','%4','%5','%6','%7','%8','%9',\n            'abs','rel',\n            'seg','wrt'\n            )\n        ),\n    'SYMBOLS' => array(\n        1 => array(\n                '[', ']', '(', ')',\n                '+', '-', '*', '/', '%',\n                '.', ',', ';', ':'\n            ),\n        2 => array(\n                '$','$$','%+','%?','%??'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #00007f; font-weight: bold;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #b00040;',\n            4 => 'color: #46aa03; font-weight: bold;',\n            5 => 'color: #0000ff; font-weight: bold;',\n            6 => 'color: #0000ff; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #adadad; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900; font-weight: bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #7f007f;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            1 => 'color: #339933;',\n            2 => 'color: #0000ff; font-weight: bold;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => ''\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_BIN_PREFIX_PERCENT |\n        GESHI_NUMBER_BIN_SUFFIX |\n        GESHI_NUMBER_HEX_PREFIX |\n        GESHI_NUMBER_HEX_SUFFIX |\n        GESHI_NUMBER_OCT_SUFFIX |\n        GESHI_NUMBER_INT_BASIC |\n        GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F |\n        GESHI_NUMBER_FLT_SCI_ZERO,\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 8,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\|\\#>|^])\",\n            'DISALLOWED_AFTER' => \"(?![a-zA-Z0-9_<\\|%])\"\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/asp.php",
    "content": "<?php\n/*************************************************************************************\n * asp.php\n * --------\n * Author: Amit Gupta (http://blog.igeek.info/)\n * Copyright: (c) 2004 Amit Gupta (http://blog.igeek.info/), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/08/13\n *\n * ASP language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2005/12/30 (1.0.3)\n *   -  Strings only delimited by \", comments by '\n * 2004/11/27 (1.0.2)\n *   -  Added support for multiple object splitters\n * 2004/10/27 (1.0.1)\n *   -  Added support for URLs\n * 2004/08/13 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n * * Include all the functions, keywords etc that I have missed\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'ASP',\n    'COMMENT_SINGLE' => array(1 => \"'\", 2 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'include', 'file', 'Const', 'Dim', 'Option', 'Explicit', 'Implicit', 'Set', 'Select', 'ReDim', 'Preserve',\n            'ByVal', 'ByRef', 'End', 'Private', 'Public', 'If', 'Then', 'Else', 'ElseIf', 'Case', 'With', 'NOT',\n            'While', 'Wend', 'For', 'Loop', 'Do', 'Request', 'Response', 'Server', 'ADODB', 'Session', 'Application',\n            'Each', 'In', 'Get', 'Next', 'INT', 'CINT', 'CBOOL', 'CDATE', 'CBYTE', 'CCUR', 'CDBL', 'CLNG', 'CSNG',\n            'CSTR', 'Fix', 'Is', 'Sgn', 'String', 'Boolean', 'Currency', 'Me', 'Single', 'Long', 'Integer', 'Byte',\n            'Variant', 'Double', 'To', 'Let', 'Xor', 'Resume', 'On', 'Error', 'Imp', 'GoTo', 'Call', 'Global'\n            ),\n        2 => array(\n            'Null', 'Nothing', 'And',\n            'False',\n            'True', 'var', 'Or', 'BOF', 'EOF', 'xor',\n            'Function', 'Class', 'New', 'Sub'\n            ),\n        3 => array(\n            'CreateObject', 'Write', 'Redirect', 'Cookies', 'BinaryRead', 'ClientCertificate', 'Form', 'QueryString',\n            'ServerVariables', 'TotalBytes', 'AddHeader', 'AppendToLog', 'BinaryWrite', 'Buffer', 'CacheControl',\n            'Charset', 'Clear', 'ContentType', 'End()', 'Expires', 'ExpiresAbsolute', 'Flush()', 'IsClientConnected',\n            'PICS', 'Status', 'Connection', 'Recordset', 'Execute', 'Abandon', 'Lock', 'UnLock', 'Command', 'Fields',\n            'Properties', 'Property', 'Send', 'Replace', 'InStr', 'TRIM', 'NOW', 'Day', 'Month', 'Hour', 'Minute', 'Second',\n            'Year', 'MonthName', 'LCase', 'UCase', 'Abs', 'Array', 'As', 'LEN', 'MoveFirst', 'MoveLast', 'MovePrevious',\n            'MoveNext', 'LBound', 'UBound', 'Transfer', 'Open', 'Close', 'MapPath', 'FileExists', 'OpenTextFile', 'ReadAll'\n            )\n        ),\n    'SYMBOLS' => array(\n        1 => array(\n            '<%', '%>'\n            ),\n        0 => array(\n            '(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>',\n            ';', ':', '?', '='),\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #990099; font-weight: bold;',\n            2 => 'color: #0000ff; font-weight: bold;',\n            3 => 'color: #330066;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000;',\n            2 => 'color: #ff6600;',\n            'MULTI' => 'color: #008000;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #006600; font-weight:bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #cc0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #800000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #9900cc;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #006600; font-weight: bold;',\n            1 => 'color: #000000; font-weight: bold;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            3 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        0 => array(\n            '<%' => '%>'\n            ),\n        1 => array(\n            '<script language=\"vbscript\" runat=\"server\">' => '</script>'\n            ),\n        2 => array(\n            '<script language=\"javascript\" runat=\"server\">' => '</script>'\n            ),\n        3 => \"/(?P<start><%=?)(?:\\\"[^\\\"]*?\\\"|\\/\\*(?!\\*\\/).*?\\*\\/|.)*?(?P<end>%>|\\Z)/sm\"\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        1 => true,\n        2 => true,\n        3 => true\n        )\n);\n"
  },
  {
    "path": "includes/geshi/asymptote.php",
    "content": "<?php\n/*************************************************************************************\n * asymptote.php\n * -------------\n * Author: Manuel Yguel (manuel.yguel.robotics@gmail.com)\n * Copyright: (c) 2012 Manuel Yguel (http://manuelyguel.eu)\n * Release Version: 1.0.9.1\n * Date Started: 2012/05/24\n *\n * asymptote language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2012/05/24 (1.0.0.0)\n *  -  First Release\n *\n * TODO (updated 2012/05/24)\n * -------------------------\n * * Split to several files - php4, php5 etc\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n * ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'asymptote',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Multiline-continued single-line comments\n        1 => '/\\/\\/(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //Multiline-continued preprocessor define\n        2 => '/#(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m'\n    ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[\\\\\\\\abfnrtv\\'\\\"?\\n]#i\",\n        //Hexadecimal Char Specs\n        2 => \"#\\\\\\\\x[\\da-fA-F]{2}#\",\n        //Hexadecimal Char Specs\n        3 => \"#\\\\\\\\u[\\da-fA-F]{4}#\",\n        //Hexadecimal Char Specs\n        4 => \"#\\\\\\\\U[\\da-fA-F]{8}#\",\n        //Octal Char Specs\n        5 => \"#\\\\\\\\[0-7]{1,3}#\"\n    ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'and',\n            'controls',\n            'tension',\n            'atleast',\n            'curl',\n            'if',\n            'else',\n            'while',\n            'for',\n            'do',\n            'return',\n            'break',\n            'continue',\n            'struct',\n            'typedef',\n            'new',\n            'access',\n            'import',\n            'unravel',\n            'from',\n            'include',\n            'quote',\n            'static',\n            'public',\n            'private',\n            'restricted',\n            'this',\n            'explicit',\n            'true',\n            'false',\n            'null',\n            'cycle',\n            'newframe',\n            'operator'\n        ),\n        2 => array(\n            'Braid',\n            'FitResult',\n            'Label',\n            'Legend',\n            'Segment',\n            'Solution',\n            'TreeNode',\n            'abscissa',\n            'arrowhead',\n            'binarytree',\n            'binarytreeNode',\n            'block',\n            'bool',\n            'bool3',\n            'bounds',\n            'bqe',\n            'circle',\n            'conic',\n            'coord',\n            'coordsys',\n            'cputime',\n            'ellipse',\n            'file',\n            'filltype',\n            'frame',\n            'grid3',\n            'guide',\n            'horner',\n            'hsv',\n            'hyperbola',\n            'indexedTransform',\n            'int',\n            'inversion',\n            'key',\n            'light',\n            'line',\n            'linefit',\n            'marginT',\n            'marker',\n            'mass',\n            'object',\n            'pair',\n            'parabola',\n            'path',\n            'path3',\n            'pen',\n            'picture',\n            'point',\n            'position',\n            'projection',\n            'real',\n            'revolution',\n            'scaleT',\n            'scientific',\n            'segment',\n            'side',\n            'slice',\n            'solution',\n            'splitface',\n            'string',\n            'surface',\n            'tensionSpecifier',\n            'ticklocate',\n            'ticksgridT',\n            'tickvalues',\n            'transform',\n            'transformation',\n            'tree',\n            'triangle',\n            'trilinear',\n            'triple',\n            'vector',\n            'vertex',\n            'void'),\n\n        3 => array(\n            'AND',\n            'Arc',\n            'ArcArrow',\n            'ArcArrows',\n            'Arrow',\n            'Arrows',\n            'Automatic',\n            'AvantGarde',\n            'BBox',\n            'BWRainbow',\n            'BWRainbow2',\n            'Bar',\n            'Bars',\n            'BeginArcArrow',\n            'BeginArrow',\n            'BeginBar',\n            'BeginDotMargin',\n            'BeginMargin',\n            'BeginPenMargin',\n            'Blank',\n            'Bookman',\n            'Bottom',\n            'BottomTop',\n            'Bounds',\n            'Break',\n            'Broken',\n            'BrokenLog',\n            'CLZ',\n            'CTZ',\n            'Ceil',\n            'Circle',\n            'CircleBarIntervalMarker',\n            'Cos',\n            'Courier',\n            'CrossIntervalMarker',\n            'DOSendl',\n            'DOSnewl',\n            'DefaultFormat',\n            'DefaultLogFormat',\n            'Degrees',\n            'Dir',\n            'DotMargin',\n            'DotMargins',\n            'Dotted',\n            'Draw',\n            'Drawline',\n            'Embed',\n            'EndArcArrow',\n            'EndArrow',\n            'EndBar',\n            'EndDotMargin',\n            'EndMargin',\n            'EndPenMargin',\n            'Fill',\n            'FillDraw',\n            'Floor',\n            'Format',\n            'Full',\n            'Gaussian',\n            'Gaussrand',\n            'Gaussrandpair',\n            'Gradient',\n            'Grayscale',\n            'Helvetica',\n            'Hermite',\n            'HookHead',\n            'InOutTicks',\n            'InTicks',\n            'Jn',\n            'Landscape',\n            'Left',\n            'LeftRight',\n            'LeftTicks',\n            'Linear',\n            'Link',\n            'Log',\n            'LogFormat',\n            'Margin',\n            'Margins',\n            'Mark',\n            'MidArcArrow',\n            'MidArrow',\n            'NOT',\n            'NewCenturySchoolBook',\n            'NoBox',\n            'NoMargin',\n            'NoModifier',\n            'NoTicks',\n            'NoTicks3',\n            'NoZero',\n            'NoZeroFormat',\n            'None',\n            'OR',\n            'OmitFormat',\n            'OmitTick',\n            'OmitTickInterval',\n            'OmitTickIntervals',\n            'OutTicks',\n            'Ox',\n            'Oy',\n            'Palatino',\n            'PaletteTicks',\n            'Pen',\n            'PenMargin',\n            'PenMargins',\n            'Pentype',\n            'Portrait',\n            'RadialShade',\n            'RadialShadeDraw',\n            'Rainbow',\n            'Range',\n            'Relative',\n            'Right',\n            'RightTicks',\n            'Rotate',\n            'Round',\n            'SQR',\n            'Scale',\n            'ScaleX',\n            'ScaleY',\n            'ScaleZ',\n            'Seascape',\n            'Shift',\n            'Sin',\n            'Slant',\n            'Spline',\n            'StickIntervalMarker',\n            'Straight',\n            'Symbol',\n            'Tan',\n            'TeXify',\n            'Ticks',\n            'Ticks3',\n            'TildeIntervalMarker',\n            'TimesRoman',\n            'Top',\n            'TrueMargin',\n            'UnFill',\n            'UpsideDown',\n            'Wheel',\n            'X',\n            'XEquals',\n            'XOR',\n            'XY',\n            'XYEquals',\n            'XYZero',\n            'XYgrid',\n            'XZEquals',\n            'XZZero',\n            'XZero',\n            'XZgrid',\n            'Y',\n            'YEquals',\n            'YXgrid',\n            'YZ',\n            'YZEquals',\n            'YZZero',\n            'YZero',\n            'YZgrid',\n            'Yn',\n            'Z',\n            'ZX',\n            'ZXgrid',\n            'ZYgrid',\n            'ZapfChancery',\n            'ZapfDingbats',\n            '_begingroup3',\n            '_cputime',\n            '_draw',\n            '_eval',\n            '_image',\n            '_labelpath',\n            '_projection',\n            '_strokepath',\n            '_texpath',\n            'aCos',\n            'aSin',\n            'aTan',\n            'abort',\n            'abs',\n            'accel',\n            'acos',\n            'acosh',\n            'acot',\n            'acsc',\n            'activatequote',\n            'add',\n            'addArrow',\n            'addMargins',\n            'addSaveFunction',\n            'addpenarc',\n            'addpenline',\n            'adjust',\n            'alias',\n            'align',\n            'all',\n            'altitude',\n            'angabscissa',\n            'angle',\n            'angpoint',\n            'animate',\n            'annotate',\n            'anticomplementary',\n            'antipedal',\n            'apply',\n            'approximate',\n            'arc',\n            'arcarrowsize',\n            'arccircle',\n            'arcdir',\n            'arcfromcenter',\n            'arcfromfocus',\n            'arclength',\n            'arcnodesnumber',\n            'arcpoint',\n            'arcsubtended',\n            'arcsubtendedcenter',\n            'arctime',\n            'arctopath',\n            'array',\n            'arrow',\n            'arrow2',\n            'arrowbase',\n            'arrowbasepoints',\n            'arrowsize',\n            'asec',\n            'asin',\n            'asinh',\n            'ask',\n            'assert',\n            'asy',\n            'asycode',\n            'asydir',\n            'asyfigure',\n            'asyfilecode',\n            'asyinclude',\n            'asywrite',\n            'atan',\n            'atan2',\n            'atanh',\n            'atbreakpoint',\n            'atexit',\n            'attach',\n            'attract',\n            'atupdate',\n            'autoformat',\n            'autoscale',\n            'autoscale3',\n            'axes',\n            'axes3',\n            'axialshade',\n            'axis',\n            'axiscoverage',\n            'azimuth',\n            'babel',\n            'bangles',\n            'bar',\n            'barmarksize',\n            'barsize',\n            'baseline',\n            'bbox',\n            'beep',\n            'begin',\n            'beginclip',\n            'begingroup',\n            'beginpoint',\n            'between',\n            'bevel',\n            'bezier',\n            'bezierP',\n            'bezierPP',\n            'bezierPPP',\n            'bezulate',\n            'bibliography',\n            'bibliographystyle',\n            'binomial',\n            'binput',\n            'bins',\n            'bisector',\n            'bisectorpoint',\n            'bispline',\n            'blend',\n            'blockconnector',\n            'boutput',\n            'box',\n            'breakpoint',\n            'breakpoints',\n            'brick',\n            'buildRestoreDefaults',\n            'buildRestoreThunk',\n            'buildcycle',\n            'bulletcolor',\n            'byte',\n            'calculateScaling',\n            'canonical',\n            'canonicalcartesiansystem',\n            'cartesiansystem',\n            'case1',\n            'case2',\n            'case3',\n            'case4',\n            'cbrt',\n            'cd',\n            'ceil',\n            'center',\n            'centerToFocus',\n            'centroid',\n            'cevian',\n            'change2',\n            'changecoordsys',\n            'checkSegment',\n            'checkconditionlength',\n            'checker',\n            'checkincreasing',\n            'checklengths',\n            'checkposition',\n            'checktriangle',\n            'choose',\n            'circlebarframe',\n            'circlemarkradius',\n            'circlenodesnumber',\n            'circumcenter',\n            'circumcircle',\n            'clamped',\n            'clear',\n            'clip',\n            'clipdraw',\n            'close',\n            'cmyk',\n            'code',\n            'colatitude',\n            'collect',\n            'collinear',\n            'color',\n            'colorless',\n            'colors',\n            'colorspace',\n            'comma',\n            'compassmark',\n            'complement',\n            'complementary',\n            'concat',\n            'concurrent',\n            'cone',\n            'conicnodesnumber',\n            'conictype',\n            'conj',\n            'connect',\n            'connected',\n            'connectedindex',\n            'containmentTree',\n            'contains',\n            'contour',\n            'contour3',\n            'contouredges',\n            'controlSpecifier',\n            'convert',\n            'coordinates',\n            'copy',\n            'copyPairOrTriple',\n            'cos',\n            'cosh',\n            'cot',\n            'countIntersections',\n            'crop',\n            'cropcode',\n            'cross',\n            'crossframe',\n            'crosshatch',\n            'crossmarksize',\n            'csc',\n            'cubicroots',\n            'curabscissa',\n            'curlSpecifier',\n            'curpoint',\n            'currentarrow',\n            'currentexitfunction',\n            'currentmomarrow',\n            'currentpolarconicroutine',\n            'curve',\n            'cut',\n            'cutafter',\n            'cutbefore',\n            'cyclic',\n            'cylinder',\n            'deactivatequote',\n            'debugger',\n            'deconstruct',\n            'defaultdir',\n            'defined',\n            'degenerate',\n            'degrees',\n            'delete',\n            'deletepreamble',\n            'determinant',\n            'diagonal',\n            'diamond',\n            'diffdiv',\n            'dir',\n            'dirSpecifier',\n            'dirtime',\n            'display',\n            'distance',\n            'divisors',\n            'do_overpaint',\n            'dotsize',\n            'downcase',\n            'draw',\n            'drawAll',\n            'drawDoubleLine',\n            'drawFermion',\n            'drawGhost',\n            'drawGluon',\n            'drawMomArrow',\n            'drawPRCcylinder',\n            'drawPRCdisk',\n            'drawPRCsphere',\n            'drawPRCtube',\n            'drawPhoton',\n            'drawScalar',\n            'drawVertex',\n            'drawVertexBox',\n            'drawVertexBoxO',\n            'drawVertexBoxX',\n            'drawVertexO',\n            'drawVertexOX',\n            'drawVertexTriangle',\n            'drawVertexTriangleO',\n            'drawVertexX',\n            'drawarrow',\n            'drawarrow2',\n            'drawline',\n            'drawpixel',\n            'drawtick',\n            'duplicate',\n            'elle',\n            'ellipsenodesnumber',\n            'embed',\n            'embed3',\n            'empty',\n            'enclose',\n            'end',\n            'endScript',\n            'endclip',\n            'endgroup',\n            'endgroup3',\n            'endl',\n            'endpoint',\n            'endpoints',\n            'eof',\n            'eol',\n            'equation',\n            'equations',\n            'erase',\n            'erasestep',\n            'erf',\n            'erfc',\n            'error',\n            'errorbar',\n            'errorbars',\n            'eval',\n            'excenter',\n            'excircle',\n            'exit',\n            'exitXasyMode',\n            'exitfunction',\n            'exp',\n            'expfactors',\n            'expi',\n            'expm1',\n            'exradius',\n            'extend',\n            'extension',\n            'extouch',\n            'fabs',\n            'factorial',\n            'fermat',\n            'fft',\n            'fhorner',\n            'figure',\n            'filecode',\n            'fill',\n            'filldraw',\n            'filloutside',\n            'fillrule',\n            'find',\n            'finite',\n            'finiteDifferenceJacobian',\n            'firstcut',\n            'firstframe',\n            'fit',\n            'fit2',\n            'fixedscaling',\n            'floor',\n            'flush',\n            'fmdefaults',\n            'fmod',\n            'focusToCenter',\n            'font',\n            'fontcommand',\n            'fontsize',\n            'foot',\n            'format',\n            'frac',\n            'frequency',\n            'fromCenter',\n            'fromFocus',\n            'fspline',\n            'functionshade',\n            'gamma',\n            'generate_random_backtrace',\n            'generateticks',\n            'gergonne',\n            'getc',\n            'getint',\n            'getpair',\n            'getreal',\n            'getstring',\n            'gettriple',\n            'gluon',\n            'gouraudshade',\n            'graph',\n            'graphic',\n            'gray',\n            'grestore',\n            'grid',\n            'gsave',\n            'halfbox',\n            'hatch',\n            'hdiffdiv',\n            'hermite',\n            'hex',\n            'histogram',\n            'history',\n            'hline',\n            'hprojection',\n            'hyperbolanodesnumber',\n            'hyperlink',\n            'hypot',\n            'identity',\n            'image',\n            'incenter',\n            'incentral',\n            'incircle',\n            'increasing',\n            'incrementposition',\n            'indexedfigure',\n            'initXasyMode',\n            'initdefaults',\n            'input',\n            'inradius',\n            'insert',\n            'inside',\n            'integrate',\n            'interactive',\n            'interior',\n            'interp',\n            'interpolate',\n            'intersect',\n            'intersection',\n            'intersectionpoint',\n            'intersectionpoints',\n            'intersections',\n            'intouch',\n            'inverse',\n            'invisible',\n            'is3D',\n            'isCCW',\n            'isDuplicate',\n            'isogonal',\n            'isogonalconjugate',\n            'isotomic',\n            'isotomicconjugate',\n            'isparabola',\n            'italic',\n            'item',\n            'jobname',\n            'kurtosis',\n            'kurtosisexcess',\n            'label',\n            'labelaxis',\n            'labelmargin',\n            'labelpath',\n            'labels',\n            'labeltick',\n            'labelx',\n            'labelx3',\n            'labely',\n            'labely3',\n            'labelz',\n            'labelz3',\n            'lastcut',\n            'latex',\n            'latitude',\n            'latticeshade',\n            'layer',\n            'layout',\n            'ldexp',\n            'leastsquares',\n            'legend',\n            'legenditem',\n            'length',\n            'lexorder',\n            'lift',\n            'limits',\n            'linear',\n            'linecap',\n            'lineinversion',\n            'linejoin',\n            'linemargin',\n            'lineskip',\n            'linetype',\n            'linewidth',\n            'link',\n            'list',\n            'lm_enorm',\n            'lm_evaluate_default',\n            'lm_lmdif',\n            'lm_lmpar',\n            'lm_minimize',\n            'lm_print_default',\n            'lm_print_quiet',\n            'lm_qrfac',\n            'lm_qrsolv',\n            'locale',\n            'locate',\n            'locatefile',\n            'location',\n            'log',\n            'log10',\n            'log1p',\n            'logaxiscoverage',\n            'longitude',\n            'lookup',\n            'makeNode',\n            'makedraw',\n            'makepen',\n            'map',\n            'margin',\n            'markangle',\n            'markarc',\n            'markinterval',\n            'marknodes',\n            'markrightangle',\n            'markuniform',\n            'masscenter',\n            'massformat',\n            'math',\n            'max',\n            'max3',\n            'maxAfterTransform',\n            'maxbezier',\n            'maxbound',\n            'maxcoords',\n            'maxlength',\n            'maxratio',\n            'maxtimes',\n            'mean',\n            'medial',\n            'median',\n            'midpoint',\n            'min',\n            'min3',\n            'minAfterTransform',\n            'minbezier',\n            'minbound',\n            'minipage',\n            'minratio',\n            'mintimes',\n            'miterlimit',\n            'mktemp',\n            'momArrowPath',\n            'momarrowsize',\n            'monotonic',\n            'multifigure',\n            'nativeformat',\n            'natural',\n            'needshipout',\n            'newl',\n            'newpage',\n            'newslide',\n            'newton',\n            'newtree',\n            'nextframe',\n            'nextnormal',\n            'nextpage',\n            'nib',\n            'nodabscissa',\n            'none',\n            'norm',\n            'normalvideo',\n            'notaknot',\n            'nowarn',\n            'numberpage',\n            'nurb',\n            'offset',\n            'onpath',\n            'opacity',\n            'opposite',\n            'orientation',\n            'origin',\n            'orthic',\n            'orthocentercenter',\n            'outformat',\n            'outline',\n            'outname',\n            'outprefix',\n            'output',\n            'overloadedMessage',\n            'overwrite',\n            'pack',\n            'pad',\n            'pairs',\n            'palette',\n            'parabolanodesnumber',\n            'parallel',\n            'parallelogram',\n            'partialsum',\n            'pattern',\n            'pause',\n            'pdf',\n            'pedal',\n            'periodic',\n            'perp',\n            'perpendicular',\n            'perpendicularmark',\n            'phantom',\n            'phi1',\n            'phi2',\n            'phi3',\n            'photon',\n            'piecewisestraight',\n            'polar',\n            'polarconicroutine',\n            'polargraph',\n            'polygon',\n            'postcontrol',\n            'postscript',\n            'pow10',\n            'ppoint',\n            'prc',\n            'prc0',\n            'precision',\n            'precontrol',\n            'prepend',\n            'printBytecode',\n            'print_random_addresses',\n            'project',\n            'purge',\n            'pwhermite',\n            'quadrant',\n            'quadraticroots',\n            'quantize',\n            'quarticroots',\n            'quotient',\n            'radialshade',\n            'radians',\n            'radicalcenter',\n            'radicalline',\n            'radius',\n            'rand',\n            'randompath',\n            'rd',\n            'readline',\n            'realmult',\n            'realquarticroots',\n            'rectangle',\n            'rectangular',\n            'rectify',\n            'reflect',\n            'relabscissa',\n            'relative',\n            'relativedistance',\n            'reldir',\n            'relpoint',\n            'reltime',\n            'remainder',\n            'remark',\n            'removeDuplicates',\n            'rename',\n            'replace',\n            'report',\n            'resetdefaultpen',\n            'restore',\n            'restoredefaults',\n            'reverse',\n            'reversevideo',\n            'rf',\n            'rfind',\n            'rgb',\n            'rgba',\n            'rgbint',\n            'rms',\n            'rotate',\n            'rotateO',\n            'rotation',\n            'round',\n            'roundbox',\n            'roundedpath',\n            'roundrectangle',\n            'same',\n            'samecoordsys',\n            'sameside',\n            'sample',\n            'save',\n            'savedefaults',\n            'saveline',\n            'scale',\n            'scale3',\n            'scaleO',\n            'scaleless',\n            'search',\n            'searchindex',\n            'searchtree',\n            'sec',\n            'secondaryX',\n            'secondaryY',\n            'seconds',\n            'section',\n            'sector',\n            'seek',\n            'seekeof',\n            'sequence',\n            'setcontour',\n            'setpens',\n            'sgn',\n            'sgnd',\n            'sharpangle',\n            'sharpdegrees',\n            'shift',\n            'shiftless',\n            'shipout',\n            'shipout3',\n            'show',\n            'simeq',\n            'simpson',\n            'sin',\n            'sinh',\n            'size',\n            'size3',\n            'skewness',\n            'skip',\n            'slant',\n            'sleep',\n            'slope',\n            'slopefield',\n            'solve',\n            'solveBVP',\n            'sort',\n            'sourceline',\n            'sphere',\n            'split',\n            'sqrt',\n            'square',\n            'srand',\n            'standardizecoordsys',\n            'startScript',\n            'stdev',\n            'step',\n            'stickframe',\n            'stickmarksize',\n            'stickmarkspace',\n            'stop',\n            'straight',\n            'straightness',\n            'stripdirectory',\n            'stripextension',\n            'stripfile',\n            'stripsuffix',\n            'strokepath',\n            'subdivide',\n            'subitem',\n            'subpath',\n            'substr',\n            'sum',\n            'symmedial',\n            'symmedian',\n            'system',\n            'tab',\n            'tableau',\n            'tan',\n            'tangent',\n            'tangential',\n            'tangents',\n            'tanh',\n            'tell',\n            'tensorshade',\n            'tex',\n            'texcolor',\n            'texify',\n            'texpath',\n            'texpreamble',\n            'texreset',\n            'texshipout',\n            'texsize',\n            'textpath',\n            'thick',\n            'thin',\n            'tick',\n            'tickMax',\n            'tickMax3',\n            'tickMin',\n            'tickMin3',\n            'ticklabelshift',\n            'tildeframe',\n            'tildemarksize',\n            'tile',\n            'tiling',\n            'time',\n            'times',\n            'title',\n            'titlepage',\n            'topbox',\n            'transpose',\n            'trembleFuzz',\n            'triangleAbc',\n            'triangleabc',\n            'triangulate',\n            'tricoef',\n            'tridiagonal',\n            'trim',\n            'truepoint',\n            'tube',\n            'uncycle',\n            'unfill',\n            'uniform',\n            'unique',\n            'unit',\n            'unitrand',\n            'unitsize',\n            'unityroot',\n            'unstraighten',\n            'upcase',\n            'updatefunction',\n            'uperiodic',\n            'upscale',\n            'uptodate',\n            'usepackage',\n            'usersetting',\n            'usetypescript',\n            'usleep',\n            'value',\n            'variance',\n            'variancebiased',\n            'vbox',\n            'vectorfield',\n            'verbatim',\n            'view',\n            'vperiodic',\n            'vprojection',\n            'warn',\n            'warning',\n            'windingnumber',\n            'write',\n            'xaxis',\n            'xaxis3',\n            'xaxis3At',\n            'xaxisAt',\n            'xequals',\n            'xinput',\n            'xlimits',\n            'xoutput',\n            'xpart',\n            'xscale',\n            'xscaleO',\n            'xtick',\n            'xtick3',\n            'xtrans',\n            'yaxis',\n            'yaxis3',\n            'yaxis3At',\n            'yaxisAt',\n            'yequals',\n            'ylimits',\n            'ypart',\n            'yscale',\n            'yscaleO',\n            'ytick',\n            'ytick3',\n            'ytrans',\n            'zaxis3',\n            'zaxis3At',\n            'zero',\n            'zero3',\n            'zlimits',\n            'zpart',\n            'ztick',\n            'ztick3',\n            'ztrans'\n        ),\n\n        4 => array(\n            'AliceBlue',\n            'Align',\n            'Allow',\n            'AntiqueWhite',\n            'Apricot',\n            'Aqua',\n            'Aquamarine',\n            'Aspect',\n            'Azure',\n            'BeginPoint',\n            'Beige',\n            'Bisque',\n            'Bittersweet',\n            'Black',\n            'BlanchedAlmond',\n            'Blue',\n            'BlueGreen',\n            'BlueViolet',\n            'Both',\n            'BrickRed',\n            'Brown',\n            'BurlyWood',\n            'BurntOrange',\n            'CCW',\n            'CW',\n            'CadetBlue',\n            'CarnationPink',\n            'Center',\n            'Centered',\n            'Cerulean',\n            'Chartreuse',\n            'Chocolate',\n            'Coeff',\n            'Coral',\n            'CornflowerBlue',\n            'Cornsilk',\n            'Crimson',\n            'Crop',\n            'Cyan',\n            'Dandelion',\n            'DarkBlue',\n            'DarkCyan',\n            'DarkGoldenrod',\n            'DarkGray',\n            'DarkGreen',\n            'DarkKhaki',\n            'DarkMagenta',\n            'DarkOliveGreen',\n            'DarkOrange',\n            'DarkOrchid',\n            'DarkRed',\n            'DarkSalmon',\n            'DarkSeaGreen',\n            'DarkSlateBlue',\n            'DarkSlateGray',\n            'DarkTurquoise',\n            'DarkViolet',\n            'DeepPink',\n            'DeepSkyBlue',\n            'DefaultHead',\n            'DimGray',\n            'DodgerBlue',\n            'Down',\n            'E',\n            'ENE',\n            'EPS',\n            'ESE',\n            'E_Euler',\n            'E_PC',\n            'E_RK2',\n            'E_RK3BS',\n            'Emerald',\n            'EndPoint',\n            'Euler',\n            'FireBrick',\n            'FloralWhite',\n            'ForestGreen',\n            'Fuchsia',\n            'Gainsboro',\n            'GhostWhite',\n            'Gold',\n            'Goldenrod',\n            'Gray',\n            'Green',\n            'GreenYellow',\n            'Honeydew',\n            'Horizontal',\n            'HotPink',\n            'I',\n            'IgnoreAspect',\n            'IndianRed',\n            'Indigo',\n            'Ivory',\n            'JOIN_IN',\n            'JOIN_OUT',\n            'JungleGreen',\n            'Khaki',\n            'LM_DWARF',\n            'LM_MACHEP',\n            'LM_SQRT_DWARF',\n            'LM_SQRT_GIANT',\n            'LM_USERTOL',\n            'Lavender',\n            'LavenderBlush',\n            'LawnGreen',\n            'LeftJustified',\n            'LeftSide',\n            'LemonChiffon',\n            'LightBlue',\n            'LightCoral',\n            'LightCyan',\n            'LightGoldenrodYellow',\n            'LightGreen',\n            'LightGrey',\n            'LightPink',\n            'LightSalmon',\n            'LightSeaGreen',\n            'LightSkyBlue',\n            'LightSlateGray',\n            'LightSteelBlue',\n            'LightYellow',\n            'Lime',\n            'LimeGreen',\n            'Linen',\n            'Logarithmic',\n            'Magenta',\n            'Mahogany',\n            'MarkFill',\n            'Maroon',\n            'Max',\n            'MediumAquamarine',\n            'MediumBlue',\n            'MediumOrchid',\n            'MediumPurple',\n            'MediumSeaGreen',\n            'MediumSlateBlue',\n            'MediumSpringGreen',\n            'MediumTurquoise',\n            'MediumVioletRed',\n            'Melon',\n            'MidPoint',\n            'MidnightBlue',\n            'Min',\n            'MintCream',\n            'MistyRose',\n            'Moccasin',\n            'Move',\n            'MoveQuiet',\n            'Mulberry',\n            'N',\n            'NE',\n            'NNE',\n            'NNW',\n            'NW',\n            'NavajoWhite',\n            'Navy',\n            'NavyBlue',\n            'NoAlign',\n            'NoCrop',\n            'NoFill',\n            'NoSide',\n            'OldLace',\n            'Olive',\n            'OliveDrab',\n            'OliveGreen',\n            'Orange',\n            'OrangeRed',\n            'Orchid',\n            'PC',\n            'PaleGoldenrod',\n            'PaleGreen',\n            'PaleTurquoise',\n            'PaleVioletRed',\n            'PapayaWhip',\n            'Peach',\n            'PeachPuff',\n            'Periwinkle',\n            'Peru',\n            'PineGreen',\n            'Pink',\n            'Plum',\n            'PowderBlue',\n            'ProcessBlue',\n            'Purple',\n            'RK2',\n            'RK3',\n            'RK3BS',\n            'RK4',\n            'RK5',\n            'RK5DP',\n            'RK5F',\n            'RawSienna',\n            'Red',\n            'RedOrange',\n            'RedViolet',\n            'Rhodamine',\n            'RightJustified',\n            'RightSide',\n            'RosyBrown',\n            'RoyalBlue',\n            'RoyalPurple',\n            'RubineRed',\n            'S',\n            'SE',\n            'SSE',\n            'SSW',\n            'SW',\n            'SaddleBrown',\n            'Salmon',\n            'SandyBrown',\n            'SeaGreen',\n            'Seashell',\n            'Sepia',\n            'Sienna',\n            'Silver',\n            'SimpleHead',\n            'SkyBlue',\n            'SlateBlue',\n            'SlateGray',\n            'Snow',\n            'SpringGreen',\n            'SteelBlue',\n            'Suppress',\n            'SuppressQuiet',\n            'TeXHead',\n            'Teal',\n            'TealBlue',\n            'Thistle',\n            'Ticksize',\n            'Tomato',\n            'Turquoise',\n            'Up',\n            'VERSION',\n            'Value',\n            'Vertical',\n            'Violet',\n            'VioletRed',\n            'W',\n            'WNW',\n            'WSW',\n            'Wheat',\n            'White',\n            'WhiteSmoke',\n            'WildStrawberry',\n            'XYAlign',\n            'YAlign',\n            'Yellow',\n            'YellowGreen',\n            'YellowOrange',\n            'allowstepping',\n            'angularsystem',\n            'animationdelay',\n            'appendsuffix',\n            'arcarrowangle',\n            'arcarrowfactor',\n            'arrow2sizelimit',\n            'arrowangle',\n            'arrowbarb',\n            'arrowdir',\n            'arrowfactor',\n            'arrowhookfactor',\n            'arrowlength',\n            'arrowsizelimit',\n            'arrowtexfactor',\n            'authorpen',\n            'axislabelfactor',\n            'background',\n            'backgroundcolor',\n            'backgroundpen',\n            'barfactor',\n            'barmarksizefactor',\n            'basealign',\n            'baselinetemplate',\n            'beveljoin',\n            'bigvertexpen',\n            'bigvertexsize',\n            'black',\n            'blue',\n            'bm',\n            'bottom',\n            'bp',\n            'brown',\n            'bullet',\n            'byfoci',\n            'byvertices',\n            'camerafactor',\n            'chartreuse',\n            'circlemarkradiusfactor',\n            'circlenodesnumberfactor',\n            'circleprecision',\n            'circlescale',\n            'cm',\n            'codefile',\n            'codepen',\n            'codeskip',\n            'colorPen',\n            'coloredNodes',\n            'coloredSegments',\n            'conditionlength',\n            'conicnodesfactor',\n            'count',\n            'cputimeformat',\n            'crossmarksizefactor',\n            'currentcoordsys',\n            'currentlight',\n            'currentpatterns',\n            'currentpen',\n            'currentpicture',\n            'currentposition',\n            'currentprojection',\n            'curvilinearsystem',\n            'cuttings',\n            'cyan',\n            'darkblue',\n            'darkbrown',\n            'darkcyan',\n            'darkgray',\n            'darkgreen',\n            'darkgrey',\n            'darkmagenta',\n            'darkolive',\n            'darkred',\n            'dashdotted',\n            'dashed',\n            'datepen',\n            'dateskip',\n            'debuggerlines',\n            'debugging',\n            'deepblue',\n            'deepcyan',\n            'deepgray',\n            'deepgreen',\n            'deepgrey',\n            'deepmagenta',\n            'deepred',\n            'default',\n            'defaultControl',\n            'defaultS',\n            'defaultbackpen',\n            'defaultcoordsys',\n            'defaultexcursion',\n            'defaultfilename',\n            'defaultformat',\n            'defaultmassformat',\n            'defaultpen',\n            'diagnostics',\n            'differentlengths',\n            'dot',\n            'dotfactor',\n            'dotframe',\n            'dotted',\n            'doublelinepen',\n            'doublelinespacing',\n            'down',\n            'duplicateFuzz',\n            'edge',\n            'ellipsenodesnumberfactor',\n            'eps',\n            'epsgeo',\n            'epsilon',\n            'evenodd',\n            'expansionfactor',\n            'extendcap',\n            'exterior',\n            'fermionpen',\n            'figureborder',\n            'figuremattpen',\n            'file3',\n            'firstnode',\n            'firststep',\n            'foregroundcolor',\n            'fuchsia',\n            'fuzz',\n            'gapfactor',\n            'ghostpen',\n            'gluonamplitude',\n            'gluonpen',\n            'gluonratio',\n            'green',\n            'grey',\n            'hatchepsilon',\n            'havepagenumber',\n            'heavyblue',\n            'heavycyan',\n            'heavygray',\n            'heavygreen',\n            'heavygrey',\n            'heavymagenta',\n            'heavyred',\n            'hwratio',\n            'hyperbolanodesnumberfactor',\n            'identity4',\n            'ignore',\n            'inXasyMode',\n            'inch',\n            'inches',\n            'includegraphicscommand',\n            'inf',\n            'infinity',\n            'institutionpen',\n            'intMax',\n            'intMin',\n            'invert',\n            'itempen',\n            'itemskip',\n            'itemstep',\n            'landscape',\n            'lastnode',\n            'left',\n            'legendhskip',\n            'legendlinelength',\n            'legendmargin',\n            'legendmarkersize',\n            'legendmaxrelativewidth',\n            'legendvskip',\n            'lightblue',\n            'lightcyan',\n            'lightgray',\n            'lightgreen',\n            'lightgrey',\n            'lightmagenta',\n            'lightolive',\n            'lightred',\n            'lightyellow',\n            'lm_infmsg',\n            'lm_shortmsg',\n            'longdashdotted',\n            'longdashed',\n            'magenta',\n            'magneticRadius',\n            'mantissaBits',\n            'markangleradius',\n            'markangleradiusfactor',\n            'markanglespace',\n            'markanglespacefactor',\n            'mediumblue',\n            'mediumcyan',\n            'mediumgray',\n            'mediumgreen',\n            'mediumgrey',\n            'mediummagenta',\n            'mediumred',\n            'mediumyellow',\n            'middle',\n            'minDistDefault',\n            'minblockheight',\n            'minblockwidth',\n            'mincirclediameter',\n            'minipagemargin',\n            'minipagewidth',\n            'minvertexangle',\n            'miterjoin',\n            'mm',\n            'momarrowfactor',\n            'momarrowlength',\n            'momarrowmargin',\n            'momarrowoffset',\n            'momarrowpen',\n            'monoPen',\n            'morepoints',\n            'nCircle',\n            'newbulletcolor',\n            'ngraph',\n            'nil',\n            'nmesh',\n            'nobasealign',\n            'nodeMarginDefault',\n            'nodesystem',\n            'nomarker',\n            'nopoint',\n            'noprimary',\n            'nullpath',\n            'nullpen',\n            'numarray',\n            'ocgindex',\n            'oldbulletcolor',\n            'olive',\n            'orange',\n            'overpaint',\n            'page',\n            'pageheight',\n            'pagemargin',\n            'pagenumberalign',\n            'pagenumberpen',\n            'pagenumberposition',\n            'pagewidth',\n            'paleblue',\n            'palecyan',\n            'palegray',\n            'palegreen',\n            'palegrey',\n\n            'palemagenta',\n            'palered',\n            'paleyellow',\n            'parabolanodesnumberfactor',\n            'perpfactor',\n            'phi',\n            'photonamplitude',\n            'photonpen',\n            'photonratio',\n            'pi',\n            'pink',\n            'plain',\n            'plain_bounds',\n            'plain_scaling',\n            'plus',\n            'preamblenodes',\n            'pt',\n            'purple',\n            'r3',\n            'r4a',\n            'r4b',\n            'randMax',\n            'realDigits',\n            'realEpsilon',\n            'realMax',\n            'realMin',\n            'red',\n            'relativesystem',\n            'right',\n            'roundcap',\n            'roundjoin',\n            'royalblue',\n            'salmon',\n            'saveFunctions',\n            'scalarpen',\n            'sequencereal',\n            'settings',\n            'shipped',\n            'signedtrailingzero',\n            'solid',\n            'springgreen',\n            'sqrtEpsilon',\n            'squarecap',\n            'squarepen',\n            'startposition',\n            'stdin',\n            'stdout',\n            'stepfactor',\n            'stepfraction',\n            'steppagenumberpen',\n            'stepping',\n            'stickmarksizefactor',\n            'stickmarkspacefactor',\n            'swap',\n            'textpen',\n            'ticksize',\n            'tildemarksizefactor',\n            'tinv',\n            'titlealign',\n            'titlepagepen',\n            'titlepageposition',\n            'titlepen',\n            'titleskip',\n            'top',\n            'trailingzero',\n            'treeLevelStep',\n            'treeMinNodeWidth',\n            'treeNodeStep',\n            'trembleAngle',\n            'trembleFrequency',\n            'trembleRandom',\n            'undefined',\n            'unitcircle',\n            'unitsquare',\n            'up',\n            'urlpen',\n            'urlskip',\n            'version',\n            'vertexpen',\n            'vertexsize',\n            'viewportmargin',\n            'viewportsize',\n            'vline',\n            'white',\n            'wye',\n            'xformStack',\n            'yellow',\n            'ylabelwidth',\n            'zerotickfuzz',\n            'zerowinding'\n        )\n    ),\n    'SYMBOLS' => array(\n        0 => array(\n            '(', ')', '{', '}', '[', ']'\n        ),\n        1 => array('<', '>', '='),\n        2 => array('+', '-', '*', '/', '%'),\n        3 => array('!', '^', '&', '|'),\n        4 => array('?', ':', ';'),\n        5 => array('..')\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #990000;',\n            4 => 'color: #009900; font-weight: bold;'\n        ),\n        'COMMENTS' => array(\n            1 => 'color: #666666;',\n            2 => 'color: #339900;',\n            'MULTI' => 'color: #ff0000; font-style: italic;'\n        ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #660099; font-weight: bold;',\n            3 => 'color: #660099; font-weight: bold;',\n            4 => 'color: #660099; font-weight: bold;',\n            5 => 'color: #006699; font-weight: bold;',\n            'HARD' => '',\n        ),\n        'BRACKETS' => array(\n            0 => 'color: #008000;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #FF0000;'\n        ),\n        'NUMBERS' => array(\n            0 => 'color: #0000dd;',\n            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'\n        ),\n        'METHODS' => array(\n            1 => 'color: #007788;',\n            2 => 'color: #007788;'\n        ),\n        'SYMBOLS' => array(\n            0 => 'color: #008000;',\n            1 => 'color: #000080;',\n            2 => 'color: #000040;',\n            3 => 'color: #000040;',\n            4 => 'color: #008080;',\n            5 => 'color: #009080;'\n        ),\n        'REGEXPS' => array(),\n        'SCRIPT' => array()\n    ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n    ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        2 => '::'\n    ),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\|\\#])\",\n            'DISALLOWED_AFTER' => \"(?![a-zA-Z0-9_\\|%\\\\-])\"\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/autoconf.php",
    "content": "<?php\n/*************************************************************************************\n * autoconf.php\n * -----\n * Author: Mihai Vasilian (grayasm@gmail.com)\n * Copyright: (c) 2010 Mihai Vasilian\n * Release Version: 1.0.9.1\n * Date Started: 2010/01/25\n *\n * autoconf language file for GeSHi.\n *\n ***********************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Autoconf',\n    'COMMENT_SINGLE' => array(2 => '#'),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        //Multiline-continued single-line comments\n        1 => '/\\/\\/(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //Multiline-continued preprocessor define\n        2 => '/#(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //Single Line comment started by dnl\n        3 => '/(?<!\\$)\\bdnl\\b.*$/m',\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'AC_ACT_IFELSE',\n            'AC_AIX',\n            'AC_ALLOCA',\n            'AC_ARG_ARRAY',\n            'AC_ARG_ENABLE',\n            'AC_ARG_PROGRAM',\n            'AC_ARG_VAR',\n            'AC_ARG_WITH',\n            'AC_AUTOCONF_VERSION',\n            'AC_BEFORE',\n            'AC_C_BACKSLASH_A',\n            'AC_C_BIGENDIAN',\n            'AC_C_CHAR_UNSIGNED',\n            'AC_C_CONST',\n            'AC_C_CROSS',\n            'AC_C_FLEXIBLE_ARRAY_MEMBER',\n            'AC_C_INLINE',\n            'AC_C_LONG_DOUBLE',\n            'AC_C_PROTOTYPES',\n            'AC_C_RESTRICT',\n            'AC_C_STRINGIZE',\n            'AC_C_TYPEOF',\n            'AC_C_VARARRAYS',\n            'AC_C_VOLATILE',\n            'AC_CACHE_CHECK',\n            'AC_CACHE_LOAD',\n            'AC_CACHE_SAVE',\n            'AC_CACHE_VAL',\n            'AC_CANONICAL_BUILD',\n            'AC_CANONICAL_HOST',\n            'AC_CANONICAL_SYSTEM',\n            'AC_CANONICAL_TARGET',\n            'AC_CHAR_UNSIGNED',\n            'AC_CHECK_ALIGNOF',\n            'AC_CHECK_DECL',\n            'AC_CHECK_DECLS',\n            'AC_CHECK_DECLS_ONCE',\n            'AC_CHECK_FILE',\n            'AC_CHECK_FILES',\n            'AC_CHECK_FUNC',\n            'AC_CHECK_FUNCS',\n            'AC_CHECK_FUNCS_ONCE',\n            'AC_CHECK_HEADER',\n            'AC_CHECK_HEADERS',\n            'AC_CHECK_HEADERS_ONCE',\n            'AC_CHECK_LIB',\n            'AC_CHECK_MEMBER',\n            'AC_CHECK_MEMBERS',\n            'AC_CHECK_PROG',\n            'AC_CHECK_PROGS',\n            'AC_CHECK_SIZEOF',\n            'AC_CHECK_TARGET_TOOL',\n            'AC_CHECK_TARGET_TOOLS',\n            'AC_CHECK_TOOL',\n            'AC_CHECK_TOOLS',\n            'AC_CHECK_TYPE',\n            'AC_CHECK_TYPES',\n            'AC_CHECKING',\n            'AC_COMPILE_CHECK',\n            'AC_COMPILE_IFELSE',\n            'AC_COMPUTE_INT',\n            'AC_CONFIG_AUX_DIR',\n            'AC_CONFIG_COMMANDS',\n            'AC_CONFIG_COMMANDS_POST',\n            'AC_CONFIG_COMMANDS_PRE',\n            'AC_CONFIG_FILES',\n            'AC_CONFIG_HEADERS',\n            'AC_CONFIG_ITEMS',\n            'AC_CONFIG_LIBOBJ_DIR',\n            'AC_CONFIG_LINKS',\n            'AC_CONFIG_MACRO_DIR',\n            'AC_CONFIG_SRCDIR',\n            'AC_CONFIG_SUBDIRS',\n            'AC_CONFIG_TESTDIR',\n            'AC_CONST',\n            'AC_COPYRIGHT',\n            'AC_CROSS_CHECK',\n            'AC_CYGWIN',\n            'AC_DATAROOTDIR_CHECKED',\n            'AC_DECL_SYS_SIGLIST',\n            'AC_DECL_YYTEXT',\n            'AC_DEFINE',\n            'AC_DEFINE_UNQUOTED',\n            'AC_DEFUN',\n            'AC_DEFUN_ONCE',\n            'AC_DIAGNOSE',\n            'AC_DIR_HEADER',\n            'AC_DISABLE_OPTION_CHECKING',\n            'AC_DYNIX_SEQ',\n            'AC_EGREP_CPP',\n            'AC_EGREP_HEADER',\n            'AC_EMXOS2',\n            'AC_ENABLE',\n            'AC_ERLANG_CHECK_LIB',\n            'AC_ERLANG_NEED_ERL',\n            'AC_ERLANG_NEED_ERLC',\n            'AC_ERLANG_PATH_ERL',\n            'AC_ERLANG_PATH_ERLC',\n            'AC_ERLANG_SUBST_ERTS_VER',\n            'AC_ERLANG_SUBST_INSTALL_LIB_DIR',\n            'AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR',\n            'AC_ERLANG_SUBST_LIB_DIR',\n            'AC_ERLANG_SUBST_ROOT_DIR',\n            'AC_ERROR',\n            'AC_EXEEXT',\n            'AC_F77_DUMMY_MAIN',\n            'AC_F77_FUNC',\n            'AC_F77_LIBRARY_LDFLAGS',\n            'AC_F77_MAIN',\n            'AC_F77_WRAPPERS',\n            'AC_FATAL',\n            'AC_FC_FREEFORM',\n            'AC_FC_FUNC',\n            'AC_FC_LIBRARY_LDFLAGS',\n            'AC_FC_MAIN',\n            'AC_FC_SRCEXT',\n            'AC_FC_WRAPPERS',\n            'AC_FIND_X',\n            'AC_FIND_XTRA',\n            'AC_FOREACH',\n            'AC_FUNC_ALLOCA',\n            'AC_FUNC_CHECK',\n            'AC_FUNC_CHOWN',\n            'AC_FUNC_CLOSEDIR_VOID',\n            'AC_FUNC_ERROR_AT_LINE',\n            'AC_FUNC_FNMATCH',\n            'AC_FUNC_FNMATCH_GNU',\n            'AC_FUNC_FORK',\n            'AC_FUNC_FSEEKO',\n            'AC_FUNC_GETGROUPS',\n            'AC_FUNC_GETLOADAVG',\n            'AC_FUNC_GETMNTENT',\n            'AC_FUNC_GETPGRP',\n            'AC_FUNC_LSTAT',\n            'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK',\n            'AC_FUNC_MALLOC',\n            'AC_FUNC_MBRTOWC',\n            'AC_FUNC_MEMCMP',\n            'AC_FUNC_MKTIME',\n            'AC_FUNC_MMAP',\n            'AC_FUNC_OBSTACK',\n            'AC_FUNC_REALLOC',\n            'AC_FUNC_SELECT_ARGTYPES',\n            'AC_FUNC_SETPGRP',\n            'AC_FUNC_SETVBUF_REVERSED',\n            'AC_FUNC_STAT',\n            'AC_FUNC_STRCOLL',\n            'AC_FUNC_STRERROR_R',\n            'AC_FUNC_STRFTIME',\n            'AC_FUNC_STRNLEN',\n            'AC_FUNC_STRTOD',\n            'AC_FUNC_STRTOLD',\n            'AC_FUNC_UTIME_NULL',\n            'AC_FUNC_VPRINTF',\n            'AC_FUNC_WAIT3',\n            'AC_GCC_TRADITIONAL',\n            'AC_GETGROUPS_T',\n            'AC_GETLOADAVG',\n            'AC_GNU_SOURCE',\n            'AC_HAVE_FUNCS',\n            'AC_HAVE_HEADERS',\n            'AC_HAVE_LIBRARY',\n            'AC_HAVE_POUNDBANG',\n            'AC_HEADER_ASSERT',\n            'AC_HEADER_CHECK',\n            'AC_HEADER_DIRENT',\n            'AC_HEADER_EGREP',\n            'AC_HEADER_MAJOR',\n            'AC_HEADER_RESOLV',\n            'AC_HEADER_STAT',\n            'AC_HEADER_STDBOOL',\n            'AC_HEADER_STDC',\n            'AC_HEADER_SYS_WAIT',\n            'AC_HEADER_TIME',\n            'AC_HEADER_TIOCGWINSZ',\n            'AC_HELP_STRING',\n            'AC_INCLUDES_DEFAULT',\n            'AC_INIT',\n            'AC_INLINE',\n            'AC_INT_16_BITS',\n            'AC_IRIX_SUN',\n            'AC_ISC_POSIX',\n            'AC_LANG_ASSERT',\n            'AC_LANG_C',\n            'AC_LANG_CALL',\n            'AC_LANG_CONFTEST',\n            'AC_LANG_CPLUSPLUS',\n            'AC_LANG_FORTRAN77',\n            'AC_LANG_FUNC_LINK_TRY',\n            'AC_LANG_POP',\n            'AC_LANG_PROGRAM',\n            'AC_LANG_PUSH',\n            'AC_LANG_RESTORE',\n            'AC_LANG_SAVE',\n            'AC_LANG_SOURCE',\n            'AC_LANG_WERROR',\n            'AC_LIBOBJ',\n            'AC_LIBSOURCE',\n            'AC_LIBSOURCES',\n            'AC_LINK_FILES',\n            'AC_LINK_IFELSE',\n            'AC_LN_S',\n            'AC_LONG_64_BITS',\n            'AC_LONG_DOUBLE',\n            'AC_LONG_FILE_NAMES',\n            'AC_MAJOR_HEADER',\n            'AC_MEMORY_H',\n            'AC_MINGW32',\n            'AC_MINIX',\n            'AC_MINUS_C_MINUS_O',\n            'AC_MMAP',\n            'AC_MODE_T',\n            'AC_MSG_CHECKING',\n            'AC_MSG_ERROR',\n            'AC_MSG_FAILURE',\n            'AC_MSG_NOTICE',\n            'AC_MSG_RESULT',\n            'AC_MSG_WARN',\n            'AC_OBJEXT',\n            'AC_OBSOLETE',\n            'AC_OFF_T',\n            'AC_OPENMP',\n            'AC_OUTPUT',\n            'AC_OUTPUT_COMMANDS',\n            'AC_PACKAGE_BUGREPORT',\n            'AC_PACKAGE_NAME',\n            'AC_PACKAGE_STRING',\n            'AC_PACKAGE_TARNAME',\n            'AC_PACKAGE_URL',\n            'AC_PACKAGE_VERSION',\n            'AC_PATH_PROG',\n            'AC_PATH_PROGS',\n            'AC_PATH_PROGS_FEATURE_CHECK',\n            'AC_PATH_TARGET_TOOL',\n            'AC_PATH_TOOL',\n            'AC_PATH_X',\n            'AC_PATH_XTRA',\n            'AC_PID_T',\n            'AC_PREFIX',\n            'AC_PREFIX_DEFAULT',\n            'AC_PREFIX_PROGRAM',\n            'AC_PREPROC_IFELSE',\n            'AC_PREREQ',\n            'AC_PRESERVE_HELP_ORDER',\n            'AC_PROG_AWK',\n            'AC_PROG_CC',\n            'AC_PROG_CC_C89',\n            'AC_PROG_CC_C99',\n            'AC_PROG_CC_C_O',\n            'AC_PROG_CC_STDC',\n            'AC_PROG_CPP',\n            'AC_PROG_CPP_WERROR',\n            'AC_PROG_CXX',\n            'AC_PROG_CXX_C_O',\n            'AC_PROG_CXXCPP',\n            'AC_PROG_EGREP',\n            'AC_PROG_F77',\n            'AC_PROG_F77_C_O',\n            'AC_PROG_FC',\n            'AC_PROG_FC_C_O',\n            'AC_PROG_FGREP',\n            'AC_PROG_GCC_TRADITIONAL',\n            'AC_PROG_GREP',\n            'AC_PROG_INSTALL',\n            'AC_PROG_LEX',\n            'AC_PROG_LN_S',\n            'AC_PROG_MAKE_SET',\n            'AC_PROG_MKDIR_P',\n            'AC_PROG_OBJC',\n            'AC_PROG_OBJCPP',\n            'AC_PROG_OBJCXX',\n            'AC_PROG_OBJCXXCPP',\n            'AC_PROG_RANLIB',\n            'AC_PROG_SED',\n            'AC_PROG_YACC',\n            'AC_PROGRAM_CHECK',\n            'AC_PROGRAM_EGREP',\n            'AC_PROGRAM_PATH',\n            'AC_PROGRAMS_CHECK',\n            'AC_PROGRAMS_PATH',\n            'AC_REMOTE_TAPE',\n            'AC_REPLACE_FNMATCH',\n            'AC_REPLACE_FUNCS',\n            'AC_REQUIRE',\n            'AC_REQUIRE_AUX_FILE',\n            'AC_REQUIRE_CPP',\n            'AC_RESTARTABLE_SYSCALLS',\n            'AC_RETSIGTYPE',\n            'AC_REVISION',\n            'AC_RSH',\n            'AC_RUN_IFELSE',\n            'AC_SCO_INTL',\n            'AC_SEARCH_LIBS',\n            'AC_SET_MAKE',\n            'AC_SETVBUF_REVERSED',\n            'AC_SIZE_T',\n            'AC_SIZEOF_TYPE',\n            'AC_ST_BLKSIZE',\n            'AC_ST_BLOCKS',\n            'AC_ST_RDEV',\n            'AC_STAT_MACROS_BROKEN',\n            'AC_STDC_HEADERS',\n            'AC_STRCOLL',\n            'AC_STRUCT_DIRENT_D_INO',\n            'AC_STRUCT_DIRENT_D_TYPE',\n            'AC_STRUCT_ST_BLKSIZE',\n            'AC_STRUCT_ST_BLOCKS',\n            'AC_STRUCT_ST_RDEV',\n            'AC_STRUCT_TIMEZONE',\n            'AC_STRUCT_TM',\n            'AC_SUBST',\n            'AC_SUBST_FILE',\n            'AC_SYS_INTERPRETER',\n            'AC_SYS_LARGEFILE',\n            'AC_SYS_LONG_FILE_NAMES',\n            'AC_SYS_POSIX_TERMIOS',\n            'AC_SYS_RESTARTABLE_SYSCALLS',\n            'AC_SYS_SIGLIST_DECLARED',\n            'AC_TEST_CPP',\n            'AC_TEST_PROGRAM',\n            'AC_TIME_WITH_SYS_TIME',\n            'AC_TIMEZONE',\n            'AC_TRY_ACT',\n            'AC_TRY_COMPILE',\n            'AC_TRY_CPP',\n            'AC_TRY_LINK',\n            'AC_TRY_LINK_FUNC',\n            'AC_TRY_RUN',\n            'AC_TYPE_GETGROUPS',\n            'AC_TYPE_INT16_T',\n            'AC_TYPE_INT32_T',\n            'AC_TYPE_INT64_T',\n            'AC_TYPE_INT8_T',\n            'AC_TYPE_INTMAX_T',\n            'AC_TYPE_INTPTR_T',\n            'AC_TYPE_LONG_DOUBLE',\n            'AC_TYPE_LONG_DOUBLE_WIDER',\n            'AC_TYPE_LONG_LONG_INT',\n            'AC_TYPE_MBSTATE_T',\n            'AC_TYPE_MODE_T',\n            'AC_TYPE_OFF_T',\n            'AC_TYPE_PID_T',\n            'AC_TYPE_SIGNAL',\n            'AC_TYPE_SIZE_T',\n            'AC_TYPE_SSIZE_T',\n            'AC_TYPE_UID_T',\n            'AC_TYPE_UINT16_T',\n            'AC_TYPE_UINT32_T',\n            'AC_TYPE_UINT64_T',\n            'AC_TYPE_UINT8_T',\n            'AC_TYPE_UINTMAX_T',\n            'AC_TYPE_UINTPTR_T',\n            'AC_TYPE_UNSIGNED_LONG_LONG_INT',\n            'AC_UID_T',\n            'AC_UNISTD_H',\n            'AC_USE_SYSTEM_EXTENSIONS',\n            'AC_USG',\n            'AC_UTIME_NULL',\n            'AC_VALIDATE_CACHED_SYSTEM_TUPLE',\n            'AC_VERBOSE',\n            'AC_VFORK',\n            'AC_VPRINTF',\n            'AC_WAIT3',\n            'AC_WARN',\n            'AC_WARNING',\n            'AC_WITH',\n            'AC_WORDS_BIGENDIAN',\n            'AC_XENIX_DIR',\n            'AC_YYTEXT_POINTER',\n            'AH_BOTTOM',\n            'AH_HEADER',\n            'AH_TEMPLATE',\n            'AH_TOP',\n            'AH_VERBATIM',\n            'AU_ALIAS',\n            'AU_DEFUN'),\n            ),\n    'SYMBOLS' => array('(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>', ';;', '`'),\n    'CASE_SENSITIVE' => array(\n            GESHI_COMMENTS => false,\n                1 => true,\n                ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #00ffff;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666;',\n            2 => 'color: #339900;',\n            3 => 'color: #666666;',\n            'MULTI' => 'color: #ff0000; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099;',\n            1 => 'color: #000099;',\n            2 => 'color: #660099;',\n            3 => 'color: #660099;',\n            4 => 'color: #660099;',\n            5 => 'color: #006699;',\n            'HARD' => '',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #008000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #996600;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000dd;',\n            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;',\n            2 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #008000;',\n            1 => 'color: #000080;',\n            2 => 'color: #000040;',\n            3 => 'color: #000040;',\n            4 => 'color: #008080;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'COMMENTS' => array(\n            'DISALLOWED_BEFORE' => '$'\n            ),\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![\\.\\-a-zA-Z0-9_\\$\\#])\",\n            'DISALLOWED_AFTER' =>  \"(?![\\.\\-a-zA-Z0-9_%\\\\/])\"\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/autohotkey.php",
    "content": "<?php\n/*************************************************************************************\n * autohotkey.php\n * --------\n * Author: Naveen Garg (naveen.garg@gmail.com)\n * Copyright: (c) 2009 Naveen Garg and GeSHi\n * Release Version: 1.0.9.1\n * Date Started: 2009/06/11\n *\n * Autohotkey language file for GeSHi.\n *\n * CHANGES\n * -------\n * Release 1.0.8.5 (2009/06/11)\n * - First Release\n *\n * TODO\n * ----\n * Reference: http://www.autohotkey.com/docs/\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Autohotkey',\n    'COMMENT_SINGLE' => array(\n        1 => ';'\n        ),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'while','if','and','or','else','return'\n            ),\n        2 => array(\n            // built in variables\n            'A_AhkPath','A_AhkVersion','A_AppData','A_AppDataCommon',\n            'A_AutoTrim','A_BatchLines','A_CaretX','A_CaretY',\n            'A_ComputerName','A_ControlDelay','A_Cursor','A_DD',\n            'A_DDD','A_DDDD','A_DefaultMouseSpeed','A_Desktop',\n            'A_DesktopCommon','A_DetectHiddenText','A_DetectHiddenWindows','A_EndChar',\n            'A_EventInfo','A_ExitReason','A_FormatFloat','A_FormatInteger',\n            'A_Gui','A_GuiEvent','A_GuiControl','A_GuiControlEvent',\n            'A_GuiHeight','A_GuiWidth','A_GuiX','A_GuiY',\n            'A_Hour','A_IconFile','A_IconHidden','A_IconNumber',\n            'A_IconTip','A_Index','A_IPAddress1','A_IPAddress2',\n            'A_IPAddress3','A_IPAddress4','A_ISAdmin','A_IsCompiled',\n            'A_IsCritical','A_IsPaused','A_IsSuspended','A_KeyDelay',\n            'A_Language','A_LastError','A_LineFile','A_LineNumber',\n            'A_LoopField','A_LoopFileAttrib','A_LoopFileDir','A_LoopFileExt',\n            'A_LoopFileFullPath','A_LoopFileLongPath','A_LoopFileName','A_LoopFileShortName',\n            'A_LoopFileShortPath','A_LoopFileSize','A_LoopFileSizeKB','A_LoopFileSizeMB',\n            'A_LoopFileTimeAccessed','A_LoopFileTimeCreated','A_LoopFileTimeModified','A_LoopReadLine',\n            'A_LoopRegKey','A_LoopRegName','A_LoopRegSubkey','A_LoopRegTimeModified',\n            'A_LoopRegType','A_MDAY','A_Min','A_MM',\n            'A_MMM','A_MMMM','A_Mon','A_MouseDelay',\n            'A_MSec','A_MyDocuments','A_Now','A_NowUTC',\n            'A_NumBatchLines','A_OSType','A_OSVersion','A_PriorHotkey',\n            'A_ProgramFiles','A_Programs','A_ProgramsCommon','A_ScreenHeight',\n            'A_ScreenWidth','A_ScriptDir','A_ScriptFullPath','A_ScriptName',\n            'A_Sec','A_Space','A_StartMenu','A_StartMenuCommon',\n            'A_Startup','A_StartupCommon','A_StringCaseSense','A_Tab',\n            'A_Temp','A_ThisFunc','A_ThisHotkey','A_ThisLabel',\n            'A_ThisMenu','A_ThisMenuItem','A_ThisMenuItemPos','A_TickCount',\n            'A_TimeIdle','A_TimeIdlePhysical','A_TimeSincePriorHotkey','A_TimeSinceThisHotkey',\n            'A_TitleMatchMode','A_TitleMatchModeSpeed','A_UserName','A_WDay',\n            'A_WinDelay','A_WinDir','A_WorkingDir','A_YDay',\n            'A_YEAR','A_YWeek','A_YYYY','Clipboard',\n            'ClipboardAll','ComSpec','ErrorLevel','ProgramFiles',\n            ),\n        3 => array(\n            'AutoTrim',\n            'BlockInput','Break','Click',\n            'ClipWait','Continue','Control',\n            'ControlClick','ControlFocus','ControlGet',\n            'ControlGetFocus','ControlGetPos','ControlGetText',\n            'ControlMove','ControlSend','ControlSendRaw',\n            'ControlSetText','CoordMode','Critical',\n            'DetectHiddenText','DetectHiddenWindows','DllCall','Drive',\n            'DriveGet','DriveSpaceFree',\n            'Else','EnvAdd','EnvDiv',\n            'EnvGet','EnvMult','EnvSet',\n            'EnvSub','EnvUpdate','Exit',\n            'ExitApp','FileAppend','FileCopy',\n            'FileCopyDir','FileCreateDir','FileCreateShortcut',\n            'FileDelete','FileGetAttrib','FileGetShortcut',\n            'FileGetSize','FileGetTime','FileGetVersion',\n            'FileInstall','FileMove','FileMoveDir',\n            'FileRead','FileReadLine','FileRecycle',\n            'FileRecycleEmpty','FileRemoveDir','FileSelectFile',\n            'FileSelectFolder','FileSetAttrib','FileSetTime',\n            'FormatTime','Gosub',\n            'Goto','GroupActivate','GroupAdd',\n            'GroupClose','GroupDeactivate','Gui',\n            'GuiControl','GuiControlGet','Hotkey',\n            'IfExist','IfGreater','IfGreaterOrEqual',\n            'IfInString','IfLess','IfLessOrEqual',\n            'IfMsgBox','IfNotEqual','IfNotExist',\n            'IfNotInString','IfWinActive','IfWinExist',\n            'IfWinNotActive','IfWinNotExist','ImageSearch',\n            'IniDelete','IniRead','IniWrite',\n            'Input','InputBox','KeyHistory',\n            'KeyWait','ListHotkeys','ListLines',\n            'ListVars','Loop',\n            'Menu','MouseClick','MouseClickDrag',\n            'MouseGetPos','MouseMove','MsgBox',\n            'OnMessage','OnExit','OutputDebug',\n            'PixelGetColor','PixelSearch','PostMessage',\n            'Process','Progress','Random',\n            'RegExMatch','RegExReplace','RegisterCallback',\n            'RegDelete','RegRead','RegWrite',\n            'Reload','Repeat','Return',\n            'Run','RunAs','RunWait',\n            'Send','SendEvent','SendInput',\n            'SendMessage','SendMode','SendPlay',\n            'SendRaw','SetBatchLines','SetCapslockState',\n            'SetControlDelay','SetDefaultMouseSpeed','SetEnv',\n            'SetFormat','SetKeyDelay','SetMouseDelay',\n            'SetNumlockState','SetScrollLockState','SetStoreCapslockMode',\n            'SetTimer','SetTitleMatchMode','SetWinDelay',\n            'SetWorkingDir','Shutdown','Sleep',\n            'Sort','SoundBeep','SoundGet',\n            'SoundGetWaveVolume','SoundPlay','SoundSet',\n            'SoundSetWaveVolume','SplashImage','SplashTextOff',\n            'SplashTextOn','SplitPath','StatusBarGetText',\n            'StatusBarWait','StringCaseSense','StringGetPos',\n            'StringLeft','StringLen','StringLower',\n            'StringMid','StringReplace','StringRight',\n            'StringSplit','StringTrimLeft','StringTrimRight',\n            'StringUpper','Suspend','SysGet',\n            'Thread','ToolTip','Transform',\n            'TrayTip','URLDownloadToFile','While',\n            'VarSetCapacity',\n            'WinActivate','WinActivateBottom','WinClose',\n            'WinGet','WinGetActiveStats','WinGetActiveTitle',\n            'WinGetClass','WinGetPos','WinGetText',\n            'WinGetTitle','WinHide','WinKill',\n            'WinMaximize','WinMenuSelectItem','WinMinimize',\n            'WinMinimizeAll','WinMinimizeAllUndo','WinMove',\n            'WinRestore','WinSet','WinSetTitle',\n            'WinShow','WinWait','WinWaitActive',\n            'WinWaitClose','WinWaitNotActive'\n            ),\n        4 => array(\n            'Abs','ACos','Asc','ASin',\n            'ATan','Ceil','Chr','Cos',\n            'Exp','FileExist','Floor',\n            'GetKeyState','IL_Add','IL_Create','IL_Destroy',\n            'InStr','IsFunc','IsLabel','Ln',\n            'Log','LV_Add','LV_Delete','LV_DeleteCol',\n            'LV_GetCount','LV_GetNext','LV_GetText','LV_Insert',\n            'LV_InsertCol','LV_Modify','LV_ModifyCol','LV_SetImageList',\n            'Mod','NumGet','NumPut',\n            'Round',\n            'SB_SetIcon','SB_SetParts','SB_SetText','Sin',\n            'Sqrt','StrLen','SubStr','Tan',\n            'TV_Add','TV_Delete','TV_GetChild','TV_GetCount',\n            'TV_GetNext','TV_Get','TV_GetParent','TV_GetPrev',\n            'TV_GetSelection','TV_GetText','TV_Modify',\n            'WinActive','WinExist'\n            ),\n        5 => array(\n            // #Directives\n            'AllowSameLineComments','ClipboardTimeout','CommentFlag',\n            'ErrorStdOut','EscapeChar','HotkeyInterval',\n            'HotkeyModifierTimeout','Hotstring','IfWinActive',\n            'IfWinExist','IfWinNotActive','IfWinNotExist',\n            'Include','IncludeAgain','InstallKeybdHook',\n            'InstallMouseHook','KeyHistory','LTrim',\n            'MaxHotkeysPerInterval','MaxMem','MaxThreads',\n            'MaxThreadsBuffer','MaxThreadsPerHotkey','NoEnv',\n            'NoTrayIcon','Persistent','SingleInstance',\n            'UseHook','WinActivateForce'\n            ),\n        6 => array(\n            'Shift','LShift','RShift',\n            'Alt','LAlt','RAlt',\n            'LControl','RControl',\n            'Ctrl','LCtrl','RCtrl',\n            'LWin','RWin','AppsKey',\n            'AltDown','AltUp','ShiftDown',\n            'ShiftUp','CtrlDown','CtrlUp',\n            'LWinDown','LWinUp','RWinDown',\n            'RWinUp','LButton','RButton',\n            'MButton','WheelUp','WheelDown',\n            'WheelLeft','WheelRight','XButton1',\n            'XButton2','Joy1','Joy2',\n            'Joy3','Joy4','Joy5',\n            'Joy6','Joy7','Joy8',\n            'Joy9','Joy10','Joy11',\n            'Joy12','Joy13','Joy14',\n            'Joy15','Joy16','Joy17',\n            'Joy18','Joy19','Joy20',\n            'Joy21','Joy22','Joy23',\n            'Joy24','Joy25','Joy26',\n            'Joy27','Joy28','Joy29',\n            'Joy30','Joy31','Joy32',\n            'JoyX','JoyY','JoyZ',\n            'JoyR','JoyU','JoyV',\n            'JoyPOV','JoyName','JoyButtons',\n            'JoyAxes','JoyInfo','Space',\n            'Tab','Enter',\n            'Escape','Esc','BackSpace',\n            'BS','Delete','Del',\n            'Insert','Ins','PGUP',\n            'PGDN','Home','End',\n            'Up','Down','Left',\n            'Right','PrintScreen','CtrlBreak',\n            'Pause','ScrollLock','CapsLock',\n            'NumLock','Numpad0','Numpad1',\n            'Numpad2','Numpad3','Numpad4',\n            'Numpad5','Numpad6','Numpad7',\n            'Numpad8','Numpad9','NumpadMult',\n            'NumpadAdd','NumpadSub','NumpadDiv',\n            'NumpadDot','NumpadDel','NumpadIns',\n            'NumpadClear','NumpadUp','NumpadDown',\n            'NumpadLeft','NumpadRight','NumpadHome',\n            'NumpadEnd','NumpadPgup','NumpadPgdn',\n            'NumpadEnter','F1','F2',\n            'F3','F4','F5',\n            'F6','F7','F8',\n            'F9','F10','F11',\n            'F12','F13','F14',\n            'F15','F16','F17',\n            'F18','F19','F20',\n            'F21','F22','F23',\n            'F24','Browser_Back','Browser_Forward',\n            'Browser_Refresh','Browser_Stop','Browser_Search',\n            'Browser_Favorites','Browser_Home','Volume_Mute',\n            'Volume_Down','Volume_Up','Media_Next',\n            'Media_Prev','Media_Stop','Media_Play_Pause',\n            'Launch_Mail','Launch_Media','Launch_App1',\n            'Launch_App2'\n            ),\n        7 => array(\n            // Gui commands\n            'Add',\n            'Show', 'Submit', 'Cancel', 'Destroy',\n            'Font', 'Color', 'Margin', 'Flash', 'Default',\n            'GuiEscape','GuiClose','GuiSize','GuiContextMenu','GuiDropFilesTabStop',\n            ),\n        8 => array(\n            // Gui Controls\n            'Button',\n            'Checkbox','Radio','DropDownList','DDL',\n            'ComboBox','ListBox','ListView',\n            'Text', 'Edit', 'UpDown', 'Picture',\n            'TreeView','DateTime', 'MonthCal',\n            'Slider'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(',')','[',']',\n        '+','-','*','/','&','^',\n        '=','+=','-=','*=','/=','&=',\n        '==','<','<=','>','>=',':=',\n        ',','.'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false,\n        8 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #AAAAFF; font-weight: bold;',       // reserved #blue\n            2 => 'color: #88FF88;',                         // BIV yellow\n            3 => 'color: #FF00FF; font-style: italic;',       // commands purple\n            4 => 'color: #888844; font-weight: bold;',       // functions #0080FF\n            5 => 'color: #000000; font-style: italic;',    // directives #black\n            6 => 'color: #FF0000; font-style: italic;',      // hotkeys #red\n            7 => 'color: #000000; font-style: italic;',    // gui commands #black\n            8 => 'color: #000000; font-style: italic;'      // gui controls\n            ),\n        'COMMENTS' => array(\n            'MULTI' => 'font-style: italic; color: #669900;',\n            1 => 'font-style: italic; color: #009933;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #00FF00; font-weight: bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'font-weight: bold; color: #008080;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000dd;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #0000FF; font-style: italic; font-weight: italic;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000; font-weight: italic;'\n            ),\n        'REGEXPS' => array(\n            0 => 'font-weight: italic; color: #A00A0;',\n            1 => 'color: #CC0000; font-style: italic;',\n            2 => 'color: #DD0000; font-style: italic;',\n            3 => 'color: #88FF88;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        1 => '_'\n        ),\n    'REGEXPS' => array(\n        //Variables\n        0 => '%[a-zA-Z_][a-zA-Z0-9_]*%',\n        //hotstrings\n        1 => '::[\\w\\d]+::',\n        //labels\n        2 => '\\w[\\w\\d]+:\\s',\n        //Built-in Variables\n        3 => '\\bA_\\w+\\b(?![^<]*>)'\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => 'http://www.autohotkey.com/docs/Variables.htm#{FNAME}',\n        3 => 'http://www.autohotkey.com/docs/commands/{FNAME}.htm',\n        4 => 'http://www.autohotkey.com/docs/Functions.htm#BuiltIn',\n        5 => 'http://www.autohotkey.com/docs/commands/_{FNAME}.htm',\n        6 => '',\n        7 => 'http://www.autohotkey.com/docs/commands/Gui.htm#{FNAME}',\n        8 => 'http://www.autohotkey.com/docs/commands/GuiControls.htm#{FNAME}'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        1 => true,\n        2 => true,\n        3 => true\n        ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            5 => array(\n                'DISALLOWED_BEFORE' => '(?<!\\w)\\#'\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/autoit.php",
    "content": "<?php\n/*************************************************************************************\n * autoit.php\n * --------\n * Author: big_daddy, guinness & Tlem\n * Copyright: (c) 2006-2015\n * Release Version: 1.0.9.1\n * Date Started: 2006/01/26\n *\n * AutoIt: v3.3.14.2\n * Updated: 2015/09/18\n *\n * AutoIt language file for GeSHi.\n *\n * CHANGES\n * -------\n * Release 1.0.8.11 (2014/01/03) by guinness\n * - Added: Split directives so as to point to their specific URL.\n * - Fixed: #EndRegion not highlighting correctly.\n * - Fixed: AutoItWrapper directives and settings were incorrectly highlighting.\n * - Fixed: Highlighting of hex values and complex math values.\n * - Fixed: Include file name to the correct colour scheme.\n * - Fixed: Incorrectly highlighting the _ (underscore).\n * - Fixed: Upper case #include being incorrectly highlighted.\n * - Fixed: Variables and macros were being incorrectly highlighted.\n * - Fixed: Generation based on AutoIt_php.ini file to commit only on specific GeSHi change.\n * Release 1.0.8.1 (2008/09/15) by Tlem\n * - Added: http://www.autoitscript.com/autoit3/docs/functions/{FNAME}.htm\n * - Fixed: The link on functions will now correctly re-direct to\n * Release 1.0.7.20 (2006/01/26)\n * - Initial Release\n *\n * TODO:\n * ----------\n * - None\n *\n * Reference: http://www.autoitscript.com/autoit3/docs/\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'AutoIt',\n    'COMMENT_SINGLE' => array(\n        1 => ';',\n        2 => ';~'\n    ),\n    'COMMENT_MULTI' => array(\n        '#comments-start' => '#comments-end',\n        '#cs' => '#ce'),\n    'COMMENT_REGEXP' => array(\n        0 => '/(?<=(i|I)nclude)\\s*<.*?>/'\n    ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'And', 'ByRef', 'Case', 'Const', 'ContinueCase', 'ContinueLoop',\n            'Default', 'Dim', 'Do', 'Else', 'ElseIf', 'EndFunc', 'EndIf', 'EndSelect',\n            'EndSwitch', 'EndWith', 'Enum', 'Exit', 'ExitLoop', 'False', 'For', 'Func',\n            'Global', 'If', 'In', 'Local', 'Next', 'Not', 'Null', 'Or', 'ReDim',\n            'Return', 'Select', 'Static', 'Step', 'Switch', 'Then', 'To', 'True',\n            'Until', 'Volatile', 'WEnd', 'While', 'With'\n        ),\n        2 => array(\n            '@AppDataCommonDir', '@AppDataDir', '@AutoItExe', '@AutoItPID',\n            '@AutoItVersion', '@AutoItX64', '@COM_EventObj', '@CommonFilesDir',\n            '@Compiled', '@ComputerName', '@ComSpec', '@CPUArch', '@CR', '@CRLF',\n            '@DesktopCommonDir', '@DesktopDepth', '@DesktopDir', '@DesktopHeight',\n            '@DesktopRefresh', '@DesktopWidth', '@DocumentsCommonDir', '@error',\n            '@exitCode', '@exitMethod', '@extended', '@FavoritesCommonDir',\n            '@FavoritesDir', '@GUI_CtrlHandle', '@GUI_CtrlId', '@GUI_DragFile',\n            '@GUI_DragId', '@GUI_DropId', '@GUI_WinHandle', '@HomeDrive',\n            '@HomePath', '@HomeShare', '@HotKeyPressed', '@HOUR', '@IPAddress1',\n            '@IPAddress2', '@IPAddress3', '@IPAddress4', '@KBLayout', '@LF',\n            '@LocalAppDataDir', '@LogonDNSDomain', '@LogonDomain', '@LogonServer',\n            '@MDAY', '@MIN', '@MON', '@MSEC', '@MUILang', '@MyDocumentsDir',\n            '@NumParams', '@OSArch', '@OSBuild', '@OSLang', '@OSServicePack',\n            '@OSType', '@OSVersion', '@ProgramFilesDir', '@ProgramsCommonDir',\n            '@ProgramsDir', '@ScriptDir', '@ScriptFullPath', '@ScriptLineNumber',\n            '@ScriptName', '@SEC', '@StartMenuCommonDir', '@StartMenuDir',\n            '@StartupCommonDir', '@StartupDir', '@SW_DISABLE', '@SW_ENABLE',\n            '@SW_HIDE', '@SW_LOCK', '@SW_MAXIMIZE', '@SW_MINIMIZE', '@SW_RESTORE',\n            '@SW_SHOW', '@SW_SHOWDEFAULT', '@SW_SHOWMAXIMIZED',\n            '@SW_SHOWMINIMIZED', '@SW_SHOWMINNOACTIVE', '@SW_SHOWNA',\n            '@SW_SHOWNOACTIVATE', '@SW_SHOWNORMAL', '@SW_UNLOCK', '@SystemDir',\n            '@TAB', '@TempDir', '@TRAY_ID', '@TrayIconFlashing', '@TrayIconVisible',\n            '@UserName', '@UserProfileDir', '@WDAY', '@WindowsDir', '@WorkingDir',\n            '@YDAY', '@YEAR'\n        ),\n        3 => array(\n            'Abs', 'ACos', 'AdlibRegister', 'AdlibUnRegister', 'Asc', 'AscW', 'ASin',\n            'Assign', 'ATan', 'AutoItSetOption', 'AutoItWinGetTitle',\n            'AutoItWinSetTitle', 'Beep', 'Binary', 'BinaryLen', 'BinaryMid',\n            'BinaryToString', 'BitAND', 'BitNOT', 'BitOR', 'BitRotate', 'BitShift',\n            'BitXOR', 'BlockInput', 'Break', 'Call', 'CDTray', 'Ceiling', 'Chr',\n            'ChrW', 'ClipGet', 'ClipPut', 'ConsoleRead', 'ConsoleWrite',\n            'ConsoleWriteError', 'ControlClick', 'ControlCommand',\n            'ControlDisable', 'ControlEnable', 'ControlFocus', 'ControlGetFocus',\n            'ControlGetHandle', 'ControlGetPos', 'ControlGetText', 'ControlHide',\n            'ControlListView', 'ControlMove', 'ControlSend', 'ControlSetText',\n            'ControlShow', 'ControlTreeView', 'Cos', 'Dec', 'DirCopy', 'DirCreate',\n            'DirGetSize', 'DirMove', 'DirRemove', 'DllCall', 'DllCallAddress',\n            'DllCallbackFree', 'DllCallbackGetPtr', 'DllCallbackRegister',\n            'DllClose', 'DllOpen', 'DllStructCreate', 'DllStructGetData',\n            'DllStructGetPtr', 'DllStructGetSize', 'DllStructSetData',\n            'DriveGetDrive', 'DriveGetFileSystem', 'DriveGetLabel',\n            'DriveGetSerial', 'DriveGetType', 'DriveMapAdd', 'DriveMapDel',\n            'DriveMapGet', 'DriveSetLabel', 'DriveSpaceFree', 'DriveSpaceTotal',\n            'DriveStatus', 'EnvGet', 'EnvSet', 'EnvUpdate', 'Eval', 'Execute', 'Exp',\n            'FileChangeDir', 'FileClose', 'FileCopy', 'FileCreateNTFSLink',\n            'FileCreateShortcut', 'FileDelete', 'FileExists', 'FileFindFirstFile',\n            'FileFindNextFile', 'FileFlush', 'FileGetAttrib', 'FileGetEncoding',\n            'FileGetLongName', 'FileGetPos', 'FileGetShortcut', 'FileGetShortName',\n            'FileGetSize', 'FileGetTime', 'FileGetVersion', 'FileInstall',\n            'FileMove', 'FileOpen', 'FileOpenDialog', 'FileRead', 'FileReadLine',\n            'FileReadToArray', 'FileRecycle', 'FileRecycleEmpty', 'FileSaveDialog',\n            'FileSelectFolder', 'FileSetAttrib', 'FileSetEnd', 'FileSetPos',\n            'FileSetTime', 'FileWrite', 'FileWriteLine', 'Floor', 'FtpSetProxy',\n            'FuncName', 'GUICreate', 'GUICtrlCreateAvi', 'GUICtrlCreateButton',\n            'GUICtrlCreateCheckbox', 'GUICtrlCreateCombo',\n            'GUICtrlCreateContextMenu', 'GUICtrlCreateDate', 'GUICtrlCreateDummy',\n            'GUICtrlCreateEdit', 'GUICtrlCreateGraphic', 'GUICtrlCreateGroup',\n            'GUICtrlCreateIcon', 'GUICtrlCreateInput', 'GUICtrlCreateLabel',\n            'GUICtrlCreateList', 'GUICtrlCreateListView',\n            'GUICtrlCreateListViewItem', 'GUICtrlCreateMenu',\n            'GUICtrlCreateMenuItem', 'GUICtrlCreateMonthCal', 'GUICtrlCreateObj',\n            'GUICtrlCreatePic', 'GUICtrlCreateProgress', 'GUICtrlCreateRadio',\n            'GUICtrlCreateSlider', 'GUICtrlCreateTab', 'GUICtrlCreateTabItem',\n            'GUICtrlCreateTreeView', 'GUICtrlCreateTreeViewItem',\n            'GUICtrlCreateUpdown', 'GUICtrlDelete', 'GUICtrlGetHandle',\n            'GUICtrlGetState', 'GUICtrlRead', 'GUICtrlRecvMsg',\n            'GUICtrlRegisterListViewSort', 'GUICtrlSendMsg', 'GUICtrlSendToDummy',\n            'GUICtrlSetBkColor', 'GUICtrlSetColor', 'GUICtrlSetCursor',\n            'GUICtrlSetData', 'GUICtrlSetDefBkColor', 'GUICtrlSetDefColor',\n            'GUICtrlSetFont', 'GUICtrlSetGraphic', 'GUICtrlSetImage',\n            'GUICtrlSetLimit', 'GUICtrlSetOnEvent', 'GUICtrlSetPos',\n            'GUICtrlSetResizing', 'GUICtrlSetState', 'GUICtrlSetStyle',\n            'GUICtrlSetTip', 'GUIDelete', 'GUIGetCursorInfo', 'GUIGetMsg',\n            'GUIGetStyle', 'GUIRegisterMsg', 'GUISetAccelerators', 'GUISetBkColor',\n            'GUISetCoord', 'GUISetCursor', 'GUISetFont', 'GUISetHelp', 'GUISetIcon',\n            'GUISetOnEvent', 'GUISetState', 'GUISetStyle', 'GUIStartGroup',\n            'GUISwitch', 'Hex', 'HotKeySet', 'HttpSetProxy', 'HttpSetUserAgent',\n            'HWnd', 'InetClose', 'InetGet', 'InetGetInfo', 'InetGetSize', 'InetRead',\n            'IniDelete', 'IniRead', 'IniReadSection', 'IniReadSectionNames',\n            'IniRenameSection', 'IniWrite', 'IniWriteSection', 'InputBox', 'Int',\n            'IsAdmin', 'IsArray', 'IsBinary', 'IsBool', 'IsDeclared', 'IsDllStruct',\n            'IsFloat', 'IsFunc', 'IsHWnd', 'IsInt', 'IsKeyword', 'IsNumber', 'IsObj',\n            'IsPtr', 'IsString', 'Log', 'MemGetStats', 'Mod', 'MouseClick',\n            'MouseClickDrag', 'MouseDown', 'MouseGetCursor', 'MouseGetPos',\n            'MouseMove', 'MouseUp', 'MouseWheel', 'MsgBox', 'Number', 'ObjCreate',\n            'ObjCreateInterface', 'ObjEvent', 'ObjGet', 'ObjName',\n            'OnAutoItExitRegister', 'OnAutoItExitUnRegister', 'Opt', 'Ping',\n            'PixelChecksum', 'PixelGetColor', 'PixelSearch', 'ProcessClose',\n            'ProcessExists', 'ProcessGetStats', 'ProcessList',\n            'ProcessSetPriority', 'ProcessWait', 'ProcessWaitClose', 'ProgressOff',\n            'ProgressOn', 'ProgressSet', 'Ptr', 'Random', 'RegDelete', 'RegEnumKey',\n            'RegEnumVal', 'RegRead', 'RegWrite', 'Round', 'Run', 'RunAs', 'RunAsWait',\n            'RunWait', 'Send', 'SendKeepActive', 'SetError', 'SetExtended',\n            'ShellExecute', 'ShellExecuteWait', 'Shutdown', 'Sin', 'Sleep',\n            'SoundPlay', 'SoundSetWaveVolume', 'SplashImageOn', 'SplashOff',\n            'SplashTextOn', 'Sqrt', 'SRandom', 'StatusbarGetText', 'StderrRead',\n            'StdinWrite', 'StdioClose', 'StdoutRead', 'String', 'StringAddCR',\n            'StringCompare', 'StringFormat', 'StringFromASCIIArray', 'StringInStr',\n            'StringIsAlNum', 'StringIsAlpha', 'StringIsASCII', 'StringIsDigit',\n            'StringIsFloat', 'StringIsInt', 'StringIsLower', 'StringIsSpace',\n            'StringIsUpper', 'StringIsXDigit', 'StringLeft', 'StringLen',\n            'StringLower', 'StringMid', 'StringRegExp', 'StringRegExpReplace',\n            'StringReplace', 'StringReverse', 'StringRight', 'StringSplit',\n            'StringStripCR', 'StringStripWS', 'StringToASCIIArray',\n            'StringToBinary', 'StringTrimLeft', 'StringTrimRight', 'StringUpper',\n            'Tan', 'TCPAccept', 'TCPCloseSocket', 'TCPConnect', 'TCPListen',\n            'TCPNameToIP', 'TCPRecv', 'TCPSend', 'TCPShutdown', 'TCPStartup',\n            'TimerDiff', 'TimerInit', 'ToolTip', 'TrayCreateItem', 'TrayCreateMenu',\n            'TrayGetMsg', 'TrayItemDelete', 'TrayItemGetHandle',\n            'TrayItemGetState', 'TrayItemGetText', 'TrayItemSetOnEvent',\n            'TrayItemSetState', 'TrayItemSetText', 'TraySetClick', 'TraySetIcon',\n            'TraySetOnEvent', 'TraySetPauseIcon', 'TraySetState', 'TraySetToolTip',\n            'TrayTip', 'UBound', 'UDPBind', 'UDPCloseSocket', 'UDPOpen', 'UDPRecv',\n            'UDPSend', 'UDPShutdown', 'UDPStartup', 'VarGetType', 'WinActivate',\n            'WinActive', 'WinClose', 'WinExists', 'WinFlash', 'WinGetCaretPos',\n            'WinGetClassList', 'WinGetClientSize', 'WinGetHandle', 'WinGetPos',\n            'WinGetProcess', 'WinGetState', 'WinGetText', 'WinGetTitle', 'WinKill',\n            'WinList', 'WinMenuSelectItem', 'WinMinimizeAll', 'WinMinimizeAllUndo',\n            'WinMove', 'WinSetOnTop', 'WinSetState', 'WinSetTitle', 'WinSetTrans',\n            'WinWait', 'WinWaitActive', 'WinWaitClose', 'WinWaitNotActive'\n        ),\n        4 => array(\n            'Array1DToHistogram', 'ArrayAdd', 'ArrayBinarySearch',\n            'ArrayColDelete', 'ArrayColInsert', 'ArrayCombinations',\n            'ArrayConcatenate', 'ArrayDelete', 'ArrayDisplay', 'ArrayExtract',\n            'ArrayFindAll', 'ArrayInsert', 'ArrayMax', 'ArrayMaxIndex', 'ArrayMin',\n            'ArrayMinIndex', 'ArrayPermute', 'ArrayPop', 'ArrayPush',\n            'ArrayReverse', 'ArraySearch', 'ArrayShuffle', 'ArraySort', 'ArraySwap',\n            'ArrayToClip', 'ArrayToString', 'ArrayTranspose', 'ArrayTrim',\n            'ArrayUnique', 'Assert', 'ChooseColor', 'ChooseFont',\n            'ClipBoard_ChangeChain', 'ClipBoard_Close', 'ClipBoard_CountFormats',\n            'ClipBoard_Empty', 'ClipBoard_EnumFormats', 'ClipBoard_FormatStr',\n            'ClipBoard_GetData', 'ClipBoard_GetDataEx', 'ClipBoard_GetFormatName',\n            'ClipBoard_GetOpenWindow', 'ClipBoard_GetOwner',\n            'ClipBoard_GetPriorityFormat', 'ClipBoard_GetSequenceNumber',\n            'ClipBoard_GetViewer', 'ClipBoard_IsFormatAvailable',\n            'ClipBoard_Open', 'ClipBoard_RegisterFormat', 'ClipBoard_SetData',\n            'ClipBoard_SetDataEx', 'ClipBoard_SetViewer', 'ClipPutFile',\n            'ColorConvertHSLtoRGB', 'ColorConvertRGBtoHSL', 'ColorGetBlue',\n            'ColorGetCOLORREF', 'ColorGetGreen', 'ColorGetRed', 'ColorGetRGB',\n            'ColorSetCOLORREF', 'ColorSetRGB', 'Crypt_DecryptData',\n            'Crypt_DecryptFile', 'Crypt_DeriveKey', 'Crypt_DestroyKey',\n            'Crypt_EncryptData', 'Crypt_EncryptFile', 'Crypt_GenRandom',\n            'Crypt_HashData', 'Crypt_HashFile', 'Crypt_Shutdown', 'Crypt_Startup',\n            'DateAdd', 'DateDayOfWeek', 'DateDaysInMonth', 'DateDiff',\n            'DateIsLeapYear', 'DateIsValid', 'DateTimeFormat', 'DateTimeSplit',\n            'DateToDayOfWeek', 'DateToDayOfWeekISO', 'DateToDayValue',\n            'DateToMonth', 'Date_Time_CompareFileTime',\n            'Date_Time_DOSDateTimeToArray', 'Date_Time_DOSDateTimeToFileTime',\n            'Date_Time_DOSDateTimeToStr', 'Date_Time_DOSDateToArray',\n            'Date_Time_DOSDateToStr', 'Date_Time_DOSTimeToArray',\n            'Date_Time_DOSTimeToStr', 'Date_Time_EncodeFileTime',\n            'Date_Time_EncodeSystemTime', 'Date_Time_FileTimeToArray',\n            'Date_Time_FileTimeToDOSDateTime',\n            'Date_Time_FileTimeToLocalFileTime', 'Date_Time_FileTimeToStr',\n            'Date_Time_FileTimeToSystemTime', 'Date_Time_GetFileTime',\n            'Date_Time_GetLocalTime', 'Date_Time_GetSystemTime',\n            'Date_Time_GetSystemTimeAdjustment',\n            'Date_Time_GetSystemTimeAsFileTime', 'Date_Time_GetSystemTimes',\n            'Date_Time_GetTickCount', 'Date_Time_GetTimeZoneInformation',\n            'Date_Time_LocalFileTimeToFileTime', 'Date_Time_SetFileTime',\n            'Date_Time_SetLocalTime', 'Date_Time_SetSystemTime',\n            'Date_Time_SetSystemTimeAdjustment',\n            'Date_Time_SetTimeZoneInformation', 'Date_Time_SystemTimeToArray',\n            'Date_Time_SystemTimeToDateStr', 'Date_Time_SystemTimeToDateTimeStr',\n            'Date_Time_SystemTimeToFileTime', 'Date_Time_SystemTimeToTimeStr',\n            'Date_Time_SystemTimeToTzSpecificLocalTime',\n            'Date_Time_TzSpecificLocalTimeToSystemTime', 'DayValueToDate',\n            'DebugBugReportEnv', 'DebugCOMError', 'DebugOut', 'DebugReport',\n            'DebugReportEx', 'DebugReportVar', 'DebugSetup', 'Degree',\n            'EventLog__Backup', 'EventLog__Clear', 'EventLog__Close',\n            'EventLog__Count', 'EventLog__DeregisterSource', 'EventLog__Full',\n            'EventLog__Notify', 'EventLog__Oldest', 'EventLog__Open',\n            'EventLog__OpenBackup', 'EventLog__Read', 'EventLog__RegisterSource',\n            'EventLog__Report', 'Excel_BookAttach', 'Excel_BookClose',\n            'Excel_BookList', 'Excel_BookNew', 'Excel_BookOpen',\n            'Excel_BookOpenText', 'Excel_BookSave', 'Excel_BookSaveAs',\n            'Excel_Close', 'Excel_ColumnToLetter', 'Excel_ColumnToNumber',\n            'Excel_ConvertFormula', 'Excel_Export', 'Excel_FilterGet',\n            'Excel_FilterSet', 'Excel_Open', 'Excel_PictureAdd', 'Excel_Print',\n            'Excel_RangeCopyPaste', 'Excel_RangeDelete', 'Excel_RangeFind',\n            'Excel_RangeInsert', 'Excel_RangeLinkAddRemove', 'Excel_RangeRead',\n            'Excel_RangeReplace', 'Excel_RangeSort', 'Excel_RangeValidate',\n            'Excel_RangeWrite', 'Excel_SheetAdd', 'Excel_SheetCopyMove',\n            'Excel_SheetDelete', 'Excel_SheetList', 'FileCountLines', 'FileCreate',\n            'FileListToArray', 'FileListToArrayRec', 'FilePrint',\n            'FileReadToArray', 'FileWriteFromArray', 'FileWriteLog',\n            'FileWriteToLine', 'FTP_Close', 'FTP_Command', 'FTP_Connect',\n            'FTP_DecodeInternetStatus', 'FTP_DirCreate', 'FTP_DirDelete',\n            'FTP_DirGetCurrent', 'FTP_DirPutContents', 'FTP_DirSetCurrent',\n            'FTP_FileClose', 'FTP_FileDelete', 'FTP_FileGet', 'FTP_FileGetSize',\n            'FTP_FileOpen', 'FTP_FilePut', 'FTP_FileRead', 'FTP_FileRename',\n            'FTP_FileTimeLoHiToStr', 'FTP_FindFileClose', 'FTP_FindFileFirst',\n            'FTP_FindFileNext', 'FTP_GetLastResponseInfo', 'FTP_ListToArray',\n            'FTP_ListToArray2D', 'FTP_ListToArrayEx', 'FTP_Open',\n            'FTP_ProgressDownload', 'FTP_ProgressUpload', 'FTP_SetStatusCallback',\n            'GDIPlus_ArrowCapCreate', 'GDIPlus_ArrowCapDispose',\n            'GDIPlus_ArrowCapGetFillState', 'GDIPlus_ArrowCapGetHeight',\n            'GDIPlus_ArrowCapGetMiddleInset', 'GDIPlus_ArrowCapGetWidth',\n            'GDIPlus_ArrowCapSetFillState', 'GDIPlus_ArrowCapSetHeight',\n            'GDIPlus_ArrowCapSetMiddleInset', 'GDIPlus_ArrowCapSetWidth',\n            'GDIPlus_BitmapApplyEffect', 'GDIPlus_BitmapApplyEffectEx',\n            'GDIPlus_BitmapCloneArea', 'GDIPlus_BitmapConvertFormat',\n            'GDIPlus_BitmapCreateApplyEffect',\n            'GDIPlus_BitmapCreateApplyEffectEx',\n            'GDIPlus_BitmapCreateDIBFromBitmap', 'GDIPlus_BitmapCreateFromFile',\n            'GDIPlus_BitmapCreateFromGraphics',\n            'GDIPlus_BitmapCreateFromHBITMAP', 'GDIPlus_BitmapCreateFromHICON',\n            'GDIPlus_BitmapCreateFromHICON32', 'GDIPlus_BitmapCreateFromMemory',\n            'GDIPlus_BitmapCreateFromResource', 'GDIPlus_BitmapCreateFromScan0',\n            'GDIPlus_BitmapCreateFromStream',\n            'GDIPlus_BitmapCreateHBITMAPFromBitmap', 'GDIPlus_BitmapDispose',\n            'GDIPlus_BitmapGetHistogram', 'GDIPlus_BitmapGetHistogramEx',\n            'GDIPlus_BitmapGetHistogramSize', 'GDIPlus_BitmapGetPixel',\n            'GDIPlus_BitmapLockBits', 'GDIPlus_BitmapSetPixel',\n            'GDIPlus_BitmapUnlockBits', 'GDIPlus_BrushClone',\n            'GDIPlus_BrushCreateSolid', 'GDIPlus_BrushDispose',\n            'GDIPlus_BrushGetSolidColor', 'GDIPlus_BrushGetType',\n            'GDIPlus_BrushSetSolidColor', 'GDIPlus_ColorMatrixCreate',\n            'GDIPlus_ColorMatrixCreateGrayScale',\n            'GDIPlus_ColorMatrixCreateNegative',\n            'GDIPlus_ColorMatrixCreateSaturation',\n            'GDIPlus_ColorMatrixCreateScale',\n            'GDIPlus_ColorMatrixCreateTranslate', 'GDIPlus_CustomLineCapClone',\n            'GDIPlus_CustomLineCapCreate', 'GDIPlus_CustomLineCapDispose',\n            'GDIPlus_CustomLineCapGetStrokeCaps',\n            'GDIPlus_CustomLineCapSetStrokeCaps', 'GDIPlus_Decoders',\n            'GDIPlus_DecodersGetCount', 'GDIPlus_DecodersGetSize',\n            'GDIPlus_DrawImageFX', 'GDIPlus_DrawImageFXEx',\n            'GDIPlus_DrawImagePoints', 'GDIPlus_EffectCreate',\n            'GDIPlus_EffectCreateBlur', 'GDIPlus_EffectCreateBrightnessContrast',\n            'GDIPlus_EffectCreateColorBalance', 'GDIPlus_EffectCreateColorCurve',\n            'GDIPlus_EffectCreateColorLUT', 'GDIPlus_EffectCreateColorMatrix',\n            'GDIPlus_EffectCreateHueSaturationLightness',\n            'GDIPlus_EffectCreateLevels', 'GDIPlus_EffectCreateRedEyeCorrection',\n            'GDIPlus_EffectCreateSharpen', 'GDIPlus_EffectCreateTint',\n            'GDIPlus_EffectDispose', 'GDIPlus_EffectGetParameters',\n            'GDIPlus_EffectSetParameters', 'GDIPlus_Encoders',\n            'GDIPlus_EncodersGetCLSID', 'GDIPlus_EncodersGetCount',\n            'GDIPlus_EncodersGetParamList', 'GDIPlus_EncodersGetParamListSize',\n            'GDIPlus_EncodersGetSize', 'GDIPlus_FontCreate',\n            'GDIPlus_FontDispose', 'GDIPlus_FontFamilyCreate',\n            'GDIPlus_FontFamilyCreateFromCollection',\n            'GDIPlus_FontFamilyDispose', 'GDIPlus_FontFamilyGetCellAscent',\n            'GDIPlus_FontFamilyGetCellDescent', 'GDIPlus_FontFamilyGetEmHeight',\n            'GDIPlus_FontFamilyGetLineSpacing', 'GDIPlus_FontGetHeight',\n            'GDIPlus_FontPrivateAddFont', 'GDIPlus_FontPrivateAddMemoryFont',\n            'GDIPlus_FontPrivateCollectionDispose',\n            'GDIPlus_FontPrivateCreateCollection', 'GDIPlus_GraphicsClear',\n            'GDIPlus_GraphicsCreateFromHDC', 'GDIPlus_GraphicsCreateFromHWND',\n            'GDIPlus_GraphicsDispose', 'GDIPlus_GraphicsDrawArc',\n            'GDIPlus_GraphicsDrawBezier', 'GDIPlus_GraphicsDrawClosedCurve',\n            'GDIPlus_GraphicsDrawClosedCurve2', 'GDIPlus_GraphicsDrawCurve',\n            'GDIPlus_GraphicsDrawCurve2', 'GDIPlus_GraphicsDrawEllipse',\n            'GDIPlus_GraphicsDrawImage', 'GDIPlus_GraphicsDrawImagePointsRect',\n            'GDIPlus_GraphicsDrawImageRect', 'GDIPlus_GraphicsDrawImageRectRect',\n            'GDIPlus_GraphicsDrawLine', 'GDIPlus_GraphicsDrawPath',\n            'GDIPlus_GraphicsDrawPie', 'GDIPlus_GraphicsDrawPolygon',\n            'GDIPlus_GraphicsDrawRect', 'GDIPlus_GraphicsDrawString',\n            'GDIPlus_GraphicsDrawStringEx', 'GDIPlus_GraphicsFillClosedCurve',\n            'GDIPlus_GraphicsFillClosedCurve2', 'GDIPlus_GraphicsFillEllipse',\n            'GDIPlus_GraphicsFillPath', 'GDIPlus_GraphicsFillPie',\n            'GDIPlus_GraphicsFillPolygon', 'GDIPlus_GraphicsFillRect',\n            'GDIPlus_GraphicsFillRegion', 'GDIPlus_GraphicsGetCompositingMode',\n            'GDIPlus_GraphicsGetCompositingQuality', 'GDIPlus_GraphicsGetDC',\n            'GDIPlus_GraphicsGetInterpolationMode',\n            'GDIPlus_GraphicsGetSmoothingMode', 'GDIPlus_GraphicsGetTransform',\n            'GDIPlus_GraphicsMeasureCharacterRanges',\n            'GDIPlus_GraphicsMeasureString', 'GDIPlus_GraphicsReleaseDC',\n            'GDIPlus_GraphicsResetClip', 'GDIPlus_GraphicsResetTransform',\n            'GDIPlus_GraphicsRestore', 'GDIPlus_GraphicsRotateTransform',\n            'GDIPlus_GraphicsSave', 'GDIPlus_GraphicsScaleTransform',\n            'GDIPlus_GraphicsSetClipPath', 'GDIPlus_GraphicsSetClipRect',\n            'GDIPlus_GraphicsSetClipRegion',\n            'GDIPlus_GraphicsSetCompositingMode',\n            'GDIPlus_GraphicsSetCompositingQuality',\n            'GDIPlus_GraphicsSetInterpolationMode',\n            'GDIPlus_GraphicsSetPixelOffsetMode',\n            'GDIPlus_GraphicsSetSmoothingMode',\n            'GDIPlus_GraphicsSetTextRenderingHint',\n            'GDIPlus_GraphicsSetTransform', 'GDIPlus_GraphicsTransformPoints',\n            'GDIPlus_GraphicsTranslateTransform', 'GDIPlus_HatchBrushCreate',\n            'GDIPlus_HICONCreateFromBitmap', 'GDIPlus_ImageAttributesCreate',\n            'GDIPlus_ImageAttributesDispose',\n            'GDIPlus_ImageAttributesSetColorKeys',\n            'GDIPlus_ImageAttributesSetColorMatrix', 'GDIPlus_ImageDispose',\n            'GDIPlus_ImageGetDimension', 'GDIPlus_ImageGetFlags',\n            'GDIPlus_ImageGetGraphicsContext', 'GDIPlus_ImageGetHeight',\n            'GDIPlus_ImageGetHorizontalResolution',\n            'GDIPlus_ImageGetPixelFormat', 'GDIPlus_ImageGetRawFormat',\n            'GDIPlus_ImageGetThumbnail', 'GDIPlus_ImageGetType',\n            'GDIPlus_ImageGetVerticalResolution', 'GDIPlus_ImageGetWidth',\n            'GDIPlus_ImageLoadFromFile', 'GDIPlus_ImageLoadFromStream',\n            'GDIPlus_ImageResize', 'GDIPlus_ImageRotateFlip',\n            'GDIPlus_ImageSaveToFile', 'GDIPlus_ImageSaveToFileEx',\n            'GDIPlus_ImageSaveToStream', 'GDIPlus_ImageScale',\n            'GDIPlus_LineBrushCreate', 'GDIPlus_LineBrushCreateFromRect',\n            'GDIPlus_LineBrushCreateFromRectWithAngle',\n            'GDIPlus_LineBrushGetColors', 'GDIPlus_LineBrushGetRect',\n            'GDIPlus_LineBrushMultiplyTransform',\n            'GDIPlus_LineBrushResetTransform', 'GDIPlus_LineBrushSetBlend',\n            'GDIPlus_LineBrushSetColors', 'GDIPlus_LineBrushSetGammaCorrection',\n            'GDIPlus_LineBrushSetLinearBlend', 'GDIPlus_LineBrushSetPresetBlend',\n            'GDIPlus_LineBrushSetSigmaBlend', 'GDIPlus_LineBrushSetTransform',\n            'GDIPlus_MatrixClone', 'GDIPlus_MatrixCreate',\n            'GDIPlus_MatrixDispose', 'GDIPlus_MatrixGetElements',\n            'GDIPlus_MatrixInvert', 'GDIPlus_MatrixMultiply',\n            'GDIPlus_MatrixRotate', 'GDIPlus_MatrixScale',\n            'GDIPlus_MatrixSetElements', 'GDIPlus_MatrixShear',\n            'GDIPlus_MatrixTransformPoints', 'GDIPlus_MatrixTranslate',\n            'GDIPlus_PaletteInitialize', 'GDIPlus_ParamAdd', 'GDIPlus_ParamInit',\n            'GDIPlus_ParamSize', 'GDIPlus_PathAddArc', 'GDIPlus_PathAddBezier',\n            'GDIPlus_PathAddClosedCurve', 'GDIPlus_PathAddClosedCurve2',\n            'GDIPlus_PathAddCurve', 'GDIPlus_PathAddCurve2',\n            'GDIPlus_PathAddCurve3', 'GDIPlus_PathAddEllipse',\n            'GDIPlus_PathAddLine', 'GDIPlus_PathAddLine2', 'GDIPlus_PathAddPath',\n            'GDIPlus_PathAddPie', 'GDIPlus_PathAddPolygon',\n            'GDIPlus_PathAddRectangle', 'GDIPlus_PathAddString',\n            'GDIPlus_PathBrushCreate', 'GDIPlus_PathBrushCreateFromPath',\n            'GDIPlus_PathBrushGetCenterPoint', 'GDIPlus_PathBrushGetFocusScales',\n            'GDIPlus_PathBrushGetPointCount', 'GDIPlus_PathBrushGetRect',\n            'GDIPlus_PathBrushGetWrapMode', 'GDIPlus_PathBrushMultiplyTransform',\n            'GDIPlus_PathBrushResetTransform', 'GDIPlus_PathBrushSetBlend',\n            'GDIPlus_PathBrushSetCenterColor', 'GDIPlus_PathBrushSetCenterPoint',\n            'GDIPlus_PathBrushSetFocusScales',\n            'GDIPlus_PathBrushSetGammaCorrection',\n            'GDIPlus_PathBrushSetLinearBlend', 'GDIPlus_PathBrushSetPresetBlend',\n            'GDIPlus_PathBrushSetSigmaBlend',\n            'GDIPlus_PathBrushSetSurroundColor',\n            'GDIPlus_PathBrushSetSurroundColorsWithCount',\n            'GDIPlus_PathBrushSetTransform', 'GDIPlus_PathBrushSetWrapMode',\n            'GDIPlus_PathClone', 'GDIPlus_PathCloseFigure', 'GDIPlus_PathCreate',\n            'GDIPlus_PathCreate2', 'GDIPlus_PathDispose', 'GDIPlus_PathFlatten',\n            'GDIPlus_PathGetData', 'GDIPlus_PathGetFillMode',\n            'GDIPlus_PathGetLastPoint', 'GDIPlus_PathGetPointCount',\n            'GDIPlus_PathGetPoints', 'GDIPlus_PathGetWorldBounds',\n            'GDIPlus_PathIsOutlineVisiblePoint', 'GDIPlus_PathIsVisiblePoint',\n            'GDIPlus_PathIterCreate', 'GDIPlus_PathIterDispose',\n            'GDIPlus_PathIterGetSubpathCount', 'GDIPlus_PathIterNextMarkerPath',\n            'GDIPlus_PathIterNextSubpathPath', 'GDIPlus_PathIterRewind',\n            'GDIPlus_PathReset', 'GDIPlus_PathReverse', 'GDIPlus_PathSetFillMode',\n            'GDIPlus_PathSetMarker', 'GDIPlus_PathStartFigure',\n            'GDIPlus_PathTransform', 'GDIPlus_PathWarp', 'GDIPlus_PathWiden',\n            'GDIPlus_PathWindingModeOutline', 'GDIPlus_PenCreate',\n            'GDIPlus_PenCreate2', 'GDIPlus_PenDispose', 'GDIPlus_PenGetAlignment',\n            'GDIPlus_PenGetColor', 'GDIPlus_PenGetCustomEndCap',\n            'GDIPlus_PenGetDashCap', 'GDIPlus_PenGetDashStyle',\n            'GDIPlus_PenGetEndCap', 'GDIPlus_PenGetMiterLimit',\n            'GDIPlus_PenGetWidth', 'GDIPlus_PenSetAlignment',\n            'GDIPlus_PenSetColor', 'GDIPlus_PenSetCustomEndCap',\n            'GDIPlus_PenSetDashCap', 'GDIPlus_PenSetDashStyle',\n            'GDIPlus_PenSetEndCap', 'GDIPlus_PenSetLineCap',\n            'GDIPlus_PenSetLineJoin', 'GDIPlus_PenSetMiterLimit',\n            'GDIPlus_PenSetStartCap', 'GDIPlus_PenSetWidth',\n            'GDIPlus_RectFCreate', 'GDIPlus_RegionClone',\n            'GDIPlus_RegionCombinePath', 'GDIPlus_RegionCombineRect',\n            'GDIPlus_RegionCombineRegion', 'GDIPlus_RegionCreate',\n            'GDIPlus_RegionCreateFromPath', 'GDIPlus_RegionCreateFromRect',\n            'GDIPlus_RegionDispose', 'GDIPlus_RegionGetBounds',\n            'GDIPlus_RegionGetHRgn', 'GDIPlus_RegionTransform',\n            'GDIPlus_RegionTranslate', 'GDIPlus_Shutdown', 'GDIPlus_Startup',\n            'GDIPlus_StringFormatCreate', 'GDIPlus_StringFormatDispose',\n            'GDIPlus_StringFormatGetMeasurableCharacterRangeCount',\n            'GDIPlus_StringFormatSetAlign', 'GDIPlus_StringFormatSetLineAlign',\n            'GDIPlus_StringFormatSetMeasurableCharacterRanges',\n            'GDIPlus_TextureCreate', 'GDIPlus_TextureCreate2',\n            'GDIPlus_TextureCreateIA', 'GetIP', 'GUICtrlAVI_Close',\n            'GUICtrlAVI_Create', 'GUICtrlAVI_Destroy', 'GUICtrlAVI_IsPlaying',\n            'GUICtrlAVI_Open', 'GUICtrlAVI_OpenEx', 'GUICtrlAVI_Play',\n            'GUICtrlAVI_Seek', 'GUICtrlAVI_Show', 'GUICtrlAVI_Stop',\n            'GUICtrlButton_Click', 'GUICtrlButton_Create',\n            'GUICtrlButton_Destroy', 'GUICtrlButton_Enable',\n            'GUICtrlButton_GetCheck', 'GUICtrlButton_GetFocus',\n            'GUICtrlButton_GetIdealSize', 'GUICtrlButton_GetImage',\n            'GUICtrlButton_GetImageList', 'GUICtrlButton_GetNote',\n            'GUICtrlButton_GetNoteLength', 'GUICtrlButton_GetSplitInfo',\n            'GUICtrlButton_GetState', 'GUICtrlButton_GetText',\n            'GUICtrlButton_GetTextMargin', 'GUICtrlButton_SetCheck',\n            'GUICtrlButton_SetDontClick', 'GUICtrlButton_SetFocus',\n            'GUICtrlButton_SetImage', 'GUICtrlButton_SetImageList',\n            'GUICtrlButton_SetNote', 'GUICtrlButton_SetShield',\n            'GUICtrlButton_SetSize', 'GUICtrlButton_SetSplitInfo',\n            'GUICtrlButton_SetState', 'GUICtrlButton_SetStyle',\n            'GUICtrlButton_SetText', 'GUICtrlButton_SetTextMargin',\n            'GUICtrlButton_Show', 'GUICtrlComboBoxEx_AddDir',\n            'GUICtrlComboBoxEx_AddString', 'GUICtrlComboBoxEx_BeginUpdate',\n            'GUICtrlComboBoxEx_Create', 'GUICtrlComboBoxEx_CreateSolidBitMap',\n            'GUICtrlComboBoxEx_DeleteString', 'GUICtrlComboBoxEx_Destroy',\n            'GUICtrlComboBoxEx_EndUpdate', 'GUICtrlComboBoxEx_FindStringExact',\n            'GUICtrlComboBoxEx_GetComboBoxInfo',\n            'GUICtrlComboBoxEx_GetComboControl', 'GUICtrlComboBoxEx_GetCount',\n            'GUICtrlComboBoxEx_GetCurSel',\n            'GUICtrlComboBoxEx_GetDroppedControlRect',\n            'GUICtrlComboBoxEx_GetDroppedControlRectEx',\n            'GUICtrlComboBoxEx_GetDroppedState',\n            'GUICtrlComboBoxEx_GetDroppedWidth',\n            'GUICtrlComboBoxEx_GetEditControl', 'GUICtrlComboBoxEx_GetEditSel',\n            'GUICtrlComboBoxEx_GetEditText',\n            'GUICtrlComboBoxEx_GetExtendedStyle',\n            'GUICtrlComboBoxEx_GetExtendedUI', 'GUICtrlComboBoxEx_GetImageList',\n            'GUICtrlComboBoxEx_GetItem', 'GUICtrlComboBoxEx_GetItemEx',\n            'GUICtrlComboBoxEx_GetItemHeight', 'GUICtrlComboBoxEx_GetItemImage',\n            'GUICtrlComboBoxEx_GetItemIndent',\n            'GUICtrlComboBoxEx_GetItemOverlayImage',\n            'GUICtrlComboBoxEx_GetItemParam',\n            'GUICtrlComboBoxEx_GetItemSelectedImage',\n            'GUICtrlComboBoxEx_GetItemText', 'GUICtrlComboBoxEx_GetItemTextLen',\n            'GUICtrlComboBoxEx_GetList', 'GUICtrlComboBoxEx_GetListArray',\n            'GUICtrlComboBoxEx_GetLocale', 'GUICtrlComboBoxEx_GetLocaleCountry',\n            'GUICtrlComboBoxEx_GetLocaleLang',\n            'GUICtrlComboBoxEx_GetLocalePrimLang',\n            'GUICtrlComboBoxEx_GetLocaleSubLang',\n            'GUICtrlComboBoxEx_GetMinVisible', 'GUICtrlComboBoxEx_GetTopIndex',\n            'GUICtrlComboBoxEx_GetUnicode', 'GUICtrlComboBoxEx_InitStorage',\n            'GUICtrlComboBoxEx_InsertString', 'GUICtrlComboBoxEx_LimitText',\n            'GUICtrlComboBoxEx_ReplaceEditSel', 'GUICtrlComboBoxEx_ResetContent',\n            'GUICtrlComboBoxEx_SetCurSel', 'GUICtrlComboBoxEx_SetDroppedWidth',\n            'GUICtrlComboBoxEx_SetEditSel', 'GUICtrlComboBoxEx_SetEditText',\n            'GUICtrlComboBoxEx_SetExtendedStyle',\n            'GUICtrlComboBoxEx_SetExtendedUI', 'GUICtrlComboBoxEx_SetImageList',\n            'GUICtrlComboBoxEx_SetItem', 'GUICtrlComboBoxEx_SetItemEx',\n            'GUICtrlComboBoxEx_SetItemHeight', 'GUICtrlComboBoxEx_SetItemImage',\n            'GUICtrlComboBoxEx_SetItemIndent',\n            'GUICtrlComboBoxEx_SetItemOverlayImage',\n            'GUICtrlComboBoxEx_SetItemParam',\n            'GUICtrlComboBoxEx_SetItemSelectedImage',\n            'GUICtrlComboBoxEx_SetMinVisible', 'GUICtrlComboBoxEx_SetTopIndex',\n            'GUICtrlComboBoxEx_SetUnicode', 'GUICtrlComboBoxEx_ShowDropDown',\n            'GUICtrlComboBox_AddDir', 'GUICtrlComboBox_AddString',\n            'GUICtrlComboBox_AutoComplete', 'GUICtrlComboBox_BeginUpdate',\n            'GUICtrlComboBox_Create', 'GUICtrlComboBox_DeleteString',\n            'GUICtrlComboBox_Destroy', 'GUICtrlComboBox_EndUpdate',\n            'GUICtrlComboBox_FindString', 'GUICtrlComboBox_FindStringExact',\n            'GUICtrlComboBox_GetComboBoxInfo', 'GUICtrlComboBox_GetCount',\n            'GUICtrlComboBox_GetCueBanner', 'GUICtrlComboBox_GetCurSel',\n            'GUICtrlComboBox_GetDroppedControlRect',\n            'GUICtrlComboBox_GetDroppedControlRectEx',\n            'GUICtrlComboBox_GetDroppedState', 'GUICtrlComboBox_GetDroppedWidth',\n            'GUICtrlComboBox_GetEditSel', 'GUICtrlComboBox_GetEditText',\n            'GUICtrlComboBox_GetExtendedUI',\n            'GUICtrlComboBox_GetHorizontalExtent',\n            'GUICtrlComboBox_GetItemHeight', 'GUICtrlComboBox_GetLBText',\n            'GUICtrlComboBox_GetLBTextLen', 'GUICtrlComboBox_GetList',\n            'GUICtrlComboBox_GetListArray', 'GUICtrlComboBox_GetLocale',\n            'GUICtrlComboBox_GetLocaleCountry', 'GUICtrlComboBox_GetLocaleLang',\n            'GUICtrlComboBox_GetLocalePrimLang',\n            'GUICtrlComboBox_GetLocaleSubLang', 'GUICtrlComboBox_GetMinVisible',\n            'GUICtrlComboBox_GetTopIndex', 'GUICtrlComboBox_InitStorage',\n            'GUICtrlComboBox_InsertString', 'GUICtrlComboBox_LimitText',\n            'GUICtrlComboBox_ReplaceEditSel', 'GUICtrlComboBox_ResetContent',\n            'GUICtrlComboBox_SelectString', 'GUICtrlComboBox_SetCueBanner',\n            'GUICtrlComboBox_SetCurSel', 'GUICtrlComboBox_SetDroppedWidth',\n            'GUICtrlComboBox_SetEditSel', 'GUICtrlComboBox_SetEditText',\n            'GUICtrlComboBox_SetExtendedUI',\n            'GUICtrlComboBox_SetHorizontalExtent',\n            'GUICtrlComboBox_SetItemHeight', 'GUICtrlComboBox_SetMinVisible',\n            'GUICtrlComboBox_SetTopIndex', 'GUICtrlComboBox_ShowDropDown',\n            'GUICtrlDTP_Create', 'GUICtrlDTP_Destroy', 'GUICtrlDTP_GetMCColor',\n            'GUICtrlDTP_GetMCFont', 'GUICtrlDTP_GetMonthCal',\n            'GUICtrlDTP_GetRange', 'GUICtrlDTP_GetRangeEx',\n            'GUICtrlDTP_GetSystemTime', 'GUICtrlDTP_GetSystemTimeEx',\n            'GUICtrlDTP_SetFormat', 'GUICtrlDTP_SetMCColor',\n            'GUICtrlDTP_SetMCFont', 'GUICtrlDTP_SetRange',\n            'GUICtrlDTP_SetRangeEx', 'GUICtrlDTP_SetSystemTime',\n            'GUICtrlDTP_SetSystemTimeEx', 'GUICtrlEdit_AppendText',\n            'GUICtrlEdit_BeginUpdate', 'GUICtrlEdit_CanUndo',\n            'GUICtrlEdit_CharFromPos', 'GUICtrlEdit_Create',\n            'GUICtrlEdit_Destroy', 'GUICtrlEdit_EmptyUndoBuffer',\n            'GUICtrlEdit_EndUpdate', 'GUICtrlEdit_Find', 'GUICtrlEdit_FmtLines',\n            'GUICtrlEdit_GetCueBanner', 'GUICtrlEdit_GetFirstVisibleLine',\n            'GUICtrlEdit_GetLimitText', 'GUICtrlEdit_GetLine',\n            'GUICtrlEdit_GetLineCount', 'GUICtrlEdit_GetMargins',\n            'GUICtrlEdit_GetModify', 'GUICtrlEdit_GetPasswordChar',\n            'GUICtrlEdit_GetRECT', 'GUICtrlEdit_GetRECTEx', 'GUICtrlEdit_GetSel',\n            'GUICtrlEdit_GetText', 'GUICtrlEdit_GetTextLen',\n            'GUICtrlEdit_HideBalloonTip', 'GUICtrlEdit_InsertText',\n            'GUICtrlEdit_LineFromChar', 'GUICtrlEdit_LineIndex',\n            'GUICtrlEdit_LineLength', 'GUICtrlEdit_LineScroll',\n            'GUICtrlEdit_PosFromChar', 'GUICtrlEdit_ReplaceSel',\n            'GUICtrlEdit_Scroll', 'GUICtrlEdit_SetCueBanner',\n            'GUICtrlEdit_SetLimitText', 'GUICtrlEdit_SetMargins',\n            'GUICtrlEdit_SetModify', 'GUICtrlEdit_SetPasswordChar',\n            'GUICtrlEdit_SetReadOnly', 'GUICtrlEdit_SetRECT',\n            'GUICtrlEdit_SetRECTEx', 'GUICtrlEdit_SetRECTNP',\n            'GUICtrlEdit_SetRectNPEx', 'GUICtrlEdit_SetSel',\n            'GUICtrlEdit_SetTabStops', 'GUICtrlEdit_SetText',\n            'GUICtrlEdit_ShowBalloonTip', 'GUICtrlEdit_Undo',\n            'GUICtrlHeader_AddItem', 'GUICtrlHeader_ClearFilter',\n            'GUICtrlHeader_ClearFilterAll', 'GUICtrlHeader_Create',\n            'GUICtrlHeader_CreateDragImage', 'GUICtrlHeader_DeleteItem',\n            'GUICtrlHeader_Destroy', 'GUICtrlHeader_EditFilter',\n            'GUICtrlHeader_GetBitmapMargin', 'GUICtrlHeader_GetImageList',\n            'GUICtrlHeader_GetItem', 'GUICtrlHeader_GetItemAlign',\n            'GUICtrlHeader_GetItemBitmap', 'GUICtrlHeader_GetItemCount',\n            'GUICtrlHeader_GetItemDisplay', 'GUICtrlHeader_GetItemFlags',\n            'GUICtrlHeader_GetItemFormat', 'GUICtrlHeader_GetItemImage',\n            'GUICtrlHeader_GetItemOrder', 'GUICtrlHeader_GetItemParam',\n            'GUICtrlHeader_GetItemRect', 'GUICtrlHeader_GetItemRectEx',\n            'GUICtrlHeader_GetItemText', 'GUICtrlHeader_GetItemWidth',\n            'GUICtrlHeader_GetOrderArray', 'GUICtrlHeader_GetUnicodeFormat',\n            'GUICtrlHeader_HitTest', 'GUICtrlHeader_InsertItem',\n            'GUICtrlHeader_Layout', 'GUICtrlHeader_OrderToIndex',\n            'GUICtrlHeader_SetBitmapMargin',\n            'GUICtrlHeader_SetFilterChangeTimeout',\n            'GUICtrlHeader_SetHotDivider', 'GUICtrlHeader_SetImageList',\n            'GUICtrlHeader_SetItem', 'GUICtrlHeader_SetItemAlign',\n            'GUICtrlHeader_SetItemBitmap', 'GUICtrlHeader_SetItemDisplay',\n            'GUICtrlHeader_SetItemFlags', 'GUICtrlHeader_SetItemFormat',\n            'GUICtrlHeader_SetItemImage', 'GUICtrlHeader_SetItemOrder',\n            'GUICtrlHeader_SetItemParam', 'GUICtrlHeader_SetItemText',\n            'GUICtrlHeader_SetItemWidth', 'GUICtrlHeader_SetOrderArray',\n            'GUICtrlHeader_SetUnicodeFormat', 'GUICtrlIpAddress_ClearAddress',\n            'GUICtrlIpAddress_Create', 'GUICtrlIpAddress_Destroy',\n            'GUICtrlIpAddress_Get', 'GUICtrlIpAddress_GetArray',\n            'GUICtrlIpAddress_GetEx', 'GUICtrlIpAddress_IsBlank',\n            'GUICtrlIpAddress_Set', 'GUICtrlIpAddress_SetArray',\n            'GUICtrlIpAddress_SetEx', 'GUICtrlIpAddress_SetFocus',\n            'GUICtrlIpAddress_SetFont', 'GUICtrlIpAddress_SetRange',\n            'GUICtrlIpAddress_ShowHide', 'GUICtrlListBox_AddFile',\n            'GUICtrlListBox_AddString', 'GUICtrlListBox_BeginUpdate',\n            'GUICtrlListBox_ClickItem', 'GUICtrlListBox_Create',\n            'GUICtrlListBox_DeleteString', 'GUICtrlListBox_Destroy',\n            'GUICtrlListBox_Dir', 'GUICtrlListBox_EndUpdate',\n            'GUICtrlListBox_FindInText', 'GUICtrlListBox_FindString',\n            'GUICtrlListBox_GetAnchorIndex', 'GUICtrlListBox_GetCaretIndex',\n            'GUICtrlListBox_GetCount', 'GUICtrlListBox_GetCurSel',\n            'GUICtrlListBox_GetHorizontalExtent', 'GUICtrlListBox_GetItemData',\n            'GUICtrlListBox_GetItemHeight', 'GUICtrlListBox_GetItemRect',\n            'GUICtrlListBox_GetItemRectEx', 'GUICtrlListBox_GetListBoxInfo',\n            'GUICtrlListBox_GetLocale', 'GUICtrlListBox_GetLocaleCountry',\n            'GUICtrlListBox_GetLocaleLang', 'GUICtrlListBox_GetLocalePrimLang',\n            'GUICtrlListBox_GetLocaleSubLang', 'GUICtrlListBox_GetSel',\n            'GUICtrlListBox_GetSelCount', 'GUICtrlListBox_GetSelItems',\n            'GUICtrlListBox_GetSelItemsText', 'GUICtrlListBox_GetText',\n            'GUICtrlListBox_GetTextLen', 'GUICtrlListBox_GetTopIndex',\n            'GUICtrlListBox_InitStorage', 'GUICtrlListBox_InsertString',\n            'GUICtrlListBox_ItemFromPoint', 'GUICtrlListBox_ReplaceString',\n            'GUICtrlListBox_ResetContent', 'GUICtrlListBox_SelectString',\n            'GUICtrlListBox_SelItemRange', 'GUICtrlListBox_SelItemRangeEx',\n            'GUICtrlListBox_SetAnchorIndex', 'GUICtrlListBox_SetCaretIndex',\n            'GUICtrlListBox_SetColumnWidth', 'GUICtrlListBox_SetCurSel',\n            'GUICtrlListBox_SetHorizontalExtent', 'GUICtrlListBox_SetItemData',\n            'GUICtrlListBox_SetItemHeight', 'GUICtrlListBox_SetLocale',\n            'GUICtrlListBox_SetSel', 'GUICtrlListBox_SetTabStops',\n            'GUICtrlListBox_SetTopIndex', 'GUICtrlListBox_Sort',\n            'GUICtrlListBox_SwapString', 'GUICtrlListBox_UpdateHScroll',\n            'GUICtrlListView_AddArray', 'GUICtrlListView_AddColumn',\n            'GUICtrlListView_AddItem', 'GUICtrlListView_AddSubItem',\n            'GUICtrlListView_ApproximateViewHeight',\n            'GUICtrlListView_ApproximateViewRect',\n            'GUICtrlListView_ApproximateViewWidth', 'GUICtrlListView_Arrange',\n            'GUICtrlListView_BeginUpdate', 'GUICtrlListView_CancelEditLabel',\n            'GUICtrlListView_ClickItem', 'GUICtrlListView_CopyItems',\n            'GUICtrlListView_Create', 'GUICtrlListView_CreateDragImage',\n            'GUICtrlListView_CreateSolidBitMap',\n            'GUICtrlListView_DeleteAllItems', 'GUICtrlListView_DeleteColumn',\n            'GUICtrlListView_DeleteItem', 'GUICtrlListView_DeleteItemsSelected',\n            'GUICtrlListView_Destroy', 'GUICtrlListView_DrawDragImage',\n            'GUICtrlListView_EditLabel', 'GUICtrlListView_EnableGroupView',\n            'GUICtrlListView_EndUpdate', 'GUICtrlListView_EnsureVisible',\n            'GUICtrlListView_FindInText', 'GUICtrlListView_FindItem',\n            'GUICtrlListView_FindNearest', 'GUICtrlListView_FindParam',\n            'GUICtrlListView_FindText', 'GUICtrlListView_GetBkColor',\n            'GUICtrlListView_GetBkImage', 'GUICtrlListView_GetCallbackMask',\n            'GUICtrlListView_GetColumn', 'GUICtrlListView_GetColumnCount',\n            'GUICtrlListView_GetColumnOrder',\n            'GUICtrlListView_GetColumnOrderArray',\n            'GUICtrlListView_GetColumnWidth', 'GUICtrlListView_GetCounterPage',\n            'GUICtrlListView_GetEditControl',\n            'GUICtrlListView_GetExtendedListViewStyle',\n            'GUICtrlListView_GetFocusedGroup', 'GUICtrlListView_GetGroupCount',\n            'GUICtrlListView_GetGroupInfo',\n            'GUICtrlListView_GetGroupInfoByIndex',\n            'GUICtrlListView_GetGroupRect',\n            'GUICtrlListView_GetGroupViewEnabled', 'GUICtrlListView_GetHeader',\n            'GUICtrlListView_GetHotCursor', 'GUICtrlListView_GetHotItem',\n            'GUICtrlListView_GetHoverTime', 'GUICtrlListView_GetImageList',\n            'GUICtrlListView_GetISearchString', 'GUICtrlListView_GetItem',\n            'GUICtrlListView_GetItemChecked', 'GUICtrlListView_GetItemCount',\n            'GUICtrlListView_GetItemCut', 'GUICtrlListView_GetItemDropHilited',\n            'GUICtrlListView_GetItemEx', 'GUICtrlListView_GetItemFocused',\n            'GUICtrlListView_GetItemGroupID', 'GUICtrlListView_GetItemImage',\n            'GUICtrlListView_GetItemIndent', 'GUICtrlListView_GetItemParam',\n            'GUICtrlListView_GetItemPosition',\n            'GUICtrlListView_GetItemPositionX',\n            'GUICtrlListView_GetItemPositionY', 'GUICtrlListView_GetItemRect',\n            'GUICtrlListView_GetItemRectEx', 'GUICtrlListView_GetItemSelected',\n            'GUICtrlListView_GetItemSpacing', 'GUICtrlListView_GetItemSpacingX',\n            'GUICtrlListView_GetItemSpacingY', 'GUICtrlListView_GetItemState',\n            'GUICtrlListView_GetItemStateImage', 'GUICtrlListView_GetItemText',\n            'GUICtrlListView_GetItemTextArray',\n            'GUICtrlListView_GetItemTextString', 'GUICtrlListView_GetNextItem',\n            'GUICtrlListView_GetNumberOfWorkAreas', 'GUICtrlListView_GetOrigin',\n            'GUICtrlListView_GetOriginX', 'GUICtrlListView_GetOriginY',\n            'GUICtrlListView_GetOutlineColor',\n            'GUICtrlListView_GetSelectedColumn',\n            'GUICtrlListView_GetSelectedCount',\n            'GUICtrlListView_GetSelectedIndices',\n            'GUICtrlListView_GetSelectionMark', 'GUICtrlListView_GetStringWidth',\n            'GUICtrlListView_GetSubItemRect', 'GUICtrlListView_GetTextBkColor',\n            'GUICtrlListView_GetTextColor', 'GUICtrlListView_GetToolTips',\n            'GUICtrlListView_GetTopIndex', 'GUICtrlListView_GetUnicodeFormat',\n            'GUICtrlListView_GetView', 'GUICtrlListView_GetViewDetails',\n            'GUICtrlListView_GetViewLarge', 'GUICtrlListView_GetViewList',\n            'GUICtrlListView_GetViewRect', 'GUICtrlListView_GetViewSmall',\n            'GUICtrlListView_GetViewTile', 'GUICtrlListView_HideColumn',\n            'GUICtrlListView_HitTest', 'GUICtrlListView_InsertColumn',\n            'GUICtrlListView_InsertGroup', 'GUICtrlListView_InsertItem',\n            'GUICtrlListView_JustifyColumn', 'GUICtrlListView_MapIDToIndex',\n            'GUICtrlListView_MapIndexToID', 'GUICtrlListView_RedrawItems',\n            'GUICtrlListView_RegisterSortCallBack',\n            'GUICtrlListView_RemoveAllGroups', 'GUICtrlListView_RemoveGroup',\n            'GUICtrlListView_Scroll', 'GUICtrlListView_SetBkColor',\n            'GUICtrlListView_SetBkImage', 'GUICtrlListView_SetCallBackMask',\n            'GUICtrlListView_SetColumn', 'GUICtrlListView_SetColumnOrder',\n            'GUICtrlListView_SetColumnOrderArray',\n            'GUICtrlListView_SetColumnWidth',\n            'GUICtrlListView_SetExtendedListViewStyle',\n            'GUICtrlListView_SetGroupInfo', 'GUICtrlListView_SetHotItem',\n            'GUICtrlListView_SetHoverTime', 'GUICtrlListView_SetIconSpacing',\n            'GUICtrlListView_SetImageList', 'GUICtrlListView_SetItem',\n            'GUICtrlListView_SetItemChecked', 'GUICtrlListView_SetItemCount',\n            'GUICtrlListView_SetItemCut', 'GUICtrlListView_SetItemDropHilited',\n            'GUICtrlListView_SetItemEx', 'GUICtrlListView_SetItemFocused',\n            'GUICtrlListView_SetItemGroupID', 'GUICtrlListView_SetItemImage',\n            'GUICtrlListView_SetItemIndent', 'GUICtrlListView_SetItemParam',\n            'GUICtrlListView_SetItemPosition',\n            'GUICtrlListView_SetItemPosition32',\n            'GUICtrlListView_SetItemSelected', 'GUICtrlListView_SetItemState',\n            'GUICtrlListView_SetItemStateImage', 'GUICtrlListView_SetItemText',\n            'GUICtrlListView_SetOutlineColor',\n            'GUICtrlListView_SetSelectedColumn',\n            'GUICtrlListView_SetSelectionMark', 'GUICtrlListView_SetTextBkColor',\n            'GUICtrlListView_SetTextColor', 'GUICtrlListView_SetToolTips',\n            'GUICtrlListView_SetUnicodeFormat', 'GUICtrlListView_SetView',\n            'GUICtrlListView_SetWorkAreas', 'GUICtrlListView_SimpleSort',\n            'GUICtrlListView_SortItems', 'GUICtrlListView_SubItemHitTest',\n            'GUICtrlListView_UnRegisterSortCallBack', 'GUICtrlMenu_AddMenuItem',\n            'GUICtrlMenu_AppendMenu', 'GUICtrlMenu_CalculatePopupWindowPosition',\n            'GUICtrlMenu_CheckMenuItem', 'GUICtrlMenu_CheckRadioItem',\n            'GUICtrlMenu_CreateMenu', 'GUICtrlMenu_CreatePopup',\n            'GUICtrlMenu_DeleteMenu', 'GUICtrlMenu_DestroyMenu',\n            'GUICtrlMenu_DrawMenuBar', 'GUICtrlMenu_EnableMenuItem',\n            'GUICtrlMenu_FindItem', 'GUICtrlMenu_FindParent',\n            'GUICtrlMenu_GetItemBmp', 'GUICtrlMenu_GetItemBmpChecked',\n            'GUICtrlMenu_GetItemBmpUnchecked', 'GUICtrlMenu_GetItemChecked',\n            'GUICtrlMenu_GetItemCount', 'GUICtrlMenu_GetItemData',\n            'GUICtrlMenu_GetItemDefault', 'GUICtrlMenu_GetItemDisabled',\n            'GUICtrlMenu_GetItemEnabled', 'GUICtrlMenu_GetItemGrayed',\n            'GUICtrlMenu_GetItemHighlighted', 'GUICtrlMenu_GetItemID',\n            'GUICtrlMenu_GetItemInfo', 'GUICtrlMenu_GetItemRect',\n            'GUICtrlMenu_GetItemRectEx', 'GUICtrlMenu_GetItemState',\n            'GUICtrlMenu_GetItemStateEx', 'GUICtrlMenu_GetItemSubMenu',\n            'GUICtrlMenu_GetItemText', 'GUICtrlMenu_GetItemType',\n            'GUICtrlMenu_GetMenu', 'GUICtrlMenu_GetMenuBackground',\n            'GUICtrlMenu_GetMenuBarInfo', 'GUICtrlMenu_GetMenuContextHelpID',\n            'GUICtrlMenu_GetMenuData', 'GUICtrlMenu_GetMenuDefaultItem',\n            'GUICtrlMenu_GetMenuHeight', 'GUICtrlMenu_GetMenuInfo',\n            'GUICtrlMenu_GetMenuStyle', 'GUICtrlMenu_GetSystemMenu',\n            'GUICtrlMenu_InsertMenuItem', 'GUICtrlMenu_InsertMenuItemEx',\n            'GUICtrlMenu_IsMenu', 'GUICtrlMenu_LoadMenu',\n            'GUICtrlMenu_MapAccelerator', 'GUICtrlMenu_MenuItemFromPoint',\n            'GUICtrlMenu_RemoveMenu', 'GUICtrlMenu_SetItemBitmaps',\n            'GUICtrlMenu_SetItemBmp', 'GUICtrlMenu_SetItemBmpChecked',\n            'GUICtrlMenu_SetItemBmpUnchecked', 'GUICtrlMenu_SetItemChecked',\n            'GUICtrlMenu_SetItemData', 'GUICtrlMenu_SetItemDefault',\n            'GUICtrlMenu_SetItemDisabled', 'GUICtrlMenu_SetItemEnabled',\n            'GUICtrlMenu_SetItemGrayed', 'GUICtrlMenu_SetItemHighlighted',\n            'GUICtrlMenu_SetItemID', 'GUICtrlMenu_SetItemInfo',\n            'GUICtrlMenu_SetItemState', 'GUICtrlMenu_SetItemSubMenu',\n            'GUICtrlMenu_SetItemText', 'GUICtrlMenu_SetItemType',\n            'GUICtrlMenu_SetMenu', 'GUICtrlMenu_SetMenuBackground',\n            'GUICtrlMenu_SetMenuContextHelpID', 'GUICtrlMenu_SetMenuData',\n            'GUICtrlMenu_SetMenuDefaultItem', 'GUICtrlMenu_SetMenuHeight',\n            'GUICtrlMenu_SetMenuInfo', 'GUICtrlMenu_SetMenuStyle',\n            'GUICtrlMenu_TrackPopupMenu', 'GUICtrlMonthCal_Create',\n            'GUICtrlMonthCal_Destroy', 'GUICtrlMonthCal_GetCalendarBorder',\n            'GUICtrlMonthCal_GetCalendarCount', 'GUICtrlMonthCal_GetColor',\n            'GUICtrlMonthCal_GetColorArray', 'GUICtrlMonthCal_GetCurSel',\n            'GUICtrlMonthCal_GetCurSelStr', 'GUICtrlMonthCal_GetFirstDOW',\n            'GUICtrlMonthCal_GetFirstDOWStr', 'GUICtrlMonthCal_GetMaxSelCount',\n            'GUICtrlMonthCal_GetMaxTodayWidth',\n            'GUICtrlMonthCal_GetMinReqHeight', 'GUICtrlMonthCal_GetMinReqRect',\n            'GUICtrlMonthCal_GetMinReqRectArray',\n            'GUICtrlMonthCal_GetMinReqWidth', 'GUICtrlMonthCal_GetMonthDelta',\n            'GUICtrlMonthCal_GetMonthRange', 'GUICtrlMonthCal_GetMonthRangeMax',\n            'GUICtrlMonthCal_GetMonthRangeMaxStr',\n            'GUICtrlMonthCal_GetMonthRangeMin',\n            'GUICtrlMonthCal_GetMonthRangeMinStr',\n            'GUICtrlMonthCal_GetMonthRangeSpan', 'GUICtrlMonthCal_GetRange',\n            'GUICtrlMonthCal_GetRangeMax', 'GUICtrlMonthCal_GetRangeMaxStr',\n            'GUICtrlMonthCal_GetRangeMin', 'GUICtrlMonthCal_GetRangeMinStr',\n            'GUICtrlMonthCal_GetSelRange', 'GUICtrlMonthCal_GetSelRangeMax',\n            'GUICtrlMonthCal_GetSelRangeMaxStr',\n            'GUICtrlMonthCal_GetSelRangeMin',\n            'GUICtrlMonthCal_GetSelRangeMinStr', 'GUICtrlMonthCal_GetToday',\n            'GUICtrlMonthCal_GetTodayStr', 'GUICtrlMonthCal_GetUnicodeFormat',\n            'GUICtrlMonthCal_HitTest', 'GUICtrlMonthCal_SetCalendarBorder',\n            'GUICtrlMonthCal_SetColor', 'GUICtrlMonthCal_SetCurSel',\n            'GUICtrlMonthCal_SetDayState', 'GUICtrlMonthCal_SetFirstDOW',\n            'GUICtrlMonthCal_SetMaxSelCount', 'GUICtrlMonthCal_SetMonthDelta',\n            'GUICtrlMonthCal_SetRange', 'GUICtrlMonthCal_SetSelRange',\n            'GUICtrlMonthCal_SetToday', 'GUICtrlMonthCal_SetUnicodeFormat',\n            'GUICtrlRebar_AddBand', 'GUICtrlRebar_AddToolBarBand',\n            'GUICtrlRebar_BeginDrag', 'GUICtrlRebar_Create',\n            'GUICtrlRebar_DeleteBand', 'GUICtrlRebar_Destroy',\n            'GUICtrlRebar_DragMove', 'GUICtrlRebar_EndDrag',\n            'GUICtrlRebar_GetBandBackColor', 'GUICtrlRebar_GetBandBorders',\n            'GUICtrlRebar_GetBandBordersEx', 'GUICtrlRebar_GetBandChildHandle',\n            'GUICtrlRebar_GetBandChildSize', 'GUICtrlRebar_GetBandCount',\n            'GUICtrlRebar_GetBandForeColor', 'GUICtrlRebar_GetBandHeaderSize',\n            'GUICtrlRebar_GetBandID', 'GUICtrlRebar_GetBandIdealSize',\n            'GUICtrlRebar_GetBandLength', 'GUICtrlRebar_GetBandLParam',\n            'GUICtrlRebar_GetBandMargins', 'GUICtrlRebar_GetBandMarginsEx',\n            'GUICtrlRebar_GetBandRect', 'GUICtrlRebar_GetBandRectEx',\n            'GUICtrlRebar_GetBandStyle', 'GUICtrlRebar_GetBandStyleBreak',\n            'GUICtrlRebar_GetBandStyleChildEdge',\n            'GUICtrlRebar_GetBandStyleFixedBMP',\n            'GUICtrlRebar_GetBandStyleFixedSize',\n            'GUICtrlRebar_GetBandStyleGripperAlways',\n            'GUICtrlRebar_GetBandStyleHidden',\n            'GUICtrlRebar_GetBandStyleHideTitle',\n            'GUICtrlRebar_GetBandStyleNoGripper',\n            'GUICtrlRebar_GetBandStyleTopAlign',\n            'GUICtrlRebar_GetBandStyleUseChevron',\n            'GUICtrlRebar_GetBandStyleVariableHeight',\n            'GUICtrlRebar_GetBandText', 'GUICtrlRebar_GetBarHeight',\n            'GUICtrlRebar_GetBarInfo', 'GUICtrlRebar_GetBKColor',\n            'GUICtrlRebar_GetColorScheme', 'GUICtrlRebar_GetRowCount',\n            'GUICtrlRebar_GetRowHeight', 'GUICtrlRebar_GetTextColor',\n            'GUICtrlRebar_GetToolTips', 'GUICtrlRebar_GetUnicodeFormat',\n            'GUICtrlRebar_HitTest', 'GUICtrlRebar_IDToIndex',\n            'GUICtrlRebar_MaximizeBand', 'GUICtrlRebar_MinimizeBand',\n            'GUICtrlRebar_MoveBand', 'GUICtrlRebar_SetBandBackColor',\n            'GUICtrlRebar_SetBandForeColor', 'GUICtrlRebar_SetBandHeaderSize',\n            'GUICtrlRebar_SetBandID', 'GUICtrlRebar_SetBandIdealSize',\n            'GUICtrlRebar_SetBandLength', 'GUICtrlRebar_SetBandLParam',\n            'GUICtrlRebar_SetBandStyle', 'GUICtrlRebar_SetBandStyleBreak',\n            'GUICtrlRebar_SetBandStyleChildEdge',\n            'GUICtrlRebar_SetBandStyleFixedBMP',\n            'GUICtrlRebar_SetBandStyleFixedSize',\n            'GUICtrlRebar_SetBandStyleGripperAlways',\n            'GUICtrlRebar_SetBandStyleHidden',\n            'GUICtrlRebar_SetBandStyleHideTitle',\n            'GUICtrlRebar_SetBandStyleNoGripper',\n            'GUICtrlRebar_SetBandStyleTopAlign',\n            'GUICtrlRebar_SetBandStyleUseChevron',\n            'GUICtrlRebar_SetBandStyleVariableHeight',\n            'GUICtrlRebar_SetBandText', 'GUICtrlRebar_SetBarInfo',\n            'GUICtrlRebar_SetBKColor', 'GUICtrlRebar_SetColorScheme',\n            'GUICtrlRebar_SetTextColor', 'GUICtrlRebar_SetToolTips',\n            'GUICtrlRebar_SetUnicodeFormat', 'GUICtrlRebar_ShowBand',\n            'GUICtrlRichEdit_AppendText', 'GUICtrlRichEdit_AutoDetectURL',\n            'GUICtrlRichEdit_CanPaste', 'GUICtrlRichEdit_CanPasteSpecial',\n            'GUICtrlRichEdit_CanRedo', 'GUICtrlRichEdit_CanUndo',\n            'GUICtrlRichEdit_ChangeFontSize', 'GUICtrlRichEdit_Copy',\n            'GUICtrlRichEdit_Create', 'GUICtrlRichEdit_Cut',\n            'GUICtrlRichEdit_Deselect', 'GUICtrlRichEdit_Destroy',\n            'GUICtrlRichEdit_EmptyUndoBuffer', 'GUICtrlRichEdit_FindText',\n            'GUICtrlRichEdit_FindTextInRange', 'GUICtrlRichEdit_GetBkColor',\n            'GUICtrlRichEdit_GetCharAttributes',\n            'GUICtrlRichEdit_GetCharBkColor', 'GUICtrlRichEdit_GetCharColor',\n            'GUICtrlRichEdit_GetCharPosFromXY',\n            'GUICtrlRichEdit_GetCharPosOfNextWord',\n            'GUICtrlRichEdit_GetCharPosOfPreviousWord',\n            'GUICtrlRichEdit_GetCharWordBreakInfo',\n            'GUICtrlRichEdit_GetFirstCharPosOnLine', 'GUICtrlRichEdit_GetFont',\n            'GUICtrlRichEdit_GetLineCount', 'GUICtrlRichEdit_GetLineLength',\n            'GUICtrlRichEdit_GetLineNumberFromCharPos',\n            'GUICtrlRichEdit_GetNextRedo', 'GUICtrlRichEdit_GetNextUndo',\n            'GUICtrlRichEdit_GetNumberOfFirstVisibleLine',\n            'GUICtrlRichEdit_GetParaAlignment',\n            'GUICtrlRichEdit_GetParaAttributes', 'GUICtrlRichEdit_GetParaBorder',\n            'GUICtrlRichEdit_GetParaIndents', 'GUICtrlRichEdit_GetParaNumbering',\n            'GUICtrlRichEdit_GetParaShading', 'GUICtrlRichEdit_GetParaSpacing',\n            'GUICtrlRichEdit_GetParaTabStops', 'GUICtrlRichEdit_GetPasswordChar',\n            'GUICtrlRichEdit_GetRECT', 'GUICtrlRichEdit_GetScrollPos',\n            'GUICtrlRichEdit_GetSel', 'GUICtrlRichEdit_GetSelAA',\n            'GUICtrlRichEdit_GetSelText', 'GUICtrlRichEdit_GetSpaceUnit',\n            'GUICtrlRichEdit_GetText', 'GUICtrlRichEdit_GetTextInLine',\n            'GUICtrlRichEdit_GetTextInRange', 'GUICtrlRichEdit_GetTextLength',\n            'GUICtrlRichEdit_GetVersion', 'GUICtrlRichEdit_GetXYFromCharPos',\n            'GUICtrlRichEdit_GetZoom', 'GUICtrlRichEdit_GotoCharPos',\n            'GUICtrlRichEdit_HideSelection', 'GUICtrlRichEdit_InsertText',\n            'GUICtrlRichEdit_IsModified', 'GUICtrlRichEdit_IsTextSelected',\n            'GUICtrlRichEdit_Paste', 'GUICtrlRichEdit_PasteSpecial',\n            'GUICtrlRichEdit_PauseRedraw', 'GUICtrlRichEdit_Redo',\n            'GUICtrlRichEdit_ReplaceText', 'GUICtrlRichEdit_ResumeRedraw',\n            'GUICtrlRichEdit_ScrollLineOrPage', 'GUICtrlRichEdit_ScrollLines',\n            'GUICtrlRichEdit_ScrollToCaret', 'GUICtrlRichEdit_SetBkColor',\n            'GUICtrlRichEdit_SetCharAttributes',\n            'GUICtrlRichEdit_SetCharBkColor', 'GUICtrlRichEdit_SetCharColor',\n            'GUICtrlRichEdit_SetEventMask', 'GUICtrlRichEdit_SetFont',\n            'GUICtrlRichEdit_SetLimitOnText', 'GUICtrlRichEdit_SetModified',\n            'GUICtrlRichEdit_SetParaAlignment',\n            'GUICtrlRichEdit_SetParaAttributes', 'GUICtrlRichEdit_SetParaBorder',\n            'GUICtrlRichEdit_SetParaIndents', 'GUICtrlRichEdit_SetParaNumbering',\n            'GUICtrlRichEdit_SetParaShading', 'GUICtrlRichEdit_SetParaSpacing',\n            'GUICtrlRichEdit_SetParaTabStops', 'GUICtrlRichEdit_SetPasswordChar',\n            'GUICtrlRichEdit_SetReadOnly', 'GUICtrlRichEdit_SetRECT',\n            'GUICtrlRichEdit_SetScrollPos', 'GUICtrlRichEdit_SetSel',\n            'GUICtrlRichEdit_SetSpaceUnit', 'GUICtrlRichEdit_SetTabStops',\n            'GUICtrlRichEdit_SetText', 'GUICtrlRichEdit_SetUndoLimit',\n            'GUICtrlRichEdit_SetZoom', 'GUICtrlRichEdit_StreamFromFile',\n            'GUICtrlRichEdit_StreamFromVar', 'GUICtrlRichEdit_StreamToFile',\n            'GUICtrlRichEdit_StreamToVar', 'GUICtrlRichEdit_Undo',\n            'GUICtrlSlider_ClearSel', 'GUICtrlSlider_ClearTics',\n            'GUICtrlSlider_Create', 'GUICtrlSlider_Destroy',\n            'GUICtrlSlider_GetBuddy', 'GUICtrlSlider_GetChannelRect',\n            'GUICtrlSlider_GetChannelRectEx', 'GUICtrlSlider_GetLineSize',\n            'GUICtrlSlider_GetLogicalTics', 'GUICtrlSlider_GetNumTics',\n            'GUICtrlSlider_GetPageSize', 'GUICtrlSlider_GetPos',\n            'GUICtrlSlider_GetRange', 'GUICtrlSlider_GetRangeMax',\n            'GUICtrlSlider_GetRangeMin', 'GUICtrlSlider_GetSel',\n            'GUICtrlSlider_GetSelEnd', 'GUICtrlSlider_GetSelStart',\n            'GUICtrlSlider_GetThumbLength', 'GUICtrlSlider_GetThumbRect',\n            'GUICtrlSlider_GetThumbRectEx', 'GUICtrlSlider_GetTic',\n            'GUICtrlSlider_GetTicPos', 'GUICtrlSlider_GetToolTips',\n            'GUICtrlSlider_GetUnicodeFormat', 'GUICtrlSlider_SetBuddy',\n            'GUICtrlSlider_SetLineSize', 'GUICtrlSlider_SetPageSize',\n            'GUICtrlSlider_SetPos', 'GUICtrlSlider_SetRange',\n            'GUICtrlSlider_SetRangeMax', 'GUICtrlSlider_SetRangeMin',\n            'GUICtrlSlider_SetSel', 'GUICtrlSlider_SetSelEnd',\n            'GUICtrlSlider_SetSelStart', 'GUICtrlSlider_SetThumbLength',\n            'GUICtrlSlider_SetTic', 'GUICtrlSlider_SetTicFreq',\n            'GUICtrlSlider_SetTipSide', 'GUICtrlSlider_SetToolTips',\n            'GUICtrlSlider_SetUnicodeFormat', 'GUICtrlStatusBar_Create',\n            'GUICtrlStatusBar_Destroy', 'GUICtrlStatusBar_EmbedControl',\n            'GUICtrlStatusBar_GetBorders', 'GUICtrlStatusBar_GetBordersHorz',\n            'GUICtrlStatusBar_GetBordersRect', 'GUICtrlStatusBar_GetBordersVert',\n            'GUICtrlStatusBar_GetCount', 'GUICtrlStatusBar_GetHeight',\n            'GUICtrlStatusBar_GetIcon', 'GUICtrlStatusBar_GetParts',\n            'GUICtrlStatusBar_GetRect', 'GUICtrlStatusBar_GetRectEx',\n            'GUICtrlStatusBar_GetText', 'GUICtrlStatusBar_GetTextFlags',\n            'GUICtrlStatusBar_GetTextLength', 'GUICtrlStatusBar_GetTextLengthEx',\n            'GUICtrlStatusBar_GetTipText', 'GUICtrlStatusBar_GetUnicodeFormat',\n            'GUICtrlStatusBar_GetWidth', 'GUICtrlStatusBar_IsSimple',\n            'GUICtrlStatusBar_Resize', 'GUICtrlStatusBar_SetBkColor',\n            'GUICtrlStatusBar_SetIcon', 'GUICtrlStatusBar_SetMinHeight',\n            'GUICtrlStatusBar_SetParts', 'GUICtrlStatusBar_SetSimple',\n            'GUICtrlStatusBar_SetText', 'GUICtrlStatusBar_SetTipText',\n            'GUICtrlStatusBar_SetUnicodeFormat', 'GUICtrlStatusBar_ShowHide',\n            'GUICtrlTab_ActivateTab', 'GUICtrlTab_ClickTab', 'GUICtrlTab_Create',\n            'GUICtrlTab_DeleteAllItems', 'GUICtrlTab_DeleteItem',\n            'GUICtrlTab_DeselectAll', 'GUICtrlTab_Destroy', 'GUICtrlTab_FindTab',\n            'GUICtrlTab_GetCurFocus', 'GUICtrlTab_GetCurSel',\n            'GUICtrlTab_GetDisplayRect', 'GUICtrlTab_GetDisplayRectEx',\n            'GUICtrlTab_GetExtendedStyle', 'GUICtrlTab_GetImageList',\n            'GUICtrlTab_GetItem', 'GUICtrlTab_GetItemCount',\n            'GUICtrlTab_GetItemImage', 'GUICtrlTab_GetItemParam',\n            'GUICtrlTab_GetItemRect', 'GUICtrlTab_GetItemRectEx',\n            'GUICtrlTab_GetItemState', 'GUICtrlTab_GetItemText',\n            'GUICtrlTab_GetRowCount', 'GUICtrlTab_GetToolTips',\n            'GUICtrlTab_GetUnicodeFormat', 'GUICtrlTab_HighlightItem',\n            'GUICtrlTab_HitTest', 'GUICtrlTab_InsertItem',\n            'GUICtrlTab_RemoveImage', 'GUICtrlTab_SetCurFocus',\n            'GUICtrlTab_SetCurSel', 'GUICtrlTab_SetExtendedStyle',\n            'GUICtrlTab_SetImageList', 'GUICtrlTab_SetItem',\n            'GUICtrlTab_SetItemImage', 'GUICtrlTab_SetItemParam',\n            'GUICtrlTab_SetItemSize', 'GUICtrlTab_SetItemState',\n            'GUICtrlTab_SetItemText', 'GUICtrlTab_SetMinTabWidth',\n            'GUICtrlTab_SetPadding', 'GUICtrlTab_SetToolTips',\n            'GUICtrlTab_SetUnicodeFormat', 'GUICtrlToolbar_AddBitmap',\n            'GUICtrlToolbar_AddButton', 'GUICtrlToolbar_AddButtonSep',\n            'GUICtrlToolbar_AddString', 'GUICtrlToolbar_ButtonCount',\n            'GUICtrlToolbar_CheckButton', 'GUICtrlToolbar_ClickAccel',\n            'GUICtrlToolbar_ClickButton', 'GUICtrlToolbar_ClickIndex',\n            'GUICtrlToolbar_CommandToIndex', 'GUICtrlToolbar_Create',\n            'GUICtrlToolbar_Customize', 'GUICtrlToolbar_DeleteButton',\n            'GUICtrlToolbar_Destroy', 'GUICtrlToolbar_EnableButton',\n            'GUICtrlToolbar_FindToolbar', 'GUICtrlToolbar_GetAnchorHighlight',\n            'GUICtrlToolbar_GetBitmapFlags', 'GUICtrlToolbar_GetButtonBitmap',\n            'GUICtrlToolbar_GetButtonInfo', 'GUICtrlToolbar_GetButtonInfoEx',\n            'GUICtrlToolbar_GetButtonParam', 'GUICtrlToolbar_GetButtonRect',\n            'GUICtrlToolbar_GetButtonRectEx', 'GUICtrlToolbar_GetButtonSize',\n            'GUICtrlToolbar_GetButtonState', 'GUICtrlToolbar_GetButtonStyle',\n            'GUICtrlToolbar_GetButtonText', 'GUICtrlToolbar_GetColorScheme',\n            'GUICtrlToolbar_GetDisabledImageList',\n            'GUICtrlToolbar_GetExtendedStyle', 'GUICtrlToolbar_GetHotImageList',\n            'GUICtrlToolbar_GetHotItem', 'GUICtrlToolbar_GetImageList',\n            'GUICtrlToolbar_GetInsertMark', 'GUICtrlToolbar_GetInsertMarkColor',\n            'GUICtrlToolbar_GetMaxSize', 'GUICtrlToolbar_GetMetrics',\n            'GUICtrlToolbar_GetPadding', 'GUICtrlToolbar_GetRows',\n            'GUICtrlToolbar_GetString', 'GUICtrlToolbar_GetStyle',\n            'GUICtrlToolbar_GetStyleAltDrag',\n            'GUICtrlToolbar_GetStyleCustomErase', 'GUICtrlToolbar_GetStyleFlat',\n            'GUICtrlToolbar_GetStyleList', 'GUICtrlToolbar_GetStyleRegisterDrop',\n            'GUICtrlToolbar_GetStyleToolTips',\n            'GUICtrlToolbar_GetStyleTransparent',\n            'GUICtrlToolbar_GetStyleWrapable', 'GUICtrlToolbar_GetTextRows',\n            'GUICtrlToolbar_GetToolTips', 'GUICtrlToolbar_GetUnicodeFormat',\n            'GUICtrlToolbar_HideButton', 'GUICtrlToolbar_HighlightButton',\n            'GUICtrlToolbar_HitTest', 'GUICtrlToolbar_IndexToCommand',\n            'GUICtrlToolbar_InsertButton', 'GUICtrlToolbar_InsertMarkHitTest',\n            'GUICtrlToolbar_IsButtonChecked', 'GUICtrlToolbar_IsButtonEnabled',\n            'GUICtrlToolbar_IsButtonHidden',\n            'GUICtrlToolbar_IsButtonHighlighted',\n            'GUICtrlToolbar_IsButtonIndeterminate',\n            'GUICtrlToolbar_IsButtonPressed', 'GUICtrlToolbar_LoadBitmap',\n            'GUICtrlToolbar_LoadImages', 'GUICtrlToolbar_MapAccelerator',\n            'GUICtrlToolbar_MoveButton', 'GUICtrlToolbar_PressButton',\n            'GUICtrlToolbar_SetAnchorHighlight', 'GUICtrlToolbar_SetBitmapSize',\n            'GUICtrlToolbar_SetButtonBitMap', 'GUICtrlToolbar_SetButtonInfo',\n            'GUICtrlToolbar_SetButtonInfoEx', 'GUICtrlToolbar_SetButtonParam',\n            'GUICtrlToolbar_SetButtonSize', 'GUICtrlToolbar_SetButtonState',\n            'GUICtrlToolbar_SetButtonStyle', 'GUICtrlToolbar_SetButtonText',\n            'GUICtrlToolbar_SetButtonWidth', 'GUICtrlToolbar_SetCmdID',\n            'GUICtrlToolbar_SetColorScheme',\n            'GUICtrlToolbar_SetDisabledImageList',\n            'GUICtrlToolbar_SetDrawTextFlags', 'GUICtrlToolbar_SetExtendedStyle',\n            'GUICtrlToolbar_SetHotImageList', 'GUICtrlToolbar_SetHotItem',\n            'GUICtrlToolbar_SetImageList', 'GUICtrlToolbar_SetIndent',\n            'GUICtrlToolbar_SetIndeterminate', 'GUICtrlToolbar_SetInsertMark',\n            'GUICtrlToolbar_SetInsertMarkColor', 'GUICtrlToolbar_SetMaxTextRows',\n            'GUICtrlToolbar_SetMetrics', 'GUICtrlToolbar_SetPadding',\n            'GUICtrlToolbar_SetParent', 'GUICtrlToolbar_SetRows',\n            'GUICtrlToolbar_SetStyle', 'GUICtrlToolbar_SetStyleAltDrag',\n            'GUICtrlToolbar_SetStyleCustomErase', 'GUICtrlToolbar_SetStyleFlat',\n            'GUICtrlToolbar_SetStyleList', 'GUICtrlToolbar_SetStyleRegisterDrop',\n            'GUICtrlToolbar_SetStyleToolTips',\n            'GUICtrlToolbar_SetStyleTransparent',\n            'GUICtrlToolbar_SetStyleWrapable', 'GUICtrlToolbar_SetToolTips',\n            'GUICtrlToolbar_SetUnicodeFormat', 'GUICtrlToolbar_SetWindowTheme',\n            'GUICtrlTreeView_Add', 'GUICtrlTreeView_AddChild',\n            'GUICtrlTreeView_AddChildFirst', 'GUICtrlTreeView_AddFirst',\n            'GUICtrlTreeView_BeginUpdate', 'GUICtrlTreeView_ClickItem',\n            'GUICtrlTreeView_Create', 'GUICtrlTreeView_CreateDragImage',\n            'GUICtrlTreeView_CreateSolidBitMap', 'GUICtrlTreeView_Delete',\n            'GUICtrlTreeView_DeleteAll', 'GUICtrlTreeView_DeleteChildren',\n            'GUICtrlTreeView_Destroy', 'GUICtrlTreeView_DisplayRect',\n            'GUICtrlTreeView_DisplayRectEx', 'GUICtrlTreeView_EditText',\n            'GUICtrlTreeView_EndEdit', 'GUICtrlTreeView_EndUpdate',\n            'GUICtrlTreeView_EnsureVisible', 'GUICtrlTreeView_Expand',\n            'GUICtrlTreeView_ExpandedOnce', 'GUICtrlTreeView_FindItem',\n            'GUICtrlTreeView_FindItemEx', 'GUICtrlTreeView_GetBkColor',\n            'GUICtrlTreeView_GetBold', 'GUICtrlTreeView_GetChecked',\n            'GUICtrlTreeView_GetChildCount', 'GUICtrlTreeView_GetChildren',\n            'GUICtrlTreeView_GetCount', 'GUICtrlTreeView_GetCut',\n            'GUICtrlTreeView_GetDropTarget', 'GUICtrlTreeView_GetEditControl',\n            'GUICtrlTreeView_GetExpanded', 'GUICtrlTreeView_GetFirstChild',\n            'GUICtrlTreeView_GetFirstItem', 'GUICtrlTreeView_GetFirstVisible',\n            'GUICtrlTreeView_GetFocused', 'GUICtrlTreeView_GetHeight',\n            'GUICtrlTreeView_GetImageIndex',\n            'GUICtrlTreeView_GetImageListIconHandle',\n            'GUICtrlTreeView_GetIndent', 'GUICtrlTreeView_GetInsertMarkColor',\n            'GUICtrlTreeView_GetISearchString', 'GUICtrlTreeView_GetItemByIndex',\n            'GUICtrlTreeView_GetItemHandle', 'GUICtrlTreeView_GetItemParam',\n            'GUICtrlTreeView_GetLastChild', 'GUICtrlTreeView_GetLineColor',\n            'GUICtrlTreeView_GetNext', 'GUICtrlTreeView_GetNextChild',\n            'GUICtrlTreeView_GetNextSibling', 'GUICtrlTreeView_GetNextVisible',\n            'GUICtrlTreeView_GetNormalImageList',\n            'GUICtrlTreeView_GetParentHandle', 'GUICtrlTreeView_GetParentParam',\n            'GUICtrlTreeView_GetPrev', 'GUICtrlTreeView_GetPrevChild',\n            'GUICtrlTreeView_GetPrevSibling', 'GUICtrlTreeView_GetPrevVisible',\n            'GUICtrlTreeView_GetScrollTime', 'GUICtrlTreeView_GetSelected',\n            'GUICtrlTreeView_GetSelectedImageIndex',\n            'GUICtrlTreeView_GetSelection', 'GUICtrlTreeView_GetSiblingCount',\n            'GUICtrlTreeView_GetState', 'GUICtrlTreeView_GetStateImageIndex',\n            'GUICtrlTreeView_GetStateImageList', 'GUICtrlTreeView_GetText',\n            'GUICtrlTreeView_GetTextColor', 'GUICtrlTreeView_GetToolTips',\n            'GUICtrlTreeView_GetTree', 'GUICtrlTreeView_GetUnicodeFormat',\n            'GUICtrlTreeView_GetVisible', 'GUICtrlTreeView_GetVisibleCount',\n            'GUICtrlTreeView_HitTest', 'GUICtrlTreeView_HitTestEx',\n            'GUICtrlTreeView_HitTestItem', 'GUICtrlTreeView_Index',\n            'GUICtrlTreeView_InsertItem', 'GUICtrlTreeView_IsFirstItem',\n            'GUICtrlTreeView_IsParent', 'GUICtrlTreeView_Level',\n            'GUICtrlTreeView_SelectItem', 'GUICtrlTreeView_SelectItemByIndex',\n            'GUICtrlTreeView_SetBkColor', 'GUICtrlTreeView_SetBold',\n            'GUICtrlTreeView_SetChecked', 'GUICtrlTreeView_SetCheckedByIndex',\n            'GUICtrlTreeView_SetChildren', 'GUICtrlTreeView_SetCut',\n            'GUICtrlTreeView_SetDropTarget', 'GUICtrlTreeView_SetFocused',\n            'GUICtrlTreeView_SetHeight', 'GUICtrlTreeView_SetIcon',\n            'GUICtrlTreeView_SetImageIndex', 'GUICtrlTreeView_SetIndent',\n            'GUICtrlTreeView_SetInsertMark',\n            'GUICtrlTreeView_SetInsertMarkColor',\n            'GUICtrlTreeView_SetItemHeight', 'GUICtrlTreeView_SetItemParam',\n            'GUICtrlTreeView_SetLineColor', 'GUICtrlTreeView_SetNormalImageList',\n            'GUICtrlTreeView_SetScrollTime', 'GUICtrlTreeView_SetSelected',\n            'GUICtrlTreeView_SetSelectedImageIndex', 'GUICtrlTreeView_SetState',\n            'GUICtrlTreeView_SetStateImageIndex',\n            'GUICtrlTreeView_SetStateImageList', 'GUICtrlTreeView_SetText',\n            'GUICtrlTreeView_SetTextColor', 'GUICtrlTreeView_SetToolTips',\n            'GUICtrlTreeView_SetUnicodeFormat', 'GUICtrlTreeView_Sort',\n            'GUIImageList_Add', 'GUIImageList_AddBitmap', 'GUIImageList_AddIcon',\n            'GUIImageList_AddMasked', 'GUIImageList_BeginDrag',\n            'GUIImageList_Copy', 'GUIImageList_Create', 'GUIImageList_Destroy',\n            'GUIImageList_DestroyIcon', 'GUIImageList_DragEnter',\n            'GUIImageList_DragLeave', 'GUIImageList_DragMove',\n            'GUIImageList_Draw', 'GUIImageList_DrawEx', 'GUIImageList_Duplicate',\n            'GUIImageList_EndDrag', 'GUIImageList_GetBkColor',\n            'GUIImageList_GetIcon', 'GUIImageList_GetIconHeight',\n            'GUIImageList_GetIconSize', 'GUIImageList_GetIconSizeEx',\n            'GUIImageList_GetIconWidth', 'GUIImageList_GetImageCount',\n            'GUIImageList_GetImageInfoEx', 'GUIImageList_Remove',\n            'GUIImageList_ReplaceIcon', 'GUIImageList_SetBkColor',\n            'GUIImageList_SetIconSize', 'GUIImageList_SetImageCount',\n            'GUIImageList_Swap', 'GUIScrollBars_EnableScrollBar',\n            'GUIScrollBars_GetScrollBarInfoEx', 'GUIScrollBars_GetScrollBarRect',\n            'GUIScrollBars_GetScrollBarRGState',\n            'GUIScrollBars_GetScrollBarXYLineButton',\n            'GUIScrollBars_GetScrollBarXYThumbBottom',\n            'GUIScrollBars_GetScrollBarXYThumbTop',\n            'GUIScrollBars_GetScrollInfo', 'GUIScrollBars_GetScrollInfoEx',\n            'GUIScrollBars_GetScrollInfoMax', 'GUIScrollBars_GetScrollInfoMin',\n            'GUIScrollBars_GetScrollInfoPage', 'GUIScrollBars_GetScrollInfoPos',\n            'GUIScrollBars_GetScrollInfoTrackPos', 'GUIScrollBars_GetScrollPos',\n            'GUIScrollBars_GetScrollRange', 'GUIScrollBars_Init',\n            'GUIScrollBars_ScrollWindow', 'GUIScrollBars_SetScrollInfo',\n            'GUIScrollBars_SetScrollInfoMax', 'GUIScrollBars_SetScrollInfoMin',\n            'GUIScrollBars_SetScrollInfoPage', 'GUIScrollBars_SetScrollInfoPos',\n            'GUIScrollBars_SetScrollRange', 'GUIScrollBars_ShowScrollBar',\n            'GUIToolTip_Activate', 'GUIToolTip_AddTool', 'GUIToolTip_AdjustRect',\n            'GUIToolTip_BitsToTTF', 'GUIToolTip_Create', 'GUIToolTip_Deactivate',\n            'GUIToolTip_DelTool', 'GUIToolTip_Destroy', 'GUIToolTip_EnumTools',\n            'GUIToolTip_GetBubbleHeight', 'GUIToolTip_GetBubbleSize',\n            'GUIToolTip_GetBubbleWidth', 'GUIToolTip_GetCurrentTool',\n            'GUIToolTip_GetDelayTime', 'GUIToolTip_GetMargin',\n            'GUIToolTip_GetMarginEx', 'GUIToolTip_GetMaxTipWidth',\n            'GUIToolTip_GetText', 'GUIToolTip_GetTipBkColor',\n            'GUIToolTip_GetTipTextColor', 'GUIToolTip_GetTitleBitMap',\n            'GUIToolTip_GetTitleText', 'GUIToolTip_GetToolCount',\n            'GUIToolTip_GetToolInfo', 'GUIToolTip_HitTest',\n            'GUIToolTip_NewToolRect', 'GUIToolTip_Pop', 'GUIToolTip_PopUp',\n            'GUIToolTip_SetDelayTime', 'GUIToolTip_SetMargin',\n            'GUIToolTip_SetMaxTipWidth', 'GUIToolTip_SetTipBkColor',\n            'GUIToolTip_SetTipTextColor', 'GUIToolTip_SetTitle',\n            'GUIToolTip_SetToolInfo', 'GUIToolTip_SetWindowTheme',\n            'GUIToolTip_ToolExists', 'GUIToolTip_ToolToArray',\n            'GUIToolTip_TrackActivate', 'GUIToolTip_TrackPosition',\n            'GUIToolTip_Update', 'GUIToolTip_UpdateTipText', 'HexToString',\n            'IEAction', 'IEAttach', 'IEBodyReadHTML', 'IEBodyReadText',\n            'IEBodyWriteHTML', 'IECreate', 'IECreateEmbedded', 'IEDocGetObj',\n            'IEDocInsertHTML', 'IEDocInsertText', 'IEDocReadHTML',\n            'IEDocWriteHTML', 'IEErrorNotify', 'IEFormElementCheckBoxSelect',\n            'IEFormElementGetCollection', 'IEFormElementGetObjByName',\n            'IEFormElementGetValue', 'IEFormElementOptionSelect',\n            'IEFormElementRadioSelect', 'IEFormElementSetValue',\n            'IEFormGetCollection', 'IEFormGetObjByName', 'IEFormImageClick',\n            'IEFormReset', 'IEFormSubmit', 'IEFrameGetCollection',\n            'IEFrameGetObjByName', 'IEGetObjById', 'IEGetObjByName',\n            'IEHeadInsertEventScript', 'IEImgClick', 'IEImgGetCollection',\n            'IEIsFrameSet', 'IELinkClickByIndex', 'IELinkClickByText',\n            'IELinkGetCollection', 'IELoadWait', 'IELoadWaitTimeout', 'IENavigate',\n            'IEPropertyGet', 'IEPropertySet', 'IEQuit', 'IETableGetCollection',\n            'IETableWriteToArray', 'IETagNameAllGetCollection',\n            'IETagNameGetCollection', 'IE_Example', 'IE_Introduction',\n            'IE_VersionInfo', 'INetExplorerCapable', 'INetGetSource', 'INetMail',\n            'INetSmtpMail', 'IsPressed', 'MathCheckDiv', 'Max', 'MemGlobalAlloc',\n            'MemGlobalFree', 'MemGlobalLock', 'MemGlobalSize', 'MemGlobalUnlock',\n            'MemMoveMemory', 'MemVirtualAlloc', 'MemVirtualAllocEx',\n            'MemVirtualFree', 'MemVirtualFreeEx', 'Min', 'MouseTrap',\n            'NamedPipes_CallNamedPipe', 'NamedPipes_ConnectNamedPipe',\n            'NamedPipes_CreateNamedPipe', 'NamedPipes_CreatePipe',\n            'NamedPipes_DisconnectNamedPipe',\n            'NamedPipes_GetNamedPipeHandleState', 'NamedPipes_GetNamedPipeInfo',\n            'NamedPipes_PeekNamedPipe', 'NamedPipes_SetNamedPipeHandleState',\n            'NamedPipes_TransactNamedPipe', 'NamedPipes_WaitNamedPipe',\n            'Net_Share_ConnectionEnum', 'Net_Share_FileClose',\n            'Net_Share_FileEnum', 'Net_Share_FileGetInfo', 'Net_Share_PermStr',\n            'Net_Share_ResourceStr', 'Net_Share_SessionDel',\n            'Net_Share_SessionEnum', 'Net_Share_SessionGetInfo',\n            'Net_Share_ShareAdd', 'Net_Share_ShareCheck', 'Net_Share_ShareDel',\n            'Net_Share_ShareEnum', 'Net_Share_ShareGetInfo',\n            'Net_Share_ShareSetInfo', 'Net_Share_StatisticsGetSvr',\n            'Net_Share_StatisticsGetWrk', 'Now', 'NowCalc', 'NowCalcDate',\n            'NowDate', 'NowTime', 'PathFull', 'PathGetRelative', 'PathMake',\n            'PathSplit', 'ProcessGetName', 'ProcessGetPriority', 'Radian',\n            'ReplaceStringInFile', 'RunDos', 'ScreenCapture_Capture',\n            'ScreenCapture_CaptureWnd', 'ScreenCapture_SaveImage',\n            'ScreenCapture_SetBMPFormat', 'ScreenCapture_SetJPGQuality',\n            'ScreenCapture_SetTIFColorDepth', 'ScreenCapture_SetTIFCompression',\n            'Security__AdjustTokenPrivileges',\n            'Security__CreateProcessWithToken', 'Security__DuplicateTokenEx',\n            'Security__GetAccountSid', 'Security__GetLengthSid',\n            'Security__GetTokenInformation', 'Security__ImpersonateSelf',\n            'Security__IsValidSid', 'Security__LookupAccountName',\n            'Security__LookupAccountSid', 'Security__LookupPrivilegeValue',\n            'Security__OpenProcessToken', 'Security__OpenThreadToken',\n            'Security__OpenThreadTokenEx', 'Security__SetPrivilege',\n            'Security__SetTokenInformation', 'Security__SidToStringSid',\n            'Security__SidTypeStr', 'Security__StringSidToSid', 'SendMessage',\n            'SendMessageA', 'SetDate', 'SetTime', 'Singleton', 'SoundClose',\n            'SoundLength', 'SoundOpen', 'SoundPause', 'SoundPlay', 'SoundPos',\n            'SoundResume', 'SoundSeek', 'SoundStatus', 'SoundStop',\n            'SQLite_Changes', 'SQLite_Close', 'SQLite_Display2DResult',\n            'SQLite_Encode', 'SQLite_ErrCode', 'SQLite_ErrMsg', 'SQLite_Escape',\n            'SQLite_Exec', 'SQLite_FastEncode', 'SQLite_FastEscape',\n            'SQLite_FetchData', 'SQLite_FetchNames', 'SQLite_GetTable',\n            'SQLite_GetTable2d', 'SQLite_LastInsertRowID', 'SQLite_LibVersion',\n            'SQLite_Open', 'SQLite_Query', 'SQLite_QueryFinalize',\n            'SQLite_QueryReset', 'SQLite_QuerySingleRow', 'SQLite_SafeMode',\n            'SQLite_SetTimeout', 'SQLite_Shutdown', 'SQLite_SQLiteExe',\n            'SQLite_Startup', 'SQLite_TotalChanges', 'StringBetween',\n            'StringExplode', 'StringInsert', 'StringProper', 'StringRepeat',\n            'StringTitleCase', 'StringToHex', 'TCPIpToName', 'TempFile',\n            'TicksToTime', 'Timer_Diff', 'Timer_GetIdleTime', 'Timer_GetTimerID',\n            'Timer_Init', 'Timer_KillAllTimers', 'Timer_KillTimer',\n            'Timer_SetTimer', 'TimeToTicks', 'VersionCompare', 'viClose',\n            'viExecCommand', 'viFindGpib', 'viGpibBusReset', 'viGTL',\n            'viInteractiveControl', 'viOpen', 'viSetAttribute', 'viSetTimeout',\n            'WeekNumberISO', 'WinAPI_AbortPath', 'WinAPI_ActivateKeyboardLayout',\n            'WinAPI_AddClipboardFormatListener', 'WinAPI_AddFontMemResourceEx',\n            'WinAPI_AddFontResourceEx', 'WinAPI_AddIconOverlay',\n            'WinAPI_AddIconTransparency', 'WinAPI_AddMRUString',\n            'WinAPI_AdjustBitmap', 'WinAPI_AdjustTokenPrivileges',\n            'WinAPI_AdjustWindowRectEx', 'WinAPI_AlphaBlend', 'WinAPI_AngleArc',\n            'WinAPI_AnimateWindow', 'WinAPI_Arc', 'WinAPI_ArcTo',\n            'WinAPI_ArrayToStruct', 'WinAPI_AssignProcessToJobObject',\n            'WinAPI_AssocGetPerceivedType', 'WinAPI_AssocQueryString',\n            'WinAPI_AttachConsole', 'WinAPI_AttachThreadInput',\n            'WinAPI_BackupRead', 'WinAPI_BackupReadAbort', 'WinAPI_BackupSeek',\n            'WinAPI_BackupWrite', 'WinAPI_BackupWriteAbort', 'WinAPI_Beep',\n            'WinAPI_BeginBufferedPaint', 'WinAPI_BeginDeferWindowPos',\n            'WinAPI_BeginPaint', 'WinAPI_BeginPath', 'WinAPI_BeginUpdateResource',\n            'WinAPI_BitBlt', 'WinAPI_BringWindowToTop',\n            'WinAPI_BroadcastSystemMessage', 'WinAPI_BrowseForFolderDlg',\n            'WinAPI_BufferedPaintClear', 'WinAPI_BufferedPaintInit',\n            'WinAPI_BufferedPaintSetAlpha', 'WinAPI_BufferedPaintUnInit',\n            'WinAPI_CallNextHookEx', 'WinAPI_CallWindowProc',\n            'WinAPI_CallWindowProcW', 'WinAPI_CascadeWindows',\n            'WinAPI_ChangeWindowMessageFilterEx', 'WinAPI_CharToOem',\n            'WinAPI_ChildWindowFromPointEx', 'WinAPI_ClientToScreen',\n            'WinAPI_ClipCursor', 'WinAPI_CloseDesktop', 'WinAPI_CloseEnhMetaFile',\n            'WinAPI_CloseFigure', 'WinAPI_CloseHandle', 'WinAPI_CloseThemeData',\n            'WinAPI_CloseWindow', 'WinAPI_CloseWindowStation',\n            'WinAPI_CLSIDFromProgID', 'WinAPI_CoInitialize',\n            'WinAPI_ColorAdjustLuma', 'WinAPI_ColorHLSToRGB',\n            'WinAPI_ColorRGBToHLS', 'WinAPI_CombineRgn',\n            'WinAPI_CombineTransform', 'WinAPI_CommandLineToArgv',\n            'WinAPI_CommDlgExtendedError', 'WinAPI_CommDlgExtendedErrorEx',\n            'WinAPI_CompareString', 'WinAPI_CompressBitmapBits',\n            'WinAPI_CompressBuffer', 'WinAPI_ComputeCrc32',\n            'WinAPI_ConfirmCredentials', 'WinAPI_CopyBitmap', 'WinAPI_CopyCursor',\n            'WinAPI_CopyEnhMetaFile', 'WinAPI_CopyFileEx', 'WinAPI_CopyIcon',\n            'WinAPI_CopyImage', 'WinAPI_CopyRect', 'WinAPI_CopyStruct',\n            'WinAPI_CoTaskMemAlloc', 'WinAPI_CoTaskMemFree',\n            'WinAPI_CoTaskMemRealloc', 'WinAPI_CoUninitialize',\n            'WinAPI_Create32BitHBITMAP', 'WinAPI_Create32BitHICON',\n            'WinAPI_CreateANDBitmap', 'WinAPI_CreateBitmap',\n            'WinAPI_CreateBitmapIndirect', 'WinAPI_CreateBrushIndirect',\n            'WinAPI_CreateBuffer', 'WinAPI_CreateBufferFromStruct',\n            'WinAPI_CreateCaret', 'WinAPI_CreateColorAdjustment',\n            'WinAPI_CreateCompatibleBitmap', 'WinAPI_CreateCompatibleBitmapEx',\n            'WinAPI_CreateCompatibleDC', 'WinAPI_CreateDesktop',\n            'WinAPI_CreateDIB', 'WinAPI_CreateDIBColorTable',\n            'WinAPI_CreateDIBitmap', 'WinAPI_CreateDIBSection',\n            'WinAPI_CreateDirectory', 'WinAPI_CreateDirectoryEx',\n            'WinAPI_CreateEllipticRgn', 'WinAPI_CreateEmptyIcon',\n            'WinAPI_CreateEnhMetaFile', 'WinAPI_CreateEvent', 'WinAPI_CreateFile',\n            'WinAPI_CreateFileEx', 'WinAPI_CreateFileMapping',\n            'WinAPI_CreateFont', 'WinAPI_CreateFontEx',\n            'WinAPI_CreateFontIndirect', 'WinAPI_CreateGUID',\n            'WinAPI_CreateHardLink', 'WinAPI_CreateIcon',\n            'WinAPI_CreateIconFromResourceEx', 'WinAPI_CreateIconIndirect',\n            'WinAPI_CreateJobObject', 'WinAPI_CreateMargins',\n            'WinAPI_CreateMRUList', 'WinAPI_CreateMutex', 'WinAPI_CreateNullRgn',\n            'WinAPI_CreateNumberFormatInfo', 'WinAPI_CreateObjectID',\n            'WinAPI_CreatePen', 'WinAPI_CreatePoint', 'WinAPI_CreatePolygonRgn',\n            'WinAPI_CreateProcess', 'WinAPI_CreateProcessWithToken',\n            'WinAPI_CreateRect', 'WinAPI_CreateRectEx', 'WinAPI_CreateRectRgn',\n            'WinAPI_CreateRectRgnIndirect', 'WinAPI_CreateRoundRectRgn',\n            'WinAPI_CreateSemaphore', 'WinAPI_CreateSize',\n            'WinAPI_CreateSolidBitmap', 'WinAPI_CreateSolidBrush',\n            'WinAPI_CreateStreamOnHGlobal', 'WinAPI_CreateString',\n            'WinAPI_CreateSymbolicLink', 'WinAPI_CreateTransform',\n            'WinAPI_CreateWindowEx', 'WinAPI_CreateWindowStation',\n            'WinAPI_DecompressBuffer', 'WinAPI_DecryptFile',\n            'WinAPI_DeferWindowPos', 'WinAPI_DefineDosDevice',\n            'WinAPI_DefRawInputProc', 'WinAPI_DefSubclassProc',\n            'WinAPI_DefWindowProc', 'WinAPI_DefWindowProcW', 'WinAPI_DeleteDC',\n            'WinAPI_DeleteEnhMetaFile', 'WinAPI_DeleteFile',\n            'WinAPI_DeleteObject', 'WinAPI_DeleteObjectID',\n            'WinAPI_DeleteVolumeMountPoint', 'WinAPI_DeregisterShellHookWindow',\n            'WinAPI_DestroyCaret', 'WinAPI_DestroyCursor', 'WinAPI_DestroyIcon',\n            'WinAPI_DestroyWindow', 'WinAPI_DeviceIoControl',\n            'WinAPI_DisplayStruct', 'WinAPI_DllGetVersion', 'WinAPI_DllInstall',\n            'WinAPI_DllUninstall', 'WinAPI_DPtoLP', 'WinAPI_DragAcceptFiles',\n            'WinAPI_DragFinish', 'WinAPI_DragQueryFileEx',\n            'WinAPI_DragQueryPoint', 'WinAPI_DrawAnimatedRects',\n            'WinAPI_DrawBitmap', 'WinAPI_DrawEdge', 'WinAPI_DrawFocusRect',\n            'WinAPI_DrawFrameControl', 'WinAPI_DrawIcon', 'WinAPI_DrawIconEx',\n            'WinAPI_DrawLine', 'WinAPI_DrawShadowText', 'WinAPI_DrawText',\n            'WinAPI_DrawThemeBackground', 'WinAPI_DrawThemeEdge',\n            'WinAPI_DrawThemeIcon', 'WinAPI_DrawThemeParentBackground',\n            'WinAPI_DrawThemeText', 'WinAPI_DrawThemeTextEx',\n            'WinAPI_DuplicateEncryptionInfoFile', 'WinAPI_DuplicateHandle',\n            'WinAPI_DuplicateTokenEx', 'WinAPI_DwmDefWindowProc',\n            'WinAPI_DwmEnableBlurBehindWindow', 'WinAPI_DwmEnableComposition',\n            'WinAPI_DwmExtendFrameIntoClientArea',\n            'WinAPI_DwmGetColorizationColor',\n            'WinAPI_DwmGetColorizationParameters',\n            'WinAPI_DwmGetWindowAttribute', 'WinAPI_DwmInvalidateIconicBitmaps',\n            'WinAPI_DwmIsCompositionEnabled',\n            'WinAPI_DwmQueryThumbnailSourceSize', 'WinAPI_DwmRegisterThumbnail',\n            'WinAPI_DwmSetColorizationParameters',\n            'WinAPI_DwmSetIconicLivePreviewBitmap',\n            'WinAPI_DwmSetIconicThumbnail', 'WinAPI_DwmSetWindowAttribute',\n            'WinAPI_DwmUnregisterThumbnail',\n            'WinAPI_DwmUpdateThumbnailProperties', 'WinAPI_DWordToFloat',\n            'WinAPI_DWordToInt', 'WinAPI_EjectMedia', 'WinAPI_Ellipse',\n            'WinAPI_EmptyWorkingSet', 'WinAPI_EnableWindow', 'WinAPI_EncryptFile',\n            'WinAPI_EncryptionDisable', 'WinAPI_EndBufferedPaint',\n            'WinAPI_EndDeferWindowPos', 'WinAPI_EndPaint', 'WinAPI_EndPath',\n            'WinAPI_EndUpdateResource', 'WinAPI_EnumChildProcess',\n            'WinAPI_EnumChildWindows', 'WinAPI_EnumDesktops',\n            'WinAPI_EnumDesktopWindows', 'WinAPI_EnumDeviceDrivers',\n            'WinAPI_EnumDisplayDevices', 'WinAPI_EnumDisplayMonitors',\n            'WinAPI_EnumDisplaySettings', 'WinAPI_EnumDllProc',\n            'WinAPI_EnumFiles', 'WinAPI_EnumFileStreams',\n            'WinAPI_EnumFontFamilies', 'WinAPI_EnumHardLinks',\n            'WinAPI_EnumMRUList', 'WinAPI_EnumPageFiles',\n            'WinAPI_EnumProcessHandles', 'WinAPI_EnumProcessModules',\n            'WinAPI_EnumProcessThreads', 'WinAPI_EnumProcessWindows',\n            'WinAPI_EnumRawInputDevices', 'WinAPI_EnumResourceLanguages',\n            'WinAPI_EnumResourceNames', 'WinAPI_EnumResourceTypes',\n            'WinAPI_EnumSystemGeoID', 'WinAPI_EnumSystemLocales',\n            'WinAPI_EnumUILanguages', 'WinAPI_EnumWindows',\n            'WinAPI_EnumWindowsPopup', 'WinAPI_EnumWindowStations',\n            'WinAPI_EnumWindowsTop', 'WinAPI_EqualMemory', 'WinAPI_EqualRect',\n            'WinAPI_EqualRgn', 'WinAPI_ExcludeClipRect',\n            'WinAPI_ExpandEnvironmentStrings', 'WinAPI_ExtCreatePen',\n            'WinAPI_ExtCreateRegion', 'WinAPI_ExtFloodFill', 'WinAPI_ExtractIcon',\n            'WinAPI_ExtractIconEx', 'WinAPI_ExtSelectClipRgn',\n            'WinAPI_FatalAppExit', 'WinAPI_FatalExit',\n            'WinAPI_FileEncryptionStatus', 'WinAPI_FileExists',\n            'WinAPI_FileIconInit', 'WinAPI_FileInUse', 'WinAPI_FillMemory',\n            'WinAPI_FillPath', 'WinAPI_FillRect', 'WinAPI_FillRgn',\n            'WinAPI_FindClose', 'WinAPI_FindCloseChangeNotification',\n            'WinAPI_FindExecutable', 'WinAPI_FindFirstChangeNotification',\n            'WinAPI_FindFirstFile', 'WinAPI_FindFirstFileName',\n            'WinAPI_FindFirstStream', 'WinAPI_FindNextChangeNotification',\n            'WinAPI_FindNextFile', 'WinAPI_FindNextFileName',\n            'WinAPI_FindNextStream', 'WinAPI_FindResource',\n            'WinAPI_FindResourceEx', 'WinAPI_FindTextDlg', 'WinAPI_FindWindow',\n            'WinAPI_FlashWindow', 'WinAPI_FlashWindowEx', 'WinAPI_FlattenPath',\n            'WinAPI_FloatToDWord', 'WinAPI_FloatToInt', 'WinAPI_FlushFileBuffers',\n            'WinAPI_FlushFRBuffer', 'WinAPI_FlushViewOfFile',\n            'WinAPI_FormatDriveDlg', 'WinAPI_FormatMessage', 'WinAPI_FrameRect',\n            'WinAPI_FrameRgn', 'WinAPI_FreeLibrary', 'WinAPI_FreeMemory',\n            'WinAPI_FreeMRUList', 'WinAPI_FreeResource', 'WinAPI_GdiComment',\n            'WinAPI_GetActiveWindow', 'WinAPI_GetAllUsersProfileDirectory',\n            'WinAPI_GetAncestor', 'WinAPI_GetApplicationRestartSettings',\n            'WinAPI_GetArcDirection', 'WinAPI_GetAsyncKeyState',\n            'WinAPI_GetBinaryType', 'WinAPI_GetBitmapBits',\n            'WinAPI_GetBitmapDimension', 'WinAPI_GetBitmapDimensionEx',\n            'WinAPI_GetBkColor', 'WinAPI_GetBkMode', 'WinAPI_GetBoundsRect',\n            'WinAPI_GetBrushOrg', 'WinAPI_GetBufferedPaintBits',\n            'WinAPI_GetBufferedPaintDC', 'WinAPI_GetBufferedPaintTargetDC',\n            'WinAPI_GetBufferedPaintTargetRect', 'WinAPI_GetBValue',\n            'WinAPI_GetCaretBlinkTime', 'WinAPI_GetCaretPos', 'WinAPI_GetCDType',\n            'WinAPI_GetClassInfoEx', 'WinAPI_GetClassLongEx',\n            'WinAPI_GetClassName', 'WinAPI_GetClientHeight',\n            'WinAPI_GetClientRect', 'WinAPI_GetClientWidth',\n            'WinAPI_GetClipboardSequenceNumber', 'WinAPI_GetClipBox',\n            'WinAPI_GetClipCursor', 'WinAPI_GetClipRgn',\n            'WinAPI_GetColorAdjustment', 'WinAPI_GetCompressedFileSize',\n            'WinAPI_GetCompression', 'WinAPI_GetConnectedDlg',\n            'WinAPI_GetCurrentDirectory', 'WinAPI_GetCurrentHwProfile',\n            'WinAPI_GetCurrentObject', 'WinAPI_GetCurrentPosition',\n            'WinAPI_GetCurrentProcess',\n            'WinAPI_GetCurrentProcessExplicitAppUserModelID',\n            'WinAPI_GetCurrentProcessID', 'WinAPI_GetCurrentThemeName',\n            'WinAPI_GetCurrentThread', 'WinAPI_GetCurrentThreadId',\n            'WinAPI_GetCursor', 'WinAPI_GetCursorInfo', 'WinAPI_GetDateFormat',\n            'WinAPI_GetDC', 'WinAPI_GetDCEx', 'WinAPI_GetDefaultPrinter',\n            'WinAPI_GetDefaultUserProfileDirectory', 'WinAPI_GetDesktopWindow',\n            'WinAPI_GetDeviceCaps', 'WinAPI_GetDeviceDriverBaseName',\n            'WinAPI_GetDeviceDriverFileName', 'WinAPI_GetDeviceGammaRamp',\n            'WinAPI_GetDIBColorTable', 'WinAPI_GetDIBits',\n            'WinAPI_GetDiskFreeSpaceEx', 'WinAPI_GetDlgCtrlID',\n            'WinAPI_GetDlgItem', 'WinAPI_GetDllDirectory',\n            'WinAPI_GetDriveBusType', 'WinAPI_GetDriveGeometryEx',\n            'WinAPI_GetDriveNumber', 'WinAPI_GetDriveType',\n            'WinAPI_GetDurationFormat', 'WinAPI_GetEffectiveClientRect',\n            'WinAPI_GetEnhMetaFile', 'WinAPI_GetEnhMetaFileBits',\n            'WinAPI_GetEnhMetaFileDescription', 'WinAPI_GetEnhMetaFileDimension',\n            'WinAPI_GetEnhMetaFileHeader', 'WinAPI_GetErrorMessage',\n            'WinAPI_GetErrorMode', 'WinAPI_GetExitCodeProcess',\n            'WinAPI_GetExtended', 'WinAPI_GetFileAttributes', 'WinAPI_GetFileID',\n            'WinAPI_GetFileInformationByHandle',\n            'WinAPI_GetFileInformationByHandleEx', 'WinAPI_GetFilePointerEx',\n            'WinAPI_GetFileSizeEx', 'WinAPI_GetFileSizeOnDisk',\n            'WinAPI_GetFileTitle', 'WinAPI_GetFileType',\n            'WinAPI_GetFileVersionInfo', 'WinAPI_GetFinalPathNameByHandle',\n            'WinAPI_GetFinalPathNameByHandleEx', 'WinAPI_GetFocus',\n            'WinAPI_GetFontMemoryResourceInfo', 'WinAPI_GetFontName',\n            'WinAPI_GetFontResourceInfo', 'WinAPI_GetForegroundWindow',\n            'WinAPI_GetFRBuffer', 'WinAPI_GetFullPathName', 'WinAPI_GetGeoInfo',\n            'WinAPI_GetGlyphOutline', 'WinAPI_GetGraphicsMode',\n            'WinAPI_GetGuiResources', 'WinAPI_GetGUIThreadInfo',\n            'WinAPI_GetGValue', 'WinAPI_GetHandleInformation',\n            'WinAPI_GetHGlobalFromStream', 'WinAPI_GetIconDimension',\n            'WinAPI_GetIconInfo', 'WinAPI_GetIconInfoEx', 'WinAPI_GetIdleTime',\n            'WinAPI_GetKeyboardLayout', 'WinAPI_GetKeyboardLayoutList',\n            'WinAPI_GetKeyboardState', 'WinAPI_GetKeyboardType',\n            'WinAPI_GetKeyNameText', 'WinAPI_GetKeyState',\n            'WinAPI_GetLastActivePopup', 'WinAPI_GetLastError',\n            'WinAPI_GetLastErrorMessage', 'WinAPI_GetLayeredWindowAttributes',\n            'WinAPI_GetLocaleInfo', 'WinAPI_GetLogicalDrives',\n            'WinAPI_GetMapMode', 'WinAPI_GetMemorySize',\n            'WinAPI_GetMessageExtraInfo', 'WinAPI_GetModuleFileNameEx',\n            'WinAPI_GetModuleHandle', 'WinAPI_GetModuleHandleEx',\n            'WinAPI_GetModuleInformation', 'WinAPI_GetMonitorInfo',\n            'WinAPI_GetMousePos', 'WinAPI_GetMousePosX', 'WinAPI_GetMousePosY',\n            'WinAPI_GetMUILanguage', 'WinAPI_GetNumberFormat', 'WinAPI_GetObject',\n            'WinAPI_GetObjectID', 'WinAPI_GetObjectInfoByHandle',\n            'WinAPI_GetObjectNameByHandle', 'WinAPI_GetObjectType',\n            'WinAPI_GetOpenFileName', 'WinAPI_GetOutlineTextMetrics',\n            'WinAPI_GetOverlappedResult', 'WinAPI_GetParent',\n            'WinAPI_GetParentProcess', 'WinAPI_GetPerformanceInfo',\n            'WinAPI_GetPEType', 'WinAPI_GetPhysicallyInstalledSystemMemory',\n            'WinAPI_GetPixel', 'WinAPI_GetPolyFillMode', 'WinAPI_GetPosFromRect',\n            'WinAPI_GetPriorityClass', 'WinAPI_GetProcAddress',\n            'WinAPI_GetProcessAffinityMask', 'WinAPI_GetProcessCommandLine',\n            'WinAPI_GetProcessFileName', 'WinAPI_GetProcessHandleCount',\n            'WinAPI_GetProcessID', 'WinAPI_GetProcessIoCounters',\n            'WinAPI_GetProcessMemoryInfo', 'WinAPI_GetProcessName',\n            'WinAPI_GetProcessShutdownParameters', 'WinAPI_GetProcessTimes',\n            'WinAPI_GetProcessUser', 'WinAPI_GetProcessWindowStation',\n            'WinAPI_GetProcessWorkingDirectory', 'WinAPI_GetProfilesDirectory',\n            'WinAPI_GetPwrCapabilities', 'WinAPI_GetRawInputBuffer',\n            'WinAPI_GetRawInputBufferLength', 'WinAPI_GetRawInputData',\n            'WinAPI_GetRawInputDeviceInfo', 'WinAPI_GetRegionData',\n            'WinAPI_GetRegisteredRawInputDevices',\n            'WinAPI_GetRegKeyNameByHandle', 'WinAPI_GetRgnBox', 'WinAPI_GetROP2',\n            'WinAPI_GetRValue', 'WinAPI_GetSaveFileName', 'WinAPI_GetShellWindow',\n            'WinAPI_GetStartupInfo', 'WinAPI_GetStdHandle',\n            'WinAPI_GetStockObject', 'WinAPI_GetStretchBltMode',\n            'WinAPI_GetString', 'WinAPI_GetSysColor', 'WinAPI_GetSysColorBrush',\n            'WinAPI_GetSystemDefaultLangID', 'WinAPI_GetSystemDefaultLCID',\n            'WinAPI_GetSystemDefaultUILanguage', 'WinAPI_GetSystemDEPPolicy',\n            'WinAPI_GetSystemInfo', 'WinAPI_GetSystemMetrics',\n            'WinAPI_GetSystemPowerStatus', 'WinAPI_GetSystemTimes',\n            'WinAPI_GetSystemWow64Directory', 'WinAPI_GetTabbedTextExtent',\n            'WinAPI_GetTempFileName', 'WinAPI_GetTextAlign',\n            'WinAPI_GetTextCharacterExtra', 'WinAPI_GetTextColor',\n            'WinAPI_GetTextExtentPoint32', 'WinAPI_GetTextFace',\n            'WinAPI_GetTextMetrics', 'WinAPI_GetThemeAppProperties',\n            'WinAPI_GetThemeBackgroundContentRect',\n            'WinAPI_GetThemeBackgroundExtent', 'WinAPI_GetThemeBackgroundRegion',\n            'WinAPI_GetThemeBitmap', 'WinAPI_GetThemeBool',\n            'WinAPI_GetThemeColor', 'WinAPI_GetThemeDocumentationProperty',\n            'WinAPI_GetThemeEnumValue', 'WinAPI_GetThemeFilename',\n            'WinAPI_GetThemeFont', 'WinAPI_GetThemeInt', 'WinAPI_GetThemeMargins',\n            'WinAPI_GetThemeMetric', 'WinAPI_GetThemePartSize',\n            'WinAPI_GetThemePosition', 'WinAPI_GetThemePropertyOrigin',\n            'WinAPI_GetThemeRect', 'WinAPI_GetThemeString',\n            'WinAPI_GetThemeSysBool', 'WinAPI_GetThemeSysColor',\n            'WinAPI_GetThemeSysColorBrush', 'WinAPI_GetThemeSysFont',\n            'WinAPI_GetThemeSysInt', 'WinAPI_GetThemeSysSize',\n            'WinAPI_GetThemeSysString', 'WinAPI_GetThemeTextExtent',\n            'WinAPI_GetThemeTextMetrics', 'WinAPI_GetThemeTransitionDuration',\n            'WinAPI_GetThreadDesktop', 'WinAPI_GetThreadErrorMode',\n            'WinAPI_GetThreadLocale', 'WinAPI_GetThreadUILanguage',\n            'WinAPI_GetTickCount', 'WinAPI_GetTickCount64',\n            'WinAPI_GetTimeFormat', 'WinAPI_GetTopWindow',\n            'WinAPI_GetUDFColorMode', 'WinAPI_GetUpdateRect',\n            'WinAPI_GetUpdateRgn', 'WinAPI_GetUserDefaultLangID',\n            'WinAPI_GetUserDefaultLCID', 'WinAPI_GetUserDefaultUILanguage',\n            'WinAPI_GetUserGeoID', 'WinAPI_GetUserObjectInformation',\n            'WinAPI_GetVersion', 'WinAPI_GetVersionEx',\n            'WinAPI_GetVolumeInformation', 'WinAPI_GetVolumeInformationByHandle',\n            'WinAPI_GetVolumeNameForVolumeMountPoint', 'WinAPI_GetWindow',\n            'WinAPI_GetWindowDC', 'WinAPI_GetWindowDisplayAffinity',\n            'WinAPI_GetWindowExt', 'WinAPI_GetWindowFileName',\n            'WinAPI_GetWindowHeight', 'WinAPI_GetWindowInfo',\n            'WinAPI_GetWindowLong', 'WinAPI_GetWindowOrg',\n            'WinAPI_GetWindowPlacement', 'WinAPI_GetWindowRect',\n            'WinAPI_GetWindowRgn', 'WinAPI_GetWindowRgnBox',\n            'WinAPI_GetWindowSubclass', 'WinAPI_GetWindowText',\n            'WinAPI_GetWindowTheme', 'WinAPI_GetWindowThreadProcessId',\n            'WinAPI_GetWindowWidth', 'WinAPI_GetWorkArea',\n            'WinAPI_GetWorldTransform', 'WinAPI_GetXYFromPoint',\n            'WinAPI_GlobalMemoryStatus', 'WinAPI_GradientFill',\n            'WinAPI_GUIDFromString', 'WinAPI_GUIDFromStringEx', 'WinAPI_HashData',\n            'WinAPI_HashString', 'WinAPI_HiByte', 'WinAPI_HideCaret',\n            'WinAPI_HiDWord', 'WinAPI_HiWord', 'WinAPI_InflateRect',\n            'WinAPI_InitMUILanguage', 'WinAPI_InProcess',\n            'WinAPI_IntersectClipRect', 'WinAPI_IntersectRect',\n            'WinAPI_IntToDWord', 'WinAPI_IntToFloat', 'WinAPI_InvalidateRect',\n            'WinAPI_InvalidateRgn', 'WinAPI_InvertANDBitmap',\n            'WinAPI_InvertColor', 'WinAPI_InvertRect', 'WinAPI_InvertRgn',\n            'WinAPI_IOCTL', 'WinAPI_IsAlphaBitmap', 'WinAPI_IsBadCodePtr',\n            'WinAPI_IsBadReadPtr', 'WinAPI_IsBadStringPtr',\n            'WinAPI_IsBadWritePtr', 'WinAPI_IsChild', 'WinAPI_IsClassName',\n            'WinAPI_IsDoorOpen', 'WinAPI_IsElevated', 'WinAPI_IsHungAppWindow',\n            'WinAPI_IsIconic', 'WinAPI_IsInternetConnected',\n            'WinAPI_IsLoadKBLayout', 'WinAPI_IsMemory',\n            'WinAPI_IsNameInExpression', 'WinAPI_IsNetworkAlive',\n            'WinAPI_IsPathShared', 'WinAPI_IsProcessInJob',\n            'WinAPI_IsProcessorFeaturePresent', 'WinAPI_IsRectEmpty',\n            'WinAPI_IsThemeActive',\n            'WinAPI_IsThemeBackgroundPartiallyTransparent',\n            'WinAPI_IsThemePartDefined', 'WinAPI_IsValidLocale',\n            'WinAPI_IsWindow', 'WinAPI_IsWindowEnabled', 'WinAPI_IsWindowUnicode',\n            'WinAPI_IsWindowVisible', 'WinAPI_IsWow64Process',\n            'WinAPI_IsWritable', 'WinAPI_IsZoomed', 'WinAPI_Keybd_Event',\n            'WinAPI_KillTimer', 'WinAPI_LineDDA', 'WinAPI_LineTo',\n            'WinAPI_LoadBitmap', 'WinAPI_LoadCursor', 'WinAPI_LoadCursorFromFile',\n            'WinAPI_LoadIcon', 'WinAPI_LoadIconMetric',\n            'WinAPI_LoadIconWithScaleDown', 'WinAPI_LoadImage',\n            'WinAPI_LoadIndirectString', 'WinAPI_LoadKeyboardLayout',\n            'WinAPI_LoadLibrary', 'WinAPI_LoadLibraryEx', 'WinAPI_LoadMedia',\n            'WinAPI_LoadResource', 'WinAPI_LoadShell32Icon', 'WinAPI_LoadString',\n            'WinAPI_LoadStringEx', 'WinAPI_LoByte', 'WinAPI_LocalFree',\n            'WinAPI_LockDevice', 'WinAPI_LockFile', 'WinAPI_LockResource',\n            'WinAPI_LockWindowUpdate', 'WinAPI_LockWorkStation', 'WinAPI_LoDWord',\n            'WinAPI_LongMid', 'WinAPI_LookupIconIdFromDirectoryEx',\n            'WinAPI_LoWord', 'WinAPI_LPtoDP', 'WinAPI_MAKELANGID',\n            'WinAPI_MAKELCID', 'WinAPI_MakeLong', 'WinAPI_MakeQWord',\n            'WinAPI_MakeWord', 'WinAPI_MapViewOfFile', 'WinAPI_MapVirtualKey',\n            'WinAPI_MaskBlt', 'WinAPI_MessageBeep', 'WinAPI_MessageBoxCheck',\n            'WinAPI_MessageBoxIndirect', 'WinAPI_MirrorIcon',\n            'WinAPI_ModifyWorldTransform', 'WinAPI_MonitorFromPoint',\n            'WinAPI_MonitorFromRect', 'WinAPI_MonitorFromWindow',\n            'WinAPI_Mouse_Event', 'WinAPI_MoveFileEx', 'WinAPI_MoveMemory',\n            'WinAPI_MoveTo', 'WinAPI_MoveToEx', 'WinAPI_MoveWindow',\n            'WinAPI_MsgBox', 'WinAPI_MulDiv', 'WinAPI_MultiByteToWideChar',\n            'WinAPI_MultiByteToWideCharEx', 'WinAPI_NtStatusToDosError',\n            'WinAPI_OemToChar', 'WinAPI_OffsetClipRgn', 'WinAPI_OffsetPoints',\n            'WinAPI_OffsetRect', 'WinAPI_OffsetRgn', 'WinAPI_OffsetWindowOrg',\n            'WinAPI_OpenDesktop', 'WinAPI_OpenFileById', 'WinAPI_OpenFileDlg',\n            'WinAPI_OpenFileMapping', 'WinAPI_OpenIcon',\n            'WinAPI_OpenInputDesktop', 'WinAPI_OpenJobObject', 'WinAPI_OpenMutex',\n            'WinAPI_OpenProcess', 'WinAPI_OpenProcessToken',\n            'WinAPI_OpenSemaphore', 'WinAPI_OpenThemeData',\n            'WinAPI_OpenWindowStation', 'WinAPI_PageSetupDlg',\n            'WinAPI_PaintDesktop', 'WinAPI_PaintRgn', 'WinAPI_ParseURL',\n            'WinAPI_ParseUserName', 'WinAPI_PatBlt', 'WinAPI_PathAddBackslash',\n            'WinAPI_PathAddExtension', 'WinAPI_PathAppend',\n            'WinAPI_PathBuildRoot', 'WinAPI_PathCanonicalize',\n            'WinAPI_PathCommonPrefix', 'WinAPI_PathCompactPath',\n            'WinAPI_PathCompactPathEx', 'WinAPI_PathCreateFromUrl',\n            'WinAPI_PathFindExtension', 'WinAPI_PathFindFileName',\n            'WinAPI_PathFindNextComponent', 'WinAPI_PathFindOnPath',\n            'WinAPI_PathGetArgs', 'WinAPI_PathGetCharType',\n            'WinAPI_PathGetDriveNumber', 'WinAPI_PathIsContentType',\n            'WinAPI_PathIsDirectory', 'WinAPI_PathIsDirectoryEmpty',\n            'WinAPI_PathIsExe', 'WinAPI_PathIsFileSpec',\n            'WinAPI_PathIsLFNFileSpec', 'WinAPI_PathIsRelative',\n            'WinAPI_PathIsRoot', 'WinAPI_PathIsSameRoot',\n            'WinAPI_PathIsSystemFolder', 'WinAPI_PathIsUNC',\n            'WinAPI_PathIsUNCServer', 'WinAPI_PathIsUNCServerShare',\n            'WinAPI_PathMakeSystemFolder', 'WinAPI_PathMatchSpec',\n            'WinAPI_PathParseIconLocation', 'WinAPI_PathRelativePathTo',\n            'WinAPI_PathRemoveArgs', 'WinAPI_PathRemoveBackslash',\n            'WinAPI_PathRemoveExtension', 'WinAPI_PathRemoveFileSpec',\n            'WinAPI_PathRenameExtension', 'WinAPI_PathSearchAndQualify',\n            'WinAPI_PathSkipRoot', 'WinAPI_PathStripPath',\n            'WinAPI_PathStripToRoot', 'WinAPI_PathToRegion',\n            'WinAPI_PathUndecorate', 'WinAPI_PathUnExpandEnvStrings',\n            'WinAPI_PathUnmakeSystemFolder', 'WinAPI_PathUnquoteSpaces',\n            'WinAPI_PathYetAnotherMakeUniqueName', 'WinAPI_PickIconDlg',\n            'WinAPI_PlayEnhMetaFile', 'WinAPI_PlaySound', 'WinAPI_PlgBlt',\n            'WinAPI_PointFromRect', 'WinAPI_PolyBezier', 'WinAPI_PolyBezierTo',\n            'WinAPI_PolyDraw', 'WinAPI_Polygon', 'WinAPI_PostMessage',\n            'WinAPI_PrimaryLangId', 'WinAPI_PrintDlg', 'WinAPI_PrintDlgEx',\n            'WinAPI_PrintWindow', 'WinAPI_ProgIDFromCLSID', 'WinAPI_PtInRect',\n            'WinAPI_PtInRectEx', 'WinAPI_PtInRegion', 'WinAPI_PtVisible',\n            'WinAPI_QueryDosDevice', 'WinAPI_QueryInformationJobObject',\n            'WinAPI_QueryPerformanceCounter', 'WinAPI_QueryPerformanceFrequency',\n            'WinAPI_RadialGradientFill', 'WinAPI_ReadDirectoryChanges',\n            'WinAPI_ReadFile', 'WinAPI_ReadProcessMemory', 'WinAPI_Rectangle',\n            'WinAPI_RectInRegion', 'WinAPI_RectIsEmpty', 'WinAPI_RectVisible',\n            'WinAPI_RedrawWindow', 'WinAPI_RegCloseKey',\n            'WinAPI_RegConnectRegistry', 'WinAPI_RegCopyTree',\n            'WinAPI_RegCopyTreeEx', 'WinAPI_RegCreateKey',\n            'WinAPI_RegDeleteEmptyKey', 'WinAPI_RegDeleteKey',\n            'WinAPI_RegDeleteKeyValue', 'WinAPI_RegDeleteTree',\n            'WinAPI_RegDeleteTreeEx', 'WinAPI_RegDeleteValue',\n            'WinAPI_RegDisableReflectionKey', 'WinAPI_RegDuplicateHKey',\n            'WinAPI_RegEnableReflectionKey', 'WinAPI_RegEnumKey',\n            'WinAPI_RegEnumValue', 'WinAPI_RegFlushKey',\n            'WinAPI_RegisterApplicationRestart', 'WinAPI_RegisterClass',\n            'WinAPI_RegisterClassEx', 'WinAPI_RegisterHotKey',\n            'WinAPI_RegisterPowerSettingNotification',\n            'WinAPI_RegisterRawInputDevices', 'WinAPI_RegisterShellHookWindow',\n            'WinAPI_RegisterWindowMessage', 'WinAPI_RegLoadMUIString',\n            'WinAPI_RegNotifyChangeKeyValue', 'WinAPI_RegOpenKey',\n            'WinAPI_RegQueryInfoKey', 'WinAPI_RegQueryLastWriteTime',\n            'WinAPI_RegQueryMultipleValues', 'WinAPI_RegQueryReflectionKey',\n            'WinAPI_RegQueryValue', 'WinAPI_RegRestoreKey', 'WinAPI_RegSaveKey',\n            'WinAPI_RegSetValue', 'WinAPI_ReleaseCapture', 'WinAPI_ReleaseDC',\n            'WinAPI_ReleaseMutex', 'WinAPI_ReleaseSemaphore',\n            'WinAPI_ReleaseStream', 'WinAPI_RemoveClipboardFormatListener',\n            'WinAPI_RemoveDirectory', 'WinAPI_RemoveFontMemResourceEx',\n            'WinAPI_RemoveFontResourceEx', 'WinAPI_RemoveWindowSubclass',\n            'WinAPI_ReOpenFile', 'WinAPI_ReplaceFile', 'WinAPI_ReplaceTextDlg',\n            'WinAPI_ResetEvent', 'WinAPI_RestartDlg', 'WinAPI_RestoreDC',\n            'WinAPI_RGB', 'WinAPI_RotatePoints', 'WinAPI_RoundRect',\n            'WinAPI_SaveDC', 'WinAPI_SaveFileDlg', 'WinAPI_SaveHBITMAPToFile',\n            'WinAPI_SaveHICONToFile', 'WinAPI_ScaleWindowExt',\n            'WinAPI_ScreenToClient', 'WinAPI_SearchPath', 'WinAPI_SelectClipPath',\n            'WinAPI_SelectClipRgn', 'WinAPI_SelectObject',\n            'WinAPI_SendMessageTimeout', 'WinAPI_SetActiveWindow',\n            'WinAPI_SetArcDirection', 'WinAPI_SetBitmapBits',\n            'WinAPI_SetBitmapDimensionEx', 'WinAPI_SetBkColor',\n            'WinAPI_SetBkMode', 'WinAPI_SetBoundsRect', 'WinAPI_SetBrushOrg',\n            'WinAPI_SetCapture', 'WinAPI_SetCaretBlinkTime', 'WinAPI_SetCaretPos',\n            'WinAPI_SetClassLongEx', 'WinAPI_SetColorAdjustment',\n            'WinAPI_SetCompression', 'WinAPI_SetCurrentDirectory',\n            'WinAPI_SetCurrentProcessExplicitAppUserModelID', 'WinAPI_SetCursor',\n            'WinAPI_SetDCBrushColor', 'WinAPI_SetDCPenColor',\n            'WinAPI_SetDefaultPrinter', 'WinAPI_SetDeviceGammaRamp',\n            'WinAPI_SetDIBColorTable', 'WinAPI_SetDIBits',\n            'WinAPI_SetDIBitsToDevice', 'WinAPI_SetDllDirectory',\n            'WinAPI_SetEndOfFile', 'WinAPI_SetEnhMetaFileBits',\n            'WinAPI_SetErrorMode', 'WinAPI_SetEvent', 'WinAPI_SetFileAttributes',\n            'WinAPI_SetFileInformationByHandleEx', 'WinAPI_SetFilePointer',\n            'WinAPI_SetFilePointerEx', 'WinAPI_SetFileShortName',\n            'WinAPI_SetFileValidData', 'WinAPI_SetFocus', 'WinAPI_SetFont',\n            'WinAPI_SetForegroundWindow', 'WinAPI_SetFRBuffer',\n            'WinAPI_SetGraphicsMode', 'WinAPI_SetHandleInformation',\n            'WinAPI_SetInformationJobObject', 'WinAPI_SetKeyboardLayout',\n            'WinAPI_SetKeyboardState', 'WinAPI_SetLastError',\n            'WinAPI_SetLayeredWindowAttributes', 'WinAPI_SetLocaleInfo',\n            'WinAPI_SetMapMode', 'WinAPI_SetMessageExtraInfo', 'WinAPI_SetParent',\n            'WinAPI_SetPixel', 'WinAPI_SetPolyFillMode',\n            'WinAPI_SetPriorityClass', 'WinAPI_SetProcessAffinityMask',\n            'WinAPI_SetProcessShutdownParameters',\n            'WinAPI_SetProcessWindowStation', 'WinAPI_SetRectRgn',\n            'WinAPI_SetROP2', 'WinAPI_SetSearchPathMode',\n            'WinAPI_SetStretchBltMode', 'WinAPI_SetSysColors',\n            'WinAPI_SetSystemCursor', 'WinAPI_SetTextAlign',\n            'WinAPI_SetTextCharacterExtra', 'WinAPI_SetTextColor',\n            'WinAPI_SetTextJustification', 'WinAPI_SetThemeAppProperties',\n            'WinAPI_SetThreadDesktop', 'WinAPI_SetThreadErrorMode',\n            'WinAPI_SetThreadExecutionState', 'WinAPI_SetThreadLocale',\n            'WinAPI_SetThreadUILanguage', 'WinAPI_SetTimer',\n            'WinAPI_SetUDFColorMode', 'WinAPI_SetUserGeoID',\n            'WinAPI_SetUserObjectInformation', 'WinAPI_SetVolumeMountPoint',\n            'WinAPI_SetWindowDisplayAffinity', 'WinAPI_SetWindowExt',\n            'WinAPI_SetWindowLong', 'WinAPI_SetWindowOrg',\n            'WinAPI_SetWindowPlacement', 'WinAPI_SetWindowPos',\n            'WinAPI_SetWindowRgn', 'WinAPI_SetWindowsHookEx',\n            'WinAPI_SetWindowSubclass', 'WinAPI_SetWindowText',\n            'WinAPI_SetWindowTheme', 'WinAPI_SetWinEventHook',\n            'WinAPI_SetWorldTransform', 'WinAPI_SfcIsFileProtected',\n            'WinAPI_SfcIsKeyProtected', 'WinAPI_ShellAboutDlg',\n            'WinAPI_ShellAddToRecentDocs', 'WinAPI_ShellChangeNotify',\n            'WinAPI_ShellChangeNotifyDeregister',\n            'WinAPI_ShellChangeNotifyRegister', 'WinAPI_ShellCreateDirectory',\n            'WinAPI_ShellEmptyRecycleBin', 'WinAPI_ShellExecute',\n            'WinAPI_ShellExecuteEx', 'WinAPI_ShellExtractAssociatedIcon',\n            'WinAPI_ShellExtractIcon', 'WinAPI_ShellFileOperation',\n            'WinAPI_ShellFlushSFCache', 'WinAPI_ShellGetFileInfo',\n            'WinAPI_ShellGetIconOverlayIndex', 'WinAPI_ShellGetImageList',\n            'WinAPI_ShellGetKnownFolderIDList', 'WinAPI_ShellGetKnownFolderPath',\n            'WinAPI_ShellGetLocalizedName', 'WinAPI_ShellGetPathFromIDList',\n            'WinAPI_ShellGetSetFolderCustomSettings', 'WinAPI_ShellGetSettings',\n            'WinAPI_ShellGetSpecialFolderLocation',\n            'WinAPI_ShellGetSpecialFolderPath', 'WinAPI_ShellGetStockIconInfo',\n            'WinAPI_ShellILCreateFromPath', 'WinAPI_ShellNotifyIcon',\n            'WinAPI_ShellNotifyIconGetRect', 'WinAPI_ShellObjectProperties',\n            'WinAPI_ShellOpenFolderAndSelectItems', 'WinAPI_ShellOpenWithDlg',\n            'WinAPI_ShellQueryRecycleBin',\n            'WinAPI_ShellQueryUserNotificationState',\n            'WinAPI_ShellRemoveLocalizedName', 'WinAPI_ShellRestricted',\n            'WinAPI_ShellSetKnownFolderPath', 'WinAPI_ShellSetLocalizedName',\n            'WinAPI_ShellSetSettings', 'WinAPI_ShellStartNetConnectionDlg',\n            'WinAPI_ShellUpdateImage', 'WinAPI_ShellUserAuthenticationDlg',\n            'WinAPI_ShellUserAuthenticationDlgEx', 'WinAPI_ShortToWord',\n            'WinAPI_ShowCaret', 'WinAPI_ShowCursor', 'WinAPI_ShowError',\n            'WinAPI_ShowLastError', 'WinAPI_ShowMsg', 'WinAPI_ShowOwnedPopups',\n            'WinAPI_ShowWindow', 'WinAPI_ShutdownBlockReasonCreate',\n            'WinAPI_ShutdownBlockReasonDestroy',\n            'WinAPI_ShutdownBlockReasonQuery', 'WinAPI_SizeOfResource',\n            'WinAPI_StretchBlt', 'WinAPI_StretchDIBits',\n            'WinAPI_StrFormatByteSize', 'WinAPI_StrFormatByteSizeEx',\n            'WinAPI_StrFormatKBSize', 'WinAPI_StrFromTimeInterval',\n            'WinAPI_StringFromGUID', 'WinAPI_StringLenA', 'WinAPI_StringLenW',\n            'WinAPI_StrLen', 'WinAPI_StrokeAndFillPath', 'WinAPI_StrokePath',\n            'WinAPI_StructToArray', 'WinAPI_SubLangId', 'WinAPI_SubtractRect',\n            'WinAPI_SwapDWord', 'WinAPI_SwapQWord', 'WinAPI_SwapWord',\n            'WinAPI_SwitchColor', 'WinAPI_SwitchDesktop',\n            'WinAPI_SwitchToThisWindow', 'WinAPI_SystemParametersInfo',\n            'WinAPI_TabbedTextOut', 'WinAPI_TerminateJobObject',\n            'WinAPI_TerminateProcess', 'WinAPI_TextOut', 'WinAPI_TileWindows',\n            'WinAPI_TrackMouseEvent', 'WinAPI_TransparentBlt',\n            'WinAPI_TwipsPerPixelX', 'WinAPI_TwipsPerPixelY',\n            'WinAPI_UnhookWindowsHookEx', 'WinAPI_UnhookWinEvent',\n            'WinAPI_UnionRect', 'WinAPI_UnionStruct', 'WinAPI_UniqueHardwareID',\n            'WinAPI_UnloadKeyboardLayout', 'WinAPI_UnlockFile',\n            'WinAPI_UnmapViewOfFile', 'WinAPI_UnregisterApplicationRestart',\n            'WinAPI_UnregisterClass', 'WinAPI_UnregisterHotKey',\n            'WinAPI_UnregisterPowerSettingNotification',\n            'WinAPI_UpdateLayeredWindow', 'WinAPI_UpdateLayeredWindowEx',\n            'WinAPI_UpdateLayeredWindowIndirect', 'WinAPI_UpdateResource',\n            'WinAPI_UpdateWindow', 'WinAPI_UrlApplyScheme',\n            'WinAPI_UrlCanonicalize', 'WinAPI_UrlCombine', 'WinAPI_UrlCompare',\n            'WinAPI_UrlCreateFromPath', 'WinAPI_UrlFixup', 'WinAPI_UrlGetPart',\n            'WinAPI_UrlHash', 'WinAPI_UrlIs', 'WinAPI_UserHandleGrantAccess',\n            'WinAPI_ValidateRect', 'WinAPI_ValidateRgn', 'WinAPI_VerQueryRoot',\n            'WinAPI_VerQueryValue', 'WinAPI_VerQueryValueEx',\n            'WinAPI_WaitForInputIdle', 'WinAPI_WaitForMultipleObjects',\n            'WinAPI_WaitForSingleObject', 'WinAPI_WideCharToMultiByte',\n            'WinAPI_WidenPath', 'WinAPI_WindowFromDC', 'WinAPI_WindowFromPoint',\n            'WinAPI_WordToShort', 'WinAPI_Wow64EnableWow64FsRedirection',\n            'WinAPI_WriteConsole', 'WinAPI_WriteFile',\n            'WinAPI_WriteProcessMemory', 'WinAPI_ZeroMemory',\n            'WinNet_AddConnection', 'WinNet_AddConnection2',\n            'WinNet_AddConnection3', 'WinNet_CancelConnection',\n            'WinNet_CancelConnection2', 'WinNet_CloseEnum',\n            'WinNet_ConnectionDialog', 'WinNet_ConnectionDialog1',\n            'WinNet_DisconnectDialog', 'WinNet_DisconnectDialog1',\n            'WinNet_EnumResource', 'WinNet_GetConnection',\n            'WinNet_GetConnectionPerformance', 'WinNet_GetLastError',\n            'WinNet_GetNetworkInformation', 'WinNet_GetProviderName',\n            'WinNet_GetResourceInformation', 'WinNet_GetResourceParent',\n            'WinNet_GetUniversalName', 'WinNet_GetUser', 'WinNet_OpenEnum',\n            'WinNet_RestoreConnection', 'WinNet_UseConnection', 'Word_Create',\n            'Word_DocAdd', 'Word_DocAttach', 'Word_DocClose', 'Word_DocExport',\n            'Word_DocFind', 'Word_DocFindReplace', 'Word_DocGet',\n            'Word_DocLinkAdd', 'Word_DocLinkGet', 'Word_DocOpen',\n            'Word_DocPictureAdd', 'Word_DocPrint', 'Word_DocRangeSet',\n            'Word_DocSave', 'Word_DocSaveAs', 'Word_DocTableRead',\n            'Word_DocTableWrite', 'Word_Quit'\n        ),\n        5 => array(\n            'ce', 'comments-end', 'comments-start', 'cs'\n        ),\n        6 => array(\n            'Au3Stripper_Ignore_Funcs', 'Au3Stripper_Ignore_Variables',\n            'Au3Stripper_Off', 'Au3Stripper_On', 'Au3Stripper_Parameters',\n            'AutoIt3Wrapper_Add_Constants', 'AutoIt3Wrapper_Au3Check_Parameters',\n            'AutoIt3Wrapper_Au3Check_Stop_OnWarning', 'AutoIt3Wrapper_Aut2Exe',\n            'AutoIt3Wrapper_AutoIt3', 'AutoIt3Wrapper_AutoIt3Dir',\n            'AutoIt3Wrapper_Change2CUI', 'AutoIt3Wrapper_Compile_Both',\n            'AutoIt3Wrapper_Compression', 'AutoIt3Wrapper_EndIf',\n            'AutoIt3Wrapper_Icon', 'AutoIt3Wrapper_If_Compile',\n            'AutoIt3Wrapper_If_Run', 'AutoIt3Wrapper_Jump_To_First_Error',\n            'AutoIt3Wrapper_OutFile', 'AutoIt3Wrapper_OutFile_Type',\n            'AutoIt3Wrapper_OutFile_X64', 'AutoIt3Wrapper_PlugIn_Funcs',\n            'AutoIt3Wrapper_Res_Comment', 'Autoit3Wrapper_Res_Compatibility',\n            'AutoIt3Wrapper_Res_Description', 'AutoIt3Wrapper_Res_Field',\n            'AutoIt3Wrapper_Res_File_Add', 'AutoIt3Wrapper_Res_FileVersion',\n            'AutoIt3Wrapper_Res_FileVersion_AutoIncrement',\n            'AutoIt3Wrapper_Res_Icon_Add', 'AutoIt3Wrapper_Res_Language',\n            'AutoIt3Wrapper_Res_LegalCopyright',\n            'AutoIt3Wrapper_Res_ProductVersion',\n            'AutoIt3Wrapper_Res_requestedExecutionLevel',\n            'AutoIt3Wrapper_Res_SaveSource', 'AutoIt3Wrapper_Run_After',\n            'AutoIt3Wrapper_Run_Au3Check', 'AutoIt3Wrapper_Run_Au3Stripper',\n            'AutoIt3Wrapper_Run_Before', 'AutoIt3Wrapper_Run_Debug_Mode',\n            'AutoIt3Wrapper_Run_SciTE_Minimized',\n            'AutoIt3Wrapper_Run_SciTE_OutputPane_Minimized',\n            'AutoIt3Wrapper_Run_Tidy', 'AutoIt3Wrapper_ShowProgress',\n            'AutoIt3Wrapper_Testing', 'AutoIt3Wrapper_Tidy_Stop_OnError',\n            'AutoIt3Wrapper_UPX_Parameters', 'AutoIt3Wrapper_UseUPX',\n            'AutoIt3Wrapper_UseX64', 'AutoIt3Wrapper_Version',\n            'AutoIt3Wrapper_Versioning', 'AutoIt3Wrapper_Versioning_Parameters',\n            'Tidy_Off', 'Tidy_On', 'Tidy_Parameters', 'EndRegion', 'Region'\n        ),\n        7 => array(\n            'APPSKEY', 'BACKSPACE', 'BROWSER_BACK', 'BROWSER_FAVORITES',\n            'BROWSER_FORWARD', 'BROWSER_HOME', 'BROWSER_REFRESH', 'BROWSER_SEARCH',\n            'BROWSER_STOP', 'BS', 'CAPSLOCK', 'DEL', 'DELETE', 'DOWN', 'END', 'ENTER',\n            'ESC', 'ESCAPE', 'F1', 'F10', 'F11', 'F12', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7',\n            'F8', 'F9', 'HOME', 'INS', 'INSERT', 'LAUNCH_APP1', 'LAUNCH_APP2',\n            'LAUNCH_MAIL', 'LAUNCH_MEDIA', 'LEFT', 'MEDIA_NEXT', 'MEDIA_PLAY_PAUSE',\n            'MEDIA_PREV', 'MEDIA_STOP', 'NUMLOCK', 'NUMPAD0', 'NUMPAD1', 'NUMPAD2',\n            'NUMPAD3', 'NUMPAD4', 'NUMPAD5', 'NUMPAD6', 'NUMPAD7', 'NUMPAD8',\n            'NUMPAD9', 'NUMPADADD', 'NUMPADDIV', 'NUMPADDOT', 'NUMPADENTER',\n            'NUMPADMULT', 'NUMPADSUB', 'PAUSE', 'PGDN', 'PGUP', 'PRINTSCREEN',\n            'RIGHT', 'SCROLLLOCK', 'SLEEP', 'SPACE', 'TAB', 'UP', 'VOLUME_DOWN',\n            'VOLUME_MUTE', 'VOLUME_UP'\n        ),\n        8 => array(\n            'include', 'include-once', 'NoTrayIcon', 'OnAutoItStartRegister',\n            'RequireAdmin'\n        ),\n        9 => array(\n            'pragma'\n        ),\n        10 => array(\n            'forcedef', 'forceref', 'ignorefunc'\n        ),\n    ),\n    'SYMBOLS' => array(\n        0 => array('(', ')', '[', ']',\n            '+', '-', '*', '/', '&', '^', ':', '?',\n            '=', '==', '+=', '-=', '*=', '/=', '&=',\n            '<', '<=', '>', '>=',\n            ',', '.'\n        ),\n        1 => array('_' // Undersore for continuation of strings.\n        ),\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false,\n        8 => false,\n        9 => false,\n        10 => false\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000FF;', // Keywords\n            2 => 'color: #808000;', // Macros\n            3 => 'color: #000090;', // Native Functions\n            4 => 'color: #0080FF;', // UDF Functions\n            5 => 'color: #808000;', // Comments\n            6 => 'color: #DC143C;', // Directives\n            7 => 'color: #5A5A5A;', // Keylist\n            8 => 'color: #808000;', // PreProcessor\n            9 => 'color: #DC143C;', // Pragma\n            10 => 'color: #DC143C;' // Au3Check\n        ),\n        'COMMENTS' => array(\n            0 => 'color: #FF0000; font-style: italic',\n            1 => 'color: #008000; font-style: italic;',\n            2 => 'color: #008000; font-style: italic;',\n            'MULTI' => 'color: #008000; font-style: italic;',\n        ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n        ),\n        'BRACKETS' => array(\n            0 => 'color: #FF8000;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #FF0000;'\n        ),\n        'NUMBERS' => array(\n            0 => 'color: #0000FF;'\n        ),\n        'METHODS' => array(\n            1 => 'color: #FF0000;'\n        ),\n        'SYMBOLS' => array(\n            0 => 'color: #FF8000;',\n            1 => 'color: #000000;'\n        ),\n        'REGEXPS' => array(\n            0 => 'color: #5A5A5A;', // Variables\n            1 => 'color: #5A5A5A;' // Keylist\n        ),\n        'SCRIPT' => array()\n    ),\n    'URLS' => array(\n        1 => 'https://www.autoitscript.com/autoit3/docs/keywords.htm', // Keywords\n        2 => 'https://www.autoitscript.com/autoit3/docs/macros.htm#{FNAME}', // Macros\n        3 => 'https://www.autoitscript.com/autoit3/docs/functions/{FNAME}.htm', // Native Functions\n        4 => 'https://www.autoitscript.com/autoit3/docs/libfunctions/_{FNAME}.htm', // UDF Functions\n        5 => 'https://www.autoitscript.com/autoit3/docs/keywords/comments-start.htm', // Comments\n        6 => 'https://www.autoitscript.com/autoit3/scite/docs/AutoIt3Wrapper.html', // Directives\n        7 => 'https://www.autoitscript.com/autoit3/docs/appendix/SendKeys.htm#KeysList', // Keylist\n        8 => 'https://www.autoitscript.com/autoit3/docs/keywords/{FNAME}.htm', // PreProcessor\n        9 => 'https://www.autoitscript.com/autoit3/docs/keywords/{FNAME}.htm', // Pragma\n        10 => 'https://www.autoitscript.com/autoit3/docs/intro/au3check.htm' // Au3Check\n    ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n    ),\n    'REGEXPS' => array(\n        0 => '\\$[a-zA-Z0-9_]*', // Variables\n        1 => '\\\\{[a-zA-Z0-9_]+\\\\}' // Keylist\n    ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        1 => true,\n        2 => true,\n        3 => true\n    ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            4 => array(\n                'DISALLOWED_BEFORE' => '(?<!\\w)\\_'\n            ),\n            5 => array(\n                'DISALLOWED_BEFORE' => '(?<!\\w)\\#'\n            ),\n            6 => array(\n                'DISALLOWED_BEFORE' => '(?<!\\w)\\#',\n                'DISALLOWED_AFTER' => '(?<!=)[^\\r\\n]*'\n            ),\n            8 => array(\n                'DISALLOWED_BEFORE' => '(?<!\\w)\\#',\n                'DISALLOWED_AFTER' => '(?<!=)[^\\r\\n]*'\n            ),\n            9 => array(\n                'DISALLOWED_BEFORE' => '(?<!\\w)\\#',\n                'DISALLOWED_AFTER' => '(?<!=)[^\\r\\n]*'\n            ),\n            10 => array(\n                'DISALLOWED_BEFORE' => '(?<!\\w)\\#',\n                'DISALLOWED_AFTER' => '(?<!=)[^\\r\\n]*'\n            )\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/avisynth.php",
    "content": "<?php\n/*************************************************************************************\n * avisynth.php\n * --------\n * Author: Ryan Jones (sciguyryan@gmail.com)\n * Copyright: (c) 2008 Ryan Jones\n * Release Version: 1.0.9.1\n * Date Started: 2008/10/08\n *\n * AviSynth language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/10/08 (1.0.8.1)\n *  -  First Release\n *\n * TODO (updated 2008/10/08)\n * -------------------------\n * * There are also some special words that can't currently be specified directly in GeSHi as they may\n *      also be used as variables which would really mess things up.\n * * Also there is an issue with the escape character as this language uses a muti-character escape system. Escape char should be \"\"\" but has been left\n *      as empty due to this restiction.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'AviSynth',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/', '[*' => '*]'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        //  Reserved words.\n        1 => array(\n            'try', 'cache', 'function', 'global', 'return'\n            ),\n        // Constants / special variables.\n        2 => array(\n            'true', 'yes', 'false', 'no', '__END__'\n            ),\n        // Internal Filters.\n        3 => array(\n            'AviSource', 'AviFileSource', 'AddBorders', 'AlignedSplice', 'AssumeFPS', 'AssumeScaledFPS',\n            'AssumeFrameBased', 'AssumeFieldBased', 'AssumeBFF', 'AssumeTFF', 'Amplify', 'AmplifydB',\n            'AssumeSampleRate', 'AudioDub', 'AudioDubEx', 'Animate', 'ApplyRange',\n            'BicubicResize', 'BilinearResize', 'BlackmanResize', 'Blur', 'Bob', 'BlankClip', 'Blackness',\n            'ColorYUV', 'ConvertBackToYUY2', 'ConvertToRGB', 'ConvertToRGB24', 'ConvertToRGB32',\n            'ConvertToYUY2', 'ConvertToY8', 'ConvertToYV411', 'ConvertToYV12', 'ConvertToYV16', 'ConvertToYV24',\n            'ColorKeyMask', 'Crop', 'CropBottom', 'ChangeFPS', 'ConvertFPS', 'ComplementParity', 'ConvertAudioTo8bit',\n            'ConvertAudioTo16bit', 'ConvertAudioTo24bit', 'ConvertAudioTo32bit', 'ConvertAudioToFloat', 'ConvertToMono',\n            'ConditionalFilter', 'ConditionalReader', 'ColorBars', 'Compare',\n            'DirectShowSource', 'DeleteFrame', 'Dissolve', 'DuplicateFrame', 'DoubleWeave', 'DelayAudio',\n            'EnsureVBRMP3Sync',\n            'FixLuminance', 'FlipHorizontal', 'FlipVertical', 'FixBrokenChromaUpsampling', 'FadeIn0', 'FadeIn',\n            'FadeIn2', 'FadeOut0', 'FadeOut', 'FadeOut2', 'FadeIO0', 'FadeIO', 'FadeIO2', 'FreezeFrame', 'FrameEvaluate',\n            'GreyScale', 'GaussResize', 'GeneralConvolution', 'GetChannel', 'GetLeftChannel', 'GetRightChannel',\n            'HorizontalReduceBy2', 'Histogram',\n            'ImageReader', 'ImageSource', 'ImageWriter', 'Invert', 'Interleave', 'Info',\n            'KillAudio', 'KillVideo',\n            'Levels', 'Limiter', 'Layer', 'Letterbox', 'LanczosResize', 'Lanczos4Resize', 'Loop',\n            'MergeARGB', 'MergeRGB', 'MergeChroma', 'MergeLuma', 'Merge', 'Mask', 'MaskHS', 'MergeChannels', 'MixAudio',\n            'MonoToStereo', 'MessageClip',\n            'Normalize',\n            'OpenDMLSource', 'Overlay',\n            'PointResize', 'PeculiarBlend', 'Pulldown',\n            'RGBAdjust', 'ResetMask', 'Reverse', 'ResampleAudio', 'ReduceBy2',\n            'SegmentedAviSource', 'SegmentedDirectShowSource', 'SoundOut', 'ShowAlpha', 'ShowRed', 'ShowGreen',\n            'ShowBlue', 'SwapUV', 'Subtract', 'SincResize', 'Spline16Resize', 'Spline36Resize', 'Spline64Resize',\n            'SelectEven', 'SelectOdd', 'SelectEvery', 'SelectRangeEvery', 'Sharpen', 'SpatialSoften', 'SeparateFields',\n            'ShowFiveVersions', 'ShowFrameNumber', 'ShowSMPTE', 'ShowTime', 'StackHorizontal', 'StackVertical', 'Subtitle',\n            'SwapFields', 'SuperEQ', 'SSRC', 'ScriptClip',\n            'Tweak', 'TurnLeft', 'TurnRight', 'Turn180', 'TemporalSoften', 'TimeStretch', 'TCPServer', 'TCPSource', 'Trim',\n            'Tone',\n            'UToY', 'UToY8', 'UnalignedSplice',\n            'VToY', 'VToY8', 'VerticalReduceBy2', 'Version',\n            'WavSource', 'Weave', 'WriteFile', 'WriteFileIf', 'WriteFileStart', 'WriteFileEnd',\n            'YToUV'\n            ),\n        // Internal functions.\n        4 => array(\n            'Abs', 'Apply', 'Assert', 'AverageLuma', 'AverageChromaU', 'AverageChromaV',\n            'Ceil', 'Cos', 'Chr', 'ChromaUDifference', 'ChromaVDifference',\n            'Defined', 'Default',\n            'Exp', 'Exist', 'Eval',\n            'Floor', 'Frac', 'Float', 'Findstr', 'GetMTMode',\n            'HexValue',\n            'Int', 'IsBool', 'IsClip', 'IsFloat', 'IsInt', 'IsString', 'Import',\n            'LoadPlugin', 'Log', 'LCase', 'LeftStr', 'LumaDifference', 'LoadVirtualDubPlugin', 'LoadVFAPIPlugin',\n            'LoadCPlugin', 'Load_Stdcall_Plugin',\n            'Max', 'MulDiv', 'MidStr',\n            'NOP',\n            'OPT_AllowFloatAudio', 'OPT_UseWaveExtensible',\n            'Pi', 'Pow',\n            'Round', 'Rand', 'RevStr', 'RightStr', 'RGBDifference', 'RGBDifferenceFromPrevious', 'RGBDifferenceToNext',\n            'Sin', 'Sqrt', 'Sign', 'Spline', 'StrLen', 'String', 'Select', 'SetMemoryMax', 'SetWorkingDir', 'SetMTMode',\n            'SetPlanarLegacyAlignment',\n            'Time',\n            'UCase', 'UDifferenceFromPrevious', 'UDifferenceToNext', 'UPlaneMax', 'UPlaneMin', 'UPlaneMedian',\n            'UPlaneMinMaxDifference',\n            'Value', 'VersionNumber', 'VersionString', 'VDifferenceFromPrevious', 'VDifferenceToNext', 'VPlaneMax',\n            'VPlaneMin', 'VPlaneMedian', 'VPlaneMinMaxDifference',\n            'YDifferenceFromPrevious', 'YDifferenceToNext', 'YPlaneMax', 'YPlaneMin', 'YPlaneMedian',\n            'YPlaneMinMaxDifference'\n            )\n        ),\n    'SYMBOLS' => array(\n        '+', '++', '-', '--', '/', '*', '%',\n        '=', '==', '<', '<=', '>', '>=', '<>', '!=',\n        '!', '?', ':',\n        '|', '||', '&&',\n        '\\\\',\n        '(', ')', '{', '}',\n        '.', ','\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color:#9966CC; font-weight:bold;',\n            2 => 'color:#0000FF; font-weight:bold;',\n            3 => 'color:#CC3300; font-weight:bold;',\n            4 => 'color:#660000; font-weight:bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color:#008000; font-style:italic;',\n            'MULTI' => 'color:#000080; font-style:italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color:#000099;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color:#006600; font-weight:bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color:#996600;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color:#006666;'\n            ),\n        'METHODS' => array(\n            1 => 'color:#9900CC;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color:#006600; font-weight:bold;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://avisynth.org/mediawiki/{FNAME}',\n        4 => ''\n        ),\n    'REGEXPS' => array(\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/awk.php",
    "content": "<?php\n/************************************************\n * awk.php\n * -------\n * Author: George Pollard (porges@porg.es)\n * Copyright: (c) 2009 George Pollard\n * Release Version: 1.0.9.1\n * Date Started: 2009/01/28\n *\n * Awk language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009/01/28 (1.0.8.5)\n *   -  First Release\n *\n * TODO (updated 2009/01/28)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'awk',\n    'COMMENT_SINGLE' => array(\n        1 => '#'\n        ),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array (\n        1 => array(\n            'for', 'in', 'if', 'else', 'while', 'do', 'continue', 'break'\n            ),\n        2 => array(\n            'BEGIN', 'END'\n            ),\n        3 => array(\n            'ARGC', 'ARGV', 'CONVFMT', 'ENVIRON',\n            'FILENAME', 'FNR', 'FS', 'NF', 'NR', 'OFMT',\n            'OFS','ORS','RLENGTH','RS','RSTART','SUBSEP'\n            ),\n        4 => array(\n            'gsub','index','length','match','split',\n            'sprintf','sub','substr','tolower','toupper',\n            'atan2','cos','exp','int','log','rand',\n            'sin','sqrt','srand'\n            ),\n        5 => array(\n            'print','printf','getline','close','fflush','system'\n            ),\n        6 => array(\n            'function', 'return'\n            )\n        ),\n    'SYMBOLS' => array (\n        0 => array(\n            '(',')','[',']','{','}'\n            ),\n        1 => array(\n            '!','||','&&'\n            ),\n        2 => array(\n            '<','>','<=','>=','==','!='\n            ),\n        3 => array(\n            '+','-','*','/','%','^','++','--'\n            ),\n        4 => array(\n            '~','!~'\n            ),\n        5 => array(\n            '?',':'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #C20CB9; font-weight: bold;',\n            3 => 'color: #4107D5; font-weight: bold;',\n            4 => 'color: #07D589; font-weight: bold;',\n            5 => 'color: #0BD507; font-weight: bold;',\n            6 => 'color: #078CD5; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color:#808080;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color:black;',\n            1 => 'color:black;',\n            2 => 'color:black;',\n            3 => 'color:black;',\n            4 => 'color:#C4C364;',\n            5 => 'color:black;font-weight:bold;'),\n        'SCRIPT' => array(),\n        'REGEXPS' => array(\n            0 => 'color:#000088;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #000000;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #7a0874; font-weight: bold;'\n            ),\n        'METHODS' => array()\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array (),\n    'REGEXPS' => array(\n        0 => \"\\\\$[a-zA-Z0-9_]+\"\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array (),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/bascomavr.php",
    "content": "<?php\n/*************************************************************************************\n * bascomavr.php\n * ---------------------------------\n * Author: aquaticus.info\n * Copyright: (c) 2008 aquaticus.info\n * Release Version: 1.0.9.1\n * Date Started: 2008/01/09\n *\n * BASCOM AVR language file for GeSHi.\n *\n * You can find the BASCOM AVR Website at (www.mcselec.com/bascom-avr.htm)\n *\n * CHANGES\n * -------\n * 2008/01/09 (1.0.8.10)\n *  -  First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'BASCOM AVR',\n    'COMMENT_SINGLE' => array(1 => \"'\"),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            // Navy Blue Bold Keywords\n            '1WRESET' , '1WREAD' , '1WWRITE' , '1WSEARCHFIRST' , '1WSEARCHNEXT' ,'1WVERIFY' , '1WIRECOUNT',\n            'CONFIG' , 'ACI' , 'ADC' , 'BCCARD' , 'CLOCK' , 'COM1' ,\n            'COM2' , 'PS2EMU' , 'ATEMU' , 'I2CSLAVE' ,\n            'INPUT', 'OUTPUT', 'GRAPHLCD' , 'KEYBOARD' , 'TIMER0' , 'TIMER1' ,\n            'LCDBUS' , 'LCDMODE' , '1WIRE' , 'LCD' , 'SERIALOUT' ,\n            'SERIALIN' , 'SPI' , 'LCDPIN' , 'SDA' , 'SCL' ,\n            'WATCHDOG' , 'PORT' , 'COUNTER0', 'COUNTER1' , 'TCPIP' , 'TWISLAVE' ,\n            'X10' , 'XRAM' , 'USB',\n            'BCD' , 'GRAY2BIN' , 'BIN2GRAY' , 'BIN' , 'MAKEBCD' , 'MAKEDEC' , 'MAKEINT' , 'FORMAT' , 'FUSING' , 'BINVAL' ,\n            'CRC8' , 'CRC16' , 'CRC16UNI' , 'CRC32' , 'HIGH' , 'HIGHW' , 'LOW',\n            'DATE' , 'TIME'  , 'DATE$' , 'TIME$' , 'DAYOFWEEK' , 'DAYOFYEAR' , 'SECOFDAY' , 'SECELAPSED' , 'SYSDAY' , 'SYSSEC' , 'SYSSECELAPSED',\n            'WAIT'  , 'WAITMS' , 'WAITUS' , 'DELAY',\n            'BSAVE' , 'BLOAD' , 'GET' , 'VER' , 'DISKFREE' , 'DIR' , 'DriveReset' , 'DriveInit' , 'LINE' , 'INITFILESYSTEM' ,\n            'EOF' , 'WRITE' , 'FLUSH' , 'FREEFILE' , 'FILEATTR' , 'FILEDATE' , 'FILETIME' , 'FILEDATETIME' , 'FILELEN' , 'SEEK' ,\n            'KILL' , 'DriveGetIdentity' , 'DriveWriteSector' , 'DriveReadSector' , 'LOC' , 'LOF' , 'PUT' , 'OPEN' , 'CLOSE',\n            'GLCDCMD' , 'GLCDDATA' , 'SETFONT' , 'PSET' , 'SHOWPIC' , 'SHOWPICE' , 'CIRCLE' , 'BOX',\n            'I2CINIT' , 'I2CRECEIVE' , 'I2CSEND' , 'I2CSTART','I2CSTOP','I2CRBYTE','I2CWBYTE',\n            'ALIAS' , 'BITWAIT' , 'TOGGLE' , 'RESET' , 'SET' , 'SHIFTIN' , 'SHIFTOUT' , 'DEBOUNCE' , 'PULSEIN' , 'PULSEOUT',\n            'IDLE' , 'POWERDOWN' , 'POWERSAVE' , 'ON', 'INTERRUPT' , 'ENABLE' , 'DISABLE' , 'START' , 'VERSION' , 'CLOCKDIVISION' , 'CRYSTAL' , 'STOP',\n            'ADR' , 'ADR2' , 'WRITEEEPROM' , 'CPEEK' , 'CPEEKH' , 'PEEK' , 'POKE' , 'OUT' , 'READEEPROM' , 'DATA' , 'INP' , 'READ' , 'RESTORE' , 'LOOKDOWN' , 'LOOKUP' , 'LOOKUPSTR' , 'LOAD' , 'LOADADR' , 'LOADLABEL' , 'LOADWORDADR' , 'MEMCOPY',\n            'RC5SEND' , 'RC6SEND' , 'GETRC5' , 'SONYSEND',\n            'BAUD' , 'BAUD1', 'BUFSPACE' , 'CLEAR', 'ECHO' , 'WAITKEY' , 'ISCHARWAITING' , 'INKEY' , 'INPUTBIN' , 'INPUTHEX' , 'PRINT', 'PRINT1','PRINT0', 'PRINTBIN' , 'SERIN' , 'SEROUT' , 'SPC' , 'MAKEMODBUS',\n            'SPIIN' , 'SPIINIT' , 'SPIMOVE' , 'SPIOUT', 'SINGLE',\n            'ASC' , 'UCASE' , 'LCASE' , 'TRIM' , 'SPLIT' , 'LTRIM' , 'INSTR' , 'SPACE' , 'RTRIM' , 'LEFT' , 'LEN' , 'MID' , 'RIGHT' , 'VAL' , 'STR' , 'CHR' , 'CHECKSUM' , 'HEX' , 'HEXVAL',\n            'BASE64DEC' , 'BASE64ENC' , 'IP2STR' , 'UDPREAD' , 'UDPWRITE' , 'UDPWRITESTR' , 'TCPWRITE' , 'TCPWRITESTR' , 'TCPREAD' , 'GETDSTIP' , 'GETDSTPORT' , 'SOCKETSTAT' , 'SOCKETCONNECT' , 'SOCKETLISTEN' , 'GETSOCKET' , 'CLOSESOCKET' ,\n            'SETTCP' , 'GETTCPREGS' , 'SETTCPREGS' , 'SETIPPROTOCOL' , 'TCPCHECKSUM',\n            'HOME' , 'CURSOR' , 'UPPERLINE' , 'THIRDLINE' , 'INITLCD' , 'LOWERLINE' , 'LCDAT' , 'FOURTHLINE' , 'DISPLAY' , 'LCDCONTRAST' , 'LOCATE' , 'SHIFTCURSOR' , 'DEFLCDCHAR' , 'SHIFTLCD' , 'CLS',\n            'ACOS' , 'ASIN' , 'ATN' , 'ATN2' , 'EXP' , 'RAD2DEG' , 'FRAC' , 'TAN' , 'TANH' , 'COS' , 'COSH' , 'LOG' , 'LOG10' , 'ROUND' , 'ABS' , 'INT' , 'MAX' , 'MIN' , 'SQR' , 'SGN' , 'POWER' , 'SIN' , 'SINH' , 'FIX' , 'INCR' , 'DECR' , 'DEG2RAD',\n            'DBG' , 'DEBUG', 'DTMFOUT' , 'ENCODER' , 'GETADC' , 'GETKBD' , 'GETATKBD' , 'GETRC' , 'VALUE' , 'POPALL' , 'PS2MOUSEXY' , 'PUSHALL' ,\n            'RETURN'  , 'RND' , 'ROTATE' , 'SENDSCAN' , 'SENDSCANKBD' , 'SHIFT' , 'SOUND' , 'STCHECK' , 'SWAP' , 'VARPTR' , 'X10DETECT' , 'X10SEND' , 'READMAGCARD' , 'REM' , 'BITS' , 'BYVAL' , 'CALL' , 'READHITAG',\n            'Buffered', 'Size', 'Dummy', 'Parity', 'None', 'Stopbits', 'Databits', 'Clockpol', 'Synchrone', 'Prescaler', 'Reference', 'int0', 'int1', 'Interrupts',\n            'Auto', 'avcc', 'ack', 'nack', 'Pin', 'Db4', 'Db3', 'Db2', 'Db1', 'Db7', 'Db6', 'Db5', 'Db0',  'e', 'rs', 'twi',\n            ),\n        2 => array(\n            // Red Lowercase Keywords\n            '$ASM' , '$BAUD' , '$BAUD1' , '$BGF' , '$BOOT' , '$CRYSTAL' , '$DATA' , '$DBG' , '$DEFAULT' , '$EEPLEAVE' , '$EEPROM' ,\n            '$EEPROMHEX' , '$EXTERNAL' , '$HWSTACK' , '$INC' , '$INCLUDE' , '$INITMICRO' , '$LCD' , '$LCDRS' , '$LCDPUTCTRL' ,\n            '$LCDPUTDATA' , '$LCDVFO' , '$LIB' , '$LOADER' , '$LOADERSIZE' , '$MAP' , '$NOCOMPILE' , '$NOINIT' , '$NORAMCLEAR' ,\n            '$PROG' , '$PROGRAMMER' , '$REGFILE' , '$RESOURCE' , '$ROMSTART', '$SERIALINPUT', '$SERIALINPUT1' , '$SERIALINPUT2LCD' ,\n            '$SERIALOUTPUT' , '$SERIALOUTPUT1' , '$SIM' , '$SWSTACK' , '$TIMEOUT' , '$TINY' , '$WAITSTATE' , '$XRAMSIZE' , '$XRAMSTART', '$XA',\n            '#IF' , '#ELSE' , '#ENDIF', '$framesize'\n            ),\n        3 => array(\n            // Blue Lowercase Keywords\n            'IF', 'THEN', 'ELSE', 'END', 'WHILE', 'WEND', 'DO', 'LOOP', 'SELECT', 'CASE', 'FOR', 'NEXT',\n            'GOSUB' , 'GOTO' , 'LOCAL' , 'SUB' , 'DEFBIT', 'DEFBYTE', 'DEFINT', 'DEFWORD', 'DEFLNG', 'DEFSNG', 'DEFDBL',\n            'CONST', 'DECLARE', 'FUNCTION', 'DIM', 'EXIT', 'LONG', 'INTEGER', 'BYTE', 'AS', 'STRING', 'WORD'\n            ),\n        4 => array(\n            //light blue\n            'PINA.0', 'PINA.1', 'PINA.2', 'PINA.3', 'PINA.4', 'PINA.5', 'PINA.6', 'PINA.7',\n            'PINB.0', 'PINB.1', 'PINB.2', 'PINB.3', 'PINB.4', 'PINB.5', 'PINB.6', 'PINB.7',\n            'PINC.0', 'PINC.1', 'PINC.2', 'PINC.3', 'PINC.4', 'PINC.5', 'PINC.6', 'PINC.7',\n            'PIND.0', 'PIND.1', 'PIND.2', 'PIND.3', 'PIND.4', 'PIND.5', 'PIND.6', 'PIND.7',\n            'PINE.0', 'PINE.1', 'PINE.2', 'PINE.3', 'PINE.4', 'PINE.5', 'PINE.6', 'PINE.7',\n            'PINF.0', 'PINF.1', 'PINF.2', 'PINF.3', 'PINF.4', 'PINF.5', 'PINF.6', 'PINF.7',\n\n            'PORTA.0', 'PORTA.1', 'PORTA.2', 'PORTA.3', 'PORTA.4', 'PORTA.5', 'PORTA.6', 'PORTA.7',\n            'PORTB.0', 'PORTB.1', 'PORTB.2', 'PORTB.3', 'PORTB.4', 'PORTB.5', 'PORTB.6', 'PORTB.7',\n            'PORTC.0', 'PORTC.1', 'PORTC.2', 'PORTC.3', 'PORTC.4', 'PORTC.5', 'PORTC.6', 'PORTC.7',\n            'PORTD.0', 'PORTD.1', 'PORTD.2', 'PORTD.3', 'PORTD.4', 'PORTD.5', 'PORTD.6', 'PORTD.7',\n            'PORTE.0', 'PORTE.1', 'PORTE.2', 'PORTE.3', 'PORTE.4', 'PORTE.5', 'PORTE.6', 'PORTE.7',\n            'PORTF.0', 'PORTF.1', 'PORTF.2', 'PORTF.3', 'PORTF.4', 'PORTF.5', 'PORTF.6', 'PORTF.7',\n\n            'DDRA.0', 'DDRA.1', 'DDRA.2', 'DDRA.3', 'DDRA.4', 'DDRA.5', 'DDRA.6', 'DDRA.7',\n            'DDRB.0', 'DDRB.1', 'DDRB.2', 'DDRB.3', 'DDRB.4', 'DDRB.5', 'DDRB.6', 'DDRB.7',\n            'DDRC.0', 'DDRC.1', 'DDRC.2', 'DDRC.3', 'DDRC.4', 'DDRC.5', 'DDRC.6', 'DDRC.7',\n            'DDRD.0', 'DDRD.1', 'DDRD.2', 'DDRD.3', 'DDRD.4', 'DDRD.5', 'DDRD.6', 'DDRD.7',\n            'DDRE.0', 'DDRE.1', 'DDRE.2', 'DDRE.3', 'DDRE.4', 'DDRE.5', 'DDRE.6', 'DDRE.7',\n            'DDRF.0', 'DDRF.1', 'DDRF.2', 'DDRF.3', 'DDRF.4', 'DDRF.5', 'DDRF.6', 'DDRF.7',\n\n            'DDRA','DDRB','DDRC','DDRD','DDRE','DDRF',\n            'PORTA','PORTB','PORTC','PORTD','PORTE','PORTF',\n            'PINA','PINB','PINC','PIND','PINE','PINF',\n            )\n        ),\n    'SYMBOLS' => array(\n        '=', '<', '>', '>=', '<=', '+', '-', '*', '/', '%', '(', ')', '{', '}', '[', ']',  ';', ':', '$', '&H'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000080; font-weight: bold;',\n            2 => 'color: #FF0000;',\n            3 => 'color: #0000FF;',\n            4 => 'color: #0080FF;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #657CC4; font-style: italic;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000080;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #008000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #000080; font-weight: bold;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #0000FF;'\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/bash.php",
    "content": "<?php\n/*************************************************************************************\n * bash.php\n * --------\n * Author: Andreas Gohr (andi@splitbrain.org)\n * Copyright: (c) 2004 Andreas Gohr, Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/08/20\n *\n * BASH language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/06/21 (1.0.8)\n *  -  Added loads of keywords and commands of GNU/Linux\n *  -  Added support for parameters starting with a dash\n * 2008/05/23 (1.0.7.22)\n *  -  Added description of extra language features (SF#1970248)\n * 2007/09/05 (1.0.7.21)\n *  -  PARSER_CONTROL patch using SF #1788408 (BenBE)\n * 2007/06/11 (1.0.7.20)\n *  -  Added a lot of keywords (BenBE / Jan G)\n * 2004/11/27 (1.0.2)\n *  -  Added support for multiple object splitters\n * 2004/10/27 (1.0.1)\n *   -  Added support for URLs\n * 2004/08/20 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n * * Get symbols working\n * * Highlight builtin vars\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Bash',\n    // Bash DOES have single line comments with # markers. But bash also has\n    // the  $# variable, so comments need special handling (see sf.net\n    // 1564839)\n    'COMMENT_SINGLE' => array('#'),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        //Variables\n        1 => \"/\\\\$\\\\{[^\\\\n\\\\}]*?\\\\}/i\",\n        //BASH-style Heredoc\n        2 => '/<<-?\\s*?(\\'?)([a-zA-Z0-9]+)\\1\\\\n.*\\\\n\\\\2(?![a-zA-Z0-9])/siU',\n        //Escaped String Starters\n        3 => \"/\\\\\\\\['\\\"]/siU\",\n        // Single-Line Shell usage: Hide the prompt at the beginning\n        /* 4 => \"/\\A(?!#!)\\s*(?>[\\w:@\\\\/\\\\-\\\\._~]*[$#]\\s?)?(?=[^\\n]+\\n?\\Z)|^(?!#!)(\\w+@)?[\\w\\\\-\\\\.]+(:~?)[\\w\\\\/\\\\-\\\\._]*?[$#]\\s?/ms\" */\n        4 => \"/\\A(?!#!)(?:(?>[\\w:@\\\\/\\\\-\\\\._~]*)[$#]\\s?)(?=(?>[^\\n]+)\\n?\\Z)|^(?!#!)(?:\\w+@)?(?>[\\w\\\\-\\\\.]+)(?>:~?[\\w\\\\/\\\\-\\\\._]*?)?[$#]\\s?/sm\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'HARDQUOTE' => array(\"'\", \"'\"),\n    'HARDESCAPE' => array(\"\\'\"),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[nfrtv\\\\$\\\\\\\"\\n]#i\",\n        // $var\n        2 => \"#\\\\$[a-z_][a-z0-9_]*#i\",\n        // ${...}\n        3 => \"/\\\\$\\\\{[^\\\\n\\\\}]*?\\\\}/i\",\n        // $(...)\n        4 => \"/\\\\$\\\\([^\\\\n\\\\)]*?\\\\)/i\",\n        // `...`\n        5 => \"/`[^`]*`/\"\n        ),\n    'KEYWORDS' => array(\n        // Control flow keywords and super-important builtins\n        1 => array(\n            'case', 'do', 'done', 'elif', 'else', 'esac', 'fi', 'for', 'function',\n            'if', 'in', 'select', 'set', 'then', 'time', 'until', 'while'\n            ),\n        // Common Unix commands\n        2 => array(\n            'aclocal', 'aconnect', 'apachectl', 'apache2ctl', 'aplay', 'apm',\n            'apmsleep', 'apropos', 'apt-cache', 'apt-cdrom', 'apt-config',\n            'apt-file', 'apt-ftparchive', 'apt-get', 'apt-key', 'apt-listbugs',\n            'apt-listchanges', 'apt-mark', 'apt-mirror', 'apt-sortpkgs',\n            'apt-src', 'apticron', 'aptitude', 'aptsh', 'apxs', 'apxs2', 'ar',\n            'arch', 'arecord', 'as', 'as86', 'ash', 'autoconf', 'autoheader',\n            'automake', 'awk',\n\n            'apachectl start', 'apachectl stop', 'apachectl restart',\n            'apachectl graceful', 'apachectl graceful-stop',\n            'apachectl configtest', 'apachectl status', 'apachectl fullstatus',\n            'apachectl help', 'apache2ctl start', 'apache2ctl stop',\n            'apache2ctl restart', 'apache2ctl graceful',\n            'apache2ctl graceful-stop', 'apache2ctl configtest',\n            'apache2ctl status', 'apache2ctl fullstatus', 'apache2ctl help',\n\n            'apt-cache add', 'apt-cache depends', 'apt-cache dotty',\n            'apt-cache dump', 'apt-cache dumpavail', 'apt-cache gencaches',\n            'apt-cache pkgnames', 'apt-cache policy', 'apt-cache rdepends',\n            'apt-cache search', 'apt-cache show', 'apt-cache showauto',\n            'apt-cache showpkg', 'apt-cache showsrc', 'apt-cache stats',\n            'apt-cache unmet', 'apt-cache xvcg', 'apt-cdrom add',\n            'apt-cdrom ident', 'apt-config dump', 'apt-config shell',\n            'apt-file find', 'apt-file list', 'apt-file purge',\n            'apt-file search', 'apt-file shot', 'apt-file update',\n            'apt-get autoclean', 'apt-get autoremove', 'apt-get build-dep',\n            'apt-get check', 'apt-get clean', 'apt-get dist-upgrade',\n            'apt-get dselect-upgrade', 'apt-get install', 'apt-get markauto',\n            'apt-get purge', 'apt-get remove', 'apt-get source',\n            'apt-get unmarkauto', 'apt-get update', 'apt-get upgrade',\n            'apt-key add', 'apt-key adv', 'apt-key del', 'apt-key export',\n            'apt-key exportall', 'apt-key finger', 'apt-key list',\n            'apt-key net-update', 'apt-key update', 'apt-listbugs apt',\n            'apt-listbugs list', 'apt-listbugs rss', 'apt-src build',\n            'apt-src clean', 'apt-src import', 'apt-src install',\n            'apt-src list', 'apt-src location', 'apt-src name',\n            'apt-src remove', 'apt-src update', 'apt-src upgrade',\n            'apt-src version',\n\n            'aptitude autoclean', 'aptitude build-dep', 'aptitude changelog',\n            'aptitude clean', 'aptitude download', 'aptitude forbid-version',\n            'aptitude forget-new', 'aptitude full-upgrade', 'aptitude hold',\n            'aptitude install', 'aptitude markauto', 'aptitude purge',\n            'aptitude reinstall', 'aptitude remove', 'aptitude safe-upgrade',\n            'aptitude search', 'aptitude show', 'aptitude unhold',\n            'aptitude unmarkauto', 'aptitude update', 'aptitude versions',\n            'aptitude why', 'aptitude why-not',\n\n            'basename', 'bash', 'batctl', 'bc', 'bison', 'bunzip2', 'bzcat',\n            'bzcmp', 'bzdiff', 'bzegrep', 'bzfgrep', 'bzgrep',\n            'bzip2', 'bzip2recover', 'bzless', 'bzmore',\n\n            'c++', 'cal', 'cat', 'chattr', 'cc', 'cdda2wav', 'cdparanoia',\n            'cdrdao', 'cd-read', 'cdrecord', 'chfn', 'chgrp', 'chmod',\n            'chown', 'chroot', 'chsh', 'chvt', 'clear', 'cmp', 'comm', 'co',\n            'col', 'cp', 'cpio', 'cpp', 'csh', 'cut', 'cvs', 'cvs-pserver',\n\n            'cvs add', 'cvs admin', 'cvs annotate', 'cvs checkout',\n            'cvs commit', 'cvs diff', 'cvs edit', 'cvs editors', 'cvs export',\n            'cvs history', 'cvs import', 'cvs init', 'cvs log', 'cvs login',\n            'cvs logout', 'cvs ls', 'cvs pserver', 'cvs rannotate',\n            'cvs rdiff', 'cvs release', 'cvs remove', 'cvs rlog', 'cvs rls',\n            'cvs rtag', 'cvs server', 'cvs status', 'cvs tag', 'cvs unedit',\n            'cvs update', 'cvs version', 'cvs watch', 'cvs watchers',\n\n            'dash', 'date', 'dc', 'dch', 'dcop', 'dd', 'ddate', 'ddd',\n            'deallocvt', 'debconf', 'defoma', 'depmod', 'df', 'dh',\n            'dialog', 'diff', 'diff3', 'dig', 'dir', 'dircolors', 'directomatic',\n            'dirname', 'dmesg', 'dnsdomainname', 'domainname', 'dpkg',\n            'dselect', 'du', 'dumpkeys',\n\n            'ed', 'egrep', 'env', 'expr',\n\n            'false', 'fbset', 'fdisk', 'ffmpeg', 'fgconsole','fgrep', 'file',\n            'find', 'flex', 'flex++', 'fmt', 'free', 'ftp', 'funzip', 'fuser',\n\n            'g++', 'gawk', 'gc','gcc', 'gdb', 'gdisk', 'getent', 'getkeycodes',\n            'getopt', 'gettext', 'gettextize', 'gimp', 'gimp-remote',\n            'gimptool', 'gmake', 'gocr', 'grep', 'groups', 'gs', 'gunzip',\n            'gzexe', 'gzip',\n\n            'git', 'git add', 'git add--interactive', 'git am', 'git annotate',\n            'git apply', 'git archive', 'git bisect', 'git bisect--helper',\n            'git blame', 'git branch', 'git bundle', 'git cat-file',\n            'git check-attr', 'git checkout', 'git checkout-index',\n            'git check-ref-format', 'git cherry', 'git cherry-pick',\n            'git clean', 'git clone', 'git commit', 'git commit-tree',\n            'git config', 'git count-objects', 'git daemon', 'git describe',\n            'git diff', 'git diff-files', 'git diff-index', 'git difftool',\n            'git difftool--helper', 'git diff-tree', 'git fast-export',\n            'git fast-import', 'git fetch', 'git fetch-pack',\n            'git filter-branch', 'git fmt-merge-msg', 'git for-each-ref',\n            'git format-patch', 'git fsck', 'git fsck-objects', 'git gc', 'git gui',\n            'git get-tar-commit-id', 'git grep', 'git hash-object', 'git help',\n            'git http-backend', 'git http-fetch', 'git http-push',\n            'git imap-send', 'git index-pack', 'git init', 'git init-db',\n            'git instaweb', 'git log', 'git lost-found', 'git ls-files',\n            'git ls-remote', 'git ls-tree', 'git mailinfo', 'git mailsplit',\n            'git merge', 'git merge-base', 'git merge-file', 'git merge-index',\n            'git merge-octopus', 'git merge-one-file', 'git merge-ours',\n            'git merge-recursive', 'git merge-resolve', 'git merge-subtree',\n            'git mergetool', 'git merge-tree', 'git mktag', 'git mktree',\n            'git mv', 'git name-rev', 'git notes', 'git pack-objects',\n            'git pack-redundant', 'git pack-refs', 'git patch-id',\n            'git peek-remote', 'git prune', 'git prune-packed', 'git pull',\n            'git push', 'git quiltimport', 'git read-tree', 'git rebase',\n            'git rebase--interactive', 'git receive-pack', 'git reflog',\n            'git relink', 'git remote', 'git remote-ftp', 'git remote-ftps',\n            'git remote-http', 'git remote-https', 'git remote-testgit',\n            'git repack', 'git replace', 'git repo-config', 'git request-pull',\n            'git rerere', 'git reset', 'git revert', 'git rev-list',\n            'git rev-parse', 'git rm', 'git send-pack', 'git shell',\n            'git shortlog', 'git show', 'git show-branch', 'git show-index',\n            'git show-ref', 'git stage', 'git stash', 'git status',\n            'git stripspace', 'git submodule', 'git symbolic-ref', 'git tag',\n            'git tar-tree', 'git unpack-file', 'git unpack-objects',\n            'git update-index', 'git update-ref', 'git update-server-info',\n            'git upload-archive', 'git upload-pack', 'git var',\n            'git verify-pack', 'git verify-tag', 'git web--browse',\n            'git whatchanged', 'git write-tree',\n\n            'gitaction', 'git-add', 'git-add--interactive', 'git-am',\n            'git-annotate', 'git-apply', 'git-archive', 'git-bisect',\n            'git-bisect--helper', 'git-blame', 'git-branch', 'git-bundle',\n            'git-cat-file', 'git-check-attr', 'git-checkout',\n            'git-checkout-index', 'git-check-ref-format', 'git-cherry',\n            'git-cherry-pick', 'git-clean', 'git-clone', 'git-commit',\n            'git-commit-tree', 'git-config', 'git-count-objects', 'git-daemon',\n            'git-describe', 'git-diff', 'git-diff-files', 'git-diff-index',\n            'git-difftool', 'git-difftool--helper', 'git-diff-tree',\n            'gitdpkgname', 'git-fast-export', 'git-fast-import', 'git-fetch',\n            'git-fetch-pack', 'git-fetch--tool', 'git-filter-branch', 'gitfm',\n            'git-fmt-merge-msg', 'git-for-each-ref', 'git-format-patch',\n            'git-fsck', 'git-fsck-objects', 'git-gc', 'git-get-tar-commit-id',\n            'git-grep', 'git-hash-object', 'git-help', 'git-http-fetch',\n            'git-http-push', 'git-imap-send', 'git-index-pack', 'git-init',\n            'git-init-db', 'git-instaweb', 'gitkeys', 'git-log',\n            'git-lost-found', 'git-ls-files', 'git-ls-remote', 'git-ls-tree',\n            'git-mailinfo', 'git-mailsplit', 'git-merge', 'git-merge-base',\n            'git-merge-file', 'git-merge-index', 'git-merge-octopus',\n            'git-merge-one-file', 'git-merge-ours', 'git-merge-recursive',\n            'git-merge-resolve', 'git-merge-subtree', 'git-mergetool',\n            'git-mergetool--lib', 'git-merge-tree', 'gitmkdirs', 'git-mktag',\n            'git-mktree', 'gitmount', 'git-mv', 'git-name-rev',\n            'git-pack-objects', 'git-pack-redundant', 'git-pack-refs',\n            'git-parse-remote', 'git-patch-id', 'git-peek-remote', 'git-prune',\n            'git-prune-packed', 'gitps', 'git-pull', 'git-push',\n            'git-quiltimport', 'git-read-tree', 'git-rebase',\n            'git-rebase--interactive', 'git-receive-pack', 'git-reflog',\n            'gitregrep', 'git-relink', 'git-remote', 'git-repack',\n            'git-repo-config', 'git-request-pull', 'git-rerere', 'git-reset',\n            'git-revert', 'git-rev-list', 'git-rev-parse', 'gitrfgrep',\n            'gitrgrep', 'git-rm', 'git-send-pack', 'git-shell', 'git-shortlog',\n            'git-show', 'git-show-branch', 'git-show-index', 'git-show-ref',\n            'git-sh-setup', 'git-stage', 'git-stash', 'git-status',\n            'git-stripspace', 'git-submodule', 'git-svn', 'git-symbolic-ref',\n            'git-tag', 'git-tar-tree', 'gitunpack', 'git-unpack-file',\n            'git-unpack-objects', 'git-update-index', 'git-update-ref',\n            'git-update-server-info', 'git-upload-archive', 'git-upload-pack',\n            'git-var', 'git-verify-pack', 'git-verify-tag', 'gitview',\n            'git-web--browse', 'git-whatchanged', 'gitwhich', 'gitwipe',\n            'git-write-tree', 'gitxgrep',\n\n            'head', 'hexdump', 'hostname', 'htop',\n\n            'id', 'ifconfig', 'ifdown', 'ifup', 'igawk', 'install',\n\n            'ip', 'ip addr', 'ip addrlabel', 'ip link', 'ip maddr', 'ip mroute',\n            'ip neigh', 'ip route', 'ip rule', 'ip tunnel', 'ip xfrm',\n\n            'jar', 'java', 'javac', 'join',\n\n            'kbd_mode','kbdrate', 'kdialog', 'kfile', 'killall',\n\n            'lame', 'last', 'lastb', 'ld', 'ld86', 'ldd', 'less', 'lex', 'link',\n            'ln', 'loadkeys', 'loadunimap', 'locate', 'lockfile', 'login',\n            'logname', 'lp', 'lpr', 'ls', 'lsattr', 'lsmod', 'lsmod.old',\n            'lspci', 'ltrace', 'lynx',\n\n            'm4', 'make', 'man', 'mapscrn', 'mesg', 'mkdir', 'mkfifo',\n            'mknod', 'mktemp', 'more', 'mount', 'mplayer', 'msgfmt', 'mv',\n\n            'namei', 'nano', 'nasm', 'nawk', 'netstat', 'nice',\n            'nisdomainname', 'nl', 'nm', 'nm86', 'nmap', 'nohup', 'nop',\n\n            'od', 'openvt',\n\n            'passwd', 'patch', 'pbzip2', 'pcregrep', 'pcretest', 'perl',\n            'perror', 'pgawk', 'pidof', 'pigz', 'ping', 'pr', 'procmail',\n            'prune', 'ps', 'pstree', 'ps2ascii', 'ps2epsi', 'ps2frag',\n            'ps2pdf', 'ps2ps', 'psbook', 'psmerge', 'psnup', 'psresize',\n            'psselect', 'pstops',\n\n            'rbash', 'rcs', 'rcs2log', 'readlink', 'red', 'resizecons',\n            'rev', 'rm', 'rmdir', 'rsh', 'run-parts',\n\n            'sash', 'scp', 'screen', 'sed', 'seq', 'sendmail', 'setfont',\n            'setkeycodes', 'setleds', 'setmetamode', 'setserial', 'setterm',\n            'sh', 'showkey', 'shred', 'size', 'size86', 'skill', 'sleep',\n            'slogin', 'snice', 'sort', 'sox', 'split', 'ssed', 'ssh', 'ssh-add',\n            'ssh-agent', 'ssh-keygen', 'ssh-keyscan', 'sshfs', 'stat', 'strace',\n            'strings', 'strip', 'stty', 'su', 'sudo', 'suidperl', 'sum', 'svn',\n            'svnadmin', 'svndumpfilter', 'svnlook', 'svnmerge', 'svnmucc',\n            'svnserve', 'svnshell', 'svnsync', 'svnversion', 'svnwrap', 'sync',\n\n            'svn add', 'svn ann', 'svn annotate', 'svn blame', 'svn cat',\n            'svn changelist', 'svn checkout', 'svn ci', 'svn cl', 'svn cleanup',\n            'svn co', 'svn commit', 'svn copy', 'svn cp', 'svn del',\n            'svn delete', 'svn di', 'svn diff', 'svn export', 'svn help',\n            'svn import', 'svn info', 'svn list', 'svn lock', 'svn log',\n            'svn ls', 'svn merge', 'svn mergeinfo', 'svn mkdir', 'svn move',\n            'svn mv', 'svn patch', 'svn pd', 'svn pdel', 'svn pe', 'svn pedit',\n            'svn pg', 'svn pget', 'svn pl', 'svn plist', 'svn praise',\n            'svn propdel', 'svn propedit', 'svn propget', 'svn proplist',\n            'svn propset', 'svn ps', 'svn pset', 'svn relocate', 'svn remove',\n            'svn rename', 'svn resolve', 'svn resolved', 'svn revert', 'svn rm',\n            'svn st', 'svn stat', 'svn status', 'svn sw', 'svn switch',\n            'svn unlock', 'svn up', 'svn update', 'svn upgrade',\n\n            'svnadmin crashtest', 'svnadmin create', 'svnadmin deltify',\n            'svnadmin dump', 'svnadmin help', 'svnadmin hotcopy',\n            'svnadmin list-dblogs', 'svnadmin list-unused-dblogs',\n            'svnadmin load', 'svnadmin lslocks', 'svnadmin lstxns',\n            'svnadmin pack', 'svnadmin recover', 'svnadmin rmlocks',\n            'svnadmin rmtxns', 'svnadmin setlog', 'svnadmin setrevprop',\n            'svnadmin setuuid', 'svnadmin upgrade', 'svnadmin verify',\n\n            'svndumpfilter exclude', 'svndumpfilter help',\n            'svndumpfilter include',\n\n            'svnlook author', 'svnlook cat', 'svnlook changed', 'svnlook date',\n            'svnlook diff', 'svnlook dirs-changed', 'svnlook filesize',\n            'svnlook help', 'svnlook history', 'svnlook info', 'svnlook lock',\n            'svnlook log', 'svnlook pg', 'svnlook pget', 'svnlook pl',\n            'svnlook plist', 'svnlook propget', 'svnlook proplist',\n            'svnlook tree', 'svnlook uuid', 'svnlook youngest',\n\n            'svnrdump dump', 'svnrdump help', 'svnrdump load',\n\n            'svnsync copy-revprops', 'svnsync help', 'svnsync info',\n            'svnsync init', 'svnsync initialize', 'svnsync sync',\n            'svnsync synchronize',\n\n            'tac', 'tail', 'tar', 'tee', 'tempfile', 'touch', 'tr', 'tree',\n            'true',\n\n            'umount', 'uname', 'unicode_start', 'unicode_stop', 'uniq',\n            'unlink', 'unzip', 'updatedb', 'updmap', 'uptime', 'users',\n            'utmpdump', 'uuidgen',\n\n            'valgrind', 'vdir', 'vi', 'vim', 'vmstat',\n\n            'w', 'wall', 'watch', 'wc', 'wget', 'whatis', 'whereis',\n            'which', 'whiptail', 'who', 'whoami', 'whois', 'wine', 'wineboot',\n            'winebuild', 'winecfg', 'wineconsole', 'winedbg', 'winedump',\n            'winefile', 'wodim', 'write',\n\n            'xargs', 'xhost', 'xmodmap', 'xset',\n\n            'yacc', 'yes', 'ypdomainname', 'yum',\n\n            'yum check-update', 'yum clean', 'yum deplist', 'yum erase',\n            'yum groupinfo', 'yum groupinstall', 'yum grouplist',\n            'yum groupremove', 'yum groupupdate', 'yum info', 'yum install',\n            'yum list', 'yum localinstall', 'yum localupdate', 'yum makecache',\n            'yum provides', 'yum remove', 'yum resolvedep', 'yum search',\n            'yum shell', 'yum update', 'yum upgrade', 'yum whatprovides',\n\n            'zcat', 'zcmp', 'zdiff', 'zdump', 'zegrep', 'zfgrep', 'zforce',\n            'zgrep', 'zip', 'zipgrep', 'zipinfo', 'zless', 'zmore', 'znew',\n            'zsh', 'zsoelim'\n            ),\n        // Builtin commands\n        3 => array(\n            'alias', 'bg', 'bind', 'break', 'builtin', 'caller', 'cd', 'command',\n            'compgen', 'complete', 'compopt', 'continue', 'coproc', 'declare', 'dirs', 'disown',\n            'echo', 'enable', 'eval', 'exec', 'exit', 'export', 'fc',\n            'fg', 'getopts', 'hash', 'help', 'history', 'jobs', 'kill', 'let',\n            'local', 'logout', 'mapfile', 'popd', 'printf', 'pushd', 'pwd', 'read',\n            'readarray', 'readonly', 'return', 'shift', 'shopt', 'source',\n            'suspend', 'test', 'times', 'trap', 'type', 'typeset', 'ulimit',\n            'umask', 'unalias', 'unset', 'wait'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>', ';;', '`'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #c20cb9; font-weight: bold;',\n            3 => 'color: #7a0874; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            0 => 'color: #666666; font-style: italic;',\n            1 => 'color: #800000;',\n            2 => 'color: #cc0000; font-style: italic;',\n            3 => 'color: #000000; font-weight: bold;',\n            4 => 'color: #666666;'\n            ),\n        'ESCAPE_CHAR' => array(\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #007800;',\n            3 => 'color: #007800;',\n            4 => 'color: #007800;',\n            5 => 'color: #780078;',\n            'HARD' => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #7a0874; font-weight: bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;',\n            'HARD' => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #000000;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000; font-weight: bold;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #007800;',\n            1 => 'color: #007800;',\n            2 => 'color: #007800;',\n            4 => 'color: #007800;',\n            5 => 'color: #660033;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        //Variables (will be handled by comment_regexps)\n        0 => \"\\\\$\\\\{[a-zA-Z_][a-zA-Z0-9_]*?\\\\}\",\n        //Variables without braces\n        1 => \"\\\\$[a-zA-Z_][a-zA-Z0-9_]*\",\n        //Variable assignment\n        2 => \"(?<![\\.a-zA-Z_\\-])([a-zA-Z_][a-zA-Z0-9_]*?)(?==)\",\n        //Shorthand shell variables\n        4 => \"\\\\$[*#\\$\\\\-\\\\?!\\d]\",\n        //Parameters of commands\n        5 => \"(?<=\\s)--?[0-9a-zA-Z\\-]+(?=[\\s=]|<(?:SEMI|PIPE)>|$)\"\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'COMMENTS' => array(\n            'DISALLOWED_BEFORE' => '$'\n        ),\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![\\.\\-a-zA-Z0-9_\\$\\#:])\",\n            'DISALLOWED_AFTER' =>  \"(?![\\.\\-a-zA-Z0-9_%=\\\\/:])\",\n            2 => array(\n                'SPACE_AS_WHITESPACE' => false\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/basic4gl.php",
    "content": "<?php\n/*************************************************************************************\n * basic4gl.php\n * ---------------------------------\n * Author: Matthew Webb (bmatthew1@blueyonder.co.uk)\n * Copyright: (c) 2004 Matthew Webb (http://matthew-4gl.wikispaces.com)\n * Release Version: 1.0.9.1\n * Date Started: 2007/09/15\n *\n * Basic4GL language file for GeSHi.\n *\n * You can find the Basic4GL Website at (http://www.basic4gl.net/)\n *\n * CHANGES\n * -------\n * 2007/09/17 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2007/09/17)\n * -------------------------\n * Make sure all the OpenGL and Basic4GL commands have been added and are complete.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Basic4GL',\n    'COMMENT_SINGLE' => array(1 => \"'\"),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n\n            // Navy Blue Bold Keywords\n\n            'true','rnd_max','m_pi','m_e','false','VK_ZOOM','VK_UP','VK_TAB','VK_SUBTRACT','VK_SPACE','VK_SNAPSHOT',\n            'VK_SHIFT','VK_SEPARATOR','VK_SELECT','VK_SCROLL','VK_RWIN','VK_RSHIFT','VK_RMENU','VK_RIGHT','VK_RETURN',\n            'VK_RCONTROL','VK_RBUTTON','VK_PROCESSKEY','VK_PRIOR','VK_PRINT','VK_PLAY','VK_PAUSE','VK_NUMPAD9','VK_NUMPAD8',\n            'VK_NUMPAD7','VK_NUMPAD6','VK_NUMPAD5','VK_NUMPAD4','VK_NUMPAD3','VK_NUMPAD2','VK_NUMPAD1','VK_NUMPAD0',\n            'VK_NUMLOCK','VK_NONCONVERT','VK_NEXT','VK_MULTIPLY','VK_MODECHANGE','VK_MENU','VK_MBUTTON','VK_LWIN',\n            'VK_LSHIFT','VK_LMENU','VK_LEFT','VK_LCONTROL','VK_LBUTTON','VK_KANJI','VK_KANA','VK_JUNJA','VK_INSERT',\n            'VK_HOME','VK_HELP','VK_HANJA','VK_HANGUL','VK_HANGEUL','VK_FINAL','VK_F9','VK_F8','VK_F7','VK_F6','VK_F5',\n            'VK_F4','VK_F3','VK_F24','VK_F23','VK_F22','VK_F21','VK_F20','VK_F2','VK_F19','VK_F18','VK_F17','VK_F16',\n            'VK_F15','VK_F14','VK_F13','VK_F12','VK_F11','VK_F10','VK_F1','VK_EXSEL','VK_EXECUTE','VK_ESCAPE','VK_EREOF',\n            'VK_END','VK_DOWN','VK_DIVIDE','VK_DELETE','VK_DECIMAL','VK_CRSEL','VK_CONVERT','VK_CONTROL','VK_CLEAR',\n            'VK_CAPITAL','VK_CANCEL','VK_BACK','VK_ATTN','VK_APPS','VK_ADD','VK_ACCEPT','TEXT_SIMPLE','TEXT_OVERLAID',\n            'TEXT_BUFFERED','SPR_TILEMAP','SPR_SPRITE','SPR_INVALID','MOUSE_RBUTTON','MOUSE_MBUTTON','MOUSE_LBUTTON',\n            'GL_ZOOM_Y','GL_ZOOM_X','GL_ZERO','GL_XOR','GL_WIN_swap_hint','GL_WIN_draw_range_elements','GL_VIEWPORT_BIT',\n            'GL_VIEWPORT','GL_VERTEX_ARRAY_TYPE_EXT','GL_VERTEX_ARRAY_TYPE','GL_VERTEX_ARRAY_STRIDE_EXT','GL_VERTEX_ARRAY_STRIDE',\n            'GL_VERTEX_ARRAY_SIZE_EXT','GL_VERTEX_ARRAY_SIZE','GL_VERTEX_ARRAY_POINTER_EXT','GL_VERTEX_ARRAY_POINTER',\n            'GL_VERTEX_ARRAY_EXT','GL_VERTEX_ARRAY_COUNT_EXT','GL_VERTEX_ARRAY','GL_VERSION_1_1','GL_VERSION','GL_VENDOR',\n            'GL_V3F','GL_V2F','GL_UNSIGNED_SHORT','GL_UNSIGNED_INT','GL_UNSIGNED_BYTE','GL_UNPACK_SWAP_BYTES','GL_UNPACK_SKIP_ROWS',\n            'GL_UNPACK_SKIP_PIXELS','GL_UNPACK_ROW_LENGTH','GL_UNPACK_LSB_FIRST','GL_UNPACK_ALIGNMENT','GL_TRUE','GL_TRIANGLE_STRIP',\n            'GL_TRIANGLE_FAN','GL_TRIANGLES','GL_TRANSFORM_BIT','GL_TEXTURE_WRAP_T','GL_TEXTURE_WRAP_S','GL_TEXTURE_WIDTH',\n            'GL_TEXTURE_STACK_DEPTH','GL_TEXTURE_RESIDENT','GL_TEXTURE_RED_SIZE','GL_TEXTURE_PRIORITY','GL_TEXTURE_MIN_FILTER',\n            'GL_TEXTURE_MATRIX','GL_TEXTURE_MAG_FILTER','GL_TEXTURE_LUMINANCE_SIZE','GL_TEXTURE_INTERNAL_FORMAT','GL_TEXTURE_INTENSITY_SIZE',\n            'GL_TEXTURE_HEIGHT','GL_TEXTURE_GREEN_SIZE','GL_TEXTURE_GEN_T','GL_TEXTURE_GEN_S','GL_TEXTURE_GEN_R','GL_TEXTURE_GEN_Q',\n            'GL_TEXTURE_GEN_MODE','GL_TEXTURE_ENV_MODE','GL_TEXTURE_ENV_COLOR','GL_TEXTURE_ENV','GL_TEXTURE_COORD_ARRAY_TYPE_EXT',\n            'GL_TEXTURE_COORD_ARRAY_TYPE','GL_TEXTURE_COORD_ARRAY_STRIDE_EXT','GL_TEXTURE_COORD_ARRAY_STRIDE','GL_TEXTURE_COORD_ARRAY_SIZE_EXT',\n            'GL_TEXTURE_COORD_ARRAY_SIZE','GL_TEXTURE_COORD_ARRAY_POINTER_EXT','GL_TEXTURE_COORD_ARRAY_POINTER','GL_TEXTURE_COORD_ARRAY_EXT',\n            'GL_TEXTURE_COORD_ARRAY_COUNT_EXT','GL_TEXTURE_COORD_ARRAY','GL_TEXTURE_COMPONENTS','GL_TEXTURE_BORDER_COLOR','GL_TEXTURE_BORDER',\n            'GL_TEXTURE_BLUE_SIZE','GL_TEXTURE_BIT','GL_TEXTURE_BINDING_2D','GL_TEXTURE_BINDING_1D','GL_TEXTURE_ALPHA_SIZE',\n            'GL_TEXTURE_2D','GL_TEXTURE_1D','GL_TEXTURE9_ARB','GL_TEXTURE9','GL_TEXTURE8_ARB','GL_TEXTURE8','GL_TEXTURE7_ARB',\n            'GL_TEXTURE7','GL_TEXTURE6_ARB','GL_TEXTURE6','GL_TEXTURE5_ARB','GL_TEXTURE5','GL_TEXTURE4_ARB','GL_TEXTURE4',\n            'GL_TEXTURE3_ARB','GL_TEXTURE31_ARB','GL_TEXTURE31','GL_TEXTURE30_ARB','GL_TEXTURE30','GL_TEXTURE3','GL_TEXTURE2_ARB',\n            'GL_TEXTURE29_ARB','GL_TEXTURE29','GL_TEXTURE28_ARB','GL_TEXTURE28','GL_TEXTURE27_ARB','GL_TEXTURE27','GL_TEXTURE26_ARB',\n            'GL_TEXTURE26','GL_TEXTURE25_ARB','GL_TEXTURE25','GL_TEXTURE24_ARB','GL_TEXTURE24','GL_TEXTURE23_ARB','GL_TEXTURE23',\n            'GL_TEXTURE22_ARB','GL_TEXTURE22','GL_TEXTURE21_ARB','GL_TEXTURE21','GL_TEXTURE20_ARB','GL_TEXTURE20','GL_TEXTURE2',\n            'GL_TEXTURE1_ARB','GL_TEXTURE19_ARB','GL_TEXTURE19','GL_TEXTURE18_ARB','GL_TEXTURE18','GL_TEXTURE17_ARB',\n            'GL_TEXTURE17','GL_TEXTURE16_ARB','GL_TEXTURE16','GL_TEXTURE15_ARB','GL_TEXTURE15','GL_TEXTURE14_ARB','GL_TEXTURE14',\n            'GL_TEXTURE13_ARB','GL_TEXTURE13','GL_TEXTURE12_ARB','GL_TEXTURE12','GL_TEXTURE11_ARB','GL_TEXTURE11','GL_TEXTURE10_ARB',\n            'GL_TEXTURE10','GL_TEXTURE1','GL_TEXTURE0_ARB','GL_TEXTURE0','GL_TEXTURE','GL_T4F_V4F','GL_T4F_C4F_N3F_V4F','GL_T2F_V3F',\n            'GL_T2F_N3F_V3F','GL_T2F_C4UB_V3F','GL_T2F_C4F_N3F_V3F','GL_T2F_C3F_V3F','GL_T','GL_SUBPIXEL_BITS','GL_STEREO',\n            'GL_STENCIL_WRITEMASK','GL_STENCIL_VALUE_MASK','GL_STENCIL_TEST','GL_STENCIL_REF','GL_STENCIL_PASS_DEPTH_PASS',\n            'GL_STENCIL_PASS_DEPTH_FAIL','GL_STENCIL_INDEX','GL_STENCIL_FUNC','GL_STENCIL_FAIL','GL_STENCIL_CLEAR_VALUE',\n            'GL_STENCIL_BUFFER_BIT','GL_STENCIL_BITS','GL_STENCIL','GL_STACK_UNDERFLOW','GL_STACK_OVERFLOW','GL_SRC_COLOR',\n            'GL_SRC_ALPHA_SATURATE','GL_SRC_ALPHA','GL_SPOT_EXPONENT','GL_SPOT_DIRECTION','GL_SPOT_CUTOFF','GL_SPHERE_MAP',\n            'GL_SPECULAR','GL_SOURCE2_RGB_EXT','GL_SOURCE2_RGB','GL_SOURCE2_ALPHA_EXT','GL_SOURCE2_ALPHA','GL_SOURCE1_RGB_EXT',\n            'GL_SOURCE1_RGB','GL_SOURCE1_ALPHA_EXT','GL_SOURCE1_ALPHA','GL_SOURCE0_RGB_EXT','GL_SOURCE0_RGB','GL_SOURCE0_ALPHA_EXT',\n            'GL_SOURCE0_ALPHA','GL_SMOOTH','GL_SHORT','GL_SHININESS','GL_SHADE_MODEL','GL_SET','GL_SELECTION_BUFFER_SIZE',\n            'GL_SELECTION_BUFFER_POINTER','GL_SELECT','GL_SCISSOR_TEST','GL_SCISSOR_BOX','GL_SCISSOR_BIT','GL_S','GL_RIGHT',\n            'GL_RGB_SCALE_EXT','GL_RGB_SCALE','GL_RGBA_MODE','GL_RGBA8','GL_RGBA4','GL_RGBA2','GL_RGBA16','GL_RGBA12','GL_RGBA',\n            'GL_RGB8','GL_RGB5_A1','GL_RGB5','GL_RGB4','GL_RGB16','GL_RGB12','GL_RGB10_A2','GL_RGB10','GL_RGB','GL_RETURN',\n            'GL_REPLACE','GL_REPEAT','GL_RENDER_MODE','GL_RENDERER','GL_RENDER','GL_RED_SCALE','GL_RED_BITS','GL_RED_BIAS',\n            'GL_RED','GL_READ_BUFFER','GL_R3_G3_B2','GL_R','GL_QUAD_STRIP','GL_QUADS','GL_QUADRATIC_ATTENUATION','GL_Q',\n            'GL_PROXY_TEXTURE_2D','GL_PROXY_TEXTURE_1D','GL_PROJECTION_STACK_DEPTH','GL_PROJECTION_MATRIX','GL_PROJECTION',\n            'GL_PRIMARY_COLOR_EXT','GL_PRIMARY_COLOR','GL_PREVIOUS_EXT','GL_PREVIOUS','GL_POSITION','GL_POLYGON_TOKEN',\n            'GL_POLYGON_STIPPLE_BIT','GL_POLYGON_STIPPLE','GL_POLYGON_SMOOTH_HINT','GL_POLYGON_SMOOTH','GL_POLYGON_OFFSET_UNITS',\n            'GL_POLYGON_OFFSET_POINT','GL_POLYGON_OFFSET_LINE','GL_POLYGON_OFFSET_FILL','GL_POLYGON_OFFSET_FACTOR','GL_POLYGON_MODE',\n            'GL_POLYGON_BIT','GL_POLYGON','GL_POINT_TOKEN','GL_POINT_SMOOTH_HINT','GL_POINT_SMOOTH','GL_POINT_SIZE_RANGE',\n            'GL_POINT_SIZE_GRANULARITY','GL_POINT_SIZE','GL_POINT_BIT','GL_POINTS','GL_POINT','GL_PIXEL_MODE_BIT',\n            'GL_PIXEL_MAP_S_TO_S_SIZE','GL_PIXEL_MAP_S_TO_S','GL_PIXEL_MAP_R_TO_R_SIZE','GL_PIXEL_MAP_R_TO_R','GL_PIXEL_MAP_I_TO_R_SIZE',\n            'GL_PIXEL_MAP_I_TO_R','GL_PIXEL_MAP_I_TO_I_SIZE','GL_PIXEL_MAP_I_TO_I','GL_PIXEL_MAP_I_TO_G_SIZE','GL_PIXEL_MAP_I_TO_G',\n            'GL_PIXEL_MAP_I_TO_B_SIZE','GL_PIXEL_MAP_I_TO_B','GL_PIXEL_MAP_I_TO_A_SIZE','GL_PIXEL_MAP_I_TO_A','GL_PIXEL_MAP_G_TO_G_SIZE',\n            'GL_PIXEL_MAP_G_TO_G','GL_PIXEL_MAP_B_TO_B_SIZE','GL_PIXEL_MAP_B_TO_B','GL_PIXEL_MAP_A_TO_A_SIZE','GL_PIXEL_MAP_A_TO_A',\n            'GL_PHONG_WIN','GL_PHONG_HINT_WIN','GL_PERSPECTIVE_CORRECTION_HINT','GL_PASS_THROUGH_TOKEN','GL_PACK_SWAP_BYTES',\n            'GL_PACK_SKIP_ROWS','GL_PACK_SKIP_PIXELS','GL_PACK_ROW_LENGTH','GL_PACK_LSB_FIRST','GL_PACK_ALIGNMENT','GL_OUT_OF_MEMORY',\n            'GL_OR_REVERSE','GL_OR_INVERTED','GL_ORDER','GL_OR','GL_OPERAND2_RGB_EXT','GL_OPERAND2_RGB','GL_OPERAND2_ALPHA_EXT',\n            'GL_OPERAND2_ALPHA','GL_OPERAND1_RGB_EXT','GL_OPERAND1_RGB','GL_OPERAND1_ALPHA_EXT','GL_OPERAND1_ALPHA','GL_OPERAND0_RGB_EXT',\n            'GL_OPERAND0_RGB','GL_OPERAND0_ALPHA_EXT','GL_OPERAND0_ALPHA','GL_ONE_MINUS_SRC_COLOR','GL_ONE_MINUS_SRC_ALPHA',\n            'GL_ONE_MINUS_DST_COLOR','GL_ONE_MINUS_DST_ALPHA','GL_ONE','GL_OBJECT_PLANE','GL_OBJECT_LINEAR','GL_NO_ERROR',\n            'GL_NOTEQUAL','GL_NORMAL_ARRAY_TYPE_EXT','GL_NORMAL_ARRAY_TYPE','GL_NORMAL_ARRAY_STRIDE_EXT','GL_NORMAL_ARRAY_STRIDE',\n            'GL_NORMAL_ARRAY_POINTER_EXT','GL_NORMAL_ARRAY_POINTER','GL_NORMAL_ARRAY_EXT','GL_NORMAL_ARRAY_COUNT_EXT',\n            'GL_NORMAL_ARRAY','GL_NORMALIZE','GL_NOR','GL_NOOP','GL_NONE','GL_NICEST','GL_NEVER','GL_NEAREST_MIPMAP_NEAREST','GL_NEAREST_MIPMAP_LINEAR',\n            'GL_NEAREST','GL_NAND','GL_NAME_STACK_DEPTH','GL_N3F_V3F','GL_MULT','GL_MODULATE','GL_MODELVIEW_STACK_DEPTH','GL_MODELVIEW_MATRIX',\n            'GL_MODELVIEW','GL_MAX_VIEWPORT_DIMS','GL_MAX_TEXTURE_UNITS_ARB','GL_MAX_TEXTURE_UNITS','GL_MAX_TEXTURE_STACK_DEPTH',\n            'GL_MAX_TEXTURE_SIZE','GL_MAX_PROJECTION_STACK_DEPTH','GL_MAX_PIXEL_MAP_TABLE','GL_MAX_NAME_STACK_DEPTH','GL_MAX_MODELVIEW_STACK_DEPTH',\n            'GL_MAX_LIST_NESTING','GL_MAX_LIGHTS','GL_MAX_EVAL_ORDER','GL_MAX_ELEMENTS_VERTICES_WIN','GL_MAX_ELEMENTS_INDICES_WIN',\n            'GL_MAX_CLIP_PLANES','GL_MAX_CLIENT_ATTRIB_STACK_DEPTH','GL_MAX_ATTRIB_STACK_DEPTH','GL_MATRIX_MODE','GL_MAP_STENCIL',\n            'GL_MAP_COLOR','GL_MAP2_VERTEX_4','GL_MAP2_VERTEX_3','GL_MAP2_TEXTURE_COORD_4','GL_MAP2_TEXTURE_COORD_3','GL_MAP2_TEXTURE_COORD_2',\n            'GL_MAP2_TEXTURE_COORD_1','GL_MAP2_NORMAL','GL_MAP2_INDEX','GL_MAP2_GRID_SEGMENTS','GL_MAP2_GRID_DOMAIN','GL_MAP2_COLOR_4',\n            'GL_MAP1_VERTEX_4','GL_MAP1_VERTEX_3','GL_MAP1_TEXTURE_COORD_4','GL_MAP1_TEXTURE_COORD_3','GL_MAP1_TEXTURE_COORD_2',\n            'GL_MAP1_TEXTURE_COORD_1','GL_MAP1_NORMAL','GL_MAP1_INDEX','GL_MAP1_GRID_SEGMENTS','GL_MAP1_GRID_DOMAIN',\n            'GL_MAP1_COLOR_4','GL_LUMINANCE_ALPHA','GL_LUMINANCE8_ALPHA8','GL_LUMINANCE8','GL_LUMINANCE6_ALPHA2','GL_LUMINANCE4_ALPHA4',\n            'GL_LUMINANCE4','GL_LUMINANCE16_ALPHA16','GL_LUMINANCE16','GL_LUMINANCE12_ALPHA4','GL_LUMINANCE12_ALPHA12','GL_LUMINANCE12',\n            'GL_LUMINANCE','GL_LOGIC_OP_MODE','GL_LOGIC_OP','GL_LOAD','GL_LIST_MODE','GL_LIST_INDEX','GL_LIST_BIT',\n            'GL_LIST_BASE','GL_LINE_WIDTH_RANGE','GL_LINE_WIDTH_GRANULARITY','GL_LINE_WIDTH','GL_LINE_TOKEN','GL_LINE_STRIP','GL_LINE_STIPPLE_REPEAT',\n            'GL_LINE_STIPPLE_PATTERN','GL_LINE_STIPPLE','GL_LINE_SMOOTH_HINT','GL_LINE_SMOOTH','GL_LINE_RESET_TOKEN','GL_LINE_LOOP',\n            'GL_LINE_BIT','GL_LINES','GL_LINEAR_MIPMAP_NEAREST','GL_LINEAR_MIPMAP_LINEAR','GL_LINEAR_ATTENUATION','GL_LINEAR',\n            'GL_LINE','GL_LIGHT_MODEL_TWO_SIDE','GL_LIGHT_MODEL_LOCAL_VIEWER','GL_LIGHT_MODEL_AMBIENT','GL_LIGHTING_BIT',\n            'GL_LIGHTING','GL_LIGHT7','GL_LIGHT6','GL_LIGHT5','GL_LIGHT4','GL_LIGHT3','GL_LIGHT2','GL_LIGHT1','GL_LIGHT0',\n            'GL_LESS','GL_LEQUAL','GL_LEFT','GL_KEEP','GL_INVERT','GL_INVALID_VALUE','GL_INVALID_OPERATION','GL_INVALID_ENUM','GL_INTERPOLATE_EXT',\n            'GL_INTERPOLATE','GL_INTENSITY8','GL_INTENSITY4','GL_INTENSITY16','GL_INTENSITY12','GL_INTENSITY','GL_INT',\n            'GL_INDEX_WRITEMASK','GL_INDEX_SHIFT','GL_INDEX_OFFSET','GL_INDEX_MODE','GL_INDEX_LOGIC_OP','GL_INDEX_CLEAR_VALUE','GL_INDEX_BITS',\n            'GL_INDEX_ARRAY_TYPE_EXT','GL_INDEX_ARRAY_TYPE','GL_INDEX_ARRAY_STRIDE_EXT','GL_INDEX_ARRAY_STRIDE','GL_INDEX_ARRAY_POINTER_EXT',\n            'GL_INDEX_ARRAY_POINTER','GL_INDEX_ARRAY_EXT','GL_INDEX_ARRAY_COUNT_EXT','GL_INDEX_ARRAY','GL_INCR','GL_HINT_BIT',\n            'GL_GREEN_SCALE','GL_GREEN_BITS','GL_GREEN_BIAS','GL_GREEN','GL_GREATER','GL_GEQUAL','GL_FRONT_RIGHT','GL_FRONT_LEFT',\n            'GL_FRONT_FACE','GL_FRONT_AND_BACK','GL_FRONT','GL_FOG_START','GL_FOG_SPECULAR_TEXTURE_WIN','GL_FOG_MODE','GL_FOG_INDEX',\n            'GL_FOG_HINT','GL_FOG_END','GL_FOG_DENSITY','GL_FOG_COLOR','GL_FOG_BIT','GL_FOG','GL_FLOAT','GL_FLAT','GL_FILL',\n            'GL_FEEDBACK_BUFFER_TYPE','GL_FEEDBACK_BUFFER_SIZE','GL_FEEDBACK_BUFFER_POINTER','GL_FEEDBACK','GL_FASTEST','GL_FALSE',\n            'GL_EYE_PLANE','GL_EYE_LINEAR','GL_EXT_vertex_array','GL_EXT_paletted_texture','GL_EXT_bgra','GL_EXTENSIONS','GL_EXP2',\n            'GL_EXP','GL_EVAL_BIT','GL_EQUIV','GL_EQUAL','GL_ENABLE_BIT','GL_EMISSION','GL_EDGE_FLAG_ARRAY_STRIDE_EXT','GL_EDGE_FLAG_ARRAY_STRIDE',\n            'GL_EDGE_FLAG_ARRAY_POINTER_EXT','GL_EDGE_FLAG_ARRAY_POINTER','GL_EDGE_FLAG_ARRAY_EXT','GL_EDGE_FLAG_ARRAY_COUNT_EXT','GL_EDGE_FLAG_ARRAY',\n            'GL_EDGE_FLAG','GL_DST_COLOR','GL_DST_ALPHA','GL_DRAW_PIXEL_TOKEN','GL_DRAW_BUFFER','GL_DOUBLE_EXT','GL_DOUBLEBUFFER',\n            'GL_DOUBLE','GL_DONT_CARE','GL_DOMAIN','GL_DITHER','GL_DIFFUSE','GL_DEPTH_WRITEMASK','GL_DEPTH_TEST','GL_DEPTH_SCALE',\n            'GL_DEPTH_RANGE','GL_DEPTH_FUNC','GL_DEPTH_COMPONENT','GL_DEPTH_CLEAR_VALUE','GL_DEPTH_BUFFER_BIT','GL_DEPTH_BITS',\n            'GL_DEPTH_BIAS','GL_DEPTH','GL_DECR','GL_DECAL','GL_CW','GL_CURRENT_TEXTURE_COORDS','GL_CURRENT_RASTER_TEXTURE_COORDS','GL_CURRENT_RASTER_POSITION_VALID',\n            'GL_CURRENT_RASTER_POSITION','GL_CURRENT_RASTER_INDEX','GL_CURRENT_RASTER_DISTANCE','GL_CURRENT_RASTER_COLOR','GL_CURRENT_NORMAL',\n            'GL_CURRENT_INDEX','GL_CURRENT_COLOR','GL_CURRENT_BIT','GL_CULL_FACE_MODE','GL_CULL_FACE','GL_COPY_PIXEL_TOKEN',\n            'GL_COPY_INVERTED','GL_COPY','GL_CONSTANT_EXT','GL_CONSTANT_ATTENUATION','GL_CONSTANT','GL_COMPILE_AND_EXECUTE','GL_COMPILE','GL_COMBINE_RGB_EXT',\n            'GL_COMBINE_RGB','GL_COMBINE_EXT','GL_COMBINE_ALPHA_EXT','GL_COMBINE_ALPHA','GL_COMBINE','GL_COLOR_WRITEMASK',\n            'GL_COLOR_TABLE_WIDTH_EXT','GL_COLOR_TABLE_RED_SIZE_EXT','GL_COLOR_TABLE_LUMINANCE_SIZE_EXT','GL_COLOR_TABLE_INTENSITY_SIZE_EXT',\n            'GL_COLOR_TABLE_GREEN_SIZE_EXT','GL_COLOR_TABLE_FORMAT_EXT','GL_COLOR_TABLE_BLUE_SIZE_EXT','GL_COLOR_TABLE_ALPHA_SIZE_EXT',\n            'GL_COLOR_MATERIAL_PARAMETER','GL_COLOR_MATERIAL_FACE','GL_COLOR_MATERIAL','GL_COLOR_LOGIC_OP','GL_COLOR_INDEXES',\n            'GL_COLOR_INDEX8_EXT','GL_COLOR_INDEX4_EXT','GL_COLOR_INDEX2_EXT','GL_COLOR_INDEX1_EXT','GL_COLOR_INDEX16_EXT',\n            'GL_COLOR_INDEX12_EXT','GL_COLOR_INDEX','GL_COLOR_CLEAR_VALUE','GL_COLOR_BUFFER_BIT','GL_COLOR_ARRAY_TYPE_EXT',\n            'GL_COLOR_ARRAY_TYPE','GL_COLOR_ARRAY_STRIDE_EXT','GL_COLOR_ARRAY_STRIDE','GL_COLOR_ARRAY_SIZE_EXT','GL_COLOR_ARRAY_SIZE',\n            'GL_COLOR_ARRAY_POINTER_EXT','GL_COLOR_ARRAY_POINTER','GL_COLOR_ARRAY_EXT','GL_COLOR_ARRAY_COUNT_EXT','GL_COLOR_ARRAY',\n            'GL_COLOR','GL_COEFF','GL_CLIP_PLANE5','GL_CLIP_PLANE4','GL_CLIP_PLANE3','GL_CLIP_PLANE2','GL_CLIP_PLANE1','GL_CLIP_PLANE0',\n            'GL_CLIENT_VERTEX_ARRAY_BIT','GL_CLIENT_PIXEL_STORE_BIT','GL_CLIENT_ATTRIB_STACK_DEPTH','GL_CLIENT_ALL_ATTRIB_BITS',\n            'GL_CLIENT_ACTIVE_TEXTURE_ARB','GL_CLIENT_ACTIVE_TEXTURE','GL_CLEAR','GL_CLAMP','GL_CCW','GL_C4UB_V3F','GL_C4UB_V2F',\n            'GL_C4F_N3F_V3F','GL_C3F_V3F','GL_BYTE','GL_BLUE_SCALE','GL_BLUE_BITS','GL_BLUE_BIAS','GL_BLUE','GL_BLEND_SRC','GL_BLEND_DST',\n            'GL_BLEND','GL_BITMAP_TOKEN','GL_BITMAP','GL_BGR_EXT','GL_BGRA_EXT','GL_BACK_RIGHT','GL_BACK_LEFT','GL_BACK',\n            'GL_AUX_BUFFERS','GL_AUX3','GL_AUX2','GL_AUX1','GL_AUX0','GL_AUTO_NORMAL','GL_ATTRIB_STACK_DEPTH','GL_AND_REVERSE',\n            'GL_AND_INVERTED','GL_AND','GL_AMBIENT_AND_DIFFUSE','GL_AMBIENT','GL_ALWAYS','GL_ALPHA_TEST_REF','GL_ALPHA_TEST_FUNC',\n            'GL_ALPHA_TEST','GL_ALPHA_SCALE','GL_ALPHA_BITS','GL_ALPHA_BIAS','GL_ALPHA8','GL_ALPHA4','GL_ALPHA16','GL_ALPHA12',\n            'GL_ALPHA','GL_ALL_ATTRIB_BITS','GL_ADD_SIGNED_EXT','GL_ADD_SIGNED','GL_ADD','GL_ACTIVE_TEXTURE_ARB','GL_ACTIVE_TEXTURE',\n            'GL_ACCUM_RED_BITS','GL_ACCUM_GREEN_BITS','GL_ACCUM_CLEAR_VALUE','GL_ACCUM_BUFFER_BIT','GL_ACCUM_BLUE_BITS','GL_ACCUM_ALPHA_BITS',\n            'GL_ACCUM','GL_4_BYTES','GL_4D_COLOR_TEXTURE','GL_3_BYTES','GL_3D_COLOR_TEXTURE','GL_3D_COLOR','GL_3D','GL_2_BYTES',\n            'GL_2D','GLU_V_STEP','GLU_VERTEX','GLU_VERSION_1_2','GLU_VERSION_1_1','GLU_VERSION','GLU_U_STEP','GLU_UNKNOWN','GLU_TRUE',\n            'GLU_TESS_WINDING_RULE','GLU_TESS_WINDING_POSITIVE','GLU_TESS_WINDING_ODD','GLU_TESS_WINDING_NONZERO','GLU_TESS_WINDING_NEGATIVE',\n            'GLU_TESS_WINDING_ABS_GEQ_TWO','GLU_TESS_VERTEX_DATA','GLU_TESS_VERTEX','GLU_TESS_TOLERANCE','GLU_TESS_NEED_COMBINE_CALLBACK','GLU_TESS_MISSING_END_POLYGON',\n            'GLU_TESS_MISSING_END_CONTOUR','GLU_TESS_MISSING_BEGIN_POLYGON','GLU_TESS_MISSING_BEGIN_CONTOUR','GLU_TESS_ERROR_DATA',\n            'GLU_TESS_ERROR8','GLU_TESS_ERROR7','GLU_TESS_ERROR6','GLU_TESS_ERROR5','GLU_TESS_ERROR4','GLU_TESS_ERROR3','GLU_TESS_ERROR2',\n            'GLU_TESS_ERROR1','GLU_TESS_ERROR','GLU_TESS_END_DATA','GLU_TESS_END','GLU_TESS_EDGE_FLAG_DATA','GLU_TESS_EDGE_FLAG',\n            'GLU_TESS_COORD_TOO_LARGE','GLU_TESS_COMBINE_DATA','GLU_TESS_COMBINE','GLU_TESS_BOUNDARY_ONLY','GLU_TESS_BEGIN_DATA',\n            'GLU_TESS_BEGIN','GLU_SMOOTH','GLU_SILHOUETTE','GLU_SAMPLING_TOLERANCE','GLU_SAMPLING_METHOD','GLU_POINT','GLU_PATH_LENGTH',\n            'GLU_PARAMETRIC_TOLERANCE','GLU_PARAMETRIC_ERROR','GLU_OUT_OF_MEMORY','GLU_OUTSIDE','GLU_OUTLINE_POLYGON','GLU_OUTLINE_PATCH',\n            'GLU_NURBS_ERROR9','GLU_NURBS_ERROR8','GLU_NURBS_ERROR7','GLU_NURBS_ERROR6','GLU_NURBS_ERROR5','GLU_NURBS_ERROR4',\n            'GLU_NURBS_ERROR37','GLU_NURBS_ERROR36','GLU_NURBS_ERROR35','GLU_NURBS_ERROR34','GLU_NURBS_ERROR33','GLU_NURBS_ERROR32',\n            'GLU_NURBS_ERROR31','GLU_NURBS_ERROR30','GLU_NURBS_ERROR3','GLU_NURBS_ERROR29','GLU_NURBS_ERROR28','GLU_NURBS_ERROR27','GLU_NURBS_ERROR26',\n            'GLU_NURBS_ERROR25','GLU_NURBS_ERROR24','GLU_NURBS_ERROR23','GLU_NURBS_ERROR22','GLU_NURBS_ERROR21','GLU_NURBS_ERROR20',\n            'GLU_NURBS_ERROR2','GLU_NURBS_ERROR19','GLU_NURBS_ERROR18','GLU_NURBS_ERROR17','GLU_NURBS_ERROR16','GLU_NURBS_ERROR15','GLU_NURBS_ERROR14',\n            'GLU_NURBS_ERROR13','GLU_NURBS_ERROR12','GLU_NURBS_ERROR11','GLU_NURBS_ERROR10','GLU_NURBS_ERROR1','GLU_NONE',\n            'GLU_MAP1_TRIM_3','GLU_MAP1_TRIM_2','GLU_LINE','GLU_INVALID_VALUE','GLU_INVALID_ENUM','GLU_INTERIOR','GLU_INSIDE','GLU_INCOMPATIBLE_GL_VERSION',\n            'GLU_FLAT','GLU_FILL','GLU_FALSE','GLU_EXTERIOR','GLU_EXTENSIONS','GLU_ERROR','GLU_END','GLU_EDGE_FLAG','GLU_DOMAIN_DISTANCE',\n            'GLU_DISPLAY_MODE','GLU_CW','GLU_CULLING','GLU_CCW','GLU_BEGIN','GLU_AUTO_LOAD_MATRIX','CHANNEL_UNORDERED','CHANNEL_ORDERED',\n            'CHANNEL_MAX'\n            ),\n        2 => array(\n\n            // Red Lowercase Keywords\n\n            'WriteWord','WriteString','WriteReal','WriteLine','WriteInt','WriteFloat','WriteDouble','WriteChar','WriteByte',\n            'windowwidth','windowheight','waittimer','Vec4','Vec3','Vec2','val','UpdateJoystick','ucase$','Transpose','tickcount',\n            'textscroll','textrows','textmode','textcols','tanh','tand','tan','synctimercatchup','synctimer','swapbuffers',\n            'str$','stopsoundvoice','stopsounds','stopmusic','sqrt','sqr','sprzorder','spryvel','sprytiles','sprysize','spryrepeat',\n            'spryflip','sprycentre','spry','sprxvel','sprxtiles','sprxsize','sprxrepeat','sprxflip','sprxcentre','sprx',\n            'sprvisible','sprvel','sprtype','sprtop','sprspin','sprsolid','sprsetzorder','sprsetyvel','sprsetysize','sprsetyrepeat',\n            'sprsetyflip','sprsetycentre','sprsety','sprsetxvel','sprsetxsize','sprsetxrepeat','sprsetxflip','sprsetxcentre',\n            'sprsetx','sprsetvisible','sprsetvel','sprsettiles','sprsettextures','sprsettexture','sprsetspin','sprsetsolid',\n            'sprsetsize','sprsetscale','sprsetpos','sprsetparallax','sprsetframe','sprsetcolor','sprsetanimspeed','sprsetanimloop',\n            'sprsetangle','sprsetalpha','sprscale','sprright','sprpos','sprparallax','sprleft','spriteareawidth','spriteareaheight',\n            'sprframe','sprcolor','sprcameraz','sprcameray','sprcamerax','sprcamerasetz','sprcamerasety','sprcamerasetx',\n            'sprcamerasetpos','sprcamerasetfov','sprcamerasetangle','sprcamerapos','sprcamerafov','sprcameraangle',\n            'sprbottom','spranimspeed','spranimloop','spranimdone','sprangle','spralpha','spraddtextures','spraddtexture',\n            'sounderror','sleep','sind','sin','showcursor','sgn','settextscroll','setmusicvolume','SendMessage','Seek',\n            'scankeydown','RTInvert','rnd','right$','resizetext','resizespritearea','RejectConnection','ReceiveMessage','ReadWord',\n            'ReadText','ReadReal','ReadLine','ReadInt','ReadFloat','ReadDouble','ReadChar','ReadByte','randomize','printr',\n            'print','pow','playsound','playmusic','performancecounter','Orthonormalize','OpenFileWrite','OpenFileRead','Normalize',\n            'newtilemap','newsprite','NewServer','NewConnection','musicplaying','mouse_yd','mouse_y','mouse_xd','mouse_x',\n            'mouse_wheel','mouse_button','mid$','MessageSmoothed','MessageReliable','MessagePending','MessageChannel','maxtextureunits',\n            'MatrixZero','MatrixTranslate','MatrixScale','MatrixRotateZ','MatrixRotateY','MatrixRotateX','MatrixRotate','MatrixIdentity',\n            'MatrixCrossProduct','MatrixBasis','log','locate','loadtexture','loadsound','loadmipmaptexture','loadmipmapimagestrip',\n            'loadimagestrip','loadimage','Length','len','left$','lcase$','keydown','Joy_Y','Joy_X','Joy_Up','Joy_Right','Joy_Left',\n            'Joy_Keys','Joy_Down','Joy_Button','Joy_3','Joy_2','Joy_1','Joy_0','int','inscankey','input$','inkey$','inittimer',\n            'imagewidth','imagestripframes','imageheight','imageformat','imagedatatype','hidecursor','glViewport','glVertex4sv',\n            'glVertex4s','glVertex4iv','glVertex4i','glVertex4fv','glVertex4f','glVertex4dv','glVertex4d','glVertex3sv','glVertex3s',\n            'glVertex3iv','glVertex3i','glVertex3fv','glVertex3f','glVertex3dv','glVertex3d','glVertex2sv','glVertex2s','glVertex2iv',\n            'glVertex2i','glVertex2fv','glVertex2f','glVertex2dv','glVertex2d','gluPerspective','gluOrtho2D','gluLookAt',\n            'glubuild2dmipmaps','glTranslatef','glTranslated','gltexsubimage2d','glTexParameteriv','glTexParameteri',\n            'glTexParameterfv','glTexParameterf','glteximage2d','glTexGeniv','glTexGeni','glTexGenfv','glTexGenf','glTexGendv',\n            'glTexGend','glTexEnviv','glTexEnvi','glTexEnvfv','glTexEnvf','glTexCoord4sv','glTexCoord4s','glTexCoord4iv','glTexCoord4i',\n            'glTexCoord4fv','glTexCoord4f','glTexCoord4dv','glTexCoord4d','glTexCoord3sv','glTexCoord3s','glTexCoord3iv','glTexCoord3i',\n            'glTexCoord3fv','glTexCoord3f','glTexCoord3dv','glTexCoord3d','glTexCoord2sv','glTexCoord2s','glTexCoord2iv','glTexCoord2i',\n            'glTexCoord2fv','glTexCoord2f','glTexCoord2dv','glTexCoord2d','glTexCoord1sv','glTexCoord1s','glTexCoord1iv','glTexCoord1i','glTexCoord1fv',\n            'glTexCoord1f','glTexCoord1dv','glTexCoord1d','glStencilOp','glStencilMask','glStencilFunc','glShadeModel','glSelectBuffer',\n            'glScissor','glScalef','glScaled','glRotatef','glRotated','glRenderMode','glRectsv','glRects','glRectiv','glRecti',\n            'glRectfv','glRectf','glRectdv','glRectd','glReadBuffer','glRasterPos4sv','glRasterPos4s','glRasterPos4iv',\n            'glRasterPos4i','glRasterPos4fv','glRasterPos4f','glRasterPos4dv','glRasterPos4d','glRasterPos3sv','glRasterPos3s',\n            'glRasterPos3iv','glRasterPos3i','glRasterPos3fv','glRasterPos3f','glRasterPos3dv','glRasterPos3d','glRasterPos2sv',\n            'glRasterPos2s','glRasterPos2iv','glRasterPos2i','glRasterPos2fv','glRasterPos2f','glRasterPos2dv','glRasterPos2d',\n            'glPushName','glPushMatrix','glPushClientAttrib','glPushAttrib','glPrioritizeTextures','glPopName','glPopMatrix',\n            'glPopClientAttrib','glPopAttrib','glpolygonstipple','glPolygonOffset','glPolygonMode','glPointSize','glPixelZoom',\n            'glPixelTransferi','glPixelTransferf','glPixelStorei','glPixelStoref','glPassThrough','glOrtho','glNormal3sv','glNormal3s',\n            'glNormal3iv','glNormal3i','glNormal3fv','glNormal3f','glNormal3dv','glNormal3d','glNormal3bv','glNormal3b','glNewList',\n            'glMultMatrixf','glMultMatrixd','glmultitexcoord2f','glmultitexcoord2d','glMatrixMode','glMaterialiv','glMateriali',\n            'glMaterialfv','glMaterialf','glMapGrid2f','glMapGrid2d','glMapGrid1f','glMapGrid1d','glLogicOp','glLoadName','glLoadMatrixf',\n            'glLoadMatrixd','glLoadIdentity','glListBase','glLineWidth','glLineStipple','glLightModeliv','glLightModeli','glLightModelfv',\n            'glLightModelf','glLightiv','glLighti','glLightfv','glLightf','glIsTexture','glIsList','glIsEnabled','glInitNames',\n            'glIndexubv','glIndexub','glIndexsv','glIndexs','glIndexMask','glIndexiv','glIndexi','glIndexfv','glIndexf','glIndexdv',\n            'glIndexd','glHint','glGetTexParameteriv','glGetTexParameterfv','glGetTexLevelParameteriv','glGetTexLevelParameterfv',\n            'glGetTexGeniv','glGetTexGenfv','glGetTexGendv','glGetTexEnviv','glGetTexEnvfv','glgetstring','glgetpolygonstipple','glGetPixelMapuiv',\n            'glGetMaterialiv','glGetMaterialfv','glGetLightiv','glGetLightfv','glGetIntegerv','glGetFloatv',\n            'glGetError','glGetDoublev','glGetClipPlane','glGetBooleanv','glgentextures','glgentexture',\n            'glgenlists','glFrustum','glFrontFace','glFogiv','glFogi','glFogfv','glFogf','glFlush','glFinish','glFeedbackBuffer',\n            'glEvalPoint2','glEvalPoint1','glEvalMesh2','glEvalMesh1','glEvalCoord2fv','glEvalCoord2f','glEvalCoord2dv','glEvalCoord2d',\n            'glEvalCoord1fv','glEvalCoord1f','glEvalCoord1dv','glEvalCoord1d','glEndList','glEnd','glEnableClientState','glEnable',\n            'glEdgeFlagv','glEdgeFlag','glDrawBuffer','glDrawArrays','glDisableClientState','glDisable','glDepthRange','glDepthMask',\n            'glDepthFunc','gldeletetextures','gldeletetexture','gldeletelists','glCullFace','glCopyTexSubImage2D','glCopyTexSubImage1D',\n            'glCopyTexImage2D','glCopyTexImage1D','glColorMaterial','glColorMask','glColor4usv','glColor4us','glColor4uiv','glColor4ui',\n            'glColor4ubv','glColor4ub','glColor4sv','glColor4s','glColor4iv','glColor4i','glColor4fv','glColor4f','glColor4dv',\n            'glColor4d','glColor4bv','glColor4b','glColor3usv','glColor3us','glColor3uiv','glColor3ui','glColor3ubv','glColor3ub',\n            'glColor3sv','glColor3s','glColor3iv','glColor3i','glColor3fv','glColor3f','glColor3dv','glColor3d','glColor3bv',\n            'glColor3b','glClipPlane','glClearStencil','glClearIndex','glClearDepth','glClearColor','glClearAccum','glClear',\n            'glcalllists','glCallList','glBlendFunc','glBindTexture','glBegin','glArrayElement','glAreTexturesResident',\n            'glAlphaFunc','glactivetexture','glAccum','font','FindNextFile','FindFirstFile','FindClose','FileError',\n            'extensionsupported','exp','execute','EndOfFile','drawtext','divbyzero','Determinant','deletesprite','deletesound',\n            'DeleteServer','deleteimage','DeleteConnection','defaultfont','CrossProduct','cosd','cos','copysprite','ConnectionPending',\n            'ConnectionHandShaking','ConnectionConnected','ConnectionAddress','compilererrorline','compilererrorcol','compilererror',\n            'compilefile','compile','color','cls','CloseFile','clearregion','clearline','clearkeys','chr$','charat$','bindsprite',\n            'beep','atnd','atn2d','atn2','atn','atand','asc','argcount','arg','animatesprites','AcceptConnection','abs'\n            ),\n        3 => array(\n\n            // Blue Lowercase Keywords\n\n            'xor','while','wend','until','type','traditional_print','traditional','to','then','struc','string','step','single',\n            'run','return','reset','read','or','null','not','next','lor','loop','language','land','integer','input','if',\n            'goto','gosub','for','endstruc','endif','end','elseif','else','double','do','dim','data','const','basic4gl','as',\n            'and','alloc'\n            )\n\n        ),\n    'SYMBOLS' => array(\n        '=', '<', '>', '>=', '<=', '+', '-', '*', '/', '%', '(', ')', '{', '}', '[', ']', '&', ';', ':', '$'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000080; font-weight: bold;',\n            2 => 'color: #FF0000;',\n            3 => 'color: #0000FF;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #657CC4; font-style: italic;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000080;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #008000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #000080; font-weight: bold;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #0000FF;'\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/batch.php",
    "content": "<?php\n/*************************************************************************************\n * batch.php\n * ------------\n * Author: FraidZZ ( fraidzz [@] bk.ru )\n * Copyright: (c) 2015 FraidZZ ( http://vk.com/fraidzz , http://www.cyberforum.ru/members/340557.html )\n * Release Version: 1.0.9.1\n * Date Started: 2015/03/28\n *\n * Windows batch file language file for GeSHi.\n *\n *************************************************************************************\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Windows Batch file',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        100 => '/(?:^|[&|])\\\\s*(?:rem|::)[^\\\\n]*/msi',\n        101 => '/[\\\\/-]\\\\S*/si',\n        102 => '/^\\s*:[^:]\\\\S*/msi',\n        103 => '/(?:([%!])[^\"\\'~ ][^\"\\' ]*\\\\1|%%?(?:~[dpnxsatz]*)?[^\"\\'])/si'\n    ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        100 => '/(?:([%!])\\\\S+\\\\1|%%(?:~[dpnxsatz]*)?[^\"\\'])/si'\n    ),\n    'KEYWORDS' => array(\n        1 => array(\n            'echo',\n            'set',\n            'for',\n            'if',\n            'exit',\n            'else',\n            'do',\n            'not',\n            'defined',\n            'exist'\n        ),\n        2 => array(\n            \"ASSOC\",\n            \"ATTRIB\",\n            \"BREAK\",\n            \"BCDEDIT\",\n            \"CACLS\",\n            \"CD\",\n            \"CHCP\",\n            \"CHDIR\",\n            \"CHKDSK\",\n            \"CHKNTFS\",\n            \"CLS\",\n            \"CMD\",\n            \"COLOR\",\n            \"COMP\",\n            \"COMPACT\",\n            \"CONVERT\",\n            \"COPY\",\n            \"DATE\",\n            \"DEL\",\n            \"DIR\",\n            \"DISKCOMP\",\n            \"DISKCOPY\",\n            \"DISKPART\",\n            \"DOSKEY\",\n            \"DRIVERQUERY\",\n            \"ECHO\",\n            \"ENDLOCAL\",\n            \"ERASE\",\n            \"EXIT\",\n            \"FC\",\n            \"FIND\",\n            \"FINDSTR\",\n            \"FOR\",\n            \"FORMAT\",\n            \"FSUTIL\",\n            \"FTYPE\",\n            \"GPRESULT\",\n            \"GRAFTABL\",\n            \"HELP\",\n            \"ICACLS\",\n            \"IF\",\n            \"LABEL\",\n            \"MD\",\n            \"MKDIR\",\n            \"MKLINK\",\n            \"MODE\",\n            \"MORE\",\n            \"MOVE\",\n            \"OPENFILES\",\n            \"PATH\",\n            \"PAUSE\",\n            \"POPD\",\n            \"PRINT\",\n            \"PROMPT\",\n            \"PUSHD\",\n            \"RD\",\n            \"RECOVER\",\n            \"REN\",\n            \"RENAME\",\n            \"REPLACE\",\n            \"RMDIR\",\n            \"ROBOCOPY\",\n            \"SET\",\n            \"SETLOCAL\",\n            \"SC\",\n            \"SCHTASKS\",\n            \"SHIFT\",\n            \"SHUTDOWN\",\n            \"SORT\",\n            \"START\",\n            \"SUBST\",\n            \"SYSTEMINFO\",\n            \"TASKLIST\",\n            \"TASKKILL\",\n            \"TIME\",\n            \"TITLE\",\n            \"TREE\",\n            \"TYPE\",\n            \"VER\",\n            \"VERIFY\",\n            \"VOL\",\n            \"XCOPY\",\n            \"WMIC\",\n            \"CSCRIPT\"\n        ),\n        3 => array(\n            \"enabledelayedexpansion\",\n            \"enableextensions\"\n        )\n    ),\n    'SYMBOLS' => array(\n        '(',\n        ')',\n        '+',\n        '-',\n        '~',\n        '^',\n        '@',\n        '&',\n        '*',\n        '|',\n        '/',\n        '<',\n        '>'\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #800080; font-weight: bold;',\n            2 => 'color: #0080FF; font-weight: bold;',\n            3 => 'color: #0000FF; font-weight: bold;'\n        ),\n        'COMMENTS' => array(\n            101 => 'color: #44aa44; font-weight: bold;',\n            100 => 'color: #888888;',\n            102 => 'color: #990000; font-weight: bold;',\n            103 => 'color: #000099; font-weight: bold;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n        ),\n        'ESCAPE_CHAR' => array(\n            100 => 'color: #000099; font-weight: bold;'\n        ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66; font-weight: bold;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;',\n        ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n        ),\n        'METHODS' => array(\n            0 => 'color: #006600;'\n        ),\n        'SYMBOLS' => array(\n            0 => 'color: #44aa44; font-weight: bold;'\n        ),\n        'REGEXPS' => array(\n            0 => 'color: #990000; font-weight: bold',\n            1 => 'color: #800080; font-weight: bold;'\n        ),\n        'SCRIPT' => array()\n    ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n    ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        0 => array(\n            GESHI_SEARCH => \"((?:goto|call)\\\\s*)(\\\\S+)\",\n            GESHI_REPLACE => \"\\\\2\",\n            GESHI_BEFORE => \"\\\\1\",\n            GESHI_MODIFIERS => \"si\",\n            GESHI_AFTER => \"\"\n        ),\n        1 => \"goto|call\"\n    ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/bf.php",
    "content": "<?php\n/*************************************************************************************\n * bf.php\n * ----------\n * Author: Benny Baumann (BenBE@geshi.org)\n * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2009/10/31\n *\n * Brainfuck language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/10/31 (1.0.8.1)\n *   -  First Release\n *\n * TODO\n * ----\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n$language_data = array (\n    'LANG_NAME' => 'Brainfuck',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(1 => '/[^\\n+\\-<>\\[\\]\\.\\,Y]+/s'),\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        ),\n    'SYMBOLS' => array(\n        0 => array('+', '-'),\n        1 => array('[', ']'),\n        2 => array('<', '>'),\n        3 => array('.', ','),\n        4 => array('Y') //Brainfork Extension ;-)\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #660000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #006600;',\n            1 => 'color: #660000;',\n            2 => 'color: #000066;',\n            3 => 'color: #666600;',\n            4 => 'color: #660066;'\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'STRINGS' => GESHI_NEVER,\n            'NUMBERS' => GESHI_NEVER,\n            'BRACKETS' => GESHI_NEVER\n        ),\n        'KEYWORDS' => array(\n            'DISALLOW_BEFORE' => '',\n            'DISALLOW_AFTER' => ''\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/biblatex.php",
    "content": "<?php\n/********************************************************************************\n * bibtex.php\n * -----\n * Author: Maïeul Rouquette from\n * Quinn Taylor (quinntaylor@mac.com)\n * Copyright: (c) 2009 Quinn Taylor (quinntaylor@mac.com), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2009/04/29\n *\n * BibLaTeX language file for GeSHi.\n *\n * CHANGES\n * 2015/12/29 (1.0.8.13) Biblatex parser\n * CHANGES\n * -------\n * 2009/04/29 (1.0.8.4)\n *  -  First Release\n *\n * TODO\n * -------------------------\n *  - Add regex for matching and replacing URLs with corresponding hyperlinks\n *  - Add regex for matching more LaTeX commands that may be embedded in BibTeX\n *    (Someone who understands regex better than I should borrow from latex.php)\n ********************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n *\n*******************************************************************************/\n\n// http://en.wikipedia.org/wiki/BibTeX\n// http://www.fb10.uni-bremen.de/anglistik/langpro/bibliographies/jacobsen-bibtex.html\n\n$language_data = array (\n    'LANG_NAME' => 'BibTeX',\n    'OOLANG' => false,\n    'COMMENT_SINGLE' => array(\n        1 => '%%'\n        ),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        0 => array(\n            '@comment','@preamble','@string'\n            ),\n        // Standard entry types\n        1 => array(\n            '@article','@book','@booklet','@conference','@inbook',\n            '@incollection','@inproceedings','@manual','@mastersthesis',\n            '@misc','@phdthesis','@proceedings','@techreport','@unpublished'\n            ),\n        // Custom entry types\n        2 => array(\n            '@collection','@patent','@webpage'\n            ),\n        // Standard entry field names\n        3 => array(\n            'address','annote','author','booktitle','chapter','crossref',\n            'edition','editor','howpublished','institution','journal','key',\n            'month','note','number','organization','pages','publisher','school',\n            'series','title','type','volume','year',\n            ),\n        // Custom entry field names\n        4 => array(\n            'abstract','affiliation','chaptername','cited-by','cites',\n            'contents','copyright','date-added','date-modified','doi','eprint',\n            'isbn','issn','keywords','language','lccn','lib-congress',\n            'location','price','rating','read','size','source','url',\n            )\n        ),\n    'URLS' => array(\n        0 => '',\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'SYMBOLS' => array(\n        '{', '}', '#', '=', ','\n        ),\n    'CASE_SENSITIVE' => array(\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        GESHI_COMMENTS => false,\n        ),\n    // Define the colors for the groups listed above\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #C02020;', // Standard entry types\n            2 => 'color: #C02020;', // Custom entry types\n            3 => 'color: #C08020;', // Standard entry field names\n            4 => 'color: #C08020;'  // Custom entry field names\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #2C922C; font-style: italic;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #2020C0;'\n            ),\n        'SYMBOLS' => array(\n            0 =>  'color: #E02020;'\n            ),\n        'REGEXPS' => array(\n            1 => 'color: #2020C0;', // {...}\n            2 => 'color: #C08020;',  // BibDesk fields\n            3 => 'color: #800000;',   // LaTeX commands\n            4 => 'color: #C08020;', // Custom entry field (biblatex)\n            5 => 'color: #C02020;', // Custom entry types (biblatex)\n            ),\n        'ESCAPE_CHAR' => array(\n            0 =>  'color: #000000; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 =>  'color: #E02020;'\n            ),\n        'NUMBERS' => array(\n            ),\n        'METHODS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'REGEXPS' => array(\n        // {parameters}\n        1 => array(\n            GESHI_SEARCH => \"(?<=\\\\{)(?:\\\\{(?R)\\\\}|[^\\\\{\\\\}])*(?=\\\\})\",\n            GESHI_REPLACE => '\\0',\n            GESHI_MODIFIERS => 's',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        2 => array(\n            GESHI_SEARCH => \"\\bBdsk-(File|Url)-\\d+\",\n            GESHI_REPLACE => '\\0',\n            GESHI_MODIFIERS => 'Us',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        3 => array(\n            GESHI_SEARCH => \"\\\\\\\\[A-Za-z0-9]*+\",\n            GESHI_REPLACE => '\\0',\n            GESHI_MODIFIERS => 'Us',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        4 => array(\n            GESHI_SEARCH => \"([A-z]+)\\s+=\",\n            GESHI_REPLACE => '\\0',\n            GESHI_MODIFIERS => 'Us',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        5 => array(\n            GESHI_SEARCH => \"@([A-z])+\",\n            GESHI_REPLACE => '\\0',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'NUMBERS' => GESHI_NEVER\n            ),\n        'KEYWORDS' => array(\n            3 => array(\n                'DISALLOWED_AFTER' => '(?=\\s*=)'\n                ),\n            4 => array(\n                'DISALLOWED_AFTER' => '(?=\\s*=)'\n                ),\n            )\n        )\n    );\n"
  },
  {
    "path": "includes/geshi/bibtex.php",
    "content": "<?php\n/********************************************************************************\n * bibtex.php\n * -----\n * Author: Quinn Taylor (quinntaylor@mac.com)\n * Copyright: (c) 2009 Quinn Taylor (quinntaylor@mac.com), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2009/04/29\n *\n * BibTeX language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009/04/29 (1.0.8.4)\n *  -  First Release\n *\n * TODO\n * -------------------------\n *  - Add regex for matching and replacing URLs with corresponding hyperlinks\n *  - Add regex for matching more LaTeX commands that may be embedded in BibTeX\n *    (Someone who understands regex better than I should borrow from latex.php)\n ********************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n *\n*******************************************************************************/\n\n// http://en.wikipedia.org/wiki/BibTeX\n// http://www.fb10.uni-bremen.de/anglistik/langpro/bibliographies/jacobsen-bibtex.html\n\n$language_data = array (\n    'LANG_NAME' => 'BibTeX',\n    'OOLANG' => false,\n    'COMMENT_SINGLE' => array(\n        1 => '%%'\n        ),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        0 => array(\n            '@comment','@preamble','@string'\n            ),\n        // Standard entry types\n        1 => array(\n            '@article','@book','@booklet','@conference','@inbook',\n            '@incollection','@inproceedings','@manual','@mastersthesis',\n            '@misc','@phdthesis','@proceedings','@techreport','@unpublished'\n            ),\n        // Custom entry types\n        2 => array(\n            '@collection','@patent','@webpage'\n            ),\n        // Standard entry field names\n        3 => array(\n            'address','annote','author','booktitle','chapter','crossref',\n            'edition','editor','howpublished','institution','journal','key',\n            'month','note','number','organization','pages','publisher','school',\n            'series','title','type','volume','year'\n            ),\n        // Custom entry field names\n        4 => array(\n            'abstract','affiliation','chaptername','cited-by','cites',\n            'contents','copyright','date-added','date-modified','doi','eprint',\n            'isbn','issn','keywords','language','lccn','lib-congress',\n            'location','price','rating','read','size','source','url'\n            )\n        ),\n    'URLS' => array(\n        0 => '',\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'SYMBOLS' => array(\n        '{', '}', '#', '=', ','\n        ),\n    'CASE_SENSITIVE' => array(\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        GESHI_COMMENTS => false,\n        ),\n    // Define the colors for the groups listed above\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #C02020;', // Standard entry types\n            2 => 'color: #C02020;', // Custom entry types\n            3 => 'color: #C08020;', // Standard entry field names\n            4 => 'color: #C08020;'  // Custom entry field names\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #2C922C; font-style: italic;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #2020C0;'\n            ),\n        'SYMBOLS' => array(\n            0 =>  'color: #E02020;'\n            ),\n        'REGEXPS' => array(\n            1 => 'color: #2020C0;', // {...}\n            2 => 'color: #C08020;',  // BibDesk fields\n            3 => 'color: #800000;'   // LaTeX commands\n            ),\n        'ESCAPE_CHAR' => array(\n            0 =>  'color: #000000; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 =>  'color: #E02020;'\n            ),\n        'NUMBERS' => array(\n            ),\n        'METHODS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'REGEXPS' => array(\n        // {parameters}\n        1 => array(\n            GESHI_SEARCH => \"(?<=\\\\{)(?:\\\\{(?R)\\\\}|[^\\\\{\\\\}])*(?=\\\\})\",\n            GESHI_REPLACE => '\\0',\n            GESHI_MODIFIERS => 's',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        2 => array(\n            GESHI_SEARCH => \"\\bBdsk-(File|Url)-\\d+\",\n            GESHI_REPLACE => '\\0',\n            GESHI_MODIFIERS => 'Us',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        3 => array(\n            GESHI_SEARCH => \"\\\\\\\\[A-Za-z0-9]*+\",\n            GESHI_REPLACE => '\\0',\n            GESHI_MODIFIERS => 'Us',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'NUMBERS' => GESHI_NEVER\n            ),\n        'KEYWORDS' => array(\n            3 => array(\n                'DISALLOWED_AFTER' => '(?=\\s*=)'\n                ),\n            4 => array(\n                'DISALLOWED_AFTER' => '(?=\\s*=)'\n                ),\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/blitzbasic.php",
    "content": "<?php\n/*************************************************************************************\n * blitzbasic.php\n * --------------\n * Author: P�draig O`Connel (info@moonsword.info)\n * Copyright: (c) 2005 P�draig O`Connel (http://moonsword.info)\n * Release Version: 1.0.9.1\n * Date Started: 16.10.2005\n *\n * BlitzBasic language file for GeSHi.\n *\n * It is a simple Basic dialect. Released for Games and Network Connections.\n * In this Language File are all functions included (2D BB and 3D BB)\n *\n *\n * CHANGES\n * -------\n * 2005/12/28 (1.0.1)\n *   -  Remove unnecessary style index for regexps\n * 2005/10/22 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2005/10/22)\n * -------------------------\n * * Sort out the Basic commands for splitting up.\n * * To set up the right colors.\n *      (the colors are ok, but not the correct ones)\n * * Split to BlitzBasic 2D and BlitzBasic 3D.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'BlitzBasic',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'If','EndIf','ElseIf','Else','While','Wend','Return','Next','Include','End Type','End Select','End If','End Function','End','Select',\n            'Type','Forever','For','Or','And','AppTitle','Case','Goto','Gosub','Step','Stop','Int','Last','False','Then','To','True','Until','Float',\n            'String','Before','Not'\n            ),\n        2 => array(\n            // All Functions - 2D BB and 3D BB\n            'Xor','WriteString','WriteShort','WritePixelFast','WritePixel','WriteLine','WriteInt','WriteFloat','WriteFile','WriteBytes',\n            'WriteByte','Write','WaitTimer','WaitMouse','WaitKey','WaitJoy','VWait','Viewport',\n            'Upper','UpdateGamma','UnlockBuffer','UDPTimeouts','UDPStreamPort','UDPStreamIP','UDPMsgPort','UDPMsgIP',\n            'Trim','TotalVidMem','TileImage','TileBlock','TFormImage','TFormFilter','Text',\n            'TCPTimeouts','TCPStreamPort','TCPStreamIP','Tan','SystemProperty','StringWidth','StringHeight','Str','StopNetGame',\n            'StopChannel','StartNetGame','Sqr','SoundVolume','SoundPitch','SoundPan','Sin','Shr',\n            'ShowPointer','Shl','Sgn','SetGfxDriver','SetGamma','SetFont','SetEnv','SetBuffer','SendUDPMsg','SendNetMsg',\n            'SeekFile','SeedRnd','ScanLine','ScaleImage','SaveImage','SaveBuffer','Sar','RuntimeError','RSet',\n            'RotateImage','RndSeed','Rnd','Right','ResumeChannel','Restore','ResizeImage','ResizeBank','Replace',\n            'Repeat','RecvUDPMsg','RecvNetMsg','RectsOverlap','Rect','ReadString','ReadShort','ReadPixelFast','ReadPixel','ReadLine',\n            'ReadInt','ReadFloat','ReadFile','ReadDir','ReadBytes','ReadByte','ReadAvail','Read','Rand','Print',\n            'PokeShort','PokeInt','PokeFloat','PokeByte','Plot','PlaySound','PlayMusic','PlayCDTrack','Pi','PeekShort',\n            'PeekInt','PeekFloat','PeekByte','PauseChannel','Oval','Origin','OpenTCPStream','OpenMovie','OpenFile',\n            'Null','NextFile','New','NetPlayerName','NetPlayerLocal','NetMsgType','NetMsgTo','NetMsgFrom',\n            'NetMsgData','MovieWidth','MoviePlaying','MovieHeight','MoveMouse','MouseZSpeed','MouseZ','MouseYSpeed','MouseY','MouseXSpeed',\n            'MouseX','MouseHit','MouseDown','Mod','Millisecs','MidHandle','Mid','MaskImage','LSet','Lower',\n            'LoopSound','Log10','Log','LockBuffer','Locate','Local','LoadSound','LoadImage','LoadFont','LoadBuffer',\n            'LoadAnimImage','Line','Len','Left','KeyHit','KeyDown','JoyZDir','JoyZ','JoyYDir',\n            'JoyYaw','JoyY','JoyXDir','JoyX','JoyVDir','JoyV','JoyUDir','JoyU','JoyType','JoyRoll',\n            'JoyPitch','JoyHit','JoyHat','JoyDown','JoinNetGame','Instr','Insert','Input',\n            'ImageYHandle','ImageXHandle','ImageWidth','ImagesOverlap','ImagesCollide','ImageRectOverlap','ImageRectCollide','ImageHeight','ImageBuffer',\n            'HostNetGame','HostIP','HidePointer','Hex','HandleImage','GraphicsWidth','GraphicsHeight','GraphicsDepth','GraphicsBuffer','Graphics',\n            'GrabImage','Global','GFXModeWidth','GFXModeHeight','GfxModeExists','GFXModeDepth','GfxDriverName','GetMouse',\n            'GetKey','GetJoy','GetEnv','GetColor','GammaRed','GammaGreen','GammaBlue','Function','FrontBuffer','FreeTimer',\n            'FreeSound','FreeImage','FreeFont','FreeBank','FontWidth','FontHeight','FlushMouse','FlushKeys',\n            'FlushJoy','Floor','Flip','First','FileType','FileSize','FilePos','Field',\n            'Exp','Exit','ExecFile','Eof','EndGraphics','Each','DrawMovie','DrawImageRect','DrawImage','DrawBlockRect','DrawBlock',\n            'DottedIP','Dim','DeleteNetPlayer','DeleteFile','DeleteDir','Delete','Delay','Default','DebugLog','Data',\n            'CurrentTime','CurrentDir','CurrentDate','CreateUDPStream','CreateTimer','CreateTCPServer','CreateNetPlayer','CreateImage','CreateDir','CreateBank',\n            'CountHostIPs','CountGFXModes','CountGfxDrivers','Cos','CopyStream','CopyRect','CopyPixelFast','CopyPixel','CopyImage','CopyFile',\n            'CopyBank','Const','CommandLine','ColorRed','ColorGreen','ColorBlue','Color','ClsColor','Cls','CloseUDPStream',\n            'CloseTCPStream','CloseTCPServer','CloseMovie','CloseFile','CloseDir','Chr','ChannelVolume','ChannelPlaying','ChannelPitch','ChannelPan',\n            'ChangeDir','Ceil','CallDLL','Bin','BankSize','BackBuffer','AvailVidMem','AutoMidHandle',\n            'ATan2','ATan','ASin','Asc','After','ACos','AcceptTCPStream','Abs',\n            // 3D Commands\n            'Wireframe','Windowed3D','WBuffer','VertexZ','VertexY',\n            'VertexX','VertexW','VertexV','VertexU','VertexTexCoords','VertexRed','VertexNZ','VertexNY','VertexNX','VertexNormal',\n            'VertexGreen','VertexCoords','VertexColor','VertexBlue','VertexAlpha','VectorYaw','VectorPitch','UpdateWorld','UpdateNormals','TurnEntity',\n            'TrisRendered','TriangleVertex','TranslateEntity','TFormVector','TFormPoint','TFormNormal','TFormedZ','TFormedY','TFormedX','TextureWidth',\n            'TextureName','TextureHeight','TextureFilter','TextureCoords','TextureBuffer','TextureBlend','TerrainZ','TerrainY','TerrainX','TerrainSize',\n            'TerrainShading','TerrainHeight','TerrainDetail','SpriteViewMode','ShowEntity','SetCubeFace','SetAnimTime','SetAnimKey','ScaleTexture','ScaleSprite',\n            'ScaleMesh','ScaleEntity','RotateTexture','RotateSprite','RotateMesh','RotateEntity','ResetEntity','RenderWorld','ProjectedZ','ProjectedY',\n            'ProjectedX','PositionTexture','PositionMesh','PositionEntity','PointEntity','PickedZ','PickedY','PickedX','PickedTriangle','PickedTime',\n            'PickedSurface','PickedNZ','PickedNY','PickedNX','PickedEntity','PaintSurface','PaintMesh','PaintEntity','NameEntity','MoveEntity',\n            'ModifyTerrain','MeshWidth','MeshHeight','MeshesIntersect','MeshDepth','MD2AnimTime','MD2AnimLength','MD2Animating','LoadTexture','LoadTerrain',\n            'LoadSprite','LoadMesh','LoadMD2','LoaderMatrix','LoadBSP','LoadBrush','LoadAnimTexture','LoadAnimSeq','LoadAnimMesh','Load3DSound',\n            'LinePick','LightRange','LightMesh','LightConeAngles','LightColor','HWMultiTex','HideEntity','HandleSprite','Graphics3D','GfxMode3DExists',\n            'GfxMode3D','GfxDriverCaps3D','GfxDriver3D','GetSurfaceBrush','GetSurface','GetParent','GetMatElement','GetEntityType','GetEntityBrush','GetChild',\n            'GetBrushTexture','FreeTexture','FreeEntity','FreeBrush','FlipMesh','FitMesh','FindSurface','FindChild','ExtractAnimSeq','EntityZ',\n            'EntityYaw','EntityY','EntityX','EntityVisible','EntityType','EntityTexture','EntityShininess','EntityRoll','EntityRadius','EntityPitch',\n            'EntityPickMode','EntityPick','EntityParent','EntityOrder','EntityName','EntityInView','EntityFX','EntityDistance','EntityColor','EntityCollided',\n            'EntityBox','EntityBlend','EntityAutoFade','EntityAlpha','EmitSound','Dither','DeltaYaw','DeltaPitch','CreateTexture','CreateTerrain',\n            'CreateSurface','CreateSprite','CreateSphere','CreatePlane','CreatePivot','CreateMirror','CreateMesh','CreateListener','CreateLight','CreateCylinder',\n            'CreateCube','CreateCone','CreateCamera','CreateBrush','CountVertices','CountTriangles','CountSurfaces','CountGfxModes3D','CountCollisions','CountChildren',\n            'CopyMesh','CopyEntity','CollisionZ','CollisionY','CollisionX','CollisionTriangle','CollisionTime','CollisionSurface','Collisions','CollisionNZ',\n            'CollisionNY','CollisionNX','CollisionEntity','ClearWorld','ClearTextureFilters','ClearSurface','ClearCollisions','CaptureWorld','CameraZoom','CameraViewport',\n            'CameraRange','CameraProjMode','CameraProject','CameraPick','CameraFogRange','CameraFogMode','CameraFogColor','CameraClsMode','CameraClsColor','BSPLighting',\n            'BSPAmbientLight','BrushTexture','BrushShininess','BrushFX','BrushColor','BrushBlend','BrushAlpha','AntiAlias','AnimTime','AnimSeq',\n            'AnimLength','Animating','AnimateMD2','Animate','AmbientLight','AlignToVector','AddVertex','AddTriangle','AddMesh','AddAnimSeq',\n            )\n        ),\n    'SYMBOLS' => array(\n        '(',')'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000066; font-weight: bold;',\n            2 => 'color: #0000ff;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #D9D100; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000066;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #009900;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #CC0000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000066;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        1 => '\\\\'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => false,\n        1 => false\n        )\n);\n"
  },
  {
    "path": "includes/geshi/bnf.php",
    "content": "<?php\n/*************************************************************************************\n * bnf.php\n * --------\n * Author: Rowan Rodrik van der Molen (rowan@bigsmoke.us)\n * Copyright: (c) 2006 Rowan Rodrik van der Molen (http://www.bigsmoke.us/)\n * Release Version: 1.0.9.1\n * Date Started: 2006/09/28\n *\n * BNF (Backus-Naur form) language file for GeSHi.\n *\n * See http://en.wikipedia.org/wiki/Backus-Naur_form for more info on BNF.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *  -  Added description of extra language features (SF#1970248)\n *  -  Removed superflicious regexps\n * 2006/09/18 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2006/09/18)\n * -------------------------\n * * Nothing I can think of\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'bnf',\n    'COMMENT_SINGLE' => array(';'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', \"'\"),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(),\n    'SYMBOLS' => array(\n        0 => array('(', ')'),\n        1 => array('<', '>'),\n        2 => array('[', ']'),\n        3 => array('{', '}'),\n        4 => array('=', '*', '/', '|', ':'),\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(),\n        'COMMENTS' => array(\n            0 => 'color: #666666; font-style: italic;', // Single Line comments\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'BRACKETS' => array(\n            0 => ''\n            ),\n        'STRINGS' => array(\n            0 => 'color: #a00;',\n            1 => 'color: #a00;'\n            ),\n        'NUMBERS' => array(\n            0 => ''\n            ),\n        'METHODS' => array(\n            0 => ''\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000066; font-weight: bold;', // Round brackets\n            1 => 'color: #000066; font-weight: bold;', // Angel Brackets\n            2 => 'color: #000066; font-weight: bold;', // Square Brackets\n            3 => 'color: #000066; font-weight: bold;', // BRaces\n            4 => 'color: #006600; font-weight: bold;', // Other operator symbols\n        ),\n        'REGEXPS' => array(\n            0 => 'color: #007;',\n            ),\n        'SCRIPT' => array(\n            0 => ''\n            )\n        ),\n    'URLS' => array(),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        //terminal symbols\n        0 => array(\n            GESHI_SEARCH => '(&lt;)([^&]+?)(&gt;)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3'\n            ),\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/boo.php",
    "content": "<?php\n/*************************************************************************************\n * boo.php\n * --------\n * Author: Marcus Griep (neoeinstein+GeSHi@gmail.com)\n * Copyright: (c) 2007 Marcus Griep (http://www.xpdm.us)\n * Release Version: 1.0.9.1\n * Date Started: 2007/09/10\n *\n * Boo language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2004/09/10 (1.0.8)\n *  -  First Release\n *\n * TODO (updated 2007/09/10)\n * -------------------------\n * Regular Expression Literal matching\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Boo',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'''\", \"'\", '\"\"\"', '\"'),\n    'HARDQUOTE' => array('\"\"\"', '\"\"\"'),\n    'HARDESCAPE' => array('\\\"\"\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(//Namespace\n            'namespace', 'import', 'from'\n            ),\n        2 => array(//Jump\n            'yield', 'return', 'goto', 'continue', 'break'\n            ),\n        3 => array(//Conditional\n            'while', 'unless', 'then', 'in', 'if', 'for', 'else', 'elif'\n            ),\n        4 => array(//Property\n            'set', 'get'\n            ),\n        5 => array(//Exception\n            'try', 'raise', 'failure', 'except', 'ensure'\n            ),\n        6 => array(//Visibility\n            'public', 'private', 'protected', 'internal'\n            ),\n        7 => array(//Define\n            'struct', 'ref', 'of', 'interface', 'event', 'enum', 'do', 'destructor', 'def', 'constructor', 'class'\n            ),\n        8 => array(//Cast\n            'typeof', 'cast', 'as'\n            ),\n        9 => array(//BiMacro\n            'yieldAll', 'using', 'unchecked', 'rawArayIndexing', 'print', 'normalArrayIndexing', 'lock',\n            'debug', 'checked', 'assert'\n            ),\n        10 => array(//BiAttr\n            'required', 'property', 'meta', 'getter', 'default'\n            ),\n        11 => array(//BiFunc\n            'zip', 'shellp', 'shellm', 'shell', 'reversed', 'range', 'prompt',\n            'matrix', 'map', 'len', 'join', 'iterator', 'gets', 'enumerate', 'cat', 'array'\n            ),\n        12 => array(//HiFunc\n            '__switch__', '__initobj__', '__eval__', '__addressof__', 'quack'\n            ),\n        13 => array(//Primitive\n            'void', 'ushort', 'ulong', 'uint', 'true', 'timespan', 'string', 'single',\n            'short', 'sbyte', 'regex', 'object', 'null', 'long', 'int', 'false', 'duck',\n            'double', 'decimal', 'date', 'char', 'callable', 'byte', 'bool'\n            ),\n        14 => array(//Operator\n            'not', 'or', 'and', 'is', 'isa',\n            ),\n        15 => array(//Modifier\n            'virtual', 'transient', 'static', 'partial', 'override', 'final', 'abstract'\n            ),\n        16 => array(//Access\n            'super', 'self'\n            ),\n        17 => array(//Pass\n            'pass'\n            )\n        ),\n    'SYMBOLS' => array(\n        '[|', '|]', '${', '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>', '+', '-', ';'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true,\n        9 => true,\n        10 => true,\n        11 => true,\n        12 => true,\n        13 => true,\n        14 => true,\n        15 => true,\n        16 => true,\n        17 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color:green;font-weight:bold;',\n            2 => 'color:navy;',\n            3 => 'color:blue;font-weight:bold;',\n            4 => 'color:#8B4513;',\n            5 => 'color:teal;font-weight:bold;',\n            6 => 'color:blue;font-weight:bold;',\n            7 => 'color:blue;font-weight:bold;',\n            8 => 'color:blue;font-weight:bold;',\n            9 => 'color:maroon;',\n            10 => 'color:maroon;',\n            11 => 'color:purple;',\n            12 => 'color:#4B0082;',\n            13 => 'color:purple;font-weight:bold;',\n            14 => 'color:#008B8B;font-weight:bold;',\n            15 => 'color:brown;',\n            16 => 'color:black;font-weight:bold;',\n            17 => 'color:gray;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #999999; font-style: italic;',\n            2 => 'color: #999999; font-style: italic;',\n            'MULTI' => 'color: #008000; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #0000FF; font-weight: bold;',\n            'HARD' => 'color: #0000FF; font-weight: bold;',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #006400;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #008000;',\n            'HARD' => 'color: #008000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #00008B;'\n            ),\n        'METHODS' => array(\n            0 => 'color: 000000;',\n            1 => 'color: 000000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #006400;'\n            ),\n        'REGEXPS' => array(\n            #0 => 'color: #0066ff;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => '',\n        9 => '',\n        10 => '',\n        11 => '',\n        12 => '',\n        13 => '',\n        14 => '',\n        15 => '',\n        16 => '',\n        17 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        0 => '.',\n        1 => '::'\n        ),\n    'REGEXPS' => array(\n        #0 => '%(@)?\\/(?:(?(1)[^\\/\\\\\\\\\\r\\n]+|[^\\/\\\\\\\\\\r\\n \\t]+)|\\\\\\\\[\\/\\\\\\\\\\w+()|.*?$^[\\]{}\\d])+\\/%'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/c.php",
    "content": "<?php\n/*************************************************************************************\n * c.php\n * -----\n * Author: Nigel McNie (nigel@geshi.org)\n * Contributors:\n *  - Jack Lloyd (lloyd@randombit.net)\n *  - Michael Mol (mikemol@gmail.com)\n * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/06/04\n *\n * C language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009/01/22 (1.0.8.3)\n *   -  Made keywords case-sensitive.\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n * 2004/XX/XX (1.0.4)\n *   -  Added a couple of new keywords (Jack Lloyd)\n * 2004/11/27 (1.0.3)\n *   -  Added support for multiple object splitters\n * 2004/10/27 (1.0.2)\n *   -  Added support for URLs\n * 2004/08/05 (1.0.1)\n *   -  Added support for symbols\n * 2004/07/14 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2009/02/08)\n * -------------------------\n *  -  Get a list of inbuilt functions to add (and explore C more\n *     to complete this rather bare language file\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'C',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Multiline-continued single-line comments\n        1 => '/\\/\\/(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //Multiline-continued preprocessor define\n        2 => '/#(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m'\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[\\\\\\\\abfnrtv\\'\\\"?\\n]#i\",\n        //Hexadecimal Char Specs\n        2 => \"#\\\\\\\\x[\\da-fA-F]{2}#\",\n        //Hexadecimal Char Specs\n        3 => \"#\\\\\\\\u[\\da-fA-F]{4}#\",\n        //Hexadecimal Char Specs\n        4 => \"#\\\\\\\\U[\\da-fA-F]{8}#\",\n        //Octal Char Specs\n        5 => \"#\\\\\\\\[0-7]{1,3}#\"\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'if', 'return', 'while', 'case', 'continue', 'default',\n            'do', 'else', 'for', 'switch', 'goto'\n            ),\n        2 => array(\n            'null', 'false', 'break', 'true', 'function', 'enum', 'extern', 'inline'\n            ),\n        3 => array(\n            // assert.h\n            'assert',\n\n            //complex.h\n            'cabs', 'cacos', 'cacosh', 'carg', 'casin', 'casinh', 'catan',\n            'catanh', 'ccos', 'ccosh', 'cexp', 'cimag', 'cis', 'clog', 'conj',\n            'cpow', 'cproj', 'creal', 'csin', 'csinh', 'csqrt', 'ctan', 'ctanh',\n\n            //ctype.h\n            'digittoint', 'isalnum', 'isalpha', 'isascii', 'isblank', 'iscntrl',\n            'isdigit', 'isgraph', 'islower', 'isprint', 'ispunct', 'isspace',\n            'isupper', 'isxdigit', 'toascii', 'tolower', 'toupper',\n\n            //inttypes.h\n            'imaxabs', 'imaxdiv', 'strtoimax', 'strtoumax', 'wcstoimax',\n            'wcstoumax',\n\n            //locale.h\n            'localeconv', 'setlocale',\n\n            //math.h\n            'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'exp',\n            'fabs', 'floor', 'frexp', 'ldexp', 'log', 'log10', 'modf', 'pow',\n            'sin', 'sinh', 'sqrt', 'tan', 'tanh',\n\n            //setjmp.h\n            'longjmp', 'setjmp',\n\n            //signal.h\n            'raise',\n\n            //stdarg.h\n            'va_arg', 'va_copy', 'va_end', 'va_start',\n\n            //stddef.h\n            'offsetof',\n\n            //stdio.h\n            'clearerr', 'fclose', 'fdopen', 'feof', 'ferror', 'fflush', 'fgetc',\n            'fgetpos', 'fgets', 'fopen', 'fprintf', 'fputc', 'fputchar',\n            'fputs', 'fread', 'freopen', 'fscanf', 'fseek', 'fsetpos', 'ftell',\n            'fwrite', 'getc', 'getch', 'getchar', 'gets', 'perror', 'printf',\n            'putc', 'putchar', 'puts', 'remove', 'rename', 'rewind', 'scanf',\n            'setbuf', 'setvbuf', 'snprintf', 'sprintf', 'sscanf', 'tmpfile',\n            'tmpnam', 'ungetc', 'vfprintf', 'vfscanf', 'vprintf', 'vscanf',\n            'vsprintf', 'vsscanf',\n\n            //stdlib.h\n            'abort', 'abs', 'atexit', 'atof', 'atoi', 'atol', 'bsearch',\n            'calloc', 'div', 'exit', 'free', 'getenv', 'itoa', 'labs', 'ldiv',\n            'ltoa', 'malloc', 'qsort', 'rand', 'realloc', 'srand', 'strtod',\n            'strtol', 'strtoul', 'system',\n\n            //string.h\n            'memchr', 'memcmp', 'memcpy', 'memmove', 'memset', 'strcat',\n            'strchr', 'strcmp', 'strcoll', 'strcpy', 'strcspn', 'strerror',\n            'strlen', 'strncat', 'strncmp', 'strncpy', 'strpbrk', 'strrchr',\n            'strspn', 'strstr', 'strtok', 'strxfrm',\n\n            //time.h\n            'asctime', 'clock', 'ctime', 'difftime', 'gmtime', 'localtime',\n            'mktime', 'strftime', 'time',\n\n            //wchar.h\n            'btowc', 'fgetwc', 'fgetws', 'fputwc', 'fputws', 'fwide',\n            'fwprintf', 'fwscanf', 'getwc', 'getwchar', 'mbrlen', 'mbrtowc',\n            'mbsinit', 'mbsrtowcs', 'putwc', 'putwchar', 'swprintf', 'swscanf',\n            'ungetwc', 'vfwprintf', 'vswprintf', 'vwprintf', 'wcrtomb',\n            'wcscat', 'wcschr', 'wcscmp', 'wcscoll', 'wcscpy', 'wcscspn',\n            'wcsftime', 'wcslen', 'wcsncat', 'wcsncmp', 'wcsncpy', 'wcspbrk',\n            'wcsrchr', 'wcsrtombs', 'wcsspn', 'wcsstr', 'wcstod', 'wcstok',\n            'wcstol', 'wcstoul', 'wcsxfrm', 'wctob', 'wmemchr', 'wmemcmp',\n            'wmemcpy', 'wmemmove', 'wmemset', 'wprintf', 'wscanf',\n\n            //wctype.h\n            'iswalnum', 'iswalpha', 'iswcntrl', 'iswctype', 'iswdigit',\n            'iswgraph', 'iswlower', 'iswprint', 'iswpunct', 'iswspace',\n            'iswupper', 'iswxdigit', 'towctrans', 'towlower', 'towupper',\n            'wctrans', 'wctype'\n            ),\n        4 => array(\n            'auto', 'char', 'const', 'double',  'float', 'int', 'long',\n            'register', 'short', 'signed', 'sizeof', 'static', 'struct',\n            'typedef', 'union', 'unsigned', 'void', 'volatile', 'wchar_t',\n\n            'int8', 'int16', 'int32', 'int64',\n            'uint8', 'uint16', 'uint32', 'uint64',\n\n            'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',\n            'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',\n\n            'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',\n            'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',\n\n            'int8_t', 'int16_t', 'int32_t', 'int64_t',\n            'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',\n\n            'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t',\n            'size_t', 'off_t'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']',\n        '+', '-', '*', '/', '%',\n        '=', '<', '>',\n        '!', '^', '&', '|',\n        '?', ':',\n        ';', ','\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;',\n            4 => 'color: #993333;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #339933;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #660099; font-weight: bold;',\n            3 => 'color: #660099; font-weight: bold;',\n            4 => 'color: #660099; font-weight: bold;',\n            5 => 'color: #006699; font-weight: bold;',\n            'HARD' => '',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000dd;',\n            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;',\n            2 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAMEL}.html',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/c_loadrunner.php",
    "content": "<?php\n/*************************************************************************************\n * c_loadrunner.php\n * ---------------------------------\n * Author: Stuart Moncrieff (stuart at myloadtest dot com)\n * Copyright: (c) 2010 Stuart Moncrieff (http://www.myloadtest.com/loadrunner-syntax-highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2010-07-25\n *\n * C (for LoadRunner) language file for GeSHi.\n *\n * Based on LoadRunner 9.52.\n *\n * CHANGES\n * -------\n * 2010-08-01 (1.0.8.9)\n *  -  Added highlighting support for LoadRunner {parameters}.\n * 2010-07-25 (1.0.8.8)\n *  -  First Release. Syntax highlighting support for lr_, web_, and sapgui_ functions only.\n *\n * TODO (updated 2010-07-25)\n * -------------------------\n *  - Add support for other vuser types: MMS, FTP, etc.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n * ************************************************************************************/\n\n$language_data = array (\n    // The First Indices\n    'LANG_NAME' => 'C (LoadRunner)',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    // Escape characters within strings (like \\\\) are not highlighted differently in LoadRunner, so\n    // I am using GeSHi escape characters (or regular expressions) to highlight LoadRunner {parameters}.\n    // LoadRunner {parameters} must begin with a letter and contain only alphanumeric characters and '_'\n    'ESCAPE_REGEXP' => array(\n        0 => \"#\\{[a-zA-Z]{1}[a-zA-Z_]{0,}\\}#\",\n    ),\n\n    // Keywords\n    'KEYWORDS' => array(\n        // Keywords from http://en.wikipedia.org/wiki/C_syntax\n        1 => array(\n            'auto', 'break', 'case', 'char', 'const', 'continue', 'default',\n            'do', 'double', 'else', 'enum', 'extern', 'float', 'for', 'goto',\n            'if', 'inline', 'int', 'long', 'register', 'restrict', 'return',\n            'short', 'signed', 'sizeof', 'static', 'struct', 'switch',\n            'typedef', 'union', 'unsigned', 'void', 'volatile', 'while',\n            '_Bool', '_Complex', '_Imaginary'\n            ),\n        // C preprocessor directives from http://en.wikipedia.org/wiki/C_preprocessor\n        2 => array(\n            '#define', '#if', '#ifdef', '#ifndef', '#include', '#else', '#elif', '#endif', '#pragma', '#undef'\n            ),\n        // Functions from lrun.h\n        3 => array(\n            'lr_start_transaction', 'lr_start_sub_transaction', 'lr_start_transaction_instance', 'lr_end_transaction',\n            'lr_end_sub_transaction', 'lr_end_transaction_instance', 'lr_stop_transaction', 'lr_stop_transaction_instance',\n            'lr_resume_transaction', 'lr_resume_transaction_instance', 'lr_wasted_time', 'lr_set_transaction', 'lr_user_data_point',\n            'lr_user_data_point_instance', 'lr_user_data_point_ex', 'lr_user_data_point_instance_ex', 'lr_get_transaction_duration',\n            'lr_get_trans_instance_duration', 'lr_get_transaction_think_time', 'lr_get_trans_instance_think_time',\n            'lr_get_transaction_wasted_time', 'lr_get_trans_instance_wasted_time', 'lr_get_transaction_status',\n            'lr_get_trans_instance_status', 'lr_set_transaction_status', 'lr_set_transaction_status_by_name',\n            'lr_set_transaction_instance_status', 'lr_start_timer', 'lr_end_timer', 'lr_rendezvous', 'lr_rendezvous_ex',\n            'lr_get_vuser_ip', 'lr_whoami', 'lr_get_host_name', 'lr_get_master_host_name', 'lr_get_attrib_long',\n            'lr_get_attrib_string', 'lr_get_attrib_double', 'lr_paramarr_idx', 'lr_paramarr_random', 'lr_paramarr_len',\n            'lr_param_unique', 'lr_param_sprintf', 'lr_load_dll', 'lr_continue_on_error', 'lr_decrypt', 'lr_abort', 'lr_exit',\n            'lr_peek_events', 'lr_think_time', 'lr_debug_message', 'lr_log_message', 'lr_message', 'lr_error_message',\n            'lr_output_message', 'lr_vuser_status_message', 'lr_fail_trans_with_error', 'lr_next_row', 'lr_advance_param',\n            'lr_eval_string', 'lr_eval_string_ext', 'lr_eval_string_ext_free', 'lr_param_increment', 'lr_save_var',\n            'lr_save_string', 'lr_save_int', 'lr_save_datetime', 'lr_save_searched_string', 'lr_set_debug_message',\n            'lr_get_debug_message', 'lr_enable_ip_spoofing', 'lr_disable_ip_spoofing', 'lr_convert_string_encoding'\n            ),\n        // Constants from lrun.h\n        4 => array(\n            'DP_FLAGS_NO_LOG', 'DP_FLAGS_STANDARD_LOG', 'DP_FLAGS_EXTENDED_LOG', 'merc_timer_handle_t', 'LR_EXIT_VUSER',\n            'LR_EXIT_ACTION_AND_CONTINUE', 'LR_EXIT_ITERATION_AND_CONTINUE', 'LR_EXIT_VUSER_AFTER_ITERATION',\n            'LR_EXIT_VUSER_AFTER_ACTION', 'LR_EXIT_MAIN_ITERATION_AND_CONTINUE', 'LR_MSG_CLASS_DISABLE_LOG',\n            'LR_MSG_CLASS_STANDARD_LOG', 'LR_MSG_CLASS_RETURNED_DATA', 'LR_MSG_CLASS_PARAMETERS', 'LR_MSG_CLASS_ADVANCED_TRACE',\n            'LR_MSG_CLASS_EXTENDED_LOG', 'LR_MSG_CLASS_SENT_DATA', 'LR_MSG_CLASS_JIT_LOG_ON_ERROR', 'LR_SWITCH_OFF', 'LR_SWITCH_ON',\n            'LR_SWITCH_DEFAULT', 'ONE_DAY', 'ONE_HOUR', 'ONE_MIN', 'DATE_NOW', 'TIME_NOW', 'LR_MSG_CLASS_BRIEF_LOG',\n            'LR_MSG_CLASS_RESULT_DATA', 'LR_MSG_CLASS_FULL_TRACE', 'LR_MSG_CLASS_AUTO_LOG', 'LR_MSG_OFF', 'LR_MSG_ON',\n            'LR_MSG_DEFAULT'\n            ),\n        // Functions from web_api.h\n        5 => array(\n            'web_reg_add_cookie', 'web_report_data_point', 'web_text_link', 'web_element', 'web_image_link', 'web_static_image',\n            'web_image_submit', 'web_button', 'web_edit_field', 'web_radio_group', 'web_check_box', 'web_list', 'web_text_area',\n            'web_map_area', 'web_eval_java_script', 'web_reg_dialog', 'web_reg_cross_step_download', 'web_browser',\n            'web_set_rts_key', 'web_save_param_length', 'web_save_timestamp_param', 'web_load_cache', 'web_dump_cache',\n            'web_add_cookie_ex'\n            ),\n        // Constants from web_api.h\n        6 => array(\n            'DESCRIPTION', 'ACTION', 'VERIFICATION', 'LR_NOT_FOUND', 'HTTP_INFO_TOTAL_REQUEST_STAT',\n            'HTTP_INFO_TOTAL_RESPONSE_STAT', 'LRW_OPT_STOP_VUSER_ON_ERROR', 'LRW_OPT_DISPLAY_IMAGE_BODY'\n            ),\n        // Functions from as_web.h\n        7 => array(\n            'web_add_filter', 'web_add_auto_filter', 'web_add_auto_header', 'web_add_header', 'web_add_cookie',\n            'web_cleanup_auto_headers', 'web_cleanup_cookies', 'web_concurrent_end', 'web_concurrent_start', 'web_create_html_param',\n            'web_create_html_param_ex', 'web_custom_request', 'web_disable_keep_alive', 'web_enable_keep_alive', 'web_find',\n            'web_get_int_property', 'web_image', 'web_image_check', 'web_link', 'web_global_verification', 'web_reg_find',\n            'web_reg_save_param', 'web_convert_param', 'web_remove_auto_filter', 'web_remove_auto_header', 'web_revert_auto_header',\n            'web_remove_cookie', 'web_save_header', 'web_set_certificate', 'web_set_certificate_ex', 'web_set_connections_limit',\n            'web_set_max_html_param_len', 'web_set_max_retries', 'web_set_proxy', 'web_set_proxy_bypass', 'web_set_secure_proxy',\n            'web_set_sockets_option', 'web_set_option', 'web_set_timeout', 'web_set_user', 'web_sjis_to_euc_param',\n            'web_submit_data', 'web_submit_form', 'web_url', 'web_set_proxy_bypass_local', 'web_cache_cleanup',\n            'web_create_html_query', 'web_create_radio_button_param', 'web_switch_net_layer'\n            ),\n        // Constants from as_web.h\n        8 => array(\n            'ENDFORM', 'LAST', 'ENDITEM', 'EXTRARES', 'ITEMDATA', 'STARTHIDDENS', 'ENDHIDDENS', 'CONNECT', 'RECEIVE', 'RESOLVE',\n            'STEP', 'REQUEST', 'RESPONSE', 'STARTQUERY', 'ENDQUERY', 'INPROPS', 'OUTPROPS', 'ENDPROPS', 'RAW_BODY_START',\n            'RAW_BODY_END', 'HTTP_INFO_RETURN_CODE', 'HTTP_INFO_DOWNLOAD_SIZE', 'HTTP_INFO_DOWNLOAD_TIME',\n            'LRW_NET_SOCKET_OPT_LOAD_VERIFY_FILE', 'LRW_NET_SOCKET_OPT_DEFAULT_VERIFY_PATH', 'LRW_NET_SOCKET_OPT_SSL_VERSION',\n            'LRW_NET_SOCKET_OPT_SSL_CIPHER_LIST', 'LRW_NET_SOCKET_OPT_SO_REUSE_ADDRESS', 'LRW_NET_SOCKET_OPT_USER_IP_ADDRESS',\n            'LRW_NET_SOCKET_OPT_IP_ADDRESS_BY_INDEX', 'LRW_NET_SOCKET_OPT_HELP', 'LRW_NET_SOCKET_OPT_PRINT_USER_IP_ADDRESS_LIST',\n            'LRW_OPT_HTML_CHAR_REF_BACKWARD_COMPATIBILITY', 'LRW_OPT_VALUE_YES', 'LRW_OPT_VALUE_NO'\n            ),\n        // Functions from as_sapgui.h\n        9 => array(\n            'sapgui_open_connection', 'sapgui_open_connection_ex', 'sapgui_logon', 'sapgui_create_session',\n            'sapgui_create_new_session', 'sapgui_call_method', 'sapgui_call_method_ex', 'sapgui_set_property',\n            'sapgui_get_property', 'sapgui_set_collection_property', 'sapgui_active_object_from_parent_method',\n            'sapgui_active_object_from_parent_property', 'sapgui_call_method_of_active_object',\n            'sapgui_call_method_of_active_object_ex', 'sapgui_set_property_of_active_object', 'sapgui_get_property_of_active_object',\n            'sapgui_select_active_connection', 'sapgui_select_active_session', 'sapgui_select_active_window ',\n            'sapgui_status_bar_get_text', 'sapgui_status_bar_get_param', 'sapgui_status_bar_get_type', 'sapgui_get_status_bar_text',\n            'sapgui_get_active_window_title', 'sapgui_is_object_available', 'sapgui_is_tab_selected', 'sapgui_is_object_changeable',\n            'sapgui_set_ok_code', 'sapgui_send_vkey', 'sapgui_resize_window', 'sapgui_window_resize', 'sapgui_window_maximize',\n            'sapgui_window_close', 'sapgui_window_restore', 'sapgui_window_scroll_to_row', 'sapgui_press_button',\n            'sapgui_select_radio_button', 'sapgui_set_password', 'sapgui_set_text', 'sapgui_select_menu', 'sapgui_select_tab',\n            'sapgui_set_checkbox', 'sapgui_set_focus', 'sapgui_select_combobox_entry', 'sapgui_get_ok_code',\n            'sapgui_is_radio_button_selected', 'sapgui_get_text', 'sapgui_is_checkbox_selected', 'sapgui_table_set_focus',\n            'sapgui_table_press_button', 'sapgui_table_select_radio_button', 'sapgui_table_set_password', 'sapgui_table_set_text',\n            'sapgui_table_set_checkbox', 'sapgui_table_select_combobox_entry', 'sapgui_table_set_row_selected',\n            'sapgui_table_set_column_selected', 'sapgui_table_set_column_width', 'sapgui_table_reorder', 'sapgui_table_fill_data',\n            'sapgui_table_get_text', 'sapgui_table_is_radio_button_selected', 'sapgui_table_is_checkbox_selected',\n            'sapgui_table_is_row_selected', 'sapgui_table_is_column_selected', 'sapgui_table_get_column_width',\n            'sapgui_grid_clear_selection', 'sapgui_grid_select_all', 'sapgui_grid_selection_changed',\n            'sapgui_grid_press_column_header', 'sapgui_grid_select_cell', 'sapgui_grid_select_rows', 'sapgui_grid_select_column',\n            'sapgui_grid_deselect_column', 'sapgui_grid_select_columns', 'sapgui_grid_select_cells', 'sapgui_grid_select_cell_row',\n            'sapgui_grid_select_cell_column', 'sapgui_grid_set_column_order', 'sapgui_grid_set_column_width',\n            'sapgui_grid_scroll_to_row', 'sapgui_grid_double_click', 'sapgui_grid_click', 'sapgui_grid_press_button',\n            'sapgui_grid_press_total_row', 'sapgui_grid_set_cell_data', 'sapgui_grid_set_checkbox',\n            'sapgui_grid_double_click_current_cell', 'sapgui_grid_click_current_cell', 'sapgui_grid_press_button_current_cell',\n            'sapgui_grid_press_total_row_current_cell', 'sapgui_grid_press_F1', 'sapgui_grid_press_F4', 'sapgui_grid_press_ENTER',\n            'sapgui_grid_press_toolbar_button', 'sapgui_grid_press_toolbar_context_button', 'sapgui_grid_open_context_menu',\n            'sapgui_grid_select_context_menu', 'sapgui_grid_select_toolbar_menu', 'sapgui_grid_fill_data',\n            'sapgui_grid_get_current_cell_row', 'sapgui_grid_get_current_cell_column', 'sapgui_grid_get_rows_count',\n            'sapgui_grid_get_columns_count', 'sapgui_grid_get_cell_data', 'sapgui_grid_is_checkbox_selected',\n            'sapgui_tree_scroll_to_node', 'sapgui_tree_set_hierarchy_header_width', 'sapgui_tree_set_selected_node',\n            'sapgui_tree_double_click_node', 'sapgui_tree_press_key', 'sapgui_tree_press_button', 'sapgui_tree_set_checkbox',\n            'sapgui_tree_double_click_item', 'sapgui_tree_click_link', 'sapgui_tree_open_default_context_menu',\n            'sapgui_tree_open_node_context_menu', 'sapgui_tree_open_header_context_menu', 'sapgui_tree_open_item_context_menu',\n            'sapgui_tree_select_context_menu', 'sapgui_tree_select_item', 'sapgui_tree_select_node', 'sapgui_tree_unselect_node',\n            'sapgui_tree_unselect_all', 'sapgui_tree_select_column', 'sapgui_tree_unselect_column', 'sapgui_tree_set_column_order',\n            'sapgui_tree_collapse_node', 'sapgui_tree_expand_node', 'sapgui_tree_scroll_to_item', 'sapgui_tree_set_column_width',\n            'sapgui_tree_press_header', 'sapgui_tree_is_checkbox_selected', 'sapgui_tree_get_node_text', 'sapgui_tree_get_item_text',\n            'sapgui_calendar_scroll_to_date', 'sapgui_calendar_focus_date', 'sapgui_calendar_select_interval',\n            'sapgui_apogrid_select_all', 'sapgui_apogrid_clear_selection', 'sapgui_apogrid_select_cell',\n            'sapgui_apogrid_deselect_cell', 'sapgui_apogrid_select_row', 'sapgui_apogrid_deselect_row',\n            'sapgui_apogrid_select_column', 'sapgui_apogrid_deselect_column', 'sapgui_apogrid_scroll_to_row',\n            'sapgui_apogrid_scroll_to_column', 'sapgui_apogrid_double_click', 'sapgui_apogrid_set_cell_data',\n            'sapgui_apogrid_get_cell_data', 'sapgui_apogrid_is_cell_changeable', 'sapgui_apogrid_get_cell_format',\n            'sapgui_apogrid_get_cell_tooltip', 'sapgui_apogrid_press_ENTER', 'sapgui_apogrid_open_cell_context_menu',\n            'sapgui_apogrid_select_context_menu_item', 'sapgui_text_edit_scroll_to_line', 'sapgui_text_edit_set_selection_indexes',\n            'sapgui_text_edit_set_unprotected_text_part', 'sapgui_text_edit_get_first_visible_line',\n            'sapgui_text_edit_get_selection_index_start', 'sapgui_text_edit_get_selection_index_end',\n            'sapgui_text_edit_get_number_of_unprotected_text_parts', 'sapgui_text_edit_double_click',\n            'sapgui_text_edit_single_file_dropped', 'sapgui_text_edit_multiple_files_dropped', 'sapgui_text_edit_press_F1',\n            'sapgui_text_edit_press_F4', 'sapgui_text_edit_open_context_menu', 'sapgui_text_edit_select_context_menu',\n            'sapgui_text_edit_modified_status_changed', 'sapgui_htmlviewer_send_event', 'sapgui_htmlviewer_dom_get_property',\n            'sapgui_toolbar_press_button', 'sapgui_toolbar_press_context_button', 'sapgui_toolbar_select_menu_item',\n            'sapgui_toolbar_select_menu_item_by_text', 'sapgui_toolbar_select_context_menu_item',\n            'sapgui_toolbar_select_context_menu_item_by_text'\n            ),\n        // Constants from as_sapgui.h\n        10 => array(\n            'BEGIN_OPTIONAL', 'END_OPTIONAL', 'al-keys', 'ENTER', 'HELP', 'F2', 'BACK', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',\n            'F10', 'F11', 'ESC', 'SHIFT_F1', 'SHIFT_F2', 'SHIFT_F3', 'SHIFT_F4', 'SHIFT_F5', 'SHIFT_F6', 'SHIFT_F7', 'SHIFT_F8',\n            'SHIFT_F9', 'SHIFT_F10', 'SHIFT_F11', 'SHIFT_F12', 'CTRL_F1', 'CTRL_F2', 'CTRL_F3', 'CTRL_F4', 'CTRL_F5', 'CTRL_F6',\n            'CTRL_F7', 'CTRL_F8', 'CTRL_F9', 'CTRL_F10', 'CTRL_F11', 'CTRL_F12', 'CTRL_SHIFT_F1', 'CTRL_SHIFT_F2', 'CTRL_SHIFT_F3',\n            'CTRL_SHIFT_F4', 'CTRL_SHIFT_F5', 'CTRL_SHIFT_F6', 'CTRL_SHIFT_F7', 'CTRL_SHIFT_F8', 'CTRL_SHIFT_F9', 'CTRL_SHIFT_F10',\n            'CTRL_SHIFT_F11', 'CTRL_SHIFT_F12', 'CANCEL', 'CTRL_F', 'CTRL_PAGE_UP', 'PAGE_UP', 'PAGE_DOWN', 'CTRL_PAGE_DOWN',\n            'CTRL_G', 'CTRL_P'\n            ),\n        ),\n\n    // Symbols and Case Sensitivity\n    // Symbols from: http://en.wikipedia.org/wiki/C_syntax\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']',\n        '+', '-', '*', '/', '%',\n        '=', '<', '>', '!', '^', '&', '|', '?', ':', ';', ','\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true, // Standard C reserved keywords\n        2 => true, // C preprocessor directives\n        3 => true, // Functions from lrun.h\n        4 => true, // Constants from lrun.h\n        5 => true, // Functions from web_api.h\n        6 => true, // Constants from web_api.h\n        7 => true, // Functions from as_web.h\n        8 => true, // Constants from as_web.h\n        9 => true, // Functions from as_sapgui.h\n        10 => true, // Constants from as_sapgui.h\n        ),\n\n    // Styles\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            // Functions are brown, constants and reserved words are blue\n            1 => 'color: #0000ff;', // Standard C reserved keywords\n            2 => 'color: #0000ff;', // C preprocessor directives\n            3 => 'color: #8a0000;', // Functions from lrun.h\n            4 => 'color: #0000ff;', // Constants from lrun.h\n            5 => 'color: #8a0000;', // Functions from web_api.h\n            6 => 'color: #0000ff;', // Constants from web_api.h\n            7 => 'color: #8a0000;', // Functions from as_web.h\n            8 => 'color: #0000ff;', // Constants from as_web.h\n            9 => 'color: #8a0000;', // Functions from as_sapgui.h\n            10 => 'color: #0000ff;', // Constants from as_sapgui.h\n            ),\n        'COMMENTS' => array(\n            // Comments are grey\n            1 => 'color: #9b9b9b;',\n            'MULTI' => 'color: #9b9b9b;'\n            ),\n        'ESCAPE_CHAR' => array(\n            // GeSHi cannot define a separate style for ESCAPE_REGEXP. The style for ESCAPE_CHAR also applies to ESCAPE_REGEXP.\n            // This is used for LoadRunner {parameters}\n            // {parameters} are pink\n            0 => 'color: #c000c0;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            // Strings are green\n            0 => 'color: #008080;'\n            ),\n        'NUMBERS' => array(\n            // Numbers are green\n            0 => 'color: #008080;',\n            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #008080;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #008080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #008080;',\n            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#008080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#008080;',\n            GESHI_NUMBER_FLT_NONSCI_F => 'color:#008080;',\n            GESHI_NUMBER_FLT_NONSCI => 'color:#008080;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #000000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n\n    // URLs for Functions\n    'URLS' => array(\n        1 => '', // Standard C reserved keywords\n        2 => '', // C preprocessor directives\n        3 => '', // Functions from lrun.h\n        4 => '', // Constants from lrun.h\n        5 => '', // Functions from web_api.h\n        6 => '', // Constants from web_api.h\n        7 => '', // Functions from as_web.h\n        8 => '', // Constants from as_web.h\n        9 => '', // Functions from as_sapgui.h\n        10 => '', // Constants from as_sapgui.h\n        ),\n\n    // Object Orientation\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n\n    // Regular Expressions\n    // Note that REGEXPS are not applied within strings.\n    'REGEXPS' => array(\n        ),\n\n    // Contextual Highlighting and Strict Mode\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n\n    // Tabs\n    // Note that if you are using <pre> tags for your code, then the browser chooses how many spaces your tabs will translate to.\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/c_mac.php",
    "content": "<?php\n/*************************************************************************************\n * c_mac.php\n * ---------\n * Author: M. Uli Kusterer (witness.of.teachtext@gmx.net)\n * Copyright: (c) 2004 M. Uli Kusterer, Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/06/04\n *\n * C for Macs language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n * 2004/11/27\n *   -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'C (Mac)',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Multiline-continued single-line comments\n        1 => '/\\/\\/(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //Multiline-continued preprocessor define\n        2 => '/#(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m'\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[\\\\\\\\abfnrtv\\'\\\"?\\n]#i\",\n        //Hexadecimal Char Specs\n        2 => \"#\\\\\\\\x[\\da-fA-F]{2}#\",\n        //Hexadecimal Char Specs\n        3 => \"#\\\\\\\\u[\\da-fA-F]{4}#\",\n        //Hexadecimal Char Specs\n        4 => \"#\\\\\\\\U[\\da-fA-F]{8}#\",\n        //Octal Char Specs\n        5 => \"#\\\\\\\\[0-7]{1,3}#\"\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'if', 'return', 'while', 'case', 'continue', 'default',\n            'do', 'else', 'for', 'switch', 'goto'\n            ),\n        2 => array(\n            'NULL', 'false', 'break', 'true', 'enum', 'errno', 'EDOM',\n            'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',\n            'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',\n            'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',\n            'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',\n            'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',\n            'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',\n            'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',\n            'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',\n            'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam',\n            'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',\n            'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',\n            // Mac-specific constants:\n            'kCFAllocatorDefault'\n            ),\n        3 => array(\n            'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',\n            'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',\n            'ispunct', 'isspace', 'isupper', 'isxdigit', 'tolower', 'toupper',\n            'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',\n            'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',\n            'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp',\n            'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',\n            'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',\n            'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',\n            'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',\n            'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',\n            'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',\n            'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',\n            'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',\n            'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',\n            'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',\n            'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',\n            'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',\n            'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'\n            ),\n        4 => array(\n            'auto', 'char', 'const', 'double',  'float', 'int', 'long',\n            'register', 'short', 'signed', 'static', 'struct',\n            'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',\n            'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',\n            'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', 'wchar_t',\n\n            'int8', 'int16', 'int32', 'int64',\n            'uint8', 'uint16', 'uint32', 'uint64',\n\n            'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',\n            'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',\n\n            'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',\n            'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',\n\n            'int8_t', 'int16_t', 'int32_t', 'int64_t',\n            'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',\n\n            'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t',\n\n            // Mac-specific types:\n            'CFArrayRef', 'CFDictionaryRef', 'CFMutableDictionaryRef', 'CFBundleRef', 'CFSetRef', 'CFStringRef',\n            'CFURLRef', 'CFLocaleRef', 'CFDateFormatterRef', 'CFNumberFormatterRef', 'CFPropertyListRef',\n            'CFTreeRef', 'CFWriteStreamRef', 'CFCharacterSetRef', 'CFMutableStringRef', 'CFNotificationRef',\n            'CFReadStreamRef', 'CFNull', 'CFAllocatorRef', 'CFBagRef', 'CFBinaryHeapRef',\n            'CFBitVectorRef', 'CFBooleanRef', 'CFDataRef', 'CFDateRef', 'CFMachPortRef', 'CFMessagePortRef',\n            'CFMutableArrayRef', 'CFMutableBagRef', 'CFMutableBitVectorRef', 'CFMutableCharacterSetRef',\n            'CFMutableDataRef', 'CFMutableSetRef', 'CFNumberRef', 'CFPlugInRef', 'CFPlugInInstanceRef',\n            'CFRunLoopRef', 'CFRunLoopObserverRef', 'CFRunLoopSourceRef', 'CFRunLoopTimerRef', 'CFSocketRef',\n            'CFTimeZoneRef', 'CFTypeRef', 'CFUserNotificationRef', 'CFUUIDRef', 'CFXMLNodeRef', 'CFXMLParserRef',\n            'CFXMLTreeRef'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000ff;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #0000dd;',\n            4 => 'color: #0000ff;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #ff0000;',\n            2 => 'color: #339900;',\n            'MULTI' => 'color: #ff0000; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #660099; font-weight: bold;',\n            3 => 'color: #660099; font-weight: bold;',\n            4 => 'color: #660099; font-weight: bold;',\n            5 => 'color: #006699; font-weight: bold;',\n            'HARD' => '',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #666666;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000dd;',\n            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #00eeff;',\n            2 => 'color: #00eeff;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAMEL}.html',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/c_winapi.php",
    "content": "<?php\n/*************************************************************************************\n * c_winapi.php\n * -----\n * Author: Benny Baumann (BenBE@geshi.org)\n * Contributors:\n *  - Jack Lloyd (lloyd@randombit.net)\n *  - Michael Mol (mikemol@gmail.com)\n * Copyright: (c) 2012 Benny Baumann (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2012/08/12\n *\n * C (WinAPI) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009/01/22 (1.0.8.3)\n *   -  Made keywords case-sensitive.\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n * 2004/XX/XX (1.0.4)\n *   -  Added a couple of new keywords (Jack Lloyd)\n * 2004/11/27 (1.0.3)\n *   -  Added support for multiple object splitters\n * 2004/10/27 (1.0.2)\n *   -  Added support for URLs\n * 2004/08/05 (1.0.1)\n *   -  Added support for symbols\n * 2004/07/14 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2009/02/08)\n * -------------------------\n *  -  Get a list of inbuilt functions to add (and explore C more\n *     to complete this rather bare language file\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'C (WinAPI)',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Multiline-continued single-line comments\n        1 => '/\\/\\/(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //Multiline-continued preprocessor define\n        2 => '/#(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m'\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[\\\\\\\\abfnrtv\\'\\\"?\\n]#i\",\n        //Hexadecimal Char Specs\n        2 => \"#\\\\\\\\x[\\da-fA-F]{2}#\",\n        //Hexadecimal Char Specs\n        3 => \"#\\\\\\\\u[\\da-fA-F]{4}#\",\n        //Hexadecimal Char Specs\n        4 => \"#\\\\\\\\U[\\da-fA-F]{8}#\",\n        //Octal Char Specs\n        5 => \"#\\\\\\\\[0-7]{1,3}#\"\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'if', 'return', 'while', 'case', 'continue', 'default',\n            'do', 'else', 'for', 'switch', 'goto'\n            ),\n        2 => array(\n            'null', 'false', 'break', 'true', 'function', 'enum', 'extern', 'inline'\n            ),\n        3 => array(\n            // assert.h\n            'assert',\n\n            //complex.h\n            'cabs', 'cacos', 'cacosh', 'carg', 'casin', 'casinh', 'catan',\n            'catanh', 'ccos', 'ccosh', 'cexp', 'cimag', 'cis', 'clog', 'conj',\n            'cpow', 'cproj', 'creal', 'csin', 'csinh', 'csqrt', 'ctan', 'ctanh',\n\n            //ctype.h\n            'digittoint', 'isalnum', 'isalpha', 'isascii', 'isblank', 'iscntrl',\n            'isdigit', 'isgraph', 'islower', 'isprint', 'ispunct', 'isspace',\n            'isupper', 'isxdigit', 'toascii', 'tolower', 'toupper',\n\n            //inttypes.h\n            'imaxabs', 'imaxdiv', 'strtoimax', 'strtoumax', 'wcstoimax',\n            'wcstoumax',\n\n            //locale.h\n            'localeconv', 'setlocale',\n\n            //math.h\n            'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'exp',\n            'fabs', 'floor', 'frexp', 'ldexp', 'log', 'log10', 'modf', 'pow',\n            'sin', 'sinh', 'sqrt', 'tan', 'tanh',\n\n            //setjmp.h\n            'longjmp', 'setjmp',\n\n            //signal.h\n            'raise',\n\n            //stdarg.h\n            'va_arg', 'va_copy', 'va_end', 'va_start',\n\n            //stddef.h\n            'offsetof',\n\n            //stdio.h\n            'clearerr', 'fclose', 'fdopen', 'feof', 'ferror', 'fflush', 'fgetc',\n            'fgetpos', 'fgets', 'fopen', 'fprintf', 'fputc', 'fputchar',\n            'fputs', 'fread', 'freopen', 'fscanf', 'fseek', 'fsetpos', 'ftell',\n            'fwrite', 'getc', 'getch', 'getchar', 'gets', 'perror', 'printf',\n            'putc', 'putchar', 'puts', 'remove', 'rename', 'rewind', 'scanf',\n            'setbuf', 'setvbuf', 'snprintf', 'sprintf', 'sscanf', 'tmpfile',\n            'tmpnam', 'ungetc', 'vfprintf', 'vfscanf', 'vprintf', 'vscanf',\n            'vsprintf', 'vsscanf',\n\n            //stdlib.h\n            'abort', 'abs', 'atexit', 'atof', 'atoi', 'atol', 'bsearch',\n            'calloc', 'div', 'exit', 'free', 'getenv', 'itoa', 'labs', 'ldiv',\n            'ltoa', 'malloc', 'qsort', 'rand', 'realloc', 'srand', 'strtod',\n            'strtol', 'strtoul', 'system',\n\n            //string.h\n            'memchr', 'memcmp', 'memcpy', 'memmove', 'memset', 'strcat',\n            'strchr', 'strcmp', 'strcoll', 'strcpy', 'strcspn', 'strerror',\n            'strlen', 'strncat', 'strncmp', 'strncpy', 'strpbrk', 'strrchr',\n            'strspn', 'strstr', 'strtok', 'strxfrm',\n\n            //time.h\n            'asctime', 'clock', 'ctime', 'difftime', 'gmtime', 'localtime',\n            'mktime', 'strftime', 'time',\n\n            //wchar.h\n            'btowc', 'fgetwc', 'fgetws', 'fputwc', 'fputws', 'fwide',\n            'fwprintf', 'fwscanf', 'getwc', 'getwchar', 'mbrlen', 'mbrtowc',\n            'mbsinit', 'mbsrtowcs', 'putwc', 'putwchar', 'swprintf', 'swscanf',\n            'ungetwc', 'vfwprintf', 'vswprintf', 'vwprintf', 'wcrtomb',\n            'wcscat', 'wcschr', 'wcscmp', 'wcscoll', 'wcscpy', 'wcscspn',\n            'wcsftime', 'wcslen', 'wcsncat', 'wcsncmp', 'wcsncpy', 'wcspbrk',\n            'wcsrchr', 'wcsrtombs', 'wcsspn', 'wcsstr', 'wcstod', 'wcstok',\n            'wcstol', 'wcstoul', 'wcsxfrm', 'wctob', 'wmemchr', 'wmemcmp',\n            'wmemcpy', 'wmemmove', 'wmemset', 'wprintf', 'wscanf',\n\n            //wctype.h\n            'iswalnum', 'iswalpha', 'iswcntrl', 'iswctype', 'iswdigit',\n            'iswgraph', 'iswlower', 'iswprint', 'iswpunct', 'iswspace',\n            'iswupper', 'iswxdigit', 'towctrans', 'towlower', 'towupper',\n            'wctrans', 'wctype'\n            ),\n        4 => array(\n            'auto', 'char', 'const', 'double',  'float', 'int', 'long',\n            'register', 'short', 'signed', 'sizeof', 'static', 'struct',\n            'typedef', 'union', 'unsigned', 'void', 'volatile', 'wchar_t',\n\n            'int8', 'int16', 'int32', 'int64',\n            'uint8', 'uint16', 'uint32', 'uint64',\n\n            'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',\n            'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',\n\n            'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',\n            'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',\n\n            'int8_t', 'int16_t', 'int32_t', 'int64_t',\n            'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',\n\n            'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t',\n            'size_t', 'off_t'\n            ),\n        // Public API\n        5 => array(\n            'AssignProcessToJobObject', 'CommandLineToArgvW', 'ConvertThreadToFiber',\n            'CreateFiber', 'CreateJobObjectA', 'CreateJobObjectW', 'CreateProcessA',\n            'CreateProcessAsUserA', 'CreateProcessAsUserW', 'CreateProcessW',\n            'CreateRemoteThread', 'CreateThread', 'DeleteFiber', 'ExitProcess',\n            'ExitThread', 'FreeEnvironmentStringsA', 'FreeEnvironmentStringsW',\n            'GetCommandLineA', 'GetCommandLineW', 'GetCurrentProcess',\n            'GetCurrentProcessId', 'GetCurrentThread', 'GetCurrentThreadId',\n            'GetEnvironmentStringsA', 'GetEnvironmentStringsW',\n            'GetEnvironmentVariableA', 'GetEnvironmentVariableW', 'GetExitCodeProcess',\n            'GetExitCodeThread', 'GetGuiResources', 'GetPriorityClass',\n            'GetProcessAffinityMask', 'GetProcessPriorityBoost',\n            'GetProcessShutdownParameters', 'GetProcessTimes', 'GetProcessVersion',\n            'GetProcessWorkingSetSize', 'GetStartupInfoA', 'GetStartupInfoW',\n            'GetThreadPriority', 'GetThreadPriorityBoost', 'GetThreadTimes',\n            'OpenJobObjectA', 'OpenJobObjectW', 'OpenProcess',\n            'QueryInformationJobObject', 'ResumeThread', 'SetEnvironmentVariableA',\n            'SetEnvironmentVariableW', 'SetInformationJobObject', 'SetPriorityClass',\n            'SetProcessAffinityMask', 'SetProcessPriorityBoost',\n            'SetProcessShutdownParameters', 'SetProcessWorkingSetSize',\n            'SetThreadAffinityMask', 'SetThreadIdealProcessor', 'SetThreadPriority',\n            'SetThreadPriorityBoost', 'Sleep', 'SleepEx', 'SuspendThread',\n            'SwitchToFiber', 'SwitchToThread', 'TerminateJobObject', 'TerminateProcess',\n            'TerminateThread', 'WaitForInputIdle', 'WinExec',\n\n            '_hread', '_hwrite', '_lclose', '_lcreat', '_llseek', '_lopen', '_lread',\n            '_lwrite', 'AreFileApisANSI', 'CancelIo', 'CopyFileA', 'CopyFileW',\n            'CreateDirectoryA', 'CreateDirectoryExA', 'CreateDirectoryExW',\n            'CreateDirectoryW', 'CreateFileA', 'CreateFileW', 'DeleteFileA',\n            'DeleteFileW', 'FindClose', 'FindCloseChangeNotification',\n            'FindFirstChangeNotificationA', 'FindFirstChangeNotificationW',\n            'FindFirstFileA', 'FindFirstFileW', 'FindNextFileA', 'FindNextFileW',\n            'FlushFileBuffers', 'GetCurrentDirectoryA', 'GetCurrentDirectoryW',\n            'GetDiskFreeSpaceA', 'GetDiskFreeSpaceExA', 'GetDiskFreeSpaceExW',\n            'GetDiskFreeSpaceW', 'GetDriveTypeA', 'GetDriveTypeW', 'GetFileAttributesA',\n            'GetFileAttributesExA', 'GetFileAttributesExW', 'GetFileAttributesW',\n            'GetFileInformationByHandle', 'GetFileSize', 'GetFileType',\n            'GetFullPathNameA', 'GetFullPathNameW', 'GetLogicalDrives',\n            'GetLogicalDriveStringsA', 'GetLogicalDriveStringsW', 'GetLongPathNameA',\n            'GetLongPathNameW', 'GetShortPathNameA', 'GetShortPathNameW',\n            'GetTempFileNameA', 'GetTempFileNameW', 'GetTempPathA', 'GetTempPathW',\n            'LockFile', 'MoveFileA', 'MoveFileW', 'MulDiv', 'OpenFile',\n            'QueryDosDeviceA', 'QueryDosDeviceW', 'ReadFile', 'ReadFileEx',\n            'RemoveDirectoryA', 'RemoveDirectoryW', 'SearchPathA', 'SearchPathW',\n            'SetCurrentDirectoryA', 'SetCurrentDirectoryW', 'SetEndOfFile',\n            'SetFileApisToANSI', 'SetFileApisToOEM', 'SetFileAttributesA',\n            'SetFileAttributesW', 'SetFilePointer', 'SetHandleCount',\n            'SetVolumeLabelA', 'SetVolumeLabelW', 'UnlockFile', 'WriteFile',\n            'WriteFileEx',\n\n            'DeviceIoControl',\n\n            'GetModuleFileNameA', 'GetModuleFileNameW', 'GetProcAddress',\n            'LoadLibraryA', 'LoadLibraryExA', 'LoadLibraryExW', 'LoadLibraryW',\n            'LoadModule',\n\n            'GetPrivateProfileIntA', 'GetPrivateProfileIntW',\n            'GetPrivateProfileSectionA', 'GetPrivateProfileSectionNamesA',\n            'GetPrivateProfileSectionNamesW', 'GetPrivateProfileSectionW',\n            'GetPrivateProfileStringA', 'GetPrivateProfileStringW',\n            'GetPrivateProfileStructA', 'GetPrivateProfileStructW',\n            'GetProfileIntA', 'GetProfileIntW', 'GetProfileSectionA',\n            'GetProfileSectionW', 'GetProfileStringA', 'GetProfileStringW',\n            'RegCloseKey', 'RegConnectRegistryA', 'RegConnectRegistryW',\n            'RegCreateKeyA', 'RegCreateKeyExA', 'RegCreateKeyExW',\n            'RegCreateKeyW', 'RegDeleteKeyA', 'RegDeleteKeyW', 'RegDeleteValueA',\n            'RegDeleteValueW', 'RegEnumKeyA', 'RegEnumKeyExA', 'RegEnumKeyExW',\n            'RegEnumKeyW', 'RegEnumValueA', 'RegEnumValueW', 'RegFlushKey',\n            'RegGetKeySecurity', 'RegLoadKeyA', 'RegLoadKeyW',\n            'RegNotifyChangeKeyValue', 'RegOpenKeyA', 'RegOpenKeyExA', 'RegOpenKeyExW',\n            'RegOpenKeyW', 'RegOverridePredefKey', 'RegQueryInfoKeyA',\n            'RegQueryInfoKeyW', 'RegQueryMultipleValuesA', 'RegQueryMultipleValuesW',\n            'RegQueryValueA', 'RegQueryValueExA', 'RegQueryValueExW', 'RegQueryValueW',\n            'RegReplaceKeyA', 'RegReplaceKeyW', 'RegRestoreKeyA', 'RegRestoreKeyW',\n            'RegSaveKeyA', 'RegSaveKeyW', 'RegSetKeySecurity', 'RegSetValueA',\n            'RegSetValueExA', 'RegSetValueExW', 'RegSetValueW', 'RegUnLoadKeyA',\n            'RegUnLoadKeyW', 'WritePrivateProfileSectionA', 'WritePrivateProfileSectionW',\n            'WritePrivateProfileStringA', 'WritePrivateProfileStringW',\n            'WritePrivateProfileStructA', 'WritePrivateProfileStructW',\n            'WriteProfileSectionA', 'WriteProfileSectionW', 'WriteProfileStringA',\n            'WriteProfileStringW',\n\n            'AccessCheck', 'AccessCheckAndAuditAlarmA', 'AccessCheckAndAuditAlarmW',\n            'AccessCheckByType', 'AccessCheckByTypeAndAuditAlarmA',\n            'AccessCheckByTypeAndAuditAlarmW', 'AccessCheckByTypeResultList',\n            'AccessCheckByTypeResultListAndAuditAlarmA', 'AccessCheckByTypeResultListAndAuditAlarmW',\n            'AddAccessAllowedAce', 'AddAccessAllowedAceEx', 'AddAccessAllowedObjectAce',\n            'AddAccessDeniedAce', 'AddAccessDeniedAceEx', 'AddAccessDeniedObjectAce',\n            'AddAce', 'AddAuditAccessAce', 'AddAuditAccessAceEx', 'AddAuditAccessObjectAce',\n            'AdjustTokenGroups', 'AdjustTokenPrivileges', 'AllocateAndInitializeSid',\n            'AllocateLocallyUniqueId', 'AreAllAccessesGranted', 'AreAnyAccessesGranted',\n            'BuildExplicitAccessWithNameA', 'BuildExplicitAccessWithNameW',\n            'BuildImpersonateExplicitAccessWithNameA', 'BuildImpersonateExplicitAccessWithNameW',\n            'BuildImpersonateTrusteeA', 'BuildImpersonateTrusteeW', 'BuildSecurityDescriptorA',\n            'BuildSecurityDescriptorW', 'BuildTrusteeWithNameA', 'BuildTrusteeWithNameW',\n            'BuildTrusteeWithSidA', 'BuildTrusteeWithSidW',\n            'ConvertToAutoInheritPrivateObjectSecurity', 'CopySid', 'CreatePrivateObjectSecurity',\n            'CreatePrivateObjectSecurityEx', 'CreateRestrictedToken', 'DeleteAce',\n            'DestroyPrivateObjectSecurity', 'DuplicateToken', 'DuplicateTokenEx',\n            'EqualPrefixSid', 'EqualSid', 'FindFirstFreeAce', 'FreeSid', 'GetAce',\n            'GetAclInformation', 'GetAuditedPermissionsFromAclA', 'GetAuditedPermissionsFromAclW',\n            'GetEffectiveRightsFromAclA', 'GetEffectiveRightsFromAclW',\n            'GetExplicitEntriesFromAclA', 'GetExplicitEntriesFromAclW', 'GetFileSecurityA',\n            'GetFileSecurityW', 'GetKernelObjectSecurity', 'GetLengthSid', 'GetMultipleTrusteeA',\n            'GetMultipleTrusteeOperationA', 'GetMultipleTrusteeOperationW', 'GetMultipleTrusteeW',\n            'GetNamedSecurityInfoA', 'GetNamedSecurityInfoW', 'GetPrivateObjectSecurity',\n            'GetSecurityDescriptorControl', 'GetSecurityDescriptorDacl',\n            'GetSecurityDescriptorGroup', 'GetSecurityDescriptorLength',\n            'GetSecurityDescriptorOwner', 'GetSecurityDescriptorSacl', 'GetSecurityInfo',\n            'GetSidIdentifierAuthority', 'GetSidLengthRequired', 'GetSidSubAuthority',\n            'GetSidSubAuthorityCount', 'GetTokenInformation', 'GetTrusteeFormA',\n            'GetTrusteeFormW', 'GetTrusteeNameA', 'GetTrusteeNameW', 'GetTrusteeTypeA',\n            'GetTrusteeTypeW', 'GetUserObjectSecurity', 'ImpersonateLoggedOnUser',\n            'ImpersonateNamedPipeClient', 'ImpersonateSelf', 'InitializeAcl',\n            'InitializeSecurityDescriptor', 'InitializeSid', 'IsTokenRestricted', 'IsValidAcl',\n            'IsValidSecurityDescriptor', 'IsValidSid', 'LogonUserA', 'LogonUserW',\n            'LookupAccountNameA', 'LookupAccountNameW', 'LookupAccountSidA', 'LookupAccountSidW',\n            'LookupPrivilegeDisplayNameA', 'LookupPrivilegeDisplayNameW', 'LookupPrivilegeNameA',\n            'LookupPrivilegeNameW', 'LookupPrivilegeValueA', 'LookupPrivilegeValueW',\n            'LookupSecurityDescriptorPartsA', 'LookupSecurityDescriptorPartsW', 'MakeAbsoluteSD',\n            'MakeSelfRelativeSD', 'MapGenericMask', 'ObjectCloseAuditAlarmA',\n            'ObjectCloseAuditAlarmW', 'ObjectDeleteAuditAlarmA', 'ObjectDeleteAuditAlarmW',\n            'ObjectOpenAuditAlarmA', 'ObjectOpenAuditAlarmW', 'ObjectPrivilegeAuditAlarmA',\n            'ObjectPrivilegeAuditAlarmW', 'OpenProcessToken', 'OpenThreadToken', 'PrivilegeCheck',\n            'PrivilegedServiceAuditAlarmA', 'PrivilegedServiceAuditAlarmW', 'RevertToSelf',\n            'SetAclInformation', 'SetEntriesInAclA', 'SetEntriesInAclW', 'SetFileSecurityA',\n            'SetFileSecurityW', 'SetKernelObjectSecurity', 'SetNamedSecurityInfoA',\n            'SetNamedSecurityInfoW', 'SetPrivateObjectSecurity', 'SetPrivateObjectSecurityEx',\n            'SetSecurityDescriptorControl', 'SetSecurityDescriptorDacl',\n            'SetSecurityDescriptorGroup', 'SetSecurityDescriptorOwner',\n            'SetSecurityDescriptorSacl', 'SetSecurityInfo', 'SetThreadToken',\n            'SetTokenInformation', 'SetUserObjectSecurity', 'ChangeServiceConfig2A',\n            'ChangeServiceConfig2W', 'ChangeServiceConfigA', 'ChangeServiceConfigW',\n            'CloseServiceHandle', 'ControlService', 'CreateServiceA', 'CreateServiceW',\n            'DeleteService', 'EnumDependentServicesA', 'EnumDependentServicesW',\n            'EnumServicesStatusA', 'EnumServicesStatusW', 'GetServiceDisplayNameA',\n            'GetServiceDisplayNameW', 'GetServiceKeyNameA', 'GetServiceKeyNameW',\n            'LockServiceDatabase', 'NotifyBootConfigStatus', 'OpenSCManagerA', 'OpenSCManagerW',\n            'OpenServiceA', 'OpenServiceW', 'QueryServiceConfig2A', 'QueryServiceConfig2W',\n            'QueryServiceConfigA', 'QueryServiceConfigW', 'QueryServiceLockStatusA',\n            'QueryServiceLockStatusW', 'QueryServiceObjectSecurity', 'QueryServiceStatus',\n            'RegisterServiceCtrlHandlerA', 'RegisterServiceCtrlHandlerW',\n            'SetServiceObjectSecurity', 'SetServiceStatus', 'StartServiceA',\n            'StartServiceCtrlDispatcherA', 'StartServiceCtrlDispatcherW', 'StartServiceW',\n            'UnlockServiceDatabase',\n\n            'MultinetGetConnectionPerformanceA', 'MultinetGetConnectionPerformanceW',\n            'NetAlertRaise', 'NetAlertRaiseEx', 'NetApiBufferAllocate', 'NetApiBufferFree',\n            'NetApiBufferReallocate', 'NetApiBufferSize', 'NetConnectionEnum', 'NetFileClose',\n            'NetFileGetInfo', 'NetGetAnyDCName', 'NetGetDCName', 'NetGetDisplayInformationIndex',\n            'NetGroupAdd', 'NetGroupAddUser', 'NetGroupDel', 'NetGroupDelUser', 'NetGroupEnum',\n            'NetGroupGetInfo', 'NetGroupGetUsers', 'NetGroupSetInfo', 'NetGroupSetUsers',\n            'NetLocalGroupAdd', 'NetLocalGroupAddMember', 'NetLocalGroupAddMembers',\n            'NetLocalGroupDel', 'NetLocalGroupDelMember', 'NetLocalGroupDelMembers',\n            'NetLocalGroupEnum', 'NetLocalGroupGetInfo', 'NetLocalGroupGetMembers',\n            'NetLocalGroupSetInfo', 'NetLocalGroupSetMembers', 'NetMessageBufferSend',\n            'NetMessageNameAdd', 'NetMessageNameDel', 'NetMessageNameEnum',\n            'NetMessageNameGetInfo', 'NetQueryDisplayInformation', 'NetRemoteComputerSupports',\n            'NetRemoteTOd', 'NetReplExportDirAdd', 'NetReplExportDirDel', 'NetReplExportDirEnum',\n            'NetReplExportDirGetInfo', 'NetReplExportDirLock', 'NetReplExportDirSetInfo',\n            'NetReplExportDirUnlock', 'NetReplGetInfo', 'NetReplImportDirAdd',\n            'NetReplImportDirDel', 'NetReplImportDirEnum', 'NetReplImportDirGetInfo',\n            'NetReplImportDirLock', 'NetReplImportDirUnlock', 'NetReplSetInfo',\n            'NetScheduleJobAdd', 'NetScheduleJobDel', 'NetScheduleJobEnum',\n            'NetScheduleJobGetInfo', 'NetServerComputerNameAdd', 'NetServerComputerNameDel',\n            'NetServerDiskEnum', 'NetServerEnum', 'NetServerEnumEx', 'NetServerGetInfo',\n            'NetServerSetInfo', 'NetServerTransportAdd', 'NetServerTransportAddEx',\n            'NetServerTransportDel', 'NetServerTransportEnum', 'NetSessionDel', 'NetSessionEnum',\n            'NetSessionGetInfo', 'NetShareAdd', 'NetShareCheck', 'NetShareDel', 'NetShareEnum',\n            'NetShareGetInfo', 'NetShareSetInfo', 'NetStatisticsGet', 'NetUseAdd', 'NetUseDel',\n            'NetUseEnum', 'NetUseGetInfo', 'NetUserAdd', 'NetUserChangePassword', 'NetUserDel',\n            'NetUserEnum', 'NetUserGetGroups', 'NetUserGetInfo', 'NetUserGetLocalGroups',\n            'NetUserModalsGet', 'NetUserModalsSet', 'NetUserSetGroups', 'NetUserSetInfo',\n            'NetWkstaGetInfo', 'NetWkstaSetInfo', 'NetWkstaTransportAdd', 'NetWkstaTransportDel',\n            'NetWkstaTransportEnum', 'NetWkstaUserEnum', 'NetWkstaUserGetInfo',\n            'NetWkstaUserSetInfo', 'WNetAddConnection2A', 'WNetAddConnection2W',\n            'WNetAddConnection3A', 'WNetAddConnection3W', 'WNetAddConnectionA',\n            'WNetAddConnectionW', 'WNetCancelConnection2A', 'WNetCancelConnection2W',\n            'WNetCancelConnectionA', 'WNetCancelConnectionW', 'WNetCloseEnum',\n            'WNetConnectionDialog', 'WNetConnectionDialog1A', 'WNetConnectionDialog1W',\n            'WNetDisconnectDialog', 'WNetDisconnectDialog1A', 'WNetDisconnectDialog1W',\n            'WNetEnumResourceA', 'WNetEnumResourceW', 'WNetGetConnectionA', 'WNetGetConnectionW',\n            'WNetGetLastErrorA', 'WNetGetLastErrorW', 'WNetGetNetworkInformationA',\n            'WNetGetNetworkInformationW', 'WNetGetProviderNameA', 'WNetGetProviderNameW',\n            'WNetGetResourceInformationA', 'WNetGetResourceInformationW',\n            'WNetGetResourceParentA', 'WNetGetResourceParentW', 'WNetGetUniversalNameA',\n            'WNetGetUniversalNameW', 'WNetGetUserA', 'WNetGetUserW', 'WNetOpenEnumA',\n            'WNetOpenEnumW', 'WNetUseConnectionA', 'WnetUseConnectionW',\n\n            'accept', 'bind', 'closesocket', 'connect', 'gethostbyaddr', 'gethostbyname',\n            'gethostname', 'getpeername', 'getprotobyname', 'getprotobynumber', 'getservbyname',\n            'getservbyport', 'getsockname', 'getsockopt', 'htonl', 'htons', 'inet_addr',\n            'inet_ntoa', 'ioctlsocket', 'listen', 'ntohl', 'ntohs', 'recv', 'recvfrom', 'select',\n            'send', 'sendto', 'setsockopt', 'shutdown', 'socket', 'WSAAccept',\n            'WSAAddressToStringA', 'WSAAddressToStringW', 'WSAAsyncGetHostByAddr',\n            'WSAAsyncGetHostByName', 'WSAAsyncGetProtoByName', 'WSAAsyncGetProtoByNumber',\n            'WSAAsyncGetServByName', 'WSAAsyncGetServByPort', 'WSAAsyncSelect',\n            'WSACancelAsyncRequest', 'WSACancelBlockingCall', 'WSACleanup', 'WSACloseEvent',\n            'WSAConnect', 'WSACreateEvent', 'WSADuplicateSocketA', 'WSADuplicateSocketW',\n            'WSAEnumNameSpaceProvidersA', 'WSAEnumNameSpaceProvidersW', 'WSAEnumNetworkEvents',\n            'WSAEnumProtocolsA', 'WSAEnumProtocolsW', 'WSAEventSelect', 'WSAGetLastError',\n            'WSAGetOverlappedResult', 'WSAGetQOSByName', 'WSAGetServiceClassInfoA',\n            'WSAGetServiceClassInfoW', 'WSAGetServiceClassNameByClassIdA',\n            'WSAGetServiceClassNameByClassIdW', 'WSAHtonl', 'WSAHtons', 'WSAInstallServiceClassA',\n            'WSAInstallServiceClassW', 'WSAIoctl', 'WSAIsBlocking', 'WSAJoinLeaf',\n            'WSALookupServiceBeginA', 'WSALookupServiceBeginW', 'WSALookupServiceEnd',\n            'WSALookupServiceNextA', 'WSALookupServiceNextW', 'WSANtohl', 'WSANtohs',\n            'WSAProviderConfigChange', 'WSARecv', 'WSARecvDisconnect', 'WSARecvFrom',\n            'WSARemoveServiceClass', 'WSAResetEvent', 'WSASend', 'WSASendDisconnect', 'WSASendTo',\n            'WSASetBlockingHook', 'WSASetEvent', 'WSASetLastError', 'WSASetServiceA',\n            'WSASetServiceW', 'WSASocketA', 'WSASocketW', 'WSAStartup', 'WSAStringToAddressA',\n            'WSAStringToAddressW', 'WSAUnhookBlockingHook', 'WSAWaitForMultipleEvents',\n            'WSCDeinstallProvider', 'WSCEnableNSProvider', 'WSCEnumProtocols',\n            'WSCGetProviderPath', 'WSCInstallNameSpace', 'WSCInstallProvider',\n            'WSCUnInstallNameSpace',\n\n            'ContinueDebugEvent', 'DebugActiveProcess', 'DebugBreak', 'FatalExit',\n            'FlushInstructionCache', 'GetThreadContext', 'GetThreadSelectorEntry',\n            'IsDebuggerPresent', 'OutputDebugStringA', 'OutputDebugStringW', 'ReadProcessMemory',\n            'SetDebugErrorLevel', 'SetThreadContext', 'WaitForDebugEvent', 'WriteProcessMemory',\n\n            'CloseHandle', 'DuplicateHandle', 'GetHandleInformation', 'SetHandleInformation',\n\n            'AdjustWindowRect', 'AdjustWindowRectEx', 'AllowSetForegroundWindow',\n            'AnimateWindow', 'AnyPopup', 'ArrangeIconicWindows', 'BeginDeferWindowPos',\n            'BringWindowToTop', 'CascadeWindows', 'ChildWindowFromPoint',\n            'ChildWindowFromPointEx', 'CloseWindow', 'CreateWindowExA', 'CreateWindowExW',\n            'DeferWindowPos', 'DestroyWindow', 'EndDeferWindowPos', 'EnumChildWindows',\n            'EnumThreadWindows', 'EnumWindows', 'FindWindowA', 'FindWindowExA', 'FindWindowExW',\n            'FindWindowW', 'GetAltTabInfoA', 'GetAltTabInfoW', 'GetAncestor', 'GetClientRect',\n            'GetDesktopWindow', 'GetForegroundWindow', 'GetGUIThreadInfo', 'GetLastActivePopup',\n            'GetLayout', 'GetParent', 'GetProcessDefaultLayout', 'GetTitleBarInf', 'GetTopWindow',\n            'GetWindow', 'GetWindowInfo', 'GetWindowModuleFileNameA', 'GetWindowModuleFileNameW',\n            'GetWindowPlacement', 'GetWindowRect', 'GetWindowTextA', 'GetWindowTextLengthA',\n            'GetWindowTextLengthW', 'GetWindowTextW', 'GetWindowThreadProcessId', 'IsChild',\n            'IsIconic', 'IsWindow', 'IsWindowUnicode', 'IsWindowVisible', 'IsZoomed',\n            'LockSetForegroundWindow', 'MoveWindow', 'OpenIcon', 'RealChildWindowFromPoint',\n            'RealGetWindowClassA', 'RealGetWindowClassW', 'SetForegroundWindow',\n            'SetLayeredWindowAttributes', 'SetLayout', 'SetParent', 'SetProcessDefaultLayout',\n            'SetWindowPlacement', 'SetWindowPos', 'SetWindowTextA', 'SetWindowTextW',\n            'ShowOwnedPopups', 'ShowWindow', 'ShowWindowAsync', 'TileWindows',\n            'UpdateLayeredWindow', 'WindowFromPoint',\n\n            'CreateDialogIndirectParamA', 'CreateDialogIndirectParamW', 'CreateDialogParamA',\n            'CreateDialogParamW', 'DefDlgProcA', 'DefDlgProcW', 'DialogBoxIndirectParamA',\n            'DialogBoxIndirectParamW', 'DialogBoxParamA', 'DialogBoxParamW', 'EndDialog',\n            'GetDialogBaseUnits', 'GetDlgCtrlID', 'GetDlgItem', 'GetDlgItemInt',\n            'GetDlgItemTextA', 'GetDlgItemTextW', 'GetNextDlgGroupItem', 'GetNextDlgTabItem',\n            'IsDialogMessageA', 'IsDialogMessageW', 'MapDialogRect', 'MessageBoxA',\n            'MessageBoxExA', 'MessageBoxExW', 'MessageBoxIndirectA', 'MessageBoxIndirectW',\n            'MessageBoxW', 'SendDlgItemMessageA', 'SendDlgItemMessageW', 'SetDlgItemInt',\n            'SetDlgItemTextA', 'SetDlgItemTextW',\n\n            'GetWriteWatch', 'GlobalMemoryStatus', 'GlobalMemoryStatusEx', 'IsBadCodePtr',\n            'IsBadReadPtr', 'IsBadStringPtrA', 'IsBadStringPtrW', 'IsBadWritePtr',\n            'ResetWriteWatch', 'AllocateUserPhysicalPages', 'FreeUserPhysicalPages',\n            'MapUserPhysicalPages', 'MapUserPhysicalPagesScatter', 'GlobalAlloc', 'GlobalFlags',\n            'GlobalFree', 'GlobalHandle', 'GlobalLock', 'GlobalReAlloc', 'GlobalSize',\n            'GlobalUnlock', 'LocalAlloc', 'LocalFlags', 'LocalFree', 'LocalHandle', 'LocalLock',\n            'LocalReAlloc', 'LocalSize', 'LocalUnlock', 'GetProcessHeap', 'GetProcessHeaps',\n            'HeapAlloc', 'HeapCompact', 'HeapCreate', 'HeapDestroy', 'HeapFree', 'HeapLock',\n            'HeapReAlloc', 'HeapSize', 'HeapUnlock', 'HeapValidate', 'HeapWalk', 'VirtualAlloc',\n            'VirtualAllocEx', 'VirtualFree', 'VirtualFreeEx', 'VirtualLock', 'VirtualProtect',\n            'VirtualProtectEx', 'VirtualQuery', 'VirtualQueryEx', 'VirtualUnlock',\n            'GetFreeSpace', 'GlobalCompact', 'GlobalFix', 'GlobalUnfix', 'GlobalUnWire',\n            'GlobalWire', 'IsBadHugeReadPtr', 'IsBadHugeWritePtr', 'LocalCompact', 'LocalShrink',\n\n            'GetClassInfoA', 'GetClassInfoW', 'GetClassInfoExA', 'GetClassInfoExW',\n            'GetClassLongA', 'GetClassLongW', 'GetClassLongPtrA', 'GetClassLongPtrW',\n            'RegisterClassA', 'RegisterClassW', 'RegisterClassExA', 'RegisterClassExW',\n            'SetClassLongA', 'SetClassLongW', 'SetClassLongPtrA', 'SetClassLongPtrW',\n            'SetWindowLongA', 'SetWindowLongW', 'SetWindowLongPtrA', 'SetWindowLongPtrW',\n            'UnregisterClassA', 'UnregisterClassW', 'GetClassWord', 'GetWindowWord',\n            'SetClassWord', 'SetWindowWord'\n            ),\n        // Native API\n        6 => array(\n            'CsrAllocateCaptureBuffer', 'CsrAllocateCapturePointer', 'CsrAllocateMessagePointer',\n            'CsrCaptureMessageBuffer', 'CsrCaptureMessageString', 'CsrCaptureTimeout',\n            'CsrClientCallServer', 'CsrClientConnectToServer', 'CsrFreeCaptureBuffer',\n            'CsrIdentifyAlertableThread', 'CsrNewThread', 'CsrProbeForRead', 'CsrProbeForWrite',\n            'CsrSetPriorityClass',\n\n            'LdrAccessResource', 'LdrDisableThreadCalloutsForDll', 'LdrEnumResources',\n            'LdrFindEntryForAddress', 'LdrFindResource_U', 'LdrFindResourceDirectory_U',\n            'LdrGetDllHandle', 'LdrGetProcedureAddress', 'LdrInitializeThunk', 'LdrLoadDll',\n            'LdrProcessRelocationBlock', 'LdrQueryImageFileExecutionOptions',\n            'LdrQueryProcessModuleInformation', 'LdrShutdownProcess', 'LdrShutdownThread',\n            'LdrUnloadDll', 'LdrVerifyImageMatchesChecksum',\n\n            'NtAcceptConnectPort', 'ZwAcceptConnectPort', 'NtCompleteConnectPort',\n            'ZwCompleteConnectPort', 'NtConnectPort', 'ZwConnectPort', 'NtCreatePort',\n            'ZwCreatePort', 'NtImpersonateClientOfPort', 'ZwImpersonateClientOfPort',\n            'NtListenPort', 'ZwListenPort', 'NtQueryInformationPort', 'ZwQueryInformationPort',\n            'NtReadRequestData', 'ZwReadRequestData', 'NtReplyPort', 'ZwReplyPort',\n            'NtReplyWaitReceivePort', 'ZwReplyWaitReceivePort', 'NtReplyWaitReplyPort',\n            'ZwReplyWaitReplyPort', 'NtRequestPort', 'ZwRequestPort', 'NtRequestWaitReplyPort',\n            'ZwRequestWaitReplyPort', 'NtSecureConnectPort', 'ZwSecureConnectPort',\n            'NtWriteRequestData', 'ZwWriteRequestData',\n\n            'NtAccessCheck', 'ZwAccessCheck', 'NtAccessCheckAndAuditAlarm',\n            'ZwAccessCheckAndAuditAlarm', 'NtAccessCheckByType', 'ZwAccessCheckByType',\n            'NtAccessCheckByTypeAndAuditAlarm', 'ZwAccessCheckByTypeAndAuditAlarm',\n            'NtAccessCheckByTypeResultList', 'ZwAccessCheckByTypeResultList',\n            'NtAdjustGroupsToken', 'ZwAdjustGroupsToken', 'NtAdjustPrivilegesToken',\n            'ZwAdjustPrivilegesToken', 'NtCloseObjectAuditAlarm', 'ZwCloseObjectAuditAlarm',\n            'NtCreateToken', 'ZwCreateToken', 'NtDeleteObjectAuditAlarm',\n            'ZwDeleteObjectAuditAlarm', 'NtDuplicateToken', 'ZwDuplicateToken',\n            'NtFilterToken', 'ZwFilterToken', 'NtImpersonateThread', 'ZwImpersonateThread',\n            'NtOpenObjectAuditAlarm', 'ZwOpenObjectAuditAlarm', 'NtOpenProcessToken',\n            'ZwOpenProcessToken', 'NtOpenThreadToken', 'ZwOpenThreadToken', 'NtPrivilegeCheck',\n            'ZwPrivilegeCheck', 'NtPrivilegedServiceAuditAlarm', 'ZwPrivilegedServiceAuditAlarm',\n            'NtPrivilegeObjectAuditAlarm', 'ZwPrivilegeObjectAuditAlarm',\n            'NtQueryInformationToken', 'ZwQueryInformationToken', 'NtQuerySecurityObject',\n            'ZwQuerySecurityObject', 'NtSetInformationToken', 'ZwSetInformationToken',\n            'NtSetSecurityObject', 'ZwSetSecurityObject',\n\n            'NtAddAtom', 'ZwAddAtom', 'NtDeleteAtom', 'ZwDeleteAtom', 'NtFindAtom', 'ZwFindAtom',\n            'NtQueryInformationAtom', 'ZwQueryInformationAtom',\n\n            'NtAlertResumeThread', 'ZwAlertResumeThread', 'NtAlertThread', 'ZwAlertThread',\n            'NtCreateProcess', 'ZwCreateProcess', 'NtCreateThread', 'ZwCreateThread',\n            'NtCurrentTeb', 'NtDelayExecution', 'ZwDelayExecution', 'NtGetContextThread',\n            'ZwGetContextThread', 'NtOpenProcess', 'ZwOpenProcess', 'NtOpenThread',\n            'ZwOpenThread', 'NtQueryInformationProcess', 'ZwQueryInformationProcess',\n            'NtQueryInformationThread', 'ZwQueryInformationThread', 'NtQueueApcThread',\n            'ZwQueueApcThread', 'NtResumeThread', 'ZwResumeThread', 'NtSetContextThread',\n            'ZwSetContextThread', 'NtSetHighWaitLowThread', 'ZwSetHighWaitLowThread',\n            'NtSetInformationProcess', 'ZwSetInformationProcess', 'NtSetInformationThread',\n            'ZwSetInformationThread', 'NtSetLowWaitHighThread', 'ZwSetLowWaitHighThread',\n            'NtSuspendThread', 'ZwSuspendThread', 'NtTerminateProcess', 'ZwTerminateProcess',\n            'NtTerminateThread', 'ZwTerminateThread', 'NtTestAlert', 'ZwTestAlert',\n            'NtYieldExecution', 'ZwYieldExecution',\n\n            'NtAllocateVirtualMemory', 'ZwAllocateVirtualMemory', 'NtAllocateVirtualMemory64',\n            'ZwAllocateVirtualMemory64', 'NtAreMappedFilesTheSame', 'ZwAreMappedFilesTheSame',\n            'NtCreateSection', 'ZwCreateSection', 'NtExtendSection', 'ZwExtendSection',\n            'NtFlushVirtualMemory', 'ZwFlushVirtualMemory', 'NtFreeVirtualMemory',\n            'ZwFreeVirtualMemory', 'NtFreeVirtualMemory64', 'ZwFreeVirtualMemory64',\n            'NtLockVirtualMemory', 'ZwLockVirtualMemory', 'NtMapViewOfSection',\n            'ZwMapViewOfSection', 'NtMapViewOfVlmSection', 'ZwMapViewOfVlmSection',\n            'NtOpenSection', 'ZwOpenSection', 'NtProtectVirtualMemory', 'ZwProtectVirtualMemory',\n            'NtProtectVirtualMemory64', 'ZwProtectVirtualMemory64', 'NtQueryVirtualMemory',\n            'ZwQueryVirtualMemory', 'NtQueryVirtualMemory64', 'ZwQueryVirtualMemory64',\n            'NtReadVirtualMemory', 'ZwReadVirtualMemory', 'NtReadVirtualMemory64',\n            'ZwReadVirtualMemory64', 'NtUnlockVirtualMemory', 'ZwUnlockVirtualMemory',\n            'NtUnmapViewOfSection', 'ZwUnmapViewOfSection', 'NtUnmapViewOfVlmSection',\n            'ZwUnmapViewOfVlmSection', 'NtWriteVirtualMemory', 'ZwWriteVirtualMemory',\n            'NtWriteVirtualMemory64', 'ZwWriteVirtualMemory64',\n\n            'NtAssignProcessToJobObject', 'ZwAssignProcessToJobObject', 'NtCreateJobObject',\n            'ZwCreateJobObject', 'NtOpenJobObject', 'ZwOpenJobObject',\n            'NtQueryInformationJobObject', 'ZwQueryInformationJobObject',\n            'NtSetInformationJobObject', 'ZwSetInformationJobObject', 'NtTerminateJobObject',\n            'ZwTerminateJobObject',\n\n            'NtCancelIoFile', 'ZwCancelIoFile', 'NtCreateFile', 'ZwCreateFile',\n            'NtCreateIoCompletion', 'ZwCreateIoCompletion', 'NtDeleteFile', 'ZwDeleteFile',\n            'NtDeviceIoControlFile', 'ZwDeviceIoControlFile', 'NtFlushBuffersFile',\n            'ZwFlushBuffersFile', 'NtFsControlFile', 'ZwFsControlFile', 'NtLockFile', 'ZwLockFile',\n            'NtNotifyChangeDirectoryFile', 'ZwNotifyChangeDirectoryFile', 'NtOpenFile',\n            'ZwOpenFile', 'NtOpenIoCompletion', 'ZwOpenIoCompletion', 'NtQueryAttributesFile',\n            'ZwQueryAttributesFile', 'NtQueryDirectoryFile', 'ZwQueryDirectoryFile',\n            'NtQueryEaFile', 'ZwQueryEaFile', 'NtQueryIoCompletion', 'ZwQueryIoCompletion',\n            'NtQueryQuotaInformationFile', 'ZwQueryQuotaInformationFile',\n            'NtQueryVolumeInformationFile', 'ZwQueryVolumeInformationFile', 'NtReadFile',\n            'ZwReadFile', 'NtReadFile64', 'ZwReadFile64', 'NtReadFileScatter', 'ZwReadFileScatter',\n            'NtRemoveIoCompletion', 'ZwRemoveIoCompletion', 'NtSetEaFile', 'ZwSetEaFile',\n            'NtSetInformationFile', 'ZwSetInformationFile', 'NtSetIoCompletion',\n            'ZwSetIoCompletion', 'NtSetQuotaInformationFile', 'ZwSetQuotaInformationFile',\n            'NtSetVolumeInformationFile', 'ZwSetVolumeInformationFile', 'NtUnlockFile',\n            'ZwUnlockFile', 'NtWriteFile', 'ZwWriteFile', 'NtWriteFile64','ZwWriteFile64',\n            'NtWriteFileGather', 'ZwWriteFileGather', 'NtQueryFullAttributesFile',\n            'ZwQueryFullAttributesFile', 'NtQueryInformationFile', 'ZwQueryInformationFile',\n\n            'RtlAbortRXact', 'RtlAbsoluteToSelfRelativeSD', 'RtlAcquirePebLock',\n            'RtlAcquireResourceExclusive', 'RtlAcquireResourceShared', 'RtlAddAccessAllowedAce',\n            'RtlAddAccessDeniedAce', 'RtlAddAce', 'RtlAddActionToRXact', 'RtlAddAtomToAtomTable',\n            'RtlAddAttributeActionToRXact', 'RtlAddAuditAccessAce', 'RtlAddCompoundAce',\n            'RtlAdjustPrivilege', 'RtlAllocateAndInitializeSid', 'RtlAllocateHandle',\n            'RtlAllocateHeap', 'RtlAnsiCharToUnicodeChar', 'RtlAnsiStringToUnicodeSize',\n            'RtlAnsiStringToUnicodeString', 'RtlAppendAsciizToString', 'RtlAppendStringToString',\n            'RtlAppendUnicodeStringToString', 'RtlAppendUnicodeToString', 'RtlApplyRXact',\n            'RtlApplyRXactNoFlush', 'RtlAreAllAccessesGranted', 'RtlAreAnyAccessesGranted',\n            'RtlAreBitsClear', 'RtlAreBitsSet', 'RtlAssert', 'RtlCaptureStackBackTrace',\n            'RtlCharToInteger', 'RtlCheckRegistryKey', 'RtlClearAllBits', 'RtlClearBits',\n            'RtlClosePropertySet', 'RtlCompactHeap', 'RtlCompareMemory', 'RtlCompareMemoryUlong',\n            'RtlCompareString', 'RtlCompareUnicodeString', 'RtlCompareVariants',\n            'RtlCompressBuffer', 'RtlConsoleMultiByteToUnicodeN', 'RtlConvertExclusiveToShared',\n            'RtlConvertLongToLargeInteger', 'RtlConvertPropertyToVariant',\n            'RtlConvertSharedToExclusive', 'RtlConvertSidToUnicodeString',\n            'RtlConvertUiListToApiList', 'RtlConvertUlongToLargeInteger',\n            'RtlConvertVariantToProperty', 'RtlCopyLuid', 'RtlCopyLuidAndAttributesArray',\n            'RtlCopySecurityDescriptor', 'RtlCopySid', 'RtlCopySidAndAttributesArray',\n            'RtlCopyString', 'RtlCopyUnicodeString', 'RtlCreateAcl', 'RtlCreateAndSetSD',\n            'RtlCreateAtomTable', 'RtlCreateEnvironment', 'RtlCreateHeap',\n            'RtlCreateProcessParameters', 'RtlCreatePropertySet', 'RtlCreateQueryDebugBuffer',\n            'RtlCreateRegistryKey', 'RtlCreateSecurityDescriptor', 'RtlCreateTagHeap',\n            'RtlCreateUnicodeString', 'RtlCreateUnicodeStringFromAsciiz', 'RtlCreateUserProcess',\n            'RtlCreateUserSecurityObject', 'RtlCreateUserThread', 'RtlCustomCPToUnicodeN',\n            'RtlCutoverTimeToSystemTime', 'RtlDecompressBuffer', 'RtlDecompressFragment',\n            'RtlDelete', 'RtlDeleteAce', 'RtlDeleteAtomFromAtomTable', 'RtlDeleteCriticalSection',\n            'RtlDeleteElementGenericTable', 'RtlDeleteNoSplay', 'RtlDeleteRegistryValue',\n            'RtlDeleteResource', 'RtlDeleteSecurityObject', 'RtlDeNormalizeProcessParams',\n            'RtlDestroyAtomTable', 'RtlDestroyEnvironment', 'RtlDestroyHandleTable',\n            'RtlDestroyHeap', 'RtlDestroyProcessParameters', 'RtlDestroyQueryDebugBuffer',\n            'RtlDetermineDosPathNameType_U', 'RtlDoesFileExists_U', 'RtlDosPathNameToNtPathName_U',\n            'RtlDosSearchPath_U', 'RtlDowncaseUnicodeString', 'RtlDumpResource',\n            'RtlEmptyAtomTable', 'RtlEnlargedIntegerMultiply', 'RtlEnlargedUnsignedDivide',\n            'RtlEnlargedUnsignedMultiply', 'RtlEnterCriticalSection', 'RtlEnumerateGenericTable',\n            'RtlEnumerateGenericTableWithoutSplaying', 'RtlEnumerateProperties',\n            'RtlEnumProcessHeaps', 'RtlEqualComputerName', 'RtlEqualDomainName', 'RtlEqualLuid',\n            'RtlEqualPrefixSid', 'RtlEqualSid', 'RtlEqualString', 'RtlEqualUnicodeString',\n            'RtlEraseUnicodeString', 'RtlExpandEnvironmentStrings_U', 'RtlExtendedIntegerMultiply',\n            'RtlExtendedLargeIntegerDivide', 'RtlExtendedMagicDivide', 'RtlExtendHeap',\n            'RtlFillMemory', 'RtlFillMemoryUlong', 'RtlFindClearBits', 'RtlFindClearBitsAndSet',\n            'RtlFindLongestRunClear', 'RtlFindLongestRunSet', 'RtlFindMessage', 'RtlFindSetBits',\n            'RtlFindSetBitsAndClear', 'RtlFirstFreeAce', 'RtlFlushPropertySet',\n            'RtlFormatCurrentUserKeyPath', 'RtlFormatMessage', 'RtlFreeAnsiString',\n            'RtlFreeHandle', 'RtlFreeHeap', 'RtlFreeOemString', 'RtlFreeSid',\n            'RtlFreeUnicodeString', 'RtlFreeUserThreadStack', 'RtlGenerate8dot3Name', 'RtlGetAce',\n            'RtlGetCallersAddress', 'RtlGetCompressionWorkSpaceSize',\n            'RtlGetControlSecurityDescriptor', 'RtlGetCurrentDirectory_U',\n            'RtlGetDaclSecurityDescriptor', 'RtlGetElementGenericTable', 'RtlGetFullPathName_U',\n            'RtlGetGroupSecurityDescriptor', 'RtlGetLongestNtPathLength', 'RtlGetNtGlobalFlags',\n            'RtlGetNtProductType', 'RtlGetOwnerSecurityDescriptor', 'RtlGetProcessHeaps',\n            'RtlGetSaclSecurityDescriptor', 'RtlGetUserInfoHeap', 'RtlGuidToPropertySetName',\n            'RtlIdentifierAuthoritySid', 'RtlImageDirectoryEntryToData', 'RtlImageNtHeader',\n            'RtlImageRvaToSection', 'RtlImageRvaToVa', 'RtlImpersonateSelf', 'RtlInitAnsiString',\n            'RtlInitCodePageTable', 'RtlInitializeAtomPackage', 'RtlInitializeBitMap',\n            'RtlInitializeContext', 'RtlInitializeCriticalSection',\n            'RtlInitializeCriticalSectionAndSpinCount', 'RtlInitializeGenericTable',\n            'RtlInitializeHandleTable', 'RtlInitializeResource', 'RtlInitializeRXact',\n            'RtlInitializeSid', 'RtlInitNlsTables', 'RtlInitString', 'RtlInitUnicodeString',\n            'RtlInsertElementGenericTable', 'RtlIntegerToChar', 'RtlIntegerToUnicodeString',\n            'RtlIsDosDeviceName_U', 'RtlIsGenericTableEmpty', 'RtlIsNameLegalDOS8Dot3',\n            'RtlIsTextUnicode', 'RtlIsValidHandle', 'RtlIsValidIndexHandle', 'RtlLargeIntegerAdd',\n            'RtlLargeIntegerArithmeticShift', 'RtlLargeIntegerDivide', 'RtlLargeIntegerNegate',\n            'RtlLargeIntegerShiftLeft', 'RtlLargeIntegerShiftRight', 'RtlLargeIntegerSubtract',\n            'RtlLargeIntegerToChar', 'RtlLeaveCriticalSection', 'RtlLengthRequiredSid',\n            'RtlLengthSecurityDescriptor', 'RtlLengthSid', 'RtlLocalTimeToSystemTime',\n            'RtlLockHeap', 'RtlLookupAtomInAtomTable', 'RtlLookupElementGenericTable',\n            'RtlMakeSelfRelativeSD', 'RtlMapGenericMask', 'RtlMoveMemory',\n            'RtlMultiByteToUnicodeN', 'RtlMultiByteToUnicodeSize', 'RtlNewInstanceSecurityObject',\n            'RtlNewSecurityGrantedAccess', 'RtlNewSecurityObject', 'RtlNormalizeProcessParams',\n            'RtlNtStatusToDosError', 'RtlNumberGenericTableElements', 'RtlNumberOfClearBits',\n            'RtlNumberOfSetBits', 'RtlOemStringToUnicodeSize', 'RtlOemStringToUnicodeString',\n            'RtlOemToUnicodeN', 'RtlOnMappedStreamEvent', 'RtlOpenCurrentUser',\n            'RtlPcToFileHeader', 'RtlPinAtomInAtomTable', 'RtlpNtCreateKey',\n            'RtlpNtEnumerateSubKey', 'RtlpNtMakeTemporaryKey', 'RtlpNtOpenKey',\n            'RtlpNtQueryValueKey', 'RtlpNtSetValueKey', 'RtlPrefixString',\n            'RtlPrefixUnicodeString', 'RtlPropertySetNameToGuid', 'RtlProtectHeap',\n            'RtlpUnWaitCriticalSection', 'RtlpWaitForCriticalSection', 'RtlQueryAtomInAtomTable',\n            'RtlQueryEnvironmentVariable_U', 'RtlQueryInformationAcl',\n            'RtlQueryProcessBackTraceInformation', 'RtlQueryProcessDebugInformation',\n            'RtlQueryProcessHeapInformation', 'RtlQueryProcessLockInformation',\n            'RtlQueryProperties', 'RtlQueryPropertyNames', 'RtlQueryPropertySet',\n            'RtlQueryRegistryValues', 'RtlQuerySecurityObject', 'RtlQueryTagHeap',\n            'RtlQueryTimeZoneInformation', 'RtlRaiseException', 'RtlRaiseStatus', 'RtlRandom',\n            'RtlReAllocateHeap', 'RtlRealPredecessor', 'RtlRealSuccessor', 'RtlReleasePebLock',\n            'RtlReleaseResource', 'RtlRemoteCall', 'RtlResetRtlTranslations',\n            'RtlRunDecodeUnicodeString', 'RtlRunEncodeUnicodeString', 'RtlSecondsSince1970ToTime',\n            'RtlSecondsSince1980ToTime', 'RtlSelfRelativeToAbsoluteSD', 'RtlSetAllBits',\n            'RtlSetAttributesSecurityDescriptor', 'RtlSetBits', 'RtlSetCriticalSectionSpinCount',\n            'RtlSetCurrentDirectory_U', 'RtlSetCurrentEnvironment', 'RtlSetDaclSecurityDescriptor',\n            'RtlSetEnvironmentVariable', 'RtlSetGroupSecurityDescriptor', 'RtlSetInformationAcl',\n            'RtlSetOwnerSecurityDescriptor', 'RtlSetProperties', 'RtlSetPropertyNames',\n            'RtlSetPropertySetClassId', 'RtlSetSaclSecurityDescriptor', 'RtlSetSecurityObject',\n            'RtlSetTimeZoneInformation', 'RtlSetUnicodeCallouts', 'RtlSetUserFlagsHeap',\n            'RtlSetUserValueHeap', 'RtlSizeHeap', 'RtlSplay', 'RtlStartRXact',\n            'RtlSubAuthorityCountSid', 'RtlSubAuthoritySid', 'RtlSubtreePredecessor',\n            'RtlSubtreeSuccessor', 'RtlSystemTimeToLocalTime', 'RtlTimeFieldsToTime',\n            'RtlTimeToElapsedTimeFields', 'RtlTimeToSecondsSince1970', 'RtlTimeToSecondsSince1980',\n            'RtlTimeToTimeFields', 'RtlTryEnterCriticalSection', 'RtlUnicodeStringToAnsiSize',\n            'RtlUnicodeStringToAnsiString', 'RtlUnicodeStringToCountedOemString',\n            'RtlUnicodeStringToInteger', 'RtlUnicodeStringToOemSize',\n            'RtlUnicodeStringToOemString', 'RtlUnicodeToCustomCPN', 'RtlUnicodeToMultiByteN',\n            'RtlUnicodeToMultiByteSize', 'RtlUnicodeToOemN', 'RtlUniform', 'RtlUnlockHeap',\n            'RtlUnwind', 'RtlUpcaseUnicodeChar', 'RtlUpcaseUnicodeString',\n            'RtlUpcaseUnicodeStringToAnsiString', 'RtlUpcaseUnicodeStringToCountedOemString',\n            'RtlUpcaseUnicodeStringToOemString', 'RtlUpcaseUnicodeToCustomCPN',\n            'RtlUpcaseUnicodeToMultiByteN', 'RtlUpcaseUnicodeToOemN', 'RtlUpperChar',\n            'RtlUpperString', 'RtlUsageHeap', 'RtlValidAcl', 'RtlValidateHeap',\n            'RtlValidateProcessHeaps', 'RtlValidSecurityDescriptor', 'RtlValidSid', 'RtlWalkHeap',\n            'RtlWriteRegistryValue', 'RtlxAnsiStringToUnicodeSize', 'RtlxOemStringToUnicodeSize',\n            'RtlxUnicodeStringToAnsiSize', 'RtlxUnicodeStringToOemSize', 'RtlZeroHeap',\n            'RtlZeroMemory',\n\n            'NtCancelTimer', 'ZwCancelTimer', 'NtCreateTimer', 'ZwCreateTimer', 'NtGetTickCount',\n            'ZwGetTickCount', 'NtOpenTimer', 'ZwOpenTimer', 'NtQueryPerformanceCounter',\n            'ZwQueryPerformanceCounter', 'NtQuerySystemTime', 'ZwQuerySystemTime', 'NtQueryTimer',\n            'ZwQueryTimer', 'NtQueryTimerResolution', 'ZwQueryTimerResolution', 'NtSetSystemTime',\n            'ZwSetSystemTime', 'NtSetTimer', 'ZwSetTimer', 'NtSetTimerResolution',\n            'ZwSetTimerResolution',\n\n            'NtClearEvent', 'ZwClearEvent', 'NtCreateEvent', 'ZwCreateEvent', 'NtCreateEventPair',\n            'ZwCreateEventPair', 'NtCreateMutant', 'ZwCreateMutant', 'NtCreateSemaphore',\n            'ZwCreateSemaphore', 'NtOpenEvent', 'ZwOpenEvent', 'NtOpenEventPair',\n            'ZwOpenEventPair', 'NtOpenMutant', 'ZwOpenMutant', 'NtOpenSemaphore',\n            'ZwOpenSemaphore', 'NtPulseEvent', 'ZwPulseEvent', 'NtQueryEvent', 'ZwQueryEvent',\n            'NtQueryMutant', 'ZwQueryMutant', 'NtQuerySemaphore', 'ZwQuerySemaphore',\n            'NtReleaseMutant', 'ZwReleaseMutant', 'NtReleaseProcessMutant',\n            'ZwReleaseProcessMutant', 'NtReleaseSemaphore', 'ZwReleaseSemaphore',\n            'NtReleaseThreadMutant', 'ZwReleaseThreadMutant', 'NtResetEvent', 'ZwResetEvent',\n            'NtSetEvent', 'ZwSetEvent', 'NtSetHighEventPair', 'ZwSetHighEventPair',\n            'NtSetHighWaitLowEventPair', 'ZwSetHighWaitLowEventPair', 'NtSetLowEventPair',\n            'ZwSetLowEventPair', 'NtSetLowWaitHighEventPair', 'ZwSetLowWaitHighEventPair',\n            'NtSignalAndWaitForSingleObject', 'ZwSignalAndWaitForSingleObject',\n            'NtWaitForMultipleObjects', 'ZwWaitForMultipleObjects', 'NtWaitForSingleObject',\n            'ZwWaitForSingleObject', 'NtWaitHighEventPair', 'ZwWaitHighEventPair',\n            'NtWaitLowEventPair', 'ZwWaitLowEventPair',\n\n            'NtClose', 'ZwClose', 'NtCreateDirectoryObject', 'ZwCreateDirectoryObject',\n            'NtCreateSymbolicLinkObject', 'ZwCreateSymbolicLinkObject',\n            'NtDuplicateObject', 'ZwDuplicateObject', 'NtMakeTemporaryObject',\n            'ZwMakeTemporaryObject', 'NtOpenDirectoryObject', 'ZwOpenDirectoryObject',\n            'NtOpenSymbolicLinkObject', 'ZwOpenSymbolicLinkObject', 'NtQueryDirectoryObject',\n            'ZwQueryDirectoryObject', 'NtQueryObject', 'ZwQueryObject',\n            'NtQuerySymbolicLinkObject', 'ZwQuerySymbolicLinkObject', 'NtSetInformationObject',\n            'ZwSetInformationObject',\n\n            'NtContinue', 'ZwContinue', 'NtRaiseException', 'ZwRaiseException',\n            'NtRaiseHardError', 'ZwRaiseHardError', 'NtSetDefaultHardErrorPort',\n            'ZwSetDefaultHardErrorPort',\n\n            'NtCreateChannel', 'ZwCreateChannel', 'NtListenChannel', 'ZwListenChannel',\n            'NtOpenChannel', 'ZwOpenChannel', 'NtReplyWaitSendChannel', 'ZwReplyWaitSendChannel',\n            'NtSendWaitReplyChannel', 'ZwSendWaitReplyChannel', 'NtSetContextChannel',\n            'ZwSetContextChannel',\n\n            'NtCreateKey', 'ZwCreateKey', 'NtDeleteKey', 'ZwDeleteKey', 'NtDeleteValueKey',\n            'ZwDeleteValueKey', 'NtEnumerateKey', 'ZwEnumerateKey', 'NtEnumerateValueKey',\n            'ZwEnumerateValueKey', 'NtFlushKey', 'ZwFlushKey', 'NtInitializeRegistry',\n            'ZwInitializeRegistry', 'NtLoadKey', 'ZwLoadKey', 'NtLoadKey2', 'ZwLoadKey2',\n            'NtNotifyChangeKey', 'ZwNotifyChangeKey', 'NtOpenKey', 'ZwOpenKey', 'NtQueryKey',\n            'ZwQueryKey', 'NtQueryMultipleValueKey', 'ZwQueryMultipleValueKey',\n            'NtQueryMultiplValueKey', 'ZwQueryMultiplValueKey', 'NtQueryValueKey',\n            'ZwQueryValueKey', 'NtReplaceKey', 'ZwReplaceKey', 'NtRestoreKey', 'ZwRestoreKey',\n            'NtSaveKey', 'ZwSaveKey', 'NtSetInformationKey', 'ZwSetInformationKey',\n            'NtSetValueKey', 'ZwSetValueKey', 'NtUnloadKey', 'ZwUnloadKey',\n\n            'NtCreateMailslotFile', 'ZwCreateMailslotFile', 'NtCreateNamedPipeFile',\n            'ZwCreateNamedPipeFile', 'NtCreatePagingFile', 'ZwCreatePagingFile',\n\n            'NtCreateProfile', 'ZwCreateProfile', 'NtQueryIntervalProfile',\n            'ZwQueryIntervalProfile', 'NtRegisterThreadTerminatePort',\n            'ZwRegisterThreadTerminatePort', 'NtSetIntervalProfile', 'ZwSetIntervalProfile',\n            'NtStartProfile', 'ZwStartProfile', 'NtStopProfile', 'ZwStopProfile',\n            'NtSystemDebugControl', 'ZwSystemDebugControl',\n\n            'NtEnumerateBus', 'ZwEnumerateBus', 'NtFlushInstructionCache',\n            'ZwFlushInstructionCache', 'NtFlushWriteBuffer', 'ZwFlushWriteBuffer',\n            'NtSetLdtEntries', 'ZwSetLdtEntries',\n\n            'NtGetPlugPlayEvent', 'ZwGetPlugPlayEvent', 'NtPlugPlayControl', 'ZwPlugPlayControl',\n\n            'NtInitiatePowerAction', 'ZwInitiatePowerAction', 'NtPowerInformation',\n            'ZwPowerInformation', 'NtRequestWakeupLatency', 'ZwRequestWakeupLatency',\n            'NtSetSystemPowerState', 'ZwSetSystemPowerState', 'NtSetThreadExecutionState',\n            'ZwSetThreadExecutionState',\n\n            'NtLoadDriver', 'ZwLoadDriver', 'NtRegisterNewDevice', 'ZwRegisterNewDevice',\n            'NtUnloadDriver', 'ZwUnloadDriver',\n\n            'NtQueryDefaultLocale', 'ZwQueryDefaultLocale', 'NtQueryDefaultUILanguage',\n            'ZwQueryDefaultUILanguage', 'NtQuerySystemEnvironmentValue',\n            'ZwQuerySystemEnvironmentValue', 'NtSetDefaultLocale', 'ZwSetDefaultLocale',\n            'NtSetDefaultUILanguage', 'ZwSetDefaultUILanguage', 'NtSetSystemEnvironmentValue',\n            'ZwSetSystemEnvironmentValue',\n\n            'DbgBreakPoint', 'DbgPrint', 'DbgPrompt', 'DbgSsHandleKmApiMsg', 'DbgSsInitialize',\n            'DbgUiConnectToDbg', 'DbgUiContinue', 'DbgUiWaitStateChange', 'DbgUserBreakPoint',\n            'KiRaiseUserExceptionDispatcher', 'KiUserApcDispatcher', 'KiUserCallbackDispatcher',\n            'KiUserExceptionDispatcher', 'NlsAnsiCodePage', 'NlsMbCodePageTag',\n            'NlsMbOemCodePageTag', 'NtAllocateLocallyUniqueId', 'ZwAllocateLocallyUniqueId',\n            'NtAllocateUuids', 'ZwAllocateUuids', 'NtCallbackReturn', 'ZwCallbackReturn',\n            'NtDisplayString', 'ZwDisplayString', 'NtQueryOleDirectoryFile',\n            'ZwQueryOleDirectoryFile', 'NtQuerySection', 'ZwQuerySection',\n            'NtQuerySystemInformation', 'ZwQuerySystemInformation', 'NtSetSystemInformation',\n            'ZwSetSystemInformation', 'NtShutdownSystem', 'ZwShutdownSystem', 'NtVdmControl',\n            'ZwVdmControl', 'NtW32Call', 'ZwW32Call', 'PfxFindPrefix', 'PfxInitialize',\n            'PfxInsertPrefix', 'PfxRemovePrefix', 'PropertyLengthAsVariant', 'RestoreEm87Context',\n            'SaveEm87Context'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']',\n        '+', '-', '*', '/', '%',\n        '=', '<', '>',\n        '!', '^', '&', '|',\n        '?', ':',\n        ';', ','\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;',\n            4 => 'color: #993333;',\n            5 => 'color: #4000dd;',\n            6 => 'color: #4000dd;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #339933;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #660099; font-weight: bold;',\n            3 => 'color: #660099; font-weight: bold;',\n            4 => 'color: #660099; font-weight: bold;',\n            5 => 'color: #006699; font-weight: bold;',\n            'HARD' => '',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000dd;',\n            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;',\n            2 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAMEL}.html',\n        4 => '',\n        5 => 'http://www.google.com/search?q={FNAMEL}+msdn.microsoft.com',\n        6 => 'http://www.google.com/search?q={FNAMEL}+msdn.microsoft.com'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/caddcl.php",
    "content": "<?php\n/*************************************************************************************\n * caddcl.php\n * ----------\n * Author: Roberto Rossi (rsoftware@altervista.org)\n * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/08/30\n *\n * CAD DCL (Dialog Control Language) language file for GeSHi.\n *\n * DCL for AutoCAD 12 or later and IntelliCAD all versions.\n *\n * CHANGES\n * -------\n * 2004/11/27 (1.0.1)\n *  -  Added support for multiple object splitters\n * 2004/1!/27 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'CAD DCL',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'boxed_column','boxed_radio_column','boxed_radio_row','boxed_row',\n            'column','concatenation','button','dialog','edit_box','image','image_button',\n            'errtile','list_box','ok_cancel','ok_cancel_help','ok_cancel_help_errtile',\n            'ok_cancel_help_info','ok_only','paragraph','popup_list','radio_button',\n            'radio_column','radio_row','row','slider','spacer','spacer_0','spacer_1','text',\n            'text_part','toggle',\n            'action','alignment','allow_accept','aspect_ratio','big_increment',\n            'children_alignment','children_fixed_height',\n            'children_fixed_width','color',\n            'edit_limit','edit_width','fixed_height','fixed_width',\n            'height','initial_focus','is_cancel','is_default',\n            'is_enabled','is_tab_stop','is-bold','key','label','layout','list',\n            'max_value','min_value','mnemonic','multiple_select','password_char',\n            'small_increment','tabs','tab_truncate','value','width',\n            'false','true','left','right','centered','top','bottom',\n            'dialog_line','dialog_foreground','dialog_background',\n            'graphics_background','black','red','yellow','green','cyan',\n            'blue','magenta','whitegraphics_foreground',\n            'horizontal','vertical'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/cadlisp.php",
    "content": "<?php\n/*************************************************************************************\n * cadlisp.php\n * -----------\n * Author: Roberto Rossi (rsoftware@altervista.org)\n * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/blog)\n * Release Version: 1.0.9.1\n * Date Started: 2004/08/30\n *\n * AutoCAD/IntelliCAD Lisp language file for GeSHi.\n *\n * For AutoCAD V.12..2005 and IntelliCAD all versions.\n *\n * CHANGES\n * -------\n * 2004/11/27 (1.0.1)\n *  -  Added support for multiple object splitters\n * 2004/10/27 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'CAD Lisp',\n    'COMMENT_SINGLE' => array(1 => \";\"),\n    'COMMENT_MULTI' => array(\";|\" => \"|;\"),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'abs','acad_colordlg','acad_helpdlg','acad_strlsort','action_tile',\n            'add_list','alert','alloc','and','angle','angtof','angtos','append','apply',\n            'arx','arxload','arxunload','ascii','assoc','atan','atof','atoi','atom',\n            'atoms-family','autoarxload','autoload','Boole','boundp','caddr',\n            'cadr','car','cdr','chr','client_data_tile','close','command','cond',\n            'cons','cos','cvunit','defun','defun-q','defun-q-list-ref',\n            'defun-q-list-set','dictadd','dictnext','dictremove','dictrename',\n            'dictsearch','dimx_tile','dimy_tile','distance','distof','done_dialog',\n            'end_image','end_list','entdel','entget','entlast','entmake',\n            'entmakex','entmod','entnext','entsel','entupd','eq','equal','eval','exit',\n            'exp','expand','expt','fill_image','findfile','fix','float','foreach','function',\n            'gc','gcd','get_attr','get_tile','getangle','getcfg','getcname','getcorner',\n            'getdist','getenv','getfiled','getint','getkword','getorient','getpoint',\n            'getreal','getstring','getvar','graphscr','grclear','grdraw','grread','grtext',\n            'grvecs','handent','help','if','initdia','initget','inters','itoa','lambda','last',\n            'layoutlist','length','list','listp','load','load_dialog','log','logand','logior',\n            'lsh','mapcar','max','mem','member','menucmd','menugroup','min','minusp','mode_tile',\n            'namedobjdict','nentsel','nentselp','new_dialog','nil','not','nth','null',\n            'numberp','open','or','osnap','polar','prin1','princ','print','progn','prompt',\n            'quit','quote','read','read-char','read-line','redraw','regapp','rem','repeat',\n            'reverse','rtos','set','set_tile','setcfg','setenv','setfunhelp','setq','setvar',\n            'setview','sin','slide_image','snvalid','sqrt','ssadd','ssdel','ssget','ssgetfirst',\n            'sslength','ssmemb','ssname','ssnamex','sssetfirst','start_dialog','start_image',\n            'start_list','startapp','strcase','strcat','strlen','subst','substr','t','tablet',\n            'tblnext','tblobjname','tblsearch','term_dialog','terpri','textbox','textpage',\n            'textscr','trace','trans','type','unload_dialog','untrace','vector_image','ver',\n            'vports','wcmatch','while','write-char','write-line','xdroom','xdsize','zerop',\n            'vl-acad-defun','vl-acad-undefun','vl-arx-import','vlax-3D-point',\n            'vlax-add-cmd','vlax-create-object','vlax-curve-getArea',\n            'vlax-curve-getClosestPointTo','vlax-curve-getClosestPointToProjection',\n            'vlax-curve-getDistAtParam','vlax-curve-getDistAtPoint',\n            'vlax-curve-getEndParam','vlax-curve-getEndPoint',\n            'vlax-curve-getFirstDeriv','vlax-curve-getParamAtDist',\n            'vlax-curve-getParamAtPoint','vlax-curve-getPointAtDist',\n            'vlax-curve-getPointAtParam','vlax-curve-getSecondDeriv',\n            'vlax-curve-getStartParam','vlax-curve-getStartPoint',\n            'vlax-curve-isClosed','vlax-curve-isPeriodic','vlax-curve-isPlanar',\n            'vlax-dump-object','vlax-erased-p','vlax-for','vlax-get-acad-object',\n            'vlax-get-object','vlax-get-or-create-object','vlax-get-property',\n            'vlax-import-type-library','vlax-invoke-method','vlax-ldata-delete',\n            'vlax-ldata-get','vlax-ldata-list','vlax-ldata-put','vlax-ldata-test',\n            'vlax-make-safearray','vlax-make-variant','vlax-map-collection',\n            'vlax-method-applicable-p','vlax-object-released-p','vlax-product-key',\n            'vlax-property-available-p','vlax-put-property','vlax-read-enabled-p',\n            'vlax-release-object','vlax-remove-cmd','vlax-safearray-fill',\n            'vlax-safearray-get-dim','vlax-safearray-get-element',\n            'vlax-safearray-get-l-bound','vlax-safearray-get-u-bound',\n            'vlax-safearray-put-element','vlax-safearray-type','vlax-tmatrix',\n            'vlax-typeinfo-available-p','vlax-variant-change-type',\n            'vlax-variant-type','vlax-variant-value','vlax-write-enabled-p',\n            'vl-bb-ref','vl-bb-set','vl-catch-all-apply','vl-catch-all-error-message',\n            'vl-catch-all-error-p','vl-cmdf','vl-consp','vl-directory-files','vl-doc-export',\n            'vl-doc-import','vl-doc-ref','vl-doc-set','vl-every','vl-exit-with-error',\n            'vl-exit-with-value','vl-file-copy','vl-file-delete','vl-file-directory-p',\n            'vl-filename-base','vl-filename-directory','vl-filename-extension',\n            'vl-filename-mktemp','vl-file-rename','vl-file-size','vl-file-systime',\n            'vl-get-resource','vlisp-compile','vl-list-exported-functions',\n            'vl-list-length','vl-list-loaded-vlx','vl-load-all','vl-load-com',\n            'vl-load-reactors','vl-member-if','vl-member-if-not','vl-position',\n            'vl-prin1-to-string','vl-princ-to-string','vl-propagate','vlr-acdb-reactor',\n            'vlr-add','vlr-added-p','vlr-beep-reaction','vlr-command-reactor',\n            'vlr-current-reaction-name','vlr-data','vlr-data-set',\n            'vlr-deepclone-reactor','vlr-docmanager-reactor','vlr-dwg-reactor',\n            'vlr-dxf-reactor','vlr-editor-reactor','vl-registry-delete',\n            'vl-registry-descendents','vl-registry-read','vl-registry-write',\n            'vl-remove','vl-remove-if','vl-remove-if-not','vlr-insert-reactor',\n            'vlr-linker-reactor','vlr-lisp-reactor','vlr-miscellaneous-reactor',\n            'vlr-mouse-reactor','vlr-notification','vlr-object-reactor',\n            'vlr-owner-add','vlr-owner-remove','vlr-owners','vlr-pers','vlr-pers-list',\n            'vlr-pers-p','vlr-pers-release','vlr-reaction-names','vlr-reactions',\n            'vlr-reaction-set','vlr-reactors','vlr-remove','vlr-remove-all',\n            'vlr-set-notification','vlr-sysvar-reactor','vlr-toolbar-reactor',\n            'vlr-trace-reaction','vlr-type','vlr-types','vlr-undo-reactor',\n            'vlr-wblock-reactor','vlr-window-reactor','vlr-xref-reactor',\n            'vl-some','vl-sort','vl-sort-i','vl-string-elt','vl-string-left-trim',\n            'vl-string-mismatch','vl-string-position','vl-string-right-trim',\n            'vl-string-search','vl-string-subst','vl-string-translate','vl-string-trim',\n            'vl-symbol-name','vl-symbolp','vl-symbol-value','vl-unload-vlx','vl-vbaload',\n            'vl-vbarun','vl-vlx-loaded-p'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/ceylon.php",
    "content": "<?php\n/*************************************************************************************\n * ceylon.php\n * ----------\n * Author: Lucas Werkmeister (mail@lucaswerkmeister.de)\n * Copyright: (c) 2015 Lucas Werkmeister (http://lucaswerkmeister.de)\n * Release Version: 1.0.9.1\n * Date Started: 2015-01-08\n *\n * Ceylon language file for GeSHi.\n *\n * CHANGES\n * -------\n *\n * TODO (updated 2015-06-19)\n * ------------------\n * * Regexes match and break help URLs, so those are commented out for now\n * * Ceylon supports nested block comments\n * * The Ceylon compiler correctly parses\n *       \"\\{FICTITIOUS CHARACTER WITH \" IN NAME}\"\n *   as a single string literal.\n *   (However, that's not really important\n *   since Unicode character names never contain quotes.)\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Ceylon',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#!'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        /*\n         * 1. regular line comments (see COMMENT_SINGLE)\n         * 2. shebang line comments (see COMMENT_SINGLE)\n         * 3. strings (including string templates)\n         */\n        3 => '/(?:\"|``).*?(?:``|\")/'\n    ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\"),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        /*\n         * 1. lexer keywords (class, else, etc.)\n         * 2. language modifiers (shared, formal, etc.)\n         * 3. language doc modifiers (doc, see, etc.)\n         */\n        1 => array(\n            'assembly', 'module', 'package', 'import',\n            'alias', 'class', 'interface', 'object', 'given',\n            'value', 'assign', 'void', 'function',\n            'new', 'of', 'extends', 'satisfies', 'abstracts',\n            'in', 'out',\n            'return', 'break', 'continue', 'throw', 'assert',\n            'dynamic',\n            'if', 'else', 'switch', 'case',\n            'for', 'while', 'try', 'catch', 'finally',\n            'then', 'let',\n            'this', 'outer', 'super',\n            'is', 'exists', 'nonempty'\n        ),\n        2 => array(\n            'shared', 'abstract', 'formal', 'default', 'actual',\n            'variable', 'late', 'native', 'deprecated',\n            'final', 'sealed', 'annotation', 'small'\n        ),\n        3 => array(\n            'doc', 'by', 'license', 'see', 'throws', 'tagged'\n        )\n    ),\n    'SYMBOLS' => array(\n        ',', ';', '...', '{', '}', '[', ']', '`', '?.', '*.',\n        '?', '-&gt;', '=&gt;',\n        '**', '++', '--', '..', ':', '&&', '||',\n        '+=', '-=', '*=', '/=', '%=', '|=', '&=', '~=', '||=', '&&=',\n        '+', '-', '*', '/', '%', '^',\n        '~', '&', '|', '===', '==', '=', '!=', '!',\n        '&lt;=&gt;', '&lt;=', '&gt;=',\n        '&lt;', '&gt;',\n        '.'\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'font-weight:bold;color:#4C4C4C;',\n            2 => 'color:#39C',\n            3 => 'color:#39C'\n        ),\n        'COMMENTS' => array(\n            1 => 'color:darkgray;',\n            2 => 'color:darkgray;',\n            3 => 'color:blue',\n            'MULTI' => 'color:darkgray;'\n        ),\n        'STRINGS' => array(\n            0 => 'color:blue;'\n        ),\n        'REGEXPS' => array(\n            1 => 'color:#639;',\n            2 => 'color:#039;',\n            3 => 'color:#906;'\n        ),\n        'ESCAPE_CHAR' => array(),\n        'BRACKETS' => array(),\n        'NUMBERS' => array(),\n        'METHODS' => array(),\n        'SYMBOLS' => array(),\n        'SCRIPT' => array()\n    ),\n    'REGEXPS' => array(\n        /*\n         * 1. qualified lidentifiers\n         * 2. lidentifiers\n         * 3. uidentifiers\n         *\n         * All of these contain various lookahead and -behind to ensure\n         * that we don't match various stuff that GeSHi escapes\n         * (for instance, we see semicolons as <SEMI>).\n         */\n        1 => array(\n            GESHI_SEARCH => '\\\\b((\\?|\\*)?\\.[[:space:]]*)([[:lower:]][[:alnum:]]*|\\\\\\\\i[[:alnum:]]*)\\\\b',\n            GESHI_REPLACE => '\\\\3',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n        ),\n        2 => array(\n            GESHI_SEARCH => '(?<![|<>&![:alnum:]])([[:lower:]][[:alnum:]]*|\\\\\\\\i[[:alnum:]]*)(?![>[:alnum:]])',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n        ),\n        3 => array(\n            GESHI_SEARCH => '(?<![|<>&![:alnum:]])([[:upper:]][[:alnum:]]*|\\\\\\\\I[[:alnum:]]*)(?![>[:alnum:]])',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n        )\n    ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'URLS' => array(\n        1 => '',\n        2 => '', 3 => '' // the real URLs are commented out because syntax highlighting breaks them\n//      2 => 'https://modules.ceylon-lang.org/repo/1/ceylon/language/1.1.0/module-doc/api/index.html#{FNAME}',\n//      3 => 'https://modules.ceylon-lang.org/repo/1/ceylon/language/1.1.0/module-doc/api/index.html#{FNAME}',\n    ),\n    'CASE_SENSITIVE' => array(1 => true, 2 => true, 3 => true),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/cfdg.php",
    "content": "<?php\n/*************************************************************************************\n * cfdg.php\n * --------\n * Author: John Horigan <john@glyphic.com>\n * Copyright: (c) 2006 John Horigan http://www.ozonehouse.com/john/\n * Release Version: 1.0.9.1\n * Date Started: 2006/03/11\n *\n * CFDG language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2006/03/11 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2006/03/11)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'CFDG',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'include', 'startshape', 'rule', 'background'\n            ),\n        2 => array(\n            'SQUARE', 'CIRCLE', 'TRIANGLE',\n            ),\n        3 => array(\n            'b','brightness','h','hue','sat','saturation',\n            'a','alpha','x','y','z','s','size',\n            'r','rotate','f','flip','skew','xml_set_object'\n            )\n        ),\n    'SYMBOLS' => array(\n        '[', ']', '{', '}', '*', '|'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #717100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #006666;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            2 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;',\n            2 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            3 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/cfm.php",
    "content": "<?php\n/*************************************************************************************\n * cfm.php\n * -------\n * Author: Diego\n * Copyright: (c) 2006 Diego\n * Release Version: 1.0.9.1\n * Date Started: 2006/02/25\n *\n * ColdFusion language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2006/02/25 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2006/02/25)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'ColdFusion',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        /* CFM Tags */\n        1 => array(\n            'cfabort', 'cfapplet', 'cfapplication', 'cfargument', 'cfassociate',\n            'cfbreak', 'cfcache', 'cfcase', 'cfcatch', 'cfchart', 'cfchartdata',\n            'cfchartseries', 'cfcol', 'cfcollection', 'cfcomponent',\n            'cfcontent', 'cfcookie', 'cfdefaultcase', 'cfdirectory',\n            'cfdocument', 'cfdocumentitem', 'cfdocumentsection', 'cfdump',\n            'cfelse', 'cfelseif', 'cferror', 'cfexecute', 'cfexit', 'cffile',\n            'cfflush', 'cfform', 'cfformgroup', 'cfformitem', 'cfftp',\n            'cffunction', 'cfgrid', 'cfgridcolumn', 'cfgridrow', 'cfgridupdate',\n            'cfheader', 'cfhtmlhead', 'cfhttp', 'cfhttpparam', 'cfif',\n            'cfimport', 'cfinclude', 'cfindex', 'cfinput', 'cfinsert',\n            'cfinvoke', 'cfinvokeargument', 'cfldap', 'cflocation', 'cflock',\n            'cflog', 'cflogin', 'cfloginuser', 'cflogout', 'cfloop', 'cfmail',\n            'cfmailparam', 'cfmailpart', 'cfmodule', 'cfNTauthenticate',\n            'cfobject', 'cfobjectcache', 'cfoutput', 'cfparam', 'cfpop',\n            'cfprocessingdirective', 'cfprocparam',\n            'cfprocresult', 'cfproperty', 'cfquery', 'cfqueryparam',\n            'cfregistry', 'cfreport', 'cfreportparam', 'cfrethrow', 'cfreturn',\n            'cfsavecontent', 'cfschedule', 'cfscript', 'cfsearch', 'cfselect',\n            'cfset', 'cfsetting', 'cfsilent', 'cfstoredproc',\n            'cfswitch', 'cftable', 'cftextarea', 'cfthrow', 'cftimer',\n            'cftrace', 'cftransaction', 'cftree', 'cftreeitem', 'cftry',\n            'cfupdate', 'cfwddx'\n            ),\n        /* HTML Tags */\n        2 => array(\n            'a', 'abbr', 'acronym', 'address', 'applet',\n\n            'base', 'basefont', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'b',\n\n            'caption', 'center', 'cite', 'code', 'colgroup', 'col',\n\n            'dd', 'del', 'dfn', 'dir', 'div', 'dl', 'dt',\n\n            'em',\n\n            'fieldset', 'font', 'form', 'frame', 'frameset',\n\n            'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'html',\n\n            'iframe', 'ilayer', 'img', 'input', 'ins', 'isindex', 'i',\n\n            'kbd',\n\n            'label', 'legend', 'link', 'li',\n\n            'map', 'meta',\n\n            'noframes', 'noscript',\n\n            'object', 'ol', 'optgroup', 'option',\n\n            'param', 'pre', 'p',\n\n            'q',\n\n            'samp', 'script', 'select', 'small', 'span', 'strike', 'strong', 'style', 'sub', 'sup', 's',\n\n            'table', 'tbody', 'td', 'textarea', 'text', 'tfoot', 'thead', 'th', 'title', 'tr', 'tt',\n\n            'ul', 'u',\n\n            'var',\n            ),\n        /* HTML attributes */\n        3 => array(\n            'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis',\n            'background', 'bgcolor', 'border',\n            'cellpadding', 'cellspacing', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords',\n            'data', 'datetime', 'declare', 'defer', 'dir', 'disabled',\n            'enctype',\n            'face', 'for', 'frame', 'frameborder',\n            'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv',\n            'id', 'ismap',\n            'label', 'lang', 'language', 'link', 'longdesc',\n            'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple',\n            'name', 'nohref', 'noresize', 'noshade', 'nowrap',\n            'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onreset', 'onselect', 'onsubmit', 'onunload',\n            'profile', 'prompt',\n            'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',\n            'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary',\n            'tabindex', 'target', 'text', 'title', 'type',\n            'usemap',\n            'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',\n            'width'\n            ),\n        /* CFM Script delimeters */\n        4 => array(\n            'var', 'function', 'while', 'if','else'\n            ),\n        /* CFM Functions */\n        5 => array(\n            'Abs', 'GetFunctionList', 'LSTimeFormat','ACos','GetGatewayHelper','LTrim','AddSOAPRequestHeader','GetHttpRequestData',\n            'Max','AddSOAPResponseHeader','GetHttpTimeString','Mid','ArrayAppend','GetLocale','Min','ArrayAvg','GetLocaleDisplayName',\n            'Minute','ArrayClear','GetMetaData','Month','ArrayDeleteAt','GetMetricData','MonthAsString','ArrayInsertAt','GetPageContext',\n            'Now','ArrayIsEmpty','GetProfileSections','NumberFormat','ArrayLen','GetProfileString','ParagraphFormat','ArrayMax',\n            'GetLocalHostIP','ParseDateTime','ArrayMin','GetSOAPRequest','Pi','ArrayNew','GetSOAPRequestHeader','PreserveSingleQuotes',\n            'ArrayPrepend','GetSOAPResponse','Quarter','ArrayResize','GetSOAPResponseHeader','QueryAddColumn','ArraySet',\n            'GetTempDirectory','QueryAddRow','ArraySort','QueryNew','ArraySum','GetTempFile','QuerySetCell',\n            'ArraySwap','GetTickCount','QuotedValueList','ArrayToList','GetTimeZoneInfo','Rand','Asc','GetToken','Randomize',\n            'ASin','Hash','RandRange','Atn','Hour','REFind','BinaryDecode','HTMLCodeFormat','REFindNoCase','BinaryEncode',\n            'HTMLEditFormat','ReleaseComObject','BitAnd','IIf','RemoveChars','BitMaskClear','IncrementValue','RepeatString',\n            'BitMaskRead','InputBaseN','Replace','BitMaskSet','Insert','ReplaceList','BitNot','Int','ReplaceNoCase','BitOr',\n            'IsArray','REReplace','BitSHLN','IsBinary','REReplaceNoCase','BitSHRN','IsBoolean','Reverse','BitXor','IsCustomFunction',\n            'Right','Ceiling','IsDate','RJustify','CharsetDecode','IsDebugMode','Round','CharsetEncode','IsDefined','RTrim',\n            'Chr','IsLeapYear','Second','CJustify','IsLocalHost','SendGatewayMessage','Compare','IsNumeric','SetEncoding',\n            'CompareNoCase','IsNumericDate','SetLocale','Cos','IsObject','SetProfileString','CreateDate','IsQuery','SetVariable',\n            'CreateDateTime','IsSimpleValue','Sgn','CreateObject','IsSOAPRequest','Sin','CreateODBCDate','IsStruct','SpanExcluding',\n            'CreateODBCDateTime','IsUserInRole','SpanIncluding','CreateODBCTime','IsValid','Sqr','CreateTime','IsWDDX','StripCR',\n            'CreateTimeSpan','IsXML','StructAppend','CreateUUID','IsXmlAttribute','StructClear','DateAdd','IsXmlDoc','StructCopy',\n            'DateCompare','IsXmlElem','StructCount','DateConvert','IsXmlNode','StructDelete','DateDiff','IsXmlRoot','StructFind',\n            'DateFormat','JavaCast','StructFindKey','DatePart','JSStringFormat','StructFindValue','Day','LCase','StructGet',\n            'DayOfWeek','Left','StructInsert','DayOfWeekAsString','Len','StructIsEmpty','DayOfYear','ListAppend','StructKeyArray',\n            'DaysInMonth','ListChangeDelims','StructKeyExists','DaysInYear','ListContains','StructKeyList','DE','ListContainsNoCase',\n            'StructNew','DecimalFormat','ListDeleteAt','StructSort','DecrementValue','ListFind','StructUpdate','Decrypt','ListFindNoCase',\n            'Tan','DecryptBinary','ListFirst','TimeFormat','DeleteClientVariable','ListGetAt','ToBase64','DirectoryExists',\n            'ListInsertAt','ToBinary','DollarFormat','ListLast','ToScript','Duplicate','ListLen','ToString','Encrypt','ListPrepend',\n            'Trim','EncryptBinary','ListQualify','UCase','Evaluate','ListRest','URLDecode','Exp','ListSetAt','URLEncodedFormat',\n            'ExpandPath','ListSort','URLSessionFormat','FileExists','ListToArray','Val','Find','ListValueCount','ValueList',\n            'FindNoCase','ListValueCountNoCase','Week','FindOneOf','LJustify','Wrap','FirstDayOfMonth','Log','WriteOutput',\n            'Fix','Log10','XmlChildPos','FormatBaseN','LSCurrencyFormat','XmlElemNew','GetAuthUser','LSDateFormat','XmlFormat',\n            'GetBaseTagData','LSEuroCurrencyFormat','XmlGetNodeType','GetBaseTagList','LSIsCurrency','XmlNew','GetBaseTemplatePath',\n            'LSIsDate','XmlParse','GetClientVariablesList','LSIsNumeric','XmlSearch','GetCurrentTemplatePath','LSNumberFormat',\n            'XmlTransform','GetDirectoryFromPath','LSParseCurrency','XmlValidate','GetEncoding','LSParseDateTime','Year',\n            'GetException','LSParseEuroCurrency','YesNoFormat','GetFileFromPath','LSParseNumber'\n            ),\n        /* CFM Attributes */\n        6 => array(\n            'dbtype','connectstring','datasource','username','password','query','delimeter','description','required','hint','default','access','from','to','list','index'\n            ),\n        7 => array(\n            'EQ', 'GT', 'LT', 'GTE', 'LTE', 'IS', 'LIKE', 'NEQ'\n            )\n        ),\n    'SYMBOLS' => array(\n        '/', '=', '{', '}', '(', ')', '[', ']', '<', '>', '&'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #990000; font-weight: bold;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #0000FF;',\n            4 => 'color: #000000; font-weight: bold;',\n            5 => 'color: #0000FF;',\n            6 => 'color: #0000FF;',\n            7 => 'color: #0000FF;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #0000FF;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #009900;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #FF0000;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #0000FF;'\n            ),\n        'SCRIPT' => array(\n            0 => 'color: #808080; font-style: italic;',\n            1 => 'color: #00bbdd;',\n            2 => 'color: #0000FF;',\n            3 => 'color: #000099;',\n            4 => 'color: #333333;',\n            5 => 'color: #333333;'\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => 'http://december.com/html/4/element/{FNAMEL}.html',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,\n    'SCRIPT_DELIMITERS' => array(\n        0 => array(\n            '<!--' => '-->'\n            ),\n        1 => array(\n            '<!DOCTYPE' => '>'\n            ),\n        2 => \"/(?!<#)(?:(?:##)*)(#)[a-zA-Z0-9_\\.\\(\\)]+(#)/\",\n        3 => array(\n            '<cfscript>' => '</cfscript>'\n            ),\n        4 => array(\n            '<' => '>'\n            ),\n        5 => '/((?!<!)<)(?:\"[^\"]*\"|\\'[^\\']*\\'|(?R)|[^\">])+?(>)/si'\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => false,\n        1 => false,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true\n        ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            1 => array(\n                'DISALLOWED_BEFORE' => '(?<=&lt;|&lt;\\/)',\n                'DISALLOWED_AFTER' => '(?=\\s|\\/|&gt;)',\n                ),\n            2 => array(\n                'DISALLOWED_BEFORE' => '(?<=&lt;|&lt;\\/)',\n                'DISALLOWED_AFTER' => '(?=\\s|\\/|&gt;)',\n                ),\n            3 => array(\n                'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9\\$_\\|\\#>|^])', // allow ; before keywords\n                'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\\|%\\\\-])', // allow & after keywords\n                ),\n            7 => array(\n                'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9\\$_\\|\\#>&|^])', // allow ; before keywords\n                'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\\|%\\\\-])', // allow & after keywords\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/chaiscript.php",
    "content": "<?php\n/*************************************************************************************\n * chaiscript.php\n * --------------\n * Author: Jason Turner & Jonathan Turner\n * Copyright: (c) 2010 Jason Turner (lefticus@gmail.com),\n *            (c) 2009 Jonathan Turner,\n *            (c) 2004 Ben Keen (ben.keen@gmail.com), Benny Baumann (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2009/07/03\n *\n * ChaiScript language file for GeSHi.\n *\n * Based on JavaScript by Ben Keen (ben.keen@gmail.com)\n *\n * CHANGES\n * -------\n * 2010/03/30 (1.0.8.8)\n *  -  Updated to include more language features\n *  -  Removed left over pieces from JavaScript\n * 2009/07/03 (1.0.0)\n *  -  First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'ChaiScript',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    //Regular Expressions\n    'COMMENT_REGEXP' => array(2 => \"/(?<=[\\\\s^])s\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+\\\\/[gimsu]*(?=[\\\\s$\\\\.\\\\;])|(?<=[\\\\s^(=])m?\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+\\\\/[gimsu]*(?=[\\\\s$\\\\.\\\\,\\\\;\\\\)])/iU\"),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'break', 'else', 'elseif', 'eval', 'for', 'if', 'return', 'while', 'try', 'catch', 'finally',\n            ),\n        2 => array(\n            'def', 'false', 'fun', 'true', 'var', 'attr',\n            ),\n        3 => array(\n            // built in functions\n            'throw',\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}',\n        '+', '-', '*', '/', '%',\n        '!', '@', '&', '|', '^',\n        '<', '>', '=',\n        ',', ';', '?', ':'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000066; font-weight: bold;',\n            2 => 'color: #003366; font-weight: bold;',\n            3 => 'color: #000066;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #006600; font-style: italic;',\n            2 => 'color: #009966; font-style: italic;',\n            'MULTI' => 'color: #006600; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #3366CC;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #CC0000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #660066;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            3 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        0 => array(\n            ),\n        1 => array(\n            )\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        1 => true\n        )\n);\n"
  },
  {
    "path": "includes/geshi/chapel.php",
    "content": "<?php\n/*************************************************************************************\n * chapel.php\n * -----\n * Author: Richard Molitor (richard.molitor@student.kit.edu)\n * Copyright: (c) 2013 Richard Molitor\n * Release Version: 1.0.9.1\n * Date Started: 2013/06/22\n *\n * Chapel language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2013/06/22 (1.0.8.13)\n *   -  First Release\n *\n * TODO (updated 2013/06/22)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Chapel',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI | GESHI_NUMBER_FLT_NONSCI_F |\n        GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        // statements\n        1 => array(\n            'atomic', 'begin', 'break', 'class', 'cobegin', 'coforall',\n            'continue', 'do', 'else', 'export', 'extern', 'for', 'forall', 'if',\n            'iter', 'inline', 'label', 'let', 'local', 'module',\n            'otherwise', 'proc', 'record', 'return', 'select', 'serial',\n            'then', 'use', 'var', 'when', 'where', 'while', 'yield'\n            ),\n        // literals\n        2 => array(\n            'nil', 'true', 'false'\n            ),\n        // built-in functions\n        3 => array(\n            'by', 'delete', 'dmapped', 'domain', 'enum', 'index', 'min',\n            'minloc', 'max', 'maxloc', 'new', 'range', 'reduce', 'scan',\n            'sparse', 'subdomain', 'sync', 'union', 'zip'\n            ),\n        // built-in types\n        4 => array(\n            'config', 'const', 'in', 'inout', 'opaque', 'on', 'out', 'param',\n            'ref', 'single', 'type'\n            ),\n        // library types\n        5 => array(\n            'void', 'bool', 'int', 'uint', 'real', 'imag', 'complex', 'string',\n            'locale'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']',\n        '+', '-', '*', '/', '%',\n        '=', '<', '>',\n        '!', '^', '&', '|',\n        '?', ':',\n        ';', ','\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;',\n            4 => 'color: #993333;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            //2 => 'color: #339933;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #660099; font-weight: bold;',\n            3 => 'color: #660099; font-weight: bold;',\n            4 => 'color: #660099; font-weight: bold;',\n            5 => 'color: #006699; font-weight: bold;',\n            'HARD' => '',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000dd;',\n            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;',\n            2 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/cil.php",
    "content": "<?php\n/*************************************************************************************\n * cil.php\n * --------\n * Author: Marcus Griep (neoeinstein+GeSHi@gmail.com)\n * Copyright: (c) 2007 Marcus Griep (http://www.xpdm.us)\n * Release Version: 1.0.9.1\n * Date Started: 2007/10/24\n *\n * CIL (Common Intermediate Language) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2004/10/24 (1.0.8)\n *  -  First Release\n *\n * TODO (updated 2007/10/24)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'CIL',\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'COMMENT_SINGLE' => array('//'),\n    'COMMENT_MULTI' => array(),\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(//Dotted\n            '.zeroinit', '.vtfixup', '.vtentry', '.vtable', '.ver', '.try', '.subsystem', '.size', '.set', '.removeon',\n            '.publickeytoken', '.publickey', '.property', '.permissionset', '.permission', '.pdirect', '.param', '.pack',\n            '.override', '.other', '.namespace', '.mresource', '.module', '.method', '.maxstack', '.manifestres', '.locals',\n            '.localized', '.locale', '.line', '.language', '.import', '.imagebase', '.hash', '.get', '.fire', '.file', '.field',\n            '.export', '.event', '.entrypoint', '.emitbyte', '.data', '.custom', '.culture', '.ctor', '.corflags', '.class',\n            '.cctor', '.assembly', '.addon'\n            ),\n        2 => array(//Attributes\n            'wrapper', 'with', 'winapi', 'virtual', 'vector', 'vararg', 'value', 'userdefined', 'unused', 'unmanagedexp',\n            'unmanaged', 'unicode', 'to', 'tls', 'thiscall', 'synchronized', 'struct', 'strict', 'storage', 'stdcall',\n            'static', 'specialname', 'special', 'serializable', 'sequential', 'sealed', 'runtime', 'rtspecialname', 'request',\n            'reqsecobj', 'reqrefuse', 'reqopt', 'reqmin', 'record', 'public', 'privatescope', 'private', 'preservesig',\n            'prejitgrant', 'prejitdeny', 'platformapi', 'pinvokeimpl', 'pinned', 'permitonly', 'out', 'optil', 'opt',\n            'notserialized', 'notremotable', 'not_in_gc_heap', 'noprocess', 'noncaslinkdemand', 'noncasinheritance',\n            'noncasdemand', 'nometadata', 'nomangle', 'nomachine', 'noinlining', 'noappdomain', 'newslot', 'nested', 'native',\n            'modreq', 'modopt', 'marshal', 'managed', 'literal', 'linkcheck', 'lcid', 'lasterr', 'internalcall', 'interface',\n            'instance', 'initonly', 'init', 'inheritcheck', 'in', 'import', 'implicitres', 'implicitcom', 'implements',\n            'illegal', 'il', 'hidebysig', 'handler', 'fromunmanaged', 'forwardref', 'fixed', 'finally', 'final', 'filter',\n            'filetime', 'field', 'fault', 'fastcall', 'famorassem', 'family', 'famandassem', 'extern', 'extends', 'explicit',\n            'error', 'enum', 'endmac', 'deny', 'demand', 'default', 'custom', 'compilercontrolled', 'clsid', 'class', 'cil',\n            'cf', 'cdecl', 'catch', 'beforefieldinit', 'autochar', 'auto', 'at', 'assert', 'assembly', 'as', 'any', 'ansi',\n            'alignment', 'algorithm', 'abstract'\n            ),\n        3 => array(//Types\n            'wchar', 'void', 'variant', 'unsigned', 'valuetype', 'typedref', 'tbstr', 'sysstring', 'syschar', 'string',\n            'streamed_object', 'stream', 'stored_object', 'safearray', 'objectref', 'object', 'nullref', 'method', 'lpwstr',\n            'lpvoid', 'lptstr', 'lpstruct', 'lpstr', 'iunknown', 'int64', 'int32', 'int16', 'int8', 'int', 'idispatch',\n            'hresult', 'float64', 'float32', 'float', 'decimal', 'date', 'currency', 'char', 'carray', 'byvalstr',\n            'bytearray', 'boxed', 'bool', 'blob_object', 'blob', 'array'\n            ),\n        4 => array(//Prefix\n            'volatile', 'unaligned', 'tail', 'readonly', 'no', 'constrained'\n            ),\n        5 => array(//Suffix\n            'un', 'u8', 'u4', 'u2', 'u1', 'u', 's', 'ref', 'r8', 'r4', 'm1', 'i8', 'i4', 'i2', 'i1', 'i'#, '.8', '.7', '.6', '.5', '.4', '.3', '.2', '.1', '.0'\n            ),\n        6 => array(//Base\n            'xor', 'switch', 'sub', 'stloc',\n            'stind', 'starg',\n            'shr', 'shl', 'ret', 'rem', 'pop', 'or', 'not', 'nop', 'neg', 'mul',\n            'localloc', 'leave', 'ldnull', 'ldloca',\n            'ldloc', 'ldind', 'ldftn', 'ldc', 'ldarga',\n            'ldarg', 'jmp', 'initblk', 'endfinally', 'endfilter',\n            'endfault', 'dup', 'div', 'cpblk', 'conv', 'clt', 'ckfinite', 'cgt', 'ceq', 'calli',\n            'call', 'brzero', 'brtrue', 'brnull', 'brinst',\n            'brfalse', 'break', 'br', 'bne', 'blt', 'ble', 'bgt', 'bge', 'beq', 'arglist',\n            'and', 'add'\n            ),\n        7 => array(//Object\n            'unbox.any', 'unbox', 'throw', 'stsfld', 'stobj', 'stfld', 'stelem', 'sizeof', 'rethrow', 'refanyval', 'refanytype', 'newobj',\n            'newarr', 'mkrefany', 'ldvirtftn', 'ldtoken', 'ldstr', 'ldsflda', 'ldsfld', 'ldobj', 'ldlen', 'ldflda', 'ldfld',\n            'ldelema', 'ldelem', 'isinst', 'initobj', 'cpobj', 'castclass',\n            'callvirt', 'callmostderived', 'box'\n            ),\n        8 => array(//Other\n            'prefixref', 'prefix7', 'prefix6', 'prefix5', 'prefix4', 'prefix3', 'prefix2', 'prefix1', 'prefix0'\n            ),\n        9 => array(//Literal\n            'true', 'null', 'false'\n            ),\n        10 => array(//Comment-like\n            '#line', '^THE_END^'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '!', '!!'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true,\n        9 => true,\n        10 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color:maroon;font-weight:bold;',\n            2 => 'color:blue;font-weight:bold;',\n            3 => 'color:purple;font-weight:bold;',\n            4 => 'color:teal;',\n            5 => 'color:blue;',\n            6 => 'color:blue;',\n            7 => 'color:blue;',\n            8 => 'color:blue;',\n            9 => 'color:00008B',\n            10 => 'color:gray'\n            ),\n        'COMMENTS' => array(\n            0 => 'color:gray;font-style:italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #008000; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #006400;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #008000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #00008B;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #000033;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #006400;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color:blue;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => '',\n        9 => '',\n        10 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '::'\n        ),\n    'REGEXPS' => array(\n        0 => '(?<=ldc\\\\.i4\\\\.)[0-8]|(?<=(?:ldarg|ldloc|stloc)\\\\.)[0-3]' # Pickup the opcodes that end with integers\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/clojure.php",
    "content": "<?php\n/*************************************************************************************\n * clojure.php\n * --------\n * Author: Jess Johnson (jess@grok-code.com)\n * Copyright: (c) 2009 Jess Johnson (http://grok-code.com)\n * Release Version: 1.0.9.1\n * Date Started: 2009/09/20\n *\n * Clojure language file for GeSHi.\n *\n * This file borrows significantly from the lisp language file for GeSHi\n *\n * CHANGES\n * -------\n * 2009/09/20 (1.0.8.6)\n *  -  First Release\n *\n * TODO (updated 2009/09/20)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Clojure',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array(';|' => '|;'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'defn', 'defn-', 'defmulti', 'defmethod', 'defmacro', 'deftest',\n            'defstruct', 'def', 'defonce', 'let', 'letfn', 'do', 'cond', 'condp',\n            'for', 'loop', 'recur', 'when', 'when-not', 'when-let', 'when-first',\n            'if', 'if-let', 'if-not', 'doto', 'and', 'or','not','aget','aset',\n            'dosync', 'doseq', 'dotimes', 'dorun', 'doall',\n            'load', 'import', 'unimport', 'ns', 'in-ns', 'refer', 'print',\n            'try', 'catch', 'finally', 'throw', 'fn', 'update-in',\n            'with-open', 'with-local-vars', 'binding',\n            'gen-class', 'gen-and-load-class', 'gen-and-save-class',\n            'implement', 'proxy', 'lazy-cons', 'with-meta',\n            'struct', 'struct-map', 'delay', 'locking', 'sync', 'time', 'apply',\n            'remove', 'merge', 'interleave', 'interpose', 'distinct',\n            'cons', 'concat', 'lazy-cat', 'cycle', 'rest', 'frest', 'drop',\n            'drop-while', 'nthrest', 'take', 'take-while', 'take-nth', 'butlast',\n            'reverse', 'sort', 'sort-by', 'split-at', 'partition', 'split-with',\n            'first', 'ffirst', 'rfirst', 'zipmap', 'into', 'set', 'vec',\n            'to-array-2d', 'not-empty', 'seq?', 'not-every?', 'every?', 'not-any?',\n            'map', 'mapcat', 'vector?', 'list?', 'hash-map', 'reduce', 'filter',\n            'vals', 'keys', 'rseq', 'subseq', 'rsubseq', 'count', 'empty?',\n            'fnseq', 'repeatedly', 'iterate', 'drop-last',\n            'repeat', 'replicate', 'range',  'into-array',\n            'line-seq', 'resultset-seq', 're-seq', 're-find', 'tree-seq', 'file-seq',\n            'iterator-seq', 'enumeration-seq', 'declare',  'xml-seq',\n            'symbol?', 'string?', 'vector', 'conj', 'str',\n            'pos?', 'neg?', 'zero?', 'nil?', 'inc', 'dec', 'format',\n            'alter', 'commute', 'ref-set', 'floor', 'assoc', 'send', 'send-off'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>',';','|', '.', '..', '->',\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => true,\n        1 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #555;',\n            1 => 'color: #555;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n            '::', ':'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/cmake.php",
    "content": "<?php\n/*************************************************************************************\n * cmake.php\n * -------\n * Author: Daniel Nelson (danieln@eng.utah.edu)\n * Copyright: (c) 2009 Daniel Nelson\n * Release Version: 1.0.9.1\n * Date Started: 2009/04/06\n *\n * CMake language file for GeSHi.\n *\n * Keyword list generated using CMake 2.6.3.\n *\n * CHANGES\n * -------\n * <date-of-release> (<GeSHi release>)\n *  -  First Release\n *\n * TODO (updated <date-of-release>)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'CMake',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'ESCAPE_REGEXP' => array(\n        // Quoted variables ${...}\n        1 => \"/\\\\$(ENV)?\\\\{[^\\\\n\\\\}]*?\\\\}/i\",\n        // Quoted registry keys [...]\n        2 => \"/\\\\[HKEY[^\\n\\\\]]*?]/i\"\n        ),\n    'KEYWORDS' => array(\n        1 => array(\n            'add_custom_command', 'add_custom_target', 'add_definitions',\n            'add_dependencies', 'add_executable', 'add_library',\n            'add_subdirectory', 'add_test', 'aux_source_directory', 'break',\n            'build_command', 'cmake_minimum_required', 'cmake_policy',\n            'configure_file', 'create_test_sourcelist', 'define_property',\n            'else', 'elseif', 'enable_language', 'enable_testing',\n            'endforeach', 'endfunction', 'endif', 'endmacro',\n            'endwhile', 'execute_process', 'export', 'file', 'find_file',\n            'find_library', 'find_package', 'find_path', 'find_program',\n            'fltk_wrap_ui', 'foreach', 'function', 'get_cmake_property',\n            'get_directory_property', 'get_filename_component', 'get_property',\n            'get_source_file_property', 'get_target_property',\n            'get_test_property', 'if', 'include', 'include_directories',\n            'include_external_msproject', 'include_regular_expression',\n            'install', 'link_directories', 'list', 'load_cache',\n            'load_command', 'macro', 'mark_as_advanced', 'math', 'message',\n            'option', 'output_required_files', 'project', 'qt_wrap_cpp',\n            'qt_wrap_ui', 'remove_definitions', 'return', 'separate_arguments',\n            'set', 'set_directory_properties', 'set_property',\n            'set_source_files_properties', 'set_target_properties',\n            'set_tests_properties', 'site_name', 'source_group', 'string',\n            'target_link_libraries', 'try_compile', 'try_run', 'unset',\n            'variable_watch', 'while'\n            ),\n        2 => array(\n            // Deprecated commands\n            'build_name', 'exec_program', 'export_library_dependencies',\n            'install_files', 'install_programs', 'install_targets',\n            'link_libraries', 'make_directory', 'remove', 'subdir_depends',\n            'subdirs', 'use_mangled_mesa', 'utility_source',\n            'variable_requires', 'write_file'\n            ),\n        3 => array(\n            // Special command arguments, this list is not comprehesive.\n            'AND', 'APPEND', 'ASCII', 'BOOL', 'CACHE', 'COMMAND', 'COMMENT',\n            'COMPARE', 'CONFIGURE', 'DEFINED', 'DEPENDS', 'DIRECTORY',\n            'EQUAL', 'EXCLUDE_FROM_ALL', 'EXISTS', 'FALSE', 'FATAL_ERROR',\n            'FILEPATH', 'FIND', 'FORCE', 'GET', 'GLOBAL', 'GREATER',\n            'IMPLICIT_DEPENDS', 'INSERT', 'INTERNAL', 'IS_ABSOLUTE',\n            'IS_DIRECTORY', 'IS_NEWER_THAN', 'LENGTH', 'LESS',\n            'MAIN_DEPENDENCY', 'MATCH', 'MATCHALL', 'MATCHES', 'MODULE', 'NOT',\n            'NOTFOUND', 'OFF', 'ON', 'OR', 'OUTPUT', 'PARENT_SCOPE', 'PATH',\n            'POLICY', 'POST_BUILD', 'PRE_BUILD', 'PRE_LINK', 'PROPERTY',\n            'RANDOM', 'REGEX', 'REMOVE_AT', 'REMOVE_DUPLICATES', 'REMOVE_ITEM',\n            'REPLACE', 'REVERSE', 'SEND_ERROR', 'SHARED', 'SORT', 'SOURCE',\n            'STATIC', 'STATUS', 'STREQUAL', 'STRGREATER', 'STRING', 'STRIP',\n            'STRLESS', 'SUBSTRING', 'TARGET', 'TEST', 'TOLOWER', 'TOUPPER',\n            'TRUE', 'VERBATIM', 'VERSION', 'VERSION_EQUAL', 'VERSION_GREATOR',\n            'VERSION_LESS', 'WORKING_DIRECTORY',\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => true\n        ),\n    'SYMBOLS' => array(\n        0 => array('(', ')')\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #1f3f81; font-style: bold;',\n            2 => 'color: #1f3f81;',\n            3 => 'color: #077807; font-sytle: italic;'\n            ),\n        'BRACKETS' => array(),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #b08000;',\n            2 => 'color: #0000cd;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #912f11;',\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #197d8b;'\n            ),\n        'NUMBERS' => array(),\n        'METHODS' => array(),\n        'REGEXPS' => array(\n            0 => 'color: #b08000;',\n            1 => 'color: #0000cd;'\n            ),\n        'SCRIPT' => array()\n        ),\n    'URLS' => array(\n        1 => 'http://www.cmake.org/cmake/help/cmake2.6docs.html#command:{FNAMEL}',\n        2 => 'http://www.cmake.org/cmake/help/cmake2.6docs.html#command:{FNAMEL}',\n        3 => '',\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        // Unquoted variables\n        0 => \"\\\\$(ENV)?\\\\{[^\\\\n}]*?\\\\}\",\n        // Unquoted registry keys\n        1 => \"\\\\[HKEY[^\\n\\\\]]*?]\"\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            // These keywords cannot come after a open paren\n            1 => array(\n                'DISALLOWED_AFTER' =>  '(?= *\\()'\n                ),\n            2 => array(\n                'DISALLOWED_AFTER' =>  '(?= *\\()'\n                )\n            ),\n        'ENABLE_FLAGS' => array(\n            'BRACKETS' => GESHI_NEVER,\n            'METHODS' => GESHI_NEVER,\n            'NUMBERS' => GESHI_NEVER\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/cobol.php",
    "content": "<?php\n/*************************************************************************************\n * cobol.php\n * ----------\n * Author: BenBE (BenBE@omorphia.org)\n * Copyright: (c) 2007-2008 BenBE (http://www.omorphia.de/)\n * Release Version: 1.0.9.1\n * Date Started: 2007/07/02\n *\n * COBOL language file for GeSHi.\n *\n * Most of the compiler directives, reserved words and intrinsic functions are\n * from the 2009 COBOL Draft Standard, Micro Focus, and GNU Cobol. The lists of\n * these were found in the draft standard (Sections 8.9, 8.10, 8.11 and 8.12),\n * Micro Focus' COBOL Language Reference and the GNU Cobol FAQ.\n *\n * CHANGES\n * -------\n * 2013/11/17 (1.0.8.13)\n *  -  Changed compiler directives to be handled like comments.\n *  -  Fixed bug where keywords in identifiers were highlighted.\n * 2013/08/19 (1.0.8.13)\n *  -  Added more intrinsic functions, reserved words, and compiler directives\n *     from the (upcoming) standard.\n * 2013/07/07 (1.0.8.13)\n *  -  Added more reserved words, compiler directives and intrinsic functions.\n *  -  Added modern comment syntax and corrected the other one.\n *  -  Set OOLANG to true and added an object splitter.\n *  -  Added extra symbols.\n *  -  Fixed bug where scope terminators were only the statement in\n *     end-statement was highlighted.\n *\n * TODO (updated 2013/11/17)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'COBOL',\n    'COMMENT_SINGLE' => array(\n        1 => '*>', // COBOL 2002 inline comment\n        2 => '>>'  // COBOL compiler directive indicator\n        ),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        1 => '/^......(\\*.*?$)/m', // Fixed-form comment\n        2 => '/\\$SET.*/i'          // MF compiler directive indicator\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', \"'\"),\n    'ESCAPE_CHAR' => '',\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC |\n        GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_SCI_SHORT |\n        GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        // Statements containing spaces. These are separate to other statements\n        // so that they are highlighted correctly.\n        1 => array(\n            'DELETE FILE', 'GO TO', 'NEXT SENTENCE', 'XML GENERATE',\n            'XML PARSE'\n            ),\n\n        2 => array( // Other Reserved Words\n            '3-D', 'ABSENT', 'ABSTRACT', 'ACCESS', 'ACQUIRE',\n            'ACTION', 'ACTIVE-CLASS', 'ACTIVE-X', 'ACTUAL', 'ADDRESS',\n            'ADDRESS-ARRAY', 'ADDRESS-OFFSET', 'ADJUSTABLE-COLUMNS',\n            'ADVANCING', 'AFP-5A', 'AFTER', 'ALIGNED', 'ALIGNMENT', 'ALL',\n            'ALLOW', 'ALLOWING', 'ALPHABET', 'ALPHABETIC',\n            'ALPHABETIC-LOWER', 'ALPHABETIC-UPPER', 'ALPHANUMERIC',\n            'ALPHANUMERIC-EDITED', 'ALSO', 'ALTERNATE', 'AND', 'ANY',\n            'ANYCASE',\n            'APPLY', 'ARE', 'AREA', 'AREAS', 'ARGUMENT-NUMBER',\n            'ARGUMENT-VALUE',\n            'ARITHMETIC', 'AS', 'ASCENDING',\n            'ASSEMBLY-ATTRIBUTES', 'ASSIGN', 'AT', 'ATTRIBUTE', 'AUTHOR',\n            'AUTO', 'AUTO-DECIMAL', 'AUTO-HYPHEN-SKIP', 'AUTO-MINIMIZE',\n            'AUTO-RESIZE', 'AUTO-SKIP', 'AUTO-SPIN', 'AUTOMATIC',\n            'AUTOTERMINATE', 'AWAY-FROM-ZERO',\n            'AX-EVENT-LIST', 'B-AND', 'B-EXOR', 'B-LEFT',\n            'B-NOT', 'B-OR', 'B-RIGHT', 'B-XOR', 'BACKGROUND-COLOR',\n            'BACKGROUND-COLOUR', 'BACKGROUND-HIGH', 'BACKGROUND-LOW',\n            'BACKGROUND-STANDARD', 'BACKWARD', 'BAR', 'BASED', 'BASIS', 'BEEP',\n            'BEFORE', 'BEGINNING', 'BELL', 'BINARY', 'BINARY-CHAR',\n            'BINARY-DOUBLE', 'BINARY-LONG', 'BINARY-SHORT', 'BIND', 'BIT',\n            'BITMAP', 'BITMAP-END', 'BITMAP-HANDLE', 'BITMAP-NUMBER',\n            'BITMAP-RAW-HEIGHT', 'BITMAP-RAW-WIDTH', 'BITMAP-SCALE',\n            'BITMAP-START', 'BITMAP-TIMER', 'BITMAP-TRAILING', 'BITMAP-WIDTH',\n            'BLANK', 'BLINK', 'BLINKING', 'BLOB', 'BLOB-FILE', 'BLOB-LOCATOR',\n            'BLOCK', 'BOLD', 'BOOLEAN', 'BOTTOM', 'BOX', 'BOXED', 'BROWSING',\n            'BUSY', 'BUTTONS', 'BY', 'C01', 'C02', 'C03', 'C04',\n            'C05',\n            'C06', 'C07', 'C08', 'C09', 'C10', 'C11', 'C12', 'CALENDAR-FONT',\n            'CALLED', 'CANCEL-BUTTON', 'CAPACITY', 'CATCH', 'CBL',\n            'CBL-CTR', 'CCOL', 'CD', 'CELL', 'CELL-COLOR', 'CELL-DATA',\n            'CELL-FONT', 'CELL-PROTECTION', 'CELLS', 'CENTER', 'CENTERED',\n            'CENTERED-HEADINGS', 'CENTURY-DATE', 'CENTURY-DAY', 'CF', 'CH',\n            'CHAINING', 'CHANGED', 'CHAR-VARYING',\n            'CHARACTER',\n            'CHARACTERS', 'CHART', 'CHECK-BOX', 'CHECKING', 'CLASS',\n            'CLASS-ATTRIBUTES', 'CLASS-CONTROL', 'CLASS-ID', 'CLASS-OBJECT',\n            'CLASSIFICATION',\n            'CLEAR-SELECTION', 'CLINE', 'CLINES', 'CLOB', 'CLOB-FILE',\n            'CLOB-LOCATOR', 'CLOCK-UNITS', 'COBOL', 'CODE', 'CODE-SET',\n            'COERCION', 'COL', 'COLLATING', 'COLORS', 'COLOUR',\n            'COLOURS', 'COLS', 'COLUMN', 'COLUMN-COLOR', 'COLUMN-DIVIDERS',\n            'COLUMN-FONT', 'COLUMN-HEADINGS', 'COLUMN-PROTECTION', 'COLUMNS',\n            'COM-REG', 'COMBO-BOX', 'COMMA', 'COMMITMENT', 'COMMON',\n            'COMMUNICATION', 'COMP', 'COMP-0', 'COMP-1', 'COMP-2', 'COMP-3',\n            'COMP-4', 'COMP-5', 'COMP-6', 'COMP-X', 'COMPRESSION',\n            'COMPUTATIONAL', 'COMPUTATIONAL-0', 'COMPUTATIONAL-1',\n            'COMPUTATIONAL-2', 'COMPUTATIONAL-3', 'COMPUTATIONAL-4',\n            'COMPUTATIONAL-5', 'COMPUTATIONAL-6', 'COMPUTATIONAL-X',\n            'CONDITION-VALUE', 'CONFIGURATION', 'CONSOLE', 'CONSTANT',\n            'CONSTRAIN', 'CONSTRAINTS', 'CONTAINS', 'CONTENT',\n            'CONTROL', 'CONTROL-AREA', 'CONTROLS', 'CONTROLS-UNCROPPED',\n            'CONVERSION', 'CONVERT', 'CONVERTING', 'COPY-SELECTION',\n            'CORE-INDEX', 'CORR', 'CORRESPONDING', 'COUNT',\n            'CREATING', 'CRT', 'CRT-UNDER', 'CSIZE', 'CSP', 'CURRENCY',\n            'CURSOR', 'CURSOR-COL', 'CURSOR-COLOR',\n            'CURSOR-FRAME-WIDTH', 'CURSOR-ROW', 'CURSOR-X', 'CURSOR-Y',\n            'CUSTOM-ATTRIBUTE', 'CUSTOM-PRINT-TEMPLATE', 'CYCLE', 'CYL-INDEX',\n            'CYL-OVERFLOW', 'DASHED', 'DATA', 'DATA-COLUMNS',\n            'DATA-POINTER', 'DATA-TYPES', 'DATABASE-KEY', 'DATABASE-KEY-LONG',\n            'DATE', 'DATE-COMPILED', 'DATE-ENTRY', 'DATE-RECORD',\n            'DATE-WRITTEN', 'DAY', 'DAY-OF-WEEK', 'DBCLOB', 'DBCLOB-FILE',\n            'DBCLOB-LOCATOR', 'DBCS', 'DE', 'DEBUG', 'DEBUG-CONTENTS',\n            'DEBUG-ITEM', 'DEBUG-LINE', 'DEBUG-NAME', 'DEBUG-SUB-1',\n            'DEBUG-SUB-2', 'DEBUG-SUB-3', 'DEBUGGING', 'DECIMAL',\n            'DECIMAL-POINT', 'DECLARATIVES', 'DEFAULT',\n            'DEFAULT-BUTTON', 'DEFAULT-FONT', 'DEFINITION',\n            'DELEGATE-ID', 'DELIMITED', 'DELIMITER', 'DEPENDING',\n            'DESCENDING', 'DESTINATION', 'DESTROY', 'DETAIL', 'DICTIONARY',\n            'DISABLE', 'DISC', 'DISJOINING', 'DISK', 'DISP',\n            'DISPLAY-1', 'DISPLAY-COLUMNS', 'DISPLAY-FORMAT', 'DISPLAY-ST',\n            'DIVIDER-COLOR', 'DIVIDERS', 'DIVISION', 'DOT-DASH',\n            'DOTTED', 'DOWN', 'DRAG-COLOR', 'DRAW', 'DROP', 'DROP-DOWN',\n            'DROP-LIST', 'DUPLICATES', 'DYNAMIC', 'EBCDIC', 'EC', 'ECHO', 'EGCS',\n            'EGI', 'EJECT', 'ELEMENTARY', 'ELSE', 'EMI', 'EMPTY-CHECK',\n            'ENABLE', 'ENABLED', 'END', 'END-ACCEPT', 'END-ADD', 'END-CALL',\n            'END-CHAIN', 'END-COLOR', 'END-COMPUTE', 'END-DELEGATE',\n            'END-DELETE', 'END-DISPLAY', 'END-DIVIDE', 'END-EVALUATE',\n            'END-IF', 'END-INVOKE', 'END-MODIFY', 'END-MOVE', 'END-MULTIPLY',\n            'END-OF-PAGE', 'END-PERFORM', 'END-READ', 'END-RECEIVE',\n            'END-RETURN', 'END-REWRITE', 'END-SEARCH', 'END-START',\n            'END-STRING', 'END-SUBTRACT', 'END-SYNC', 'END-TRY',\n            'END-UNSTRING', 'END-WAIT', 'END-WRITE', 'END-XML', 'ENDING',\n            'ENGRAVED', 'ENSURE-VISIBLE', 'ENTRY-CONVENTION',\n            'ENTRY-FIELD',\n            'ENTRY-REASON', 'ENUM', 'ENUM-ID', 'ENVIRONMENT',\n            'ENVIRONMENT-NAME', 'ENVIRONMENT-VALUE', 'EOL', 'EOP',\n            'EOS', 'EQUAL', 'EQUALS', 'ERASE', 'ERROR', 'ESCAPE',\n            'ESCAPE-BUTTON', 'ESI', 'EVENT', 'EVENT-LIST',\n            'EVENT-POINTER', 'EVERY', 'EXCEEDS', 'EXCEPTION',\n            'EXCEPTION-OBJECT', 'EXCEPTION-VALUE', 'EXCESS-3',\n            'EXCLUDE-EVENT-LIST', 'EXCLUSIVE',\n            'EXPAND', 'EXPANDS', 'EXTEND', 'EXTENDED',\n            'EXTENDED-SEARCH', 'EXTENSION', 'EXTERNAL', 'EXTERNAL-FORM',\n            'EXTERNALLY-DESCRIBED-KEY', 'FACTORY', 'FALSE', 'FD',\n            'FH--FCD', 'FH--KEYDEF', 'FILE', 'FILE-CONTROL', 'FILE-ID',\n            'FILE-LIMIT', 'FILE-LIMITS', 'FILE-NAME', 'FILE-POS', 'FILL-COLOR',\n            'FILL-COLOR2', 'FILL-PERCENT', 'FILLER', 'FINAL', 'FINALLY',\n            'FINISH-REASON', 'FIRST', 'FIXED', 'FIXED-FONT', 'FIXED-WIDTH',\n            'FLAT', 'FLAT-BUTTONS', 'FLOAT-BINARY-7', 'FLOAT-BINARY-16',\n            'FLOAT-BINARY-34', 'FLOAT-DECIMAL-16', 'FLOAT-DECIMAL-34',\n            'FLOAT-EXTENDED', 'FLOAT-LONG',\n            'FLOAT-SHORT', 'FLOATING', 'FONT', 'FOOTING', 'FOR',\n            'FOREGROUND-COLOR', 'FOREGROUND-COLOUR', 'FOREVER', 'FORMAT',\n            'FRAME', 'FRAMED', 'FROM', 'FULL', 'FULL-HEIGHT',\n            'FUNCTION', 'FUNCTION-ID', 'FUNCTION-POINTER', 'GENERATE',\n            'GET', 'GETTER', 'GIVING', 'GLOBAL', 'GO-BACK', 'GO-FORWARD',\n            'GO-HOME', 'GO-SEARCH', 'GRAPHICAL', 'GREATER', 'GRID',\n            'GRIP', 'GROUP', 'GROUP-USAGE', 'GROUP-VALUE', 'HANDLE',\n            'HAS-CHILDREN', 'HEADING', 'HEADING-COLOR', 'HEADING-DIVIDER-COLOR',\n            'HEADING-FONT', 'HEAVY', 'HEIGHT', 'HEIGHT-IN-CELLS', 'HELP-ID',\n            'HIDDEN-DATA', 'HIGH', 'HIGH-COLOR', 'HIGH-VALUE', 'HIGH-VALUES',\n            'HIGHLIGHT', 'HORIZONTAL', 'HOT-TRACK', 'HSCROLL', 'HSCROLL-POS',\n            'I-O', 'I-O-CONTROL', 'ICON', 'ID', 'IDENTIFICATION',\n            'IDENTIFIED', 'IFINITY', 'IGNORE', 'IGNORING', 'IMPLEMENTS', 'IN',\n            'INDEPENDENT', 'INDEX', 'INDEXED', 'INDEXER', 'INDEXER-ID', 'INDIC',\n            'INDICATE', 'INDICATOR', 'INDICATORS', 'INDIRECT',\n            'INHERITING', 'INHERITS',\n            'INITIAL', 'INITIALIZED', 'INPUT',\n            'INPUT-OUTPUT', 'INQUIRE', 'INSERT', 'INSERT-ROWS',\n            'INSERTION-INDEX', 'INSTALLATION', 'INSTANCE',\n            'INTERFACE', 'INTERFACE-ID', 'INTERMEDIATE',\n            'INTERNAL', 'INTO', 'INTRINSIC',\n            'INVALID', 'INVOKED', 'IS', 'ITEM', 'ITEM-BOLD',\n            'ITEM-ID', 'ITEM-TEXT', 'ITEM-TO-ADD', 'ITEM-TO-DELETE',\n            'ITEM-TO-EMPTY', 'ITEM-VALUE', 'ITERATOR', 'ITERATOR-ID', 'J',\n            'JOINED', 'JOINING', 'JUST', 'JUSTIFIED', 'KANJI',\n            'KEPT', 'KEY', 'KEY-YY', 'KEYBOARD', 'LABEL', 'LABEL-OFFSET',\n            'LARGE-FONT', 'LAST', 'LAST-ROW', 'LAYOUT-DATA', 'LAYOUT-MANAGER',\n            'LC_ALL', 'LC_COLLATE', 'LC_CTYPE', 'LC_CURRENCY', 'LC_MESSAGES',\n            'LC_MONETARY', 'LC_NUMERIC', 'LC_TIME', 'LEADING', 'LEADING-SHIFT',\n            'LEAVE', 'LEFT', 'LEFT-JUSTIFY', 'LEFT-TEXT', 'LEFTLINE',\n            'LENGTH-CHECK', 'LESS', 'LIMIT', 'LIMITS', 'LIN', 'LINAGE',\n            'LINAGE-COUNTER', 'LINE', 'LINE-COUNTER', 'LINES', 'LINES-AT-ROOT',\n            'LINK', 'LINKAGE', 'LIST', 'LIST-BOX', 'LM-RESIZE', 'LOCAL-STORAGE',\n            'LOCALE', 'LOCK', 'LOCKING', 'LONG-DATE', 'LONG-VARBINARY',\n            'LONG-VARCHAR', 'LOW', 'LOW-COLOR', 'LOW-VALUE', 'LOW-VALUES',\n            'LOWER', 'LOWERED', 'LOWLIGHT', 'MANUAL', 'MASS-UPDATE',\n            'MASTER-INDEX', 'MAX-HEIGHT', 'MAX-LINES', 'MAX-PROGRESS',\n            'MAX-SIZE', 'MAX-TEXT', 'MAX-VAL', 'MAX-WIDTH', 'MDI-CHILD',\n            'MDI-FRAME', 'MEDIUM-FONT', 'MEMORY', 'MENU', 'MESSAGE',\n            'MESSAGES', 'METACLASS', 'METHOD', 'METHOD-ID', 'MIN-HEIGHT',\n            'MIN-LINES', 'MIN-SIZE', 'MIN-VAL', 'MIN-WIDTH', 'MODAL', 'MODE',\n            'MODELESS', 'MODIFIED', 'MODULES', 'MONITOR-POINTER',\n            'MORE-LABELS', 'MULTILINE',\n            'MUTEX-POINTER', 'NAME', 'NAMED', 'NATIONAL',\n            'NATIONAL-EDITED', 'NATIVE', 'NAVIGATE-URL', 'NCHAR',\n            'NEAREST-AWAY-FROM-ZERO', 'NEAREST-EVEN', 'NEAREST-TOWARD-ZERO',\n            'NEGATIVE', 'NEGATIVE-INFINITY',\n            'NESTED', 'NET-EVENT-LIST', 'NEW', 'NEWABLE', 'NEXT ', 'NEXT-ITEM',\n            'NO', 'NO-AUTO-DEFAULT', 'NO-AUTOSEL', 'NO-BOX', 'NO-CELL-DRAG',\n            'NO-CLOSE', 'NO-DIVIDERS', 'NO-ECHO', 'NO-F4', 'NO-FOCUS',\n            'NO-GROUP-TAB', 'NO-KEY-LETTER', 'NO-SEARCH', 'NO-TAB', 'NO-UPDOWN',\n            'NOMINAL', 'NONE', 'NORMAL', 'NOT', 'NOT-A-NUMBER', 'NOTIFY',\n            'NOTIFY-CHANGE', 'NOTIFY-DBLCLICK', 'NOTIFY-SELCHANGE',\n            'NSTD-REELS', 'NULL', 'NULLS', 'NUM-COL-HEADINGS',\n            'NUM-ROW-HEADINGS', 'NUM-ROWS', 'NUMBER', 'NUMBERS', 'NUMERIC',\n            'NUMERIC-EDITED', 'NUMERIC-FILL', 'O-FILL', 'OBJECT',\n            'OBJECT-COMPUTER', 'OBJECT-ID', 'OBJECT-REFERENCE',\n            'OBJECT-STORAGE', 'OCCURS', 'OF', 'OFF', 'OK-BUTTON', 'OMITTED',\n            'ONLY', 'OOSTACKPTR', 'OPERATOR', 'OPERATOR-ID',\n            'OPTIONAL', 'OPTIONS', 'OR', 'ORDER', 'ORGANIZATION', 'OTHER',\n            'OTHERWISE', 'OUTPUT', 'OVERFLOW', 'OVERLAP-LEFT', 'OVERLAP-TOP',\n            'OVERLAPPED', 'OVERLINE', 'OVERRIDE', 'PACKED-DECIMAL',\n            'PADDING', 'PAGE', 'PAGE-COUNTER', 'PAGE-SETUP', 'PAGE-SIZE',\n            'PAGED', 'PANEL-INDEX', 'PANEL-STYLE', 'PANEL-TEXT', 'PANEL-WIDTHS',\n            'PARAGRAPH', 'PARAMS', 'PARENT', 'PARSE', 'PARTIAL', 'PASSWORD',\n            'PERMANENT', 'PF', 'PH', 'PIC', 'PICTURE', 'PIXEL',\n            'PIXELS', 'PLACEMENT', 'PLUS', 'POINTER', 'POP-UP', 'POSITION',\n            'POSITION-SHIFT', 'POSITIONING', 'POSITIVE', 'POSITIVE-INFINITY',\n            'PREFIXED', 'PREFIXING', 'PRESENT',\n            'PREVIOUS', 'PRINT', 'PRINT-CONTROL', 'PRINT-NO-PROMPT',\n            'PRINT-PREVIEW', 'PRINT-SWITCH', 'PRINTER', 'PRINTER-1', 'PRINTING',\n            'PRIOR', 'PRIORITY', 'PRIVATE', 'PROCEDURE', 'PROCEDURE-POINTER',\n            'PROCEDURES', 'PROCEED', 'PROCESS', 'PROCESSING', 'PROGRAM',\n            'PROGRAM-ID', 'PROGRAM-POINTER', 'PROGRESS', 'PROHIBITED',\n            'PROMPT', 'PROPERTIES',\n            'PROPERTY', 'PROPERTY-ID', 'PROPERTY-VALUE', 'PROTECTED',\n            'PROTOTYPE', 'PUBLIC', 'PURGE', 'PUSH-BUTTON', 'QUERY-INDEX',\n            'QUEUE', 'QUOTE', 'QUOTES', 'RADIO-BUTTON', 'RAISED',\n            'RAISING', 'RD', 'READ-ONLY', 'READING',\n            'READY', 'RECORD', 'RECORD-DATA', 'RECORD-OVERFLOW',\n            'RECORD-TO-ADD', 'RECORD-TO-DELETE', 'RECORDING', 'RECORDS',\n            'RECURSIVE', 'REDEFINE', 'REDEFINES', 'REDEFINITION', 'REEL',\n            'REFERENCE', 'REFERENCES', 'REFRESH', 'REGION-COLOR', 'RELATION',\n            'RELATIVE', 'RELOAD', 'REMAINDER', 'REMARKS', 'REMOVAL',\n            'RENAMES', 'REORG-CRITERIA', 'REPEATED', 'REPLACE', 'REPLACING',\n            'REPORT', 'REPORTING', 'REPORTS', 'REPOSITORY', 'REQUIRED',\n            'REPRESENTS-NOT-A-NUMBER',\n            'REREAD', 'RERUN', 'RESERVE', 'RESET-GRID', 'RESET-LIST',\n            'RESET-TABS', 'RESIZABLE', 'RESTRICTED', 'RESULT-SET-LOCATOR',\n            'RETRY', 'RETURN-CODE', 'RETURNING',\n            'REVERSE-VIDEO', 'REVERSED', 'REWIND', 'RF', 'RH',\n            'RIGHT', 'RIGHT-ALIGN', 'RIGHT-JUSTIFY', 'RIMMED',\n            'ROLLING', 'ROUNDED', 'ROUNDING', 'ROW-COLOR', 'ROW-COLOR-PATTERN',\n            'ROW-DIVIDERS', 'ROW-FONT', 'ROW-HEADINGS', 'ROW-PROTECTION',\n            'ROWID', 'RUN', 'S01', 'S02', 'S03', 'S04', 'S05', 'SAME',\n            'SAVE-AS', 'SAVE-AS-NO-PROMPT', 'SCREEN', 'SCROLL', 'SCROLL-BAR',\n            'SD', 'SEARCH-OPTIONS', 'SEARCH-TEXT', 'SECONDS',\n            'SECTION', 'SECURE', 'SECURITY', 'SEEK', 'SEGMENT', 'SEGMENT-LIMIT',\n            'SELECT-ALL', 'SELECTION-INDEX', 'SELECTION-TEXT',\n            'SELECTIVE', 'SELF', 'SELF-ACT', 'SELFCLASS', 'SEMAPHORE-POINTER',\n            'SEND', 'SENTENCE', 'SEPARATE', 'SEPARATION', 'SEQUENCE',\n            'SEQUENTIAL', 'SETTER', 'SHADING', 'SHADOW',\n            'SHARING', 'SHIFT-IN', 'SHIFT-OUT', 'SHORT-DATE', 'SHOW-LINES',\n            'SHOW-NONE', 'SHOW-SEL-ALWAYS', 'SIGNED', 'SIGNED-INT',\n            'SIGNED-LONG', 'SIGNED-SHORT', 'SIZE', 'SKIP1',\n            'SKIP2', 'SKIP3', 'SMALL-FONT', 'SORT-CONTROL',\n            'SORT-CORE-SIZE', 'SORT-FILE-SIZE', 'SORT-MERGE', 'SORT-MESSAGE',\n            'SORT-MODE-SIZE', 'SORT-OPTION', 'SORT-ORDER', 'SORT-RETURN',\n            'SORT-TAPE', 'SORT-TAPES', 'SOURCE', 'SOURCE-COMPUTER', 'SOURCES',\n            'SPACE', 'SPACE-FILL', 'SPACES', 'SPECIAL-NAMES', 'SPINNER', 'SQL',\n            'SQUARE', 'STANDARD', 'STANDARD-1', 'STANDARD-2', 'STANDARD-3',\n            'STANDARD-BINARY', 'STANDARD-DECIMAL',\n            'START-X', 'START-Y', 'STARTING', 'STATEMENT', 'STATIC',\n            'STATIC-LIST',\n            'STATUS', 'STATUS-BAR', 'STATUS-TEXT', 'STEP',\n            'STOP-BROWSER', 'STRONG', 'STYLE', 'SUB-QUEUE-1',\n            'SUB-QUEUE-2', 'SUB-QUEUE-3', 'SUBFILE', 'SUBWINDOW',\n            'SUFFIXING', 'SUPER', 'SYMBOL', 'SYMBOLIC',\n            'SYNCHRONIZED', 'SYSIN', 'SYSIPT', 'SYSLST', 'SYSOUT',\n            'SYSPCH', 'SYSPUNCH', 'SYSTEM', 'SYSTEM-DEFAULT', 'SYSTEM-INFO',\n            'TAB', 'TAB-CONTROL', 'TAB-TO-ADD', 'TAB-TO-DELETE', 'TABLE',\n            'TALLY', 'TALLYING', 'TAPE', 'TAPES', 'TEMPORARY', 'TERMINAL',\n            'TERMINAL-INFO', 'TERMINATION-VALUE', 'TEST', 'TEXT',\n            'THAN', 'THEN', 'THREAD', 'THREAD-LOCAL', 'THREAD-LOCAL-STORAGE',\n            'THREAD-POINTER', 'THROUGH', 'THRU', 'THUMB-POSITION',\n            'TILED-HEADINGS', 'TIME', 'TIME-OF-DAY', 'TIME-OUT', 'TIME-RECORD',\n            'TIMEOUT', 'TIMES', 'TIMESTAMP', 'TIMESTAMP-OFFSET',\n            'TIMESTAMP-OFFSET-RECORD', 'TIMESTAMP-RECORD', 'TITLE', 'TITLE-BAR',\n            'TITLE-POSITION', 'TO', 'TOOL-BAR', 'TOP', 'TOTALED', 'TOTALING',\n            'TOWARD-GREATER', 'TOWARD-LESSER',\n            'TRACE', 'TRACK-AREA', 'TRACK-LIMIT', 'TRACK-THUMB', 'TRACKS',\n            'TRADITIONAL-FONT', 'TRAILING', 'TRAILING-SHIFT', 'TRAILING-SIGN',\n            'TRANSACTION', 'TRANSPARENT', 'TRANSPARENT-COLOR',\n            'TREE-VIEW', 'TRUE', 'TRUNCATION', 'TYPE', 'TYPEDEF', 'UCS-4',\n            'UNDERLINE', 'UNDERLINED', 'UNEQUAL', 'UNFRAMED', 'UNIT', 'UNITS',\n            'UNIVERSAL', 'UNSIGNED', 'UNSIGNED-INT', 'UNSIGNED-LONG',\n            'UNSIGNED-SHORT',\n            'UNSORTED', 'UP', 'UPDATE', 'UNTIL', 'UPON', 'UPPER',\n            'UPSI-0', 'UPSI-1', 'UPSI-2', 'UPSI-3', 'UPSI-4', 'UPSI-5',\n            'UPSI-6', 'UPSI-7', 'USAGE', 'USE-ALT', 'USE-RETURN',\n            'USE-TAB', 'USER', 'USER-COLORS', 'USER-DEFAULT', 'USER-GRAY',\n            'USER-WHITE', 'USING', 'UTF-16', 'UTF-8', 'VALID',\n            'VAL-STATUS', 'VALIDATE-STATUS',\n            'VALUE', 'VALUE-FORMAT', 'VALUES', 'VALUETYPE', 'VALUETYPE-ID',\n            'VARBINARY', 'VARIABLE', 'VARIANT', 'VARYING', 'VERTICAL',\n            'VERY-HEAVY', 'VIRTUAL-WIDTH', 'VISIBLE', 'VPADDING', 'VSCROLL',\n            'VSCROLL-BAR', 'VSCROLL-POS', 'VTOP', 'WEB-BROWSER', 'WHEN',\n            'WHERE', 'WIDTH', 'WIDTH-IN-CELLS', 'WINDOW',\n            'WITH', 'WORDS', 'WORKING-STORAGE', 'WRAP', 'WRITE-ONLY',\n            'WRITE-VERIFY', 'WRITING', ' XML', 'XML ', 'XML-CODE', 'XML-EVENT',\n            'XML-NTEXT', 'XML-TEXT', 'YIELDING', 'YYYYDDD', 'YYYYMMDD', 'ZERO',\n            'ZERO-FILL', 'ZEROES', 'ZEROS'\n            ),\n        3 => array( // Statement Keywords containing no spaces.\n            'ACCEPT', 'ADD', 'ALTER', 'ALLOCATE', 'ATTACH', 'CALL', 'CANCEL',\n            'CHAIN', 'CREATE',\n            'CLOSE', 'COLOR', 'COMPUTE', 'COMMIT', 'CONTINUE',\n            'COPY', 'DECLARE', 'DELEGATE', 'DELETE', 'DETACH', 'DISPLAY',\n            'DIVIDE',\n            'ENTER', 'ENTRY', 'EVALUATE', 'EXAMINE',\n            'EXEC', 'EXECUTE', 'EXHIBIT', 'EXIT', 'FREE', 'GOBACK',\n            'IF',  'INITIALIZE', 'INITIATE', 'INSPECT', 'INVOKE', 'MERGE',\n            'MODIFY', 'MOVE', 'MULTIPLY', 'NOTE', 'ON', 'OPEN',\n            'PERFORM', 'RAISE', 'READ', 'RECEIVE', 'RELEASE', 'RETURN',\n            'RESET', 'RESUME',\n            'REWRITE', 'ROLLBACK', 'SEARCH', 'SELECT', 'SERVICE', 'SET', 'SORT',\n            'START', 'STOP', 'STRING', 'SUBTRACT', 'SYNC',\n            'SUPPRESS', 'TERMINATE',\n            'TRANSFORM', 'TRY', 'UNLOCKFILE', 'UNLOCK', 'UNSTRING', 'USE',\n            'VALIDATE', 'WAIT', 'WRITE'\n            ),\n        4 => array( // Intrinsic functions\n            'ABS', 'ACOS', 'ANNUITY', 'ASIN', 'ATAN', 'BOOLEAN-OF-INTEGER',\n            'BYTE-LENGTH', 'CHAR', 'CHAR-NATIONAL',\n            'COS', 'COMBINED-DATETIME', 'CONCATENATE', 'CURRENT-DATE',\n            'DATE-OF-INTEGER', 'DATE-TO-YYYYMMDD', 'DAY-TO-YYYYDDD',\n            'DAY-OF-INTEGER', 'DISPLAY-OF', 'E', 'EXCEPTION-FILE',\n            'EXCEPTION-FILE-N', 'EXCEPTION-LOCATION',\n            'EXCEPTION-LOCATION-N', 'EXCEPTION-STATEMENT', 'EXCEPTION-STATUS',\n            'EXP', 'EXP10', 'FACTORIAL', 'FORMATTED-CURRENT-DATE',\n            'FORMATTED-DATE', 'FORMATTED-DATETIME', 'FORMATTED-TIME',\n            'FRACTION-PART', 'HIGHEST-ALGEBRAIC', 'INTEGER',\n            'INTEGER-OF-BOOLEAN', 'INTEGER-OF-DATE', 'INTEGER-OF-DAY',\n            'INTEGER-OF-FORMATTED-DATE', 'INTEGER-PART', 'LENGTH',\n            'LOCALE-COMPARE',\n            'LOCALE-DATE', 'LOCALE-TIME', 'LOCALE-TIME-FROM-SECONDS',\n            'LOCALE-TIME-FROM-SECS', 'LOG',\n            'LOG10', 'LOWER-CASE', 'LOWEST-ALGEBRAIC',\n            'MAX', 'MEAN', 'MEDIAN', 'MIDRANGE',\n            'MIN', 'MOD', 'NATIONAL-OF', 'NUMVAL', 'NUMVAL-C', 'NUMVAL-F',\n            'ORD', 'ORD-MAX', 'ORD-MIN',\n            'PI', 'PRESENT-VALUE', 'RANDOM', 'RANGE', 'REM', 'REVERSE',\n            'SECONDS-FROM-FORMATTED-TIME', 'SIGN', 'SIN', 'SQRT',\n            'SECONDS-PAST-MIDNIGHT', 'STANDARD-DEVIATION', 'STANDARD-COMPARE',\n            'STORED-CHAR-LENGTH',\n            'SUBSTITUTE', 'SUBSTITUE-CASE', 'SUM', 'TAN', 'TEST-DATE-YYYYMMDD',\n            'TEST-DAY-YYYYDDD', 'TEST-FORMATTED-TIME', 'TEST-NUMVAL',\n            'TEST-NUMVAL-C', 'TEST-NUMVAL-F',\n            'TRIM', 'UPPER-CASE', 'VARIANCE', 'YEAR-TO-YYYY', 'WHEN-COMPILED'\n            ),\n        ),\n    'SYMBOLS' => array(\n        //  Arithmetic and comparison operators must be surrounded by spaces.\n        ' + ', ' - ', ' * ', ' / ', ' ** ', ' ^ ',\n        '.', ',',\n        ' = ', ' < ', ' > ', ' >= ', ' <= ', ' <> ',\n        '(', ')', '[', ']'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #008000; font-weight: bold;',\n            3 => 'color: #000000; font-weight: bold;',\n            4 => 'color: #9d7700;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #a0a0a0; font-style: italic;',\n            2 => 'color: #000080; font-weight: bold;',\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #339933;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #993399;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #800080;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000066;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '::'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9-\\$_\\|\\#|^&])',\n        ),\n    ),\n);\n"
  },
  {
    "path": "includes/geshi/coffeescript.php",
    "content": "<?php\n/*************************************************************************************\n * coffeescript.php\n * ----------\n * Author: Trevor Burnham (trevorburnham@gmail.com)\n * Copyright: (c) 2010 Trevor Burnham (http://iterative.ly)\n * Release Version: 1.0.9.1\n * Date Started: 2010/06/08\n *\n * CoffeeScript language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/06/08 (1.0.8.9)\n *  -  First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'CoffeeScript',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array('###' => '###'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    //Longest quotemarks ALWAYS first\n    'QUOTEMARKS' => array('\"\"\"', \"'''\", '\"', \"'\"),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n\n        /*\n        ** Set 1: control keywords\n        */\n        1 => array(\n            'break', 'by', 'catch', 'continue', 'else', 'finally', 'for', 'in', 'of', 'if',\n            'return', 'switch', 'then', 'throw', 'try', 'unless', 'when', 'while', 'until'\n            ),\n\n        /*\n        ** Set 2: logic keywords\n        */\n        2 => array(\n            'and', 'or', 'is', 'isnt', 'not'\n            ),\n\n        /*\n        ** Set 3: other keywords\n        */\n        3 => array(\n            'instanceof', 'new', 'delete', 'typeof',\n            'class', 'super', 'this', 'extends'\n            ),\n\n        /*\n        ** Set 4: constants\n        */\n        4 => array(\n            'true', 'false', 'on', 'off', 'yes', 'no',\n            'Infinity', 'NaN', 'undefined', 'null'\n            )\n        ),\n    'SYMBOLS' => array(\n            '(', ')', '[', ']', '{', '}', '*', '&', '|', '%', '!', ',', ';', '<', '>', '?', '`',\n            '+', '-', '*', '/', '->', '=>', '<<', '>>', '@', ':', '^'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #ff7700;font-weight:bold;',\n            2 => 'color: #008000;',\n            3 => 'color: #dc143c;',\n            4 => 'color: #0000cd;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: black;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #483d8b;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff4500;'\n            ),\n        'METHODS' => array(\n            1 => 'color: black;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        0 => array(\n            '<script type=\"text/coffeescript\">' => '</script>'\n            )\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true\n        )\n);\n"
  },
  {
    "path": "includes/geshi/cpp-qt.php",
    "content": "<?php\n/*************************************************************************************\n * cpp.php\n * -------\n * Author: Iulian M\n * Copyright: (c) 2006 Iulian M\n * Release Version: 1.0.9.1\n * Date Started: 2004/09/27\n *\n * C++ (with Qt extensions) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009/06/28 (1.0.8.4)\n *   -  Updated list of Keywords from Qt 4.5\n *\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n *\n * TODO\n * ----\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'C++ (Qt)',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Multiline-continued single-line comments\n        1 => '/\\/\\/(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //Multiline-continued preprocessor define\n        2 => '/#(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //C++ 11 string literal extensions\n        3 => '/(?:L|u8?|U)(?=\")/',\n        //C++ 11 string literal extensions (raw)\n        4 => '/R\"([^()\\s\\\\\\\\]*)\\((?:(?!\\)\\\\1\").)*\\)\\\\1\"/ms'\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[abfnrtv\\\\\\'\\\"?\\n]#i\",\n        //Hexadecimal Char Specs\n        2 => \"#\\\\\\\\x[\\da-fA-F]{2}#\",\n        //Hexadecimal Char Specs\n        3 => \"#\\\\\\\\u[\\da-fA-F]{4}#\",\n        //Hexadecimal Char Specs\n        4 => \"#\\\\\\\\U[\\da-fA-F]{8}#\",\n        //Octal Char Specs\n        5 => \"#\\\\\\\\[0-7]{1,3}#\"\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'case', 'continue', 'default', 'do', 'else', 'for', 'goto', 'if', 'return',\n            'switch', 'while', 'delete', 'new', 'this'\n            ),\n        2 => array(\n            'NULL', 'false', 'break', 'true', 'enum', 'errno', 'EDOM',\n            'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',\n            'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',\n            'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',\n            'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',\n            'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',\n            'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',\n            'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',\n            'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',\n            'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam',\n            'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',\n            'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',\n            'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace',\n            'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 'reinterpret_cast',\n            'static_cast', 'explicit', 'friend', 'typename', 'typeid', 'class' ,\n            'foreach','connect', 'Q_OBJECT' , 'slots' , 'signals', 'Q_SIGNALS', 'Q_SLOTS',\n            'Q_FOREACH', 'QCOMPARE', 'QVERIFY', 'qDebug', 'kDebug', 'QBENCHMARK',\n            'SIGNAL', 'SLOT', 'emit'\n            ),\n        3 => array(\n            'cin', 'cerr', 'clog', 'cout',\n            'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',\n            'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',\n            'ispunct', 'isspace', 'isupper', 'isxdigit', 'tolower', 'toupper',\n            'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',\n            'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',\n            'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp',\n            'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',\n            'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',\n            'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',\n            'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',\n            'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',\n            'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',\n            'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',\n            'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',\n            'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',\n            'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',\n            'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',\n            'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',\n            'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'\n            ),\n        4 => array(\n            'auto', 'bool', 'char', 'const', 'double', 'float', 'int', 'long', 'longint',\n            'register', 'short', 'shortint', 'signed', 'static', 'struct',\n            'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',\n            'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',\n            'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', 'wchar_t',\n\n            'int8', 'int16', 'int32', 'int64',\n            'uint8', 'uint16', 'uint32', 'uint64',\n\n            'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',\n            'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',\n\n            'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',\n            'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',\n\n            'int8_t', 'int16_t', 'int32_t', 'int64_t',\n            'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',\n\n            'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t'\n            ),\n        5 => array(\n            'Q_INT8', 'Q_INT16', 'Q_INT32', 'Q_INT64', 'Q_LLONG', 'Q_LONG',\n            'Q_UINT8', 'Q_UINT16', 'Q_UINT32', 'Q_UINT64', 'Q_ULLONG', 'Q_ULONG',\n\n            'QAbstractAnimation', 'QAbstractButton', 'QAbstractEventDispatcher',\n            'QAbstractExtensionFactory', 'QAbstractExtensionManager',\n            'QAbstractFormBuilder', 'QAbstractGraphicsShapeItem',\n            'QAbstractItemDelegate', 'QAbstractItemModel', 'QAbstractItemView',\n            'QAbstractListModel', 'QAbstractMessageHandler',\n            'QAbstractNativeEventFilter', 'QAbstractNetworkCache',\n            'QAbstractOpenGLFunctions', 'QAbstractPlanarVideoBuffer',\n            'QAbstractPrintDialog', 'QAbstractProxyModel', 'QAbstractScrollArea',\n            'QAbstractSlider', 'QAbstractSocket', 'QAbstractSpinBox',\n            'QAbstractState', 'QAbstractTableModel',\n            'QAbstractTextDocumentLayout', 'QAbstractTransition',\n            'QAbstractUriResolver', 'QAbstractVideoBuffer',\n            'QAbstractVideoSurface', 'QAbstractXmlNodeModel',\n            'QAbstractXmlReceiver', 'QAccelerometer', 'QAccelerometerFilter',\n            'QAccelerometerReading', 'QAccessible', 'QAccessibleActionInterface',\n            'QAccessibleEditableTextInterface', 'QAccessibleEvent',\n            'QAccessibleInterface', 'QAccessibleObject', 'QAccessiblePlugin',\n            'QAccessibleStateChangeEvent', 'QAccessibleTableCellInterface',\n            'QAccessibleTableInterface', 'QAccessibleTableModelChangeEvent',\n            'QAccessibleTextCursorEvent', 'QAccessibleTextInsertEvent',\n            'QAccessibleTextInterface', 'QAccessibleTextRemoveEvent',\n            'QAccessibleTextSelectionEvent', 'QAccessibleTextUpdateEvent',\n            'QAccessibleValueChangeEvent', 'QAccessibleValueInterface',\n            'QAccessibleWidget', 'QAction', 'QActionEvent', 'QActionGroup',\n            'QAltimeter', 'QAltimeterFilter', 'QAltimeterReading',\n            'QAmbientLightFilter','QAmbientLightReading', 'QAmbientLightSensor',\n            'QAmbientTemperatureFilter', 'QAmbientTemperatureReading',\n            'QAmbientTemperatureSensor', 'QAndroidActivityResultReceiver',\n            'QAndroidJniEnvironment', 'QAndroidJniObject', 'QAnimationGroup',\n            'QApplication', 'QAssociativeIterable', 'QAtomicInt',\n            'QAtomicInteger', 'QAtomicPointer', 'QAudioBuffer', 'QAudioDecoder',\n            'QAudioDecoderControl', 'QAudioDeviceInfo', 'QAudioEncoderSettings',\n            'QAudioEncoderSettingsControl', 'QAudioFormat', 'QAudioInput',\n            'QAudioInputSelectorControl', 'QAudioOutput',\n            'QAudioOutputSelectorControl', 'QAudioProbe', 'QAudioRecorder',\n            'QAuthenticator', 'QAxAggregated', 'QAxBase', 'QAxBindable',\n            'QAxFactory', 'QAxObject', 'QAxScript', 'QAxScriptEngine',\n            'QAxScriptManager', 'QAxSelect', 'QAxWidget', 'QBackingStore',\n            'QBasicTimer', 'QBitArray', 'QBitmap', 'QBluetoothAddress',\n            'QBluetoothDeviceDiscoveryAgent', 'QBluetoothDeviceInfo',\n            'QBluetoothHostInfo', 'QBluetoothLocalDevice', 'QBluetoothServer',\n            'QBluetoothServiceDiscoveryAgent', 'QBluetoothServiceInfo',\n            'QBluetoothSocket', 'QBluetoothTransferManager',\n            'QBluetoothTransferReply', 'QBluetoothTransferRequest',\n            'QBluetoothUuid', 'QBoxLayout', 'QBrush', 'QBuffer', 'QButtonGroup',\n            'QByteArray', 'QByteArrayList', 'QByteArrayMatcher', 'QCache',\n            'QCalendarWidget', 'QCamera', 'QCameraCaptureBufferFormatControl',\n            'QCameraCaptureDestinationControl', 'QCameraControl',\n            'QCameraExposure', 'QCameraExposureControl', 'QCameraFeedbackControl',\n            'QCameraFlashControl', 'QCameraFocus', 'QCameraFocusControl',\n            'QCameraFocusZone', 'QCameraImageCapture',\n            'QCameraImageCaptureControl', 'QCameraImageProcessing',\n            'QCameraImageProcessingControl', 'QCameraInfo', 'QCameraInfoControl',\n            'QCameraLocksControl', 'QCameraViewfinder',\n            'QCameraViewfinderSettingsControl', 'QCameraZoomControl', 'QChar',\n            'QCheckBox', 'QChildEvent', 'QClipboard', 'QCloseEvent',\n            'QCocoaNativeContext', 'QCollator', 'QCollatorSortKey', 'QColor',\n            'QColorDialog', 'QColormap', 'QColumnView', 'QComboBox',\n            'QCommandLineOption', 'QCommandLineParser', 'QCommandLinkButton',\n            'QCommonStyle', 'QCompass', 'QCompassFilter', 'QCompassReading',\n            'QCompleter', 'QConicalGradient', 'QContextMenuEvent',\n            'QContiguousCache', 'QCoreApplication', 'QCryptographicHash',\n            'QCursor', 'QDBusAbstractAdaptor', 'QDBusAbstractInterface',\n            'QDBusArgument', 'QDBusConnection', 'QDBusConnectionInterface',\n            'QDBusContext', 'QDBusError', 'QDBusInterface', 'QDBusMessage',\n            'QDBusObjectPath', 'QDBusPendingCall', 'QDBusPendingCallWatcher',\n            'QDBusPendingReply', 'QDBusReply', 'QDBusServer',\n            'QDBusServiceWatcher', 'QDBusSignature', 'QDBusUnixFileDescriptor',\n            'QDBusVariant', 'QDBusVirtualObject', 'QDataStream',\n            'QDataWidgetMapper', 'QDate', 'QDateEdit', 'QDateTime',\n            'QDateTimeEdit', 'QDebug', 'QDebugStateSaver',\n            'QDesignerActionEditorInterface', 'QDesignerContainerExtension',\n            'QDesignerCustomWidgetCollectionInterface',\n            'QDesignerCustomWidgetInterface',\n            'QDesignerDynamicPropertySheetExtension',\n            'QDesignerFormEditorInterface', 'QDesignerFormWindowCursorInterface',\n            'QDesignerFormWindowInterface', 'QDesignerFormWindowManagerInterface',\n            'QDesignerMemberSheetExtension', 'QDesignerObjectInspectorInterface',\n            'QDesignerPropertyEditorInterface', 'QDesignerPropertySheetExtension',\n            'QDesignerTaskMenuExtension', 'QDesignerWidgetBoxInterface',\n            'QDesktopServices', 'QDesktopWidget', 'QDial', 'QDialog',\n            'QDialogButtonBox', 'QDir', 'QDirIterator', 'QDirModel',\n            'QDistanceFilter', 'QDistanceReading', 'QDistanceSensor',\n            'QDnsDomainNameRecord', 'QDnsHostAddressRecord', 'QDnsLookup',\n            'QDnsMailExchangeRecord', 'QDnsServiceRecord', 'QDnsTextRecord',\n            'QDockWidget', 'QDomAttr', 'QDomCDATASection', 'QDomCharacterData',\n            'QDomComment', 'QDomDocument', 'QDomDocumentFragment',\n            'QDomDocumentType', 'QDomElement', 'QDomEntity', 'QDomEntityReference',\n            'QDomImplementation', 'QDomNamedNodeMap', 'QDomNode', 'QDomNodeList',\n            'QDomNotation', 'QDomProcessingInstruction', 'QDomText',\n            'QDoubleSpinBox', 'QDoubleValidator', 'QDrag', 'QDragEnterEvent',\n            'QDragLeaveEvent', 'QDragMoveEvent', 'QDropEvent',\n            'QDynamicPropertyChangeEvent', 'EnginioClient',\n            'EnginioClientConnection', 'EnginioIdentity', 'EnginioModel',\n            'EnginioOAuth2Authentication', 'EnginioReply', 'QEGLNativeContext',\n            'QEasingCurve', 'QEglFSFunctions', 'QElapsedTimer',\n            'QEnableSharedFromThis', 'QEnterEvent', 'QErrorMessage', 'QEvent',\n            'QEventLoop', 'QEventLoopLocker', 'QEventTransition', 'QException',\n            'QExplicitlySharedDataPointer', 'QExposeEvent', 'QExtensionFactory',\n            'QExtensionManager', 'QFile', 'QFileDevice', 'QFileDialog',\n            'QFileIconProvider', 'QFileInfo', 'QFileOpenEvent', 'QFileSelector',\n            'QFileSystemModel', 'QFileSystemWatcher', 'QFinalState', 'QFlag',\n            'QFlags', 'QFocusEvent', 'QFocusFrame', 'QFont', 'QFontComboBox',\n            'QFontDatabase', 'QFontDialog', 'QFontInfo', 'QFontMetrics',\n            'QFontMetricsF', 'QFormBuilder', 'QFormLayout', 'QFrame', 'QFuture',\n            'QFutureIterator', 'QFutureSynchronizer', 'QFutureWatcher',\n            'QGLBuffer', 'QGLColormap', 'QGLContext', 'QGLFormat',\n            'QGLFramebufferObject', 'QGLFramebufferObjectFormat', 'QGLFunctions',\n            'QGLPixelBuffer', 'QGLShader', 'QGLShaderProgram', 'QGLWidget',\n            'QGLXNativeContext', 'QGenericArgument', 'QGenericMatrix',\n            'QGenericPlugin', 'QGenericPluginFactory', 'QGenericReturnArgument',\n            'QGeoAddress', 'QGeoAreaMonitorInfo', 'QGeoAreaMonitorSource',\n            'QGeoCircle', 'QGeoCodeReply', 'QGeoCodingManager',\n            'QGeoCodingManagerEngine', 'QGeoCoordinate', 'QGeoLocation',\n            'QGeoManeuver', 'QGeoPositionInfo', 'QGeoPositionInfoSource',\n            'QGeoPositionInfoSourceFactory', 'QGeoRectangle', 'QGeoRoute',\n            'QGeoRouteReply', 'QGeoRouteRequest', 'QGeoRouteSegment',\n            'QGeoRoutingManager', 'QGeoRoutingManagerEngine',\n            'QGeoSatelliteInfo', 'QGeoSatelliteInfoSource',\n            'QGeoServiceProvider', 'QGeoServiceProviderFactory', 'QGeoShape',\n            'QGesture', 'QGestureEvent', 'QGestureRecognizer', 'QGlobalStatic',\n            'QGlyphRun', 'QGradient', 'QGraphicsAnchor', 'QGraphicsAnchorLayout',\n            'QGraphicsBlurEffect', 'QGraphicsColorizeEffect',\n            'QGraphicsDropShadowEffect', 'QGraphicsEffect',\n            'QGraphicsEllipseItem', 'QGraphicsGridLayout', 'QGraphicsItem',\n            'QGraphicsItemAnimation', 'QGraphicsItemGroup', 'QGraphicsLayout',\n            'QGraphicsLayoutItem', 'QGraphicsLineItem', 'QGraphicsLinearLayout',\n            'QGraphicsObject', 'QGraphicsOpacityEffect', 'QGraphicsPathItem',\n            'QGraphicsPixmapItem', 'QGraphicsPolygonItem',\n            'QGraphicsProxyWidget', 'QGraphicsRectItem', 'QGraphicsRotation',\n            'QGraphicsScale', 'QGraphicsScene', 'QGraphicsSceneContextMenuEvent',\n            'QGraphicsSceneDragDropEvent', 'QGraphicsSceneEvent',\n            'QGraphicsSceneHelpEvent', 'QGraphicsSceneHoverEvent',\n            'QGraphicsSceneMouseEvent', 'QGraphicsSceneMoveEvent',\n            'QGraphicsSceneResizeEvent', 'QGraphicsSceneWheelEvent',\n            'QGraphicsSimpleTextItem', 'QGraphicsSvgItem', 'QGraphicsTextItem',\n            'QGraphicsTransform', 'QGraphicsVideoItem', 'QGraphicsView',\n            'QGraphicsWebView', 'QGraphicsWidget', 'QGridLayout', 'QGroupBox',\n            'QGuiApplication', 'QGyroscope', 'QGyroscopeFilter',\n            'QGyroscopeReading', 'QHBoxLayout', 'QHash', 'QHashIterator',\n            'QHeaderView', 'QHelpContentItem', 'QHelpContentModel',\n            'QHelpContentWidget', 'QHelpEngine', 'QHelpEngineCore', 'QHelpEvent',\n            'QHelpIndexModel', 'QHelpIndexWidget', 'QHelpSearchEngine',\n            'QHelpSearchQuery', 'QHelpSearchQueryWidget',\n            'QHelpSearchResultWidget', 'QHideEvent', 'QHistoryState',\n            'QHolsterFilter', 'QHolsterReading', 'QHolsterSensor',\n            'QHostAddress', 'QHostInfo', 'QHoverEvent', 'QHttpMultiPart',\n            'QHttpPart', 'QIODevice', 'QIRProximityFilter', 'QIRProximityReading',\n            'QIRProximitySensor', 'QIcon', 'QIconDragEvent', 'QIconEngine',\n            'QIconEnginePlugin', 'QIdentityProxyModel', 'QImage',\n            'QImageEncoderControl', 'QImageEncoderSettings', 'QImageIOHandler',\n            'QImageIOPlugin', 'QImageReader', 'QImageWriter', 'QInputDialog',\n            'QInputEvent', 'QInputMethod', 'QInputMethodEvent',\n            'QInputMethodQueryEvent', 'QIntValidator', 'QItemDelegate',\n            'QItemEditorCreator', 'QItemEditorCreatorBase', 'QItemEditorFactory',\n            'QItemSelection', 'QItemSelectionModel', 'QItemSelectionRange',\n            'QJSEngine', 'QJSValue', 'QJSValueIterator', 'QJsonArray',\n            'QJsonDocument', 'QJsonObject', 'QJsonParseError', 'QJsonValue',\n            'QKeyEvent', 'QKeyEventTransition', 'QKeySequence', 'QKeySequenceEdit',\n            'QLCDNumber', 'QLabel', 'QLatin1Char', 'QLatin1String', 'QLayout',\n            'QLayoutItem', 'QLibrary', 'QLibraryInfo', 'QLightFilter',\n            'QLightReading', 'QLightSensor', 'QLine', 'QLineEdit', 'QLineF',\n            'QLinearGradient', 'QLinkedList', 'QLinkedListIterator', 'QList',\n            'QListIterator', 'QListView', 'QListWidget', 'QListWidgetItem',\n            'QLocalServer', 'QLocalSocket', 'QLocale', 'QLockFile',\n            'QLoggingCategory', 'QLowEnergyCharacteristic',\n            'QLowEnergyController', 'QLowEnergyDescriptor', 'QLowEnergyService',\n            'QMacCocoaViewContainer', 'QMacNativeWidget', 'QMacPasteboardMime',\n            'QMacToolBar', 'QMacToolBarItem', 'QMagnetometer',\n            'QMagnetometerFilter', 'QMagnetometerReading', 'QMainWindow', 'QMap',\n            'QMapIterator', 'QMargins', 'QMarginsF', 'QMaskGenerator', 'QMatrix',\n            'QMatrix4x4', 'QMdiArea', 'QMdiSubWindow', 'QMediaAudioProbeControl',\n            'QMediaAvailabilityControl', 'QMediaBindableInterface',\n            'QMediaContainerControl', 'QMediaContent', 'QMediaControl',\n            'QMediaGaplessPlaybackControl', 'QMediaNetworkAccessControl',\n            'QMediaObject', 'QMediaPlayer', 'QMediaPlayerControl',\n            'QMediaPlaylist', 'QMediaRecorder', 'QMediaRecorderControl',\n            'QMediaResource', 'QMediaService', 'QMediaServiceCameraInfoInterface',\n            'QMediaServiceFeaturesInterface', 'QMediaServiceProviderPlugin',\n            'QMediaServiceSupportedDevicesInterface',\n            'QMediaServiceSupportedFormatsInterface', 'QMediaStreamsControl',\n            'QMediaTimeInterval', 'QMediaTimeRange', 'QMediaVideoProbeControl',\n            'QMenu', 'QMenuBar', 'QMessageAuthenticationCode', 'QMessageBox',\n            'QMessageLogContext', 'QMessageLogger', 'QMetaClassInfo',\n            'QMetaDataReaderControl', 'QMetaDataWriterControl', 'QMetaEnum',\n            'QMetaMethod', 'QMetaObject', 'QMetaProperty', 'QMetaType',\n            'QMimeData', 'QMimeDatabase', 'QMimeType', 'QModelIndex',\n            'QMouseEvent', 'QMouseEventTransition', 'QMoveEvent', 'QMovie',\n            'QMultiHash', 'QMultiMap', 'QMutableHashIterator',\n            'QMutableLinkedListIterator', 'QMutableListIterator',\n            'QMutableMapIterator', 'QMutableSetIterator',\n            'QMutableVectorIterator', 'QMutex', 'QMutexLocker',\n            'QNativeGestureEvent', 'QNdefFilter', 'QNdefMessage',\n            'QNdefNfcSmartPosterRecord', 'QNdefNfcTextRecord',\n            'QNdefNfcUriRecord', 'QNdefRecord', 'QNearFieldManager',\n            'QNearFieldShareManager', 'QNearFieldShareTarget', 'QNearFieldTarget',\n            'QNetworkAccessManager', 'QNetworkAddressEntry',\n            'QNetworkCacheMetaData', 'QNetworkConfiguration',\n            'QNetworkConfigurationManager', 'QNetworkCookie', 'QNetworkCookieJar',\n            'QNetworkDiskCache', 'QNetworkInterface', 'QNetworkProxy',\n            'QNetworkProxyFactory', 'QNetworkProxyQuery', 'QNetworkReply',\n            'QNetworkRequest', 'QNetworkSession', 'QNmeaPositionInfoSource',\n            'QObject', 'QObjectCleanupHandler', 'QOffscreenSurface',\n            'QOpenGLBuffer', 'QOpenGLContext', 'QOpenGLContextGroup',\n            'QOpenGLDebugLogger', 'QOpenGLDebugMessage',\n            'QOpenGLFramebufferObject', 'QOpenGLFramebufferObjectFormat',\n            'QOpenGLFunctions', 'QOpenGLFunctions_1_0', 'QOpenGLFunctions_1_1',\n            'QOpenGLFunctions_1_2', 'QOpenGLFunctions_1_3', 'QOpenGLFunctions_1_4',\n            'QOpenGLFunctions_1_5', 'QOpenGLFunctions_2_0', 'QOpenGLFunctions_2_1',\n            'QOpenGLFunctions_3_0', 'QOpenGLFunctions_3_1',\n            'QOpenGLFunctions_3_2_Compatibility', 'QOpenGLFunctions_3_2_Core',\n            'QOpenGLFunctions_3_3_Compatibility', 'QOpenGLFunctions_3_3_Core',\n            'QOpenGLFunctions_4_0_Compatibility', 'QOpenGLFunctions_4_0_Core',\n            'QOpenGLFunctions_4_1_Compatibility', 'QOpenGLFunctions_4_1_Core',\n            'QOpenGLFunctions_4_2_Compatibility', 'QOpenGLFunctions_4_2_Core',\n            'QOpenGLFunctions_4_3_Compatibility', 'QOpenGLFunctions_4_3_Core',\n            'QOpenGLFunctions_ES2', 'QOpenGLPaintDevice',\n            'QOpenGLPixelTransferOptions', 'QOpenGLShader',\n            'QOpenGLShaderProgram', 'QOpenGLTexture', 'QOpenGLTimeMonitor',\n            'QOpenGLTimerQuery', 'QOpenGLVersionProfile',\n            'QOpenGLVertexArrayObject', 'QOpenGLWidget', 'QOpenGLWindow',\n            'QOrientationFilter', 'QOrientationReading', 'QOrientationSensor',\n            'QPageLayout', 'QPageSetupDialog', 'QPageSize', 'QPagedPaintDevice',\n            'QPaintDevice', 'QPaintDeviceWindow', 'QPaintEngine',\n            'QPaintEngineState', 'QPaintEvent', 'QPainter', 'QPainterPath',\n            'QPainterPathStroker', 'QPair', 'QPalette', 'QPanGesture',\n            'QParallelAnimationGroup', 'QPauseAnimation', 'QPdfWriter', 'QPen',\n            'QPersistentModelIndex', 'QPicture', 'QPictureFormatPlugin',\n            'QPictureIO', 'QPinchGesture', 'QPixelFormat', 'QPixmap',\n            'QPixmapCache', 'QPlace', 'QPlaceAttribute', 'QPlaceCategory',\n            'QPlaceContactDetail', 'QPlaceContent', 'QPlaceContentReply',\n            'QPlaceContentRequest', 'QPlaceDetailsReply', 'QPlaceEditorial',\n            'QPlaceIcon', 'QPlaceIdReply', 'QPlaceImage', 'QPlaceManager',\n            'QPlaceManagerEngine', 'QPlaceMatchReply', 'QPlaceMatchRequest',\n            'QPlaceProposedSearchResult', 'QPlaceRatings', 'QPlaceReply',\n            'QPlaceResult', 'QPlaceReview', 'QPlaceSearchReply',\n            'QPlaceSearchRequest', 'QPlaceSearchResult',\n            'QPlaceSearchSuggestionReply', 'QPlaceSupplier', 'QPlaceUser',\n            'QPlainTextDocumentLayout', 'QPlainTextEdit',\n            'QPlatformSystemTrayIcon', 'QPluginLoader', 'QPoint', 'QPointF',\n            'QPointer', 'QPolygon', 'QPolygonF', 'QPressureFilter',\n            'QPressureReading', 'QPressureSensor', 'QPrintDialog', 'QPrintEngine',\n            'QPrintPreviewDialog', 'QPrintPreviewWidget', 'QPrinter',\n            'QPrinterInfo', 'QProcess', 'QProcessEnvironment', 'QProgressBar',\n            'QProgressDialog', 'QPropertyAnimation', 'QProximityFilter',\n            'QProximityReading', 'QProximitySensor', 'QProxyStyle',\n            'QPushButton', 'QQmlAbstractProfilerAdapter',\n            'QQmlAbstractUrlInterceptor', 'QQmlApplicationEngine',\n            'QQmlComponent', 'QQmlContext', 'QQmlEngine', 'QQmlError',\n            'QQmlExpression', 'QQmlExtensionPlugin', 'QQmlFileSelector',\n            'QQmlImageProviderBase', 'QQmlIncubationController', 'QQmlIncubator',\n            'QQmlListProperty', 'QQmlListReference', 'QQmlNdefRecord',\n            'QQmlNetworkAccessManagerFactory', 'QQmlParserStatus', 'QQmlProperty',\n            'QQmlPropertyMap', 'QQmlPropertyValueSource', 'QQmlScriptString',\n            'QQuaternion', 'QQueue', 'QQuickFramebufferObject', 'QQuickImageProvider',\n            'QQuickItem', 'QQuickItemGrabResult', 'QQuickPaintedItem',\n            'QQuickRenderControl', 'QQuickTextDocument', 'QQuickTextureFactory',\n            'QQuickView', 'QQuickWidget', 'QQuickWindow', 'QTouchEventSequence',\n            'Qoutputrange', 'QRadialGradient', 'QRadioButton', 'QRadioData',\n            'QRadioDataControl', 'QRadioTuner', 'QRadioTunerControl',\n            'QRasterPaintEngine', 'QRasterWindow', 'QRawFont', 'QReadLocker',\n            'QReadWriteLock', 'QRect', 'QRectF', 'QRegExp', 'QRegExpValidator',\n            'QRegion', 'QRegularExpression', 'QRegularExpressionMatch',\n            'QRegularExpressionMatchIterator', 'QRegularExpressionValidator',\n            'QResizeEvent', 'QResource', 'QRotationFilter', 'QRotationReading',\n            'QRotationSensor', 'QRubberBand', 'QRunnable', 'QSGAbstractRenderer',\n            'QSGBasicGeometryNode', 'QSGClipNode', 'QSGDynamicTexture',\n            'QSGEngine', 'QSGFlatColorMaterial', 'QSGGeometry', 'QSGGeometryNode',\n            'QSGMaterial', 'QSGMaterialShader', 'QSGMaterialType', 'QSGNode',\n            'QSGOpacityNode', 'QSGOpaqueTextureMaterial', 'QSGSimpleMaterial',\n            'QSGSimpleMaterialShader', 'QSGSimpleRectNode',\n            'QSGSimpleTextureNode', 'QSGTexture', 'QSGTextureMaterial',\n            'QSGTextureProvider', 'QSGTransformNode', 'QSGVertexColorMaterial',\n            'QSaveFile', 'QScopedArrayPointer', 'QScopedPointer',\n            'QScopedValueRollback', 'QScreen', 'QScriptClass',\n            'QScriptClassPropertyIterator', 'QScriptContext',\n            'QScriptContextInfo', 'QScriptEngine', 'QScriptEngineAgent',\n            'QScriptEngineDebugger', 'QScriptExtensionPlugin', 'QScriptProgram',\n            'QScriptString', 'QScriptSyntaxCheckResult', 'QScriptValue',\n            'QScriptValueIterator', 'QScriptable', 'QScrollArea', 'QScrollBar',\n            'QScrollEvent', 'QScrollPrepareEvent', 'QScroller',\n            'QScrollerProperties', 'QSemaphore', 'QSensor', 'QSensorBackend',\n            'QSensorBackendFactory', 'QSensorChangesInterface', 'QSensorFilter',\n            'QSensorGesture', 'QSensorGestureManager',\n            'QSensorGesturePluginInterface', 'QSensorGestureRecognizer',\n            'QSensorManager', 'QSensorPluginInterface', 'QSensorReading',\n            'QSequentialAnimationGroup', 'QSequentialIterable', 'QSerialPort',\n            'QSerialPortInfo', 'QSessionManager', 'QSet', 'QSetIterator',\n            'QSettings', 'QSharedData', 'QSharedDataPointer', 'QSharedMemory',\n            'QSharedPointer', 'QShortcut', 'QShortcutEvent', 'QShowEvent',\n            'QSignalBlocker', 'QSignalMapper', 'QSignalSpy', 'QSignalTransition',\n            'QSimpleXmlNodeModel', 'QSize', 'QSizeF', 'QSizeGrip', 'QSizePolicy',\n            'QSlider', 'QSocketNotifier', 'QSortFilterProxyModel', 'QSound',\n            'QSoundEffect', 'QSourceLocation', 'QSpacerItem', 'QSpinBox',\n            'QSplashScreen', 'QSplitter', 'QSplitterHandle', 'QSqlDatabase',\n            'QSqlDriver', 'QSqlDriverCreator', 'QSqlDriverCreatorBase',\n            'QSqlDriverPlugin', 'QSqlError', 'QSqlField', 'QSqlIndex',\n            'QSqlQuery', 'QSqlQueryModel', 'QSqlRecord', 'QSqlRelation',\n            'QSqlRelationalDelegate', 'QSqlRelationalTableModel', 'QSqlResult',\n            'QSqlTableModel', 'QSslCertificate', 'QSslCertificateExtension',\n            'QSslCipher', 'QSslConfiguration', 'QSslError', 'QSslKey',\n            'QSslSocket', 'QStack', 'QStackedLayout', 'QStackedWidget',\n            'QStandardItem', 'QStandardItemEditorCreator', 'QStandardItemModel',\n            'QStandardPaths', 'QState', 'QStateMachine', 'QStaticPlugin',\n            'QStaticText', 'QStatusBar', 'QStatusTipEvent', 'QStorageInfo',\n            'QString', 'QStringList', 'QStringListModel', 'QStringMatcher',\n            'QStringRef', 'QStyle', 'QStyleFactory', 'QStyleHintReturn',\n            'QStyleHintReturnMask', 'QStyleHintReturnVariant', 'QStyleHints',\n            'QStyleOption', 'QStyleOptionButton', 'QStyleOptionComboBox',\n            'QStyleOptionComplex', 'QStyleOptionDockWidget',\n            'QStyleOptionFocusRect', 'QStyleOptionFrame',\n            'QStyleOptionGraphicsItem', 'QStyleOptionGroupBox',\n            'QStyleOptionHeader', 'QStyleOptionMenuItem',\n            'QStyleOptionProgressBar', 'QStyleOptionRubberBand',\n            'QStyleOptionSizeGrip', 'QStyleOptionSlider',\n            'QStyleOptionSpinBox', 'QStyleOptionTab',\n            'QStyleOptionTabBarBase', 'QStyleOptionTabWidgetFrame',\n            'QStyleOptionTitleBar', 'QStyleOptionToolBar',\n            'QStyleOptionToolBox', 'QStyleOptionToolButton',\n            'QStyleOptionViewItem', 'QStylePainter', 'QStylePlugin',\n            'QStyledItemDelegate', 'QSupportedWritingSystems', 'QSurface',\n            'QSurfaceFormat', 'QSvgGenerator', 'QSvgRenderer', 'QSvgWidget',\n            'QSwipeGesture', 'QSyntaxHighlighter', 'QSysInfo', 'QSystemSemaphore',\n            'QSystemTrayIcon', 'QTabBar', 'QTabWidget', 'QTableView',\n            'QTableWidget', 'QTableWidgetItem', 'QTableWidgetSelectionRange',\n            'QTabletEvent', 'QTapAndHoldGesture', 'QTapFilter', 'QTapGesture',\n            'QTapReading', 'QTapSensor', 'QTcpServer', 'QTcpSocket',\n            'QTemporaryDir', 'QTemporaryFile', 'QTestEventList', 'QTextBlock',\n            'QTextBlockFormat', 'QTextBlockGroup', 'QTextBlockUserData',\n            'QTextBoundaryFinder', 'QTextBrowser', 'QTextCharFormat',\n            'QTextCodec', 'QTextCursor', 'QTextDecoder', 'QTextDocument',\n            'QTextDocumentFragment', 'QTextDocumentWriter', 'QTextEdit',\n            'QTextEncoder', 'QTextFormat', 'QTextFragment', 'QTextFrame',\n            'QTextFrameFormat', 'QTextImageFormat', 'QTextInlineObject',\n            'QTextItem', 'QTextLayout', 'QTextLength', 'QTextLine', 'QTextList',\n            'QTextListFormat', 'QTextObject', 'QTextObjectInterface',\n            'QTextOption', 'QTextStream', 'QTextTable', 'QTextTableCell',\n            'QTextTableCellFormat', 'QTextTableFormat', 'QThread', 'QThreadPool',\n            'QThreadStorage', 'QTileRules', 'QTiltFilter', 'QTiltReading',\n            'QTiltSensor', 'QTime', 'QTimeEdit', 'QTimeLine', 'QTimeZone',\n            'QTimer', 'QTimerEvent', 'QToolBar', 'QToolBox', 'QToolButton',\n            'QToolTip', 'QTouchDevice', 'QTouchEvent', 'QTransform',\n            'QTranslator', 'QTreeView', 'QTreeWidget', 'QTreeWidgetItem',\n            'QTreeWidgetItemIterator', 'QUdpSocket', 'QUiLoader', 'QUndoCommand',\n            'QUndoGroup', 'QUndoStack', 'QUndoView', 'QUnhandledException',\n            'QUrl', 'QUrlQuery', 'QUuid', 'QVBoxLayout', 'QValidator',\n            'QVarLengthArray', 'QVariant', 'QVariantAnimation', 'QVector',\n            'QVector2D', 'QVector3D', 'QVector4D', 'QVectorIterator',\n            'QVideoDeviceSelectorControl', 'QVideoEncoderSettings',\n            'QVideoEncoderSettingsControl', 'QVideoFrame', 'QVideoProbe',\n            'QVideoRendererControl', 'QVideoSurfaceFormat', 'QVideoWidget',\n            'QVideoWidgetControl', 'QVideoWindowControl', 'QWGLNativeContext',\n            'QWaitCondition', 'QWeakPointer', 'QWebChannel',\n            'QWebChannelAbstractTransport', 'QWebDatabase', 'QWebElement',\n            'QWebElementCollection', 'QWebEngineHistory', 'QWebEngineHistoryItem',\n            'QWebEnginePage', 'QWebEngineSettings', 'QWebEngineView', 'QWebFrame',\n            'QWebHistory', 'QWebHistoryInterface', 'QWebHistoryItem',\n            'QWebHitTestResult', 'QWebInspector', 'QWebPage', 'QWebPluginFactory',\n            'QWebSecurityOrigin', 'QWebSettings', 'QWebSocket',\n            'QWebSocketCorsAuthenticator', 'QWebSocketServer', 'QWebView',\n            'QWhatsThis', 'QWhatsThisClickedEvent', 'QWheelEvent', 'QWidget',\n            'QWidgetAction', 'QWidgetItem', 'QWinEventNotifier', 'QWinJumpList',\n            'QWinJumpListCategory', 'QWinJumpListItem', 'QWinMime',\n            'QWinTaskbarButton', 'QWinTaskbarProgress', 'QWinThumbnailToolBar',\n            'QWinThumbnailToolButton', 'QWindow', 'QWindowStateChangeEvent',\n            'QWizard', 'QWizardPage', 'QWriteLocker', 'QX11Info',\n            'QXcbWindowFunctions', 'QXmlAttributes', 'QXmlContentHandler',\n            'QXmlDTDHandler', 'QXmlDeclHandler', 'QXmlDefaultHandler',\n            'QXmlEntityResolver','QXmlErrorHandler', 'QXmlFormatter',\n            'QXmlInputSource', 'QXmlItem', 'QXmlLexicalHandler', 'QXmlLocator',\n            'QXmlName', 'QXmlNamePool', 'QXmlNamespaceSupport',\n            'QXmlNodeModelIndex', 'QXmlParseException', 'QXmlQuery',\n            'QXmlReader', 'QXmlResultItems', 'QXmlSchema', 'QXmlSchemaValidator',\n            'QXmlSerializer', 'QXmlSimpleReader', 'QXmlStreamAttribute',\n            'QXmlStreamAttributes', 'QXmlStreamEntityDeclaration',\n            'QXmlStreamEntityResolver', 'QXmlStreamNamespaceDeclaration',\n            'QXmlStreamNotationDeclaration', 'QXmlStreamReader',\n            'QXmlStreamWriter'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':', ',', ';', '|', '<', '>'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight:bold;',\n            2 => 'color: #0057AE;',\n            3 => 'color: #2B74C7;',\n            4 => 'color: #0057AE;',\n            5 => 'color: #22aadd;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #888888;',\n            2 => 'color: #006E28;',\n            3 => 'color: #BF0303;',\n            4 => 'color: #BF0303;',\n            'MULTI' => 'color: #888888; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #660099; font-weight: bold;',\n            3 => 'color: #660099; font-weight: bold;',\n            4 => 'color: #660099; font-weight: bold;',\n            5 => 'color: #006699; font-weight: bold;',\n            'HARD' => '',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #006E28;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #BF0303;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #B08000;',\n            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #2B74C7;',\n            2 => 'color: #2B74C7;',\n            3 => 'color: #2B74C7;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #006E28;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => 'http://qt-project.org/doc/latest/{FNAMEL}.html'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        2 => '::',\n        3 => '-&gt;',\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\|\\#>|^])\",\n            'DISALLOWED_AFTER' => \"(?![a-zA-Z0-9_<\\|%\\\\-])\"\n        ),\n        'OOLANG' => array(\n            'MATCH_AFTER' => '~?[a-zA-Z][a-zA-Z0-9_]*',\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/cpp-winapi.php",
    "content": "<?php\n/*************************************************************************************\n * cpp-winapi.php\n * -------\n * Author: Dennis Bayer (Dennis.Bayer@mnifh-giessen.de)\n * Contributors:\n *  - M. Uli Kusterer (witness.of.teachtext@gmx.net)\n *  - Jack Lloyd (lloyd@randombit.net)\n *  - Benny Baumann (BenBE@geshi.org)\n * Copyright: (c) 2004 Dennis Bayer, Nigel McNie, 2012 Benny Baumann (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/09/27\n *\n * C++ language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *  -  Added description of extra language features (SF#1970248)\n * 2004/XX/XX (1.0.2)\n *  -  Added several new keywords (Jack Lloyd)\n * 2004/11/27 (1.0.1)\n *  -  Added StdCLib function and constant names, changed color scheme to\n *     a cleaner one. (M. Uli Kusterer)\n *  -  Added support for multiple object splitters\n * 2004/10/27 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'C++ (WinAPI)',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Multiline-continued single-line comments\n        1 => '/\\/\\/(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //Multiline-continued preprocessor define\n        2 => '/#(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //C++ 11 string literal extensions\n        3 => '/(?:L|u8?|U)(?=\")/',\n        //C++ 11 string literal extensions (raw)\n        4 => '/R\"([^()\\s\\\\\\\\]*)\\((?:(?!\\)\\\\1\").)*\\)\\\\1\"/ms'\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[abfnrtv\\\\\\'\\\"?\\n]#i\",\n        //Hexadecimal Char Specs\n        2 => \"#\\\\\\\\x[\\da-fA-F]{2}#\",\n        //Hexadecimal Char Specs\n        3 => \"#\\\\\\\\u[\\da-fA-F]{4}#\",\n        //Hexadecimal Char Specs\n        4 => \"#\\\\\\\\U[\\da-fA-F]{8}#\",\n        //Octal Char Specs\n        5 => \"#\\\\\\\\[0-7]{1,3}#\"\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'break', 'case', 'continue', 'default', 'do', 'else', 'for', 'goto', 'if', 'return',\n            'switch', 'throw', 'while'\n            ),\n        2 => array(\n            'NULL', 'false', 'true', 'enum', 'errno', 'EDOM',\n            'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',\n            'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',\n            'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',\n            'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',\n            'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',\n            'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',\n            'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',\n            'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',\n            'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam',\n            'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',\n            'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',\n            'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace',\n            'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 'reinterpret_cast',\n            'static_cast', 'explicit', 'friend', 'typename', 'typeid', 'class'\n            ),\n        3 => array(\n            'cin', 'cerr', 'clog', 'cout', 'delete', 'new', 'this',\n            'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',\n            'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',\n            'ispunct', 'isspace', 'isupper', 'isxdigit', 'tolower', 'toupper',\n            'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',\n            'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',\n            'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp',\n            'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',\n            'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',\n            'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',\n            'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',\n            'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',\n            'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',\n            'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',\n            'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',\n            'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',\n            'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',\n            'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',\n            'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',\n            'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'\n            ),\n        4 => array(\n            'auto', 'bool', 'char', 'const', 'double', 'float', 'int', 'long', 'longint',\n            'register', 'short', 'shortint', 'signed', 'static', 'struct',\n            'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf',\n            'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',\n            'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', 'wchar_t',\n\n            'int8', 'int16', 'int32', 'int64',\n            'uint8', 'uint16', 'uint32', 'uint64',\n\n            'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',\n            'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',\n\n            'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',\n            'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',\n\n            'int8_t', 'int16_t', 'int32_t', 'int64_t',\n            'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',\n\n            'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t'\n            ),\n        // Public API\n        5 => array(\n            'AssignProcessToJobObject', 'CommandLineToArgvW', 'ConvertThreadToFiber',\n            'CreateFiber', 'CreateJobObjectA', 'CreateJobObjectW', 'CreateProcessA',\n            'CreateProcessAsUserA', 'CreateProcessAsUserW', 'CreateProcessW',\n            'CreateRemoteThread', 'CreateThread', 'DeleteFiber', 'ExitProcess',\n            'ExitThread', 'FreeEnvironmentStringsA', 'FreeEnvironmentStringsW',\n            'GetCommandLineA', 'GetCommandLineW', 'GetCurrentProcess',\n            'GetCurrentProcessId', 'GetCurrentThread', 'GetCurrentThreadId',\n            'GetEnvironmentStringsA', 'GetEnvironmentStringsW',\n            'GetEnvironmentVariableA', 'GetEnvironmentVariableW', 'GetExitCodeProcess',\n            'GetExitCodeThread', 'GetGuiResources', 'GetPriorityClass',\n            'GetProcessAffinityMask', 'GetProcessPriorityBoost',\n            'GetProcessShutdownParameters', 'GetProcessTimes', 'GetProcessVersion',\n            'GetProcessWorkingSetSize', 'GetStartupInfoA', 'GetStartupInfoW',\n            'GetThreadPriority', 'GetThreadPriorityBoost', 'GetThreadTimes',\n            'OpenJobObjectA', 'OpenJobObjectW', 'OpenProcess',\n            'QueryInformationJobObject', 'ResumeThread', 'SetEnvironmentVariableA',\n            'SetEnvironmentVariableW', 'SetInformationJobObject', 'SetPriorityClass',\n            'SetProcessAffinityMask', 'SetProcessPriorityBoost',\n            'SetProcessShutdownParameters', 'SetProcessWorkingSetSize',\n            'SetThreadAffinityMask', 'SetThreadIdealProcessor', 'SetThreadPriority',\n            'SetThreadPriorityBoost', 'Sleep', 'SleepEx', 'SuspendThread',\n            'SwitchToFiber', 'SwitchToThread', 'TerminateJobObject', 'TerminateProcess',\n            'TerminateThread', 'WaitForInputIdle', 'WinExec',\n\n            '_hread', '_hwrite', '_lclose', '_lcreat', '_llseek', '_lopen', '_lread',\n            '_lwrite', 'AreFileApisANSI', 'CancelIo', 'CopyFileA', 'CopyFileW',\n            'CreateDirectoryA', 'CreateDirectoryExA', 'CreateDirectoryExW',\n            'CreateDirectoryW', 'CreateFileA', 'CreateFileW', 'DeleteFileA',\n            'DeleteFileW', 'FindClose', 'FindCloseChangeNotification',\n            'FindFirstChangeNotificationA', 'FindFirstChangeNotificationW',\n            'FindFirstFileA', 'FindFirstFileW', 'FindNextFileA', 'FindNextFileW',\n            'FlushFileBuffers', 'GetCurrentDirectoryA', 'GetCurrentDirectoryW',\n            'GetDiskFreeSpaceA', 'GetDiskFreeSpaceExA', 'GetDiskFreeSpaceExW',\n            'GetDiskFreeSpaceW', 'GetDriveTypeA', 'GetDriveTypeW', 'GetFileAttributesA',\n            'GetFileAttributesExA', 'GetFileAttributesExW', 'GetFileAttributesW',\n            'GetFileInformationByHandle', 'GetFileSize', 'GetFileType',\n            'GetFullPathNameA', 'GetFullPathNameW', 'GetLogicalDrives',\n            'GetLogicalDriveStringsA', 'GetLogicalDriveStringsW', 'GetLongPathNameA',\n            'GetLongPathNameW', 'GetShortPathNameA', 'GetShortPathNameW',\n            'GetTempFileNameA', 'GetTempFileNameW', 'GetTempPathA', 'GetTempPathW',\n            'LockFile', 'MoveFileA', 'MoveFileW', 'MulDiv', 'OpenFile',\n            'QueryDosDeviceA', 'QueryDosDeviceW', 'ReadFile', 'ReadFileEx',\n            'RemoveDirectoryA', 'RemoveDirectoryW', 'SearchPathA', 'SearchPathW',\n            'SetCurrentDirectoryA', 'SetCurrentDirectoryW', 'SetEndOfFile',\n            'SetFileApisToANSI', 'SetFileApisToOEM', 'SetFileAttributesA',\n            'SetFileAttributesW', 'SetFilePointer', 'SetHandleCount',\n            'SetVolumeLabelA', 'SetVolumeLabelW', 'UnlockFile', 'WriteFile',\n            'WriteFileEx',\n\n            'DeviceIoControl',\n\n            'GetModuleFileNameA', 'GetModuleFileNameW', 'GetProcAddress',\n            'LoadLibraryA', 'LoadLibraryExA', 'LoadLibraryExW', 'LoadLibraryW',\n            'LoadModule',\n\n            'GetPrivateProfileIntA', 'GetPrivateProfileIntW',\n            'GetPrivateProfileSectionA', 'GetPrivateProfileSectionNamesA',\n            'GetPrivateProfileSectionNamesW', 'GetPrivateProfileSectionW',\n            'GetPrivateProfileStringA', 'GetPrivateProfileStringW',\n            'GetPrivateProfileStructA', 'GetPrivateProfileStructW',\n            'GetProfileIntA', 'GetProfileIntW', 'GetProfileSectionA',\n            'GetProfileSectionW', 'GetProfileStringA', 'GetProfileStringW',\n            'RegCloseKey', 'RegConnectRegistryA', 'RegConnectRegistryW',\n            'RegCreateKeyA', 'RegCreateKeyExA', 'RegCreateKeyExW',\n            'RegCreateKeyW', 'RegDeleteKeyA', 'RegDeleteKeyW', 'RegDeleteValueA',\n            'RegDeleteValueW', 'RegEnumKeyA', 'RegEnumKeyExA', 'RegEnumKeyExW',\n            'RegEnumKeyW', 'RegEnumValueA', 'RegEnumValueW', 'RegFlushKey',\n            'RegGetKeySecurity', 'RegLoadKeyA', 'RegLoadKeyW',\n            'RegNotifyChangeKeyValue', 'RegOpenKeyA', 'RegOpenKeyExA', 'RegOpenKeyExW',\n            'RegOpenKeyW', 'RegOverridePredefKey', 'RegQueryInfoKeyA',\n            'RegQueryInfoKeyW', 'RegQueryMultipleValuesA', 'RegQueryMultipleValuesW',\n            'RegQueryValueA', 'RegQueryValueExA', 'RegQueryValueExW', 'RegQueryValueW',\n            'RegReplaceKeyA', 'RegReplaceKeyW', 'RegRestoreKeyA', 'RegRestoreKeyW',\n            'RegSaveKeyA', 'RegSaveKeyW', 'RegSetKeySecurity', 'RegSetValueA',\n            'RegSetValueExA', 'RegSetValueExW', 'RegSetValueW', 'RegUnLoadKeyA',\n            'RegUnLoadKeyW', 'WritePrivateProfileSectionA', 'WritePrivateProfileSectionW',\n            'WritePrivateProfileStringA', 'WritePrivateProfileStringW',\n            'WritePrivateProfileStructA', 'WritePrivateProfileStructW',\n            'WriteProfileSectionA', 'WriteProfileSectionW', 'WriteProfileStringA',\n            'WriteProfileStringW',\n\n            'AccessCheck', 'AccessCheckAndAuditAlarmA', 'AccessCheckAndAuditAlarmW',\n            'AccessCheckByType', 'AccessCheckByTypeAndAuditAlarmA',\n            'AccessCheckByTypeAndAuditAlarmW', 'AccessCheckByTypeResultList',\n            'AccessCheckByTypeResultListAndAuditAlarmA', 'AccessCheckByTypeResultListAndAuditAlarmW',\n            'AddAccessAllowedAce', 'AddAccessAllowedAceEx', 'AddAccessAllowedObjectAce',\n            'AddAccessDeniedAce', 'AddAccessDeniedAceEx', 'AddAccessDeniedObjectAce',\n            'AddAce', 'AddAuditAccessAce', 'AddAuditAccessAceEx', 'AddAuditAccessObjectAce',\n            'AdjustTokenGroups', 'AdjustTokenPrivileges', 'AllocateAndInitializeSid',\n            'AllocateLocallyUniqueId', 'AreAllAccessesGranted', 'AreAnyAccessesGranted',\n            'BuildExplicitAccessWithNameA', 'BuildExplicitAccessWithNameW',\n            'BuildImpersonateExplicitAccessWithNameA', 'BuildImpersonateExplicitAccessWithNameW',\n            'BuildImpersonateTrusteeA', 'BuildImpersonateTrusteeW', 'BuildSecurityDescriptorA',\n            'BuildSecurityDescriptorW', 'BuildTrusteeWithNameA', 'BuildTrusteeWithNameW',\n            'BuildTrusteeWithSidA', 'BuildTrusteeWithSidW',\n            'ConvertToAutoInheritPrivateObjectSecurity', 'CopySid', 'CreatePrivateObjectSecurity',\n            'CreatePrivateObjectSecurityEx', 'CreateRestrictedToken', 'DeleteAce',\n            'DestroyPrivateObjectSecurity', 'DuplicateToken', 'DuplicateTokenEx',\n            'EqualPrefixSid', 'EqualSid', 'FindFirstFreeAce', 'FreeSid', 'GetAce',\n            'GetAclInformation', 'GetAuditedPermissionsFromAclA', 'GetAuditedPermissionsFromAclW',\n            'GetEffectiveRightsFromAclA', 'GetEffectiveRightsFromAclW',\n            'GetExplicitEntriesFromAclA', 'GetExplicitEntriesFromAclW', 'GetFileSecurityA',\n            'GetFileSecurityW', 'GetKernelObjectSecurity', 'GetLengthSid', 'GetMultipleTrusteeA',\n            'GetMultipleTrusteeOperationA', 'GetMultipleTrusteeOperationW', 'GetMultipleTrusteeW',\n            'GetNamedSecurityInfoA', 'GetNamedSecurityInfoW', 'GetPrivateObjectSecurity',\n            'GetSecurityDescriptorControl', 'GetSecurityDescriptorDacl',\n            'GetSecurityDescriptorGroup', 'GetSecurityDescriptorLength',\n            'GetSecurityDescriptorOwner', 'GetSecurityDescriptorSacl', 'GetSecurityInfo',\n            'GetSidIdentifierAuthority', 'GetSidLengthRequired', 'GetSidSubAuthority',\n            'GetSidSubAuthorityCount', 'GetTokenInformation', 'GetTrusteeFormA',\n            'GetTrusteeFormW', 'GetTrusteeNameA', 'GetTrusteeNameW', 'GetTrusteeTypeA',\n            'GetTrusteeTypeW', 'GetUserObjectSecurity', 'ImpersonateLoggedOnUser',\n            'ImpersonateNamedPipeClient', 'ImpersonateSelf', 'InitializeAcl',\n            'InitializeSecurityDescriptor', 'InitializeSid', 'IsTokenRestricted', 'IsValidAcl',\n            'IsValidSecurityDescriptor', 'IsValidSid', 'LogonUserA', 'LogonUserW',\n            'LookupAccountNameA', 'LookupAccountNameW', 'LookupAccountSidA', 'LookupAccountSidW',\n            'LookupPrivilegeDisplayNameA', 'LookupPrivilegeDisplayNameW', 'LookupPrivilegeNameA',\n            'LookupPrivilegeNameW', 'LookupPrivilegeValueA', 'LookupPrivilegeValueW',\n            'LookupSecurityDescriptorPartsA', 'LookupSecurityDescriptorPartsW', 'MakeAbsoluteSD',\n            'MakeSelfRelativeSD', 'MapGenericMask', 'ObjectCloseAuditAlarmA',\n            'ObjectCloseAuditAlarmW', 'ObjectDeleteAuditAlarmA', 'ObjectDeleteAuditAlarmW',\n            'ObjectOpenAuditAlarmA', 'ObjectOpenAuditAlarmW', 'ObjectPrivilegeAuditAlarmA',\n            'ObjectPrivilegeAuditAlarmW', 'OpenProcessToken', 'OpenThreadToken', 'PrivilegeCheck',\n            'PrivilegedServiceAuditAlarmA', 'PrivilegedServiceAuditAlarmW', 'RevertToSelf',\n            'SetAclInformation', 'SetEntriesInAclA', 'SetEntriesInAclW', 'SetFileSecurityA',\n            'SetFileSecurityW', 'SetKernelObjectSecurity', 'SetNamedSecurityInfoA',\n            'SetNamedSecurityInfoW', 'SetPrivateObjectSecurity', 'SetPrivateObjectSecurityEx',\n            'SetSecurityDescriptorControl', 'SetSecurityDescriptorDacl',\n            'SetSecurityDescriptorGroup', 'SetSecurityDescriptorOwner',\n            'SetSecurityDescriptorSacl', 'SetSecurityInfo', 'SetThreadToken',\n            'SetTokenInformation', 'SetUserObjectSecurity', 'ChangeServiceConfig2A',\n            'ChangeServiceConfig2W', 'ChangeServiceConfigA', 'ChangeServiceConfigW',\n            'CloseServiceHandle', 'ControlService', 'CreateServiceA', 'CreateServiceW',\n            'DeleteService', 'EnumDependentServicesA', 'EnumDependentServicesW',\n            'EnumServicesStatusA', 'EnumServicesStatusW', 'GetServiceDisplayNameA',\n            'GetServiceDisplayNameW', 'GetServiceKeyNameA', 'GetServiceKeyNameW',\n            'LockServiceDatabase', 'NotifyBootConfigStatus', 'OpenSCManagerA', 'OpenSCManagerW',\n            'OpenServiceA', 'OpenServiceW', 'QueryServiceConfig2A', 'QueryServiceConfig2W',\n            'QueryServiceConfigA', 'QueryServiceConfigW', 'QueryServiceLockStatusA',\n            'QueryServiceLockStatusW', 'QueryServiceObjectSecurity', 'QueryServiceStatus',\n            'RegisterServiceCtrlHandlerA', 'RegisterServiceCtrlHandlerW',\n            'SetServiceObjectSecurity', 'SetServiceStatus', 'StartServiceA',\n            'StartServiceCtrlDispatcherA', 'StartServiceCtrlDispatcherW', 'StartServiceW',\n            'UnlockServiceDatabase',\n\n            'MultinetGetConnectionPerformanceA', 'MultinetGetConnectionPerformanceW',\n            'NetAlertRaise', 'NetAlertRaiseEx', 'NetApiBufferAllocate', 'NetApiBufferFree',\n            'NetApiBufferReallocate', 'NetApiBufferSize', 'NetConnectionEnum', 'NetFileClose',\n            'NetFileGetInfo', 'NetGetAnyDCName', 'NetGetDCName', 'NetGetDisplayInformationIndex',\n            'NetGroupAdd', 'NetGroupAddUser', 'NetGroupDel', 'NetGroupDelUser', 'NetGroupEnum',\n            'NetGroupGetInfo', 'NetGroupGetUsers', 'NetGroupSetInfo', 'NetGroupSetUsers',\n            'NetLocalGroupAdd', 'NetLocalGroupAddMember', 'NetLocalGroupAddMembers',\n            'NetLocalGroupDel', 'NetLocalGroupDelMember', 'NetLocalGroupDelMembers',\n            'NetLocalGroupEnum', 'NetLocalGroupGetInfo', 'NetLocalGroupGetMembers',\n            'NetLocalGroupSetInfo', 'NetLocalGroupSetMembers', 'NetMessageBufferSend',\n            'NetMessageNameAdd', 'NetMessageNameDel', 'NetMessageNameEnum',\n            'NetMessageNameGetInfo', 'NetQueryDisplayInformation', 'NetRemoteComputerSupports',\n            'NetRemoteTOd', 'NetReplExportDirAdd', 'NetReplExportDirDel', 'NetReplExportDirEnum',\n            'NetReplExportDirGetInfo', 'NetReplExportDirLock', 'NetReplExportDirSetInfo',\n            'NetReplExportDirUnlock', 'NetReplGetInfo', 'NetReplImportDirAdd',\n            'NetReplImportDirDel', 'NetReplImportDirEnum', 'NetReplImportDirGetInfo',\n            'NetReplImportDirLock', 'NetReplImportDirUnlock', 'NetReplSetInfo',\n            'NetScheduleJobAdd', 'NetScheduleJobDel', 'NetScheduleJobEnum',\n            'NetScheduleJobGetInfo', 'NetServerComputerNameAdd', 'NetServerComputerNameDel',\n            'NetServerDiskEnum', 'NetServerEnum', 'NetServerEnumEx', 'NetServerGetInfo',\n            'NetServerSetInfo', 'NetServerTransportAdd', 'NetServerTransportAddEx',\n            'NetServerTransportDel', 'NetServerTransportEnum', 'NetSessionDel', 'NetSessionEnum',\n            'NetSessionGetInfo', 'NetShareAdd', 'NetShareCheck', 'NetShareDel', 'NetShareEnum',\n            'NetShareGetInfo', 'NetShareSetInfo', 'NetStatisticsGet', 'NetUseAdd', 'NetUseDel',\n            'NetUseEnum', 'NetUseGetInfo', 'NetUserAdd', 'NetUserChangePassword', 'NetUserDel',\n            'NetUserEnum', 'NetUserGetGroups', 'NetUserGetInfo', 'NetUserGetLocalGroups',\n            'NetUserModalsGet', 'NetUserModalsSet', 'NetUserSetGroups', 'NetUserSetInfo',\n            'NetWkstaGetInfo', 'NetWkstaSetInfo', 'NetWkstaTransportAdd', 'NetWkstaTransportDel',\n            'NetWkstaTransportEnum', 'NetWkstaUserEnum', 'NetWkstaUserGetInfo',\n            'NetWkstaUserSetInfo', 'WNetAddConnection2A', 'WNetAddConnection2W',\n            'WNetAddConnection3A', 'WNetAddConnection3W', 'WNetAddConnectionA',\n            'WNetAddConnectionW', 'WNetCancelConnection2A', 'WNetCancelConnection2W',\n            'WNetCancelConnectionA', 'WNetCancelConnectionW', 'WNetCloseEnum',\n            'WNetConnectionDialog', 'WNetConnectionDialog1A', 'WNetConnectionDialog1W',\n            'WNetDisconnectDialog', 'WNetDisconnectDialog1A', 'WNetDisconnectDialog1W',\n            'WNetEnumResourceA', 'WNetEnumResourceW', 'WNetGetConnectionA', 'WNetGetConnectionW',\n            'WNetGetLastErrorA', 'WNetGetLastErrorW', 'WNetGetNetworkInformationA',\n            'WNetGetNetworkInformationW', 'WNetGetProviderNameA', 'WNetGetProviderNameW',\n            'WNetGetResourceInformationA', 'WNetGetResourceInformationW',\n            'WNetGetResourceParentA', 'WNetGetResourceParentW', 'WNetGetUniversalNameA',\n            'WNetGetUniversalNameW', 'WNetGetUserA', 'WNetGetUserW', 'WNetOpenEnumA',\n            'WNetOpenEnumW', 'WNetUseConnectionA', 'WnetUseConnectionW',\n\n            'accept', 'bind', 'closesocket', 'connect', 'gethostbyaddr', 'gethostbyname',\n            'gethostname', 'getpeername', 'getprotobyname', 'getprotobynumber', 'getservbyname',\n            'getservbyport', 'getsockname', 'getsockopt', 'htonl', 'htons', 'inet_addr',\n            'inet_ntoa', 'ioctlsocket', 'listen', 'ntohl', 'ntohs', 'recv', 'recvfrom', 'select',\n            'send', 'sendto', 'setsockopt', 'shutdown', 'socket', 'WSAAccept',\n            'WSAAddressToStringA', 'WSAAddressToStringW', 'WSAAsyncGetHostByAddr',\n            'WSAAsyncGetHostByName', 'WSAAsyncGetProtoByName', 'WSAAsyncGetProtoByNumber',\n            'WSAAsyncGetServByName', 'WSAAsyncGetServByPort', 'WSAAsyncSelect',\n            'WSACancelAsyncRequest', 'WSACancelBlockingCall', 'WSACleanup', 'WSACloseEvent',\n            'WSAConnect', 'WSACreateEvent', 'WSADuplicateSocketA', 'WSADuplicateSocketW',\n            'WSAEnumNameSpaceProvidersA', 'WSAEnumNameSpaceProvidersW', 'WSAEnumNetworkEvents',\n            'WSAEnumProtocolsA', 'WSAEnumProtocolsW', 'WSAEventSelect', 'WSAGetLastError',\n            'WSAGetOverlappedResult', 'WSAGetQOSByName', 'WSAGetServiceClassInfoA',\n            'WSAGetServiceClassInfoW', 'WSAGetServiceClassNameByClassIdA',\n            'WSAGetServiceClassNameByClassIdW', 'WSAHtonl', 'WSAHtons', 'WSAInstallServiceClassA',\n            'WSAInstallServiceClassW', 'WSAIoctl', 'WSAIsBlocking', 'WSAJoinLeaf',\n            'WSALookupServiceBeginA', 'WSALookupServiceBeginW', 'WSALookupServiceEnd',\n            'WSALookupServiceNextA', 'WSALookupServiceNextW', 'WSANtohl', 'WSANtohs',\n            'WSAProviderConfigChange', 'WSARecv', 'WSARecvDisconnect', 'WSARecvFrom',\n            'WSARemoveServiceClass', 'WSAResetEvent', 'WSASend', 'WSASendDisconnect', 'WSASendTo',\n            'WSASetBlockingHook', 'WSASetEvent', 'WSASetLastError', 'WSASetServiceA',\n            'WSASetServiceW', 'WSASocketA', 'WSASocketW', 'WSAStartup', 'WSAStringToAddressA',\n            'WSAStringToAddressW', 'WSAUnhookBlockingHook', 'WSAWaitForMultipleEvents',\n            'WSCDeinstallProvider', 'WSCEnableNSProvider', 'WSCEnumProtocols',\n            'WSCGetProviderPath', 'WSCInstallNameSpace', 'WSCInstallProvider',\n            'WSCUnInstallNameSpace',\n\n            'ContinueDebugEvent', 'DebugActiveProcess', 'DebugBreak', 'FatalExit',\n            'FlushInstructionCache', 'GetThreadContext', 'GetThreadSelectorEntry',\n            'IsDebuggerPresent', 'OutputDebugStringA', 'OutputDebugStringW', 'ReadProcessMemory',\n            'SetDebugErrorLevel', 'SetThreadContext', 'WaitForDebugEvent', 'WriteProcessMemory',\n\n            'CloseHandle', 'DuplicateHandle', 'GetHandleInformation', 'SetHandleInformation',\n\n            'AdjustWindowRect', 'AdjustWindowRectEx', 'AllowSetForegroundWindow',\n            'AnimateWindow', 'AnyPopup', 'ArrangeIconicWindows', 'BeginDeferWindowPos',\n            'BringWindowToTop', 'CascadeWindows', 'ChildWindowFromPoint',\n            'ChildWindowFromPointEx', 'CloseWindow', 'CreateWindowExA', 'CreateWindowExW',\n            'DeferWindowPos', 'DestroyWindow', 'EndDeferWindowPos', 'EnumChildWindows',\n            'EnumThreadWindows', 'EnumWindows', 'FindWindowA', 'FindWindowExA', 'FindWindowExW',\n            'FindWindowW', 'GetAltTabInfoA', 'GetAltTabInfoW', 'GetAncestor', 'GetClientRect',\n            'GetDesktopWindow', 'GetForegroundWindow', 'GetGUIThreadInfo', 'GetLastActivePopup',\n            'GetLayout', 'GetParent', 'GetProcessDefaultLayout', 'GetTitleBarInf', 'GetTopWindow',\n            'GetWindow', 'GetWindowInfo', 'GetWindowModuleFileNameA', 'GetWindowModuleFileNameW',\n            'GetWindowPlacement', 'GetWindowRect', 'GetWindowTextA', 'GetWindowTextLengthA',\n            'GetWindowTextLengthW', 'GetWindowTextW', 'GetWindowThreadProcessId', 'IsChild',\n            'IsIconic', 'IsWindow', 'IsWindowUnicode', 'IsWindowVisible', 'IsZoomed',\n            'LockSetForegroundWindow', 'MoveWindow', 'OpenIcon', 'RealChildWindowFromPoint',\n            'RealGetWindowClassA', 'RealGetWindowClassW', 'SetForegroundWindow',\n            'SetLayeredWindowAttributes', 'SetLayout', 'SetParent', 'SetProcessDefaultLayout',\n            'SetWindowPlacement', 'SetWindowPos', 'SetWindowTextA', 'SetWindowTextW',\n            'ShowOwnedPopups', 'ShowWindow', 'ShowWindowAsync', 'TileWindows',\n            'UpdateLayeredWindow', 'WindowFromPoint',\n\n            'CreateDialogIndirectParamA', 'CreateDialogIndirectParamW', 'CreateDialogParamA',\n            'CreateDialogParamW', 'DefDlgProcA', 'DefDlgProcW', 'DialogBoxIndirectParamA',\n            'DialogBoxIndirectParamW', 'DialogBoxParamA', 'DialogBoxParamW', 'EndDialog',\n            'GetDialogBaseUnits', 'GetDlgCtrlID', 'GetDlgItem', 'GetDlgItemInt',\n            'GetDlgItemTextA', 'GetDlgItemTextW', 'GetNextDlgGroupItem', 'GetNextDlgTabItem',\n            'IsDialogMessageA', 'IsDialogMessageW', 'MapDialogRect', 'MessageBoxA',\n            'MessageBoxExA', 'MessageBoxExW', 'MessageBoxIndirectA', 'MessageBoxIndirectW',\n            'MessageBoxW', 'SendDlgItemMessageA', 'SendDlgItemMessageW', 'SetDlgItemInt',\n            'SetDlgItemTextA', 'SetDlgItemTextW',\n\n            'GetWriteWatch', 'GlobalMemoryStatus', 'GlobalMemoryStatusEx', 'IsBadCodePtr',\n            'IsBadReadPtr', 'IsBadStringPtrA', 'IsBadStringPtrW', 'IsBadWritePtr',\n            'ResetWriteWatch', 'AllocateUserPhysicalPages', 'FreeUserPhysicalPages',\n            'MapUserPhysicalPages', 'MapUserPhysicalPagesScatter', 'GlobalAlloc', 'GlobalFlags',\n            'GlobalFree', 'GlobalHandle', 'GlobalLock', 'GlobalReAlloc', 'GlobalSize',\n            'GlobalUnlock', 'LocalAlloc', 'LocalFlags', 'LocalFree', 'LocalHandle', 'LocalLock',\n            'LocalReAlloc', 'LocalSize', 'LocalUnlock', 'GetProcessHeap', 'GetProcessHeaps',\n            'HeapAlloc', 'HeapCompact', 'HeapCreate', 'HeapDestroy', 'HeapFree', 'HeapLock',\n            'HeapReAlloc', 'HeapSize', 'HeapUnlock', 'HeapValidate', 'HeapWalk', 'VirtualAlloc',\n            'VirtualAllocEx', 'VirtualFree', 'VirtualFreeEx', 'VirtualLock', 'VirtualProtect',\n            'VirtualProtectEx', 'VirtualQuery', 'VirtualQueryEx', 'VirtualUnlock',\n            'GetFreeSpace', 'GlobalCompact', 'GlobalFix', 'GlobalUnfix', 'GlobalUnWire',\n            'GlobalWire', 'IsBadHugeReadPtr', 'IsBadHugeWritePtr', 'LocalCompact', 'LocalShrink',\n\n            'GetClassInfoA', 'GetClassInfoW', 'GetClassInfoExA', 'GetClassInfoExW',\n            'GetClassLongA', 'GetClassLongW', 'GetClassLongPtrA', 'GetClassLongPtrW',\n            'RegisterClassA', 'RegisterClassW', 'RegisterClassExA', 'RegisterClassExW',\n            'SetClassLongA', 'SetClassLongW', 'SetClassLongPtrA', 'SetClassLongPtrW',\n            'SetWindowLongA', 'SetWindowLongW', 'SetWindowLongPtrA', 'SetWindowLongPtrW',\n            'UnregisterClassA', 'UnregisterClassW', 'GetClassWord', 'GetWindowWord',\n            'SetClassWord', 'SetWindowWord'\n            ),\n        // Native API\n        6 => array(\n            'CsrAllocateCaptureBuffer', 'CsrAllocateCapturePointer', 'CsrAllocateMessagePointer',\n            'CsrCaptureMessageBuffer', 'CsrCaptureMessageString', 'CsrCaptureTimeout',\n            'CsrClientCallServer', 'CsrClientConnectToServer', 'CsrFreeCaptureBuffer',\n            'CsrIdentifyAlertableThread', 'CsrNewThread', 'CsrProbeForRead', 'CsrProbeForWrite',\n            'CsrSetPriorityClass',\n\n            'LdrAccessResource', 'LdrDisableThreadCalloutsForDll', 'LdrEnumResources',\n            'LdrFindEntryForAddress', 'LdrFindResource_U', 'LdrFindResourceDirectory_U',\n            'LdrGetDllHandle', 'LdrGetProcedureAddress', 'LdrInitializeThunk', 'LdrLoadDll',\n            'LdrProcessRelocationBlock', 'LdrQueryImageFileExecutionOptions',\n            'LdrQueryProcessModuleInformation', 'LdrShutdownProcess', 'LdrShutdownThread',\n            'LdrUnloadDll', 'LdrVerifyImageMatchesChecksum',\n\n            'NtAcceptConnectPort', 'ZwAcceptConnectPort', 'NtCompleteConnectPort',\n            'ZwCompleteConnectPort', 'NtConnectPort', 'ZwConnectPort', 'NtCreatePort',\n            'ZwCreatePort', 'NtImpersonateClientOfPort', 'ZwImpersonateClientOfPort',\n            'NtListenPort', 'ZwListenPort', 'NtQueryInformationPort', 'ZwQueryInformationPort',\n            'NtReadRequestData', 'ZwReadRequestData', 'NtReplyPort', 'ZwReplyPort',\n            'NtReplyWaitReceivePort', 'ZwReplyWaitReceivePort', 'NtReplyWaitReplyPort',\n            'ZwReplyWaitReplyPort', 'NtRequestPort', 'ZwRequestPort', 'NtRequestWaitReplyPort',\n            'ZwRequestWaitReplyPort', 'NtSecureConnectPort', 'ZwSecureConnectPort',\n            'NtWriteRequestData', 'ZwWriteRequestData',\n\n            'NtAccessCheck', 'ZwAccessCheck', 'NtAccessCheckAndAuditAlarm',\n            'ZwAccessCheckAndAuditAlarm', 'NtAccessCheckByType', 'ZwAccessCheckByType',\n            'NtAccessCheckByTypeAndAuditAlarm', 'ZwAccessCheckByTypeAndAuditAlarm',\n            'NtAccessCheckByTypeResultList', 'ZwAccessCheckByTypeResultList',\n            'NtAdjustGroupsToken', 'ZwAdjustGroupsToken', 'NtAdjustPrivilegesToken',\n            'ZwAdjustPrivilegesToken', 'NtCloseObjectAuditAlarm', 'ZwCloseObjectAuditAlarm',\n            'NtCreateToken', 'ZwCreateToken', 'NtDeleteObjectAuditAlarm',\n            'ZwDeleteObjectAuditAlarm', 'NtDuplicateToken', 'ZwDuplicateToken',\n            'NtFilterToken', 'ZwFilterToken', 'NtImpersonateThread', 'ZwImpersonateThread',\n            'NtOpenObjectAuditAlarm', 'ZwOpenObjectAuditAlarm', 'NtOpenProcessToken',\n            'ZwOpenProcessToken', 'NtOpenThreadToken', 'ZwOpenThreadToken', 'NtPrivilegeCheck',\n            'ZwPrivilegeCheck', 'NtPrivilegedServiceAuditAlarm', 'ZwPrivilegedServiceAuditAlarm',\n            'NtPrivilegeObjectAuditAlarm', 'ZwPrivilegeObjectAuditAlarm',\n            'NtQueryInformationToken', 'ZwQueryInformationToken', 'NtQuerySecurityObject',\n            'ZwQuerySecurityObject', 'NtSetInformationToken', 'ZwSetInformationToken',\n            'NtSetSecurityObject', 'ZwSetSecurityObject',\n\n            'NtAddAtom', 'ZwAddAtom', 'NtDeleteAtom', 'ZwDeleteAtom', 'NtFindAtom', 'ZwFindAtom',\n            'NtQueryInformationAtom', 'ZwQueryInformationAtom',\n\n            'NtAlertResumeThread', 'ZwAlertResumeThread', 'NtAlertThread', 'ZwAlertThread',\n            'NtCreateProcess', 'ZwCreateProcess', 'NtCreateThread', 'ZwCreateThread',\n            'NtCurrentTeb', 'NtDelayExecution', 'ZwDelayExecution', 'NtGetContextThread',\n            'ZwGetContextThread', 'NtOpenProcess', 'ZwOpenProcess', 'NtOpenThread',\n            'ZwOpenThread', 'NtQueryInformationProcess', 'ZwQueryInformationProcess',\n            'NtQueryInformationThread', 'ZwQueryInformationThread', 'NtQueueApcThread',\n            'ZwQueueApcThread', 'NtResumeThread', 'ZwResumeThread', 'NtSetContextThread',\n            'ZwSetContextThread', 'NtSetHighWaitLowThread', 'ZwSetHighWaitLowThread',\n            'NtSetInformationProcess', 'ZwSetInformationProcess', 'NtSetInformationThread',\n            'ZwSetInformationThread', 'NtSetLowWaitHighThread', 'ZwSetLowWaitHighThread',\n            'NtSuspendThread', 'ZwSuspendThread', 'NtTerminateProcess', 'ZwTerminateProcess',\n            'NtTerminateThread', 'ZwTerminateThread', 'NtTestAlert', 'ZwTestAlert',\n            'NtYieldExecution', 'ZwYieldExecution',\n\n            'NtAllocateVirtualMemory', 'ZwAllocateVirtualMemory', 'NtAllocateVirtualMemory64',\n            'ZwAllocateVirtualMemory64', 'NtAreMappedFilesTheSame', 'ZwAreMappedFilesTheSame',\n            'NtCreateSection', 'ZwCreateSection', 'NtExtendSection', 'ZwExtendSection',\n            'NtFlushVirtualMemory', 'ZwFlushVirtualMemory', 'NtFreeVirtualMemory',\n            'ZwFreeVirtualMemory', 'NtFreeVirtualMemory64', 'ZwFreeVirtualMemory64',\n            'NtLockVirtualMemory', 'ZwLockVirtualMemory', 'NtMapViewOfSection',\n            'ZwMapViewOfSection', 'NtMapViewOfVlmSection', 'ZwMapViewOfVlmSection',\n            'NtOpenSection', 'ZwOpenSection', 'NtProtectVirtualMemory', 'ZwProtectVirtualMemory',\n            'NtProtectVirtualMemory64', 'ZwProtectVirtualMemory64', 'NtQueryVirtualMemory',\n            'ZwQueryVirtualMemory', 'NtQueryVirtualMemory64', 'ZwQueryVirtualMemory64',\n            'NtReadVirtualMemory', 'ZwReadVirtualMemory', 'NtReadVirtualMemory64',\n            'ZwReadVirtualMemory64', 'NtUnlockVirtualMemory', 'ZwUnlockVirtualMemory',\n            'NtUnmapViewOfSection', 'ZwUnmapViewOfSection', 'NtUnmapViewOfVlmSection',\n            'ZwUnmapViewOfVlmSection', 'NtWriteVirtualMemory', 'ZwWriteVirtualMemory',\n            'NtWriteVirtualMemory64', 'ZwWriteVirtualMemory64',\n\n            'NtAssignProcessToJobObject', 'ZwAssignProcessToJobObject', 'NtCreateJobObject',\n            'ZwCreateJobObject', 'NtOpenJobObject', 'ZwOpenJobObject',\n            'NtQueryInformationJobObject', 'ZwQueryInformationJobObject',\n            'NtSetInformationJobObject', 'ZwSetInformationJobObject', 'NtTerminateJobObject',\n            'ZwTerminateJobObject',\n\n            'NtCancelIoFile', 'ZwCancelIoFile', 'NtCreateFile', 'ZwCreateFile',\n            'NtCreateIoCompletion', 'ZwCreateIoCompletion', 'NtDeleteFile', 'ZwDeleteFile',\n            'NtDeviceIoControlFile', 'ZwDeviceIoControlFile', 'NtFlushBuffersFile',\n            'ZwFlushBuffersFile', 'NtFsControlFile', 'ZwFsControlFile', 'NtLockFile', 'ZwLockFile',\n            'NtNotifyChangeDirectoryFile', 'ZwNotifyChangeDirectoryFile', 'NtOpenFile',\n            'ZwOpenFile', 'NtOpenIoCompletion', 'ZwOpenIoCompletion', 'NtQueryAttributesFile',\n            'ZwQueryAttributesFile', 'NtQueryDirectoryFile', 'ZwQueryDirectoryFile',\n            'NtQueryEaFile', 'ZwQueryEaFile', 'NtQueryIoCompletion', 'ZwQueryIoCompletion',\n            'NtQueryQuotaInformationFile', 'ZwQueryQuotaInformationFile',\n            'NtQueryVolumeInformationFile', 'ZwQueryVolumeInformationFile', 'NtReadFile',\n            'ZwReadFile', 'NtReadFile64', 'ZwReadFile64', 'NtReadFileScatter', 'ZwReadFileScatter',\n            'NtRemoveIoCompletion', 'ZwRemoveIoCompletion', 'NtSetEaFile', 'ZwSetEaFile',\n            'NtSetInformationFile', 'ZwSetInformationFile', 'NtSetIoCompletion',\n            'ZwSetIoCompletion', 'NtSetQuotaInformationFile', 'ZwSetQuotaInformationFile',\n            'NtSetVolumeInformationFile', 'ZwSetVolumeInformationFile', 'NtUnlockFile',\n            'ZwUnlockFile', 'NtWriteFile', 'ZwWriteFile', 'NtWriteFile64','ZwWriteFile64',\n            'NtWriteFileGather', 'ZwWriteFileGather', 'NtQueryFullAttributesFile',\n            'ZwQueryFullAttributesFile', 'NtQueryInformationFile', 'ZwQueryInformationFile',\n\n            'RtlAbortRXact', 'RtlAbsoluteToSelfRelativeSD', 'RtlAcquirePebLock',\n            'RtlAcquireResourceExclusive', 'RtlAcquireResourceShared', 'RtlAddAccessAllowedAce',\n            'RtlAddAccessDeniedAce', 'RtlAddAce', 'RtlAddActionToRXact', 'RtlAddAtomToAtomTable',\n            'RtlAddAttributeActionToRXact', 'RtlAddAuditAccessAce', 'RtlAddCompoundAce',\n            'RtlAdjustPrivilege', 'RtlAllocateAndInitializeSid', 'RtlAllocateHandle',\n            'RtlAllocateHeap', 'RtlAnsiCharToUnicodeChar', 'RtlAnsiStringToUnicodeSize',\n            'RtlAnsiStringToUnicodeString', 'RtlAppendAsciizToString', 'RtlAppendStringToString',\n            'RtlAppendUnicodeStringToString', 'RtlAppendUnicodeToString', 'RtlApplyRXact',\n            'RtlApplyRXactNoFlush', 'RtlAreAllAccessesGranted', 'RtlAreAnyAccessesGranted',\n            'RtlAreBitsClear', 'RtlAreBitsSet', 'RtlAssert', 'RtlCaptureStackBackTrace',\n            'RtlCharToInteger', 'RtlCheckRegistryKey', 'RtlClearAllBits', 'RtlClearBits',\n            'RtlClosePropertySet', 'RtlCompactHeap', 'RtlCompareMemory', 'RtlCompareMemoryUlong',\n            'RtlCompareString', 'RtlCompareUnicodeString', 'RtlCompareVariants',\n            'RtlCompressBuffer', 'RtlConsoleMultiByteToUnicodeN', 'RtlConvertExclusiveToShared',\n            'RtlConvertLongToLargeInteger', 'RtlConvertPropertyToVariant',\n            'RtlConvertSharedToExclusive', 'RtlConvertSidToUnicodeString',\n            'RtlConvertUiListToApiList', 'RtlConvertUlongToLargeInteger',\n            'RtlConvertVariantToProperty', 'RtlCopyLuid', 'RtlCopyLuidAndAttributesArray',\n            'RtlCopySecurityDescriptor', 'RtlCopySid', 'RtlCopySidAndAttributesArray',\n            'RtlCopyString', 'RtlCopyUnicodeString', 'RtlCreateAcl', 'RtlCreateAndSetSD',\n            'RtlCreateAtomTable', 'RtlCreateEnvironment', 'RtlCreateHeap',\n            'RtlCreateProcessParameters', 'RtlCreatePropertySet', 'RtlCreateQueryDebugBuffer',\n            'RtlCreateRegistryKey', 'RtlCreateSecurityDescriptor', 'RtlCreateTagHeap',\n            'RtlCreateUnicodeString', 'RtlCreateUnicodeStringFromAsciiz', 'RtlCreateUserProcess',\n            'RtlCreateUserSecurityObject', 'RtlCreateUserThread', 'RtlCustomCPToUnicodeN',\n            'RtlCutoverTimeToSystemTime', 'RtlDecompressBuffer', 'RtlDecompressFragment',\n            'RtlDelete', 'RtlDeleteAce', 'RtlDeleteAtomFromAtomTable', 'RtlDeleteCriticalSection',\n            'RtlDeleteElementGenericTable', 'RtlDeleteNoSplay', 'RtlDeleteRegistryValue',\n            'RtlDeleteResource', 'RtlDeleteSecurityObject', 'RtlDeNormalizeProcessParams',\n            'RtlDestroyAtomTable', 'RtlDestroyEnvironment', 'RtlDestroyHandleTable',\n            'RtlDestroyHeap', 'RtlDestroyProcessParameters', 'RtlDestroyQueryDebugBuffer',\n            'RtlDetermineDosPathNameType_U', 'RtlDoesFileExists_U', 'RtlDosPathNameToNtPathName_U',\n            'RtlDosSearchPath_U', 'RtlDowncaseUnicodeString', 'RtlDumpResource',\n            'RtlEmptyAtomTable', 'RtlEnlargedIntegerMultiply', 'RtlEnlargedUnsignedDivide',\n            'RtlEnlargedUnsignedMultiply', 'RtlEnterCriticalSection', 'RtlEnumerateGenericTable',\n            'RtlEnumerateGenericTableWithoutSplaying', 'RtlEnumerateProperties',\n            'RtlEnumProcessHeaps', 'RtlEqualComputerName', 'RtlEqualDomainName', 'RtlEqualLuid',\n            'RtlEqualPrefixSid', 'RtlEqualSid', 'RtlEqualString', 'RtlEqualUnicodeString',\n            'RtlEraseUnicodeString', 'RtlExpandEnvironmentStrings_U', 'RtlExtendedIntegerMultiply',\n            'RtlExtendedLargeIntegerDivide', 'RtlExtendedMagicDivide', 'RtlExtendHeap',\n            'RtlFillMemory', 'RtlFillMemoryUlong', 'RtlFindClearBits', 'RtlFindClearBitsAndSet',\n            'RtlFindLongestRunClear', 'RtlFindLongestRunSet', 'RtlFindMessage', 'RtlFindSetBits',\n            'RtlFindSetBitsAndClear', 'RtlFirstFreeAce', 'RtlFlushPropertySet',\n            'RtlFormatCurrentUserKeyPath', 'RtlFormatMessage', 'RtlFreeAnsiString',\n            'RtlFreeHandle', 'RtlFreeHeap', 'RtlFreeOemString', 'RtlFreeSid',\n            'RtlFreeUnicodeString', 'RtlFreeUserThreadStack', 'RtlGenerate8dot3Name', 'RtlGetAce',\n            'RtlGetCallersAddress', 'RtlGetCompressionWorkSpaceSize',\n            'RtlGetControlSecurityDescriptor', 'RtlGetCurrentDirectory_U',\n            'RtlGetDaclSecurityDescriptor', 'RtlGetElementGenericTable', 'RtlGetFullPathName_U',\n            'RtlGetGroupSecurityDescriptor', 'RtlGetLongestNtPathLength', 'RtlGetNtGlobalFlags',\n            'RtlGetNtProductType', 'RtlGetOwnerSecurityDescriptor', 'RtlGetProcessHeaps',\n            'RtlGetSaclSecurityDescriptor', 'RtlGetUserInfoHeap', 'RtlGuidToPropertySetName',\n            'RtlIdentifierAuthoritySid', 'RtlImageDirectoryEntryToData', 'RtlImageNtHeader',\n            'RtlImageRvaToSection', 'RtlImageRvaToVa', 'RtlImpersonateSelf', 'RtlInitAnsiString',\n            'RtlInitCodePageTable', 'RtlInitializeAtomPackage', 'RtlInitializeBitMap',\n            'RtlInitializeContext', 'RtlInitializeCriticalSection',\n            'RtlInitializeCriticalSectionAndSpinCount', 'RtlInitializeGenericTable',\n            'RtlInitializeHandleTable', 'RtlInitializeResource', 'RtlInitializeRXact',\n            'RtlInitializeSid', 'RtlInitNlsTables', 'RtlInitString', 'RtlInitUnicodeString',\n            'RtlInsertElementGenericTable', 'RtlIntegerToChar', 'RtlIntegerToUnicodeString',\n            'RtlIsDosDeviceName_U', 'RtlIsGenericTableEmpty', 'RtlIsNameLegalDOS8Dot3',\n            'RtlIsTextUnicode', 'RtlIsValidHandle', 'RtlIsValidIndexHandle', 'RtlLargeIntegerAdd',\n            'RtlLargeIntegerArithmeticShift', 'RtlLargeIntegerDivide', 'RtlLargeIntegerNegate',\n            'RtlLargeIntegerShiftLeft', 'RtlLargeIntegerShiftRight', 'RtlLargeIntegerSubtract',\n            'RtlLargeIntegerToChar', 'RtlLeaveCriticalSection', 'RtlLengthRequiredSid',\n            'RtlLengthSecurityDescriptor', 'RtlLengthSid', 'RtlLocalTimeToSystemTime',\n            'RtlLockHeap', 'RtlLookupAtomInAtomTable', 'RtlLookupElementGenericTable',\n            'RtlMakeSelfRelativeSD', 'RtlMapGenericMask', 'RtlMoveMemory',\n            'RtlMultiByteToUnicodeN', 'RtlMultiByteToUnicodeSize', 'RtlNewInstanceSecurityObject',\n            'RtlNewSecurityGrantedAccess', 'RtlNewSecurityObject', 'RtlNormalizeProcessParams',\n            'RtlNtStatusToDosError', 'RtlNumberGenericTableElements', 'RtlNumberOfClearBits',\n            'RtlNumberOfSetBits', 'RtlOemStringToUnicodeSize', 'RtlOemStringToUnicodeString',\n            'RtlOemToUnicodeN', 'RtlOnMappedStreamEvent', 'RtlOpenCurrentUser',\n            'RtlPcToFileHeader', 'RtlPinAtomInAtomTable', 'RtlpNtCreateKey',\n            'RtlpNtEnumerateSubKey', 'RtlpNtMakeTemporaryKey', 'RtlpNtOpenKey',\n            'RtlpNtQueryValueKey', 'RtlpNtSetValueKey', 'RtlPrefixString',\n            'RtlPrefixUnicodeString', 'RtlPropertySetNameToGuid', 'RtlProtectHeap',\n            'RtlpUnWaitCriticalSection', 'RtlpWaitForCriticalSection', 'RtlQueryAtomInAtomTable',\n            'RtlQueryEnvironmentVariable_U', 'RtlQueryInformationAcl',\n            'RtlQueryProcessBackTraceInformation', 'RtlQueryProcessDebugInformation',\n            'RtlQueryProcessHeapInformation', 'RtlQueryProcessLockInformation',\n            'RtlQueryProperties', 'RtlQueryPropertyNames', 'RtlQueryPropertySet',\n            'RtlQueryRegistryValues', 'RtlQuerySecurityObject', 'RtlQueryTagHeap',\n            'RtlQueryTimeZoneInformation', 'RtlRaiseException', 'RtlRaiseStatus', 'RtlRandom',\n            'RtlReAllocateHeap', 'RtlRealPredecessor', 'RtlRealSuccessor', 'RtlReleasePebLock',\n            'RtlReleaseResource', 'RtlRemoteCall', 'RtlResetRtlTranslations',\n            'RtlRunDecodeUnicodeString', 'RtlRunEncodeUnicodeString', 'RtlSecondsSince1970ToTime',\n            'RtlSecondsSince1980ToTime', 'RtlSelfRelativeToAbsoluteSD', 'RtlSetAllBits',\n            'RtlSetAttributesSecurityDescriptor', 'RtlSetBits', 'RtlSetCriticalSectionSpinCount',\n            'RtlSetCurrentDirectory_U', 'RtlSetCurrentEnvironment', 'RtlSetDaclSecurityDescriptor',\n            'RtlSetEnvironmentVariable', 'RtlSetGroupSecurityDescriptor', 'RtlSetInformationAcl',\n            'RtlSetOwnerSecurityDescriptor', 'RtlSetProperties', 'RtlSetPropertyNames',\n            'RtlSetPropertySetClassId', 'RtlSetSaclSecurityDescriptor', 'RtlSetSecurityObject',\n            'RtlSetTimeZoneInformation', 'RtlSetUnicodeCallouts', 'RtlSetUserFlagsHeap',\n            'RtlSetUserValueHeap', 'RtlSizeHeap', 'RtlSplay', 'RtlStartRXact',\n            'RtlSubAuthorityCountSid', 'RtlSubAuthoritySid', 'RtlSubtreePredecessor',\n            'RtlSubtreeSuccessor', 'RtlSystemTimeToLocalTime', 'RtlTimeFieldsToTime',\n            'RtlTimeToElapsedTimeFields', 'RtlTimeToSecondsSince1970', 'RtlTimeToSecondsSince1980',\n            'RtlTimeToTimeFields', 'RtlTryEnterCriticalSection', 'RtlUnicodeStringToAnsiSize',\n            'RtlUnicodeStringToAnsiString', 'RtlUnicodeStringToCountedOemString',\n            'RtlUnicodeStringToInteger', 'RtlUnicodeStringToOemSize',\n            'RtlUnicodeStringToOemString', 'RtlUnicodeToCustomCPN', 'RtlUnicodeToMultiByteN',\n            'RtlUnicodeToMultiByteSize', 'RtlUnicodeToOemN', 'RtlUniform', 'RtlUnlockHeap',\n            'RtlUnwind', 'RtlUpcaseUnicodeChar', 'RtlUpcaseUnicodeString',\n            'RtlUpcaseUnicodeStringToAnsiString', 'RtlUpcaseUnicodeStringToCountedOemString',\n            'RtlUpcaseUnicodeStringToOemString', 'RtlUpcaseUnicodeToCustomCPN',\n            'RtlUpcaseUnicodeToMultiByteN', 'RtlUpcaseUnicodeToOemN', 'RtlUpperChar',\n            'RtlUpperString', 'RtlUsageHeap', 'RtlValidAcl', 'RtlValidateHeap',\n            'RtlValidateProcessHeaps', 'RtlValidSecurityDescriptor', 'RtlValidSid', 'RtlWalkHeap',\n            'RtlWriteRegistryValue', 'RtlxAnsiStringToUnicodeSize', 'RtlxOemStringToUnicodeSize',\n            'RtlxUnicodeStringToAnsiSize', 'RtlxUnicodeStringToOemSize', 'RtlZeroHeap',\n            'RtlZeroMemory',\n\n            'NtCancelTimer', 'ZwCancelTimer', 'NtCreateTimer', 'ZwCreateTimer', 'NtGetTickCount',\n            'ZwGetTickCount', 'NtOpenTimer', 'ZwOpenTimer', 'NtQueryPerformanceCounter',\n            'ZwQueryPerformanceCounter', 'NtQuerySystemTime', 'ZwQuerySystemTime', 'NtQueryTimer',\n            'ZwQueryTimer', 'NtQueryTimerResolution', 'ZwQueryTimerResolution', 'NtSetSystemTime',\n            'ZwSetSystemTime', 'NtSetTimer', 'ZwSetTimer', 'NtSetTimerResolution',\n            'ZwSetTimerResolution',\n\n            'NtClearEvent', 'ZwClearEvent', 'NtCreateEvent', 'ZwCreateEvent', 'NtCreateEventPair',\n            'ZwCreateEventPair', 'NtCreateMutant', 'ZwCreateMutant', 'NtCreateSemaphore',\n            'ZwCreateSemaphore', 'NtOpenEvent', 'ZwOpenEvent', 'NtOpenEventPair',\n            'ZwOpenEventPair', 'NtOpenMutant', 'ZwOpenMutant', 'NtOpenSemaphore',\n            'ZwOpenSemaphore', 'NtPulseEvent', 'ZwPulseEvent', 'NtQueryEvent', 'ZwQueryEvent',\n            'NtQueryMutant', 'ZwQueryMutant', 'NtQuerySemaphore', 'ZwQuerySemaphore',\n            'NtReleaseMutant', 'ZwReleaseMutant', 'NtReleaseProcessMutant',\n            'ZwReleaseProcessMutant', 'NtReleaseSemaphore', 'ZwReleaseSemaphore',\n            'NtReleaseThreadMutant', 'ZwReleaseThreadMutant', 'NtResetEvent', 'ZwResetEvent',\n            'NtSetEvent', 'ZwSetEvent', 'NtSetHighEventPair', 'ZwSetHighEventPair',\n            'NtSetHighWaitLowEventPair', 'ZwSetHighWaitLowEventPair', 'NtSetLowEventPair',\n            'ZwSetLowEventPair', 'NtSetLowWaitHighEventPair', 'ZwSetLowWaitHighEventPair',\n            'NtSignalAndWaitForSingleObject', 'ZwSignalAndWaitForSingleObject',\n            'NtWaitForMultipleObjects', 'ZwWaitForMultipleObjects', 'NtWaitForSingleObject',\n            'ZwWaitForSingleObject', 'NtWaitHighEventPair', 'ZwWaitHighEventPair',\n            'NtWaitLowEventPair', 'ZwWaitLowEventPair',\n\n            'NtClose', 'ZwClose', 'NtCreateDirectoryObject', 'ZwCreateDirectoryObject',\n            'NtCreateSymbolicLinkObject', 'ZwCreateSymbolicLinkObject',\n            'NtDuplicateObject', 'ZwDuplicateObject', 'NtMakeTemporaryObject',\n            'ZwMakeTemporaryObject', 'NtOpenDirectoryObject', 'ZwOpenDirectoryObject',\n            'NtOpenSymbolicLinkObject', 'ZwOpenSymbolicLinkObject', 'NtQueryDirectoryObject',\n            'ZwQueryDirectoryObject', 'NtQueryObject', 'ZwQueryObject',\n            'NtQuerySymbolicLinkObject', 'ZwQuerySymbolicLinkObject', 'NtSetInformationObject',\n            'ZwSetInformationObject',\n\n            'NtContinue', 'ZwContinue', 'NtRaiseException', 'ZwRaiseException',\n            'NtRaiseHardError', 'ZwRaiseHardError', 'NtSetDefaultHardErrorPort',\n            'ZwSetDefaultHardErrorPort',\n\n            'NtCreateChannel', 'ZwCreateChannel', 'NtListenChannel', 'ZwListenChannel',\n            'NtOpenChannel', 'ZwOpenChannel', 'NtReplyWaitSendChannel', 'ZwReplyWaitSendChannel',\n            'NtSendWaitReplyChannel', 'ZwSendWaitReplyChannel', 'NtSetContextChannel',\n            'ZwSetContextChannel',\n\n            'NtCreateKey', 'ZwCreateKey', 'NtDeleteKey', 'ZwDeleteKey', 'NtDeleteValueKey',\n            'ZwDeleteValueKey', 'NtEnumerateKey', 'ZwEnumerateKey', 'NtEnumerateValueKey',\n            'ZwEnumerateValueKey', 'NtFlushKey', 'ZwFlushKey', 'NtInitializeRegistry',\n            'ZwInitializeRegistry', 'NtLoadKey', 'ZwLoadKey', 'NtLoadKey2', 'ZwLoadKey2',\n            'NtNotifyChangeKey', 'ZwNotifyChangeKey', 'NtOpenKey', 'ZwOpenKey', 'NtQueryKey',\n            'ZwQueryKey', 'NtQueryMultipleValueKey', 'ZwQueryMultipleValueKey',\n            'NtQueryMultiplValueKey', 'ZwQueryMultiplValueKey', 'NtQueryValueKey',\n            'ZwQueryValueKey', 'NtReplaceKey', 'ZwReplaceKey', 'NtRestoreKey', 'ZwRestoreKey',\n            'NtSaveKey', 'ZwSaveKey', 'NtSetInformationKey', 'ZwSetInformationKey',\n            'NtSetValueKey', 'ZwSetValueKey', 'NtUnloadKey', 'ZwUnloadKey',\n\n            'NtCreateMailslotFile', 'ZwCreateMailslotFile', 'NtCreateNamedPipeFile',\n            'ZwCreateNamedPipeFile', 'NtCreatePagingFile', 'ZwCreatePagingFile',\n\n            'NtCreateProfile', 'ZwCreateProfile', 'NtQueryIntervalProfile',\n            'ZwQueryIntervalProfile', 'NtRegisterThreadTerminatePort',\n            'ZwRegisterThreadTerminatePort', 'NtSetIntervalProfile', 'ZwSetIntervalProfile',\n            'NtStartProfile', 'ZwStartProfile', 'NtStopProfile', 'ZwStopProfile',\n            'NtSystemDebugControl', 'ZwSystemDebugControl',\n\n            'NtEnumerateBus', 'ZwEnumerateBus', 'NtFlushInstructionCache',\n            'ZwFlushInstructionCache', 'NtFlushWriteBuffer', 'ZwFlushWriteBuffer',\n            'NtSetLdtEntries', 'ZwSetLdtEntries',\n\n            'NtGetPlugPlayEvent', 'ZwGetPlugPlayEvent', 'NtPlugPlayControl', 'ZwPlugPlayControl',\n\n            'NtInitiatePowerAction', 'ZwInitiatePowerAction', 'NtPowerInformation',\n            'ZwPowerInformation', 'NtRequestWakeupLatency', 'ZwRequestWakeupLatency',\n            'NtSetSystemPowerState', 'ZwSetSystemPowerState', 'NtSetThreadExecutionState',\n            'ZwSetThreadExecutionState',\n\n            'NtLoadDriver', 'ZwLoadDriver', 'NtRegisterNewDevice', 'ZwRegisterNewDevice',\n            'NtUnloadDriver', 'ZwUnloadDriver',\n\n            'NtQueryDefaultLocale', 'ZwQueryDefaultLocale', 'NtQueryDefaultUILanguage',\n            'ZwQueryDefaultUILanguage', 'NtQuerySystemEnvironmentValue',\n            'ZwQuerySystemEnvironmentValue', 'NtSetDefaultLocale', 'ZwSetDefaultLocale',\n            'NtSetDefaultUILanguage', 'ZwSetDefaultUILanguage', 'NtSetSystemEnvironmentValue',\n            'ZwSetSystemEnvironmentValue',\n\n            'DbgBreakPoint', 'DbgPrint', 'DbgPrompt', 'DbgSsHandleKmApiMsg', 'DbgSsInitialize',\n            'DbgUiConnectToDbg', 'DbgUiContinue', 'DbgUiWaitStateChange', 'DbgUserBreakPoint',\n            'KiRaiseUserExceptionDispatcher', 'KiUserApcDispatcher', 'KiUserCallbackDispatcher',\n            'KiUserExceptionDispatcher', 'NlsAnsiCodePage', 'NlsMbCodePageTag',\n            'NlsMbOemCodePageTag', 'NtAllocateLocallyUniqueId', 'ZwAllocateLocallyUniqueId',\n            'NtAllocateUuids', 'ZwAllocateUuids', 'NtCallbackReturn', 'ZwCallbackReturn',\n            'NtDisplayString', 'ZwDisplayString', 'NtQueryOleDirectoryFile',\n            'ZwQueryOleDirectoryFile', 'NtQuerySection', 'ZwQuerySection',\n            'NtQuerySystemInformation', 'ZwQuerySystemInformation', 'NtSetSystemInformation',\n            'ZwSetSystemInformation', 'NtShutdownSystem', 'ZwShutdownSystem', 'NtVdmControl',\n            'ZwVdmControl', 'NtW32Call', 'ZwW32Call', 'PfxFindPrefix', 'PfxInitialize',\n            'PfxInsertPrefix', 'PfxRemovePrefix', 'PropertyLengthAsVariant', 'RestoreEm87Context',\n            'SaveEm87Context'\n            )\n        ),\n    'SYMBOLS' => array(\n        0 => array('(', ')', '{', '}', '[', ']'),\n        1 => array('<', '>','='),\n        2 => array('+', '-', '*', '/', '%'),\n        3 => array('!', '^', '&', '|'),\n        4 => array('?', ':', ';')\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000ff;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #0000dd;',\n            4 => 'color: #0000ff;',\n            5 => 'color: #4000dd;',\n            6 => 'color: #4000dd;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666;',\n            2 => 'color: #339900;',\n            3 => 'color: #FF0000;',\n            4 => 'color: #FF0000;',\n            'MULTI' => 'color: #ff0000; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #660099; font-weight: bold;',\n            3 => 'color: #660099; font-weight: bold;',\n            4 => 'color: #660099; font-weight: bold;',\n            5 => 'color: #006699; font-weight: bold;',\n            'HARD' => '',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #008000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #FF0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000dd;',\n            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #007788;',\n            2 => 'color: #007788;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #008000;',\n            1 => 'color: #000080;',\n            2 => 'color: #000040;',\n            3 => 'color: #000040;',\n            4 => 'color: #008080;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => 'http://www.google.com/search?q={FNAMEL}+msdn.microsoft.com',\n        6 => 'http://www.google.com/search?q={FNAMEL}+msdn.microsoft.com'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\|\\#])\",\n            'DISALLOWED_AFTER' => \"(?![a-zA-Z0-9_\\|%\\\\-])\"\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/cpp.php",
    "content": "<?php\n/*************************************************************************************\n * cpp.php\n * -------\n * Author: Dennis Bayer (Dennis.Bayer@mnifh-giessen.de)\n * Contributors:\n *  - M. Uli Kusterer (witness.of.teachtext@gmx.net)\n *  - Jack Lloyd (lloyd@randombit.net)\n * Copyright: (c) 2004 Dennis Bayer, Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/09/27\n *\n * C++ language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2013/11/06\n *  -  Added nullptr from c++11 & others\n * 2008/05/23 (1.0.7.22)\n *  -  Added description of extra language features (SF#1970248)\n * 2004/XX/XX (1.0.2)\n *  -  Added several new keywords (Jack Lloyd)\n * 2004/11/27 (1.0.1)\n *  -  Added StdCLib function and constant names, changed color scheme to\n *     a cleaner one. (M. Uli Kusterer)\n *  -  Added support for multiple object splitters\n * 2004/10/27 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'C++',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Multiline-continued single-line comments\n        1 => '/\\/\\/(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //Multiline-continued preprocessor define\n        2 => '/#(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //C++ 11 string literal extensions\n        3 => '/(?:L|u8?|U)(?=\")/',\n        //C++ 11 string literal extensions (raw)\n        4 => '/R\"([^()\\s\\\\\\\\]*)\\((?:(?!\\)\\\\1\").)*\\)\\\\1\"/ms'\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[abfnrtv\\\\\\'\\\"?\\n]#\",\n        //Hexadecimal Char Specs\n        2 => \"#\\\\\\\\x[\\da-fA-F]{2}#\",\n        //Hexadecimal Char Specs\n        3 => \"#\\\\\\\\u[\\da-fA-F]{4}#\",\n        //Hexadecimal Char Specs\n        4 => \"#\\\\\\\\U[\\da-fA-F]{8}#\",\n        //Octal Char Specs\n        5 => \"#\\\\\\\\[0-7]{1,3}#\"\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'break', 'case', 'continue', 'default', 'do', 'else', 'for', 'goto', 'if', 'return',\n            'switch', 'throw', 'while'\n            ),\n        2 => array(\n            'NULL', 'false', 'true', 'enum', 'errno', 'EDOM',\n            'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',\n            'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',\n            'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',\n            'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',\n            'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',\n            'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',\n            'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',\n            'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',\n            'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam',\n            'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'stdin', 'stdout', 'stderr',\n            'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC',\n            'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace',\n            'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 'reinterpret_cast',\n            'static_cast', 'explicit', 'friend', 'typename', 'typeid', 'class', 'nullptr',\n            'decltype', 'override', 'final', 'noexcept', 'alignas', 'alignof', 'noreturn',\n            'constexpr', 'and', 'and_eq', 'asm', 'bitand', 'bitor', 'thread_local',\n            'static_assert', 'compl', 'or', 'or_eq', 'xor', 'xor_eq', 'not', 'not_eq'\n            ),\n        3 => array(\n            'cin', 'cerr', 'clog', 'cout', 'delete', 'new', 'this', 'export',\n            'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',\n            'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',\n            'ispunct', 'isspace', 'isupper', 'isxdigit', 'tolower', 'toupper',\n            'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',\n            'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',\n            'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp',\n            'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',\n            'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',\n            'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',\n            'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',\n            'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',\n            'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',\n            'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',\n            'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',\n            'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',\n            'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',\n            'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',\n            'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',\n            'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'\n            ),\n        4 => array(\n            'auto', 'bool', 'char', 'char16_t', 'char32_t', 'const', 'double', 'float',\n            'int', 'long', 'longint','register', 'short', 'shortint', 'signed',\n            'static', 'struct', 'typedef', 'union', 'unsigned', 'void', 'volatile',\n            'extern', 'jmp_buf','signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t',\n            'FILE', 'fpos_t', 'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', 'wchar_t',\n            'mutable',\n\n            'int8', 'int16', 'int32', 'int64',\n            'uint8', 'uint16', 'uint32', 'uint64',\n\n            'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',\n            'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',\n\n            'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',\n            'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',\n\n            'int8_t', 'int16_t', 'int32_t', 'int64_t',\n            'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',\n\n            'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t'\n            ),\n        ),\n    'SYMBOLS' => array(\n        0 => array('(', ')', '{', '}', '[', ']'),\n        1 => array('<', '>','='),\n        2 => array('+', '-', '*', '/', '%'),\n        3 => array('!', '^', '&', '|'),\n        4 => array('?', ':', ';')\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000ff;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #0000dd;',\n            4 => 'color: #0000ff;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666;',\n            2 => 'color: #339900;',\n            3 => 'color: #FF0000;',\n            4 => 'color: #FF0000;',\n            'MULTI' => 'color: #ff0000; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #660099; font-weight: bold;',\n            3 => 'color: #660099; font-weight: bold;',\n            4 => 'color: #660099; font-weight: bold;',\n            5 => 'color: #006699; font-weight: bold;',\n            'HARD' => '',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #008000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #FF0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000dd;',\n            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #007788;',\n            2 => 'color: #007788;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #008000;',\n            1 => 'color: #000080;',\n            2 => 'color: #000040;',\n            3 => 'color: #000040;',\n            4 => 'color: #008080;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\|\\#])\",\n            'DISALLOWED_AFTER' => \"(?![a-zA-Z0-9_\\|%\\\\-])\"\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/csharp.php",
    "content": "<?php\n/*************************************************************************************\n * csharp.php\n * ----------\n * Author: Alan Juden (alan@judenware.org)\n * Revised by: Michael Mol (mikemol@gmail.com)\n * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/06/04\n *\n * C# language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2015/04/14\n *  -  Added C# 5.0 and 6.0 missing keywords and #pragma directive\n * 2012/06/18 (1.0.8.11)\n *  -  Added missing keywords (Christian Stelzmann)\n * 2009/04/03 (1.0.8.6)\n *  -  Added missing keywords identified by Rosetta Code users.\n * 2008/05/25 (1.0.7.22)\n *  -  Added highlighting of using and namespace directives as non-OOP\n * 2005/01/05 (1.0.1)\n *  -  Used hardquote support for @\"...\" strings (Cliff Stanford)\n * 2004/11/27 (1.0.0)\n *  -  Initial release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'C#',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Using and Namespace directives (basic support)\n        //Please note that the alias syntax for using is not supported\n        3 => '/(?:(?<=using[\\\\n\\\\s])|(?<=namespace[\\\\n\\\\s]))[\\\\n\\\\s]*([a-zA-Z0-9_]+\\\\.)*[a-zA-Z0-9_]+[\\n\\s]*(?=[;=])/i'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'HARDQUOTE' => array('@\"', '\"'),\n    'HARDESCAPE' => array('\"'),\n    'HARDCHAR' => '\"',\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'abstract', 'add', 'as', 'async', 'await', 'base',\n            'break', 'by', 'case', 'catch', 'const', 'continue',\n            'default', 'do', 'else', 'event', 'explicit', 'extern', 'false',\n            'finally', 'fixed', 'for', 'foreach', 'from', 'get', 'goto', 'group', 'if',\n            'implicit', 'in', 'into', 'internal', 'join', 'lock', 'namespace', 'null',\n            'operator', 'out', 'override', 'params', 'partial', 'private',\n            'protected', 'public', 'readonly', 'remove', 'ref', 'return', 'sealed',\n            'select', 'set', 'stackalloc', 'static', 'switch', 'this', 'throw', 'true',\n            'try', 'unsafe', 'using', 'var', 'value', 'virtual', 'volatile', 'where',\n            'while', 'yield'\n            ),\n        2 => array(\n            '#elif', '#endif', '#endregion', '#else', '#error', '#define', '#if',\n            '#line', '#pragma', '#region', '#undef', '#warning'\n            ),\n        3 => array(\n            'checked', 'is', 'new', 'nameof', 'sizeof', 'typeof', 'unchecked'\n            ),\n        4 => array(\n            'bool', 'byte', 'char', 'class', 'decimal', 'delegate', 'double',\n            'dynamic', 'enum', 'float', 'int', 'interface', 'long', 'object', 'sbyte',\n            'short', 'string', 'struct', 'uint', 'ulong', 'ushort', 'void'\n            ),\n        5 => array(\n            'Microsoft.Win32',\n            'System',\n            'System.CodeDOM',\n            'System.CodeDOM.Compiler',\n            'System.Collections',\n            'System.Collections.Bases',\n            'System.ComponentModel',\n            'System.ComponentModel.Design',\n            'System.ComponentModel.Design.CodeModel',\n            'System.Configuration',\n            'System.Configuration.Assemblies',\n            'System.Configuration.Core',\n            'System.Configuration.Install',\n            'System.Configuration.Interceptors',\n            'System.Configuration.Schema',\n            'System.Configuration.Web',\n            'System.Core',\n            'System.Data',\n            'System.Data.ADO',\n            'System.Data.Design',\n            'System.Data.Internal',\n            'System.Data.SQL',\n            'System.Data.SQLTypes',\n            'System.Data.XML',\n            'System.Data.XML.DOM',\n            'System.Data.XML.XPath',\n            'System.Data.XML.XSLT',\n            'System.Diagnostics',\n            'System.Diagnostics.SymbolStore',\n            'System.DirectoryServices',\n            'System.Drawing',\n            'System.Drawing.Design',\n            'System.Drawing.Drawing2D',\n            'System.Drawing.Imaging',\n            'System.Drawing.Printing',\n            'System.Drawing.Text',\n            'System.Globalization',\n            'System.IO',\n            'System.IO.IsolatedStorage',\n            'System.Messaging',\n            'System.Net',\n            'System.Net.Sockets',\n            'System.NewXml',\n            'System.NewXml.XPath',\n            'System.NewXml.Xsl',\n            'System.Reflection',\n            'System.Reflection.Emit',\n            'System.Resources',\n            'System.Runtime.InteropServices',\n            'System.Runtime.InteropServices.Expando',\n            'System.Runtime.Remoting',\n            'System.Runtime.Serialization',\n            'System.Runtime.Serialization.Formatters',\n            'System.Runtime.Serialization.Formatters.Binary',\n            'System.Security',\n            'System.Security.Cryptography',\n            'System.Security.Cryptography.X509Certificates',\n            'System.Security.Permissions',\n            'System.Security.Policy',\n            'System.Security.Principal',\n            'System.ServiceProcess',\n            'System.Text',\n            'System.Text.RegularExpressions',\n            'System.Threading',\n            'System.Timers',\n            'System.Web',\n            'System.Web.Caching',\n            'System.Web.Configuration',\n            'System.Web.Security',\n            'System.Web.Services',\n            'System.Web.Services.Description',\n            'System.Web.Services.Discovery',\n            'System.Web.Services.Protocols',\n            'System.Web.UI',\n            'System.Web.UI.Design',\n            'System.Web.UI.Design.WebControls',\n            'System.Web.UI.Design.WebControls.ListControls',\n            'System.Web.UI.HtmlControls',\n            'System.Web.UI.WebControls',\n            'System.WinForms',\n            'System.WinForms.ComponentModel',\n            'System.WinForms.Design',\n            'System.Xml',\n            'System.Xml.Serialization',\n            'System.Xml.Serialization.Code',\n            'System.Xml.Serialization.Schema'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', ':', ';',\n        '(', ')', '{', '}', '[', ']', '|', '.'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0600FF; font-weight: bold;',\n            2 => 'color: #FF8000; font-weight: bold;',\n            3 => 'color: #008000;',\n            4 => 'color: #6666cc; font-weight: bold;',\n            5 => 'color: #000000;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008080; font-style: italic;',\n            2 => 'color: #008080;',\n            3 => 'color: #008080;',\n            'MULTI' => 'color: #008080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #008080; font-weight: bold;',\n            'HARD' => 'color: #008080; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #008000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #666666;',\n            'HARD' => 'color: #666666;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #FF0000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #0000FF;',\n            2 => 'color: #0000FF;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #008000;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://www.google.com/search?q={FNAMEL}+msdn.microsoft.com',\n        4 => '',\n        5 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\|\\#>|^])\",\n            'DISALLOWED_AFTER' => \"(?![a-zA-Z0-9_%\\\\-])\"\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/css.php",
    "content": "<?php\n/*************************************************************************************\n * css.php\n * -------\n * Author: Nigel McNie (nigel@geshi.org), Zéfling (zefling@ikilote.net)\n * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/06/18\n *\n * CSS language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2014/07/14 (1.0.8.13)\n *  - update for current CSS3 (properties, value, expression, unites & color)\n *  - remove pseudo class regex\n *  - add rules regex\n * 2008/05/23 (1.0.7.22)\n *  -  Added description of extra language features (SF#1970248)\n * 2004/11/27 (1.0.3)\n *  -  Added support for multiple object splitters\n * 2004/10/27 (1.0.2)\n *   -  Changed regexps to catch \"-\" symbols\n *   -  Added support for URLs\n * 2004/08/05 (1.0.1)\n *   -  Added support for symbols\n * 2004/07/14 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n * * Improve or drop regexps for class/id highlighting\n * * Re-look at keywords - possibly to make several CSS language\n *   files, all with different versions of CSS in them\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'CSS',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        2 => \"/(?<=\\\\()\\\\s*(?:(?:[a-z0-9]+?:\\\\/\\\\/)?[a-z0-9_\\\\-\\\\.\\\\/:]+?)?[a-z]+?\\\\.[a-z]+?(\\\\?[^\\)]+?)?\\\\s*?(?=\\\\))/i\"\n    ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', \"'\"),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        //1 => \"#\\\\\\\\[nfrtv\\$\\\"\\n\\\\\\\\]#i\",\n        //Hexadecimal Char Specs\n        2 => \"#\\\\\\\\[\\da-fA-F]{1,6}\\s?#i\",\n        //Unicode Char Specs\n        //3 => \"#\\\\\\\\u[\\da-fA-F]{1,8}#i\",\n    ),\n    'KEYWORDS' => array(\n        // properties\n        1 => array(\n            'align-content',\n            'align-items',\n            'align-self',\n            'all',\n            'animation',\n            'animation-delay',\n            'animation-direction',\n            'animation-duration',\n            'animation-fill-mode',\n            'animation-iteration-count',\n            'animation-name',\n            'animation-play-state',\n            'animation-timing-function',\n            'backface-visibility',\n            'background',\n            'background-attachment',\n            'background-blend-mode',\n            'background-clip',\n            'background-color',\n            'background-image',\n            'background-origin',\n            'background-position',\n            'background-repeat',\n            'background-size',\n            'border',\n            'border-bottom',\n            'border-bottom-color',\n            'border-bottom-left-radius',\n            'border-bottom-right-radius',\n            'border-bottom-style',\n            'border-bottom-width',\n            'border-collapse',\n            'border-color',\n            'border-image',\n            'border-image-outset',\n            'border-image-repeat',\n            'border-image-slice',\n            'border-image-source',\n            'border-image-width',\n            'border-left',\n            'border-left-color',\n            'border-left-style',\n            'border-left-width',\n            'border-radius',\n            'border-right',\n            'border-right-color',\n            'border-right-style',\n            'border-right-width',\n            'border-spacing',\n            'border-style',\n            'border-top',\n            'border-top-color',\n            'border-top-left-radius',\n            'border-top-right-radius',\n            'border-top-style',\n            'border-top-width',\n            'border-width',\n            'bottom',\n            'box-decoration-break',\n            'box-shadow',\n            'box-sizing',\n            'break-after',\n            'break-before',\n            'break-inside',\n            'caption-side',\n            'clear',\n            'clip',\n            'clip-path',\n            'color',\n            'columns',\n            'column-count',\n            'column-fill',\n            'column-gap',\n            'column-rule',\n            'column-rule-color',\n            'column-rule-style',\n            'column-rule-width',\n            'column-span',\n            'column-width',\n            'content',\n            'counter-increment',\n            'counter-reset',\n            'cursor',\n            'direction',\n            'display',\n            'empty-cells',\n            'fill',\n            'fill-rule',\n            'fill-opacity',\n            'filter',\n            'flex',\n            'flex-basis',\n            'flex-direction',\n            'flex-flow',\n            'flex-grow',\n            'flex-shrink',\n            'flex-wrap',\n            'float',\n            'font',\n            'font-family',\n            'font-feature-settings',\n            'font-kerning',\n            'font-language-override',\n            'font-size',\n            'font-size-adjust',\n            'font-stretch',\n            'font-style',\n            'font-synthesis',\n            'font-variant',\n            'font-variant-alternates',\n            'font-variant-caps',\n            'font-variant-east-asian',\n            'font-variant-ligatures',\n            'font-variant-numeric',\n            'font-variant-position',\n            'font-weight',\n            'grid',\n            'grid-area',\n            'grid-auto-columns',\n            'grid-auto-flow',\n            'grid-auto-position',\n            'grid-auto-rows',\n            'grid-column',\n            'grid-column-start',\n            'grid-column-end',\n            'grid-row',\n            'grid-row-start',\n            'grid-row-end',\n            'grid-template',\n            'grid-template-areas',\n            'grid-template-rows',\n            'grid-template-columns',\n            'height',\n            'hyphens',\n            'icon',\n            'image-rendering',\n            'image-resolution',\n            'image-orientation',\n            'ime-mode',\n            'justify-content',\n            'left',\n            'letter-spacing',\n            'line-break',\n            'line-height',\n            'list-style',\n            'list-style-image',\n            'list-style-position',\n            'list-style-type',\n            'margin',\n            'margin-bottom',\n            'margin-left',\n            'margin-right',\n            'margin-top',\n            'marks',\n            'mask',\n            'mask-type',\n            'max-height',\n            'max-width',\n            'min-height',\n            'min-width',\n            'mix-blend-mode',\n            'nav-down',\n            'nav-index',\n            'nav-left',\n            'nav-right',\n            'nav-up',\n            'object-fit',\n            'object-position',\n            'opacity',\n            'order',\n            'orphans',\n            'outline',\n            'outline-color',\n            'outline-offset',\n            'outline-style',\n            'outline-width',\n            'overflow',\n            'overflow-wrap',\n            'overflow-x',\n            'overflow-y',\n            'overflow-clip-box',\n            'padding',\n            'padding-bottom',\n            'padding-left',\n            'padding-right',\n            'padding-top',\n            'page-break-after',\n            'page-break-before',\n            'page-break-inside',\n            'perspective',\n            'perspective-origin',\n            'pointer-events',\n            'position',\n            'quotes',\n            'resize',\n            'right',\n            'shape-image-threshold',\n            'shape-margin',\n            'shape-outside',\n            'stroke',\n            'stroke-width',\n            'stroke-linecap',\n            'stroke-linejoin',\n            'stroke-miterlimit',\n            'stroke-dasharray',\n            'stroke-dashoffset',\n            'table-layout',\n            'tab-size',\n            'text-align',\n            'text-align-last',\n            'text-combine-horizontal',\n            'text-decoration',\n            'text-decoration-color',\n            'text-decoration-line',\n            'text-decoration-style',\n            'text-indent',\n            'text-orientation',\n            'text-overflow',\n            'text-rendering',\n            'text-shadow',\n            'text-transform',\n            'text-underline-position',\n            'top',\n            'touch-action',\n            'transform',\n            'transform-origin',\n            'transform-style',\n            'transition',\n            'transition-delay',\n            'transition-duration',\n            'transition-property',\n            'transition-timing-function',\n            'unicode-bidi',\n            'unicode-range',\n            'vertical-align',\n            'visibility',\n            'white-space',\n            'widows',\n            'width',\n            'will-change',\n            'word-break',\n            'word-spacing',\n            'word-wrap',\n            'writing-mode',\n            'z-index'\n        ),\n        // value\n        2 => array(\n            'absolute',\n            'activeborder',\n            'activecaption',\n            'after-white-space',\n            'ahead',\n            'alternate',\n            'always',\n            'appworkspace',\n            'armenian',\n            'auto',\n            'avoid',\n            'background',\n            'backwards',\n            'baseline',\n            'below',\n            'bevel',\n            'bidi-override',\n            'blink',\n            'block',\n            'block clear',\n            'block width',\n            'block-axis',\n            'bold',\n            'bolder',\n            'border',\n            'border-box',\n            'both',\n            'bottom',\n            'break-word',\n            'butt',\n            'button',\n            'button-bevel',\n            'buttonface',\n            'buttonhighlight',\n            'buttonshadow',\n            'buttontext',\n            'capitalize',\n            'caption',\n            'captiontext',\n            'caret',\n            'center',\n            'checkbox',\n            'circle',\n            'cjk-ideographic',\n            'clip',\n            'close-quote',\n            'collapse',\n            'compact',\n            'condensed',\n            'content',\n            'content-box',\n            'continuous',\n            'crop',\n            'cross',\n            'crosshair',\n            'currentColor',\n            'cursive',\n            'dashed',\n            'decimal',\n            'decimal-leading-zero',\n            'default',\n            'disc',\n            'discard',\n            'dot-dash',\n            'dot-dot-dash',\n            'dotted',\n            'double',\n            'down',\n            'e-resize',\n            'element',\n            'ellipsis',\n            'embed',\n            'end',\n            'evenodd',\n            'expanded',\n            'extra-condensed',\n            'extra-expanded',\n            'fantasy',\n            'fast',\n            'fixed',\n            'forwards',\n            'georgian',\n            'graytext',\n            'groove',\n            'hand',\n            'hebrew',\n            'help',\n            'hidden',\n            'hide',\n            'higher',\n            'highlight',\n            'highlighttext',\n            'hiragana',\n            'hiragana-iroha',\n            'horizontal',\n            'icon',\n            'ignore',\n            'inactiveborder',\n            'inactivecaption',\n            'inactivecaptiontext',\n            'infinite',\n            'infobackground',\n            'infotext',\n            'inherit',\n            'initial',\n            'inline',\n            'inline-axis',\n            'inline-block',\n            'inline-table',\n            'inset',\n            'inside',\n            'intrinsic',\n            'invert',\n            'italic',\n            'justify',\n            'katakana',\n            'katakana-iroha',\n            'landscape',\n            'large',\n            'larger',\n            'left',\n            'level',\n            'lighter',\n            'line-through',\n            'list-item',\n            'listbox',\n            'listitem',\n            'logical',\n            'loud',\n            'lower',\n            'lower-alpha',\n            'lower-greek',\n            'lower-latin',\n            'lower-roman',\n            'lowercase',\n            'ltr',\n            'marker',\n            'match',\n            'medium',\n            'menu',\n            'menulist',\n            'menulist-button',\n            'menulist-text',\n            'menulist-textfield',\n            'menutext',\n            'message-box',\n            'middle',\n            'min-intrinsic',\n            'miter',\n            'mix',\n            'monospace',\n            'move',\n            'multiple',\n            'n-resize',\n            'narrower',\n            'ne-resize',\n            'no-close',\n            'no-close-quote',\n            'no-open-quote',\n            'no-repeat',\n            'none',\n            'nonzero',\n            'normal',\n            'nowrap',\n            'nw-resize',\n            'oblique',\n            'once',\n            'open-quote',\n            'outset',\n            'outside',\n            'overline',\n            'padding',\n            'pointer',\n            'portrait',\n            'pre',\n            'pre-line',\n            'pre-wrap',\n            'push-button',\n            'radio',\n            'read-only',\n            'read-write',\n            'read-write-plaintext-only',\n            'relative',\n            'repeat',\n            'repeat-x',\n            'repeat-y',\n            'reverse',\n            'ridge',\n            'right',\n            'round',\n            'rtl',\n            'run-in',\n            's-resize',\n            'sans-serif',\n            'scroll',\n            'scrollbar',\n            'scrollbarbutton-down',\n            'scrollbarbutton-left',\n            'scrollbarbutton-right',\n            'scrollbarbutton-up',\n            'scrollbargripper-horizontal',\n            'scrollbargripper-vertical',\n            'scrollbarthumb-horizontal',\n            'scrollbarthumb-vertical',\n            'scrollbartrack-horizontal',\n            'scrollbartrack-vertical',\n            'se-resize',\n            'searchfield',\n            'searchfield-close',\n            'searchfield-results',\n            'semi-condensed',\n            'semi-expanded',\n            'separate',\n            'serif',\n            'show',\n            'single',\n            'skip-white-space',\n            'slide',\n            'slider-horizontal',\n            'slider-vertical',\n            'sliderthumb-horizontal',\n            'sliderthumb-vertical',\n            'slow',\n            'small',\n            'small-caps',\n            'small-caption',\n            'smaller',\n            'solid',\n            'space',\n            'square',\n            'square-button',\n            'start',\n            'static',\n            'status-bar',\n            'stretch',\n            'sub',\n            'super',\n            'sw-resize',\n            'table',\n            'table-caption',\n            'table-cell',\n            'table-column',\n            'table-column-group',\n            'table-footer-group',\n            'table-header-group',\n            'table-row',\n            'table-row-group',\n            'text',\n            'text-bottom',\n            'text-top',\n            'textfield',\n            'thick',\n            'thin',\n            'threeddarkshadow',\n            'threedface',\n            'threedhighlight',\n            'threedlightshadow',\n            'threedshadow',\n            'top',\n            'ultra-condensed',\n            'ultra-expanded',\n            'underline',\n            'unfurl',\n            'up',\n            'upper-alpha',\n            'upper-latin',\n            'upper-roman',\n            'uppercase',\n            'vertical',\n            'visible',\n            'visual',\n            'w-resize',\n            'wait',\n            'wave',\n            'wider',\n            'window',\n            'windowframe',\n            'windowtext',\n            'x-large',\n            'x-small',\n            'xx-large',\n            'xx-small'\n        ),\n        // function xxx()\n        3 => array(\n            'attr',\n            'calc',\n            'contrast',\n            'cross-fade',\n            'cubic-bezier',\n            'cycle',\n            'device-cmyk',\n            'drop-shadow',\n            'ellipse',\n            'hsl',\n            'hsla',\n            'hwb',\n            'image',\n            'matrix',\n            'matrix3d',\n            'minmax',\n            'grayscale',\n            'perspective',\n            'polygon',\n            'radial-gradient',\n            'translate',\n            'translatex',\n            'translatey',\n            'translatez',\n            'translate3d',\n            'skew',\n            'skewx',\n            'skewy',\n            'saturate',\n            'sepia',\n            'scale',\n            'scalex',\n            'scaley',\n            'scalez',\n            'scale3d',\n            'steps',\n            'rect',\n            'repeating-linear-gradient',\n            'repeating-radial-gradient',\n            'rgb',\n            'rgba',\n            'rotate',\n            'rotatex',\n            'rotatey',\n            'rotatez',\n            'rotate3d',\n            'url',\n            'var'\n        ),\n        // colors\n        4 => array(\n            'aliceblue',\n            'antiquewhite',\n            'aqua',\n            'aquamarine',\n            'azure',\n            'beige',\n            'bisque',\n            'black',\n            'blanchedalmond',\n            'blue',\n            'blueviolet',\n            'brown',\n            'burlywood',\n            'cadetblue',\n            'chartreuse',\n            'chocolate',\n            'coral',\n            'cornflowerblue',\n            'cornsilk',\n            'crimson',\n            'cyan',\n            'darkblue',\n            'darkcyan',\n            'darkgoldenrod',\n            'darkgray',\n            'darkgreen',\n            'darkgrey',\n            'darkkhaki',\n            'darkmagenta',\n            'darkolivegreen',\n            'darkorange',\n            'darkorchid',\n            'darkred',\n            'darksalmon',\n            'darkseagreen',\n            'darkslateblue',\n            'darkslategray',\n            'darkslategrey',\n            'darkturquoise',\n            'darkviolet',\n            'deeppink',\n            'deepskyblue',\n            'dimgray',\n            'dimgrey',\n            'dodgerblue',\n            'firebrick',\n            'floralwhite',\n            'forestgreen',\n            'fuchsia',\n            'gainsboro',\n            'ghostwhite',\n            'gold',\n            'goldenrod',\n            'gray',\n            'green',\n            'greenyellow',\n            'grey',\n            'honeydew',\n            'hotpink',\n            'indianred',\n            'indigo',\n            'ivory',\n            'khaki',\n            'lavender',\n            'lavenderblush',\n            'lawngreen',\n            'lemonchiffon',\n            'lightblue',\n            'lightcoral',\n            'lightcyan',\n            'lightgoldenrodyellow',\n            'lightgray',\n            'lightgreen',\n            'lightgrey',\n            'lightpink',\n            'lightsalmon',\n            'lightseagreen',\n            'lightskyblue',\n            'lightslategray',\n            'lightslategrey',\n            'lightsteelblue',\n            'lightyellow',\n            'lime',\n            'limegreen',\n            'linen',\n            'magenta',\n            'maroon',\n            'mediumaquamarine',\n            'mediumblue',\n            'mediumorchid',\n            'mediumpurple',\n            'mediumseagreen',\n            'mediumslateblue',\n            'mediumspringgreen',\n            'mediumturquoise',\n            'mediumvioletred',\n            'midnightblue',\n            'mintcream',\n            'mistyrose',\n            'moccasin',\n            'navajowhite',\n            'navy',\n            'oldlace',\n            'olive',\n            'olivedrab',\n            'orange',\n            'orangered',\n            'orchid',\n            'palegoldenrod',\n            'palegreen',\n            'paleturquoise',\n            'palevioletred',\n            'papayawhip',\n            'peachpuff',\n            'peru',\n            'pink',\n            'plum',\n            'powderblue',\n            'purple',\n            'rebeccapurple',\n            'red',\n            'rosybrown',\n            'royalblue',\n            'saddlebrown',\n            'salmon',\n            'sandybrown',\n            'seagreen',\n            'seashell',\n            'sienna',\n            'silver',\n            'skyblue',\n            'slateblue',\n            'slategray',\n            'slategrey',\n            'snow',\n            'springgreen',\n            'steelblue',\n            'tan',\n            'teal',\n            'thistle',\n            'transparent',\n            'tomato',\n            'turquoise',\n            'violet',\n            'wheat',\n            'white',\n            'whitesmoke',\n            'yellow',\n            'yellowgreen'\n        ),\n        // pseudo class\n        5 => array(\n            'active',\n            'after',\n            'before',\n            'checked',\n            'choices',\n            'dir',\n            'disabled',\n            'empty',\n            'enabled',\n            'first',\n            'first-child',\n            'first-letter',\n            'first-line',\n            'first-of-type',\n            'focus',\n            'fullscreen',\n            'hover',\n            'indeterminate',\n            'in-range',\n            'invalid',\n            'lang',\n            'last-child',\n            'last-of-type',\n            'link',\n            'not',\n            'nth-child',\n            'nth-last-child',\n            'nth-last-of-type',\n            'nth-of-type',\n            'only-child',\n            'only-of-type',\n            'optional',\n            'out-of-range',\n            'repeat-index',\n            'repeat-item',\n            'required',\n            'root',\n            'scope',\n            'selection',\n            'target',\n            'valid',\n            'value',\n            'visited'\n        )\n    ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', ':', ';',\n        '>', '+', '*', ',', '^', '='\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #993333;',\n            3 => 'color: #9932cc;',\n            4 => 'color: #dc143c;',\n            5 => 'color: #F5758F;',\n        ),\n        'COMMENTS' => array(\n            2 => 'color: #ff0000; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n        ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            //1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #000099; font-weight: bold;'\n            //3 => 'color: #000099; font-weight: bold;'\n        ),\n        'BRACKETS' => array(\n            0 => 'color: #00AA00;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n        ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n        ),\n        'METHODS' => array(),\n        'SYMBOLS' => array(\n            0 => 'color: #00AA00;'\n        ),\n        'SCRIPT' => array(),\n        'REGEXPS' => array(\n            0 => 'color: #cc00cc;',\n            1 => 'color: #6666ff;',\n            2 => 'color: #3F84D9; font-weight: bold;',\n            3 => 'color: #933;',\n            4 => 'color: #444;'\n        )\n    ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => ''\n    ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        //DOM Node ID\n        0 => '\\#[a-zA-Z0-9\\-_]+(?:\\\\\\\\:[a-zA-Z0-9\\-_]+)*',\n        //CSS classname\n        1 => '\\.(?!\\d)[a-zA-Z0-9\\-_]+(?:\\\\\\\\:[a-zA-Z0-9\\-_]+)*\\b(?=[\\{\\.#\\s,:].|<\\|)',\n        //CSS rules\n        2 => '\\@(?!\\d)[a-zA-Z0-9\\-_]+(?:\\\\\\\\:[a-zA-Z0-9\\-_]+)*\\b(?=[\\{\\.#\\s,:].|<\\|)',\n        //Measurements\n        3 => '[+\\-]?(\\d+|(\\d*\\.\\d+))(em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx|%)',\n        //var\n        4 => '(--[a-zA-Z0-9\\-]*)'\n    ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_AFTER' => '(?![\\-a-zA-Z0-9_\\|%\\\\-&\\.])',\n            'DISALLOWED_BEFORE' => '(?<![\\-a-zA-Z0-9_\\|%\\\\~&\\.])',\n            1 => array(\n                'DISALLOWED_AFTER' => '(?![\\-a-zA-Z0-9_\\|%\\\\-&\\.])(?=\\s*:)'\n            )\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/cuesheet.php",
    "content": "<?php\n/*************************************************************************************\n * cuesheet.php\n * ----------\n * Author: Benny Baumann (benbe@geshi.org)\n * Copyright: (c) 2009 Benny Baumann (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2009/12/21\n *\n * Cuesheet language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009/12/21 (1.0.8.6)\n *   -  First Release\n *\n * TODO (updated 2009/12/21)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Cuesheet',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        //Single-Line Comments using REM command\n        1 => \"/(?<=\\bREM\\b).*?$/im\",\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'CATALOG','CDTEXTFILE','FILE','FLAGS','INDEX','ISRC','PERFORMER',\n            'POSTGAP','PREGAP','REM','SONGWRITER','TITLE','TRACK'\n            ),\n        2 => array(\n            'AIFF', 'BINARY', 'MOTOROLA', 'MP3', 'WAVE'\n            ),\n        3 => array(\n            '4CH', 'DCP', 'PRE', 'SCMS'\n            ),\n        4 => array(\n            'AUDIO', 'CDG', 'MODE1/2048', 'MODE1/2336', 'MODE2/2336',\n            'MODE2/2352', 'CDI/2336', 'CDI/2352'\n            )\n        ),\n    'SYMBOLS' => array(\n        ':'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #000066; font-weight: bold;',\n            3 => 'color: #000066; font-weight: bold;',\n            4 => 'color: #000066; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080;',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #006600;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000066;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            1 => 'color: #000099;',\n            2 => 'color: #009900;',\n            )\n        ),\n    'URLS' => array(\n        1 => 'http://digitalx.org/cuesheetsyntax.php#{FNAMEL}',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        2 => '\\b[A-Za-z0-9]{5}\\d{7}\\b',\n        1 => '(?<=[\\s:]|^)\\d+(?=[\\s:]|$)',\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 2,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => '(?<![\\w\\.])',\n            'DISALLOWED_AFTER' => '(?![\\w\\.])',\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/d.php",
    "content": "<?php\n/*************************************************************************************\n * d.php\n * -----\n * Author: Thomas Kuehne (thomas@kuehne.cn)\n * Contributors:\n *  - Jimmy Cao\n * Copyright: (c) 2005 Thomas Kuehne (http://thomas.kuehne.cn/)\n * Release Version: 1.0.9.1\n * Date Started: 2005/04/22\n *\n * D language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2011/06/28 (0.0.3) (Jimmy Cao)\n *  -  added D2 features\n * 2005/04/22 (0.0.2)\n *  -  added _d_* and sizeof/ptrdiff_t\n * 2005/04/20 (0.0.1)\n *  -  First release\n *\n * TODO (updated 2005/04/22)\n * -------------------------\n * * nested comments\n * * correct handling of r\"\" and ``\n * * correct handling of ... and ..\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'D',\n    'COMMENT_SINGLE' => array(2 => '///', 1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/', '/+' => '+/'),\n    'COMMENT_REGEXP' => array(\n        // doxygen comments\n        3 => '#/\\*\\*(?![\\*\\/]).*\\*/#sU',\n        // raw strings\n        4 => '#r\"[^\"]*\"#s',\n        // Script Style interpreter comment\n        5 => \"/\\A#!(?=\\\\/).*?$/m\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', \"'\"),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[abfnrtv\\\\'\\\"?\\n\\\\\\\\]#i\",\n        //Hexadecimal Char Specs\n        2 => \"#\\\\\\\\x[\\da-fA-F]{2}#\",\n        //Hexadecimal Char Specs\n        3 => \"#\\\\\\\\u[\\da-fA-F]{4}#\",\n        //Hexadecimal Char Specs\n        4 => \"#\\\\\\\\U[\\da-fA-F]{8}#\",\n        //Octal Char Specs\n        5 => \"#\\\\\\\\[0-7]{1,3}#\",\n        //Named entity escapes\n        /*6 => \"#\\\\\\\\&(?:quot|amp|lt|gt|OElig|oelig|Scaron|scaron|Yuml|circ|tilde|\".\n            \"ensp|emsp|thinsp|zwnj|zwj|lrm|rlm|ndash|mdash|lsquo|rsquo|sbquo|\".\n            \"ldquo|rdquo|bdquo|dagger|Dagger|permil|lsaquo|rsaquo|euro|nbsp|\".\n            \"iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|\".\n            \"shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|\".\n            \"sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|\".\n            \"Atilde|Auml|Aring|AElig|Ccedil|Egrave|Eacute|Ecirc|Euml|Igrave|\".\n            \"Iacute|Icirc|Iuml|ETH|Ntilde|Ograve|Oacute|Ocirc|Otilde|Ouml|\".\n            \"times|Oslash|Ugrave|Uacute|Ucirc|Uuml|Yacute|THORN|szlig|agrave|\".\n            \"aacute|acirc|atilde|auml|aring|aelig|ccedil|egrave|eacute|ecirc|\".\n            \"euml|igrave|iacute|icirc|iuml|eth|ntilde|ograve|oacute|ocirc|\".\n            \"otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|\".\n            \"yuml|fnof|Alpha|Beta|Gamma|Delta|Epsilon|Zeta|Eta|Theta|Iota|\".\n            \"Kappa|Lambda|Mu|Nu|Xi|Omicron|Pi|Rho|Sigma|Tau|Upsilon|Phi|Chi|\".\n            \"Psi|Omega|alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|\".\n            \"kappa|lambda|mu|nu|xi|omicron|pi|rho|sigmaf|sigma|tau|upsilon|\".\n            \"phi|chi|psi|omega|thetasym|upsih|piv|bull|hellip|prime|Prime|\".\n            \"oline|frasl|weierp|image|real|trade|alefsym|larr|uarr|rarr|darr|\".\n            \"harr|crarr|lArr|uArr|rArr|dArr|hArr|forall|part|exist|empty|\".\n            \"nabla|isin|notin|ni|prod|sum|minus|lowast|radic|prop|infin|ang|\".\n            \"and|or|cap|cup|int|there4|sim|cong|asymp|ne|equiv|le|ge|sub|sup|\".\n            \"nsub|sube|supe|oplus|otimes|perp|sdot|lceil|rceil|lfloor|rfloor|\".\n            \"lang|rang|loz|spades|clubs|hearts|diams);#\",*/\n        // optimized:\n        6 => \"#\\\\\\\\&(?:A(?:Elig|acute|circ|grave|lpha|ring|tilde|uml)|Beta|\".\n            \"C(?:cedil|hi)|D(?:agger|elta)|E(?:TH|acute|circ|grave|psilon|ta|uml)|\".\n            \"Gamma|I(?:acute|circ|grave|ota|uml)|Kappa|Lambda|Mu|N(?:tilde|u)|\".\n            \"O(?:Elig|acute|circ|grave|m(?:ega|icron)|slash|tilde|uml)|\".\n            \"P(?:hi|i|rime|si)|Rho|S(?:caron|igma)|T(?:HORN|au|heta)|\".\n            \"U(?:acute|circ|grave|psilon|uml)|Xi|Y(?:acute|uml)|Zeta|\".\n            \"a(?:acute|c(?:irc|ute)|elig|grave|l(?:efsym|pha)|mp|n[dg]|ring|\".\n            \"symp|tilde|uml)|b(?:dquo|eta|rvbar|ull)|c(?:ap|cedil|e(?:dil|nt)|\".\n            \"hi|irc|lubs|o(?:ng|py)|rarr|u(?:p|rren))|d(?:Arr|a(?:gger|rr)|\".\n            \"e(?:g|lta)|i(?:ams|vide))|e(?:acute|circ|grave|m(?:pty|sp)|nsp|\".\n            \"psilon|quiv|t[ah]|u(?:ml|ro)|xist)|f(?:nof|orall|ra(?:c(?:1[24]|34)|sl))|\".\n            \"g(?:amma|e|t)|h(?:Arr|arr|e(?:arts|llip))|i(?:acute|circ|excl|grave|mage|\".\n            \"n(?:fin|t)|ota|quest|sin|uml)|kappa|l(?:Arr|a(?:mbda|ng|quo|rr)|ceil|\".\n            \"dquo|e|floor|o(?:wast|z)|rm|s(?:aquo|quo)|t)|m(?:acr|dash|\".\n            \"i(?:cro|ddot|nus)|u)|n(?:abla|bsp|dash|e|i|ot(?:in)?|sub|tilde|u)|\".\n            \"o(?:acute|circ|elig|grave|line|m(?:ega|icron)|plus|r(?:d[fm])?|\".\n            \"slash|ti(?:lde|mes)|uml)|p(?:ar[at]|er(?:mil|p)|hi|iv?|lusmn|ound|\".\n            \"r(?:ime|o[dp])|si)|quot|r(?:Arr|a(?:dic|ng|quo|rr)|ceil|dquo|e(?:al|g)|\".\n            \"floor|ho|lm|s(?:aquo|quo))|s(?:bquo|caron|dot|ect|hy|i(?:gmaf?|m)|\".\n            \"pades|u(?:be?|m|p[123e]?)|zlig)|t(?:au|h(?:e(?:re4|ta(?:sym)?)|insp|\".\n            \"orn)|i(?:lde|mes)|rade)|u(?:Arr|a(?:cute|rr)|circ|grave|ml|\".\n            \"psi(?:h|lon)|uml)|weierp|xi|y(?:acute|en|uml)|z(?:eta|w(?:j|nj)));#\",\n        ),\n    'HARDQUOTE' => array('`', '`'),\n    'HARDESCAPE' => array(),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n                'break', 'case', 'continue', 'do', 'else',\n                'for', 'foreach', 'goto', 'if', 'return',\n                'switch', 'while', 'foreach_reverse'\n            ),\n        2 => array(\n                'alias', 'asm', 'assert', 'body', 'cast',\n                'catch', 'default', 'delegate', 'delete',\n                'extern', 'false', 'finally', 'function',\n                'import', 'in', 'inout',\n                'invariant', 'is', 'lazy', 'mixin', 'module', 'new',\n                'null', 'out', 'pragma', 'ref', 'super', 'this',\n                'throw', 'true', 'try', 'typeid',\n                'typeof', 'union', 'with', 'scope'\n            ),\n        3 => array(\n                'ClassInfo', 'Error', 'Exception',\n                'Interface', 'Object', 'IMonitor',\n                'OffsetTypeInfo', 'Throwable',\n                'TypeInfo_Class', 'TypeInfo', '__traits',\n                '__EOF__', '__FILE__', '__LINE__',\n            ),\n        4 => array(\n                'abstract', 'align', 'auto', 'bit', 'bool',\n                'byte', 'cdouble', 'cfloat', 'char',\n                'class', 'const', 'creal', 'dchar', 'dstring', 'debug',\n                'deprecated', 'double', 'enum', 'export',\n                'final', 'float', 'idouble', 'ifloat', 'immutable', 'int',\n                'interface', 'ireal', 'long', 'nothrow', 'override',\n                'package', 'private', 'protected', 'ptrdiff_t',\n                'public', 'real', 'short', 'shared', 'size_t',\n                'static', 'string', 'struct', 'synchronized',\n                'template', 'ubyte', 'ucent', 'uint',\n                'ulong', 'unittest', 'ushort', 'version',\n                'void', 'volatile', 'wchar', 'wstring',\n                '__gshared', '@disable', '@property', 'pure', 'safe'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '?', '!', ';', ':', ',', '...', '..',\n        '+', '-', '*', '/', '%', '&', '|', '^', '<', '>', '=', '~',\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #aaaadd; font-weight: bold;',\n            4 => 'color: #993333;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            2 => 'color: #009933; font-style: italic;',\n            3 => 'color: #009933; font-style: italic;',\n            4 => 'color: #ff0000;',\n            5 => 'color: #0040ff;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #660099; font-weight: bold;',\n            3 => 'color: #660099; font-weight: bold;',\n            4 => 'color: #660099; font-weight: bold;',\n            5 => 'color: #006699; font-weight: bold;',\n            6 => 'color: #666699; font-weight: bold; font-style: italic;',\n            'HARD' => '',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;',\n            'HARD' => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000dd;',\n            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;',\n            2 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/dart.php",
    "content": "<?php\n/*************************************************************************************\n * dart.php\n * --------\n * Author: Edward Hart (edward.dan.hart@gmail.com)\n * Copyright: (c) 2013 Edward Hart\n * Release Version: 1.0.9.1\n * Date Started: 2013/10/25\n *\n * Dart language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2013/10/25\n *   -  First Release\n *\n * TODO (updated 2013/10/25)\n * -------------------------\n *   -  Highlight standard library types.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Dart',\n\n    'COMMENT_SINGLE' => array('//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(),\n\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[\\\\\\\\nrfbtv\\'\\\"?\\n]#i\",\n        //Hexadecimal Char Specs\n        2 => \"#\\\\\\\\x[\\da-fA-F]{2}#\",\n        //Hexadecimal Char Specs\n        3 => \"#\\\\\\\\u[\\da-fA-F]{4}#\",\n        4 => \"#\\\\\\\\u\\\\{[\\da-fA-F]*\\\\}#\"\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE |\n        GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n\n    'KEYWORDS' => array(\n        1 => array(\n            'abstract', 'as', 'assert', 'break', 'case', 'catch', 'class',\n            'const', 'continue', 'default', 'do', 'dynamic', 'else', 'export',\n            'extends', 'external', 'factory', 'false', 'final', 'finally',\n            'for', 'get', 'if', 'implements', 'import', 'in', 'is', 'library',\n            'new', 'null', 'operator', 'part', 'return', 'set', 'static',\n            'super', 'switch', 'this', 'throw', 'true', 'try', 'typedef', 'var',\n            'while', 'with'\n            ),\n        2 => array(\n            'double', 'bool', 'int', 'num', 'void'\n            ),\n        ),\n\n    'SYMBOLS' => array(\n        0 => array('(', ')', '{', '}', '[', ']'),\n        1 => array('+', '-', '*', '/', '%', '~'),\n        2 => array('&', '|', '^'),\n        3 => array('=', '!', '<', '>'),\n        4 => array('?', ':'),\n        5 => array('..'),\n        6 => array(';', ',')\n        ),\n\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        ),\n\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'font-weight: bold;',\n            2 => 'color: #445588; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            0 => 'color: #999988; font-style: italic;',\n            'MULTI' => 'color: #999988; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #660099; font-weight: bold;',\n            3 => 'color: #660099; font-weight: bold;',\n            4 => 'color: #660099; font-weight: bold;',\n            5 => 'color: #006699; font-weight: bold;',\n            'HARD' => ''\n            ),\n        'STRINGS' => array(\n            0 => 'color: #d14;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #009999;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'\n            ),\n        'BRACKETS' => array(''),\n        'METHODS' => array(\n            1 => 'color: #006633;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'font-weight: bold;',\n            1 => 'font-weight: bold;',\n            2 => 'font-weight: bold;',\n            3 => 'font-weight: bold;',\n            4 => 'font-weight: bold;',\n            5 => 'font-weight: bold;',\n            6 => 'font-weight: bold;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/dcl.php",
    "content": "<?php\n/*************************************************************************************\n * dcl.php\n * --------\n * Author: Petr Hendl (petr@hendl.cz)\n * Copyright: (c) 2011 Petr Hendl http://hendl.cz/geshi/\n * Release Version: 1.0.9.1\n * Date Started: 2011/02/17\n *\n * DCL language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2011-02-17 (1.0.8.11)\n *   - First Release\n *\n * TODO\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'DCL',\n    'COMMENT_SINGLE' => array('$!', '!'),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        2 => '/(?<=\\$)\\s*sql\\s+.*?(?:quit|exit);?\\s*?$/sim' // do not highlight inline sql\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'HARDESCAPE' => array(),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        1 => \"/''[a-zA-Z\\\\-_]+'/\"\n        ),\n    'KEYWORDS' => array(\n        1 => array( // commands\n            'ACCOUNTING', 'ALLOCATE', 'ANALYZE', 'APPEND', 'ASSIGN', 'ATTACH', 'BACKUP',\n            'CALL', 'CANCEL', 'CHECKSUM', 'CLOSE', 'CONNECT', 'CONTINUE', 'CONVERT',\n            'COPY', 'CREATE', 'DEALLOCATE', 'DEASSIGN', 'DEBUG', 'DECK',\n            'DECRYPT', 'DEFINE', 'DELETE', 'DEPOSIT', 'DIFFERENCES', 'DIRECTORY',\n            'DISABLE',  'AUTOSTART', 'DISCONNECT', 'DISMOUNT', 'DUMP', 'EDIT', 'ENABLE',\n            'ENCRYPT', 'ENDSUBROUTINE', 'EOD', 'EOJ', 'EXAMINE', 'EXCHANGE',\n            'EXIT', 'FONT', 'GOSUB', 'GOTO', 'HELP', 'IF', 'THEN', 'ELSE', 'ENDIF', 'INITIALIZE', 'INQUIRE',\n            'INSTALL', 'JAVA', 'JOB', 'LIBRARY', 'LICENSE', 'LINK', 'LOGIN', 'LOGOUT',\n            'MACRO', 'MAIL', 'MERGE', 'MESSAGE', 'MONITOR', 'MOUNT', 'NCS', 'ON', 'OPEN',\n            'PASSWORD', 'PATCH', 'PHONE', 'PIPE', 'PPPD', 'PRINT', 'PRODUCT', 'PURGE',\n            'READ', 'RECALL', 'RENAME', 'REPLY', 'REQUEST', 'RETURN', 'RMU', 'RUN', 'RUNOFF',\n            'SEARCH', 'SET', 'SET AUDIT', 'SET BOOTBLOCK', 'SET BROADCAST',\n            'SET CACHE', 'SET CARD_READER', 'SET CLUSTER', 'SET COMMAND', 'SET CONTROL',\n            'SET CPU', 'SET DAY', 'SET DEFAULT', 'SET DEVICE', 'SET DIRECTORY',\n            'SET DISPLAY', 'SET ENTRY', 'SET FILE', 'SET HOST', 'SET IMAGE', 'SET KEY',\n            'SET LOGINS', 'SET MAGTAPE', 'SET MESSAGE', 'SET NETWORK', 'SET ON', 'SET OUTPUT_RATE',\n            'SET PASSWORD', 'SET PREFERRED_PATH', 'SET PREFIX', 'SET PRINTER', 'SET PROCESS',\n            'SET PROMPT', 'SET PROTECTION', 'SET QUEUE', 'SET RESTART_VALUE',\n            'SET RIGHTS_LIST', 'SET RMS_DEFAULT', 'SET ROOT', 'SET SECURITY',\n            'SET SERVER ACME_SERVER', 'SET SERVER REGISTRY_SERVER', 'SET SERVER SECURITY_SERVER',\n            'SET SHADOW', 'SET SYMBOL', 'SET TERMINAL', 'SET TIME', 'SET VERIFY',\n            'SET VOLUME', 'SET WORKING_SET', 'SHOW', 'SHOW AUDIT',\n            'SHOW BROADCAST', 'SHOW CLUSTER', 'SHOW CPU', 'SHOW DEFAULT', 'SHOW DEVICES',\n            'SHOW DISPLAY', 'SHOW ENTRY', 'SHOW ERROR', 'SHOW FASTPATH', 'SHOW IMAGE',\n            'SHOW INTRUSION', 'SHOW KEY', 'SHOW LICENSE', 'SHOW LOGICAL', 'SHOW MEMORY',\n            'SHOW NETWORK', 'SHOW PRINTER', 'SHOW PROCESS', 'SHOW PROTECTION', 'SHOW QUEUE',\n            'SHOW QUOTA', 'SHOW RMS_DEFAULT', 'SHOW ROOT', 'SHOW SECURITY',\n            'SHOW SERVER ACME_SERVER', 'SHOW SERVER REGISTRY_SERVER', 'SHOW SHADOW',\n            'SHOW STATUS', 'SHOW SYMBOL', 'SHOW SYSTEM', 'SHOW TERMINAL', 'SHOW TIME',\n            'SHOW TRANSLATION', 'SHOW USERS', 'SHOW WORKING_SET', 'SHOW ZONE', 'SORT',\n            'SPAWN', 'START', 'STOP', 'SUBMIT', 'SUBROUTINE', 'SYNCHRONIZE', 'TYPE',\n            'UNLOCK', 'VIEW', 'WAIT', 'WRITE', 'XAUTH'\n            ),\n        2 => array( // lexical functions\n            'F$CONTEXT', 'F$CSID', 'F$CUNITS', 'F$CVSI', 'F$CVTIME', 'F$CVUI',\n            'F$DELTA_TIME', 'F$DEVICE', 'F$DIRECTORY', 'F$EDIT', 'F$ELEMENT',\n            'F$ENVIRONMENT', 'F$EXTRACT', 'F$FAO', 'F$FID_TO_NAME', 'F$FILE_ATTRIBUTES',\n            'F$GETDVI', 'F$GETENV', 'F$GETJPI', 'F$GETQUI', 'F$GETSYI', 'F$IDENTIFIER',\n            'F$INTEGER', 'F$LENGTH', 'F$LICENSE', 'F$LOCATE', 'F$MATCH_WILD', 'F$MESSAGE',\n            'F$MODE', 'F$MULTIPATH', 'F$PARSE', 'F$PID', 'F$PRIVILEGE', 'F$PROCESS',\n            'F$SEARCH', 'F$SETPRV', 'F$STRING', 'F$TIME', 'F$TRNLNM', 'F$TYPE', 'F$UNIQUE',\n            'F$USER', 'F$VERIFY'\n            ),\n        3 => array( // special variables etc\n            'sql$database', 'P1', 'P2', 'P3', 'P4', 'P5', 'P6', 'P7', 'P8', 'P9',\n            '$status', '$severity', 'sys$login', 'sys$system',\n            'sys$input', 'sys$output', 'sys$pipe'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '@', '&', '|', '<', '>', '-',\n        '.eqs.', '.eq.', '.lt.', '.lts.', '.gt.', '.gts.', '.ne.', '.nes.',\n        '.le.', '.ge.', '.ges.', '.les.',\n        '.EQS.', '.EQ.', '.LT.', '.LTS.', '.GT.', '.GTS.', '.NE.', '.NES.',\n        '.LE.', '.GE.', '.GES.', '.LES.',\n        '.and.', '.or.', '.not.',\n        '.AND.', '.OR.', '.NOT.',\n        '==', ':==', '=', ':='\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #0066FF;',\n            3 => 'color: #993300;'\n            ),\n        'COMMENTS' => array(\n            0 => 'color: #666666; font-style: italic;',\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #9999FF; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #006666;',\n            1 => 'color: #0099FF;',\n            2 => 'color: red;',\n            3 => 'color: #007800;',\n            4 => 'color: #007800;',\n            5 => 'color: #780078;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #7a0874; font-weight: bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #009900;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #000000;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000; font-weight: bold;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #0099FF;',                     // variables\n            1 => 'color: #0000FF;',                     // qualifiers\n            2 => 'color: #FF6600; font-weight: bold;'   // labels\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        // variables\n        0 => \"'[a-zA-Z_\\\\-$]+'\",\n        // qualifiers and parameters\n        1 => \"(?:\\/[a-zA-Z_\\/]+)[\\s=]\",\n        // labels\n        2 => '(?<=\\$)\\s*[a-zA-Z\\-_]+:'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'COMMENTS' => array(\n        ),\n        'KEYWORDS' => array(\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/dcpu16.php",
    "content": "<?php\n/*************************************************************************************\n * dcpu16.php\n * -------\n * Author: Benny Baumann (BenBE@omorphia.de)\n * Copyright: (c) 2007-2014 Benny Baumann (http://geshi.org/)\n * Release Version: 1.0.9.1\n * Date Started: 2012/04/12\n *\n * DCPU/16 Assembly language file for GeSHi.\n * Syntax definition based on http://0x10c.com/doc/dcpu-16.txt\n *\n * CHANGES\n * -------\n * 2012/04/12 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2012/04/12)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'DCPU-16 Assembly',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'NUMBERS' => GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_HEX_PREFIX,\n    'KEYWORDS' => array(\n        /*CPU*/\n        1 => array(\n            'set','add','sub','mul','div','mod','shl','shr','and','bor','xor',\n            'ife','ifn','ifg','ifb',\n            'jsr'\n            ),\n        /*registers*/\n        2 => array(\n            'a','b','c','x','y','z','i','j',\n            'pc','sp','o',\n            'pop','peek','push' //Special cases with DCPU-16\n            ),\n        ),\n    'SYMBOLS' => array(\n        '[', ']', '+', '-', ','\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000088; font-weight:bold;',\n            2 => 'color: #0000ff;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #adadad; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000088;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #7f007f;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #880000;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #008000;'\n            ),\n        'REGEXPS' => array(\n            2 => 'color: #993333;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => 'http://0x10c.com/doc/dcpu-16.txt',\n        2 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        //Hex numbers\n        //0 => '0[0-9a-fA-F]{1,32}[hH]',\n        //Binary numbers\n        //1 => '\\%[01]{1,64}|[01]{1,64}[bB]?(?![^<]*>)',\n        //Labels\n        2 => '^:[_a-zA-Z][_a-zA-Z0-9]?(?=\\s|$)'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\|\\#\\/])\",\n            'DISALLOWED_AFTER' => \"(?![a-zA-Z0-9_\\|%\\\\-])\"\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/dcs.php",
    "content": "<?php\n/*************************************************************************************\n * dcs.php\n * ---------------------------------\n * Author: Stelio Passaris (GeSHi@stelio.net)\n * Copyright: (c) 2009 Stelio Passaris (http://stelio.net/stiki/GeSHi)\n * Release Version: 1.0.9.1\n * Date Started: 2009/01/20\n *\n * DCS language file for GeSHi.\n *\n * DCS (Data Conversion System) is part of Sungard iWorks' Prophet suite and is used\n * to convert external data files into a format that Prophet and Glean can read.\n * See http://www.prophet-web.com/Products/DCS for product information.\n * This language file is current for DCS version 7.3.2.\n *\n * Note that the DCS IDE does not handle escape characters correctly. The IDE thinks\n * that a backslash '\\' is an escape character, but in practice the backslash does\n * not escape the string delimiter character '\"' when the program runs. A '\\\\' is\n * escaped to '\\' when the program runs, but '\\\"' is treated as '\\' at the end of a\n * string. Therefore in this language file, we do not recognise the backslash as an\n * escape character. For the purposes of GeSHi, there is no character escaping.\n *\n * CHANGES\n * -------\n * 2009/02/21 (1.0.8.3)\n *  -  First Release\n *\n * TODO (updated 2009/02/21)\n * -------------------------\n * * Add handling for embedded C code. Note that the DCS IDE does not highlight C code\n *   correctly, but that doesn't mean that we can't! This will be included for a\n *   stable release of GeSHi of version 1.1.x (or later) that allows for highlighting\n *   embedded code using that code's appropriate language file.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'DCS',\n    'COMMENT_SINGLE' => array(\n        1 => ';'\n        ),\n    'COMMENT_MULTI' => array(\n        ),\n    'COMMENT_REGEXP' => array(\n        // Highlight embedded C code in a separate color:\n        2 => '/\\bINSERT_C_CODE\\b.*?\\bEND_C_CODE\\b/ims'\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,\n    'QUOTEMARKS' => array(\n        '\"'\n        ),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => '',\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'abs', 'ascii_value', 'bit_value', 'blank_date', 'calc_unit_values', 'cm',\n            'complete_months', 'complete_years', 'correct', 'create_input_file', 'cy',\n            'date_convert', 'day', 'del_output_separator',\n            'delete_existing_output_files', 'div', 'ex', 'exact_years', 'exp',\n            'extract_date', 'failed_validation', 'file_number', 'first_record',\n            'fract', 'fund_fac_a', 'fund_fac_b', 'fund_fac_c', 'fund_fac_d',\n            'fund_fac_e', 'fund_fac_f', 'fund_fac_g', 'fund_fac_h', 'fund_fac_i',\n            'fund_fac_j', 'fund_fac_k', 'fund_fac_l', 'fund_fac_m', 'fund_fac_n',\n            'fund_fac_o', 'fund_fac_p', 'fund_fac_q', 'fund_fac_r', 'fund_fac_s',\n            'fund_fac_t', 'fund_fac_u', 'fund_fac_v', 'fund_fac_w', 'fund_fac_x',\n            'fund_fac_y', 'fund_fac_z', 'group', 'group_record',\n            'input_file_date_time', 'input_file_extension', 'input_file_location',\n            'input_file_name', 'int', 'invalid', 'last_record', 'leap_year', 'len',\n            'ln', 'log', 'main_format_name', 'max', 'max_num_subrecords', 'message',\n            'min', 'mod', 'month', 'months_add', 'months_sub', 'nearest_months',\n            'nearest_years', 'next_record', 'nm', 'no_of_current_records',\n            'no_of_records', 'numval', 'ny', 'output', 'output_array_as_constants',\n            'output_file_path', 'output_record', 'pmdf_output', 'previous', 'rand',\n            're_start', 'read_generic_table', 'read_generic_table_text',\n            'read_input_footer', 'read_input_footer_text', 'read_input_header',\n            'read_input_header_text', 'record_count', 'record_suppressed', 'round',\n            'round_down', 'round_near', 'round_up', 'run_dcs_program', 'run_parameter',\n            'run_parameter_text', 'set_main_record', 'set_num_subrecords',\n            'sort_array', 'sort_current_records', 'sort_input', 'strval', 'substr',\n            'summarise', 'summarise_record', 'summarise_units',\n            'summarise_units_record', 'suppress_record', 'table_correct',\n            'table_validate', 'terminate', 'time', 'today', 'trim', 'ubound', 'year',\n            'years_add', 'years_sub'\n            ),\n        2 => array(\n            'and', 'as', 'begin', 'boolean', 'byref', 'byval', 'call', 'case', 'date',\n            'default', 'do', 'else', 'elseif', 'end_c_code', 'endfor', 'endfunction',\n            'endif', 'endproc', 'endswitch', 'endwhile', 'eq',\n            'explicit_declarations', 'false', 'for', 'from', 'function', 'ge', 'gt',\n            'if', 'insert_c_code', 'integer', 'le', 'loop', 'lt', 'ne', 'not',\n            'number', 'or', 'private', 'proc', 'public', 'quitloop', 'return',\n            'short', 'step', 'switch', 'text', 'then', 'to', 'true', 'while'\n            ),\n        3 => array(\n            // These keywords are not highlighted by the DCS IDE but we may as well\n            // keep track of them anyway:\n            'mp_file', 'odbc_file'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']',\n        '=', '<', '>',\n        '+', '-', '*', '/', '^',\n        ':', ','\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: red;',\n            2 => 'color: blue;',\n            3 => 'color: black;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: black; background-color: silver;',\n            // Colors for highlighting embedded C code:\n            2 => 'color: maroon; background-color: pink;'\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'BRACKETS' => array(\n            0 => 'color: black;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: green;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: green;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: black;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            ),\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/delphi.php",
    "content": "<?php\n/*************************************************************************************\n * delphi.php\n * ----------\n * Author: J�rja Norbert (jnorbi@vipmail.hu), Benny Baumann (BenBE@omorphia.de)\n * Copyright: (c) 2004 J�rja Norbert, Benny Baumann (BenBE@omorphia.de), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/07/26\n *\n * Delphi (Object Pascal) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2012/06/27 (1.0.8.11)\n *   -  Added some keywords\n *   -  fixed hex numbers and hex char literals (including WideChar)\n *   -  Added support for FPC-Style generics\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n * 2005/11/19 (1.0.3)\n *   -  Updated the very incomplete keyword and type lists\n * 2005/09/03 (1.0.2)\n *   -  Added support for hex numbers and string entities\n * 2004/11/27 (1.0.1)\n *   -  Added support for multiple object splitters\n * 2004/10/27 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Delphi',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('(*' => '*)', '{' => '}'),\n    //Compiler directives\n    'COMMENT_REGEXP' => array(2 => '/\\\\{\\\\$.*?}|\\\\(\\\\*\\\\$.*?\\\\*\\\\)/U'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\"),\n    'ESCAPE_CHAR' => '',\n\n    'KEYWORDS' => array(\n        1 => array(\n            'Abstract', 'And', 'Array', 'As', 'Asm', 'At', 'Begin', 'Case',\n            'Class', 'Const', 'Constructor', 'Contains', 'Default', 'delayed', 'Destructor',\n            'DispInterface', 'Div', 'Do', 'DownTo', 'Else', 'End', 'Except',\n            'Export', 'Exports', 'External', 'File', 'Finalization', 'Finally', 'For',\n            'Function', 'Generic', 'Goto', 'If', 'Implementation', 'In', 'Inherited',\n            'Initialization', 'Inline', 'Interface', 'Is', 'Label', 'Library', 'Message',\n            'Mod', 'Nil', 'Not', 'Object', 'Of', 'On', 'Or', 'Overload', 'Override',\n            'Package', 'Packed', 'Private', 'Procedure', 'Program', 'Property',\n            'Protected', 'Public', 'Published', 'Read', 'Raise', 'Record', 'Register',\n            'Repeat', 'Requires', 'Resourcestring', 'Set', 'Shl', 'Shr', 'Specialize', 'Stored',\n            'Then', 'ThreadVar', 'To', 'Try', 'Type', 'Unit', 'Until', 'Uses', 'Var',\n            'Virtual', 'While', 'With', 'Write', 'Xor', 'assembler', 'far',\n            'near', 'pascal', 'cdecl', 'safecall', 'stdcall', 'varargs'\n            ),\n        2 => array(\n            'false', 'self', 'true',\n            ),\n        3 => array(\n            'Abs', 'AcquireExceptionObject', 'Addr', 'AnsiToUtf8', 'Append', 'ArcTan',\n            'Assert', 'AssignFile', 'Assigned', 'BeginThread', 'BlockRead',\n            'BlockWrite', 'Break', 'ChDir', 'Chr', 'Close', 'CloseFile',\n            'CompToCurrency', 'CompToDouble', 'Concat', 'Continue', 'Copy', 'Cos',\n            'Dec', 'Delete', 'Dispose', 'DoubleToComp', 'EndThread', 'EnumModules',\n            'EnumResourceModules', 'Eof', 'Eoln', 'Erase', 'ExceptAddr',\n            'ExceptObject', 'Exclude', 'Exit', 'Exp', 'FilePos', 'FileSize',\n            'FillChar', 'Finalize', 'FindClassHInstance', 'FindHInstance',\n            'FindResourceHInstance', 'Flush', 'Frac', 'FreeMem', 'Get8087CW',\n            'GetDir', 'GetLastError', 'GetMem', 'GetMemoryManager',\n            'GetModuleFileName', 'GetVariantManager', 'Halt', 'Hi', 'High',\n            'IOResult', 'Inc', 'Include', 'Initialize', 'Insert', 'Int',\n            'IsMemoryManagerSet', 'IsVariantManagerSet', 'Length', 'Ln', 'Lo', 'Low',\n            'MkDir', 'Move', 'New', 'Odd', 'OleStrToStrVar', 'OleStrToString', 'Ord',\n            'PUCS4Chars', 'ParamCount', 'ParamStr', 'Pi', 'Pos', 'Pred', 'Ptr',\n            'Random', 'Randomize', 'Read', 'ReadLn', 'ReallocMem',\n            'ReleaseExceptionObject', 'Rename', 'Reset', 'Rewrite', 'RmDir', 'Round',\n            'RunError', 'Seek', 'SeekEof', 'SeekEoln', 'Set8087CW', 'SetLength',\n            'SetLineBreakStyle', 'SetMemoryManager', 'SetString', 'SetTextBuf',\n            'SetVariantManager', 'Sin', 'SizeOf', 'Slice', 'Sqr', 'Sqrt', 'Str',\n            'StringOfChar', 'StringToOleStr', 'StringToWideChar', 'Succ', 'Swap',\n            'Trunc', 'Truncate', 'TypeInfo', 'UCS4StringToWideString', 'UTF8Decode',\n            'UTF8Encode', 'UnicodeToUtf8', 'UniqueString', 'UpCase', 'Utf8ToAnsi',\n            'Utf8ToUnicode', 'Val', 'VarArrayRedim', 'VarClear',\n            'WideCharLenToStrVar', 'WideCharLenToString', 'WideCharToStrVar',\n            'WideCharToString', 'WideStringToUCS4String', 'Write', 'WriteLn',\n\n            'Abort', 'AddExitProc', 'AddTerminateProc', 'AdjustLineBreaks', 'AllocMem',\n            'AnsiCompareFileName', 'AnsiCompareStr', 'AnsiCompareText',\n            'AnsiDequotedStr', 'AnsiExtractQuotedStr', 'AnsiLastChar',\n            'AnsiLowerCase', 'AnsiLowerCaseFileName', 'AnsiPos', 'AnsiQuotedStr',\n            'AnsiSameStr', 'AnsiSameText', 'AnsiStrComp', 'AnsiStrIComp',\n            'AnsiStrLComp', 'AnsiStrLIComp', 'AnsiStrLastChar', 'AnsiStrLower',\n            'AnsiStrPos', 'AnsiStrRScan', 'AnsiStrScan', 'AnsiStrUpper',\n            'AnsiUpperCase', 'AnsiUpperCaseFileName', 'AppendStr', 'AssignStr',\n            'Beep', 'BoolToStr', 'ByteToCharIndex', 'ByteToCharLen', 'ByteType',\n            'CallTerminateProcs', 'ChangeFileExt', 'CharLength', 'CharToByteIndex',\n            'CharToByteLen', 'CompareMem', 'CompareStr', 'CompareText', 'CreateDir',\n            'CreateGUID', 'CurrToStr', 'CurrToStrF', 'CurrentYear', 'Date',\n            'DateTimeToFileDate', 'DateTimeToStr', 'DateTimeToString',\n            'DateTimeToSystemTime', 'DateTimeToTimeStamp', 'DateToStr', 'DayOfWeek',\n            'DecodeDate', 'DecodeDateFully', 'DecodeTime', 'DeleteFile',\n            'DirectoryExists', 'DiskFree', 'DiskSize', 'DisposeStr', 'EncodeDate',\n            'EncodeTime', 'ExceptionErrorMessage', 'ExcludeTrailingBackslash',\n            'ExcludeTrailingPathDelimiter', 'ExpandFileName', 'ExpandFileNameCase',\n            'ExpandUNCFileName', 'ExtractFileDir', 'ExtractFileDrive',\n            'ExtractFileExt', 'ExtractFileName', 'ExtractFilePath',\n            'ExtractRelativePath', 'ExtractShortPathName', 'FileAge', 'FileClose',\n            'FileCreate', 'FileDateToDateTime', 'FileExists', 'FileGetAttr',\n            'FileGetDate', 'FileIsReadOnly', 'FileOpen', 'FileRead', 'FileSearch',\n            'FileSeek', 'FileSetAttr', 'FileSetDate', 'FileSetReadOnly', 'FileWrite',\n            'FinalizePackage', 'FindClose', 'FindCmdLineSwitch', 'FindFirst',\n            'FindNext', 'FloatToCurr', 'FloatToDateTime', 'FloatToDecimal',\n            'FloatToStr', 'FloatToStrF', 'FloatToText', 'FloatToTextFmt',\n            'FmtLoadStr', 'FmtStr', 'ForceDirectories', 'Format', 'FormatBuf',\n            'FormatCurr', 'FormatDateTime', 'FormatFloat', 'FreeAndNil',\n            'GUIDToString', 'GetCurrentDir', 'GetEnvironmentVariable',\n            'GetFileVersion', 'GetFormatSettings', 'GetLocaleFormatSettings',\n            'GetModuleName', 'GetPackageDescription', 'GetPackageInfo', 'GetTime',\n            'IncAMonth', 'IncMonth', 'IncludeTrailingBackslash',\n            'IncludeTrailingPathDelimiter', 'InitializePackage', 'IntToHex',\n            'IntToStr', 'InterlockedDecrement', 'InterlockedExchange',\n            'InterlockedExchangeAdd', 'InterlockedIncrement', 'IsDelimiter',\n            'IsEqualGUID', 'IsLeapYear', 'IsPathDelimiter', 'IsValidIdent',\n            'Languages', 'LastDelimiter', 'LoadPackage', 'LoadStr', 'LowerCase',\n            'MSecsToTimeStamp', 'NewStr', 'NextCharIndex', 'Now', 'OutOfMemoryError',\n            'QuotedStr', 'RaiseLastOSError', 'RaiseLastWin32Error', 'RemoveDir',\n            'RenameFile', 'ReplaceDate', 'ReplaceTime', 'SafeLoadLibrary',\n            'SameFileName', 'SameText', 'SetCurrentDir', 'ShowException', 'Sleep',\n            'StrAlloc', 'StrBufSize', 'StrByteType', 'StrCat', 'StrCharLength',\n            'StrComp', 'StrCopy', 'StrDispose', 'StrECopy', 'StrEnd', 'StrFmt',\n            'StrIComp', 'StrLCat', 'StrLComp', 'StrLCopy', 'StrLFmt', 'StrLIComp',\n            'StrLen', 'StrLower', 'StrMove', 'StrNew', 'StrNextChar', 'StrPCopy',\n            'StrPLCopy', 'StrPas', 'StrPos', 'StrRScan', 'StrScan', 'StrToBool',\n            'StrToBoolDef', 'StrToCurr', 'StrToCurrDef', 'StrToDate', 'StrToDateDef',\n            'StrToDateTime', 'StrToDateTimeDef', 'StrToFloat', 'StrToFloatDef',\n            'StrToInt', 'StrToInt64', 'StrToInt64Def', 'StrToIntDef', 'StrToTime',\n            'StrToTimeDef', 'StrUpper', 'StringReplace', 'StringToGUID', 'Supports',\n            'SysErrorMessage', 'SystemTimeToDateTime', 'TextToFloat', 'Time',\n            'TimeStampToDateTime', 'TimeStampToMSecs', 'TimeToStr', 'Trim',\n            'TrimLeft', 'TrimRight', 'TryEncodeDate', 'TryEncodeTime',\n            'TryFloatToCurr', 'TryFloatToDateTime', 'TryStrToBool', 'TryStrToCurr',\n            'TryStrToDate', 'TryStrToDateTime', 'TryStrToFloat', 'TryStrToInt',\n            'TryStrToInt64', 'TryStrToTime', 'UnloadPackage', 'UpperCase',\n            'WideCompareStr', 'WideCompareText', 'WideFmtStr', 'WideFormat',\n            'WideFormatBuf', 'WideLowerCase', 'WideSameStr', 'WideSameText',\n            'WideUpperCase', 'Win32Check', 'WrapText',\n\n            'ActivateClassGroup', 'AllocateHwnd', 'BinToHex', 'CheckSynchronize',\n            'CollectionsEqual', 'CountGenerations', 'DeallocateHwnd', 'EqualRect',\n            'ExtractStrings', 'FindClass', 'FindGlobalComponent', 'GetClass',\n            'GroupDescendantsWith', 'HexToBin', 'IdentToInt',\n            'InitInheritedComponent', 'IntToIdent', 'InvalidPoint',\n            'IsUniqueGlobalComponentName', 'LineStart', 'ObjectBinaryToText',\n            'ObjectResourceToText', 'ObjectTextToBinary', 'ObjectTextToResource',\n            'PointsEqual', 'ReadComponentRes', 'ReadComponentResEx',\n            'ReadComponentResFile', 'Rect', 'RegisterClass', 'RegisterClassAlias',\n            'RegisterClasses', 'RegisterComponents', 'RegisterIntegerConsts',\n            'RegisterNoIcon', 'RegisterNonActiveX', 'SmallPoint', 'StartClassGroup',\n            'TestStreamFormat', 'UnregisterClass', 'UnregisterClasses',\n            'UnregisterIntegerConsts', 'UnregisterModuleClasses',\n            'WriteComponentResFile',\n\n            'ArcCos', 'ArcCosh', 'ArcCot', 'ArcCotH', 'ArcCsc', 'ArcCscH', 'ArcSec',\n            'ArcSecH', 'ArcSin', 'ArcSinh', 'ArcTan2', 'ArcTanh', 'Ceil',\n            'CompareValue', 'Cosecant', 'Cosh', 'Cot', 'CotH', 'Cotan', 'Csc', 'CscH',\n            'CycleToDeg', 'CycleToGrad', 'CycleToRad', 'DegToCycle', 'DegToGrad',\n            'DegToRad', 'DivMod', 'DoubleDecliningBalance', 'EnsureRange', 'Floor',\n            'Frexp', 'FutureValue', 'GetExceptionMask', 'GetPrecisionMode',\n            'GetRoundMode', 'GradToCycle', 'GradToDeg', 'GradToRad', 'Hypot',\n            'InRange', 'IntPower', 'InterestPayment', 'InterestRate',\n            'InternalRateOfReturn', 'IsInfinite', 'IsNan', 'IsZero', 'Ldexp', 'LnXP1',\n            'Log10', 'Log2', 'LogN', 'Max', 'MaxIntValue', 'MaxValue', 'Mean',\n            'MeanAndStdDev', 'Min', 'MinIntValue', 'MinValue', 'MomentSkewKurtosis',\n            'NetPresentValue', 'Norm', 'NumberOfPeriods', 'Payment', 'PeriodPayment',\n            'Poly', 'PopnStdDev', 'PopnVariance', 'Power', 'PresentValue',\n            'RadToCycle', 'RadToDeg', 'RadToGrad', 'RandG', 'RandomRange', 'RoundTo',\n            'SLNDepreciation', 'SYDDepreciation', 'SameValue', 'Sec', 'SecH',\n            'Secant', 'SetExceptionMask', 'SetPrecisionMode', 'SetRoundMode', 'Sign',\n            'SimpleRoundTo', 'SinCos', 'Sinh', 'StdDev', 'Sum', 'SumInt',\n            'SumOfSquares', 'SumsAndSquares', 'Tan', 'Tanh', 'TotalVariance',\n            'Variance'\n            ),\n        4 => array(\n            'AnsiChar', 'AnsiString', 'Bool', 'Boolean', 'Byte', 'ByteBool', 'Cardinal', 'Char',\n            'Comp', 'Currency', 'DWORD', 'Double', 'Extended', 'Int64', 'Integer', 'IUnknown',\n            'LongBool', 'LongInt', 'LongWord', 'PAnsiChar', 'PAnsiString', 'PBool', 'PBoolean', 'PByte',\n            'PByteArray', 'PCardinal', 'PChar', 'PComp', 'PCurrency', 'PDWORD', 'PDate', 'PDateTime',\n            'PDouble', 'PExtended', 'PInt64', 'PInteger', 'PLongInt', 'PLongWord', 'Pointer', 'PPointer',\n            'PShortInt', 'PShortString', 'PSingle', 'PSmallInt', 'PString', 'PHandle', 'PVariant', 'PWord',\n            'PWordArray', 'PWordBool', 'PWideChar', 'PWideString', 'Real', 'Real48', 'ShortInt', 'ShortString',\n            'Single', 'SmallInt', 'String', 'TClass', 'TDate', 'TDateTime', 'TextFile', 'THandle',\n            'TObject', 'TTime', 'Variant', 'WideChar', 'WideString', 'Word', 'WordBool'\n            ),\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        ),\n    'SYMBOLS' => array(\n        0 => array('(', ')', '[', ']'),\n        1 => array('.', ',', ':', ';'),\n        2 => array('@', '^'),\n        3 => array('=', '+', '-', '*', '/')\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;',\n            4 => 'color: #000066; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            2 => 'color: #008000; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #ff0000; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000066;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #0000cc;',\n            1 => 'color: #ff0000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000066;',\n            1 => 'color: #000066;',\n            2 => 'color: #000066;',\n            3 => 'color: #000066;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        //Hex numbers\n        0 => '(?<!\\#)\\$[0-9a-fA-F]+(?!\\w)',\n        //Characters\n        1 => '\\#(?:\\$[0-9a-fA-F]{1,4}|\\d{1,5})'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 2,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            3 => array(\n                'DISALLOWED_AFTER' => '(?=\\s*[(;])'\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/diff.php",
    "content": "<?php\n/*************************************************************************************\n * diff.php\n * --------\n * Author: Conny Brunnkvist (conny@fuchsia.se), W. Tasin (tasin@fhm.edu)\n * Copyright: (c) 2004 Fuchsia Open Source Solutions (http://www.fuchsia.se/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/12/29\n *\n * Diff-output language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *  -  Added description of extra language features (SF#1970248)\n * 2006/02/27\n *  -  changing language file to use matching of start (^) and end ($) (wt)\n * 2004/12/29 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2006/02/27)\n * -------------------------\n *\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n\n$language_data = array (\n    'LANG_NAME' => 'Diff',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => ' ',\n    'KEYWORDS' => array(\n            1 => array(\n                '\\ No newline at end of file'\n            ),\n//            2 => array(\n//                '***************' /* This only seems to works in some cases? */\n//            ),\n        ),\n    'SYMBOLS' => array(\n        ),\n    'CASE_SENSITIVE' => array(\n        1 => false,\n//        2 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #aaaaaa; font-style: italic;',\n//            2 => 'color: #dd6611;',\n            ),\n        'COMMENTS' => array(\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'BRACKETS' => array(\n            0 => ''\n            ),\n        'STRINGS' => array(\n            0 => ''\n            ),\n        'NUMBERS' => array(\n            0 => ''\n            ),\n        'METHODS' => array(\n            0 => ''\n            ),\n        'SYMBOLS' => array(\n            0 => ''\n            ),\n        'SCRIPT' => array(\n            0 => ''\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #440088;',\n            1 => 'color: #991111;',\n            2 => 'color: #00b000;',\n            3 => 'color: #888822;',\n            4 => 'color: #888822;',\n            5 => 'color: #0011dd;',\n            6 => 'color: #440088;',\n            7 => 'color: #991111;',\n            8 => 'color: #00b000;',\n            9 => 'color: #888822;',\n            ),\n        ),\n    'URLS' => array(\n        1 => '',\n//        2 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        0 => \"[0-9,]+[acd][0-9,]+\",\n        //Removed lines\n        1 => array(\n            GESHI_SEARCH => '(^|(?<=\\A\\s))\\\\&lt;.*$',\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        //Inserted lines\n        2 => array(\n            GESHI_SEARCH => '(^|(?<=\\A\\s))\\\\&gt;.*$',\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        //Location line\n        3 => array(\n            GESHI_SEARCH => '(^|(?<=\\A\\s))-{3}\\\\s.*$',\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        //Inserted line\n        4 => array(\n            GESHI_SEARCH => '(^|(?<=\\A\\s))(\\\\+){3}\\\\s.*$',\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        //Modified line\n        5 => array(\n            GESHI_SEARCH => '(^|(?<=\\A\\s))\\\\!.*$',\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        //File specification\n        6 => array(\n            GESHI_SEARCH => '(^|(?<=\\A\\s))[\\\\@]{2}.*$',\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        //Removed line\n        7 => array(\n            GESHI_SEARCH => '(^|(?<=\\A\\s))\\\\-.*$',\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        //Inserted line\n        8 => array(\n            GESHI_SEARCH => '(^|(?<=\\A\\s))\\\\+.*$',\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        //File specification\n        9 => array(\n            GESHI_SEARCH => '(^|(?<=\\A\\s))(\\\\*){3}\\\\s.*$',\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/div.php",
    "content": "<?php\n/*************************************************************************************\n * div.php\n * ---------------------------------\n * Author: Gabriel Lorenzo (ermakina@gmail.com)\n * Copyright: (c) 2005 Gabriel Lorenzo (http://ermakina.gazpachito.net)\n * Release Version: 1.0.9.1\n * Date Started: 2005/06/19\n *\n * DIV language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2005/06/22 (1.0.0)\n *  -  First Release, includes \"2nd gen\" ELSEIF statement\n *\n * TODO (updated 2005/06/22)\n * -------------------------\n *  -  I'm pretty satisfied with this, so nothing for now... :P\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'DIV',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'while','until','to','switch','step','return','repeat','loop','if','from','frame','for','end','elseif',\n            'else','default','debug','continue','clone','case','break','begin'\n            ),\n        2 => array(\n            'xor','whoami','type','sizeof','pointer','or','offset','not','neg','mod','id','dup','and','_ne','_lt',\n            '_le','_gt','_ge','_eq'\n            ),\n        3 => array(\n            'setup_program','program','process','private','local','import','global','function','const',\n            'compiler_options'\n            ),\n        4 => array(\n            'word','struct','string','int','byte'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '(',')','[',']','=','+','-','*','/','!','%','^','&',':',';',',','<','>'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0040b1;',\n            2 => 'color: #000000;',\n            3 => 'color: #000066; font-weight: bold;',\n            4 => 'color: #993333;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #44aa44;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #202020;',\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #44aa44;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/dos.php",
    "content": "<?php\n/*************************************************************************************\n * dos.php\n * -------\n * Author: Alessandro Staltari (staltari@geocities.com)\n * Copyright: (c) 2005 Alessandro Staltari (http://www.geocities.com/SiliconValley/Vista/8155/)\n * Release Version: 1.0.9.1\n * Date Started: 2005/07/05\n *\n * DOS language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n * 2005/07/05 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2005/07/05)\n * -------------------------\n *\n * - Highlight pipes and redirection (do we really need this?)\n * - Add missing keywords.\n * - Find a good hyperlink for keywords.\n * - Improve styles.\n *\n * KNOWN ISSUES (updated 2005/07/07)\n * ---------------------------------\n *\n * - Doesn't even try to handle spaces in variables name or labels (I can't\n *   find a reliable way to establish if a sting is a name or not, in some\n *   cases it depends on the contex or enviroment status).\n * - Doesn't handle %%[letter] pseudo variable used inside FOR constructs\n *   (it should be done only into its scope: how to handle variable it?).\n * - Doesn't handle %~[something] pseudo arguments.\n * - If the same keyword is placed at the end of the line and the\n *   beginning of the next, the second occourrence is not highlighted\n *   (this should be a GeSHi bug, not related to the language definition).\n * - I can't avoid to have keyword highlighted even when they are not used\n *   as keywords but, for example, as arguments to the echo command.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'DOS',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    //DOS comment lines\n    'COMMENT_REGEXP' => array(\n        1 => \"/^\\s*@?REM\\b.*$/mi\",\n        2 => \"/^\\s*::.*$/m\",\n        3 => \"/\\^./\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        /* Flow control keywords */\n        1 => array(\n            'if', 'else', 'goto', 'shift',\n            'for', 'in', 'do',\n            'call', 'exit'\n            ),\n        /* IF statement keywords */\n        2 => array(\n            'not', 'exist', 'errorlevel',\n            'defined',\n            'equ', 'neq', 'lss', 'leq', 'gtr', 'geq'\n            ),\n        /* Internal commands */\n        3 => array(\n            'cd', 'md', 'rd', 'chdir', 'mkdir', 'rmdir', 'dir',\n            'del', 'copy', 'move', 'ren', 'rename',\n            'echo',\n            'setlocal', 'endlocal', 'set',\n            'pause',\n            'pushd', 'popd', 'title', 'verify'\n            ),\n        /* Special files */\n        4 => array(\n            'prn', 'nul', 'lpt3', 'lpt2', 'lpt1', 'con',\n            'com4', 'com3', 'com2', 'com1', 'aux'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '@', '%', '!', '|', '<', '>', '&'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #00b100; font-weight: bold;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #b1b100; font-weight: bold;',\n            4 => 'color: #0000ff; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            2 => 'color: #b100b1; font-style: italic;',\n            3 => 'color: #33cc33;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #ff0000; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #33cc33;',\n            1 => 'color: #33cc33;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #b100b1; font-weight: bold;',\n            1 => 'color: #448844;',\n            2 => 'color: #448888;',\n            3 => 'color: #448888;'\n            )\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'URLS' => array(\n        1 => 'http://www.ss64.com/nt/{FNAMEL}.html',\n        2 => 'http://www.ss64.com/nt/{FNAMEL}.html',\n        3 => 'http://www.ss64.com/nt/{FNAMEL}.html',\n        4 => 'http://www.ss64.com/nt/{FNAMEL}.html'\n        ),\n    'REGEXPS' => array(\n        /* Label */\n        0 => array(\n/*            GESHI_SEARCH => '((?si:[@\\s]+GOTO\\s+|\\s+:)[\\s]*)((?<!\\n)[^\\s\\n]*)',*/\n            GESHI_SEARCH => '((?si:[@\\s]+GOTO\\s+|\\s+:)[\\s]*)((?<!\\n)[^\\s\\n]*)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'si',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n        ),\n        /* Variable assignement */\n        1 => array(\n/*            GESHI_SEARCH => '(SET[\\s]+(?si:\\/A[\\s]+|\\/P[\\s]+|))([^=\\s\\n]+)([\\s]*=)',*/\n            GESHI_SEARCH => '(SET\\s+(?si:\\\\/A\\s+|\\\\/P\\s+)?)([^=\\n]+)(\\s*=)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'si',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3'\n            ),\n        /* Arguments or variable evaluation */\n        2 => array(\n/*            GESHI_SEARCH => '(%)([\\d*]|[^%\\s]*(?=%))((?<!%\\d)%|)',*/\n            GESHI_SEARCH => '(!(?:!(?=[a-z0-9]))?)([\\d*]|(?:~[adfnpstxz]*(?:$\\w+:)?)?[a-z0-9](?!\\w)|[^!>\\n]*(?=!))((?<!%\\d)%|)(?!!>)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'si',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3'\n            ),\n        /* Arguments or variable evaluation */\n        3 => array(\n/*            GESHI_SEARCH => '(%)([\\d*]|[^%\\s]*(?=%))((?<!%\\d)%|)',*/\n            GESHI_SEARCH => '(%(?:%(?=[a-z0-9]))?)([\\d*]|(?:~[adfnpstxz]*(?:$\\w+:)?)?[a-z0-9](?!\\w)|[^%\\n]*(?=%))((?<!%\\d)%|)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'si',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3'\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'BRACKETS' => GESHI_NEVER,\n            'NUMBERS' => GESHI_NEVER\n            ),\n        'KEYWORDS' => array(\n            1 => array(\n                'DISALLOWED_BEFORE' => '(?<![\\w\\-])'\n                ),\n            2 => array(\n                'DISALLOWED_BEFORE' => '(?<![\\w\\-])'\n                ),\n            3 => array(\n                'DISALLOWED_BEFORE' => '(?<![\\w\\-])'\n                ),\n            4 => array(\n                'DISALLOWED_BEFORE' => '(?<!\\w)'\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/dot.php",
    "content": "<?php\n/*************************************************************************************\n * dot.php\n * ---------------------------------\n * Author: Adrien Friggeri (adrien@friggeri.net)\n * Copyright: (c) 2007 Adrien Friggeri (http://www.friggeri.net)\n * Release Version: 1.0.9.1\n * Date Started: 2007/05/30\n *\n * dot language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2007/05/30 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2007/05/30)\n * -------------------------\n * Everything\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'dot',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'URL', 'arrowhead', 'arrowsize', 'arrowtail', 'bb', 'bgcolor', 'bottomlabel',\n            'center', 'clusterrank', 'color', 'comment', 'constraint', 'decorate',\n            'dir', 'distortion', 'fillcolor', 'fixedsize', 'fontcolor',\n            'fontname', 'fontsize', 'group', 'headclip', 'headlabel', 'headport',\n            'height', 'id', 'label', 'labelangle', 'labeldistance', 'labelfontcolor',\n            'labelfontname', 'labelfontsize', 'layer', 'layers', 'margin', 'mclimit',\n            'minlen', 'nodesep', 'nslimit', 'ordering', 'orientation', 'page',\n            'pagedir', 'peripheries', 'port_label_distance', 'quantum', 'rank', 'rankdir',\n            'ranksep', 'ratio', 'regular', 'rotate', 'samehead', 'sametail', 'searchsize',\n            'shape', 'shapefile', 'showboxes', 'sides', 'size', 'skew', 'style',\n            'tailclip', 'taillabel', 'tailport', 'toplabel', 'weight', 'width'\n            ),\n        2 => array(\n            'node', 'graph', 'digraph', 'strict', 'edge', 'subgraph'\n            ),\n        3 => array(\n            'Mcircle', 'Mdiamond', 'Mrecord', 'Msquare', 'auto', 'back', 'bold',\n            'both', 'box', 'circle', 'compress', 'dashed', 'diamond', 'dot',\n            'dotted', 'doublecircle', 'doubleoctagon', 'egg', 'ellipse', 'epsf',\n            'false', 'fill', 'filled', 'forward', 'global', 'hexagon', 'house',\n            'inv', 'invdot', 'invhouse', 'invis', 'invodot', 'invtrapezium',\n            'invtriangle', 'local', 'max', 'min', 'none', 'normal', 'octagon',\n            'odot', 'out', 'parallelogram', 'plaintext', 'polygon', 'record',\n            'same', 'solid', 'trapezium', 'triangle', 'tripleoctagon', 'true'\n            ),\n        4 => array(\n            'aliceblue', 'antiquewhite', 'aquamarine', 'azure', 'beige', 'bisque', 'black',\n            'blanchedalmond', 'blue', 'blueviolet', 'brown', 'burlywood', 'cadetblue',\n            'chartreuse', 'chocolate', 'coral', 'cornflowerblue', 'cornsilk', 'crimson',\n            'cyan', 'darkgoldenrod', 'darkgreen', 'darkkhaki', 'darkolivegreen',\n            'darkorange', 'darkorchid', 'darksalmon', 'darkseagreen', 'darkslateblue',\n            'darkslategray', 'darkturquoise', 'darkviolet', 'deeppink', 'deepskyblue',\n            'dimgray', 'dodgerblue', 'firebrick', 'forestgreen', 'gainsboro', 'ghostwhite',\n            'gold', 'goldenrod', 'gray', 'green', 'greenyellow', 'honeydew', 'hotpink',\n            'indianred', 'indigo', 'ivory', 'khaki', 'lavender', 'lavenderblush',\n            'lawngreen', 'lemonchiffon', 'lightblue', 'lightcyan', 'lightgoldenrod',\n            'lightgoldenrodyellow', 'lightgray', 'lightpink', 'lightsalmon',\n            'lightseagreen', 'lightskyblue', 'lightslateblue', 'lightslategray',\n            'lightyellow', 'limegreen', 'linen', 'magenta', 'maroon', 'mediumaquamarine',\n            'mediumblue', 'mediumorchid', 'mediumpurple', 'mediumseagreen',\n            'mediumslateblue', 'mediumspringgreen', 'mediumturquoise', 'mediumvioletred',\n            'midnightblue', 'mintcream', 'mistyrose', 'moccasin', 'navajowhite', 'navy',\n            'navyblue', 'oldlace', 'olivedrab', 'oralwhite', 'orange', 'orangered',\n            'orchid', 'palegoldenrod', 'palegreen', 'paleturquoise', 'palevioletred',\n            'papayawhip', 'peachpuff', 'peru', 'pink', 'plum', 'powderblue', 'purple',\n            'red', 'rosybrown', 'royalblue', 'saddlebrown', 'salmon', 'salmon2', 'sandybrown',\n            'seagreen', 'seashell', 'sienna', 'skyblue', 'slateblue', 'slategray', 'snow',\n            'springgreen', 'steelblue', 'tan', 'thistle', 'tomato', 'turquoise', 'violet',\n            'violetred', 'wheat', 'white', 'whitesmoke', 'yellow', 'yellowgreen'\n            )\n        ),\n    'SYMBOLS' => array(\n        '[', ']', '{', '}', '-', '+', '*', '/', '<', '>', '!', '~', '%', '&', '|', '='\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000066;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #993333;',\n            4 => 'color: #b1b100;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            2 => 'color: #339933;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #af624d; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'METHODS' => array(\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            ),\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        1 => true,\n        2 => true,\n        3 => true\n        )\n);\n"
  },
  {
    "path": "includes/geshi/e.php",
    "content": "<?php\n/*************************************************************************************\n * e.php\n * --------\n * Author: Kevin Reid (kpreid@switchb.org)\n * Copyright: (c) 2010 Kevin Reid (http://switchb.org/kpreid/)\n * Release Version: 1.0.9.1\n * Date Started: 2010/04/16\n *\n * E language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010-04-21 (1.0.8.8)\n *  -  Fixing langcheck-reported bugs.\n * 2010-04-14 (0.1)\n *  -  First Release\n *\n * TODO (updated 2010-04-21)\n * -------------------------\n *  -  Do something useful with the keyword groups. Since RC uses CSS classes named\n *     by the group numbers, either\n *     - change the numbering to match conventional uses by other languages,\n *     - or find or create some way to produce usefully named classes.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'E',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array('/**' => '*/'), // Note: This is method doc, not a general comment syntax.\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n\n    // FIXME: The escaping inside ` is actually doubling of any interior `, $, or @ -- backslash is NOT special\n    'QUOTEMARKS' => array('\\'', '\"', '`'),\n    'ESCAPE_CHAR' => '\\\\',\n\n    'KEYWORDS' => array(\n        // builtin control structures\n        1 => array(\n            'accum', 'break', 'try', 'continue', 'if', 'while', 'for', 'switch'\n            ),\n\n        // control structures subsidiary keywords\n        2 => array(\n            'catch', 'else', 'finally', 'in', 'exit'\n            ),\n\n        // named operators\n        3 => array(\n            'fn', 'via'\n            ),\n\n        // variable/function/object definers\n        4 => array(\n            'def', 'bind', 'var'\n            ),\n\n        // object definition subsidiary keywords\n        5 => array(\n            'extends', 'as', 'implements', 'guards', 'match', 'to', 'method'\n            ),\n\n        // builtin nouns in safeEnv\n        6 => array(\n            'null', 'false', 'true', 'throw', '__loop', '__makeList',\n            '__makeMap', '__makeProtocolDesc', '__makeMessageDesc',\n            '__makeParamDesc', 'any', 'void', 'boolean', '__makeOrderedSpace',\n            'ValueGuard', '__MatchContext', 'require', '__makeVerbFacet', 'NaN',\n            'Infinity', '__identityFunc', '__makeInt', '__makeFinalSlot',\n            '__makeVarSlot', '__makeGuardedSlot', '__makeGuard', '__makeTwine',\n            '__makeSourceSpan', '__auditedBy', 'Guard', 'near', 'pbc',\n            'PassByCopy', 'DeepPassByCopy', 'Data', 'Persistent', 'DeepFrozen',\n            'int', 'float64', 'char', 'String', 'Twine', 'TextWriter', 'List',\n            'Map', 'nullOk', 'Tuple', '__Portrayal', 'notNull', 'vow', 'rcvr',\n            'SturdyRef', 'simple__quasiParser', 'twine__quasiParser',\n            'rx__quasiParser', 'e__quasiParser', 'epatt__quasiParser',\n            'sml__quasiParser', 'term__quasiParser', 'traceln', '__equalizer',\n            '__comparer', 'Ref', 'E', 'promiseAllFulfilled', 'EIO', 'help',\n            'safeScope', '__eval', 'resource__uriGetter', 'type__uriGetter',\n            'import__uriGetter', 'elib__uriGetter', 'elang__uriGetter',\n            'opaque__uriGetter'\n            ),\n\n        // builtin nouns in privilegedEnv\n        7 => array(\n            'file__uriGetter', 'fileURL__uriGetter', 'jar__uriGetter',\n            'http__uriGetter', 'ftp__uriGetter', 'gopher__uriGetter',\n            'news__uriGetter', 'cap__uriGetter', 'makeCommand', 'stdout',\n            'stderr', 'stdin', 'print', 'println', 'interp', 'entropy', 'timer',\n            'introducer', 'identityMgr', 'makeSturdyRef', 'timeMachine',\n            'unsafe__uriGetter', 'currentVat', 'rune', 'awt__uriGetter',\n            'swing__uriGetter', 'JPanel__quasiParser', 'swt__uriGetter',\n            'currentDisplay', 'swtGrid__quasiParser', 'swtGrid`',\n            'privilegedScope'\n            ),\n\n        // reserved keywords\n        8 => array(\n            'abstract', 'an', 'assert', 'attribute', 'be', 'begin', 'behalf',\n            'belief', 'believe', 'believes', 'case', 'class', 'const',\n            'constructor', 'declare', 'default', 'define', 'defmacro',\n            'delicate', 'deprecated', 'dispatch', 'do', 'encapsulate',\n            'encapsulated', 'encapsulates', 'end', 'ensure', 'enum', 'eventual',\n            'eventually', 'export', 'facet', 'forall', 'function', 'given',\n            'hidden', 'hides', 'inline', 'is', 'know', 'knows', 'lambda', 'let',\n            'methods', 'module', 'namespace', 'native', 'obeys', 'octet',\n            'oneway', 'operator', 'package', 'private', 'protected', 'public',\n            'raises', 'reliance', 'reliant', 'relies', 'rely', 'reveal', 'sake',\n            'signed', 'static', 'struct', 'suchthat', 'supports', 'suspect',\n            'suspects', 'synchronized', 'this', 'transient', 'truncatable',\n            'typedef', 'unsigned', 'unum', 'uses', 'using', 'utf8', 'utf16',\n            'virtual', 'volatile', 'wstring'\n            )\n        ),\n    'SYMBOLS' => array(\n        1 => array(\n            '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '%', '=', '<', '>', '!', '^', '&', '|', '?', ':', ';', ','\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #b1b100;',\n            3 => 'color: #b1b100;',\n            4 => 'color: #b1b100;',\n            5 => 'color: #b1b100;',\n            6 => 'color: #b1b100;',\n            7 => 'color: #b1b100;',\n            8 => 'color: #b1b100;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;',\n            ),\n        'METHODS' => array(\n            0 => 'color: #004000;'\n            ),\n        'SYMBOLS' => array(\n            1 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(),\n        'SCRIPT' => array()\n        ),\n    'URLS' => array(\n        1 => 'http://wiki.erights.org/wiki/{FNAME}',\n        2 => 'http://wiki.erights.org/wiki/{FNAME}',\n        3 => 'http://wiki.erights.org/wiki/{FNAME}',\n        4 => 'http://wiki.erights.org/wiki/{FNAME}',\n        5 => 'http://wiki.erights.org/wiki/{FNAME}',\n        6 => 'http://wiki.erights.org/wiki/{FNAME}',\n        7 => 'http://wiki.erights.org/wiki/{FNAME}',\n        8 => 'http://wiki.erights.org/wiki/{FNAME}'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        2 => '<-',\n        3 => '::'\n        ),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/ecmascript.php",
    "content": "<?php\n/*************************************************************************************\n * ecmascript.php\n * --------------\n * Author: Michel Mariani (http://www.tonton-pixel.com/site/)\n * Copyright: (c) 2010 Michel Mariani (http://www.tonton-pixel.com/site/)\n * Release Version: 1.0.9.1\n * Date Started: 2010/01/08\n *\n * ECMAScript language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/01/08 (1.0.8.6)\n *  -  First Release\n *  -  Adapted from javascript.php to support plain ECMAScript/JavaScript (no HTML, no DOM)\n *  -  Fixed regular expression for 'COMMENT_REGEXP' to exclude 'COMMENT_MULTI' syntax\n *  -  Added '~' and removed '@' from 'SYMBOLS'\n *  -  Cleaned up and expanded the list of 'KEYWORDS'\n *  -  Added support for 'ESCAPE_REGEXP' and 'NUMBERS' (from c.php)\n *  -  Selected colors to match my web site color chart\n *  -  Added full number highlighting in all C language style formats\n *  -  Added highlighting of escape sequences in strings, in all C language style formats including Unicode (\\uXXXX).\n *\n * TODO (updated 2010/01/08)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'ECMAScript',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    // Regular Expression Literals\n    'COMMENT_REGEXP' => array(2 => \"/(?<=[\\\\s^])s\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\*\\\\/\\\\\\\\])+\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\*\\\\/\\\\\\\\])+\\\\/[gimsu]*(?=[\\\\s$\\\\.\\\\;])|(?<=[\\\\s^(=])m?\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\*\\\\/\\\\\\\\])+\\\\/[gimsu]*(?=[\\\\s$\\\\.\\\\,\\\\;\\\\)])/iU\"),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[\\\\\\\\abfnrtv\\'\\\"?\\n]#i\",\n        //Hexadecimal Char Specs\n        2 => \"#\\\\\\\\x[\\da-fA-F]{2}#\",\n        //Hexadecimal Char Specs\n        3 => \"#\\\\\\\\u[\\da-fA-F]{4}#\",\n        //Hexadecimal Char Specs\n        4 => \"#\\\\\\\\U[\\da-fA-F]{8}#\",\n        //Octal Char Specs\n        5 => \"#\\\\\\\\[0-7]{1,3}#\"\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array( // Reserved literals\n            'false', 'true',\n            'null'\n            ),\n        2 => array( // Main keywords\n            'break', 'case', 'catch', 'continue', 'default', 'delete', 'do', 'else',\n            'finally', 'for', 'function', 'if', 'in', 'instanceof', 'new', 'return',\n            'switch', 'this', 'throw', 'try', 'typeof', 'var', 'void', 'while',\n            'with'\n            ),\n        3 => array( // Extra keywords or keywords reserved for future use\n            'abstract', 'as', 'boolean', 'byte', 'char', 'class', 'const', 'debugger',\n            'double', 'enum', 'export', 'extends', 'final', 'float', 'goto', 'implements',\n            'import', 'int', 'interface', 'is', 'long', 'native', 'namespace', 'package',\n            'private', 'protected', 'public', 'short', 'static', 'super', 'synchronized', 'throws',\n            'transient', 'use', 'volatile'\n            ),\n        4 => array( // Operators\n            'get', 'set'\n            ),\n        5 => array( // Built-in object classes\n            'Array', 'Boolean', 'Date', 'EvalError', 'Error', 'Function', 'Math', 'Number',\n            'Object', 'RangeError', 'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError'\n            ),\n        6 => array( // Global properties\n            'Infinity', 'NaN', 'undefined'\n            ),\n        7 => array( // Global methods\n            'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent',\n            'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt',\n            // The escape and unescape functions do not work properly for non-ASCII characters and have been deprecated.\n            // In JavaScript 1.5 and later, use encodeURI, decodeURI, encodeURIComponent, and decodeURIComponent.\n            'escape', 'unescape'\n            ),\n        8 => array( // Function's arguments\n            'arguments'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}',\n        '+', '-', '*', '/', '%',\n        '!', '.', '&', '|', '^',\n        '<', '>', '=', '~',\n        ',', ';', '?', ':'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #009999;',\n            2 => 'color: #1500C8;',\n            3 => 'color: #1500C8;',\n            4 => 'color: #1500C8;',\n            5 => 'color: #1500C8;',\n            6 => 'color: #1500C8;',\n            7 => 'color: #1500C8;',\n            8 => 'color: #1500C8;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #CC0000;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #3366CC;',\n            1 => 'color: #3366CC;',\n            2 => 'color: #3366CC;',\n            3 => 'color: #3366CC;',\n            4 => 'color: #3366CC;',\n            5 => 'color: #3366CC;',\n            'HARD' => '',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #008800;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #9900FF;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #FF00FF;',\n            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #FF00FF;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #FF00FF;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #FF00FF;',\n            GESHI_NUMBER_FLT_SCI_SHORT => 'color: #FF00FF;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color: #FF00FF;',\n            GESHI_NUMBER_FLT_NONSCI_F => 'color: #FF00FF;',\n            GESHI_NUMBER_FLT_NONSCI => 'color: #FF00FF;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #660066;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            3 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/eiffel.php",
    "content": "<?php\n/*************************************************************************************\n * eiffel.php\n * ----------\n * Author: Zoran Simic (zsimic@axarosenberg.com)\n * Copyright: (c) 2005 Zoran Simic\n * Release Version: 1.0.9.1\n * Date Started: 2005/06/30\n *\n * Eiffel language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2005/06/30 (1.0.7)\n *  -  Initial release\n *\n * TODO (updated 2005/06/30)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Eiffel',\n    'COMMENT_SINGLE' => array(1 => '--'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '%',\n    'KEYWORDS' => array(\n        1 => array(\n            'separate',\n            'invariant',\n            'inherit',\n            'indexing',\n            'feature',\n            'expanded',\n            'deferred',\n            'class'\n            ),\n        2 => array(\n            'xor',\n            'when',\n            'variant',\n            'until',\n            'unique',\n            'undefine',\n            'then',\n            'strip',\n            'select',\n            'retry',\n            'rescue',\n            'require',\n            'rename',\n            'reference',\n            'redefine',\n            'prefix',\n            'or',\n            'once',\n            'old',\n            'obsolete',\n            'not',\n            'loop',\n            'local',\n            'like',\n            'is',\n            'inspect',\n            'infix',\n            'include',\n            'implies',\n            'if',\n            'frozen',\n            'from',\n            'external',\n            'export',\n            'ensure',\n            'end',\n            'elseif',\n            'else',\n            'do',\n            'creation',\n            'create',\n            'check',\n            'as',\n            'and',\n            'alias',\n            'agent'\n            ),\n        3 => array(\n            'Void',\n            'True',\n            'Result',\n            'Precursor',\n            'False',\n            'Current'\n            ),\n        4 => array(\n            'UNIX_SIGNALS',\n            'UNIX_FILE_INFO',\n            'UNBOUNDED',\n            'TWO_WAY_TREE_CURSOR',\n            'TWO_WAY_TREE',\n            'TWO_WAY_SORTED_SET',\n            'TWO_WAY_LIST',\n            'TWO_WAY_CURSOR_TREE',\n            'TWO_WAY_CIRCULAR',\n            'TWO_WAY_CHAIN_ITERATOR',\n            'TUPLE',\n            'TREE',\n            'TRAVERSABLE',\n            'TO_SPECIAL',\n            'THREAD_CONTROL',\n            'THREAD_ATTRIBUTES',\n            'THREAD',\n            'TABLE',\n            'SUBSET',\n            'STRING_HANDLER',\n            'STRING',\n            'STREAM',\n            'STORABLE',\n            'STD_FILES',\n            'STACK',\n            'SPECIAL',\n            'SORTED_TWO_WAY_LIST',\n            'SORTED_STRUCT',\n            'SORTED_LIST',\n            'SINGLE_MATH',\n            'SET',\n            'SEQUENCE',\n            'SEQ_STRING',\n            'SEMAPHORE',\n            'ROUTINE',\n            'RESIZABLE',\n            'RECURSIVE_TREE_CURSOR',\n            'RECURSIVE_CURSOR_TREE',\n            'REAL_REF',\n            'REAL',\n            'RAW_FILE',\n            'RANDOM',\n            'QUEUE',\n            'PROXY',\n            'PROFILING_SETTING',\n            'PROCEDURE',\n            'PRIORITY_QUEUE',\n            'PRIMES',\n            'PRECOMP',\n            'POINTER_REF',\n            'POINTER',\n            'PLATFORM',\n            'PLAIN_TEXT_FILE',\n            'PATH_NAME',\n            'PART_SORTED_TWO_WAY_LIST',\n            'PART_SORTED_SET',\n            'PART_SORTED_LIST',\n            'PART_COMPARABLE',\n            'OPERATING_ENVIRONMENT',\n            'ONCE_CONTROL',\n            'OBJECT_OWNER',\n            'OBJECT_CONTROL',\n            'NUMERIC',\n            'NONE',\n            'MUTEX',\n            'MULTI_ARRAY_LIST',\n            'MULTAR_LIST_CURSOR',\n            'MEMORY',\n            'MEM_INFO',\n            'MEM_CONST',\n            'MATH_CONST',\n            'LIST',\n            'LINKED_TREE_CURSOR',\n            'LINKED_TREE',\n            'LINKED_STACK',\n            'LINKED_SET',\n            'LINKED_QUEUE',\n            'LINKED_PRIORITY_QUEUE',\n            'LINKED_LIST_CURSOR',\n            'LINKED_LIST',\n            'LINKED_CURSOR_TREE',\n            'LINKED_CIRCULAR',\n            'LINKABLE',\n            'LINEAR_ITERATOR',\n            'LINEAR',\n            'ITERATOR',\n            'IO_MEDIUM',\n            'INTERNAL',\n            'INTEGER_REF',\n            'INTEGER_INTERVAL',\n            'INTEGER',\n            'INFINITE',\n            'INDEXABLE',\n            'IDENTIFIED_CONTROLLER',\n            'IDENTIFIED',\n            'HIERARCHICAL',\n            'HEAP_PRIORITY_QUEUE',\n            'HASHABLE',\n            'HASH_TABLE_CURSOR',\n            'HASH_TABLE',\n            'GENERAL',\n            'GC_INFO',\n            'FUNCTION',\n            'FORMAT_INTEGER',\n            'FORMAT_DOUBLE',\n            'FIXED_TREE',\n            'FIXED_LIST',\n            'FIXED',\n            'FINITE',\n            'FILE_NAME',\n            'FILE',\n            'FIBONACCI',\n            'EXECUTION_ENVIRONMENT',\n            'EXCEPTIONS',\n            'EXCEP_CONST',\n            'DYNAMIC_TREE',\n            'DYNAMIC_LIST',\n            'DYNAMIC_CIRCULAR',\n            'DYNAMIC_CHAIN',\n            'DOUBLE_REF',\n            'DOUBLE_MATH',\n            'DOUBLE',\n            'DISPENSER',\n            'DIRECTORY_NAME',\n            'DIRECTORY',\n            'DECLARATOR',\n            'DEBUG_OUTPUT',\n            'CURSOR_TREE_ITERATOR',\n            'CURSOR_TREE',\n            'CURSOR_STRUCTURE',\n            'CURSOR',\n            'COUNTABLE_SEQUENCE',\n            'COUNTABLE',\n            'CONTAINER',\n            'CONSOLE',\n            'CONDITION_VARIABLE',\n            'COMPARABLE_STRUCT',\n            'COMPARABLE_SET',\n            'COMPARABLE',\n            'COMPACT_TREE_CURSOR',\n            'COMPACT_CURSOR_TREE',\n            'COLLECTION',\n            'CIRCULAR_CURSOR',\n            'CIRCULAR',\n            'CHARACTER_REF',\n            'CHARACTER',\n            'CHAIN',\n            'CELL',\n            'BOX',\n            'BOUNDED_STACK',\n            'BOUNDED_QUEUE',\n            'BOUNDED',\n            'BOOLEAN_REF',\n            'BOOLEAN',\n            'BOOL_STRING',\n            'BIT_REF',\n            'BINARY_TREE',\n            'BINARY_SEARCH_TREE_SET',\n            'BINARY_SEARCH_TREE',\n            'BILINEAR',\n            'BI_LINKABLE',\n            'BASIC_ROUTINES',\n            'BAG',\n            'ASCII',\n            'ARRAYED_TREE',\n            'ARRAYED_STACK',\n            'ARRAYED_QUEUE',\n            'ARRAYED_LIST_CURSOR',\n            'ARRAYED_LIST',\n            'ARRAYED_CIRCULAR',\n            'ARRAY2',\n            'ARRAY',\n            'ARGUMENTS',\n            'ANY',\n            'ACTIVE'\n            ),\n        5 => array(\n            'yes',\n            'visible',\n            'trace',\n            'system',\n            'root',\n            'profile',\n            'override_cluster',\n            'object',\n            'no',\n            'multithreaded',\n            'msil_generation_type',\n            'line_generation',\n            'library',\n            'inlining_size',\n            'inlining',\n            'include_path',\n            'il_verifiable',\n            'exclude',\n            'exception_trace',\n            'dynamic_runtime',\n            'dotnet_naming_convention',\n            'disabled_debug',\n            'default',\n            'debug',\n            'dead_code_removal',\n            'console_application',\n            'cluster',\n            'cls_compliant',\n            'check_vape',\n            'assertion',\n            'array_optimization',\n            'all',\n            'address_expression'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', '|', ':',\n        '(', ')', '{', '}', '[', ']', '#'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => true,\n        5 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0600FF; font-weight: bold;',\n            2 => 'color: #0600FF; font-weight: bold;',\n            3 => 'color: #800080;',\n            4 => 'color: #800000',\n            5 => 'color: #603000;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000; font-style: italic;',\n            'MULTI' => ''\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #005070; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #FF0000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0080A0;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #FF0000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #000060;',\n            2 => 'color: #000050;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #600000;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => 'http://www.google.com/search?q=site%3Ahttp%3A%2F%2Fdocs.eiffel.com%2Feiffelstudio%2Flibraries+{FNAMEL}&amp;btnI=I%27m+Feeling+Lucky',\n        5 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/email.php",
    "content": "<?php\n/*************************************************************************************\n * email.php\n * ---------------\n * Author: Benny Baumann (BenBE@geshi.org)\n * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2008/10/19\n *\n * Email (mbox \\ eml \\ RFC format) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/10/19 (1.0.8.1)\n *   -  First Release\n *\n * TODO (updated 2008/10/19)\n * -------------------------\n * * Better checks when a header field should be expected\n * * Fix the bound checks for kw groups 2 and 3, as well as rx group 1\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'eMail (mbox)',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'HTTP', 'SMTP', 'ASMTP', 'ESMTP'\n            ),\n        2 => array(\n            'Original-Recipient','Accept-Language','Alternate-Recipient',\n            'Archived-At','Authentication-Results','Auto-Submitted',\n            'Autoforwarded','Autosubmitted','Base','Comments',\n            'Content-Alternative','Content-Base','Content-Description',\n            'Content-Disposition','Content-Duration','Content-features',\n            'Content-ID','Content-Identifier','Content-Language',\n            'Content-Location','Content-MD5','Content-Return',\n            'Content-Transfer-Encoding','Content-Type','Conversion',\n            'Conversion-With-Loss','Deferred-Delivery','Delivery-Date',\n            'Discarded-X400-IPMS-Extensions','Discarded-X400-MTS-Extensions',\n            'Disclose-Recipients','Disposition-Notification-Options',\n            'Disposition-Notification-To','DKIM-Signature',\n            'DL-Expansion-History','Downgraded-Bcc','Downgraded-Cc',\n            'Downgraded-Disposition-Notification-To',\n            'Downgraded-Final-Recipient','Downgraded-From',\n            'Downgraded-In-Reply-To','Downgraded-Mail-From',\n            'Downgraded-Message-Id','Downgraded-Original-Recipient',\n            'Downgraded-Rcpt-To','Downgraded-References',\n            'Downgraded-Reply-To','Downgraded-Resent-Bcc',\n            'Downgraded-Resent-Cc','Downgraded-Resent-From',\n            'Downgraded-Resent-Reply-To','Downgraded-Resent-Sender',\n            'Downgraded-Resent-To','Downgraded-Return-Path',\n            'Downgraded-Sender','Downgraded-To','Encoding','Encrypted','Expires',\n            'Expiry-Date','Generate-Delivery-Report','Importance','In-Reply-To',\n            'Incomplete-Copy','Keywords','Language','Latest-Delivery-Time',\n            'List-Archive','List-Help','List-ID','List-Owner','List-Post',\n            'List-Subscribe','List-Unsubscribe','List-Unsubscribe-Post',\n            'Message-Context','Message-ID','Message-Type','MIME-Version',\n            'MMHS-Acp127-Message-Identifier','MMHS-Codress-Message-Indicator',\n            'MMHS-Copy-Precedence','MMHS-Exempted-Address',\n            'MMHS-Extended-Authorisation-Info','MMHS-Handling-Instructions',\n            'MMHS-Message-Instructions','MMHS-Message-Type',\n            'MMHS-Originator-PLAD','MMHS-Originator-Reference',\n            'MMHS-Other-Recipients-Indicator-CC',\n            'MMHS-Other-Recipients-Indicator-To','MMHS-Primary-Precedence',\n            'MMHS-Subject-Indicator-Codes','MT-Priority','Obsoletes',\n            'Organization','Original-Encoded-Information-Types','Original-From',\n            'Original-Message-ID','Original-Subject','Originator-Return-Address',\n            'PICS-Label','Prevent-NonDelivery-Report','Priority','Received',\n            'Received-SPF','References','Reply-By','Reply-To',\n            'Require-Recipient-Valid-Since','Resent-Bcc','Resent-Cc',\n            'Resent-Date','Resent-From','Resent-Message-ID','Resent-Reply-To',\n            'Resent-Sender','Resent-To','Return-Path','Sensitivity',\n            'Solicitation','Supersedes','VBR-Info','X400-Content-Identifier',\n            'X400-Content-Return','X400-Content-Type','X400-MTS-Identifier',\n            'X400-Originator','X400-Received','X400-Recipients','X400-Trace'\n            ),\n        3 => array(\n            'Bcc','CC','Date','From','Sender','Subject','To'\n            ),\n        4 => array(\n            'by', 'for', 'from', 'id', 'with'\n            )\n        ),\n    'SYMBOLS' => array(\n        ':', ';', '<', '>', '[', ']'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => false,\n        3 => false,\n        4 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000FF; font-weight: bold;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #800000; font-weight: bold;',\n            4 => 'font-weight: bold;',\n            ),\n        'COMMENTS' => array(\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'SCRIPT' => array(\n            0 => 'color: #000040;',\n            1 => 'color: #002040;',\n            ),\n        'REGEXPS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #0000FF;',\n            3 => 'color: #008000;',\n            4 => 'color: #0000FF; font-weight: bold;',\n            5 => 'font-weight: bold;',\n            6 => 'color: #400080;'\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        // Non-Standard-Header\n        1 => array(\n            GESHI_SEARCH => \"(?<=\\A\\x20|\\n)x-[a-z0-9\\-]*(?=\\s*:|\\s*<)\",\n            GESHI_REPLACE => \"\\\\0\",\n            GESHI_MODIFIERS => \"smi\",\n            GESHI_BEFORE => \"\",\n            GESHI_AFTER => \"\"\n            ),\n        //Email-Adresses or Mail-IDs\n        2 => array(\n            GESHI_SEARCH => \"\\b(?<!\\\\/)(?P<q>\\\"?)[\\w\\.\\-]+\\k<q>@(?!-)[\\w\\-]+(?<!-)(?:(?:\\.(?!-)[\\w\\-]+(?<!-))*)?\",\n            GESHI_REPLACE => \"\\\\0\",\n            GESHI_MODIFIERS => \"mi\",\n            GESHI_BEFORE => \"\",\n            GESHI_AFTER => \"\"\n            ),\n        //Date values in RFC format\n        3 => array(\n            GESHI_SEARCH => \"\\b(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s+\\d\\d?\\s+\" .\n                \"(?:Jan|Feb|Mar|apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s+\" .\n                \"\\d{4}\\s+\\d\\d?:\\d\\d:\\d\\d\\s+[+\\-]\\d{4}(?:\\s+\\(\\w+\\))?\",\n            GESHI_REPLACE => \"\\\\0\",\n            GESHI_MODIFIERS => \"mi\",\n            GESHI_BEFORE => \"\",\n            GESHI_AFTER => \"\"\n            ),\n        //IP addresses\n        4 => array(\n            GESHI_SEARCH => \"(?<=\\s)\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(?=\\s)|\".\n                \"(?<=\\[)\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(?=\\])|\".\n                \"(?<==)\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(?=<)|\".\n\n                \"(?<=\\s)(?:[a-f\\d]{1,4}\\:)+(?:[a-f\\d]{0,4})?(?:\\:[a-f\\d]{1,4})+(?=\\s)|\".\n                \"(?<=\\[)(?:[a-f\\d]{1,4}\\:)+(?:[a-f\\d]{0,4})?(?:\\:[a-f\\d]{1,4})+(?=\\])|\".\n                \"(?<==)(?:[a-f\\d]{1,4}\\:)+(?:[a-f\\d]{0,4})?(?:\\:[a-f\\d]{1,4})+(?=<)|\".\n\n                \"(?<=\\s)\\:(?:\\:[a-f\\d]{1,4})+(?=\\s)|\".\n                \"(?<=\\[)\\:(?:\\:[a-f\\d]{1,4})+(?=\\])|\".\n                \"(?<==)\\:(?:\\:[a-f\\d]{1,4})+(?=<)|\".\n\n                \"(?<=\\s)(?:[a-f\\d]{1,4}\\:)+\\:(?=\\s)|\".\n                \"(?<=\\[)(?:[a-f\\d]{1,4}\\:)+\\:(?=\\])|\".\n                \"(?<==)(?:[a-f\\d]{1,4}\\:)+\\:(?=<)\",\n            GESHI_REPLACE => \"\\\\0\",\n            GESHI_MODIFIERS => \"i\",\n            GESHI_BEFORE => \"\",\n            GESHI_AFTER => \"\"\n            ),\n        //Field-Assignments\n        5 => array(\n            GESHI_SEARCH => \"(?<=\\s)[A-Z0-9\\-\\.]+(?==(?:$|\\s$|[^\\s=]))\",\n            GESHI_REPLACE => \"\\\\0\",\n            GESHI_MODIFIERS => \"mi\",\n            GESHI_BEFORE => \"\",\n            GESHI_AFTER => \"\"\n            ),\n        //MIME type\n        6 => array(\n            GESHI_SEARCH => \"(?<=\\s)(?:audio|application|image|multipart|text|\".\n                \"video|x-[a-z0-9\\-]+)\\/[a-z0-9][a-z0-9\\-]*(?=\\s|<|$)\",\n            GESHI_REPLACE => \"\\\\0\",\n            GESHI_MODIFIERS => \"m\",\n            GESHI_BEFORE => \"\",\n            GESHI_AFTER => \"\"\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,\n    'SCRIPT_DELIMITERS' => array(\n        0 => \"/(?P<start>^)[A-Za-z][a-zA-Z0-9\\-]*\\s*:\\s*(?:.|(?=\\n\\s)\\n)*(?P<end>$)/m\",\n        1 => \"/(?P<start>^)--[a-zA-Z0-9_=\\-]+[a-zA-Z0-9_](?:--)?(?P<end>$)/m\"\n    ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        1 => false\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            2 => array(\n                'DISALLOWED_BEFORE' => '(?<=\\A\\x20|\\n)',\n                'DISALLOWED_AFTER' => '(?=\\s*:)',\n            ),\n            3 => array(\n                'DISALLOWED_BEFORE' => '(?<=\\A\\x20|\\n)',\n                'DISALLOWED_AFTER' => '(?=\\s*:)',\n            ),\n            4 => array(\n                'DISALLOWED_BEFORE' => '(?<=\\s)',\n                'DISALLOWED_AFTER' => '(?=\\s|\\b)',\n            )\n        ),\n        'ENABLE_FLAGS' => array(\n            'BRACKETS' => GESHI_NEVER,\n            'COMMENTS' => GESHI_NEVER,\n            'NUMBERS' => GESHI_NEVER\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/epc.php",
    "content": "<?php\n/*************************************************************************************\n * epc.php\n * --------\n * Author: Thorsten Muehlfelder (muehlfelder@enertex.de)\n * Copyright: (c) 2010 Enertex Bayern GmbH\n * Release Version: 1.0.9.1\n * Date Started: 2010/08/26\n *\n * Enerscript language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/08/26 (1.0.8.10)\n *   -  First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'EPC',\n    'COMMENT_SINGLE' => array('//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //[Sections]\n        //1 => \"/^\\\\[.*\\\\]/\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\n        0 => '\"',\n        1 => '$'\n        ),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'if', 'then', 'else', 'endif',\n            'and', 'or', 'xor', 'hysteresis'\n            ),\n        2 => array(\n            'read', 'write', 'event',\n            'gettime', 'settime', 'getdate', 'setdate', 'gettimedate', 'settimedate',\n            'hour', 'minute', 'second', 'changehour', 'changeminute', 'changesecond',\n            'date', 'month', 'day', 'dayofweek', 'sun', 'azimuth', 'elevation',\n            'sunrisehour', 'sunriseminute', 'sunsethour', 'sunsetminute',\n            'wtime', 'htime', 'mtime', 'stime',\n            'cwtime', 'chtime', 'cmtime', 'cstime',\n            'delay', 'after', 'cycle',\n            'readflash', 'writeflash',\n            'abs', 'acos', 'asin', 'atan', 'cos', 'ceil', 'average', 'exp', 'floor',\n            'log', 'max', 'min', 'mod', 'pow', 'sqrt', 'sin', 'tan', 'change', 'convert',\n            'eval', 'systemstart', 'random', 'comobject', 'sleep', 'scene', 'storescene', 'callscene',\n            'find', 'stringcast', 'stringset', 'stringformat', 'split', 'size',\n            'readrs232'. 'sendrs232', 'address', 'readknx',\n            'readudp', 'sendudp', 'connecttcp', 'closetcp', 'readtcp', 'sendtcp',\n            'resolve', 'sendmail',\n            'button', 'webbutton', 'chart', 'webchart', 'webdisplay', 'getslider', 'pshifter', 'mpshifter',\n            'getpslider', 'mbutton', 'mbbutton', 'mchart', 'mpchart', 'mpbutton', 'pdisplay', 'pchart',\n            'pbutton', 'setslider', 'setpslider', 'slider', 'pslider', 'page', 'line', 'header',\n            'footer', 'none', 'plink', 'link', 'frame', 'dframe'\n            )\n        ),\n    'SYMBOLS' => array(\n        0 => array(\n            '%', 'b01',\n            ),\n        1 => array(\n            '+', '-', '==', '>=', '=<',\n            ),\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #e63ec3;',\n            2 => 'color: #e63ec3;'\n            ),\n        'COMMENTS' => array(\n            0 => 'color: #0000ff;'\n            //1 => 'color: #ffa500;'\n            ),\n        'ESCAPE_CHAR' => array(\n            1 => 'color: #000099;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #8a0808;',\n            1 => 'color: #6e6e6e;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0b610b;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #0b610b;',\n            1 => 'color: #e63ec3;'\n            ),\n        'REGEXPS' => array(\n            1 => 'color: #0b610b;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        // Numbers, e.g. 255u08\n        1 => \"[0-9]*[subf][0136][12468]\"\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'COMMENTS' => array(\n            'DISALLOWED_BEFORE' => '$'\n        ),\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![\\.\\-a-zA-Z0-9_\\$\\#])\",\n            'DISALLOWED_AFTER' =>  \"(?![\\.\\-a-zA-Z0-9_%=\\\\/])\"\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/erlang.php",
    "content": "<?php\n/*************************************************************************************\n * erlang.php\n * --------\n * Author: Benny Baumann (BenBE@geshi.org)\n * Contributions:\n * - Uwe Dauernheim (uwe@dauernheim.net)\n * - Dan Forest-Barbier (dan@twisted.in)\n * Copyright: (c) 2008 Uwe Dauernheim (http://www.kreisquadratur.de/)\n * Release Version: 1.0.9.1\n * Date Started: 2008-09-27\n *\n * Erlang language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009/05/02 (1.0.8.3)\n *  -  Now using 'PARSER_CONTROL' instead of huge rexgexps, better and cleaner\n *\n * 2009/04/26 (1.0.8.3)\n *  -  Only link to existing docs / Fixes\n *\n * 2008-09-28 (1.0.0.1)\n *   [!] Bug fixed with keyword module.\n *   [+] Added more function names\n *\n * 2008-09-27 (1.0.0)\n *   [ ] First Release\n *\n * TODO (updated 2008-09-27)\n * -------------------------\n *   [!] Stop ';' from being transformed to '<SEMI>'\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Erlang',\n    'COMMENT_SINGLE' => array(1 => '%'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'HARDQUOTE' => array(\"'\", \"'\"),\n    'HARDESCAPE' => array(\"'\", \"\\\\\"),\n    'HARDCHAR' => \"\\\\\",\n    'ESCAPE_CHAR' => '\\\\',\n    'NUMBERS' => GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        //Control flow keywrods\n        1 => array(\n            'after', 'andalso', 'begin', 'case', 'catch', 'end', 'fun', 'if',\n            'of', 'orelse', 'receive', 'try', 'when', 'query'\n            ),\n        //Binary operators\n        2 => array(\n            'and', 'band', 'bnot', 'bor', 'bsl', 'bsr', 'bxor', 'div', 'not',\n            'or', 'rem', 'xor'\n            ),\n        3 => array(\n            'abs', 'alive', 'apply', 'atom_to_list', 'binary_to_list',\n            'binary_to_term', 'concat_binary', 'date', 'disconnect_node',\n            'element', 'erase', 'exit', 'float', 'float_to_list', 'get',\n            'get_keys', 'group_leader', 'halt', 'hd', 'integer_to_list',\n            'is_alive', 'length', 'link', 'list_to_atom', 'list_to_binary',\n            'list_to_float', 'list_to_integer', 'list_to_pid', 'list_to_tuple',\n            'load_module', 'make_ref', 'monitor_node', 'node', 'nodes', 'now',\n            'open_port', 'pid_to_list', 'process_flag', 'process_info',\n            'process', 'put', 'register', 'registered', 'round', 'self',\n            'setelement', 'size', 'spawn', 'spawn_link', 'split_binary',\n            'statistics', 'term_to_binary', 'throw', 'time', 'tl', 'trunc',\n            'tuple_to_list', 'unlink', 'unregister', 'whereis'\n            ),\n        // Built-In Functions\n        4 => array(\n            'atom', 'binary', 'constant', 'function', 'integer', 'is_atom',\n            'is_binary', 'is_constant', 'is_function', 'is_integer', 'is_list',\n            'is_number', 'is_pid', 'is_reference', 'is_record', 'list',\n            'number', 'pid', 'ports', 'port_close', 'port_info', 'reference'\n            ),\n        // Erlang/OTP internal modules (scary one)\n        5 => array(\n            'alarm_handler', 'any', 'app', 'application', 'appmon', 'appup',\n            'array', 'asn1ct', 'asn1rt', 'auth', 'base64', 'beam_lib', 'c',\n            'calendar', 'code', 'common_test_app', 'compile', 'config',\n            'corba', 'corba_object', 'cosEventApp', 'CosEventChannelAdmin',\n            'CosEventChannelAdmin_ConsumerAdmin',\n            'CosEventChannelAdmin_EventChannel',\n            'CosEventChannelAdmin_ProxyPullConsumer',\n            'CosEventChannelAdmin_ProxyPullSupplier',\n            'CosEventChannelAdmin_ProxyPushConsumer',\n            'CosEventChannelAdmin_ProxyPushSupplier',\n            'CosEventChannelAdmin_SupplierAdmin', 'CosEventDomainAdmin',\n            'CosEventDomainAdmin_EventDomain',\n            'CosEventDomainAdmin_EventDomainFactory',\n            'cosEventDomainApp', 'CosFileTransfer_Directory',\n            'CosFileTransfer_File', 'CosFileTransfer_FileIterator',\n            'CosFileTransfer_FileTransferSession',\n            'CosFileTransfer_VirtualFileSystem',\n            'cosFileTransferApp', 'CosNaming', 'CosNaming_BindingIterator',\n            'CosNaming_NamingContext', 'CosNaming_NamingContextExt',\n            'CosNotification', 'CosNotification_AdminPropertiesAdmin',\n            'CosNotification_QoSAdmin', 'cosNotificationApp',\n            'CosNotifyChannelAdmin_ConsumerAdmin',\n            'CosNotifyChannelAdmin_EventChannel',\n            'CosNotifyChannelAdmin_EventChannelFactory',\n            'CosNotifyChannelAdmin_ProxyConsumer',\n            'CosNotifyChannelAdmin_ProxyPullConsumer',\n            'CosNotifyChannelAdmin_ProxyPullSupplier',\n            'CosNotifyChannelAdmin_ProxyPushConsumer',\n            'CosNotifyChannelAdmin_ProxyPushSupplier',\n            'CosNotifyChannelAdmin_ProxySupplier',\n            'CosNotifyChannelAdmin_SequenceProxyPullConsumer',\n            'CosNotifyChannelAdmin_SequenceProxyPullSupplier',\n            'CosNotifyChannelAdmin_SequenceProxyPushConsumer',\n            'CosNotifyChannelAdmin_SequenceProxyPushSupplier',\n            'CosNotifyChannelAdmin_StructuredProxyPullConsumer',\n            'CosNotifyChannelAdmin_StructuredProxyPullSupplier',\n            'CosNotifyChannelAdmin_StructuredProxyPushConsumer',\n            'CosNotifyChannelAdmin_StructuredProxyPushSupplier',\n            'CosNotifyChannelAdmin_SupplierAdmin',\n            'CosNotifyComm_NotifyPublish', 'CosNotifyComm_NotifySubscribe',\n            'CosNotifyFilter_Filter', 'CosNotifyFilter_FilterAdmin',\n            'CosNotifyFilter_FilterFactory', 'CosNotifyFilter_MappingFilter',\n            'cosProperty', 'CosPropertyService_PropertiesIterator',\n            'CosPropertyService_PropertyNamesIterator',\n            'CosPropertyService_PropertySet',\n            'CosPropertyService_PropertySetDef',\n            'CosPropertyService_PropertySetDefFactory',\n            'CosPropertyService_PropertySetFactory', 'cosTime',\n            'CosTime_TimeService', 'CosTime_TIO', 'CosTime_UTO',\n            'CosTimerEvent_TimerEventHandler',\n            'CosTimerEvent_TimerEventService', 'cosTransactions',\n            'CosTransactions_Control', 'CosTransactions_Coordinator',\n            'CosTransactions_RecoveryCoordinator', 'CosTransactions_Resource',\n            'CosTransactions_SubtransactionAwareResource',\n            'CosTransactions_Terminator', 'CosTransactions_TransactionFactory',\n            'cover', 'cprof', 'cpu_sup', 'crashdump', 'crypto', 'crypto_app',\n            'ct', 'ct_cover', 'ct_ftp', 'ct_master', 'ct_rpc', 'ct_snmp',\n            'ct_ssh', 'ct_telnet', 'dbg', 'debugger', 'dets', 'dialyzer',\n            'dict', 'digraph', 'digraph_utils', 'disk_log', 'disksup',\n            'docb_gen', 'docb_transform', 'docb_xml_check', 'docbuilder_app',\n            'driver_entry', 'edoc', 'edoc_doclet', 'edoc_extract',\n            'edoc_layout', 'edoc_lib', 'edoc_run', 'egd', 'ei', 'ei_connect',\n            'epmd', 'epp', 'epp_dodger', 'eprof', 'erl', 'erl_boot_server',\n            'erl_call', 'erl_comment_scan', 'erl_connect', 'erl_ddll',\n            'erl_driver', 'erl_error', 'erl_eterm', 'erl_eval',\n            'erl_expand_records', 'erl_format', 'erl_global', 'erl_id_trans',\n            'erl_internal', 'erl_lint', 'erl_malloc', 'erl_marshal',\n            'erl_parse', 'erl_pp', 'erl_prettypr', 'erl_prim_loader',\n            'erl_prim_loader_stub', 'erl_recomment', 'erl_scan',\n            'erl_set_memory_block', 'erl_syntax', 'erl_syntax_lib', 'erl_tar',\n            'erl_tidy', 'erlang', 'erlang_mode', 'erlang_stub', 'erlc',\n            'erlsrv', 'error_handler', 'error_logger', 'erts_alloc',\n            'erts_alloc_config', 'escript', 'et', 'et_collector',\n            'et_selector', 'et_viewer', 'etop', 'ets', 'eunit', 'file',\n            'file_sorter', 'filelib', 'filename', 'fixed', 'fprof', 'ftp',\n            'gb_sets', 'gb_trees', 'gen_event', 'gen_fsm', 'gen_sctp',\n            'gen_server', 'gen_tcp', 'gen_udp', 'gl', 'global', 'global_group',\n            'glu', 'gs', 'heart', 'http', 'httpd', 'httpd_conf',\n            'httpd_socket', 'httpd_util', 'i', 'ic', 'ic_c_protocol',\n            'ic_clib', 'igor', 'inet', 'inets', 'init', 'init_stub',\n            'instrument', 'int', 'interceptors', 'inviso', 'inviso_as_lib',\n            'inviso_lfm', 'inviso_lfm_tpfreader', 'inviso_rt',\n            'inviso_rt_meta', 'io', 'io_lib', 'kernel_app', 'lib', 'lists',\n            'lname', 'lname_component', 'log_mf_h', 'make', 'math', 'megaco',\n            'megaco_codec_meas', 'megaco_codec_transform',\n            'megaco_edist_compress', 'megaco_encoder', 'megaco_flex_scanner',\n            'megaco_tcp', 'megaco_transport', 'megaco_udp', 'megaco_user',\n            'memsup', 'mnesia', 'mnesia_frag_hash', 'mnesia_registry',\n            'mod_alias', 'mod_auth', 'mod_esi', 'mod_security',\n            'Module_Interface', 'ms_transform', 'net_adm', 'net_kernel',\n            'new_ssl', 'nteventlog', 'observer_app', 'odbc', 'orber',\n            'orber_acl', 'orber_diagnostics', 'orber_ifr', 'orber_tc',\n            'orddict', 'ordsets', 'os', 'os_mon', 'os_mon_mib', 'os_sup',\n            'otp_mib', 'overload', 'packages', 'percept', 'percept_profile',\n            'pg', 'pg2', 'pman', 'pool', 'prettypr', 'proc_lib', 'proplists',\n            'public_key', 'qlc', 'queue', 'random', 'rb', 're', 'regexp',\n            'registry', 'rel', 'release_handler', 'reltool', 'relup', 'rpc',\n            'run_erl', 'run_test', 'runtime_tools_app', 'sasl_app', 'script',\n            'seq_trace', 'sets', 'shell', 'shell_default', 'slave', 'snmp',\n            'snmp_app', 'snmp_community_mib', 'snmp_framework_mib',\n            'snmp_generic', 'snmp_index', 'snmp_notification_mib', 'snmp_pdus',\n            'snmp_standard_mib', 'snmp_target_mib', 'snmp_user_based_sm_mib',\n            'snmp_view_based_acm_mib', 'snmpa', 'snmpa_conf', 'snmpa_error',\n            'snmpa_error_io', 'snmpa_error_logger', 'snmpa_error_report',\n            'snmpa_local_db', 'snmpa_mpd', 'snmpa_network_interface',\n            'snmpa_network_interface_filter',\n            'snmpa_notification_delivery_info_receiver',\n            'snmpa_notification_filter', 'snmpa_supervisor', 'snmpc', 'snmpm',\n            'snmpm_conf', 'snmpm_mpd', 'snmpm_network_interface', 'snmpm_user',\n            'sofs', 'ssh', 'ssh_channel', 'ssh_connection', 'ssh_sftp',\n            'ssh_sftpd', 'ssl', 'ssl_app', 'ssl_pkix', 'start', 'start_erl',\n            'start_webtool', 'stdlib_app', 'string', 'supervisor',\n            'supervisor_bridge', 'sys', 'systools', 'tags', 'test_server',\n            'test_server_app', 'test_server_ctrl', 'tftp', 'timer', 'toolbar',\n            'ttb', 'tv', 'unicode', 'unix_telnet', 'user', 'webtool', 'werl',\n            'win32reg', 'wrap_log_reader', 'wx', 'wx_misc', 'wx_object',\n            'wxAcceleratorEntry', 'wxAcceleratorTable', 'wxArtProvider',\n            'wxAuiDockArt', 'wxAuiManager', 'wxAuiNotebook', 'wxAuiPaneInfo',\n            'wxAuiTabArt', 'wxBitmap', 'wxBitmapButton', 'wxBitmapDataObject',\n            'wxBoxSizer', 'wxBrush', 'wxBufferedDC', 'wxBufferedPaintDC',\n            'wxButton', 'wxCalendarCtrl', 'wxCalendarDateAttr',\n            'wxCalendarEvent', 'wxCaret', 'wxCheckBox', 'wxCheckListBox',\n            'wxChildFocusEvent', 'wxChoice', 'wxClientDC', 'wxClipboard',\n            'wxCloseEvent', 'wxColourData', 'wxColourDialog',\n            'wxColourPickerCtrl', 'wxColourPickerEvent', 'wxComboBox',\n            'wxCommandEvent', 'wxContextMenuEvent', 'wxControl',\n            'wxControlWithItems', 'wxCursor', 'wxDataObject', 'wxDateEvent',\n            'wxDatePickerCtrl', 'wxDC', 'wxDialog', 'wxDirDialog',\n            'wxDirPickerCtrl', 'wxDisplayChangedEvent', 'wxEraseEvent',\n            'wxEvent', 'wxEvtHandler', 'wxFileDataObject', 'wxFileDialog',\n            'wxFileDirPickerEvent', 'wxFilePickerCtrl', 'wxFindReplaceData',\n            'wxFindReplaceDialog', 'wxFlexGridSizer', 'wxFocusEvent', 'wxFont',\n            'wxFontData', 'wxFontDialog', 'wxFontPickerCtrl',\n            'wxFontPickerEvent', 'wxFrame', 'wxGauge', 'wxGBSizerItem',\n            'wxGenericDirCtrl', 'wxGLCanvas', 'wxGraphicsBrush',\n            'wxGraphicsContext', 'wxGraphicsFont', 'wxGraphicsMatrix',\n            'wxGraphicsObject', 'wxGraphicsPath', 'wxGraphicsPen',\n            'wxGraphicsRenderer', 'wxGrid', 'wxGridBagSizer', 'wxGridCellAttr',\n            'wxGridCellEditor', 'wxGridCellRenderer', 'wxGridEvent',\n            'wxGridSizer', 'wxHelpEvent', 'wxHtmlEasyPrinting', 'wxIcon',\n            'wxIconBundle', 'wxIconizeEvent', 'wxIdleEvent', 'wxImage',\n            'wxImageList', 'wxJoystickEvent', 'wxKeyEvent',\n            'wxLayoutAlgorithm', 'wxListBox', 'wxListCtrl', 'wxListEvent',\n            'wxListItem', 'wxListView', 'wxMask', 'wxMaximizeEvent',\n            'wxMDIChildFrame', 'wxMDIClientWindow', 'wxMDIParentFrame',\n            'wxMemoryDC', 'wxMenu', 'wxMenuBar', 'wxMenuEvent', 'wxMenuItem',\n            'wxMessageDialog', 'wxMiniFrame', 'wxMirrorDC',\n            'wxMouseCaptureChangedEvent', 'wxMouseEvent', 'wxMoveEvent',\n            'wxMultiChoiceDialog', 'wxNavigationKeyEvent', 'wxNcPaintEvent',\n            'wxNotebook', 'wxNotebookEvent', 'wxNotifyEvent',\n            'wxPageSetupDialog', 'wxPageSetupDialogData', 'wxPaintDC',\n            'wxPaintEvent', 'wxPalette', 'wxPaletteChangedEvent', 'wxPanel',\n            'wxPasswordEntryDialog', 'wxPen', 'wxPickerBase', 'wxPostScriptDC',\n            'wxPreviewCanvas', 'wxPreviewControlBar', 'wxPreviewFrame',\n            'wxPrintData', 'wxPrintDialog', 'wxPrintDialogData', 'wxPrinter',\n            'wxPrintout', 'wxPrintPreview', 'wxProgressDialog',\n            'wxQueryNewPaletteEvent', 'wxRadioBox', 'wxRadioButton',\n            'wxRegion', 'wxSashEvent', 'wxSashLayoutWindow', 'wxSashWindow',\n            'wxScreenDC', 'wxScrollBar', 'wxScrolledWindow', 'wxScrollEvent',\n            'wxScrollWinEvent', 'wxSetCursorEvent', 'wxShowEvent',\n            'wxSingleChoiceDialog', 'wxSizeEvent', 'wxSizer', 'wxSizerFlags',\n            'wxSizerItem', 'wxSlider', 'wxSpinButton', 'wxSpinCtrl',\n            'wxSpinEvent', 'wxSplashScreen', 'wxSplitterEvent',\n            'wxSplitterWindow', 'wxStaticBitmap', 'wxStaticBox',\n            'wxStaticBoxSizer', 'wxStaticLine', 'wxStaticText', 'wxStatusBar',\n            'wxStdDialogButtonSizer', 'wxStyledTextCtrl', 'wxStyledTextEvent',\n            'wxSysColourChangedEvent', 'wxTextAttr', 'wxTextCtrl',\n            'wxTextDataObject', 'wxTextEntryDialog', 'wxToggleButton',\n            'wxToolBar', 'wxToolTip', 'wxTopLevelWindow', 'wxTreeCtrl',\n            'wxTreeEvent', 'wxUpdateUIEvent', 'wxWindow', 'wxWindowCreateEvent',\n            'wxWindowDC', 'wxWindowDestroyEvent', 'wxXmlResource', 'xmerl',\n            'xmerl_eventp', 'xmerl_scan', 'xmerl_xpath', 'xmerl_xs',\n            'xmerl_xsd', 'xref', 'yecc', 'zip', 'zlib', 'zlib_stub'\n            ),\n        // Binary modifiers\n        6 => array(\n            'big', 'binary', 'float', 'integer', 'little', 'signed', 'unit', 'unsigned'\n            )\n        ),\n    'SYMBOLS' => array(\n        0 => array('(', ')', '[', ']', '{', '}'),\n        1 => array('->', ',', ';', '.'),\n        2 => array('<<', '>>'),\n        3 => array('=', '||', '-', '+', '*', '/', '++', '--', '!', '<', '>', '>=',\n                    '=<', '==', '/=', '=:=', '=/=')\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #186895;',\n            2 => 'color: #014ea4;',\n            3 => 'color: #fa6fff;',\n            4 => 'color: #fa6fff;',\n            5 => 'color: #ff4e18;',\n            6 => 'color: #9d4f37;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            'HARD' => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #109ab8;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff7800;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff9600;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;',\n            2 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #004866;',\n            1 => 'color: #6bb810;',\n            2 => 'color: #ee3800;',\n            3 => 'color: #014ea4;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #6941fd;',\n            1 => 'color: #d400ed;',\n            2 => 'color: #5400b3;',\n            3 => 'color: #ff3c00;',\n            4 => 'color: #6941fd;',\n            5 => 'color: #45b3e6;',\n            6 => 'color: #ff9600;',\n            7 => 'color: #d400ed;',\n            8 => 'color: #ff9600;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => 'http://erlang.org/doc/man/{FNAME}.html',\n        6 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '-&gt;',\n        2 => ':'\n        ),\n    'REGEXPS' => array(\n        //�Macro definitions\n        0 => array(\n            GESHI_SEARCH => '(-define\\s*\\()([a-zA-Z0-9_]+)(\\(|,)',\n            GESHI_REPLACE => '\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\1',\n            GESHI_AFTER => '\\3'\n            ),\n        // Record definitions\n        1 => array(\n            GESHI_SEARCH => '(-record\\s*\\()([a-zA-Z0-9_]+)(,)',\n            GESHI_REPLACE => '\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\1',\n            GESHI_AFTER => '\\3'\n            ),\n        // Precompiler directives\n        2 => array(\n            GESHI_SEARCH => '(-)([a-z][a-zA-Z0-9_]*)(\\()',\n            GESHI_REPLACE => '\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\1',\n            GESHI_AFTER => '\\3'\n            ),\n        // Functions\n        3 => array(\n            GESHI_SEARCH => '([a-z]\\w*|\\'\\w*\\')(\\s*\\()',\n            GESHI_REPLACE => '\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '\\2'\n            ),\n        // Macros\n        4 => array(\n            GESHI_SEARCH => '(\\?)([a-zA-Z0-9_]+)',\n            GESHI_REPLACE => '\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\1',\n            GESHI_AFTER => ''\n            ),\n        // Variables - With hack to avoid interfering wish GeSHi internals\n        5 => array(\n            GESHI_SEARCH => '([([{,<+*-\\/=\\s!]|&lt;)(?!(?:PIPE|SEMI|DOT|NUM|REG3XP\\d*)\\W)([A-Z_]\\w*)(?!\\w)',\n            GESHI_REPLACE => '\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\1',\n            GESHI_AFTER => ''\n            ),\n        // ASCII�codes\n        6 => '(\\$[a-zA-Z0-9_])',\n        // Records\n        7 => array(\n            GESHI_SEARCH => '(#)([a-z][a-zA-Z0-9_]*)(\\.|\\{)',\n            GESHI_REPLACE => '\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\1',\n            GESHI_AFTER => '\\3'\n            ),\n        // Numbers with a different radix\n        8 => '(?<=>)(#[a-zA-Z0-9]*)'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            3 => array(\n                'DISALLOWED_BEFORE' => '(?<![\\w])',\n                'DISALLOWED_AFTER' => ''//'(?=\\s*\\()'\n                ),\n            5 => array(\n                'DISALLOWED_BEFORE' => '(?<=\\'|)',\n                'DISALLOWED_AFTER' => '(?=(\\'|):)'\n                ),\n            6 => array(\n                'DISALLOWED_BEFORE' => '(?<=\\/|-)',\n                'DISALLOWED_AFTER' => ''\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/euphoria.php",
    "content": "<?php\n/*************************************************************************************\n * euphoria.php\n * ---------------------------------\n * Author: Nicholas Koceja (nerketur@hotmail.com)\n * Copyright: (c) 2010 Nicholas Koceja\n * Release Version: 1.0.9.1\n * Date Started: 11/24/2010\n *\n * Euphoria language file for GeSHi.\n *\n * Author's note:  The colors are based off of the Euphoria Editor (ed.ex) colors.\n * Also, I added comments in places so I could remember a few things about Euphoria.\n *\n *\n * CHANGES\n * -------\n * <date-of-release> (1.0.8.9)\n *  -  First Release\n *\n * TODO (updated <date-of-release>)\n * -------------------------\n * seperate the funtions from the procedures, and have a slight color change for each.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Euphoria',\n    'COMMENT_SINGLE' => array(1 => '--'),\n    'COMMENT_MULTI' => array(), //Euphoria doesn't support multi-line comments\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array( // keywords\n            'and', 'by', 'constant', 'do', 'else', 'elsif', 'end', 'exit',\n            'for', 'function', 'global', 'if', 'include', 'not', 'or',\n            'procedure', 'return', 'then', 'to', 'type', 'while', 'with',\n            'without', 'xor'\n            ),\n        2 => array( // built-ins\n            'abort', 'and_bits', 'append', 'arctan', 'atom', 'c_func', 'call',\n            'c_proc', 'call_func', 'call_proc', 'clear_screen', 'close', 'compare',\n            'command_line', 'cos', 'date', 'equal', 'find', 'find_from', 'floor',\n            'getc', 'getenv', 'gets', 'get_key', 'get_pixel', 'integer', 'length',\n            'log', 'machine_func', 'machine_proc', 'match', 'match_from',\n            'mem_copy', 'mem_set', 'not_bits', 'object', 'open', 'or_bits', 'peek',\n            'peek4s', 'peek4u', 'pixel', 'platform', 'poke', 'poke4', 'position',\n            'power', 'prepend', 'print', 'printf', 'profile', 'puts', 'rand',\n            'remainder', 'repeat', 'routine_id', 'sequence', 'sin', 'sprintf',\n            'sqrt', 'system', 'system_exec', 'tan', 'task_clock_stop',\n            'task_clock_start', 'task_create', 'task_list', 'task_schedule',\n            'task_self', 'task_status', 'task_suspend', 'task_yield', 'time',\n            'trace', 'xor_bits'\n            ),\n        ),\n    'SYMBOLS' => array(\n        0 => array(\n            '(', ')', '{', '}', '[', ']'\n            ),\n        1 => array(\n            '+', '-', '*', '/', '=', '&', '^'\n            ),\n        2 => array(\n            '&', '?', ','\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000ff; font-weight: bold;', // keywords\n            2 => 'color: #cc33ff; font-weight: bold;', // builtins\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #ff0000; font-style: italic;',\n            'MULTI' => '' // doesn't exist\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #009900; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #999900; font-weight: bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #00cc00;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc33cc; font-style: italic'\n            ),\n        'METHODS' => array( // Doesn't exist in Euphoria.  Everything is a function =)\n            0 => ''\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #999900;', // brackets\n            1 => 'color: #333333;', // operators\n            2 => 'color: #333333; font-style: bold' // print+concat\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array( // Never included in scripts.\n            )\n        ),\n    'REGEXPS' => array(\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/ezt.php",
    "content": "<?php\n/*************************************************************************************\n * ezt.php\n * -----------\n * Author: Ramesh Vishveshwar (ramesh.vishveshwar@gmail.com)\n * Copyright: (c) 2012 Ramesh Vishveshwar (http://thecodeisclear.in)\n * Release Version: 1.0.9.1\n * Date Started: 2012/09/01\n *\n * Easytrieve language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2012/09/22 (1.0.0)\n *   - First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'EZT',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,\n    'COMMENT_REGEXP' => array(\n        // First character of the line is an asterisk. Rest of the line is spaces/null\n        0 => '/\\*(\\s|\\D)?(\\n)/',\n        // Asterisk followed by any character & then a non numeric character.\n        // This is to prevent expressions such as 25 * 4 from being marked as a comment\n        // Note: 25*4 - 100 will mark *4 - 100 as a comment. Pls. space out expressions\n        // In any case, 25*4 will result in an Easytrieve error\n        1 => '/\\*.([^0-9\\n])+.*(\\n)/'\n        ),\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'CONTROL','DEFINE','DISPLAY','DO','ELSE','END-DO','END-IF',\n            'END-PROC','FILE','GET','GOTO','HEADING','IF','JOB','LINE',\n            'PARM','PERFORM','POINT','PRINT','PROC','PUT','READ','RECORD',\n            'REPORT','RETRIEVE','SEARCH','SELECT','SEQUENCE','SORT','STOP',\n            'TITLE','WRITE'\n            ),\n        // Procedure Keywords (Names of specific procedures)\n        2 => array (\n            'AFTER-BREAK','AFTER-LINE','BEFORE-BREAK','BEFORE-LINE',\n            'ENDPAGE','REPORT-INPUT','TERMINATION',\n            ),\n        // Macro names, Parameters\n        3 => array (\n            'COMPILE','CONCAT','DESC','GETDATE','MASK','PUNCH',\n            'VALUE','SYNTAX','NEWPAGE','SKIP','COL','TALLY',\n            'WITH'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(',')','=','&',',','*','>','<','%'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false\n        //4 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #FF0000;',\n            2 => 'color: #21A502;',\n            3 => 'color: #FF00FF;'\n            ),\n        'COMMENTS' => array(\n            0 => 'color: #0000FF; font-style: italic;',\n            1 => 'color: #0000FF; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #FF7400;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #66CC66;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #736205;'\n            ),\n        'METHODS' => array(\n            1 => '',\n            2 => ''\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #FF7400;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #E01B6A;'\n            ),\n        'SCRIPT' => array(\n            0 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        // We are trying to highlight Macro names here which preceded by %\n        0 => '(%)([a-zA-Z0-9])+(\\s|\\n)'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/f1.php",
    "content": "<?php\n/*************************************************************************************\n * f1.php\n * -------\n * Author: Juro Bystricky (juro@f1compiler.com)\n * Copyright: K2 Software Corp.\n * Release Version: 1.0.9.1\n * Date Started: 2010/07/06\n *\n * Formula One language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/07/06 (1.0.8.9)\n *  -  First Release\n *\n * TODO\n * -------------------------\n *  -  Add more RTL functions with URLs\n *\n *************************************************************************************\n *\n * This file is part of GeSHi.\n *\n * GeSHi is free software; you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation; either version 2 of the License, or\n * (at your option) any later version.\n *\n * GeSHi is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with GeSHi; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Formula One',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('{' => '}'),\n    'COMMENT_REGEXP' => array(\n        //Nested Comments\n        2 =>  \"/(\\{(?:\\{.*\\}|[^\\{])*\\})/m\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\",'\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[\\\\\\\\nrt\\'\\\"?\\n]#i\",\n        //Hexadecimal Char Specs (Utf16 codes, Unicode versions only)\n        2 => \"#\\\\\\\\u[\\da-fA-F]{4}#\",\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE |\n        GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_OCT_PREFIX_0O |\n        GESHI_NUMBER_HEX_PREFIX |\n        GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'pred','proc','subr','else','elsif','iff','if','then','false','true',\n            'case','of','use','local','mod','end','list','file','all','one','max','min','rel',\n            'external','Nil','_stdcall','_cdecl','_addressof','_pred','_file','_line'\n            ),\n        2 => array(\n            'Ascii','Bin','I','L','P','R','S','U'\n            ),\n        3 => array(\n            'Append','in','Dupl','Len','Print','_AllDifferent','_AllAscending',\n            '_AllDescending','_Ascending','_Descending'\n            )\n        ),\n    'SYMBOLS' => array(\n        0 => array('(', ')', '[', ']'),\n        1 => array('<', '>','='),\n        2 => array('+', '-', '*', '/'),\n        3 => array('&', '|'),\n        4 => array(':', ';')\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000ff;',\n            2 => 'color: #000080;',\n            3 => 'color: #000080;',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000; font-style: italic;',\n            2 => 'color: #008000; font-style: italic;',\n            'MULTI' => 'color: #008000; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #009999; font-weight: bold;',\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #800000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000;',\n            1 => 'color: #000000;',\n            2 => 'color: #000000;',\n            3 => 'color: #000000;',\n            4 => 'color: #000000;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://www.f1compiler.com/f1helponline/f1_runtime_library.html#{FNAME}'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/falcon.php",
    "content": "<?php\n/*************************************************************************************\n * falcon.php\n * ---------------------------------\n * Author: billykater (billykater+geshi@gmail.com)\n * Copyright: (c) 2010 billykater (http://falconpl.org/)\n * Release Version: 1.0.9.1\n * Date Started: 2010/06/07\n *\n * Falcon language file for GeSHi.\n *\n * CHANGES\n * -------\n * <2010/8/1> (1.0.8.10)\n *  -  First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n * ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Falcon',\n    'COMMENT_SINGLE' => array( 1 => '//' ),\n    'COMMENT_MULTI' => array( '/*' => '*/' ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array( \"'\", '\"' ),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'break','case','catch','class','const','continue','def','default',\n            'dropping','elif','else','end','enum','for','forfirst','forlast',\n            'formiddle','from','function','global','if','init','innerfunc',\n            'launch','loop','object','raise','return','select','state','static',\n            'switch','try','while'\n        ),\n        2 => array(\n            'false','nil','true',\n        ),\n        3 => array(\n            'and','as','eq','fself','in','not','notin','or','provides','self','to'\n        ),\n        4 => array(\n            'directive','export','import','load','macro'\n        ),\n        5 => array(\n            'ArrayType','BooleanType','ClassMethodType','ClassType','DictionaryType',\n            'FunctionType','MemBufType','MethodType','NilType','NumericType','ObjectType',\n            'RangeType','StringType','LBindType'\n        ),\n        6 => array(\n            \"CurrentTime\",\"IOStream\",\"InputStream\",\"MemBufFromPtr\",\"OutputStream\",\n            \"PageDict\",\"ParseRFC2822\",\"abs\",\"acos\",\"all\",\n            \"allp\",\"any\",\"anyp\",\"argd\",\"argv\",\n            \"arrayAdd\",\"arrayBuffer\",\"arrayCompact\",\"arrayDel\",\"arrayDelAll\",\n            \"arrayFill\",\"arrayFind\",\"arrayHead\",\"arrayIns\",\"arrayMerge\",\n            \"arrayNM\",\"arrayRemove\",\"arrayResize\",\"arrayScan\",\"arraySort\",\n            \"arrayTail\",\"asin\",\"assert\",\"atan\",\"atan2\",\n            \"attributes\",\"baseClass\",\"beginCritical\",\"bless\",\"brigade\",\n            \"broadcast\",\"cascade\",\"ceil\",\"choice\",\"chr\",\n            \"className\",\"clone\",\"combinations\",\"compare\",\"consume\",\n            \"cos\",\"deg2rad\",\"deoob\",\"derivedFrom\",\"describe\",\n            \"deserialize\",\"dictBack\",\"dictBest\",\"dictClear\",\"dictFill\",\n            \"dictFind\",\"dictFront\",\"dictGet\",\"dictKeys\",\"dictMerge\",\n            \"dictRemove\",\"dictSet\",\"dictValues\",\"dirChange\",\"dirCurrent\",\n            \"dirMake\",\"dirMakeLink\",\"dirReadLink\",\"dirRemove\",\"dolist\",\n            \"endCritical\",\"epoch\",\"eval\",\"exit\",\"exp\",\n            \"factorial\",\"fileChgroup\",\"fileChmod\",\"fileChown\",\"fileCopy\",\n            \"fileExt\",\"fileMove\",\"fileName\",\"fileNameMerge\",\"filePath\",\n            \"fileRemove\",\"fileType\",\"fileUnit\",\"filter\",\"fint\",\n            \"firstOf\",\"floop\",\"floor\",\"fract\",\"getAssert\",\n            \"getEnviron\",\"getProperty\",\"getSlot\",\"getSystemEncoding\",\"getenv\",\n            \"iff\",\"include\",\"input\",\"inspect\",\"int\",\n            \"isBound\",\"isCallable\",\"isoob\",\"lbind\",\"len\",\n            \"let\",\"lit\",\"log\",\"map\",\"max\",\n            \"metaclass\",\"min\",\"numeric\",\"oob\",\"ord\",\n            \"paramCount\",\"paramIsRef\",\"paramSet\",\"parameter\",\"passvp\",\n            \"permutations\",\"pow\",\"print\",\"printl\",\"properties\",\n            \"rad2deg\",\"random\",\"randomChoice\",\"randomDice\",\"randomGrab\",\n            \"randomPick\",\"randomSeed\",\"randomWalk\",\"readURI\",\"reduce\",\n            \"retract\",\"round\",\"seconds\",\"serialize\",\"set\",\n            \"setProperty\",\"setenv\",\"sin\",\"sleep\",\"stdErr\",\n            \"stdErrRaw\",\"stdIn\",\"stdInRaw\",\"stdOut\",\"stdOutRaw\",\n            \"strBack\",\"strBackFind\",\"strBackTrim\",\"strBuffer\",\"strCmpIgnoreCase\",\n            \"strEndsWith\",\"strEscape\",\"strEsq\",\"strFill\",\"strFind\",\n            \"strFromMemBuf\",\"strFront\",\"strFrontTrim\",\"strLower\",\"strMerge\",\n            \"strReplace\",\"strReplicate\",\"strSplit\",\"strSplitTrimmed\",\"strStartsWith\",\n            \"strToMemBuf\",\"strTrim\",\"strUnescape\",\"strUnesq\",\"strUpper\",\n            \"strWildcardMatch\",\"subscribe\",\"systemErrorDescription\",\"tan\",\"times\",\n            \"toString\",\"transcodeFrom\",\"transcodeTo\",\"typeOf\",\"unsetenv\",\n            \"unsubscribe\",\"valof\",\"vmFalconPath\",\"vmIsMain\",\"vmModuleName\",\n            \"vmModuleVersionInfo\",\"vmSearchPath\",\"vmSystemType\",\"vmVersionInfo\",\"vmVersionName\",\n            \"writeURI\",\"xmap\",\"yield\",\"yieldOut\"\n        ),\n        7 => array(\n            \"AccessError\",\"Array\",\"BOM\",\"Base64\",\"Class\",\n            \"ClassMethod\",\"CloneError\",\"CmdlineParser\",\"CodeError\",\"Continuation\",\n            \"Dictionary\",\"Directory\",\"Error\",\"FileStat\",\"Format\",\n            \"Function\",\"GarbagePointer\",\"GenericError\",\"Integer\",\"InterruptedError\",\n            \"IoError\",\"Iterator\",\"LateBinding\",\"List\",\"MathError\",\n            \"MemoryBuffer\",\"MessageError\",\"Method\",\"Numeric\",\"Object\",\n            \"ParamError\",\"ParseError\",\"Path\",\"Range\",\"Semaphore\",\n            \"Sequence\",\"Set\",\"Stream\",\"String\",\"StringStream\",\n            \"SyntaxError\",\"Table\",\"TableError\",\"TimeStamp\",\"TimeZone\",\n            \"Tokenizer\",\"TypeError\",\"URI\",\"VMSlot\"\n        ),\n        8 => array(\n            \"args\",\"scriptName\",\"scriptPath\"\n        ),\n        9 => array(\n            \"GC\"\n        ),\n    ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => 'http://falconpl.org/project_docs/core/functions.html#typeOf',\n        6 => 'http://falconpl.org/project_docs/core/functions.html#{FNAME}',\n        7 => 'http://falconpl.org/project_docs/core/class_{FNAME}.html',\n        8 => 'http://falconpl.org/project_docs/core/globals.html#{FNAME}',\n        9 => 'http://falconpl.org/project_docs/core/object_{FNAME}.html)'\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true,\n        9 => true\n    ),\n    'SYMBOLS' => array(\n        '(',')','$','%','&','/','{','[',']','=','}','?','+','-','#','*','@',\n        '<','>','|',',',':',';','\\\\','^'\n    ),\n    'REGEXPS' => array(\n        0 => array(\n            GESHI_SEARCH => '(\\[)([a-zA-Z_]|\\c{C})(?:[a-zA-Z0-9_]|\\p{C})*(\\])',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3',\n\n        ),\n    ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        0 => array( '<?' => '?>' )\n    ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000080;font-weight:bold;',\n            2 => 'color: #800000;font-weight:bold;',\n            3 => 'color: #800000;font-weight:bold;',\n            4 => 'color: #000080;font-weight:bold;',\n            5 => 'color: #000000;font-weight:bold;',\n            6 => 'font-weight:bold;',\n            7 => 'font-weight:bold;',\n            8 => 'font-weight:bold;'\n        ),\n        'COMMENTS' => array(\n            1 => 'color: #29B900;',\n            'MULTI' => 'color: #008080'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #800000'\n        ),\n        'BRACKETS' => array(\n            0 => 'color: #000000'\n        ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #800000'\n        ),\n        'NUMBERS' => array(\n            0 => 'color: #000000'\n        ),\n        'METHODS' => array(\n            0 => 'color: #000000'\n        ),\n        'SYMBOLS' => array(\n            0 => 'color: #8B0513'\n        ),\n        'SCRIPT' => array(\n            0 => ''\n        ),\n        'REGEXPS' => array(\n            0 => 'color: #FF00FF'\n        )\n    ),\n\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        '.'\n    )\n);\n"
  },
  {
    "path": "includes/geshi/fo.php",
    "content": "<?php\n/*************************************************************************************\n * fo.php\n * --------\n * Author: Tan-Vinh Nguyen (tvnguyen@web.de)\n * Copyright: (c) 2009 Tan-Vinh Nguyen\n * Release Version: 1.0.9.1\n * Date Started: 2009/03/23\n *\n * fo language file for GeSHi.\n *\n * FO stands for \"Flexible Oberflaechen\" (Flexible Surfaces) and\n * is part of the abas-ERP.\n *\n * CHANGES\n * -------\n * 2009/03/23 (1.0.0)\n *   -  First Release\n *      Basic commands in German and English\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'FO (abas-ERP)',\n    'COMMENT_SINGLE' => array(1 => '..'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        //Control Flow\n        1 => array(\n            /* see http://www.abas.de/sub_de/kunden/help/hd/html/9.html */\n\n            /* fo keywords, part 1: control flow */\n            '.weiter', '.continue'\n\n            /* this language works with goto's only*/\n            ),\n\n        //FO Keywords\n        2 => array(\n            /* fo keywords, part 2 */\n            '.fo', '.formel', '.formula',\n            '.zuweisen', '.assign',\n            '.fehler', '.error',\n            '.ende', '.end'\n            ),\n\n        //Java Keywords\n        3 => array(\n            /* Java keywords, part 3: primitive data types */\n            '.art', '.type',\n            'integer', 'real', 'bool', 'text', 'datum', 'woche', 'termin', 'zeit',\n            'mehr', 'MEHR'\n            ),\n\n        //Reserved words in fo literals\n        4 => array(\n            /* other reserved words in fo literals */\n            /* should be styled to look similar to numbers and Strings */\n            'false', 'null', 'true',\n            'OBJEKT',\n            'VORGANG', 'PROCESS',\n            'OFFEN', 'OPEN',\n            'ABORT',\n            'AN', 'ADDEDTO',\n            'AUF', 'NEW',\n            'BILDSCHIRM', 'TERMINAL',\n            'PC',\n            'MASKE', 'SCREEN',\n            'ZEILE', 'LINE'\n            ),\n\n        // interpreter settings\n        5 => array (\n            '..!INTERPRETER', 'DEBUG'\n            ),\n\n        // database commands\n        6 => array (\n            '.hole', '.hol', '.select',\n            '.lade', '.load',\n            '.aktion', '.action',\n            '.belegen', '.occupy',\n            '.bringe', '.rewrite',\n            '.dazu', '.add',\n            '.löschen', '.delete',\n            '.mache', '.make',\n            '.merke', '.reserve',\n            '.setze', '.set',\n            'SPERREN', 'LOCK',\n            'TEIL', 'PART',\n            'KEINESPERRE',\n            'AMASKE', 'ASCREEN',\n            'BETRIEB', 'WORK-ORDER',\n            'NUMERISCH', 'NUMERICAL',\n            'VORSCHLAG', 'SUGGESTION',\n            'OBLIGO', 'OUTSTANDING',\n            'LISTE', 'LIST',\n            'DRUCK', 'PRINT',\n            'ÜBERNAHME', 'TAGEOVER',\n            'ABLAGE', 'FILINGSYSTEM',\n            'BDE', 'PDC',\n            'BINDUNG', 'ALLOCATION',\n            'BUCHUNG', 'ENTRY',\n            'COLLI', 'SERIAL',\n            'DATEI', 'FILE',\n            'VERKAUF', 'SALES',\n            'EINKAUF', 'PURCHASING',\n            'EXEMPLAR', 'EXAMPLE',\n            'FERTIGUNG', 'PRODUCTION',\n            'FIFO',\n            'GRUPPE', 'GROUP',\n            'JAHR', 'YEAR',\n            'JOURNAL',\n            'KOPF', 'HEADER',\n            'KOSTEN',\n            'LIFO',\n            'LMENGE', 'SQUANTITY',\n            'LOHNFERTIGUNG', 'SUBCONTRACTING',\n            'LPLATZ', 'LOCATION',\n            'MBELEGUNG', 'MACHLOADING',\n            'MONAT', 'MONTH', 'MZ',\n            'NACHRICHT', 'MESSAGE',\n            'PLAN', 'TARGET',\n            'REGIONEN', 'REGIONS',\n            'SERVICEANFRAGE', 'SERVICEREQUEST',\n            'VERWENDUNG', 'APPLICATION',\n            'WEITER', 'CONTINUE',\n            'ABBRUCH', 'CANCEL',\n            'ABLAGEKENNZEICHEN', 'FILLINGCODE',\n            'ALLEIN', 'SINGLEUSER',\n            'AUFZAEHLTYP', 'ENUMERATION-TYPE',\n            'AUSGABE', 'OUTPUT',\n            'DEZPUNKT', 'DECPOINT'\n            ),\n\n        // output settings\n        7 => array (\n            '.absatz', '.para',\n            '.blocksatz', '.justified',\n            '.flattersatz', '.unjustified',\n            '.format',\n            '.box',\n            '.drucken', '.print',\n            '.gedruckt', '.printed',\n            '.länge', '.length',\n            '.links', '.left',\n            '.rechts', '.right',\n            '.oben', '.up',\n            '.unten', '.down',\n            '.seite', '.page',\n            '.tabellensatz', '.tablerecord',\n            '.trenner', '.separator',\n            'ARCHIV'\n            ),\n\n        // text commands\n        8 => array (\n            '.text',\n            '.atext',\n            '.println',\n            '.uebersetzen', '.translate'\n            ),\n\n        // I/O commands\n        9 => array (\n            '.aus', '.ausgabe', '.output',\n            '.ein', '.eingabe', '.input',\n            '.datei', '.file',\n            '.lesen', '.read',\n            '.sortiere', '.sort',\n            '-ÖFFNEN', '-OPEN',\n            '-TEST',\n            '-LESEN', '-READ',\n            'VON', 'FROM'\n            ),\n\n        //system\n        10 => array (\n            '.browser',\n            '.kommando', '.command',\n            '.system', '.dde',\n            '.editiere', '.edit',\n            '.hilfe', '.help',\n            '.kopieren', '.copy',\n            '.pc.clip',\n            '.pc.copy',\n            '.pc.dll',\n            '.pc.exec',\n            '.pc.open',\n            'DIAGNOSE', 'ERRORREPORT',\n            'DOPPELPUNKT', 'COLON',\n            'ERSETZUNG', 'REPLACEMENT',\n            'WARTEN', 'PARALLEL'\n            ),\n\n        //fibu/accounting specific commands\n        11 => array (\n            '.budget',\n            '.chart',\n            'VKZ',\n            'KONTO', 'ACCOUNT',\n            'AUSZUG', 'STATEMENT',\n            'WAEHRUNG', 'CURRENCY',\n            'WAEHRUNGSKURS', 'EXCHANGERATE',\n            'AUSWAEHR', 'FORCURR',\n            'BUCHUNGSKREIS', 'SET OF BOOKS'\n            ),\n\n        // efop - extended flexible surface\n        12 => array (\n            '.cursor',\n            '.farbe', '.colour',\n            '.fenster', '.window',\n            '.hinweis', '.note',\n            '.menue', '.menu',\n            '.schutz', '.protection',\n            '.zeigen', '.view',\n            '.zeile', '.line',\n            'VORDERGRUND', 'FOREGROUND',\n            'HINTERGRUND', 'BACKGROUND',\n            'SOFORT', 'IMMEDIATELY',\n            'AKTUALISIEREN', 'UPDATE',\n            'FENSTERSCHLIESSEN', 'CLOSEWINDOWS'\n            ),\n        ),\n    'SYMBOLS' => array(\n        0 => array('(', ')', '[', ']', '{', '}', '*', '&', '%', ';', '<', '>'),\n        1 => array('?', '!')\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        /* all fo keywords are case sensitive, don't have to but I like this type of coding */\n        1 => true, 2 => true, 3 => true, 4 => true,\n        5 => true, 6 => true, 7 => true, 8 => true, 9 => true,\n        10 => true, 11 => true, 12 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #006600; font-weight: bold;',\n            4 => 'color: #006600; font-weight: bold;',\n            5 => 'color: #003399; font-weight: bold;',\n            6 => 'color: #003399; font-weight: bold;',\n            7 => 'color: #003399; font-weight: bold;',\n            8 => 'color: #003399; font-weight: bold;',\n            9 => 'color: #003399; font-weight: bold;',\n            10 => 'color: #003399; font-weight: bold;',\n            11 => 'color: #003399; font-weight: bold;',\n            12 => 'color: #003399; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            //2 => 'color: #006699;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006633;',\n            2 => 'color: #006633;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;',\n            1 => 'color: #000000; font-weight: bold;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => '',\n        9 => '',\n        10 => '',\n        11 => '',\n        12 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/fortran.php",
    "content": "<?php\n/*************************************************************************************\n * fortran.php\n * -----------\n * Author: Cedric Arrabie (cedric.arrabie@univ-pau.fr)\n * Copyright: (C) 2006 Cetric Arrabie\n * Release Version: 1.0.9.1\n * Date Started: 2006/04/22\n *\n * Fortran language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n * 2006/04/20 (1.0.0)\n *   -  First Release\n *\n * TODO\n * -------------------------\n *  -  Get a list of inbuilt functions to add (and explore fortran more\n *     to complete this rather bare language file)\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME'=>'Fortran',\n    'COMMENT_SINGLE'=> array(1 =>'!',2=>'Cf2py'),\n    'COMMENT_MULTI'=> array(),\n    //Fortran Comments\n    'COMMENT_REGEXP' => array(1 => '/^C.*?$/mi'),\n    'CASE_KEYWORDS'=> GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS'=> array(\"'\",'\"'),\n    'ESCAPE_CHAR'=>'\\\\',\n    'KEYWORDS'=> array(\n        1 => array(\n            'allocate','block','call','case','contains','continue','cycle','deallocate',\n            'default','do','else','elseif','elsewhere','end','enddo','endif','endwhere',\n            'entry','exit','function','go','goto','if','interface','module','nullify','only',\n            'operator','procedure','program','recursive','return','select','stop',\n            'subroutine','then','to','where','while',\n            'access','action','advance','blank','blocksize','carriagecontrol',\n            'delim','direct','eor','err','exist','file','flen','fmt','form','formatted',\n            'iostat','name','named','nextrec','nml','number','opened','pad','position',\n            'readwrite','recl','sequential','status','unformatted','unit'\n            ),\n        2 => array(\n            '.AND.','.EQ.','.EQV.','.GE.','.GT.','.LE.','.LT.','.NE.','.NEQV.','.NOT.',\n            '.OR.','.TRUE.','.FALSE.'\n            ),\n        3 => array(\n            'allocatable','character','common','complex','data','dimension','double',\n            'equivalence','external','implicit','in','inout','integer','intent','intrinsic',\n            'kind','logical','namelist','none','optional','out','parameter','pointer',\n            'private','public','real','result','save','sequence','target','type','use'\n            ),\n        4 => array(\n            'abs','achar','acos','adjustl','adjustr','aimag','aint','all','allocated',\n            'anint','any','asin','atan','atan2','bit_size','break','btest','carg',\n            'ceiling','char','cmplx','conjg','cos','cosh','cpu_time','count','cshift',\n            'date_and_time','dble','digits','dim','dot_product','dprod dvchk',\n            'eoshift','epsilon','error','exp','exponent','floor','flush','fraction',\n            'getcl','huge','iachar','iand','ibclr','ibits','ibset','ichar','ieor','index',\n            'int','intrup','invalop','ior','iostat_msg','ishft','ishftc','lbound',\n            'len','len_trim','lge','lgt','lle','llt','log','log10','matmul','max','maxexponent',\n            'maxloc','maxval','merge','min','minexponent','minloc','minval','mod','modulo',\n            'mvbits','nbreak','ndperr','ndpexc','nearest','nint','not','offset','ovefl',\n            'pack','precfill','precision','present','product','prompt','radix',\n            'random_number','random_seed','range','repeat','reshape','rrspacing',\n            'scale','scan','segment','selected_int_kind','selected_real_kind',\n            'set_exponent','shape','sign','sin','sinh','size','spacing','spread','sqrt',\n            'sum system','system_clock','tan','tanh','timer','tiny','transfer','transpose',\n            'trim','ubound','undfl','unpack','val','verify'\n            ),\n        ),\n    'SYMBOLS'=> array(\n        '(',')','{','}','[',']','=','+','-','*','/','!','%','^','&',':'\n        ),\n    'CASE_SENSITIVE'=> array(\n        GESHI_COMMENTS => true,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        ),\n    'STYLES'=> array(\n        'KEYWORDS'=> array(\n            1 =>'color: #b1b100;',\n            2 =>'color: #000000; font-weight: bold;',\n            3 =>'color: #000066;',\n            4 =>'color: #993333;'\n            ),\n        'COMMENTS'=> array(\n            1 =>'color: #666666; font-style: italic;',\n            2 =>'color: #339933;',\n            'MULTI'=>'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR'=> array(\n            0 =>'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS'=> array(\n            0 =>'color: #009900;'\n            ),\n        'STRINGS'=> array(\n            0 =>'color: #ff0000;'\n            ),\n        'NUMBERS'=> array(\n            0 =>'color: #cc66cc;'\n            ),\n        'METHODS'=> array(\n            1 =>'color: #202020;',\n            2 =>'color: #202020;'\n            ),\n        'SYMBOLS'=> array(\n            0 =>'color: #339933;'\n            ),\n        'REGEXPS'=> array(\n            ),\n        'SCRIPT'=> array(\n            )\n        ),\n    'URLS'=> array(\n        1 =>'',\n        2 =>'',\n        3 =>'',\n        4 =>''\n        ),\n    'OOLANG'=> true,\n    'OBJECT_SPLITTERS'=> array(\n        1 =>'.',\n        2 =>'::'\n        ),\n    'REGEXPS'=> array(\n        ),\n    'STRICT_MODE_APPLIES'=> GESHI_NEVER,\n    'SCRIPT_DELIMITERS'=> array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK'=> array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/freebasic.php",
    "content": "<?php\n/*************************************************************************************\n * freebasic.php\n * -------------\n * Author: Roberto Rossi\n * Copyright: (c) 2005 Roberto Rossi (http://rsoftware.altervista.org)\n * Release Version: 1.0.9.1\n * Date Started: 2005/08/19\n *\n * FreeBasic (http://www.freebasic.net/) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2005/08/19 (1.0.0)\n *  -  First Release\n *\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'FreeBasic',\n    'COMMENT_SINGLE' => array(1 => \"'\", 2 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            \"append\", \"as\", \"asc\", \"asin\", \"asm\", \"atan2\", \"atn\", \"beep\", \"bin\", \"binary\", \"bit\",\n            \"bitreset\", \"bitset\", \"bload\", \"bsave\", \"byref\", \"byte\", \"byval\", \"call\",\n            \"callocate\", \"case\", \"cbyte\", \"cdbl\", \"cdecl\", \"chain\", \"chdir\", \"chr\", \"cint\",\n            \"circle\", \"clear\", \"clng\", \"clngint\", \"close\", \"cls\", \"color\", \"command\",\n            \"common\", \"cons\", \"const\", \"continue\", \"cos\", \"cshort\", \"csign\", \"csng\",\n            \"csrlin\", \"cubyte\", \"cuint\", \"culngint\", \"cunsg\", \"curdir\", \"cushort\", \"custom\",\n            \"cvd\", \"cvi\", \"cvl\", \"cvlongint\", \"cvs\", \"cvshort\", \"data\", \"date\",\n            \"deallocate\", \"declare\", \"defbyte\", \"defdbl\", \"defined\", \"defint\", \"deflng\",\n            \"deflngint\", \"defshort\", \"defsng\", \"defstr\", \"defubyte\", \"defuint\",\n            \"defulngint\", \"defushort\", \"dim\", \"dir\", \"do\", \"double\", \"draw\", \"dylibload\",\n            \"dylibsymbol\", \"else\", \"elseif\", \"end\", \"enum\", \"environ\", 'environ$', \"eof\",\n            \"eqv\", \"erase\", \"err\", \"error\", \"exec\", \"exepath\", \"exit\", \"exp\", \"export\",\n            \"extern\", \"field\", \"fix\", \"flip\", \"for\", \"fre\", \"freefile\", \"function\", \"get\",\n            \"getjoystick\", \"getkey\", \"getmouse\", \"gosub\", \"goto\", \"hex\", \"hibyte\", \"hiword\",\n            \"if\", \"iif\", \"imagecreate\", \"imagedestroy\", \"imp\", \"inkey\", \"inp\", \"input\",\n            \"instr\", \"int\", \"integer\", \"is\", \"kill\", \"lbound\", \"lcase\", \"left\", \"len\",\n            \"let\", \"lib\", \"line\", \"lobyte\", \"loc\", \"local\", \"locate\", \"lock\", \"lof\", \"log\",\n            \"long\", \"longint\", \"loop\", \"loword\", \"lset\", \"ltrim\", \"mid\", \"mkd\", \"mkdir\",\n            \"mki\", \"mkl\", \"mklongint\", \"mks\", \"mkshort\", \"mod\", \"multikey\", \"mutexcreate\",\n            \"mutexdestroy\", \"mutexlock\", \"mutexunlock\", \"name\", \"next\", \"not\", \"oct\", \"on\",\n            \"once\", \"open\", \"option\", \"or\", \"out\", \"output\", \"overload\", \"paint\", \"palette\",\n            \"pascal\", \"pcopy\", \"peek\", \"peeki\", \"peeks\", \"pipe\", \"pmap\", \"point\", \"pointer\",\n            \"poke\", \"pokei\", \"pokes\", \"pos\", \"preserve\", \"preset\", \"print\", \"private\",\n            \"procptr\", \"pset\", \"ptr\", \"public\", \"put\", \"random\", \"randomize\", \"read\",\n            \"reallocate\", \"redim\", \"rem\", \"reset\", \"restore\", \"resume\",\n            \"return\", \"rgb\", \"rgba\", \"right\", \"rmdir\", \"rnd\", \"rset\", \"rtrim\", \"run\",\n            \"sadd\", \"screen\", \"screencopy\", \"screeninfo\", \"screenlock\", \"screenptr\",\n            \"screenres\", \"screenset\", \"screensync\", \"screenunlock\", \"seek\", \"statement\",\n            \"selectcase\", \"setdate\", \"setenviron\", \"setmouse\",\n            \"settime\", \"sgn\", \"shared\", \"shell\", \"shl\", \"short\", \"shr\", \"sin\", \"single\",\n            \"sizeof\", \"sleep\", \"space\", \"spc\", \"sqr\", \"static\", \"stdcall\", \"step\", \"stop\",\n            \"str\", \"string\", \"strptr\", \"sub\", \"swap\", \"system\", \"tab\", \"tan\",\n            \"then\", \"threadcreate\", \"threadwait\", \"time\", \"timer\", \"to\", \"trans\",\n            \"trim\", \"type\", \"ubound\", \"ubyte\", \"ucase\", \"uinteger\", \"ulongint\", \"union\",\n            \"unlock\", \"unsigned\", \"until\", \"ushort\", \"using\", \"va_arg\", \"va_first\",\n            \"va_next\", \"val\", \"val64\", \"valint\", \"varptr\", \"view\", \"viewprint\", \"wait\",\n            \"wend\", \"while\", \"width\", \"window\", \"windowtitle\", \"with\", \"write\", \"xor\",\n            \"zstring\", \"explicit\", \"escape\", \"true\", \"false\"\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080;',\n            2 => 'color: #339933;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/freeswitch.php",
    "content": "<?php\n/*************************************************************************************\n * freeswitch.php\n * --------\n * Author: James Rose (james.gs@stubbornroses.com)\n * Copyright: (c) 2006 Christian Lescuyer http://xtian.goelette.info\n * Release Version: 1.0.9.1\n * Date Started: 2011/11/18\n *\n * FreeSWITCH language file for GeSHi.\n *\n * This file is based on robots.php\n *\n * 2011/11/18 (1.0.0)\n *   -  First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'FreeSWITCH',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(1 => \"/^Comment:.*?$/m\"),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n//        1 => array(\n//            'Disallow', 'Request-rate', 'Robot-version',\n//            'Sitemap', 'User-agent', 'Visit-time'\n//            )\n        ),\n    'SYMBOLS' => array(\n//        ':'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false\n        ),\n\n//order is important. regexes will overwrite most things....\n    'STYLES' => array(\n        'KEYWORDS' => array(\n//            1 => 'color: #FF0000; font-weight: bold;',//red\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n//            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n//            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n//            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n//            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: firebrick; font-weight: bold;',\n            1 => 'color: cornflowerblue; font-weight: bold;',\n            2 => 'color: goldenrod; font-weight: bold;',\n            3 => 'color: green; font-weight: bold;',\n            4 => 'color: dimgrey; font-style: italic;',\n            5 => 'color: green; font-weight: bold;',\n            6 => 'color: firebrick; font-weight: bold;',\n            7 => 'color: indigo; font-weight: italic;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n//        1 => 'http://www.robotstxt.org/wc/norobots.html'\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        0 => array(\n            GESHI_SEARCH => '(^.*ERROR.*)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'im',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        1 => array(\n            GESHI_SEARCH => '(^.*NOTICE.*)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'im',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        2 => array(\n            GESHI_SEARCH => '(^.*DEBUG.*)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        3 => array(\n            GESHI_SEARCH => '(^.*INFO.*|.*info\\(.*|^Channel.*|^Caller.*|^variable.*)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        4 => array(\n            GESHI_SEARCH => '(^Dialplan.*)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'im',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        5 => array(\n            GESHI_SEARCH => '(Regex\\ \\(PASS\\))',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        6 => array(\n            GESHI_SEARCH => '(Regex\\ \\(FAIL\\))',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        7 => array(\n            GESHI_SEARCH => '(\\d{7,15})',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            )\n        ),\n\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/fsharp.php",
    "content": "<?php\n/*************************************************************************************\n * fsharp.php\n * ----------\n * Author: julien ortin (jo_spam-divers@yahoo.fr)\n * Copyright: (c) 2009 julien ortin\n * Release Version: 1.0.9.1\n * Date Started: 2009/09/20\n *\n * F# language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009/09/22 (1.0.1)\n *  -  added rules for single char handling (generics ['a] vs char ['x'])\n *  -  added symbols and keywords\n * 2009/09/20 (1.0.0)\n *  -  Initial release\n *\n * TODO\n * -------------------------\n *\n *************************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'F#',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(3 => '/\\(\\*(?!\\)).*?\\*\\)/s'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'HARDQUOTE' => array('@\"', '\"'),\n    'HARDESCAPE' => array('\"'),\n    'HARDCHAR' => '\"',\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        /* main F# keywords */\n        /* section 3.4 */\n        1 => array(\n            'abstract', 'and', 'as', 'assert', 'base', 'begin', 'class', 'default', 'delegate', 'do', 'done',\n            'downcast', 'downto', 'elif', 'else', 'end', 'exception', 'extern', 'false', 'finally', 'for',\n            'fun', 'function', 'if', 'in', 'inherit', 'inline', 'interface', 'internal', 'lazy', 'let',\n            'match', 'member', 'module', 'mutable', 'namespace', 'new', 'not', 'null', 'of', 'open', 'or',\n            'override', 'private', 'public', 'rec', 'return', 'sig', 'static', 'struct', 'then', 'to',\n            'true', 'try', 'type', 'upcast', 'use', 'val', 'void', 'when', 'while', 'with', 'yield',\n            'asr', 'land', 'lor', 'lsl', 'lsr', 'lxor', 'mod',\n            /* identifiers are reserved for future use by F# */\n            'atomic', 'break', 'checked', 'component', 'const', 'constraint', 'constructor',\n            'continue', 'eager', 'fixed', 'fori', 'functor', 'global', 'include', 'method', 'mixin',\n            'object', 'parallel', 'params', 'process', 'protected', 'pure', 'sealed', 'tailcall',\n            'trait', 'virtual', 'volatile',\n            /* take monads into account */\n            'let!', 'yield!'\n            ),\n        /* define names of main libraries in F# Core, so we can link to it\n         * http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/namespaces.html\n         */\n        2 => array(\n            'Array', 'Array2D', 'Array3D', 'Array4D', 'ComparisonIdentity', 'HashIdentity', 'List',\n            'Map', 'Seq', 'SequenceExpressionHelpers', 'Set', 'CommonExtensions', 'Event',\n            'ExtraTopLevelOperators', 'LanguagePrimitives', 'NumericLiterals', 'Operators',\n            'OptimizedClosures', 'Option', 'String', 'NativePtr', 'Printf'\n            ),\n        /* 17.2 & 17.3 */\n        3 => array(\n            'abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'exp',\n            'floor', 'log', 'log10', 'pown', 'round', 'sign', 'sin', 'sinh', 'sqrt',\n            'tan', 'tanh',\n            'ignore',\n            'fst', 'snd',\n            'stdin', 'stdout', 'stderr',\n            'KeyValue',\n            'max', 'min'\n            ),\n        /* Pervasives Types & Overloaded Conversion Functions */\n        4 => array(\n            'bool', 'byref', 'byte', 'char', 'decimal', 'double', 'exn', 'float', 'float32',\n            'FuncConvert', 'ilsigptr', 'int', 'int16', 'int32', 'int64', 'int8',\n            'nativeint', 'nativeptr', 'obj', 'option', 'ref', 'sbyte', 'single', 'string', 'uint16',\n            'uint32', 'uint64', 'uint8', 'unativeint', 'unit',\n            'enum',\n            'async', 'seq', 'dict'\n            ),\n        /* 17.2 Exceptions */\n        5 => array (\n            'failwith', 'invalidArg', 'raise', 'rethrow'\n            ),\n        /* 3.3 Conditional compilation & 13.3 Compiler Directives + light / light off */\n        6 => array(\n            '(*IF-FSHARP', 'ENDIF-FSHARP*)', '(*F#', 'F#*)', '(*IF-OCAML', 'ENDIF-OCAML*)',\n            '#light',\n            '#if', '#else', '#endif', '#indent', '#nowarn', '#r', '#reference',\n            '#I', '#Include', '#load', '#time', '#help', '#q', '#quit',\n            ),\n        /* 3.11 Pre-processor Declarations / Identifier Replacements */\n        7 => array(\n            '__SOURCE_DIRECTORY__', '__SOURCE_FILE__', '__LINE__'\n            ),\n        /* 17.2 Object Transformation Operators */\n        8 => array(\n            'box', 'hash', 'sizeof', 'typeof', 'typedefof', 'unbox'\n            )\n        ),\n    /* 17.2 basic operators + the yield and yield! arrows */\n    'SYMBOLS' => array(\n        1 => array('+', '-', '/', '*', '**', '%', '~-'),\n        2 => array('<', '<=', '>', '<=', '=', '<>'),\n        3 => array('<<<', '>>>', '^^^', '&&&', '|||', '~~~'),\n        4 => array('|>', '>>', '<|', '<<'),\n        5 => array('!', '->', '->>'),\n        6 => array('[',']','(',')','{','}', '[|', '|]', '(|', '|)'),\n        7 => array(':=', ';', ';;')\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true, /* keywords */\n        2 => true, /* modules */\n        3 => true, /* pervasives functions */\n        4 => true, /* types and overloaded conversion operators */\n        5 => true, /* exceptions */\n        6 => true, /* conditional compilation & compiler Directives */\n        7 => true, /* pre-processor declarations / identifier replacements */\n        8 => true  /* object transformation operators */\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #06c; font-weight: bold;', /* nice blue */\n            2 => 'color: #06c; font-weight: bold;', /* nice blue */\n            3 => 'color: #06c; font-weight: bold;', /* nice blue */\n            4 => 'color: #06c; font-weight: bold;', /* nice blue */\n            5 => 'color: #06c; font-weight: bold;', /* nice blue */\n            6 => 'color: #06c; font-weight: bold;', /* nice blue */\n            7 => 'color: #06c; font-weight: bold;', /* nice blue */\n            8 => 'color: #06c; font-weight: bold;' /* nice blue */\n            ),\n        'COMMENTS' => array(\n            'MULTI' => 'color: #5d478b; font-style: italic;', /* light purple */\n            1 => 'color: #5d478b; font-style: italic;',\n            2 => 'color: #5d478b; font-style: italic;', /* light purple */\n            3 => 'color: #5d478b; font-style: italic;' /* light purple */\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #6c6;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #3cb371;' /* nice green */\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #c6c;' /* pink */\n            ),\n        'METHODS' => array(\n            1 => 'color: #060;' /* dark green */\n            ),\n        'REGEXPS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #a52a2a;' /* maroon */\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        /* some of keywords are Pervasives functions (land, lxor, asr, ...) */\n        1 => '',\n        2 => 'http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/namespaces.html',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\|\\#>|^])\",\n            'DISALLOWED_AFTER' => \"(?![a-zA-Z0-9_<\\|%\\\\-])\"\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/gambas.php",
    "content": "<?php\n/*************************************************************************************\n * gambas.php\n * ---------\n * Author: Jesus Guardon (jguardon@telefonica.net)\n * Copyright: (c) 2009 Jesus Guardon (http://gambas-es.org),\n *                     Benny Baumann (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/08/20\n *\n * GAMBAS language file for GeSHi.\n * GAMBAS Official Site: http://gambas.sourceforge.net\n *\n * CHANGES\n * -------\n * 2009/09/26 (1.0.1)\n *  -  Splitted dollar-ended keywords in another group to match with or without '$'\n *  -  Modified URL for object/components keywords search through Google \"I'm feeling lucky\"\n * 2009/09/23 (1.0.0)\n *  -  Initial release\n *\n * TODO (updated 2009/09/26)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'GAMBAS',\n    'COMMENT_SINGLE' => array(1 => \"'\"),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX |\n        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        //keywords\n        1 => array(\n            'APPEND', 'AS', 'BREAK', 'BYREF', 'CASE', 'CATCH', 'CLASS', 'CLOSE', 'CONST', 'CONTINUE', 'COPY',\n            'CREATE', 'DEBUG', 'DEC', 'DEFAULT', 'DIM', 'DO', 'EACH', 'ELSE', 'END', 'ENDIF', 'ERROR', 'EVENT', 'EXEC',\n            'EXPORT', 'EXTERN', 'FALSE', 'FINALLY', 'FLUSH', 'FOR', 'FUNCTION', 'GOTO', 'IF', 'IN', 'INC', 'INHERITS',\n            'INPUT', 'FROM', 'IS', 'KILL', 'LAST', 'LIBRARY', 'LIKE', 'LINE INPUT', 'LINK', 'LOCK', 'LOOP', 'ME',\n            'MKDIR', 'MOVE', 'NEW', 'NEXT', 'NULL', 'OPEN', 'OPTIONAL', 'OUTPUT', 'PIPE', 'PRINT', 'PRIVATE',\n            'PROCEDURE', 'PROPERTY', 'PUBLIC', 'QUIT', 'RAISE', 'RANDOMIZE', 'READ', 'REPEAT', 'RETURN', 'RMDIR',\n            'SEEK', 'SELECT', 'SHELL', 'SLEEP', 'STATIC', 'STEP', 'STOP', 'SUB', 'SUPER', 'SWAP', 'THEN', 'TO',\n            'TRUE', 'TRY', 'UNLOCK', 'UNTIL', 'WAIT', 'WATCH', 'WEND', 'WHILE', 'WITH', 'WRITE'\n            ),\n        //functions\n        2 => array(\n            'Abs', 'Access', 'Acos', 'Acosh', 'Alloc', 'Ang', 'Asc', 'ASin', 'ASinh', 'Asl', 'Asr', 'Assign', 'Atan',\n            'ATan2', 'ATanh',\n            'BChg', 'BClr', 'Bin', 'BSet', 'BTst',\n            'CBool', 'Cbr', 'CByte', 'CDate', 'CFloat', 'Choose', 'Chr', 'CInt', 'CLong', 'Comp', 'Conv', 'Cos',\n            'Cosh', 'CShort', 'CSng', 'CStr',\n            'DateAdd', 'DateDiff', 'Day', 'DConv', 'Deg', 'DFree', 'Dir',\n            'Eof', 'Eval', 'Exist', 'Exp', 'Exp10', 'Exp2', 'Expm',\n            'Fix', 'Format', 'Frac', 'Free',\n            'Hex', 'Hour', 'Hyp',\n            'Iif', 'InStr', 'Int', 'IsAscii', 'IsBlank', 'IsBoolean', 'IsByte', 'IsDate', 'IsDigit', 'IsDir',\n            'IsFloat', 'IsHexa', 'IsInteger', 'IsLCase', 'IsLetter', 'IsLong', 'IsNull', 'IsNumber', 'IsObject',\n            'IsPunct', 'IsShort', 'IsSingle', 'IsSpace', 'IsString', 'IsUCase', 'IsVariant',\n            'LCase', 'Left', 'Len', 'Lof', 'Log', 'Log10', 'Log2', 'Logp', 'Lsl', 'Lsr', 'LTrim',\n            'Mag', 'Max', 'Mid', 'Min', 'Minute', 'Month', 'Now', 'Quote',\n            'Rad', 'RDir', 'Realloc', 'Replace', 'Right', 'RInStr', 'Rnd', 'Rol', 'Ror', 'Round', 'RTrim',\n            'Scan', 'SConv', 'Second', 'Seek', 'Sgn', 'Shl', 'Shr', 'Sin', 'Sinh', 'Space', 'Split', 'Sqr',\n            'Stat', 'Str', 'StrPtr', 'Subst',\n            'Tan', 'Tanh', 'Temp$', 'Time', 'Timer', 'Tr', 'Trim', 'TypeOf',\n            'UCase', 'Unquote', 'Val', 'VarPtr', 'Week', 'WeekDay', 'Year'\n            ),\n        //string functions\n        3 => array(\n            'Bin$', 'Chr$', 'Conv$', 'DConv$', 'Format$', 'Hex$', 'LCase$', 'Left$', 'LTrim$', 'Mid$', 'Quote$',\n            'Replace$', 'Right$', 'SConv$', 'Space$', 'Str$', 'String$', 'Subst$', 'Tr$', 'Trim$', 'UCase$',\n            'Unquote$'\n            ),\n        //datatypes\n        4 => array(\n            'Boolean', 'Byte', 'Short', 'Integer', 'Long', 'Single', 'Float', 'Date', 'String', 'Variant', 'Object',\n            'Pointer', 'File'\n            ),\n        //operators\n        5 => array(\n            'AND', 'DIV', 'MOD', 'NOT', 'OR', 'XOR'\n            ),\n        //objects/classes\n        6 => array(\n            'Application', 'Array', 'Byte[]', 'Collection', 'Component', 'Enum', 'Observer', 'Param', 'Process',\n            'Stream', 'System', 'User', 'Chart', 'Compress', 'Crypt', 'Blob', 'Connection', 'DB', 'Database',\n            'DatabaseUser', 'Field', 'Index', 'Result', 'ResultField', 'Table', 'DataBrowser', 'DataCombo',\n            'DataControl', 'DataSource', 'DataView', 'Desktop', 'DesktopFile', 'Balloon', 'ColorButton',\n            'ColorChooser', 'DateChooser', 'DirChooser', 'DirView', 'Expander', 'FileChooser', 'FileView',\n            'FontChooser', 'InputBox', 'ListContainer', 'SidePanel', 'Stock', 'TableView', 'ToolPanel', 'ValueBox',\n            'Wizard', 'Dialog', 'ToolBar', 'WorkSpace', 'DnsClient', 'SerialPort', 'ServerSocket', 'Socket',\n            'UdpSocket', 'FtpClient', 'HttpClient', 'SmtpClient', 'Regexp', 'Action', 'Button', 'CheckBox',\n            'ColumnView', 'ComboBox', 'Draw', 'Container', 'Control', 'Cursor', 'DrawingArea', 'Embedder',\n            'Font', 'Form', 'Frame', 'GridView', 'HBox', 'HPanel', 'HSplit', 'IconView', 'Image', 'Key', 'Label',\n            'Line', 'ListBox', 'ListView', 'Menu', 'Message', 'Mouse', 'MovieBox', 'Panel', 'Picture', 'PictureBox',\n            'ProgressBar', 'RadioButton', 'ScrollBar', 'ScrollView', 'Separator', 'Slider', 'SpinBox', 'TabStrip',\n            'TextArea', 'TextBox', 'TextLabel', 'ToggleButton', 'TrayIcon', 'TreeView', 'VBox', 'VPanel', 'VSplit',\n            'Watcher', 'Window', 'Dial', 'Editor', 'LCDNumber', 'Printer', 'TextEdit', 'WebBrowser', 'GLarea',\n            'Report', 'ReportCloner', 'ReportContainer', 'ReportControl', 'ReportDrawing', 'ReportField', 'ReportHBox',\n            'ReportImage', 'ReportLabel', 'ReportSection', 'ReportSpecialField', 'ReportTextLabel', 'ReportVBox',\n            'CDRom', 'Channel', 'Music', 'Sound', 'Settings', 'VideoDevice', 'Vb', 'CGI', 'HTML', 'Request', 'Response',\n            'Session', 'XmlDocument', 'XmlNode', 'XmlReader', 'XmlReaderNodeType', 'XmlWriter', 'RpcArray', 'RpcClient',\n            'RpcFunction', 'RpcServer', 'RpcStruct', 'RpcType', 'XmlRpc', 'Xslt'\n            ),\n        //constants\n        7 => array(\n            'Pi'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '&', '&=', '&/', '*', '*=', '+', '+=', '-', '-=', '//', '/', '/=', '=', '==', '\\\\', '\\\\=',\n        '^', '^=', '[', ']', '{', '}', '<', '>', '<>', '<=', '>='\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0600FF; font-weight: bold;',          // Keywords\n            2 => 'color: #8B1433;',                             // Functions\n            3 => 'color: #8B1433;',                             // String Functions\n            4 => 'color: #0600FF;',                             // Data Types\n            5 => 'color: #1E90FF;',                             // Operators\n            6 => 'color: #0600FF;',                             // Objects/Components\n            7 => 'color: #0600FF;'                              // Constants\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #1A5B1A; font-style: italic;',\n            'MULTI' => 'color: #1A5B1A; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #008080;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #612188;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #7E4B05;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #FF0000;',\n            GESHI_NUMBER_INT_BASIC => 'color: #FF0000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #0000FF;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #6132B2;'\n            ),\n        'REGEXPS' => array(\n            //3 => 'color: #8B1433;'  //fakes '$' colour matched by REGEXP\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => 'http://gambasdoc.org/help/lang/{FNAMEL}',\n        2 => 'http://gambasdoc.org/help/lang/{FNAMEL}',\n        3 => 'http://www.google.com/search?hl=en&amp;q={FNAMEL}+site:http://gambasdoc.org/help/lang/&amp;btnI=I%27m%20Feeling%20Lucky',\n        4 => 'http://gambasdoc.org/help/lang/type/{FNAMEL}',\n        5 => 'http://gambasdoc.org/help/lang/{FNAMEL}',\n        6 => 'http://www.google.com/search?hl=en&amp;q={FNAMEL}+site:http://gambasdoc.org/&amp;btnI=I%27m%20Feeling%20Lucky',\n        7 => 'http://gambasdoc.org/help/lang/{FNAMEL}'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 =>'.'\n        ),\n    'REGEXPS' => array(\n        //3 => \"\\\\$(?!\\\\w)\"   //matches '$' at the end of Keyword\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            2 => array(\n                'DISALLOWED_AFTER' => \"(?![a-zA-Z0-9_\\|%\\\\-&;\\$])\"\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/gdb.php",
    "content": "<?php\n/*************************************************************************************\n * gdb.php\n * --------\n * Author: Milian Wolff (mail@milianw.de)\n * Copyright: (c) 2009 Milian Wolff\n * Release Version: 1.0.9.1\n * Date Started: 2009/06/24\n *\n * GDB language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009/06/24 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2009/06/24)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'GDB',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        0 => array(\n            'Application',\n            'signal',\n            ),\n        1 => array(\n            'Segmentation fault',\n            '[KCrash Handler]',\n            ),\n        ),\n    'NUMBERS' => false,\n    'SYMBOLS' => array(\n        ),\n    'CASE_SENSITIVE' => array(\n        0 => true,\n        1 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            0 => 'font-weight:bold;',\n            1 => 'font-weight:bold; color: #ff0000;'\n            ),\n        'COMMENTS' => array(\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'BRACKETS' => array(\n            0 => 'font-weight:bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #933;'\n            ),\n        'NUMBERS' => array(\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #000066; font-weight:bold;',\n            1 => 'color: #006600;',\n            2 => 'color: #B07E00;',\n            3 => 'color: #0057AE; text-style:italic;',\n            4 => 'color: #0057AE; text-style:italic;',\n            5 => 'color: #442886;',\n            6 => 'color: #442886; font-weight:bold;',\n            7 => 'color: #FF0000; font-weight:bold;',\n            8 => 'color: #006E26;',\n            9 => 'color: #555;',\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        0 => '',\n        1 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        //[Current Thread...], [KCrash Handler] etc.\n        0 => array(\n            GESHI_SEARCH => '^\\[.+\\]',\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        //stack number\n        1 => array(\n            GESHI_SEARCH => '^#\\d+',\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        //Thread X (Thread...)\n        2 => array(\n            GESHI_SEARCH => '^Thread \\d.+$',\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        //Files with linenumbers\n        3 => array(\n            GESHI_SEARCH => '(at\\s+)(.+)(:\\d+\\s*)$',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3'\n            ),\n        //Libs without linenumbers\n        4 => array(\n            GESHI_SEARCH => '(from\\s+)(.+)(\\s*)$',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3'\n            ),\n        //Line numbers\n        5 => array(\n            GESHI_SEARCH => '(:)(\\d+)(\\s*)$',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3'\n            ),\n        //Location\n        6 => array(\n            GESHI_SEARCH => '(\\s+)(in\\s+)?([^ 0-9][^ ]*)([ \\n]+\\()',\n            GESHI_REPLACE => '\\\\3',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1\\\\2',\n            GESHI_AFTER => '\\\\4'\n            ),\n        // interesting parts: abort, qFatal, assertions, null ptrs, ...\n        7 => array(\n            GESHI_SEARCH => '\\b((?:\\*__GI_)?(?:__assert_fail|abort)|qFatal|0x0)\\b([^\\.]|$)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '\\\\2'\n            ),\n        // Namespace / Classes\n        8 => array(\n            GESHI_SEARCH => '\\b(\\w+)(::)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'U',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '\\\\2'\n            ),\n        // make ptr adresses and <value optimized out> uninteresting\n        9 => '\\b(?:0x[a-f0-9]{2,}|value\\s+optimized\\s+out)\\b'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'NUMBERS' => false\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/genero.php",
    "content": "<?php\n/*************************************************************************************\n * genero.php\n * ----------\n * Author: Lars Gersmann (lars.gersmann@gmail.com)\n * Copyright: (c) 2007 Lars Gersmann, Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2007/07/01\n *\n * Genero (FOURJ's Genero 4GL) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2007/07/01 (1.0.0)\n *  -  Initial release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'genero',\n    'COMMENT_SINGLE' => array(1 => '--', 2 => '#'),\n    'COMMENT_MULTI' => array('{' => '}'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            \"ABSOLUTE\",\n            \"ACCEPT\",\n            \"ACTION\",\n            \"ADD\",\n            \"AFTER\",\n            \"ALL\",\n            \"ALTER\",\n            \"AND\",\n            \"ANY\",\n            \"APPEND\",\n            \"APPLICATION\",\n            \"AS\",\n            \"AT\",\n            \"ATTRIBUTE\",\n            \"ATTRIBUTES\",\n            \"AUDIT\",\n            \"AVG\",\n            \"BEFORE\",\n            \"BEGIN\",\n            \"BETWEEN\",\n            \"BORDER\",\n            \"BOTTOM\",\n            \"BREAKPOINT\",\n            \"BUFFER\",\n            \"BUFFERED\",\n            \"BY\",\n            \"CALL\",\n            \"CANCEL\",\n            \"CASE\",\n            \"CENTURY\",\n            \"CHANGE\",\n            \"CHECK\",\n            \"CLEAR\",\n            \"CLIPPED\",\n            \"CLOSE\",\n            \"CLUSTER\",\n            \"COLUMN\",\n            \"COLUMNS\",\n            \"COMMAND\",\n            \"COMMENT\",\n            \"COMMIT\",\n            \"COMMITTED\",\n            \"CONCURRENT \",\n            \"CONNECT\",\n            \"CONNECTION\",\n            \"CONSTANT\",\n            \"CONSTRAINED\",\n            \"CONSTRAINT\",\n            \"CONSTRUCT\",\n            \"CONTINUE\",\n            \"CONTROL\",\n            \"COUNT\",\n            \"CREATE\",\n            \"CROSS\",\n            \"CURRENT\",\n            \"DATABASE\",\n            \"DBA\",\n            \"DEC\",\n            \"DECLARE\",\n            \"DEFAULT\",\n            \"DEFAULTS\",\n            \"DEFER\",\n            \"DEFINE\",\n            \"DELETE\",\n            \"DELIMITER\",\n            \"DESCRIBE\",\n            \"DESTINATION\",\n            \"DIM\",\n            \"DIALOG\",\n            \"DIMENSION\",\n            \"DIRTY\",\n            \"DISCONNECT\",\n            \"DISPLAY\",\n            \"DISTINCT\",\n            \"DORMANT\",\n            \"DOWN\",\n            \"DROP\",\n            \"DYNAMIC\",\n            \"ELSE\",\n            \"END\",\n            \"ERROR\",\n            \"ESCAPE\",\n            \"EVERY\",\n            \"EXCLUSIVE\",\n            \"EXECUTE\",\n            \"EXISTS\",\n            \"EXIT\",\n            \"EXPLAIN\",\n            \"EXTEND\",\n            \"EXTENT\",\n            \"EXTERNAL\",\n            \"FETCH\",\n            \"FGL_DRAWBOX\",\n            \"FIELD\",\n            \"FIELD_TOUCHED\",\n            \"FILE\",\n            \"FILL\",\n            \"FINISH\",\n            \"FIRST\",\n            \"FLOAT\",\n            \"FLUSH\",\n            \"FOR\",\n            \"FOREACH\",\n            \"FORM\",\n            \"FORMAT\",\n            \"FOUND\",\n            \"FRACTION\",\n            \"FREE\",\n            \"FROM\",\n            \"FULL\",\n            \"FUNCTION\",\n            \"GET_FLDBUF\",\n            \"GLOBALS\",\n            \"GO\",\n            \"GOTO\",\n            \"GRANT\",\n            \"GROUP\",\n            \"HAVING\",\n            \"HEADER\",\n            \"HELP\",\n            \"HIDE\",\n            \"HOLD\",\n            \"HOUR\",\n            \"IDLE\",\n            \"IF\",\n            \"IMAGE\",\n            \"IMMEDIATE\",\n            \"IN\",\n            \"INDEX\",\n            \"INFIELD\",\n            \"INITIALIZE\",\n            \"INNER\",\n            \"INPUT\",\n            \"INSERT\",\n            \"INTERRUPT\",\n            \"INTERVAL\",\n            \"INTO\",\n            \"INVISIBLE\",\n            \"IS\",\n            \"ISOLATION\",\n            \"JOIN\",\n            \"KEEP\",\n            \"KEY\",\n            \"LABEL\",\n            \"LAST\",\n            \"LEFT\",\n            \"LENGTH\",\n            \"LET\",\n            \"LIKE\",\n            \"LINE\",\n            \"LINENO\",\n            \"LINES\",\n            \"LOAD\",\n            \"LOCATE\",\n            \"LOCK\",\n            \"LOG\",\n            \"LSTR\",\n            \"MAIN\",\n            \"MARGIN\",\n            \"MATCHES\",\n            \"MAX\",\n            \"MAXCOUNT\",\n            \"MDY\",\n            \"MEMORY\",\n            \"MENU\",\n            \"MESSAGE\",\n            \"MIN\",\n            \"MINUTE\",\n            \"MOD\",\n            \"MODE\",\n            \"MODIFY\",\n            \"MONEY\",\n            \"NAME\",\n            \"NEED\",\n            \"NEXT\",\n            \"NO\",\n            \"NORMAL\",\n            \"NOT\",\n            \"NOTFOUND\",\n            \"NULL\",\n            \"NUMERIC\",\n            \"OF\",\n            \"ON\",\n            \"OPEN\",\n            \"OPTION\",\n            \"OPTIONS\",\n            \"OR\",\n            \"ORDER\",\n            \"OTHERWISE\",\n            \"OUTER\",\n            \"OUTPUT\",\n            \"PAGE\",\n            \"PAGENO\",\n            \"PAUSE\",\n            \"PERCENT\",\n            \"PICTURE\",\n            \"PIPE\",\n            \"PRECISION\",\n            \"PREPARE\",\n            \"PREVIOUS\",\n            \"PRINT\",\n            \"PRINTER\",\n            \"PRINTX\",\n            \"PRIOR\",\n            \"PRIVILEGES\",\n            \"PROCEDURE\",\n            \"PROGRAM\",\n            \"PROMPT\",\n            \"PUBLIC\",\n            \"PUT\",\n            \"QUIT\",\n            \"READ\",\n            \"REAL\",\n            \"RECORD\",\n            \"RECOVER\",\n            \"RED \",\n            \"RELATIVE\",\n            \"RENAME\",\n            \"REOPTIMIZATION\",\n            \"REPEATABLE\",\n            \"REPORT\",\n            \"RESOURCE\",\n            \"RETURN\",\n            \"RETURNING\",\n            \"REVERSE\",\n            \"REVOKE\",\n            \"RIGHT\",\n            \"ROLLBACK\",\n            \"ROLLFORWARD\",\n            \"ROW\",\n            \"ROWS\",\n            \"RUN\",\n            \"SCHEMA\",\n            \"SCREEN\",\n            \"SCROLL\",\n            \"SECOND\",\n            \"SELECT\",\n            \"SERIAL\",\n            \"SET\",\n            \"SFMT\",\n            \"SHARE\",\n            \"SHIFT\",\n            \"SHOW\",\n            \"SIGNAL \",\n            \"SIZE\",\n            \"SKIP\",\n            \"SLEEP\",\n            \"SOME\",\n            \"SPACE\",\n            \"SPACES\",\n            \"SQL\",\n            \"SQLERRMESSAGE\",\n            \"SQLERROR\",\n            \"SQLSTATE\",\n            \"STABILITY\",\n            \"START\",\n            \"STATISTICS\",\n            \"STEP\",\n            \"STOP\",\n            \"STYLE\",\n            \"SUM\",\n            \"SYNONYM\",\n            \"TABLE\",\n            \"TEMP\",\n            \"TERMINATE\",\n            \"TEXT\",\n            \"THEN\",\n            \"THROUGH\",\n            \"THRU\",\n            \"TO\",\n            \"TODAY\",\n            \"TOP\",\n            \"TRAILER\",\n            \"TRANSACTION \",\n            \"UNBUFFERED\",\n            \"UNCONSTRAINED\",\n            \"UNDERLINE\",\n            \"UNION\",\n            \"UNIQUE\",\n            \"UNITS\",\n            \"UNLOAD\",\n            \"UNLOCK\",\n            \"UP\",\n            \"UPDATE\",\n            \"USE\",\n            \"USER\",\n            \"USING\",\n            \"VALIDATE\",\n            \"VALUE\",\n            \"VALUES\",\n            \"VARCHAR\",\n            \"VIEW\",\n            \"WAIT\",\n            \"WAITING\",\n            \"WARNING\",\n            \"WHEN\",\n            \"WHENEVER\",\n            \"WHERE\",\n            \"WHILE\",\n            \"WINDOW\",\n            \"WITH\",\n            \"WITHOUT\",\n            \"WORDWRAP\",\n            \"WORK\",\n            \"WRAP\"\n            ),\n        2 => array(\n            '&amp;IFDEF', '&amp;ENDIF'\n            ),\n        3 => array(\n            \"ARRAY\",\n            \"BYTE\",\n            \"CHAR\",\n            \"CHARACTER\",\n            \"CURSOR\",\n            \"DATE\",\n            \"DATETIME\",\n            \"DECIMAL\",\n            \"DOUBLE\",\n            \"FALSE\",\n            \"INT\",\n            \"INTEGER\",\n            \"SMALLFLOAT\",\n            \"SMALLINT\",\n            \"STRING\",\n            \"TIME\",\n            \"TRUE\"\n            ),\n        4 => array(\n            \"BLACK\",\n            \"BLINK\",\n            \"BLUE\",\n            \"BOLD\",\n            \"ANSI\",\n            \"ASC\",\n            \"ASCENDING\",\n            \"ASCII\",\n            \"CYAN\",\n            \"DESC\",\n            \"DESCENDING\",\n            \"GREEN\",\n            \"MAGENTA\",\n            \"OFF\",\n            \"WHITE\",\n            \"YELLOW\",\n            \"YEAR\",\n            \"DAY\",\n            \"MONTH\",\n            \"WEEKDAY\"\n            ),\n        ),\n    'SYMBOLS' => array(\n        '+', '-', '*', '?', '=', '/', '%', '>', '<', '^', '!', '|', ':',\n        '(', ')', '[', ']'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0600FF;',\n            2 => 'color: #0000FF; font-weight: bold;',\n            3 => 'color: #008000;',\n            4 => 'color: #FF0000;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008080; font-style: italic;',\n            2 => 'color: #008080;',\n            'MULTI' => 'color: #008080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #008080; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #808080;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #FF0000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #0000FF;',\n            2 => 'color: #0000FF;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #008000;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/genie.php",
    "content": "<?php\n/*************************************************************************************\n * genie.php\n * ----------\n * Author: Nicolas Joseph (nicolas.joseph@valaide.org)\n * Copyright: (c) 2009 Nicolas Joseph\n * Release Version: 1.0.9.1\n * Date Started: 2009/04/29\n *\n * Genie language file for GeSHi.\n *\n * CHANGES\n * -------\n *\n * TODO\n * ----\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Genie',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Using and Namespace directives (basic support)\n        //Please note that the alias syntax for using is not supported\n        3 => '/(?:(?<=using[\\\\n\\\\s])|(?<=namespace[\\\\n\\\\s]))[\\\\n\\\\s]*([a-zA-Z0-9_]+\\\\.)*[a-zA-Z0-9_]+[\\n\\s]*(?=[;=])/i'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'HARDQUOTE' => array('@\"', '\"'),\n    'HARDESCAPE' => array('\"\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'and', 'as', 'abstract', 'break', 'case', 'cast', 'catch', 'const',\n            'construct', 'continue', 'default', 'def', 'delete', 'div',\n            'dynamic', 'do', 'downto', 'else', 'ensures', 'except', 'extern',\n            'false', 'final', 'finally', 'for', 'foreach', 'get', 'if', 'in',\n            'init', 'inline', 'internal', 'implements', 'lock', 'not', 'null',\n            'of', 'or', 'otherwise', 'out', 'override', 'pass', 'raise',\n            'raises', 'readonly', 'ref', 'requires', 'self', 'set', 'static',\n            'super', 'switch', 'to', 'true', 'try', 'unless', 'uses', 'var', 'virtual',\n            'volatile', 'void', 'when', 'while'\n            ),\n//        2 => array(\n//            ),\n        3 => array(\n            'is', 'isa', 'new', 'owned', 'sizeof', 'typeof', 'unchecked',\n            'unowned', 'weak'\n            ),\n        4 => array(\n            'bool', 'byte', 'class', 'char', 'date', 'datetime', 'decimal', 'delegate',\n            'double', 'enum', 'event', 'exception', 'float', 'int', 'interface',\n            'long', 'object', 'prop', 'sbyte', 'short', 'single', 'string',\n            'struct', 'ulong', 'ushort'\n            ),\n//        5 => array(\n//            ),\n        ),\n    'SYMBOLS' => array(\n        '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', ':', ';',\n        '(', ')', '{', '}', '[', ']', '|'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n//        2 => false,\n        3 => false,\n        4 => false,\n//        5 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0600FF;',\n//            2 => 'color: #FF8000; font-weight: bold;',\n            3 => 'color: #008000;',\n            4 => 'color: #FF0000;',\n//            5 => 'color: #000000;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008080; font-style: italic;',\n//            2 => 'color: #008080;',\n            3 => 'color: #008080;',\n            'MULTI' => 'color: #008080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #008080; font-weight: bold;',\n            'HARD' => 'color: #008080; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #666666;',\n            'HARD' => 'color: #666666;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #FF0000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #0000FF;',\n            2 => 'color: #0000FF;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #008000;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n//        2 => '',\n        3 => '',\n        4 => '',\n//        5 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\|\\#>|^])\",\n            'DISALLOWED_AFTER' => \"(?![a-zA-Z0-9_<\\|%\\\\-])\"\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/gettext.php",
    "content": "<?php\n/*************************************************************************************\n * gettext.php\n * --------\n * Author: Milian Wolff (mail@milianw.de)\n * Copyright: (c) 2008 Milian Wolff\n * Release Version: 1.0.9.1\n * Date Started: 2008/05/25\n *\n * GNU Gettext .po/.pot language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/08/02 (1.0.8)\n *  -  New comments: flags and previous-fields\n *  -  New keywords: msgctxt, msgid_plural\n *  -  Msgstr array indices\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'GNU Gettext',\n    'COMMENT_SINGLE' => array('#:', '#.', '#,', '#|', '#'),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array('msgctxt', 'msgid_plural', 'msgid', 'msgstr'),\n    ),\n    'SYMBOLS' => array(),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;'\n        ),\n        'COMMENTS' => array(\n            0 => 'color: #000099;',\n            1 => 'color: #000099;',\n            2 => 'color: #000099;',\n            3 => 'color: #006666;',\n            4 => 'color: #666666; font-style: italic;',\n        ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n        ),\n        'REGEXPS' => array(),\n        'SYMBOLS' => array(),\n        'NUMBERS' => array(\n            0 => 'color: #000099;'\n        ),\n        'METHODS' => array(),\n        'SCRIPT' => array(),\n        'BRACKETS' => array(\n            0 => 'color: #000099;'\n        ),\n    ),\n    'URLS' => array(\n        1 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/glsl.php",
    "content": "<?php\n/*************************************************************************************\n * glsl.php\n * -----\n * Author: Benny Baumann (BenBE@omorphia.de)\n * Copyright: (c) 2008 Benny Baumann (BenBE@omorphia.de)\n * Release Version: 1.0.9.1\n * Date Started: 2008/03/20\n *\n * glSlang language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/03/20 (1.0.7.21)\n *   -  First Release\n *\n * TODO\n * ----\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'glSlang',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Multiline-continued single-line comments\n        1 => '/\\/\\/(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //Multiline-continued preprocessor define\n        2 => '/#(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m'\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'if', 'else', 'for', 'while', 'do', 'break', 'continue', 'asm',\n            'switch', 'case', 'default', 'return', 'discard',\n            'namespace', 'using', 'sizeof', 'cast'\n            ),\n        2 => array(\n            'const', 'uniform', 'attribute', 'centroid', 'varying', 'invariant',\n            'in', 'out', 'inout', 'input', 'output', 'typedef', 'volatile',\n            'public', 'static', 'extern', 'external', 'packed',\n            'inline', 'noinline', 'noperspective', 'flat'\n            ),\n        3 => array(\n            'void', 'bool', 'int', 'long', 'short', 'float', 'half', 'fixed',\n            'unsigned', 'lowp', 'mediump', 'highp', 'precision',\n            'vec2', 'vec3', 'vec4', 'bvec2', 'bvec3', 'bvec4',\n            'dvec2', 'dvec3', 'dvec4', 'fvec2', 'fvec3', 'fvec4',\n            'hvec2', 'hvec3', 'hvec4', 'ivec2', 'ivec3', 'ivec4',\n            'mat2', 'mat3', 'mat4', 'mat2x2', 'mat3x2', 'mat4x2',\n            'mat2x3', 'mat3x3', 'mat4x3', 'mat2x4', 'mat3x4', 'mat4x4',\n            'sampler1D', 'sampler2D', 'sampler3D', 'samplerCube',\n            'sampler1DShadow', 'sampler2DShadow',\n            'struct', 'class', 'union', 'enum', 'interface', 'template'\n            ),\n        4 => array(\n            'this', 'false', 'true'\n            ),\n        5 => array(\n            'radians', 'degrees', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan',\n            'pow', 'exp2', 'log2', 'sqrt', 'inversesqrt', 'abs', 'sign', 'ceil',\n            'floor', 'fract', 'mod', 'min', 'max', 'clamp', 'mix', 'step',\n            'smoothstep', 'length', 'distance', 'dot', 'cross', 'normalize',\n            'ftransform', 'faceforward', 'reflect', 'matrixCompMult', 'equal',\n            'lessThan', 'lessThanEqual', 'greaterThan', 'greaterThanEqual',\n            'notEqual', 'any', 'all', 'not', 'texture1D', 'texture1DProj',\n            'texture1DLod', 'texture1DProjLod', 'texture2D', 'texture2DProj',\n            'texture2DLod', 'texture2DProjLod', 'texture3D', 'texture3DProj',\n            'texture3DLod', 'texture3DProjLod', 'textureCube', 'textureCubeLod',\n            'shadow1D', 'shadow1DProj', 'shadow1DLod', 'shadow1DProjLod',\n            'shadow2D', 'shadow2DProj', 'shadow2DLod', 'shadow2DProjLod',\n            'noise1', 'noise2', 'noise3', 'noise4'\n            ),\n        6 => array(\n            'gl_Position', 'gl_PointSize', 'gl_ClipVertex', 'gl_FragColor',\n            'gl_FragData', 'gl_FragDepth', 'gl_FragCoord', 'gl_FrontFacing',\n            'gl_Color', 'gl_SecondaryColor', 'gl_Normal', 'gl_Vertex',\n            'gl_MultiTexCoord0', 'gl_MultiTexCoord1', 'gl_MultiTexCoord2',\n            'gl_MultiTexCoord3', 'gl_MultiTexCoord4', 'gl_MultiTexCoord5',\n            'gl_MultiTexCoord6', 'gl_MultiTexCoord7', 'gl_FogCoord',\n            'gl_MaxLights', 'gl_MaxClipPlanes', 'gl_MaxTextureUnits',\n            'gl_MaxTextureCoords', 'gl_MaxVertexAttribs', 'gl_MaxVaryingFloats',\n            'gl_MaxVertexUniformComponents', 'gl_MaxVertexTextureImageUnits',\n            'gl_MaxCombinedTextureImageUnits', 'gl_MaxTextureImageUnits',\n            'gl_MaxFragmentUniformComponents', 'gl_MaxDrawBuffers', 'gl_Point',\n            'gl_ModelViewMatrix', 'gl_ProjectionMatrix', 'gl_FrontMaterial',\n            'gl_ModelViewProjectionMatrix', 'gl_TextureMatrix', 'gl_ClipPlane',\n            'gl_NormalMatrix', 'gl_ModelViewMatrixInverse', 'gl_BackMaterial',\n            'gl_ProjectionMatrixInverse', 'gl_ModelViewProjectionMatrixInverse',\n            'gl_TextureMatrixInverse', 'gl_ModelViewMatrixTranspose', 'gl_Fog',\n            'gl_ProjectionMatrixTranspose', 'gl_NormalScale', 'gl_DepthRange',\n            'gl_odelViewProjectionMatrixTranspose', 'gl_TextureMatrixTranspose',\n            'gl_ModelViewMatrixInverseTranspose', 'gl_LightSource',\n            'gl_ProjectionMatrixInverseTranspose', 'gl_LightModel',\n            'gl_ModelViewProjectionMatrixInverseTranspose', 'gl_TexCoord',\n            'gl_TextureMatrixInverseTranspose', 'gl_TextureEnvColor',\n            'gl_FrontLightModelProduct', 'gl_BackLightModelProduct',\n            'gl_FrontLightProduct', 'gl_BackLightProduct', 'gl_ObjectPlaneS',\n            'gl_ObjectPlaneT', 'gl_ObjectPlaneR', 'gl_ObjectPlaneQ',\n            'gl_EyePlaneS', 'gl_EyePlaneT', 'gl_EyePlaneR', 'gl_EyePlaneQ',\n            'gl_FrontColor', 'gl_BackColor', 'gl_FrontSecondaryColor',\n            'gl_BackSecondaryColor', 'gl_FogFragCoord', 'gl_PointCoord'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^',\n        '&', '?', ':', '.', '|', ';', ',', '<', '>'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #333399; font-weight: bold;',\n            3 => 'color: #000066; font-weight: bold;',\n            4 => 'color: #333399; font-weight: bold;',\n            5 => 'color: #993333; font-weight: bold;',\n            6 => 'color: #551111;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #009900;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000066;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000066;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'OOLANG' => array(\n            'MATCH_BEFORE' => '',\n            'MATCH_AFTER' => '[a-zA-Z_][a-zA-Z0-9_]*',\n            'MATCH_SPACES' => '[\\s]*'\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/gml.php",
    "content": "<?php\n/*************************************************************************************\n * gml.php\n * -------\n * Author: José Jorge Enríquez <jenriquez@users.sourceforge.net>, Timon Knigge <timonknigge@live.nl>\n * Copyright: (c) 2005 José Jorge Enríquez Rodríguez (http://www.zonamakers.com), (c) 2013 Timon Knigge (http://www.bluemoonproductions.nl)\n * Release Version: 1.0.9.1\n * Date Started: 2005/06/21\n *\n * GML language file for GeSHi.\n *\n * GML (Game Maker Language) is a script language that is built-in into Game Maker,\n * a game creation program, more info about Game Maker can be found at\n * http://www.gamemaker.nl/\n * All GML keywords were extracted from the Game Maker HTML Help file using a PHP\n * script (one section at a time). I love PHP for saving me that bunch of work :P!.\n * I think all GML functions have been indexed here, but I'm not sure about it, so\n * please let me know of any issue you may find.\n *\n * CHANGES\n * -------\n * 2005/11/11\n *  -  Changed 'CASE_KEYWORDS' fom 'GESHI_CAPS_LOWER' to 'GESHI_CAPS_NO_CHANGE',\n *     so that MCI_command appears correctly (the only GML function using capitals).\n *  -  Changed 'CASE_SENSITIVE' options, 'GESHI_COMMENTS' from true to false and all\n *     of the others from false to true.\n *  -  Deleted repeated entries.\n *  -  div and mod are language keywords, moved (from symbols) to the appropiate section (1).\n *  -  Moved self, other, all, noone and global identifiers to language keywords section 1.\n *  -  Edited this file lines to a maximum width of 100 characters (as stated in\n *     the GeSHi docs). Well, not strictly to 100 but around it.\n *  -  Corrected some minor issues (the vk_f1...vk_f12 keys and similar).\n *  -  Deleted the KEYWORDS=>5 and KEYWORDS=>6 sections (actually, they were empty).\n *     I was planning of using those for the GML functions available only in the\n *     registered version of the program, but not anymore.\n *\n * 2005/06/26 (1.0.3)\n *  -  First Release.\n *\n * TODO (updated 2005/11/11)\n * -------------------------\n *  -  Test it for a while and make the appropiate corrections.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'GML',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', \"'\"),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        // Variables\n        1 => array(\n            'argument','argument0','argument1','argument10','argument11','argument12','argument13','argument14','argument15','argument2','argument3','argument4','argument5','argument6','argument7',\n            'argument8','argument9','argument_count','argument_relative','async_load','background_alpha','background_blend','background_color','background_foreground','background_height','background_hspeed',\n            'background_htiled','background_index','background_showcolor','background_visible','background_vspeed','background_vtiled','background_width','background_x','background_xscale','background_y',\n            'background_yscale','browser_height','browser_width','caption_health','caption_lives','caption_score','current_day','current_hour','current_minute','current_month','current_second','current_time',\n            'current_weekday','current_year','cursor_sprite','debug_mode','delta_time','display_aa','error_last','error_occurred','event_action','event_number','event_object','event_type','fps','fps_real',\n            'game_id','gamemaker_pro','gamemaker_registered','gamemaker_version','health','instance_count','instance_id','keyboard_key','keyboard_lastchar','keyboard_lastkey','keyboard_string','lives',\n            'mouse_button','mouse_lastbutton','mouse_x','mouse_y','os_browser','os_device','os_type','os_version','program_directory','room','room_caption','room_first','room_height','room_last',\n            'room_persistent','room_speed','room_width','score','secure_mode','show_health','show_lives','show_score','temp_directory','transition_color','transition_kind','transition_steps','view_angle',\n            'view_current','view_enabled','view_hborder','view_hport','view_hspeed','view_hview','view_object','view_surface_id','view_vborder','view_visible','view_vspeed','view_wport','view_wview','view_xport',\n            'view_xview','view_yport','view_yview','webgl_enabled','working_directory','alarm','bbox_bottom','bbox_left','bbox_right','bbox_top','depth','direction','friction','gravity','gravity_direction',\n            'hspeed','id','image_alpha','image_angle','image_blend','image_index','image_number','image_single','image_speed','image_xscale','image_yscale','mask_index','object_index','path_endaction','path_index',\n            'path_orientation','path_position','path_positionprevious','path_scale','path_speed','persistent','phy_active','phy_angular_damping','phy_angular_velocity','phy_bullet','phy_col_normal_x',\n            'phy_col_normal_y','phy_collision_points','phy_collision_x','phy_collision_y','phy_com_x','phy_com_y','phy_dynamic','phy_fixed_rotation','phy_inertia','phy_kinematic','phy_linear_damping',\n            'phy_linear_velocity_x','phy_linear_velocity_y','phy_mass','phy_position_x','phy_position_xprevious','phy_position_y','phy_position_yprevious','phy_rotation','phy_sleeping','phy_speed','phy_speed_x',\n            'phy_speed_y','solid','speed','sprite_height','sprite_index','sprite_width','sprite_xoffset','sprite_yoffset','timeline_index','timeline_loop','timeline_position','timeline_running','timeline_speed',\n            'visible','vspeed','x','xprevious','xstart','y','yprevious','ystart'\n            ),\n\n        // Functions\n        2 => array(\n            'YoYo_AchievementsAvailable','YoYo_AddVirtualKey','YoYo_CheckSecurity','YoYo_DeleteVirtualKey','YoYo_DisableAds','YoYo_EnableAds','YoYo_EnableAlphaBlend','YoYo_GetCPUDetails','YoYo_GetConfig',\n            'YoYo_GetDevice','YoYo_GetDomain','YoYo_GetPictureSprite','YoYo_GetPlatform','YoYo_GetSessionKey','YoYo_GetTiltX','YoYo_GetTiltY','YoYo_GetTiltZ','YoYo_GetTimer','YoYo_HideVirtualKey','YoYo_IsKeypadOpen',\n            'YoYo_LeaveRating','YoYo_LoginAchievements','YoYo_LogoutAchievements','YoYo_MouseCheckButton','YoYo_MouseCheckButtonPressed','YoYo_MouseCheckButtonReleased','YoYo_MouseX','YoYo_MouseXRaw','YoYo_MouseY',\n            'YoYo_MouseYRaw','YoYo_OSPauseEvent','YoYo_OpenURL','YoYo_OpenURL_ext','YoYo_OpenURL_full','YoYo_PostAchievement','YoYo_PostScore','YoYo_SelectPicture','YoYo_ShowVirtualKey','abs','achievement_available',\n            'achievement_event','achievement_get_challenges','achievement_get_info','achievement_get_pic','achievement_increment','achievement_load_friends','achievement_load_leaderboard','achievement_load_progress',\n            'achievement_login','achievement_login_status','achievement_logout','achievement_post','achievement_post_score','achievement_reset','achievement_send_challenge','achievement_show',\n            'achievement_show_achievements','achievement_show_challenge_notifications','achievement_show_leaderboards','action_another_room','action_bounce','action_change_object','action_color','action_create_object',\n            'action_create_object_motion','action_create_object_random','action_current_room','action_draw_arrow','action_draw_background','action_draw_ellipse','action_draw_ellipse_gradient','action_draw_gradient_hor',\n            'action_draw_gradient_vert','action_draw_health','action_draw_life','action_draw_life_images','action_draw_line','action_draw_rectangle','action_draw_score','action_draw_sprite','action_draw_text',\n            'action_draw_text_transformed','action_draw_variable','action_effect','action_end_game','action_end_sound','action_execute_script','action_font','action_fullscreen','action_highscore_clear','action_if',\n            'action_if_aligned','action_if_collision','action_if_dice','action_if_empty','action_if_health','action_if_life','action_if_mouse','action_if_next_room','action_if_number','action_if_object',\n            'action_if_previous_room','action_if_question','action_if_score','action_if_sound','action_if_variable','action_inherited','action_kill_object','action_kill_position','action_linear_step','action_load_game',\n            'action_message','action_move','action_move_contact','action_move_point','action_move_random','action_move_start','action_move_to','action_next_room','action_partemit_burst','action_partemit_create',\n            'action_partemit_destroy','action_partemit_stream','action_partsyst_clear','action_partsyst_create','action_partsyst_destroy','action_parttype_color','action_parttype_create','action_parttype_gravity',\n            'action_parttype_life','action_parttype_secondary','action_parttype_speed','action_path','action_path_end','action_path_position','action_path_speed','action_potential_step','action_previous_room',\n            'action_replace_background','action_replace_sound','action_replace_sprite','action_restart_game','action_reverse_xdir','action_reverse_ydir','action_save_game','action_set_alarm','action_set_cursor',\n            'action_set_friction','action_set_gravity','action_set_health','action_set_hspeed','action_set_life','action_set_motion','action_set_score','action_set_timeline_position','action_set_timeline_speed',\n            'action_set_vspeed','action_snap','action_snapshot','action_sound','action_sprite_color','action_sprite_set','action_sprite_transform','action_timeline_pause','action_timeline_set','action_timeline_start',\n            'action_timeline_stop','action_webpage','action_wrap','ads_disable','ads_enable','ads_engagement_active','ads_engagement_available','ads_engagement_launch','ads_event','ads_event_preload',\n            'ads_get_display_height','ads_get_display_width','ads_interstitial_available','ads_interstitial_display','ads_move','ads_set_reward_callback','ads_setup','analytics_event','analytics_event_ext','ansi_char',\n            'arccos','arcsin','arctan','arctan2','array_height_2d','array_length_1d','array_length_2d','asset_get_index','asset_get_type','audio_channel_num','audio_emitter_create','audio_emitter_exists',\n            'audio_emitter_falloff','audio_emitter_free','audio_emitter_gain','audio_emitter_pitch','audio_emitter_position','audio_emitter_velocity','audio_exists','audio_falloff_set_model','audio_get_type',\n            'audio_is_paused','audio_is_playing','audio_listener_orientation','audio_listener_position','audio_listener_velocity','audio_master_gain','audio_music_gain','audio_music_is_playing','audio_pause_all',\n            'audio_pause_music','audio_pause_sound','audio_play_music','audio_play_sound','audio_play_sound_at','audio_play_sound_on','audio_resume_all','audio_resume_music','audio_resume_sound','audio_sound_gain',\n            'audio_sound_length','audio_sound_pitch','audio_stop_all','audio_stop_music','audio_stop_sound','audio_system','background_add','background_assign','background_create_color','background_create_from_surface',\n            'background_create_gradient','background_delete','background_duplicate','background_exists','background_get_height','background_get_name','background_get_texture','background_get_uvs','background_get_width',\n            'background_replace','background_save','background_set_alpha_from_background','base64_decode','base64_encode','buffer_base64_decode','buffer_base64_decode_ext','buffer_base64_encode','buffer_copy',\n            'buffer_create','buffer_delete','buffer_fill','buffer_get_size','buffer_get_surface','buffer_load','buffer_load_ext','buffer_md5','buffer_peek','buffer_poke','buffer_read','buffer_resize','buffer_save',\n            'buffer_save_ext','buffer_seek','buffer_set_surface','buffer_sha1','buffer_sizeof','buffer_tell','buffer_write','ceil','choose','chr','clamp','clickable_add','clickable_add_ext','clickable_change',\n            'clickable_change_ext','clickable_delete','clickable_exists','clipboard_get_text','clipboard_has_text','clipboard_set_text','cloud_file_save','cloud_string_save','cloud_synchronise','code_is_compiled',\n            'collision_circle','collision_ellipse','collision_line','collision_point','collision_rectangle','color_get_blue','color_get_green','color_get_hue','color_get_red','color_get_saturation','color_get_value',\n            'cos','d3d_draw_block','d3d_draw_cone','d3d_draw_cylinder','d3d_draw_ellipsoid','d3d_draw_floor','d3d_draw_wall','d3d_end','d3d_light_define_ambient','d3d_light_define_direction','d3d_light_define_point',\n            'd3d_light_enable','d3d_model_block','d3d_model_clear','d3d_model_cone','d3d_model_create','d3d_model_cylinder','d3d_model_destroy','d3d_model_draw','d3d_model_ellipsoid','d3d_model_floor','d3d_model_load',\n            'd3d_model_primitive_begin','d3d_model_primitive_end','d3d_model_save','d3d_model_vertex','d3d_model_vertex_color','d3d_model_vertex_normal','d3d_model_vertex_normal_color','d3d_model_vertex_normal_texture',\n            'd3d_model_vertex_normal_texture_color','d3d_model_vertex_texture','d3d_model_vertex_texture_color','d3d_model_wall','d3d_primitive_begin','d3d_primitive_begin_texture','d3d_primitive_end','d3d_set_culling',\n            'd3d_set_depth','d3d_set_fog','d3d_set_hidden','d3d_set_lighting','d3d_set_perspective','d3d_set_projection','d3d_set_projection_ext','d3d_set_projection_ortho','d3d_set_projection_perspective',\n            'd3d_set_shading','d3d_set_zwriteenable','d3d_start','d3d_transform_add_rotation_axis','d3d_transform_add_rotation_x','d3d_transform_add_rotation_y','d3d_transform_add_rotation_z','d3d_transform_add_scaling',\n            'd3d_transform_add_translation','d3d_transform_set_identity','d3d_transform_set_rotation_axis','d3d_transform_set_rotation_x','d3d_transform_set_rotation_y','d3d_transform_set_rotation_z',\n            'd3d_transform_set_scaling','d3d_transform_set_translation','d3d_transform_stack_clear','d3d_transform_stack_discard','d3d_transform_stack_empty','d3d_transform_stack_pop','d3d_transform_stack_push',\n            'd3d_transform_stack_top','d3d_transform_vertex','d3d_vertex','d3d_vertex_color','d3d_vertex_normal','d3d_vertex_normal_color','d3d_vertex_normal_texture','d3d_vertex_normal_texture_color','d3d_vertex_texture',\n            'd3d_vertex_texture_color','date_compare_date','date_compare_datetime','date_compare_time','date_create_datetime','date_current_datetime','date_date_of','date_date_string','date_datetime_string','date_day_span',\n            'date_days_in_month','date_days_in_year','date_get_day','date_get_day_of_year','date_get_hour','date_get_hour_of_year','date_get_minute','date_get_minute_of_year','date_get_month','date_get_second',\n            'date_get_second_of_year','date_get_week','date_get_weekday','date_get_year','date_hour_span','date_inc_day','date_inc_hour','date_inc_minute','date_inc_month','date_inc_second','date_inc_week','date_inc_year',\n            'date_is_today','date_leap_year','date_minute_span','date_month_span','date_second_span','date_time_of','date_time_string','date_valid_datetime','date_week_span','date_year_span','degtorad','device_get_tilt_x',\n            'device_get_tilt_y','device_get_tilt_z','device_ios_get_image','device_ios_get_imagename','device_is_keypad_open','device_mouse_check_button','device_mouse_check_button_pressed',\n            'device_mouse_check_button_released','device_mouse_dbclick_enable','device_mouse_raw_x','device_mouse_raw_y','device_mouse_x','device_mouse_y','directory_create','directory_exists','display_get_dpi_x',\n            'display_get_dpi_y','display_get_gui_height','display_get_gui_width','display_get_height','display_get_orientation','display_get_width','display_mouse_get_x','display_mouse_get_y','display_mouse_set',\n            'display_reset','display_set_gui_size','distance_to_object','distance_to_point','dot_product','dot_product_3d','dot_product_3d_normalised','dot_product_normalised','draw_arrow','draw_background',\n            'draw_background_ext','draw_background_general','draw_background_part','draw_background_part_ext','draw_background_stretched','draw_background_stretched_ext','draw_background_tiled','draw_background_tiled_ext',\n            'draw_button','draw_circle','draw_circle_color','draw_clear','draw_clear_alpha','draw_ellipse','draw_ellipse_color','draw_enable_alphablend','draw_enable_drawevent','draw_get_alpha','draw_get_alpha_test',\n            'draw_get_alpha_test_ref_value','draw_get_color','draw_getpixel','draw_getpixel_ext','draw_healthbar','draw_highscore','draw_line','draw_line_color','draw_line_width','draw_line_width_color','draw_path',\n            'draw_point','draw_point_color','draw_primitive_begin','draw_primitive_begin_texture','draw_primitive_end','draw_rectangle','draw_rectangle_color','draw_roundrect','draw_roundrect_color','draw_self',\n            'draw_set_alpha','draw_set_alpha_test','draw_set_alpha_test_ref_value','draw_set_blend_mode','draw_set_blend_mode_ext','draw_set_circle_precision','draw_set_color','draw_set_color_write_enable',\n            'draw_set_font','draw_set_halign','draw_set_valign','draw_sprite','draw_sprite_ext','draw_sprite_general','draw_sprite_part','draw_sprite_part_ext','draw_sprite_pos','draw_sprite_stretched',\n            'draw_sprite_stretched_ext','draw_sprite_tiled','draw_sprite_tiled_ext','draw_surface','draw_surface_ext','draw_surface_general','draw_surface_part','draw_surface_part_ext','draw_surface_stretched',\n            'draw_surface_stretched_ext','draw_surface_tiled','draw_surface_tiled_ext','draw_text','draw_text_color','draw_text_ext','draw_text_ext_color','draw_text_ext_transformed','draw_text_ext_transformed_color',\n            'draw_text_transformed','draw_text_transformed_color','draw_texture_flush','draw_triangle','draw_triangle_color','draw_vertex','draw_vertex_color','draw_vertex_texture','draw_vertex_texture_color',\n            'ds_exists','ds_grid_add','ds_grid_add_disk','ds_grid_add_grid_region','ds_grid_add_region','ds_grid_clear','ds_grid_copy','ds_grid_create','ds_grid_destroy','ds_grid_get','ds_grid_get_disk_max',\n            'ds_grid_get_disk_mean','ds_grid_get_disk_min','ds_grid_get_disk_sum','ds_grid_get_max','ds_grid_get_mean','ds_grid_get_min','ds_grid_get_sum','ds_grid_height','ds_grid_multiply','ds_grid_multiply_disk',\n            'ds_grid_multiply_grid_region','ds_grid_multiply_region','ds_grid_read','ds_grid_resize','ds_grid_set','ds_grid_set_disk','ds_grid_set_grid_region','ds_grid_set_region','ds_grid_shuffle','ds_grid_sort',\n            'ds_grid_value_disk_exists','ds_grid_value_disk_x','ds_grid_value_disk_y','ds_grid_value_exists','ds_grid_value_x','ds_grid_value_y','ds_grid_width','ds_grid_write','ds_list_add','ds_list_clear',\n            'ds_list_copy','ds_list_create','ds_list_delete','ds_list_destroy','ds_list_empty','ds_list_find_index','ds_list_find_value','ds_list_insert','ds_list_mark_as_list','ds_list_mark_as_map','ds_list_read',\n            'ds_list_replace','ds_list_shuffle','ds_list_size','ds_list_sort','ds_list_write','ds_map_add','ds_map_add_list','ds_map_add_map','ds_map_clear','ds_map_copy','ds_map_create','ds_map_delete',\n            'ds_map_destroy','ds_map_empty','ds_map_exists','ds_map_find_first','ds_map_find_last','ds_map_find_next','ds_map_find_previous','ds_map_find_value','ds_map_read','ds_map_replace','ds_map_replace_list',\n            'ds_map_replace_map','ds_map_size','ds_map_write','ds_priority_add','ds_priority_change_priority','ds_priority_clear','ds_priority_copy','ds_priority_create','ds_priority_delete_max','ds_priority_delete_min',\n            'ds_priority_delete_value','ds_priority_destroy','ds_priority_empty','ds_priority_find_max','ds_priority_find_min','ds_priority_find_priority','ds_priority_read','ds_priority_size','ds_priority_write',\n            'ds_queue_clear','ds_queue_copy','ds_queue_create','ds_queue_dequeue','ds_queue_destroy','ds_queue_empty','ds_queue_enqueue','ds_queue_head','ds_queue_read','ds_queue_size','ds_queue_tail','ds_queue_write',\n            'ds_set_precision','ds_stack_clear','ds_stack_copy','ds_stack_create','ds_stack_destroy','ds_stack_empty','ds_stack_pop','ds_stack_push','ds_stack_read','ds_stack_size','ds_stack_top','ds_stack_write',\n            'effect_clear','effect_create_above','effect_create_below','environment_get_variable','event_inherited','event_perform','event_perform_object','event_user','exp','external_call','external_define','external_free',\n            'facebook_accesstoken','facebook_dialog','facebook_graph_request','facebook_init','facebook_launch_offerwall','facebook_login','facebook_logout','facebook_post_message','facebook_send_invite','facebook_status',\n            'facebook_user_id','file_attributes','file_bin_close','file_bin_open','file_bin_position','file_bin_read_byte','file_bin_rewrite','file_bin_seek','file_bin_size','file_bin_write_byte','file_copy','file_delete',\n            'file_exists','file_find_close','file_find_first','file_find_next','file_rename','file_text_close','file_text_eof','file_text_eoln','file_text_open_append','file_text_open_from_string','file_text_open_read',\n            'file_text_open_write','file_text_read_real','file_text_read_string','file_text_readln','file_text_write_real','file_text_write_string','file_text_writeln','filename_change_ext','filename_dir','filename_drive',\n            'filename_ext','filename_name','filename_path','floor','font_add','font_add_sprite','font_add_sprite_ext','font_delete','font_exists','font_get_bold','font_get_first','font_get_fontname','font_get_italic',\n            'font_get_last','font_get_name','font_get_size','font_get_texture','font_get_uvs','font_replace','font_replace_sprite','font_replace_sprite_ext','font_set_cache_size','frac','game_end','game_load',\n            'game_load_buffer','game_restart','game_save','game_save_buffer','gamepad_axis_count','gamepad_axis_value','gamepad_button_check','gamepad_button_check_pressed','gamepad_button_check_released',\n            'gamepad_button_count','gamepad_button_value','gamepad_get_axis_deadzone','gamepad_get_button_threshold','gamepad_get_description','gamepad_get_device_count','gamepad_is_connected','gamepad_is_supported',\n            'gamepad_set_axis_deadzone','gamepad_set_button_threshold','gamepad_set_vibration','get_integer','get_integer_async','get_login_async','get_open_filename','get_open_filename_ext','get_save_filename',\n            'get_save_filename_ext','get_string','get_string_async','get_timer','highscore_add','highscore_clear','highscore_name','highscore_value','http_get','http_get_file','http_post_string','iap_acquire',\n            'iap_activate','iap_consume','iap_event_queue','iap_files_purchased','iap_is_downloaded','iap_is_purchased','iap_product_details','iap_product_files','iap_product_status','iap_restore_all','iap_status',\n            'iap_store_status','immersion_play_effect','immersion_stop','ini_close','ini_key_delete','ini_key_exists','ini_open','ini_open_from_string','ini_read_real','ini_read_string','ini_section_delete',\n            'ini_section_exists','ini_write_real','ini_write_string','instance_activate_all','instance_activate_object','instance_activate_region','instance_change','instance_copy','instance_create',\n            'instance_deactivate_all','instance_deactivate_object','instance_deactivate_region','instance_destroy','instance_exists','instance_find','instance_furthest','instance_nearest','instance_number',\n            'instance_place','instance_position','io_clear','irandom','irandom_range','is_array','is_real','is_string','joystick_axes','joystick_buttons','joystick_check_button','joystick_direction','joystick_exists',\n            'joystick_has_pov','joystick_name','joystick_pov','joystick_rpos','joystick_upos','joystick_vpos','joystick_xpos','joystick_ypos','joystick_zpos','json_decode','json_encode','keyboard_check',\n            'keyboard_check_direct','keyboard_check_pressed','keyboard_check_released','keyboard_clear','keyboard_get_map','keyboard_get_numlock','keyboard_key_press','keyboard_key_release','keyboard_set_map',\n            'keyboard_set_numlock','keyboard_unset_map','lengthdir_x','lengthdir_y','lerp','ln','log10','log2','logn','make_color_hsv','make_color_rgb','math_set_epsilon','matrix_build','matrix_get','matrix_multiply',\n            'matrix_set','max','md5_file','md5_string_unicode','md5_string_utf8','mean','median','merge_color','message_caption','min','motion_add','motion_set','mouse_check_button','mouse_check_button_pressed',\n            'mouse_check_button_released','mouse_clear','mouse_wheel_down','mouse_wheel_up','move_bounce','move_bounce_all','move_bounce_solid','move_contact','move_contact_all','move_contact_solid','move_outside_all',\n            'move_outside_solid','move_random','move_snap','move_towards_point','move_wrap','mp_grid_add_cell','mp_grid_add_instances','mp_grid_add_rectangle','mp_grid_clear_all','mp_grid_clear_cell',\n            'mp_grid_clear_rectangle','mp_grid_create','mp_grid_destroy','mp_grid_draw','mp_grid_path','mp_linear_path','mp_linear_path_object','mp_linear_step','mp_linear_step_object','mp_potential_path',\n            'mp_potential_path_object','mp_potential_settings','mp_potential_step','mp_potential_step_object','network_connect','network_connect_raw','network_create_server','network_create_socket','network_destroy',\n            'network_resolve','network_send_broadcast','network_send_packet','network_send_raw','network_send_udp','network_set_timeout','object_exists','object_get_depth','object_get_mask',\n            'object_get_name','object_get_parent','object_get_persistent','object_get_physics','object_get_solid','object_get_sprite','object_get_visible','object_is_ancestor','object_set_depth','object_set_mask',\n            'object_set_persistent','object_set_solid','object_set_sprite','object_set_visible','ord','os_get_config','os_get_info','os_get_language','os_is_network_connected','os_is_paused','os_lock_orientation',\n            'os_powersave_enable','parameter_count','parameter_string','part_emitter_burst','part_emitter_clear','part_emitter_create','part_emitter_destroy','part_emitter_destroy_all','part_emitter_exists',\n            'part_emitter_region','part_emitter_stream','part_particles_clear','part_particles_count','part_particles_create','part_particles_create_color','part_system_automatic_draw','part_system_automatic_update',\n            'part_system_clear','part_system_create','part_system_depth','part_system_destroy','part_system_draw_order','part_system_drawit','part_system_exists','part_system_position','part_system_update',\n            'part_type_alpha','part_type_alpha1','part_type_alpha2','part_type_alpha3','part_type_blend','part_type_clear','part_type_color','part_type_color1','part_type_color2','part_type_color3','part_type_color_hsv',\n            'part_type_color_mix','part_type_color_rgb','part_type_create','part_type_death','part_type_destroy','part_type_direction','part_type_exists','part_type_gravity','part_type_life','part_type_orientation',\n            'part_type_scale','part_type_shape','part_type_size','part_type_speed','part_type_sprite','part_type_step','path_add','path_add_point','path_append','path_assign','path_change_point','path_clear_points',\n            'path_delete','path_delete_point','path_duplicate','path_end','path_exists','path_flip','path_get_closed','path_get_kind','path_get_length','path_get_name','path_get_number','path_get_point_speed',\n            'path_get_point_x','path_get_point_y','path_get_precision','path_get_speed','path_get_x','path_get_y','path_insert_point','path_mirror','path_rescale','path_reverse','path_rotate','path_set_closed',\n            'path_set_kind','path_set_precision','path_shift','path_start','physics_apply_force','physics_apply_impulse','physics_apply_local_force','physics_apply_local_impulse','physics_apply_torque',\n            'physics_draw_debug','physics_fixture_add_point','physics_fixture_bind','physics_fixture_bind_ext','physics_fixture_create','physics_fixture_delete','physics_fixture_set_angular_damping',\n            'physics_fixture_set_awake','physics_fixture_set_box_shape','physics_fixture_set_circle_shape','physics_fixture_set_collision_group','physics_fixture_set_density','physics_fixture_set_edge_shape',\n            'physics_fixture_set_friction','physics_fixture_set_kinematic','physics_fixture_set_linear_damping','physics_fixture_set_polygon_shape','physics_fixture_set_restitution','physics_fixture_set_sensor',\n            'physics_get_density','physics_get_friction','physics_get_restitution','physics_joint_delete','physics_joint_distance_create','physics_joint_enable_motor','physics_joint_gear_create','physics_joint_get_value',\n            'physics_joint_prismatic_create','physics_joint_pulley_create','physics_joint_revolute_create','physics_joint_set_value','physics_mass_properties','physics_pause_enable','physics_remove_fixture','physics_set_density',\n            'physics_set_friction','physics_set_restitution','physics_test_overlap','physics_world_create','physics_world_draw_debug','physics_world_gravity','physics_world_update_iterations','physics_world_update_speed',\n            'place_empty','place_free','place_meeting','place_snapped','playhaven_add_notification_badge','playhaven_hide_notification_badge','playhaven_position_notification_badge','playhaven_update_notification_badge',\n            'pocketchange_display_reward','pocketchange_display_shop','point_direction','point_distance','point_distance_3d','position_change','position_destroy','position_empty','position_meeting','power','radtodeg','random',\n            'random_get_seed','random_range','random_set_seed','randomize','real','room_add','room_assign','room_duplicate','room_exists','room_get_name','room_goto','room_goto_next','room_goto_previous','room_instance_add',\n            'room_instance_clear','room_next','room_previous','room_restart','room_set_background','room_set_background_color','room_set_height','room_set_persistent','room_set_view','room_set_view_enabled','room_set_width',\n            'room_tile_add','room_tile_add_ext','room_tile_clear','round','screen_save','screen_save_part','script_execute','script_exists','script_get_name','sha1_file','sha1_string_unicode','sha1_string_utf8','shader_enable_corner_id',\n            'shader_get_sampler_index','shader_get_uniform','shader_is_compiled','shader_reset','shader_set','shader_set_uniform_f','shader_set_uniform_f_array','shader_set_uniform_i','shader_set_uniform_i_array',\n            'shader_set_uniform_matrix','shader_set_uniform_matrix_array','shaders_are_supported','shop_leave_rating','show_debug_message','show_debug_overlay','show_error','show_message','show_message_async',\n            'show_question','show_question_async','sign','sin','sound_add','sound_delete','sound_exists','sound_fade','sound_get_name','sound_global_volume','sound_isplaying','sound_loop','sound_play','sound_replace',\n            'sound_stop','sound_stop_all','sound_volume','sprite_add','sprite_add_from_surface','sprite_assign','sprite_collision_mask','sprite_create_from_surface','sprite_delete','sprite_duplicate','sprite_exists',\n            'sprite_get_bbox_bottom','sprite_get_bbox_left','sprite_get_bbox_right','sprite_get_bbox_top','sprite_get_height','sprite_get_name','sprite_get_number','sprite_get_texture','sprite_get_tpe','sprite_get_uvs',\n            'sprite_get_width','sprite_get_xoffset','sprite_get_yoffset','sprite_merge','sprite_replace','sprite_save','sprite_save_strip','sprite_set_alpha_from_sprite','sprite_set_cache_size','sprite_set_cache_size_ext',\n            'sprite_set_offset','sqr','sqrt','steam_activate_overlay','steam_clear_achievement','steam_create_leaderboard','steam_download_friends_scores','steam_download_scores','steam_download_scores_around_user',\n            'steam_file_delete','steam_file_exists','steam_file_persisted','steam_file_read','steam_file_share','steam_file_size','steam_file_write','steam_file_write_file','steam_get_achievement','steam_get_persona_name',\n            'steam_get_quota_free','steam_get_quota_total','steam_get_stat_avg_rate','steam_get_stat_float','steam_get_stat_int','steam_get_user_steam_id','steam_initialised','steam_is_cloud_enabled_for_account',\n            'steam_is_cloud_enabled_for_app','steam_is_overlay_activated','steam_is_overlay_enabled','steam_is_screenshot_requested','steam_is_user_logged_on','steam_publish_workshop_file','steam_reset_all_stats',\n            'steam_reset_all_stats_achievements','steam_send_screenshot','steam_set_achievement','steam_set_stat_avg_rate','steam_set_stat_float','steam_set_stat_int','steam_stats_ready','steam_upload_score',\n            'steam_user_installed_dlc','steam_user_owns_dlc','string','string_byte_at','string_byte_length','string_char_at','string_copy','string_count','string_delete','string_digits','string_format','string_height',\n            'string_height_ext','string_insert','string_length','string_letters','string_lettersdigits','string_lower','string_pos','string_repeat','string_replace','string_replace_all','string_set_byte_at','string_upper',\n            'string_width','string_width_ext','surface_copy','surface_copy_part','surface_create','surface_create_ext','surface_exists','surface_free','surface_get_height','surface_get_texture','surface_get_width',\n            'surface_getpixel','surface_getpixel_ext','surface_reset_target','surface_save','surface_save_part','surface_set_target','surface_set_target_ext','tan','texture_exists','texture_get_height','texture_get_texel_height',\n            'texture_get_texel_width','texture_get_width','texture_set_blending','texture_set_interpolation','texture_set_interpolation_ext','texture_set_repeat','texture_set_repeat_ext','texture_set_stage','tile_add',\n            'tile_delete','tile_delete_at','tile_exists','tile_find','tile_get_alpha','tile_get_background','tile_get_blend','tile_get_depth','tile_get_height','tile_get_left','tile_get_top','tile_get_visible','tile_get_width',\n            'tile_get_x','tile_get_xscale','tile_get_y','tile_get_yscale','tile_layer_delete','tile_layer_delete_at','tile_layer_depth','tile_layer_find','tile_layer_hide','tile_layer_shift','tile_layer_show','tile_set_alpha',\n            'tile_set_background','tile_set_blend','tile_set_depth','tile_set_position','tile_set_region','tile_set_scale','tile_set_visible','timeline_add','timeline_clear','timeline_delete','timeline_exists','timeline_get_name',\n            'timeline_moment_clear','url_get_domain','url_open','url_open_ext','url_open_full','vertex_argb','vertex_begin','vertex_colour','vertex_create_buffer','vertex_create_buffer_ext','vertex_delete_buffer','vertex_end',\n            'vertex_float1','vertex_float2','vertex_float3','vertex_float4','vertex_format_add_colour','vertex_format_add_custom','vertex_format_add_normal','vertex_format_add_position','vertex_format_add_position_3d',\n            'vertex_format_add_textcoord','vertex_format_begin','vertex_format_end','vertex_freeze','vertex_normal','vertex_position','vertex_position_3d','vertex_submit','vertex_texcoord','vertex_ubyte4','virtual_key_add',\n            'virtual_key_delete','virtual_key_hide','virtual_key_show','win8_appbar_add_element','win8_appbar_enable','win8_appbar_remove_element','win8_device_touchscreen_available','win8_license_initialize_sandbox',\n            'win8_license_trial_version','win8_livetile_badge_clear','win8_livetile_badge_notification','win8_livetile_notification_begin','win8_livetile_notification_end','win8_livetile_notification_expiry',\n            'win8_livetile_notification_image_add','win8_livetile_notification_secondary_begin','win8_livetile_notification_tag','win8_livetile_notification_text_add','win8_livetile_queue_enable','win8_livetile_tile_clear',\n            'win8_livetile_tile_notification','win8_search_add_suggestions','win8_search_disable','win8_search_enable','win8_secondarytile_badge_notification','win8_secondarytile_delete','win8_secondarytile_pin',\n            'win8_settingscharm_add_entry','win8_settingscharm_add_html_entry','win8_settingscharm_add_xaml_entry','win8_settingscharm_get_xaml_property','win8_settingscharm_remove_entry','win8_settingscharm_set_xaml_property',\n            'win8_share_file','win8_share_image','win8_share_screenshot','win8_share_text','win8_share_url','window_center','window_get_caption','window_get_color','window_get_cursor','window_get_fullscreen','window_get_height',\n            'window_get_width','window_get_x','window_get_y','window_handle','window_has_focus','window_mouse_get_x','window_mouse_get_y','window_mouse_set','window_set_caption','window_set_color','window_set_cursor',\n            'window_set_fullscreen','window_set_position','window_set_rectangle','window_set_size','window_view_mouse_get_x','window_view_mouse_get_y','window_views_mouse_get_x','window_views_mouse_get_y',\n            'winphone_license_trial_version','winphone_tile_back_content','winphone_tile_back_content_wide','winphone_tile_back_image','winphone_tile_back_image_wide','winphone_tile_back_title','winphone_tile_background_color',\n            'winphone_tile_count','winphone_tile_cycle_images','winphone_tile_front_image','winphone_tile_front_image_small','winphone_tile_front_image_wide','winphone_tile_icon_image','winphone_tile_small_background_image',\n            'winphone_tile_small_icon_image','winphone_tile_title','winphone_tile_wide_content','zip_unzip'\n            ),\n\n        // Constants\n        3 => array(\n            'ANSI_CHARSET','ARABIC_CHARSET','BALTIC_CHARSET','CHINESEBIG5_CHARSET','DEFAULT_CHARSET','EASTEUROPE_CHARSET','GB2312_CHARSET','GREEK_CHARSET','HANGEUL_CHARSET','HEBREW_CHARSET','JOHAB_CHARSET',\n            'MAC_CHARSET','OEM_CHARSET','RUSSIAN_CHARSET','SHIFTJIS_CHARSET','SYMBOL_CHARSET','THAI_CHARSET','TURKISH_CHARSET','VIETNAMESE_CHARSET','achievement_achievement_info','achievement_challenge_completed',\n            'achievement_challenge_completed_by_remote','achievement_challenge_launched','achievement_challenge_list_received','achievement_challenge_received','achievement_filter_all_players',\n            'achievement_filter_friends_only','achievement_friends_info','achievement_leaderboard_info','achievement_our_info','achievement_pic_loaded','achievement_player_info','achievement_purchase_info',\n            'achievement_show_achievement','achievement_show_bank','achievement_show_friend_picker','achievement_show_leaderboard','achievement_show_profile','achievement_show_purchase_prompt','achievement_show_ui',\n            'achievement_type_achievement_challenge','achievement_type_score_challenge','all','asset_background','asset_font','asset_object','asset_path','asset_room','asset_script','asset_sound','asset_sprite',\n            'asset_timeline','asset_unknown','audio_falloff_exponent_distance','audio_falloff_exponent_distance_clamped','audio_falloff_inverse_distance','audio_falloff_inverse_distance_clamped',\n            'audio_falloff_linear_distance','audio_falloff_linear_distance_clamped','audio_falloff_none','audio_new_system','audio_old_system','bm_add','bm_dest_alpha','bm_dest_color','bm_inv_dest_alpha',\n            'bm_inv_dest_color','bm_inv_src_alpha','bm_inv_src_color','bm_max','bm_normal','bm_one','bm_src_alpha','bm_src_alpha_sat','bm_src_color','bm_subtract','bm_zero','browser_chrome',\n            'browser_firefox','browser_ie','browser_ie_mobile','browser_not_a_browser','browser_opera','browser_safari','browser_safari_mobile','browser_tizen','browser_unknown','browser_windows_store','buffer_bool',\n            'buffer_f16','buffer_f32','buffer_f64','buffer_fast','buffer_fixed','buffer_generalerror','buffer_grow','buffer_invalidtype','buffer_outofbounds','buffer_outofspace','buffer_s16','buffer_s32','buffer_s8',\n            'buffer_seek_end','buffer_seek_relative','buffer_seek_start','buffer_string','buffer_u16','buffer_u32','buffer_u8','buffer_vbuffer','buffer_wrap','button_type','c_aqua','c_black','c_blue','c_dkgray',\n            'c_fuchsia','c_gray','c_green','c_lime','c_ltgray','c_maroon','c_navy','c_olive','c_orange','c_purple','c_red','c_silver','c_teal','c_white','c_yellow','cr_appstart','cr_arrow','cr_beam','cr_cross',\n            'cr_default','cr_drag','cr_handpoint','cr_help','cr_hourglass','cr_hsplit','cr_multidrag','cr_no','cr_nodrop','cr_none','cr_size_all','cr_size_nesw','cr_size_ns','cr_size_nwse','cr_size_we','cr_sqlwait',\n            'cr_uparrow','cr_vsplit','device_emulator','device_ios_ipad','device_ios_ipad_retina','device_ios_iphone','device_ios_iphone5','device_ios_iphone_retina','device_ios_unknown','device_tablet','display_landscape',\n            'display_landscape_flipped','display_portrait','display_portrait_flipped','dll_cdecl','dll_stdcall','ds_type_grid','ds_type_list','ds_type_map','ds_type_priority','ds_type_queue','ds_type_stack','e','ef_cloud',\n            'ef_ellipse','ef_explosion','ef_firework','ef_flare','ef_rain','ef_ring','ef_smoke','ef_smokeup','ef_snow','ef_spark','ef_star','ev_alarm','ev_animation_end','ev_boundary','ev_close_button','ev_collision',\n            'ev_create','ev_destroy','ev_draw','ev_end_of_path','ev_game_end','ev_game_start','ev_global_left_button','ev_global_left_press','ev_global_left_release','ev_global_middle_button','ev_global_middle_press',\n            'ev_global_middle_release','ev_global_press','ev_global_release','ev_global_right_button','ev_global_right_press','ev_global_right_release','ev_gui','ev_joystick1_button1','ev_joystick1_button2',\n            'ev_joystick1_button3','ev_joystick1_button4','ev_joystick1_button5','ev_joystick1_button6','ev_joystick1_button7','ev_joystick1_button8','ev_joystick1_down','ev_joystick1_left','ev_joystick1_right',\n            'ev_joystick1_up','ev_joystick2_button1','ev_joystick2_button2','ev_joystick2_button3','ev_joystick2_button4','ev_joystick2_button5','ev_joystick2_button6','ev_joystick2_button7','ev_joystick2_button8',\n            'ev_joystick2_down','ev_joystick2_left','ev_joystick2_right','ev_joystick2_up','ev_keyboard','ev_keypress','ev_keyrelease','ev_left_button','ev_left_press','ev_left_release','ev_middle_button',\n            'ev_middle_press','ev_middle_release','ev_mouse','ev_mouse_enter','ev_mouse_leave','ev_mouse_wheel_down','ev_mouse_wheel_up','ev_no_button','ev_no_more_health','ev_no_more_lives','ev_other','ev_outside',\n            'ev_right_button','ev_right_press','ev_right_release','ev_room_end','ev_room_start','ev_step','ev_step_begin','ev_step_end','ev_step_normal','ev_trigger','ev_user0','ev_user1','ev_user10','ev_user11',\n            'ev_user12','ev_user13','ev_user14','ev_user15','ev_user2','ev_user3','ev_user4','ev_user5','ev_user6','ev_user7','ev_user8','ev_user9','fa_archive','fa_bottom','fa_center','fa_directory','fa_hidden',\n            'fa_left','fa_middle','fa_readonly','fa_right','fa_sysfile','fa_top','fa_volumeid','false','gp_axislh','gp_axislv','gp_axisrh','gp_axisrv','gp_face1','gp_face2','gp_face3','gp_face4','gp_padd',\n            'gp_padl','gp_padr','gp_padu','gp_select','gp_shoulderl','gp_shoulderlb','gp_shoulderr','gp_shoulderrb','gp_start','gp_stickl','gp_stickr','input_type','lb_disp_none','lb_disp_numeric','lb_disp_time_ms',\n            'lb_disp_time_sec','lb_sort_ascending','lb_sort_descending','lb_sort_none','leaderboard_type_number','leaderboard_type_time_mins_secs','matrix_projection','matrix_view','matrix_world','mb_any',\n            'mb_left','mb_middle','mb_none','mb_right','network_socket_bluetooth','network_socket_tcp','network_socket_udp','network_type_connect','network_type_data','network_type_disconnect',\n            'of_challenge_lose','of_challenge_tie','of_challenge_win','os_android','os_ios','os_linux','os_macosx','os_psp','os_symbian','os_tizen','os_unknown','os_win32','os_win8native','os_windows','os_winphone',\n            'ov_achievements','ov_community','ov_friends','ov_gamegroup','ov_players','ov_settings','phy_debug_render_aabb','phy_debug_render_collision_pairs','phy_debug_render_coms',\n            'phy_debug_render_core_shapes','phy_debug_render_joints','phy_debug_render_obb','phy_debug_render_shapes','phy_joint_anchor_1_x','phy_joint_anchor_1_y','phy_joint_anchor_2_x','phy_joint_anchor_2_y',\n            'phy_joint_angle','phy_joint_angle_limits','phy_joint_damping_ratio','phy_joint_frequency','phy_joint_length_1','phy_joint_length_2','phy_joint_lower_angle_limit','phy_joint_max_motor_force',\n            'phy_joint_max_motor_torque','phy_joint_motor_force','phy_joint_motor_speed','phy_joint_motor_torque','phy_joint_reaction_force_x','phy_joint_reaction_force_y','phy_joint_reaction_torque','phy_joint_speed',\n            'phy_joint_translation','phy_joint_upper_angle_limit','pi','pr_linelist','pr_linestrip','pr_pointlist','pr_trianglefan','pr_trianglelist','pr_trianglestrip','ps_change_all','ps_change_motion',\n            'ps_change_shape','ps_deflect_horizontal','ps_deflect_vertical','ps_distr_gaussian','ps_distr_invgaussian','ps_distr_linear','ps_force_constant','ps_force_linear','ps_force_quadratic','ps_shape_diamond',\n            'ps_shape_ellipse','ps_shape_line','ps_shape_rectangle','pt_shape_circle','pt_shape_cloud','pt_shape_disk','pt_shape_explosion','pt_shape_flare','pt_shape_line','pt_shape_pixel','pt_shape_ring',\n            'pt_shape_smoke','pt_shape_snow','pt_shape_spark','pt_shape_sphere','pt_shape_square','pt_shape_star','se_chorus','se_compressor','se_echo','se_equalizer','se_flanger','se_gargle','se_none','se_reverb',\n            'text_type','true','ty_real','ty_string','vertex_type_colour','vertex_type_float1','vertex_type_float2','vertex_type_float3','vertex_type_float4','vertex_type_ubyte4','vertex_usage_binormal',\n            'vertex_usage_blendindices','vertex_usage_blendweight','vertex_usage_colour','vertex_usage_depth','vertex_usage_fog','vertex_usage_normal','vertex_usage_position','vertex_usage_psize','vertex_usage_sample',\n            'vertex_usage_tagnet','vertex_usage_textcoord','vk_add','vk_alt','vk_anykey','vk_backspace','vk_control','vk_decimal','vk_delete','vk_divide','vk_down','vk_end','vk_enter','vk_escape','vk_f1','vk_f10',\n            'vk_f11','vk_f12','vk_f2','vk_f3','vk_f4','vk_f5','vk_f6','vk_f7','vk_f8','vk_f9','vk_home','vk_insert','vk_lalt','vk_lcontrol','vk_left','vk_lshift','vk_multiply','vk_nokey','vk_numpad0','vk_numpad1',\n            'vk_numpad2','vk_numpad3','vk_numpad4','vk_numpad5','vk_numpad6','vk_numpad7','vk_numpad8','vk_numpad9','vk_pagedown','vk_pageup','vk_pause','vk_printscreen','vk_ralt','vk_rcontrol','vk_return','vk_right',\n            'vk_rshift','vk_shift','vk_space','vk_subtract','vk_tab','vk_up'\n            ),\n\n        // Keywords\n        4 => array(\n            'if','while','do','until','exit','break','continue','for','switch','case','default',\n            'else','then','begin','end','repeat','var','globalvar','with','div','mod',\n            'self','noone','other','global','local','return',\n            'and','or','xor','not'\n            )\n        ),\n\n    'SYMBOLS' => array(\n        // Angled brackets\n        0 => array('{','}'),\n        // Other brackets\n        1 => array('(',')','[',']'),\n        // Operators (NOTE: Operators and/or/not/xor are included in the keywords section. These are non-alphanumeric operators\n        2 => array('&&', '||', '^^', '&', '|', '^',\n            '<', '<=', '==', '!=', '>', '>=', '=',\n            '<<', '>>',\n            '+=', '-=', '*=', '/=',\n            '+', '-', '*', '/',\n            '!', '~', ',', ';'\n        )),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #800000;',\n            2 => 'color: #800000;',\n            3 => 'color: #800000;',\n            4 => 'color: #000080; font-weight: bold;'),\n        'COMMENTS' => array(\n            1 => 'font-style: italic; color: #008000;',\n            'MULTI' => 'font-style: italic; color: #008000;'),\n        'ESCAPE_CHAR' => array(\n            0 => ''),\n        'BRACKETS' => array(\n            0 => 'color: #000080;'),\n        'STRINGS' => array(\n            0 => 'color: #0000FF;',\n            1 => 'color: #0000FF;'),\n        'NUMBERS' => array(\n            0 => 'color: #0000FF;'),\n        'METHODS' => array(\n            0 => 'color: #800000;'),\n        'SYMBOLS' => array(\n            0 => 'color: #000080; font-weight: bold;',\n            1 => 'color: #000000;',\n            2 => 'color: #000000;'),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/gnuplot.php",
    "content": "<?php\n/*************************************************************************************\n * gnuplot.php\n * ----------\n * Author: Milian Wolff (mail@milianw.de)\n * Copyright: (c) 2008 Milian Wolff (http://milianw.de)\n * Release Version: 1.0.9.1\n * Date Started: 2008/07/07\n *\n * Gnuplot script language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/07/07 (1.0.8)\n *  -  Initial import\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Gnuplot',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('`', '\"', \"'\"),\n    'ESCAPE_CHAR' => '\\\\',\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC |\n        GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_SCI_SHORT |\n        GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        // copy output of help command, indent properly and use this replace regexp:\n        // ([a-z0-9_\\-]+)(( )+|$)          =>     '\\1',\\3\n\n        // commands as found in `help commands`\n        1 => array(\n            'bind', 'call', 'cd', 'clear',\n            'exit', 'fit', 'help', 'history',\n            'if', 'load', 'lower', 'pause',\n            'plot', 'print', 'pwd', 'quit',\n            'raise', 'replot', 'reread', 'reset',\n            'save', 'set', 'shell', 'show',\n            'splot', 'system', 'test', 'unset',\n            'update'\n            ),\n        2 => array(\n            // set commands as returned by `help set`\n            'angles', 'arrow', 'autoscale', 'bars',\n            'bmargin', 'border', 'boxwidth', 'cbdata',\n            'cbdtics', 'cblabel', 'cbmtics', 'cbrange',\n            'cbtics', 'clabel', 'clip', 'cntrparam',\n            'colorbox', 'contour', 'datafile', 'date_specifiers',\n            'decimalsign', 'dgrid3d', 'dummy', 'encoding',\n            'fontpath', 'format', 'grid',\n            'hidden3d', 'historysize', 'isosamples', 'key',\n            'label', 'lmargin', 'loadpath', 'locale',\n            'log', 'logscale', 'macros', 'mapping',\n            'margin', 'missing', 'mouse', 'multiplot',\n            'mx2tics', 'mxtics', 'my2tics', 'mytics',\n            'mztics', 'object', 'offsets', 'origin',\n            'output', 'palette', 'parametric', 'pm3d',\n            'pointsize', 'polar', 'rmargin',\n            'rrange', 'samples', 'size', 'style',\n            'surface', 'table', 'term', 'terminal',\n            'termoption', 'tics', 'ticscale', 'ticslevel',\n            'time_specifiers', 'timefmt', 'timestamp', 'title',\n            'trange', 'urange', 'view',\n            'vrange', 'x2data', 'x2dtics', 'x2label',\n            'x2mtics', 'x2range', 'x2tics', 'x2zeroaxis',\n            'xdata', 'xdtics', 'xlabel', 'xmtics',\n            'xrange', 'xtics', 'xyplane', 'xzeroaxis',\n            'y2data', 'y2dtics', 'y2label', 'y2mtics',\n            'y2range', 'y2tics', 'y2zeroaxis', 'ydata',\n            'ydtics', 'ylabel', 'ymtics', 'yrange',\n            'ytics', 'yzeroaxis', 'zdata', 'zdtics',\n            'zero', 'zeroaxis', 'zlabel', 'zmtics',\n            'zrange', 'ztics', 'zzeroaxis',\n            // same but with leading no\n            'noangles', 'noarrow', 'noautoscale', 'nobars',\n            'nobmargin', 'noborder', 'noboxwidth', 'nocbdata',\n            'nocbdtics', 'nocblabel', 'nocbmtics', 'nocbrange',\n            'nocbtics', 'noclabel', 'noclip', 'nocntrparam',\n            'nocolorbox', 'nocontour', 'nodatafile', 'nodate_specifiers',\n            'nodecimalsign', 'nodgrid3d', 'nodummy', 'noencoding',\n            'nofit', 'nofontpath', 'noformat', 'nogrid',\n            'nohidden3d', 'nohistorysize', 'noisosamples', 'nokey',\n            'nolabel', 'nolmargin', 'noloadpath', 'nolocale',\n            'nolog', 'nologscale', 'nomacros', 'nomapping',\n            'nomargin', 'nomissing', 'nomouse', 'nomultiplot',\n            'nomx2tics', 'nomxtics', 'nomy2tics', 'nomytics',\n            'nomztics', 'noobject', 'nooffsets', 'noorigin',\n            'nooutput', 'nopalette', 'noparametric', 'nopm3d',\n            'nopointsize', 'nopolar', 'noprint', 'normargin',\n            'norrange', 'nosamples', 'nosize', 'nostyle',\n            'nosurface', 'notable', 'noterm', 'noterminal',\n            'notermoption', 'notics', 'noticscale', 'noticslevel',\n            'notime_specifiers', 'notimefmt', 'notimestamp', 'notitle',\n            'notmargin', 'notrange', 'nourange', 'noview',\n            'novrange', 'nox2data', 'nox2dtics', 'nox2label',\n            'nox2mtics', 'nox2range', 'nox2tics', 'nox2zeroaxis',\n            'noxdata', 'noxdtics', 'noxlabel', 'noxmtics',\n            'noxrange', 'noxtics', 'noxyplane', 'noxzeroaxis',\n            'noy2data', 'noy2dtics', 'noy2label', 'noy2mtics',\n            'noy2range', 'noy2tics', 'noy2zeroaxis', 'noydata',\n            'noydtics', 'noylabel', 'noymtics', 'noyrange',\n            'noytics', 'noyzeroaxis', 'nozdata', 'nozdtics',\n            'nozero', 'nozeroaxis', 'nozlabel', 'nozmtics',\n            'nozrange', 'noztics', 'nozzeroaxis',\n            ),\n        3 => array(\n            // predefined variables\n            'pi', 'NaN', 'GNUTERM',\n            'GPVAL_X_MIN', 'GPVAL_X_MAX', 'GPVAL_Y_MIN', 'GPVAL_Y_MAX',\n            'GPVAL_TERM', 'GPVAL_TERMOPTIONS', 'GPVAL_OUTPUT',\n            'GPVAL_VERSION', 'GPVAL_PATcHLEVEL', 'GPVAL_COMPILE_OPTIONS',\n            'MOUSE_KEY', 'MOUSE_X', 'MOUSE_X2', 'MOUSE_Y', 'MOUSE_Y2',\n            'MOUSE_BUTTON', 'MOUSE_SHIFT', 'MOUSE_ALT', 'MOUSE_CTRL'\n            ),\n        4 => array(\n            // predefined functions `help functions`\n            'abs', 'acos', 'acosh', 'arg',\n            'asin', 'asinh', 'atan', 'atan2',\n            'atanh', 'besj0', 'besj1', 'besy0',\n            'besy1', 'ceil', 'column', 'cos',\n            'cosh', 'defined', 'erf', 'erfc',\n            'exists', 'exp', 'floor', 'gamma',\n            'gprintf', 'ibeta', 'igamma', 'imag',\n            'int', 'inverf', 'invnorm', 'lambertw',\n            'lgamma', 'log10', 'norm',\n            'rand', 'random', 'real', 'sgn',\n            'sin', 'sinh', 'sprintf', 'sqrt',\n            'stringcolumn', 'strlen', 'strstrt', 'substr',\n            'tan', 'tanh', 'timecolumn',\n            'tm_hour', 'tm_mday', 'tm_min', 'tm_mon',\n            'tm_sec', 'tm_wday', 'tm_yday', 'tm_year',\n            'valid', 'word', 'words',\n            ),\n        5 => array(\n            // mixed arguments\n            // there is no sane way to get these ones easily...\n            'autofreq', 'x', 'y', 'z',\n            'lt', 'linetype', 'lw', 'linewidth', 'ls', 'linestyle',\n            'out', 'rotate by', 'screen',\n            'enhanced', 'via',\n            // `help set key`\n            'on', 'off', 'default', 'inside', 'outside', 'tmargin',\n            'at', 'left', 'right', 'center', 'top', 'bottom', 'vertical', 'horizontal', 'Left', 'Right',\n            'noreverse', 'reverse', 'noinvert', 'invert', 'samplen', 'spacing', 'width', 'height',\n            'noautotitle', 'autotitle', 'noenhanced', 'nobox', 'box',\n\n            // help set terminal postscript\n            'landscape', 'portrait', 'eps', 'defaultplex', 'simplex', 'duplex',\n            'fontfile', 'add', 'delete', 'nofontfiles', 'level1', 'leveldefault',\n            'color', 'colour', 'monochrome', 'solid', 'dashed', 'dashlength', 'dl',\n            'rounded', 'butt', 'palfuncparam', 'blacktext', 'colortext', 'colourtext',\n            'font',\n\n            // help set terminal png\n            'notransparent', 'transparent', 'nointerlace', 'interlace',\n            'notruecolor', 'truecolor', 'tiny', 'small', 'medium', 'large', 'giant',\n            'nocrop', 'crop',\n\n            // `help plot`\n            'acsplines', 'bezier', 'binary', 'csplines',\n            'every',\n            'example', 'frequency', 'index', 'matrix',\n            'ranges', 'sbezier', 'smooth',\n            'special-filenames', 'thru',\n            'unique', 'using', 'with',\n\n            // `help plotting styles`\n            'boxerrorbars', 'boxes', 'boxxyerrorbars', 'candlesticks',\n            'dots', 'errorbars', 'errorlines', 'filledcurves',\n            'financebars', 'fsteps', 'histeps', 'histograms',\n            'image', 'impulses', 'labels', 'lines',\n            'linespoints', 'points', 'rgbimage', 'steps',\n            'vectors', 'xerrorbars', 'xerrorlines', 'xyerrorbars',\n            'xyerrorlines', 'yerrorbars', 'yerrorlines',\n\n\n            // terminals `help terminals`\n            'aed512', 'aed767', 'aifm', 'bitgraph',\n            'cgm', 'corel', 'dumb', 'dxf',\n            'eepic', 'emf', 'emtex', 'epslatex',\n            'epson-180dpi', 'epson-60dpi', 'epson-lx800', 'fig',\n            'gif', 'gpic', 'hp2623a', 'hp2648',\n            'hp500c', 'hpdj', 'hpgl', 'hpljii',\n            'hppj', 'imagen', 'jpeg', 'kc-tek40xx',\n            'km-tek40xx', 'latex', 'mf', 'mif',\n            'mp', 'nec-cp6', 'okidata', 'pbm',\n            'pcl5', 'png', 'pop', 'postscript',\n            'pslatex', 'pstex', 'pstricks', 'push',\n            'qms', 'regis', 'selanar', 'starc',\n            'svg', 'tandy-60dpi', 'tek40xx', 'tek410x',\n            'texdraw', 'tgif', 'tkcanvas', 'tpic',\n            'vttek', 'x11', 'xlib',\n            )\n        ),\n    'REGEXPS' => array(\n        //Variable assignment\n        0 => \"(?<![?;>\\w])([a-zA-Z_][a-zA-Z0-9_]*)\\s*=\",\n        //Numbers with unit\n        1 => \"(?<=^|\\s)([0-9]*\\.?[0-9]+\\s*cm)\"\n        ),\n    'SYMBOLS' => array(\n        '-', '+', '~', '!', '$',\n        '*', '/', '%', '=', '<', '>', '&',\n        '^', '|', '.', 'eq', 'ne', '?:', ':', '`', ','\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #990000;',\n            3 => 'color: #550000;',\n            4 => 'color: #7a0874;',\n            5 => 'color: #448888;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #adadad; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight:bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000099; font-weight:bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;',\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000; font-weight: bold;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #007800;',\n            1 => 'color: #cc66cc;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => 'http://www.google.com/search?q=%22set+{FNAME}%22+site%3Ahttp%3A%2F%2Fwww.gnuplot.info%2Fdocs%2F&amp;btnI=lucky',\n        3 => '',\n        4 => '',\n        5 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            4 => array(\n                'DISALLOWED_AFTER' =>  \"(?![\\.\\-a-zA-Z0-9_%])\"\n            )\n        )\n    ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/go.php",
    "content": "<?php\n/*************************************************************************************\n * go.php\n * --------\n * Author: Markus Jarderot (mizardx at gmail dot com)\n * Copyright: (c) 2010 Markus Jarderot\n * Release Version: 1.0.9.1\n * Date Started: 2010/05/20\n *\n * Go language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/05/20 (1.0.8.9)\n *  -  First Release\n *\n * TODO (updated 2010/05/20)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Go',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        # Raw strings (escapes and linebreaks ignored)\n        2 => \"#`[^`]*`#\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', \"'\"),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        1 => \"#\\\\\\\\[abfnrtv\\\\\\\\\\'\\\"]#\",\n        2 => \"#\\\\\\\\[0-7]{3}#\",\n        3 => \"#\\\\\\\\x[0-9a-fA-F]{2}#\",\n        4 => \"#\\\\\\\\u[0-9a-fA-F]{4}#\",\n        5 => \"#\\\\\\\\U[0-9a-fA-F]{8}#\"\n        ),\n    'NUMBERS' => array(\n        # integer literals (possibly imaginary)\n        0 => '\\b([1-9][0-9]*i?|0[0-7]*|0[xX][0-9a-f]+|0[0-9]*i)\\b',\n        # real floating point literals\n        1 => '\\b((?:\\d+\\.\\d*(?:[Ee][+-]?\\d+\\b)?|\\.\\d+(?:[Ee][+-]?\\d+)?|\\d+[Ee][+-]?\\d+)?)\\b',\n        # imaginary floating point literals\n        2 => '\\b((?:\\d+\\.\\d*(?:[Ee][+-]?\\d+)?|\\.\\d+(?:[Ee][+-]?\\d+)?|\\d+[Ee][+-]?\\d+)?i)\\b'\n        ),\n    'KEYWORDS' => array(\n        # statements\n        1 => array(\n            'break', 'case', 'const', 'continue', 'default', 'defer', 'else',\n            'fallthrough', 'for', 'go', 'goto', 'if', 'import', 'package',\n            'range', 'return', 'select', 'switch', 'type', 'var'\n            ),\n        # literals\n        2 => array(\n            'nil', 'true', 'false'\n            ),\n        # built-in functions\n        3 => array(\n            'close', 'closed', 'len', 'cap', 'new', 'make', 'copy', 'cmplx',\n            'real', 'imag', 'panic', 'recover', 'print', 'println'\n            ),\n        # built-in types\n        4 => array(\n            'chan', 'func', 'interface', 'map', 'struct', 'bool', 'uint8',\n            'uint16', 'uint32', 'uint64', 'int8', 'int16', 'int32', 'int64',\n            'float32', 'float64', 'complex64', 'complex128', 'byte', 'uint',\n            'int', 'float', 'complex', 'uintptr', 'string'\n            ),\n        # library types\n        5 => array(\n            'aes.Cipher', 'aes.KeySizeError', 'ascii85.CorruptInputError', 'asn1.BitString',\n            'asn1.RawValue', 'asn1.StructuralError', 'asn1.SyntaxError', 'ast.ChanDir',\n            'ast.Comment', 'ast.CommentGroup', 'ast.Decl', 'ast.Expr', 'ast.Field',\n            'ast.FieldList', 'ast.File', 'ast.Filter', 'ast.MergeMode', 'ast.Node',\n            'ast.ObjKind', 'ast.Object', 'ast.Package', 'ast.Scope', 'ast.Stmt',\n            'ast.Visitor', 'av.Color', 'av.Image', 'av.Window', 'base64.CorruptInputError',\n            'base64.Encoding', 'big.Int', 'big.Word', 'bignum.Integer', 'bignum.Rational',\n            'binary.ByteOrder', 'block.Cipher', 'block.EAXTagError', 'blowfish.Cipher',\n            'blowfish.KeySizeError', 'bufio.BufSizeError', 'bufio.Error', 'bufio.ReadWriter',\n            'bufio.Reader', 'bufio.Writer', 'bytes.Buffer', 'datafmt.Environment',\n            'datafmt.Format', 'datafmt.Formatter', 'datafmt.FormatterMap', 'datafmt.State',\n            'doc.Filter', 'doc.FuncDoc', 'doc.PackageDoc', 'doc.TypeDoc', 'doc.ValueDoc',\n            'draw.Color', 'draw.Context', 'draw.Image', 'draw.Mouse', 'draw.Op',\n            'draw.Point', 'draw.Rectangle', 'dwarf.AddrType', 'dwarf.ArrayType',\n            'dwarf.Attr', 'dwarf.BasicType', 'dwarf.BoolType', 'dwarf.CharType',\n            'dwarf.CommonType', 'dwarf.ComplexType', 'dwarf.Data', 'dwarf.DecodeError',\n            'dwarf.DotDotDotType', 'dwarf.Entry', 'dwarf.EnumType', 'dwarf.EnumValue',\n            'dwarf.Field', 'dwarf.FloatType', 'dwarf.FuncType', 'dwarf.IntType',\n            'dwarf.Offset', 'dwarf.PtrType', 'dwarf.QualType', 'dwarf.Reader',\n            'dwarf.StructField', 'dwarf.StructType', 'dwarf.Tag', 'dwarf.Type',\n            'dwarf.TypedefType', 'dwarf.UcharType', 'dwarf.UintType', 'dwarf.VoidType',\n            'elf.Class', 'elf.Data', 'elf.Dyn32', 'elf.Dyn64', 'elf.DynFlag', 'elf.DynTag',\n            'elf.File', 'elf.FileHeader', 'elf.FormatError', 'elf.Header32', 'elf.Header64',\n            'elf.Machine', 'elf.NType', 'elf.OSABI', 'elf.Prog', 'elf.Prog32', 'elf.Prog64',\n            'elf.ProgFlag', 'elf.ProgHeader', 'elf.ProgType', 'elf.R_386', 'elf.R_ALPHA',\n            'elf.R_ARM', 'elf.R_PPC', 'elf.R_SPARC', 'elf.R_X86_64', 'elf.Rel32',\n            'elf.Rel64', 'elf.Rela32', 'elf.Rela64', 'elf.Section', 'elf.Section32',\n            'elf.Section64', 'elf.SectionFlag', 'elf.SectionHeader', 'elf.SectionIndex',\n            'elf.SectionType', 'elf.Sym32', 'elf.Sym64', 'elf.SymBind', 'elf.SymType',\n            'elf.SymVis', 'elf.Symbol', 'elf.Type', 'elf.Version', 'eval.ArrayType',\n            'eval.ArrayValue', 'eval.BoolValue', 'eval.BoundedType', 'eval.ChanType',\n            'eval.Code', 'eval.Constant', 'eval.Def', 'eval.DivByZeroError',\n            'eval.FloatValue', 'eval.Frame', 'eval.Func', 'eval.FuncDecl', 'eval.FuncType',\n            'eval.FuncValue', 'eval.IMethod', 'eval.IdealFloatValue', 'eval.IdealIntValue',\n            'eval.IndexError', 'eval.IntValue', 'eval.Interface', 'eval.InterfaceType',\n            'eval.InterfaceValue', 'eval.KeyError', 'eval.Map', 'eval.MapType',\n            'eval.MapValue', 'eval.Method', 'eval.MultiType', 'eval.NamedType',\n            'eval.NegativeCapacityError', 'eval.NegativeLengthError', 'eval.NilPointerError',\n            'eval.PtrType', 'eval.PtrValue', 'eval.RedefinitionError', 'eval.Scope',\n            'eval.Slice', 'eval.SliceError', 'eval.SliceType', 'eval.SliceValue',\n            'eval.StringValue', 'eval.StructField', 'eval.StructType', 'eval.StructValue',\n            'eval.Thread', 'eval.Type', 'eval.UintValue', 'eval.Value', 'eval.Variable',\n            'eval.World', 'exec.Cmd', 'expvar.Int', 'expvar.IntFunc', 'expvar.KeyValue',\n            'expvar.Map', 'expvar.String', 'expvar.StringFunc', 'expvar.Var', 'flag.Flag',\n            'flag.Value', 'flate.CorruptInputError', 'flate.InternalError',\n            'flate.ReadError', 'flate.Reader', 'flate.WriteError', 'flate.WrongValueError',\n            'fmt.Formatter', 'fmt.GoStringer', 'fmt.State', 'fmt.Stringer',\n            'git85.CorruptInputError', 'gob.Decoder', 'gob.Encoder', 'gosym.DecodingError',\n            'gosym.Func', 'gosym.LineTable', 'gosym.Obj', 'gosym.Sym', 'gosym.Table',\n            'gosym.UnknownFileError', 'gosym.UnknownLineError', 'gzip.Deflater',\n            'gzip.Header', 'gzip.Inflater', 'hash.Hash', 'hash.Hash32', 'hash.Hash64',\n            'heap.Interface', 'hex.InvalidHexCharError', 'hex.OddLengthInputError',\n            'http.ClientConn', 'http.Conn', 'http.Handler', 'http.HandlerFunc',\n            'http.ProtocolError', 'http.Request', 'http.Response', 'http.ServeMux',\n            'http.ServerConn', 'http.URL', 'http.URLError', 'http.URLEscapeError',\n            'image.Alpha', 'image.AlphaColor', 'image.Color', 'image.ColorImage',\n            'image.ColorModel', 'image.ColorModelFunc', 'image.Image', 'image.NRGBA',\n            'image.NRGBA64', 'image.NRGBA64Color', 'image.NRGBAColor', 'image.Paletted',\n            'image.RGBA', 'image.RGBA64', 'image.RGBA64Color', 'image.RGBAColor',\n            'io.Closer', 'io.Error', 'io.PipeReader', 'io.PipeWriter', 'io.ReadByter',\n            'io.ReadCloser', 'io.ReadSeeker', 'io.ReadWriteCloser', 'io.ReadWriteSeeker',\n            'io.ReadWriter', 'io.Reader', 'io.ReaderAt', 'io.ReaderFrom', 'io.SectionReader',\n            'io.Seeker', 'io.WriteCloser', 'io.WriteSeeker', 'io.Writer', 'io.WriterAt',\n            'io.WriterTo', 'iterable.Func', 'iterable.Group', 'iterable.Grouper',\n            'iterable.Injector', 'iterable.Iterable', 'jpeg.FormatError', 'jpeg.Reader',\n            'jpeg.UnsupportedError', 'json.Decoder', 'json.Encoder',\n            'json.InvalidUnmarshalError', 'json.Marshaler', 'json.MarshalerError',\n            'json.SyntaxError', 'json.UnmarshalTypeError', 'json.Unmarshaler',\n            'json.UnsupportedTypeError', 'list.Element', 'list.List', 'log.Logger',\n            'macho.Cpu', 'macho.File', 'macho.FileHeader', 'macho.FormatError', 'macho.Load',\n            'macho.LoadCmd', 'macho.Regs386', 'macho.RegsAMD64', 'macho.Section',\n            'macho.Section32', 'macho.Section64', 'macho.SectionHeader', 'macho.Segment',\n            'macho.Segment32', 'macho.Segment64', 'macho.SegmentHeader', 'macho.Thread',\n            'macho.Type', 'net.Addr', 'net.AddrError', 'net.Conn', 'net.DNSConfigError',\n            'net.DNSError', 'net.Error', 'net.InvalidAddrError', 'net.InvalidConnError',\n            'net.Listener', 'net.OpError', 'net.PacketConn', 'net.TCPAddr', 'net.TCPConn',\n            'net.TCPListener', 'net.UDPAddr', 'net.UDPConn', 'net.UnixAddr', 'net.UnixConn',\n            'net.UnixListener', 'net.UnknownNetworkError', 'net.UnknownSocketError',\n            'netchan.Dir', 'netchan.Exporter', 'netchan.Importer', 'nntp.Article',\n            'nntp.Conn', 'nntp.Error', 'nntp.Group', 'nntp.ProtocolError', 'ogle.Arch',\n            'ogle.ArchAlignedMultiple', 'ogle.ArchLSB', 'ogle.Breakpoint', 'ogle.Event',\n            'ogle.EventAction', 'ogle.EventHandler', 'ogle.EventHook', 'ogle.FormatError',\n            'ogle.Frame', 'ogle.Goroutine', 'ogle.GoroutineCreate', 'ogle.GoroutineExit',\n            'ogle.NoCurrentGoroutine', 'ogle.NotOnStack', 'ogle.Process',\n            'ogle.ProcessNotStopped', 'ogle.ReadOnlyError', 'ogle.RemoteMismatchError',\n            'ogle.UnknownArchitecture', 'ogle.UnknownGoroutine', 'ogle.UsageError',\n            'os.Errno', 'os.Error', 'os.ErrorString', 'os.File', 'os.FileInfo',\n            'os.LinkError', 'os.PathError', 'os.SyscallError', 'os.Waitmsg', 'patch.Diff',\n            'patch.File', 'patch.GitBinaryLiteral', 'patch.Op', 'patch.Set',\n            'patch.SyntaxError', 'patch.TextChunk', 'patch.Verb', 'path.Visitor',\n            'pdp1.HaltError', 'pdp1.LoopError', 'pdp1.Trapper', 'pdp1.UnknownInstrError',\n            'pdp1.Word', 'pem.Block', 'png.FormatError', 'png.IDATDecodingError',\n            'png.UnsupportedError', 'printer.Config', 'printer.HTMLTag', 'printer.Styler',\n            'proc.Breakpoint', 'proc.Cause', 'proc.Process', 'proc.ProcessExited',\n            'proc.Regs', 'proc.Signal', 'proc.Stopped', 'proc.Thread', 'proc.ThreadCreate',\n            'proc.ThreadExit', 'proc.Word', 'quick.CheckEqualError', 'quick.CheckError',\n            'quick.Config', 'quick.Generator', 'quick.SetupError', 'rand.Rand',\n            'rand.Source', 'rand.Zipf', 'rc4.Cipher', 'rc4.KeySizeError',\n            'reflect.ArrayOrSliceType', 'reflect.ArrayOrSliceValue', 'reflect.ArrayType',\n            'reflect.ArrayValue', 'reflect.BoolType', 'reflect.BoolValue', 'reflect.ChanDir',\n            'reflect.ChanType', 'reflect.ChanValue', 'reflect.Complex128Type',\n            'reflect.Complex128Value', 'reflect.Complex64Type', 'reflect.Complex64Value',\n            'reflect.ComplexType', 'reflect.ComplexValue', 'reflect.Float32Type',\n            'reflect.Float32Value', 'reflect.Float64Type', 'reflect.Float64Value',\n            'reflect.FloatType', 'reflect.FloatValue', 'reflect.FuncType',\n            'reflect.FuncValue', 'reflect.Int16Type', 'reflect.Int16Value',\n            'reflect.Int32Type', 'reflect.Int32Value', 'reflect.Int64Type',\n            'reflect.Int64Value', 'reflect.Int8Type', 'reflect.Int8Value', 'reflect.IntType',\n            'reflect.IntValue', 'reflect.InterfaceType', 'reflect.InterfaceValue',\n            'reflect.MapType', 'reflect.MapValue', 'reflect.Method', 'reflect.PtrType',\n            'reflect.PtrValue', 'reflect.SliceHeader', 'reflect.SliceType',\n            'reflect.SliceValue', 'reflect.StringHeader', 'reflect.StringType',\n            'reflect.StringValue', 'reflect.StructField', 'reflect.StructType',\n            'reflect.StructValue', 'reflect.Type', 'reflect.Uint16Type',\n            'reflect.Uint16Value', 'reflect.Uint32Type', 'reflect.Uint32Value',\n            'reflect.Uint64Type', 'reflect.Uint64Value', 'reflect.Uint8Type',\n            'reflect.Uint8Value', 'reflect.UintType', 'reflect.UintValue',\n            'reflect.UintptrType', 'reflect.UintptrValue', 'reflect.UnsafePointerType',\n            'reflect.UnsafePointerValue', 'reflect.Value', 'regexp.Error', 'regexp.Regexp',\n            'ring.Ring', 'rpc.Call', 'rpc.Client', 'rpc.ClientCodec', 'rpc.InvalidRequest',\n            'rpc.Request', 'rpc.Response', 'rpc.ServerCodec', 'rsa.DecryptionError',\n            'rsa.MessageTooLongError', 'rsa.PKCS1v15Hash', 'rsa.PrivateKey', 'rsa.PublicKey',\n            'rsa.VerificationError', 'runtime.ArrayType', 'runtime.BoolType',\n            'runtime.ChanDir', 'runtime.ChanType', 'runtime.Complex128Type',\n            'runtime.Complex64Type', 'runtime.ComplexType', 'runtime.Error',\n            'runtime.Float32Type', 'runtime.Float64Type', 'runtime.FloatType',\n            'runtime.Func', 'runtime.FuncType', 'runtime.Int16Type', 'runtime.Int32Type',\n            'runtime.Int64Type', 'runtime.Int8Type', 'runtime.IntType',\n            'runtime.InterfaceType', 'runtime.Itable', 'runtime.MapType',\n            'runtime.MemProfileRecord', 'runtime.MemStatsType', 'runtime.PtrType',\n            'runtime.SliceType', 'runtime.StringType', 'runtime.StructType', 'runtime.Type',\n            'runtime.TypeAssertionError', 'runtime.Uint16Type', 'runtime.Uint32Type',\n            'runtime.Uint64Type', 'runtime.Uint8Type', 'runtime.UintType',\n            'runtime.UintptrType', 'runtime.UnsafePointerType', 'scanner.Error',\n            'scanner.ErrorHandler', 'scanner.ErrorVector', 'scanner.Position',\n            'scanner.Scanner', 'script.Close', 'script.Closed', 'script.Event',\n            'script.ReceivedUnexpected', 'script.Recv', 'script.RecvMatch', 'script.Send',\n            'script.SetupError', 'signal.Signal', 'signal.UnixSignal', 'sort.Interface',\n            'srpc.Client', 'srpc.Errno', 'srpc.Handler', 'srpc.RPC', 'strconv.NumError',\n            'strings.Reader', 'sync.Mutex', 'sync.RWMutex',\n            'syscall.ByHandleFileInformation', 'syscall.Cmsghdr', 'syscall.Dirent',\n            'syscall.EpollEvent', 'syscall.Fbootstraptransfer_t', 'syscall.FdSet',\n            'syscall.Filetime', 'syscall.Flock_t', 'syscall.Fstore_t', 'syscall.Iovec',\n            'syscall.Kevent_t', 'syscall.Linger', 'syscall.Log2phys_t', 'syscall.Msghdr',\n            'syscall.Overlapped', 'syscall.PtraceRegs', 'syscall.Radvisory_t',\n            'syscall.RawSockaddr', 'syscall.RawSockaddrAny', 'syscall.RawSockaddrInet4',\n            'syscall.RawSockaddrInet6', 'syscall.RawSockaddrUnix', 'syscall.Rlimit',\n            'syscall.Rusage', 'syscall.Sockaddr', 'syscall.SockaddrInet4',\n            'syscall.SockaddrInet6', 'syscall.SockaddrUnix', 'syscall.Stat_t',\n            'syscall.Statfs_t', 'syscall.Sysinfo_t', 'syscall.Time_t', 'syscall.Timespec',\n            'syscall.Timeval', 'syscall.Timex', 'syscall.Tms', 'syscall.Ustat_t',\n            'syscall.Utimbuf', 'syscall.Utsname', 'syscall.WaitStatus',\n            'syscall.Win32finddata', 'syslog.Priority', 'syslog.Writer', 'tabwriter.Writer',\n            'tar.Header', 'tar.Reader', 'tar.Writer', 'template.Error',\n            'template.FormatterMap', 'template.Template', 'testing.Benchmark',\n            'testing.Regexp', 'testing.Test', 'time.ParseError', 'time.Ticker', 'time.Time',\n            'tls.CASet', 'tls.Certificate', 'tls.Config', 'tls.Conn', 'tls.ConnectionState',\n            'tls.Listener', 'token.Position', 'token.Token', 'unicode.CaseRange',\n            'unicode.Range', 'unsafe.ArbitraryType', 'vector.LessInterface',\n            'websocket.Conn', 'websocket.Draft75Handler', 'websocket.Handler',\n            'websocket.ProtocolError', 'websocket.WebSocketAddr', 'x509.Certificate',\n            'x509.ConstraintViolationError', 'x509.KeyUsage', 'x509.Name',\n            'x509.PublicKeyAlgorithm', 'x509.SignatureAlgorithm',\n            'x509.UnhandledCriticalExtension', 'x509.UnsupportedAlgorithmError', 'xml.Attr',\n            'xml.EndElement', 'xml.Name', 'xml.Parser', 'xml.ProcInst', 'xml.StartElement',\n            'xml.SyntaxError', 'xml.Token', 'xml.UnmarshalError', 'xtea.Cipher',\n            'xtea.KeySizeError'\n            )\n        ),\n    'SYMBOLS' => array(\n        # delimiters\n        1 => array(\n            '(', ')', '{', '}', '[', ']', ',', ':', ';'\n            ),\n        # assignments\n        2 => array(\n            '<<=', '!=', '%=', '&=', '&^=', '*=', '+=', '-=', '/=', ':=', '>>=',\n            '^=', '|=', '=', '++', '--'\n            ),\n        # operators\n        3 => array(\n            '<=', '<', '==', '>', '>=', '&&', '!', '||', '&', '&^', '|', '^',\n            '>>', '<<', '*', '%', '+', '-', '.', '/', '<-'),\n        # vararg\n        4 => array(\n            '...'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            # statements\n            1 => 'color: #b1b100; font-weight: bold;',\n            # literals\n            2 => 'color: #000000; font-weight: bold;',\n            # built-in functions\n            3 => 'color: #000066;',\n            # built-in types\n            4 => 'color: #993333;',\n            # library types\n            5 => 'color: #003399;'\n            ),\n        'COMMENTS' => array(\n            # single-line comments\n            1 => 'color: #666666; font-style: italic;',\n            # raw strings\n            2 => 'color: #0000ff;',\n            # multi-line comments\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            # simple escape\n            1 => 'color: #000099; font-weight: bold;',\n            # octal escape\n            2 => 'color: #000099;',\n            # hex escape\n            3 => 'color: #000099;',\n            # unicode escape\n            4 => 'color: #000099;',\n            # long unicode escape\n            5 => 'color: #000099;'\n            ),\n        'BRACKETS' => array(\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;',\n            0 => 'color: #cc66cc;' // FIXME: Duplicate array key\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #004000;'\n            ),\n        'SYMBOLS' => array(\n            # delimiters\n            1 => 'color: #339933;',\n            # assignments\n            2 => 'color: #339933;',\n            # operators\n            3 => 'color: #339933;',\n            # vararg (highlighted as a keyword)\n            4 => 'color: #000000; font-weight: bold;'\n            ),\n        'REGEXPS' => array(\n            # If CSS classes are enabled, these would be highlighted as numbers (nu0)\n            # integer literals (possibly imaginary)\n            //0 => 'color: #cc66cc;',\n            # real floating point literals\n            //1 => 'color: #cc66cc;',\n            # imaginary floating point literals\n            //2 => 'color: #cc66cc;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => 'http://golang.org/search?q={FNAME}'\n        ),\n    'REGEXPS' => array(\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(1 => '.'),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'BRACKETS' => GESHI_NEVER, # handled by symbols\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/groovy.php",
    "content": "<?php\n/*************************************************************************************\n * groovy.php\n * ----------\n * Author: Ivan F. Villanueva B. (geshi_groovy@artificialidea.com)\n * Copyright: (c) 2006 Ivan F. Villanueva B.(http://www.artificialidea.com)\n * Release Version: 1.0.9.1\n * Date Started: 2006/04/29\n *\n * Groovy language file for GeSHi.\n *\n * Keywords from http: http://docs.codehaus.org/download/attachments/2715/groovy-reference-card.pdf?version=1\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n * 2006/04/29 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2006/04/29)\n * -------------------------\n * Testing\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Groovy',\n    'COMMENT_SINGLE' => array(1 => '//', 3 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Import and Package directives (Basic Support only)\n        2 => '/(?:(?<=import[\\\\n\\\\s])|(?<=package[\\\\n\\\\s]))[\\\\n\\\\s]*([a-zA-Z0-9_]+\\\\.)*([a-zA-Z0-9_]+|\\*)(?=[\\n\\s;])/i',\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'''\", '\"\"\"', \"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'case', 'do', 'else', 'for', 'foreach', 'if', 'in', 'switch',\n            'while',\n            ),\n        2 => array(\n            'abstract', 'as', 'assert', 'break', 'catch', 'class', 'const',\n            'continue', 'def', 'default', 'enum', 'extends',\n            'false', 'final', 'finally', 'goto', 'implements', 'import',\n            'instanceof', 'interface', 'native', 'new', 'null',\n            'package', 'private', 'property', 'protected',\n            'public', 'return', 'static', 'strictfp', 'super',\n            'synchronized', 'this', 'throw', 'throws',\n            'transient', 'true', 'try', 'volatile'\n            ),\n        3 => array(\n            'AbstractAction', 'AbstractBorder', 'AbstractButton',\n            'AbstractCellEditor', 'AbstractCollection',\n            'AbstractColorChooserPanel', 'AbstractDocument',\n            'AbstractDocument.AttributeContext',\n            'AbstractDocument.Content',\n            'AbstractDocument.ElementEdit',\n            'AbstractLayoutCache',\n            'AbstractLayoutCache.NodeDimensions', 'AbstractList',\n            'AbstractListModel', 'AbstractMap',\n            'AbstractMethodError', 'AbstractSequentialList',\n            'AbstractSet', 'AbstractTableModel',\n            'AbstractUndoableEdit', 'AbstractWriter',\n            'AccessControlContext', 'AccessControlException',\n            'AccessController', 'AccessException', 'Accessible',\n            'AccessibleAction', 'AccessibleBundle',\n            'AccessibleComponent', 'AccessibleContext',\n            'AccessibleHyperlink', 'AccessibleHypertext',\n            'AccessibleIcon', 'AccessibleObject',\n            'AccessibleRelation', 'AccessibleRelationSet',\n            'AccessibleResourceBundle', 'AccessibleRole',\n            'AccessibleSelection', 'AccessibleState',\n            'AccessibleStateSet', 'AccessibleTable',\n            'AccessibleTableModelChange', 'AccessibleText',\n            'AccessibleValue', 'Acl', 'AclEntry',\n            'AclNotFoundException', 'Action', 'ActionEvent',\n            'ActionListener', 'ActionMap', 'ActionMapUIResource',\n            'Activatable', 'ActivateFailedException',\n            'ActivationDesc', 'ActivationException',\n            'ActivationGroup', 'ActivationGroupDesc',\n            'ActivationGroupDesc.CommandEnvironment',\n            'ActivationGroupID', 'ActivationID',\n            'ActivationInstantiator', 'ActivationMonitor',\n            'ActivationSystem', 'Activator', 'ActiveEvent',\n            'Adjustable', 'AdjustmentEvent',\n            'AdjustmentListener', 'Adler32', 'AffineTransform',\n            'AffineTransformOp', 'AlgorithmParameterGenerator',\n            'AlgorithmParameterGeneratorSpi',\n            'AlgorithmParameters', 'AlgorithmParameterSpec',\n            'AlgorithmParametersSpi', 'AllPermission',\n            'AlphaComposite', 'AlreadyBound',\n            'AlreadyBoundException', 'AlreadyBoundHelper',\n            'AlreadyBoundHolder', 'AncestorEvent',\n            'AncestorListener', 'Annotation', 'Any', 'AnyHolder',\n            'AnySeqHelper', 'AnySeqHolder', 'Applet',\n            'AppletContext', 'AppletInitializer', 'AppletStub',\n            'ApplicationException', 'Arc2D', 'Arc2D.Double',\n            'Arc2D.Float', 'Area', 'AreaAveragingScaleFilter',\n            'ARG_IN', 'ARG_INOUT', 'ARG_OUT',\n            'ArithmeticException', 'Array',\n            'ArrayIndexOutOfBoundsException', 'ArrayList',\n            'Arrays', 'ArrayStoreException', 'AsyncBoxView',\n            'Attribute', 'AttributedCharacterIterator',\n            'AttributedCharacterIterator.Attribute',\n            'AttributedString', 'AttributeInUseException',\n            'AttributeList', 'AttributeModificationException',\n            'Attributes', 'Attributes.Name', 'AttributeSet',\n            'AttributeSet.CharacterAttribute',\n            'AttributeSet.ColorAttribute',\n            'AttributeSet.FontAttribute',\n            'AttributeSet.ParagraphAttribute', 'AudioClip',\n            'AudioFileFormat', 'AudioFileFormat.Type',\n            'AudioFileReader', 'AudioFileWriter', 'AudioFormat',\n            'AudioFormat.Encoding', 'AudioInputStream',\n            'AudioPermission', 'AudioSystem',\n            'AuthenticationException',\n            'AuthenticationNotSupportedException',\n            'Authenticator', 'Autoscroll', 'AWTError',\n            'AWTEvent', 'AWTEventListener',\n            'AWTEventMulticaster', 'AWTException',\n            'AWTPermission', 'BadKind', 'BadLocationException',\n            'BAD_CONTEXT', 'BAD_INV_ORDER', 'BAD_OPERATION',\n            'BAD_PARAM', 'BAD_POLICY', 'BAD_POLICY_TYPE',\n            'BAD_POLICY_VALUE', 'BAD_TYPECODE', 'BandCombineOp',\n            'BandedSampleModel', 'BasicArrowButton',\n            'BasicAttribute', 'BasicAttributes', 'BasicBorders',\n            'BasicBorders.ButtonBorder',\n            'BasicBorders.FieldBorder',\n            'BasicBorders.MarginBorder',\n            'BasicBorders.MenuBarBorder',\n            'BasicBorders.RadioButtonBorder',\n            'BasicBorders.SplitPaneBorder',\n            'BasicBorders.ToggleButtonBorder',\n            'BasicButtonListener', 'BasicButtonUI',\n            'BasicCheckBoxMenuItemUI', 'BasicCheckBoxUI',\n            'BasicColorChooserUI', 'BasicComboBoxEditor',\n            'BasicComboBoxEditor.UIResource',\n            'BasicComboBoxRenderer',\n            'BasicComboBoxRenderer.UIResource',\n            'BasicComboBoxUI', 'BasicComboPopup',\n            'BasicDesktopIconUI', 'BasicDesktopPaneUI',\n            'BasicDirectoryModel', 'BasicEditorPaneUI',\n            'BasicFileChooserUI', 'BasicGraphicsUtils',\n            'BasicHTML', 'BasicIconFactory',\n            'BasicInternalFrameTitlePane',\n            'BasicInternalFrameUI', 'BasicLabelUI',\n            'BasicListUI', 'BasicLookAndFeel', 'BasicMenuBarUI',\n            'BasicMenuItemUI', 'BasicMenuUI',\n            'BasicOptionPaneUI',\n            'BasicOptionPaneUI.ButtonAreaLayout', 'BasicPanelUI',\n            'BasicPasswordFieldUI', 'BasicPermission',\n            'BasicPopupMenuSeparatorUI', 'BasicPopupMenuUI',\n            'BasicProgressBarUI', 'BasicRadioButtonMenuItemUI',\n            'BasicRadioButtonUI', 'BasicRootPaneUI',\n            'BasicScrollBarUI', 'BasicScrollPaneUI',\n            'BasicSeparatorUI', 'BasicSliderUI',\n            'BasicSplitPaneDivider', 'BasicSplitPaneUI',\n            'BasicStroke', 'BasicTabbedPaneUI',\n            'BasicTableHeaderUI', 'BasicTableUI',\n            'BasicTextAreaUI', 'BasicTextFieldUI',\n            'BasicTextPaneUI', 'BasicTextUI',\n            'BasicTextUI.BasicCaret',\n            'BasicTextUI.BasicHighlighter',\n            'BasicToggleButtonUI', 'BasicToolBarSeparatorUI',\n            'BasicToolBarUI', 'BasicToolTipUI', 'BasicTreeUI',\n            'BasicViewportUI', 'BatchUpdateException',\n            'BeanContext', 'BeanContextChild',\n            'BeanContextChildComponentProxy',\n            'BeanContextChildSupport',\n            'BeanContextContainerProxy', 'BeanContextEvent',\n            'BeanContextMembershipEvent',\n            'BeanContextMembershipListener', 'BeanContextProxy',\n            'BeanContextServiceAvailableEvent',\n            'BeanContextServiceProvider',\n            'BeanContextServiceProviderBeanInfo',\n            'BeanContextServiceRevokedEvent',\n            'BeanContextServiceRevokedListener',\n            'BeanContextServices', 'BeanContextServicesListener',\n            'BeanContextServicesSupport',\n            'BeanContextServicesSupport.BCSSServiceProvider',\n            'BeanContextSupport',\n            'BeanContextSupport.BCSIterator', 'BeanDescriptor',\n            'BeanInfo', 'Beans', 'BevelBorder', 'BigDecimal',\n            'BigInteger', 'BinaryRefAddr', 'BindException',\n            'Binding', 'BindingHelper', 'BindingHolder',\n            'BindingIterator', 'BindingIteratorHelper',\n            'BindingIteratorHolder', 'BindingIteratorOperations',\n            'BindingListHelper', 'BindingListHolder',\n            'BindingType', 'BindingTypeHelper',\n            'BindingTypeHolder', 'BitSet', 'Blob', 'BlockView',\n            'Book', 'Boolean', 'BooleanControl',\n            'BooleanControl.Type', 'BooleanHolder',\n            'BooleanSeqHelper', 'BooleanSeqHolder', 'Border',\n            'BorderFactory', 'BorderLayout', 'BorderUIResource',\n            'BorderUIResource.BevelBorderUIResource',\n            'BorderUIResource.CompoundBorderUIResource',\n            'BorderUIResource.EmptyBorderUIResource',\n            'BorderUIResource.EtchedBorderUIResource',\n            'BorderUIResource.LineBorderUIResource',\n            'BorderUIResource.MatteBorderUIResource',\n            'BorderUIResource.TitledBorderUIResource',\n            'BoundedRangeModel', 'Bounds', 'Box', 'Box.Filler',\n            'BoxedValueHelper', 'BoxLayout', 'BoxView',\n            'BreakIterator', 'BufferedImage',\n            'BufferedImageFilter', 'BufferedImageOp',\n            'BufferedInputStream', 'BufferedOutputStream',\n            'BufferedReader', 'BufferedWriter', 'Button',\n            'ButtonGroup', 'ButtonModel', 'ButtonUI', 'Byte',\n            'ByteArrayInputStream', 'ByteArrayOutputStream',\n            'ByteHolder', 'ByteLookupTable', 'Calendar',\n            'CallableStatement', 'CannotProceed',\n            'CannotProceedException', 'CannotProceedHelper',\n            'CannotProceedHolder', 'CannotRedoException',\n            'CannotUndoException', 'Canvas', 'CardLayout',\n            'Caret', 'CaretEvent', 'CaretListener', 'CellEditor',\n            'CellEditorListener', 'CellRendererPane',\n            'Certificate', 'Certificate.CertificateRep',\n            'CertificateEncodingException',\n            'CertificateException',\n            'CertificateExpiredException', 'CertificateFactory',\n            'CertificateFactorySpi',\n            'CertificateNotYetValidException',\n            'CertificateParsingException',\n            'ChangedCharSetException', 'ChangeEvent',\n            'ChangeListener', 'Character', 'Character.Subset',\n            'Character.UnicodeBlock', 'CharacterIterator',\n            'CharArrayReader', 'CharArrayWriter',\n            'CharConversionException', 'CharHolder',\n            'CharSeqHelper', 'CharSeqHolder', 'Checkbox',\n            'CheckboxGroup', 'CheckboxMenuItem',\n            'CheckedInputStream', 'CheckedOutputStream',\n            'Checksum', 'Choice', 'ChoiceFormat', 'Class',\n            'ClassCastException', 'ClassCircularityError',\n            'ClassDesc', 'ClassFormatError', 'ClassLoader',\n            'ClassNotFoundException', 'Clip', 'Clipboard',\n            'ClipboardOwner', 'Clob', 'Cloneable',\n            'CloneNotSupportedException', 'CMMException',\n            'CodeSource', 'CollationElementIterator',\n            'CollationKey', 'Collator', 'Collection',\n            'Collections', 'Color',\n            'ColorChooserComponentFactory', 'ColorChooserUI',\n            'ColorConvertOp', 'ColorModel',\n            'ColorSelectionModel', 'ColorSpace',\n            'ColorUIResource', 'ComboBoxEditor', 'ComboBoxModel',\n            'ComboBoxUI', 'ComboPopup', 'CommunicationException',\n            'COMM_FAILURE', 'Comparable', 'Comparator',\n            'Compiler', 'CompletionStatus',\n            'CompletionStatusHelper', 'Component',\n            'ComponentAdapter', 'ComponentColorModel',\n            'ComponentEvent', 'ComponentInputMap',\n            'ComponentInputMapUIResource', 'ComponentListener',\n            'ComponentOrientation', 'ComponentSampleModel',\n            'ComponentUI', 'ComponentView', 'Composite',\n            'CompositeContext', 'CompositeName', 'CompositeView',\n            'CompoundBorder', 'CompoundControl',\n            'CompoundControl.Type', 'CompoundEdit',\n            'CompoundName', 'ConcurrentModificationException',\n            'ConfigurationException', 'ConnectException',\n            'ConnectIOException', 'Connection', 'Constructor',\n            'Container', 'ContainerAdapter', 'ContainerEvent',\n            'ContainerListener', 'ContentHandler',\n            'ContentHandlerFactory', 'ContentModel', 'Context',\n            'ContextList', 'ContextNotEmptyException',\n            'ContextualRenderedImageFactory', 'Control',\n            'Control.Type', 'ControlFactory',\n            'ControllerEventListener', 'ConvolveOp', 'CRC32',\n            'CRL', 'CRLException', 'CropImageFilter', 'CSS',\n            'CSS.Attribute', 'CTX_RESTRICT_SCOPE',\n            'CubicCurve2D', 'CubicCurve2D.Double',\n            'CubicCurve2D.Float', 'Current', 'CurrentHelper',\n            'CurrentHolder', 'CurrentOperations', 'Cursor',\n            'Customizer', 'CustomMarshal', 'CustomValue',\n            'DatabaseMetaData', 'DataBuffer', 'DataBufferByte',\n            'DataBufferInt', 'DataBufferShort',\n            'DataBufferUShort', 'DataFlavor',\n            'DataFormatException', 'DatagramPacket',\n            'DatagramSocket', 'DatagramSocketImpl',\n            'DatagramSocketImplFactory', 'DataInput',\n            'DataInputStream', 'DataLine', 'DataLine.Info',\n            'DataOutput', 'DataOutputStream', 'DataTruncation',\n            'DATA_CONVERSION', 'Date', 'DateFormat',\n            'DateFormatSymbols', 'DebugGraphics',\n            'DecimalFormat', 'DecimalFormatSymbols',\n            'DefaultBoundedRangeModel', 'DefaultButtonModel',\n            'DefaultCaret', 'DefaultCellEditor',\n            'DefaultColorSelectionModel', 'DefaultComboBoxModel',\n            'DefaultDesktopManager', 'DefaultEditorKit',\n            'DefaultEditorKit.BeepAction',\n            'DefaultEditorKit.CopyAction',\n            'DefaultEditorKit.CutAction',\n            'DefaultEditorKit.DefaultKeyTypedAction',\n            'DefaultEditorKit.InsertBreakAction',\n            'DefaultEditorKit.InsertContentAction',\n            'DefaultEditorKit.InsertTabAction',\n            'DefaultEditorKit.PasteAction,',\n            'DefaultFocusManager', 'DefaultHighlighter',\n            'DefaultHighlighter.DefaultHighlightPainter',\n            'DefaultListCellRenderer',\n            'DefaultListCellRenderer.UIResource',\n            'DefaultListModel', 'DefaultListSelectionModel',\n            'DefaultMenuLayout', 'DefaultMetalTheme',\n            'DefaultMutableTreeNode',\n            'DefaultSingleSelectionModel',\n            'DefaultStyledDocument',\n            'DefaultStyledDocument.AttributeUndoableEdit',\n            'DefaultStyledDocument.ElementSpec',\n            'DefaultTableCellRenderer',\n            'DefaultTableCellRenderer.UIResource',\n            'DefaultTableColumnModel', 'DefaultTableModel',\n            'DefaultTextUI', 'DefaultTreeCellEditor',\n            'DefaultTreeCellRenderer', 'DefaultTreeModel',\n            'DefaultTreeSelectionModel', 'DefinitionKind',\n            'DefinitionKindHelper', 'Deflater',\n            'DeflaterOutputStream', 'Delegate', 'DesignMode',\n            'DesktopIconUI', 'DesktopManager', 'DesktopPaneUI',\n            'DGC', 'Dialog', 'Dictionary', 'DigestException',\n            'DigestInputStream', 'DigestOutputStream',\n            'Dimension', 'Dimension2D', 'DimensionUIResource',\n            'DirContext', 'DirectColorModel', 'DirectoryManager',\n            'DirObjectFactory', 'DirStateFactory',\n            'DirStateFactory.Result', 'DnDConstants', 'Document',\n            'DocumentEvent', 'DocumentEvent.ElementChange',\n            'DocumentEvent.EventType', 'DocumentListener',\n            'DocumentParser', 'DomainCombiner', 'DomainManager',\n            'DomainManagerOperations', 'Double', 'DoubleHolder',\n            'DoubleSeqHelper', 'DoubleSeqHolder',\n            'DragGestureEvent', 'DragGestureListener',\n            'DragGestureRecognizer', 'DragSource',\n            'DragSourceContext', 'DragSourceDragEvent',\n            'DragSourceDropEvent', 'DragSourceEvent',\n            'DragSourceListener', 'Driver', 'DriverManager',\n            'DriverPropertyInfo', 'DropTarget',\n            'DropTarget.DropTargetAutoScroller',\n            'DropTargetContext', 'DropTargetDragEvent',\n            'DropTargetDropEvent', 'DropTargetEvent',\n            'DropTargetListener', 'DSAKey',\n            'DSAKeyPairGenerator', 'DSAParameterSpec',\n            'DSAParams', 'DSAPrivateKey', 'DSAPrivateKeySpec',\n            'DSAPublicKey', 'DSAPublicKeySpec', 'DTD',\n            'DTDConstants', 'DynamicImplementation', 'DynAny',\n            'DynArray', 'DynEnum', 'DynFixed', 'DynSequence',\n            'DynStruct', 'DynUnion', 'DynValue', 'EditorKit',\n            'Element', 'ElementIterator', 'Ellipse2D',\n            'Ellipse2D.Double', 'Ellipse2D.Float', 'EmptyBorder',\n            'EmptyStackException', 'EncodedKeySpec', 'Entity',\n            'EnumControl', 'EnumControl.Type', 'Enumeration',\n            'Environment', 'EOFException', 'Error',\n            'EtchedBorder', 'Event', 'EventContext',\n            'EventDirContext', 'EventListener',\n            'EventListenerList', 'EventObject', 'EventQueue',\n            'EventSetDescriptor', 'Exception',\n            'ExceptionInInitializerError', 'ExceptionList',\n            'ExpandVetoException', 'ExportException',\n            'ExtendedRequest', 'ExtendedResponse',\n            'Externalizable', 'FeatureDescriptor', 'Field',\n            'FieldNameHelper', 'FieldPosition', 'FieldView',\n            'File', 'FileChooserUI', 'FileDescriptor',\n            'FileDialog', 'FileFilter', 'FileInputStream',\n            'FilenameFilter', 'FileNameMap',\n            'FileNotFoundException', 'FileOutputStream',\n            'FilePermission', 'FileReader', 'FileSystemView',\n            'FileView', 'FileWriter', 'FilteredImageSource',\n            'FilterInputStream', 'FilterOutputStream',\n            'FilterReader', 'FilterWriter',\n            'FixedHeightLayoutCache', 'FixedHolder',\n            'FlatteningPathIterator', 'FlavorMap', 'Float',\n            'FloatControl', 'FloatControl.Type', 'FloatHolder',\n            'FloatSeqHelper', 'FloatSeqHolder', 'FlowLayout',\n            'FlowView', 'FlowView.FlowStrategy', 'FocusAdapter',\n            'FocusEvent', 'FocusListener', 'FocusManager',\n            'Font', 'FontFormatException', 'FontMetrics',\n            'FontRenderContext', 'FontUIResource', 'Format',\n            'FormatConversionProvider', 'FormView', 'Frame',\n            'FREE_MEM', 'GapContent', 'GeneralPath',\n            'GeneralSecurityException', 'GlyphJustificationInfo',\n            'GlyphMetrics', 'GlyphVector', 'GlyphView',\n            'GlyphView.GlyphPainter', 'GradientPaint',\n            'GraphicAttribute', 'Graphics', 'Graphics2D',\n            'GraphicsConfigTemplate', 'GraphicsConfiguration',\n            'GraphicsDevice', 'GraphicsEnvironment',\n            'GrayFilter', 'GregorianCalendar',\n            'GridBagConstraints', 'GridBagLayout', 'GridLayout',\n            'Group', 'Guard', 'GuardedObject', 'GZIPInputStream',\n            'GZIPOutputStream', 'HasControls', 'HashMap',\n            'HashSet', 'Hashtable', 'HierarchyBoundsAdapter',\n            'HierarchyBoundsListener', 'HierarchyEvent',\n            'HierarchyListener', 'Highlighter',\n            'Highlighter.Highlight',\n            'Highlighter.HighlightPainter', 'HTML',\n            'HTML.Attribute', 'HTML.Tag', 'HTML.UnknownTag',\n            'HTMLDocument', 'HTMLDocument.Iterator',\n            'HTMLEditorKit', 'HTMLEditorKit.HTMLFactory',\n            'HTMLEditorKit.HTMLTextAction',\n            'HTMLEditorKit.InsertHTMLTextAction',\n            'HTMLEditorKit.LinkController',\n            'HTMLEditorKit.Parser',\n            'HTMLEditorKit.ParserCallback',\n            'HTMLFrameHyperlinkEvent', 'HTMLWriter',\n            'HttpURLConnection', 'HyperlinkEvent',\n            'HyperlinkEvent.EventType', 'HyperlinkListener',\n            'ICC_ColorSpace', 'ICC_Profile', 'ICC_ProfileGray',\n            'ICC_ProfileRGB', 'Icon', 'IconUIResource',\n            'IconView', 'IdentifierHelper', 'Identity',\n            'IdentityScope', 'IDLEntity', 'IDLType',\n            'IDLTypeHelper', 'IDLTypeOperations',\n            'IllegalAccessError', 'IllegalAccessException',\n            'IllegalArgumentException',\n            'IllegalComponentStateException',\n            'IllegalMonitorStateException',\n            'IllegalPathStateException', 'IllegalStateException',\n            'IllegalThreadStateException', 'Image',\n            'ImageConsumer', 'ImageFilter',\n            'ImageGraphicAttribute', 'ImageIcon',\n            'ImageObserver', 'ImageProducer',\n            'ImagingOpException', 'IMP_LIMIT',\n            'IncompatibleClassChangeError',\n            'InconsistentTypeCode', 'IndexColorModel',\n            'IndexedPropertyDescriptor',\n            'IndexOutOfBoundsException', 'IndirectionException',\n            'InetAddress', 'Inflater', 'InflaterInputStream',\n            'InheritableThreadLocal', 'InitialContext',\n            'InitialContextFactory',\n            'InitialContextFactoryBuilder', 'InitialDirContext',\n            'INITIALIZE', 'Initializer', 'InitialLdapContext',\n            'InlineView', 'InputContext', 'InputEvent',\n            'InputMap', 'InputMapUIResource', 'InputMethod',\n            'InputMethodContext', 'InputMethodDescriptor',\n            'InputMethodEvent', 'InputMethodHighlight',\n            'InputMethodListener', 'InputMethodRequests',\n            'InputStream', 'InputStreamReader', 'InputSubset',\n            'InputVerifier', 'Insets', 'InsetsUIResource',\n            'InstantiationError', 'InstantiationException',\n            'Instrument', 'InsufficientResourcesException',\n            'Integer', 'INTERNAL', 'InternalError',\n            'InternalFrameAdapter', 'InternalFrameEvent',\n            'InternalFrameListener', 'InternalFrameUI',\n            'InterruptedException', 'InterruptedIOException',\n            'InterruptedNamingException', 'INTF_REPOS',\n            'IntHolder', 'IntrospectionException',\n            'Introspector', 'Invalid',\n            'InvalidAlgorithmParameterException',\n            'InvalidAttributeIdentifierException',\n            'InvalidAttributesException',\n            'InvalidAttributeValueException',\n            'InvalidClassException',\n            'InvalidDnDOperationException',\n            'InvalidKeyException', 'InvalidKeySpecException',\n            'InvalidMidiDataException', 'InvalidName',\n            'InvalidNameException', 'InvalidNameHelper',\n            'InvalidNameHolder', 'InvalidObjectException',\n            'InvalidParameterException',\n            'InvalidParameterSpecException',\n            'InvalidSearchControlsException',\n            'InvalidSearchFilterException', 'InvalidSeq',\n            'InvalidTransactionException', 'InvalidValue',\n            'INVALID_TRANSACTION', 'InvocationEvent',\n            'InvocationHandler', 'InvocationTargetException',\n            'InvokeHandler', 'INV_FLAG', 'INV_IDENT',\n            'INV_OBJREF', 'INV_POLICY', 'IOException',\n            'IRObject', 'IRObjectOperations', 'IstringHelper',\n            'ItemEvent', 'ItemListener', 'ItemSelectable',\n            'Iterator', 'JApplet', 'JarEntry', 'JarException',\n            'JarFile', 'JarInputStream', 'JarOutputStream',\n            'JarURLConnection', 'JButton', 'JCheckBox',\n            'JCheckBoxMenuItem', 'JColorChooser', 'JComboBox',\n            'JComboBox.KeySelectionManager', 'JComponent',\n            'JDesktopPane', 'JDialog', 'JEditorPane',\n            'JFileChooser', 'JFrame', 'JInternalFrame',\n            'JInternalFrame.JDesktopIcon', 'JLabel',\n            'JLayeredPane', 'JList', 'JMenu', 'JMenuBar',\n            'JMenuItem', 'JobAttributes',\n            'JobAttributes.DefaultSelectionType',\n            'JobAttributes.DestinationType',\n            'JobAttributes.DialogType',\n            'JobAttributes.MultipleDocumentHandlingType',\n            'JobAttributes.SidesType', 'JOptionPane', 'JPanel',\n            'JPasswordField', 'JPopupMenu',\n            'JPopupMenu.Separator', 'JProgressBar',\n            'JRadioButton', 'JRadioButtonMenuItem', 'JRootPane',\n            'JScrollBar', 'JScrollPane', 'JSeparator', 'JSlider',\n            'JSplitPane', 'JTabbedPane', 'JTable',\n            'JTableHeader', 'JTextArea', 'JTextComponent',\n            'JTextComponent.KeyBinding', 'JTextField',\n            'JTextPane', 'JToggleButton',\n            'JToggleButton.ToggleButtonModel', 'JToolBar',\n            'JToolBar.Separator', 'JToolTip', 'JTree',\n            'JTree.DynamicUtilTreeNode',\n            'JTree.EmptySelectionModel', 'JViewport', 'JWindow',\n            'Kernel', 'Key', 'KeyAdapter', 'KeyEvent',\n            'KeyException', 'KeyFactory', 'KeyFactorySpi',\n            'KeyListener', 'KeyManagementException', 'Keymap',\n            'KeyPair', 'KeyPairGenerator', 'KeyPairGeneratorSpi',\n            'KeySpec', 'KeyStore', 'KeyStoreException',\n            'KeyStoreSpi', 'KeyStroke', 'Label', 'LabelUI',\n            'LabelView', 'LastOwnerException',\n            'LayeredHighlighter',\n            'LayeredHighlighter.LayerPainter', 'LayoutManager',\n            'LayoutManager2', 'LayoutQueue', 'LdapContext',\n            'LdapReferralException', 'Lease',\n            'LimitExceededException', 'Line', 'Line.Info',\n            'Line2D', 'Line2D.Double', 'Line2D.Float',\n            'LineBorder', 'LineBreakMeasurer', 'LineEvent',\n            'LineEvent.Type', 'LineListener', 'LineMetrics',\n            'LineNumberInputStream', 'LineNumberReader',\n            'LineUnavailableException', 'LinkageError',\n            'LinkedList', 'LinkException', 'LinkLoopException',\n            'LinkRef', 'List', 'ListCellRenderer',\n            'ListDataEvent', 'ListDataListener', 'ListIterator',\n            'ListModel', 'ListResourceBundle',\n            'ListSelectionEvent', 'ListSelectionListener',\n            'ListSelectionModel', 'ListUI', 'ListView',\n            'LoaderHandler', 'Locale', 'LocateRegistry',\n            'LogStream', 'Long', 'LongHolder',\n            'LongLongSeqHelper', 'LongLongSeqHolder',\n            'LongSeqHelper', 'LongSeqHolder', 'LookAndFeel',\n            'LookupOp', 'LookupTable', 'MalformedLinkException',\n            'MalformedURLException', 'Manifest', 'Map',\n            'Map.Entry', 'MARSHAL', 'MarshalException',\n            'MarshalledObject', 'Math', 'MatteBorder',\n            'MediaTracker', 'Member', 'MemoryImageSource',\n            'Menu', 'MenuBar', 'MenuBarUI', 'MenuComponent',\n            'MenuContainer', 'MenuDragMouseEvent',\n            'MenuDragMouseListener', 'MenuElement', 'MenuEvent',\n            'MenuItem', 'MenuItemUI', 'MenuKeyEvent',\n            'MenuKeyListener', 'MenuListener',\n            'MenuSelectionManager', 'MenuShortcut',\n            'MessageDigest', 'MessageDigestSpi', 'MessageFormat',\n            'MetaEventListener', 'MetalBorders',\n            'MetalBorders.ButtonBorder',\n            'MetalBorders.Flush3DBorder',\n            'MetalBorders.InternalFrameBorder',\n            'MetalBorders.MenuBarBorder',\n            'MetalBorders.MenuItemBorder',\n            'MetalBorders.OptionDialogBorder',\n            'MetalBorders.PaletteBorder',\n            'MetalBorders.PopupMenuBorder',\n            'MetalBorders.RolloverButtonBorder',\n            'MetalBorders.ScrollPaneBorder',\n            'MetalBorders.TableHeaderBorder',\n            'MetalBorders.TextFieldBorder',\n            'MetalBorders.ToggleButtonBorder',\n            'MetalBorders.ToolBarBorder', 'MetalButtonUI',\n            'MetalCheckBoxIcon', 'MetalCheckBoxUI',\n            'MetalComboBoxButton', 'MetalComboBoxEditor',\n            'MetalComboBoxEditor.UIResource',\n            'MetalComboBoxIcon', 'MetalComboBoxUI',\n            'MetalDesktopIconUI', 'MetalFileChooserUI',\n            'MetalIconFactory', 'MetalIconFactory.FileIcon16',\n            'MetalIconFactory.FolderIcon16',\n            'MetalIconFactory.PaletteCloseIcon',\n            'MetalIconFactory.TreeControlIcon',\n            'MetalIconFactory.TreeFolderIcon',\n            'MetalIconFactory.TreeLeafIcon',\n            'MetalInternalFrameTitlePane',\n            'MetalInternalFrameUI', 'MetalLabelUI',\n            'MetalLookAndFeel', 'MetalPopupMenuSeparatorUI',\n            'MetalProgressBarUI', 'MetalRadioButtonUI',\n            'MetalScrollBarUI', 'MetalScrollButton',\n            'MetalScrollPaneUI', 'MetalSeparatorUI',\n            'MetalSliderUI', 'MetalSplitPaneUI',\n            'MetalTabbedPaneUI', 'MetalTextFieldUI',\n            'MetalTheme', 'MetalToggleButtonUI',\n            'MetalToolBarUI', 'MetalToolTipUI', 'MetalTreeUI',\n            'MetaMessage', 'Method', 'MethodDescriptor',\n            'MidiChannel', 'MidiDevice', 'MidiDevice.Info',\n            'MidiDeviceProvider', 'MidiEvent', 'MidiFileFormat',\n            'MidiFileReader', 'MidiFileWriter', 'MidiMessage',\n            'MidiSystem', 'MidiUnavailableException',\n            'MimeTypeParseException', 'MinimalHTMLWriter',\n            'MissingResourceException', 'Mixer', 'Mixer.Info',\n            'MixerProvider', 'ModificationItem', 'Modifier',\n            'MouseAdapter', 'MouseDragGestureRecognizer',\n            'MouseEvent', 'MouseInputAdapter',\n            'MouseInputListener', 'MouseListener',\n            'MouseMotionAdapter', 'MouseMotionListener',\n            'MultiButtonUI', 'MulticastSocket',\n            'MultiColorChooserUI', 'MultiComboBoxUI',\n            'MultiDesktopIconUI', 'MultiDesktopPaneUI',\n            'MultiFileChooserUI', 'MultiInternalFrameUI',\n            'MultiLabelUI', 'MultiListUI', 'MultiLookAndFeel',\n            'MultiMenuBarUI', 'MultiMenuItemUI',\n            'MultiOptionPaneUI', 'MultiPanelUI',\n            'MultiPixelPackedSampleModel', 'MultipleMaster',\n            'MultiPopupMenuUI', 'MultiProgressBarUI',\n            'MultiScrollBarUI', 'MultiScrollPaneUI',\n            'MultiSeparatorUI', 'MultiSliderUI',\n            'MultiSplitPaneUI', 'MultiTabbedPaneUI',\n            'MultiTableHeaderUI', 'MultiTableUI', 'MultiTextUI',\n            'MultiToolBarUI', 'MultiToolTipUI', 'MultiTreeUI',\n            'MultiViewportUI', 'MutableAttributeSet',\n            'MutableComboBoxModel', 'MutableTreeNode', 'Name',\n            'NameAlreadyBoundException', 'NameClassPair',\n            'NameComponent', 'NameComponentHelper',\n            'NameComponentHolder', 'NamedValue', 'NameHelper',\n            'NameHolder', 'NameNotFoundException', 'NameParser',\n            'NamespaceChangeListener', 'NameValuePair',\n            'NameValuePairHelper', 'Naming', 'NamingContext',\n            'NamingContextHelper', 'NamingContextHolder',\n            'NamingContextOperations', 'NamingEnumeration',\n            'NamingEvent', 'NamingException',\n            'NamingExceptionEvent', 'NamingListener',\n            'NamingManager', 'NamingSecurityException',\n            'NegativeArraySizeException', 'NetPermission',\n            'NoClassDefFoundError', 'NoInitialContextException',\n            'NoninvertibleTransformException',\n            'NoPermissionException', 'NoRouteToHostException',\n            'NoSuchAlgorithmException',\n            'NoSuchAttributeException', 'NoSuchElementException',\n            'NoSuchFieldError', 'NoSuchFieldException',\n            'NoSuchMethodError', 'NoSuchMethodException',\n            'NoSuchObjectException', 'NoSuchProviderException',\n            'NotActiveException', 'NotBoundException',\n            'NotContextException', 'NotEmpty', 'NotEmptyHelper',\n            'NotEmptyHolder', 'NotFound', 'NotFoundHelper',\n            'NotFoundHolder', 'NotFoundReason',\n            'NotFoundReasonHelper', 'NotFoundReasonHolder',\n            'NotOwnerException', 'NotSerializableException',\n            'NO_IMPLEMENT', 'NO_MEMORY', 'NO_PERMISSION',\n            'NO_RESOURCES', 'NO_RESPONSE',\n            'NullPointerException', 'Number', 'NumberFormat',\n            'NumberFormatException', 'NVList', 'Object',\n            'ObjectChangeListener', 'ObjectFactory',\n            'ObjectFactoryBuilder', 'ObjectHelper',\n            'ObjectHolder', 'ObjectImpl', 'ObjectInput',\n            'ObjectInputStream', 'ObjectInputStream.GetField',\n            'ObjectInputValidation', 'ObjectOutput',\n            'ObjectOutputStream', 'ObjectOutputStream.PutField',\n            'ObjectStreamClass', 'ObjectStreamConstants',\n            'ObjectStreamException', 'ObjectStreamField',\n            'ObjectView', 'OBJECT_NOT_EXIST', 'ObjID',\n            'OBJ_ADAPTER', 'Observable', 'Observer',\n            'OctetSeqHelper', 'OctetSeqHolder', 'OMGVMCID',\n            'OpenType', 'Operation',\n            'OperationNotSupportedException', 'Option',\n            'OptionalDataException', 'OptionPaneUI', 'ORB',\n            'OutOfMemoryError', 'OutputStream',\n            'OutputStreamWriter', 'OverlayLayout', 'Owner',\n            'Package', 'PackedColorModel', 'Pageable',\n            'PageAttributes', 'PageAttributes.ColorType',\n            'PageAttributes.MediaType',\n            'PageAttributes.OrientationRequestedType',\n            'PageAttributes.OriginType',\n            'PageAttributes.PrintQualityType', 'PageFormat',\n            'Paint', 'PaintContext', 'PaintEvent', 'Panel',\n            'PanelUI', 'Paper', 'ParagraphView',\n            'ParameterBlock', 'ParameterDescriptor',\n            'ParseException', 'ParsePosition', 'Parser',\n            'ParserDelegator', 'PartialResultException',\n            'PasswordAuthentication', 'PasswordView', 'Patch',\n            'PathIterator', 'Permission', 'PermissionCollection',\n            'Permissions', 'PERSIST_STORE', 'PhantomReference',\n            'PipedInputStream', 'PipedOutputStream',\n            'PipedReader', 'PipedWriter', 'PixelGrabber',\n            'PixelInterleavedSampleModel', 'PKCS8EncodedKeySpec',\n            'PlainDocument', 'PlainView', 'Point', 'Point2D',\n            'Point2D.Double', 'Point2D.Float', 'Policy',\n            'PolicyError', 'PolicyHelper', 'PolicyHolder',\n            'PolicyListHelper', 'PolicyListHolder',\n            'PolicyOperations', 'PolicyTypeHelper', 'Polygon',\n            'PopupMenu', 'PopupMenuEvent', 'PopupMenuListener',\n            'PopupMenuUI', 'Port', 'Port.Info',\n            'PortableRemoteObject',\n            'PortableRemoteObjectDelegate', 'Position',\n            'Position.Bias', 'PreparedStatement', 'Principal',\n            'PrincipalHolder', 'Printable',\n            'PrinterAbortException', 'PrinterException',\n            'PrinterGraphics', 'PrinterIOException',\n            'PrinterJob', 'PrintGraphics', 'PrintJob',\n            'PrintStream', 'PrintWriter', 'PrivateKey',\n            'PRIVATE_MEMBER', 'PrivilegedAction',\n            'PrivilegedActionException',\n            'PrivilegedExceptionAction', 'Process',\n            'ProfileDataException', 'ProgressBarUI',\n            'ProgressMonitor', 'ProgressMonitorInputStream',\n            'Properties', 'PropertyChangeEvent',\n            'PropertyChangeListener', 'PropertyChangeSupport',\n            'PropertyDescriptor', 'PropertyEditor',\n            'PropertyEditorManager', 'PropertyEditorSupport',\n            'PropertyPermission', 'PropertyResourceBundle',\n            'PropertyVetoException', 'ProtectionDomain',\n            'ProtocolException', 'Provider', 'ProviderException',\n            'Proxy', 'PublicKey', 'PUBLIC_MEMBER',\n            'PushbackInputStream', 'PushbackReader',\n            'QuadCurve2D', 'QuadCurve2D.Double',\n            'QuadCurve2D.Float', 'Random', 'RandomAccessFile',\n            'Raster', 'RasterFormatException', 'RasterOp',\n            'Reader', 'Receiver', 'Rectangle', 'Rectangle2D',\n            'Rectangle2D.Double', 'Rectangle2D.Float',\n            'RectangularShape', 'Ref', 'RefAddr', 'Reference',\n            'Referenceable', 'ReferenceQueue',\n            'ReferralException', 'ReflectPermission', 'Registry',\n            'RegistryHandler', 'RemarshalException', 'Remote',\n            'RemoteCall', 'RemoteException', 'RemoteObject',\n            'RemoteRef', 'RemoteServer', 'RemoteStub',\n            'RenderableImage', 'RenderableImageOp',\n            'RenderableImageProducer', 'RenderContext',\n            'RenderedImage', 'RenderedImageFactory', 'Renderer',\n            'RenderingHints', 'RenderingHints.Key',\n            'RepaintManager', 'ReplicateScaleFilter',\n            'Repository', 'RepositoryIdHelper', 'Request',\n            'RescaleOp', 'Resolver', 'ResolveResult',\n            'ResourceBundle', 'ResponseHandler', 'ResultSet',\n            'ResultSetMetaData', 'ReverbType', 'RGBImageFilter',\n            'RMIClassLoader', 'RMIClientSocketFactory',\n            'RMIFailureHandler', 'RMISecurityException',\n            'RMISecurityManager', 'RMIServerSocketFactory',\n            'RMISocketFactory', 'Robot', 'RootPaneContainer',\n            'RootPaneUI', 'RoundRectangle2D',\n            'RoundRectangle2D.Double', 'RoundRectangle2D.Float',\n            'RowMapper', 'RSAKey', 'RSAKeyGenParameterSpec',\n            'RSAPrivateCrtKey', 'RSAPrivateCrtKeySpec',\n            'RSAPrivateKey', 'RSAPrivateKeySpec', 'RSAPublicKey',\n            'RSAPublicKeySpec', 'RTFEditorKit',\n            'RuleBasedCollator', 'Runnable', 'Runtime',\n            'RunTime', 'RuntimeException', 'RunTimeOperations',\n            'RuntimePermission', 'SampleModel',\n            'SchemaViolationException', 'Scrollable',\n            'Scrollbar', 'ScrollBarUI', 'ScrollPane',\n            'ScrollPaneConstants', 'ScrollPaneLayout',\n            'ScrollPaneLayout.UIResource', 'ScrollPaneUI',\n            'SearchControls', 'SearchResult',\n            'SecureClassLoader', 'SecureRandom',\n            'SecureRandomSpi', 'Security', 'SecurityException',\n            'SecurityManager', 'SecurityPermission', 'Segment',\n            'SeparatorUI', 'Sequence', 'SequenceInputStream',\n            'Sequencer', 'Sequencer.SyncMode', 'Serializable',\n            'SerializablePermission', 'ServantObject',\n            'ServerCloneException', 'ServerError',\n            'ServerException', 'ServerNotActiveException',\n            'ServerRef', 'ServerRequest',\n            'ServerRuntimeException', 'ServerSocket',\n            'ServiceDetail', 'ServiceDetailHelper',\n            'ServiceInformation', 'ServiceInformationHelper',\n            'ServiceInformationHolder',\n            'ServiceUnavailableException', 'Set',\n            'SetOverrideType', 'SetOverrideTypeHelper', 'Shape',\n            'ShapeGraphicAttribute', 'Short', 'ShortHolder',\n            'ShortLookupTable', 'ShortMessage', 'ShortSeqHelper',\n            'ShortSeqHolder', 'Signature', 'SignatureException',\n            'SignatureSpi', 'SignedObject', 'Signer',\n            'SimpleAttributeSet', 'SimpleBeanInfo',\n            'SimpleDateFormat', 'SimpleTimeZone',\n            'SinglePixelPackedSampleModel',\n            'SingleSelectionModel', 'SizeLimitExceededException',\n            'SizeRequirements', 'SizeSequence', 'Skeleton',\n            'SkeletonMismatchException',\n            'SkeletonNotFoundException', 'SliderUI', 'Socket',\n            'SocketException', 'SocketImpl', 'SocketImplFactory',\n            'SocketOptions', 'SocketPermission',\n            'SocketSecurityException', 'SoftBevelBorder',\n            'SoftReference', 'SortedMap', 'SortedSet',\n            'Soundbank', 'SoundbankReader', 'SoundbankResource',\n            'SourceDataLine', 'SplitPaneUI', 'SQLData',\n            'SQLException', 'SQLInput', 'SQLOutput',\n            'SQLPermission', 'SQLWarning', 'Stack',\n            'StackOverflowError', 'StateEdit', 'StateEditable',\n            'StateFactory', 'Statement', 'Streamable',\n            'StreamableValue', 'StreamCorruptedException',\n            'StreamTokenizer', 'StrictMath', 'String',\n            'StringBuffer', 'StringBufferInputStream',\n            'StringCharacterIterator', 'StringContent',\n            'StringHolder', 'StringIndexOutOfBoundsException',\n            'StringReader', 'StringRefAddr', 'StringSelection',\n            'StringTokenizer', 'StringValueHelper',\n            'StringWriter', 'Stroke', 'Struct', 'StructMember',\n            'StructMemberHelper', 'Stub', 'StubDelegate',\n            'StubNotFoundException', 'Style', 'StyleConstants',\n            'StyleConstants.CharacterConstants',\n            'StyleConstants.ColorConstants',\n            'StyleConstants.FontConstants',\n            'StyleConstants.ParagraphConstants', 'StyleContext',\n            'StyledDocument', 'StyledEditorKit',\n            'StyledEditorKit.AlignmentAction',\n            'StyledEditorKit.BoldAction',\n            'StyledEditorKit.FontFamilyAction',\n            'StyledEditorKit.FontSizeAction',\n            'StyledEditorKit.ForegroundAction',\n            'StyledEditorKit.ItalicAction',\n            'StyledEditorKit.StyledTextAction',\n            'StyledEditorKit.UnderlineAction', 'StyleSheet',\n            'StyleSheet.BoxPainter', 'StyleSheet.ListPainter',\n            'SwingConstants', 'SwingPropertyChangeSupport',\n            'SwingUtilities', 'SyncFailedException',\n            'Synthesizer', 'SysexMessage', 'System',\n            'SystemColor', 'SystemException', 'SystemFlavorMap',\n            'TabableView', 'TabbedPaneUI', 'TabExpander',\n            'TableCellEditor', 'TableCellRenderer',\n            'TableColumn', 'TableColumnModel',\n            'TableColumnModelEvent', 'TableColumnModelListener',\n            'TableHeaderUI', 'TableModel', 'TableModelEvent',\n            'TableModelListener', 'TableUI', 'TableView',\n            'TabSet', 'TabStop', 'TagElement', 'TargetDataLine',\n            'TCKind', 'TextAction', 'TextArea', 'TextAttribute',\n            'TextComponent', 'TextEvent', 'TextField',\n            'TextHitInfo', 'TextLayout',\n            'TextLayout.CaretPolicy', 'TextListener',\n            'TextMeasurer', 'TextUI', 'TexturePaint', 'Thread',\n            'ThreadDeath', 'ThreadGroup', 'ThreadLocal',\n            'Throwable', 'Tie', 'TileObserver', 'Time',\n            'TimeLimitExceededException', 'Timer', 'TimerTask',\n            'Timestamp', 'TimeZone', 'TitledBorder', 'ToolBarUI',\n            'Toolkit', 'ToolTipManager', 'ToolTipUI',\n            'TooManyListenersException', 'Track',\n            'TransactionRequiredException',\n            'TransactionRolledbackException',\n            'TRANSACTION_REQUIRED', 'TRANSACTION_ROLLEDBACK',\n            'Transferable', 'TransformAttribute', 'TRANSIENT',\n            'Transmitter', 'Transparency', 'TreeCellEditor',\n            'TreeCellRenderer', 'TreeExpansionEvent',\n            'TreeExpansionListener', 'TreeMap', 'TreeModel',\n            'TreeModelEvent', 'TreeModelListener', 'TreeNode',\n            'TreePath', 'TreeSelectionEvent',\n            'TreeSelectionListener', 'TreeSelectionModel',\n            'TreeSet', 'TreeUI', 'TreeWillExpandListener',\n            'TypeCode', 'TypeCodeHolder', 'TypeMismatch',\n            'Types', 'UID', 'UIDefaults',\n            'UIDefaults.ActiveValue', 'UIDefaults.LazyInputMap',\n            'UIDefaults.LazyValue', 'UIDefaults.ProxyLazyValue',\n            'UIManager', 'UIManager.LookAndFeelInfo',\n            'UIResource', 'ULongLongSeqHelper',\n            'ULongLongSeqHolder', 'ULongSeqHelper',\n            'ULongSeqHolder', 'UndeclaredThrowableException',\n            'UndoableEdit', 'UndoableEditEvent',\n            'UndoableEditListener', 'UndoableEditSupport',\n            'UndoManager', 'UnexpectedException',\n            'UnicastRemoteObject', 'UnionMember',\n            'UnionMemberHelper', 'UNKNOWN', 'UnknownError',\n            'UnknownException', 'UnknownGroupException',\n            'UnknownHostException', 'UnknownObjectException',\n            'UnknownServiceException', 'UnknownUserException',\n            'UnmarshalException', 'UnrecoverableKeyException',\n            'Unreferenced', 'UnresolvedPermission',\n            'UnsatisfiedLinkError', 'UnsolicitedNotification',\n            'UnsolicitedNotificationEvent',\n            'UnsolicitedNotificationListener',\n            'UnsupportedAudioFileException',\n            'UnsupportedClassVersionError',\n            'UnsupportedEncodingException',\n            'UnsupportedFlavorException',\n            'UnsupportedLookAndFeelException',\n            'UnsupportedOperationException',\n            'UNSUPPORTED_POLICY', 'UNSUPPORTED_POLICY_VALUE',\n            'URL', 'URLClassLoader', 'URLConnection',\n            'URLDecoder', 'URLEncoder', 'URLStreamHandler',\n            'URLStreamHandlerFactory', 'UserException',\n            'UShortSeqHelper', 'UShortSeqHolder',\n            'UTFDataFormatException', 'Util', 'UtilDelegate',\n            'Utilities', 'ValueBase', 'ValueBaseHelper',\n            'ValueBaseHolder', 'ValueFactory', 'ValueHandler',\n            'ValueMember', 'ValueMemberHelper',\n            'VariableHeightLayoutCache', 'Vector', 'VerifyError',\n            'VersionSpecHelper', 'VetoableChangeListener',\n            'VetoableChangeSupport', 'View', 'ViewFactory',\n            'ViewportLayout', 'ViewportUI',\n            'VirtualMachineError', 'Visibility',\n            'VisibilityHelper', 'VMID', 'VM_ABSTRACT',\n            'VM_CUSTOM', 'VM_NONE', 'VM_TRUNCATABLE',\n            'VoiceStatus', 'Void', 'WCharSeqHelper',\n            'WCharSeqHolder', 'WeakHashMap', 'WeakReference',\n            'Window', 'WindowAdapter', 'WindowConstants',\n            'WindowEvent', 'WindowListener', 'WrappedPlainView',\n            'WritableRaster', 'WritableRenderedImage',\n            'WriteAbortedException', 'Writer',\n            'WrongTransaction', 'WStringValueHelper',\n            'X509Certificate', 'X509CRL', 'X509CRLEntry',\n            'X509EncodedKeySpec', 'X509Extension', 'ZipEntry',\n            'ZipException', 'ZipFile', 'ZipInputStream',\n            'ZipOutputStream', 'ZoneView',\n            '_BindingIteratorImplBase', '_BindingIteratorStub',\n            '_IDLTypeStub', '_NamingContextImplBase',\n            '_NamingContextStub', '_PolicyStub', '_Remote_Stub'\n            ),\n        4 => array(\n            'boolean', 'byte', 'char', 'double', 'float', 'int', 'long',\n            'short', 'void'\n            ),\n        5 => array(\n            'allProperties', 'asImmutable', 'asSynchronized', 'collect',\n            'count', 'each', 'eachProperty', 'eachPropertyName',\n            'eachWithIndex', 'find', 'findAll', 'findIndexOf',\n            'flatten', 'get', 'grep', 'inject', 'intersect',\n            'join', 'max', 'min', 'pop', 'reverse',\n            'reverseEach', 'size', 'sort', 'subMap', 'toList'\n            ),\n        6 => array(\n            'center', 'contains', 'eachMatch', 'padLeft', 'padRight',\n            'toCharacter', 'tokenize', 'toLong', 'toURL'\n            ),\n        7 => array(\n            'append', 'eachByte', 'eachFile', 'eachFileRecurse', 'eachLine',\n            'eachLines', 'encodeBase64', 'filterLine', 'getText',\n            'splitEachLine', 'transformChar', 'transformLine',\n            'withOutputStream', 'withPrintWriter', 'withReader',\n            'withStream', 'withStreams', 'withWriter',\n            'withWriterAppend', 'write', 'writeLine'\n            ),\n        8 => array(\n            'dump', 'getLastMatcher', 'inspect', 'invokeMethod', 'print',\n            'println', 'start', 'startDaemon', 'step', 'times',\n            'upto', 'use'\n            ),\n        9 => array(\n            'call', 'close', 'eachRow', 'execute', 'executeUpdate', 'Sql'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?', '|', '=',\n        '=>', '||', '-', '+', '<<', '<<<', '&&'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => true,\n        1 => false,\n        2 => false,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true,\n        9 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #aaaadd; font-weight: bold;',\n            4 => 'color: #993333;',\n            5 => 'color: #663399;',\n            6 => 'color: #CC0099;',\n            7 => 'color: #FFCC33;',\n            8 => 'color: #993399;',\n            9 => 'color: #993399; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1=> 'color: #808080; font-style: italic;',\n            2=> 'color: #a1a100;',\n            3=> 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;',\n            2 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #0000ff;'\n            )\n        ),\n    'URLS' => array(\n        1 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAMEL}',\n        2 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAMEL}',\n        3 => 'http://www.google.de/search?as_q={FNAME}&amp;num=100&amp;hl=en&amp;as_occt=url&amp;as_sitesearch=java.sun.com%2Fj2se%2F1%2E5%2E0%2Fdocs%2Fapi%2F',\n        4 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}',\n        5 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}',\n        6 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}',\n        7 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}',\n        8 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}',\n        9 => 'http://www.google.de/search?q=site%3Agroovy.codehaus.org/%20{FNAME}'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        //Variables\n        0 => '\\\\$\\\\{[a-zA-Z_][a-zA-Z0-9_]*\\\\}'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/gwbasic.php",
    "content": "<?php\n/*************************************************************************************\n * gwbasic.php\n * ----------\n * Author: José Gabriel Moya Yangüela (josemoya@gmail.com)\n * Copyright: (c) 2010 José Gabriel Moya Yangüela (http://doc.apagada.com)\n * Release Version: 1.0.9.1\n * Date Started: 2010/01/30\n *\n * GwBasic language file for GeSHi.\n *\n * CHANGES\n * -------\n * REM was not classified as comment.\n * APPEND and RANDOM missing.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'GwBasic',\n    'COMMENT_SINGLE' => array(1 => \"'\", 2=> \"REM\"),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n    /* Statements */\n        1 => array('END','FOR','NEXT','DATA','INPUT','DIM','READ','LET',\n            'GOTO','RUN','IF','RESTORE','GOSUB','RETURN','REM',\n            'STOP','PRINT','CLEAR','LIST','NEW','ON','WAIT','DEF',\n            'POKE','CONT','OUT','LPRINT','LLIST','WIDTH','ELSE',\n            'TRON','TROFF','SWAP','ERASE','EDIT','ERROR','RESUME',\n            'DELETE','AUTO','RENUM','DEFSTR','DEFINT','DEFSNG',\n            'DEFDBL','LINE','WHILE','WEND','CALL','WRITE','OPTION',\n            'RANDOMIZE','OPEN','CLOSE','LOAD','MERGE','SAVE',\n            'COLOR','CLS','MOTOR','BSAVE','BLOAD','SOUND','BEEP',\n            'PSET','PRESET','SCREEN','KEY','LOCATE','TO','THEN',\n            'STEP','USR','FN','SPC','NOT','ERL','ERR','STRING',\n            'USING','INSTR','VARPTR','CSRLIN','POINT','OFF',\n            'FILES','FIELD','SYSTEM','NAME','LSET','RSET','KILL',\n            'PUT','GET','RESET','COMMON','CHAIN','PAINT','COM',\n            'CIRCLE','DRAW','PLAY','TIMER','IOCTL','CHDIR','MKDIR',\n            'RMDIR','SHELL','VIEW','WINDOW','PMAP','PALETTE','LCOPY',\n            'CALLS','PCOPY','LOCK','UNLOCK','RANDOM','APPEND',\n            ),\n        2 => array(\n            /* Functions */\n            'CVI','CVS','CVD','MKI','MKS','MKD','ENVIRON',\n            'LEFT','RIGHT','MID','SGN','INT','ABS',\n            'SQR','SIN','LOG','EXP','COS','TAN','ATN',\n            'FRE','INP','POS','LEN','STR','VAL','ASC',\n            'CHR','PEEK','SPACE','OCT','HEX','LPOS',\n            'CINT','CSNG','CDBL','FIX','PEN','STICK',\n            'STRIG','EOF','LOC','LOF'\n            ),\n        3 => array(\n            /* alpha Operators */\n            'AND','OR','XOR','EQV','IMP','MOD'\n            ),\n        4 => array(\n            /* parameterless functions */\n            'INKEY','DATE','TIME','ERDEV','RND'\n            )\n        ),\n    'SYMBOLS' => array(\n        0 => array(\n            '>','=','<','+','-','*','/','^','\\\\'\n            ),\n        1 => array(\n            '?'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n            GESHI_COMMENTS => false,\n            1 => false,\n            2 => false,\n            3 => false,\n            4 => false\n            ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #00a1a1;font-weight: bold',\n            2 => 'color: #000066;font-weight: bold',\n            3 => 'color: #00a166;font-weight: bold',\n            4 => 'color: #0066a1;font-weight: bold'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080;',\n            2 => 'color: #808080;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n        /* Same as KEYWORDS[3] (and, or, not...) */\n            0 => 'color: #00a166;font-weight: bold',\n            1 => 'color: #00a1a1;font-weight: bold',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            1 => 'color: #708090'\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        1 => '^[0-9]+ '\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/haskell.php",
    "content": "<?php\n/*************************************************************************************\n * haskell.php\n * ----------\n * Author: Daniel Mlot (duplode_1 at yahoo dot com dot br)\n *         Based on haskell.php by Jason Dagit (dagit@codersbase.com), which was\n *         based on ocaml.php by Flaie (fireflaie@gmail.com).\n * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2014/05/12\n *\n * Haskell language file for GeSHi.\n *\n *************************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Haskell',\n    'COMMENT_SINGLE' => array( 1 => '--'),\n    'COMMENT_MULTI' => array('{-' => '-}'),\n    'COMMENT_REGEXP' => array(\n        2 => \"/-->/\",\n        3 => \"/{-(?:(?R)|.)-}/s\", //Nested Comments\n        ),\n    'CASE_KEYWORDS' => 0,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        /* main haskell keywords */\n        1 => array(\n            'as',\n            'case', 'of', 'class', 'data', 'default',\n            'deriving', 'do', 'forall', 'hiding', 'if', 'then',\n            'else', 'import', 'infix', 'infixl', 'infixr',\n            'instance', 'let', 'in', 'module', 'newtype',\n            'qualified', 'type', 'where'\n            ),\n        /* define names of main libraries, so we can link to it */\n        2 => array(\n            'Foreign', 'Numeric', 'Prelude'\n            ),\n        /* just link to Prelude functions, cause it's the default opened library when starting Haskell */\n        3 => array(\n            'not', 'otherwise', 'maybe',\n            'either', 'fst', 'snd', 'curry', 'uncurry',\n            'compare',\n            'max', 'min', 'succ', 'pred', 'toEnum', 'fromEnum',\n            'enumFrom', 'enumFromThen', 'enumFromTo',\n            'enumFromThenTo', 'minBound', 'maxBound',\n            'negate', 'abs', 'signum',\n            'fromInteger', 'toRational', 'quot', 'rem',\n            'div', 'mod', 'quotRem', 'divMod', 'toInteger',\n            'recip', 'fromRational', 'pi', 'exp',\n            'log', 'sqrt', 'logBase', 'sin', 'cos',\n            'tan', 'asin', 'acos', 'atan', 'sinh', 'cosh',\n            'tanh', 'asinh', 'acosh', 'atanh',\n            'properFraction', 'truncate', 'round', 'ceiling',\n            'floor', 'floatRadix', 'floatDigits', 'floatRange',\n            'decodeFloat', 'encodeFloat', 'exponent',\n            'significand', 'scaleFloat', 'isNaN', 'isInfinite',\n            'isDenomalized', 'isNegativeZero', 'isIEEE',\n            'atan2', 'subtract', 'even', 'odd', 'gcd',\n            'lcm', 'fromIntegral', 'realToFrac',\n            'return', 'fail', 'fmap',\n            'mapM', 'mapM_', 'sequence', 'sequence_',\n            'id', 'const','flip',\n            'until', 'asTypeOf', 'error', 'undefined',\n            'seq','map','filter', 'head',\n            'last', 'tail', 'init', 'null', 'length',\n            'reverse', 'foldl', 'foldl1', 'foldr',\n            'foldr1', 'and', 'or', 'any', 'all', 'sum',\n            'product', 'concat', 'concatMap', 'maximum',\n            'minimum', 'scanl', 'scanl1', 'scanr', 'scanr1',\n            'iterate', 'repeat', 'cycle', 'take', 'drop',\n            'splitAt', 'takeWhile', 'dropWhile', 'span',\n            'break', 'elem', 'notElem', 'lookup', 'zip',\n            'zip3', 'zipWith', 'zipWith3', 'unzip', 'unzip3',\n            'lines', 'words', 'unlines',\n            'unwords', 'showPrec', 'show', 'showList',\n            'shows', 'showChar', 'showString', 'showParen',\n            'readsPrec', 'readList', 'reads', 'readParen',\n            'read', 'lex', 'putChar', 'putStr', 'putStrLn',\n            'print', 'getChar', 'getLine', 'getContents',\n            'interact', 'readFile', 'writeFile', 'appendFile',\n            'readIO', 'readLn', 'ioError', 'userError', 'catch'\n            ),\n        /* Prelude types */\n        4 => array (\n            'Bool', 'Maybe', 'Either', 'Ordering',\n            'Char', 'String',\n            'Int', 'Integer', 'Float', 'Double', 'Rational', 'Word',\n            'ShowS', 'ReadS',\n            'IO', 'IOError', 'IOException'\n            ),\n        /* Prelude classes */\n        5 => array (\n            'Ord', 'Eq', 'Enum', 'Bounded',\n            'Num', 'Real', 'Integral', 'Fractional',\n            'Floating', 'RealFrac', 'RealFloat',\n            'Semigroup', 'Monoid',\n            'Monad', 'Applicative', 'Functor',\n            'Foldable', 'Traversable',\n            'Show', 'Read'\n            )\n        ),\n    /* Most symbol combinations can be valid Haskell operators */\n    'SYMBOLS' => array(\n        '!', '@', '#', '$', '%', '&', '*', '-', '+', '=',\n        '^', '~', '|', '\\\\', '>', '<', ':', '?', '/'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true, /* Haskell is a case sensitive language */\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #06c; font-weight: bold;', /* nice blue */\n            2 => 'color: #06c; font-weight: bold;', /* blue as well */\n            3 => 'font-weight: bold;', /* make the preduled functions bold */\n            4 => 'color: #cccc00; font-weight: bold;', /* give types a different bg */\n            5 => 'color: maroon; font-weight: bold;' /* similarly for classes */\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #5d478b; font-style: italic;',\n            2 => 'color: #339933; font-weight: bold;',\n            3 => 'color: #5d478b; font-style: italic;', /* light purple */\n            'MULTI' => 'color: #5d478b; font-style: italic;' /* light purple */\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'background-color: #3cb371; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: green;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #3cb371;' /* nice green */\n            ),\n        'NUMBERS' => array(\n            0 => 'color: red;' /* pink */\n            ),\n        'METHODS' => array(\n            1 => 'color: #060;' /* dark green */\n            ),\n        'REGEXPS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933; font-weight: bold;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        /* some of keywords are Prelude functions */\n        1 => '',\n        /* link to the wanted library */\n        2 => 'http://hackage.haskell.org/package/base/docs/{FNAME}.html',\n        /* link to Prelude functions */\n        3 => 'http://hackage.haskell.org/package/base/docs/Prelude.html#v:{FNAME}',\n        /* link to Prelude types */\n        4 => 'http://hackage.haskell.org/package/base/docs/Prelude.html#t:{FNAME}',\n        /* link to Prelude exceptions */\n        5 => 'http://hackage.haskell.org/package/base/docs/Prelude.html#t:{FNAME}'\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/haxe.php",
    "content": "<?php\n/*************************************************************************************\n * haxe.php\n * --------\n * Author: Andy Li (andy@onthewings.net)\n *         John Liao (colorhook@gmail.com)\n * Copyright: (c) 2012 onthewings (http://www.onthewings.net/)\n *                2010 colorhook (http://colorhook.com/)\n * Release Version: 1.0.9.1\n * Date Started: 2010/10/05\n *\n * Haxe language file for GeSHi.\n * Haxe version: 2.10\n *************************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Haxe',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Import and Package directives (Basic Support only)\n        2 => '/(?:(?<=import[\\\\n\\\\s])|(?<=using[\\\\n\\\\s])|(?<=package[\\\\n\\\\s]))[\\\\n\\\\s]*([a-zA-Z0-9_]+\\\\.)*([a-zA-Z0-9_]+|\\*)(?=[\\n\\s;])/i',\n        // Haxe comments\n        3 => '#/\\*\\*(?![\\*\\/]).*\\*/#sU',\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            //http://haxe.org/ref/keywords\n            'break', 'callback', 'case', 'cast', 'catch', 'class', 'continue', 'default', 'do', 'dynamic',\n            'else', 'enum', 'extends', 'extern', /*'false',*/ 'for', 'function', 'here', 'if',\n            'implements', 'import', 'in', 'inline', 'interface', 'never', 'new', /*'null',*/ 'override',\n            'package', 'private', 'public', 'return', 'static', 'super', 'switch', 'this', 'throw',\n            'trace', /*'true',*/ 'try', 'typedef', 'untyped', 'using', 'var', 'while',\n            'macro', '$type',\n            ),\n        2 => array(\n            //primitive values\n            'null', 'false', 'true',\n            ),\n        3 => array(\n            //global types\n            'Array', 'ArrayAccess', /*'Bool',*/ 'Class', 'Date', 'DateTools', 'Dynamic',\n            'EReg', 'Enum', 'EnumValue', /*'Float',*/ 'Hash', /*'Int',*/ 'IntHash', 'IntIter',\n            'Iterable', 'Iterator', 'Lambda', 'List', 'Math', 'Null', 'Reflect', 'Std',\n            /*'String',*/ 'StringBuf', 'StringTools', 'Sys', 'Type', /*'UInt',*/ 'ValueType',\n            /*'Void',*/ 'Xml', 'XmlType',\n            ),\n        4 => array(\n            //primitive types\n            'Void', 'Bool', 'Int', 'Float', 'UInt', 'String',\n            ),\n        5 => array(\n            //compiler switches\n            \"#if\", \"#elseif\", \"#else\", \"#end\", \"#error\",\n            ),\n        ),\n    'SYMBOLS' => array(\n        //http://haxe.org/manual/operators\n        '++', '--',\n        '%',\n        '*', '/',\n        '+', '-',\n        '<<', '>>', '>>>',\n        '|', '&', '^',\n        '==', '!=', '>', '>=', '<', '<=',\n        '...',\n        '&&',\n        '||',\n        '?', ':',\n        '=', '+=', '-=', '/=', '*=', '<<=', '>>=', '>>>=', '|=', '&=', '^=',\n        '(', ')', '[', ']', '{', '}', ';',\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #6699cc; font-weight: bold;',\n            2 => 'color: #000066; font-weight: bold;',\n            3 => 'color: #03F; ',\n            4 => 'color: #000033; font-weight: bold;',\n            5 => 'color: #330000; font-weight: bold;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #006699;',\n            3 => 'color: #008000; font-style: italic; font-weight: bold;',\n            'MULTI' => 'color: #666666; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;',\n            ),\n        'STRINGS' => array(\n            0 => 'color: #FF0000;',\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;',\n            ),\n        'METHODS' => array(\n            1 => 'color: #006633;',\n            2 => 'color: #006633;',\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;',\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n);\n"
  },
  {
    "path": "includes/geshi/hicest.php",
    "content": "<?php\n/*************************************************************************************\n * hicest.php\n * --------\n * Author: Georg Petrich (spt@hicest.com)\n * Copyright: (c) 2010 Georg Petrich (http://www.HicEst.com)\n * Release Version: 1.0.9.1\n * Date Started: 2010/03/15\n *\n * HicEst language file for GeSHi.\n *\n * CHANGES\n * -------\n * yyyy/mm/dd (v.v.v.v)\n *  -  First Release\n *\n * TODO (updated yyyy/mm/dd)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'HicEst',\n    'COMMENT_SINGLE' => array(1 => '!'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', '\\''),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            '$cmd_line', 'abs', 'acos', 'alarm', 'alias', 'allocate', 'appendix', 'asin', 'atan', 'axis', 'beep',\n            'call', 'ceiling', 'char', 'character', 'com', 'continue', 'cos', 'cosh', 'data', 'diffeq', 'dimension', 'dlg', 'dll',\n            'do', 'edit', 'else', 'elseif', 'end', 'enddo', 'endif', 'exp', 'floor', 'function', 'fuz', 'goto', 'iand', 'ichar',\n            'ieor', 'if', 'index', 'init', 'int', 'intpol', 'ior', 'key', 'len', 'len_trim', 'line', 'lock', 'log', 'max', 'maxloc',\n            'min', 'minloc', 'mod', 'nint', 'not', 'open', 'pop', 'ran', 'read', 'real', 'return', 'rgb', 'roots', 'sign', 'sin',\n            'sinh', 'solve', 'sort', 'subroutine', 'sum', 'system', 'tan', 'tanh', 'then', 'time', 'use', 'window', 'write', 'xeq'\n            )\n        ),\n    'SYMBOLS' => array(\n        1 => array(\n            '(', ')', '+', '-', '*', '/', '=', '<', '>', '!', '^', ':', ','\n            ),\n        2 => array(\n            '$', '$$'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #ff0000;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;',\n            ),\n        'METHODS' => array(\n            0 => 'color: #004000;'\n            ),\n        'SYMBOLS' => array(\n            1 => 'color: #339933;',\n            2 => 'color: #ff0000;'\n            ),\n        'REGEXPS' => array(),\n        'SCRIPT' => array()\n        ),\n    'URLS' => array(1 => ''),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/hq9plus.php",
    "content": "<?php\n/*************************************************************************************\n * hq9plus.php\n * ----------\n * Author: Benny Baumann (BenBE@geshi.org)\n * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2009/10/31\n *\n * HQ9+ language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/10/31 (1.0.8.1)\n *   -  First Release\n *\n * TODO\n * ----\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n$language_data = array (\n    'LANG_NAME' => 'HQ9+',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        ),\n    'SYMBOLS' => array(\n        'H', 'Q', '9', '+', 'h', 'q'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            ),\n        'COMMENTS' => array(\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #a16000;'\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'KEYWORDS' => GESHI_NEVER,\n            'COMMENTS' => GESHI_NEVER,\n            'STRINGS' => GESHI_NEVER,\n            'REGEXPS' => GESHI_NEVER,\n            'NUMBERS' => GESHI_NEVER\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/html4strict.php",
    "content": "<?php\n/*************************************************************************************\n * html4strict.php\n * ---------------\n * Author: Nigel McNie (nigel@geshi.org)\n * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/07/10\n *\n * HTML 4.01 strict language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2005/12/28 (1.0.4)\n *   -  Removed escape character for strings\n * 2004/11/27 (1.0.3)\n *   -  Added support for multiple object splitters\n * 2004/10/27 (1.0.2)\n *   -  Added support for URLs\n * 2004/08/05 (1.0.1)\n *   -  Added INS and DEL\n *   -  Removed the background colour from tags' styles\n * 2004/07/14 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n * * Check that only HTML4 strict attributes are highlighted\n * * Eliminate empty tags that aren't allowed in HTML4 strict\n * * Split to several files - html4trans, xhtml1 etc\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'HTML',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        2 => array(\n            'a', 'abbr', 'acronym', 'address', 'applet', 'area',\n            'base', 'basefont', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'b',\n            'caption', 'center', 'cite', 'code', 'colgroup', 'col',\n            'dd', 'del', 'dfn', 'dir', 'div', 'dl', 'dt',\n            'em',\n            'fieldset', 'font', 'form', 'frame', 'frameset',\n            'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'html',\n            'iframe', 'ilayer', 'img', 'input', 'ins', 'isindex', 'i',\n            'kbd',\n            'label', 'legend', 'link', 'li',\n            'map', 'meta',\n            'noframes', 'noscript',\n            'object', 'ol', 'optgroup', 'option',\n            'param', 'pre', 'p',\n            'q',\n            'samp', 'script', 'select', 'small', 'span', 'strike', 'strong', 'style', 'sub', 'sup', 's',\n            'table', 'tbody', 'td', 'textarea', 'text', 'tfoot', 'thead', 'th', 'title', 'tr', 'tt',\n            'ul', 'u',\n            'var',\n            ),\n        3 => array(\n            'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis',\n            'background', 'bgcolor', 'border',\n            'cellpadding', 'cellspacing', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords',\n            'data', 'datetime', 'declare', 'defer', 'dir', 'disabled',\n            'enctype',\n            'face', 'for', 'frame', 'frameborder',\n            'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv',\n            'id', 'ismap',\n            'label', 'lang', 'language', 'link', 'longdesc',\n            'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple',\n            'name', 'nohref', 'noresize', 'noshade', 'nowrap',\n            'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onreset', 'onselect', 'onsubmit', 'onunload',\n            'profile', 'prompt',\n            'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',\n            'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary',\n            'tabindex', 'target', 'text', 'title', 'type',\n            'usemap',\n            'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',\n            'width'\n            )\n        ),\n    'SYMBOLS' => array(\n        '/', '='\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;'\n            ),\n        'COMMENTS' => array(\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'SCRIPT' => array(\n            -2 => 'color: #404040;', // CDATA\n            -1 => 'color: #808080; font-style: italic;', // comments\n            0 => 'color: #00bbdd;',\n            1 => 'color: #ddbb00;',\n            2 => 'color: #009900;'\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        2 => 'http://december.com/html/4/element/{FNAMEL}.html',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,\n    'SCRIPT_DELIMITERS' => array(\n        -2 => array(\n            '<![CDATA[' => ']]>'\n            ),\n        -1 => array(\n            '<!--' => '-->'\n            ),\n        0 => array(\n            '<!DOCTYPE' => '>'\n            ),\n        1 => array(\n            '&' => ';'\n            ),\n        2 => array(\n            '<' => '>'\n            )\n    ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        -2 => false,\n        -1 => false,\n        0 => false,\n        1 => false,\n        2 => true\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            2 => array(\n                'DISALLOWED_BEFORE' => '(?<=&lt;|&lt;\\/)',\n                'DISALLOWED_AFTER' => '(?=\\s|\\/|&gt;)',\n            )\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/html5.php",
    "content": "<?php\n/*************************************************************************************\n * html5.php\n * ---------------\n * Author: Nigel McNie (nigel@geshi.org)\n * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/07/10\n *\n * HTML 5 language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2005/12/28 (1.0.4)\n *   -  Removed escape character for strings\n * 2004/11/27 (1.0.3)\n *   -  Added support for multiple object splitters\n * 2004/10/27 (1.0.2)\n *   -  Added support for URLs\n * 2004/08/05 (1.0.1)\n *   -  Added INS and DEL\n *   -  Removed the background colour from tags' styles\n * 2004/07/14 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n * * Check that only HTML4 strict attributes are highlighted\n * * Eliminate empty tags that aren't allowed in HTML4 strict\n * * Split to several files - html4trans, xhtml1 etc\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'HTML5',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        2 => array(\n            'a', 'abbr', 'address', 'article', 'area', 'aside', 'audio',\n\n            'base', 'bdo', 'blockquote', 'body', 'br', 'button', 'b',\n\n            'caption', 'cite', 'code', 'colgroup', 'col', 'canvas', 'command', 'datalist', 'details',\n\n            'dd', 'del', 'dfn', 'div', 'dl', 'dt',\n\n            'em', 'embed',\n\n            'fieldset', 'form', 'figcaption', 'figure', 'footer',\n\n            'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'html', 'header', 'hgroup',\n\n            'iframe', 'ilayer', 'img', 'input', 'ins', 'isindex', 'i',\n\n            'kbd', 'keygen',\n\n            'label', 'legend', 'link', 'li',\n\n            'map', 'meta', 'mark', 'meter',\n\n            'noscript', 'nav',\n\n            'object', 'ol', 'optgroup', 'option', 'output',\n\n            'param', 'pre', 'p', 'progress',\n\n            'q',\n\n            'rp', 'rt', 'ruby',\n\n            'samp', 'script', 'select', 'small', 'span', 'strong', 'style', 'sub', 'sup', 's', 'section', 'source', 'summary',\n\n            'table', 'tbody', 'td', 'textarea', 'text', 'tfoot', 'thead', 'th', 'title', 'tr', 'time',\n\n            'ul',\n\n            'var', 'video',\n\n            'wbr',\n            ),\n        3 => array(\n            'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis', 'autocomplete', 'autofocus',\n            'background', 'bgcolor', 'border',\n            'cellpadding', 'cellspacing', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords', 'contenteditable', 'contextmenu',\n            'data', 'datetime', 'declare', 'defer', 'dir', 'disabled', 'draggable', 'dropzone',\n            'enctype',\n            'face', 'for', 'frame', 'frameborder', 'form', 'formaction', 'formenctype', 'formmethod', 'formnovalidate', 'formtarget',\n            'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv', 'hidden',\n            'id', 'ismap',\n            'label', 'lang', 'language', 'link', 'longdesc',\n            'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple', 'min', 'max',\n            'name', 'nohref', 'noresize', 'noshade', 'nowrap', 'novalidate',\n            'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onselect', 'onsubmit', 'onunload', 'onafterprint', 'onbeforeprint', 'onbeforeonload', 'onerror', 'onhaschange', 'onmessage', 'onoffline', 'ononline', 'onpagehide', 'onpageshow', 'onpopstate', 'onredo', 'onresize', 'onstorage', 'onundo', 'oncontextmenu', 'onformchange', 'onforminput', 'oninput', 'oninvalid', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onmousewheel', 'onscroll', 'oncanplay', 'oncanplaythrough', 'ondurationchange', 'onemptied', 'onended', 'onloadeddata', 'onloadedmetadata', 'onloadstart', 'onpause', 'onplay', 'onplaying', 'onprogress', 'onratechange', 'onreadystatechange', 'onseeked', 'onseeking', 'onstalled', 'onsuspend', 'ontimeupdate', 'onvolumechange', 'onwaiting',\n            'profile', 'prompt', 'pattern', 'placeholder',\n            'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules', 'required',\n            'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary', 'spellcheck', 'step',\n            'tabindex', 'target', 'text', 'title', 'type',\n            'usemap',\n            'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',\n            'width'\n            )\n        ),\n    'SYMBOLS' => array(\n        '/', '='\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;'\n            ),\n        'COMMENTS' => array(\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'SCRIPT' => array(\n            -2 => 'color: #404040;', // CDATA\n            -1 => 'color: #808080; font-style: italic;', // comments\n            0 => 'color: #00bbdd;',\n            1 => 'color: #ddbb00;',\n            2 => 'color: #009900;'\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        2 => 'http://december.com/html/4/element/{FNAMEL}.html',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,\n    'SCRIPT_DELIMITERS' => array(\n        -2 => array(\n            '<![CDATA[' => ']]>'\n            ),\n        -1 => array(\n            '<!--' => '-->'\n            ),\n        0 => array(\n            '<!DOCTYPE' => '>'\n            ),\n        1 => array(\n            '&' => ';'\n            ),\n        2 => array(\n            '<' => '>'\n            )\n    ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        -2 => false,\n        -1 => false,\n        0 => false,\n        1 => false,\n        2 => true\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            2 => array(\n                'DISALLOWED_BEFORE' => '(?<=&lt;|&lt;\\/)',\n                'DISALLOWED_AFTER' => '(?=\\s|\\/|&gt;)',\n            )\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/icon.php",
    "content": "<?php\n/*************************************************************************************\n * icon.php\n * --------\n * Author: Matt Oates (mattoates@gmail.com)\n * Copyright: (c) 2010 Matt Oates (http://mattoates.co.uk)\n * Release Version: 1.0.9.1\n * Date Started: 2010/04/24\n *\n * Icon language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/04/24 (0.0.0.2)\n *  -  Validated with Geshi langcheck.php FAILED due to preprocessor keywords looking like symbols\n *  -  Hard wrapped to improve readability\n * 2010/04/20 (0.0.0.1)\n *  -  First Release\n *\n * TODO (updated 2010/04/20)\n * -------------------------\n * - Do the &amp; need replacing with &?\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Icon',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', '\\''),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'break', 'case', 'continue', 'create', 'default', 'do', 'else',\n            'end', 'every', 'fail', 'for', 'if', 'import', 'initial',\n            'initially', 'invocable', 'link', 'next', 'not', 'of', 'package',\n            'procedure', 'record', 'repeat', 'return', 'switch', 'suspend',\n            'then', 'to', 'until', 'while'\n            ),\n        2 => array(\n            'global', 'local', 'static'\n            ),\n        3 => array(\n            'allocated', 'ascii', 'clock', 'collections',\n            'column', 'cset', 'current', 'date', 'dateline', 'digits',\n            'dump', 'e', 'error', 'errornumber', 'errortext',\n            'errorvalue', 'errout', 'eventcode', 'eventsource', 'eventvalue',\n            'fail', 'features', 'file', 'host', 'input', 'lcase',\n            'letters', 'level', 'line', 'main', 'now', 'null',\n            'output', 'phi', 'pi', 'pos', 'progname', 'random',\n            'regions', 'source', 'storage', 'subject', 'syserr', 'time',\n            'trace', 'ucase', 'version', 'col', 'control', 'interval',\n            'ldrag', 'lpress', 'lrelease', 'mdrag', 'meta', 'mpress',\n            'mrelease', 'rdrag', 'resize', 'row', 'rpress', 'rrelease',\n            'shift', 'window', 'x', 'y'\n            ),\n        4 => array(\n            'abs', 'acos', 'any', 'args', 'asin', 'atan', 'bal', 'center', 'char',\n            'chmod', 'close', 'cofail', 'collect', 'copy', 'cos', 'cset', 'ctime', 'delay', 'delete',\n            'detab', 'display', 'dtor', 'entab', 'errorclear', 'event', 'eventmask', 'EvGet', 'exit',\n            'exp', 'fetch', 'fieldnames', 'find', 'flock', 'flush', 'function', 'get', 'getch',\n            'getche', 'getenv', 'gettimeofday', 'globalnames', 'gtime', 'iand', 'icom', 'image',\n            'insert', 'integer', 'ior', 'ishift', 'ixor', 'key', 'left', 'list', 'load', 'loadfunc',\n            'localnames', 'log', 'many', 'map', 'match', 'member', 'mkdir', 'move', 'name', 'numeric',\n            'open', 'opmask', 'ord', 'paramnames', 'parent', 'pipe', 'pop', 'pos', 'proc', 'pull',\n            'push', 'put', 'read', 'reads', 'real', 'receive', 'remove', 'rename', 'repl', 'reverse',\n            'right', 'rmdir', 'rtod', 'runerr', 'seek', 'select', 'send', 'seq', 'serial', 'set',\n            'setenv', 'sort', 'sortf', 'sql', 'sqrt', 'stat', 'stop', 'string', 'system', 'tab',\n            'table', 'tan', 'trap', 'trim', 'truncate', 'type', 'upto', 'utime', 'variable', 'where',\n            'write', 'writes'\n            ),\n        5 => array(\n            'Active', 'Alert', 'Bg', 'Clip', 'Clone', 'Color', 'ColorValue',\n            'CopyArea', 'Couple', 'DrawArc', 'DrawCircle', 'DrawCurve', 'DrawCylinder', 'DrawDisk',\n            'DrawImage', 'DrawLine', 'DrawPoint', 'DrawPolygon', 'DrawRectangle', 'DrawSegment',\n            'DrawSphere', 'DrawString', 'DrawTorus', 'EraseArea', 'Event', 'Fg', 'FillArc',\n            'FillCircle', 'FillPolygon', 'FillRectangle', 'Font', 'FreeColor', 'GotoRC', 'GotoXY',\n            'IdentifyMatrix', 'Lower', 'MatrixMode', 'NewColor', 'PaletteChars', 'PaletteColor',\n            'PaletteKey', 'Pattern', 'Pending', 'Pixel', 'PopMatrix', 'PushMatrix', 'PushRotate',\n            'PushScale', 'PushTranslate', 'QueryPointer', 'Raise', 'ReadImage', 'Refresh', 'Rotate',\n            'Scale', 'Texcoord', 'TextWidth', 'Texture', 'Translate', 'Uncouple', 'WAttrib',\n            'WDefault', 'WFlush', 'WindowContents', 'WriteImage', 'WSync'\n            ),\n        6 => array(\n            'define', 'include', 'ifdef', 'ifndef', 'else', 'endif', 'error',\n            'line', 'undef'\n            ),\n        7 => array(\n            '_V9', '_AMIGA', '_ACORN', '_CMS', '_MACINTOSH', '_MSDOS_386',\n            '_MS_WINDOWS_NT', '_MSDOS', '_MVS', '_OS2', '_POR', 'T', '_UNIX', '_POSIX', '_DBM',\n            '_VMS', '_ASCII', '_EBCDIC', '_CO_EXPRESSIONS', '_CONSOLE_WINDOW', '_DYNAMIC_LOADING',\n            '_EVENT_MONITOR', '_EXTERNAL_FUNCTIONS', '_KEYBOARD_FUNCTIONS', '_LARGE_INTEGERS',\n            '_MULTITASKING', '_PIPES', '_RECORD_IO', '_SYSTEM_FUNCTION', '_MESSAGING', '_GRAPHICS',\n            '_X_WINDOW_SYSTEM', '_MS_WINDOWS', '_WIN32', '_PRESENTATION_MGR', '_ARM_FUNCTIONS',\n            '_DOS_FUNCTIONS'\n            ),\n        8 => array(\n            'line'\n            )\n        ),\n    'SYMBOLS' => array(\n        1 => array(\n            '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '\\\\', '%', '=', '<', '>', '!', '^',\n            '&', '|', '?', ':', ';', ',', '.', '~', '@'\n            ),\n        2 => array(\n            '$(', '$)', '$<', '$>', '$'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #b1b100;',\n            3 => 'color: #b1b100;',\n            4 => 'color: #b1b100;',\n            5 => 'color: #b1b100;',\n            6 => 'color: #b1b100;',\n            7 => 'color: #b1b100;',\n            8 => 'color: #b1b100;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;',\n            ),\n        'METHODS' => array(\n            0 => 'color: #004000;'\n            ),\n        'SYMBOLS' => array(\n            1 => 'color: #339933;',\n            2 => 'color: #b1b100;'\n            ),\n        'REGEXPS' => array(),\n        'SCRIPT' => array()\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(1 => '.'),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            3 => array(\n                'DISALLOWED_BEFORE' => '(?<=&amp;)'\n                ),\n            4 => array(\n                'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9_\\\"\\'])\",\n                'DISALLOWED_AFTER' => \"(?![a-zA-Z0-9_\\\"\\'])\"\n                ),\n            6 => array(\n                'DISALLOWED_BEFORE' => '(?<=\\$)'\n                ),\n            8 => array(\n                'DISALLOWED_BEFORE' => '(?<=#)'\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/idl.php",
    "content": "<?php\n/*************************************************************************************\n * idl.php\n * -------\n * Author: Cedric Bosdonnat (cedricbosdo@openoffice.org)\n * Copyright: (c) 2006 Cedric Bosdonnat\n * Release Version: 1.0.9.1\n * Date Started: 2006/08/20\n *\n * Unoidl language file for GeSHi.\n *\n * 2006/08/20 (1.0.0)\n *  -  First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n\n$language_data = array (\n    'LANG_NAME' => 'Uno Idl',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'published', 'get', 'set', 'service', 'singleton', 'type', 'module', 'interface', 'struct',\n            'const', 'constants', 'exception', 'enum', 'raises', 'typedef'\n            ),\n        2 => array(\n            'bound', 'maybeambiguous', 'maybedefault', 'maybevoid', 'oneway', 'optional',\n            'readonly', 'in', 'out', 'inout', 'attribute', 'transient', 'removable'\n            ),\n        3 => array(\n            'True', 'False', 'TRUE', 'FALSE'\n            ),\n        4 => array(\n            'string', 'long', 'byte', 'hyper', 'boolean', 'any', 'char', 'double',\n            'void', 'sequence', 'unsigned'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':', ';', '...'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #990078; font-weight: bold',\n            2 => 'color: #36dd1c;',\n            3 => 'color: #990078; font-weight: bold',\n            4 => 'color: #0000ec;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #3f7f5f;',\n            2 => 'color: #808080;',\n            'MULTI' => 'color: #4080ff; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #666666; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #808080;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000dd;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        1 => '::'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/ini.php",
    "content": "<?php\n/*************************************************************************************\n * ini.php\n * --------\n * Author: deguix (cevo_deguix@yahoo.com.br)\n * Copyright: (c) 2005 deguix\n * Release Version: 1.0.9.1\n * Date Started: 2005/03/27\n *\n * INI language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n * 2005/12/28 (1.0.1)\n *   -  Removed unnecessary keyword style index\n *   -  Added support for \" strings\n * 2005/04/05 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2005/03/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'INI',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(0 => '/^\\s*;.*?$/m'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', \"'\"),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        ),\n    'SYMBOLS' => array(\n        '[', ']', '='\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            ),\n        'COMMENTS' => array(\n            0 => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'BRACKETS' => array(\n            0 => ''\n            ),\n        'STRINGS' => array(\n            0 => 'color: #933;'\n            ),\n        'NUMBERS' => array(\n            0 => ''\n            ),\n        'METHODS' => array(\n            0 => ''\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000066; font-weight:bold;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #000066; font-weight:bold;',\n            1 => 'color: #000099;',\n            2 => 'color: #660066;'\n            ),\n        'SCRIPT' => array(\n            0 => ''\n            )\n        ),\n    'URLS' => array(\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        //Section names\n        0 => '\\[.+\\]',\n        //Entry names\n        1 => array(\n            GESHI_SEARCH => '^(\\s*)([a-zA-Z0-9_\\-]+)(\\s*=)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3'\n            ),\n        //Entry values\n        2 => array(\n            // Evil hackery to get around GeSHi bug: <>\" and ; are added so <span>s can be matched\n            // Explicit match on variable names because if a comment is before the first < of the span\n            // gets chewed up...\n            GESHI_SEARCH => '([<>\";a-zA-Z0-9_]+\\s*)=(.*)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1=',\n            GESHI_AFTER => ''\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/inno.php",
    "content": "<?php\n/*************************************************************************************\n * Inno.php\n * ----------\n * Author: Thomas Klingler (hotline@theratech.de) based on delphi.php from J�rja Norbert (jnorbi@vipmail.hu)\n * Copyright: (c) 2004 J�rja Norbert, Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2005/07/29\n *\n * Inno Script language inkl. Delphi (Object Pascal) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2005/09/03\n *   -  First Release\n *\n * TODO (updated 2005/07/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Inno',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('(*' => '*)'),\n    'CASE_KEYWORDS' => 0,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'Setup','Types','Components','Tasks','Dirs','Files','Icons','INI',\n            'InstallDelete','Languages','Messages','CustomMessage',\n            'LangOptions','Registry','RUN','UninstallDelete','UninstallRun',\n            'app','win','sys','syswow64','src','sd','pf','pf32','pf64','cf',\n            'cf32','cf64','tmp','fonts','dao','group','localappdata','sendto',\n            'userappdata','commonappdata','userdesktop','commondesktop',\n            'userdocs','commondocs','userfavorites','commonfavorites',\n            'userprograms','commonprograms','userstartmenu','commonstartmenu',\n            'userstartup','commonstartup','usertemplates','commontemplates'\n            ),\n        2 => array(\n            'nil', 'false', 'true', 'var', 'type', 'const','And', 'Array', 'As', 'Begin', 'Case', 'Class', 'Constructor', 'Destructor', 'Div', 'Do', 'DownTo', 'Else',\n            'End', 'Except', 'File', 'Finally', 'For', 'Function', 'Goto', 'If', 'Implementation', 'In', 'Inherited', 'Interface',\n            'Is', 'Mod', 'Not', 'Object', 'Of', 'On', 'Or', 'Packed', 'Procedure', 'Property', 'Raise', 'Record',\n            'Repeat', 'Set', 'Shl', 'Shr', 'Then', 'ThreadVar', 'To', 'Try', 'Unit', 'Until', 'Uses', 'While', 'With', 'Xor',\n\n            'HKCC','HKCR','HKCU','HKLM','HKU','alwaysoverwrite','alwaysskipifsameorolder','append',\n            'binary','classic','closeonexit','comparetimestamp','confirmoverwrite',\n            'createkeyifdoesntexist','createonlyiffileexists','createvalueifdoesntexist',\n            'deleteafterinstall','deletekey','deletevalue','dirifempty','dontcloseonexit',\n            'dontcopy','dontcreatekey','disablenouninstallwarning','dword','exclusive','expandsz',\n            'external','files','filesandordirs','fixed','fontisnttruetype','ignoreversion','iscustom','isreadme',\n            'modern','multisz','new','noerror','none','normal','nowait','onlyifdestfileexists',\n            'onlyifdoesntexist','onlyifnewer','overwrite','overwritereadonly','postinstall',\n            'preservestringtype','promptifolder','regserver','regtypelib','restart','restartreplace',\n            'runhidden','runmaximized','runminimized','sharedfile','shellexec','showcheckbox',\n            'skipifnotsilent','skipifsilent','silent','skipifdoesntexist',\n            'skipifsourcedoesntexist','sortfilesbyextension','unchecked','uninsalwaysuninstall',\n            'uninsclearvalue','uninsdeleteentry','uninsdeletekey','uninsdeletekeyifempty',\n            'uninsdeletesection','uninsdeletesectionifempty','uninsdeletevalue',\n            'uninsneveruninstall','useapppaths','verysilent','waituntilidle'\n            ),\n        3 => array(\n            'Abs', 'Addr', 'AnsiCompareStr', 'AnsiCompareText', 'AnsiContainsStr', 'AnsiEndsStr', 'AnsiIndexStr', 'AnsiLeftStr',\n            'AnsiLowerCase', 'AnsiMatchStr', 'AnsiMidStr', 'AnsiPos', 'AnsiReplaceStr', 'AnsiReverseString', 'AnsiRightStr',\n            'AnsiStartsStr', 'AnsiUpperCase', 'ArcCos', 'ArcSin', 'ArcTan', 'Assigned', 'BeginThread', 'Bounds', 'CelsiusToFahrenheit',\n            'ChangeFileExt', 'Chr', 'CompareStr', 'CompareText', 'Concat', 'Convert', 'Copy', 'Cos', 'CreateDir', 'CurrToStr',\n            'CurrToStrF', 'Date', 'DateTimeToFileDate', 'DateTimeToStr', 'DateToStr', 'DayOfTheMonth', 'DayOfTheWeek', 'DayOfTheYear',\n            'DayOfWeek', 'DaysBetween', 'DaysInAMonth', 'DaysInAYear', 'DaySpan', 'DegToRad', 'DeleteFile', 'DiskFree', 'DiskSize',\n            'DupeString', 'EncodeDate', 'EncodeDateTime', 'EncodeTime', 'EndOfADay', 'EndOfAMonth', 'Eof', 'Eoln', 'Exp', 'ExtractFileDir',\n            'ExtractFileDrive', 'ExtractFileExt', 'ExtractFileName', 'ExtractFilePath', 'FahrenheitToCelsius', 'FileAge',\n            'FileDateToDateTime', 'FileExists', 'FilePos', 'FileSearch', 'FileSetDate', 'FileSize', 'FindClose', 'FindCmdLineSwitch',\n            'FindFirst', 'FindNext', 'FloatToStr', 'FloatToStrF', 'Format', 'FormatCurr', 'FormatDateTime', 'FormatFloat', 'Frac',\n            'GetCurrentDir', 'GetLastError', 'GetMem', 'High', 'IncDay', 'IncMinute', 'IncMonth', 'IncYear', 'InputBox',\n            'InputQuery', 'Int', 'IntToHex', 'IntToStr', 'IOResult', 'IsInfinite', 'IsLeapYear', 'IsMultiThread', 'IsNaN',\n            'LastDelimiter', 'Length', 'Ln', 'Lo', 'Log10', 'Low', 'LowerCase', 'Max', 'Mean', 'MessageDlg', 'MessageDlgPos',\n            'MonthOfTheYear', 'Now', 'Odd', 'Ord', 'ParamCount', 'ParamStr', 'Pi', 'Point', 'PointsEqual', 'Pos', 'Pred',\n            'Printer', 'PromptForFileName', 'PtInRect', 'RadToDeg', 'Random', 'RandomRange', 'RecodeDate', 'RecodeTime', 'Rect',\n            'RemoveDir', 'RenameFile', 'Round', 'SeekEof', 'SeekEoln', 'SelectDirectory', 'SetCurrentDir', 'Sin', 'SizeOf',\n            'Slice', 'Sqr', 'Sqrt', 'StringOfChar', 'StringReplace', 'StringToWideChar', 'StrToCurr', 'StrToDate', 'StrToDateTime',\n            'StrToFloat', 'StrToInt', 'StrToInt64', 'StrToInt64Def', 'StrToIntDef', 'StrToTime', 'StuffString', 'Succ', 'Sum', 'Tan',\n            'Time', 'TimeToStr', 'Tomorrow', 'Trunc', 'UpCase', 'UpperCase', 'VarType', 'WideCharToString', 'WrapText', 'Yesterday',\n            'Append', 'AppendStr', 'Assign', 'AssignFile', 'AssignPrn', 'Beep', 'BlockRead', 'BlockWrite', 'Break',\n            'ChDir', 'Close', 'CloseFile', 'Continue', 'DateTimeToString', 'Dec', 'DecodeDate', 'DecodeDateTime',\n            'DecodeTime', 'Delete', 'Dispose', 'EndThread', 'Erase', 'Exclude', 'Exit', 'FillChar', 'Flush', 'FreeAndNil',\n            'FreeMem', 'GetDir', 'GetLocaleFormatSettings', 'Halt', 'Inc', 'Include', 'Insert', 'MkDir', 'Move', 'New',\n            'ProcessPath', 'Randomize', 'Read', 'ReadLn', 'ReallocMem', 'Rename', 'ReplaceDate', 'ReplaceTime',\n            'Reset', 'ReWrite', 'RmDir', 'RunError', 'Seek', 'SetLength', 'SetString', 'ShowMessage', 'ShowMessageFmt',\n            'ShowMessagePos', 'Str', 'Truncate', 'Val', 'Write', 'WriteLn',\n\n            'AdminPrivilegesRequired','AfterInstall','AllowCancelDuringInstall','AllowNoIcons','AllowRootDirectory','AllowUNCPath','AlwaysRestart','AlwaysShowComponentsList','AlwaysShowDirOnReadyPage','AlwaysShowGroupOnReadyPage ','AlwaysUsePersonalGroup','AppComments','AppContact','AppCopyright','AppendDefaultDirName',\n            'AppendDefaultGroupName','AppId','AppModifyPath','AppMutex','AppName','AppPublisher',\n            'AppPublisherURL','AppReadmeFile','AppSupportURL','AppUpdatesURL','AppVerName','AppVersion',\n            'Attribs','BackColor','BackColor2','BackColorDirection','BackSolid','BeforeInstall',\n            'ChangesAssociations','ChangesEnvironment','Check','CodeFile','Comment','Compression','CopyMode',\n            'CreateAppDir','CreateUninstallRegKey','DefaultDirName','DefaultGroupName',\n            'DefaultUserInfoName','DefaultUserInfoOrg','DefaultUserInfoSerial',\n            'Description','DestDir','DestName','DirExistsWarning',\n            'DisableDirPage','DisableFinishedPage',\n            'DisableProgramGroupPage','DisableReadyMemo','DisableReadyPage',\n            'DisableStartupPrompt','DiskClusterSize','DiskSliceSize','DiskSpaceMBLabel',\n            'DiskSpanning','DontMergeDuplicateFiles','EnableDirDoesntExistWarning','Encryption',\n            'Excludes','ExtraDiskSpaceRequired','Filename','Flags','FlatComponentsList','FontInstall',\n            'GroupDescription','HotKey','IconFilename','IconIndex','InfoAfterFile','InfoBeforeFile',\n            'InternalCompressLevel','Key','LanguageDetectionMethod',\n            'LicenseFile','MergeDuplicateFiles','MessagesFile','MinVersion','Name',\n            'OnlyBelowVersion','OutputBaseFilename','OutputManifestFile','OutputDir',\n            'Parameters','Password','Permissions','PrivilegesRequired','ReserveBytes',\n            'RestartIfNeededByRun','Root','RunOnceId','Section','SetupIconFile',\n            'ShowComponentSizes','ShowLanguageDialog','ShowTasksTreeLines','SlicesPerDisk',\n            'SolidCompression','Source','SourceDir','StatusMsg','Subkey',\n            'TimeStampRounding','TimeStampsInUTC','TouchDate','TouchTime','Type',\n            'UninstallDisplayIcon','UninstallDisplayName','UninstallFilesDir','UninstallIconFile',\n            'UninstallLogMode','UninstallRestartComputer','UninstallStyle','Uninstallable',\n            'UpdateUninstallLogAppName','UsePreviousAppDir','UsePreviousGroup',\n            'UsePreviousTasks','UsePreviousSetupType','UsePreviousUserInfo',\n            'UserInfoPage','UseSetupLdr','ValueData','ValueName','ValueType',\n            'VersionInfoVersion','VersionInfoCompany','VersionInfoDescription','VersionInfoTextVersion',\n            'WindowResizable','WindowShowCaption','WindowStartMaximized',\n            'WindowVisible','WizardImageBackColor','WizardImageFile','WizardImageStretch','WizardSmallImageBackColor','WizardSmallImageFile','WizardStyle','WorkingDir'\n            ),\n        4 => array(\n            'AnsiChar', 'AnsiString', 'Boolean', 'Byte', 'Cardinal', 'Char', 'Comp', 'Currency', 'Double', 'Extended',\n            'Int64', 'Integer', 'LongInt', 'LongWord', 'PAnsiChar', 'PAnsiString', 'PChar', 'PCurrency', 'PDateTime',\n            'PExtended', 'PInt64', 'Pointer', 'PShortString', 'PString', 'PVariant', 'PWideChar', 'PWideString',\n            'Real', 'Real48', 'ShortInt', 'ShortString', 'Single', 'SmallInt', 'String', 'TBits', 'TConvType', 'TDateTime',\n            'Text', 'TextFile', 'TFloatFormat', 'TFormatSettings', 'TList', 'TObject', 'TOpenDialog', 'TPoint',\n            'TPrintDialog', 'TRect', 'TReplaceFlags', 'TSaveDialog', 'TSearchRec', 'TStringList', 'TSysCharSet',\n            'TThreadFunc', 'Variant', 'WideChar', 'WideString', 'Word'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '@', '%', '&', '*', '|', '/', '<', '>'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',/*bold Black*/\n            2 => 'color: #000000;font-style: italic;',/*Black*/\n            3 => 'color: #0000FF;',/*blue*/\n            4 => 'color: #CC0000;'/*red*/\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #33FF00; font-style: italic;',\n            'MULTI' => 'color: #33FF00; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000; font-weight: bold;',\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/intercal.php",
    "content": "<?php\n/*************************************************************************************\n * intercal.php\n * ----------\n * Author: Benny Baumann (BenBE@geshi.org)\n * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2009/10/31\n *\n * INTERCAL language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/10/31 (1.0.8.1)\n *   -  First Release\n *\n * TODO\n * ----\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n$language_data = array (\n    'LANG_NAME' => 'INTERCAL',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        //Politeness\n        1 => array(\n            'DO', 'DOES', 'DONT', 'DON\\'T', 'NOT', 'PLEASE', 'PLEASENT', 'PLEASEN\\'T', 'MAYBE'\n            ),\n        //Statements\n        2 => array(\n            'STASH', 'RETRIEVE', 'NEXT', 'RESUME', 'FORGET', 'ABSTAIN', 'ABSTAINING',\n            'COME', 'FROM', 'CALCULATING', 'REINSTATE', 'IGNORE', 'REMEMBER',\n            'WRITE', 'IN', 'READ', 'OUT', 'GIVE', 'UP'\n            )\n        ),\n    'SYMBOLS' => array(\n        '.', ',', ':', ';', '#',\n        '~', '$', '&', '?',\n        '\\'', '\"', '<-'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000080; font-weight: bold;',\n            2 => 'color: #000080; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            1 => 'color: #808080; font-style: italic;'\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        1 => '^\\(\\d+\\)'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'COMMENTS' => GESHI_NEVER,\n            'STRINGS' => GESHI_NEVER,\n            'NUMBERS' => GESHI_NEVER\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/io.php",
    "content": "<?php\n/*************************************************************************************\n * io.php\n * -------\n * Author: Nigel McNie (nigel@geshi.org)\n * Copyright: (c) 2006 Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2006/09/23\n *\n * Io language file for GeSHi. Thanks to Johnathan Wright for the suggestion and help\n * with this language :)\n *\n * CHANGES\n * -------\n * 2006/09/23(1.0.0)\n *  -  First Release\n *\n * TODO\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Io',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'and', 'break', 'else', 'elseif', 'exit', 'for', 'foreach', 'if', 'ifFalse', 'ifNil',\n            'ifTrue', 'or', 'pass', 'raise', 'return', 'then', 'try', 'wait', 'while', 'yield'\n            ),\n        2 => array(\n            'activate', 'activeCoroCount', 'asString', 'block', 'catch', 'clone', 'collectGarbage',\n            'compileString', 'continue', 'do', 'doFile', 'doMessage', 'doString', 'forward',\n            'getSlot', 'getenv', 'hasSlot', 'isActive', 'isNil', 'isResumable', 'list', 'message',\n            'method', 'parent', 'pause', 'perform', 'performWithArgList', 'print', 'proto',\n            'raiseResumable', 'removeSlot', 'resend', 'resume', 'schedulerSleepSeconds', 'self',\n            'sender', 'setSchedulerSleepSeconds', 'setSlot', 'shallowCopy', 'slotNames', 'super',\n            'system', 'thisBlock', 'thisContext', 'thisMessage', 'type', 'uniqueId', 'updateSlot',\n            'write'\n            ),\n        3 => array(\n            'Array', 'AudioDevice', 'AudioMixer', 'Block', 'Box', 'Buffer', 'CFunction', 'CGI',\n            'Color', 'Curses', 'DBM', 'DNSResolver', 'DOConnection', 'DOProxy', 'DOServer',\n            'Date', 'Directory', 'Duration', 'DynLib', 'Error', 'Exception', 'FFT', 'File',\n            'Fnmatch', 'Font', 'Future', 'GL', 'GLE', 'GLScissor', 'GLU', 'GLUCylinder',\n            'GLUQuadric', 'GLUSphere', 'GLUT', 'Host', 'Image', 'Importer', 'LinkList', 'List',\n            'Lobby', 'Locals', 'MD5', 'MP3Decoder', 'MP3Encoder', 'Map', 'Message', 'Movie',\n            'NULL', 'Nil', 'Nop', 'Notifiction', 'Number', 'Object', 'OpenGL', 'Point', 'Protos',\n            'Regex', 'SGMLTag', 'SQLite', 'Server', 'ShowMessage', 'SleepyCat', 'SleepyCatCursor',\n            'Socket', 'SocketManager', 'Sound', 'Soup', 'Store', 'String', 'Tree', 'UDPSender',\n            'UDPReceiver', 'URL', 'User', 'Warning', 'WeakLink'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            2 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;',\n            2 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            0 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/ispfpanel.php",
    "content": "<?php\n/*************************************************************************************\n * ispfpanel.php\n * -------------\n * Author: Ramesh Vishveshwar (ramesh.vishveshwar@gmail.com)\n * Copyright: (c) 2012 Ramesh Vishveshwar (http://thecodeisclear.in)\n * Release Version: 1.0.9.1\n * Date Started: 2012/09/18\n *\n * ISPF Panel Definition (MVS) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2011/09/22 (1.0.0)\n *   -  First Release\n *\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'ISPF Panel',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        // Panel Definition Statements\n        1 => array(\n            ')CCSID',')PANEL',')ATTR',')ABC',')ABCINIT',')ABCPROC',')BODY',')MODEL',\n            ')AREA',')INIT',')REINIT',')PROC',')FIELD',')HELP',')LIST',')PNTS',')END'\n            ),\n        // File-Tailoring Skeletons\n        2 => array (\n            ')DEFAULT',')BLANK', ')CM', ')DO', ')DOT', ')ELSE', ')ENDSEL',\n            ')ENDDO', ')ENDDOT', ')IF', ')IM', ')ITERATE', ')LEAVE', ')NOP', ')SEL',\n            ')SET', ')TB', ')TBA'\n            ),\n        // Control Variables\n        3 => array (\n            '.ALARM','.ATTR','.ATTRCHAR','.AUTOSEL','.CSRPOS','.CSRROW','.CURSOR','.HELP',\n            '.HHELP','.KANA','.MSG','.NRET','.PFKEY','.RESP','.TRAIL','.ZVARS'\n            ),\n        // Keywords\n        4 => array (\n            'WINDOW','ALARM','ATTN','BARRIER','HILITE','CAPS',\n            'CKBOX','CLEAR','CMD','COLOR','COMBO','CSRGRP','CUADYN',\n            'SKIP','INTENS','AREA','EXTEND',\n            'DESC','ASIS','VGET','VPUT','JUST','BATSCRD','BATSCRW',\n            'BDBCS','BDISPMAX','BIT','BKGRND','BREDIMAX','PAD','PADC',\n            'PAS','CHINESES','CHINESET','DANISH','DATAMOD','DDLIST',\n            'DEPTH','DUMP','ENGLISH','ERROR','EXIT','EXPAND','FIELD',\n            'FORMAT','FRENCH','GE','GERMAN','IMAGE','IND','TYPE',\n            'ITALIAN','JAPANESE','KOREAN','LCOL','LEN','LIND','LISTBOX',\n            'MODE','NEST','NOJUMP','NOKANA','NUMERIC','OUTLINE','PARM',\n            'PGM','PORTUGESE','RADIO','RCOL','REP','RIND','ROWS',\n            'SCALE','SCROLL','SFIHDR','SGERMAN','SIND','SPANISH',\n            'UPPERENG','WIDTH'\n            ),\n        // Parameters\n        5 => array (\n            'ADDPOP','ALPHA','ALPHAB','DYNAMIC','SCRL',\n            'CCSID','COMMAND','DSNAME','DSNAMEF','DSNAMEFM',\n            'DSNAMEPQ','DSNAMEQ','EBCDIC','ENBLDUMP','ENUM',// 'EXTEND',\n            'FI','FILEID','FRAME','GUI','GUISCRD','GUISCRW','HEX',\n            'HIGH','IDATE','IN','INCLUDE','INPUT','ITIME','JDATE',\n            'JSTD','KEYLIST','LANG','LEFT','LIST','LISTV','LISTVX',\n            'LISTX','LMSG','LOGO','LOW','MIX','NAME','NAMEF','NB',\n            'NEWAPPL','NEWPOOL','NOCHECK','NOLOGO','NON','NONBLANK',\n            'NULLS','NUM','OFF','ON','OPT','OUT','OUTPUT','PANEL',\n            /* 'PGM',*/'PICT','PICTN','POSITION','TBDISPL','PROFILE',\n            'QUERY','RANGE','REVERSE','RIGHT','SHARED','SMSG',\n            'STDDATE','STDTIME','TERMSTAT','TERMTRAC','TEST',\n            'TESTX','TEXT','TRACE','TRACEX','USCORE','USER',\n            'USERMOD','WSCMD','WSCMDV'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '(',')','=','&',',','*','#','+','&','%','_','-','@','!'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false\n        ),\n    'STYLES' => array(\n        'BKGROUND' => 'background-color: #000000; color: #00FFFF;',\n        'KEYWORDS' => array(\n            1 => 'color: #FF0000;',\n            2 => 'color: #21A502;',\n            3 => 'color: #FF00FF;',\n            4 => 'color: #876C00;',\n            5 => 'color: #00FF00;'\n            ),\n        'COMMENTS' => array(\n            0 => 'color: #002EB8; font-style: italic;',\n            //1 => 'color: #002EB8; font-style: italic;',\n            //2 => 'color: #002EB8; font-style: italic;',\n            'MULTI' => 'color: #002EB8; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #FF7400;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #700000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #FF6633;'\n            ),\n        'METHODS' => array(\n            1 => '',\n            2 => ''\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #FF7400;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #6B1F6B;'\n            ),\n        'SCRIPT' => array(\n            0 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        // Variables Defined in the Panel\n        0 => '&amp;[a-zA-Z]{1,8}[0-9]{0,}',\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/j.php",
    "content": "<?php\n/*************************************************************************************\n * j.php\n * --------\n * Author: Ric Sherlock (tikkanz@gmail.com)\n * Copyright: (c) 2009 Ric Sherlock\n * Release Version: 1.0.9.1\n * Date Started: 2009/11/10\n *\n * J language file for GeSHi.\n *\n * CHANGES\n * -------\n *  2010/07/18 (1.0.8.10)\n *   - Infinity and negative infinity recognized as numbers\n *  2010/03/01 (1.0.8.8)\n *   - Add support for label_xyz. and goto_xyz.\n *   - Fix highlighting of for_i.\n *   - Use alternative method for highlighting for_xyz. construct\n *  2010/02/14 (1.0.8.7)\n *   - Add support for primitives\n *  2010/01/12 (1.0.2)\n *   - Use HARDQUOTE for strings\n *   - Highlight open quotes/incomplete strings\n *   - Highlight multi-line comments that use Note\n *   - Refinements for NUMBERS and Argument keywords\n *   - Highlight infinity and neg. infinity using REGEXPS\n *   - Highlight \"for_myvar.\" style Control keyword using REGEXPS\n *  2009/12/14 (1.0.1)\n *   -  Regex for NUMBERS, SYMBOLS for () and turn off BRACKETS\n *  2009/11/12 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2010/01/27)\n * -------------------------\n *  * combine keyword categories by using conditional regex statement in PARSER CONTROL?\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'J',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        1 => '/(?<!\\w)NB\\..*?$/m',                //singleline comments NB.\n        2 => '/(?<=\\bNote\\b).*?$\\s+\\)(?:(?!\\n)\\s)*$/sm',   //multiline comments in Note\n        3 => \"/'[^']*?$/m\"                        //incomplete strings/open quotes\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'HARDQUOTE' => array(\"'\", \"'\"),\n    'HARDESCAPE' => array(\"'\"),\n    'HARDCHAR' => \"'\",\n    'NUMBERS' => array(\n        0 => '\\b(?:_?\\d+(?:\\.\\d+)?(?:x|[bejprx]_?[\\da-z]+(?:\\.[\\da-z]+)?)?|__?)(?![\\w\\.\\:])',\n        ),\n    'KEYWORDS' => array(\n        //Control words\n        1 => array(\n            'assert.', 'break.', 'case.', 'catch.', 'catcht.', 'continue.', 'do.',\n            'else.', 'elseif.', 'end.', 'fcase.', 'for.', 'goto.', 'if.', 'label.',\n            'return.', 'select.', 'throw.', 'trap.', 'try.', 'while.', 'whilst.'\n            ),\n        //Arguments\n        2 => array(\n            'm', 'n', 'u', 'v', 'x', 'y'\n            ),\n        ),\n    'SYMBOLS' => array(\n        //Punctuation\n        0 => array(\n            '(', ')'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        //6 => true,\n        //7 => true,\n        //8 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000ff; font-weight: bold;',\n            2 => 'color: #0000cc; font-weight: bold;',\n            //6 => 'color: #000000; font-weight: bold;',\n            //7 => 'color: #000000; font-weight: bold;',\n            //8 => 'color: #000000; font-weight: bold;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #666666; font-style: italic; font-weight: bold;',\n            3 => 'color: #ff00ff; ',                      //open quote\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            'HARD' => 'font-weight: bold;',\n            0 => '',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            'HARD' => 'color: #ff0000;',\n            0 => 'color: #ff0000;',\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #009999; font-weight: bold;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #009900; font-weight: bold;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #0000ff; font-weight: bold;',   //for_xyz. - same as kw1\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '', //'http://www.jsoftware.com/help/dictionary/ctrl.htm',\n        2 => '',\n        //6 => '', //'http://www.jsoftware.com/jwiki/Vocabulary',\n        //7 => '', //'http://www.jsoftware.com/jwiki/Vocabulary',\n        //8 => '', //'http://www.jsoftware.com/jwiki/Vocabulary',\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        0 => '\\b(for|goto|label)_[a-zA-Z]\\w*\\.',   //for_xyz. - should be kw1\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'BRACKETS' => GESHI_NEVER,\n            ),\n        'NUMBERS' => array(\n            'PRECHECK_RX' => '#[\\d_]#',            // underscore is valid number\n            ),\n        'KEYWORDS' => array(\n            //Control words\n            2 => array(\n                'DISALLOWED_BEFORE' => '(?<!\\w)',\n                'DISALLOWED_AFTER' => '(?![\\w\\.\\:])',\n                ),\n            //Primtives starting with a symbol (except . or :)\n            6 => array(\n                'DISALLOWED_BEFORE' => '(?!K)',    // effect should be to allow anything\n                'DISALLOWED_AFTER' => '(?=.*)',\n                ),\n            //Primtives starting with a letter\n            7 => array(\n                'DISALLOWED_BEFORE' => '(?<!\\w)',\n                'DISALLOWED_AFTER' => '(?=.*)',\n                ),\n            //Primtives starting with symbol . or :\n            8 => array(\n                'DISALLOWED_BEFORE' => '(?<=\\s)',\n                'DISALLOWED_AFTER' => '(?=.*)',\n                ),\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/java.php",
    "content": "<?php\n/*************************************************************************************\n * java.php\n * --------\n * Author: Nigel McNie (nigel@geshi.org)\n * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/07/10\n *\n * Java language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/25 (1.0.7.22)\n *   -  Added highlighting of import and package directives as non-OOP\n * 2005/12/28 (1.0.4)\n *   -  Added instanceof keyword\n * 2004/11/27 (1.0.3)\n *   -  Added support for multiple object splitters\n * 2004/08/05 (1.0.2)\n *   -  Added URL support\n *   -  Added keyword \"this\", as bugs in GeSHi class ironed out\n * 2004/08/05 (1.0.1)\n *   -  Added support for symbols\n *   -  Added extra missed keywords\n * 2004/07/14 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n * * Compact the class names like the first few have been\n *   and eliminate repeats\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Java',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Import and Package directives (Basic Support only)\n        2 => '/(?:(?<=import[\\\\n\\\\s])|(?<=package[\\\\n\\\\s]))[\\\\n\\\\s]*([a-zA-Z0-9_]+\\\\.)*([a-zA-Z0-9_]+|\\*)(?=[\\n\\s;])/i',\n        // javadoc comments\n        3 => '#/\\*\\*(?![\\*\\/]).*\\*/#sU'\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'for', 'foreach', 'if', 'else', 'while', 'do',\n            'switch', 'case',  'return', 'public',\n            'private', 'protected', 'extends', 'break', 'class',\n            'new', 'try', 'catch', 'throws', 'finally', 'implements',\n            'interface', 'throw', 'final', 'native', 'synchronized', 'this',\n            'abstract', 'transient', 'instanceof', 'assert', 'continue',\n            'default', 'enum', 'package', 'static', 'strictfp', 'super',\n            'volatile', 'const', 'goto', 'import'\n            ),\n        2 => array(\n            'null', 'false', 'true'\n            ),\n        3 => array(\n            'AbstractAction', 'AbstractBorder', 'AbstractButton',\n            'AbstractCellEditor', 'AbstractCollection',\n            'AbstractColorChooserPanel', 'AbstractDocument',\n            'AbstractDocument.AttributeContext',\n            'AbstractDocument.Content',\n            'AbstractDocument.ElementEdit',\n            'AbstractLayoutCache',\n            'AbstractLayoutCache.NodeDimensions', 'AbstractList',\n            'AbstractListModel', 'AbstractMap',\n            'AbstractMethodError', 'AbstractSequentialList',\n            'AbstractSet', 'AbstractTableModel',\n            'AbstractUndoableEdit', 'AbstractWriter',\n            'AccessControlContext', 'AccessControlException',\n            'AccessController', 'AccessException', 'Accessible',\n            'AccessibleAction', 'AccessibleBundle',\n            'AccessibleComponent', 'AccessibleContext',\n            'AccessibleHyperlink', 'AccessibleHypertext',\n            'AccessibleIcon', 'AccessibleObject',\n            'AccessibleRelation', 'AccessibleRelationSet',\n            'AccessibleResourceBundle', 'AccessibleRole',\n            'AccessibleSelection', 'AccessibleState',\n            'AccessibleStateSet', 'AccessibleTable',\n            'AccessibleTableModelChange', 'AccessibleText',\n            'AccessibleValue', 'Acl', 'AclEntry',\n            'AclNotFoundException', 'Action', 'ActionEvent',\n            'ActionListener', 'ActionMap', 'ActionMapUIResource',\n            'Activatable', 'ActivateFailedException',\n            'ActivationDesc', 'ActivationException',\n            'ActivationGroup', 'ActivationGroupDesc',\n            'ActivationGroupDesc.CommandEnvironment',\n            'ActivationGroupID', 'ActivationID',\n            'ActivationInstantiator', 'ActivationMonitor',\n            'ActivationSystem', 'Activator', 'ActiveEvent',\n            'Adjustable', 'AdjustmentEvent',\n            'AdjustmentListener', 'Adler32', 'AffineTransform',\n            'AffineTransformOp', 'AlgorithmParameterGenerator',\n            'AlgorithmParameterGeneratorSpi',\n            'AlgorithmParameters', 'AlgorithmParameterSpec',\n            'AlgorithmParametersSpi', 'AllPermission',\n            'AlphaComposite', 'AlreadyBound',\n            'AlreadyBoundException', 'AlreadyBoundHelper',\n            'AlreadyBoundHolder', 'AncestorEvent',\n            'AncestorListener', 'Annotation', 'Any', 'AnyHolder',\n            'AnySeqHelper', 'AnySeqHolder', 'Applet',\n            'AppletContext', 'AppletInitializer', 'AppletStub',\n            'ApplicationException', 'Arc2D', 'Arc2D.Double',\n            'Arc2D.Float', 'Area', 'AreaAveragingScaleFilter',\n            'ARG_IN', 'ARG_INOUT', 'ARG_OUT',\n            'ArithmeticException', 'Array',\n            'ArrayIndexOutOfBoundsException', 'ArrayList',\n            'Arrays', 'ArrayStoreException', 'AsyncBoxView',\n            'Attribute', 'AttributedCharacterIterator',\n            'AttributedCharacterIterator.Attribute',\n            'AttributedString', 'AttributeInUseException',\n            'AttributeList', 'AttributeModificationException',\n            'Attributes', 'Attributes.Name', 'AttributeSet',\n            'AttributeSet.CharacterAttribute',\n            'AttributeSet.ColorAttribute',\n            'AttributeSet.FontAttribute',\n            'AttributeSet.ParagraphAttribute', 'AudioClip',\n            'AudioFileFormat', 'AudioFileFormat.Type',\n            'AudioFileReader', 'AudioFileWriter', 'AudioFormat',\n            'AudioFormat.Encoding', 'AudioInputStream',\n            'AudioPermission', 'AudioSystem',\n            'AuthenticationException',\n            'AuthenticationNotSupportedException',\n            'Authenticator', 'Autoscroll', 'AWTError',\n            'AWTEvent', 'AWTEventListener',\n            'AWTEventMulticaster', 'AWTException',\n            'AWTPermission', 'BadKind', 'BadLocationException',\n            'BAD_CONTEXT', 'BAD_INV_ORDER', 'BAD_OPERATION',\n            'BAD_PARAM', 'BAD_POLICY', 'BAD_POLICY_TYPE',\n            'BAD_POLICY_VALUE', 'BAD_TYPECODE', 'BandCombineOp',\n            'BandedSampleModel', 'BasicArrowButton',\n            'BasicAttribute', 'BasicAttributes', 'BasicBorders',\n            'BasicBorders.ButtonBorder',\n            'BasicBorders.FieldBorder',\n            'BasicBorders.MarginBorder',\n            'BasicBorders.MenuBarBorder',\n            'BasicBorders.RadioButtonBorder',\n            'BasicBorders.SplitPaneBorder',\n            'BasicBorders.ToggleButtonBorder',\n            'BasicButtonListener', 'BasicButtonUI',\n            'BasicCheckBoxMenuItemUI', 'BasicCheckBoxUI',\n            'BasicColorChooserUI', 'BasicComboBoxEditor',\n            'BasicComboBoxEditor.UIResource',\n            'BasicComboBoxRenderer',\n            'BasicComboBoxRenderer.UIResource',\n            'BasicComboBoxUI', 'BasicComboPopup',\n            'BasicDesktopIconUI', 'BasicDesktopPaneUI',\n            'BasicDirectoryModel', 'BasicEditorPaneUI',\n            'BasicFileChooserUI', 'BasicGraphicsUtils',\n            'BasicHTML', 'BasicIconFactory',\n            'BasicInternalFrameTitlePane',\n            'BasicInternalFrameUI', 'BasicLabelUI',\n            'BasicListUI', 'BasicLookAndFeel', 'BasicMenuBarUI',\n            'BasicMenuItemUI', 'BasicMenuUI',\n            'BasicOptionPaneUI',\n            'BasicOptionPaneUI.ButtonAreaLayout', 'BasicPanelUI',\n            'BasicPasswordFieldUI', 'BasicPermission',\n            'BasicPopupMenuSeparatorUI', 'BasicPopupMenuUI',\n            'BasicProgressBarUI', 'BasicRadioButtonMenuItemUI',\n            'BasicRadioButtonUI', 'BasicRootPaneUI',\n            'BasicScrollBarUI', 'BasicScrollPaneUI',\n            'BasicSeparatorUI', 'BasicSliderUI',\n            'BasicSplitPaneDivider', 'BasicSplitPaneUI',\n            'BasicStroke', 'BasicTabbedPaneUI',\n            'BasicTableHeaderUI', 'BasicTableUI',\n            'BasicTextAreaUI', 'BasicTextFieldUI',\n            'BasicTextPaneUI', 'BasicTextUI',\n            'BasicTextUI.BasicCaret',\n            'BasicTextUI.BasicHighlighter',\n            'BasicToggleButtonUI', 'BasicToolBarSeparatorUI',\n            'BasicToolBarUI', 'BasicToolTipUI', 'BasicTreeUI',\n            'BasicViewportUI', 'BatchUpdateException',\n            'BeanContext', 'BeanContextChild',\n            'BeanContextChildComponentProxy',\n            'BeanContextChildSupport',\n            'BeanContextContainerProxy', 'BeanContextEvent',\n            'BeanContextMembershipEvent',\n            'BeanContextMembershipListener', 'BeanContextProxy',\n            'BeanContextServiceAvailableEvent',\n            'BeanContextServiceProvider',\n            'BeanContextServiceProviderBeanInfo',\n            'BeanContextServiceRevokedEvent',\n            'BeanContextServiceRevokedListener',\n            'BeanContextServices', 'BeanContextServicesListener',\n            'BeanContextServicesSupport',\n            'BeanContextServicesSupport.BCSSServiceProvider',\n            'BeanContextSupport',\n            'BeanContextSupport.BCSIterator', 'BeanDescriptor',\n            'BeanInfo', 'Beans', 'BevelBorder', 'BigDecimal',\n            'BigInteger', 'BinaryRefAddr', 'BindException',\n            'Binding', 'BindingHelper', 'BindingHolder',\n            'BindingIterator', 'BindingIteratorHelper',\n            'BindingIteratorHolder', 'BindingIteratorOperations',\n            'BindingListHelper', 'BindingListHolder',\n            'BindingType', 'BindingTypeHelper',\n            'BindingTypeHolder', 'BitSet', 'Blob', 'BlockView',\n            'Book', 'Boolean', 'BooleanControl',\n            'BooleanControl.Type', 'BooleanHolder',\n            'BooleanSeqHelper', 'BooleanSeqHolder', 'Border',\n            'BorderFactory', 'BorderLayout', 'BorderUIResource',\n            'BorderUIResource.BevelBorderUIResource',\n            'BorderUIResource.CompoundBorderUIResource',\n            'BorderUIResource.EmptyBorderUIResource',\n            'BorderUIResource.EtchedBorderUIResource',\n            'BorderUIResource.LineBorderUIResource',\n            'BorderUIResource.MatteBorderUIResource',\n            'BorderUIResource.TitledBorderUIResource',\n            'BoundedRangeModel', 'Bounds', 'Box', 'Box.Filler',\n            'BoxedValueHelper', 'BoxLayout', 'BoxView',\n            'BreakIterator', 'BufferedImage',\n            'BufferedImageFilter', 'BufferedImageOp',\n            'BufferedInputStream', 'BufferedOutputStream',\n            'BufferedReader', 'BufferedWriter', 'Button',\n            'ButtonGroup', 'ButtonModel', 'ButtonUI', 'Byte',\n            'ByteArrayInputStream', 'ByteArrayOutputStream',\n            'ByteHolder', 'ByteLookupTable', 'Calendar',\n            'CallableStatement', 'CannotProceed',\n            'CannotProceedException', 'CannotProceedHelper',\n            'CannotProceedHolder', 'CannotRedoException',\n            'CannotUndoException', 'Canvas', 'CardLayout',\n            'Caret', 'CaretEvent', 'CaretListener', 'CellEditor',\n            'CellEditorListener', 'CellRendererPane',\n            'Certificate', 'Certificate.CertificateRep',\n            'CertificateEncodingException',\n            'CertificateException',\n            'CertificateExpiredException', 'CertificateFactory',\n            'CertificateFactorySpi',\n            'CertificateNotYetValidException',\n            'CertificateParsingException',\n            'ChangedCharSetException', 'ChangeEvent',\n            'ChangeListener', 'Character', 'Character.Subset',\n            'Character.UnicodeBlock', 'CharacterIterator',\n            'CharArrayReader', 'CharArrayWriter',\n            'CharConversionException', 'CharHolder',\n            'CharSeqHelper', 'CharSeqHolder', 'Checkbox',\n            'CheckboxGroup', 'CheckboxMenuItem',\n            'CheckedInputStream', 'CheckedOutputStream',\n            'Checksum', 'Choice', 'ChoiceFormat', 'Class',\n            'ClassCastException', 'ClassCircularityError',\n            'ClassDesc', 'ClassFormatError', 'ClassLoader',\n            'ClassNotFoundException', 'Clip', 'Clipboard',\n            'ClipboardOwner', 'Clob', 'Cloneable',\n            'CloneNotSupportedException', 'CMMException',\n            'CodeSource', 'CollationElementIterator',\n            'CollationKey', 'Collator', 'Collection',\n            'Collections', 'Color',\n            'ColorChooserComponentFactory', 'ColorChooserUI',\n            'ColorConvertOp', 'ColorModel',\n            'ColorSelectionModel', 'ColorSpace',\n            'ColorUIResource', 'ComboBoxEditor', 'ComboBoxModel',\n            'ComboBoxUI', 'ComboPopup', 'CommunicationException',\n            'COMM_FAILURE', 'Comparable', 'Comparator',\n            'Compiler', 'CompletionStatus',\n            'CompletionStatusHelper', 'Component',\n            'ComponentAdapter', 'ComponentColorModel',\n            'ComponentEvent', 'ComponentInputMap',\n            'ComponentInputMapUIResource', 'ComponentListener',\n            'ComponentOrientation', 'ComponentSampleModel',\n            'ComponentUI', 'ComponentView', 'Composite',\n            'CompositeContext', 'CompositeName', 'CompositeView',\n            'CompoundBorder', 'CompoundControl',\n            'CompoundControl.Type', 'CompoundEdit',\n            'CompoundName', 'ConcurrentModificationException',\n            'ConfigurationException', 'ConnectException',\n            'ConnectIOException', 'Connection', 'Constructor', 'Container',\n            'ContainerAdapter', 'ContainerEvent',\n            'ContainerListener', 'ContentHandler',\n            'ContentHandlerFactory', 'ContentModel', 'Context',\n            'ContextList', 'ContextNotEmptyException',\n            'ContextualRenderedImageFactory', 'Control',\n            'Control.Type', 'ControlFactory',\n            'ControllerEventListener', 'ConvolveOp', 'CRC32',\n            'CRL', 'CRLException', 'CropImageFilter', 'CSS',\n            'CSS.Attribute', 'CTX_RESTRICT_SCOPE',\n            'CubicCurve2D', 'CubicCurve2D.Double',\n            'CubicCurve2D.Float', 'Current', 'CurrentHelper',\n            'CurrentHolder', 'CurrentOperations', 'Cursor',\n            'Customizer', 'CustomMarshal', 'CustomValue',\n            'DatabaseMetaData', 'DataBuffer', 'DataBufferByte',\n            'DataBufferInt', 'DataBufferShort',\n            'DataBufferUShort', 'DataFlavor',\n            'DataFormatException', 'DatagramPacket',\n            'DatagramSocket', 'DatagramSocketImpl',\n            'DatagramSocketImplFactory', 'DataInput',\n            'DataInputStream', 'DataLine', 'DataLine.Info',\n            'DataOutput', 'DataOutputStream',\n            'DataTruncation', 'DATA_CONVERSION', 'Date',\n            'DateFormat', 'DateFormatSymbols', 'DebugGraphics',\n            'DecimalFormat', 'DecimalFormatSymbols',\n            'DefaultBoundedRangeModel', 'DefaultButtonModel',\n            'DefaultCaret', 'DefaultCellEditor',\n            'DefaultColorSelectionModel', 'DefaultComboBoxModel',\n            'DefaultDesktopManager', 'DefaultEditorKit',\n            'DefaultEditorKit.BeepAction',\n            'DefaultEditorKit.CopyAction',\n            'DefaultEditorKit.CutAction',\n            'DefaultEditorKit.DefaultKeyTypedAction',\n            'DefaultEditorKit.InsertBreakAction',\n            'DefaultEditorKit.InsertContentAction',\n            'DefaultEditorKit.InsertTabAction',\n            'DefaultEditorKit.PasteAction,',\n            'DefaultFocusManager', 'DefaultHighlighter',\n            'DefaultHighlighter.DefaultHighlightPainter',\n            'DefaultListCellRenderer',\n            'DefaultListCellRenderer.UIResource',\n            'DefaultListModel', 'DefaultListSelectionModel',\n            'DefaultMenuLayout', 'DefaultMetalTheme',\n            'DefaultMutableTreeNode',\n            'DefaultSingleSelectionModel',\n            'DefaultStyledDocument',\n            'DefaultStyledDocument.AttributeUndoableEdit',\n            'DefaultStyledDocument.ElementSpec',\n            'DefaultTableCellRenderer',\n            'DefaultTableCellRenderer.UIResource',\n            'DefaultTableColumnModel', 'DefaultTableModel',\n            'DefaultTextUI', 'DefaultTreeCellEditor',\n            'DefaultTreeCellRenderer', 'DefaultTreeModel',\n            'DefaultTreeSelectionModel', 'DefinitionKind',\n            'DefinitionKindHelper', 'Deflater',\n            'DeflaterOutputStream', 'Delegate', 'DesignMode',\n            'DesktopIconUI', 'DesktopManager', 'DesktopPaneUI',\n            'DGC', 'Dialog', 'Dictionary', 'DigestException',\n            'DigestInputStream', 'DigestOutputStream',\n            'Dimension', 'Dimension2D', 'DimensionUIResource',\n            'DirContext', 'DirectColorModel', 'DirectoryManager',\n            'DirObjectFactory', 'DirStateFactory',\n            'DirStateFactory.Result', 'DnDConstants', 'Document',\n            'DocumentEvent', 'DocumentEvent.ElementChange',\n            'DocumentEvent.EventType', 'DocumentListener',\n            'DocumentParser', 'DomainCombiner', 'DomainManager',\n            'DomainManagerOperations', 'Double', 'DoubleHolder',\n            'DoubleSeqHelper', 'DoubleSeqHolder',\n            'DragGestureEvent', 'DragGestureListener',\n            'DragGestureRecognizer', 'DragSource',\n            'DragSourceContext', 'DragSourceDragEvent',\n            'DragSourceDropEvent', 'DragSourceEvent',\n            'DragSourceListener', 'Driver', 'DriverManager',\n            'DriverPropertyInfo', 'DropTarget',\n            'DropTarget.DropTargetAutoScroller',\n            'DropTargetContext', 'DropTargetDragEvent',\n            'DropTargetDropEvent', 'DropTargetEvent',\n            'DropTargetListener', 'DSAKey',\n            'DSAKeyPairGenerator', 'DSAParameterSpec',\n            'DSAParams', 'DSAPrivateKey', 'DSAPrivateKeySpec',\n            'DSAPublicKey', 'DSAPublicKeySpec', 'DTD',\n            'DTDConstants', 'DynamicImplementation', 'DynAny',\n            'DynArray', 'DynEnum', 'DynFixed', 'DynSequence',\n            'DynStruct', 'DynUnion', 'DynValue', 'EditorKit',\n            'Element', 'ElementIterator', 'Ellipse2D',\n            'Ellipse2D.Double', 'Ellipse2D.Float', 'EmptyBorder',\n            'EmptyStackException', 'EncodedKeySpec', 'Entity',\n            'EnumControl', 'EnumControl.Type', 'Enumeration',\n            'Environment', 'EOFException', 'Error',\n            'EtchedBorder', 'Event', 'EventContext',\n            'EventDirContext', 'EventListener',\n            'EventListenerList', 'EventObject', 'EventQueue',\n            'EventSetDescriptor', 'Exception',\n            'ExceptionInInitializerError', 'ExceptionList',\n            'ExpandVetoException', 'ExportException',\n            'ExtendedRequest', 'ExtendedResponse',\n            'Externalizable', 'FeatureDescriptor', 'Field',\n            'FieldNameHelper', 'FieldPosition', 'FieldView',\n            'File', 'FileChooserUI', 'FileDescriptor',\n            'FileDialog', 'FileFilter',\n            'FileInputStream', 'FilenameFilter', 'FileNameMap',\n            'FileNotFoundException', 'FileOutputStream',\n            'FilePermission', 'FileReader', 'FileSystemView',\n            'FileView', 'FileWriter', 'FilteredImageSource',\n            'FilterInputStream', 'FilterOutputStream',\n            'FilterReader', 'FilterWriter',\n            'FixedHeightLayoutCache', 'FixedHolder',\n            'FlatteningPathIterator', 'FlavorMap', 'Float',\n            'FloatControl', 'FloatControl.Type', 'FloatHolder',\n            'FloatSeqHelper', 'FloatSeqHolder', 'FlowLayout',\n            'FlowView', 'FlowView.FlowStrategy', 'FocusAdapter',\n            'FocusEvent', 'FocusListener', 'FocusManager',\n            'Font', 'FontFormatException', 'FontMetrics',\n            'FontRenderContext', 'FontUIResource', 'Format',\n            'FormatConversionProvider', 'FormView', 'Frame',\n            'FREE_MEM', 'GapContent', 'GeneralPath',\n            'GeneralSecurityException', 'GlyphJustificationInfo',\n            'GlyphMetrics', 'GlyphVector', 'GlyphView',\n            'GlyphView.GlyphPainter', 'GradientPaint',\n            'GraphicAttribute', 'Graphics', 'Graphics2D',\n            'GraphicsConfigTemplate', 'GraphicsConfiguration',\n            'GraphicsDevice', 'GraphicsEnvironment',\n            'GrayFilter', 'GregorianCalendar',\n            'GridBagConstraints', 'GridBagLayout', 'GridLayout',\n            'Group', 'Guard', 'GuardedObject', 'GZIPInputStream',\n            'GZIPOutputStream', 'HasControls', 'HashMap',\n            'HashSet', 'Hashtable', 'HierarchyBoundsAdapter',\n            'HierarchyBoundsListener', 'HierarchyEvent',\n            'HierarchyListener', 'Highlighter',\n            'Highlighter.Highlight',\n            'Highlighter.HighlightPainter', 'HTML',\n            'HTML.Attribute', 'HTML.Tag', 'HTML.UnknownTag',\n            'HTMLDocument', 'HTMLDocument.Iterator',\n            'HTMLEditorKit', 'HTMLEditorKit.HTMLFactory',\n            'HTMLEditorKit.HTMLTextAction',\n            'HTMLEditorKit.InsertHTMLTextAction',\n            'HTMLEditorKit.LinkController',\n            'HTMLEditorKit.Parser',\n            'HTMLEditorKit.ParserCallback',\n            'HTMLFrameHyperlinkEvent', 'HTMLWriter',\n            'HttpURLConnection', 'HyperlinkEvent',\n            'HyperlinkEvent.EventType', 'HyperlinkListener',\n            'ICC_ColorSpace', 'ICC_Profile', 'ICC_ProfileGray',\n            'ICC_ProfileRGB', 'Icon', 'IconUIResource',\n            'IconView', 'IdentifierHelper', 'Identity',\n            'IdentityScope', 'IDLEntity', 'IDLType',\n            'IDLTypeHelper', 'IDLTypeOperations',\n            'IllegalAccessError', 'IllegalAccessException',\n            'IllegalArgumentException',\n            'IllegalComponentStateException',\n            'IllegalMonitorStateException',\n            'IllegalPathStateException', 'IllegalStateException',\n            'IllegalThreadStateException', 'Image',\n            'ImageConsumer', 'ImageFilter',\n            'ImageGraphicAttribute', 'ImageIcon',\n            'ImageObserver', 'ImageProducer',\n            'ImagingOpException', 'IMP_LIMIT',\n            'IncompatibleClassChangeError',\n            'InconsistentTypeCode', 'IndexColorModel',\n            'IndexedPropertyDescriptor',\n            'IndexOutOfBoundsException', 'IndirectionException',\n            'InetAddress', 'Inflater', 'InflaterInputStream',\n            'InheritableThreadLocal', 'InitialContext',\n            'InitialContextFactory',\n            'InitialContextFactoryBuilder', 'InitialDirContext',\n            'INITIALIZE', 'Initializer', 'InitialLdapContext',\n            'InlineView', 'InputContext', 'InputEvent',\n            'InputMap', 'InputMapUIResource', 'InputMethod',\n            'InputMethodContext', 'InputMethodDescriptor',\n            'InputMethodEvent', 'InputMethodHighlight',\n            'InputMethodListener', 'InputMethodRequests',\n            'InputStream',\n            'InputStreamReader', 'InputSubset', 'InputVerifier',\n            'Insets', 'InsetsUIResource', 'InstantiationError',\n            'InstantiationException', 'Instrument',\n            'InsufficientResourcesException', 'Integer',\n            'INTERNAL', 'InternalError', 'InternalFrameAdapter',\n            'InternalFrameEvent', 'InternalFrameListener',\n            'InternalFrameUI', 'InterruptedException',\n            'InterruptedIOException',\n            'InterruptedNamingException', 'INTF_REPOS',\n            'IntHolder', 'IntrospectionException',\n            'Introspector', 'Invalid',\n            'InvalidAlgorithmParameterException',\n            'InvalidAttributeIdentifierException',\n            'InvalidAttributesException',\n            'InvalidAttributeValueException',\n            'InvalidClassException',\n            'InvalidDnDOperationException',\n            'InvalidKeyException', 'InvalidKeySpecException',\n            'InvalidMidiDataException', 'InvalidName',\n            'InvalidNameException',\n            'InvalidNameHelper', 'InvalidNameHolder',\n            'InvalidObjectException',\n            'InvalidParameterException',\n            'InvalidParameterSpecException',\n            'InvalidSearchControlsException',\n            'InvalidSearchFilterException', 'InvalidSeq',\n            'InvalidTransactionException', 'InvalidValue',\n            'INVALID_TRANSACTION', 'InvocationEvent',\n            'InvocationHandler', 'InvocationTargetException',\n            'InvokeHandler', 'INV_FLAG', 'INV_IDENT',\n            'INV_OBJREF', 'INV_POLICY', 'IOException',\n            'IRObject', 'IRObjectOperations', 'IstringHelper',\n            'ItemEvent', 'ItemListener', 'ItemSelectable',\n            'Iterator', 'JApplet', 'JarEntry', 'JarException',\n            'JarFile', 'JarInputStream', 'JarOutputStream',\n            'JarURLConnection', 'JButton', 'JCheckBox',\n            'JCheckBoxMenuItem', 'JColorChooser', 'JComboBox',\n            'JComboBox.KeySelectionManager', 'JComponent',\n            'JDesktopPane', 'JDialog', 'JEditorPane',\n            'JFileChooser', 'JFrame', 'JInternalFrame',\n            'JInternalFrame.JDesktopIcon', 'JLabel',\n            'JLayeredPane', 'JList', 'JMenu', 'JMenuBar',\n            'JMenuItem', 'JobAttributes',\n            'JobAttributes.DefaultSelectionType',\n            'JobAttributes.DestinationType',\n            'JobAttributes.DialogType',\n            'JobAttributes.MultipleDocumentHandlingType',\n            'JobAttributes.SidesType', 'JOptionPane', 'JPanel',\n            'JPasswordField', 'JPopupMenu',\n            'JPopupMenu.Separator', 'JProgressBar',\n            'JRadioButton', 'JRadioButtonMenuItem', 'JRootPane',\n            'JScrollBar', 'JScrollPane', 'JSeparator', 'JSlider',\n            'JSplitPane', 'JTabbedPane', 'JTable',\n            'JTableHeader', 'JTextArea', 'JTextComponent',\n            'JTextComponent.KeyBinding', 'JTextField',\n            'JTextPane', 'JToggleButton',\n            'JToggleButton.ToggleButtonModel', 'JToolBar',\n            'JToolBar.Separator', 'JToolTip', 'JTree',\n            'JTree.DynamicUtilTreeNode',\n            'JTree.EmptySelectionModel', 'JViewport', 'JWindow',\n            'Kernel', 'Key', 'KeyAdapter', 'KeyEvent',\n            'KeyException', 'KeyFactory', 'KeyFactorySpi',\n            'KeyListener', 'KeyManagementException', 'Keymap',\n            'KeyPair', 'KeyPairGenerator', 'KeyPairGeneratorSpi',\n            'KeySpec', 'KeyStore', 'KeyStoreException',\n            'KeyStoreSpi', 'KeyStroke', 'Label', 'LabelUI',\n            'LabelView', 'LastOwnerException',\n            'LayeredHighlighter',\n            'LayeredHighlighter.LayerPainter', 'LayoutManager',\n            'LayoutManager2', 'LayoutQueue', 'LdapContext',\n            'LdapReferralException', 'Lease',\n            'LimitExceededException', 'Line', 'Line.Info',\n            'Line2D', 'Line2D.Double', 'Line2D.Float',\n            'LineBorder', 'LineBreakMeasurer', 'LineEvent',\n            'LineEvent.Type', 'LineListener', 'LineMetrics',\n            'LineNumberInputStream', 'LineNumberReader',\n            'LineUnavailableException', 'LinkageError',\n            'LinkedList', 'LinkException', 'LinkLoopException',\n            'LinkRef', 'List', 'ListCellRenderer',\n            'ListDataEvent', 'ListDataListener', 'ListIterator',\n            'ListModel', 'ListResourceBundle',\n            'ListSelectionEvent', 'ListSelectionListener',\n            'ListSelectionModel', 'ListUI', 'ListView',\n            'LoaderHandler', 'Locale', 'LocateRegistry',\n            'LogStream', 'Long', 'LongHolder',\n            'LongLongSeqHelper', 'LongLongSeqHolder',\n            'LongSeqHelper', 'LongSeqHolder', 'LookAndFeel',\n            'LookupOp', 'LookupTable', 'MalformedLinkException',\n            'MalformedURLException', 'Manifest', 'Map',\n            'Map.Entry', 'MARSHAL', 'MarshalException',\n            'MarshalledObject', 'Math', 'MatteBorder',\n            'MediaTracker', 'Member', 'MemoryImageSource',\n            'Menu', 'MenuBar', 'MenuBarUI', 'MenuComponent',\n            'MenuContainer', 'MenuDragMouseEvent',\n            'MenuDragMouseListener', 'MenuElement', 'MenuEvent',\n            'MenuItem', 'MenuItemUI', 'MenuKeyEvent',\n            'MenuKeyListener', 'MenuListener',\n            'MenuSelectionManager', 'MenuShortcut',\n            'MessageDigest', 'MessageDigestSpi', 'MessageFormat',\n            'MetaEventListener', 'MetalBorders',\n            'MetalBorders.ButtonBorder',\n            'MetalBorders.Flush3DBorder',\n            'MetalBorders.InternalFrameBorder',\n            'MetalBorders.MenuBarBorder',\n            'MetalBorders.MenuItemBorder',\n            'MetalBorders.OptionDialogBorder',\n            'MetalBorders.PaletteBorder',\n            'MetalBorders.PopupMenuBorder',\n            'MetalBorders.RolloverButtonBorder',\n            'MetalBorders.ScrollPaneBorder',\n            'MetalBorders.TableHeaderBorder',\n            'MetalBorders.TextFieldBorder',\n            'MetalBorders.ToggleButtonBorder',\n            'MetalBorders.ToolBarBorder', 'MetalButtonUI',\n            'MetalCheckBoxIcon', 'MetalCheckBoxUI',\n            'MetalComboBoxButton', 'MetalComboBoxEditor',\n            'MetalComboBoxEditor.UIResource',\n            'MetalComboBoxIcon', 'MetalComboBoxUI',\n            'MetalDesktopIconUI', 'MetalFileChooserUI',\n            'MetalIconFactory', 'MetalIconFactory.FileIcon16',\n            'MetalIconFactory.FolderIcon16',\n            'MetalIconFactory.PaletteCloseIcon',\n            'MetalIconFactory.TreeControlIcon',\n            'MetalIconFactory.TreeFolderIcon',\n            'MetalIconFactory.TreeLeafIcon',\n            'MetalInternalFrameTitlePane',\n            'MetalInternalFrameUI', 'MetalLabelUI',\n            'MetalLookAndFeel', 'MetalPopupMenuSeparatorUI',\n            'MetalProgressBarUI', 'MetalRadioButtonUI',\n            'MetalScrollBarUI', 'MetalScrollButton',\n            'MetalScrollPaneUI', 'MetalSeparatorUI',\n            'MetalSliderUI', 'MetalSplitPaneUI',\n            'MetalTabbedPaneUI', 'MetalTextFieldUI',\n            'MetalTheme', 'MetalToggleButtonUI',\n            'MetalToolBarUI', 'MetalToolTipUI', 'MetalTreeUI',\n            'MetaMessage', 'Method', 'MethodDescriptor',\n            'MidiChannel', 'MidiDevice', 'MidiDevice.Info',\n            'MidiDeviceProvider', 'MidiEvent', 'MidiFileFormat',\n            'MidiFileReader', 'MidiFileWriter', 'MidiMessage',\n            'MidiSystem', 'MidiUnavailableException',\n            'MimeTypeParseException', 'MinimalHTMLWriter',\n            'MissingResourceException', 'Mixer', 'Mixer.Info',\n            'MixerProvider', 'ModificationItem', 'Modifier',\n            'MouseAdapter', 'MouseDragGestureRecognizer',\n            'MouseEvent', 'MouseInputAdapter',\n            'MouseInputListener', 'MouseListener',\n            'MouseMotionAdapter', 'MouseMotionListener',\n            'MultiButtonUI', 'MulticastSocket',\n            'MultiColorChooserUI', 'MultiComboBoxUI',\n            'MultiDesktopIconUI', 'MultiDesktopPaneUI',\n            'MultiFileChooserUI', 'MultiInternalFrameUI',\n            'MultiLabelUI', 'MultiListUI', 'MultiLookAndFeel',\n            'MultiMenuBarUI', 'MultiMenuItemUI',\n            'MultiOptionPaneUI', 'MultiPanelUI',\n            'MultiPixelPackedSampleModel', 'MultipleMaster',\n            'MultiPopupMenuUI', 'MultiProgressBarUI',\n            'MultiScrollBarUI', 'MultiScrollPaneUI',\n            'MultiSeparatorUI', 'MultiSliderUI',\n            'MultiSplitPaneUI', 'MultiTabbedPaneUI',\n            'MultiTableHeaderUI', 'MultiTableUI', 'MultiTextUI',\n            'MultiToolBarUI', 'MultiToolTipUI', 'MultiTreeUI',\n            'MultiViewportUI', 'MutableAttributeSet',\n            'MutableComboBoxModel', 'MutableTreeNode', 'Name',\n            'NameAlreadyBoundException', 'NameClassPair',\n            'NameComponent', 'NameComponentHelper',\n            'NameComponentHolder', 'NamedValue', 'NameHelper',\n            'NameHolder', 'NameNotFoundException', 'NameParser',\n            'NamespaceChangeListener', 'NameValuePair',\n            'NameValuePairHelper', 'Naming', 'NamingContext',\n            'NamingContextHelper', 'NamingContextHolder',\n            'NamingContextOperations', 'NamingEnumeration',\n            'NamingEvent', 'NamingException',\n            'NamingExceptionEvent', 'NamingListener',\n            'NamingManager', 'NamingSecurityException',\n            'NegativeArraySizeException', 'NetPermission',\n            'NoClassDefFoundError', 'NoInitialContextException',\n            'NoninvertibleTransformException',\n            'NoPermissionException', 'NoRouteToHostException',\n            'NoSuchAlgorithmException',\n            'NoSuchAttributeException', 'NoSuchElementException',\n            'NoSuchFieldError', 'NoSuchFieldException',\n            'NoSuchMethodError', 'NoSuchMethodException',\n            'NoSuchObjectException', 'NoSuchProviderException',\n            'NotActiveException', 'NotBoundException',\n            'NotContextException', 'NotEmpty', 'NotEmptyHelper',\n            'NotEmptyHolder', 'NotFound', 'NotFoundHelper',\n            'NotFoundHolder', 'NotFoundReason',\n            'NotFoundReasonHelper', 'NotFoundReasonHolder',\n            'NotOwnerException', 'NotSerializableException',\n            'NO_IMPLEMENT', 'NO_MEMORY', 'NO_PERMISSION',\n            'NO_RESOURCES', 'NO_RESPONSE',\n            'NullPointerException', 'Number', 'NumberFormat',\n            'NumberFormatException', 'NVList', 'Object',\n            'ObjectChangeListener', 'ObjectFactory',\n            'ObjectFactoryBuilder', 'ObjectHelper',\n            'ObjectHolder', 'ObjectImpl',\n            'ObjectInput', 'ObjectInputStream',\n            'ObjectInputStream.GetField',\n            'ObjectInputValidation', 'ObjectOutput',\n            'ObjectOutputStream', 'ObjectOutputStream.PutField',\n            'ObjectStreamClass', 'ObjectStreamConstants',\n            'ObjectStreamException', 'ObjectStreamField',\n            'ObjectView', 'OBJECT_NOT_EXIST', 'ObjID',\n            'OBJ_ADAPTER', 'Observable', 'Observer',\n            'OctetSeqHelper', 'OctetSeqHolder', 'OMGVMCID',\n            'OpenType', 'Operation',\n            'OperationNotSupportedException', 'Option',\n            'OptionalDataException', 'OptionPaneUI', 'ORB',\n            'OutOfMemoryError', 'OutputStream',\n            'OutputStreamWriter', 'OverlayLayout', 'Owner',\n            'Package', 'PackedColorModel', 'Pageable',\n            'PageAttributes', 'PageAttributes.ColorType',\n            'PageAttributes.MediaType',\n            'PageAttributes.OrientationRequestedType',\n            'PageAttributes.OriginType',\n            'PageAttributes.PrintQualityType', 'PageFormat',\n            'Paint', 'PaintContext', 'PaintEvent', 'Panel',\n            'PanelUI', 'Paper', 'ParagraphView',\n            'ParameterBlock', 'ParameterDescriptor',\n            'ParseException', 'ParsePosition', 'Parser',\n            'ParserDelegator', 'PartialResultException',\n            'PasswordAuthentication', 'PasswordView', 'Patch',\n            'PathIterator', 'Permission',\n            'PermissionCollection', 'Permissions',\n            'PERSIST_STORE', 'PhantomReference',\n            'PipedInputStream', 'PipedOutputStream',\n            'PipedReader', 'PipedWriter', 'PixelGrabber',\n            'PixelInterleavedSampleModel', 'PKCS8EncodedKeySpec',\n            'PlainDocument', 'PlainView', 'Point', 'Point2D',\n            'Point2D.Double', 'Point2D.Float', 'Policy',\n            'PolicyError', 'PolicyHelper',\n            'PolicyHolder', 'PolicyListHelper',\n            'PolicyListHolder', 'PolicyOperations',\n            'PolicyTypeHelper', 'Polygon', 'PopupMenu',\n            'PopupMenuEvent', 'PopupMenuListener', 'PopupMenuUI',\n            'Port', 'Port.Info', 'PortableRemoteObject',\n            'PortableRemoteObjectDelegate', 'Position',\n            'Position.Bias', 'PreparedStatement', 'Principal',\n            'PrincipalHolder', 'Printable',\n            'PrinterAbortException', 'PrinterException',\n            'PrinterGraphics', 'PrinterIOException',\n            'PrinterJob', 'PrintGraphics', 'PrintJob',\n            'PrintStream', 'PrintWriter', 'PrivateKey',\n            'PRIVATE_MEMBER', 'PrivilegedAction',\n            'PrivilegedActionException',\n            'PrivilegedExceptionAction', 'Process',\n            'ProfileDataException', 'ProgressBarUI',\n            'ProgressMonitor', 'ProgressMonitorInputStream',\n            'Properties', 'PropertyChangeEvent',\n            'PropertyChangeListener', 'PropertyChangeSupport',\n            'PropertyDescriptor', 'PropertyEditor',\n            'PropertyEditorManager', 'PropertyEditorSupport',\n            'PropertyPermission', 'PropertyResourceBundle',\n            'PropertyVetoException', 'ProtectionDomain',\n            'ProtocolException', 'Provider', 'ProviderException',\n            'Proxy', 'PublicKey', 'PUBLIC_MEMBER',\n            'PushbackInputStream', 'PushbackReader',\n            'QuadCurve2D', 'QuadCurve2D.Double',\n            'QuadCurve2D.Float', 'Random', 'RandomAccessFile',\n            'Raster', 'RasterFormatException', 'RasterOp',\n            'Reader', 'Receiver', 'Rectangle', 'Rectangle2D',\n            'Rectangle2D.Double', 'Rectangle2D.Float',\n            'RectangularShape', 'Ref', 'RefAddr', 'Reference',\n            'Referenceable', 'ReferenceQueue',\n            'ReferralException', 'ReflectPermission', 'Registry',\n            'RegistryHandler', 'RemarshalException', 'Remote',\n            'RemoteCall', 'RemoteException', 'RemoteObject',\n            'RemoteRef', 'RemoteServer', 'RemoteStub',\n            'RenderableImage', 'RenderableImageOp',\n            'RenderableImageProducer', 'RenderContext',\n            'RenderedImage', 'RenderedImageFactory', 'Renderer',\n            'RenderingHints', 'RenderingHints.Key',\n            'RepaintManager', 'ReplicateScaleFilter',\n            'Repository', 'RepositoryIdHelper', 'Request',\n            'RescaleOp', 'Resolver', 'ResolveResult',\n            'ResourceBundle', 'ResponseHandler', 'ResultSet',\n            'ResultSetMetaData', 'ReverbType', 'RGBImageFilter',\n            'RMIClassLoader', 'RMIClientSocketFactory',\n            'RMIFailureHandler', 'RMISecurityException',\n            'RMISecurityManager', 'RMIServerSocketFactory',\n            'RMISocketFactory', 'Robot', 'RootPaneContainer',\n            'RootPaneUI', 'RoundRectangle2D',\n            'RoundRectangle2D.Double', 'RoundRectangle2D.Float',\n            'RowMapper', 'RSAKey', 'RSAKeyGenParameterSpec',\n            'RSAPrivateCrtKey', 'RSAPrivateCrtKeySpec',\n            'RSAPrivateKey', 'RSAPrivateKeySpec', 'RSAPublicKey',\n            'RSAPublicKeySpec', 'RTFEditorKit',\n            'RuleBasedCollator', 'Runnable', 'RunTime',\n            'Runtime', 'RuntimeException', 'RunTimeOperations',\n            'RuntimePermission', 'SampleModel',\n            'SchemaViolationException', 'Scrollable',\n            'Scrollbar', 'ScrollBarUI', 'ScrollPane',\n            'ScrollPaneConstants', 'ScrollPaneLayout',\n            'ScrollPaneLayout.UIResource', 'ScrollPaneUI',\n            'SearchControls', 'SearchResult',\n            'SecureClassLoader', 'SecureRandom',\n            'SecureRandomSpi', 'Security', 'SecurityException',\n            'SecurityManager', 'SecurityPermission', 'Segment',\n            'SeparatorUI', 'Sequence', 'SequenceInputStream',\n            'Sequencer', 'Sequencer.SyncMode', 'Serializable',\n            'SerializablePermission', 'ServantObject',\n            'ServerCloneException', 'ServerError',\n            'ServerException', 'ServerNotActiveException',\n            'ServerRef', 'ServerRequest',\n            'ServerRuntimeException', 'ServerSocket',\n            'ServiceDetail', 'ServiceDetailHelper',\n            'ServiceInformation', 'ServiceInformationHelper',\n            'ServiceInformationHolder',\n            'ServiceUnavailableException', 'Set',\n            'SetOverrideType', 'SetOverrideTypeHelper', 'Shape',\n            'ShapeGraphicAttribute', 'Short', 'ShortHolder',\n            'ShortLookupTable', 'ShortMessage', 'ShortSeqHelper',\n            'ShortSeqHolder', 'Signature', 'SignatureException',\n            'SignatureSpi', 'SignedObject', 'Signer',\n            'SimpleAttributeSet', 'SimpleBeanInfo',\n            'SimpleDateFormat', 'SimpleTimeZone',\n            'SinglePixelPackedSampleModel',\n            'SingleSelectionModel', 'SizeLimitExceededException',\n            'SizeRequirements', 'SizeSequence', 'Skeleton',\n            'SkeletonMismatchException',\n            'SkeletonNotFoundException', 'SliderUI', 'Socket',\n            'SocketException', 'SocketImpl', 'SocketImplFactory',\n            'SocketOptions', 'SocketPermission',\n            'SocketSecurityException', 'SoftBevelBorder',\n            'SoftReference', 'SortedMap', 'SortedSet',\n            'Soundbank', 'SoundbankReader', 'SoundbankResource',\n            'SourceDataLine', 'SplitPaneUI', 'SQLData',\n            'SQLException', 'SQLInput', 'SQLOutput',\n            'SQLPermission', 'SQLWarning', 'Stack',\n            'StackOverflowError', 'StateEdit', 'StateEditable',\n            'StateFactory', 'Statement', 'Streamable',\n            'StreamableValue', 'StreamCorruptedException',\n            'StreamTokenizer', 'StrictMath', 'String',\n            'StringBuffer', 'StringBufferInputStream',\n            'StringCharacterIterator', 'StringContent',\n            'StringHolder', 'StringIndexOutOfBoundsException',\n            'StringReader', 'StringRefAddr', 'StringSelection',\n            'StringTokenizer', 'StringValueHelper',\n            'StringWriter', 'Stroke', 'Struct', 'StructMember',\n            'StructMemberHelper', 'Stub', 'StubDelegate',\n            'StubNotFoundException', 'Style', 'StyleConstants',\n            'StyleConstants.CharacterConstants',\n            'StyleConstants.ColorConstants',\n            'StyleConstants.FontConstants',\n            'StyleConstants.ParagraphConstants', 'StyleContext',\n            'StyledDocument', 'StyledEditorKit',\n            'StyledEditorKit.AlignmentAction',\n            'StyledEditorKit.BoldAction',\n            'StyledEditorKit.FontFamilyAction',\n            'StyledEditorKit.FontSizeAction',\n            'StyledEditorKit.ForegroundAction',\n            'StyledEditorKit.ItalicAction',\n            'StyledEditorKit.StyledTextAction',\n            'StyledEditorKit.UnderlineAction', 'StyleSheet',\n            'StyleSheet.BoxPainter', 'StyleSheet.ListPainter',\n            'SwingConstants', 'SwingPropertyChangeSupport',\n            'SwingUtilities', 'SyncFailedException',\n            'Synthesizer', 'SysexMessage', 'System',\n            'SystemColor', 'SystemException', 'SystemFlavorMap',\n            'TabableView', 'TabbedPaneUI', 'TabExpander',\n            'TableCellEditor', 'TableCellRenderer',\n            'TableColumn', 'TableColumnModel',\n            'TableColumnModelEvent', 'TableColumnModelListener',\n            'TableHeaderUI', 'TableModel', 'TableModelEvent',\n            'TableModelListener', 'TableUI', 'TableView',\n            'TabSet', 'TabStop', 'TagElement', 'TargetDataLine',\n            'TCKind', 'TextAction', 'TextArea', 'TextAttribute',\n            'TextComponent', 'TextEvent', 'TextField',\n            'TextHitInfo', 'TextLayout',\n            'TextLayout.CaretPolicy', 'TextListener',\n            'TextMeasurer', 'TextUI', 'TexturePaint', 'Thread',\n            'ThreadDeath', 'ThreadGroup', 'ThreadLocal',\n            'Throwable', 'Tie', 'TileObserver', 'Time',\n            'TimeLimitExceededException', 'Timer',\n            'TimerTask', 'Timestamp', 'TimeZone', 'TitledBorder',\n            'ToolBarUI', 'Toolkit', 'ToolTipManager',\n            'ToolTipUI', 'TooManyListenersException', 'Track',\n            'TransactionRequiredException',\n            'TransactionRolledbackException',\n            'TRANSACTION_REQUIRED', 'TRANSACTION_ROLLEDBACK',\n            'Transferable', 'TransformAttribute', 'TRANSIENT',\n            'Transmitter', 'Transparency', 'TreeCellEditor',\n            'TreeCellRenderer', 'TreeExpansionEvent',\n            'TreeExpansionListener', 'TreeMap', 'TreeModel',\n            'TreeModelEvent', 'TreeModelListener', 'TreeNode',\n            'TreePath', 'TreeSelectionEvent',\n            'TreeSelectionListener', 'TreeSelectionModel',\n            'TreeSet', 'TreeUI', 'TreeWillExpandListener',\n            'TypeCode', 'TypeCodeHolder', 'TypeMismatch',\n            'Types', 'UID', 'UIDefaults',\n            'UIDefaults.ActiveValue', 'UIDefaults.LazyInputMap',\n            'UIDefaults.LazyValue', 'UIDefaults.ProxyLazyValue',\n            'UIManager', 'UIManager.LookAndFeelInfo',\n            'UIResource', 'ULongLongSeqHelper',\n            'ULongLongSeqHolder', 'ULongSeqHelper',\n            'ULongSeqHolder', 'UndeclaredThrowableException',\n            'UndoableEdit', 'UndoableEditEvent',\n            'UndoableEditListener', 'UndoableEditSupport',\n            'UndoManager', 'UnexpectedException',\n            'UnicastRemoteObject', 'UnionMember',\n            'UnionMemberHelper', 'UNKNOWN', 'UnknownError',\n            'UnknownException', 'UnknownGroupException',\n            'UnknownHostException',\n            'UnknownObjectException', 'UnknownServiceException',\n            'UnknownUserException', 'UnmarshalException',\n            'UnrecoverableKeyException', 'Unreferenced',\n            'UnresolvedPermission', 'UnsatisfiedLinkError',\n            'UnsolicitedNotification',\n            'UnsolicitedNotificationEvent',\n            'UnsolicitedNotificationListener',\n            'UnsupportedAudioFileException',\n            'UnsupportedClassVersionError',\n            'UnsupportedEncodingException',\n            'UnsupportedFlavorException',\n            'UnsupportedLookAndFeelException',\n            'UnsupportedOperationException',\n            'UNSUPPORTED_POLICY', 'UNSUPPORTED_POLICY_VALUE',\n            'URL', 'URLClassLoader', 'URLConnection',\n            'URLDecoder', 'URLEncoder', 'URLStreamHandler',\n            'URLStreamHandlerFactory', 'UserException',\n            'UShortSeqHelper', 'UShortSeqHolder',\n            'UTFDataFormatException', 'Util', 'UtilDelegate',\n            'Utilities', 'ValueBase', 'ValueBaseHelper',\n            'ValueBaseHolder', 'ValueFactory', 'ValueHandler',\n            'ValueMember', 'ValueMemberHelper',\n            'VariableHeightLayoutCache', 'Vector', 'VerifyError',\n            'VersionSpecHelper', 'VetoableChangeListener',\n            'VetoableChangeSupport', 'View', 'ViewFactory',\n            'ViewportLayout', 'ViewportUI',\n            'VirtualMachineError', 'Visibility',\n            'VisibilityHelper', 'VMID', 'VM_ABSTRACT',\n            'VM_CUSTOM', 'VM_NONE', 'VM_TRUNCATABLE',\n            'VoiceStatus', 'Void', 'WCharSeqHelper',\n            'WCharSeqHolder', 'WeakHashMap', 'WeakReference',\n            'Window', 'WindowAdapter', 'WindowConstants',\n            'WindowEvent', 'WindowListener', 'WrappedPlainView',\n            'WritableRaster', 'WritableRenderedImage',\n            'WriteAbortedException', 'Writer',\n            'WrongTransaction', 'WStringValueHelper',\n            'X509Certificate', 'X509CRL', 'X509CRLEntry',\n            'X509EncodedKeySpec', 'X509Extension', 'ZipEntry',\n            'ZipException', 'ZipFile', 'ZipInputStream',\n            'ZipOutputStream', 'ZoneView',\n            '_BindingIteratorImplBase', '_BindingIteratorStub',\n            '_IDLTypeStub', '_NamingContextImplBase',\n            '_NamingContextStub', '_PolicyStub', '_Remote_Stub'\n            ),\n        4 => array(\n            'void', 'double', 'int', 'boolean', 'byte', 'short', 'long', 'char', 'float'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}',\n        '+', '-', '*', '/', '%',\n        '!', '&', '|', '^',\n        '<', '>', '=',\n        '?', ':', ';',\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => true,\n        4 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #000066; font-weight: bold;',\n            3 => 'color: #003399;',\n            4 => 'color: #000066; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #006699;',\n            3 => 'color: #008000; font-style: italic; font-weight: bold;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006633;',\n            2 => 'color: #006633;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://www.google.com/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+{FNAMEL}',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/java5.php",
    "content": "<?php\n/*************************************************************************************\n * java.php\n * --------\n * Author: Nigel McNie (nigel@geshi.org)\n * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/07/10\n *\n * Java language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/25 (1.0.7.22)\n *   -  Added highlighting of import and package directives as non-OOP\n * 2005/12/28 (1.0.4)\n *   -  Added instanceof keyword\n * 2004/11/27 (1.0.3)\n *   -  Added support for multiple object splitters\n * 2004/08/05 (1.0.2)\n *   -  Added URL support\n *   -  Added keyword \"this\", as bugs in GeSHi class ironed out\n * 2004/08/05 (1.0.1)\n *   -  Added support for symbols\n *   -  Added extra missed keywords\n * 2004/07/14 (1.0.0)\n *   -  First Release\n *\n * TODO\n * -------------------------\n * *\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Java(TM) 2 Platform Standard Edition 5.0',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Import and Package directives (Basic Support only)\n        2 => '/(?:(?<=import[\\\\n\\\\s](?!static))|(?<=import[\\\\n\\\\s]static[\\\\n\\\\s])|(?<=package[\\\\n\\\\s]))[\\\\n\\\\s]*([a-zA-Z0-9_]+\\\\.)*([a-zA-Z0-9_]+|\\*)(?=[\\n\\s;])/i',\n        // javadoc comments\n        3 => '#/\\*\\*(?![\\*\\/]).*\\*/#sU'\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            /* see the authoritative list of all 50 Java keywords at */\n            /* http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#229308 */\n\n            /* java keywords, part 1: control flow */\n            'case', 'default', 'do', 'else', 'for',\n            'goto', 'if', 'switch', 'while'\n\n            /* IMO 'break', 'continue', 'return' and 'throw' */\n                        /* should also be added to this group, as they   */\n            /* also manage the control flow,                 */\n            /* arguably 'try'/'catch'/'finally' as well      */\n            ),\n        2 => array(\n            /* java keywords, part 2 */\n\n            'break', 'continue', 'return', 'throw',\n            'try', 'catch', 'finally',\n\n            'abstract', 'assert', 'class', 'const', 'enum', 'extends',\n            'final', 'implements', 'import', 'instanceof', 'interface',\n            'native', 'new', 'package', 'private', 'protected',\n            'public', 'static', 'strictfp', 'super', 'synchronized',\n            'this', 'throws', 'transient', 'volatile'\n            ),\n        3 => array(\n            /* Java keywords, part 3: primitive data types and 'void' */\n            'boolean', 'byte', 'char', 'double',\n            'float', 'int', 'long', 'short', 'void'\n            ),\n        4 => array(\n            /* other reserved words in Java: literals */\n            /* should be styled to look similar to numbers and Strings */\n            'false', 'null', 'true'\n            ),\n        5 => array (\n            'Applet', 'AppletContext', 'AppletStub', 'AudioClip'\n            ),\n        6 => array (\n            'AWTError', 'AWTEvent', 'AWTEventMulticaster', 'AWTException', 'AWTKeyStroke', 'AWTPermission', 'ActiveEvent', 'Adjustable', 'AlphaComposite', 'BasicStroke', 'BorderLayout', 'BufferCapabilities', 'BufferCapabilities.FlipContents', 'Button', 'Canvas', 'CardLayout', 'Checkbox', 'CheckboxGroup', 'CheckboxMenuItem', 'Choice', 'Color', 'Component', 'ComponentOrientation', 'Composite', 'CompositeContext', 'Container', 'ContainerOrderFocusTraversalPolicy', 'Cursor', 'DefaultFocusTraversalPolicy', 'DefaultKeyboardFocusManager', 'Dialog', 'Dimension', 'DisplayMode', 'EventQueue', 'FileDialog', 'FlowLayout', 'FocusTraversalPolicy', 'Font', 'FontFormatException', 'FontMetrics', 'Frame', 'GradientPaint', 'Graphics', 'Graphics2D', 'GraphicsConfigTemplate', 'GraphicsConfiguration', 'GraphicsDevice', 'GraphicsEnvironment', 'GridBagConstraints', 'GridBagLayout', 'GridLayout', 'HeadlessException', 'IllegalComponentStateException', 'Image', 'ImageCapabilities', 'Insets', 'ItemSelectable', 'JobAttributes',\n            'JobAttributes.DefaultSelectionType', 'JobAttributes.DestinationType', 'JobAttributes.DialogType', 'JobAttributes.MultipleDocumentHandlingType', 'JobAttributes.SidesType', 'KeyEventDispatcher', 'KeyEventPostProcessor', 'KeyboardFocusManager', 'Label', 'LayoutManager', 'LayoutManager2', 'MediaTracker', 'Menu', 'MenuBar', 'MenuComponent', 'MenuContainer', 'MenuItem', 'MenuShortcut', 'MouseInfo', 'PageAttributes', 'PageAttributes.ColorType', 'PageAttributes.MediaType', 'PageAttributes.OrientationRequestedType', 'PageAttributes.OriginType', 'PageAttributes.PrintQualityType', 'Paint', 'PaintContext', 'Panel', 'Point', 'PointerInfo', 'Polygon', 'PopupMenu', 'PrintGraphics', 'PrintJob', 'Rectangle', 'RenderingHints', 'RenderingHints.Key', 'Robot', 'ScrollPane', 'ScrollPaneAdjustable', 'Scrollbar', 'Shape', 'Stroke', 'SystemColor', 'TextArea', 'TextComponent', 'TextField', 'TexturePaint', 'Toolkit', 'Transparency', 'Window'\n            ),\n        7 => array (\n            'CMMException', 'ColorSpace', 'ICC_ColorSpace', 'ICC_Profile', 'ICC_ProfileGray', 'ICC_ProfileRGB', 'ProfileDataException'\n            ),\n        8 => array (\n            'Clipboard', 'ClipboardOwner', 'DataFlavor', 'FlavorEvent', 'FlavorListener', 'FlavorMap', 'FlavorTable', 'MimeTypeParseException', 'StringSelection', 'SystemFlavorMap', 'Transferable', 'UnsupportedFlavorException'\n            ),\n        9 => array (\n            'Autoscroll', 'DnDConstants', 'DragGestureEvent', 'DragGestureListener', 'DragGestureRecognizer', 'DragSource', 'DragSourceAdapter', 'DragSourceContext', 'DragSourceDragEvent', 'DragSourceDropEvent', 'DragSourceEvent', 'DragSourceListener', 'DragSourceMotionListener', 'DropTarget', 'DropTarget.DropTargetAutoScroller', 'DropTargetAdapter', 'DropTargetContext', 'DropTargetDragEvent', 'DropTargetDropEvent', 'DropTargetEvent', 'DropTargetListener', 'InvalidDnDOperationException', 'MouseDragGestureRecognizer'\n            ),\n        10 => array (\n            'AWTEventListener', 'AWTEventListenerProxy', 'ActionEvent', 'ActionListener', 'AdjustmentEvent', 'AdjustmentListener', 'ComponentAdapter', 'ComponentEvent', 'ComponentListener', 'ContainerAdapter', 'ContainerEvent', 'ContainerListener', 'FocusAdapter', 'FocusEvent', 'FocusListener', 'HierarchyBoundsAdapter', 'HierarchyBoundsListener', 'HierarchyEvent', 'HierarchyListener', 'InputEvent', 'InputMethodEvent', 'InputMethodListener', 'InvocationEvent', 'ItemEvent', 'ItemListener', 'KeyAdapter', 'KeyEvent', 'KeyListener', 'MouseAdapter', 'MouseListener', 'MouseMotionAdapter', 'MouseMotionListener', 'MouseWheelEvent', 'MouseWheelListener', 'PaintEvent', 'TextEvent', 'TextListener', 'WindowAdapter', 'WindowEvent', 'WindowFocusListener', 'WindowListener', 'WindowStateListener'\n            ),\n        11 => array (\n            'FontRenderContext', 'GlyphJustificationInfo', 'GlyphMetrics', 'GlyphVector', 'GraphicAttribute', 'ImageGraphicAttribute', 'LineBreakMeasurer', 'LineMetrics', 'MultipleMaster', 'NumericShaper', 'ShapeGraphicAttribute', 'TextAttribute', 'TextHitInfo', 'TextLayout', 'TextLayout.CaretPolicy', 'TextMeasurer', 'TransformAttribute'\n            ),\n        12 => array (\n            'AffineTransform', 'Arc2D', 'Arc2D.Double', 'Arc2D.Float', 'Area', 'CubicCurve2D', 'CubicCurve2D.Double', 'CubicCurve2D.Float', 'Dimension2D', 'Ellipse2D', 'Ellipse2D.Double', 'Ellipse2D.Float', 'FlatteningPathIterator', 'GeneralPath', 'IllegalPathStateException', 'Line2D', 'Line2D.Double', 'Line2D.Float', 'NoninvertibleTransformException', 'PathIterator', 'Point2D', 'Point2D.Double', 'Point2D.Float', 'QuadCurve2D', 'QuadCurve2D.Double', 'QuadCurve2D.Float', 'Rectangle2D', 'Rectangle2D.Double', 'Rectangle2D.Float', 'RectangularShape', 'RoundRectangle2D', 'RoundRectangle2D.Double', 'RoundRectangle2D.Float'\n            ),\n        13 => array (\n            'InputContext', 'InputMethodHighlight', 'InputMethodRequests', 'InputSubset'\n            ),\n        14 => array (\n            'InputMethod', 'InputMethodContext', 'InputMethodDescriptor'\n            ),\n        15 => array (\n            'AffineTransformOp', 'AreaAveragingScaleFilter', 'BandCombineOp', 'BandedSampleModel', 'BufferStrategy', 'BufferedImage', 'BufferedImageFilter', 'BufferedImageOp', 'ByteLookupTable', 'ColorConvertOp', 'ColorModel', 'ComponentColorModel', 'ComponentSampleModel', 'ConvolveOp', 'CropImageFilter', 'DataBuffer', 'DataBufferByte', 'DataBufferDouble', 'DataBufferFloat', 'DataBufferInt', 'DataBufferShort', 'DataBufferUShort', 'DirectColorModel', 'FilteredImageSource', 'ImageConsumer', 'ImageFilter', 'ImageObserver', 'ImageProducer', 'ImagingOpException', 'IndexColorModel', 'Kernel', 'LookupOp', 'LookupTable', 'MemoryImageSource', 'MultiPixelPackedSampleModel', 'PackedColorModel', 'PixelGrabber', 'PixelInterleavedSampleModel', 'RGBImageFilter', 'Raster', 'RasterFormatException', 'RasterOp', 'RenderedImage', 'ReplicateScaleFilter', 'RescaleOp', 'SampleModel', 'ShortLookupTable', 'SinglePixelPackedSampleModel', 'TileObserver', 'VolatileImage', 'WritableRaster', 'WritableRenderedImage'\n            ),\n        16 => array (\n            'ContextualRenderedImageFactory', 'ParameterBlock', 'RenderContext', 'RenderableImage', 'RenderableImageOp', 'RenderableImageProducer', 'RenderedImageFactory'\n            ),\n        17 => array (\n            'Book', 'PageFormat', 'Pageable', 'Paper', 'Printable', 'PrinterAbortException', 'PrinterException', 'PrinterGraphics', 'PrinterIOException', 'PrinterJob'\n            ),\n        18 => array (\n            'AppletInitializer', 'BeanDescriptor', 'BeanInfo', 'Beans', 'Customizer', 'DefaultPersistenceDelegate', 'DesignMode', 'Encoder', 'EventHandler', 'EventSetDescriptor', 'ExceptionListener', 'Expression', 'FeatureDescriptor', 'IndexedPropertyChangeEvent', 'IndexedPropertyDescriptor', 'Introspector', 'MethodDescriptor', 'ParameterDescriptor', 'PersistenceDelegate', 'PropertyChangeEvent', 'PropertyChangeListener', 'PropertyChangeListenerProxy', 'PropertyChangeSupport', 'PropertyDescriptor', 'PropertyEditor', 'PropertyEditorManager', 'PropertyEditorSupport', 'PropertyVetoException', 'SimpleBeanInfo', 'VetoableChangeListener', 'VetoableChangeListenerProxy', 'VetoableChangeSupport', 'Visibility', 'XMLDecoder', 'XMLEncoder'\n            ),\n        19 => array (\n            'BeanContext', 'BeanContextChild', 'BeanContextChildComponentProxy', 'BeanContextChildSupport', 'BeanContextContainerProxy', 'BeanContextEvent', 'BeanContextMembershipEvent', 'BeanContextMembershipListener', 'BeanContextProxy', 'BeanContextServiceAvailableEvent', 'BeanContextServiceProvider', 'BeanContextServiceProviderBeanInfo', 'BeanContextServiceRevokedEvent', 'BeanContextServiceRevokedListener', 'BeanContextServices', 'BeanContextServicesListener', 'BeanContextServicesSupport', 'BeanContextServicesSupport.BCSSServiceProvider', 'BeanContextSupport', 'BeanContextSupport.BCSIterator'\n            ),\n        20 => array (\n            'BufferedInputStream', 'BufferedOutputStream', 'BufferedReader', 'BufferedWriter', 'ByteArrayInputStream', 'ByteArrayOutputStream', 'CharArrayReader', 'CharArrayWriter', 'CharConversionException', 'Closeable', 'DataInput', 'DataOutput', 'EOFException', 'Externalizable', 'File', 'FileDescriptor', 'FileInputStream', 'FileNotFoundException', 'FileOutputStream', 'FilePermission', 'FileReader', 'FileWriter', 'FilenameFilter', 'FilterInputStream', 'FilterOutputStream', 'FilterReader', 'FilterWriter', 'Flushable', 'IOException', 'InputStreamReader', 'InterruptedIOException', 'InvalidClassException', 'InvalidObjectException', 'LineNumberInputStream', 'LineNumberReader', 'NotActiveException', 'NotSerializableException', 'ObjectInput', 'ObjectInputStream', 'ObjectInputStream.GetField', 'ObjectInputValidation', 'ObjectOutput', 'ObjectOutputStream', 'ObjectOutputStream.PutField', 'ObjectStreamClass', 'ObjectStreamConstants', 'ObjectStreamException', 'ObjectStreamField', 'OptionalDataException', 'OutputStreamWriter',\n            'PipedInputStream', 'PipedOutputStream', 'PipedReader', 'PipedWriter', 'PrintStream', 'PrintWriter', 'PushbackInputStream', 'PushbackReader', 'RandomAccessFile', 'Reader', 'SequenceInputStream', 'Serializable', 'SerializablePermission', 'StreamCorruptedException', 'StreamTokenizer', 'StringBufferInputStream', 'StringReader', 'StringWriter', 'SyncFailedException', 'UTFDataFormatException', 'UnsupportedEncodingException', 'WriteAbortedException', 'Writer'\n            ),\n        21 => array (\n            'AbstractMethodError', 'Appendable', 'ArithmeticException', 'ArrayIndexOutOfBoundsException', 'ArrayStoreException', 'AssertionError', 'Boolean', 'Byte', 'CharSequence', 'Character', 'Character.Subset', 'Character.UnicodeBlock', 'Class', 'ClassCastException', 'ClassCircularityError', 'ClassFormatError', 'ClassLoader', 'ClassNotFoundException', 'CloneNotSupportedException', 'Cloneable', 'Comparable', 'Compiler', 'Deprecated', 'Double', 'Enum', 'EnumConstantNotPresentException', 'Error', 'Exception', 'ExceptionInInitializerError', 'Float', 'IllegalAccessError', 'IllegalAccessException', 'IllegalArgumentException', 'IllegalMonitorStateException', 'IllegalStateException', 'IllegalThreadStateException', 'IncompatibleClassChangeError', 'IndexOutOfBoundsException', 'InheritableThreadLocal', 'InstantiationError', 'InstantiationException', 'Integer', 'InternalError', 'InterruptedException', 'Iterable', 'LinkageError', 'Long', 'Math', 'NegativeArraySizeException', 'NoClassDefFoundError', 'NoSuchFieldError',\n            'NoSuchFieldException', 'NoSuchMethodError', 'NoSuchMethodException', 'NullPointerException', 'Number', 'NumberFormatException', 'OutOfMemoryError', 'Override', 'Package', 'Process', 'ProcessBuilder', 'Readable', 'Runnable', 'Runtime', 'RuntimeException', 'RuntimePermission', 'SecurityException', 'SecurityManager', 'Short', 'StackOverflowError', 'StackTraceElement', 'StrictMath', 'String', 'StringBuffer', 'StringBuilder', 'StringIndexOutOfBoundsException', 'SuppressWarnings', 'System', 'Thread', 'Thread.State', 'Thread.UncaughtExceptionHandler', 'ThreadDeath', 'ThreadGroup', 'ThreadLocal', 'Throwable', 'TypeNotPresentException', 'UnknownError', 'UnsatisfiedLinkError', 'UnsupportedClassVersionError', 'UnsupportedOperationException', 'VerifyError', 'VirtualMachineError', 'Void'\n            ),\n        22 => array (\n            'AnnotationFormatError', 'AnnotationTypeMismatchException', 'Documented', 'ElementType', 'IncompleteAnnotationException', 'Inherited', 'Retention', 'RetentionPolicy', 'Target'\n            ),\n        23 => array (\n            'ClassDefinition', 'ClassFileTransformer', 'IllegalClassFormatException', 'Instrumentation', 'UnmodifiableClassException'\n            ),\n        24 => array (\n            'ClassLoadingMXBean', 'CompilationMXBean', 'GarbageCollectorMXBean', 'ManagementFactory', 'ManagementPermission', 'MemoryMXBean', 'MemoryManagerMXBean', 'MemoryNotificationInfo', 'MemoryPoolMXBean', 'MemoryType', 'MemoryUsage', 'OperatingSystemMXBean', 'RuntimeMXBean', 'ThreadInfo', 'ThreadMXBean'\n            ),\n        25 => array (\n            'PhantomReference', 'ReferenceQueue', 'SoftReference', 'WeakReference'\n            ),\n        26 => array (\n            'AccessibleObject', 'AnnotatedElement', 'Constructor', 'Field', 'GenericArrayType', 'GenericDeclaration', 'GenericSignatureFormatError', 'InvocationHandler', 'InvocationTargetException', 'MalformedParameterizedTypeException', 'Member', 'Method', 'Modifier', 'ParameterizedType', 'ReflectPermission', 'Type', 'TypeVariable', 'UndeclaredThrowableException', 'WildcardType'\n            ),\n        27 => array (\n            'BigDecimal', 'BigInteger', 'MathContext', 'RoundingMode'\n            ),\n        28 => array (\n            'Authenticator', 'Authenticator.RequestorType', 'BindException', 'CacheRequest', 'CacheResponse', 'ContentHandlerFactory', 'CookieHandler', 'DatagramPacket', 'DatagramSocket', 'DatagramSocketImpl', 'DatagramSocketImplFactory', 'FileNameMap', 'HttpRetryException', 'HttpURLConnection', 'Inet4Address', 'Inet6Address', 'InetAddress', 'InetSocketAddress', 'JarURLConnection', 'MalformedURLException', 'MulticastSocket', 'NetPermission', 'NetworkInterface', 'NoRouteToHostException', 'PasswordAuthentication', 'PortUnreachableException', 'ProtocolException', 'Proxy.Type', 'ProxySelector', 'ResponseCache', 'SecureCacheResponse', 'ServerSocket', 'Socket', 'SocketAddress', 'SocketException', 'SocketImpl', 'SocketImplFactory', 'SocketOptions', 'SocketPermission', 'SocketTimeoutException', 'URI', 'URISyntaxException', 'URL', 'URLClassLoader', 'URLConnection', 'URLDecoder', 'URLEncoder', 'URLStreamHandler', 'URLStreamHandlerFactory', 'UnknownServiceException'\n            ),\n        29 => array (\n            'Buffer', 'BufferOverflowException', 'BufferUnderflowException', 'ByteBuffer', 'ByteOrder', 'CharBuffer', 'DoubleBuffer', 'FloatBuffer', 'IntBuffer', 'InvalidMarkException', 'LongBuffer', 'MappedByteBuffer', 'ReadOnlyBufferException', 'ShortBuffer'\n            ),\n        30 => array (\n            'AlreadyConnectedException', 'AsynchronousCloseException', 'ByteChannel', 'CancelledKeyException', 'Channel', 'Channels', 'ClosedByInterruptException', 'ClosedChannelException', 'ClosedSelectorException', 'ConnectionPendingException', 'DatagramChannel', 'FileChannel', 'FileChannel.MapMode', 'FileLock', 'FileLockInterruptionException', 'GatheringByteChannel', 'IllegalBlockingModeException', 'IllegalSelectorException', 'InterruptibleChannel', 'NoConnectionPendingException', 'NonReadableChannelException', 'NonWritableChannelException', 'NotYetBoundException', 'NotYetConnectedException', 'OverlappingFileLockException', 'Pipe', 'Pipe.SinkChannel', 'Pipe.SourceChannel', 'ReadableByteChannel', 'ScatteringByteChannel', 'SelectableChannel', 'SelectionKey', 'Selector', 'ServerSocketChannel', 'SocketChannel', 'UnresolvedAddressException', 'UnsupportedAddressTypeException', 'WritableByteChannel'\n            ),\n        31 => array (\n            'AbstractInterruptibleChannel', 'AbstractSelectableChannel', 'AbstractSelectionKey', 'AbstractSelector', 'SelectorProvider'\n            ),\n        32 => array (\n            'CharacterCodingException', 'Charset', 'CharsetDecoder', 'CharsetEncoder', 'CoderMalfunctionError', 'CoderResult', 'CodingErrorAction', 'IllegalCharsetNameException', 'MalformedInputException', 'UnmappableCharacterException', 'UnsupportedCharsetException'\n            ),\n        33 => array (\n            'CharsetProvider'\n            ),\n        34 => array (\n            'AccessException', 'AlreadyBoundException', 'ConnectIOException', 'MarshalException', 'MarshalledObject', 'Naming', 'NoSuchObjectException', 'NotBoundException', 'RMISecurityException', 'RMISecurityManager', 'Remote', 'RemoteException', 'ServerError', 'ServerException', 'ServerRuntimeException', 'StubNotFoundException', 'UnexpectedException', 'UnmarshalException'\n            ),\n        35 => array (\n            'Activatable', 'ActivateFailedException', 'ActivationDesc', 'ActivationException', 'ActivationGroup', 'ActivationGroupDesc', 'ActivationGroupDesc.CommandEnvironment', 'ActivationGroupID', 'ActivationGroup_Stub', 'ActivationID', 'ActivationInstantiator', 'ActivationMonitor', 'ActivationSystem', 'Activator', 'UnknownGroupException', 'UnknownObjectException'\n            ),\n        36 => array (\n            'DGC', 'Lease', 'VMID'\n            ),\n        37 => array (\n            'LocateRegistry', 'Registry', 'RegistryHandler'\n            ),\n        38 => array (\n            'ExportException', 'LoaderHandler', 'LogStream', 'ObjID', 'Operation', 'RMIClassLoader', 'RMIClassLoaderSpi', 'RMIClientSocketFactory', 'RMIFailureHandler', 'RMIServerSocketFactory', 'RMISocketFactory', 'RemoteCall', 'RemoteObject', 'RemoteObjectInvocationHandler', 'RemoteRef', 'RemoteServer', 'RemoteStub', 'ServerCloneException', 'ServerNotActiveException', 'ServerRef', 'Skeleton', 'SkeletonMismatchException', 'SkeletonNotFoundException', 'SocketSecurityException', 'UID', 'UnicastRemoteObject', 'Unreferenced'\n            ),\n        39 => array (\n            'AccessControlContext', 'AccessControlException', 'AccessController', 'AlgorithmParameterGenerator', 'AlgorithmParameterGeneratorSpi', 'AlgorithmParameters', 'AlgorithmParametersSpi', 'AllPermission', 'AuthProvider', 'BasicPermission', 'CodeSigner', 'CodeSource', 'DigestException', 'DigestInputStream', 'DigestOutputStream', 'DomainCombiner', 'GeneralSecurityException', 'Guard', 'GuardedObject', 'Identity', 'IdentityScope', 'InvalidAlgorithmParameterException', 'InvalidParameterException', 'Key', 'KeyException', 'KeyFactory', 'KeyFactorySpi', 'KeyManagementException', 'KeyPair', 'KeyPairGenerator', 'KeyPairGeneratorSpi', 'KeyRep', 'KeyRep.Type', 'KeyStore', 'KeyStore.Builder', 'KeyStore.CallbackHandlerProtection', 'KeyStore.Entry', 'KeyStore.LoadStoreParameter', 'KeyStore.PasswordProtection', 'KeyStore.PrivateKeyEntry', 'KeyStore.ProtectionParameter', 'KeyStore.SecretKeyEntry', 'KeyStore.TrustedCertificateEntry', 'KeyStoreException', 'KeyStoreSpi', 'MessageDigest', 'MessageDigestSpi',\n            'NoSuchAlgorithmException', 'NoSuchProviderException', 'PermissionCollection', 'Permissions', 'PrivateKey', 'PrivilegedAction', 'PrivilegedActionException', 'PrivilegedExceptionAction', 'ProtectionDomain', 'Provider', 'Provider.Service', 'ProviderException', 'PublicKey', 'SecureClassLoader', 'SecureRandom', 'SecureRandomSpi', 'Security', 'SecurityPermission', 'Signature', 'SignatureException', 'SignatureSpi', 'SignedObject', 'Signer', 'UnrecoverableEntryException', 'UnrecoverableKeyException', 'UnresolvedPermission'\n            ),\n        40 => array (\n            'Acl', 'AclEntry', 'AclNotFoundException', 'Group', 'LastOwnerException', 'NotOwnerException', 'Owner'\n            ),\n        41 => array (\n            'CRL', 'CRLException', 'CRLSelector', 'CertPath', 'CertPath.CertPathRep', 'CertPathBuilder', 'CertPathBuilderException', 'CertPathBuilderResult', 'CertPathBuilderSpi', 'CertPathParameters', 'CertPathValidator', 'CertPathValidatorException', 'CertPathValidatorResult', 'CertPathValidatorSpi', 'CertSelector', 'CertStore', 'CertStoreException', 'CertStoreParameters', 'CertStoreSpi', 'Certificate.CertificateRep', 'CertificateFactory', 'CertificateFactorySpi', 'CollectionCertStoreParameters', 'LDAPCertStoreParameters', 'PKIXBuilderParameters', 'PKIXCertPathBuilderResult', 'PKIXCertPathChecker', 'PKIXCertPathValidatorResult', 'PKIXParameters', 'PolicyNode', 'PolicyQualifierInfo', 'TrustAnchor', 'X509CRL', 'X509CRLEntry', 'X509CRLSelector', 'X509CertSelector', 'X509Extension'\n            ),\n        42 => array (\n            'DSAKey', 'DSAKeyPairGenerator', 'DSAParams', 'DSAPrivateKey', 'DSAPublicKey', 'ECKey', 'ECPrivateKey', 'ECPublicKey', 'RSAKey', 'RSAMultiPrimePrivateCrtKey', 'RSAPrivateCrtKey', 'RSAPrivateKey', 'RSAPublicKey'\n            ),\n        43 => array (\n            'AlgorithmParameterSpec', 'DSAParameterSpec', 'DSAPrivateKeySpec', 'DSAPublicKeySpec', 'ECField', 'ECFieldF2m', 'ECFieldFp', 'ECGenParameterSpec', 'ECParameterSpec', 'ECPoint', 'ECPrivateKeySpec', 'ECPublicKeySpec', 'EllipticCurve', 'EncodedKeySpec', 'InvalidKeySpecException', 'InvalidParameterSpecException', 'KeySpec', 'MGF1ParameterSpec', 'PKCS8EncodedKeySpec', 'PSSParameterSpec', 'RSAKeyGenParameterSpec', 'RSAMultiPrimePrivateCrtKeySpec', 'RSAOtherPrimeInfo', 'RSAPrivateCrtKeySpec', 'RSAPrivateKeySpec', 'RSAPublicKeySpec', 'X509EncodedKeySpec'\n            ),\n        44 => array (\n            'BatchUpdateException', 'Blob', 'CallableStatement', 'Clob', 'Connection', 'DataTruncation', 'DatabaseMetaData', 'Driver', 'DriverManager', 'DriverPropertyInfo', 'ParameterMetaData', 'PreparedStatement', 'Ref', 'ResultSet', 'ResultSetMetaData', 'SQLData', 'SQLException', 'SQLInput', 'SQLOutput', 'SQLPermission', 'SQLWarning', 'Savepoint', 'Struct', 'Time', 'Types'\n            ),\n        45 => array (\n            'AttributedCharacterIterator', 'AttributedCharacterIterator.Attribute', 'AttributedString', 'Bidi', 'BreakIterator', 'CharacterIterator', 'ChoiceFormat', 'CollationElementIterator', 'CollationKey', 'Collator', 'DateFormat', 'DateFormat.Field', 'DateFormatSymbols', 'DecimalFormat', 'DecimalFormatSymbols', 'FieldPosition', 'Format', 'Format.Field', 'MessageFormat', 'MessageFormat.Field', 'NumberFormat', 'NumberFormat.Field', 'ParseException', 'ParsePosition', 'RuleBasedCollator', 'SimpleDateFormat', 'StringCharacterIterator'\n            ),\n        46 => array (\n            'AbstractCollection', 'AbstractList', 'AbstractMap', 'AbstractQueue', 'AbstractSequentialList', 'AbstractSet', 'ArrayList', 'Arrays', 'BitSet', 'Calendar', 'Collection', 'Collections', 'Comparator', 'ConcurrentModificationException', 'Currency', 'Dictionary', 'DuplicateFormatFlagsException', 'EmptyStackException', 'EnumMap', 'EnumSet', 'Enumeration', 'EventListenerProxy', 'EventObject', 'FormatFlagsConversionMismatchException', 'Formattable', 'FormattableFlags', 'Formatter.BigDecimalLayoutForm', 'FormatterClosedException', 'GregorianCalendar', 'HashMap', 'HashSet', 'Hashtable', 'IdentityHashMap', 'IllegalFormatCodePointException', 'IllegalFormatConversionException', 'IllegalFormatException', 'IllegalFormatFlagsException', 'IllegalFormatPrecisionException', 'IllegalFormatWidthException', 'InputMismatchException', 'InvalidPropertiesFormatException', 'Iterator', 'LinkedHashMap', 'LinkedHashSet', 'LinkedList', 'ListIterator', 'ListResourceBundle', 'Locale', 'Map', 'Map.Entry', 'MissingFormatArgumentException',\n            'MissingFormatWidthException', 'MissingResourceException', 'NoSuchElementException', 'Observable', 'Observer', 'PriorityQueue', 'Properties', 'PropertyPermission', 'PropertyResourceBundle', 'Queue', 'Random', 'RandomAccess', 'ResourceBundle', 'Scanner', 'Set', 'SimpleTimeZone', 'SortedMap', 'SortedSet', 'Stack', 'StringTokenizer', 'TimeZone', 'TimerTask', 'TooManyListenersException', 'TreeMap', 'TreeSet', 'UUID', 'UnknownFormatConversionException', 'UnknownFormatFlagsException', 'Vector', 'WeakHashMap'\n            ),\n        47 => array (\n            'AbstractExecutorService', 'ArrayBlockingQueue', 'BlockingQueue', 'BrokenBarrierException', 'Callable', 'CancellationException', 'CompletionService', 'ConcurrentHashMap', 'ConcurrentLinkedQueue', 'ConcurrentMap', 'CopyOnWriteArrayList', 'CopyOnWriteArraySet', 'CountDownLatch', 'CyclicBarrier', 'DelayQueue', 'Delayed', 'Exchanger', 'ExecutionException', 'Executor', 'ExecutorCompletionService', 'ExecutorService', 'Executors', 'Future', 'FutureTask', 'LinkedBlockingQueue', 'PriorityBlockingQueue', 'RejectedExecutionException', 'RejectedExecutionHandler', 'ScheduledExecutorService', 'ScheduledFuture', 'ScheduledThreadPoolExecutor', 'Semaphore', 'SynchronousQueue', 'ThreadFactory', 'ThreadPoolExecutor', 'ThreadPoolExecutor.AbortPolicy', 'ThreadPoolExecutor.CallerRunsPolicy', 'ThreadPoolExecutor.DiscardOldestPolicy', 'ThreadPoolExecutor.DiscardPolicy', 'TimeUnit', 'TimeoutException'\n            ),\n        48 => array (\n            'AtomicBoolean', 'AtomicInteger', 'AtomicIntegerArray', 'AtomicIntegerFieldUpdater', 'AtomicLong', 'AtomicLongArray', 'AtomicLongFieldUpdater', 'AtomicMarkableReference', 'AtomicReference', 'AtomicReferenceArray', 'AtomicReferenceFieldUpdater', 'AtomicStampedReference'\n            ),\n        49 => array (\n            'AbstractQueuedSynchronizer', 'Condition', 'Lock', 'LockSupport', 'ReadWriteLock', 'ReentrantLock', 'ReentrantReadWriteLock', 'ReentrantReadWriteLock.ReadLock', 'ReentrantReadWriteLock.WriteLock'\n            ),\n        50 => array (\n            'Attributes.Name', 'JarEntry', 'JarException', 'JarFile', 'JarInputStream', 'JarOutputStream', 'Manifest', 'Pack200', 'Pack200.Packer', 'Pack200.Unpacker'\n            ),\n        51 => array (\n            'ConsoleHandler', 'ErrorManager', 'FileHandler', 'Filter', 'Handler', 'Level', 'LogManager', 'LogRecord', 'Logger', 'LoggingMXBean', 'LoggingPermission', 'MemoryHandler', 'SimpleFormatter', 'SocketHandler', 'StreamHandler', 'XMLFormatter'\n            ),\n        52 => array (\n            'AbstractPreferences', 'BackingStoreException', 'InvalidPreferencesFormatException', 'NodeChangeEvent', 'NodeChangeListener', 'PreferenceChangeEvent', 'PreferenceChangeListener', 'Preferences', 'PreferencesFactory'\n            ),\n        53 => array (\n            'MatchResult', 'Matcher', 'Pattern', 'PatternSyntaxException'\n            ),\n        54 => array (\n            'Adler32', 'CRC32', 'CheckedInputStream', 'CheckedOutputStream', 'Checksum', 'DataFormatException', 'Deflater', 'DeflaterOutputStream', 'GZIPInputStream', 'GZIPOutputStream', 'Inflater', 'InflaterInputStream', 'ZipEntry', 'ZipException', 'ZipFile', 'ZipInputStream', 'ZipOutputStream'\n            ),\n        55 => array (\n            'Accessible', 'AccessibleAction', 'AccessibleAttributeSequence', 'AccessibleBundle', 'AccessibleComponent', 'AccessibleContext', 'AccessibleEditableText', 'AccessibleExtendedComponent', 'AccessibleExtendedTable', 'AccessibleExtendedText', 'AccessibleHyperlink', 'AccessibleHypertext', 'AccessibleIcon', 'AccessibleKeyBinding', 'AccessibleRelation', 'AccessibleRelationSet', 'AccessibleResourceBundle', 'AccessibleRole', 'AccessibleSelection', 'AccessibleState', 'AccessibleStateSet', 'AccessibleStreamable', 'AccessibleTable', 'AccessibleTableModelChange', 'AccessibleText', 'AccessibleTextSequence', 'AccessibleValue'\n            ),\n        56 => array (\n            'ActivityCompletedException', 'ActivityRequiredException', 'InvalidActivityException'\n            ),\n        57 => array (\n            'BadPaddingException', 'Cipher', 'CipherInputStream', 'CipherOutputStream', 'CipherSpi', 'EncryptedPrivateKeyInfo', 'ExemptionMechanism', 'ExemptionMechanismException', 'ExemptionMechanismSpi', 'IllegalBlockSizeException', 'KeyAgreement', 'KeyAgreementSpi', 'KeyGenerator', 'KeyGeneratorSpi', 'Mac', 'MacSpi', 'NoSuchPaddingException', 'NullCipher', 'SealedObject', 'SecretKey', 'SecretKeyFactory', 'SecretKeyFactorySpi', 'ShortBufferException'\n            ),\n        58 => array (\n            'DHKey', 'DHPrivateKey', 'DHPublicKey', 'PBEKey'\n            ),\n        59 => array (\n            'DESKeySpec', 'DESedeKeySpec', 'DHGenParameterSpec', 'DHParameterSpec', 'DHPrivateKeySpec', 'DHPublicKeySpec', 'IvParameterSpec', 'OAEPParameterSpec', 'PBEKeySpec', 'PBEParameterSpec', 'PSource', 'PSource.PSpecified', 'RC2ParameterSpec', 'RC5ParameterSpec', 'SecretKeySpec'\n            ),\n        60 => array (\n            'IIOException', 'IIOImage', 'IIOParam', 'IIOParamController', 'ImageIO', 'ImageReadParam', 'ImageReader', 'ImageTranscoder', 'ImageTypeSpecifier', 'ImageWriteParam', 'ImageWriter'\n            ),\n        61 => array (\n            'IIOReadProgressListener', 'IIOReadUpdateListener', 'IIOReadWarningListener', 'IIOWriteProgressListener', 'IIOWriteWarningListener'\n            ),\n        62 => array (\n            'IIOInvalidTreeException', 'IIOMetadata', 'IIOMetadataController', 'IIOMetadataFormat', 'IIOMetadataFormatImpl', 'IIOMetadataNode'\n            ),\n        63 => array (\n            'BMPImageWriteParam'\n            ),\n        64 => array (\n            'JPEGHuffmanTable', 'JPEGImageReadParam', 'JPEGImageWriteParam', 'JPEGQTable'\n            ),\n        65 => array (\n            'IIORegistry', 'IIOServiceProvider', 'ImageInputStreamSpi', 'ImageOutputStreamSpi', 'ImageReaderSpi', 'ImageReaderWriterSpi', 'ImageTranscoderSpi', 'ImageWriterSpi', 'RegisterableService', 'ServiceRegistry', 'ServiceRegistry.Filter'\n            ),\n        66 => array (\n            'FileCacheImageInputStream', 'FileCacheImageOutputStream', 'FileImageInputStream', 'FileImageOutputStream', 'IIOByteBuffer', 'ImageInputStream', 'ImageInputStreamImpl', 'ImageOutputStream', 'ImageOutputStreamImpl', 'MemoryCacheImageInputStream', 'MemoryCacheImageOutputStream'\n            ),\n        67 => array (\n            'AttributeChangeNotification', 'AttributeChangeNotificationFilter', 'AttributeNotFoundException', 'AttributeValueExp', 'BadAttributeValueExpException', 'BadBinaryOpValueExpException', 'BadStringOperationException', 'Descriptor', 'DescriptorAccess', 'DynamicMBean', 'InstanceAlreadyExistsException', 'InstanceNotFoundException', 'InvalidApplicationException', 'JMException', 'JMRuntimeException', 'ListenerNotFoundException', 'MBeanAttributeInfo', 'MBeanConstructorInfo', 'MBeanException', 'MBeanFeatureInfo', 'MBeanInfo', 'MBeanNotificationInfo', 'MBeanOperationInfo', 'MBeanParameterInfo', 'MBeanPermission', 'MBeanRegistration', 'MBeanRegistrationException', 'MBeanServer', 'MBeanServerBuilder', 'MBeanServerConnection', 'MBeanServerDelegate', 'MBeanServerDelegateMBean', 'MBeanServerFactory', 'MBeanServerInvocationHandler', 'MBeanServerNotification', 'MBeanServerPermission', 'MBeanTrustPermission', 'MalformedObjectNameException', 'NotCompliantMBeanException', 'Notification', 'NotificationBroadcaster',\n            'NotificationBroadcasterSupport', 'NotificationEmitter', 'NotificationFilter', 'NotificationFilterSupport', 'NotificationListener', 'ObjectInstance', 'ObjectName', 'OperationsException', 'PersistentMBean', 'Query', 'QueryEval', 'QueryExp', 'ReflectionException', 'RuntimeErrorException', 'RuntimeMBeanException', 'RuntimeOperationsException', 'ServiceNotFoundException', 'StandardMBean', 'StringValueExp', 'ValueExp'\n            ),\n        68 => array (\n            'ClassLoaderRepository', 'MLet', 'MLetMBean', 'PrivateClassLoader', 'PrivateMLet'\n            ),\n        69 => array (\n            'DescriptorSupport', 'InvalidTargetObjectTypeException', 'ModelMBean', 'ModelMBeanAttributeInfo', 'ModelMBeanConstructorInfo', 'ModelMBeanInfo', 'ModelMBeanInfoSupport', 'ModelMBeanNotificationBroadcaster', 'ModelMBeanNotificationInfo', 'ModelMBeanOperationInfo', 'RequiredModelMBean', 'XMLParseException'\n            ),\n        70 => array (\n            'CounterMonitor', 'CounterMonitorMBean', 'GaugeMonitor', 'GaugeMonitorMBean', 'Monitor', 'MonitorMBean', 'MonitorNotification', 'MonitorSettingException', 'StringMonitor', 'StringMonitorMBean'\n            ),\n        71 => array (\n            'ArrayType', 'CompositeData', 'CompositeDataSupport', 'CompositeType', 'InvalidOpenTypeException', 'KeyAlreadyExistsException', 'OpenDataException', 'OpenMBeanAttributeInfo', 'OpenMBeanAttributeInfoSupport', 'OpenMBeanConstructorInfo', 'OpenMBeanConstructorInfoSupport', 'OpenMBeanInfo', 'OpenMBeanInfoSupport', 'OpenMBeanOperationInfo', 'OpenMBeanOperationInfoSupport', 'OpenMBeanParameterInfo', 'OpenMBeanParameterInfoSupport', 'SimpleType', 'TabularData', 'TabularDataSupport', 'TabularType'\n            ),\n        72 => array (\n            'InvalidRelationIdException', 'InvalidRelationServiceException', 'InvalidRelationTypeException', 'InvalidRoleInfoException', 'InvalidRoleValueException', 'MBeanServerNotificationFilter', 'Relation', 'RelationException', 'RelationNotFoundException', 'RelationNotification', 'RelationService', 'RelationServiceMBean', 'RelationServiceNotRegisteredException', 'RelationSupport', 'RelationSupportMBean', 'RelationType', 'RelationTypeNotFoundException', 'RelationTypeSupport', 'Role', 'RoleInfo', 'RoleInfoNotFoundException', 'RoleList', 'RoleNotFoundException', 'RoleResult', 'RoleStatus', 'RoleUnresolved', 'RoleUnresolvedList'\n            ),\n        73 => array (\n            'JMXAuthenticator', 'JMXConnectionNotification', 'JMXConnector', 'JMXConnectorFactory', 'JMXConnectorProvider', 'JMXConnectorServer', 'JMXConnectorServerFactory', 'JMXConnectorServerMBean', 'JMXConnectorServerProvider', 'JMXPrincipal', 'JMXProviderException', 'JMXServerErrorException', 'JMXServiceURL', 'MBeanServerForwarder', 'NotificationResult', 'SubjectDelegationPermission', 'TargetedNotification'\n            ),\n        74 => array (\n            'RMIConnection', 'RMIConnectionImpl', 'RMIConnectionImpl_Stub', 'RMIConnector', 'RMIConnectorServer', 'RMIIIOPServerImpl', 'RMIJRMPServerImpl', 'RMIServer', 'RMIServerImpl', 'RMIServerImpl_Stub'\n            ),\n        75 => array (\n            'TimerAlarmClockNotification', 'TimerMBean', 'TimerNotification'\n            ),\n        76 => array (\n            'AuthenticationNotSupportedException', 'BinaryRefAddr', 'CannotProceedException', 'CommunicationException', 'CompositeName', 'CompoundName', 'ConfigurationException', 'ContextNotEmptyException', 'InitialContext', 'InsufficientResourcesException', 'InterruptedNamingException', 'InvalidNameException', 'LimitExceededException', 'LinkException', 'LinkLoopException', 'LinkRef', 'MalformedLinkException', 'Name', 'NameAlreadyBoundException', 'NameClassPair', 'NameNotFoundException', 'NameParser', 'NamingEnumeration', 'NamingException', 'NamingSecurityException', 'NoInitialContextException', 'NoPermissionException', 'NotContextException', 'OperationNotSupportedException', 'PartialResultException', 'RefAddr', 'Referenceable', 'ReferralException', 'ServiceUnavailableException', 'SizeLimitExceededException', 'StringRefAddr', 'TimeLimitExceededException'\n            ),\n        77 => array (\n            'AttributeInUseException', 'AttributeModificationException', 'BasicAttribute', 'BasicAttributes', 'DirContext', 'InitialDirContext', 'InvalidAttributeIdentifierException', 'InvalidAttributesException', 'InvalidSearchControlsException', 'InvalidSearchFilterException', 'ModificationItem', 'NoSuchAttributeException', 'SchemaViolationException', 'SearchControls', 'SearchResult'\n            ),\n        78 => array (\n            'EventContext', 'EventDirContext', 'NamespaceChangeListener', 'NamingEvent', 'NamingExceptionEvent', 'NamingListener', 'ObjectChangeListener'\n            ),\n        79 => array (\n            'BasicControl', 'ControlFactory', 'ExtendedRequest', 'ExtendedResponse', 'HasControls', 'InitialLdapContext', 'LdapContext', 'LdapName', 'LdapReferralException', 'ManageReferralControl', 'PagedResultsControl', 'PagedResultsResponseControl', 'Rdn', 'SortControl', 'SortKey', 'SortResponseControl', 'StartTlsRequest', 'StartTlsResponse', 'UnsolicitedNotification', 'UnsolicitedNotificationEvent', 'UnsolicitedNotificationListener'\n            ),\n        80 => array (\n            'DirObjectFactory', 'DirStateFactory', 'DirStateFactory.Result', 'DirectoryManager', 'InitialContextFactory', 'InitialContextFactoryBuilder', 'NamingManager', 'ObjectFactory', 'ObjectFactoryBuilder', 'ResolveResult', 'Resolver', 'StateFactory'\n            ),\n        81 => array (\n            'ServerSocketFactory', 'SocketFactory'\n            ),\n        82 => array (\n            'CertPathTrustManagerParameters', 'HandshakeCompletedEvent', 'HandshakeCompletedListener', 'HostnameVerifier', 'HttpsURLConnection', 'KeyManager', 'KeyManagerFactory', 'KeyManagerFactorySpi', 'KeyStoreBuilderParameters', 'ManagerFactoryParameters', 'SSLContext', 'SSLContextSpi', 'SSLEngine', 'SSLEngineResult', 'SSLEngineResult.HandshakeStatus', 'SSLEngineResult.Status', 'SSLException', 'SSLHandshakeException', 'SSLKeyException', 'SSLPeerUnverifiedException', 'SSLPermission', 'SSLProtocolException', 'SSLServerSocket', 'SSLServerSocketFactory', 'SSLSession', 'SSLSessionBindingEvent', 'SSLSessionBindingListener', 'SSLSessionContext', 'SSLSocket', 'SSLSocketFactory', 'TrustManager', 'TrustManagerFactory', 'TrustManagerFactorySpi', 'X509ExtendedKeyManager', 'X509KeyManager', 'X509TrustManager'\n            ),\n        83 => array (\n            'AttributeException', 'CancelablePrintJob', 'Doc', 'DocFlavor', 'DocFlavor.BYTE_ARRAY', 'DocFlavor.CHAR_ARRAY', 'DocFlavor.INPUT_STREAM', 'DocFlavor.READER', 'DocFlavor.SERVICE_FORMATTED', 'DocFlavor.STRING', 'DocFlavor.URL', 'DocPrintJob', 'FlavorException', 'MultiDoc', 'MultiDocPrintJob', 'MultiDocPrintService', 'PrintException', 'PrintService', 'PrintServiceLookup', 'ServiceUI', 'ServiceUIFactory', 'SimpleDoc', 'StreamPrintService', 'StreamPrintServiceFactory', 'URIException'\n            ),\n        84 => array (\n            'AttributeSetUtilities', 'DateTimeSyntax', 'DocAttribute', 'DocAttributeSet', 'EnumSyntax', 'HashAttributeSet', 'HashDocAttributeSet', 'HashPrintJobAttributeSet', 'HashPrintRequestAttributeSet', 'HashPrintServiceAttributeSet', 'IntegerSyntax', 'PrintJobAttribute', 'PrintJobAttributeSet', 'PrintRequestAttribute', 'PrintRequestAttributeSet', 'PrintServiceAttribute', 'PrintServiceAttributeSet', 'ResolutionSyntax', 'SetOfIntegerSyntax', 'Size2DSyntax', 'SupportedValuesAttribute', 'TextSyntax', 'URISyntax', 'UnmodifiableSetException'\n            ),\n        85 => array (\n            'Chromaticity', 'ColorSupported', 'Compression', 'Copies', 'CopiesSupported', 'DateTimeAtCompleted', 'DateTimeAtCreation', 'DateTimeAtProcessing', 'Destination', 'DocumentName', 'Fidelity', 'Finishings', 'JobHoldUntil', 'JobImpressions', 'JobImpressionsCompleted', 'JobImpressionsSupported', 'JobKOctets', 'JobKOctetsProcessed', 'JobKOctetsSupported', 'JobMediaSheets', 'JobMediaSheetsCompleted', 'JobMediaSheetsSupported', 'JobMessageFromOperator', 'JobName', 'JobOriginatingUserName', 'JobPriority', 'JobPrioritySupported', 'JobSheets', 'JobState', 'JobStateReason', 'JobStateReasons', 'Media', 'MediaName', 'MediaPrintableArea', 'MediaSize', 'MediaSize.Engineering', 'MediaSize.ISO', 'MediaSize.JIS', 'MediaSize.NA', 'MediaSize.Other', 'MediaSizeName', 'MediaTray', 'MultipleDocumentHandling', 'NumberOfDocuments', 'NumberOfInterveningJobs', 'NumberUp', 'NumberUpSupported', 'OrientationRequested', 'OutputDeviceAssigned', 'PDLOverrideSupported', 'PageRanges', 'PagesPerMinute', 'PagesPerMinuteColor',\n            'PresentationDirection', 'PrintQuality', 'PrinterInfo', 'PrinterIsAcceptingJobs', 'PrinterLocation', 'PrinterMakeAndModel', 'PrinterMessageFromOperator', 'PrinterMoreInfo', 'PrinterMoreInfoManufacturer', 'PrinterName', 'PrinterResolution', 'PrinterState', 'PrinterStateReason', 'PrinterStateReasons', 'PrinterURI', 'QueuedJobCount', 'ReferenceUriSchemesSupported', 'RequestingUserName', 'Severity', 'SheetCollate', 'Sides'\n            ),\n        86 => array (\n            'PrintEvent', 'PrintJobAdapter', 'PrintJobAttributeEvent', 'PrintJobAttributeListener', 'PrintJobEvent', 'PrintJobListener', 'PrintServiceAttributeEvent', 'PrintServiceAttributeListener'\n            ),\n        87 => array (\n            'PortableRemoteObject'\n            ),\n        88 => array (\n            'ClassDesc', 'PortableRemoteObjectDelegate', 'Stub', 'StubDelegate', 'Tie', 'Util', 'UtilDelegate', 'ValueHandler', 'ValueHandlerMultiFormat'\n            ),\n        89 => array (\n            'SslRMIClientSocketFactory', 'SslRMIServerSocketFactory'\n            ),\n        90 => array (\n            'AuthPermission', 'DestroyFailedException', 'Destroyable', 'PrivateCredentialPermission', 'RefreshFailedException', 'Refreshable', 'Subject', 'SubjectDomainCombiner'\n            ),\n        91 => array (\n            'Callback', 'CallbackHandler', 'ChoiceCallback', 'ConfirmationCallback', 'LanguageCallback', 'NameCallback', 'PasswordCallback', 'TextInputCallback', 'TextOutputCallback', 'UnsupportedCallbackException'\n            ),\n        92 => array (\n            'DelegationPermission', 'KerberosKey', 'KerberosPrincipal', 'KerberosTicket', 'ServicePermission'\n            ),\n        93 => array (\n            'AccountException', 'AccountExpiredException', 'AccountLockedException', 'AccountNotFoundException', 'AppConfigurationEntry', 'AppConfigurationEntry.LoginModuleControlFlag', 'Configuration', 'CredentialException', 'CredentialExpiredException', 'CredentialNotFoundException', 'FailedLoginException', 'LoginContext', 'LoginException'\n            ),\n        94 => array (\n            'LoginModule'\n            ),\n        95 => array (\n            'X500Principal', 'X500PrivateCredential'\n            ),\n        96 => array (\n            'AuthorizeCallback', 'RealmCallback', 'RealmChoiceCallback', 'Sasl', 'SaslClient', 'SaslClientFactory', 'SaslException', 'SaslServer', 'SaslServerFactory'\n            ),\n        97 => array (\n            'ControllerEventListener', 'Instrument', 'InvalidMidiDataException', 'MetaEventListener', 'MetaMessage', 'MidiChannel', 'MidiDevice', 'MidiDevice.Info', 'MidiEvent', 'MidiFileFormat', 'MidiMessage', 'MidiSystem', 'MidiUnavailableException', 'Patch', 'Receiver', 'Sequence', 'Sequencer', 'Sequencer.SyncMode', 'ShortMessage', 'Soundbank', 'SoundbankResource', 'Synthesizer', 'SysexMessage', 'Track', 'Transmitter', 'VoiceStatus'\n            ),\n        98 => array (\n            'MidiDeviceProvider', 'MidiFileReader', 'MidiFileWriter', 'SoundbankReader'\n            ),\n        99 => array (\n            'AudioFileFormat', 'AudioFileFormat.Type', 'AudioFormat', 'AudioFormat.Encoding', 'AudioInputStream', 'AudioPermission', 'AudioSystem', 'BooleanControl', 'BooleanControl.Type', 'Clip', 'CompoundControl', 'CompoundControl.Type', 'Control.Type', 'DataLine', 'DataLine.Info', 'EnumControl', 'EnumControl.Type', 'FloatControl', 'FloatControl.Type', 'Line', 'Line.Info', 'LineEvent', 'LineEvent.Type', 'LineListener', 'LineUnavailableException', 'Mixer', 'Mixer.Info', 'Port', 'Port.Info', 'ReverbType', 'SourceDataLine', 'TargetDataLine', 'UnsupportedAudioFileException'\n            ),\n        100 => array (\n            'AudioFileReader', 'AudioFileWriter', 'FormatConversionProvider', 'MixerProvider'\n            ),\n        101 => array (\n            'ConnectionEvent', 'ConnectionEventListener', 'ConnectionPoolDataSource', 'DataSource', 'PooledConnection', 'RowSet', 'RowSetEvent', 'RowSetInternal', 'RowSetListener', 'RowSetMetaData', 'RowSetReader', 'RowSetWriter', 'XAConnection', 'XADataSource'\n            ),\n        102 => array (\n            'BaseRowSet', 'CachedRowSet', 'FilteredRowSet', 'JdbcRowSet', 'JoinRowSet', 'Joinable', 'Predicate', 'RowSetMetaDataImpl', 'RowSetWarning', 'WebRowSet'\n            ),\n        103 => array (\n            'SQLInputImpl', 'SQLOutputImpl', 'SerialArray', 'SerialBlob', 'SerialClob', 'SerialDatalink', 'SerialException', 'SerialJavaObject', 'SerialRef', 'SerialStruct'\n            ),\n        104 => array (\n            'SyncFactory', 'SyncFactoryException', 'SyncProvider', 'SyncProviderException', 'SyncResolver', 'TransactionalWriter', 'XmlReader', 'XmlWriter'\n            ),\n        105 => array (\n            'AbstractAction', 'AbstractButton', 'AbstractCellEditor', 'AbstractListModel', 'AbstractSpinnerModel', 'Action', 'ActionMap', 'BorderFactory', 'BoundedRangeModel', 'Box', 'Box.Filler', 'BoxLayout', 'ButtonGroup', 'ButtonModel', 'CellEditor', 'CellRendererPane', 'ComboBoxEditor', 'ComboBoxModel', 'ComponentInputMap', 'DebugGraphics', 'DefaultBoundedRangeModel', 'DefaultButtonModel', 'DefaultCellEditor', 'DefaultComboBoxModel', 'DefaultDesktopManager', 'DefaultFocusManager', 'DefaultListCellRenderer', 'DefaultListCellRenderer.UIResource', 'DefaultListModel', 'DefaultListSelectionModel', 'DefaultSingleSelectionModel', 'DesktopManager', 'FocusManager', 'GrayFilter', 'Icon', 'ImageIcon', 'InputMap', 'InputVerifier', 'InternalFrameFocusTraversalPolicy', 'JApplet', 'JButton', 'JCheckBox', 'JCheckBoxMenuItem', 'JColorChooser', 'JComboBox', 'JComboBox.KeySelectionManager', 'JComponent', 'JDesktopPane', 'JDialog', 'JEditorPane', 'JFileChooser', 'JFormattedTextField', 'JFormattedTextField.AbstractFormatter',\n            'JFormattedTextField.AbstractFormatterFactory', 'JFrame', 'JInternalFrame', 'JInternalFrame.JDesktopIcon', 'JLabel', 'JLayeredPane', 'JList', 'JMenu', 'JMenuBar', 'JMenuItem', 'JOptionPane', 'JPanel', 'JPasswordField', 'JPopupMenu', 'JPopupMenu.Separator', 'JProgressBar', 'JRadioButton', 'JRadioButtonMenuItem', 'JRootPane', 'JScrollBar', 'JScrollPane', 'JSeparator', 'JSlider', 'JSpinner', 'JSpinner.DateEditor', 'JSpinner.DefaultEditor', 'JSpinner.ListEditor', 'JSpinner.NumberEditor', 'JSplitPane', 'JTabbedPane', 'JTable', 'JTable.PrintMode', 'JTextArea', 'JTextField', 'JTextPane', 'JToggleButton', 'JToggleButton.ToggleButtonModel', 'JToolBar', 'JToolBar.Separator', 'JToolTip', 'JTree', 'JTree.DynamicUtilTreeNode', 'JTree.EmptySelectionModel', 'JViewport', 'JWindow', 'KeyStroke', 'LayoutFocusTraversalPolicy', 'ListCellRenderer', 'ListModel', 'ListSelectionModel', 'LookAndFeel', 'MenuElement', 'MenuSelectionManager', 'MutableComboBoxModel', 'OverlayLayout', 'Popup', 'PopupFactory', 'ProgressMonitor',\n            'ProgressMonitorInputStream', 'Renderer', 'RepaintManager', 'RootPaneContainer', 'ScrollPaneConstants', 'ScrollPaneLayout', 'ScrollPaneLayout.UIResource', 'Scrollable', 'SingleSelectionModel', 'SizeRequirements', 'SizeSequence', 'SortingFocusTraversalPolicy', 'SpinnerDateModel', 'SpinnerListModel', 'SpinnerModel', 'SpinnerNumberModel', 'Spring', 'SpringLayout', 'SpringLayout.Constraints', 'SwingConstants', 'SwingUtilities', 'ToolTipManager', 'TransferHandler', 'UIDefaults', 'UIDefaults.ActiveValue', 'UIDefaults.LazyInputMap', 'UIDefaults.LazyValue', 'UIDefaults.ProxyLazyValue', 'UIManager', 'UIManager.LookAndFeelInfo', 'UnsupportedLookAndFeelException', 'ViewportLayout', 'WindowConstants'\n            ),\n        106 => array (\n            'AbstractBorder', 'BevelBorder', 'Border', 'CompoundBorder', 'EmptyBorder', 'EtchedBorder', 'LineBorder', 'MatteBorder', 'SoftBevelBorder', 'TitledBorder'\n            ),\n        107 => array (\n            'AbstractColorChooserPanel', 'ColorChooserComponentFactory', 'ColorSelectionModel', 'DefaultColorSelectionModel'\n            ),\n        108 => array (\n            'AncestorEvent', 'AncestorListener', 'CaretEvent', 'CaretListener', 'CellEditorListener', 'ChangeEvent', 'ChangeListener', 'DocumentEvent.ElementChange', 'DocumentEvent.EventType', 'DocumentListener', 'EventListenerList', 'HyperlinkEvent', 'HyperlinkEvent.EventType', 'HyperlinkListener', 'InternalFrameAdapter', 'InternalFrameEvent', 'InternalFrameListener', 'ListDataEvent', 'ListDataListener', 'ListSelectionEvent', 'ListSelectionListener', 'MenuDragMouseEvent', 'MenuDragMouseListener', 'MenuEvent', 'MenuKeyEvent', 'MenuKeyListener', 'MenuListener', 'MouseInputAdapter', 'MouseInputListener', 'PopupMenuEvent', 'PopupMenuListener', 'SwingPropertyChangeSupport', 'TableColumnModelEvent', 'TableColumnModelListener', 'TableModelEvent', 'TableModelListener', 'TreeExpansionEvent', 'TreeExpansionListener', 'TreeModelEvent', 'TreeModelListener', 'TreeSelectionEvent', 'TreeSelectionListener', 'TreeWillExpandListener', 'UndoableEditEvent', 'UndoableEditListener'\n            ),\n        109 => array (\n            'FileSystemView', 'FileView'\n            ),\n        110 => array (\n            'ActionMapUIResource', 'BorderUIResource', 'BorderUIResource.BevelBorderUIResource', 'BorderUIResource.CompoundBorderUIResource', 'BorderUIResource.EmptyBorderUIResource', 'BorderUIResource.EtchedBorderUIResource', 'BorderUIResource.LineBorderUIResource', 'BorderUIResource.MatteBorderUIResource', 'BorderUIResource.TitledBorderUIResource', 'ButtonUI', 'ColorChooserUI', 'ColorUIResource', 'ComboBoxUI', 'ComponentInputMapUIResource', 'ComponentUI', 'DesktopIconUI', 'DesktopPaneUI', 'DimensionUIResource', 'FileChooserUI', 'FontUIResource', 'IconUIResource', 'InputMapUIResource', 'InsetsUIResource', 'InternalFrameUI', 'LabelUI', 'ListUI', 'MenuBarUI', 'MenuItemUI', 'OptionPaneUI', 'PanelUI', 'PopupMenuUI', 'ProgressBarUI', 'RootPaneUI', 'ScrollBarUI', 'ScrollPaneUI', 'SeparatorUI', 'SliderUI', 'SpinnerUI', 'SplitPaneUI', 'TabbedPaneUI', 'TableHeaderUI', 'TableUI', 'TextUI', 'ToolBarUI', 'ToolTipUI', 'TreeUI', 'UIResource', 'ViewportUI'\n            ),\n        111 => array (\n            'BasicArrowButton', 'BasicBorders', 'BasicBorders.ButtonBorder', 'BasicBorders.FieldBorder', 'BasicBorders.MarginBorder', 'BasicBorders.MenuBarBorder', 'BasicBorders.RadioButtonBorder', 'BasicBorders.RolloverButtonBorder', 'BasicBorders.SplitPaneBorder', 'BasicBorders.ToggleButtonBorder', 'BasicButtonListener', 'BasicButtonUI', 'BasicCheckBoxMenuItemUI', 'BasicCheckBoxUI', 'BasicColorChooserUI', 'BasicComboBoxEditor', 'BasicComboBoxEditor.UIResource', 'BasicComboBoxRenderer', 'BasicComboBoxRenderer.UIResource', 'BasicComboBoxUI', 'BasicComboPopup', 'BasicDesktopIconUI', 'BasicDesktopPaneUI', 'BasicDirectoryModel', 'BasicEditorPaneUI', 'BasicFileChooserUI', 'BasicFormattedTextFieldUI', 'BasicGraphicsUtils', 'BasicHTML', 'BasicIconFactory', 'BasicInternalFrameTitlePane', 'BasicInternalFrameUI', 'BasicLabelUI', 'BasicListUI', 'BasicLookAndFeel', 'BasicMenuBarUI', 'BasicMenuItemUI', 'BasicMenuUI', 'BasicOptionPaneUI', 'BasicOptionPaneUI.ButtonAreaLayout', 'BasicPanelUI', 'BasicPasswordFieldUI',\n            'BasicPopupMenuSeparatorUI', 'BasicPopupMenuUI', 'BasicProgressBarUI', 'BasicRadioButtonMenuItemUI', 'BasicRadioButtonUI', 'BasicRootPaneUI', 'BasicScrollBarUI', 'BasicScrollPaneUI', 'BasicSeparatorUI', 'BasicSliderUI', 'BasicSpinnerUI', 'BasicSplitPaneDivider', 'BasicSplitPaneUI', 'BasicTabbedPaneUI', 'BasicTableHeaderUI', 'BasicTableUI', 'BasicTextAreaUI', 'BasicTextFieldUI', 'BasicTextPaneUI', 'BasicTextUI', 'BasicTextUI.BasicCaret', 'BasicTextUI.BasicHighlighter', 'BasicToggleButtonUI', 'BasicToolBarSeparatorUI', 'BasicToolBarUI', 'BasicToolTipUI', 'BasicTreeUI', 'BasicViewportUI', 'ComboPopup', 'DefaultMenuLayout'\n            ),\n        112 => array (\n            'DefaultMetalTheme', 'MetalBorders', 'MetalBorders.ButtonBorder', 'MetalBorders.Flush3DBorder', 'MetalBorders.InternalFrameBorder', 'MetalBorders.MenuBarBorder', 'MetalBorders.MenuItemBorder', 'MetalBorders.OptionDialogBorder', 'MetalBorders.PaletteBorder', 'MetalBorders.PopupMenuBorder', 'MetalBorders.RolloverButtonBorder', 'MetalBorders.ScrollPaneBorder', 'MetalBorders.TableHeaderBorder', 'MetalBorders.TextFieldBorder', 'MetalBorders.ToggleButtonBorder', 'MetalBorders.ToolBarBorder', 'MetalButtonUI', 'MetalCheckBoxIcon', 'MetalCheckBoxUI', 'MetalComboBoxButton', 'MetalComboBoxEditor', 'MetalComboBoxEditor.UIResource', 'MetalComboBoxIcon', 'MetalComboBoxUI', 'MetalDesktopIconUI', 'MetalFileChooserUI', 'MetalIconFactory', 'MetalIconFactory.FileIcon16', 'MetalIconFactory.FolderIcon16', 'MetalIconFactory.PaletteCloseIcon', 'MetalIconFactory.TreeControlIcon', 'MetalIconFactory.TreeFolderIcon', 'MetalIconFactory.TreeLeafIcon', 'MetalInternalFrameTitlePane', 'MetalInternalFrameUI', 'MetalLabelUI',\n            'MetalLookAndFeel', 'MetalMenuBarUI', 'MetalPopupMenuSeparatorUI', 'MetalProgressBarUI', 'MetalRadioButtonUI', 'MetalRootPaneUI', 'MetalScrollBarUI', 'MetalScrollButton', 'MetalScrollPaneUI', 'MetalSeparatorUI', 'MetalSliderUI', 'MetalSplitPaneUI', 'MetalTabbedPaneUI', 'MetalTextFieldUI', 'MetalTheme', 'MetalToggleButtonUI', 'MetalToolBarUI', 'MetalToolTipUI', 'MetalTreeUI', 'OceanTheme'\n            ),\n        113 => array (\n            'MultiButtonUI', 'MultiColorChooserUI', 'MultiComboBoxUI', 'MultiDesktopIconUI', 'MultiDesktopPaneUI', 'MultiFileChooserUI', 'MultiInternalFrameUI', 'MultiLabelUI', 'MultiListUI', 'MultiLookAndFeel', 'MultiMenuBarUI', 'MultiMenuItemUI', 'MultiOptionPaneUI', 'MultiPanelUI', 'MultiPopupMenuUI', 'MultiProgressBarUI', 'MultiRootPaneUI', 'MultiScrollBarUI', 'MultiScrollPaneUI', 'MultiSeparatorUI', 'MultiSliderUI', 'MultiSpinnerUI', 'MultiSplitPaneUI', 'MultiTabbedPaneUI', 'MultiTableHeaderUI', 'MultiTableUI', 'MultiTextUI', 'MultiToolBarUI', 'MultiToolTipUI', 'MultiTreeUI', 'MultiViewportUI'\n            ),\n        114 => array (\n            'ColorType', 'Region', 'SynthConstants', 'SynthContext', 'SynthGraphicsUtils', 'SynthLookAndFeel', 'SynthPainter', 'SynthStyle', 'SynthStyleFactory'\n            ),\n        115 => array (\n            'AbstractTableModel', 'DefaultTableCellRenderer', 'DefaultTableCellRenderer.UIResource', 'DefaultTableColumnModel', 'DefaultTableModel', 'JTableHeader', 'TableCellEditor', 'TableCellRenderer', 'TableColumn', 'TableColumnModel', 'TableModel'\n            ),\n        116 => array (\n            'AbstractDocument', 'AbstractDocument.AttributeContext', 'AbstractDocument.Content', 'AbstractDocument.ElementEdit', 'AbstractWriter', 'AsyncBoxView', 'AttributeSet.CharacterAttribute', 'AttributeSet.ColorAttribute', 'AttributeSet.FontAttribute', 'AttributeSet.ParagraphAttribute', 'BadLocationException', 'BoxView', 'Caret', 'ChangedCharSetException', 'ComponentView', 'CompositeView', 'DateFormatter', 'DefaultCaret', 'DefaultEditorKit', 'DefaultEditorKit.BeepAction', 'DefaultEditorKit.CopyAction', 'DefaultEditorKit.CutAction', 'DefaultEditorKit.DefaultKeyTypedAction', 'DefaultEditorKit.InsertBreakAction', 'DefaultEditorKit.InsertContentAction', 'DefaultEditorKit.InsertTabAction', 'DefaultEditorKit.PasteAction', 'DefaultFormatter', 'DefaultFormatterFactory', 'DefaultHighlighter', 'DefaultHighlighter.DefaultHighlightPainter', 'DefaultStyledDocument', 'DefaultStyledDocument.AttributeUndoableEdit', 'DefaultStyledDocument.ElementSpec', 'DefaultTextUI', 'DocumentFilter', 'DocumentFilter.FilterBypass',\n            'EditorKit', 'ElementIterator', 'FieldView', 'FlowView', 'FlowView.FlowStrategy', 'GapContent', 'GlyphView', 'GlyphView.GlyphPainter', 'Highlighter', 'Highlighter.Highlight', 'Highlighter.HighlightPainter', 'IconView', 'InternationalFormatter', 'JTextComponent', 'JTextComponent.KeyBinding', 'Keymap', 'LabelView', 'LayeredHighlighter', 'LayeredHighlighter.LayerPainter', 'LayoutQueue', 'MaskFormatter', 'MutableAttributeSet', 'NavigationFilter', 'NavigationFilter.FilterBypass', 'NumberFormatter', 'PasswordView', 'PlainDocument', 'PlainView', 'Position', 'Position.Bias', 'Segment', 'SimpleAttributeSet', 'StringContent', 'Style', 'StyleConstants', 'StyleConstants.CharacterConstants', 'StyleConstants.ColorConstants', 'StyleConstants.FontConstants', 'StyleConstants.ParagraphConstants', 'StyleContext', 'StyledDocument', 'StyledEditorKit', 'StyledEditorKit.AlignmentAction', 'StyledEditorKit.BoldAction', 'StyledEditorKit.FontFamilyAction', 'StyledEditorKit.FontSizeAction', 'StyledEditorKit.ForegroundAction',\n            'StyledEditorKit.ItalicAction', 'StyledEditorKit.StyledTextAction', 'StyledEditorKit.UnderlineAction', 'TabExpander', 'TabSet', 'TabStop', 'TabableView', 'TableView', 'TextAction', 'Utilities', 'View', 'ViewFactory', 'WrappedPlainView', 'ZoneView'\n            ),\n        117 => array (\n            'BlockView', 'CSS', 'CSS.Attribute', 'FormSubmitEvent', 'FormSubmitEvent.MethodType', 'FormView', 'HTML', 'HTML.Attribute', 'HTML.Tag', 'HTML.UnknownTag', 'HTMLDocument', 'HTMLDocument.Iterator', 'HTMLEditorKit', 'HTMLEditorKit.HTMLFactory', 'HTMLEditorKit.HTMLTextAction', 'HTMLEditorKit.InsertHTMLTextAction', 'HTMLEditorKit.LinkController', 'HTMLEditorKit.Parser', 'HTMLEditorKit.ParserCallback', 'HTMLFrameHyperlinkEvent', 'HTMLWriter', 'ImageView', 'InlineView', 'ListView', 'MinimalHTMLWriter', 'ObjectView', 'Option', 'StyleSheet', 'StyleSheet.BoxPainter', 'StyleSheet.ListPainter'\n            ),\n        118 => array (\n            'ContentModel', 'DTD', 'DTDConstants', 'DocumentParser', 'ParserDelegator', 'TagElement'\n            ),\n        119 => array (\n            'RTFEditorKit'\n            ),\n        120 => array (\n            'AbstractLayoutCache', 'AbstractLayoutCache.NodeDimensions', 'DefaultMutableTreeNode', 'DefaultTreeCellEditor', 'DefaultTreeCellRenderer', 'DefaultTreeModel', 'DefaultTreeSelectionModel', 'ExpandVetoException', 'FixedHeightLayoutCache', 'MutableTreeNode', 'RowMapper', 'TreeCellEditor', 'TreeCellRenderer', 'TreeModel', 'TreeNode', 'TreePath', 'TreeSelectionModel', 'VariableHeightLayoutCache'\n            ),\n        121 => array (\n            'AbstractUndoableEdit', 'CannotRedoException', 'CannotUndoException', 'CompoundEdit', 'StateEdit', 'StateEditable', 'UndoManager', 'UndoableEdit', 'UndoableEditSupport'\n            ),\n        122 => array (\n            'InvalidTransactionException', 'TransactionRequiredException', 'TransactionRolledbackException'\n            ),\n        123 => array (\n            'XAException', 'XAResource', 'Xid'\n            ),\n        124 => array (\n            'XMLConstants'\n            ),\n        125 => array (\n            'DatatypeConfigurationException', 'DatatypeConstants', 'DatatypeConstants.Field', 'DatatypeFactory', 'Duration', 'XMLGregorianCalendar'\n            ),\n        126 => array (\n            'NamespaceContext', 'QName'\n            ),\n        127 => array (\n            'DocumentBuilder', 'DocumentBuilderFactory', 'FactoryConfigurationError', 'ParserConfigurationException', 'SAXParser', 'SAXParserFactory'\n            ),\n        128 => array (\n            'ErrorListener', 'OutputKeys', 'Result', 'Source', 'SourceLocator', 'Templates', 'Transformer', 'TransformerConfigurationException', 'TransformerException', 'TransformerFactory', 'TransformerFactoryConfigurationError', 'URIResolver'\n            ),\n        129 => array (\n            'DOMResult', 'DOMSource'\n            ),\n        130 => array (\n            'SAXResult', 'SAXSource', 'SAXTransformerFactory', 'TemplatesHandler', 'TransformerHandler'\n            ),\n        131 => array (\n            'StreamResult', 'StreamSource'\n            ),\n        132 => array (\n            'Schema', 'SchemaFactory', 'SchemaFactoryLoader', 'TypeInfoProvider', 'Validator', 'ValidatorHandler'\n            ),\n        133 => array (\n            'XPath', 'XPathConstants', 'XPathException', 'XPathExpression', 'XPathExpressionException', 'XPathFactory', 'XPathFactoryConfigurationException', 'XPathFunction', 'XPathFunctionException', 'XPathFunctionResolver', 'XPathVariableResolver'\n            ),\n        134 => array (\n            'ChannelBinding', 'GSSContext', 'GSSCredential', 'GSSException', 'GSSManager', 'GSSName', 'MessageProp', 'Oid'\n            ),\n        135 => array (\n            'ACTIVITY_COMPLETED', 'ACTIVITY_REQUIRED', 'ARG_IN', 'ARG_INOUT', 'ARG_OUT', 'Any', 'AnyHolder', 'AnySeqHolder', 'BAD_CONTEXT', 'BAD_INV_ORDER', 'BAD_OPERATION', 'BAD_PARAM', 'BAD_POLICY', 'BAD_POLICY_TYPE', 'BAD_POLICY_VALUE', 'BAD_QOS', 'BAD_TYPECODE', 'BooleanHolder', 'BooleanSeqHelper', 'BooleanSeqHolder', 'ByteHolder', 'CODESET_INCOMPATIBLE', 'COMM_FAILURE', 'CTX_RESTRICT_SCOPE', 'CharHolder', 'CharSeqHelper', 'CharSeqHolder', 'CompletionStatus', 'CompletionStatusHelper', 'ContextList', 'CurrentHolder', 'CustomMarshal', 'DATA_CONVERSION', 'DefinitionKind', 'DefinitionKindHelper', 'DomainManager', 'DomainManagerOperations', 'DoubleHolder', 'DoubleSeqHelper', 'DoubleSeqHolder', 'Environment', 'ExceptionList', 'FREE_MEM', 'FixedHolder', 'FloatHolder', 'FloatSeqHelper', 'FloatSeqHolder', 'IDLType', 'IDLTypeHelper', 'IDLTypeOperations', 'IMP_LIMIT', 'INITIALIZE', 'INTERNAL', 'INTF_REPOS', 'INVALID_ACTIVITY', 'INVALID_TRANSACTION', 'INV_FLAG', 'INV_IDENT', 'INV_OBJREF', 'INV_POLICY', 'IRObject',\n            'IRObjectOperations', 'IdentifierHelper', 'IntHolder', 'LocalObject', 'LongHolder', 'LongLongSeqHelper', 'LongLongSeqHolder', 'LongSeqHelper', 'LongSeqHolder', 'MARSHAL', 'NO_IMPLEMENT', 'NO_MEMORY', 'NO_PERMISSION', 'NO_RESOURCES', 'NO_RESPONSE', 'NVList', 'NamedValue', 'OBJECT_NOT_EXIST', 'OBJ_ADAPTER', 'OMGVMCID', 'ObjectHelper', 'ObjectHolder', 'OctetSeqHelper', 'OctetSeqHolder', 'PERSIST_STORE', 'PRIVATE_MEMBER', 'PUBLIC_MEMBER', 'ParameterMode', 'ParameterModeHelper', 'ParameterModeHolder', 'PolicyError', 'PolicyErrorCodeHelper', 'PolicyErrorHelper', 'PolicyErrorHolder', 'PolicyHelper', 'PolicyHolder', 'PolicyListHelper', 'PolicyListHolder', 'PolicyOperations', 'PolicyTypeHelper', 'PrincipalHolder', 'REBIND', 'RepositoryIdHelper', 'Request', 'ServerRequest', 'ServiceDetail', 'ServiceDetailHelper', 'ServiceInformation', 'ServiceInformationHelper', 'ServiceInformationHolder', 'SetOverrideType', 'SetOverrideTypeHelper', 'ShortHolder', 'ShortSeqHelper', 'ShortSeqHolder', 'StringHolder',\n            'StringSeqHelper', 'StringSeqHolder', 'StringValueHelper', 'StructMember', 'StructMemberHelper', 'SystemException', 'TCKind', 'TIMEOUT', 'TRANSACTION_MODE', 'TRANSACTION_REQUIRED', 'TRANSACTION_ROLLEDBACK', 'TRANSACTION_UNAVAILABLE', 'TRANSIENT', 'TypeCode', 'TypeCodeHolder', 'ULongLongSeqHelper', 'ULongLongSeqHolder', 'ULongSeqHelper', 'ULongSeqHolder', 'UNSUPPORTED_POLICY', 'UNSUPPORTED_POLICY_VALUE', 'UShortSeqHelper', 'UShortSeqHolder', 'UnionMember', 'UnionMemberHelper', 'UnknownUserException', 'UnknownUserExceptionHelper', 'UnknownUserExceptionHolder', 'UserException', 'VM_ABSTRACT', 'VM_CUSTOM', 'VM_NONE', 'VM_TRUNCATABLE', 'ValueBaseHelper', 'ValueBaseHolder', 'ValueMember', 'ValueMemberHelper', 'VersionSpecHelper', 'VisibilityHelper', 'WCharSeqHelper', 'WCharSeqHolder', 'WStringSeqHelper', 'WStringSeqHolder', 'WStringValueHelper', 'WrongTransaction', 'WrongTransactionHelper', 'WrongTransactionHolder', '_IDLTypeStub', '_PolicyStub'\n            ),\n        136 => array (\n            'Invalid', 'InvalidSeq'\n            ),\n        137 => array (\n            'BadKind'\n            ),\n        138 => array (\n            'ApplicationException', 'BoxedValueHelper', 'CustomValue', 'IDLEntity', 'IndirectionException', 'InvokeHandler', 'RemarshalException', 'ResponseHandler', 'ServantObject', 'Streamable', 'StreamableValue', 'UnknownException', 'ValueBase', 'ValueFactory', 'ValueInputStream', 'ValueOutputStream'\n            ),\n        139 => array (\n            'BindingHelper', 'BindingHolder', 'BindingIterator', 'BindingIteratorHelper', 'BindingIteratorHolder', 'BindingIteratorOperations', 'BindingIteratorPOA', 'BindingListHelper', 'BindingListHolder', 'BindingType', 'BindingTypeHelper', 'BindingTypeHolder', 'IstringHelper', 'NameComponent', 'NameComponentHelper', 'NameComponentHolder', 'NameHelper', 'NameHolder', 'NamingContext', 'NamingContextExt', 'NamingContextExtHelper', 'NamingContextExtHolder', 'NamingContextExtOperations', 'NamingContextExtPOA', 'NamingContextHelper', 'NamingContextHolder', 'NamingContextOperations', 'NamingContextPOA', '_BindingIteratorImplBase', '_BindingIteratorStub', '_NamingContextExtStub', '_NamingContextImplBase', '_NamingContextStub'\n            ),\n        140 => array (\n            'AddressHelper', 'InvalidAddress', 'InvalidAddressHelper', 'InvalidAddressHolder', 'StringNameHelper', 'URLStringHelper'\n            ),\n        141 => array (\n            'AlreadyBound', 'AlreadyBoundHelper', 'AlreadyBoundHolder', 'CannotProceed', 'CannotProceedHelper', 'CannotProceedHolder', 'InvalidNameHolder', 'NotEmpty', 'NotEmptyHelper', 'NotEmptyHolder', 'NotFound', 'NotFoundHelper', 'NotFoundHolder', 'NotFoundReason', 'NotFoundReasonHelper', 'NotFoundReasonHolder'\n            ),\n        142 => array (\n            'Parameter'\n            ),\n        143 => array (\n            'DynAnyFactory', 'DynAnyFactoryHelper', 'DynAnyFactoryOperations', 'DynAnyHelper', 'DynAnyOperations', 'DynAnySeqHelper', 'DynArrayHelper', 'DynArrayOperations', 'DynEnumHelper', 'DynEnumOperations', 'DynFixedHelper', 'DynFixedOperations', 'DynSequenceHelper', 'DynSequenceOperations', 'DynStructHelper', 'DynStructOperations', 'DynUnionHelper', 'DynUnionOperations', 'DynValueBox', 'DynValueBoxOperations', 'DynValueCommon', 'DynValueCommonOperations', 'DynValueHelper', 'DynValueOperations', 'NameDynAnyPair', 'NameDynAnyPairHelper', 'NameDynAnyPairSeqHelper', 'NameValuePairSeqHelper', '_DynAnyFactoryStub', '_DynAnyStub', '_DynArrayStub', '_DynEnumStub', '_DynFixedStub', '_DynSequenceStub', '_DynStructStub', '_DynUnionStub', '_DynValueStub'\n            ),\n        144 => array (\n            'InconsistentTypeCodeHelper'\n            ),\n        145 => array (\n            'InvalidValueHelper'\n            ),\n        146 => array (\n            'CodeSets', 'Codec', 'CodecFactory', 'CodecFactoryHelper', 'CodecFactoryOperations', 'CodecOperations', 'ComponentIdHelper', 'ENCODING_CDR_ENCAPS', 'Encoding', 'ExceptionDetailMessage', 'IOR', 'IORHelper', 'IORHolder', 'MultipleComponentProfileHelper', 'MultipleComponentProfileHolder', 'ProfileIdHelper', 'RMICustomMaxStreamFormat', 'ServiceContext', 'ServiceContextHelper', 'ServiceContextHolder', 'ServiceContextListHelper', 'ServiceContextListHolder', 'ServiceIdHelper', 'TAG_ALTERNATE_IIOP_ADDRESS', 'TAG_CODE_SETS', 'TAG_INTERNET_IOP', 'TAG_JAVA_CODEBASE', 'TAG_MULTIPLE_COMPONENTS', 'TAG_ORB_TYPE', 'TAG_POLICIES', 'TAG_RMI_CUSTOM_MAX_STREAM_FORMAT', 'TaggedComponent', 'TaggedComponentHelper', 'TaggedComponentHolder', 'TaggedProfile', 'TaggedProfileHelper', 'TaggedProfileHolder', 'TransactionService'\n            ),\n        147 => array (\n            'UnknownEncoding', 'UnknownEncodingHelper'\n            ),\n        148 => array (\n            'FormatMismatch', 'FormatMismatchHelper', 'InvalidTypeForEncoding', 'InvalidTypeForEncodingHelper'\n            ),\n        149 => array (\n            'SYNC_WITH_TRANSPORT', 'SyncScopeHelper'\n            ),\n        150 => array (\n            'ACTIVE', 'AdapterManagerIdHelper', 'AdapterNameHelper', 'AdapterStateHelper', 'ClientRequestInfo', 'ClientRequestInfoOperations', 'ClientRequestInterceptor', 'ClientRequestInterceptorOperations', 'DISCARDING', 'HOLDING', 'INACTIVE', 'IORInfo', 'IORInfoOperations', 'IORInterceptor', 'IORInterceptorOperations', 'IORInterceptor_3_0', 'IORInterceptor_3_0Helper', 'IORInterceptor_3_0Holder', 'IORInterceptor_3_0Operations', 'Interceptor', 'InterceptorOperations', 'InvalidSlot', 'InvalidSlotHelper', 'LOCATION_FORWARD', 'NON_EXISTENT', 'ORBIdHelper', 'ORBInitInfo', 'ORBInitInfoOperations', 'ORBInitializer', 'ORBInitializerOperations', 'ObjectReferenceFactory', 'ObjectReferenceFactoryHelper', 'ObjectReferenceFactoryHolder', 'ObjectReferenceTemplate', 'ObjectReferenceTemplateHelper', 'ObjectReferenceTemplateHolder', 'ObjectReferenceTemplateSeqHelper', 'ObjectReferenceTemplateSeqHolder', 'PolicyFactory', 'PolicyFactoryOperations', 'RequestInfo', 'RequestInfoOperations', 'SUCCESSFUL', 'SYSTEM_EXCEPTION',\n            'ServerIdHelper', 'ServerRequestInfo', 'ServerRequestInfoOperations', 'ServerRequestInterceptor', 'ServerRequestInterceptorOperations', 'TRANSPORT_RETRY', 'USER_EXCEPTION'\n            ),\n        151 => array (\n            'DuplicateName', 'DuplicateNameHelper'\n            ),\n        152 => array (\n            'AdapterActivator', 'AdapterActivatorOperations', 'ID_ASSIGNMENT_POLICY_ID', 'ID_UNIQUENESS_POLICY_ID', 'IMPLICIT_ACTIVATION_POLICY_ID', 'IdAssignmentPolicy', 'IdAssignmentPolicyOperations', 'IdAssignmentPolicyValue', 'IdUniquenessPolicy', 'IdUniquenessPolicyOperations', 'IdUniquenessPolicyValue', 'ImplicitActivationPolicy', 'ImplicitActivationPolicyOperations', 'ImplicitActivationPolicyValue', 'LIFESPAN_POLICY_ID', 'LifespanPolicy', 'LifespanPolicyOperations', 'LifespanPolicyValue', 'POA', 'POAHelper', 'POAManager', 'POAManagerOperations', 'POAOperations', 'REQUEST_PROCESSING_POLICY_ID', 'RequestProcessingPolicy', 'RequestProcessingPolicyOperations', 'RequestProcessingPolicyValue', 'SERVANT_RETENTION_POLICY_ID', 'Servant', 'ServantActivator', 'ServantActivatorHelper', 'ServantActivatorOperations', 'ServantActivatorPOA', 'ServantLocator', 'ServantLocatorHelper', 'ServantLocatorOperations', 'ServantLocatorPOA', 'ServantManager', 'ServantManagerOperations', 'ServantRetentionPolicy',\n            'ServantRetentionPolicyOperations', 'ServantRetentionPolicyValue', 'THREAD_POLICY_ID', 'ThreadPolicy', 'ThreadPolicyOperations', 'ThreadPolicyValue', '_ServantActivatorStub', '_ServantLocatorStub'\n            ),\n        153 => array (\n            'NoContext', 'NoContextHelper'\n            ),\n        154 => array (\n            'AdapterInactive', 'AdapterInactiveHelper', 'State'\n            ),\n        155 => array (\n            'AdapterAlreadyExists', 'AdapterAlreadyExistsHelper', 'AdapterNonExistent', 'AdapterNonExistentHelper', 'InvalidPolicy', 'InvalidPolicyHelper', 'NoServant', 'NoServantHelper', 'ObjectAlreadyActive', 'ObjectAlreadyActiveHelper', 'ObjectNotActive', 'ObjectNotActiveHelper', 'ServantAlreadyActive', 'ServantAlreadyActiveHelper', 'ServantNotActive', 'ServantNotActiveHelper', 'WrongAdapter', 'WrongAdapterHelper', 'WrongPolicy', 'WrongPolicyHelper'\n            ),\n        156 => array (\n            'CookieHolder'\n            ),\n        157 => array (\n            'RunTime', 'RunTimeOperations'\n            ),\n        158 => array (\n            '_Remote_Stub'\n            ),\n        159 => array (\n            'Attr', 'CDATASection', 'CharacterData', 'Comment', 'DOMConfiguration', 'DOMError', 'DOMErrorHandler', 'DOMException', 'DOMImplementation', 'DOMImplementationList', 'DOMImplementationSource', 'DOMStringList', 'DocumentFragment', 'DocumentType', 'EntityReference', 'NameList', 'NamedNodeMap', 'Node', 'NodeList', 'Notation', 'ProcessingInstruction', 'Text', 'TypeInfo', 'UserDataHandler'\n            ),\n        160 => array (\n            'DOMImplementationRegistry'\n            ),\n        161 => array (\n            'EventException', 'EventTarget', 'MutationEvent', 'UIEvent'\n            ),\n        162 => array (\n            'DOMImplementationLS', 'LSException', 'LSInput', 'LSLoadEvent', 'LSOutput', 'LSParser', 'LSParserFilter', 'LSProgressEvent', 'LSResourceResolver', 'LSSerializer', 'LSSerializerFilter'\n            ),\n        163 => array (\n            'DTDHandler', 'DocumentHandler', 'EntityResolver', 'ErrorHandler', 'HandlerBase', 'InputSource', 'Locator', 'SAXException', 'SAXNotRecognizedException', 'SAXNotSupportedException', 'SAXParseException', 'XMLFilter', 'XMLReader'\n            ),\n        164 => array (\n            'Attributes2', 'Attributes2Impl', 'DeclHandler', 'DefaultHandler2', 'EntityResolver2', 'LexicalHandler', 'Locator2', 'Locator2Impl'\n            ),\n        165 => array (\n            'AttributeListImpl', 'AttributesImpl', 'DefaultHandler', 'LocatorImpl', 'NamespaceSupport', 'ParserAdapter', 'ParserFactory', 'XMLFilterImpl', 'XMLReaderAdapter', 'XMLReaderFactory'\n            ),\n        /* ambiguous class names (appear in more than one package) */\n        166 => array (\n            'Annotation', 'AnySeqHelper', 'Array', 'Attribute', 'AttributeList', 'AttributeSet', 'Attributes', 'AuthenticationException', 'Binding', 'Bounds', 'Certificate', 'CertificateEncodingException', 'CertificateException', 'CertificateExpiredException', 'CertificateNotYetValidException', 'CertificateParsingException', 'ConnectException', 'ContentHandler', 'Context', 'Control', 'Current', 'CurrentHelper', 'CurrentOperations', 'DOMLocator', 'DataInputStream', 'DataOutputStream', 'Date', 'DefaultLoaderRepository', 'Delegate', 'Document', 'DocumentEvent', 'DynAny', 'DynArray', 'DynEnum', 'DynFixed', 'DynSequence', 'DynStruct', 'DynUnion', 'DynValue', 'DynamicImplementation', 'Element', 'Entity', 'Event', 'EventListener', 'FieldNameHelper', 'FileFilter', 'Formatter', 'ForwardRequest', 'ForwardRequestHelper', 'InconsistentTypeCode', 'InputStream', 'IntrospectionException', 'InvalidAttributeValueException', 'InvalidKeyException', 'InvalidName', 'InvalidNameHelper', 'InvalidValue', 'List', 'MouseEvent',\n            'NameValuePair', 'NameValuePairHelper', 'ORB', 'Object', 'ObjectIdHelper', 'ObjectImpl', 'OpenType', 'OutputStream', 'ParagraphView', 'Parser', 'Permission', 'Policy', 'Principal', 'Proxy', 'Reference', 'Statement', 'Timer', 'Timestamp', 'TypeMismatch', 'TypeMismatchHelper', 'UNKNOWN', 'UnknownHostException', 'X509Certificate'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        /* all Java keywords are case sensitive */\n        1 => true, 2 => true, 3 => true, 4 => true,\n        5 => true, 6 => true, 7 => true, 8 => true, 9 => true,\n        10 => true, 11 => true, 12 => true, 13 => true, 14 => true,\n        15 => true, 16 => true, 17 => true, 18 => true, 19 => true,\n        20 => true, 21 => true, 22 => true, 23 => true, 24 => true,\n        25 => true, 26 => true, 27 => true, 28 => true, 29 => true,\n        30 => true, 31 => true, 32 => true, 33 => true, 34 => true,\n        35 => true, 36 => true, 37 => true, 38 => true, 39 => true,\n        40 => true, 41 => true, 42 => true, 43 => true, 44 => true,\n        45 => true, 46 => true, 47 => true, 48 => true, 49 => true,\n        50 => true, 51 => true, 52 => true, 53 => true, 54 => true,\n        55 => true, 56 => true, 57 => true, 58 => true, 59 => true,\n        60 => true, 61 => true, 62 => true, 63 => true, 64 => true,\n        65 => true, 66 => true, 67 => true, 68 => true, 69 => true,\n        70 => true, 71 => true, 72 => true, 73 => true, 74 => true,\n        75 => true, 76 => true, 77 => true, 78 => true, 79 => true,\n        80 => true, 81 => true, 82 => true, 83 => true, 84 => true,\n        85 => true, 86 => true, 87 => true, 88 => true, 89 => true,\n        90 => true, 91 => true, 92 => true, 93 => true, 94 => true,\n        95 => true, 96 => true, 97 => true, 98 => true, 99 => true,\n        100 => true, 101 => true, 102 => true, 103 => true, 104 => true,\n        105 => true, 106 => true, 107 => true, 108 => true, 109 => true,\n        110 => true, 111 => true, 112 => true, 113 => true, 114 => true,\n        115 => true, 116 => true, 117 => true, 118 => true, 119 => true,\n        120 => true, 121 => true, 122 => true, 123 => true, 124 => true,\n        125 => true, 126 => true, 127 => true, 128 => true, 129 => true,\n        130 => true, 131 => true, 132 => true, 133 => true, 134 => true,\n        135 => true, 136 => true, 137 => true, 138 => true, 139 => true,\n        140 => true, 141 => true, 142 => true, 143 => true, 144 => true,\n        145 => true, 146 => true, 147 => true, 148 => true, 149 => true,\n        150 => true, 151 => true, 152 => true, 153 => true, 154 => true,\n        155 => true, 156 => true, 157 => true, 158 => true, 159 => true,\n        160 => true, 161 => true, 162 => true, 163 => true, 164 => true,\n        165 => true, 166 => true\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000;  font-weight: bold;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #006600; font-weight: bold;',\n            4 => 'color: #006600; font-weight: bold;',\n            5 => 'color: #003399; font-weight: bold;',\n            6 => 'color: #003399; font-weight: bold;',\n            7 => 'color: #003399; font-weight: bold;',\n            8 => 'color: #003399; font-weight: bold;',\n            9 => 'color: #003399; font-weight: bold;',\n            10 => 'color: #003399; font-weight: bold;',\n            11 => 'color: #003399; font-weight: bold;',\n            12 => 'color: #003399; font-weight: bold;',\n            13 => 'color: #003399; font-weight: bold;',\n            14 => 'color: #003399; font-weight: bold;',\n            15 => 'color: #003399; font-weight: bold;',\n            16 => 'color: #003399; font-weight: bold;',\n            17 => 'color: #003399; font-weight: bold;',\n            18 => 'color: #003399; font-weight: bold;',\n            19 => 'color: #003399; font-weight: bold;',\n            20 => 'color: #003399; font-weight: bold;',\n            21 => 'color: #003399; font-weight: bold;',\n            22 => 'color: #003399; font-weight: bold;',\n            23 => 'color: #003399; font-weight: bold;',\n            24 => 'color: #003399; font-weight: bold;',\n            25 => 'color: #003399; font-weight: bold;',\n            26 => 'color: #003399; font-weight: bold;',\n            27 => 'color: #003399; font-weight: bold;',\n            28 => 'color: #003399; font-weight: bold;',\n            29 => 'color: #003399; font-weight: bold;',\n            30 => 'color: #003399; font-weight: bold;',\n            31 => 'color: #003399; font-weight: bold;',\n            32 => 'color: #003399; font-weight: bold;',\n            33 => 'color: #003399; font-weight: bold;',\n            34 => 'color: #003399; font-weight: bold;',\n            35 => 'color: #003399; font-weight: bold;',\n            36 => 'color: #003399; font-weight: bold;',\n            37 => 'color: #003399; font-weight: bold;',\n            38 => 'color: #003399; font-weight: bold;',\n            39 => 'color: #003399; font-weight: bold;',\n            40 => 'color: #003399; font-weight: bold;',\n            41 => 'color: #003399; font-weight: bold;',\n            42 => 'color: #003399; font-weight: bold;',\n            43 => 'color: #003399; font-weight: bold;',\n            44 => 'color: #003399; font-weight: bold;',\n            45 => 'color: #003399; font-weight: bold;',\n            46 => 'color: #003399; font-weight: bold;',\n            47 => 'color: #003399; font-weight: bold;',\n            48 => 'color: #003399; font-weight: bold;',\n            49 => 'color: #003399; font-weight: bold;',\n            50 => 'color: #003399; font-weight: bold;',\n            51 => 'color: #003399; font-weight: bold;',\n            52 => 'color: #003399; font-weight: bold;',\n            53 => 'color: #003399; font-weight: bold;',\n            54 => 'color: #003399; font-weight: bold;',\n            55 => 'color: #003399; font-weight: bold;',\n            56 => 'color: #003399; font-weight: bold;',\n            57 => 'color: #003399; font-weight: bold;',\n            58 => 'color: #003399; font-weight: bold;',\n            59 => 'color: #003399; font-weight: bold;',\n            60 => 'color: #003399; font-weight: bold;',\n            61 => 'color: #003399; font-weight: bold;',\n            62 => 'color: #003399; font-weight: bold;',\n            63 => 'color: #003399; font-weight: bold;',\n            64 => 'color: #003399; font-weight: bold;',\n            65 => 'color: #003399; font-weight: bold;',\n            66 => 'color: #003399; font-weight: bold;',\n            67 => 'color: #003399; font-weight: bold;',\n            68 => 'color: #003399; font-weight: bold;',\n            69 => 'color: #003399; font-weight: bold;',\n            70 => 'color: #003399; font-weight: bold;',\n            71 => 'color: #003399; font-weight: bold;',\n            72 => 'color: #003399; font-weight: bold;',\n            73 => 'color: #003399; font-weight: bold;',\n            74 => 'color: #003399; font-weight: bold;',\n            75 => 'color: #003399; font-weight: bold;',\n            76 => 'color: #003399; font-weight: bold;',\n            77 => 'color: #003399; font-weight: bold;',\n            78 => 'color: #003399; font-weight: bold;',\n            79 => 'color: #003399; font-weight: bold;',\n            80 => 'color: #003399; font-weight: bold;',\n            81 => 'color: #003399; font-weight: bold;',\n            82 => 'color: #003399; font-weight: bold;',\n            83 => 'color: #003399; font-weight: bold;',\n            84 => 'color: #003399; font-weight: bold;',\n            85 => 'color: #003399; font-weight: bold;',\n            86 => 'color: #003399; font-weight: bold;',\n            87 => 'color: #003399; font-weight: bold;',\n            88 => 'color: #003399; font-weight: bold;',\n            89 => 'color: #003399; font-weight: bold;',\n            90 => 'color: #003399; font-weight: bold;',\n            91 => 'color: #003399; font-weight: bold;',\n            92 => 'color: #003399; font-weight: bold;',\n            93 => 'color: #003399; font-weight: bold;',\n            94 => 'color: #003399; font-weight: bold;',\n            95 => 'color: #003399; font-weight: bold;',\n            96 => 'color: #003399; font-weight: bold;',\n            97 => 'color: #003399; font-weight: bold;',\n            98 => 'color: #003399; font-weight: bold;',\n            99 => 'color: #003399; font-weight: bold;',\n            100 => 'color: #003399; font-weight: bold;',\n            101 => 'color: #003399; font-weight: bold;',\n            102 => 'color: #003399; font-weight: bold;',\n            103 => 'color: #003399; font-weight: bold;',\n            104 => 'color: #003399; font-weight: bold;',\n            105 => 'color: #003399; font-weight: bold;',\n            106 => 'color: #003399; font-weight: bold;',\n            107 => 'color: #003399; font-weight: bold;',\n            108 => 'color: #003399; font-weight: bold;',\n            109 => 'color: #003399; font-weight: bold;',\n            110 => 'color: #003399; font-weight: bold;',\n            111 => 'color: #003399; font-weight: bold;',\n            112 => 'color: #003399; font-weight: bold;',\n            113 => 'color: #003399; font-weight: bold;',\n            114 => 'color: #003399; font-weight: bold;',\n            115 => 'color: #003399; font-weight: bold;',\n            116 => 'color: #003399; font-weight: bold;',\n            117 => 'color: #003399; font-weight: bold;',\n            118 => 'color: #003399; font-weight: bold;',\n            119 => 'color: #003399; font-weight: bold;',\n            120 => 'color: #003399; font-weight: bold;',\n            121 => 'color: #003399; font-weight: bold;',\n            122 => 'color: #003399; font-weight: bold;',\n            123 => 'color: #003399; font-weight: bold;',\n            124 => 'color: #003399; font-weight: bold;',\n            125 => 'color: #003399; font-weight: bold;',\n            126 => 'color: #003399; font-weight: bold;',\n            127 => 'color: #003399; font-weight: bold;',\n            128 => 'color: #003399; font-weight: bold;',\n            129 => 'color: #003399; font-weight: bold;',\n            130 => 'color: #003399; font-weight: bold;',\n            131 => 'color: #003399; font-weight: bold;',\n            132 => 'color: #003399; font-weight: bold;',\n            133 => 'color: #003399; font-weight: bold;',\n            134 => 'color: #003399; font-weight: bold;',\n            135 => 'color: #003399; font-weight: bold;',\n            136 => 'color: #003399; font-weight: bold;',\n            137 => 'color: #003399; font-weight: bold;',\n            138 => 'color: #003399; font-weight: bold;',\n            139 => 'color: #003399; font-weight: bold;',\n            140 => 'color: #003399; font-weight: bold;',\n            141 => 'color: #003399; font-weight: bold;',\n            142 => 'color: #003399; font-weight: bold;',\n            143 => 'color: #003399; font-weight: bold;',\n            144 => 'color: #003399; font-weight: bold;',\n            145 => 'color: #003399; font-weight: bold;',\n            146 => 'color: #003399; font-weight: bold;',\n            147 => 'color: #003399; font-weight: bold;',\n            148 => 'color: #003399; font-weight: bold;',\n            149 => 'color: #003399; font-weight: bold;',\n            150 => 'color: #003399; font-weight: bold;',\n            151 => 'color: #003399; font-weight: bold;',\n            152 => 'color: #003399; font-weight: bold;',\n            153 => 'color: #003399; font-weight: bold;',\n            154 => 'color: #003399; font-weight: bold;',\n            155 => 'color: #003399; font-weight: bold;',\n            156 => 'color: #003399; font-weight: bold;',\n            157 => 'color: #003399; font-weight: bold;',\n            158 => 'color: #003399; font-weight: bold;',\n            159 => 'color: #003399; font-weight: bold;',\n            160 => 'color: #003399; font-weight: bold;',\n            161 => 'color: #003399; font-weight: bold;',\n            162 => 'color: #003399; font-weight: bold;',\n            163 => 'color: #003399; font-weight: bold;',\n            164 => 'color: #003399; font-weight: bold;',\n            165 => 'color: #003399; font-weight: bold;',\n            166 => 'color: #003399; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #006699;',\n            3 => 'color: #008000; font-style: italic; font-weight: bold;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006633;',\n            2 => 'color: #006633;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => 'http://docs.oracle.com/javase/7/docs/api/java/applet/{FNAME}.html',\n        6 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/{FNAME}.html',\n        7 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/color/{FNAME}.html',\n        8 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/datatransfer/{FNAME}.html',\n        9 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/dnd/{FNAME}.html',\n        10 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/event/{FNAME}.html',\n        11 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/font/{FNAME}.html',\n        12 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/geom/{FNAME}.html',\n        13 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/im/{FNAME}.html',\n        14 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/im/spi/{FNAME}.html',\n        15 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/image/{FNAME}.html',\n        16 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/image/renderable/{FNAME}.html',\n        17 => 'http://docs.oracle.com/javase/7/docs/api/java/awt/print/{FNAME}.html',\n        18 => 'http://docs.oracle.com/javase/7/docs/api/java/beans/{FNAME}.html',\n        19 => 'http://docs.oracle.com/javase/7/docs/api/java/beans/beancontext/{FNAME}.html',\n        20 => 'http://docs.oracle.com/javase/7/docs/api/java/io/{FNAME}.html',\n        21 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/{FNAME}.html',\n        22 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/annotation/{FNAME}.html',\n        23 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/instrument/{FNAME}.html',\n        24 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/management/{FNAME}.html',\n        25 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/ref/{FNAME}.html',\n        26 => 'http://docs.oracle.com/javase/7/docs/api/java/lang/reflect/{FNAME}.html',\n        27 => 'http://docs.oracle.com/javase/7/docs/api/java/math/{FNAME}.html',\n        28 => 'http://docs.oracle.com/javase/7/docs/api/java/net/{FNAME}.html',\n        29 => 'http://docs.oracle.com/javase/7/docs/api/java/nio/{FNAME}.html',\n        30 => 'http://docs.oracle.com/javase/7/docs/api/java/nio/channels/{FNAME}.html',\n        31 => 'http://docs.oracle.com/javase/7/docs/api/java/nio/channels/spi/{FNAME}.html',\n        32 => 'http://docs.oracle.com/javase/7/docs/api/java/nio/charset/{FNAME}.html',\n        33 => 'http://docs.oracle.com/javase/7/docs/api/java/nio/charset/spi/{FNAME}.html',\n        34 => 'http://docs.oracle.com/javase/7/docs/api/java/rmi/{FNAME}.html',\n        35 => 'http://docs.oracle.com/javase/7/docs/api/java/rmi/activation/{FNAME}.html',\n        36 => 'http://docs.oracle.com/javase/7/docs/api/java/rmi/dgc/{FNAME}.html',\n        37 => 'http://docs.oracle.com/javase/7/docs/api/java/rmi/registry/{FNAME}.html',\n        38 => 'http://docs.oracle.com/javase/7/docs/api/java/rmi/server/{FNAME}.html',\n        39 => 'http://docs.oracle.com/javase/7/docs/api/java/security/{FNAME}.html',\n        40 => 'http://docs.oracle.com/javase/7/docs/api/java/security/acl/{FNAME}.html',\n        41 => 'http://docs.oracle.com/javase/7/docs/api/java/security/cert/{FNAME}.html',\n        42 => 'http://docs.oracle.com/javase/7/docs/api/java/security/interfaces/{FNAME}.html',\n        43 => 'http://docs.oracle.com/javase/7/docs/api/java/security/spec/{FNAME}.html',\n        44 => 'http://docs.oracle.com/javase/7/docs/api/java/sql/{FNAME}.html',\n        45 => 'http://docs.oracle.com/javase/7/docs/api/java/text/{FNAME}.html',\n        46 => 'http://docs.oracle.com/javase/7/docs/api/java/util/{FNAME}.html',\n        47 => 'http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/{FNAME}.html',\n        48 => 'http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/atomic/{FNAME}.html',\n        49 => 'http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/locks/{FNAME}.html',\n        50 => 'http://docs.oracle.com/javase/7/docs/api/java/util/jar/{FNAME}.html',\n        51 => 'http://docs.oracle.com/javase/7/docs/api/java/util/logging/{FNAME}.html',\n        52 => 'http://docs.oracle.com/javase/7/docs/api/java/util/prefs/{FNAME}.html',\n        53 => 'http://docs.oracle.com/javase/7/docs/api/java/util/regex/{FNAME}.html',\n        54 => 'http://docs.oracle.com/javase/7/docs/api/java/util/zip/{FNAME}.html',\n        55 => 'http://docs.oracle.com/javase/7/docs/api/javax/accessibility/{FNAME}.html',\n        56 => 'http://docs.oracle.com/javase/7/docs/api/javax/activity/{FNAME}.html',\n        57 => 'http://docs.oracle.com/javase/7/docs/api/javax/crypto/{FNAME}.html',\n        58 => 'http://docs.oracle.com/javase/7/docs/api/javax/crypto/interfaces/{FNAME}.html',\n        59 => 'http://docs.oracle.com/javase/7/docs/api/javax/crypto/spec/{FNAME}.html',\n        60 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/{FNAME}.html',\n        61 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/event/{FNAME}.html',\n        62 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/metadata/{FNAME}.html',\n        63 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/plugins/bmp/{FNAME}.html',\n        64 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/plugins/jpeg/{FNAME}.html',\n        65 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/spi/{FNAME}.html',\n        66 => 'http://docs.oracle.com/javase/7/docs/api/javax/imageio/stream/{FNAME}.html',\n        67 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/{FNAME}.html',\n        68 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/loading/{FNAME}.html',\n        69 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/modelmbean/{FNAME}.html',\n        70 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/monitor/{FNAME}.html',\n        71 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/openmbean/{FNAME}.html',\n        72 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/relation/{FNAME}.html',\n        73 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/remote/{FNAME}.html',\n        74 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/remote/rmi/{FNAME}.html',\n        75 => 'http://docs.oracle.com/javase/7/docs/api/javax/management/timer/{FNAME}.html',\n        76 => 'http://docs.oracle.com/javase/7/docs/api/javax/naming/{FNAME}.html',\n        77 => 'http://docs.oracle.com/javase/7/docs/api/javax/naming/directory/{FNAME}.html',\n        78 => 'http://docs.oracle.com/javase/7/docs/api/javax/naming/event/{FNAME}.html',\n        79 => 'http://docs.oracle.com/javase/7/docs/api/javax/naming/ldap/{FNAME}.html',\n        80 => 'http://docs.oracle.com/javase/7/docs/api/javax/naming/spi/{FNAME}.html',\n        81 => 'http://docs.oracle.com/javase/7/docs/api/javax/net/{FNAME}.html',\n        82 => 'http://docs.oracle.com/javase/7/docs/api/javax/net/ssl/{FNAME}.html',\n        83 => 'http://docs.oracle.com/javase/7/docs/api/javax/print/{FNAME}.html',\n        84 => 'http://docs.oracle.com/javase/7/docs/api/javax/print/attribute/{FNAME}.html',\n        85 => 'http://docs.oracle.com/javase/7/docs/api/javax/print/attribute/standard/{FNAME}.html',\n        86 => 'http://docs.oracle.com/javase/7/docs/api/javax/print/event/{FNAME}.html',\n        87 => 'http://docs.oracle.com/javase/7/docs/api/javax/rmi/{FNAME}.html',\n        88 => 'http://docs.oracle.com/javase/7/docs/api/javax/rmi/CORBA/{FNAME}.html',\n        89 => 'http://docs.oracle.com/javase/7/docs/api/javax/rmi/ssl/{FNAME}.html',\n        90 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/{FNAME}.html',\n        91 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/callback/{FNAME}.html',\n        92 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/kerberos/{FNAME}.html',\n        93 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/login/{FNAME}.html',\n        94 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/spi/{FNAME}.html',\n        95 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/auth/x500/{FNAME}.html',\n        96 => 'http://docs.oracle.com/javase/7/docs/api/javax/security/sasl/{FNAME}.html',\n        97 => 'http://docs.oracle.com/javase/7/docs/api/javax/sound/midi/{FNAME}.html',\n        98 => 'http://docs.oracle.com/javase/7/docs/api/javax/sound/midi/spi/{FNAME}.html',\n        99 => 'http://docs.oracle.com/javase/7/docs/api/javax/sound/sampled/{FNAME}.html',\n        100 => 'http://docs.oracle.com/javase/7/docs/api/javax/sound/sampled/spi/{FNAME}.html',\n        101 => 'http://docs.oracle.com/javase/7/docs/api/javax/sql/{FNAME}.html',\n        102 => 'http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/{FNAME}.html',\n        103 => 'http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/serial/{FNAME}.html',\n        104 => 'http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/spi/{FNAME}.html',\n        105 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/{FNAME}.html',\n        106 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/border/{FNAME}.html',\n        107 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/colorchooser/{FNAME}.html',\n        108 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/event/{FNAME}.html',\n        109 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/filechooser/{FNAME}.html',\n        110 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/{FNAME}.html',\n        111 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/basic/{FNAME}.html',\n        112 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/metal/{FNAME}.html',\n        113 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/multi/{FNAME}.html',\n        114 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/synth/{FNAME}.html',\n        115 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/table/{FNAME}.html',\n        116 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/text/{FNAME}.html',\n        117 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/text/html/{FNAME}.html',\n        118 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/text/html/parser/{FNAME}.html',\n        119 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/text/rtf/{FNAME}.html',\n        120 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/tree/{FNAME}.html',\n        121 => 'http://docs.oracle.com/javase/7/docs/api/javax/swing/undo/{FNAME}.html',\n        122 => 'http://docs.oracle.com/javase/7/docs/api/javax/transaction/{FNAME}.html',\n        123 => 'http://docs.oracle.com/javase/7/docs/api/javax/transaction/xa/{FNAME}.html',\n        124 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/{FNAME}.html',\n        125 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/datatype/{FNAME}.html',\n        126 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/namespace/{FNAME}.html',\n        127 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/parsers/{FNAME}.html',\n        128 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/transform/{FNAME}.html',\n        129 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/transform/dom/{FNAME}.html',\n        130 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/transform/sax/{FNAME}.html',\n        131 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/transform/stream/{FNAME}.html',\n        132 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/validation/{FNAME}.html',\n        133 => 'http://docs.oracle.com/javase/7/docs/api/javax/xml/xpath/{FNAME}.html',\n        134 => 'http://docs.oracle.com/javase/7/docs/api/org/ietf/jgss/{FNAME}.html',\n        135 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CORBA/{FNAME}.html',\n        136 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CORBA/DynAnyPackage/{FNAME}.html',\n        137 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CORBA/TypeCodePackage/{FNAME}.html',\n        138 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CORBA/portable/{FNAME}.html',\n        139 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CosNaming/{FNAME}.html',\n        140 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CosNaming/NamingContextExtPackage/{FNAME}.html',\n        141 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/CosNaming/NamingContextPackage/{FNAME}.html',\n        142 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/Dynamic/{FNAME}.html',\n        143 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/DynamicAny/{FNAME}.html',\n        144 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/DynamicAny/DynAnyFactoryPackage/{FNAME}.html',\n        145 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/DynamicAny/DynAnyPackage/{FNAME}.html',\n        146 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/IOP/{FNAME}.html',\n        147 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/IOP/CodecFactoryPackage/{FNAME}.html',\n        148 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/IOP/CodecPackage/{FNAME}.html',\n        149 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/Messaging/{FNAME}.html',\n        150 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableInterceptor/{FNAME}.html',\n        151 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableInterceptor/ORBInitInfoPackage/{FNAME}.html',\n        152 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/{FNAME}.html',\n        153 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/CurrentPackage/{FNAME}.html',\n        154 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/POAManagerPackage/{FNAME}.html',\n        155 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/POAPackage/{FNAME}.html',\n        156 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/PortableServer/ServantLocatorPackage/{FNAME}.html',\n        157 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/SendingContext/{FNAME}.html',\n        158 => 'http://docs.oracle.com/javase/7/docs/api/org/omg/stub/java/rmi/{FNAME}.html',\n        159 => 'http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/{FNAME}.html',\n        160 => 'http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/bootstrap/{FNAME}.html',\n        161 => 'http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/events/{FNAME}.html',\n        162 => 'http://docs.oracle.com/javase/7/docs/api/org/w3c/dom/ls/{FNAME}.html',\n        163 => 'http://docs.oracle.com/javase/7/docs/api/org/xml/sax/{FNAME}.html',\n        164 => 'http://docs.oracle.com/javase/7/docs/api/org/xml/sax/ext/{FNAME}.html',\n        165 => 'http://docs.oracle.com/javase/7/docs/api/org/xml/sax/helpers/{FNAME}.html',\n        /* ambiguous class names (appear in more than one package) */\n        166 => 'http://www.google.com/search?sitesearch=docs.oracle.com&amp;q=allinurl%3Ajavase+docs+api+{FNAME}'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        /* Java does not use '::' */\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9\\$_\\|\\#>|^&\"\\'])',\n            'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\\|%\\\\-;\"\\'])'\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/javascript.php",
    "content": "<?php\n/*************************************************************************************\n * javascript.php\n * --------------\n * Author: Ben Keen (ben.keen@gmail.com)\n * Copyright: (c) 2004 Ben Keen (ben.keen@gmail.com), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/06/20\n *\n * JavaScript language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2012/06/27 (1.0.8.11)\n *  -  Reordered Keyword Groups to reflect syntactical meaning of keywords\n * 2008/05/23 (1.0.7.22)\n *  -  Added description of extra language features (SF#1970248)\n * 2004/11/27 (1.0.1)\n *  -  Added support for multiple object splitters\n * 2004/10/27 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Javascript',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Regular Expressions\n        2 => \"/(?<=[\\\\s^])(s|tr|y)\\\\/(?!\\*)(?!\\s)(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+(?<!\\s)\\\\/(?!\\s)(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])*(?<!\\s)\\\\/[msixpogcde]*(?=[\\\\s$\\\\.\\\\;])|(?<=[\\\\s^(=])(m|q[qrwx]?)?\\\\/(?!\\*)(?!\\s)(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+(?<!\\s)\\\\/[msixpogc]*(?=[\\\\s$\\\\.\\\\,\\\\;\\\\)])/iU\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            //reserved/keywords; also some non-reserved keywords\n            'break','case','catch','const','continue',\n            'default','delete','do',\n            'else',\n            'finally','for','function',\n            'get','goto',\n            'if','in','instanceof',\n            'new',\n            'prototype',\n            'return',\n            'set','static','switch',\n            'this','throw','try','typeof',\n            'var','void'\n            ),\n        2 => array(\n            //reserved/non-keywords; metaconstants\n            'false','null','true','undefined','NaN','Infinity'\n            ),\n        3 => array(\n            //magic properties/functions\n            '__proto__','__defineGetter__','__defineSetter__','hasOwnProperty','hasProperty'\n            ),\n        4 => array(\n            //type constructors\n            'Object', 'Function', 'Date', 'Math', 'String', 'Number', 'Boolean', 'Array'\n            ),\n        5 => array(\n            //reserved, but invalid in language\n            'abstract','boolean','byte','char','class','debugger','double','enum','export','extends',\n            'final','float','implements','import','int','interface','long','native',\n            'short','super','synchronized','throws','transient','volatile'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}',\n        '+', '-', '*', '/', '%',\n        '!', '@', '&', '|', '^',\n        '<', '>', '=',\n        ',', ';', '?', ':'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000066; font-weight: bold;',\n            2 => 'color: #003366; font-weight: bold;',\n            3 => 'color: #000066;',\n            5 => 'color: #FF0000;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #006600; font-style: italic;',\n            2 => 'color: #009966; font-style: italic;',\n            'MULTI' => 'color: #006600; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #3366CC;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #CC0000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #660066;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            3 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => ''\n    ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        0 => array(\n            '<script type=\"text/javascript\">' => '</script>'\n            ),\n        1 => array(\n            '<script language=\"javascript\">' => '</script>'\n            )\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        1 => true\n        )\n);\n"
  },
  {
    "path": "includes/geshi/jcl.php",
    "content": "<?php\n/*************************************************************************************\n * jcl.php\n * -----------\n * Author: Ramesh Vishveshwar (ramesh.vishveshwar@gmail.com)\n * Copyright: (c) 2012 Ramesh Vishveshwar (http://thecodeisclear.in)\n * Release Version: 1.0.9.1\n * Date Started: 2011/09/16\n *\n * JCL (MVS), DFSORT, IDCAMS language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2011/09/16 (1.0.0)\n *   -  Internal Release (for own blog/testing)\n * 2012/09/22 (1.0.1)\n *   - Released with support for DFSORT, ICETOOL, IDCAMS\n *   - Added support for Symbolic variables in JCL\n *   - Added support for TWS OPC variables\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'JCL',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        // Comments identified using REGEX\n        // Comments start with //* but should not be followed by % (TWS) or + (some JES3 stmts)\n        3 => \"\\/\\/\\*[^%](.*?)(\\n)\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'COMMAND', 'CNTL', 'DD', 'ENDCNTL', 'EXEC', 'IF', 'THEN', 'ELSE',\n            'ENDIF', 'JCLLIB', 'JOB', 'OUTPUT', 'PEND',\n            'PROC', 'SET', 'XMIT'\n            ),\n        2 => array (\n            'PGM','CLASS','NOTIFY','MSGCLASS','DSN','KEYLEN','LABEL','LIKE',\n            'RECFM','LRECL','DCB','DSORG','BLKSIZE','SPACE','STORCLAS',\n            'DUMMY','DYNAM','AVGREC','BURST','DISP','UNIT','VOLUME',\n            'MSGLEVEL','REGION'\n            ),\n        // Keywords set 3: DFSORT, ICETOOL\n        3 => array (\n            'ALTSEQ','DEBUG','END','INCLUDE','INREC','MERGE','MODS','OMIT',\n            'OPTION','OUTFIL','OUTREC','RECORD','SORT','SUM',\n            'COPY','COUNT','DEFAULTS','DISPLAY','MODE','OCCUR','RANGE',\n            'SELECT','STATS','UNIQUE','VERIFY'\n            ),\n        // Keywords set 4: IDCAMS\n        4 => array (\n            'ALTER','BLDINDEX','CNVTCAT','DEFINE','ALIAS','ALTERNATEINDEX',\n            'CLUSTER','GENERATIONDATAGROUP','GDG','NONVSAM','PAGESPACE','PATH',\n            /* 'SPACE',*/'USERCATALOG','DELETE','EXAMINE','EXPORT','DISCONNECT',\n            'EXPORTRA','IMPORT','CONNECT','IMPORTRA','LISTCAT','LISTCRA',\n            'PRINT','REPRO','RESETCAT'//,'VERIFY'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(',')','=',',','>','<'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #FF0000;',\n            2 => 'color: #21A502;',\n            3 => 'color: #FF00FF;',\n            4 => 'color: #876C00;'\n            ),\n        'COMMENTS' => array(\n            0 => 'color: #0000FF;',\n            //1 => 'color: #0000FF;',\n            //2 => 'color: #0000FF;',\n            3 => 'color: #0000FF;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #FF7400;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #66CC66;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #336633;'\n            ),\n        'METHODS' => array(\n            1 => '',\n            2 => ''\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #FF7400;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #6B1F6B;',\n            1 => 'color: #6B1F6B;',\n            2 => 'color: #6B1F6B;'\n            ),\n        'SCRIPT' => array(\n            0 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        // JCL book at IBM Bookshelf is http://publibz.boulder.ibm.com/cgi-bin/bookmgr_OS390/handheld/Connected/BOOKS/IEA2B680/CONTENTS?SHELF=&DT=20080604022956#3.1\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        // The following regular expressions solves three purposes\n        // - Identify Temp Variables in JCL (e.g. &&TEMP)\n        // - Symbolic variables in JCL (e.g. &SYSUID)\n        // - TWS OPC Variables (e.g. %OPC)\n        // Thanks to Simon for pointing me to this\n        0 => '&amp;&amp;[a-zA-Z]{1,8}[0-9]{0,}',\n        1 => '&amp;[a-zA-Z]{1,8}[0-9]{0,}',\n        2 => '&amp;|\\?|%[a-zA-Z]{1,8}[0-9]{0,}'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/jquery.php",
    "content": "<?php\n/*************************************************************************************\n * jquery.php\n * --------------\n * Author: Rob Loach (http://www.robloach.net)\n * Copyright: (c) 2009 Rob Loach (http://www.robloach.net)\n * Release Version: 1.0.9.1\n * Date Started: 2009/07/20\n *\n * jQuery 1.3 language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009/07/20 (1.0.8.5)\n *  -  First Release\n *\n * TODO (updated 2009/07/20)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'jQuery',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    //Regular Expressions\n    'COMMENT_REGEXP' => array(2 => \"/(?<=[\\\\s^])s\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+\\\\/[gimsu]*(?=[\\\\s$\\\\.\\\\;])|(?<=[\\\\s^(=])m?\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+\\\\/[gimsu]*(?=[\\\\s$\\\\.\\\\,\\\\;\\\\)])/iU\"),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'as', 'break', 'case', 'catch', 'continue', 'decodeURI', 'delete', 'do',\n            'else', 'encodeURI', 'eval', 'finally', 'for', 'if', 'in', 'is', 'item',\n            'instanceof', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 'void',\n            'while', 'write', 'with'\n            ),\n        2 => array(\n            'class', 'const', 'default', 'debugger', 'export', 'extends', 'false',\n            'function', 'import', 'namespace', 'new', 'null', 'package', 'private',\n            'protected', 'public', 'super', 'true', 'use', 'var'\n            ),\n        3 => array(\n            // common functions for Window object\n            'alert', 'back', 'close', 'confirm', 'forward', 'home',\n            'name', 'navigate', 'onblur', 'onerror', 'onfocus', 'onload', 'onmove',\n            'onresize', 'onunload', 'open', 'print', 'prompt', 'status',\n            //'blur', 'focus', 'scroll', // Duplicate with kw9\n            //'stop', //Duplicate with kw10\n            ),\n        4 => array(\n            // jQuery Core Functions\n            'jQuery', 'each', 'size', 'length', 'selector', 'context', 'eq',\n            'index', 'data', 'removeData', 'queue', 'dequeue', 'noConflict'\n            //'get', //Duplicate with kw11\n            ),\n        5 => array(\n            // jQuery Attribute Functions\n            'attr', 'removeAttr', 'addClass', 'hasClass', 'removeClass', 'toggleClass',\n            'html', 'text', 'val',\n            ),\n        6 => array(\n            // jQuery Traversing Functions\n            'filter', 'not', 'slice', 'add', 'children', 'closest',\n            'contents', 'find', 'next', 'nextAll', 'parent', 'parents',\n            'prev', 'prevAll', 'siblings', 'andSelf', 'end',\n            //'is',  //Dup with kw1\n            //'offsetParent', //Duplicate with kw8\n            //'map', //Duplicate with kw12\n            ),\n        7 => array(\n            // jQuery Manipulation Functions\n            'append', 'appendTo', 'prepend', 'prependTo', 'after', 'before', 'insertAfter',\n            'insertBefore', 'wrap', 'wrapAll', 'wrapInner', 'replaceWith', 'replaceAll',\n            'empty', 'remove', 'clone',\n            ),\n        8 => array(\n            // jQuery CSS Functions\n            'css', 'offset', 'offsetParent', 'position', 'scrollTop', 'scrollLeft',\n            'height', 'width', 'innerHeight', 'innerWidth', 'outerHeight', 'outerWidth',\n            ),\n        9 => array(\n            // jQuery Events Functions\n            'ready', 'bind', 'one', 'trigger', 'triggerHandler', 'unbind', 'live',\n            'die', 'hover', 'blur', 'change', 'click', 'dblclick', 'error',\n            'focus', 'keydown', 'keypress', 'keyup', 'mousedown', 'mouseenter',\n            'mouseleave', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'resize',\n            'scroll', 'select', 'submit', 'unload',\n            //'toggle', //Duplicate with kw10\n            //'load', //Duplicate with kw11\n            ),\n        10 => array(\n            // jQuery Effects Functions\n            'show', 'hide', 'toggle', 'slideDown', 'slideUp', 'slideToggle', 'fadeIn',\n            'fadeOut', 'fadeTo', 'animate', 'stop',\n            ),\n        11 => array(\n            // jQuery Ajax Functions\n            'ajax', 'load', 'get', 'getJSON', 'getScript', 'post', 'ajaxComplete',\n            'ajaxError', 'ajaxSend', 'ajaxStart', 'ajaxStop', 'ajaxSuccess', 'ajaxSetup',\n            'serialize', 'serializeArray',\n            ),\n        12 => array(\n            // jQuery Utility Functions\n            'support', 'browser', 'version', 'boxModal', 'extend', 'grep', 'makeArray',\n            'map', 'inArray', 'merge', 'unique', 'isArray', 'isFunction', 'trim',\n            'param',\n            ),\n        ),\n    'SYMBOLS' => array(\n        0 => array(\n            '(', ')', '[', ']', '{', '}',\n            '+', '-', '*', '/', '%',\n            '!', '@', '&', '|', '^',\n            '<', '>', '=',\n            ',', ';', '?', ':'\n            ),\n        1 => array(\n            '$'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false,\n        8 => false,\n        9 => false,\n        10 => false,\n        11 => false,\n        12 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000066; font-weight: bold;',\n            2 => 'color: #003366; font-weight: bold;',\n            3 => 'color: #000066;',\n            4 => 'color: #000066;',\n            5 => 'color: #000066;',\n            6 => 'color: #000066;',\n            7 => 'color: #000066;',\n            8 => 'color: #000066;',\n            9 => 'color: #000066;',\n            10 => 'color: #000066;',\n            11 => 'color: #000066;',\n            12 => 'color: #000066;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #006600; font-style: italic;',\n            2 => 'color: #009966; font-style: italic;',\n            'MULTI' => 'color: #006600; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #3366CC;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #CC0000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #660066;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;',\n            1 => 'color: #000066;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            3 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => 'http://docs.jquery.com/Core/{FNAME}',\n        5 => 'http://docs.jquery.com/Attributes/{FNAME}',\n        6 => 'http://docs.jquery.com/Traversing/{FNAME}',\n        7 => 'http://docs.jquery.com/Manipulation/{FNAME}',\n        8 => 'http://docs.jquery.com/CSS/{FNAME}',\n        9 => 'http://docs.jquery.com/Events/{FNAME}',\n        10 => 'http://docs.jquery.com/Effects/{FNAME}',\n        11 => 'http://docs.jquery.com/Ajax/{FNAME}',\n        12 => 'http://docs.jquery.com/Utilities/{FNAME}'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        0 => array(\n            '<script type=\"text/javascript\">' => '</script>'\n            ),\n        1 => array(\n            '<script language=\"javascript\">' => '</script>'\n            )\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        1 => true\n        )\n);\n"
  },
  {
    "path": "includes/geshi/julia.php",
    "content": "<?php\n/*************************************************************************************\n * julia.php\n * -----------\n * Author: John Lynch (john.lynch@iname.com)\n * Contributors:\n *   - Magnus Lie Hetland\n *   - Curtis Vogt\n * Copyright: (c) 2013 John Lynch\n * Release Version: 1.0.9.1\n * Date Started: 2013/11/06\n *\n * Julia language file for GeSHi.\n *\n * CHANGES\n * -------\n *\n * 2015/11/04\n *   -  First Release submitted\n *\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Julia',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    //Longest quotemarks ALWAYS first\n    'QUOTEMARKS' => array('\"\"\"', '\"', \"'\"),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n\n        /*\n        ** reserved words\n        */\n        1 => array(\n            'function', 'global', 'for', 'end', 'while', 'if', 'else', 'elseif', 'break',\n            'switch', 'case', 'otherwise', 'try', 'catch', 'const', 'immutable',\n            'import', 'importall', 'export', 'type', 'typealias', 'return', 'true',\n            'false', 'macro', 'quote', 'in', 'abstract', 'module', 'using', 'continue',\n            'ifelse', 'do', 'eval', 'let', 'finally', 'throw'\n        ),\n\n        /*\n        ** builtins\n        */\n        2 => array(\n            'Array', 'String', 'Bool', 'Number', 'Int', 'Integer', 'Real', 'Complex',\n            'FloatingPoint', 'Float64', 'Float32', 'Int8', 'Int16', 'Int32', 'Int64',\n            'Rational', 'AbstractArray', 'Unsigned', 'Signed', 'Uint', 'Uint8', 'Uint16',\n            'Uint32', 'Uint64', 'Vector', 'AbstractVector', 'Matrix', 'AbstractMatrix',\n            'Type', 'IO', 'Any', 'ASCIIString', 'Union', 'Dict', 'Function', 'SubArray',\n            'Range', 'Range1', 'Symbol', 'Expr',\n\n            'cell', 'collect', 'filter', 'merge', 'divrem', 'hex', 'dec', 'oct', 'base',\n            'int', 'round', 'cmp', 'float', 'linspace', 'fill', 'start', 'done', 'tuple',\n            'minimum', 'maximum', 'count', 'index', 'append', 'push', 'pop', 'shift',\n            'unshift', 'insert', 'splice', 'reverse', 'sort', 'zip', 'length', 'delete',\n            'copy', 'haskey', 'keys', 'values', 'get', 'getkey', 'Set', 'isa', 'issubset',\n            'intersect', 'setdiff', 'symdiff', 'complement', 'print', 'printf', 'println',\n            'sprintf', 'utf8', 'char', 'search', 'rsearch',\n            'replace', 'lowercase', 'uppercase', 'ucfirst', 'lcfirst', 'union',\n            'split', 'rsplit', 'chop', 'chomp', 'lpad', 'rpad', 'lstrip', 'rstrip',\n            'strip', 'isalnum', 'isalpha', 'isascii', 'isblank', 'iscntrl', 'isdigit',\n            'isgraph', 'islower', 'isprint', 'ispunct', 'isspace', 'isupper', 'isxdigit',\n            'match', 'captures', 'offset', 'offsets', 'matchall', 'eachmatch', 'hcat',\n            'vcat', 'hvcat', 'reshape', 'deepcopy', 'similar', 'reinterpret', 'map',\n            'reduce', 'mapreduce', 'DataArray', 'DataFrame', 'removeNA', 'replaceNA',\n            'colnames', 'head', 'tail', 'describe', 'join', 'groupby', 'by', 'stack',\n            'readtable', 'readcsv', 'readdlm', 'writetable', 'writecsv', 'writedlm',\n            'require', 'reload', 'include', 'evalfile', 'cd', 'open', 'write', 'close',\n            'position', 'seek', 'seekstart', 'skip', 'isopen', 'eof',\n            'isreadonly', 'ltoh', 'htol', 'serialize', 'deserialize', 'download',\n            'isequal', 'getindex', 'setindex', 'eachline', 'beginswith', 'endswith',\n            'parsefloat', 'parseint', 'seekend', 'findnz', 'DivideError', 'addprocs',\n            'scale', 'issubnormal', 'readdir', 'mapslices'\n        ),\n\n        /*\n        ** system interaction\n        */\n        3 => array(\n            'run', 'spawn', 'success', 'process_running', 'process_exited', 'kill',\n            'readsfrom', 'writesto', 'readsandwrite', 'detach', 'setenv', 'ENV', 'getpid',\n            'clipboard', 'strftime', 'time', 'gethostname', 'getipaddr', 'pwd',\n            'mkdir', 'mkpath', 'rmdir', 'ignorestatus'\n        ),\n\n        /*\n        ** prompt\n        */\n        4 => array(\n            'julia>'\n        )\n    ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '*', '&', '|', '%', '!', ';', '<', '>', '?', '`'\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #4266d5;font-weight:bold;',    // Reserved\n            2 => 'color: #0000A8;font-weight:bold;',    // Built-ins\n            3 => 'color: #0000A8;font-weight:bold;',    // System Interaction\n            4 => 'color: #3b972e;font-weight:bold;'     // Prompt\n        ),\n        'COMMENTS' => array(\n            1 => 'color: #888888;',\n            'MULTI' => 'color: #888888;'\n        ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n        ),\n        'BRACKETS' => array(\n            0 => 'color: #3b972e;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #c93d39;'\n        ),\n        'NUMBERS' => array(\n            0 => 'color: black;'\n        ),\n        'METHODS' => array(\n            1 => 'color: black;'\n        ),\n        'SYMBOLS' => array(\n            0 => 'color: #6bab5b;'\n        ),\n        'REGEXPS' => array(),\n        'SCRIPT' => array()\n    ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n    ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n    ),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/kixtart.php",
    "content": "<?php\n/*************************************************************************************\n * kixtart.php\n * --------\n * Author: Riley McArdle (riley@glyff.net)\n * Copyright: (c) 2007 Riley McArdle (http://www.glyff.net/)\n * Release Version: 1.0.9.1\n * Date Started: 2007/08/31\n *\n * PHP language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2007/08/31 (1.0.7.22)\n *  -  First Release\n *\n * TODO (updated 2007/08/31)\n * -------------------------\n * *\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'KiXtart',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'While', 'Loop',\n            'Use',\n            'Small',\n            'Sleep',\n            'Shell',\n            'SetTime',\n            'SetM',\n            'SetL',\n            'Set',\n            'Select', 'Case',\n            'Run',\n            'Return',\n            'Redim',\n            'RD',\n            'Quit',\n            'Play',\n            'Move',\n            'MD',\n            'Include',\n            'If', 'Else', 'Endif',\n            'GoTo',\n            'GoSub',\n            'Go',\n            'Global',\n            'GetS',\n            'Get',\n            'Function', 'Endfunction',\n            'For', 'Next',\n            'Each',\n            'FlushKb',\n            'Exit',\n            'Do', 'Until',\n            'Display',\n            'Dim',\n            'Del',\n            'Debug',\n            'Copy',\n            'Cookie1',\n            'Color',\n            'CLS',\n            'CD',\n            'Call',\n            'Break',\n            'Big',\n            'Beep',\n            ),\n        2 => array(\n            '@Address',\n            '@Build',\n            '@Color',\n            '@Comment',\n            '@CPU',\n            '@CRLF',\n            '@CSD',\n            '@CurDir',\n            '@Date',\n            '@Day',\n            '@Domain',\n            '@DOS',\n            '@Error',\n            '@FullName',\n            '@HomeDir',\n            '@HomeDrive',\n            '@HomeShr',\n            '@HostName',\n            '@InWin',\n            '@IPaddressX',\n            '@KiX',\n            '@LanRoot',\n            '@LDomain',\n            '@LDrive',\n            '@LM',\n            '@LogonMode',\n            '@LongHomeDir',\n            '@LServer',\n            '@MaxPWAge',\n            '@MDayNo',\n            '@MHz',\n            '@MonthNo',\n            '@Month',\n            '@MSecs',\n            '@OnWoW64',\n            '@PID',\n            '@PrimaryGroup',\n            '@Priv',\n            '@ProductSuite',\n            '@ProductType',\n            '@PWAge',\n            '@RAS',\n            '@Result',\n            '@RServer',\n            '@ScriptDir',\n            '@ScriptExe',\n            '@ScriptName',\n            '@SError',\n            '@SID',\n            '@Site',\n            '@StartDir',\n            '@SysLang',\n            '@Ticks',\n            '@Time',\n            '@TsSession',\n            '@UserID',\n            '@UserLang',\n            '@WDayNo',\n            '@Wksta',\n            '@WUserID',\n            '@YDayNo',\n            '@Year',\n            ),\n        3 => array(\n            'WriteValue',\n            'WriteProfileString',\n            'WriteLine',\n            'VarTypeName',\n            'VarType',\n            'Val',\n            'UnloadHive',\n            'UCase',\n            'Ubound',\n            'Trim',\n            'Substr',\n            'SRnd',\n            'Split',\n            'SidToName',\n            'ShutDown',\n            'ShowProgramGroup',\n            'SetWallpaper',\n            'SetTitle',\n            'SetSystemState',\n            'SetOption',\n            'SetFocus',\n            'SetFileAttr',\n            'SetDefaultPrinter',\n            'SetConsole',\n            'SetAscii',\n            'SendMessage',\n            'SendKeys',\n            'SaveKey',\n            'RTrim',\n            'Round',\n            'Rnd',\n            'Right',\n            'RedirectOutput',\n            'ReadValue',\n            'ReadType',\n            'ReadProfileString',\n            'ReadLine',\n            'Open',\n            'MessageBox',\n            'MemorySize',\n            'LTrim',\n            'Logoff',\n            'LogEvent',\n            'LoadKey',\n            'LoadHive',\n            'Len',\n            'Left',\n            'LCase',\n            'KeyExist',\n            'KbHit',\n            'Join',\n            'IsDeclared',\n            'Int',\n            'InStrRev',\n            'InStr',\n            'InGroup',\n            'IIF',\n            'GetObject',\n            'GetFileVersion',\n            'GetFileTime',\n            'GetFileSize',\n            'GetFileAttr',\n            'GetDiskSpace',\n            'FreeFileHandle',\n            'FormatNumber',\n            'Fix',\n            'ExpandEnvironmentVars',\n            'Exist',\n            'Execute',\n            'EnumValue',\n            'EnumLocalGroup',\n            'EnumKey',\n            'EnumIpInfo',\n            'EnumGroup',\n            'Dir',\n            'DelValue',\n            'DelTree',\n            'DelProgramItem',\n            'DelProgramGroup',\n            'DelPrinterConnection',\n            'DelKey',\n            'DecToHex',\n            'CStr',\n            'CreateObject',\n            'CompareFileTimes',\n            'Close',\n            'ClearEventLog',\n            'CInt',\n            'Chr',\n            'CDbl',\n            'Box',\n            'BackupEventLog',\n            'At',\n            'AScan',\n            'Asc',\n            'AddProgramItem',\n            'AddProgramGroup',\n            'AddPrinterConnection',\n            'AddKey',\n            'Abs'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '?', ':', '+', '-', '*', '/', '&', '|', '^', '~', '<', '>', '='\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;',\n            2 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => 'http://www.kixtart.org/manual/Commands/{FNAMEL}.htm',\n        2 => '',\n        3 => 'http://www.kixtart.org/manual/Functions/{FNAMEL}.htm'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        1 => true,\n        2 => true,\n        3 => true\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/klonec.php",
    "content": "<?php\n/*************************************************************************************\n * klonec.php\n * --------\n * Author: AUGER Mickael\n * Copyright: Synchronic\n * Release Version: 1.0.9.1\n * Date Started: 2008/04/16\n *\n * KLone with C language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/04/16 (1.0.8)\n *  -  First Release\n *\n * TODO (updated 2008/04/16)\n * -------------------------\n * A tester et a completer si besoin\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'KLone C',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),//#pour precede les include de C\n    'COMMENT_MULTI' => array('/*' => '*/', '<!--' => '-->' ),//comentaires C et KLone suivi de ceux pour HTML\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(//mots-cles C\n            'if', 'return', 'while', 'case', 'class', 'continue', 'default',\n            'do', 'else', 'for', 'switch', 'goto',\n            'null', 'break', 'true', 'enum', 'extern', 'inline', 'false'\n            ),\n        2 => array(//mots-cles KLone\n            'out', 'request', 'response',\n            ),\n        3 => array(//fonctions C usuelles\n            'printf', 'malloc', 'fopen', 'fclose', 'free', 'fputs', 'fgets', 'feof', 'fwrite',\n            'perror', 'ferror', 'qsort', 'stats', 'sscanf', 'scanf',\n            'strdup', 'strcpy', 'strcmp', 'strncpy', 'strcasecmp', 'cat', 'strcat', 'strstr',\n            'strlen', 'strtof', 'strtod', 'strtok', 'towlower', 'towupper',\n            'cd', 'system', 'exit', 'exec', 'fork', 'vfork', 'kill', 'signal', 'syslog',\n            'usleep', 'utime', 'wait', 'waitpid', 'waitid',\n            'ceil', 'eval', 'round', 'floor',\n            'atoi', 'atol', 'abs', 'cos', 'sin', 'tan', 'acos', 'asin', 'atan', 'exp',\n            'time', 'ctime', 'localtime', 'asctime', 'gmtime', 'difftime', 'date'\n            ),\n        4 => array(//fonctions KLone usuelles\n            'request_get_cookies', 'request_get_cookie', 'request_get_args', 'request_get_arg',\n            'request_io', 'request_get_uri', 'request_get_filename', 'request_get_query_string', 'request_get_path_info',\n            'request_get_if_modified_since', 'request_get_http', 'request_get_client_request',\n            'request_get_content_length', 'request_get_uploads', 'request_get_uploaded_file',\n            'request_get_method', 'request_get_protocol', 'request_get_resolved_filename',\n            'request_get_resolved_path_info', 'request_get_addr', 'request_get_peer_addr',\n            'request_get_header', 'request_get_field', 'request_get_field_value',\n            'response_set_content_encoding', 'response_disable_caching', 'response_enable_caching',\n            'response_set_cookie', 'response_set_method', 'response_get_method',\n            'response_print_header', 'response_set_field', 'response_del_field',\n            'response_set_content_type', 'response_set_date', 'response_set_last_modified',\n            'response_set_content_length', 'response_get_status', 'response_get_header',\n            'response_io', 'response_redirect', 'response_set_status',\n            'session_get_vars', 'session_get', 'session_set', 'session_age', 'session_clean', 'session_del',\n            'io_type', 'io_pipe', 'io_dup', 'io_copy', 'io_seek', 'io_tell', 'io_close',\n            'io_free', 'io_read', 'io_printf', 'io_flush', 'io_write', 'io_putc', 'io_getc',\n            'io_get_until', 'io_gets', 'io_codec_add_head', 'io_codec_add_tail',\n            'io_codecs_remove', 'io_name_set', 'io_name_get'\n            ),\n        5 => array(//types C\n            'auto', 'char', 'const', 'double',  'float', 'int', 'long',\n            'register', 'short', 'signed', 'sizeof', 'static', 'string', 'struct',\n            'typedef', 'union', 'unsigned', 'void', 'volatile',\n            'wchar_t', 'time_t', 'FILE'\n            ),\n        6 => array(//mots-cles HTML\n            'a', 'abbr', 'acronym', 'address', 'applet',\n\n            'base', 'basefont', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'b',\n\n            'caption', 'center', 'cite', 'code', 'colgroup', 'col',\n\n            'dd', 'del', 'dfn', 'dir', 'div', 'dl', 'dt',\n\n            'em',\n\n            'fieldset', 'font', 'form', 'frame', 'frameset',\n\n            'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'html',\n\n            'iframe', 'ilayer', 'img', 'input', 'ins', 'isindex', 'i',\n\n            'kbd',\n\n            'label', 'legend', 'link', 'li',\n\n            'map', 'meta',\n\n            'noframes', 'noscript',\n\n            'object', 'ol', 'optgroup', 'option',\n\n            'param', 'pre', 'p',\n\n            'q',\n\n            'samp', 'script', 'select', 'small', 'span', 'strike', 'strong', 'style', 'sub', 'sup', 's',\n\n            'table', 'tbody', 'td', 'textarea', 'text', 'tfoot', 'thead', 'th', 'title', 'tr', 'tt',\n\n            'ul', 'u',\n\n            'var',\n            ),\n        7 => array(//autres mots-cles HTML\n            'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis',\n            'background', 'bgcolor', 'border',\n            'cellpadding', 'cellspacing', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords',\n            'data', 'datetime', 'declare', 'defer', 'dir', 'disabled',\n            'enctype',\n            'face', 'for', 'frame', 'frameborder',\n            'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv',\n            'id', 'ismap',\n            'label', 'lang', 'language', 'link', 'longdesc',\n            'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple',\n            'name', 'nohref', 'noresize', 'noshade', 'nowrap',\n            'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onreset', 'onselect', 'onsubmit', 'onunload',\n            'profile', 'prompt',\n            'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',\n            'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary',\n            'tabindex', 'target', 'text', 'title', 'type',\n            'usemap',\n            'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',\n            'width'\n            )\n        ),\n    'SYMBOLS' => array(\n        1 => array(\n            '<%=', '<%!', '<%', '%>'\n            ),\n        0 => array(\n            '(', ')', '[', ']', '{', '}',\n            '!', '%', '&', '|', '/',\n            '<', '>',\n            '=', '-', '+', '*',\n            '.', ':', ',', ';', '^'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100; font-weight: bold;',//pour les mots-cles C\n            2 => 'color: #000000; font-weight: bold;',//pour les mots-cles KLone\n            3 => 'color: #6600FF;',//pour les fonctions C\n            4 => 'color: #6600FF;',//pour les fonctions Klone\n            5 => 'color: #0099FF; font-weight: bold;',//pour les types C\n            6 => 'color: #990099; font-weight: bold;',//pour les mots-cles HTML\n            7 => 'color: #000066;'//pour les autres mots-cles HTML\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',//commentaire sur une ligne C et KLone\n            2 => 'color: #339933;',//pour les #... en C\n            'MULTI' => 'color: #808080; font-style: italic;'//commentaire sur plusieurs lignes C et KLone\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;',\n            2 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000;',\n            1 => 'color: #000000; font-weight: bold;'\n            ),\n        'REGEXPS' => array(),\n        'SCRIPT' => array(\n            0 => 'background-color:#ffccff; font-weight: bold; color:#000000;',\n            1 => '',\n            2 => '',\n            3 => 'color: #00bbdd; font-weight: bold;',\n            4 => 'color: #ddbb00;',\n            5 => 'color: #009900;'\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAMEL}.html',\n        4 => 'http://www.koanlogic.com/klone/api/html/globals.html',\n        5 => '',\n        6 => 'http://december.com/html/4/element/{FNAMEL}.html',\n        7 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,\n    'SCRIPT_DELIMITERS' => array(\n        //delimiteurs pour KLone\n        0 => array(\n            '<%=' => '%>'\n            ),\n        1 => array(\n            '<%!' => '%>'\n            ),\n        2 => array(\n            '<%' => '%>'\n            ),\n        //delimiteur pour HTML\n        3 => array(\n            '<!DOCTYPE' => '>'\n            ),\n        4 => array(\n            '&' => ';'\n            ),\n        5 => array(\n            '<' => '>'\n            )\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => false,\n        1 => true,\n        2 => true,\n        3 => false,\n        4 => false,\n        5 => true\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            6 => array(\n                'DISALLOWED_BEFORE' => '(?<=&lt;|&lt;\\/)',\n                'DISALLOWED_AFTER' => '(?=\\s|\\/|&gt;)',\n            ),\n            7 => array(\n                'DISALLOWED_AFTER' => '(?=\\s*=)',\n            )\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/klonecpp.php",
    "content": "<?php\n/*************************************************************************************\n * klonecpp.php\n * --------\n * Author: AUGER Mickael\n * Copyright: Synchronic\n * Release Version: 1.0.9.1\n * Date Started: 2008/04/16\n *\n * KLone with C++ language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/04/16 (1.0.8)\n *  -  First Release\n *\n * TODO (updated 2008/04/16)\n * -------------------------\n * A tester et a completer si besoin\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'KLone C++',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),//#pour precede les include de C\n    'COMMENT_MULTI' => array('/*' => '*/', '<!--' => '-->' ),//comentaires C et KLone suivi de ceux pour HTML\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(//mots-cles C++\n            'if', 'return', 'while', 'case', 'continue', 'default',\n            'do', 'else', 'for', 'switch', 'goto',\n            'break', 'true', 'enum', 'extern', 'inline', 'false',\n            'errno', 'stdin', 'stdout', 'stderr',\n            'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace',\n            'try', 'catch', 'dynamic_cast', 'const_cast', 'reinterpret_cast',\n            'static_cast', 'explicit', 'friend', 'typename', 'typeid', 'class',\n            'EDOM', 'ERANGE', 'FLT_RADIX', 'FLT_ROUNDS', 'FLT_DIG', 'DBL_DIG', 'LDBL_DIG',\n            'FLT_EPSILON', 'DBL_EPSILON', 'LDBL_EPSILON', 'FLT_MANT_DIG', 'DBL_MANT_DIG',\n            'LDBL_MANT_DIG', 'FLT_MAX', 'DBL_MAX', 'LDBL_MAX', 'FLT_MAX_EXP', 'DBL_MAX_EXP',\n            'LDBL_MAX_EXP', 'FLT_MIN', 'DBL_MIN', 'LDBL_MIN', 'FLT_MIN_EXP', 'DBL_MIN_EXP',\n            'LDBL_MIN_EXP', 'CHAR_BIT', 'CHAR_MAX', 'CHAR_MIN', 'SCHAR_MAX', 'SCHAR_MIN',\n            'UCHAR_MAX', 'SHRT_MAX', 'SHRT_MIN', 'USHRT_MAX', 'INT_MAX', 'INT_MIN',\n            'UINT_MAX', 'LONG_MAX', 'LONG_MIN', 'ULONG_MAX', 'HUGE_VAL', 'SIGABRT',\n            'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_ERR',\n            'SIG_IGN', 'BUFSIZ', 'EOF', 'FILENAME_MAX', 'FOPEN_MAX', 'L_tmpnam', 'NULL',\n            'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX',\n            'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC'\n            ),\n        2 => array(//mots-cles KLone\n            'out', 'request', 'response',\n            ),\n        3 => array(//fonctions C++ usuelles\n            'cin', 'cerr', 'clog', 'cout', 'delete', 'new', 'this',\n            'printf', 'fprintf', 'snprintf', 'sprintf', 'assert',\n            'isalnum', 'isalpha', 'isdigit', 'iscntrl', 'isgraph', 'islower', 'isprint',\n            'ispunct', 'isspace', 'isupper', 'isxdigit', 'tolower', 'toupper',\n            'exp', 'log', 'log10', 'pow', 'sqrt', 'ceil', 'floor', 'fabs', 'ldexp',\n            'frexp', 'modf', 'fmod', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'atan2',\n            'sinh', 'cosh', 'tanh', 'setjmp', 'longjmp',\n            'va_start', 'va_arg', 'va_end', 'offsetof', 'sizeof', 'fopen', 'freopen',\n            'fflush', 'fclose', 'remove', 'rename', 'tmpfile', 'tmpname', 'setvbuf',\n            'setbuf', 'vfprintf', 'vprintf', 'vsprintf', 'fscanf', 'scanf', 'sscanf',\n            'fgetc', 'fgets', 'fputc', 'fputs', 'getc', 'getchar', 'gets', 'putc',\n            'putchar', 'puts', 'ungetc', 'fread', 'fwrite', 'fseek', 'ftell', 'rewind',\n            'fgetpos', 'fsetpos', 'clearerr', 'feof', 'ferror', 'perror', 'abs', 'labs',\n            'div', 'ldiv', 'atof', 'atoi', 'atol', 'strtod', 'strtol', 'strtoul', 'calloc',\n            'malloc', 'realloc', 'free', 'abort', 'exit', 'atexit', 'system', 'getenv',\n            'bsearch', 'qsort', 'rand', 'srand', 'strcpy', 'strncpy', 'strcat', 'strncat',\n            'strcmp', 'strncmp', 'strcoll', 'strchr', 'strrchr', 'strspn', 'strcspn',\n            'strpbrk', 'strstr', 'strlen', 'strerror', 'strtok', 'strxfrm', 'memcpy',\n            'memmove', 'memcmp', 'memchr', 'memset', 'clock', 'time', 'difftime', 'mktime',\n            'asctime', 'ctime', 'gmtime', 'localtime', 'strftime'\n            ),\n        4 => array(//fonctions KLone usuelles\n            'request_get_cookies', 'request_get_cookie', 'request_get_args', 'request_get_arg',\n            'request_io', 'request_get_uri', 'request_get_filename', 'request_get_query_string', 'request_get_path_info',\n            'request_get_if_modified_since', 'request_get_http', 'request_get_client_request',\n            'request_get_content_length', 'request_get_uploads', 'request_get_uploaded_file',\n            'request_get_method', 'request_get_protocol', 'request_get_resolved_filename',\n            'request_get_resolved_path_info', 'request_get_addr', 'request_get_peer_addr',\n            'request_get_header', 'request_get_field', 'request_get_field_value',\n            'response_set_content_encoding', 'response_disable_caching', 'response_enable_caching',\n            'response_set_cookie', 'response_set_method', 'response_get_method',\n            'response_print_header', 'response_set_field', 'response_del_field',\n            'response_set_content_type', 'response_set_date', 'response_set_last_modified',\n            'response_set_content_length', 'response_get_status', 'response_get_header',\n            'response_io', 'response_redirect', 'response_set_status',\n            'session_get_vars', 'session_get', 'session_set', 'session_age', 'session_clean', 'session_del',\n            'io_type', 'io_pipe', 'io_dup', 'io_copy', 'io_seek', 'io_tell', 'io_close',\n            'io_free', 'io_read', 'io_printf', 'io_flush', 'io_write', 'io_putc', 'io_getc',\n            'io_get_until', 'io_gets', 'io_codec_add_head', 'io_codec_add_tail',\n            'io_codecs_remove', 'io_name_set', 'io_name_get'\n            ),\n        5 => array(//types C++\n            'auto', 'bool', 'char', 'const', 'double', 'float', 'int', 'long', 'longint',\n            'register', 'short', 'shortint', 'signed', 'static', 'struct',\n            'typedef', 'union', 'unsigned', 'void', 'volatile', 'jmp_buf',\n            'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t',\n            'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm',\n            'string', 'wchar_t'\n            ),\n        6 => array(//mots-cles HTML\n            'a', 'abbr', 'acronym', 'address', 'applet',\n\n            'base', 'basefont', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'b',\n\n            'caption', 'center', 'cite', 'code', 'colgroup', 'col',\n\n            'dd', 'del', 'dfn', 'dir', 'div', 'dl', 'dt',\n\n            'em',\n\n            'fieldset', 'font', 'form', 'frame', 'frameset',\n\n            'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'hr', 'html',\n\n            'iframe', 'ilayer', 'img', 'input', 'ins', 'isindex', 'i',\n\n            'kbd',\n\n            'label', 'legend', 'link', 'li',\n\n            'map', 'meta',\n\n            'noframes', 'noscript',\n\n            'object', 'ol', 'optgroup', 'option',\n\n            'param', 'pre', 'p',\n\n            'q',\n\n            'samp', 'script', 'select', 'small', 'span', 'strike', 'strong', 'style', 'sub', 'sup', 's',\n\n            'table', 'tbody', 'td', 'textarea', 'text', 'tfoot', 'thead', 'th', 'title', 'tr', 'tt',\n\n            'ul', 'u',\n\n            'var',\n            ),\n        7 => array(//autres mots-cles HTML\n            'abbr', 'accept-charset', 'accept', 'accesskey', 'action', 'align', 'alink', 'alt', 'archive', 'axis',\n            'background', 'bgcolor', 'border',\n            'cellpadding', 'cellspacing', 'char', 'charoff', 'charset', 'checked', 'cite', 'class', 'classid', 'clear', 'code', 'codebase', 'codetype', 'color', 'cols', 'colspan', 'compact', 'content', 'coords',\n            'data', 'datetime', 'declare', 'defer', 'dir', 'disabled',\n            'enctype',\n            'face', 'for', 'frame', 'frameborder',\n            'headers', 'height', 'href', 'hreflang', 'hspace', 'http-equiv',\n            'id', 'ismap',\n            'label', 'lang', 'language', 'link', 'longdesc',\n            'marginheight', 'marginwidth', 'maxlength', 'media', 'method', 'multiple',\n            'name', 'nohref', 'noresize', 'noshade', 'nowrap',\n            'object', 'onblur', 'onchange', 'onclick', 'ondblclick', 'onfocus', 'onkeydown', 'onkeypress', 'onkeyup', 'onload', 'onmousedown', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onreset', 'onselect', 'onsubmit', 'onunload',\n            'profile', 'prompt',\n            'readonly', 'rel', 'rev', 'rowspan', 'rows', 'rules',\n            'scheme', 'scope', 'scrolling', 'selected', 'shape', 'size', 'span', 'src', 'standby', 'start', 'style', 'summary',\n            'tabindex', 'target', 'text', 'title', 'type',\n            'usemap',\n            'valign', 'value', 'valuetype', 'version', 'vlink', 'vspace',\n            'width'\n            )\n        ),\n    'SYMBOLS' => array(\n        1 => array(\n            '<%=', '<%!', '<%', '%>'\n            ),\n        0 => array(\n            '(', ')', '[', ']', '{', '}',\n            '!', '%', '&', '|', '/',\n            '<', '>',\n            '=', '-', '+', '*',\n            '.', ':', ',', ';', '^'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100; font-weight: bold;',//pour les mots-cles C++\n            2 => 'color: #000000; font-weight: bold;',//pour les mots-cles KLone\n            3 => 'color: #6600FF;',//pour les fonctions C++\n            4 => 'color: #6600FF;',//pour les fonctions Klone\n            5 => 'color: #0099FF; font-weight: bold;',//pour les types C++\n            6 => 'color: #990099; font-weight: bold;',//pour les mots-cles HTML\n            7 => 'color: #000066;'//pour les autres mots-cles HTML\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',//commentaire sur une ligne C++ et KLone\n            2 => 'color: #339933;',//pour les #... en C++\n            'MULTI' => 'color: #808080; font-style: italic;'//commentaire sur plusieurs lignes C++ et KLone\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;',\n            2 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000;',\n            1 => 'color: #000000; font-weight: bold;'\n            ),\n        'REGEXPS' => array(),\n        'SCRIPT' => array(\n            0 => 'background-color:#ffccff; font-weight: bold; color:#000000;',\n            1 => '',\n            2 => '',\n            3 => 'color: #00bbdd; font-weight: bold;',\n            4 => 'color: #ddbb00;',\n            5 => 'color: #009900;'\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAMEL}.html',\n        4 => 'http://www.koanlogic.com/klone/api/html/globals.html',\n        5 => '',\n        6 => 'http://december.com/html/4/element/{FNAMEL}.html',\n        7 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,\n    'SCRIPT_DELIMITERS' => array(\n        //delimiteurs pour KLone\n        0 => array(\n            '<%=' => '%>'\n            ),\n        1 => array(\n            '<%!' => '%>'\n            ),\n        2 => array(\n            '<%' => '%>'\n            ),\n        //delimiteur pour HTML\n        3 => array(\n            '<!DOCTYPE' => '>'\n            ),\n        4 => array(\n            '&' => ';'\n            ),\n        5 => array(\n            '<' => '>'\n            )\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => false,\n        1 => true,\n        2 => true,\n        3 => false,\n        4 => false,\n        5 => true\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            6 => array(\n                'DISALLOWED_BEFORE' => '(?<=&lt;|&lt;\\/)',\n                'DISALLOWED_AFTER' => '(?=\\s|\\/|&gt;)',\n            ),\n            7 => array(\n                'DISALLOWED_AFTER' => '(?=\\s*=)',\n            )\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/kotlin.php",
    "content": "<?php\n/*************************************************************************************\n * kotlin.php\n * --------\n * Author: Ole Sandum (oksandum@gmail.com)\n * Copyright: (c) 2017 Ole Sandum\n * Release Version: 1.0.9.1\n * Date Started: 2004/07/10\n *\n * Kotlin language file for GeSHi.\n *\n * 2017/01/28\n *   -  First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Kotlin',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Import and Package directives (Basic Support only)\n        2 => '/(?:(?<=import[\\\\n\\\\s])|(?<=package[\\\\n\\\\s]))[\\\\n\\\\s]*([a-zA-Z0-9_]+\\\\.)*([a-zA-Z0-9_]+|\\*)(?=[\\n\\s;])/i',\n        // javadoc comments\n        3 => '#/\\*\\*(?![\\*\\/]).*\\*/#sU'\n    ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'fun', 'var', 'val', 'typeof', 'typealias', 'suspend',\n            'for', 'if', 'else', 'while', 'do',\n            'when', 'return', 'public', 'get', 'set',\n            'private', 'protected', 'internal', 'break', 'class', 'object',\n            'companion', 'data', 'sealed', 'open', 'operator',\n            'try', 'catch', 'finally', 'inner', 'constructor', 'init',\n            'interface', 'throw', 'final', 'external', 'this',\n            'abstract', 'is', '!is', 'as', 'as?', 'continue',\n            'default', 'enum', 'package', 'super', 'where',\n            'const', 'import', 'in', '!in', 'out', 'override',\n            'reified', 'inline', 'noinline', 'crossinline'\n        ),\n        2 => array(\n            'null', 'false', 'true'\n        ),\n        3 => array(\n            'AbstractAction', 'AbstractBorder', 'AbstractButton',\n            'AbstractCellEditor', 'AbstractCollection',\n            'AbstractColorChooserPanel', 'AbstractDocument',\n            'AbstractDocument.AttributeContext',\n            'AbstractDocument.Content',\n            'AbstractDocument.ElementEdit',\n            'AbstractLayoutCache',\n            'AbstractLayoutCache.NodeDimensions', 'AbstractList',\n            'AbstractListModel', 'AbstractMap',\n            'AbstractMethodError', 'AbstractSequentialList',\n            'AbstractSet', 'AbstractTableModel',\n            'AbstractUndoableEdit', 'AbstractWriter',\n            'AccessControlContext', 'AccessControlException',\n            'AccessController', 'AccessException', 'Accessible',\n            'AccessibleAction', 'AccessibleBundle',\n            'AccessibleComponent', 'AccessibleContext',\n            'AccessibleHyperlink', 'AccessibleHypertext',\n            'AccessibleIcon', 'AccessibleObject',\n            'AccessibleRelation', 'AccessibleRelationSet',\n            'AccessibleResourceBundle', 'AccessibleRole',\n            'AccessibleSelection', 'AccessibleState',\n            'AccessibleStateSet', 'AccessibleTable',\n            'AccessibleTableModelChange', 'AccessibleText',\n            'AccessibleValue', 'Acl', 'AclEntry',\n            'AclNotFoundException', 'Action', 'ActionEvent',\n            'ActionListener', 'ActionMap', 'ActionMapUIResource',\n            'Activatable', 'ActivateFailedException',\n            'ActivationDesc', 'ActivationException',\n            'ActivationGroup', 'ActivationGroupDesc',\n            'ActivationGroupDesc.CommandEnvironment',\n            'ActivationGroupID', 'ActivationID',\n            'ActivationInstantiator', 'ActivationMonitor',\n            'ActivationSystem', 'Activator', 'ActiveEvent',\n            'Adjustable', 'AdjustmentEvent',\n            'AdjustmentListener', 'Adler32', 'AffineTransform',\n            'AffineTransformOp', 'AlgorithmParameterGenerator',\n            'AlgorithmParameterGeneratorSpi',\n            'AlgorithmParameters', 'AlgorithmParameterSpec',\n            'AlgorithmParametersSpi', 'AllPermission',\n            'AlphaComposite', 'AlreadyBound',\n            'AlreadyBoundException', 'AlreadyBoundHelper',\n            'AlreadyBoundHolder', 'AncestorEvent',\n            'AncestorListener', 'Annotation', 'AnyHolder',\n            'AnySeqHelper', 'AnySeqHolder', 'Applet',\n            'AppletContext', 'AppletInitializer', 'AppletStub',\n            'ApplicationException', 'Arc2D', 'Arc2D.Double',\n            'Arc2D.Float', 'Area', 'AreaAveragingScaleFilter',\n            'ARG_IN', 'ARG_INOUT', 'ARG_OUT',\n            'ArithmeticException', 'Array',\n            'ArrayIndexOutOfBoundsException', 'ArrayList',\n            'Arrays', 'ArrayStoreException', 'AsyncBoxView',\n            'Attribute', 'AttributedCharacterIterator',\n            'AttributedCharacterIterator.Attribute',\n            'AttributedString', 'AttributeInUseException',\n            'AttributeList', 'AttributeModificationException',\n            'Attributes', 'Attributes.Name', 'AttributeSet',\n            'AttributeSet.CharacterAttribute',\n            'AttributeSet.ColorAttribute',\n            'AttributeSet.FontAttribute',\n            'AttributeSet.ParagraphAttribute', 'AudioClip',\n            'AudioFileFormat', 'AudioFileFormat.Type',\n            'AudioFileReader', 'AudioFileWriter', 'AudioFormat',\n            'AudioFormat.Encoding', 'AudioInputStream',\n            'AudioPermission', 'AudioSystem',\n            'AuthenticationException',\n            'AuthenticationNotSupportedException',\n            'Authenticator', 'Autoscroll', 'AWTError',\n            'AWTEvent', 'AWTEventListener',\n            'AWTEventMulticaster', 'AWTException',\n            'AWTPermission', 'BadKind', 'BadLocationException',\n            'BAD_CONTEXT', 'BAD_INV_ORDER', 'BAD_OPERATION',\n            'BAD_PARAM', 'BAD_POLICY', 'BAD_POLICY_TYPE',\n            'BAD_POLICY_VALUE', 'BAD_TYPECODE', 'BandCombineOp',\n            'BandedSampleModel', 'BasicArrowButton',\n            'BasicAttribute', 'BasicAttributes', 'BasicBorders',\n            'BasicBorders.ButtonBorder',\n            'BasicBorders.FieldBorder',\n            'BasicBorders.MarginBorder',\n            'BasicBorders.MenuBarBorder',\n            'BasicBorders.RadioButtonBorder',\n            'BasicBorders.SplitPaneBorder',\n            'BasicBorders.ToggleButtonBorder',\n            'BasicButtonListener', 'BasicButtonUI',\n            'BasicCheckBoxMenuItemUI', 'BasicCheckBoxUI',\n            'BasicColorChooserUI', 'BasicComboBoxEditor',\n            'BasicComboBoxEditor.UIResource',\n            'BasicComboBoxRenderer',\n            'BasicComboBoxRenderer.UIResource',\n            'BasicComboBoxUI', 'BasicComboPopup',\n            'BasicDesktopIconUI', 'BasicDesktopPaneUI',\n            'BasicDirectoryModel', 'BasicEditorPaneUI',\n            'BasicFileChooserUI', 'BasicGraphicsUtils',\n            'BasicHTML', 'BasicIconFactory',\n            'BasicInternalFrameTitlePane',\n            'BasicInternalFrameUI', 'BasicLabelUI',\n            'BasicListUI', 'BasicLookAndFeel', 'BasicMenuBarUI',\n            'BasicMenuItemUI', 'BasicMenuUI',\n            'BasicOptionPaneUI',\n            'BasicOptionPaneUI.ButtonAreaLayout', 'BasicPanelUI',\n            'BasicPasswordFieldUI', 'BasicPermission',\n            'BasicPopupMenuSeparatorUI', 'BasicPopupMenuUI',\n            'BasicProgressBarUI', 'BasicRadioButtonMenuItemUI',\n            'BasicRadioButtonUI', 'BasicRootPaneUI',\n            'BasicScrollBarUI', 'BasicScrollPaneUI',\n            'BasicSeparatorUI', 'BasicSliderUI',\n            'BasicSplitPaneDivider', 'BasicSplitPaneUI',\n            'BasicStroke', 'BasicTabbedPaneUI',\n            'BasicTableHeaderUI', 'BasicTableUI',\n            'BasicTextAreaUI', 'BasicTextFieldUI',\n            'BasicTextPaneUI', 'BasicTextUI',\n            'BasicTextUI.BasicCaret',\n            'BasicTextUI.BasicHighlighter',\n            'BasicToggleButtonUI', 'BasicToolBarSeparatorUI',\n            'BasicToolBarUI', 'BasicToolTipUI', 'BasicTreeUI',\n            'BasicViewportUI', 'BatchUpdateException',\n            'BeanContext', 'BeanContextChild',\n            'BeanContextChildComponentProxy',\n            'BeanContextChildSupport',\n            'BeanContextContainerProxy', 'BeanContextEvent',\n            'BeanContextMembershipEvent',\n            'BeanContextMembershipListener', 'BeanContextProxy',\n            'BeanContextServiceAvailableEvent',\n            'BeanContextServiceProvider',\n            'BeanContextServiceProviderBeanInfo',\n            'BeanContextServiceRevokedEvent',\n            'BeanContextServiceRevokedListener',\n            'BeanContextServices', 'BeanContextServicesListener',\n            'BeanContextServicesSupport',\n            'BeanContextServicesSupport.BCSSServiceProvider',\n            'BeanContextSupport',\n            'BeanContextSupport.BCSIterator', 'BeanDescriptor',\n            'BeanInfo', 'Beans', 'BevelBorder', 'BigDecimal',\n            'BigInteger', 'BinaryRefAddr', 'BindException',\n            'Binding', 'BindingHelper', 'BindingHolder',\n            'BindingIterator', 'BindingIteratorHelper',\n            'BindingIteratorHolder', 'BindingIteratorOperations',\n            'BindingListHelper', 'BindingListHolder',\n            'BindingType', 'BindingTypeHelper',\n            'BindingTypeHolder', 'BitSet', 'Blob', 'BlockView',\n            'Book', 'BooleanControl',\n            'BooleanControl.Type', 'BooleanHolder',\n            'BooleanSeqHelper', 'BooleanSeqHolder', 'Border',\n            'BorderFactory', 'BorderLayout', 'BorderUIResource',\n            'BorderUIResource.BevelBorderUIResource',\n            'BorderUIResource.CompoundBorderUIResource',\n            'BorderUIResource.EmptyBorderUIResource',\n            'BorderUIResource.EtchedBorderUIResource',\n            'BorderUIResource.LineBorderUIResource',\n            'BorderUIResource.MatteBorderUIResource',\n            'BorderUIResource.TitledBorderUIResource',\n            'BoundedRangeModel', 'Bounds', 'Box', 'Box.Filler',\n            'BoxedValueHelper', 'BoxLayout', 'BoxView',\n            'BreakIterator', 'BufferedImage',\n            'BufferedImageFilter', 'BufferedImageOp',\n            'BufferedInputStream', 'BufferedOutputStream',\n            'BufferedReader', 'BufferedWriter', 'Button',\n            'ButtonGroup', 'ButtonModel', 'ButtonUI',\n            'ByteArrayInputStream', 'ByteArrayOutputStream',\n            'ByteHolder', 'ByteLookupTable', 'Calendar',\n            'CallableStatement', 'CannotProceed',\n            'CannotProceedException', 'CannotProceedHelper',\n            'CannotProceedHolder', 'CannotRedoException',\n            'CannotUndoException', 'Canvas', 'CardLayout',\n            'Caret', 'CaretEvent', 'CaretListener', 'CellEditor',\n            'CellEditorListener', 'CellRendererPane',\n            'Certificate', 'Certificate.CertificateRep',\n            'CertificateEncodingException',\n            'CertificateException',\n            'CertificateExpiredException', 'CertificateFactory',\n            'CertificateFactorySpi',\n            'CertificateNotYetValidException',\n            'CertificateParsingException',\n            'ChangedCharSetException', 'ChangeEvent',\n            'ChangeListener', 'Character', 'Character.Subset',\n            'Character.UnicodeBlock', 'CharacterIterator',\n            'CharArrayReader', 'CharArrayWriter',\n            'CharConversionException', 'CharHolder',\n            'CharSeqHelper', 'CharSeqHolder', 'Checkbox',\n            'CheckboxGroup', 'CheckboxMenuItem',\n            'CheckedInputStream', 'CheckedOutputStream',\n            'Checksum', 'Choice', 'ChoiceFormat', 'Class',\n            'ClassCastException', 'ClassCircularityError',\n            'ClassDesc', 'ClassFormatError', 'ClassLoader',\n            'ClassNotFoundException', 'Clip', 'Clipboard',\n            'ClipboardOwner', 'Clob', 'Cloneable',\n            'CloneNotSupportedException', 'CMMException',\n            'CodeSource', 'CollationElementIterator',\n            'CollationKey', 'Collator', 'Collection',\n            'Collections', 'Color',\n            'ColorChooserComponentFactory', 'ColorChooserUI',\n            'ColorConvertOp', 'ColorModel',\n            'ColorSelectionModel', 'ColorSpace',\n            'ColorUIResource', 'ComboBoxEditor', 'ComboBoxModel',\n            'ComboBoxUI', 'ComboPopup', 'CommunicationException',\n            'COMM_FAILURE', 'Comparable', 'Comparator',\n            'Compiler', 'CompletionStatus',\n            'CompletionStatusHelper', 'Component',\n            'ComponentAdapter', 'ComponentColorModel',\n            'ComponentEvent', 'ComponentInputMap',\n            'ComponentInputMapUIResource', 'ComponentListener',\n            'ComponentOrientation', 'ComponentSampleModel',\n            'ComponentUI', 'ComponentView', 'Composite',\n            'CompositeContext', 'CompositeName', 'CompositeView',\n            'CompoundBorder', 'CompoundControl',\n            'CompoundControl.Type', 'CompoundEdit',\n            'CompoundName', 'ConcurrentModificationException',\n            'ConfigurationException', 'ConnectException',\n            'ConnectIOException', 'Connection', 'Constructor', 'Container',\n            'ContainerAdapter', 'ContainerEvent',\n            'ContainerListener', 'ContentHandler',\n            'ContentHandlerFactory', 'ContentModel', 'Context',\n            'ContextList', 'ContextNotEmptyException',\n            'ContextualRenderedImageFactory', 'Control',\n            'Control.Type', 'ControlFactory',\n            'ControllerEventListener', 'ConvolveOp', 'CRC32',\n            'CRL', 'CRLException', 'CropImageFilter', 'CSS',\n            'CSS.Attribute', 'CTX_RESTRICT_SCOPE',\n            'CubicCurve2D', 'CubicCurve2D.Double',\n            'CubicCurve2D.Float', 'Current', 'CurrentHelper',\n            'CurrentHolder', 'CurrentOperations', 'Cursor',\n            'Customizer', 'CustomMarshal', 'CustomValue',\n            'DatabaseMetaData', 'DataBuffer', 'DataBufferByte',\n            'DataBufferInt', 'DataBufferShort',\n            'DataBufferUShort', 'DataFlavor',\n            'DataFormatException', 'DatagramPacket',\n            'DatagramSocket', 'DatagramSocketImpl',\n            'DatagramSocketImplFactory', 'DataInput',\n            'DataInputStream', 'DataLine', 'DataLine.Info',\n            'DataOutput', 'DataOutputStream',\n            'DataTruncation', 'DATA_CONVERSION', 'Date',\n            'DateFormat', 'DateFormatSymbols', 'DebugGraphics',\n            'DecimalFormat', 'DecimalFormatSymbols',\n            'DefaultBoundedRangeModel', 'DefaultButtonModel',\n            'DefaultCaret', 'DefaultCellEditor',\n            'DefaultColorSelectionModel', 'DefaultComboBoxModel',\n            'DefaultDesktopManager', 'DefaultEditorKit',\n            'DefaultEditorKit.BeepAction',\n            'DefaultEditorKit.CopyAction',\n            'DefaultEditorKit.CutAction',\n            'DefaultEditorKit.DefaultKeyTypedAction',\n            'DefaultEditorKit.InsertBreakAction',\n            'DefaultEditorKit.InsertContentAction',\n            'DefaultEditorKit.InsertTabAction',\n            'DefaultEditorKit.PasteAction,',\n            'DefaultFocusManager', 'DefaultHighlighter',\n            'DefaultHighlighter.DefaultHighlightPainter',\n            'DefaultListCellRenderer',\n            'DefaultListCellRenderer.UIResource',\n            'DefaultListModel', 'DefaultListSelectionModel',\n            'DefaultMenuLayout', 'DefaultMetalTheme',\n            'DefaultMutableTreeNode',\n            'DefaultSingleSelectionModel',\n            'DefaultStyledDocument',\n            'DefaultStyledDocument.AttributeUndoableEdit',\n            'DefaultStyledDocument.ElementSpec',\n            'DefaultTableCellRenderer',\n            'DefaultTableCellRenderer.UIResource',\n            'DefaultTableColumnModel', 'DefaultTableModel',\n            'DefaultTextUI', 'DefaultTreeCellEditor',\n            'DefaultTreeCellRenderer', 'DefaultTreeModel',\n            'DefaultTreeSelectionModel', 'DefinitionKind',\n            'DefinitionKindHelper', 'Deflater',\n            'DeflaterOutputStream', 'Delegate', 'DesignMode',\n            'DesktopIconUI', 'DesktopManager', 'DesktopPaneUI',\n            'DGC', 'Dialog', 'Dictionary', 'DigestException',\n            'DigestInputStream', 'DigestOutputStream',\n            'Dimension', 'Dimension2D', 'DimensionUIResource',\n            'DirContext', 'DirectColorModel', 'DirectoryManager',\n            'DirObjectFactory', 'DirStateFactory',\n            'DirStateFactory.Result', 'DnDConstants', 'Document',\n            'DocumentEvent', 'DocumentEvent.ElementChange',\n            'DocumentEvent.EventType', 'DocumentListener',\n            'DocumentParser', 'DomainCombiner', 'DomainManager',\n            'DomainManagerOperations', 'DoubleHolder',\n            'DoubleSeqHelper', 'DoubleSeqHolder',\n            'DragGestureEvent', 'DragGestureListener',\n            'DragGestureRecognizer', 'DragSource',\n            'DragSourceContext', 'DragSourceDragEvent',\n            'DragSourceDropEvent', 'DragSourceEvent',\n            'DragSourceListener', 'Driver', 'DriverManager',\n            'DriverPropertyInfo', 'DropTarget',\n            'DropTarget.DropTargetAutoScroller',\n            'DropTargetContext', 'DropTargetDragEvent',\n            'DropTargetDropEvent', 'DropTargetEvent',\n            'DropTargetListener', 'DSAKey',\n            'DSAKeyPairGenerator', 'DSAParameterSpec',\n            'DSAParams', 'DSAPrivateKey', 'DSAPrivateKeySpec',\n            'DSAPublicKey', 'DSAPublicKeySpec', 'DTD',\n            'DTDConstants', 'DynamicImplementation', 'DynAny',\n            'DynArray', 'DynEnum', 'DynFixed', 'DynSequence',\n            'DynStruct', 'DynUnion', 'DynValue', 'EditorKit',\n            'Element', 'ElementIterator', 'Ellipse2D',\n            'Ellipse2D.Double', 'Ellipse2D.Float', 'EmptyBorder',\n            'EmptyStackException', 'EncodedKeySpec', 'Entity',\n            'EnumControl', 'EnumControl.Type', 'Enumeration',\n            'Environment', 'EOFException', 'Error',\n            'EtchedBorder', 'Event', 'EventContext',\n            'EventDirContext', 'EventListener',\n            'EventListenerList', 'EventObject', 'EventQueue',\n            'EventSetDescriptor', 'Exception',\n            'ExceptionInInitializerError', 'ExceptionList',\n            'ExpandVetoException', 'ExportException',\n            'ExtendedRequest', 'ExtendedResponse',\n            'Externalizable', 'FeatureDescriptor', 'Field',\n            'FieldNameHelper', 'FieldPosition', 'FieldView',\n            'File', 'FileChooserUI', 'FileDescriptor',\n            'FileDialog', 'FileFilter',\n            'FileInputStream', 'FilenameFilter', 'FileNameMap',\n            'FileNotFoundException', 'FileOutputStream',\n            'FilePermission', 'FileReader', 'FileSystemView',\n            'FileView', 'FileWriter', 'FilteredImageSource',\n            'FilterInputStream', 'FilterOutputStream',\n            'FilterReader', 'FilterWriter',\n            'FixedHeightLayoutCache', 'FixedHolder',\n            'FlatteningPathIterator', 'FlavorMap',\n            'FloatControl', 'FloatControl.Type', 'FloatHolder',\n            'FloatSeqHelper', 'FloatSeqHolder', 'FlowLayout',\n            'FlowView', 'FlowView.FlowStrategy', 'FocusAdapter',\n            'FocusEvent', 'FocusListener', 'FocusManager',\n            'Font', 'FontFormatException', 'FontMetrics',\n            'FontRenderContext', 'FontUIResource', 'Format',\n            'FormatConversionProvider', 'FormView', 'Frame',\n            'FREE_MEM', 'GapContent', 'GeneralPath',\n            'GeneralSecurityException', 'GlyphJustificationInfo',\n            'GlyphMetrics', 'GlyphVector', 'GlyphView',\n            'GlyphView.GlyphPainter', 'GradientPaint',\n            'GraphicAttribute', 'Graphics', 'Graphics2D',\n            'GraphicsConfigTemplate', 'GraphicsConfiguration',\n            'GraphicsDevice', 'GraphicsEnvironment',\n            'GrayFilter', 'GregorianCalendar',\n            'GridBagConstraints', 'GridBagLayout', 'GridLayout',\n            'Group', 'Guard', 'GuardedObject', 'GZIPInputStream',\n            'GZIPOutputStream', 'HasControls', 'HashMap',\n            'HashSet', 'Hashtable', 'HierarchyBoundsAdapter',\n            'HierarchyBoundsListener', 'HierarchyEvent',\n            'HierarchyListener', 'Highlighter',\n            'Highlighter.Highlight',\n            'Highlighter.HighlightPainter', 'HTML',\n            'HTML.Attribute', 'HTML.Tag', 'HTML.UnknownTag',\n            'HTMLDocument', 'HTMLDocument.Iterator',\n            'HTMLEditorKit', 'HTMLEditorKit.HTMLFactory',\n            'HTMLEditorKit.HTMLTextAction',\n            'HTMLEditorKit.InsertHTMLTextAction',\n            'HTMLEditorKit.LinkController',\n            'HTMLEditorKit.Parser',\n            'HTMLEditorKit.ParserCallback',\n            'HTMLFrameHyperlinkEvent', 'HTMLWriter',\n            'HttpURLConnection', 'HyperlinkEvent',\n            'HyperlinkEvent.EventType', 'HyperlinkListener',\n            'ICC_ColorSpace', 'ICC_Profile', 'ICC_ProfileGray',\n            'ICC_ProfileRGB', 'Icon', 'IconUIResource',\n            'IconView', 'IdentifierHelper', 'Identity',\n            'IdentityScope', 'IDLEntity', 'IDLType',\n            'IDLTypeHelper', 'IDLTypeOperations',\n            'IllegalAccessError', 'IllegalAccessException',\n            'IllegalArgumentException',\n            'IllegalComponentStateException',\n            'IllegalMonitorStateException',\n            'IllegalPathStateException', 'IllegalStateException',\n            'IllegalThreadStateException', 'Image',\n            'ImageConsumer', 'ImageFilter',\n            'ImageGraphicAttribute', 'ImageIcon',\n            'ImageObserver', 'ImageProducer',\n            'ImagingOpException', 'IMP_LIMIT',\n            'IncompatibleClassChangeError',\n            'InconsistentTypeCode', 'IndexColorModel',\n            'IndexedPropertyDescriptor',\n            'IndexOutOfBoundsException', 'IndirectionException',\n            'InetAddress', 'Inflater', 'InflaterInputStream',\n            'InheritableThreadLocal', 'InitialContext',\n            'InitialContextFactory',\n            'InitialContextFactoryBuilder', 'InitialDirContext',\n            'INITIALIZE', 'Initializer', 'InitialLdapContext',\n            'InlineView', 'InputContext', 'InputEvent',\n            'InputMap', 'InputMapUIResource', 'InputMethod',\n            'InputMethodContext', 'InputMethodDescriptor',\n            'InputMethodEvent', 'InputMethodHighlight',\n            'InputMethodListener', 'InputMethodRequests',\n            'InputStream',\n            'InputStreamReader', 'InputSubset', 'InputVerifier',\n            'Insets', 'InsetsUIResource', 'InstantiationError',\n            'InstantiationException', 'Instrument',\n            'InsufficientResourcesException', 'Integer',\n            'INTERNAL', 'InternalError', 'InternalFrameAdapter',\n            'InternalFrameEvent', 'InternalFrameListener',\n            'InternalFrameUI', 'InterruptedException',\n            'InterruptedIOException',\n            'InterruptedNamingException', 'INTF_REPOS',\n            'IntHolder', 'IntrospectionException',\n            'Introspector', 'Invalid',\n            'InvalidAlgorithmParameterException',\n            'InvalidAttributeIdentifierException',\n            'InvalidAttributesException',\n            'InvalidAttributeValueException',\n            'InvalidClassException',\n            'InvalidDnDOperationException',\n            'InvalidKeyException', 'InvalidKeySpecException',\n            'InvalidMidiDataException', 'InvalidName',\n            'InvalidNameException',\n            'InvalidNameHelper', 'InvalidNameHolder',\n            'InvalidObjectException',\n            'InvalidParameterException',\n            'InvalidParameterSpecException',\n            'InvalidSearchControlsException',\n            'InvalidSearchFilterException', 'InvalidSeq',\n            'InvalidTransactionException', 'InvalidValue',\n            'INVALID_TRANSACTION', 'InvocationEvent',\n            'InvocationHandler', 'InvocationTargetException',\n            'InvokeHandler', 'INV_FLAG', 'INV_IDENT',\n            'INV_OBJREF', 'INV_POLICY', 'IOException',\n            'IRObject', 'IRObjectOperations', 'IstringHelper',\n            'ItemEvent', 'ItemListener', 'ItemSelectable',\n            'Iterator', 'JApplet', 'JarEntry', 'JarException',\n            'JarFile', 'JarInputStream', 'JarOutputStream',\n            'JarURLConnection', 'JButton', 'JCheckBox',\n            'JCheckBoxMenuItem', 'JColorChooser', 'JComboBox',\n            'JComboBox.KeySelectionManager', 'JComponent',\n            'JDesktopPane', 'JDialog', 'JEditorPane',\n            'JFileChooser', 'JFrame', 'JInternalFrame',\n            'JInternalFrame.JDesktopIcon', 'JLabel',\n            'JLayeredPane', 'JList', 'JMenu', 'JMenuBar',\n            'JMenuItem', 'JobAttributes',\n            'JobAttributes.DefaultSelectionType',\n            'JobAttributes.DestinationType',\n            'JobAttributes.DialogType',\n            'JobAttributes.MultipleDocumentHandlingType',\n            'JobAttributes.SidesType', 'JOptionPane', 'JPanel',\n            'JPasswordField', 'JPopupMenu',\n            'JPopupMenu.Separator', 'JProgressBar',\n            'JRadioButton', 'JRadioButtonMenuItem', 'JRootPane',\n            'JScrollBar', 'JScrollPane', 'JSeparator', 'JSlider',\n            'JSplitPane', 'JTabbedPane', 'JTable',\n            'JTableHeader', 'JTextArea', 'JTextComponent',\n            'JTextComponent.KeyBinding', 'JTextField',\n            'JTextPane', 'JToggleButton',\n            'JToggleButton.ToggleButtonModel', 'JToolBar',\n            'JToolBar.Separator', 'JToolTip', 'JTree',\n            'JTree.DynamicUtilTreeNode',\n            'JTree.EmptySelectionModel', 'JViewport', 'JWindow',\n            'Kernel', 'Key', 'KeyAdapter', 'KeyEvent',\n            'KeyException', 'KeyFactory', 'KeyFactorySpi',\n            'KeyListener', 'KeyManagementException', 'Keymap',\n            'KeyPair', 'KeyPairGenerator', 'KeyPairGeneratorSpi',\n            'KeySpec', 'KeyStore', 'KeyStoreException',\n            'KeyStoreSpi', 'KeyStroke', 'Label', 'LabelUI',\n            'LabelView', 'LastOwnerException',\n            'LayeredHighlighter',\n            'LayeredHighlighter.LayerPainter', 'LayoutManager',\n            'LayoutManager2', 'LayoutQueue', 'LdapContext',\n            'LdapReferralException', 'Lease',\n            'LimitExceededException', 'Line', 'Line.Info',\n            'Line2D', 'Line2D.Double', 'Line2D.Float',\n            'LineBorder', 'LineBreakMeasurer', 'LineEvent',\n            'LineEvent.Type', 'LineListener', 'LineMetrics',\n            'LineNumberInputStream', 'LineNumberReader',\n            'LineUnavailableException', 'LinkageError',\n            'LinkedList', 'LinkException', 'LinkLoopException',\n            'LinkRef', 'List', 'ListCellRenderer',\n            'ListDataEvent', 'ListDataListener', 'ListIterator',\n            'ListModel', 'ListResourceBundle',\n            'ListSelectionEvent', 'ListSelectionListener',\n            'ListSelectionModel', 'ListUI', 'ListView',\n            'LoaderHandler', 'Locale', 'LocateRegistry',\n            'LogStream', 'LongHolder',\n            'LongLongSeqHelper', 'LongLongSeqHolder',\n            'LongSeqHelper', 'LongSeqHolder', 'LookAndFeel',\n            'LookupOp', 'LookupTable', 'MalformedLinkException',\n            'MalformedURLException', 'Manifest', 'Map',\n            'Map.Entry', 'MARSHAL', 'MarshalException',\n            'MarshalledObject', 'Math', 'MatteBorder',\n            'MediaTracker', 'Member', 'MemoryImageSource',\n            'Menu', 'MenuBar', 'MenuBarUI', 'MenuComponent',\n            'MenuContainer', 'MenuDragMouseEvent',\n            'MenuDragMouseListener', 'MenuElement', 'MenuEvent',\n            'MenuItem', 'MenuItemUI', 'MenuKeyEvent',\n            'MenuKeyListener', 'MenuListener',\n            'MenuSelectionManager', 'MenuShortcut',\n            'MessageDigest', 'MessageDigestSpi', 'MessageFormat',\n            'MetaEventListener', 'MetalBorders',\n            'MetalBorders.ButtonBorder',\n            'MetalBorders.Flush3DBorder',\n            'MetalBorders.InternalFrameBorder',\n            'MetalBorders.MenuBarBorder',\n            'MetalBorders.MenuItemBorder',\n            'MetalBorders.OptionDialogBorder',\n            'MetalBorders.PaletteBorder',\n            'MetalBorders.PopupMenuBorder',\n            'MetalBorders.RolloverButtonBorder',\n            'MetalBorders.ScrollPaneBorder',\n            'MetalBorders.TableHeaderBorder',\n            'MetalBorders.TextFieldBorder',\n            'MetalBorders.ToggleButtonBorder',\n            'MetalBorders.ToolBarBorder', 'MetalButtonUI',\n            'MetalCheckBoxIcon', 'MetalCheckBoxUI',\n            'MetalComboBoxButton', 'MetalComboBoxEditor',\n            'MetalComboBoxEditor.UIResource',\n            'MetalComboBoxIcon', 'MetalComboBoxUI',\n            'MetalDesktopIconUI', 'MetalFileChooserUI',\n            'MetalIconFactory', 'MetalIconFactory.FileIcon16',\n            'MetalIconFactory.FolderIcon16',\n            'MetalIconFactory.PaletteCloseIcon',\n            'MetalIconFactory.TreeControlIcon',\n            'MetalIconFactory.TreeFolderIcon',\n            'MetalIconFactory.TreeLeafIcon',\n            'MetalInternalFrameTitlePane',\n            'MetalInternalFrameUI', 'MetalLabelUI',\n            'MetalLookAndFeel', 'MetalPopupMenuSeparatorUI',\n            'MetalProgressBarUI', 'MetalRadioButtonUI',\n            'MetalScrollBarUI', 'MetalScrollButton',\n            'MetalScrollPaneUI', 'MetalSeparatorUI',\n            'MetalSliderUI', 'MetalSplitPaneUI',\n            'MetalTabbedPaneUI', 'MetalTextFieldUI',\n            'MetalTheme', 'MetalToggleButtonUI',\n            'MetalToolBarUI', 'MetalToolTipUI', 'MetalTreeUI',\n            'MetaMessage', 'Method', 'MethodDescriptor',\n            'MidiChannel', 'MidiDevice', 'MidiDevice.Info',\n            'MidiDeviceProvider', 'MidiEvent', 'MidiFileFormat',\n            'MidiFileReader', 'MidiFileWriter', 'MidiMessage',\n            'MidiSystem', 'MidiUnavailableException',\n            'MimeTypeParseException', 'MinimalHTMLWriter',\n            'MissingResourceException', 'Mixer', 'Mixer.Info',\n            'MixerProvider', 'ModificationItem', 'Modifier',\n            'MouseAdapter', 'MouseDragGestureRecognizer',\n            'MouseEvent', 'MouseInputAdapter',\n            'MouseInputListener', 'MouseListener',\n            'MouseMotionAdapter', 'MouseMotionListener',\n            'MultiButtonUI', 'MulticastSocket',\n            'MultiColorChooserUI', 'MultiComboBoxUI',\n            'MultiDesktopIconUI', 'MultiDesktopPaneUI',\n            'MultiFileChooserUI', 'MultiInternalFrameUI',\n            'MultiLabelUI', 'MultiListUI', 'MultiLookAndFeel',\n            'MultiMenuBarUI', 'MultiMenuItemUI',\n            'MultiOptionPaneUI', 'MultiPanelUI',\n            'MultiPixelPackedSampleModel', 'MultipleMaster',\n            'MultiPopupMenuUI', 'MultiProgressBarUI',\n            'MultiScrollBarUI', 'MultiScrollPaneUI',\n            'MultiSeparatorUI', 'MultiSliderUI',\n            'MultiSplitPaneUI', 'MultiTabbedPaneUI',\n            'MultiTableHeaderUI', 'MultiTableUI', 'MultiTextUI',\n            'MultiToolBarUI', 'MultiToolTipUI', 'MultiTreeUI',\n            'MultiViewportUI', 'MutableAttributeSet',\n            'MutableComboBoxModel', 'MutableTreeNode', 'Name',\n            'NameAlreadyBoundException', 'NameClassPair',\n            'NameComponent', 'NameComponentHelper',\n            'NameComponentHolder', 'NamedValue', 'NameHelper',\n            'NameHolder', 'NameNotFoundException', 'NameParser',\n            'NamespaceChangeListener', 'NameValuePair',\n            'NameValuePairHelper', 'Naming', 'NamingContext',\n            'NamingContextHelper', 'NamingContextHolder',\n            'NamingContextOperations', 'NamingEnumeration',\n            'NamingEvent', 'NamingException',\n            'NamingExceptionEvent', 'NamingListener',\n            'NamingManager', 'NamingSecurityException',\n            'NegativeArraySizeException', 'NetPermission',\n            'NoClassDefFoundError', 'NoInitialContextException',\n            'NoninvertibleTransformException',\n            'NoPermissionException', 'NoRouteToHostException',\n            'NoSuchAlgorithmException',\n            'NoSuchAttributeException', 'NoSuchElementException',\n            'NoSuchFieldError', 'NoSuchFieldException',\n            'NoSuchMethodError', 'NoSuchMethodException',\n            'NoSuchObjectException', 'NoSuchProviderException',\n            'NotActiveException', 'NotBoundException',\n            'NotContextException', 'NotEmpty', 'NotEmptyHelper',\n            'NotEmptyHolder', 'NotFound', 'NotFoundHelper',\n            'NotFoundHolder', 'NotFoundReason',\n            'NotFoundReasonHelper', 'NotFoundReasonHolder',\n            'NotOwnerException', 'NotSerializableException',\n            'NO_IMPLEMENT', 'NO_MEMORY', 'NO_PERMISSION',\n            'NO_RESOURCES', 'NO_RESPONSE',\n            'NullPointerException', 'Number', 'NumberFormat',\n            'NumberFormatException', 'NVList', 'Object',\n            'ObjectChangeListener', 'ObjectFactory',\n            'ObjectFactoryBuilder', 'ObjectHelper',\n            'ObjectHolder', 'ObjectImpl',\n            'ObjectInput', 'ObjectInputStream',\n            'ObjectInputStream.GetField',\n            'ObjectInputValidation', 'ObjectOutput',\n            'ObjectOutputStream', 'ObjectOutputStream.PutField',\n            'ObjectStreamClass', 'ObjectStreamConstants',\n            'ObjectStreamException', 'ObjectStreamField',\n            'ObjectView', 'OBJECT_NOT_EXIST', 'ObjID',\n            'OBJ_ADAPTER', 'Observable', 'Observer',\n            'OctetSeqHelper', 'OctetSeqHolder', 'OMGVMCID',\n            'OpenType', 'Operation',\n            'OperationNotSupportedException', 'Option',\n            'OptionalDataException', 'OptionPaneUI', 'ORB',\n            'OutOfMemoryError', 'OutputStream',\n            'OutputStreamWriter', 'OverlayLayout', 'Owner',\n            'Package', 'PackedColorModel', 'Pageable',\n            'PageAttributes', 'PageAttributes.ColorType',\n            'PageAttributes.MediaType',\n            'PageAttributes.OrientationRequestedType',\n            'PageAttributes.OriginType',\n            'PageAttributes.PrintQualityType', 'PageFormat',\n            'Paint', 'PaintContext', 'PaintEvent', 'Panel',\n            'PanelUI', 'Paper', 'ParagraphView',\n            'ParameterBlock', 'ParameterDescriptor',\n            'ParseException', 'ParsePosition', 'Parser',\n            'ParserDelegator', 'PartialResultException',\n            'PasswordAuthentication', 'PasswordView', 'Patch',\n            'PathIterator', 'Permission',\n            'PermissionCollection', 'Permissions',\n            'PERSIST_STORE', 'PhantomReference',\n            'PipedInputStream', 'PipedOutputStream',\n            'PipedReader', 'PipedWriter', 'PixelGrabber',\n            'PixelInterleavedSampleModel', 'PKCS8EncodedKeySpec',\n            'PlainDocument', 'PlainView', 'Point', 'Point2D',\n            'Point2D.Double', 'Point2D.Float', 'Policy',\n            'PolicyError', 'PolicyHelper',\n            'PolicyHolder', 'PolicyListHelper',\n            'PolicyListHolder', 'PolicyOperations',\n            'PolicyTypeHelper', 'Polygon', 'PopupMenu',\n            'PopupMenuEvent', 'PopupMenuListener', 'PopupMenuUI',\n            'Port', 'Port.Info', 'PortableRemoteObject',\n            'PortableRemoteObjectDelegate', 'Position',\n            'Position.Bias', 'PreparedStatement', 'Principal',\n            'PrincipalHolder', 'Printable',\n            'PrinterAbortException', 'PrinterException',\n            'PrinterGraphics', 'PrinterIOException',\n            'PrinterJob', 'PrintGraphics', 'PrintJob',\n            'PrintStream', 'PrintWriter', 'PrivateKey',\n            'PRIVATE_MEMBER', 'PrivilegedAction',\n            'PrivilegedActionException',\n            'PrivilegedExceptionAction', 'Process',\n            'ProfileDataException', 'ProgressBarUI',\n            'ProgressMonitor', 'ProgressMonitorInputStream',\n            'Properties', 'PropertyChangeEvent',\n            'PropertyChangeListener', 'PropertyChangeSupport',\n            'PropertyDescriptor', 'PropertyEditor',\n            'PropertyEditorManager', 'PropertyEditorSupport',\n            'PropertyPermission', 'PropertyResourceBundle',\n            'PropertyVetoException', 'ProtectionDomain',\n            'ProtocolException', 'Provider', 'ProviderException',\n            'Proxy', 'PublicKey', 'PUBLIC_MEMBER',\n            'PushbackInputStream', 'PushbackReader',\n            'QuadCurve2D', 'QuadCurve2D.Double',\n            'QuadCurve2D.Float', 'Random', 'RandomAccessFile',\n            'Raster', 'RasterFormatException', 'RasterOp',\n            'Reader', 'Receiver', 'Rectangle', 'Rectangle2D',\n            'Rectangle2D.Double', 'Rectangle2D.Float',\n            'RectangularShape', 'Ref', 'RefAddr', 'Reference',\n            'Referenceable', 'ReferenceQueue',\n            'ReferralException', 'ReflectPermission', 'Registry',\n            'RegistryHandler', 'RemarshalException', 'Remote',\n            'RemoteCall', 'RemoteException', 'RemoteObject',\n            'RemoteRef', 'RemoteServer', 'RemoteStub',\n            'RenderableImage', 'RenderableImageOp',\n            'RenderableImageProducer', 'RenderContext',\n            'RenderedImage', 'RenderedImageFactory', 'Renderer',\n            'RenderingHints', 'RenderingHints.Key',\n            'RepaintManager', 'ReplicateScaleFilter',\n            'Repository', 'RepositoryIdHelper', 'Request',\n            'RescaleOp', 'Resolver', 'ResolveResult',\n            'ResourceBundle', 'ResponseHandler', 'ResultSet',\n            'ResultSetMetaData', 'ReverbType', 'RGBImageFilter',\n            'RMIClassLoader', 'RMIClientSocketFactory',\n            'RMIFailureHandler', 'RMISecurityException',\n            'RMISecurityManager', 'RMIServerSocketFactory',\n            'RMISocketFactory', 'Robot', 'RootPaneContainer',\n            'RootPaneUI', 'RoundRectangle2D',\n            'RoundRectangle2D.Double', 'RoundRectangle2D.Float',\n            'RowMapper', 'RSAKey', 'RSAKeyGenParameterSpec',\n            'RSAPrivateCrtKey', 'RSAPrivateCrtKeySpec',\n            'RSAPrivateKey', 'RSAPrivateKeySpec', 'RSAPublicKey',\n            'RSAPublicKeySpec', 'RTFEditorKit',\n            'RuleBasedCollator', 'Runnable', 'RunTime',\n            'Runtime', 'RuntimeException', 'RunTimeOperations',\n            'RuntimePermission', 'SampleModel',\n            'SchemaViolationException', 'Scrollable',\n            'Scrollbar', 'ScrollBarUI', 'ScrollPane',\n            'ScrollPaneConstants', 'ScrollPaneLayout',\n            'ScrollPaneLayout.UIResource', 'ScrollPaneUI',\n            'SearchControls', 'SearchResult',\n            'SecureClassLoader', 'SecureRandom',\n            'SecureRandomSpi', 'Security', 'SecurityException',\n            'SecurityManager', 'SecurityPermission', 'Segment',\n            'SeparatorUI', 'Sequence', 'SequenceInputStream',\n            'Sequencer', 'Sequencer.SyncMode', 'Serializable',\n            'SerializablePermission', 'ServantObject',\n            'ServerCloneException', 'ServerError',\n            'ServerException', 'ServerNotActiveException',\n            'ServerRef', 'ServerRequest',\n            'ServerRuntimeException', 'ServerSocket',\n            'ServiceDetail', 'ServiceDetailHelper',\n            'ServiceInformation', 'ServiceInformationHelper',\n            'ServiceInformationHolder',\n            'ServiceUnavailableException', 'Set',\n            'SetOverrideType', 'SetOverrideTypeHelper', 'Shape',\n            'ShapeGraphicAttribute', 'ShortHolder',\n            'ShortLookupTable', 'ShortMessage', 'ShortSeqHelper',\n            'ShortSeqHolder', 'Signature', 'SignatureException',\n            'SignatureSpi', 'SignedObject', 'Signer',\n            'SimpleAttributeSet', 'SimpleBeanInfo',\n            'SimpleDateFormat', 'SimpleTimeZone',\n            'SinglePixelPackedSampleModel',\n            'SingleSelectionModel', 'SizeLimitExceededException',\n            'SizeRequirements', 'SizeSequence', 'Skeleton',\n            'SkeletonMismatchException',\n            'SkeletonNotFoundException', 'SliderUI', 'Socket',\n            'SocketException', 'SocketImpl', 'SocketImplFactory',\n            'SocketOptions', 'SocketPermission',\n            'SocketSecurityException', 'SoftBevelBorder',\n            'SoftReference', 'SortedMap', 'SortedSet',\n            'Soundbank', 'SoundbankReader', 'SoundbankResource',\n            'SourceDataLine', 'SplitPaneUI', 'SQLData',\n            'SQLException', 'SQLInput', 'SQLOutput',\n            'SQLPermission', 'SQLWarning', 'Stack',\n            'StackOverflowError', 'StateEdit', 'StateEditable',\n            'StateFactory', 'Statement', 'Streamable',\n            'StreamableValue', 'StreamCorruptedException',\n            'StreamTokenizer', 'StrictMath', 'String',\n            'StringBuffer', 'StringBufferInputStream',\n            'StringCharacterIterator', 'StringContent',\n            'StringHolder', 'StringIndexOutOfBoundsException',\n            'StringReader', 'StringRefAddr', 'StringSelection',\n            'StringTokenizer', 'StringValueHelper',\n            'StringWriter', 'Stroke', 'Struct', 'StructMember',\n            'StructMemberHelper', 'Stub', 'StubDelegate',\n            'StubNotFoundException', 'Style', 'StyleConstants',\n            'StyleConstants.CharacterConstants',\n            'StyleConstants.ColorConstants',\n            'StyleConstants.FontConstants',\n            'StyleConstants.ParagraphConstants', 'StyleContext',\n            'StyledDocument', 'StyledEditorKit',\n            'StyledEditorKit.AlignmentAction',\n            'StyledEditorKit.BoldAction',\n            'StyledEditorKit.FontFamilyAction',\n            'StyledEditorKit.FontSizeAction',\n            'StyledEditorKit.ForegroundAction',\n            'StyledEditorKit.ItalicAction',\n            'StyledEditorKit.StyledTextAction',\n            'StyledEditorKit.UnderlineAction', 'StyleSheet',\n            'StyleSheet.BoxPainter', 'StyleSheet.ListPainter',\n            'SwingConstants', 'SwingPropertyChangeSupport',\n            'SwingUtilities', 'SyncFailedException',\n            'Synthesizer', 'SysexMessage', 'System',\n            'SystemColor', 'SystemException', 'SystemFlavorMap',\n            'TabableView', 'TabbedPaneUI', 'TabExpander',\n            'TableCellEditor', 'TableCellRenderer',\n            'TableColumn', 'TableColumnModel',\n            'TableColumnModelEvent', 'TableColumnModelListener',\n            'TableHeaderUI', 'TableModel', 'TableModelEvent',\n            'TableModelListener', 'TableUI', 'TableView',\n            'TabSet', 'TabStop', 'TagElement', 'TargetDataLine',\n            'TCKind', 'TextAction', 'TextArea', 'TextAttribute',\n            'TextComponent', 'TextEvent', 'TextField',\n            'TextHitInfo', 'TextLayout',\n            'TextLayout.CaretPolicy', 'TextListener',\n            'TextMeasurer', 'TextUI', 'TexturePaint', 'Thread',\n            'ThreadDeath', 'ThreadGroup', 'ThreadLocal',\n            'Throwable', 'Tie', 'TileObserver', 'Time',\n            'TimeLimitExceededException', 'Timer',\n            'TimerTask', 'Timestamp', 'TimeZone', 'TitledBorder',\n            'ToolBarUI', 'Toolkit', 'ToolTipManager',\n            'ToolTipUI', 'TooManyListenersException', 'Track',\n            'TransactionRequiredException',\n            'TransactionRolledbackException',\n            'TRANSACTION_REQUIRED', 'TRANSACTION_ROLLEDBACK',\n            'Transferable', 'TransformAttribute', 'TRANSIENT',\n            'Transmitter', 'Transparency', 'TreeCellEditor',\n            'TreeCellRenderer', 'TreeExpansionEvent',\n            'TreeExpansionListener', 'TreeMap', 'TreeModel',\n            'TreeModelEvent', 'TreeModelListener', 'TreeNode',\n            'TreePath', 'TreeSelectionEvent',\n            'TreeSelectionListener', 'TreeSelectionModel',\n            'TreeSet', 'TreeUI', 'TreeWillExpandListener',\n            'TypeCode', 'TypeCodeHolder', 'TypeMismatch',\n            'Types', 'UID', 'UIDefaults',\n            'UIDefaults.ActiveValue', 'UIDefaults.LazyInputMap',\n            'UIDefaults.LazyValue', 'UIDefaults.ProxyLazyValue',\n            'UIManager', 'UIManager.LookAndFeelInfo',\n            'UIResource', 'ULongLongSeqHelper',\n            'ULongLongSeqHolder', 'ULongSeqHelper',\n            'ULongSeqHolder', 'UndeclaredThrowableException',\n            'UndoableEdit', 'UndoableEditEvent',\n            'UndoableEditListener', 'UndoableEditSupport',\n            'UndoManager', 'UnexpectedException',\n            'UnicastRemoteObject', 'UnionMember',\n            'UnionMemberHelper', 'UNKNOWN', 'UnknownError',\n            'UnknownException', 'UnknownGroupException',\n            'UnknownHostException',\n            'UnknownObjectException', 'UnknownServiceException',\n            'UnknownUserException', 'UnmarshalException',\n            'UnrecoverableKeyException', 'Unreferenced',\n            'UnresolvedPermission', 'UnsatisfiedLinkError',\n            'UnsolicitedNotification',\n            'UnsolicitedNotificationEvent',\n            'UnsolicitedNotificationListener',\n            'UnsupportedAudioFileException',\n            'UnsupportedClassVersionError',\n            'UnsupportedEncodingException',\n            'UnsupportedFlavorException',\n            'UnsupportedLookAndFeelException',\n            'UnsupportedOperationException',\n            'UNSUPPORTED_POLICY', 'UNSUPPORTED_POLICY_VALUE',\n            'URL', 'URLClassLoader', 'URLConnection',\n            'URLDecoder', 'URLEncoder', 'URLStreamHandler',\n            'URLStreamHandlerFactory', 'UserException',\n            'UShortSeqHelper', 'UShortSeqHolder',\n            'UTFDataFormatException', 'Util', 'UtilDelegate',\n            'Utilities', 'ValueBase', 'ValueBaseHelper',\n            'ValueBaseHolder', 'ValueFactory', 'ValueHandler',\n            'ValueMember', 'ValueMemberHelper',\n            'VariableHeightLayoutCache', 'Vector', 'VerifyError',\n            'VersionSpecHelper', 'VetoableChangeListener',\n            'VetoableChangeSupport', 'View', 'ViewFactory',\n            'ViewportLayout', 'ViewportUI',\n            'VirtualMachineError', 'Visibility',\n            'VisibilityHelper', 'VMID', 'VM_ABSTRACT',\n            'VM_CUSTOM', 'VM_NONE', 'VM_TRUNCATABLE',\n            'VoiceStatus', 'Void', 'WCharSeqHelper',\n            'WCharSeqHolder', 'WeakHashMap', 'WeakReference',\n            'Window', 'WindowAdapter', 'WindowConstants',\n            'WindowEvent', 'WindowListener', 'WrappedPlainView',\n            'WritableRaster', 'WritableRenderedImage',\n            'WriteAbortedException', 'Writer',\n            'WrongTransaction', 'WStringValueHelper',\n            'X509Certificate', 'X509CRL', 'X509CRLEntry',\n            'X509EncodedKeySpec', 'X509Extension', 'ZipEntry',\n            'ZipException', 'ZipFile', 'ZipInputStream',\n            'ZipOutputStream', 'ZoneView',\n            '_BindingIteratorImplBase', '_BindingIteratorStub',\n            '_IDLTypeStub', '_NamingContextImplBase',\n            '_NamingContextStub', '_PolicyStub', '_Remote_Stub'\n        ),\n        4 => array(\n            'Double', 'Int', 'Boolean', 'Byte', 'Short', 'Long', 'Char', 'Float', 'Unit', 'Nothing', 'Any'\n        )\n    ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}',\n        '+', '-', '*', '/', '%',\n        '!', '&', '|', '^',\n        '<', '>', '=',\n        '?', ':', ';',\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #000066; font-weight: bold;',\n            3 => 'color: #003399;',\n            4 => 'color: #000066; font-weight: bold;'\n        ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #006699;',\n            3 => 'color: #008000; font-style: italic; font-weight: bold;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n        ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n        ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;'\n        ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n        ),\n        'METHODS' => array(\n            1 => 'color: #006633;',\n            2 => 'color: #006633;'\n        ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n        ),\n        'SCRIPT' => array(),\n        'REGEXPS' => array()\n    ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://www.google.com/search?hl=en&amp;q=allinurl%3Adocs.oracle.com+javase+docs+api+{FNAMEL}',\n        4 => ''\n    ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n    ),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/latex.php",
    "content": "<?php\n/*************************************************************************************\n * latex.php\n * -----\n * Author: efi, Matthias Pospiech (matthias@pospiech.eu)\n * Copyright: (c) 2006 efi, Matthias Pospiech (matthias@pospiech.eu), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2006/09/23\n *\n * LaTeX language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/08/18 (1.0.8.1)\n *  - Changes in color and some additional command recognition\n *  - No special Color for Brackets, it is only distracting\n *    if color should be reintroduced it should be less bright\n *  - Math color changed from green to violett, since green is now used for comments\n *  - Comments are now colored and the only green. The reason for coloring the comments\n *    is that often important information is in the comments und was merely unvisible before.\n *  - New Color for [Options]\n *  - color for labels not specialised anymore. It makes sence in large documents but less in\n *    small web examples.\n *  - \\@keyword introduced\n *  - Fixed \\& escaped ampersand\n * 2006/09/23 (1.0.0)\n *  -  First Release\n *\n * TODO\n * -------------------------\n * *\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'LaTeX',\n    'COMMENT_SINGLE' => array(\n        1 => '%'\n        ),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'addlinespace','and','address','appendix','author','backmatter',\n            'bfseries','bibitem','bigskip','blindtext','caption','captionabove',\n            'captionbelow','cdot','centering','chapter','cite','color',\n            'colorbox','date','dedication','def','definecolor','documentclass',\n            'edef','else','email','emph','eqref','extratitle','fbox','fi',\n            'flushleft','flushright','footnote','frac','frontmatter',\n            'graphicspath','hfil','hfill','hfilll','hline','hspace','huge','ifx','include',\n            'includegraphics','infty','input','int','item','itemsep',\n            'KOMAoption','KOMAoptions','label','LaTeX','left','let','limits',\n            'listfiles','listoffigures','listoftables','lowertitleback',\n            'mainmatter','makeatletter','makeatother','makebox','makeindex',\n            'maketitle','mbox','mediumskip','newcommand','newenvironment',\n            'newpage','nocite','nonumber','pagestyle','par','paragraph',\n            'parbox','parident','parskip','partial','publishers','raggedleft',\n            'raggedright','raisebox','ref','renewcommand','renewenvironment',\n            'right','rule','section','setlength','sffamily','subject',\n            'subparagraph','subsection','subsubsection','subtitle','sum',\n            'table','tableofcontents','textbf','textcolor','textit',\n            'textnormal','textsuperscript','texttt','textwidth','thanks','title',\n            'titlehead','today','ttfamily','uppertitleback','urlstyle',\n            'usepackage','vfil','vfill','vfilll','vspace'\n            )\n        ),\n    'SYMBOLS' => array(\n        \"&\", \"\\\\\", \"{\", \"}\", \"[\", \"]\"\n        ),\n    'CASE_SENSITIVE' => array(\n        1 => true,\n        GESHI_COMMENTS => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #800000;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #2C922C; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 =>  'color: #000000; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            ),\n        'STRINGS' => array(\n            0 =>  'color: #000000;'\n            ),\n        'NUMBERS' => array(\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 =>  'color: #E02020; '\n            ),\n        'REGEXPS' => array(\n            1 => 'color: #8020E0; font-weight: normal;',  // Math inner\n            2 => 'color: #C08020; font-weight: normal;', // [Option]\n            3 => 'color: #8020E0; font-weight: normal;', // Maths\n            4 => 'color: #800000; font-weight: normal;', // Structure: Labels\n            5 => 'color: #00008B; font-weight: bold;',  // Structure (\\section{->x<-})\n            6 => 'color: #800000; font-weight: normal;', // Structure (\\section)\n            7 => 'color: #0000D0; font-weight: normal;', // Environment \\end or \\begin{->x<-} (brighter blue)\n            8 => 'color: #C00000; font-weight: normal;', // Structure \\end or \\begin\n            9 => 'color: #2020C0; font-weight: normal;', // {...}\n            10 => 'color: #800000; font-weight: normal;', // \\%, \\& etc.\n            11 => 'color: #E00000; font-weight: normal;', // \\@keyword\n            12 => 'color: #800000; font-weight: normal;', // \\keyword\n        ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => 'http://www.golatex.de/wiki/%5C{FNAME}',\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        // Math inner\n        1 => array(\n            GESHI_SEARCH => \"(\\\\\\\\begin\\\\{(equation|displaymath|eqnarray|subeqnarray|math|multline|gather|align|alignat|flalign)\\\\})(.*)(\\\\\\\\end\\\\{\\\\2\\\\})\",\n            GESHI_REPLACE => '\\3',\n            GESHI_MODIFIERS => 'Us',\n            GESHI_BEFORE => '\\1',\n            GESHI_AFTER => '\\4'\n            ),\n        // [options]\n        2 => array(\n            GESHI_SEARCH => \"(?<=\\[).*(?=\\])\",\n            GESHI_REPLACE => '\\0',\n            GESHI_MODIFIERS => 'Us',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        // Math mode with $ ... $\n        3 => array(\n            GESHI_SEARCH => \"\\\\$.+\\\\$\",\n            GESHI_REPLACE => '\\0',\n            GESHI_MODIFIERS => 'Us',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        // Structure: Label\n        4 => \"\\\\\\\\(?:label|pageref|ref|cite)(?=[^a-zA-Z])\",\n        // Structure: sections\n        5 => array(\n            GESHI_SEARCH => \"(\\\\\\\\(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph|addpart|addchap|addsec)\\*?\\\\{)(.*)(?=\\\\})\",\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'U',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n        // Structure: sections\n        6 => \"\\\\\\\\(?:part|chapter|(?:sub){0,2}section|(?:sub)?paragraph|addpart|addchap|addsec)\\*?(?=[^a-zA-Z])\",\n        // environment \\begin{} and \\end{} (i.e. the things inside the {})\n        7 => array(\n            GESHI_SEARCH => \"(\\\\\\\\(?:begin|end)\\\\{)(.*)(?=\\\\})\",\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'U',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n        // Structure \\begin and \\end\n        8 => \"\\\\\\\\(?:end|begin)(?=[^a-zA-Z])\",\n        // {parameters}\n        9 => array(\n            GESHI_SEARCH => \"(?<=\\\\{)(?!<\\|!REG3XP5!>).*?(?=\\\\})\",\n            GESHI_REPLACE => '\\0',\n            GESHI_MODIFIERS => 'Us',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        // \\%, \\& usw.\n        10 => \"\\\\\\\\(?:[_$%]|&amp;)\",\n        //  \\@keywords\n        11 => \"(?<!<\\|!REG3XP[8]!>)\\\\\\\\@[a-zA-Z]+\\*?\",\n        // \\keywords\n        12 => \"(?<!<\\|!REG3XP[468]!>)\\\\\\\\[a-zA-Z]+\\*?\",\n\n// ---------------------------------------------\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'COMMENTS' => array(\n            'DISALLOWED_BEFORE' => '\\\\'\n        ),\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<=\\\\\\\\)\",\n            'DISALLOWED_AFTER' => \"(?![A-Za-z0-9])\"\n        ),\n        'ENABLE_FLAGS' => array(\n            'NUMBERS' => GESHI_NEVER,\n            'BRACKETS' => GESHI_NEVER\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/lb.php",
    "content": "<?php\n/*************************************************************************************\n * lb.php\n * --------\n * Author: Chris Iverson (cj.no.one@gmail.com)\n * Copyright: (c) 2010 Chris Iverson\n * Release Version: 1.0.9.1\n * Date Started: 2010/07/18\n *\n * Liberty BASIC language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/07/22\n *  -  First Release\n *\n * 2010/08/23\n *  -  Added missing default variables\n *\n * TODO (updated 2010/07/20)\n * -------------------------\n * Prevent highlighting numbers in handle names(constants beginning with #)\n * Allow number highlighting after a single period(e.g.  .9 = 0.9, should be\n *     highlighted\n * Prevent highlighting keywords within branch labels(within brackets)\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Liberty BASIC',\n    'COMMENT_SINGLE' => array(1 => '\\''),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'and', 'append', 'as', 'beep', 'bmpbutton', 'bmpsave', 'boolean',\n            'button', 'byref', 'call', 'callback', 'calldll', 'callfn', 'case',\n            'checkbox', 'close', 'cls', 'colordialog', 'combobox', 'confirm',\n            'cursor', 'data', 'dialog', 'dim', 'dll', 'do', 'double', 'dump',\n            'dword', 'else', 'end', 'error', 'exit', 'field', 'filedialog',\n            'files', 'fontdialog', 'for', 'function', 'get', 'gettrim',\n            'global', 'gosub', 'goto', 'graphicbox', 'graphics', 'groupbox',\n            'if', 'input', 'kill', 'let', 'line', 'listbox', 'loadbmp',\n            'locate', 'long', 'loop', 'lprint', 'mainwin', 'maphandle', 'menu',\n            'mod', 'name', 'next', 'nomainwin', 'none', 'notice', 'on',\n            'oncomerror', 'or', 'open', 'out', 'output', 'password', 'playmidi',\n            'playwave', 'popupmenu', 'print', 'printerdialog', 'prompt', 'ptr',\n            'put', 'radiobutton', 'random', 'randomize', 'read', 'readjoystick',\n            'redim', 'rem', 'restore', 'resume', 'return', 'run', 'scan',\n            'seek', 'select', 'short', 'sort', 'statictext', 'stop', 'stopmidi',\n            'struct', 'stylebits', 'sub', 'text', 'textbox', 'texteditor',\n            'then', 'timer', 'titlebar', 'to', 'trace', 'ulong', 'unloadbmp',\n            'until', 'ushort', 'void', 'wait', 'window', 'wend', 'while',\n            'word', 'xor'\n            ),\n        2 => array(\n            'abs', 'acs', 'asc', 'asn', 'atn', 'chr$', 'cos', 'date$',\n            'dechex$', 'eof', 'eval', 'eval$', 'exp', 'hbmp', 'hexdec', 'hwnd',\n            'inp', 'input$', 'inputto$', 'instr', 'int', 'left$', 'len', 'lof',\n            'log', 'lower$', 'max', 'midipos', 'mid$', 'min', 'mkdir', 'not',\n            'right$', 'rmdir', 'rnd', 'sin', 'space$', 'sqr', 'str$', 'tab',\n            'tan', 'time$', 'trim$', 'txcount', 'upper$', 'using', 'val',\n            'winstring', 'word$'\n            ),\n        3 => array(\n            'BackgroundColor$', 'Com', 'ComboboxColor$', 'ComError', 'ComErrorNumber',\n            'CommandLine$', 'ComPortNumber', 'DefaultDir$',\n            'DisplayHeight', 'DisplayWidth', 'Drives$', 'Err', 'Err$',\n            'ForegroundColor$', 'Inkey$', 'Joy1x', 'Joy1y', 'Joy1z',\n            'Joy1button1', 'Joy1button2', 'Joy2x', 'Joy2y', 'Joy2z',\n            'Joy2button1', 'Joy2button2', 'ListboxColor$', 'MouseX', 'MouseY', 'Platform$',\n            'PrintCollate', 'PrintCopies', 'PrinterFont$', 'PrinterName$', 'StartupDir$',\n            'TextboxColor$', 'TexteditorColor$', 'Version$', 'WindowHeight',\n            'WindowWidth', 'UpperLeftX', 'UpperLeftY'\n            )\n        ),\n    'SYMBOLS' => array(\n        1 => array(\n            '(', ')', '[', ']', '+', '-', '*', '/', '%', '=', '<', '>', ':', ',', '#'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000FF;',\n            2 => 'color: #AD0080;',\n            3 => 'color: #008080;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #008000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #FF0000;',\n            ),\n        'METHODS' => array(\n            0 => 'color: #004000;'\n            ),\n        'SYMBOLS' => array(\n            1 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(),\n        'SCRIPT' => array()\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            2 => array(\n                //In LB, the second keyword list is a list of built-in functions,\n                //and their names should not be highlighted unless being used\n                //as a function name.\n                'DISALLOWED_AFTER' => '(?=\\s*\\()'\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/ldif.php",
    "content": "<?php\n/*************************************************************************************\n * ldif.php\n * --------\n * Author: Bruno Harbulot (Bruno.Harbulot@manchester.ac.uk)\n * Copyright: (c) 2005 deguix, (c) 2010 Bruno Harbulot\n * Release Version: 1.0.9.1\n * Date Started: 2010/03/01\n *\n * LDIF language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/03/01 (1.0.8.11)\n *   -  First Release\n *   -  Derived from ini.php (INI language), (c) 2005 deguix\n *\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'LDIF',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        ),\n    'SYMBOLS' => array(\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'BRACKETS' => array(\n            0 => ''\n            ),\n        'STRINGS' => array(\n            0 => 'color: #933;'\n            ),\n        'NUMBERS' => array(\n            0 => ''\n            ),\n        'METHODS' => array(\n            0 => ''\n            ),\n        'SYMBOLS' => array(\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #000066; font-weight: bold;',\n            1 => 'color: #FF0000;'\n            ),\n        'SCRIPT' => array(\n            0 => ''\n            )\n        ),\n    'URLS' => array(\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        0 => array(\n            GESHI_SEARCH => '([a-zA-Z0-9_]+):(.+)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ':\\\\2'\n            ),\n        1 => array(\n            // Evil hackery to get around GeSHi bug: <>\" and ; are added so <span>s can be matched\n            // Explicit match on variable names because if a comment is before the first < of the span\n            // gets chewed up...\n            GESHI_SEARCH => '([<>\";a-zA-Z0-9_]+):(.+)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1:',\n            GESHI_AFTER => ''\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/lisp.php",
    "content": "<?php\n/*************************************************************************************\n * lisp.php\n * --------\n * Author: Roberto Rossi (rsoftware@altervista.org)\n * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/08/30\n *\n * Generic Lisp language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2013/11/13 (1.0.8.13)\n *  -  Fixed bug where a keyword was highlighted in identifiers (Edward Hart)\n * 2005/12/9  (1.0.2)\n *  -  Added support for :keywords and ::access (Denis Mashkevich)\n * 2004/11/27 (1.0.1)\n *  -  Added support for multiple object splitters\n * 2004/08/30 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Lisp',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array(';|' => '|;'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'not','defun','princ','when',\n            'eval','apply','funcall','quote','identity','function',\n            'complement','backquote','lambda','set','setq','setf',\n            'defmacro','gensym','make','symbol','intern',\n            'name','value','plist','get',\n            'getf','putprop','remprop','hash','array','aref',\n            'car','cdr','caar','cadr','cdar','cddr','caaar','caadr','cadar',\n            'caddr','cdaar','cdadr','cddar','cdddr','caaaar','caaadr',\n            'caadar','caaddr','cadaar','cadadr','caddar','cadddr',\n            'cdaaar','cdaadr','cdadar','cdaddr','cddaar','cddadr',\n            'cdddar','cddddr','cons','list','append','reverse','last','nth',\n            'nthcdr','member','assoc','subst','sublis','nsubst',\n            'nsublis','remove','length',\n            'mapc','mapcar','mapl','maplist','mapcan','mapcon','rplaca',\n            'rplacd','nconc','delete','atom','symbolp','numberp',\n            'boundp','null','listp','consp','minusp','zerop','plusp',\n            'evenp','oddp','eq','eql','equal','cond','case','and','or',\n            'let','l','if','prog','prog1','prog2','progn','go','return',\n            'do','dolist','dotimes','catch','throw','error','cerror','break',\n            'continue','errset','baktrace','evalhook','truncate','float',\n            'rem','min','max','abs','sin','cos','tan','expt','exp','sqrt',\n            'random','logand','logior','logxor','lognot','bignums','logeqv',\n            'lognand','lognor','logorc2','logtest','logbitp','logcount',\n            'integer','nil','parse-integer','make-list','print','write'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']',\n        '!', '%', '^', '&',\n        ' + ',' - ',' * ',' / ',\n        '=','<','>',\n        '.',':',',',';',\n        '|'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #555;',\n            1 => 'color: #555;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        '::', ':'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9-\\$_\\|\\#|^&])',\n            ),\n        'OOLANG' => array(\n            'MATCH_AFTER' => '[a-zA-Z][a-zA-Z0-9_\\-]*'\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/llvm.php",
    "content": "<?php\n/*************************************************************************************\n * llvm.php\n * --------\n * Author: Benny Baumann (BenBE@geshi.org), Azriel Fasten (azriel.fasten@gmail.com)\n * Copyright: (c) 2010 Benny Baumann (http://qbnz.com/highlighter/), Azriel Fasten (azriel.fasten@gmail.com)\n * Release Version: 1.0.9.1\n * Date Started: 2010/10/14\n *\n * LLVM language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/10/14 (1.0.8.10)\n *  -  First Release\n *\n * TODO (updated 2010/10/14)\n * -------------------------\n * * Check if all links aren't broken\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'LLVM Intermediate Representation',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array(),\n    'HARDQUOTE' => array(\"\\\"\", \"\\\"\"),\n    'HARDESCAPE' => array(\"\\\"\", \"\\\\\"),\n    'HARDCHAR' => \"\\\\\",\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        // 1 => \"#\\\\\\\\[nfrtv\\$\\\"\\n\\\\\\\\]#i\",\n        //Hexadecimal Char Specs\n        // 2 => \"#\\\\\\\\x[\\da-fA-F]{1,2}#i\",\n        //Octal Char Specs\n        // 3 => \"#\\\\\\\\[0-7]{1,3}#\",\n        //String Parsing of Variable Names\n        // 4 => \"#\\\\$[a-z0-9_]+(?:\\\\[[a-z0-9_]+\\\\]|->[a-z0-9_]+)?|(?:\\\\{\\\\$|\\\\$\\\\{)[a-z0-9_]+(?:\\\\[('?)[a-z0-9_]*\\\\1\\\\]|->[a-z0-9_]+)*\\\\}#i\",\n        //Experimental extension supporting cascaded {${$var}} syntax\n        // 5 => \"#\\$[a-z0-9_]+(?:\\[[a-z0-9_]+\\]|->[a-z0-9_]+)?|(?:\\{\\$|\\$\\{)[a-z0-9_]+(?:\\[('?)[a-z0-9_]*\\\\1\\]|->[a-z0-9_]+)*\\}|\\{\\$(?R)\\}#i\",\n        //Format String support in \"\"-Strings\n        // 6 => \"#%(?:%|(?:\\d+\\\\\\\\\\\\\\$)?\\\\+?(?:\\x20|0|'.)?-?(?:\\d+|\\\\*)?(?:\\.\\d+)?[bcdefFosuxX])#\"\n        ),\n    'NUMBERS' =>\n    GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        0 => array(\n            'to', 'nuw', 'nsw', 'inbounds', 'entry', 'return'\n            ),\n        //Terminator Instructions\n        1 => array(\n            'ret', 'br', 'switch', 'indirectbr', 'invoke', 'resume', 'catchswitch', 'catchret', 'cleanupret', 'unreachable'\n            ),\n        //Binary Operations\n        2 => array(\n            'add', 'fadd', 'sub', 'fsub', 'mul', 'fmul', 'udiv', 'sdiv', 'fdiv', 'urem', 'srem', 'frem'\n            ),\n        //Bitwise Binary Operations\n        3 => array(\n            'shl', 'lshr', 'ashr', 'and', 'or', 'xor'\n            ),\n        //Vector Operations\n        4 => array(\n            'extractelement', 'insertelement', 'shufflevector'\n            ),\n        //Aggregate Operations\n        5 => array(\n            'extractvalue', 'insertvalue'\n            ),\n        //Memory Access and Addressing Operations\n        6 => array(\n            'alloca', 'load', 'store', 'fence', 'cmpxchg', 'atomicrmw', 'getelementptr'\n            ),\n        //Conversion Operations\n        7 => array(\n            'trunc', 'zext', 'sext', 'fptrunc', 'fpext', 'fptoui', 'fptosi', 'uitofp', 'sitofp',\n            'ptrtoint', 'inttoptr', 'bitcast', 'addrspacecast'\n            ),\n        //Other Operations\n        8 => array(\n            'icmp', 'fcmp', 'phi', 'select', 'call', 'va_arg', 'landingpad', 'catchpad', 'cleanuppad'\n            ),\n        //Linkage Types\n        9 => array(\n            'private', 'internal', 'available_externally', 'linkonce', 'weak', 'common', 'appending',\n            'extern_weak', 'linkonce_odr', 'weak_odr', 'external'\n            ),\n        //Calling Conventions\n        10 => array(\n            'ccc', 'fastcc', 'coldcc', 'cc 10', 'cc 11', 'webkit_jscc', 'anyregcc', 'preserve_mostcc',\n            'preserve_allcc', 'cxx_fast_tlscc', 'swiftcc', 'cc'\n            ),\n        //Structure Types\n        11 => array(\n            'type'\n            ),\n        //Parameter Attributes\n        12 => array(\n            'zeroext', 'signext', 'inreg', 'byval', 'inalloca', 'sret', 'align', 'noalias', 'nocapture', 'nest',\n            'returned', 'nonnull', 'dereferenceable', 'dereferenceable_or_null', 'swiftself', 'swifterror'\n            ),\n        //Function Attributes\n        13 => array(\n            'alignstack', 'allocsize', 'alwaysinline', 'builtin', 'cold', 'convergent', 'inaccessiblememonly',\n            'inaccessiblemem_or_argmemonly', 'inlinehint', 'jumptable', 'minsize', 'naked', 'nobuiltin', 'noduplicate',\n            'noimplicitfloat', 'noinline', 'nonlazybind', 'noredzone', 'noreturn', 'norecurse', 'nounwind',\n            'optnone', 'optsize', 'patchable-function', 'readnone', 'readonly', 'writeonly', 'argmemonly',\n            'returns_twice', 'safestack', 'sanitize_address', 'sanitize_memory', 'sanitize_thread', 'ssp',\n            'sspreq', 'sspstrong', 'thunk', 'uwtable'\n            ),\n        //Module-Level Inline Assembly\n        14 => array(\n            'module asm'\n            ),\n        //Data Layout\n        15 => array(\n            'target datalayout'\n            ),\n        //Type System\n        16 => array(\n            'x86_mmx',\n            'void',\n            'label',\n            'metadata',\n            'opaque'\n            ),\n        //Floating Point Types\n        17 => array(\n            'half', 'float', 'double', 'fp128', 'x86_fp80', 'ppc_fp128',\n            ),\n        //Simple Constants\n        18 => array(\n            'false', 'true', 'null'\n            ),\n        //Global Variable\n        19 => array(\n            'global', 'addrspace', 'constant', 'section'\n            ),\n        //Functions\n        20 => array(\n            'declare', 'define'\n            ),\n        //Complex Constants\n        21 => array(\n            'zeroinitializer'\n            ),\n        //Undefined Values\n        22 => array(\n            'undef'\n            ),\n        //Addresses of Basic Blocks\n        23 => array(\n            'blockaddress'\n            ),\n        //Visibility Styles\n        24 => array(\n            'default', 'hidden', 'protected'\n            ),\n        //Volatile Memory Accesses\n        25 => array(\n            'volatile'\n            ),\n        26 => array(\n            'tail'\n            ),\n        ),\n    'SYMBOLS' => array(\n        0 => array(\n            '(', ')', '[', ']', '{', '}',\n            '!', '@', '%', '&', '|', '/',\n            '<', '>',\n            '=', '-', '+', '*',\n            '.', ':', ',', ';'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true,\n        9 => true,\n        10 => true,\n        11 => true,\n        12 => true,\n        13 => true,\n        14 => true,\n        15 => true,\n        16 => true,\n        17 => true,\n        18 => true,\n        19 => true,\n        20 => true,\n        21 => true,\n        22 => true,\n        23 => true,\n        24 => true,\n        25 => true,\n        26 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            0 => 'color: #209090;',\n            1 => 'color: #0000F0;',\n            2 => 'color: #00F000; font-weight: bold;',\n            3 => 'color: #F00000;',\n            4 => 'color: #00F0F0; font-weight: bold;',\n            5 => 'color: #F000F0; font-weight: bold;',\n            6 => 'color: #403020; font-weight: bold;',\n            7 => 'color: #909090; font-weight: bold;',\n            8 => 'color: #009090; font-weight: bold;',\n            9 => 'color: #900090; font-weight: bold;',\n            10 => 'color: #909000; font-weight: bold;',\n            11 => 'color: #000090; font-weight: bold;',\n            12 => 'color: #900000; font-weight: bold;',\n            13 => 'color: #009000; font-weight: bold;',\n            14 => 'color: #F0F090; font-weight: bold;',\n            15 => 'color: #F090F0; font-weight: bold;',\n            16 => 'color: #90F0F0; font-weight: bold;',\n            17 => 'color: #9090F0; font-weight: bold;',\n            18 => 'color: #90F090; font-weight: bold;',\n            19 => 'color: #F09090; font-weight: bold;',\n            20 => 'color: #4040F0; font-weight: bold;',\n            21 => 'color: #40F040; font-weight: bold;',\n            22 => 'color: #F04040; font-weight: bold;',\n            23 => 'color: #F0F040; font-weight: bold;',\n            24 => 'color: #F040F0; font-weight: bold;',\n            25 => 'color: #40F0F0; font-weight: bold;',\n            26 => 'color: #904040; font-weight: bold;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #660099; font-weight: bold;',\n            3 => 'color: #660099; font-weight: bold;',\n            4 => 'color: #006699; font-weight: bold;',\n            5 => 'color: #006699; font-weight: bold; font-style: italic;',\n            6 => 'color: #009933; font-weight: bold;',\n            'HARD' => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;',\n            'HARD' => 'color: #0000ff;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            ),\n        'METHODS' => array(\n            1 => 'color: #004000;',\n            2 => 'color: #004000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;',\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #007088;',\n            1 => 'color: #007088;',\n            // 2 => 'color: #000088;',\n            3 => 'color: #700088;',\n            4 => 'color: #010088;',\n            // 5 => 'color: #610088;',\n            // 6 => 'color: #616088;',\n            // 7 => 'color: #616988;',\n            // 8 => 'color: #616908;',\n            9 => 'color: #6109F8;',\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            3 => '',\n            4 => '',\n            5 => ''\n            )\n        ),\n    'URLS' => array(\n        0 => '',\n        1 => 'http://llvm.org/docs/LangRef.html#{FNAME}-instruction',\n        2 => 'http://llvm.org/docs/LangRef.html#{FNAME}-instruction',\n        3 => 'http://llvm.org/docs/LangRef.html#{FNAME}-instruction',\n        4 => 'http://llvm.org/docs/LangRef.html#{FNAME}-instruction',\n        5 => 'http://llvm.org/docs/LangRef.html#{FNAME}-instruction',\n        6 => 'http://llvm.org/docs/LangRef.html#{FNAME}-instruction',\n        7 => 'http://llvm.org/docs/LangRef.html#{FNAME}-instruction',\n        8 => 'http://llvm.org/docs/LangRef.html#{FNAME}-instruction',\n        9 => 'http://llvm.org/docs/LangRef.html#linkage-types',\n        10 => 'http://llvm.org/docs/LangRef.html#calling-conventions',\n        11 => 'http://llvm.org/docs/LangRef.html#opaque-structure-types',\n        12 => 'http://llvm.org/docs/LangRef.html#parameter-attributes',\n        13 => 'http://llvm.org/docs/LangRef.html#function-attributes',\n        14 => 'http://llvm.org/docs/LangRef.html#module-level-inline-assembly',\n        15 => 'http://llvm.org/docs/LangRef.html#data-layout',\n        16 => 'http://llvm.org/docs/LangRef.html#type-system',\n        17 => 'http://llvm.org/docs/LangRef.html#floating-point-types',\n        18 => 'http://llvm.org/docs/LangRef.html#simple-constants',\n        19 => 'http://llvm.org/docs/LangRef.html#global-variables',\n        20 => 'http://llvm.org/docs/LangRef.html#functions',\n        21 => 'http://llvm.org/docs/LangRef.html#complex-constants',\n        22 => 'http://llvm.org/docs/LangRef.html#undefined-values',\n        23 => 'http://llvm.org/docs/LangRef.html#addresses-of-basic-blocks',\n        24 => 'http://llvm.org/docs/LangRef.html#visibility-styles',\n        25 => 'http://llvm.org/docs/LangRef.html#volatile-memory-accesses',\n        26 => 'http://llvm.org/docs/LangRef.html#call-instruction',\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        //Variables\n        0 => '%[-a-zA-Z$\\._][-a-zA-Z$\\._0-9]*',\n        //Labels\n        // 1 => '[-a-zA-Z$\\._0-9]+:',\n        1 => '(?<!\\w)[\\-\\w\\$\\.]+:(?![^\">]*<)',\n        //Strings\n        // 2 => '\"[^\"]+\"',\n        //Unnamed variable slots\n        3 => '%[-]?[0-9]+',\n        //Integer Types\n        4 => array(\n            GESHI_SEARCH => '(?<!\\w)i\\d+(?!\\w)',\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '<a href=\"http://llvm.org/docs/LangRef.html#t_integer\">',\n            GESHI_AFTER => '</a>'\n            ),\n        //Comments\n        // 5 => ';.*',\n        //Integer literals\n        // 6 => '\\\\b[-]?[0-9]+\\\\b',\n        //Floating point constants\n        // 7 => '\\\\b[-+]?[0-9]+\\.[0-9]*\\([eE][-+]?[0-9]+\\)?\\\\b',\n        //Hex constants\n        // 8 => '\\\\b0x[0-9A-Fa-f]+\\\\b',\n        //Global variables\n        9 => array(\n            GESHI_SEARCH => '@[-a-zA-Z$\\._][-a-zA-Z$\\._0-9]*',\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '<a href=\"http://llvm.org/docs/LangRef.html#globalvars\">',\n            GESHI_AFTER => '</a>'\n            ),\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true\n        ),\n    'SCRIPT_DELIMITERS' => array(),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/locobasic.php",
    "content": "<?php\n/*************************************************************************************\n * locobasic.php\n * -------------\n * Author: Nacho Cabanes\n * Copyright: (c) 2009 Nacho Cabanes (http://www.nachocabanes.com)\n * Release Version: 1.0.9.1\n * Date Started: 2009/03/22\n *\n * Locomotive Basic (Amstrad CPC series) language file for GeSHi.\n *\n * More details at http://en.wikipedia.org/wiki/Locomotive_BASIC\n *\n * CHANGES\n * -------\n * 2009/03/22 (1.0.8.3)\n *  -  First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Locomotive Basic',\n    'COMMENT_SINGLE' => array(1 => \"'\", 2 => 'REM'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            \"AFTER\", \"AND\", \"AUTO\", \"BORDER\", \"BREAK\", \"CALL\", \"CAT\", \"CHAIN\",\n            \"CLEAR\", \"CLG\", \"CLS\", \"CLOSEIN\", \"CLOSEOUT\", \"CONT\", \"CURSOR\",\n            \"DATA\", \"DEF\", \"DEFINT\", \"DEFREAL\", \"DEFSTR\", \"DEG\", \"DELETE\",\n            \"DERR\", \"DI\", \"DIM\", \"DRAW\", \"DRAWR\", \"EDIT\", \"EI\", \"ELSE\", \"END\",\n            \"ENV\", \"ENT\", \"EOF\", \"ERASE\", \"ERL\", \"ERR\", \"ERROR\", \"EVERY\",\n            \"FILL\", \"FN\", \"FOR\", \"FRAME\", \"GOSUB\", \"GOTO\", \"GRAPHICS\", \"HIMEM\",\n            \"IF\", \"INK\", \"INPUT\", \"KEY\", \"LET\", \"LINE\", \"LIST\", \"LOAD\",\n            \"LOCATE\", \"MASK\", \"MEMORY\", \"MERGE\", \"MODE\", \"MOVE\", \"MOVER\", \"NEW\",\n            \"NEXT\", \"NOT\", \"ON\", \"OPENIN\", \"OPENOUT\", \"OR\", \"ORIGIN\", \"PAPER\",\n            \"PEEK\", \"PEN\", \"PLOT\", \"PLOTR\", \"POKE\", \"PRINT\", \"RAD\", \"RANDOMIZE\",\n            \"READ\", \"RELEASE\", \"REMAIN\", \"RENUM\", \"RESTORE\", \"RESUME\", \"RETURN\",\n            \"RUN\", \"SAVE\", \"SPEED\", \"SOUND\", \"SPC\", \"SQ\", \"STEP\", \"STOP\", \"SWAP\",\n            \"SYMBOL\", \"TAB\", \"TAG\", \"TAGOFF\", \"TEST\", \"TESTR\", \"TIME\", \"TO\",\n            \"THEN\", \"TRON\", \"TROFF\", \"USING\", \"WAIT\", \"WEND\", \"WHILE\", \"WIDTH\",\n            \"WINDOW\", \"WRITE\", \"XOR\", \"ZONE\"\n            ),\n        2 => array(\n            \"ABS\", \"ASC\", \"ATN\", \"BIN\", \"CHR\", \"CINT\", \"COPYCHR\", \"COS\",\n            \"CREAL\", \"DEC\", \"FIX\", \"FRE\", \"EXP\", \"HEX\", \"INKEY\", \"INP\", \"INSTR\",\n            \"INT\", \"JOY\", \"LEFT\", \"LEN\", \"LOG\", \"LOG10\", \"LOWER\", \"MAX\", \"MID\",\n            \"MIN\", \"MOD\", \"OUT\", \"PI\", \"POS\", \"RIGHT\", \"RND\", \"ROUND\", \"SGN\",\n            \"SIN\", \"SPACE\", \"SQR\", \"STR\", \"STRING\", \"TAN\", \"UNT\", \"UPPER\",\n            \"VAL\", \"VPOS\", \"XPOS\", \"YPOS\"\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000088; font-weight: bold;',\n            2 => 'color: #AA00AA; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080;',\n            2 => 'color: #808080;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #008800;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0044ff;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/logtalk.php",
    "content": "<?php\n/*************************************************************************************\n * logtalk.php\n * -----------\n *\n * Author: Paulo Moura (pmoura@logtalk.org)\n * Copyright: (c) 2009-2011 Paulo Moura (http://logtalk.org/)\n * Release Version: 1.0.9.1\n * Date Started: 2009/10/24\n *\n * Logtalk language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2011/01/18 (1.1.4)\n *  -  Added syntax coloring of ignore/1\n * 2010/11/28 (1.1.3)\n *  -  Added syntax coloring of conforms_to_protocol/2-3\n * 2010/09/14 (1.1.2)\n *  -  Added syntax coloring of coinductive/1\n * 2010/06/23 (1.1.1)\n *  -  Added syntax coloring of e/0 and pi/0\n *  -  Added syntax coloring of ground/1, numbervars/3, keysort/2, and sort/2\n * 2010/05/15 (1.1.0)\n *  -  Added syntax coloring of callable/1 and compare/3\n * 2009/10/28 (1.0.0)\n *  -  First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Logtalk',\n    'COMMENT_SINGLE' => array(1 => '%'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(2 => \"/0'./sim\"),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\"),\n    'HARDQUOTE' => array('\"', '\"'),\n    'HARDESCAPE' => array(),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[\\\\\\\\abfnrtv\\'\\\"?\\n]#i\",\n        //Hexadecimal Char Specs\n        2 => \"#\\\\\\\\x[\\da-fA-F]+\\\\\\\\#\",\n        //Octal Char Specs\n        3 => \"#\\\\\\\\[0-7]+\\\\\\\\#\"\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC |\n        GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_OCT_PREFIX_0O |\n        GESHI_NUMBER_HEX_PREFIX |\n        GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        // Directives (with arguments)\n        1 => array(\n            // file directives\n            'encoding', 'ensure_loaded',\n            // flag directives\n            'set_logtalk_flag', 'set_prolog_flag',\n            // entity opening directives\n            'category', 'object', 'protocol',\n            // predicate scope directives\n            'private', 'protected', 'public',\n            // conditional compilation directives\n            'elif', 'if',\n            // entity directives\n            'calls', 'initialization', 'op', 'uses',\n            // predicate directives\n            'alias', 'coinductive', 'discontiguous', 'dynamic', 'mode', 'info', 'meta_predicate', 'multifile', 'synchronized',\n            // module directives\n            'export', 'module', 'reexport', 'use_module'\n            ),\n        // Directives (no arguments)\n        2 => array(\n            // entity directives\n            'dynamic',\n            // multi-threading directives\n            'synchronized', 'threaded',\n            // entity closing directives\n            'end_category', 'end_object', 'end_protocol',\n            // conditional compilation directives\n            'else', 'endif'\n            ),\n        // Entity relations\n        3 => array(\n            'complements', 'extends', 'imports', 'implements','instantiates', 'specializes'\n            ),\n        // Built-in predicates (with arguments)\n        4 => array(\n            // event handlers\n            'after', 'before',\n            // execution-context methods\n            'parameter', 'self', 'sender', 'this',\n            // predicate reflection\n            'current_predicate', 'predicate_property',\n            // DCGs and term expansion\n            'expand_goal', 'expand_term', 'goal_expansion', 'phrase', 'term_expansion',\n            // entity\n            'abolish_category', 'abolish_object', 'abolish_protocol',\n            'create_category', 'create_object', 'create_protocol',\n            'current_category', 'current_object', 'current_protocol',\n            'category_property', 'object_property', 'protocol_property',\n            // entity relations\n            'complements_object', 'conforms_to_protocol',\n            'extends_category', 'extends_object', 'extends_protocol',\n            'implements_protocol', 'imports_category',\n            'instantiates_class', 'specializes_class',\n            // events\n            'abolish_events', 'current_event', 'define_events',\n            // flags\n            'current_logtalk_flag', 'set_logtalk_flag',\n            'current_prolog_flag', 'set_prolog_flag',\n            // compiling, loading, and library path\n            'logtalk_compile', 'logtalk_library_path', 'logtalk_load',\n            // database\n            'abolish', 'asserta', 'assertz', 'clause', 'retract', 'retractall',\n            // control\n            'call', 'catch', 'ignore', 'once', 'throw',\n            // all solutions predicates\n            'bagof', 'findall', 'forall', 'setof',\n            // multi-threading meta-predicates\n            'threaded',\n            'threaded_call', 'threaded_once', 'threaded_ignore', 'threaded_exit', 'threaded_peek',\n            'threaded_wait', 'threaded_notify',\n            // term unification\n            'unify_with_occurs_check',\n            // atomic term processing\n            'atom_chars', 'atom_codes', 'atom_concat', 'atom_length',\n            'number_chars', 'number_codes',\n            'char_code',\n            // term creation and decomposition\n            'arg', 'copy_term', 'functor', 'numbervars',\n            // term testing\n            'atom', 'atomic', 'callable', 'compound', 'float', 'ground', 'integer', 'nonvar', 'number', 'sub_atom', 'var',\n            // term comparison\n            'compare',\n            // stream selection and control\n            'current_input', 'current_output', 'set_input', 'set_output',\n            'open', 'close', 'flush_output', 'stream_property',\n            'at_end_of_stream', 'set_stream_position',\n            // character and byte input/output predicates\n            'get_byte', 'get_char', 'get_code',\n            'peek_byte', 'peek_char', 'peek_code',\n            'put_byte', 'put_char', 'put_code',\n            'nl',\n            // term input/output predicates\n            'current_op', 'op',\n            'write', 'writeq', 'write_canonical', 'write_term',\n            'read', 'read_term',\n            'char_conversion', 'current_char_conversion',\n            // hooks\n            'halt',\n            // sorting\n            'keysort', 'sort'\n            ),\n        // Built-in predicates (no arguments)\n        5 => array(\n            // control\n            'fail', 'repeat', 'true',\n            // character and byte input/output predicates\n            'nl',\n            // implementation defined hooks functions\n            'halt',\n            // arithemtic evaluation\n            'is',\n            // stream selection and control\n            'at_end_of_stream', 'flush_output'\n            ),\n        // Evaluable functors (with arguments)\n        6 => array(\n            'float_integer_part', 'float_fractional_part',\n            'rem', 'mod', 'abs', 'sign', 'floor', 'truncate', 'round', 'ceiling',\n            'cos', 'atan', 'exp', 'log', 'sin', 'sqrt'\n            ),\n        // Evaluable functors (no arguments)\n        7 => array(\n            'e', 'pi', 'mod', 'rem'\n            ),\n        ),\n    'SYMBOLS' => array(\n        0 => array(\n            // external call\n            '{', '}'\n            ),\n        1 => array(\n            // arithemtic comparison\n            '=:=', '=\\=', '<', '=<', '>=', '>',\n            // term comparison\n            '<<', '>>', '/\\\\', '\\\\/', '\\\\',\n            // bitwise functors\n            '==', '\\==', '@<', '@=<', '@>=', '@>',\n            // evaluable functors\n            '+', '-', '*', '/', '**',\n            // logic and control\n            '!', '\\\\+', ';',\n            // message sending operators\n            '::', '^^', ':',\n            // grammar rule and conditional functors\n            '-->', '->',\n            // mode operators\n            '@', '?',\n            // term to list predicate\n            '=..',\n            // unification\n            '=', '\\\\='\n            ),\n        2 => array(\n            // clause and directive functors\n            ':-'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #2e4dc9;',\n            2 => 'color: #2e4dc9;',\n            3 => 'color: #2e4dc9;',\n            4 => 'color: #9d4f37;',\n            5 => 'color: #9d4f37;',\n            6 => 'color: #9d4f37;',\n            7 => 'color: #9d4f37;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #430000;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #60a0b0; font-style: italic;',\n            2 => 'color: #430000;',\n            'MULTI' => 'color: #60a0b0; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #9f0000; font-weight: bold;',\n            1 => 'color: #9f0000; font-weight: bold;',\n            2 => 'color: #9f0000; font-weight: bold;',\n            3 => 'color: #9f0000; font-weight: bold;',\n            'HARD' => '',\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #666666;font-weight: bold;',\n            1 => 'color: #666666;font-weight: bold;',\n            2 => 'color: #000000;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #9f0000;',\n            'HARD' => 'color: #9f0000;'\n            ),\n        'METHODS' => array(\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #848484;'\n            ),\n        'SCRIPT' => array()\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        1 => '::'\n        ),\n    'REGEXPS' => array(\n        // variables\n        0 => '\\b(?!(?:PIPE|SEMI|REG3XP\\d*)[^a-zA-Z0-9_])[A-Z_][a-zA-Z0-9_]*(?![a-zA-Z0-9_])'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'BRACKETS' => GESHI_NEVER\n            ),\n        'KEYWORDS' => array(\n            1 => array(\n                'DISALLOWED_BEFORE' => '(?<=:-\\s)',\n                'DISALLOWED_AFTER' => '(?=\\()'\n                ),\n            2 => array(\n                'DISALLOWED_BEFORE' => '(?<=:-\\s)',\n                'DISALLOWED_AFTER' => '(?=\\.)'\n                ),\n            3 => array(\n                'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9\\$_\\|\\#>|^&\\'\"])',\n                'DISALLOWED_AFTER' => '(?=\\()'\n                ),\n            4 => array(\n                'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9\\$_\\|\\#>|^&\\'\"])',\n                'DISALLOWED_AFTER' => '(?=\\()'\n                ),\n            5 => array(\n                'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9\\$_\\|\\#>|^&\\'\"])',\n                'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\\|%\\\\-&\\'\"])'\n                ),\n            6 => array(\n                'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9\\$_\\|\\#;>|^&\\'\"])',\n                'DISALLOWED_AFTER' => '(?=\\()'\n                ),\n            7 => array(\n                'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9\\$_\\|\\#;>|^&\\'\"])',\n                'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\\|%\\\\-&\\'\"])'\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/lolcode.php",
    "content": "<?php\n/*************************************************************************************\n * lolcode.php\n * ----------\n * Author: Benny Baumann (BenBE@geshi.org)\n * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2009/10/31\n *\n * LOLcode language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2014/2/25\n *   -  Fixed to not throw missing index exception.\n *\n * 2008/10/31 (1.0.8.1)\n *   -  First Release\n *\n * TODO\n * ----\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'LOLcode',\n    'COMMENT_SINGLE' => array('BTW'),\n    'COMMENT_MULTI' => array('BTW','WTB'),\n    'COMMENT_REGEXP' => array(\n        1 => \"/\\bBTW\\b.*$/im\",\n        2 => \"/(^|\\b)(?:OBTW\\b.+?\\bTLDR|LOL\\b.+?\\/LOL)(\\b|$)/si\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        1 => '/:[)>o\":]/',\n        2 => '/:\\([\\da-f]+\\)/i',\n        3 => '/:\\{\\w+\\}/i',\n        4 => '/:\\[\\w+\\]/i',\n        ),\n    'KEYWORDS' => array(\n        //Statements\n        1 => array(\n            'VISIBLE', 'HAI', 'KTHX', 'KTHXBYE', 'SMOOSH', 'GIMMEH', 'PLZ',\n            'ON', 'INVISIBLE', 'R', 'ITZ', 'GTFO', 'COMPLAIN', 'GIMME',\n\n            'OPEN', 'FILE', 'I HAS A', 'AWSUM THX', 'O NOES', 'CAN', 'HAS', 'HAZ',\n            'HOW DOES I', 'IF U SAY SO', 'FOUND YR', 'BORROW', 'OWN', 'ALONG',\n            'WITH', 'WIT', 'LOOK', 'AT', 'AWSUM', 'THX'\n            ),\n        //Conditionals\n        2 => array(\n            'IZ', 'YARLY', 'NOWAI', 'WTF?', 'MEBBE', 'OMG', 'OMGWTF',\n            'ORLY?', 'OF', 'NOPE', 'SO', 'IM', 'MAI',\n\n            'O RLY?', 'SUM', 'BOTH SAEM', 'DIFFRINT', 'BOTH', 'EITHER', 'WON',\n            'DIFF', 'PRODUKT', 'QUOSHUNT', 'MOD', 'MKAY', 'OK', 'THING',\n            'BIGNESS'\n            ),\n        //Repetition\n        3 => array(\n            'IN', 'OUTTA', 'LOOP', 'WHILE'\n            ),\n        //Operators \\Math\n        4 => array(\n            'AN', 'AND', 'NOT', 'UP', 'YR', 'UPPIN', 'NERF', 'NERFIN', 'NERFZ',\n            'SMASHING', 'UR', 'KINDA', 'LIKE', 'SAEM', 'BIG', 'SMALL',\n            'BIGGR', 'SMALLR', 'BIGGER', 'SMALLER', 'GOOD', 'CUTE', 'THAN'\n            )\n        ),\n    'SYMBOLS' => array(\n        '.', ',', '?',\n        '!!'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #008000;',\n            2 => 'color: #000080;',\n            3 => 'color: #000080;',\n            4 => 'color: #800000;'\n            ),\n        'COMMENTS' => array(\n            0 => 'color: #666666; style: italic;',\n            1 => 'color: #666666; style: italic;',\n            2 => 'color: #666666; style: italic;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #00F;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #0F0;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #00F;'\n            ),\n        'SCRIPT' => array(\n            0 => 'color: #00F;'\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'SPACE_AS_WHITESPACE' => true\n            )\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/lotusformulas.php",
    "content": "<?php\n/*************************************************************************************\n * lotusformulas.php\n * ------------------------\n * Author: Richard Civil (info@richardcivil.net)\n * Copyright: (c) 2008 Richard Civil (info@richardcivil.net), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2008/04/12\n *\n * @Formula/@Command language file for GeSHi.\n *\n * @Formula/@Command source: IBM Lotus Notes/Domino 8 Designer Help\n *\n * CHANGES\n * -------\n * 2008/04/12 (1.0.7.22)\n *  -  First Release\n *\n * TODO (updated 2008/04/12)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Lotus Notes @Formulas',\n    'COMMENT_SINGLE' => array(1 => \"'\"),\n    'COMMENT_MULTI' => array('REM' => ';'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array (\n            '[ZoomPreview]', '[WorkspaceStackReplicaIcons]',\n            '[WorkspaceProperties]', '[WindowWorkspace]',\n            '[WindowTile]', '[WindowRestore]', '[WindowNext]',\n            '[WindowMinimizeAll]', '[WindowMinimize]', '[WindowMaximizeAll]',\n            '[WindowMaximize]', '[WindowCascade]', '[ViewSwitchForm]',\n            '[ViewShowUnread]', '[ViewShowServerNames]', '[ViewShowSearchBar]',\n            '[ViewShowRuler]', '[ViewShowPageBreaks]', '[ViewShowOnlyUnread]',\n            '[ViewShowOnlySelected]', '[ViewShowOnlySearchResults]',\n            '[ViewShowOnlyCategories]', '[ViewShowObject]',\n            '[ViewShowFieldHelp]', '[ViewRenamePerson]', '[ViewRefreshUnread]',\n            '[ViewRefreshFields]', '[ViewNavigatorsNone]',\n            '[ViewNavigatorsFolders]', '[ViewMoveName]', '[ViewHorizScrollbar]',\n            '[ViewExpandWithChildren]', '[ViewExpandAll]', '[ViewExpand]',\n            '[ViewCollapseAll]', '[ViewCollapse]', '[ViewChange]',\n            '[ViewCertify]', '[ViewBesideFolders]', '[ViewBelowFolders]',\n            '[ViewArrangeIcons]', '[V3EditPrevField]', '[V3EditNextField]',\n            '[UserIDSwitch]', '[UserIDSetPassword]', '[UserIDMergeCopy]',\n            '[UserIDInfo]', '[UserIDEncryptionKeys]', '[UserIDCreateSafeCopy]',\n            '[UserIDClearPassword]', '[UserIDCertificates]',\n            '[ToolsUserLogoff]', '[ToolsSpellCheck]', '[ToolsSmartIcons]',\n            '[ToolsSetupUserSetup]', '[ToolsSetupPorts]', '[ToolsSetupMail]',\n            '[ToolsSetupLocation]', '[ToolsScanUnreadSelected]',\n            '[ToolsScanUnreadPreferred]', '[ToolsScanUnreadChoose]',\n            '[ToolsRunMacro]', '[ToolsRunBackgroundMacros]', '[ToolsReplicate]',\n            '[ToolsRefreshSelectedDocs]', '[ToolsRefreshAllDocs]',\n            '[ToolsMarkSelectedUnread]', '[ToolsMarkSelectedRead]',\n            '[ToolsMarkAllUnread]', '[ToolsMarkAllRead]', '[ToolsHangUp]',\n            '[ToolsCategorize]', '[ToolsCall]', '[TextUnderline]',\n            '[TextSpacingSingle]', '[TextSpacingOneAndaHalf]',\n            '[TextSpacingDouble]', '[TextSetFontSize]', '[TextSetFontFace]',\n            '[TextSetFontColor]', '[TextReduceFont]', '[TextPermanentPen]',\n            '[TextParagraphStyles]', '[TextParagraph]', '[TextOutdent]',\n            '[TextNumbers]', '[TextNormal]', '[TextItalic]', '[TextFont]',\n            '[TextEnlargeFont]', '[TextCycleSpacing]', '[TextBullet]',\n            '[TextBold]', '[TextAlignRight]', '[TextAlignNone]',\n            '[TextAlignLeft]', '[TextAlignFull]', '[TextAlignCenter]',\n            '[SwitchView]', '[SwitchForm]', '[StyleCycleKey]',\n            '[SmartIconsNextSet]', '[SmartIconsFloating]', '[ShowProperties]',\n            '[ShowHidePreviewPane]', '[ShowHideParentPreview]',\n            '[ShowHideLinkPreview]', '[ShowHideIMContactList]',\n            '[SetCurrentLocation]', '[SendInstantMessage]',\n            '[SectionRemoveHeader]', '[SectionProperties]',\n            '[SectionExpandAll]', '[SectionExpand]', '[SectionDefineEditors]',\n            '[SectionCollapseAll]', '[SectionCollapse]', '[RunScheduledAgents]',\n            '[RunAgent]', '[ReplicatorStop]', '[ReplicatorStart]',\n            '[ReplicatorSendReceiveMail]', '[ReplicatorSendMail]',\n            '[ReplicatorReplicateWithServer]', '[ReplicatorReplicateSelected]',\n            '[ReplicatorReplicateNext]', '[ReplicatorReplicateHigh]',\n            '[Replicator]', '[RenameDatabase]', '[RemoveFromFolder]',\n            '[RemoteDebugLotusScript]', '[ReloadWindow]', '[RefreshWindow]',\n            '[RefreshParentNote]', '[RefreshHideFormulas]', '[RefreshFrame]',\n            '[PublishDatabase]', '[PictureProperties]', '[PasteBitmapAsObject]',\n            '[PasteBitmapAsBackground]', '[OpenView]', '[OpenPage]',\n            '[OpenNavigator]', '[OpenInNewWindow]', '[OpenHelpDocument]',\n            '[OpenFrameset]', '[OpenDocument]', '[OpenCalendar]',\n            '[ObjectProperties]', '[ObjectOpen]', '[ObjectDisplayAs]',\n            '[NavPrevUnread]', '[NavPrevSelected]', '[NavPrevMain]',\n            '[NavPrev]', '[NavNextUnread]', '[NavNextSelected]',\n            '[NavNextMain]', '[NavNext]', '[NavigatorTest]',\n            '[NavigatorProperties]', '[NavigateToBacklink]',\n            '[NavigatePrevUnread]', '[NavigatePrevSelected]',\n            '[NavigatePrevMain]', '[NavigatePrevHighlight]', '[NavigatePrev]',\n            '[NavigateNextUnread]', '[NavigateNextSelected]',\n            '[NavigateNextMain]', '[NavigateNextHighlight]', '[NavigateNext]',\n            '[MoveToTrash]', '[MailSendPublicKey]', '[MailSendEncryptionKey]',\n            '[MailSendCertificateRequest]', '[MailSend]', '[MailScanUnread]',\n            '[MailRequestNewPublicKey]', '[MailRequestNewName]',\n            '[MailRequestCrossCert]', '[MailOpen]', '[MailForwardAsAttachment]',\n            '[MailForward]', '[MailComposeMemo]', '[MailAddress]',\n            '[LayoutProperties]', '[LayoutElementSendToBack]',\n            '[LayoutElementProperties]', '[LayoutElementBringToFront]',\n            '[LayoutAddText]', '[LayoutAddGraphic]', '[InsertSubform]',\n            '[HotspotProperties]', '[HotspotClear]', '[HelpUsingDatabase]',\n            '[HelpAboutNotes]', '[HelpAboutDatabase]', '[GoUpLevel]',\n            '[FormTestDocument]', '[FormActions]', '[FolderRename]',\n            '[FolderProperties]', '[FolderMove]', '[FolderExpandWithChildren]',\n            '[FolderExpandAll]', '[FolderExpand]', '[FolderDocuments]',\n            '[FolderCustomize]', '[FolderCollapse]', '[Folder]',\n            '[FindFreeTimeDialog]', '[FileSaveNewVersion]', '[FileSave]',\n            '[FilePrintSetup]', '[FilePrint]', '[FilePageSetup]',\n            '[FileOpenDBRepID]', '[FileOpenDatabase]', '[FileNewReplica]',\n            '[FileNewDatabase]', '[FileImport]', '[FileFullTextUpdate]',\n            '[FileFullTextInfo]', '[FileFullTextDelete]',\n            '[FileFullTextCreate]', '[FileExport]', '[FileExit]',\n            '[FileDatabaseUseServer]', '[FileDatabaseRemove]',\n            '[FileDatabaseInfo]', '[FileDatabaseDelete]', '[FileDatabaseCopy]',\n            '[FileDatabaseCompact]', '[FileDatabaseACL]', '[FileCloseWindow]',\n            '[ExitNotes]', '[Execute]', '[ExchangeUnreadMarks]', '[EmptyTrash]',\n            '[EditUp]', '[EditUntruncate]', '[EditUndo]', '[EditTop]',\n            '[EditTableInsertRowColumn]', '[EditTableFormat]',\n            '[EditTableDeleteRowColumn]', '[EditShowHideHiddenChars]',\n            '[EditSelectByDate]', '[EditSelectAll]', '[EditRight]',\n            '[EditRestoreDocument]', '[EditResizePicture]',\n            '[EditQuoteSelection]', '[EditProfileDocument]', '[EditProfile]',\n            '[EditPrevField]', '[EditPhoneNumbers]', '[EditPasteSpecial]',\n            '[EditPaste]', '[EditOpenLink]', '[EditNextField]',\n            '[EditMakeDocLink]', '[EditLocations]', '[EditLinks]', '[EditLeft]',\n            '[EditInsertText]', '[EditInsertTable]', '[EditInsertPopup]',\n            '[EditInsertPageBreak]', '[EditInsertObject]',\n            '[EditInsertFileAttachment]', '[EditInsertButton]',\n            '[EditIndentFirstLine]', '[EditIndent]', '[EditHorizScrollbar]',\n            '[EditHeaderFooter]', '[EditGotoField]', '[EditFindNext]',\n            '[EditFindInPreview]', '[EditFind]', '[EditEncryptionKeys]',\n            '[EditDown]', '[EditDocument]', '[EditDetach]', '[EditDeselectAll]',\n            '[EditCut]', '[EditCopy]', '[EditClear]', '[EditButton]',\n            '[EditBottom]', '[DiscoverFolders]', '[Directories]',\n            '[DialingRules]', '[DesignViewSelectFormula]', '[DesignViews]',\n            '[DesignViewNewColumn]', '[DesignViewFormFormula]',\n            '[DesignViewEditActions]', '[DesignViewColumnDef]',\n            '[DesignViewAttributes]', '[DesignViewAppendColumn]',\n            '[DesignSynopsis]', '[DesignSharedFields]', '[DesignReplace]',\n            '[DesignRefresh]', '[DesignMacros]', '[DesignIcon]',\n            '[DesignHelpUsingDocument]', '[DesignHelpAboutDocument]',\n            '[DesignFormWindowTitle]', '[DesignFormUseField]',\n            '[DesignFormShareField]', '[DesignForms]', '[DesignFormNewField]',\n            '[DesignFormFieldDef]', '[DesignFormAttributes]',\n            '[DesignDocumentInfo]', '[DebugLotusScript]',\n            '[DatabaseReplSettings]', '[DatabaseDelete]', '[CreateView]',\n            '[CreateTextbox]', '[CreateSubForm]', '[CreateSection]',\n            '[CreateRectangularHotspot]', '[CreateRectangle]',\n            '[CreatePolyline]', '[CreatePolygon]', '[CreateNavigator]',\n            '[CreateLayoutRegion]', '[CreateForm]', '[CreateFolder]',\n            '[CreateEllipse]', '[CreateControlledAccessSection]',\n            '[CreateAgent]', '[CreateAction]', '[CopySelectedAsTable]',\n            '[ComposeWithReference]', '[Compose]', '[CloseWindow]', '[Clear]',\n            '[ChooseFolders]', '[CalendarGoTo]', '[CalendarFormat]',\n            '[AttachmentView]', '[AttachmentProperties]', '[AttachmentLaunch]',\n            '[AttachmentDetachAll]', '[AgentTestRun]', '[AgentSetServerName]',\n            '[AgentRun]', '[AgentLog]', '[AgentEnableDisable]', '[AgentEdit]',\n            '[AdminTraceConnection]', '[AdminStatisticsConfig]',\n            '[AdminSendMailTrace]', '[AdminRemoteConsole]',\n            '[AdminRegisterUser]', '[AdminRegisterServer]',\n            '[AdminRegisterFromFile]', '[AdminOutgoingMail]',\n            '[AdminOpenUsersView]', '[AdminOpenStatistics]',\n            '[AdminOpenServersView]', '[AdminOpenServerLog]',\n            '[AdminOpenGroupsView]', '[AdminOpenCertLog]', '[AdminOpenCatalog]',\n            '[AdminOpenAddressBook]', '[AdminNewOrgUnit]',\n            '[AdminNewOrganization]', '[Administration]',\n            '[AdminIDFileSetPassword]', '[AdminIDFileExamine]',\n            '[AdminIDFileClearPassword]', '[AdminDatabaseQuotas]',\n            '[AdminDatabaseAnalysis]', '[AdminCrossCertifyKey]',\n            '[AdminCrossCertifyIDFile]', '[AdminCreateGroup]', '[AdminCertify]',\n            '[AddToIMContactList]', '[AddDatabaseRepID]', '[AddDatabase]',\n            '[AddBookmark]'\n            ),\n        2 => array(\n            'SELECT', 'FIELD', 'ENVIRONMENT', 'DEFAULT', '@Zone ', '@Yesterday',\n            '@Yes', '@Year', '@Word', '@Wide', '@While', '@Weekday',\n            '@WebDbName', '@ViewTitle', '@ViewShowThisUnread', '@Version',\n            '@VerifyPassword', '@ValidateInternetAddress', '@V4UserAccess',\n            '@V3UserName', '@V2If', '@UserRoles', '@UserPrivileges',\n            '@UserNamesList', '@UserNameLanguage', '@UserName', '@UserAccess',\n            '@UrlQueryString', '@URLOpen', '@URLHistory', '@URLGetHeader',\n            '@URLEncode', '@URLDecode', '@UpperCase', '@UpdateFormulaContext',\n            '@Unique', '@UndeleteDocument', '@Unavailable', '@True', '@Trim',\n            '@Transform', '@ToTime', '@ToNumber', '@Tomorrow', '@Today',\n            '@TimeZoneToText', '@TimeToTextInZone', '@TimeMerge', '@Time',\n            '@ThisValue', '@ThisName', '@TextToTime', '@TextToNumber', '@Text',\n            '@TemplateVersion', '@Tan', '@Sum', '@Success', '@Subset',\n            '@StatusBar', '@Sqrt', '@Soundex', '@Sort', '@Sin', '@Sign',\n            '@SetViewInfo', '@SetTargetFrame', '@SetProfileField',\n            '@SetHTTPHeader', '@SetField', '@SetEnvironment', '@SetDocField',\n            '@Set', '@ServerName', '@ServerAccess', '@Select', '@Second',\n            '@Round', '@RightBack', '@Right', '@Return', '@Responses',\n            '@ReplicaID', '@ReplaceSubstring', '@Replace', '@Repeat',\n            '@RegQueryValue', '@RefreshECL', '@Random', '@ProperCase',\n            '@Prompt', '@Power', '@PostedCommand', '@PolicyIsFieldLocked',\n            '@Platform', '@PickList', '@Pi', '@PasswordQuality', '@Password',\n            '@OrgDir', '@OptimizeMailAddress', '@OpenInNewWindow', '@Now',\n            '@Nothing', '@NoteID', '@No', '@NewLine', '@Narrow', '@NameLookup',\n            '@Name', '@Month', '@Modulo', '@Modified', '@Minute', '@Min',\n            '@MiddleBack', '@Middle', '@Member', '@Max', '@Matches',\n            '@MailSignPreference', '@MailSend', '@MailSavePreference',\n            '@MailEncryptSentPreference', '@MailEncryptSavedPreference',\n            '@MailDbName', '@LowerCase', '@Log', '@Locale', '@Ln', '@Like',\n            '@Length', '@LeftBack', '@Left', '@LDAPServer', '@LaunchApp',\n            '@LanguagePreference', '@Keywords', '@IsVirtualizedDirectory',\n            '@IsValid', '@IsUsingJavaElement', '@IsUnavailable', '@IsTime',\n            '@IsText', '@IsResponseDoc', '@IsNumber', '@IsNull', '@IsNotMember',\n            '@IsNewDoc', '@IsModalHelp', '@IsMember', '@IsExpandable',\n            '@IsError', '@IsEmbeddedInsideWCT', '@IsDocTruncated',\n            '@IsDocBeingSaved', '@IsDocBeingRecalculated', '@IsDocBeingMailed',\n            '@IsDocBeingLoaded', '@IsDocBeingEdited', '@IsDB2', '@IsCategory',\n            '@IsAvailable', '@IsAppInstalled', '@IsAgentEnabled', '@Integer',\n            '@InheritedDocumentUniqueID', '@Implode', '@IfError', '@If',\n            '@Hour', '@HashPassword', '@HardDeleteDocument', '@GetViewInfo',\n            '@GetProfileField', '@GetPortsList', '@GetIMContactListGroupNames',\n            '@GetHTTPHeader', '@GetFocusTable', '@GetField', '@GetDocField',\n            '@GetCurrentTimeZone', '@GetAddressBooks', '@FormLanguage', '@For',\n            '@FontList', '@FloatEq', '@FileDir', '@False', '@Failure',\n            '@Explode', '@Exp', '@Eval', '@Error', '@Environment', '@Ends',\n            '@EnableAlarms', '@Elements', '@EditUserECL', '@EditECL',\n            '@DoWhile', '@Domain', '@DocumentUniqueID', '@DocSiblings',\n            '@DocParentNumber', '@DocOmmittedLength', '@DocNumber', '@DocMark',\n            '@DocLock', '@DocLevel', '@DocLength', '@DocFields',\n            '@DocDescendants', '@DocChildren', '@Do', '@DialogBox',\n            '@DeleteField', '@DeleteDocument', '@DDETerminate', '@DDEPoke',\n            '@DDEInitiate', '@DDEExecute', '@DbTitle', '@DbName', '@DbManager',\n            '@DbLookup', '@DbExists', '@DbCommand', '@DbColumn', '@DB2Schema',\n            '@Day', '@Date', '@Created', '@Count', '@Cos', '@Contains',\n            '@ConfigFile', '@Compare', '@Command', '@ClientType',\n            '@CheckFormulaSyntax', '@CheckAlarms', '@Char', '@Certificate',\n            '@BusinessDays', '@BrowserInfo', '@Begins', '@Author',\n            '@Attachments', '@AttachmentNames', '@AttachmentModifiedTimes',\n            '@AttachmentLengths', '@ATan2', '@ATan', '@ASin', '@Ascii',\n            '@AllDescendants', '@AllChildren', '@All', '@AdminECLIsLocked',\n            '@Adjust', '@AddToFolder', '@ACos', '@Accessed', '@AbstractSimple',\n            '@Abstract', '@Abs'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #800000;',\n            2 => 'color: #0000FF;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #FF00FF;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #FF00FF;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #0000AA;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 2\n);\n"
  },
  {
    "path": "includes/geshi/lotusscript.php",
    "content": "<?php\n/**\n * lotusscript.php\n * ------------------------\n * Author: Richard Civil (info@richardcivil.net)\n * Copyright: (c) 2008 Richard Civil (info@richardcivil.net), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2008/04/12\n *\n * LotusScript language file for GeSHi.\n *\n * LotusScript source: IBM Lotus Notes/Domino 8 Designer Help\n *\n * CHANGES\n * -------\n * 2008/04/12 (1.0.7.22)\n *     -  First Release\n *\n * TODO (2008/04/12)\n * -----------------\n *\n *************************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'LotusScript',\n    'COMMENT_SINGLE' => array(1 => \"'\"),\n    'COMMENT_MULTI' => array('%REM' => '%END REM'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"' , \"|\"),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array (\n            'Yield', 'Year', 'Xor', 'Write', 'With', 'Width', 'While', 'Wend',\n            'Weekday', 'VarType', 'Variant', 'Val', 'UString', 'UString$',\n            'UseLSX', 'Use', 'Until', 'Unlock', 'Unicode', 'Uni', 'UChr',\n            'UChr$', 'UCase', 'UCase$', 'UBound', 'TypeName', 'Type', 'TRUE',\n            'Trim', 'Trim$', 'Today', 'To', 'TimeValue', 'TimeSerial', 'Timer',\n            'TimeNumber', 'Time', 'Time$', 'Then', 'Text', 'Tan', 'Tab', 'Sub',\n            'StrToken', 'StrToken$', 'StrRightBack', 'StrRightBack$',\n            'StrRight', 'StrRight$', 'StrLeftBack', 'StrLeftBack$', 'StrLeft',\n            'StrLeft$', 'String', 'String$', 'StrConv', 'StrCompare', 'StrComp',\n            'Str', 'Str$', 'Stop', 'Step', 'Static', 'Sqr', 'Split', 'Spc',\n            'Space', 'Space$', 'Sleep', 'Single', 'Sin', 'Shell', 'Shared',\n            'Sgn', 'SetFileAttr', 'SetAttr', 'Set', 'SendKeys', 'Select',\n            'Seek', 'Second', 'RTrim', 'RTrim$', 'RSet', 'Round', 'Rnd',\n            'RmDir', 'RightC', 'RightC$', 'RightBP', 'RightBP$', 'RightB',\n            'RightB$', 'Right', 'Right$', 'Return', 'Resume', 'Reset',\n            'Replace', 'Remove', 'Rem', 'ReDim', 'Read', 'Randomize',\n            'Random', 'Put', 'Public', 'Property', 'Private', 'Print',\n            'Preserve', 'Pitch', 'PI', 'Output', 'Or', 'Option', 'Open', 'On',\n            'Oct', 'Oct$', 'NULL', 'Now', 'NOTHING', 'Not', 'NoPitch', 'NoCase',\n            'Next', 'New', 'Name', 'MsgBox', 'Month', 'Mod', 'MkDir', 'Minute',\n            'MidC', 'MidC$', 'MidBP', 'MidBP$', 'MidB', 'MidB$', 'Mid', 'Mid$',\n            'MessageBox', 'Me', 'LTrim', 'LTrim$', 'LSServer', 'LSI_Info',\n            'LSet', 'Loop', 'Long', 'Log', 'LOF', 'Lock', 'LOC', 'LMBCS',\n            'ListTag', 'List', 'Line', 'Like', 'Lib', 'Let', 'LenC', 'LenBP',\n            'LenB', 'Len', 'LeftC', 'LeftC$', 'LeftBP', 'LeftBP$', 'LeftB',\n            'LeftB$', 'Left', 'Left$', 'LCase', 'LCase$', 'LBound', 'Kill',\n            'Join', 'IsUnknown', 'IsScalar', 'IsObject', 'IsNumeric', 'IsNull',\n            'IsList', 'IsEmpty', 'IsElement', 'IsDate', 'IsArray', 'IsA', 'Is',\n            'Integer', 'Int', 'InStrC', 'InStrBP', 'InStrB', 'InStr', 'InputBP',\n            'InputBP$', 'InputBox', 'InputBox$', 'InputB', 'InputB$', 'Input',\n            'Input$', 'In', 'IMSetMode', 'Implode', 'Implode$', 'Imp',\n            'IMEStatus', 'If', 'Hour', 'Hex', 'Hex$', 'Goto', 'GoSub',\n            'GetThreadInfo', 'GetFileAttr', 'GetAttr', 'Get', 'Function',\n            'FullTrim', 'From', 'FreeFile', 'Fraction', 'Format', 'Format$',\n            'ForAll', 'For', 'Fix', 'FileLen', 'FileDateTime', 'FileCopy',\n            'FileAttr', 'FALSE', 'Explicit', 'Exp', 'Exit', 'Execute', 'Event',\n            'Evaluate', 'Error', 'Error$', 'Err', 'Erl', 'Erase', 'Eqv', 'EOF',\n            'Environ', 'Environ$', 'End', 'ElseIf', 'Else', 'Double', 'DoEvents',\n            'Do', 'Dir', 'Dir$', 'Dim', 'DestroyLock', 'Delete', 'DefVar',\n            'DefStr', 'DefSng', 'DefLng', 'DefInt', 'DefDbl', 'DefCur',\n            'DefByte', 'DefBool', 'Declare', 'Day', 'DateValue', 'DateSerial',\n            'DateNumber', 'Date', 'Date$', 'DataType', 'CVDate', 'CVar',\n            'Currency', 'CurDrive', 'CurDrive$', 'CurDir', 'CurDir$', 'CStr',\n            'CSng', 'CreateLock', 'Cos', 'Const', 'Compare', 'Command',\n            'Command$', 'CodeUnlock', 'CodeLockCheck', 'CodeLock', 'Close',\n            'CLng', 'Class', 'CInt', 'Chr', 'Chr$', 'ChDrive', 'ChDir', 'CDbl',\n            'CDat', 'CCur', 'CByte', 'CBool', 'Case', 'Call', 'ByVal', 'Byte',\n            'Boolean', 'Bind', 'Binary', 'Bin', 'Bin$', 'Beep', 'Base', 'Atn2',\n            'Atn', 'ASin', 'Asc', 'As', 'ArrayUnique', 'ArrayReplace',\n            'ArrayGetIndex', 'ArrayAppend', 'Append', 'AppActivate', 'Any',\n            'And', 'Alias', 'ActivateApp', 'ACos', 'Access', 'Abs', '%Include',\n            '%If', '%END', '%ElseIf', '%Else'\n            ),\n        2 => array (\n            'NotesXSLTransformer', 'NotesXMLProcessor', 'NotesViewNavigator',\n            'NotesViewEntryCollection', 'NotesViewEntry', 'NotesViewColumn',\n            'NotesView', 'NotesUIWorkspace', 'NotesUIView', 'NotesUIScheduler',\n            'NotesUIDocument', 'NotesUIDatabase', 'NotesTimer', 'NotesStream',\n            'NotesSession', 'NotesSAXParser', 'NotesSAXException',\n            'NotesSAXAttributeList', 'NotesRichTextTable', 'NotesRichTextTab',\n            'NotesRichTextStyle', 'NotesRichTextSection', 'NotesRichTextRange',\n            'NotesRichTextParagraphStyle', 'NotesRichTextNavigator',\n            'NotesRichTextItem', 'NotesRichTextDocLink',\n            'NotesReplicationEntry', 'NotesReplication', 'NotesRegistration',\n            'NotesOutlineEntry', 'NotesOutline', 'NotesNoteCollection',\n            'NotesNewsLetter', 'NotesName', 'NotesMIMEHeader',\n            'NotesMIMEEntity', 'NotesLog', 'NotesItem', 'NotesInternational',\n            'NotesForm', 'NotesEmbeddedObject', 'NotesDXLImporter',\n            'NotesDXLExporter', 'NotesDOMXMLDeclNode', 'NotesDOMTextNode',\n            'NotesDOMProcessingInstructionNode', 'NotesDOMParser',\n            'NotesDOMNotationNode', 'NotesDOMNodeList', 'NotesDOMNode',\n            'NotesDOMNamedNodeMap', 'NotesDOMEntityReferenceNode',\n            'NotesDOMEntityNode', 'NotesDOMElementNode',\n            'NotesDOMDocumentTypeNode', 'NotesDOMDocumentNode',\n            'NotesDOMDocumentFragmentNode', 'NotesDOMCommentNode',\n            'NotesDOMCharacterDataNote', 'NotesDOMCDATASectionNode',\n            'NotesDOMAttributeNode', 'NotesDocumentCollection', 'NotesDocument',\n            'NotesDbDirectory', 'NotesDateTime', 'NotesDateRange',\n            'NotesDatabase', 'NotesColorObject', 'NotesAgent',\n            'NotesAdministrationProcess', 'NotesACLEntry', 'NotesACL',\n            'Navigator', 'Field', 'Button'\n            )\n        ) ,\n    'SYMBOLS' => array(\n        '(', ')'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000FF;',\n            2 => 'color: #0000EE;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #000000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #FF00FF;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #0000AA;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #006600;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 2\n);\n"
  },
  {
    "path": "includes/geshi/lscript.php",
    "content": "<?php\n/*************************************************************************************\n * lscript.php\n * ---------\n * Author: Arendedwinter (admin@arendedwinter.com)\n * Copyright: (c) 2008 Beau McGuigan (http://www.arendedwinter.com)\n * Release Version: 1.0.9.1\n * Date Started: 15/11/2008\n *\n * Lightwave Script language file for GeSHi.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'LScript',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n    //Yes, I'm aware these are out of order,\n    //I had to rearrange and couldn't be bothered changing the numbers...\n        7 => array(\n            '@data', '@define', '@else', '@end', '@fpdepth', '@if', '@include',\n            '@insert', '@library', '@localipc', '@name', '@save', '@script',\n            '@sequence', '@version', '@warnings'\n            ),\n        1 => array(\n            'break', 'case', 'continue', 'else', 'end', 'false', 'for',\n            'foreach', 'if', 'return', 'switch', 'true', 'while',\n            ),\n        3 => array(\n            'active', 'alertlevel', 'alpha', 'alphaprefix', 'animfilename', 'autokeycreate',\n            'backdroptype', 'blue', 'boxthreshold', 'button',\n            'channelsvisible', 'childrenvisible', 'compfg', 'compbg', 'compfgalpha',\n            'coneangles', 'cosine', 'count', 'ctl', 'curFilename', 'curFrame',\n            'currenttime', 'curTime', 'curType',\n            'depth', 'diffshade', 'diffuse', 'dimensions', 'displayopts', 'dynamicupdate',\n            'end', 'eta',\n            'filename', 'flags', 'fogtype', 'fps', 'frame', 'frameend', 'frameheight',\n            'framestart', 'framestep', 'framewidth',\n            'generalopts', 'genus', 'geometry', 'gNorm', 'goal', 'green',\n            'h', 'hasAlpha', 'height',\n            'id', 'innerlimit', 'isColor',\n            'keyCount', 'keys',\n            'limiteregion', 'locked', 'luminous',\n            'maxsamplesperpixel', 'minsamplesperpixel', 'mirror', 'motionx', 'motiony',\n            'name', 'newFilename', 'newFrame', 'newTime', 'newType', 'null', 'numthreads',\n            'objID', 'oPos', 'outerlimit', 'oXfrm',\n            'parent', 'pixel', 'pixelaspect', 'point', 'points', 'pointcount', 'polNum',\n            'polycount', 'polygon', 'polygons', 'postBehavior', 'preBehavior', 'previewend',\n            'previewstart', 'previewstep',\n            'range', 'rawblue', 'rawgreen', 'rawred', 'rayLength', 'raySource', 'red',\n            'reflectblue', 'reflectgreen', 'reflectred', 'recursiondepth', 'renderend',\n            'renderopts', 'renderstart', 'renderstep', 'rendertype', 'restlength',\n            'rgbprefix', 'roughness',\n            'selected', 'setColor', 'setPattern', 'shading', 'shadow', 'shadows',\n            'shadowtype', 'size', 'source', 'special', 'specshade', 'specular',\n            'spotsize', 'start', 'sx', 'sy', 'sz',\n            'target', 'totallayers', 'totalpoints', 'totalpolygons', 'trans', 'transparency',\n            'type',\n            'value', 'view', 'visible', 'visibility',\n            'w', 'width', 'wNorm', 'wPos', 'wXfrm',\n            'x', 'xoffset',\n            'y', 'yoffset',\n            'z'\n            ),\n        4 => array(\n            'addLayer', 'addParticle', 'alphaspot', 'ambient', 'asAsc', 'asBin',\n            'asInt', 'asNum', 'asStr', 'asVec', 'attach', 'axislocks',\n            'backdropColor', 'backdropRay', 'backdropSqueeze', 'bone', 'blurLength',\n            'close', 'color', 'contains', 'copy', 'createKey',\n            'deleteKey', 'detach', 'drawCircle', 'drawLine', 'drawPoint', 'drawText',\n            'drawTriangle',\n            'edit', 'eof', 'event',\n            'firstChannel', 'firstLayer', 'firstSelect', 'focalLength', 'fogColor',\n            'fogMaxAmount', 'fogMaxDist', 'fogMinAmount', 'fogMinDist',\n            'fovAngles', 'fStop', 'firstChild', 'focalDistance',\n            'get', 'getChannelGroup', 'getEnvelope', 'getForward', 'getKeyBias',\n            'getKeyContinuity', 'getKeyCurve', 'getKeyHermite', 'getKeyTension',\n            'getKeyTime', 'getKeyValue', 'getParticle', 'getPivot', 'getPosition',\n            'getRight', 'getRotation', 'getSelect', 'getScaling', 'getTag', 'getTexture',\n            'getUp', 'getValue', 'getWorldPosition', 'getWorldForward', 'getWorldRight',\n            'getWorldRotation', 'getWorldUp', 'globalBlur', 'globalMask', 'globalResolution',\n            'hasCCEnd', 'hasCCStart',\n            'illuminate', 'indexOf', 'isAscii', 'isAlnum', 'isAlpha', 'isBone',\n            'isCamera', 'isChannel', 'isChannelGroup', 'isCntrl', 'isCurve', 'isDigit',\n            'isEnvelope', 'isImage', 'isInt', 'isLight', 'isLower', 'isMapped', 'isMesh',\n            'isNil', 'isNum', 'IsOpen', 'isOriginal', 'isPrint', 'isPunct', 'isScene',\n            'isSpace', 'isStr', 'isUpper', 'isValid', 'isVMap', 'isVec', 'isXDigit',\n            'keyExists',\n            'layer', 'layerName', 'layerVisible', 'limits', 'line', 'linecount', 'load', 'luma',\n            'next', 'nextLayer', 'nextSelect', 'nextChannel', 'nextChild', 'nl',\n            'offset', 'open',\n            'pack', 'param', 'parse', 'paste', 'persist', 'polygonCount', 'position',\n            'rayCast', 'rayTrace', 'read', 'readByte', 'readInt', 'readNumber',\n            'readDouble', 'readShort', 'readString', 'readVector', 'reduce',\n            'remParticle', 'renderCamera', 'reopen', 'replace', 'reset', 'restParam',\n            'rewind', 'rgb', 'rgbambient', 'rgbcolor', 'rgbspot',\n            'save', 'schemaPosition', 'select', 'set', 'setChannelGroup', 'setKeyBias',\n            'setKeyContinuity', 'setKeyCurve',\n            'setKeyHermite', 'setKeyTension', 'setKeyValue', 'setParticle', 'setPoints',\n            'setTag', 'setValue', 'server', 'serverFlags', 'sortA', 'sortD', 'surface',\n            'trunc',\n            'write', 'writeln', 'writeByte', 'writeData', 'writeNumber', 'writeDouble',\n            'writeShort', 'writeString', 'writeVector',\n            'vertex', 'vertexCount',\n            'zoomFactor'\n            ),\n        2 => array(\n            'abs', 'acos', 'angle', 'append', 'ascii', 'asin', 'atan',\n            'binary',\n            'ceil', 'center', 'chdir', 'clearimage', 'cloned', 'comringattach',\n            'comringdecode', 'comringdetach', 'comringencode', 'comringmsg', 'cos',\n            'cosh', 'cot', 'cross2d', 'cross3d', 'csc', 'ctlstring', 'ctlinteger',\n            'ctlnumber', 'ctlvector', 'ctldistance', 'ctlchoice', 'ctltext',\n            'ctlcolor', 'ctlsurface', 'ctlfont', 'ctlpopup', 'ctledit', 'ctlpercent',\n            'ctlangle', 'ctlrgb', 'ctlhsv', 'ctlcheckbox', 'ctlstate', 'ctlfilename',\n            'ctlbutton', 'ctllistbox', 'ctlslider', 'ctlminislider', 'ctlsep', 'ctlimage',\n            'ctltab', 'ctlallitems', 'ctlmeshitems', 'ctlcameraitems', 'ctllightitems',\n            'ctlboneitems', 'ctlimageitems', 'ctlchannel', 'ctlviewport', 'Control_Management',\n            'ctlpage', 'ctlgroup', 'ctlposition', 'ctlactive', 'ctlvisible', 'ctlalign',\n            'ctlrefresh', 'ctlmenu', 'ctlinfo',\n            'date', 'debug', 'deg', 'dot2d', 'dot3d', 'drawborder', 'drawbox', 'drawcircle',\n            'drawelipse', 'drawerase', 'drawfillcircle', 'drawfillelipse', 'drawline',\n            'drawpixel', 'drawtext', 'drawtextwidth', 'drawtextheight', 'dump',\n            'error', 'exp', 'expose', 'extent',\n            'fac', 'filecrc', 'filedelete', 'fileexists', 'filefind', 'filerename',\n            'filestat', 'floor', 'format', 'frac', 'fullpath',\n            'gamma', 'getdir', 'getenv', 'getfile', 'getfirstitem', 'getsep', 'getvalue',\n            'globalrecall', 'globalstore',\n            'hash', 'hex', 'hostBuild', 'hostVersion', 'hypot',\n            'info', 'integer',\n            'library', 'licenseId', 'lscriptVersion', 'load', 'loadimage', 'log', 'log10',\n            'matchdirs', 'matchfiles', 'max', 'min', 'mkdir', 'mod', 'monend', 'moninit', 'monstep',\n            'nil', 'normalize', 'number',\n            'octal', 'overlayglyph',\n            'parse', 'platform', 'pow',\n            'rad', 'random', 'randu', 'range', 'read', 'readdouble', 'readInt', 'readNumber',\n            'readShort', 'recall', 'regexp', 'reqabort', 'reqbegin', 'reqend', 'reqisopen',\n            'reqkeyboard', 'reqopen', 'reqposition', 'reqpost', 'reqredraw',\n            'reqsize', 'reqresize', 'requpdate', 'rmdir', 'round', 'runningUnder',\n            'save', 'sec', 'select', 'selector', 'setdesc', 'setvalue', 'sin', 'sinh', 'size',\n            'sizeof', 'sleep', 'spawn', 'split', 'sqrt', 'step', 'store', 'string', 'strleft',\n            'strlower', 'strright', 'strsub', 'strupper',\n            'tan', 'tanh', 'targetobject', 'terminate', 'text', 'time',\n            'wait', 'warn', 'when', 'write', 'writeDouble', 'writeInt', 'writeNumber', 'writeShort',\n            'var', 'vector', 'visitnodes', 'vmag',\n            ),\n        5 => array(\n            'addcurve', 'addpoint', 'addpolygon', 'addquad', 'addtriangle', 'alignpols',\n            'autoflex', 'axisdrill',\n            'bend', 'bevel', 'boolean', 'boundingbox',\n            'changepart', 'changesurface', 'close', 'closeall', 'cmdseq', 'copy', 'copysurface',\n            'createsurface', 'cut',\n            'deformregion', 'delete',\n            'editbegin', 'editend', 'exit', 'extrude',\n            'fixedflex', 'flip', 'fontclear', 'fontcount', 'fontindex', 'fontload',\n            'fontname', 'fracsubdivide', 'freezecurves',\n            'getdefaultsurface',\n            'jitter',\n            'lathe', 'layerName', 'layerVisible', 'lyrbg', 'lyrdata', 'lyrempty', 'lyremptybg',\n            'lyremptyfg', 'lyrfg', 'lyrsetbg', 'lyrsetfg', 'lyrswap',\n            'magnet', 'make4patch', 'makeball', 'makebox', 'makecone', 'makedisc',\n            'maketesball', 'maketext', 'mergepoints', 'mergepols', 'meshedit', 'mirror',\n            'morphpols', 'move',\n            'new', 'nextsurface',\n            'paste', 'pathclone', 'pathextrude', 'pixel', 'pointcount', 'pointinfo',\n            'pointmove', 'pole', 'polycount', 'polyinfo', 'polynormal', 'polypointcount',\n            'polypoints', 'polysurface',\n            'quantize',\n            'railclone', 'railextrude', 'redo', 'removepols', 'rempoint', 'rempoly',\n            'renamesurface', 'revert', 'rotate',\n            'scale', 'selhide', 'selinvert', 'selmode', 'selpoint', 'selpolygon', 'selunhide',\n            'selectvmap', 'setlayername', 'setobject', 'setpivot', 'setsurface', 'shapebevel',\n            'shear', 'skinpols', 'smooth', 'smoothcurves', 'smoothscale', 'smoothshift',\n            'soliddrill', 'splitpols', 'subdivide', 'swaphidden',\n            'taper', 'triple', 'toggleCCend', 'toggleCCstart', 'togglepatches', 'twist',\n            'undo', 'undogroupend', 'undogroupbegin', 'unifypols', 'unweld',\n            'vortex',\n            'weldaverage', 'weldpoints'\n            ),\n        6 => array(\n            'About', 'AboutOpenGL', 'AdaptiveSampling', 'AdaptiveThreshold',\n            'AddAreaLight', 'AddBone', 'AddButton', 'AddCamera', 'AddChildBone',\n            'AddDistantLight', 'AddEnvelope', 'AddLinearLight', 'AddNull',\n            'AddPartigon', 'AddPlugins', 'AddPointLight', 'AddPosition',\n            'AddRotation', 'AddScale', 'AddSpotlight', 'AddToSelection',\n            'AdjustRegionTool', 'AffectCaustics', 'AffectDiffuse', 'AffectOpenGL',\n            'AffectSpecular', 'AlertLevel', 'AmbientColor', 'AmbientIntensity',\n            'Antialiasing', 'ApertureHeight', 'ApplyServer', 'AreaLight',\n            'AutoConfirm', 'AutoFrameAdvance', 'AutoKey',\n            'BackdropColor', 'BackView', 'BController', 'BLimits', 'BLurLength', 'BoneActive',\n            'BoneFalloffType', 'BoneJointComp', 'BoneJointCompAmounts', 'BoneJointCompParent',\n            'BoneLimitedRange', 'BoneMaxRange', 'BoneMinRange', 'BoneMuscleFlex',\n            'BoneMuscleFlexAmounts', 'BoneMuscleFlexParent', 'BoneNormalization',\n            'BoneRestLength', 'BoneRestPosition', 'BoneRestRotation', 'BoneSource',\n            'BoneStrength', 'BoneStrengthMultiply', 'BoneWeightMapName', 'BoneWeightMapOnly',\n            'BoneWeightShade', 'BoneXRay', 'BottomView', 'BoundingBoxThreshold',\n            'BStiffness',\n            'CacheCaustics', 'CacheRadiosity', 'CacheShadowMap',\n            'CameraMask', 'CameraView', 'CameraZoomTool', 'CastShadow', 'CausticIntensity',\n            'CenterItem', 'CenterMouse', 'ChangeTool', 'ClearAllBones', 'ClearAllCameras',\n            'ClearAllLights', 'ClearAllObjects', 'ClearAudio', 'ClearScene', 'ClearSelected',\n            'Clone', 'CommandHistory', 'CommandInput', 'Compositing', 'ConeAngleTool',\n            'ContentDirectory', 'CreateKey',\n            'DecreaseGrid', 'DeleteKey', 'DepthBufferAA', 'DepthOfField', 'DisplayOptions',\n            'DistantLight', 'DrawAntialiasing', 'DrawBones', 'DrawChildBones', 'DynamicUpdate',\n            'EditBones', 'EditCameras', 'EditKeys', 'EditLights',\n            'EditMenus', 'EditObjects', 'EditPlugins', 'EditServer', 'EnableCaustics',\n            'EnableDeformations', 'EnableIK', 'EnableLensFlares', 'EnableRadiosity', 'EnableServer',\n            'EnableShadowMaps', 'EnableVIPER', 'EnableVolumetricLights', 'EnableXH',\n            'EnableYP', 'EnableZB', 'EnahancedAA', 'ExcludeLight', 'ExcludeObject',\n            'EyeSeparation',\n            'FasterBones', 'FirstFrame', 'FirstItem', 'FitAll', 'FitSelected',\n            'FlareIntensity', 'FlareOptions', 'FocalDistance', 'FogColor', 'FogMaxAmount',\n            'FogMaxDistance', 'FogMinAmount', 'FogMinDistance', 'FogType', 'FractionalFrames',\n            'FrameSize', 'FramesPerSecond', 'FrameStep', 'FreePreview', 'FrontView', 'FullTimeIK',\n            'GeneralOptions', 'Generics', 'GlobalApertureHeight', 'GlobalBlurLength',\n            'GlobalFrameSize', 'GlobalIllumination', 'GlobalMaskPosition', 'GlobalMotionBlur',\n            'GlobalParticleBlur', 'GlobalPixelAspect', 'GlobalResolutionMulitplier', 'GoalItem',\n            'GoalStrength', 'GoToFrame', 'GradientBackdrop', 'GraphEditor', 'GridSize', 'GroundColor',\n            'HController', 'HideToolbar', 'HideWindows', 'HLimits', 'HStiffness',\n            'ImageEditor', 'ImageProcessing', 'IncludeLight', 'IncludeObject', 'IncreaseGrid',\n            'IndirectBounces', 'Item_SetWindowPos', 'ItemActive', 'ItemColor', 'ItemLock',\n            'ItemProperties', 'ItemVisibilty',\n            'KeepGoalWithinReach',\n            'LastFrame', 'LastItem', 'LastPluginInterface', 'Layout_SetWindowPos',\n            'Layout_SetWindowSize', 'LeftView', 'LensFlare', 'LensFStop', 'LightColor',\n            'LightConeAngle', 'LightEdgeAngle', 'LightFalloffType', 'LightIntensity',\n            'LightIntensityTool', 'LightQuality', 'LightRange', 'LightView', 'LimitB',\n            'LimitDynamicRange', 'LimitedRegion', 'LimitH', 'LimitP', 'LinearLight',\n            'LoadAudio', 'LoadFromScene', 'LoadMotion', 'LoadObject', 'LoadObjectLayer',\n            'LoadPreview', 'LoadScene', 'LocalCoordinateSystem',\n            'MakePreview', 'MaskColor', 'MaskPosition', 'MasterPlugins', 'MatchGoalOrientation',\n            'MatteColor', 'MatteObject', 'MetaballResolution', 'Model', 'MorphAmount',\n            'MorphAmountTool', 'MorphMTSE', 'MorphSurfaces', 'MorphTarget', 'MotionBlur',\n            'MotionBlurDOFPreview', 'MotionOptions', 'MovePathTool', 'MovePivotTool', 'MoveTool',\n            'NadirColor', 'NetRender', 'NextFrame', 'NextItem', 'NextKey', 'NextSibling',\n            'NextViewLayout', 'NoiseReduction', 'Numeric',\n            'ObjectDissolve',\n            'ParentCoordinateSystem', 'ParentInPlace', 'ParentItem',\n            'ParticleBlur', 'PathAlignLookAhead', 'PathAlignMaxLookSteps', 'PathAlignReliableDist',\n            'Pause', 'PController', 'PerspectiveView',\n            'PivotPosition', 'PivotRotation', 'PixelAspect', 'PlayAudio', 'PlayBackward',\n            'PlayForward', 'PlayPreview', 'PLimits', 'PointLight', 'PolygonEdgeColor',\n            'PolygonEdgeFlags', 'PolygonEdgeThickness', 'PolygonEdgeZScale', 'PolygonSize',\n            'Position', 'Presets', 'PreviewFirstFrame', 'PreviewFrameStep', 'PreviewLastFrame',\n            'PreviewOptions', 'PreviousFrame', 'PreviousItem', 'PreviousKey', 'PreviousSibling',\n            'PreviousViewLayout', 'PStiffness',\n            'Quit',\n            'RadiosityIntensity', 'RadiosityTolerance', 'RadiosityType', 'RayRecursionLimit',\n            'RayTraceReflection', 'RayTraceShadows',\n            'RayTraceTransparency', 'ReceiveShadow', 'RecentContentDirs', 'RecentScenes',\n            'ReconstructionFilter', 'RecordMaxAngles', 'RecordMinAngles', 'RecordPivotRotation',\n            'RecordRestPosition', 'Redraw', 'RedrawNow', 'Refresh', 'RefreshNow', 'RegionPosition',\n            'RemoveEnvelope', 'RemoveFromSelection', 'RemoveServer', 'Rename', 'RenderFrame',\n            'RenderOptions', 'RenderScene', 'RenderSelected', 'RenderThreads',\n            'ReplaceObjectLayer', 'ReplaceWithNull', 'ReplaceWithObject', 'Reset',\n            'ResolutionMultiplier', 'RestLengthTool', 'RightView', 'RotatePivotTool',\n            'RotateTool', 'Rotation',\n            'SaveAllObjects', 'SaveCommandList', 'SaveCommandMessages',\n            'SaveEndomorph', 'SaveLight', 'SaveLWSC1', 'SaveMotion', 'SaveObject', 'SaveObjectCopy',\n            'SavePreview', 'SaveScene', 'SaveSceneAs', 'SaveSceneCopy', 'SaveTransformed',\n            'SaveViewLayout', 'Scale', 'Scene_SetWindowPos', 'Scene_SetWindowSize',\n            'SceneEditor', 'SchematicPosition', 'SchematicView', 'SelectAllBones',\n            'SelectAllCameras', 'SelectAllLights', 'SelectAllObjects', 'SelectByName',\n            'SelectChild', 'SelectItem', 'SelectParent', 'SelfShadow', 'ShadowColor',\n            'ShadowExclusion', 'ShadowMapAngle', 'ShadowMapFitCone', 'ShadowMapFuzziness',\n            'ShadowMapSize', 'ShadowType', 'ShowCages', 'ShowFieldChart', 'ShowHandles',\n            'ShowIKChains', 'ShowMotionPaths', 'ShowSafeAreas', 'ShowTargetLines',\n            'ShrinkEdgesWithDistance', 'SingleView', 'SizeTool', 'SkelegonsToBones', 'SkyColor',\n            'Spotlight', 'SquashTool', 'Statistics', 'StatusMsg', 'Stereoscopic', 'StretchTool',\n            'SubdivisionOrder', 'SubPatchLevel', 'SurfaceEditor', 'Synchronize',\n            'TargetItem', 'TopView',\n            'UnaffectedByFog', 'UnaffectedByIK', 'Undo', 'UnseenByAlphaChannel', 'UnseenByCamera',\n            'UnseenByRays', 'UseGlobalResolution', 'UseGlobalBlur', 'UseGlobalMask',\n            'UseMorphedPositions',\n            'ViewLayout', 'VIPER', 'VolumetricLighting',\n            'VolumetricLightingOptions', 'VolumetricRadiosity', 'Volumetrics',\n            'WorldCoordinateSystem',\n            'XYView', 'XZView',\n            'ZenithColor', 'ZoomFactor', 'ZoomIn', 'ZoomInX2', 'ZoomOut', 'ZoomOutX2', 'ZYView',\n            'Camera', 'Channel', 'ChannelGroup', 'Envelope', 'File', 'Glyph', 'Icon', 'Image',\n            'Light', 'Mesh', 'Scene', 'Surface', 'VMap'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']', '=', '<', '>', '+', '-', '*', '/', '!', '%', '&', '@'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => true,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #FF6820; font-weight: bold;', //LS_COMMANDS\n            3 => 'color: #007F7F; font-weight: bold;', //LS_MEMBERS\n            4 => 'color: #800080; font-weight: bold;', //LS_METHODS\n            5 => 'color: #51BD95; font-weight: bold;', //LS_MODELER\n            6 => 'color: #416F85; font-weight: bold;', //LS_GENERAL\n            7 => 'color: #C92929; font-weight: bold;'  //LS_COMMANDS (cont)\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #7F7F7F;',\n            'MULTI' => 'color: #7F7F7F;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #0040A0;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #00C800;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #6953AC;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #0040A0;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            ),\n        'ESCAPE_CHAR' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            3 => array(\n                'DISALLOWED_BEFORE' => '(?<=\\.)'\n                ),\n            4 => array(\n                'DISALLOWED_BEFORE' => '(?<=\\.)'\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/lsl2.php",
    "content": "<?php\n/*************************************************************************************\n * lsl2.php\n * --------\n * Author: William Fry (william.fry@nyu.edu)\n * Copyright: (c) 2009 William Fry\n * Release Version: 1.0.9.1\n * Date Started: 2009/02/04\n *\n * Linden Scripting Language (LSL2) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009-02-05 (1.0.0)\n *   -  First Release\n * 2013-01-01\n *   -  Modified by Sei Lisa for compatibility with the geshi.py output module\n *      which is part of the LSL2 Derived Files Generator, available at:\n *      http://code.google.com/p/lsl-keywords\n * 2013-07-11\n *   -  Modified by Sei Lisa to fix symbols and to add multiline comment support\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n// Generated by LSL2 Derived Files Generator. Database version: 0.0.20140116001; output module version: 0.0.20130817000\n\n$language_data = array(\n    'LANG_NAME' => 'LSL2',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array( // flow control\n            'do',\n            'else',\n            'for',\n            'if',\n            'jump',\n            'return',\n            'state',\n            'while',\n            ),\n        2 => array( // manifest constants\n            'ACTIVE',\n            'AGENT',\n            'AGENT_ALWAYS_RUN',\n            'AGENT_ATTACHMENTS',\n            'AGENT_AUTOPILOT',\n            'AGENT_AWAY',\n            'AGENT_BUSY',\n            'AGENT_BY_LEGACY_NAME',\n            'AGENT_BY_USERNAME',\n            'AGENT_CROUCHING',\n            'AGENT_FLYING',\n            'AGENT_IN_AIR',\n            'AGENT_LIST_PARCEL',\n            'AGENT_LIST_PARCEL_OWNER',\n            'AGENT_LIST_REGION',\n            'AGENT_MOUSELOOK',\n            'AGENT_ON_OBJECT',\n            'AGENT_SCRIPTED',\n            'AGENT_SITTING',\n            'AGENT_TYPING',\n            'AGENT_WALKING',\n            'ALL_SIDES',\n            'ANIM_ON',\n            'ATTACH_AVATAR_CENTER',\n            'ATTACH_BACK',\n            'ATTACH_BELLY',\n            'ATTACH_CHEST',\n            'ATTACH_CHIN',\n            'ATTACH_HEAD',\n            'ATTACH_HUD_BOTTOM',\n            'ATTACH_HUD_BOTTOM_LEFT',\n            'ATTACH_HUD_BOTTOM_RIGHT',\n            'ATTACH_HUD_CENTER_1',\n            'ATTACH_HUD_CENTER_2',\n            'ATTACH_HUD_TOP_CENTER',\n            'ATTACH_HUD_TOP_LEFT',\n            'ATTACH_HUD_TOP_RIGHT',\n            'ATTACH_LEAR',\n            'ATTACH_LEFT_PEC',\n            'ATTACH_LEYE',\n            'ATTACH_LFOOT',\n            'ATTACH_LHAND',\n            'ATTACH_LHIP',\n            'ATTACH_LLARM',\n            'ATTACH_LLLEG',\n            'ATTACH_LSHOULDER',\n            'ATTACH_LUARM',\n            'ATTACH_LULEG',\n            'ATTACH_MOUTH',\n            'ATTACH_NECK',\n            'ATTACH_NOSE',\n            'ATTACH_PELVIS',\n            'ATTACH_REAR',\n            'ATTACH_REYE',\n            'ATTACH_RFOOT',\n            'ATTACH_RHAND',\n            'ATTACH_RHIP',\n            'ATTACH_RIGHT_PEC',\n            'ATTACH_RLARM',\n            'ATTACH_RLLEG',\n            'ATTACH_RSHOULDER',\n            'ATTACH_RUARM',\n            'ATTACH_RULEG',\n            'AVOID_CHARACTERS',\n            'AVOID_DYNAMIC_OBSTACLES',\n            'AVOID_NONE',\n            'CAMERA_ACTIVE',\n            'CAMERA_BEHINDNESS_ANGLE',\n            'CAMERA_BEHINDNESS_LAG',\n            'CAMERA_DISTANCE',\n            'CAMERA_FOCUS',\n            'CAMERA_FOCUS_LAG',\n            'CAMERA_FOCUS_LOCKED',\n            'CAMERA_FOCUS_OFFSET',\n            'CAMERA_FOCUS_THRESHOLD',\n            'CAMERA_PITCH',\n            'CAMERA_POSITION',\n            'CAMERA_POSITION_LAG',\n            'CAMERA_POSITION_LOCKED',\n            'CAMERA_POSITION_THRESHOLD',\n            'CHANGED_ALLOWED_DROP',\n            'CHANGED_COLOR',\n            'CHANGED_INVENTORY',\n            'CHANGED_LINK',\n            'CHANGED_MEDIA',\n            'CHANGED_OWNER',\n            'CHANGED_REGION',\n            'CHANGED_REGION_START',\n            'CHANGED_SCALE',\n            'CHANGED_SHAPE',\n            'CHANGED_TELEPORT',\n            'CHANGED_TEXTURE',\n            'CHARACTER_ACCOUNT_FOR_SKIPPED_FRAMES',\n            'CHARACTER_AVOIDANCE_MODE',\n            'CHARACTER_CMD_JUMP',\n            'CHARACTER_CMD_SMOOTH_STOP',\n            'CHARACTER_CMD_STOP',\n            'CHARACTER_DESIRED_SPEED',\n            'CHARACTER_DESIRED_TURN_SPEED',\n            'CHARACTER_LENGTH',\n            'CHARACTER_MAX_ACCEL',\n            'CHARACTER_MAX_DECEL',\n            'CHARACTER_MAX_SPEED',\n            'CHARACTER_MAX_TURN_RADIUS',\n            'CHARACTER_ORIENTATION',\n            'CHARACTER_RADIUS',\n            'CHARACTER_STAY_WITHIN_PARCEL',\n            'CHARACTER_TYPE',\n            'CHARACTER_TYPE_A',\n            'CHARACTER_TYPE_B',\n            'CHARACTER_TYPE_C',\n            'CHARACTER_TYPE_D',\n            'CHARACTER_TYPE_NONE',\n            'CLICK_ACTION_BUY',\n            'CLICK_ACTION_NONE',\n            'CLICK_ACTION_OPEN',\n            'CLICK_ACTION_OPEN_MEDIA',\n            'CLICK_ACTION_PAY',\n            'CLICK_ACTION_PLAY',\n            'CLICK_ACTION_SIT',\n            'CLICK_ACTION_TOUCH',\n            'CONTENT_TYPE_ATOM',\n            'CONTENT_TYPE_FORM',\n            'CONTENT_TYPE_HTML',\n            'CONTENT_TYPE_JSON',\n            'CONTENT_TYPE_LLSD',\n            'CONTENT_TYPE_RSS',\n            'CONTENT_TYPE_TEXT',\n            'CONTENT_TYPE_XHTML',\n            'CONTENT_TYPE_XML',\n            'CONTROL_BACK',\n            'CONTROL_DOWN',\n            'CONTROL_FWD',\n            'CONTROL_LBUTTON',\n            'CONTROL_LEFT',\n            'CONTROL_ML_LBUTTON',\n            'CONTROL_RIGHT',\n            'CONTROL_ROT_LEFT',\n            'CONTROL_ROT_RIGHT',\n            'CONTROL_UP',\n            'DATA_BORN',\n            'DATA_NAME',\n            'DATA_ONLINE',\n            'DATA_PAYINFO',\n            'DATA_SIM_POS',\n            'DATA_SIM_RATING',\n            'DATA_SIM_STATUS',\n            'DEBUG_CHANNEL',\n            'DEG_TO_RAD',\n            'DENSITY',\n            'EOF',\n            'ERR_GENERIC',\n            'ERR_MALFORMED_PARAMS',\n            'ERR_PARCEL_PERMISSIONS',\n            'ERR_RUNTIME_PERMISSIONS',\n            'ERR_THROTTLED',\n            'ESTATE_ACCESS_ALLOWED_AGENT_ADD',\n            'ESTATE_ACCESS_ALLOWED_AGENT_REMOVE',\n            'ESTATE_ACCESS_ALLOWED_GROUP_ADD',\n            'ESTATE_ACCESS_ALLOWED_GROUP_REMOVE',\n            'ESTATE_ACCESS_BANNED_AGENT_ADD',\n            'ESTATE_ACCESS_BANNED_AGENT_REMOVE',\n            'FALSE',\n            'FORCE_DIRECT_PATH',\n            'FRICTION',\n            'GCNP_RADIUS',\n            'GCNP_STATIC',\n            'GRAVITY_MULTIPLIER',\n            'HORIZONTAL',\n            'HTTP_BODY_MAXLENGTH',\n            'HTTP_BODY_TRUNCATED',\n            'HTTP_CUSTOM_HEADER',\n            'HTTP_METHOD',\n            'HTTP_MIMETYPE',\n            'HTTP_PRAGMA_NO_CACHE',\n            'HTTP_VERBOSE_THROTTLE',\n            'HTTP_VERIFY_CERT',\n            'INVENTORY_ALL',\n            'INVENTORY_ANIMATION',\n            'INVENTORY_BODYPART',\n            'INVENTORY_CLOTHING',\n            'INVENTORY_GESTURE',\n            'INVENTORY_LANDMARK',\n            'INVENTORY_NONE',\n            'INVENTORY_NOTECARD',\n            'INVENTORY_OBJECT',\n            'INVENTORY_SCRIPT',\n            'INVENTORY_SOUND',\n            'INVENTORY_TEXTURE',\n            'JSON_APPEND',\n            'JSON_ARRAY',\n            'JSON_DELETE',\n            'JSON_FALSE',\n            'JSON_INVALID',\n            'JSON_NULL',\n            'JSON_NUMBER',\n            'JSON_OBJECT',\n            'JSON_STRING',\n            'JSON_TRUE',\n            'KFM_CMD_PAUSE',\n            'KFM_CMD_PLAY',\n            'KFM_CMD_SET_MODE',\n            'KFM_CMD_STOP',\n            'KFM_COMMAND',\n            'KFM_DATA',\n            'KFM_FORWARD',\n            'KFM_LOOP',\n            'KFM_MODE',\n            'KFM_PING_PONG',\n            'KFM_REVERSE',\n            'KFM_ROTATION',\n            'KFM_TRANSLATION',\n            'LAND_LARGE_BRUSH',\n            'LAND_LEVEL',\n            'LAND_LOWER',\n            'LAND_MEDIUM_BRUSH',\n            'LAND_NOISE',\n            'LAND_RAISE',\n            'LAND_REVERT',\n            'LAND_SMALL_BRUSH',\n            'LAND_SMOOTH',\n            'LINK_ALL_CHILDREN',\n            'LINK_ALL_OTHERS',\n            'LINK_ROOT',\n            'LINK_SET',\n            'LINK_THIS',\n            'LIST_STAT_GEOMETRIC_MEAN',\n            'LIST_STAT_MAX',\n            'LIST_STAT_MEAN',\n            'LIST_STAT_MEDIAN',\n            'LIST_STAT_MIN',\n            'LIST_STAT_NUM_COUNT',\n            'LIST_STAT_RANGE',\n            'LIST_STAT_STD_DEV',\n            'LIST_STAT_SUM',\n            'LIST_STAT_SUM_SQUARES',\n            'LOOP',\n            'MASK_BASE',\n            'MASK_EVERYONE',\n            'MASK_GROUP',\n            'MASK_NEXT',\n            'MASK_OWNER',\n            'NULL_KEY',\n            'OBJECT_ATTACHED_POINT',\n            'OBJECT_CHARACTER_TIME',\n            'OBJECT_CREATOR',\n            'OBJECT_DESC',\n            'OBJECT_GROUP',\n            'OBJECT_NAME',\n            'OBJECT_OWNER',\n            'OBJECT_PATHFINDING_TYPE',\n            'OBJECT_PHANTOM',\n            'OBJECT_PHYSICS',\n            'OBJECT_PHYSICS_COST',\n            'OBJECT_POS',\n            'OBJECT_PRIM_EQUIVALENCE',\n            'OBJECT_RENDER_WEIGHT',\n            'OBJECT_RETURN_PARCEL',\n            'OBJECT_RETURN_PARCEL_OWNER',\n            'OBJECT_RETURN_REGION',\n            'OBJECT_ROOT',\n            'OBJECT_ROT',\n            'OBJECT_RUNNING_SCRIPT_COUNT',\n            'OBJECT_SCRIPT_MEMORY',\n            'OBJECT_SCRIPT_TIME',\n            'OBJECT_SERVER_COST',\n            'OBJECT_STREAMING_COST',\n            'OBJECT_TEMP_ON_REZ',\n            'OBJECT_TOTAL_SCRIPT_COUNT',\n            'OBJECT_UNKNOWN_DETAIL',\n            'OBJECT_VELOCITY',\n            'OPT_AVATAR',\n            'OPT_CHARACTER',\n            'OPT_EXCLUSION_VOLUME',\n            'OPT_LEGACY_LINKSET',\n            'OPT_MATERIAL_VOLUME',\n            'OPT_OTHER',\n            'OPT_STATIC_OBSTACLE',\n            'OPT_WALKABLE',\n            'PARCEL_COUNT_GROUP',\n            'PARCEL_COUNT_OTHER',\n            'PARCEL_COUNT_OWNER',\n            'PARCEL_COUNT_SELECTED',\n            'PARCEL_COUNT_TEMP',\n            'PARCEL_COUNT_TOTAL',\n            'PARCEL_DETAILS_AREA',\n            'PARCEL_DETAILS_DESC',\n            'PARCEL_DETAILS_GROUP',\n            'PARCEL_DETAILS_ID',\n            'PARCEL_DETAILS_NAME',\n            'PARCEL_DETAILS_OWNER',\n            'PARCEL_DETAILS_SEE_AVATARS',\n            'PARCEL_FLAG_ALLOW_ALL_OBJECT_ENTRY',\n            'PARCEL_FLAG_ALLOW_CREATE_GROUP_OBJECTS',\n            'PARCEL_FLAG_ALLOW_CREATE_OBJECTS',\n            'PARCEL_FLAG_ALLOW_DAMAGE',\n            'PARCEL_FLAG_ALLOW_FLY',\n            'PARCEL_FLAG_ALLOW_GROUP_OBJECT_ENTRY',\n            'PARCEL_FLAG_ALLOW_GROUP_SCRIPTS',\n            'PARCEL_FLAG_ALLOW_LANDMARK',\n            'PARCEL_FLAG_ALLOW_SCRIPTS',\n            'PARCEL_FLAG_ALLOW_TERRAFORM',\n            'PARCEL_FLAG_LOCAL_SOUND_ONLY',\n            'PARCEL_FLAG_RESTRICT_PUSHOBJECT',\n            'PARCEL_FLAG_USE_ACCESS_GROUP',\n            'PARCEL_FLAG_USE_ACCESS_LIST',\n            'PARCEL_FLAG_USE_BAN_LIST',\n            'PARCEL_FLAG_USE_LAND_PASS_LIST',\n            'PARCEL_MEDIA_COMMAND_AGENT',\n            'PARCEL_MEDIA_COMMAND_AUTO_ALIGN',\n            'PARCEL_MEDIA_COMMAND_DESC',\n            'PARCEL_MEDIA_COMMAND_LOOP',\n            'PARCEL_MEDIA_COMMAND_LOOP_SET',\n            'PARCEL_MEDIA_COMMAND_PAUSE',\n            'PARCEL_MEDIA_COMMAND_PLAY',\n            'PARCEL_MEDIA_COMMAND_SIZE',\n            'PARCEL_MEDIA_COMMAND_STOP',\n            'PARCEL_MEDIA_COMMAND_TEXTURE',\n            'PARCEL_MEDIA_COMMAND_TIME',\n            'PARCEL_MEDIA_COMMAND_TYPE',\n            'PARCEL_MEDIA_COMMAND_UNLOAD',\n            'PARCEL_MEDIA_COMMAND_URL',\n            'PASSIVE',\n            'PATROL_PAUSE_AT_WAYPOINTS',\n            'PAYMENT_INFO_ON_FILE',\n            'PAYMENT_INFO_USED',\n            'PAY_DEFAULT',\n            'PAY_HIDE',\n            'PERMISSION_ATTACH',\n            'PERMISSION_CHANGE_LINKS',\n            'PERMISSION_CONTROL_CAMERA',\n            'PERMISSION_DEBIT',\n            'PERMISSION_OVERRIDE_ANIMATIONS',\n            'PERMISSION_RETURN_OBJECTS',\n            'PERMISSION_SILENT_ESTATE_MANAGEMENT',\n            'PERMISSION_TAKE_CONTROLS',\n            'PERMISSION_TELEPORT',\n            'PERMISSION_TRACK_CAMERA',\n            'PERMISSION_TRIGGER_ANIMATION',\n            'PERM_ALL',\n            'PERM_COPY',\n            'PERM_MODIFY',\n            'PERM_MOVE',\n            'PERM_TRANSFER',\n            'PI',\n            'PING_PONG',\n            'PI_BY_TWO',\n            'PRIM_BUMP_BARK',\n            'PRIM_BUMP_BLOBS',\n            'PRIM_BUMP_BRICKS',\n            'PRIM_BUMP_BRIGHT',\n            'PRIM_BUMP_CHECKER',\n            'PRIM_BUMP_CONCRETE',\n            'PRIM_BUMP_DARK',\n            'PRIM_BUMP_DISKS',\n            'PRIM_BUMP_GRAVEL',\n            'PRIM_BUMP_LARGETILE',\n            'PRIM_BUMP_NONE',\n            'PRIM_BUMP_SHINY',\n            'PRIM_BUMP_SIDING',\n            'PRIM_BUMP_STONE',\n            'PRIM_BUMP_STUCCO',\n            'PRIM_BUMP_SUCTION',\n            'PRIM_BUMP_TILE',\n            'PRIM_BUMP_WEAVE',\n            'PRIM_BUMP_WOOD',\n            'PRIM_COLOR',\n            'PRIM_DESC',\n            'PRIM_FLEXIBLE',\n            'PRIM_FULLBRIGHT',\n            'PRIM_GLOW',\n            'PRIM_HOLE_CIRCLE',\n            'PRIM_HOLE_DEFAULT',\n            'PRIM_HOLE_SQUARE',\n            'PRIM_HOLE_TRIANGLE',\n            'PRIM_LINK_TARGET',\n            'PRIM_MATERIAL',\n            'PRIM_MATERIAL_FLESH',\n            'PRIM_MATERIAL_GLASS',\n            'PRIM_MATERIAL_METAL',\n            'PRIM_MATERIAL_PLASTIC',\n            'PRIM_MATERIAL_RUBBER',\n            'PRIM_MATERIAL_STONE',\n            'PRIM_MATERIAL_WOOD',\n            'PRIM_MEDIA_ALT_IMAGE_ENABLE',\n            'PRIM_MEDIA_AUTO_LOOP',\n            'PRIM_MEDIA_AUTO_PLAY',\n            'PRIM_MEDIA_AUTO_SCALE',\n            'PRIM_MEDIA_AUTO_ZOOM',\n            'PRIM_MEDIA_CONTROLS',\n            'PRIM_MEDIA_CONTROLS_MINI',\n            'PRIM_MEDIA_CONTROLS_STANDARD',\n            'PRIM_MEDIA_CURRENT_URL',\n            'PRIM_MEDIA_FIRST_CLICK_INTERACT',\n            'PRIM_MEDIA_HEIGHT_PIXELS',\n            'PRIM_MEDIA_HOME_URL',\n            'PRIM_MEDIA_MAX_HEIGHT_PIXELS',\n            'PRIM_MEDIA_MAX_URL_LENGTH',\n            'PRIM_MEDIA_MAX_WHITELIST_COUNT',\n            'PRIM_MEDIA_MAX_WHITELIST_SIZE',\n            'PRIM_MEDIA_MAX_WIDTH_PIXELS',\n            'PRIM_MEDIA_PARAM_MAX',\n            'PRIM_MEDIA_PERMS_CONTROL',\n            'PRIM_MEDIA_PERMS_INTERACT',\n            'PRIM_MEDIA_PERM_ANYONE',\n            'PRIM_MEDIA_PERM_GROUP',\n            'PRIM_MEDIA_PERM_NONE',\n            'PRIM_MEDIA_PERM_OWNER',\n            'PRIM_MEDIA_WHITELIST',\n            'PRIM_MEDIA_WHITELIST_ENABLE',\n            'PRIM_MEDIA_WIDTH_PIXELS',\n            'PRIM_NAME',\n            'PRIM_OMEGA',\n            'PRIM_PHANTOM',\n            'PRIM_PHYSICS',\n            'PRIM_PHYSICS_SHAPE_CONVEX',\n            'PRIM_PHYSICS_SHAPE_NONE',\n            'PRIM_PHYSICS_SHAPE_PRIM',\n            'PRIM_PHYSICS_SHAPE_TYPE',\n            'PRIM_POINT_LIGHT',\n            'PRIM_POSITION',\n            'PRIM_POS_LOCAL',\n            'PRIM_ROTATION',\n            'PRIM_ROT_LOCAL',\n            'PRIM_SCULPT_FLAG_INVERT',\n            'PRIM_SCULPT_FLAG_MIRROR',\n            'PRIM_SCULPT_TYPE_CYLINDER',\n            'PRIM_SCULPT_TYPE_MASK',\n            'PRIM_SCULPT_TYPE_PLANE',\n            'PRIM_SCULPT_TYPE_SPHERE',\n            'PRIM_SCULPT_TYPE_TORUS',\n            'PRIM_SHINY_HIGH',\n            'PRIM_SHINY_LOW',\n            'PRIM_SHINY_MEDIUM',\n            'PRIM_SHINY_NONE',\n            'PRIM_SIZE',\n            'PRIM_SLICE',\n            'PRIM_TEMP_ON_REZ',\n            'PRIM_TEXGEN',\n            'PRIM_TEXGEN_DEFAULT',\n            'PRIM_TEXGEN_PLANAR',\n            'PRIM_TEXT',\n            'PRIM_TEXTURE',\n            'PRIM_TYPE',\n            'PRIM_TYPE_BOX',\n            'PRIM_TYPE_CYLINDER',\n            'PRIM_TYPE_PRISM',\n            'PRIM_TYPE_RING',\n            'PRIM_TYPE_SCULPT',\n            'PRIM_TYPE_SPHERE',\n            'PRIM_TYPE_TORUS',\n            'PRIM_TYPE_TUBE',\n            'PROFILE_NONE',\n            'PROFILE_SCRIPT_MEMORY',\n            'PSYS_PART_BF_DEST_COLOR',\n            'PSYS_PART_BF_ONE',\n            'PSYS_PART_BF_ONE_MINUS_DEST_COLOR',\n            'PSYS_PART_BF_ONE_MINUS_SOURCE_ALPHA',\n            'PSYS_PART_BF_ONE_MINUS_SOURCE_COLOR',\n            'PSYS_PART_BF_SOURCE_ALPHA',\n            'PSYS_PART_BF_SOURCE_COLOR',\n            'PSYS_PART_BF_ZERO',\n            'PSYS_PART_BLEND_FUNC_DEST',\n            'PSYS_PART_BLEND_FUNC_SOURCE',\n            'PSYS_PART_BOUNCE_MASK',\n            'PSYS_PART_EMISSIVE_MASK',\n            'PSYS_PART_END_ALPHA',\n            'PSYS_PART_END_COLOR',\n            'PSYS_PART_END_GLOW',\n            'PSYS_PART_END_SCALE',\n            'PSYS_PART_FLAGS',\n            'PSYS_PART_FOLLOW_SRC_MASK',\n            'PSYS_PART_FOLLOW_VELOCITY_MASK',\n            'PSYS_PART_INTERP_COLOR_MASK',\n            'PSYS_PART_INTERP_SCALE_MASK',\n            'PSYS_PART_MAX_AGE',\n            'PSYS_PART_RIBBON_MASK',\n            'PSYS_PART_START_ALPHA',\n            'PSYS_PART_START_COLOR',\n            'PSYS_PART_START_GLOW',\n            'PSYS_PART_START_SCALE',\n            'PSYS_PART_TARGET_LINEAR_MASK',\n            'PSYS_PART_TARGET_POS_MASK',\n            'PSYS_PART_WIND_MASK',\n            'PSYS_SRC_ACCEL',\n            'PSYS_SRC_ANGLE_BEGIN',\n            'PSYS_SRC_ANGLE_END',\n            'PSYS_SRC_BURST_PART_COUNT',\n            'PSYS_SRC_BURST_RADIUS',\n            'PSYS_SRC_BURST_RATE',\n            'PSYS_SRC_BURST_SPEED_MAX',\n            'PSYS_SRC_BURST_SPEED_MIN',\n            'PSYS_SRC_MAX_AGE',\n            'PSYS_SRC_OMEGA',\n            'PSYS_SRC_PATTERN',\n            'PSYS_SRC_PATTERN_ANGLE',\n            'PSYS_SRC_PATTERN_ANGLE_CONE',\n            'PSYS_SRC_PATTERN_ANGLE_CONE_EMPTY',\n            'PSYS_SRC_PATTERN_DROP',\n            'PSYS_SRC_PATTERN_EXPLODE',\n            'PSYS_SRC_TARGET_KEY',\n            'PSYS_SRC_TEXTURE',\n            'PUBLIC_CHANNEL',\n            'PURSUIT_FUZZ_FACTOR',\n            'PURSUIT_GOAL_TOLERANCE',\n            'PURSUIT_INTERCEPT',\n            'PURSUIT_OFFSET',\n            'PU_EVADE_HIDDEN',\n            'PU_EVADE_SPOTTED',\n            'PU_FAILURE_DYNAMIC_PATHFINDING_DISABLED',\n            'PU_FAILURE_INVALID_GOAL',\n            'PU_FAILURE_INVALID_START',\n            'PU_FAILURE_NO_NAVMESH',\n            'PU_FAILURE_NO_VALID_DESTINATION',\n            'PU_FAILURE_OTHER',\n            'PU_FAILURE_PARCEL_UNREACHABLE',\n            'PU_FAILURE_TARGET_GONE',\n            'PU_FAILURE_UNREACHABLE',\n            'PU_GOAL_REACHED',\n            'PU_SLOWDOWN_DISTANCE_REACHED',\n            'RAD_TO_DEG',\n            'RCERR_CAST_TIME_EXCEEDED',\n            'RCERR_SIM_PERF_LOW',\n            'RCERR_UNKNOWN',\n            'RC_DATA_FLAGS',\n            'RC_DETECT_PHANTOM',\n            'RC_GET_LINK_NUM',\n            'RC_GET_NORMAL',\n            'RC_GET_ROOT_KEY',\n            'RC_MAX_HITS',\n            'RC_REJECT_AGENTS',\n            'RC_REJECT_LAND',\n            'RC_REJECT_NONPHYSICAL',\n            'RC_REJECT_PHYSICAL',\n            'RC_REJECT_TYPES',\n            'REGION_FLAG_ALLOW_DAMAGE',\n            'REGION_FLAG_ALLOW_DIRECT_TELEPORT',\n            'REGION_FLAG_BLOCK_FLY',\n            'REGION_FLAG_BLOCK_TERRAFORM',\n            'REGION_FLAG_DISABLE_COLLISIONS',\n            'REGION_FLAG_DISABLE_PHYSICS',\n            'REGION_FLAG_FIXED_SUN',\n            'REGION_FLAG_RESTRICT_PUSHOBJECT',\n            'REGION_FLAG_SANDBOX',\n            'REMOTE_DATA_CHANNEL',\n            'REMOTE_DATA_REPLY',\n            'REMOTE_DATA_REQUEST',\n            'REQUIRE_LINE_OF_SIGHT',\n            'RESTITUTION',\n            'REVERSE',\n            'ROTATE',\n            'SCALE',\n            'SCRIPTED',\n            'SIM_STAT_PCT_CHARS_STEPPED',\n            'SMOOTH',\n            'SQRT2',\n            'STATUS_BLOCK_GRAB',\n            'STATUS_BLOCK_GRAB_OBJECT',\n            'STATUS_BOUNDS_ERROR',\n            'STATUS_CAST_SHADOWS',\n            'STATUS_DIE_AT_EDGE',\n            'STATUS_INTERNAL_ERROR',\n            'STATUS_MALFORMED_PARAMS',\n            'STATUS_NOT_FOUND',\n            'STATUS_NOT_SUPPORTED',\n            'STATUS_OK',\n            'STATUS_PHANTOM',\n            'STATUS_PHYSICS',\n            'STATUS_RETURN_AT_EDGE',\n            'STATUS_ROTATE_X',\n            'STATUS_ROTATE_Y',\n            'STATUS_ROTATE_Z',\n            'STATUS_SANDBOX',\n            'STATUS_TYPE_MISMATCH',\n            'STATUS_WHITELIST_FAILED',\n            'STRING_TRIM',\n            'STRING_TRIM_HEAD',\n            'STRING_TRIM_TAIL',\n            'TEXTURE_BLANK',\n            'TEXTURE_DEFAULT',\n            'TEXTURE_MEDIA',\n            'TEXTURE_PLYWOOD',\n            'TEXTURE_TRANSPARENT',\n            'TOUCH_INVALID_FACE',\n            'TOUCH_INVALID_TEXCOORD',\n            'TOUCH_INVALID_VECTOR',\n            'TRAVERSAL_TYPE',\n            'TRAVERSAL_TYPE_FAST',\n            'TRAVERSAL_TYPE_NONE',\n            'TRAVERSAL_TYPE_SLOW',\n            'TRUE',\n            'TWO_PI',\n            'TYPE_FLOAT',\n            'TYPE_INTEGER',\n            'TYPE_INVALID',\n            'TYPE_KEY',\n            'TYPE_ROTATION',\n            'TYPE_STRING',\n            'TYPE_VECTOR',\n            'URL_REQUEST_DENIED',\n            'URL_REQUEST_GRANTED',\n            'VEHICLE_ANGULAR_DEFLECTION_EFFICIENCY',\n            'VEHICLE_ANGULAR_DEFLECTION_TIMESCALE',\n            'VEHICLE_ANGULAR_FRICTION_TIMESCALE',\n            'VEHICLE_ANGULAR_MOTOR_DECAY_TIMESCALE',\n            'VEHICLE_ANGULAR_MOTOR_DIRECTION',\n            'VEHICLE_ANGULAR_MOTOR_TIMESCALE',\n            'VEHICLE_BANKING_EFFICIENCY',\n            'VEHICLE_BANKING_MIX',\n            'VEHICLE_BANKING_TIMESCALE',\n            'VEHICLE_BUOYANCY',\n            'VEHICLE_FLAG_CAMERA_DECOUPLED',\n            'VEHICLE_FLAG_HOVER_GLOBAL_HEIGHT',\n            'VEHICLE_FLAG_HOVER_TERRAIN_ONLY',\n            'VEHICLE_FLAG_HOVER_UP_ONLY',\n            'VEHICLE_FLAG_HOVER_WATER_ONLY',\n            'VEHICLE_FLAG_LIMIT_MOTOR_UP',\n            'VEHICLE_FLAG_LIMIT_ROLL_ONLY',\n            'VEHICLE_FLAG_MOUSELOOK_BANK',\n            'VEHICLE_FLAG_MOUSELOOK_STEER',\n            'VEHICLE_FLAG_NO_DEFLECTION_UP',\n            'VEHICLE_HOVER_EFFICIENCY',\n            'VEHICLE_HOVER_HEIGHT',\n            'VEHICLE_HOVER_TIMESCALE',\n            'VEHICLE_LINEAR_DEFLECTION_EFFICIENCY',\n            'VEHICLE_LINEAR_DEFLECTION_TIMESCALE',\n            'VEHICLE_LINEAR_FRICTION_TIMESCALE',\n            'VEHICLE_LINEAR_MOTOR_DECAY_TIMESCALE',\n            'VEHICLE_LINEAR_MOTOR_DIRECTION',\n            'VEHICLE_LINEAR_MOTOR_OFFSET',\n            'VEHICLE_LINEAR_MOTOR_TIMESCALE',\n            'VEHICLE_REFERENCE_FRAME',\n            'VEHICLE_TYPE_AIRPLANE',\n            'VEHICLE_TYPE_BALLOON',\n            'VEHICLE_TYPE_BOAT',\n            'VEHICLE_TYPE_CAR',\n            'VEHICLE_TYPE_NONE',\n            'VEHICLE_TYPE_SLED',\n            'VEHICLE_VERTICAL_ATTRACTION_EFFICIENCY',\n            'VEHICLE_VERTICAL_ATTRACTION_TIMESCALE',\n            'VERTICAL',\n            'WANDER_PAUSE_AT_WAYPOINTS',\n            'ZERO_ROTATION',\n            'ZERO_VECTOR',\n            ),\n        3 => array( // handlers\n            'at_rot_target',\n            'at_target',\n            'attach',\n            'changed',\n            'collision',\n            'collision_end',\n            'collision_start',\n            'control',\n            'dataserver',\n            'email',\n            'http_request',\n            'http_response',\n            'land_collision',\n            'land_collision_end',\n            'land_collision_start',\n            'link_message',\n            'listen',\n            'money',\n            'moving_end',\n            'moving_start',\n            'no_sensor',\n            'not_at_rot_target',\n            'not_at_target',\n            'object_rez',\n            'on_rez',\n            'path_update',\n            'remote_data',\n            'run_time_permissions',\n            'sensor',\n            'state_entry',\n            'state_exit',\n            'timer',\n            'touch',\n            'touch_end',\n            'touch_start',\n            'transaction_result',\n            ),\n        4 => array( // data types\n            'float',\n            'integer',\n            'key',\n            'list',\n            'quaternion',\n            'rotation',\n            'string',\n            'vector',\n            ),\n        5 => array( // library\n            'default',\n            'llAbs',\n            'llAcos',\n            'llAddToLandBanList',\n            'llAddToLandPassList',\n            'llAdjustSoundVolume',\n            'llAllowInventoryDrop',\n            'llAngleBetween',\n            'llApplyImpulse',\n            'llApplyRotationalImpulse',\n            'llAsin',\n            'llAtan2',\n            'llAttachToAvatar',\n            'llAttachToAvatarTemp',\n            'llAvatarOnLinkSitTarget',\n            'llAvatarOnSitTarget',\n            'llAxes2Rot',\n            'llAxisAngle2Rot',\n            'llBase64ToInteger',\n            'llBase64ToString',\n            'llBreakAllLinks',\n            'llBreakLink',\n            'llCastRay',\n            'llCeil',\n            'llClearCameraParams',\n            'llClearLinkMedia',\n            'llClearPrimMedia',\n            'llCloseRemoteDataChannel',\n            'llCollisionFilter',\n            'llCollisionSound',\n            'llCos',\n            'llCreateCharacter',\n            'llCreateLink',\n            'llCSV2List',\n            'llDeleteCharacter',\n            'llDeleteSubList',\n            'llDeleteSubString',\n            'llDetachFromAvatar',\n            'llDetectedGrab',\n            'llDetectedGroup',\n            'llDetectedKey',\n            'llDetectedLinkNumber',\n            'llDetectedName',\n            'llDetectedOwner',\n            'llDetectedPos',\n            'llDetectedRot',\n            'llDetectedTouchBinormal',\n            'llDetectedTouchFace',\n            'llDetectedTouchNormal',\n            'llDetectedTouchPos',\n            'llDetectedTouchST',\n            'llDetectedTouchUV',\n            'llDetectedType',\n            'llDetectedVel',\n            'llDialog',\n            'llDie',\n            'llDumpList2String',\n            'llEdgeOfWorld',\n            'llEjectFromLand',\n            'llEmail',\n            'llEscapeURL',\n            'llEuler2Rot',\n            'llEvade',\n            'llExecCharacterCmd',\n            'llFabs',\n            'llFleeFrom',\n            'llFloor',\n            'llForceMouselook',\n            'llFrand',\n            'llGenerateKey',\n            'llGetAccel',\n            'llGetAgentInfo',\n            'llGetAgentLanguage',\n            'llGetAgentList',\n            'llGetAgentSize',\n            'llGetAlpha',\n            'llGetAndResetTime',\n            'llGetAnimation',\n            'llGetAnimationList',\n            'llGetAnimationOverride',\n            'llGetAttached',\n            'llGetBoundingBox',\n            'llGetCameraPos',\n            'llGetCameraRot',\n            'llGetCenterOfMass',\n            'llGetClosestNavPoint',\n            'llGetColor',\n            'llGetCreator',\n            'llGetDate',\n            'llGetDisplayName',\n            'llGetEnergy',\n            'llGetEnv',\n            'llGetForce',\n            'llGetFreeMemory',\n            'llGetFreeURLs',\n            'llGetGeometricCenter',\n            'llGetGMTclock',\n            'llGetHTTPHeader',\n            'llGetInventoryCreator',\n            'llGetInventoryKey',\n            'llGetInventoryName',\n            'llGetInventoryNumber',\n            'llGetInventoryPermMask',\n            'llGetInventoryType',\n            'llGetKey',\n            'llGetLandOwnerAt',\n            'llGetLinkKey',\n            'llGetLinkMedia',\n            'llGetLinkName',\n            'llGetLinkNumber',\n            'llGetLinkNumberOfSides',\n            'llGetLinkPrimitiveParams',\n            'llGetListEntryType',\n            'llGetListLength',\n            'llGetLocalPos',\n            'llGetLocalRot',\n            'llGetMass',\n            'llGetMassMKS',\n            'llGetMaxScaleFactor',\n            'llGetMemoryLimit',\n            'llGetMinScaleFactor',\n            'llGetNextEmail',\n            'llGetNotecardLine',\n            'llGetNumberOfNotecardLines',\n            'llGetNumberOfPrims',\n            'llGetNumberOfSides',\n            'llGetObjectDesc',\n            'llGetObjectDetails',\n            'llGetObjectMass',\n            'llGetObjectName',\n            'llGetObjectPermMask',\n            'llGetObjectPrimCount',\n            'llGetOmega',\n            'llGetOwner',\n            'llGetOwnerKey',\n            'llGetParcelDetails',\n            'llGetParcelFlags',\n            'llGetParcelMaxPrims',\n            'llGetParcelMusicURL',\n            'llGetParcelPrimCount',\n            'llGetParcelPrimOwners',\n            'llGetPermissions',\n            'llGetPermissionsKey',\n            'llGetPhysicsMaterial',\n            'llGetPos',\n            'llGetPrimitiveParams',\n            'llGetPrimMediaParams',\n            'llGetRegionAgentCount',\n            'llGetRegionCorner',\n            'llGetRegionFlags',\n            'llGetRegionFPS',\n            'llGetRegionName',\n            'llGetRegionTimeDilation',\n            'llGetRootPosition',\n            'llGetRootRotation',\n            'llGetRot',\n            'llGetScale',\n            'llGetScriptName',\n            'llGetScriptState',\n            'llGetSimStats',\n            'llGetSimulatorHostname',\n            'llGetSPMaxMemory',\n            'llGetStartParameter',\n            'llGetStaticPath',\n            'llGetStatus',\n            'llGetSubString',\n            'llGetSunDirection',\n            'llGetTexture',\n            'llGetTextureOffset',\n            'llGetTextureRot',\n            'llGetTextureScale',\n            'llGetTime',\n            'llGetTimeOfDay',\n            'llGetTimestamp',\n            'llGetTorque',\n            'llGetUnixTime',\n            'llGetUsedMemory',\n            'llGetUsername',\n            'llGetVel',\n            'llGetWallclock',\n            'llGiveInventory',\n            'llGiveInventoryList',\n            'llGiveMoney',\n            'llGround',\n            'llGroundContour',\n            'llGroundNormal',\n            'llGroundRepel',\n            'llGroundSlope',\n            'llHTTPRequest',\n            'llHTTPResponse',\n            'llInsertString',\n            'llInstantMessage',\n            'llIntegerToBase64',\n            'llJson2List',\n            'llJsonGetValue',\n            'llJsonSetValue',\n            'llJsonValueType',\n            'llKey2Name',\n            'llLinkParticleSystem',\n            'llLinkSitTarget',\n            'llList2CSV',\n            'llList2Float',\n            'llList2Integer',\n            'llList2Json',\n            'llList2Key',\n            'llList2List',\n            'llList2ListStrided',\n            'llList2Rot',\n            'llList2String',\n            'llList2Vector',\n            'llListen',\n            'llListenControl',\n            'llListenRemove',\n            'llListFindList',\n            'llListInsertList',\n            'llListRandomize',\n            'llListReplaceList',\n            'llListSort',\n            'llListStatistics',\n            'llLoadURL',\n            'llLog',\n            'llLog10',\n            'llLookAt',\n            'llLoopSound',\n            'llLoopSoundMaster',\n            'llLoopSoundSlave',\n            'llManageEstateAccess',\n            'llMapDestination',\n            'llMD5String',\n            'llMessageLinked',\n            'llMinEventDelay',\n            'llModifyLand',\n            'llModPow',\n            'llMoveToTarget',\n            'llNavigateTo',\n            'llOffsetTexture',\n            'llOpenRemoteDataChannel',\n            'llOverMyLand',\n            'llOwnerSay',\n            'llParcelMediaCommandList',\n            'llParcelMediaQuery',\n            'llParseString2List',\n            'llParseStringKeepNulls',\n            'llParticleSystem',\n            'llPassCollisions',\n            'llPassTouches',\n            'llPatrolPoints',\n            'llPlaySound',\n            'llPlaySoundSlave',\n            'llPow',\n            'llPreloadSound',\n            'llPursue',\n            'llPushObject',\n            'llRegionSay',\n            'llRegionSayTo',\n            'llReleaseControls',\n            'llReleaseURL',\n            'llRemoteDataReply',\n            'llRemoteLoadScriptPin',\n            'llRemoveFromLandBanList',\n            'llRemoveFromLandPassList',\n            'llRemoveInventory',\n            'llRemoveVehicleFlags',\n            'llRequestAgentData',\n            'llRequestDisplayName',\n            'llRequestInventoryData',\n            'llRequestPermissions',\n            'llRequestSecureURL',\n            'llRequestSimulatorData',\n            'llRequestURL',\n            'llRequestUsername',\n            'llResetAnimationOverride',\n            'llResetLandBanList',\n            'llResetLandPassList',\n            'llResetOtherScript',\n            'llResetScript',\n            'llResetTime',\n            'llReturnObjectsByID',\n            'llReturnObjectsByOwner',\n            'llRezAtRoot',\n            'llRezObject',\n            'llRot2Angle',\n            'llRot2Axis',\n            'llRot2Euler',\n            'llRot2Fwd',\n            'llRot2Left',\n            'llRot2Up',\n            'llRotateTexture',\n            'llRotBetween',\n            'llRotLookAt',\n            'llRotTarget',\n            'llRotTargetRemove',\n            'llRound',\n            'llSameGroup',\n            'llSay',\n            'llScaleByFactor',\n            'llScaleTexture',\n            'llScriptDanger',\n            'llScriptProfiler',\n            'llSendRemoteData',\n            'llSensor',\n            'llSensorRemove',\n            'llSensorRepeat',\n            'llSetAlpha',\n            'llSetAngularVelocity',\n            'llSetAnimationOverride',\n            'llSetBuoyancy',\n            'llSetCameraAtOffset',\n            'llSetCameraEyeOffset',\n            'llSetCameraParams',\n            'llSetClickAction',\n            'llSetColor',\n            'llSetContentType',\n            'llSetDamage',\n            'llSetForce',\n            'llSetForceAndTorque',\n            'llSetHoverHeight',\n            'llSetKeyframedMotion',\n            'llSetLinkAlpha',\n            'llSetLinkCamera',\n            'llSetLinkColor',\n            'llSetLinkMedia',\n            'llSetLinkPrimitiveParams',\n            'llSetLinkPrimitiveParamsFast',\n            'llSetLinkTexture',\n            'llSetLinkTextureAnim',\n            'llSetLocalRot',\n            'llSetMemoryLimit',\n            'llSetObjectDesc',\n            'llSetObjectName',\n            'llSetParcelMusicURL',\n            'llSetPayPrice',\n            'llSetPhysicsMaterial',\n            'llSetPos',\n            'llSetPrimitiveParams',\n            'llSetPrimMediaParams',\n            'llSetRegionPos',\n            'llSetRemoteScriptAccessPin',\n            'llSetRot',\n            'llSetScale',\n            'llSetScriptState',\n            'llSetSitText',\n            'llSetSoundQueueing',\n            'llSetSoundRadius',\n            'llSetStatus',\n            'llSetText',\n            'llSetTexture',\n            'llSetTextureAnim',\n            'llSetTimerEvent',\n            'llSetTorque',\n            'llSetTouchText',\n            'llSetVehicleFlags',\n            'llSetVehicleFloatParam',\n            'llSetVehicleRotationParam',\n            'llSetVehicleType',\n            'llSetVehicleVectorParam',\n            'llSetVelocity',\n            'llSHA1String',\n            'llShout',\n            'llSin',\n            'llSitTarget',\n            'llSleep',\n            'llSqrt',\n            'llStartAnimation',\n            'llStopAnimation',\n            'llStopHover',\n            'llStopLookAt',\n            'llStopMoveToTarget',\n            'llStopSound',\n            'llStringLength',\n            'llStringToBase64',\n            'llStringTrim',\n            'llSubStringIndex',\n            'llTakeControls',\n            'llTan',\n            'llTarget',\n            'llTargetOmega',\n            'llTargetRemove',\n            'llTeleportAgent',\n            'llTeleportAgentGlobalCoords',\n            'llTeleportAgentHome',\n            'llTextBox',\n            'llToLower',\n            'llToUpper',\n            'llTransferLindenDollars',\n            'llTriggerSound',\n            'llTriggerSoundLimited',\n            'llUnescapeURL',\n            'llUnSit',\n            'llUpdateCharacter',\n            'llVecDist',\n            'llVecMag',\n            'llVecNorm',\n            'llVolumeDetect',\n            'llWanderWithin',\n            'llWater',\n            'llWhisper',\n            'llWind',\n            'llXorBase64',\n            'print',\n            ),\n        6 => array( // deprecated\n            'ATTACH_LPEC',\n            'ATTACH_RPEC',\n            'DATA_RATING',\n            'PERMISSION_CHANGE_JOINTS',\n            'PERMISSION_CHANGE_PERMISSIONS',\n            'PERMISSION_RELEASE_OWNERSHIP',\n            'PERMISSION_REMAP_CONTROLS',\n            'PRIM_CAST_SHADOWS',\n            'PRIM_MATERIAL_LIGHT',\n            'PSYS_SRC_INNERANGLE',\n            'PSYS_SRC_OBJ_REL_MASK',\n            'PSYS_SRC_OUTERANGLE',\n            'VEHICLE_FLAG_NO_FLY_UP',\n            'llCloud',\n            'llMakeExplosion',\n            'llMakeFire',\n            'llMakeFountain',\n            'llMakeSmoke',\n            'llRemoteDataSetRegion',\n            'llSound',\n            'llSoundPreload',\n            'llXorBase64Strings',\n            'llXorBase64StringsCorrect',\n            ),\n        7 => array( // unimplemented\n            'event',\n            'llCollisionSprite',\n            'llPointAt',\n            'llRefreshPrimURL',\n            'llReleaseCamera',\n            'llRemoteLoadScript',\n            'llSetPrimURL',\n            'llStopPointAt',\n            'llTakeCamera',\n            ),\n        8 => array( // God mode\n            'llGodLikeRezObject',\n            'llSetInventoryPermMask',\n            'llSetObjectPermMask',\n            ),\n        ),\n    'SYMBOLS' => array(\n        '{', '}', '(', ')', '[', ']',\n        '=', '+', '-', '*', '/',\n        '+=', '-=', '*=', '/=', '%=', '++', '--',\n        '!', '%', '&', '|', '&&', '||',\n        '==', '!=', '<', '>', '<=', '>=',\n        '~', '<<', '>>', '^', ':',\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => true,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000ff;',\n            2 => 'color: #000080;',\n            3 => 'color: #008080;',\n            4 => 'color: #228b22;',\n            5 => 'color: #b22222;',\n            6 => 'color: #8b0000; background-color: #ffff00;',\n            7 => 'color: #8b0000; background-color: #fa8072;',\n            8 => 'color: #000000; background-color: #ba55d3;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #ff7f50; font-style: italic;',\n            'MULTI' => 'color: #ff7f50; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #006400;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #000000;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://wiki.secondlife.com/wiki/{FNAME}',\n        4 => 'http://wiki.secondlife.com/wiki/{FNAME}',\n        5 => 'http://wiki.secondlife.com/wiki/{FNAME}',\n        6 => 'http://wiki.secondlife.com/wiki/{FNAME}',\n        7 => 'http://wiki.secondlife.com/wiki/{FNAME}',\n        8 => 'http://wiki.secondlife.com/wiki/{FNAME}',\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/lua.php",
    "content": "<?php\n/*************************************************************************************\n * lua.php\n * -------\n * Author: Roberto Rossi (rsoftware@altervista.org)\n * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/07/10\n *\n * LUA language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2005/08/26 (1.0.2)\n *  -  Added support for objects and methods\n *  -  Removed unusable keywords\n * 2004/11/27 (1.0.1)\n *  -  Added support for multiple object splitters\n * 2004/10/27 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Lua',\n    'COMMENT_SINGLE' => array(1 => \"--\"),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(1 => '/--\\[(=*)\\[.*?\\]\\1\\]/s'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[\\\\\\\\abfnrtv\\'\\\"]#i\",\n        //Octal Char Specs\n        2 => \"#\\\\\\\\\\\\d{1,3}#\"\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_HEX_PREFIX |\n        GESHI_NUMBER_FLT_NONSCI | GESHI_NUMBER_FLT_NONSCI_F |\n        GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'break','do','else','elseif','end','for','function','if',\n            'local','repeat','return','then','until','while'\n            ),\n        2 => array(\n            'and','in','not','or'\n            ),\n        3 => array(\n            '_VERSION','assert','collectgarbage','dofile','error','gcinfo','loadfile','loadstring',\n            'print','tonumber','tostring','type','unpack',\n            '_ALERT','_ERRORMESSAGE','_INPUT','_PROMPT','_OUTPUT',\n            '_STDERR','_STDIN','_STDOUT','call','dostring','foreach','foreachi','getn','globals','newtype',\n            'rawget','rawset','require','sort','tinsert','tremove',\n            'abs','acos','asin','atan','atan2','ceil','cos','deg','exp',\n            'floor','format','frexp','gsub','ldexp','log','log10','max','min','mod','rad','random','randomseed',\n            'sin','sqrt','strbyte','strchar','strfind','strlen','strlower','strrep','strsub','strupper','tan',\n            'openfile','closefile','readfrom','writeto','appendto',\n            'remove','rename','flush','seek','tmpfile','tmpname','read','write',\n            'clock','date','difftime','execute','exit','getenv','setlocale','time',\n            '_G','getfenv','getmetatable','ipairs','loadlib','next','pairs','pcall',\n            'rawegal','setfenv','setmetatable','xpcall',\n            'string.byte','string.char','string.dump','string.find','string.len',\n            'string.lower','string.rep','string.sub','string.upper','string.format','string.gfind','string.gsub',\n            'table.concat','table.foreach','table.foreachi','table.getn','table.sort','table.insert','table.remove','table.setn',\n            'math.abs','math.acos','math.asin','math.atan','math.atan2','math.ceil','math.cos','math.deg','math.exp',\n            'math.floor','math.frexp','math.ldexp','math.log','math.log10','math.max','math.min','math.mod',\n            'math.pi','math.rad','math.random','math.randomseed','math.sin','math.sqrt','math.tan',\n            'coroutine.create','coroutine.resume','coroutine.status',\n            'coroutine.wrap','coroutine.yield',\n            'io.close','io.flush','io.input','io.lines','io.open','io.output','io.read','io.tmpfile','io.type','io.write',\n            'io.stdin','io.stdout','io.stderr',\n            'os.clock','os.date','os.difftime','os.execute','os.exit','os.getenv','os.remove','os.rename',\n            'os.setlocale','os.time','os.tmpname',\n            'string','table','math','coroutine','io','os','debug'\n            ),\n        4 => array(\n            'nil', 'false', 'true'\n            ),\n        5 => array(\n            'Nil', 'Boolean', 'Number', 'String', 'Userdata', 'Thread', 'Table'\n            )\n        ),\n    'SYMBOLS' => array(\n        '+', '-', '*', '/', '%', '^', '#',\n        '==', '~=', '<=', '>=', '<', '>', '=',\n        '(', ')', '{', '}', '[', ']',\n        ';', ':', ',', '.', '..', '...'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #aa9900; font-weight: bold;',\n            2 => 'color: #aa9900; font-weight: bold;',\n            3 => 'color: #0000aa;',\n            4 => 'color: #aa9900;',\n            5 => 'color: #aa9900;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            //2 => 'color: #ff0000;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff6666;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #aa9900;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/m68k.php",
    "content": "<?php\n/*************************************************************************************\n * m68k.php\n * --------\n * Author: Benny Baumann (BenBE@omorphia.de)\n * Copyright: (c) 2007 Benny Baumann (http://www.omorphia.de/), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2007/02/06\n *\n * Motorola 68000 Assembler language file for GeSHi.\n *\n * Syntax definition as commonly used by the motorola documentation for the\n * MC68HC908GP32 Microcontroller (and maybe others).\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n * 2007/06/02 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2007/06/02)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Motorola 68000 Assembler',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        /*CPU*/\n        1 => array(\n            'adc','add','ais','aix','and','asl','asr','bcc','bclr','bcs','beq',\n            'bge','bgt','bhcc','bhcs','bhi','bhs','bih','bil','bit','ble','blo',\n            'bls','blt','bmc','bmi','bms','bne','bpl','bra','brclr','brn',\n            'brset','bset','bsr','cbeq','clc','cli','clr','cmp','com','cphx',\n            'cpx','daa','dbnz','dec','div','eor','inc','jmp','jsr','lda','ldhx',\n            'ldx','lsl','lsr','mov','mul','neg','nop','nsa','ora','psha','pshh',\n            'pshx','pula','pulh','pulx','rol','ror','rsp','rti','rts','sbc',\n            'sec','sei','sta','sthx','stop','stx','sub','swi','tap','tax','tpa',\n            'tst','tsx','txa','txs','wait'\n        ),\n        /*registers*/\n        2 => array(\n            'a','h','x',\n            'hx','sp'\n            ),\n        /*Directive*/\n        3 => array(\n            '#define','#endif','#else','#ifdef','#ifndef','#include','#undef',\n            '.db','.dd','.df','.dq','.dt','.dw','.end','.org','equ'\n            ),\n        ),\n    'SYMBOLS' => array(\n        ','\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000ff; font-weight:bold;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #46aa03; font-weight:bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #adadad; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #7f007f;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #dd22dd;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #008000;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #22bbff;',\n            1 => 'color: #22bbff;',\n            2 => 'color: #993333;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        //Hex numbers\n        0 => '#?0[0-9a-fA-F]{1,32}[hH]',\n        //Binary numbers\n        1 => '\\%[01]{1,64}[bB]',\n        //Labels\n        2 => '^[_a-zA-Z][_a-zA-Z0-9]*?\\:'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 8\n);\n"
  },
  {
    "path": "includes/geshi/magiksf.php",
    "content": "<?php\n/*************************************************************************************\n * magiksf.php\n * --------\n * Author: Sjoerd van Leent (svanleent@gmail.com)\n * Copyright: (c) 2010 Sjoerd van Leent\n * Release Version: 1.0.9.1\n * Date Started: 2010/02/15\n *\n * MagikSF language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/02/22 (1.0.0.2)\n *   - Symbols also accept the ! and ? characters properly\n *   - Labels (identifiers starting with !) are also coloured\n * 2010/02/17 (1.0.0.1)\n *   -  Parsing out symbols better\n *   -  Add package identifiers\n * 2010/02/15 (1.0.0)\n *   -  First Release\n *\n * TODO\n * ----\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'ESCAPE_CHAR' => null,\n    'LANG_NAME' => 'MagikSF',\n    'COMMENT_SINGLE' => array(1 => '##', 2 => '#%', 3 => '#'),\n    'COMMENT_MULTI' => array(\"_pragma(\" => \")\"),\n    //Multiline-continued single-line comments\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '', // FIXME: Duplicate array key. null or ''?\n    'KEYWORDS' => array(\n        1 => array(\n            '_block', '_endblock', '_proc', '_endproc', '_loop', '_endloop',\n            '_method', '_endmethod',\n            '_protect', '_endprotect', '_protection', '_locking',\n            '_continue',\n            ),\n        2 => array(\n            '_self', '_thisthread', '_pragma', '_private', '_abstract',\n            '_local', '_global', '_dynamic', '_package', '_constant',\n            '_import', '_iter', '_lock', '_optional', '_recursive', '_super'\n            ),\n        3 => array(\n            '_if', '_endif', '_then', '_else', '_elif', '_orif', '_andif', '_for', '_over',\n            '_try', '_endtry', '_when', '_throw', '_catch', '_endcatch', '_handling',\n            '_finally', '_loopbody', '_return', '_leave', '_with'\n            ),\n        4 => array(\n            '_false', '_true', '_maybe', '_unset', '_no_way'\n            ),\n        5 => array(\n            '_mod', '_div', '_or', '_and', '_cf', '_is', '_isnt', '_not', '_gather', '_scatter',\n            '_allresults', '_clone', '_xor'\n            ),\n        6 => array(\n            'def_slotted_exemplar', 'write_string', 'write', 'condition',\n            'record_transaction', 'gis_program_manager', 'perform', 'define_shared_constant',\n            'property_list', 'rope', 'def_property', 'def_mixin'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']',\n        '+', '-', '*', '/', '**',\n        '=', '<', '>', '<<', '>>',\n        ',', '$',\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #ff3f3f;',\n            3 => 'color: #3f7f3f; font-weight: bold;',\n            4 => 'color: #cc66cc;',\n            5 => 'color: #ff3fff; font-weight: bold;',\n            6 => 'font-weight: bold;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #339933; font-weight: bold;',\n            2 => 'color: #993333;',\n            3 => 'color: #339933;',\n            'MULTI' => 'color: #7f7f7f; font-style: italic',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #ff3f3f;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;',\n            2 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #ff3f3f;'\n            ),\n        'REGEXPS' => array(\n            1 => 'color: #3f3fff;',\n            2 => 'color: #3f3fff;',\n            3 => 'color: #cc66cc;',\n            4 => 'color: #7f3f7f; font-style: italic;',\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        1 => array(\n            GESHI_SEARCH => '\\b[a-zA-Z0-9_]+:', // package identifiers\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        2 => array(\n            GESHI_SEARCH => ':(?:[a-zA-Z0-9!?_]+|(?:[<pipe>].*?[<pipe>]))*', //symbols\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        3 => array(\n            GESHI_SEARCH => '%space|%tab|%newline|%.', //characters\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        4 => array(\n            GESHI_SEARCH => '@(?:[a-zA-Z0-9!?_]+|(?:[<pipe>].*?[<pipe>]))*', //symbols\n            GESHI_REPLACE => '\\\\0',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/make.php",
    "content": "<?php\n/*************************************************************************************\n * make.php\n * --------\n * Author: Neil Bird <phoenix@fnxweb.com>\n * Copyright: (c) 2008 Neil Bird\n * Release Version: 1.0.9.1\n * Date Started: 2008/08/26\n *\n * make language file for GeSHi.\n *\n * (GNU make specific)\n *\n * CHANGES\n * -------\n * 2008/09/05 (1.0.0)\n *  -  First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'GNU make',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_REGEXP' => array(\n        //Escaped String Starters\n        2 => \"/\\\\\\\\['\\\"]/siU\"\n        ),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            // core\n            'ifeq', 'else', 'endif', 'ifneq', 'ifdef', 'ifndef',\n            'include', 'vpath', 'export', 'unexport', 'override',\n            'info', 'warning', 'error'\n            ),\n        2 => array(\n            // macros, literals\n            '.SUFFIXES', '.PHONY', '.DEFAULT', '.PRECIOUS', '.IGNORE', '.SILENT', '.EXPORT_ALL_VARIABLES', '.KEEP_STATE',\n            '.LIBPATTERNS', '.NOTPARALLEL', '.DELETE_ON_ERROR', '.INTERMEDIATE', '.POSIX', '.SECONDARY'\n            ),\n        /*\n        3 => array(\n            // funcs - see regex\n            //'subst', 'addprefix', 'addsuffix', 'basename', 'call', 'dir', 'error', 'eval', 'filter-out', 'filter',\n            //'findstring', 'firstword', 'foreach', 'if', 'join', 'notdir', 'origin', 'patsubst', 'shell', 'sort', 'strip',\n            //'suffix', 'warning', 'wildcard', 'word', 'wordlist', 'words'\n            )*/\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}',\n        '!', '@', '%', '&', '|', '/',\n        '<', '>',\n        '=', '-', '+', '*',\n        '.', ':', ',', ';',\n        '$'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        //3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #666622; font-weight: bold;',\n            2 => 'color: #990000;',\n            //3 => 'color: #000000; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #339900; font-style: italic;',\n            2 => 'color: #000099; font-weight: bold;',\n            'MULTI' => ''\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(  # keep same as symbols so as to make ${} and $() equiv.\n            0 => 'color: #004400;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #CC2200;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #CC2200;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #004400;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #000088; font-weight: bold;',\n            1 => 'color: #0000CC; font-weight: bold;',\n            2 => 'color: #000088;'\n            ),\n        'SCRIPT' => array(),\n        'METHODS' => array()\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        //3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        //Simple variables\n        0 => \"\\\\$(?:[^{(&]|&(?:amp|lt|gt);)\",\n        //Complex variables/functions [built-ins]\n        1 => array(\n            GESHI_SEARCH => '(\\\\$[({])(subst|addprefix|addsuffix|basename|call|dir|error|eval|filter-out|filter,|findstring|firstword|foreach|if|join|notdir|origin|patsubst|shell|sort|strip,|suffix|warning|wildcard|word|wordlist|words)([ })])',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3'\n            ),\n            //Complex variables/functions [others]\n        2 => array(\n            GESHI_SEARCH => '(\\\\$[({])([A-Za-z_][A-Za-z_0-9]*)([ })])',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3'\n            ),\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'TAB_WIDTH' => 8\n);\n"
  },
  {
    "path": "includes/geshi/mapbasic.php",
    "content": "<?php\n/*************************************************************************************\n * mapbasic.php\n * ------\n * Author: Tomasz Berus (t.berus@gisodkuchni.pl)\n * Copyright: (c) 2009 Tomasz Berus (http://sourceforge.net/projects/mbsyntax/)\n * Release Version: 1.0.9.1\n * Date Started: 2008/11/25\n *\n * MapBasic language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009/09/17 (1.0.1)\n *  -  Replaced all tabs with spaces\n *  -  Fixed 'URLS' array\n * 2008/11/25 (1.0.0)\n *  -  First Release (MapBasic v9.5)\n *\n * TODO (updated 2008/11/25)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'MapBasic',\n    'COMMENT_SINGLE' => array(1 => \"'\"),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n/*\n        1 - Statements + Clauses + Data Types + Logical Operators, Geographical Operators + SQL\n        2 - Special Procedures\n        3 - Functions\n        4 - Constants\n        5 - Extended keywords (case sensitive)\n*/\n        1 => array(\n            'Add', 'Alias', 'All', 'Alter', 'And', 'Any', 'Application', 'Arc',\n            'Area', 'As', 'AutoLabel', 'Bar', 'Beep', 'Begin', 'Bind',\n            'Browse', 'Brush', 'BrushPicker', 'Button', 'ButtonPad',\n            'ButtonPads', 'BY', 'Call', 'CancelButton', 'Cartographic', 'Case',\n            'CharSet', 'Check', 'CheckBox', 'Clean', 'Close', 'Collection',\n            'Column', 'Combine', 'Command', 'Commit', 'Connection',\n            'ConnectionNumber', 'Contains', 'Continue', 'Control', 'CoordSys',\n            'Create', 'Cutter', 'Date', 'Datum', 'DDEExecute', 'DDEPoke',\n            'DDETerminate', 'DDETerminateAll', 'Declare', 'Default', 'Define',\n            'Delete', 'Dialog', 'Digitizer', 'Dim', 'Disaggregate',\n            'Disconnect', 'Distance', 'Do', 'Document', 'DocumentWindow',\n            'Drag', 'Drop', 'EditText', 'Ellipse', 'Enclose', 'End', 'Entire',\n            'Entirely', 'Erase', 'Error', 'Event', 'Exit', 'Export',\n            'Farthest', 'Fetch', 'File', 'Find', 'Float', 'FME', 'Font',\n            'FontPicker', 'For', 'Format', 'Frame', 'From', 'Function',\n            'Geocode', 'Get', 'Global', 'Goto', 'Graph', 'Grid', 'GROUP',\n            'GroupBox', 'Handler', 'If', 'Import', 'In', 'Include', 'Index',\n            'Info', 'Input', 'Insert', 'Integer', 'Intersect', 'Intersects',\n            'INTO', 'Isogram', 'Item', 'Kill', 'Layout', 'Legend', 'Line',\n            'Link', 'ListBox', 'Logical', 'Loop', 'Map', 'Map3D', 'MapInfo',\n            'MapInfoDialog', 'Menu', 'Merge', 'Metadata', 'Method', 'Mod',\n            'Move', 'MultiListBox', 'MultiPoint', 'MWS', 'Nearest', 'Next',\n            'NOSELECT', 'Not', 'Note', 'Object', 'Objects', 'Offset',\n            'OKButton', 'OnError', 'Open', 'Or', 'ORDER', 'Overlay', 'Pack',\n            'Paper', 'Part', 'Partly', 'Pen', 'PenPicker', 'Pline', 'Point',\n            'PopupMenu', 'Preserve', 'Print', 'PrintWin', 'PrismMap',\n            'Processing', 'Program', 'ProgressBar', 'ProgressBars', 'Put',\n            'RadioGroup', 'Randomize', 'Ranges', 'Rect', 'ReDim',\n            'Redistricter', 'Refresh', 'Region', 'Register', 'Relief',\n            'Reload', 'Remove', 'Rename', 'Report', 'Reproject', 'Resolution',\n            'Resume', 'Rollback', 'RoundRect', 'RowID', 'Run', 'Save', 'Seek',\n            'Select', 'Selection', 'Server', 'Set', 'Shade', 'SmallInt',\n            'Snap', 'Split', 'StaticText', 'StatusBar', 'Stop', 'String',\n            'Style', 'Styles', 'Sub', 'Symbol', 'SymbolPicker', 'Symbols',\n            'Table', 'Target', 'Terminate', 'Text', 'Then', 'Threshold',\n            'Timeout', 'To', 'Transaction', 'Transform', 'Type', 'UnDim',\n            'Units', 'Unlink', 'Update', 'Using', 'VALUES', 'Version',\n            'Versioning', 'Wend', 'WFS', 'WHERE', 'While', 'Window', 'Within',\n            'Workspace', 'Write'\n            ),\n        2 => array(\n            'EndHandler', 'ForegroundTaskSwitchHandler', 'Main',\n            'RemoteMapGenHandler', 'RemoteMsgHandler', 'SelChangedHandler',\n            'ToolHandler', 'WinChangedHandler', 'WinClosedHandler',\n            'WinFocusChangedHandler'\n            ),\n        3 => array(\n            'Abs', 'Acos', 'ApplicationDirectory$', 'AreaOverlap', 'Asc',\n            'Asin', 'Ask', 'Atn', 'Avg', 'Buffer', 'ButtonPadInfo',\n            'CartesianArea', 'CartesianBuffer', 'CartesianConnectObjects',\n            'CartesianDistance', 'CartesianObjectDistance',\n            'CartesianObjectLen', 'CartesianOffset', 'CartesianOffsetXY',\n            'CartesianPerimeter', 'Centroid', 'CentroidX', 'CentroidY',\n            'ChooseProjection$', 'Chr$', 'ColumnInfo', 'CommandInfo',\n            'ConnectObjects', 'ControlPointInfo', 'ConvertToPline',\n            'ConvertToRegion', 'ConvexHull', 'CoordSysName$', 'Cos', 'Count',\n            'CreateCircle', 'CreateLine', 'CreatePoint', 'CreateText',\n            'CurDate', 'CurrentBorderPen', 'CurrentBrush', 'CurrentFont',\n            'CurrentLinePen', 'CurrentPen', 'CurrentSymbol', 'DateWindow',\n            'Day', 'DDEInitiate', 'DDERequest$', 'DeformatNumber$', 'EOF',\n            'EOT', 'EPSGToCoordSysString$', 'Err', 'Error$', 'Exp',\n            'ExtractNodes', 'FileAttr', 'FileExists', 'FileOpenDlg',\n            'FileSaveAsDlg', 'Fix', 'Format$', 'FormatDate$', 'FormatNumber$',\n            'FrontWindow', 'GeocodeInfo', 'GetFolderPath$', 'GetGridCellValue',\n            'GetMetadata$', 'GetSeamlessSheet', 'GridTableInfo',\n            'HomeDirectory$', 'InStr', 'Int', 'IntersectNodes',\n            'IsGridCellNull', 'IsogramInfo', 'IsPenWidthPixels',\n            'LabelFindByID', 'LabelFindFirst', 'LabelFindNext', 'LabelInfo',\n            'LayerInfo', 'LCase$', 'Left$', 'LegendFrameInfo', 'LegendInfo',\n            'LegendStyleInfo', 'Len', 'Like', 'LocateFile$', 'LOF', 'Log',\n            'LTrim$', 'MakeBrush', 'MakeCustomSymbol', 'MakeFont',\n            'MakeFontSymbol', 'MakePen', 'MakeSymbol', 'Map3DInfo',\n            'MapperInfo', 'Max', 'Maximum', 'MBR', 'MenuItemInfoByHandler',\n            'MenuItemInfoByID', 'MGRSToPoint', 'MICloseContent',\n            'MICloseFtpConnection', 'MICloseFtpFileFind',\n            'MICloseHttpConnection', 'MICloseHttpFile', 'MICloseSession',\n            'MICreateSession', 'MICreateSessionFull', 'Mid$', 'MidByte$',\n            'MIErrorDlg', 'MIFindFtpFile', 'MIFindNextFtpFile', 'MIGetContent',\n            'MIGetContentBuffer', 'MIGetContentLen', 'MIGetContentString',\n            'MIGetContentToFile', 'MIGetContentType',\n            'MIGetCurrentFtpDirectory', 'MIGetErrorCode', 'MIGetErrorMessage',\n            'MIGetFileURL', 'MIGetFtpConnection', 'MIGetFtpFile',\n            'MIGetFtpFileFind', 'MIGetFtpFileName', 'MIGetHttpConnection',\n            'MIIsFtpDirectory', 'MIIsFtpDots', 'Min', 'Minimum',\n            'MIOpenRequest', 'MIOpenRequestFull', 'MIParseURL', 'MIPutFtpFile',\n            'MIQueryInfo', 'MIQueryInfoStatusCode', 'MISaveContent',\n            'MISendRequest', 'MISendSimpleRequest', 'MISetCurrentFtpDirectory',\n            'MISetSessionTimeout', 'MIXmlAttributeListDestroy',\n            'MIXmlDocumentCreate', 'MIXmlDocumentDestroy',\n            'MIXmlDocumentGetNamespaces', 'MIXmlDocumentGetRootNode',\n            'MIXmlDocumentLoad', 'MIXmlDocumentLoadXML',\n            'MIXmlDocumentLoadXMLString', 'MIXmlDocumentSetProperty',\n            'MIXmlGetAttributeList', 'MIXmlGetChildList',\n            'MIXmlGetNextAttribute', 'MIXmlGetNextNode', 'MIXmlNodeDestroy',\n            'MIXmlNodeGetAttributeValue', 'MIXmlNodeGetFirstChild',\n            'MIXmlNodeGetName', 'MIXmlNodeGetParent', 'MIXmlNodeGetText',\n            'MIXmlNodeGetValue', 'MIXmlNodeListDestroy', 'MIXmlSCDestroy',\n            'MIXmlSCGetLength', 'MIXmlSCGetNamespace', 'MIXmlSelectNodes',\n            'MIXmlSelectSingleNode', 'Month', 'NumAllWindows', 'NumberToDate',\n            'NumCols', 'NumTables', 'NumWindows', 'ObjectDistance',\n            'ObjectGeography', 'ObjectInfo', 'ObjectLen', 'ObjectNodeHasM',\n            'ObjectNodeHasZ', 'ObjectNodeM', 'ObjectNodeX', 'ObjectNodeY',\n            'ObjectNodeZ', 'OffsetXY', 'Overlap', 'OverlayNodes',\n            'PathToDirectory$', 'PathToFileName$', 'PathToTableName$',\n            'PenWidthToPoints', 'Perimeter', 'PointsToPenWidth',\n            'PointToMGRS$', 'PrismMapInfo', 'ProgramDirectory$', 'Proper$',\n            'ProportionOverlap', 'RasterTableInfo', 'ReadControlValue',\n            'RegionInfo', 'RemoteQueryHandler', 'RGB', 'Right$', 'Rnd',\n            'Rotate', 'RotateAtPoint', 'Round', 'RTrim$', 'SearchInfo',\n            'SearchPoint', 'SearchRect', 'SelectionInfo', 'Server_ColumnInfo',\n            'Server_Connect', 'Server_ConnectInfo', 'Server_DriverInfo',\n            'Server_EOT', 'Server_Execute', 'Server_GetODBCHConn',\n            'Server_GetODBCHStmt', 'Server_NumCols', 'Server_NumDrivers',\n            'SessionInfo', 'Sgn', 'Sin', 'Space$', 'SphericalArea',\n            'SphericalConnectObjects', 'SphericalDistance',\n            'SphericalObjectDistance', 'SphericalObjectLen', 'SphericalOffset',\n            'SphericalOffsetXY', 'SphericalPerimeter', 'Sqr', 'Str$',\n            'String$', 'StringCompare', 'StringCompareIntl', 'StringToDate',\n            'StyleAttr', 'Sum', 'SystemInfo', 'TableInfo', 'Tan',\n            'TempFileName$', 'TextSize', 'Time', 'Timer', 'TriggerControl',\n            'TrueFileName$', 'UBound', 'UCase$', 'UnitAbbr$', 'UnitName$',\n            'Val', 'Weekday', 'WindowID', 'WindowInfo', 'WtAvg', 'Year'\n            ),\n        4 => array(\n            'BLACK', 'BLUE', 'BRUSH_BACKCOLOR', 'BRUSH_FORECOLOR',\n            'BRUSH_PATTERN', 'BTNPAD_INFO_FLOATING', 'BTNPAD_INFO_NBTNS',\n            'BTNPAD_INFO_WIDTH', 'BTNPAD_INFO_WINID', 'BTNPAD_INFO_X',\n            'BTNPAD_INFO_Y', 'CLS', 'CMD_INFO_CTRL', 'CMD_INFO_CUSTOM_OBJ',\n            'CMD_INFO_DLG_DBL', 'CMD_INFO_DLG_OK', 'CMD_INFO_EDIT_ASK',\n            'CMD_INFO_EDIT_DISCARD', 'CMD_INFO_EDIT_SAVE',\n            'CMD_INFO_EDIT_STATUS', 'CMD_INFO_EDIT_TABLE', 'CMD_INFO_FIND_RC',\n            'CMD_INFO_FIND_ROWID', 'CMD_INFO_HL_FILE_NAME',\n            'CMD_INFO_HL_LAYER_ID', 'CMD_INFO_HL_ROWID',\n            'CMD_INFO_HL_TABLE_NAME', 'CMD_INFO_HL_WINDOW_ID',\n            'CMD_INFO_INTERRUPT', 'CMD_INFO_MENUITEM', 'CMD_INFO_MSG',\n            'CMD_INFO_ROWID', 'CMD_INFO_SELTYPE', 'CMD_INFO_SHIFT',\n            'CMD_INFO_STATUS', 'CMD_INFO_TASK_SWITCH', 'CMD_INFO_TOOLBTN',\n            'CMD_INFO_WIN', 'CMD_INFO_X', 'CMD_INFO_X2', 'CMD_INFO_XCMD',\n            'CMD_INFO_Y', 'CMD_INFO_Y2', 'COL_INFO_DECPLACES',\n            'COL_INFO_EDITABLE', 'COL_INFO_INDEXED', 'COL_INFO_NAME',\n            'COL_INFO_NUM', 'COL_INFO_TYPE', 'COL_INFO_WIDTH', 'COL_TYPE_CHAR',\n            'COL_TYPE_DATE', 'COL_TYPE_DATETIME', 'COL_TYPE_DECIMAL',\n            'COL_TYPE_FLOAT', 'COL_TYPE_GRAPHIC', 'COL_TYPE_INTEGER',\n            'COL_TYPE_LOGICAL', 'COL_TYPE_SMALLINT', 'COL_TYPE_TIME', 'CYAN',\n            'DATE_WIN_CURPROG', 'DATE_WIN_SESSION', 'DEG_2_RAD',\n            'DICTIONARY_ADDRESS_ONLY', 'DICTIONARY_ALL',\n            'DICTIONARY_PREFER_ADDRESS', 'DICTIONARY_PREFER_USER',\n            'DICTIONARY_USER_ONLY', 'DM_CUSTOM_CIRCLE', 'DM_CUSTOM_ELLIPSE',\n            'DM_CUSTOM_LINE', 'DM_CUSTOM_POINT', 'DM_CUSTOM_POLYGON',\n            'DM_CUSTOM_POLYLINE', 'DM_CUSTOM_RECT', 'DMPAPER_10X11',\n            'DMPAPER_10X14', 'DMPAPER_11X17', 'DMPAPER_12X11', 'DMPAPER_15X11',\n            'DMPAPER_9X11', 'DMPAPER_A_PLUS', 'DMPAPER_A2', 'DMPAPER_A3',\n            'DMPAPER_A3_EXTRA', 'DMPAPER_A3_EXTRA_TRANSVERSE',\n            'DMPAPER_A3_ROTATED', 'DMPAPER_A3_TRANSVERSE', 'DMPAPER_A4',\n            'DMPAPER_A4_EXTRA', 'DMPAPER_A4_PLUS', 'DMPAPER_A4_ROTATED',\n            'DMPAPER_A4_TRANSVERSE', 'DMPAPER_A4SMALL', 'DMPAPER_A5',\n            'DMPAPER_A5_EXTRA', 'DMPAPER_A5_ROTATED', 'DMPAPER_A5_TRANSVERSE',\n            'DMPAPER_A6', 'DMPAPER_A6_ROTATED', 'DMPAPER_B_PLUS', 'DMPAPER_B4',\n            'DMPAPER_B4_JIS_ROTATED', 'DMPAPER_B5', 'DMPAPER_B5_EXTRA',\n            'DMPAPER_B5_JIS_ROTATED', 'DMPAPER_B5_TRANSVERSE',\n            'DMPAPER_B6_JIS', 'DMPAPER_B6_JIS_ROTATED', 'DMPAPER_CSHEET',\n            'DMPAPER_DBL_JAPANESE_POSTCARD',\n            'DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED', 'DMPAPER_DSHEET',\n            'DMPAPER_ENV_10', 'DMPAPER_ENV_11', 'DMPAPER_ENV_12',\n            'DMPAPER_ENV_14', 'DMPAPER_ENV_9', 'DMPAPER_ENV_B4',\n            'DMPAPER_ENV_B5', 'DMPAPER_ENV_B6', 'DMPAPER_ENV_C3',\n            'DMPAPER_ENV_C4', 'DMPAPER_ENV_C5', 'DMPAPER_ENV_C6',\n            'DMPAPER_ENV_C65', 'DMPAPER_ENV_DL', 'DMPAPER_ENV_INVITE',\n            'DMPAPER_ENV_ITALY', 'DMPAPER_ENV_MONARCH', 'DMPAPER_ENV_PERSONAL',\n            'DMPAPER_ESHEET', 'DMPAPER_EXECUTIVE',\n            'DMPAPER_FANFOLD_LGL_GERMAN', 'DMPAPER_FANFOLD_STD_GERMAN',\n            'DMPAPER_FANFOLD_US', 'DMPAPER_FIRST', 'DMPAPER_FOLIO',\n            'DMPAPER_ISO_B4', 'DMPAPER_JAPANESE_POSTCARD',\n            'DMPAPER_JAPANESE_POSTCARD_ROTATED', 'DMPAPER_JENV_CHOU3',\n            'DMPAPER_JENV_CHOU3_ROTATED', 'DMPAPER_JENV_CHOU4',\n            'DMPAPER_JENV_CHOU4_ROTATED', 'DMPAPER_JENV_KAKU2',\n            'DMPAPER_JENV_KAKU2_ROTATED', 'DMPAPER_JENV_KAKU3',\n            'DMPAPER_JENV_KAKU3_ROTATED', 'DMPAPER_JENV_YOU4',\n            'DMPAPER_JENV_YOU4_ROTATED', 'DMPAPER_LEDGER', 'DMPAPER_LEGAL',\n            'DMPAPER_LEGAL_EXTRA', 'DMPAPER_LETTER', 'DMPAPER_LETTER_EXTRA',\n            'DMPAPER_LETTER_EXTRA_TRANSVERSE', 'DMPAPER_LETTER_PLUS',\n            'DMPAPER_LETTER_ROTATED', 'DMPAPER_LETTER_TRANSVERSE',\n            'DMPAPER_LETTERSMALL', 'DMPAPER_NOTE', 'DMPAPER_P16K',\n            'DMPAPER_P16K_ROTATED', 'DMPAPER_P32K', 'DMPAPER_P32K_ROTATED',\n            'DMPAPER_P32KBIG', 'DMPAPER_P32KBIG_ROTATED', 'DMPAPER_PENV_1',\n            'DMPAPER_PENV_1_ROTATED', 'DMPAPER_PENV_10',\n            'DMPAPER_PENV_10_ROTATED', 'DMPAPER_PENV_2',\n            'DMPAPER_PENV_2_ROTATED', 'DMPAPER_PENV_3',\n            'DMPAPER_PENV_3_ROTATED', 'DMPAPER_PENV_4',\n            'DMPAPER_PENV_4_ROTATED', 'DMPAPER_PENV_5',\n            'DMPAPER_PENV_5_ROTATED', 'DMPAPER_PENV_6',\n            'DMPAPER_PENV_6_ROTATED', 'DMPAPER_PENV_7',\n            'DMPAPER_PENV_7_ROTATED', 'DMPAPER_PENV_8',\n            'DMPAPER_PENV_8_ROTATED', 'DMPAPER_PENV_9',\n            'DMPAPER_PENV_9_ROTATED', 'DMPAPER_QUARTO', 'DMPAPER_RESERVED_48',\n            'DMPAPER_RESERVED_49', 'DMPAPER_STATEMENT', 'DMPAPER_TABLOID',\n            'DMPAPER_TABLOID_EXTRA', 'DMPAPER_USER', 'ERR_BAD_WINDOW',\n            'ERR_BAD_WINDOW_NUM', 'ERR_CANT_ACCESS_FILE',\n            'ERR_CANT_INITIATE_LINK', 'ERR_CMD_NOT_SUPPORTED',\n            'ERR_FCN_ARG_RANGE', 'ERR_FCN_INVALID_FMT',\n            'ERR_FCN_OBJ_FETCH_FAILED', 'ERR_FILEMGR_NOTOPEN',\n            'ERR_FP_MATH_LIB_DOMAIN', 'ERR_FP_MATH_LIB_RANGE',\n            'ERR_INVALID_CHANNEL', 'ERR_INVALID_READ_CONTROL',\n            'ERR_INVALID_TRIG_CONTROL', 'ERR_NO_FIELD',\n            'ERR_NO_RESPONSE_FROM_APP', 'ERR_NULL_SELECTION',\n            'ERR_PROCESS_FAILED_IN_APP', 'ERR_TABLE_NOT_FOUND',\n            'ERR_WANT_MAPPER_WIN', 'FALSE', 'FILE_ATTR_FILESIZE',\n            'FILE_ATTR_MODE', 'FILTER_ALL_DIRECTIONS_1',\n            'FILTER_ALL_DIRECTIONS_2', 'FILTER_DIAGONALLY',\n            'FILTER_HORIZONTALLY', 'FILTER_VERTICALLY',\n            'FILTER_VERTICALLY_AND_HORIZONTALLY', 'FOLDER_APPDATA',\n            'FOLDER_COMMON_APPDATA', 'FOLDER_COMMON_DOCS',\n            'FOLDER_LOCAL_APPDATA', 'FOLDER_MI_APPDATA',\n            'FOLDER_MI_COMMON_APPDATA', 'FOLDER_MI_LOCAL_APPDATA',\n            'FOLDER_MI_PREFERENCE', 'FOLDER_MYDOCS', 'FOLDER_MYPICS',\n            'FONT_BACKCOLOR', 'FONT_FORECOLOR', 'FONT_NAME', 'FONT_POINTSIZE',\n            'FONT_STYLE', 'FRAME_INFO_BORDER_PEN', 'FRAME_INFO_COLUMN',\n            'FRAME_INFO_HEIGHT', 'FRAME_INFO_LABEL', 'FRAME_INFO_MAP_LAYER_ID',\n            'FRAME_INFO_NUM_STYLES', 'FRAME_INFO_POS_X', 'FRAME_INFO_POS_Y',\n            'FRAME_INFO_REFRESHABLE', 'FRAME_INFO_SUBTITLE',\n            'FRAME_INFO_SUBTITLE_FONT', 'FRAME_INFO_TITLE',\n            'FRAME_INFO_TITLE_FONT', 'FRAME_INFO_TYPE', 'FRAME_INFO_VISIBLE',\n            'FRAME_INFO_WIDTH', 'FRAME_TYPE_STYLE', 'FRAME_TYPE_THEME',\n            'GEO_CONTROL_POINT_X', 'GEO_CONTROL_POINT_Y', 'GEOCODE_BATCH_SIZE',\n            'GEOCODE_COUNT_GEOCODED', 'GEOCODE_COUNT_NOTGEOCODED',\n            'GEOCODE_COUNTRY_SUBDIVISION', 'GEOCODE_COUNTRY_SUBDIVISION2',\n            'GEOCODE_DICTIONARY', 'GEOCODE_FALLBACK_GEOGRAPHIC',\n            'GEOCODE_FALLBACK_POSTAL', 'GEOCODE_MAX_BATCH_SIZE',\n            'GEOCODE_MIXED_CASE', 'GEOCODE_MUNICIPALITY',\n            'GEOCODE_MUNICIPALITY2', 'GEOCODE_OFFSET_CENTER',\n            'GEOCODE_OFFSET_CENTER_UNITS', 'GEOCODE_OFFSET_END',\n            'GEOCODE_OFFSET_END_UNITS', 'GEOCODE_PASSTHROUGH',\n            'GEOCODE_POSTAL_CODE', 'GEOCODE_RESULT_MARK_MULTIPLE',\n            'GEOCODE_STREET_NAME', 'GEOCODE_STREET_NUMBER',\n            'GEOCODE_UNABLE_TO_CONVERT_DATA', 'GREEN',\n            'GRID_TAB_INFO_HAS_HILLSHADE', 'GRID_TAB_INFO_MAX_VALUE',\n            'GRID_TAB_INFO_MIN_VALUE', 'HOTLINK_INFO_ENABLED',\n            'HOTLINK_INFO_EXPR', 'HOTLINK_INFO_MODE', 'HOTLINK_INFO_RELATIVE',\n            'HOTLINK_MODE_BOTH', 'HOTLINK_MODE_LABEL', 'HOTLINK_MODE_OBJ',\n            'IMAGE_CLASS_BILEVEL', 'IMAGE_CLASS_GREYSCALE',\n            'IMAGE_CLASS_PALETTE', 'IMAGE_CLASS_RGB', 'IMAGE_TYPE_GRID',\n            'IMAGE_TYPE_RASTER', 'INCL_ALL', 'INCL_COMMON', 'INCL_CROSSINGS',\n            'ISOGRAM_AMBIENT_SPEED_DIST_UNIT',\n            'ISOGRAM_AMBIENT_SPEED_TIME_UNIT', 'ISOGRAM_BANDING',\n            'ISOGRAM_BATCH_SIZE', 'ISOGRAM_DEFAULT_AMBIENT_SPEED',\n            'ISOGRAM_MAJOR_POLYGON_ONLY', 'ISOGRAM_MAJOR_ROADS_ONLY',\n            'ISOGRAM_MAX_BANDS', 'ISOGRAM_MAX_BATCH_SIZE',\n            'ISOGRAM_MAX_DISTANCE', 'ISOGRAM_MAX_DISTANCE_UNITS',\n            'ISOGRAM_MAX_OFFROAD_DIST', 'ISOGRAM_MAX_OFFROAD_DIST_UNITS',\n            'ISOGRAM_MAX_TIME', 'ISOGRAM_MAX_TIME_UNITS',\n            'ISOGRAM_POINTS_ONLY', 'ISOGRAM_PROPAGATION_FACTOR',\n            'ISOGRAM_RECORDS_INSERTED', 'ISOGRAM_RECORDS_NOTINSERTED',\n            'ISOGRAM_RETURN_HOLES', 'ISOGRAM_SIMPLIFICATION_FACTOR',\n            'LABEL_INFO_ANCHORX', 'LABEL_INFO_ANCHORY', 'LABEL_INFO_DRAWN',\n            'LABEL_INFO_EDIT', 'LABEL_INFO_EDIT_ANCHOR',\n            'LABEL_INFO_EDIT_ANGLE', 'LABEL_INFO_EDIT_FONT',\n            'LABEL_INFO_EDIT_OFFSET', 'LABEL_INFO_EDIT_PEN',\n            'LABEL_INFO_EDIT_POSITION', 'LABEL_INFO_EDIT_TEXT',\n            'LABEL_INFO_EDIT_TEXTARROW', 'LABEL_INFO_EDIT_TEXTLINE',\n            'LABEL_INFO_EDIT_VISIBILITY', 'LABEL_INFO_OBJECT',\n            'LABEL_INFO_OFFSET', 'LABEL_INFO_ORIENTATION',\n            'LABEL_INFO_POSITION', 'LABEL_INFO_ROWID', 'LABEL_INFO_SELECT',\n            'LABEL_INFO_TABLE', 'LAYER_INFO_ARROWS', 'LAYER_INFO_CENTROIDS',\n            'LAYER_INFO_COSMETIC', 'LAYER_INFO_DISPLAY',\n            'LAYER_INFO_DISPLAY_GLOBAL', 'LAYER_INFO_DISPLAY_GRAPHIC',\n            'LAYER_INFO_DISPLAY_OFF', 'LAYER_INFO_DISPLAY_VALUE',\n            'LAYER_INFO_EDITABLE', 'LAYER_INFO_HOTLINK_COUNT',\n            'LAYER_INFO_HOTLINK_EXPR', 'LAYER_INFO_HOTLINK_MODE',\n            'LAYER_INFO_HOTLINK_RELATIVE', 'LAYER_INFO_LABEL_ALPHA',\n            'LAYER_INFO_LABEL_ORIENT_CURVED',\n            'LAYER_INFO_LABEL_ORIENT_HORIZONTAL',\n            'LAYER_INFO_LABEL_ORIENT_PARALLEL', 'LAYER_INFO_LAYER_ALPHA',\n            'LAYER_INFO_LAYER_TRANSLUCENCY', 'LAYER_INFO_LBL_AUTODISPLAY',\n            'LAYER_INFO_LBL_CURFONT', 'LAYER_INFO_LBL_DUPLICATES',\n            'LAYER_INFO_LBL_EXPR', 'LAYER_INFO_LBL_FONT', 'LAYER_INFO_LBL_LT',\n            'LAYER_INFO_LBL_LT_ARROW', 'LAYER_INFO_LBL_LT_NONE',\n            'LAYER_INFO_LBL_LT_SIMPLE', 'LAYER_INFO_LBL_MAX',\n            'LAYER_INFO_LBL_OFFSET', 'LAYER_INFO_LBL_ORIENTATION',\n            'LAYER_INFO_LBL_OVERLAP', 'LAYER_INFO_LBL_PARALLEL',\n            'LAYER_INFO_LBL_PARTIALSEGS', 'LAYER_INFO_LBL_POS',\n            'LAYER_INFO_LBL_POS_BC', 'LAYER_INFO_LBL_POS_BL',\n            'LAYER_INFO_LBL_POS_BR', 'LAYER_INFO_LBL_POS_CC',\n            'LAYER_INFO_LBL_POS_CL', 'LAYER_INFO_LBL_POS_CR',\n            'LAYER_INFO_LBL_POS_TC', 'LAYER_INFO_LBL_POS_TL',\n            'LAYER_INFO_LBL_POS_TR', 'LAYER_INFO_LBL_VIS_OFF',\n            'LAYER_INFO_LBL_VIS_ON', 'LAYER_INFO_LBL_VIS_ZOOM',\n            'LAYER_INFO_LBL_VISIBILITY', 'LAYER_INFO_LBL_ZOOM_MAX',\n            'LAYER_INFO_LBL_ZOOM_MIN', 'LAYER_INFO_NAME', 'LAYER_INFO_NODES',\n            'LAYER_INFO_OVR_BRUSH', 'LAYER_INFO_OVR_FONT',\n            'LAYER_INFO_OVR_LINE', 'LAYER_INFO_OVR_PEN',\n            'LAYER_INFO_OVR_SYMBOL', 'LAYER_INFO_PATH',\n            'LAYER_INFO_SELECTABLE', 'LAYER_INFO_TYPE',\n            'LAYER_INFO_TYPE_COSMETIC', 'LAYER_INFO_TYPE_GRID',\n            'LAYER_INFO_TYPE_IMAGE', 'LAYER_INFO_TYPE_NORMAL',\n            'LAYER_INFO_TYPE_THEMATIC', 'LAYER_INFO_TYPE_WMS',\n            'LAYER_INFO_ZOOM_LAYERED', 'LAYER_INFO_ZOOM_MAX',\n            'LAYER_INFO_ZOOM_MIN', 'LEGEND_INFO_MAP_ID',\n            'LEGEND_INFO_NUM_FRAMES', 'LEGEND_INFO_ORIENTATION',\n            'LEGEND_INFO_STYLE_SAMPLE_SIZE', 'LEGEND_STYLE_INFO_FONT',\n            'LEGEND_STYLE_INFO_OBJ', 'LEGEND_STYLE_INFO_TEXT',\n            'LOCATE_ABB_FILE', 'LOCATE_CLR_FILE', 'LOCATE_CUSTSYMB_DIR',\n            'LOCATE_DEF_WOR', 'LOCATE_FNT_FILE', 'LOCATE_GEOCODE_SERVERLIST',\n            'LOCATE_GRAPH_DIR', 'LOCATE_LAYOUT_TEMPLATE_DIR',\n            'LOCATE_MNU_FILE', 'LOCATE_PEN_FILE', 'LOCATE_PREF_FILE',\n            'LOCATE_PRJ_FILE', 'LOCATE_ROUTING_SERVERLIST',\n            'LOCATE_THMTMPLT_DIR', 'LOCATE_WFS_SERVERLIST',\n            'LOCATE_WMS_SERVERLIST', 'M_3DMAP_CLONE_VIEW',\n            'M_3DMAP_PREVIOUS_VIEW', 'M_3DMAP_PROPERTIES',\n            'M_3DMAP_REFRESH_GRID_TEXTURE', 'M_3DMAP_VIEW_ENTIRE_GRID',\n            'M_3DMAP_VIEWPOINT_CONTROL', 'M_3DMAP_WIREFRAME',\n            'M_ANALYZE_CALC_STATISTICS', 'M_ANALYZE_CUSTOMIZE_LEGEND',\n            'M_ANALYZE_FIND', 'M_ANALYZE_FIND_SELECTION',\n            'M_ANALYZE_INVERTSELECT', 'M_ANALYZE_SELECT',\n            'M_ANALYZE_SELECTALL', 'M_ANALYZE_SHADE', 'M_ANALYZE_SQLQUERY',\n            'M_ANALYZE_UNSELECT', 'M_BROWSE_EDIT', 'M_BROWSE_GRID',\n            'M_BROWSE_NEW_RECORD', 'M_BROWSE_OPTIONS', 'M_BROWSE_PICK_FIELDS',\n            'M_DBMS_OPEN_ODBC', 'M_EDIT_CLEAR', 'M_EDIT_CLEAROBJ',\n            'M_EDIT_COPY', 'M_EDIT_CUT', 'M_EDIT_GETINFO', 'M_EDIT_NEW_ROW',\n            'M_EDIT_PASTE', 'M_EDIT_PREFERENCES', 'M_EDIT_PREFERENCES_COUNTRY',\n            'M_EDIT_PREFERENCES_FILE', 'M_EDIT_PREFERENCES_IMAGE_PROC',\n            'M_EDIT_PREFERENCES_LAYOUT', 'M_EDIT_PREFERENCES_LEGEND',\n            'M_EDIT_PREFERENCES_MAP', 'M_EDIT_PREFERENCES_OUTPUT',\n            'M_EDIT_PREFERENCES_PATH', 'M_EDIT_PREFERENCES_PRINTER',\n            'M_EDIT_PREFERENCES_STYLES', 'M_EDIT_PREFERENCES_SYSTEM',\n            'M_EDIT_PREFERENCES_WEBSERVICES', 'M_EDIT_RESHAPE', 'M_EDIT_UNDO',\n            'M_FILE_ABOUT', 'M_FILE_ADD_WORKSPACE', 'M_FILE_CLOSE',\n            'M_FILE_CLOSE_ALL', 'M_FILE_CLOSE_ODBC', 'M_FILE_EXIT',\n            'M_FILE_HELP', 'M_FILE_NEW', 'M_FILE_OPEN', 'M_FILE_OPEN_ODBC',\n            'M_FILE_OPEN_ODBC_CONN', 'M_FILE_OPEN_UNIVERSAL_DATA',\n            'M_FILE_OPEN_WFS', 'M_FILE_OPEN_WMS', 'M_FILE_PAGE_SETUP',\n            'M_FILE_PRINT', 'M_FILE_PRINT_SETUP', 'M_FILE_REVERT',\n            'M_FILE_RUN', 'M_FILE_SAVE', 'M_FILE_SAVE_COPY_AS',\n            'M_FILE_SAVE_QUERY', 'M_FILE_SAVE_WINDOW_AS',\n            'M_FILE_SAVE_WORKSPACE', 'M_FORMAT_CUSTOM_COLORS',\n            'M_FORMAT_PICK_FILL', 'M_FORMAT_PICK_FONT', 'M_FORMAT_PICK_LINE',\n            'M_FORMAT_PICK_SYMBOL', 'M_GRAPH_3D_VIEWING_ANGLE',\n            'M_GRAPH_FORMATING', 'M_GRAPH_GENERAL_OPTIONS',\n            'M_GRAPH_GRID_SCALES', 'M_GRAPH_LABEL_AXIS',\n            'M_GRAPH_SAVE_AS_TEMPLATE', 'M_GRAPH_SERIES',\n            'M_GRAPH_SERIES_OPTIONS', 'M_GRAPH_TITLES', 'M_GRAPH_TYPE',\n            'M_GRAPH_VALUE_AXIS', 'M_HELP_ABOUT', 'M_HELP_CHECK_FOR_UPDATE',\n            'M_HELP_CONNECT_MIFORUM', 'M_HELP_CONTENTS',\n            'M_HELP_CONTEXTSENSITIVE', 'M_HELP_HELPMODE',\n            'M_HELP_MAPINFO_3DGRAPH_HELP', 'M_HELP_MAPINFO_CONNECT_SERVICES',\n            'M_HELP_MAPINFO_WWW', 'M_HELP_MAPINFO_WWW_STORE',\n            'M_HELP_MAPINFO_WWW_TUTORIAL', 'M_HELP_SEARCH',\n            'M_HELP_TECHSUPPORT', 'M_HELP_USE_HELP', 'M_LAYOUT_ACTUAL',\n            'M_LAYOUT_ALIGN', 'M_LAYOUT_AUTOSCROLL_ONOFF',\n            'M_LAYOUT_BRING2FRONT', 'M_LAYOUT_CHANGE_VIEW',\n            'M_LAYOUT_DISPLAYOPTIONS', 'M_LAYOUT_DROPSHADOWS',\n            'M_LAYOUT_ENTIRE', 'M_LAYOUT_LAYOUT_SIZE', 'M_LAYOUT_PREVIOUS',\n            'M_LAYOUT_SEND2BACK', 'M_LEGEND_ADD_FRAMES', 'M_LEGEND_DELETE',\n            'M_LEGEND_PROPERTIES', 'M_LEGEND_REFRESH', 'M_MAP_AUTOLABEL',\n            'M_MAP_AUTOSCROLL_ONOFF', 'M_MAP_CHANGE_VIEW',\n            'M_MAP_CLEAR_COSMETIC', 'M_MAP_CLEAR_CUSTOM_LABELS',\n            'M_MAP_CLIP_REGION_ONOFF', 'M_MAP_CLONE_MAPPER',\n            'M_MAP_CREATE_3DMAP', 'M_MAP_CREATE_LEGEND',\n            'M_MAP_CREATE_PRISMMAP', 'M_MAP_ENTIRE_LAYER',\n            'M_MAP_LAYER_CONTROL', 'M_MAP_MODIFY_THEMATIC', 'M_MAP_OPTIONS',\n            'M_MAP_PREVIOUS', 'M_MAP_PROJECTION', 'M_MAP_SAVE_COSMETIC',\n            'M_MAP_SET_CLIP_REGION', 'M_MAP_SETUNITS', 'M_MAP_SETUPDIGITIZER',\n            'M_MAP_THEMATIC', 'M_MAPBASIC_CLEAR', 'M_MAPBASIC_SAVECONTENTS',\n            'M_OBJECTS_BREAKPOLY', 'M_OBJECTS_BUFFER',\n            'M_OBJECTS_CHECK_REGIONS', 'M_OBJECTS_CLEAN',\n            'M_OBJECTS_CLEAR_TARGET', 'M_OBJECTS_COMBINE',\n            'M_OBJECTS_CONVEX_HULL', 'M_OBJECTS_CVT_PGON',\n            'M_OBJECTS_CVT_PLINE', 'M_OBJECTS_DISAGG',\n            'M_OBJECTS_DRIVE_REGION', 'M_OBJECTS_ENCLOSE', 'M_OBJECTS_ERASE',\n            'M_OBJECTS_ERASE_OUT', 'M_OBJECTS_MERGE', 'M_OBJECTS_OFFSET',\n            'M_OBJECTS_OVERLAY', 'M_OBJECTS_POLYLINE_SPLIT',\n            'M_OBJECTS_POLYLINE_SPLIT_AT_NODE', 'M_OBJECTS_RESHAPE',\n            'M_OBJECTS_ROTATE', 'M_OBJECTS_SET_TARGET', 'M_OBJECTS_SMOOTH',\n            'M_OBJECTS_SNAP', 'M_OBJECTS_SPLIT', 'M_OBJECTS_UNSMOOTH',\n            'M_OBJECTS_VORONOI', 'M_ORACLE_CREATE_WORKSPACE',\n            'M_ORACLE_DELETE_WORKSPACE', 'M_ORACLE_MERGE_PARENT',\n            'M_ORACLE_REFRESH_FROM_PARENT', 'M_ORACLE_VERSION_ENABLE_OFF',\n            'M_ORACLE_VERSION_ENABLE_ON', 'M_QUERY_CALC_STATISTICS',\n            'M_QUERY_FIND', 'M_QUERY_FIND_ADDRESS', 'M_QUERY_FIND_SELECTION',\n            'M_QUERY_FIND_SELECTION_CURRENT_MAP', 'M_QUERY_INVERTSELECT',\n            'M_QUERY_SELECT', 'M_QUERY_SELECTALL', 'M_QUERY_SQLQUERY',\n            'M_QUERY_UNSELECT', 'M_REDISTRICT_ADD', 'M_REDISTRICT_ASSIGN',\n            'M_REDISTRICT_DELETE', 'M_REDISTRICT_OPTIONS',\n            'M_REDISTRICT_TARGET', 'M_SENDMAIL_CURRENTWINDOW',\n            'M_SENDMAIL_WORKSPACE', 'M_TABLE_APPEND', 'M_TABLE_BUFFER',\n            'M_TABLE_CHANGESYMBOL', 'M_TABLE_CREATE_POINTS', 'M_TABLE_DELETE',\n            'M_TABLE_DRIVE_REGION', 'M_TABLE_EXPORT', 'M_TABLE_GEOCODE',\n            'M_TABLE_IMPORT', 'M_TABLE_MAKEMAPPABLE',\n            'M_TABLE_MERGE_USING_COLUMN', 'M_TABLE_MODIFY_STRUCTURE',\n            'M_TABLE_PACK', 'M_TABLE_RASTER_REG', 'M_TABLE_RASTER_STYLE',\n            'M_TABLE_REFRESH', 'M_TABLE_RENAME',\n            'M_TABLE_UNIVERSAL_DATA_REFRESH', 'M_TABLE_UNLINK',\n            'M_TABLE_UPDATE_COLUMN', 'M_TABLE_VORONOI', 'M_TABLE_WEB_GEOCODE',\n            'M_TABLE_WFS_PROPS', 'M_TABLE_WFS_REFRESH', 'M_TABLE_WMS_PROPS',\n            'M_TOOLS_ADD_NODE', 'M_TOOLS_ARC', 'M_TOOLS_CRYSTAL_REPORTS_NEW',\n            'M_TOOLS_CRYSTAL_REPORTS_OPEN', 'M_TOOLS_DRAGWINDOW',\n            'M_TOOLS_ELLIPSE', 'M_TOOLS_EXPAND', 'M_TOOLS_FRAME',\n            'M_TOOLS_HOTLINK', 'M_TOOLS_LABELER', 'M_TOOLS_LINE',\n            'M_TOOLS_MAPBASIC', 'M_TOOLS_PNT_QUERY', 'M_TOOLS_POINT',\n            'M_TOOLS_POLYGON', 'M_TOOLS_POLYLINE', 'M_TOOLS_RASTER_REG',\n            'M_TOOLS_RECENTER', 'M_TOOLS_RECTANGLE', 'M_TOOLS_ROUNDEDRECT',\n            'M_TOOLS_RULER', 'M_TOOLS_RUN', 'M_TOOLS_SEARCH_BOUNDARY',\n            'M_TOOLS_SEARCH_POLYGON', 'M_TOOLS_SEARCH_RADIUS',\n            'M_TOOLS_SEARCH_RECT', 'M_TOOLS_SELECTOR', 'M_TOOLS_SHRINK',\n            'M_TOOLS_TEXT', 'M_TOOLS_TOOL_MANAGER', 'M_WINDOW_ARRANGEICONS',\n            'M_WINDOW_BROWSE', 'M_WINDOW_BUTTONPAD', 'M_WINDOW_CASCADE',\n            'M_WINDOW_EXPORT_WINDOW', 'M_WINDOW_FIRST', 'M_WINDOW_GRAPH',\n            'M_WINDOW_LAYOUT', 'M_WINDOW_LEGEND', 'M_WINDOW_MAP',\n            'M_WINDOW_MAPBASIC', 'M_WINDOW_MORE', 'M_WINDOW_REDISTRICT',\n            'M_WINDOW_REDRAW', 'M_WINDOW_STATISTICS', 'M_WINDOW_STATUSBAR',\n            'M_WINDOW_TILE', 'M_WINDOW_TOOL_PALETTE', 'MAGENTA',\n            'MAP3D_INFO_BACKGROUND', 'MAP3D_INFO_CAMERA_CLIP_FAR',\n            'MAP3D_INFO_CAMERA_CLIP_NEAR', 'MAP3D_INFO_CAMERA_FOCAL_X',\n            'MAP3D_INFO_CAMERA_FOCAL_Y', 'MAP3D_INFO_CAMERA_FOCAL_Z',\n            'MAP3D_INFO_CAMERA_VPN_1', 'MAP3D_INFO_CAMERA_VPN_2',\n            'MAP3D_INFO_CAMERA_VPN_3', 'MAP3D_INFO_CAMERA_VU_1',\n            'MAP3D_INFO_CAMERA_VU_2', 'MAP3D_INFO_CAMERA_VU_3',\n            'MAP3D_INFO_CAMERA_X', 'MAP3D_INFO_CAMERA_Y',\n            'MAP3D_INFO_CAMERA_Z', 'MAP3D_INFO_LIGHT_COLOR',\n            'MAP3D_INFO_LIGHT_X', 'MAP3D_INFO_LIGHT_Y', 'MAP3D_INFO_LIGHT_Z',\n            'MAP3D_INFO_RESOLUTION_X', 'MAP3D_INFO_RESOLUTION_Y',\n            'MAP3D_INFO_SCALE', 'MAP3D_INFO_UNITS', 'MAPPER_INFO_AREAUNITS',\n            'MAPPER_INFO_CENTERX', 'MAPPER_INFO_CENTERY',\n            'MAPPER_INFO_CLIP_DISPLAY_ALL', 'MAPPER_INFO_CLIP_DISPLAY_POLYOBJ',\n            'MAPPER_INFO_CLIP_OVERLAY', 'MAPPER_INFO_CLIP_REGION',\n            'MAPPER_INFO_CLIP_TYPE', 'MAPPER_INFO_COORDSYS_CLAUSE',\n            'MAPPER_INFO_COORDSYS_CLAUSE_WITH_BOUNDS',\n            'MAPPER_INFO_COORDSYS_NAME', 'MAPPER_INFO_DISPLAY',\n            'MAPPER_INFO_DISPLAY_DECIMAL', 'MAPPER_INFO_DISPLAY_DEGMINSEC',\n            'MAPPER_INFO_DISPLAY_DMS', 'MAPPER_INFO_DISPLAY_MGRS',\n            'MAPPER_INFO_DISPLAY_POSITION', 'MAPPER_INFO_DISPLAY_SCALE',\n            'MAPPER_INFO_DISPLAY_ZOOM', 'MAPPER_INFO_DIST_CALC_TYPE',\n            'MAPPER_INFO_DIST_CARTESIAN', 'MAPPER_INFO_DIST_SPHERICAL',\n            'MAPPER_INFO_DISTUNITS', 'MAPPER_INFO_EDIT_LAYER',\n            'MAPPER_INFO_LAYERS', 'MAPPER_INFO_MAXX', 'MAPPER_INFO_MAXY',\n            'MAPPER_INFO_MERGE_MAP', 'MAPPER_INFO_MINX', 'MAPPER_INFO_MINY',\n            'MAPPER_INFO_MOVE_DUPLICATE_NODES', 'MAPPER_INFO_NUM_THEMATIC',\n            'MAPPER_INFO_REPROJECTION', 'MAPPER_INFO_RESAMPLING',\n            'MAPPER_INFO_SCALE', 'MAPPER_INFO_SCROLLBARS',\n            'MAPPER_INFO_XYUNITS', 'MAPPER_INFO_ZOOM', 'MAX_STRING_LENGTH',\n            'MENUITEM_INFO_ACCELERATOR', 'MENUITEM_INFO_CHECKABLE',\n            'MENUITEM_INFO_CHECKED', 'MENUITEM_INFO_ENABLED',\n            'MENUITEM_INFO_HANDLER', 'MENUITEM_INFO_HELPMSG',\n            'MENUITEM_INFO_ID', 'MENUITEM_INFO_SHOWHIDEABLE',\n            'MENUITEM_INFO_TEXT', 'MI_CURSOR_ARROW', 'MI_CURSOR_CHANGE_WIDTH',\n            'MI_CURSOR_CROSSHAIR', 'MI_CURSOR_DRAG_OBJ',\n            'MI_CURSOR_FINGER_LEFT', 'MI_CURSOR_FINGER_UP',\n            'MI_CURSOR_GRABBER', 'MI_CURSOR_IBEAM', 'MI_CURSOR_IBEAM_CROSS',\n            'MI_CURSOR_ZOOM_IN', 'MI_CURSOR_ZOOM_OUT', 'MI_ICON_ADD_NODE',\n            'MI_ICON_ARC', 'MI_ICON_ARROW', 'MI_ICON_ARROW_1',\n            'MI_ICON_ARROW_10', 'MI_ICON_ARROW_11', 'MI_ICON_ARROW_12',\n            'MI_ICON_ARROW_13', 'MI_ICON_ARROW_14', 'MI_ICON_ARROW_15',\n            'MI_ICON_ARROW_16', 'MI_ICON_ARROW_17', 'MI_ICON_ARROW_18',\n            'MI_ICON_ARROW_19', 'MI_ICON_ARROW_2', 'MI_ICON_ARROW_20',\n            'MI_ICON_ARROW_21', 'MI_ICON_ARROW_3', 'MI_ICON_ARROW_4',\n            'MI_ICON_ARROW_5', 'MI_ICON_ARROW_6', 'MI_ICON_ARROW_7',\n            'MI_ICON_ARROW_8', 'MI_ICON_ARROW_9', 'MI_ICON_CLIP_MODE',\n            'MI_ICON_CLIP_REGION', 'MI_ICON_CLOSE_ALL',\n            'MI_ICON_COMMUNICATION_1', 'MI_ICON_COMMUNICATION_10',\n            'MI_ICON_COMMUNICATION_11', 'MI_ICON_COMMUNICATION_12',\n            'MI_ICON_COMMUNICATION_2', 'MI_ICON_COMMUNICATION_3',\n            'MI_ICON_COMMUNICATION_4', 'MI_ICON_COMMUNICATION_5',\n            'MI_ICON_COMMUNICATION_6', 'MI_ICON_COMMUNICATION_7',\n            'MI_ICON_COMMUNICATION_8', 'MI_ICON_COMMUNICATION_9',\n            'MI_ICON_COMPASS_CIRCLE_TA', 'MI_ICON_COMPASS_CONTRACT',\n            'MI_ICON_COMPASS_EXPAND', 'MI_ICON_COMPASS_POLY_TA',\n            'MI_ICON_COMPASS_TAG', 'MI_ICON_COMPASS_UNTAG', 'MI_ICON_COPY',\n            'MI_ICON_CROSSHAIR', 'MI_ICON_CUT', 'MI_ICON_DISTRICT_MANY',\n            'MI_ICON_DISTRICT_SAME', 'MI_ICON_DRAG_HANDLE', 'MI_ICON_ELLIPSE',\n            'MI_ICON_EMERGENCY_1', 'MI_ICON_EMERGENCY_10',\n            'MI_ICON_EMERGENCY_11', 'MI_ICON_EMERGENCY_12',\n            'MI_ICON_EMERGENCY_13', 'MI_ICON_EMERGENCY_14',\n            'MI_ICON_EMERGENCY_15', 'MI_ICON_EMERGENCY_16',\n            'MI_ICON_EMERGENCY_17', 'MI_ICON_EMERGENCY_18',\n            'MI_ICON_EMERGENCY_2', 'MI_ICON_EMERGENCY_3',\n            'MI_ICON_EMERGENCY_4', 'MI_ICON_EMERGENCY_5',\n            'MI_ICON_EMERGENCY_6', 'MI_ICON_EMERGENCY_7',\n            'MI_ICON_EMERGENCY_8', 'MI_ICON_EMERGENCY_9', 'MI_ICON_GRABBER',\n            'MI_ICON_GRAPH_SELECT', 'MI_ICON_HELP', 'MI_ICON_HOT_LINK',\n            'MI_ICON_INFO', 'MI_ICON_INVERTSELECT', 'MI_ICON_LABEL',\n            'MI_ICON_LAYERS', 'MI_ICON_LEGEND', 'MI_ICON_LETTERS_A',\n            'MI_ICON_LETTERS_B', 'MI_ICON_LETTERS_C', 'MI_ICON_LETTERS_D',\n            'MI_ICON_LETTERS_E', 'MI_ICON_LETTERS_F', 'MI_ICON_LETTERS_G',\n            'MI_ICON_LETTERS_H', 'MI_ICON_LETTERS_I', 'MI_ICON_LETTERS_J',\n            'MI_ICON_LETTERS_K', 'MI_ICON_LETTERS_L', 'MI_ICON_LETTERS_M',\n            'MI_ICON_LETTERS_N', 'MI_ICON_LETTERS_O', 'MI_ICON_LETTERS_P',\n            'MI_ICON_LETTERS_Q', 'MI_ICON_LETTERS_R', 'MI_ICON_LETTERS_S',\n            'MI_ICON_LETTERS_T', 'MI_ICON_LETTERS_U', 'MI_ICON_LETTERS_V',\n            'MI_ICON_LETTERS_W', 'MI_ICON_LETTERS_X', 'MI_ICON_LETTERS_Y',\n            'MI_ICON_LETTERS_Z', 'MI_ICON_LINE', 'MI_ICON_LINE_STYLE',\n            'MI_ICON_MAPSYMB_1', 'MI_ICON_MAPSYMB_10', 'MI_ICON_MAPSYMB_11',\n            'MI_ICON_MAPSYMB_12', 'MI_ICON_MAPSYMB_13', 'MI_ICON_MAPSYMB_14',\n            'MI_ICON_MAPSYMB_15', 'MI_ICON_MAPSYMB_16', 'MI_ICON_MAPSYMB_17',\n            'MI_ICON_MAPSYMB_18', 'MI_ICON_MAPSYMB_19', 'MI_ICON_MAPSYMB_2',\n            'MI_ICON_MAPSYMB_20', 'MI_ICON_MAPSYMB_21', 'MI_ICON_MAPSYMB_22',\n            'MI_ICON_MAPSYMB_23', 'MI_ICON_MAPSYMB_24', 'MI_ICON_MAPSYMB_25',\n            'MI_ICON_MAPSYMB_26', 'MI_ICON_MAPSYMB_3', 'MI_ICON_MAPSYMB_4',\n            'MI_ICON_MAPSYMB_5', 'MI_ICON_MAPSYMB_6', 'MI_ICON_MAPSYMB_7',\n            'MI_ICON_MAPSYMB_8', 'MI_ICON_MAPSYMB_9', 'MI_ICON_MARITIME_1',\n            'MI_ICON_MARITIME_10', 'MI_ICON_MARITIME_2', 'MI_ICON_MARITIME_3',\n            'MI_ICON_MARITIME_4', 'MI_ICON_MARITIME_5', 'MI_ICON_MARITIME_6',\n            'MI_ICON_MARITIME_7', 'MI_ICON_MARITIME_8', 'MI_ICON_MARITIME_9',\n            'MI_ICON_MB_1', 'MI_ICON_MB_10', 'MI_ICON_MB_11', 'MI_ICON_MB_12',\n            'MI_ICON_MB_13', 'MI_ICON_MB_14', 'MI_ICON_MB_2', 'MI_ICON_MB_3',\n            'MI_ICON_MB_4', 'MI_ICON_MB_5', 'MI_ICON_MB_6', 'MI_ICON_MB_7',\n            'MI_ICON_MB_8', 'MI_ICON_MB_9', 'MI_ICON_MISC_1',\n            'MI_ICON_MISC_10', 'MI_ICON_MISC_11', 'MI_ICON_MISC_12',\n            'MI_ICON_MISC_13', 'MI_ICON_MISC_14', 'MI_ICON_MISC_15',\n            'MI_ICON_MISC_16', 'MI_ICON_MISC_17', 'MI_ICON_MISC_18',\n            'MI_ICON_MISC_19', 'MI_ICON_MISC_2', 'MI_ICON_MISC_20',\n            'MI_ICON_MISC_21', 'MI_ICON_MISC_22', 'MI_ICON_MISC_23',\n            'MI_ICON_MISC_24', 'MI_ICON_MISC_25', 'MI_ICON_MISC_26',\n            'MI_ICON_MISC_27', 'MI_ICON_MISC_28', 'MI_ICON_MISC_29',\n            'MI_ICON_MISC_3', 'MI_ICON_MISC_30', 'MI_ICON_MISC_31',\n            'MI_ICON_MISC_4', 'MI_ICON_MISC_5', 'MI_ICON_MISC_6',\n            'MI_ICON_MISC_7', 'MI_ICON_MISC_8', 'MI_ICON_MISC_9',\n            'MI_ICON_NEW_DOC', 'MI_ICON_NUMBERS_1', 'MI_ICON_NUMBERS_10',\n            'MI_ICON_NUMBERS_11', 'MI_ICON_NUMBERS_12', 'MI_ICON_NUMBERS_13',\n            'MI_ICON_NUMBERS_14', 'MI_ICON_NUMBERS_15', 'MI_ICON_NUMBERS_16',\n            'MI_ICON_NUMBERS_17', 'MI_ICON_NUMBERS_18', 'MI_ICON_NUMBERS_19',\n            'MI_ICON_NUMBERS_2', 'MI_ICON_NUMBERS_20', 'MI_ICON_NUMBERS_21',\n            'MI_ICON_NUMBERS_22', 'MI_ICON_NUMBERS_23', 'MI_ICON_NUMBERS_24',\n            'MI_ICON_NUMBERS_25', 'MI_ICON_NUMBERS_26', 'MI_ICON_NUMBERS_27',\n            'MI_ICON_NUMBERS_28', 'MI_ICON_NUMBERS_29', 'MI_ICON_NUMBERS_3',\n            'MI_ICON_NUMBERS_30', 'MI_ICON_NUMBERS_31', 'MI_ICON_NUMBERS_32',\n            'MI_ICON_NUMBERS_4', 'MI_ICON_NUMBERS_5', 'MI_ICON_NUMBERS_6',\n            'MI_ICON_NUMBERS_7', 'MI_ICON_NUMBERS_8', 'MI_ICON_NUMBERS_9',\n            'MI_ICON_ODBC_DISCONNECT', 'MI_ICON_ODBC_MAPPABLE',\n            'MI_ICON_ODBC_OPEN', 'MI_ICON_ODBC_REFRESH', 'MI_ICON_ODBC_SYMBOL',\n            'MI_ICON_ODBC_UNLINK', 'MI_ICON_OPEN_FILE', 'MI_ICON_OPEN_WOR',\n            'MI_ICON_OPENWFS', 'MI_ICON_OPENWMS', 'MI_ICON_PASTE',\n            'MI_ICON_POLYGON', 'MI_ICON_POLYLINE', 'MI_ICON_PRINT',\n            'MI_ICON_REALESTATE_1', 'MI_ICON_REALESTATE_10',\n            'MI_ICON_REALESTATE_11', 'MI_ICON_REALESTATE_12',\n            'MI_ICON_REALESTATE_13', 'MI_ICON_REALESTATE_14',\n            'MI_ICON_REALESTATE_15', 'MI_ICON_REALESTATE_16',\n            'MI_ICON_REALESTATE_17', 'MI_ICON_REALESTATE_18',\n            'MI_ICON_REALESTATE_19', 'MI_ICON_REALESTATE_2',\n            'MI_ICON_REALESTATE_20', 'MI_ICON_REALESTATE_21',\n            'MI_ICON_REALESTATE_22', 'MI_ICON_REALESTATE_23',\n            'MI_ICON_REALESTATE_3', 'MI_ICON_REALESTATE_4',\n            'MI_ICON_REALESTATE_5', 'MI_ICON_REALESTATE_6',\n            'MI_ICON_REALESTATE_7', 'MI_ICON_REALESTATE_8',\n            'MI_ICON_REALESTATE_9', 'MI_ICON_RECT', 'MI_ICON_REGION_STYLE',\n            'MI_ICON_RESHAPE', 'MI_ICON_ROUND_RECT', 'MI_ICON_RULER',\n            'MI_ICON_RUN', 'MI_ICON_SAVE_FILE', 'MI_ICON_SAVE_WIN',\n            'MI_ICON_SAVE_WOR', 'MI_ICON_SEARCH_BDY', 'MI_ICON_SEARCH_POLYGON',\n            'MI_ICON_SEARCH_RADIUS', 'MI_ICON_SEARCH_RECT', 'MI_ICON_SIGNS_1',\n            'MI_ICON_SIGNS_10', 'MI_ICON_SIGNS_11', 'MI_ICON_SIGNS_12',\n            'MI_ICON_SIGNS_13', 'MI_ICON_SIGNS_14', 'MI_ICON_SIGNS_15',\n            'MI_ICON_SIGNS_16', 'MI_ICON_SIGNS_17', 'MI_ICON_SIGNS_18',\n            'MI_ICON_SIGNS_19', 'MI_ICON_SIGNS_2', 'MI_ICON_SIGNS_3',\n            'MI_ICON_SIGNS_4', 'MI_ICON_SIGNS_5', 'MI_ICON_SIGNS_6',\n            'MI_ICON_SIGNS_7', 'MI_ICON_SIGNS_8', 'MI_ICON_SIGNS_9',\n            'MI_ICON_STATISTICS', 'MI_ICON_SYMBOL', 'MI_ICON_SYMBOL_STYLE',\n            'MI_ICON_TEXT', 'MI_ICON_TEXT_STYLE', 'MI_ICON_TRANSPORT_1',\n            'MI_ICON_TRANSPORT_10', 'MI_ICON_TRANSPORT_11',\n            'MI_ICON_TRANSPORT_12', 'MI_ICON_TRANSPORT_13',\n            'MI_ICON_TRANSPORT_14', 'MI_ICON_TRANSPORT_15',\n            'MI_ICON_TRANSPORT_16', 'MI_ICON_TRANSPORT_17',\n            'MI_ICON_TRANSPORT_18', 'MI_ICON_TRANSPORT_19',\n            'MI_ICON_TRANSPORT_2', 'MI_ICON_TRANSPORT_20',\n            'MI_ICON_TRANSPORT_21', 'MI_ICON_TRANSPORT_22',\n            'MI_ICON_TRANSPORT_23', 'MI_ICON_TRANSPORT_24',\n            'MI_ICON_TRANSPORT_25', 'MI_ICON_TRANSPORT_26',\n            'MI_ICON_TRANSPORT_27', 'MI_ICON_TRANSPORT_3',\n            'MI_ICON_TRANSPORT_4', 'MI_ICON_TRANSPORT_5',\n            'MI_ICON_TRANSPORT_6', 'MI_ICON_TRANSPORT_7',\n            'MI_ICON_TRANSPORT_8', 'MI_ICON_TRANSPORT_9', 'MI_ICON_UNDO',\n            'MI_ICON_UNSELECT_ALL', 'MI_ICON_WINDOW_FRAME', 'MI_ICON_WRENCH',\n            'MI_ICON_ZOOM_IN', 'MI_ICON_ZOOM_OUT', 'MI_ICON_ZOOM_QUESTION',\n            'MI_ICONS_MAPS_1', 'MI_ICONS_MAPS_10', 'MI_ICONS_MAPS_11',\n            'MI_ICONS_MAPS_12', 'MI_ICONS_MAPS_13', 'MI_ICONS_MAPS_14',\n            'MI_ICONS_MAPS_15', 'MI_ICONS_MAPS_2', 'MI_ICONS_MAPS_3',\n            'MI_ICONS_MAPS_4', 'MI_ICONS_MAPS_5', 'MI_ICONS_MAPS_6',\n            'MI_ICONS_MAPS_7', 'MI_ICONS_MAPS_8', 'MI_ICONS_MAPS_9',\n            'MIPLATFORM_HP', 'MIPLATFORM_MAC68K', 'MIPLATFORM_POWERMAC',\n            'MIPLATFORM_SPECIAL', 'MIPLATFORM_SUN', 'MIPLATFORM_WIN16',\n            'MIPLATFORM_WIN32', 'MODE_APPEND', 'MODE_BINARY', 'MODE_INPUT',\n            'MODE_OUTPUT', 'MODE_RANDOM', 'OBJ_ARC', 'OBJ_ELLIPSE',\n            'OBJ_FRAME', 'OBJ_GEO_ARCBEGANGLE', 'OBJ_GEO_ARCENDANGLE',\n            'OBJ_GEO_CENTROID', 'OBJ_GEO_LINEBEGX', 'OBJ_GEO_LINEBEGY',\n            'OBJ_GEO_LINEENDX', 'OBJ_GEO_LINEENDY', 'OBJ_GEO_MAXX',\n            'OBJ_GEO_MAXY', 'OBJ_GEO_MINX', 'OBJ_GEO_MINY', 'OBJ_GEO_POINTM',\n            'OBJ_GEO_POINTX', 'OBJ_GEO_POINTY', 'OBJ_GEO_POINTZ',\n            'OBJ_GEO_ROUNDRADIUS', 'OBJ_GEO_TEXTANGLE', 'OBJ_GEO_TEXTLINEX',\n            'OBJ_GEO_TEXTLINEY', 'OBJ_INFO_BRUSH', 'OBJ_INFO_FILLFRAME',\n            'OBJ_INFO_FRAMETITLE', 'OBJ_INFO_FRAMEWIN', 'OBJ_INFO_HAS_M',\n            'OBJ_INFO_HAS_Z', 'OBJ_INFO_MPOINT', 'OBJ_INFO_NONEMPTY',\n            'OBJ_INFO_NPNTS', 'OBJ_INFO_NPOLYGONS', 'OBJ_INFO_PEN',\n            'OBJ_INFO_PLINE', 'OBJ_INFO_REGION', 'OBJ_INFO_SMOOTH',\n            'OBJ_INFO_SYMBOL', 'OBJ_INFO_TEXTARROW', 'OBJ_INFO_TEXTFONT',\n            'OBJ_INFO_TEXTJUSTIFY', 'OBJ_INFO_TEXTSPACING',\n            'OBJ_INFO_TEXTSTRING', 'OBJ_INFO_TYPE', 'OBJ_INFO_Z_UNIT',\n            'OBJ_INFO_Z_UNIT_SET', 'OBJ_LINE', 'OBJ_PLINE', 'OBJ_POINT',\n            'OBJ_RECT', 'OBJ_REGION', 'OBJ_ROUNDRECT', 'OBJ_TEXT',\n            'OBJ_TYPE_ARC', 'OBJ_TYPE_COLLECTION', 'OBJ_TYPE_ELLIPSE',\n            'OBJ_TYPE_FRAME', 'OBJ_TYPE_LINE', 'OBJ_TYPE_MPOINT',\n            'OBJ_TYPE_PLINE', 'OBJ_TYPE_POINT', 'OBJ_TYPE_RECT',\n            'OBJ_TYPE_REGION', 'OBJ_TYPE_ROUNDRECT', 'OBJ_TYPE_TEXT',\n            'ORIENTATION_CUSTOM', 'ORIENTATION_LANDSCAPE',\n            'ORIENTATION_PORTRAIT', 'PEN_COLOR', 'PEN_INDEX',\n            'PEN_INTERLEAVED', 'PEN_PATTERN', 'PEN_WIDTH', 'PLATFORM_MAC',\n            'PLATFORM_MOTIF', 'PLATFORM_SPECIAL', 'PLATFORM_WIN',\n            'PLATFORM_X11', 'PLATFORM_XOL', 'PRISMMAP_INFO_BACKGROUND',\n            'PRISMMAP_INFO_CAMERA_CLIP_FAR', 'PRISMMAP_INFO_CAMERA_CLIP_NEAR',\n            'PRISMMAP_INFO_CAMERA_FOCAL_X', 'PRISMMAP_INFO_CAMERA_FOCAL_Y',\n            'PRISMMAP_INFO_CAMERA_FOCAL_Z', 'PRISMMAP_INFO_CAMERA_VPN_1',\n            'PRISMMAP_INFO_CAMERA_VPN_2', 'PRISMMAP_INFO_CAMERA_VPN_3',\n            'PRISMMAP_INFO_CAMERA_VU_1', 'PRISMMAP_INFO_CAMERA_VU_2',\n            'PRISMMAP_INFO_CAMERA_VU_3', 'PRISMMAP_INFO_CAMERA_X',\n            'PRISMMAP_INFO_CAMERA_Y', 'PRISMMAP_INFO_CAMERA_Z',\n            'PRISMMAP_INFO_INFOTIP_EXPR', 'PRISMMAP_INFO_LIGHT_COLOR',\n            'PRISMMAP_INFO_LIGHT_X', 'PRISMMAP_INFO_LIGHT_Y',\n            'PRISMMAP_INFO_LIGHT_Z', 'PRISMMAP_INFO_SCALE', 'RAD_2_DEG',\n            'RASTER_CONTROL_POINT_X', 'RASTER_CONTROL_POINT_Y',\n            'RASTER_TAB_INFO_ALPHA', 'RASTER_TAB_INFO_BITS_PER_PIXEL',\n            'RASTER_TAB_INFO_BRIGHTNESS', 'RASTER_TAB_INFO_CONTRAST',\n            'RASTER_TAB_INFO_DISPLAY_TRANSPARENT', 'RASTER_TAB_INFO_GREYSCALE',\n            'RASTER_TAB_INFO_HEIGHT', 'RASTER_TAB_INFO_IMAGE_CLASS',\n            'RASTER_TAB_INFO_IMAGE_NAME', 'RASTER_TAB_INFO_IMAGE_TYPE',\n            'RASTER_TAB_INFO_NUM_CONTROL_POINTS',\n            'RASTER_TAB_INFO_TRANSPARENT_COLOR', 'RASTER_TAB_INFO_WIDTH',\n            'RED', 'REGION_INFO_IS_CLOCKWISE', 'SEARCH_INFO_ROW',\n            'SEARCH_INFO_TABLE', 'SECONDS_PER_DAY', 'SEL_INFO_NROWS',\n            'SEL_INFO_SELNAME', 'SEL_INFO_TABLENAME',\n            'SESSION_INFO_AREA_UNITS', 'SESSION_INFO_COORDSYS_CLAUSE',\n            'SESSION_INFO_DISTANCE_UNITS', 'SESSION_INFO_PAPER_UNITS',\n            'SRV_COL_INFO_ALIAS', 'SRV_COL_INFO_NAME',\n            'SRV_COL_INFO_PRECISION', 'SRV_COL_INFO_SCALE',\n            'SRV_COL_INFO_STATUS', 'SRV_COL_INFO_TYPE', 'SRV_COL_INFO_VALUE',\n            'SRV_COL_INFO_WIDTH', 'SRV_COL_TYPE_BIN_STRING',\n            'SRV_COL_TYPE_CHAR', 'SRV_COL_TYPE_DATE', 'SRV_COL_TYPE_DECIMAL',\n            'SRV_COL_TYPE_FIXED_LEN_STRING', 'SRV_COL_TYPE_FLOAT',\n            'SRV_COL_TYPE_INTEGER', 'SRV_COL_TYPE_LOGICAL',\n            'SRV_COL_TYPE_NONE', 'SRV_COL_TYPE_SMALLINT',\n            'SRV_CONNECT_INFO_DB_NAME', 'SRV_CONNECT_INFO_DRIVER_NAME',\n            'SRV_CONNECT_INFO_DS_NAME', 'SRV_CONNECT_INFO_QUOTE_CHAR',\n            'SRV_CONNECT_INFO_SQL_USER_ID', 'SRV_DRV_DATA_SOURCE',\n            'SRV_DRV_INFO_NAME', 'SRV_DRV_INFO_NAME_LIST', 'SRV_ERROR',\n            'SRV_FETCH_FIRST', 'SRV_FETCH_LAST', 'SRV_FETCH_NEXT',\n            'SRV_FETCH_PREV', 'SRV_INVALID_HANDLE', 'SRV_NEED_DATA',\n            'SRV_NO_MORE_DATA', 'SRV_NULL_DATA', 'SRV_SUCCESS',\n            'SRV_SUCCESS_WITH_INFO', 'SRV_TRUNCATED_DATA',\n            'SRV_WM_HIST_NO_OVERWRITE', 'SRV_WM_HIST_NONE',\n            'SRV_WM_HIST_OVERWRITE', 'STR_EQ', 'STR_GT', 'STR_LT',\n            'STYLE_SAMPLE_SIZE_LARGE', 'STYLE_SAMPLE_SIZE_SMALL',\n            'SWITCHING_INTO_MAPINFO', 'SWITCHING_OUT_OF_MAPINFO',\n            'SYMBOL_ANGLE', 'SYMBOL_CODE', 'SYMBOL_COLOR',\n            'SYMBOL_CUSTOM_NAME', 'SYMBOL_CUSTOM_STYLE', 'SYMBOL_FONT_NAME',\n            'SYMBOL_FONT_STYLE', 'SYMBOL_KIND', 'SYMBOL_KIND_CUSTOM',\n            'SYMBOL_KIND_FONT', 'SYMBOL_KIND_VECTOR', 'SYMBOL_POINTSIZE',\n            'SYS_INFO_APPIDISPATCH', 'SYS_INFO_APPLICATIONWND',\n            'SYS_INFO_APPVERSION', 'SYS_INFO_CHARSET',\n            'SYS_INFO_COPYPROTECTED', 'SYS_INFO_DATE_FORMAT',\n            'SYS_INFO_DDESTATUS', 'SYS_INFO_DIG_INSTALLED',\n            'SYS_INFO_DIG_MODE', 'SYS_INFO_MAPINFOWND',\n            'SYS_INFO_MDICLIENTWND', 'SYS_INFO_MIBUILD_NUMBER',\n            'SYS_INFO_MIPLATFORM', 'SYS_INFO_MIVERSION',\n            'SYS_INFO_NUMBER_FORMAT', 'SYS_INFO_PLATFORM',\n            'SYS_INFO_PRODUCTLEVEL', 'SYS_INFO_RUNTIME',\n            'TAB_GEO_CONTROL_POINT_X', 'TAB_GEO_CONTROL_POINT_Y',\n            'TAB_INFO_BROWSER_LIST', 'TAB_INFO_COORDSYS_CLAUSE',\n            'TAB_INFO_COORDSYS_CLAUSE_WITHOUT_BOUNDS',\n            'TAB_INFO_COORDSYS_MAXX', 'TAB_INFO_COORDSYS_MAXY',\n            'TAB_INFO_COORDSYS_MINX', 'TAB_INFO_COORDSYS_MINY',\n            'TAB_INFO_COORDSYS_NAME', 'TAB_INFO_EDITED', 'TAB_INFO_FASTEDIT',\n            'TAB_INFO_MAPPABLE', 'TAB_INFO_MAPPABLE_TABLE', 'TAB_INFO_MAXX',\n            'TAB_INFO_MAXY', 'TAB_INFO_MINX', 'TAB_INFO_MINY', 'TAB_INFO_NAME',\n            'TAB_INFO_NCOLS', 'TAB_INFO_NREFS', 'TAB_INFO_NROWS',\n            'TAB_INFO_NUM', 'TAB_INFO_READONLY', 'TAB_INFO_SEAMLESS',\n            'TAB_INFO_SUPPORT_MZ', 'TAB_INFO_TABFILE', 'TAB_INFO_TEMP',\n            'TAB_INFO_THEME_METADATA', 'TAB_INFO_TYPE', 'TAB_INFO_UNDO',\n            'TAB_INFO_USERBROWSE', 'TAB_INFO_USERCLOSE',\n            'TAB_INFO_USERDISPLAYMAP', 'TAB_INFO_USEREDITABLE',\n            'TAB_INFO_USERMAP', 'TAB_INFO_USERREMOVEMAP', 'TAB_INFO_Z_UNIT',\n            'TAB_INFO_Z_UNIT_SET', 'TAB_TYPE_BASE', 'TAB_TYPE_FME',\n            'TAB_TYPE_IMAGE', 'TAB_TYPE_LINKED', 'TAB_TYPE_RESULT',\n            'TAB_TYPE_VIEW', 'TAB_TYPE_WFS', 'TAB_TYPE_WMS', 'TRUE', 'WHITE',\n            'WIN_3DMAP', 'WIN_BROWSER', 'WIN_BUTTONPAD', 'WIN_CART_LEGEND',\n            'WIN_GRAPH', 'WIN_HELP', 'WIN_INFO', 'WIN_INFO_AUTOSCROLL',\n            'WIN_INFO_CLONEWINDOW', 'WIN_INFO_ENHANCED_RENDERING',\n            'WIN_INFO_EXPORT_ANTIALIASING', 'WIN_INFO_EXPORT_BORDER',\n            'WIN_INFO_EXPORT_DITHER', 'WIN_INFO_EXPORT_FILTER',\n            'WIN_INFO_EXPORT_MASKSIZE', 'WIN_INFO_EXPORT_THRESHOLD',\n            'WIN_INFO_EXPORT_TRANSPRASTER', 'WIN_INFO_EXPORT_TRANSPVECTOR',\n            'WIN_INFO_EXPORT_TRUECOLOR', 'WIN_INFO_HEIGHT',\n            'WIN_INFO_LEGENDS_MAP', 'WIN_INFO_NAME', 'WIN_INFO_OPEN',\n            'WIN_INFO_PRINTER_BORDER', 'WIN_INFO_PRINTER_BOTTOMMARGIN',\n            'WIN_INFO_PRINTER_COPIES', 'WIN_INFO_PRINTER_DITHER',\n            'WIN_INFO_PRINTER_LEFTMARGIN', 'WIN_INFO_PRINTER_METHOD',\n            'WIN_INFO_PRINTER_NAME', 'WIN_INFO_PRINTER_ORIENT',\n            'WIN_INFO_PRINTER_PAPERSIZE', 'WIN_INFO_PRINTER_RIGHTMARGIN',\n            'WIN_INFO_PRINTER_SCALE_PATTERNS', 'WIN_INFO_PRINTER_TOPMARGIN',\n            'WIN_INFO_PRINTER_TRANSPRASTER', 'WIN_INFO_PRINTER_TRANSPVECTOR',\n            'WIN_INFO_PRINTER_TRUECOLOR', 'WIN_INFO_SMARTPAN',\n            'WIN_INFO_SMOOTH_IMAGE', 'WIN_INFO_SMOOTH_TEXT',\n            'WIN_INFO_SMOOTH_VECTOR', 'WIN_INFO_SNAPMODE',\n            'WIN_INFO_SNAPTHRESHOLD', 'WIN_INFO_STATE',\n            'WIN_INFO_SYSMENUCLOSE', 'WIN_INFO_TABLE', 'WIN_INFO_TOPMOST',\n            'WIN_INFO_TYPE', 'WIN_INFO_WIDTH', 'WIN_INFO_WINDOWID',\n            'WIN_INFO_WND', 'WIN_INFO_WORKSPACE', 'WIN_INFO_X', 'WIN_INFO_Y',\n            'WIN_LAYOUT', 'WIN_LEGEND', 'WIN_MAPBASIC', 'WIN_MAPINFO',\n            'WIN_MAPPER', 'WIN_MESSAGE', 'WIN_PENPICKER',\n            'WIN_PRINTER_LANDSCAPE', 'WIN_PRINTER_PORTRAIT', 'WIN_RULER',\n            'WIN_STATE_MAXIMIZED', 'WIN_STATE_MINIMIZED', 'WIN_STATE_NORMAL',\n            'WIN_STATISTICS', 'WIN_STYLE_CHILD', 'WIN_STYLE_POPUP',\n            'WIN_STYLE_POPUP_FULLCAPTION', 'WIN_STYLE_STANDARD',\n            'WIN_SYMBOLPICKER', 'WIN_TOOLBAR', 'WIN_TOOLPICKER', 'YELLOW'\n            ),\n        5 => array(\n            'Abbrs', 'Above', 'Access', 'Active', 'Address', 'Advanced',\n            'Affine', 'Align', 'Alpha', 'alpha_value', 'Always', 'Angle',\n            'Animate', 'Antialiasing', 'Append', 'Apply', 'ApplyUpdates',\n            'Arrow', 'Ascending', 'ASCII', 'At', 'AttributeData', 'Auto',\n            'Autoflip', 'Autokey', 'Automatic', 'Autoscroll', 'Axis',\n            'Background', 'Banding', 'Batch', 'Behind', 'Below', 'Bend',\n            'Binary', 'Blocks', 'Border', 'BorderPen', 'Bottom', 'Bounds',\n            'ByteOrder', 'ByVal', 'Calling', 'Camera', 'Candidates',\n            'Cartesian', 'Cell', 'Center', 'Change', 'Char', 'Circle',\n            'Clipping', 'CloseMatchesOnly', 'ClosestAddr', 'Color', 'Columns',\n            'Contents', 'ControlPoints', 'Copies', 'Copyright', 'Counter',\n            'Country', 'CountrySecondarySubdivision', 'CountrySubdivision',\n            'Cross', 'CubicConvolution', 'Cull', 'Cursor', 'Custom', 'Data',\n            'DBF', 'DDE', 'Decimal', 'DecimalPlaces', 'DefaultAmbientSpeed',\n            'DefaultPropagationFactor', 'DeformatNumber', 'Delimiter',\n            'Density', 'DenyWrite', 'Descending', 'Destroy', 'Device',\n            'Dictionary', 'DInfo', 'Disable', 'DiscardUpdates', 'Display',\n            'Dither', 'DrawMode', 'DropKey', 'Droplines', 'Duplicates',\n            'Dynamic', 'Earth', 'East', 'EditLayerPopup', 'Elevation', 'Else',\n            'ElseIf', 'Emf', 'Enable', 'Envinsa', 'ErrorDiffusion', 'Extents',\n            'Fallback', 'FastEdit', 'FillFrame', 'Filter', 'First', 'Fit',\n            'Fixed', 'FocalPoint', 'Footnote', 'Force', 'FromMapCatalog',\n            'Front', 'Gap', 'Geographic', 'Geography', 'Graduated', 'Graphic',\n            'Gutter', 'Half', 'Halftone', 'Handles', 'Height', 'Help',\n            'HelpMsg', 'Hide', 'Hierarchical', 'HIGHLOW', 'History', 'Icon',\n            'ID', 'Ignore', 'Image', 'Inflect', 'Inset', 'Inside',\n            'Interactive', 'Internal', 'Interpolate', 'IntersectingStreet',\n            'Justify', 'Key', 'Label', 'Labels', 'Landscape', 'Large', 'Last',\n            'Layer', 'Left', 'Lib', 'Light', 'LinePen', 'Lines', 'Linestyle',\n            'Longitude', 'LOWHIGH', 'Major', 'MajorPolygonOnly',\n            'MajorRoadsOnly', 'MapBounds', 'MapMarker', 'MapString', 'Margins',\n            'MarkMultiple', 'MaskSize', 'Match', 'MaxOffRoadDistance',\n            'Message', 'MICODE', 'Minor', 'MixedCase', 'Mode', 'ModifierKeys',\n            'Modify', 'Multiple', 'MultiPolygonRgns', 'Municipality',\n            'MunicipalitySubdivision', 'Name', 'NATIVE', 'NearestNeighbor',\n            'NoCollision', 'Node', 'Nodes', 'NoIndex', 'None', 'Nonearth',\n            'NoRefresh', 'Normalized', 'North', 'Number', 'ObjectType', 'ODBC',\n            'Off', 'OK', 'OLE', 'On', 'Options', 'Orientation', 'OtherBdy',\n            'Output', 'Outside', 'Overlapped', 'Overwrite', 'Pagebreaks',\n            'Pan', 'Papersize', 'Parent', 'PassThrough', 'Password',\n            'Patterns', 'Per', 'Percent', 'Percentage', 'Permanent',\n            'PersistentCache', 'Pie', 'Pitch', 'Placename', 'PointsOnly',\n            'PolyObj', 'Portrait', 'Position', 'PostalCode', 'Prefer',\n            'Preferences', 'Prev', 'Printer', 'Projection', 'PushButton',\n            'Quantile', 'Query', 'Random', 'Range', 'Raster', 'Read',\n            'ReadOnly', 'Rec', 'Redraw', 'Refine', 'Regionstyle', 'RemoveData',\n            'Replace', 'Reprojection', 'Resampling', 'Restore', 'ResultCode',\n            'ReturnHoles', 'Right', 'Roll', 'ROP', 'Rotated', 'Row', 'Ruler',\n            'Scale', 'ScrollBars', 'Seamless', 'SecondaryPostalCode',\n            'SelfInt', 'Separator', 'Series', 'Service', 'SetKey',\n            'SetTraverse', 'Shades', 'Show', 'Simple', 'SimplificationFactor',\n            'Size', 'Small', 'Smart', 'Smooth', 'South', 'Spacing',\n            'SPATIALWARE', 'Spherical', 'Square', 'Stacked', 'Step', 'Store',\n            'Street', 'StreetName', 'StreetNumber', 'StyleType', 'Subtitle',\n            'SysMenuClose', 'Thin', 'Tick', 'Title', 'TitleAxisY',\n            'TitleGroup', 'Titles', 'TitleSeries', 'ToggleButton', 'Tolerance',\n            'ToolbarPosition', 'ToolButton', 'Toolkit', 'Top', 'Translucency',\n            'translucency_percent', 'Transparency', 'Transparent', 'Traverse',\n            'TrueColor', 'Uncheck', 'Undo', 'Union', 'Unit', 'Until', 'URL',\n            'Use', 'User', 'UserBrowse', 'UserClose', 'UserDisplayMap',\n            'UserEdit', 'UserMap', 'UserRemoveMap', 'Value', 'Variable',\n            'Vary', 'Vector', 'Versioned', 'View', 'ViewDisplayPopup',\n            'VisibleOnly', 'VMDefault', 'VMGrid', 'VMRaster', 'Voronoi',\n            'Warnings', 'Wedge', 'West', 'Width', 'With', 'XY', 'XYINDEX',\n            'Yaw', 'Zoom'\n            )\n        ),\n    'SYMBOLS' => array(\n            //Numeric/String Operators + Comparison Operators\n            '(', ')', '[', ']', '+', '-', '*', '/', '\\\\', '^', '&',\n            '=', '<', '>'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000ff;',        //Statements + Clauses + Data Types + Logical Operators, Geographical Operators + SQL\n            2 => 'color: #2391af;',        //Special Procedures\n            3 => 'color: #2391af;',        //Functions\n            4 => 'color: #c635cb;',        //Constants\n            5 => 'color: #0000ff;'         //Extended keywords (case sensitive)\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000;',\n            'MULTI' => 'color: #008000;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #a31515;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #000000;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000;'\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #12198b;',            //Table Attributes\n            1 => 'color: #2391af;'             //Data Types\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n            //Table Attribute\n            0 => \"[\\\\.]{1}[a-zA-Z0-9_]+\",\n            //Data Type\n            1 => \"(?xi) \\\\s+ as \\\\s+ (Alias|Brush|Date|Float|Font|Integer|Logical|Object|Pen|SmallInt|String|Symbol)\"\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n);\n"
  },
  {
    "path": "includes/geshi/mathematica.php",
    "content": "<?php\n/*************************************************************************************\n * mathematica.php\n * --------\n * Author: Connor Glosser (glosser1@gmail.com)\n * Copyright: (c) 2014 Connor Glosser (http://www.msu.edu/~glosser1)\n * Release Version: 1.0.9.1\n * Date Started: 2014/08/11\n *\n * Mathematica language file for GeSHi.\n *\n * COMMENTS\n * --------\n * Mathematica itself uses a lot of hyper-contextual syntax highlighting\n * that doesn't work well outside of their proprietary Notebook interface.\n * Consequently, external syntax highlighting tends to get noisy quickly.\n * Here, I've tried to create a triadic color scheme to distinguish keywords,\n * infix functions, and $-designated variables.\n *\n * CHANGES\n * -------\n * 2016/10/27 (1.0.8.13)\n *  - Update function list to Ver. 11\n *  - Add delimiters for associative arrays\n * 2014/10/13 (1.0.8.11)\n *  - Removed style variables for compatability\n * 2014/08/11 (1.0.8.11)\n *  - First Release\n *  - Symbols taken from http://reference.wolfram.com/language/guide/AlphabeticalListing.html\n *    (Mathematica Version 10)\n *\n * TODO (updated 2014/08/12)\n * -------------------------\n * - evaluate colored array syntax\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n//\"Base\" styles\n//string     = 'color: #666666; font-style: italic;';\n//comment    = 'color: #999999; font-style: italic;';\n\n//Purple-green colors\n//primary    = 'color: #500D75; font-weight: bold;'; //keywords\n//secondary  = 'color: #70A30A; font-weight: bold;'; //infix functions\n//tertiary   = 'color: #8C0953; font-weight: bold;'; //$variables\n//quaternary = 'color: #AFAF0B; font-weight: bold;'; //potentially array syntax in the future\n\n//Orange-blue colors (similar to python coloring)\n//primary    = 'color: #FF7700; font-weight: bold;'; //keywords\n//secondary  = 'color: #133CAC; font-weight: bold;'; //infix functions\n//tertiary   = 'color: #028E9B; font-weight: bold;'; //$variables\n//quaternary = 'color: #FFAD00; font-weight: bold;'; //potentially array syntax in the future\n\n$language_data = array(\n    'LANG_NAME' => 'Mathematica',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(\n        '(*' => '*)',\n    ),\n    'COMMENT_REGEXP' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\n        1 => '\"',\n    ),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(),\n    'HARDQUOTE' => array(),\n    'HARDESCAPE' => array(),\n    'HARDCHAR' => '',\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX |\n        GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'AASTriangle',\n            'APIFunction',\n            'ARCHProcess',\n            'ARIMAProcess',\n            'ARMAProcess',\n            'ARProcess',\n            'ASATriangle',\n            'AbelianGroup',\n            'Abort',\n            'AbortKernels',\n            'AbortProtect',\n            'AbortScheduledTask',\n            'Above',\n            'Abs',\n            'AbsArg',\n            'AbsoluteCorrelation',\n            'AbsoluteCorrelationFunction',\n            'AbsoluteCurrentValue',\n            'AbsoluteDashing',\n            'AbsoluteFileName',\n            'AbsoluteOptions',\n            'AbsolutePointSize',\n            'AbsoluteThickness',\n            'AbsoluteTime',\n            'AbsoluteTiming',\n            'AccountingForm',\n            'Accumulate',\n            'Accuracy',\n            'AccuracyGoal',\n            'ActionMenu',\n            'Activate',\n            'ActiveStyle',\n            'AcyclicGraphQ',\n            'AddTo',\n            'AddUsers',\n            'AdjacencyGraph',\n            'AdjacencyList',\n            'AdjacencyMatrix',\n            'AdjustTimeSeriesForecast',\n            'AdjustmentBox',\n            'AdjustmentBoxOptions',\n            'AdministrativeDivisionData',\n            'AffineHalfSpace',\n            'AffineSpace',\n            'AffineStateSpaceModel',\n            'AffineTransform',\n            'After',\n            'AirPressureData',\n            'AirTemperatureData',\n            'AircraftData',\n            'AirportData',\n            'AiryAi',\n            'AiryAiPrime',\n            'AiryAiZero',\n            'AiryBi',\n            'AiryBiPrime',\n            'AiryBiZero',\n            'AlgebraicIntegerQ',\n            'AlgebraicNumber',\n            'AlgebraicNumberDenominator',\n            'AlgebraicNumberNorm',\n            'AlgebraicNumberPolynomial',\n            'AlgebraicNumberTrace',\n            'AlgebraicUnitQ',\n            'Algebraics',\n            'Alignment',\n            'AlignmentPoint',\n            'All',\n            'AllTrue',\n            'AllowGroupClose',\n            'AllowInlineCells',\n            'AllowLooseGrammar',\n            'AllowReverseGroupClose',\n            'AllowedDimensions',\n            'AlphaChannel',\n            'Alphabet',\n            'AlphabeticOrder',\n            'AlphabeticSort',\n            'AlternateImage',\n            'AlternatingFactorial',\n            'AlternatingGroup',\n            'AlternativeHypothesis',\n            'Alternatives',\n            'AltitudeMethod',\n            'AmbiguityFunction',\n            'AmbiguityList',\n            'AnatomyData',\n            'AnatomyForm',\n            'AnatomyPlot3D',\n            'AnchoredSearch',\n            'And',\n            'AndersonDarlingTest',\n            'AngerJ',\n            'AngleBracket',\n            'AnglePath',\n            'AngleVector',\n            'AngularGauge',\n            'Animate',\n            'AnimationDirection',\n            'AnimationRate',\n            'AnimationRepetitions',\n            'AnimationRunTime',\n            'AnimationRunning',\n            'AnimationTimeIndex',\n            'Animator',\n            'Annotation',\n            'Annuity',\n            'AnnuityDue',\n            'Annulus',\n            'Anonymous',\n            'Antialiasing',\n            'AntihermitianMatrixQ',\n            'Antisymmetric',\n            'AntisymmetricMatrixQ',\n            'AnyOrder',\n            'AnySubset',\n            'AnyTrue',\n            'Apart',\n            'ApartSquareFree',\n            'Appearance',\n            'AppearanceElements',\n            'AppearanceRules',\n            'AppellF1',\n            'Append',\n            'AppendTo',\n            'Apply',\n            'ArcCos',\n            'ArcCosh',\n            'ArcCot',\n            'ArcCoth',\n            'ArcCsc',\n            'ArcCsch',\n            'ArcCurvature',\n            'ArcLength',\n            'ArcSec',\n            'ArcSech',\n            'ArcSin',\n            'ArcSinDistribution',\n            'ArcSinh',\n            'ArcTan',\n            'ArcTanh',\n            'Area',\n            'Arg',\n            'ArgMax',\n            'ArgMin',\n            'ArithmeticGeometricMean',\n            'Array',\n            'ArrayComponents',\n            'ArrayDepth',\n            'ArrayFilter',\n            'ArrayFlatten',\n            'ArrayMesh',\n            'ArrayPad',\n            'ArrayPlot',\n            'ArrayQ',\n            'ArrayResample',\n            'ArrayReshape',\n            'ArrayRules',\n            'Arrays',\n            'Arrow',\n            'Arrowheads',\n            'Ask',\n            'AskAppend',\n            'AskConfirm',\n            'AskDisplay',\n            'AskFunction',\n            'AskTemplateDisplay',\n            'AskedQ',\n            'AskedValue',\n            'AspectRatio',\n            'Assert',\n            'AssociateTo',\n            'Association',\n            'AssociationFormat',\n            'AssociationMap',\n            'AssociationQ',\n            'AssociationThread',\n            'AssumeDeterministic',\n            'Assuming',\n            'Assumptions',\n            'AsymptoticOutputTracker',\n            'Asynchronous',\n            'AsynchronousTaskObject',\n            'AsynchronousTasks',\n            'AtomQ',\n            'Attributes',\n            'Audio',\n            'AudioAmplify',\n            'AudioBlockMap',\n            'AudioChannelCombine',\n            'AudioChannelMix',\n            'AudioChannelSeparate',\n            'AudioChannels',\n            'AudioData',\n            'AudioDelay',\n            'AudioDelete',\n            'AudioDevice',\n            'AudioFade',\n            'AudioFrequencyShift',\n            'AudioGenerator',\n            'AudioIntervals',\n            'AudioJoin',\n            'AudioLabel',\n            'AudioLength',\n            'AudioLocalMeasurements',\n            'AudioMeasurements',\n            'AudioNormalize',\n            'AudioOverlay',\n            'AudioPad',\n            'AudioPan',\n            'AudioPartition',\n            'AudioPitchShift',\n            'AudioPlot',\n            'AudioQ',\n            'AudioResample',\n            'AudioReverb',\n            'AudioSampleRate',\n            'AudioSplit',\n            'AudioTimeStretch',\n            'AudioTrim',\n            'AudioType',\n            'AugmentedSymmetricPolynomial',\n            'Authentication',\n            'AutoAction',\n            'AutoDelete',\n            'AutoIndent',\n            'AutoItalicWords',\n            'AutoMultiplicationSymbol',\n            'AutoRefreshed',\n            'AutoRemove',\n            'AutoScroll',\n            'AutoSpacing',\n            'AutoSubmitting',\n            'Autocomplete',\n            'AutocompletionFunction',\n            'AutocorrelationTest',\n            'Automatic',\n            'AutorunSequencing',\n            'Axes',\n            'AxesEdge',\n            'AxesLabel',\n            'AxesOrigin',\n            'AxesStyle',\n            'Axis',\n            'BSplineBasis',\n            'BSplineCurve',\n            'BSplineFunction',\n            'BSplineSurface',\n            'BabyMonsterGroupB',\n            'Back',\n            'Background',\n            'Backslash',\n            'Backward',\n            'Ball',\n            'Band',\n            'BandpassFilter',\n            'BandstopFilter',\n            'BarChart',\n            'BarChart3D',\n            'BarLegend',\n            'BarOrigin',\n            'BarSpacing',\n            'BarabasiAlbertGraphDistribution',\n            'BarcodeImage',\n            'BarcodeRecognize',\n            'BaringhausHenzeTest',\n            'BarlowProschanImportance',\n            'BarnesG',\n            'BartlettHannWindow',\n            'BartlettWindow',\n            'BaseForm',\n            'BaseStyle',\n            'Baseline',\n            'BaselinePosition',\n            'BatchNormalizationLayer',\n            'BatchSize',\n            'BatesDistribution',\n            'BattleLemarieWavelet',\n            'BayesianMaximization',\n            'BayesianMaximizationObject',\n            'BayesianMinimization',\n            'BayesianMinimizationObject',\n            'Because',\n            'BeckmannDistribution',\n            'Beep',\n            'Before',\n            'Begin',\n            'BeginDialogPacket',\n            'BeginPackage',\n            'BellB',\n            'BellY',\n            'Below',\n            'BenfordDistribution',\n            'BeniniDistribution',\n            'BenktanderGibratDistribution',\n            'BenktanderWeibullDistribution',\n            'BernoulliB',\n            'BernoulliDistribution',\n            'BernoulliGraphDistribution',\n            'BernoulliProcess',\n            'BernsteinBasis',\n            'BesselFilterModel',\n            'BesselI',\n            'BesselJ',\n            'BesselJZero',\n            'BesselK',\n            'BesselY',\n            'BesselYZero',\n            'Beta',\n            'BetaBinomialDistribution',\n            'BetaDistribution',\n            'BetaNegativeBinomialDistribution',\n            'BetaPrimeDistribution',\n            'BetaRegularized',\n            'Between',\n            'BetweennessCentrality',\n            'BezierCurve',\n            'BezierFunction',\n            'BilateralFilter',\n            'BinCounts',\n            'BinLists',\n            'Binarize',\n            'BinaryDistance',\n            'BinaryFormat',\n            'BinaryImageQ',\n            'BinaryRead',\n            'BinaryReadList',\n            'BinaryWrite',\n            'Binomial',\n            'BinomialDistribution',\n            'BinomialProcess',\n            'BinormalDistribution',\n            'BiorthogonalSplineWavelet',\n            'BipartiteGraphQ',\n            'BiquadraticFilterModel',\n            'BirnbaumImportance',\n            'BirnbaumSaundersDistribution',\n            'BitAnd',\n            'BitClear',\n            'BitGet',\n            'BitLength',\n            'BitNot',\n            'BitOr',\n            'BitSet',\n            'BitShiftLeft',\n            'BitShiftRight',\n            'BitXor',\n            'Black',\n            'BlackmanHarrisWindow',\n            'BlackmanNuttallWindow',\n            'BlackmanWindow',\n            'Blank',\n            'BlankNullSequence',\n            'BlankSequence',\n            'Blend',\n            'Block',\n            'BlockMap',\n            'BlockRandom',\n            'BlomqvistBeta',\n            'BlomqvistBetaTest',\n            'Blue',\n            'Blur',\n            'BodePlot',\n            'BohmanWindow',\n            'Bold',\n            'Bookmarks',\n            'Boole',\n            'BooleanConsecutiveFunction',\n            'BooleanConvert',\n            'BooleanCountingFunction',\n            'BooleanFunction',\n            'BooleanGraph',\n            'BooleanMaxterms',\n            'BooleanMinimize',\n            'BooleanMinterms',\n            'BooleanQ',\n            'BooleanRegion',\n            'BooleanStrings',\n            'BooleanTable',\n            'BooleanVariables',\n            'Booleans',\n            'BorderDimensions',\n            'BorelTannerDistribution',\n            'Bottom',\n            'BottomHatTransform',\n            'BoundaryDiscretizeGraphics',\n            'BoundaryDiscretizeRegion',\n            'BoundaryMesh',\n            'BoundaryMeshRegion',\n            'BoundaryMeshRegionQ',\n            'BoundaryStyle',\n            'BoundedRegionQ',\n            'BoundingRegion',\n            'BoxData',\n            'BoxMatrix',\n            'BoxObject',\n            'BoxRatios',\n            'BoxStyle',\n            'BoxWhiskerChart',\n            'Boxed',\n            'BracketingBar',\n            'BrayCurtisDistance',\n            'BreadthFirstScan',\n            'Break',\n            'BridgeData',\n            'BroadcastStationData',\n            'Brown',\n            'BrownForsytheTest',\n            'BrownianBridgeProcess',\n            'BubbleChart',\n            'BubbleChart3D',\n            'BubbleScale',\n            'BubbleSizes',\n            'BuildingData',\n            'BulletGauge',\n            'BusinessDayQ',\n            'ButterflyGraph',\n            'ButterworthFilterModel',\n            'Button',\n            'ButtonBar',\n            'ButtonBox',\n            'ButtonBoxOptions',\n            'ButtonData',\n            'ButtonFunction',\n            'ButtonMinHeight',\n            'ButtonNotebook',\n            'ButtonSource',\n            'Byte',\n            'ByteArray',\n            'ByteArrayQ',\n            'ByteCount',\n            'ByteOrdering',\n\n            'C',\n            'CDF',\n            'CDFDeploy',\n            'CDFInformation',\n            'CDFWavelet',\n            'CForm',\n            'CMYKColor',\n            'CachePersistence',\n            'CalendarConvert',\n            'CalendarData',\n            'CalendarType',\n            'CallPacket',\n            'Callout',\n            'CalloutMarker',\n            'CalloutStyle',\n            'CanberraDistance',\n            'Cancel',\n            'CancelButton',\n            'CandlestickChart',\n            'CanonicalGraph',\n            'CanonicalName',\n            'CanonicalWarpingCorrespondence',\n            'CanonicalWarpingDistance',\n            'CantorStaircase',\n            'Cap',\n            'CapForm',\n            'CapitalDifferentialD',\n            'Capitalize',\n            'CapsuleShape',\n            'CarlemanLinearize',\n            'CarmichaelLambda',\n            'CaseOrdering',\n            'CaseSensitive',\n            'Cases',\n            'Cashflow',\n            'Casoratian',\n            'Catalan',\n            'CatalanNumber',\n            'Catch',\n            'Catenate',\n            'CatenateLayer',\n            'CauchyDistribution',\n            'CauchyWindow',\n            'CayleyGraph',\n            'Ceiling',\n            'CelestialSystem',\n            'Cell',\n            'CellAutoOverwrite',\n            'CellBaseline',\n            'CellBracketOptions',\n            'CellChangeTimes',\n            'CellContext',\n            'CellDingbat',\n            'CellDynamicExpression',\n            'CellEditDuplicate',\n            'CellEpilog',\n            'CellEvaluationDuplicate',\n            'CellEvaluationFunction',\n            'CellEventActions',\n            'CellFrame',\n            'CellFrameColor',\n            'CellFrameLabelMargins',\n            'CellFrameLabels',\n            'CellFrameMargins',\n            'CellGroup',\n            'CellGroupData',\n            'CellGrouping',\n            'CellID',\n            'CellLabel',\n            'CellLabelAutoDelete',\n            'CellMargins',\n            'CellObject',\n            'CellOpen',\n            'CellPrint',\n            'CellProlog',\n            'CellStyle',\n            'CellTags',\n            'Cells',\n            'CellularAutomaton',\n            'CensoredDistribution',\n            'Censoring',\n            'Center',\n            'CenterArray',\n            'CenterDot',\n            'CentralMoment',\n            'CentralMomentGeneratingFunction',\n            'ChampernowneNumber',\n            'ChanVeseBinarize',\n            'ChannelBase',\n            'ChannelDatabin',\n            'ChannelListen',\n            'ChannelListener',\n            'ChannelListeners',\n            'ChannelObject',\n            'ChannelPreSendFunction',\n            'ChannelSend',\n            'ChannelSubscribers',\n            'Character',\n            'CharacterCounts',\n            'CharacterEncoding',\n            'CharacterName',\n            'CharacterRange',\n            'CharacteristicFunction',\n            'CharacteristicPolynomial',\n            'Characters',\n            'ChartBaseStyle',\n            'ChartElementFunction',\n            'ChartElements',\n            'ChartLabels',\n            'ChartLayout',\n            'ChartLegends',\n            'ChartStyle',\n            'Chebyshev1FilterModel',\n            'Chebyshev2FilterModel',\n            'ChebyshevT',\n            'ChebyshevU',\n            'Check',\n            'CheckAbort',\n            'Checkbox',\n            'CheckboxBar',\n            'ChemicalData',\n            'ChessboardDistance',\n            'ChiDistribution',\n            'ChiSquareDistribution',\n            'ChineseRemainder',\n            'ChoiceButtons',\n            'ChoiceDialog',\n            'CholeskyDecomposition',\n            'Chop',\n            'ChromaticPolynomial',\n            'ChromaticityPlot',\n            'ChromaticityPlot3D',\n            'Circle',\n            'CircleDot',\n            'CircleMinus',\n            'CirclePlus',\n            'CirclePoints',\n            'CircleTimes',\n            'CirculantGraph',\n            'CircularOrthogonalMatrixDistribution',\n            'CircularQuaternionMatrixDistribution',\n            'CircularRealMatrixDistribution',\n            'CircularSymplecticMatrixDistribution',\n            'CircularUnitaryMatrixDistribution',\n            'Circumsphere',\n            'CityData',\n            'ClassPriors',\n            'ClassifierFunction',\n            'ClassifierInformation',\n            'ClassifierMeasurements',\n            'ClassifierMeasurementsObject',\n            'Classify',\n            'Clear',\n            'ClearAll',\n            'ClearAttributes',\n            'ClearCookies',\n            'ClearPermissions',\n            'ClearSystemCache',\n            'ClebschGordan',\n            'ClickPane',\n            'Clip',\n            'ClipPlanes',\n            'ClipPlanesStyle',\n            'ClipRange',\n            'ClippingStyle',\n            'Clock',\n            'ClockGauge',\n            'Close',\n            'CloseKernels',\n            'ClosenessCentrality',\n            'Closing',\n            'CloudAccountData',\n            'CloudBase',\n            'CloudConnect',\n            'CloudDeploy',\n            'CloudDirectory',\n            'CloudDisconnect',\n            'CloudEvaluate',\n            'CloudExport',\n            'CloudExpression',\n            'CloudExpressions',\n            'CloudFunction',\n            'CloudGet',\n            'CloudImport',\n            'CloudLoggingData',\n            'CloudObject',\n            'CloudObjects',\n            'CloudPublish',\n            'CloudPut',\n            'CloudSave',\n            'CloudShare',\n            'CloudSubmit',\n            'CloudSymbol',\n            'ClusterClassify',\n            'ClusterDissimilarityFunction',\n            'ClusteringComponents',\n            'ClusteringTree',\n            'CodeAssistOptions',\n            'Coefficient',\n            'CoefficientArrays',\n            'CoefficientList',\n            'CoefficientRules',\n            'CoifletWavelet',\n            'Collect',\n            'Colon',\n            'ColorBalance',\n            'ColorCombine',\n            'ColorConvert',\n            'ColorCoverage',\n            'ColorData',\n            'ColorDataFunction',\n            'ColorDistance',\n            'ColorFunction',\n            'ColorFunctionScaling',\n            'ColorNegate',\n            'ColorProfileData',\n            'ColorQ',\n            'ColorQuantize',\n            'ColorReplace',\n            'ColorRules',\n            'ColorSeparate',\n            'ColorSetter',\n            'ColorSlider',\n            'ColorSpace',\n            'ColorToneMapping',\n            'Colorize',\n            'Column',\n            'ColumnAlignments',\n            'ColumnLines',\n            'ColumnSpacings',\n            'ColumnWidths',\n            'ColumnsEqual',\n            'CombinerFunction',\n            'CometData',\n            'CommonName',\n            'CommonUnits',\n            'Commonest',\n            'CommonestFilter',\n            'CommunityBoundaryStyle',\n            'CommunityGraphPlot',\n            'CommunityLabels',\n            'CommunityRegionStyle',\n            'CompanyData',\n            'CompatibleUnitQ',\n            'CompilationOptions',\n            'CompilationTarget',\n            'Compile',\n            'Compiled',\n            'CompiledFunction',\n            'Complement',\n            'CompleteGraph',\n            'CompleteGraphQ',\n            'CompleteKaryTree',\n            'Complex',\n            'ComplexExpand',\n            'ComplexInfinity',\n            'Complexes',\n            'ComplexityFunction',\n            'ComponentMeasurements',\n            'ComposeList',\n            'ComposeSeries',\n            'CompositeQ',\n            'Composition',\n            'CompoundElement',\n            'CompoundExpression',\n            'CompoundPoissonDistribution',\n            'CompoundPoissonProcess',\n            'CompoundRenewalProcess',\n            'Compress',\n            'Condition',\n            'ConditionalExpression',\n            'Conditioned',\n            'Cone',\n            'ConfidenceLevel',\n            'ConfidenceRange',\n            'ConfidenceTransform',\n            'ConformAudio',\n            'ConformImages',\n            'Congruent',\n            'ConicHullRegion',\n            'Conjugate',\n            'ConjugateTranspose',\n            'Conjunction',\n            'ConnectLibraryCallbackFunction',\n            'ConnectedComponents',\n            'ConnectedGraphComponents',\n            'ConnectedGraphQ',\n            'ConnectedMeshComponents',\n            'ConnesWindow',\n            'ConoverTest',\n            'Constant',\n            'ConstantArray',\n            'ConstantImage',\n            'ConstantRegionQ',\n            'Constants',\n            'ConstellationData',\n            'Containing',\n            'ContainsAll',\n            'ContainsAny',\n            'ContainsExactly',\n            'ContainsNone',\n            'ContainsOnly',\n            'ContentFieldOptions',\n            'ContentLocationFunction',\n            'ContentObject',\n            'ContentPadding',\n            'ContentSelectable',\n            'ContentSize',\n            'Context',\n            'ContextToFileName',\n            'Contexts',\n            'Continue',\n            'ContinuedFraction',\n            'ContinuedFractionK',\n            'ContinuousAction',\n            'ContinuousMarkovProcess',\n            'ContinuousTask',\n            'ContinuousTimeModelQ',\n            'ContinuousWaveletData',\n            'ContinuousWaveletTransform',\n            'ContourDetect',\n            'ContourLabels',\n            'ContourPlot',\n            'ContourPlot3D',\n            'ContourShading',\n            'ContourStyle',\n            'Contours',\n            'ContraharmonicMean',\n            'Control',\n            'ControlActive',\n            'ControlPlacement',\n            'ControlType',\n            'ControllabilityGramian',\n            'ControllabilityMatrix',\n            'ControllableDecomposition',\n            'ControllableModelQ',\n            'ControllerInformation',\n            'ControllerLinking',\n            'ControllerManipulate',\n            'ControllerMethod',\n            'ControllerPath',\n            'ControllerState',\n            'ControlsRendering',\n            'Convergents',\n            'ConversionRules',\n            'ConvexHullMesh',\n            'ConvolutionLayer',\n            'Convolve',\n            'ConwayGroupCo1',\n            'ConwayGroupCo2',\n            'ConwayGroupCo3',\n            'CookieFunction',\n            'CoordinateBoundingBox',\n            'CoordinateBoundingBoxArray',\n            'CoordinateBounds',\n            'CoordinateBoundsArray',\n            'CoordinateChartData',\n            'CoordinateTransform',\n            'CoordinateTransformData',\n            'CoordinatesToolOptions',\n            'CoprimeQ',\n            'Coproduct',\n            'CopulaDistribution',\n            'CopyDatabin',\n            'CopyDirectory',\n            'CopyFile',\n            'CopyToClipboard',\n            'Copyable',\n            'CornerFilter',\n            'CornerNeighbors',\n            'Correlation',\n            'CorrelationDistance',\n            'CorrelationFunction',\n            'CorrelationTest',\n            'Cos',\n            'CosIntegral',\n            'Cosh',\n            'CoshIntegral',\n            'CosineDistance',\n            'CosineWindow',\n            'Cot',\n            'Coth',\n            'Count',\n            'CountDistinct',\n            'CountDistinctBy',\n            'CountRoots',\n            'CountryData',\n            'Counts',\n            'CountsBy',\n            'Covariance',\n            'CovarianceEstimatorFunction',\n            'CovarianceFunction',\n            'CoxIngersollRossProcess',\n            'CoxModel',\n            'CoxModelFit',\n            'CoxianDistribution',\n            'CramerVonMisesTest',\n            'CreateArchive',\n            'CreateCellID',\n            'CreateChannel',\n            'CreateCloudExpression',\n            'CreateDatabin',\n            'CreateDialog',\n            'CreateDirectory',\n            'CreateDocument',\n            'CreateFile',\n            'CreateIntermediateDirectories',\n            'CreateManagedLibraryExpression',\n            'CreateNotebook',\n            'CreatePalette',\n            'CreatePermissionsGroup',\n            'CreateScheduledTask',\n            'CreateSearchIndex',\n            'CreateUUID',\n            'CreateWindow',\n            'CriterionFunction',\n            'CriticalSection',\n            'CriticalityFailureImportance',\n            'CriticalitySuccessImportance',\n            'Cross',\n            'CrossEntropyLossLayer',\n            'CrossMatrix',\n            'CrossingDetect',\n            'Csc',\n            'Csch',\n            'CubeRoot',\n            'Cubics',\n            'Cuboid',\n            'Cumulant',\n            'CumulantGeneratingFunction',\n            'Cup',\n            'CupCap',\n            'Curl',\n            'CurrencyConvert',\n            'CurrentImage',\n            'CurrentValue',\n            'CurvatureFlowFilter',\n            'CurveClosed',\n            'Cyan',\n            'CycleGraph',\n            'CycleIndexPolynomial',\n            'Cycles',\n            'CyclicGroup',\n            'Cyclotomic',\n            'Cylinder',\n            'CylindricalDecomposition',\n\n            'D',\n            'DEigensystem',\n            'DEigenvalues',\n            'DGaussianWavelet',\n            'DMSList',\n            'DMSString',\n            'DSolve',\n            'DSolveValue',\n            'DagumDistribution',\n            'DamData',\n            'DamerauLevenshteinDistance',\n            'Darker',\n            'Dashed',\n            'Dashing',\n            'DataDistribution',\n            'DataRange',\n            'DataReversed',\n            'Databin',\n            'DatabinAdd',\n            'DatabinRemove',\n            'DatabinUpload',\n            'Databins',\n            'Dataset',\n            'DateBounds',\n            'DateDifference',\n            'DateFormat',\n            'DateFunction',\n            'DateHistogram',\n            'DateList',\n            'DateListLogPlot',\n            'DateListPlot',\n            'DateListStepPlot',\n            'DateObject',\n            'DateObjectQ',\n            'DatePattern',\n            'DatePlus',\n            'DateRange',\n            'DateReduction',\n            'DateString',\n            'DateTicksFormat',\n            'DateValue',\n            'Dated',\n            'DatedUnit',\n            'DaubechiesWavelet',\n            'DavisDistribution',\n            'DawsonF',\n            'DayCount',\n            'DayCountConvention',\n            'DayHemisphere',\n            'DayMatchQ',\n            'DayName',\n            'DayNightTerminator',\n            'DayPlus',\n            'DayRange',\n            'DayRound',\n            'DaylightQ',\n            'DeBruijnGraph',\n            'Decapitalize',\n            'DeclarePackage',\n            'Decompose',\n            'DeconvolutionLayer',\n            'Decrement',\n            'Decrypt',\n            'DedekindEta',\n            'DeepSpaceProbeData',\n            'Default',\n            'DefaultAxesStyle',\n            'DefaultBaseStyle',\n            'DefaultBoxStyle',\n            'DefaultButton',\n            'DefaultDuplicateCellStyle',\n            'DefaultDuration',\n            'DefaultElement',\n            'DefaultFaceGridsStyle',\n            'DefaultFieldHintStyle',\n            'DefaultFrameStyle',\n            'DefaultFrameTicksStyle',\n            'DefaultGridLinesStyle',\n            'DefaultLabelStyle',\n            'DefaultMenuStyle',\n            'DefaultNaturalLanguage',\n            'DefaultNewCellStyle',\n            'DefaultOptions',\n            'DefaultTicksStyle',\n            'DefaultTooltipStyle',\n            'Defer',\n            'DefineInputStreamMethod',\n            'DefineOutputStreamMethod',\n            'Definition',\n            'Degree',\n            'DegreeCentrality',\n            'DegreeGraphDistribution',\n            'Deinitialization',\n            'Del',\n            'DelaunayMesh',\n            'Delayed',\n            'Deletable',\n            'Delete',\n            'DeleteBorderComponents',\n            'DeleteCases',\n            'DeleteChannel',\n            'DeleteCloudExpression',\n            'DeleteContents',\n            'DeleteDirectory',\n            'DeleteDuplicates',\n            'DeleteDuplicatesBy',\n            'DeleteFile',\n            'DeleteMissing',\n            'DeletePermissionsKey',\n            'DeleteSearchIndex',\n            'DeleteSmallComponents',\n            'DeleteStopwords',\n            'DelimitedSequence',\n            'Delimiter',\n            'DelimiterFlashTime',\n            'Delimiters',\n            'DeliveryFunction',\n            'Dendrogram',\n            'Denominator',\n            'DensityHistogram',\n            'DensityPlot',\n            'DensityPlot3D',\n            'DependentVariables',\n            'Deploy',\n            'Deployed',\n            'Depth',\n            'DepthFirstScan',\n            'Derivative',\n            'DerivativeFilter',\n            'DescriptorStateSpace',\n            'DesignMatrix',\n            'Det',\n            'DeviceClose',\n            'DeviceConfigure',\n            'DeviceExecute',\n            'DeviceExecuteAsynchronous',\n            'DeviceObject',\n            'DeviceOpen',\n            'DeviceRead',\n            'DeviceReadBuffer',\n            'DeviceReadLatest',\n            'DeviceReadList',\n            'DeviceReadTimeSeries',\n            'DeviceStreams',\n            'DeviceWrite',\n            'DeviceWriteBuffer',\n            'Devices',\n            'Diagonal',\n            'DiagonalMatrix',\n            'DiagonalizableMatrixQ',\n            'Dialog',\n            'DialogInput',\n            'DialogNotebook',\n            'DialogProlog',\n            'DialogReturn',\n            'DialogSymbols',\n            'Diamond',\n            'DiamondMatrix',\n            'DiceDissimilarity',\n            'DictionaryLookup',\n            'DictionaryWordQ',\n            'DifferenceDelta',\n            'DifferenceQuotient',\n            'DifferenceRoot',\n            'DifferenceRootReduce',\n            'Differences',\n            'DifferentialD',\n            'DifferentialRoot',\n            'DifferentialRootReduce',\n            'DifferentiatorFilter',\n            'DigitBlock',\n            'DigitCharacter',\n            'DigitCount',\n            'DigitQ',\n            'DihedralGroup',\n            'Dilation',\n            'DimensionReduce',\n            'DimensionReducerFunction',\n            'DimensionReduction',\n            'DimensionalCombinations',\n            'DimensionalMeshComponents',\n            'Dimensions',\n            'DiracComb',\n            'DiracDelta',\n            'DirectedEdge',\n            'DirectedEdges',\n            'DirectedGraph',\n            'DirectedGraphQ',\n            'DirectedInfinity',\n            'Direction',\n            'Directive',\n            'Directory',\n            'DirectoryName',\n            'DirectoryQ',\n            'DirectoryStack',\n            'DirichletBeta',\n            'DirichletCharacter',\n            'DirichletCondition',\n            'DirichletConvolve',\n            'DirichletDistribution',\n            'DirichletEta',\n            'DirichletL',\n            'DirichletLambda',\n            'DirichletTransform',\n            'DirichletWindow',\n            'DisableFormatting',\n            'DiscreteChirpZTransform',\n            'DiscreteConvolve',\n            'DiscreteDelta',\n            'DiscreteHadamardTransform',\n            'DiscreteIndicator',\n            'DiscreteLQEstimatorGains',\n            'DiscreteLQRegulatorGains',\n            'DiscreteLyapunovSolve',\n            'DiscreteMarkovProcess',\n            'DiscretePlot',\n            'DiscretePlot3D',\n            'DiscreteRatio',\n            'DiscreteRiccatiSolve',\n            'DiscreteShift',\n            'DiscreteTimeModelQ',\n            'DiscreteUniformDistribution',\n            'DiscreteVariables',\n            'DiscreteWaveletData',\n            'DiscreteWaveletPacketTransform',\n            'DiscreteWaveletTransform',\n            'DiscretizeGraphics',\n            'DiscretizeRegion',\n            'Discriminant',\n            'DisjointQ',\n            'Disjunction',\n            'Disk',\n            'DiskMatrix',\n            'DiskSegment',\n            'Dispatch',\n            'DispersionEstimatorFunction',\n            'DisplayAllSteps',\n            'DisplayEndPacket',\n            'DisplayForm',\n            'DisplayFunction',\n            'DisplayPacket',\n            'DistanceFunction',\n            'DistanceMatrix',\n            'DistanceTransform',\n            'Distribute',\n            'DistributeDefinitions',\n            'Distributed',\n            'DistributedContexts',\n            'DistributionChart',\n            'DistributionFitTest',\n            'DistributionParameterAssumptions',\n            'DistributionParameterQ',\n            'Dithering',\n            'Div',\n            'Divide',\n            'DivideBy',\n            'Dividers',\n            'Divisible',\n            'DivisorSigma',\n            'DivisorSum',\n            'Divisors',\n            'Do',\n            'DockedCells',\n            'DocumentGenerator',\n            'DocumentGeneratorInformation',\n            'DocumentGenerators',\n            'DocumentNotebook',\n            'DominantColors',\n            'Dot',\n            'DotDashed',\n            'DotEqual',\n            'DotPlusLayer',\n            'Dotted',\n            'DoubleBracketingBar',\n            'DoubleDownArrow',\n            'DoubleLeftArrow',\n            'DoubleLeftRightArrow',\n            'DoubleLeftTee',\n            'DoubleLongLeftArrow',\n            'DoubleLongLeftRightArrow',\n            'DoubleLongRightArrow',\n            'DoubleRightArrow',\n            'DoubleRightTee',\n            'DoubleUpArrow',\n            'DoubleUpDownArrow',\n            'DoubleVerticalBar',\n            'DownArrow',\n            'DownArrowBar',\n            'DownArrowUpArrow',\n            'DownLeftRightVector',\n            'DownLeftTeeVector',\n            'DownLeftVector',\n            'DownLeftVectorBar',\n            'DownRightTeeVector',\n            'DownRightVector',\n            'DownRightVectorBar',\n            'DownTee',\n            'DownTeeArrow',\n            'DownValues',\n            'Downsample',\n            'Drop',\n            'DropoutLayer',\n            'Dt',\n            'DualSystemsModel',\n            'DumpSave',\n            'DuplicateFreeQ',\n            'Duration',\n            'Dynamic',\n            'DynamicEvaluationTimeout',\n            'DynamicGeoGraphics',\n            'DynamicImage',\n            'DynamicModule',\n            'DynamicModuleValues',\n            'DynamicSetting',\n            'DynamicWrapper',\n\n            'E',\n            'EarthImpactData',\n            'EarthquakeData',\n            'EccentricityCentrality',\n            'Echo',\n            'EchoFunction',\n            'EclipseType',\n            'EdgeAdd',\n            'EdgeBetweennessCentrality',\n            'EdgeCapacity',\n            'EdgeConnectivity',\n            'EdgeContract',\n            'EdgeCost',\n            'EdgeCount',\n            'EdgeCoverQ',\n            'EdgeCycleMatrix',\n            'EdgeDelete',\n            'EdgeDetect',\n            'EdgeForm',\n            'EdgeIndex',\n            'EdgeLabelStyle',\n            'EdgeLabeling',\n            'EdgeLabels',\n            'EdgeList',\n            'EdgeQ',\n            'EdgeRenderingFunction',\n            'EdgeRules',\n            'EdgeShapeFunction',\n            'EdgeStyle',\n            'EdgeWeight',\n            'EditDistance',\n            'Editable',\n            'EffectiveInterest',\n            'Eigensystem',\n            'Eigenvalues',\n            'EigenvectorCentrality',\n            'Eigenvectors',\n            'Element',\n            'ElementData',\n            'ElementwiseLayer',\n            'ElidedForms',\n            'Eliminate',\n            'Ellipsoid',\n            'EllipticE',\n            'EllipticExp',\n            'EllipticExpPrime',\n            'EllipticF',\n            'EllipticFilterModel',\n            'EllipticK',\n            'EllipticLog',\n            'EllipticNomeQ',\n            'EllipticPi',\n            'EllipticTheta',\n            'EllipticThetaPrime',\n            'EmbedCode',\n            'EmbeddedHTML',\n            'EmbeddedService',\n            'EmbeddingLayer',\n            'EmitSound',\n            'EmpiricalDistribution',\n            'EmptyGraphQ',\n            'EmptyRegion',\n            'Enabled',\n            'Encode',\n            'Encrypt',\n            'EncryptedObject',\n            'End',\n            'EndDialogPacket',\n            'EndOfBuffer',\n            'EndOfFile',\n            'EndOfLine',\n            'EndOfString',\n            'EndPackage',\n            'EngineeringForm',\n            'EnterExpressionPacket',\n            'EnterTextPacket',\n            'Entity',\n            'EntityClass',\n            'EntityClassList',\n            'EntityCopies',\n            'EntityGroup',\n            'EntityInstance',\n            'EntityList',\n            'EntityProperties',\n            'EntityProperty',\n            'EntityPropertyClass',\n            'EntityStore',\n            'EntityTypeName',\n            'EntityValue',\n            'Entropy',\n            'EntropyFilter',\n            'Environment',\n            'Epilog',\n            'EpilogFunction',\n            'Equal',\n            'EqualTilde',\n            'EqualTo',\n            'Equilibrium',\n            'EquirippleFilterKernel',\n            'Equivalent',\n            'Erf',\n            'Erfc',\n            'Erfi',\n            'ErlangB',\n            'ErlangC',\n            'ErlangDistribution',\n            'Erosion',\n            'ErrorBox',\n            'EscapeRadius',\n            'EstimatedBackground',\n            'EstimatedDistribution',\n            'EstimatedProcess',\n            'EstimatorGains',\n            'EstimatorRegulator',\n            'EuclideanDistance',\n            'EulerAngles',\n            'EulerE',\n            'EulerGamma',\n            'EulerMatrix',\n            'EulerPhi',\n            'EulerianGraphQ',\n            'Evaluatable',\n            'Evaluate',\n            'EvaluatePacket',\n            'EvaluateScheduledTask',\n            'EvaluationBox',\n            'EvaluationCell',\n            'EvaluationData',\n            'EvaluationElements',\n            'EvaluationMonitor',\n            'EvaluationNotebook',\n            'EvaluationObject',\n            'Evaluator',\n            'EvenQ',\n            'EventData',\n            'EventHandler',\n            'EventLabels',\n            'EventSeries',\n            'ExactBlackmanWindow',\n            'ExactNumberQ',\n            'ExampleData',\n            'Except',\n            'ExcludePods',\n            'ExcludedForms',\n            'ExcludedLines',\n            'ExcludedPhysicalQuantities',\n            'Exclusions',\n            'ExclusionsStyle',\n            'Exists',\n            'Exit',\n            'ExoplanetData',\n            'Exp',\n            'ExpGammaDistribution',\n            'ExpIntegralE',\n            'ExpIntegralEi',\n            'ExpToTrig',\n            'Expand',\n            'ExpandAll',\n            'ExpandDenominator',\n            'ExpandFileName',\n            'ExpandNumerator',\n            'Expectation',\n            'Exponent',\n            'ExponentFunction',\n            'ExponentStep',\n            'ExponentialDistribution',\n            'ExponentialFamily',\n            'ExponentialGeneratingFunction',\n            'ExponentialMovingAverage',\n            'ExponentialPowerDistribution',\n            'Export',\n            'ExportForm',\n            'ExportString',\n            'Expression',\n            'ExpressionCell',\n            'ExtendedGCD',\n            'Extension',\n            'ExtentElementFunction',\n            'ExtentMarkers',\n            'ExtentSize',\n            'ExternalBundle',\n            'ExternalOptions',\n            'ExternalTypeSignature',\n            'Extract',\n            'ExtractArchive',\n            'ExtremeValueDistribution',\n\n            'FARIMAProcess',\n            'FRatioDistribution',\n            'FaceForm',\n            'FaceGrids',\n            'FaceGridsStyle',\n            'Factor',\n            'FactorInteger',\n            'FactorList',\n            'FactorSquareFree',\n            'FactorSquareFreeList',\n            'FactorTerms',\n            'FactorTermsList',\n            'Factorial',\n            'Factorial2',\n            'FactorialMoment',\n            'FactorialMomentGeneratingFunction',\n            'FactorialPower',\n            'Failure',\n            'FailureAction',\n            'FailureDistribution',\n            'FailureQ',\n            'False',\n            'FareySequence',\n            'FeatureDistance',\n            'FeatureExtract',\n            'FeatureExtraction',\n            'FeatureExtractor',\n            'FeatureExtractorFunction',\n            'FeatureNames',\n            'FeatureTypes',\n            'FeedbackLinearize',\n            'FeedbackSector',\n            'FeedbackSectorStyle',\n            'FeedbackType',\n            'FetalGrowthData',\n            'Fibonacci',\n            'Fibonorial',\n            'FieldHint',\n            'FieldHintStyle',\n            'FieldMasked',\n            'FieldSize',\n            'File',\n            'FileBaseName',\n            'FileByteCount',\n            'FileDate',\n            'FileExistsQ',\n            'FileExtension',\n            'FileFormat',\n            'FileHash',\n            'FileNameDepth',\n            'FileNameDrop',\n            'FileNameForms',\n            'FileNameJoin',\n            'FileNameSetter',\n            'FileNameSplit',\n            'FileNameTake',\n            'FileNames',\n            'FilePrint',\n            'FileSystemMap',\n            'FileSystemScan',\n            'FileTemplate',\n            'FileTemplateApply',\n            'FileType',\n            'FilledCurve',\n            'Filling',\n            'FillingStyle',\n            'FillingTransform',\n            'FilterRules',\n            'FinancialBond',\n            'FinancialData',\n            'FinancialDerivative',\n            'FinancialIndicator',\n            'Find',\n            'FindArgMax',\n            'FindArgMin',\n            'FindChannels',\n            'FindClique',\n            'FindClusters',\n            'FindCookies',\n            'FindCurvePath',\n            'FindCycle',\n            'FindDevices',\n            'FindDistribution',\n            'FindDistributionParameters',\n            'FindDivisions',\n            'FindEdgeCover',\n            'FindEdgeCut',\n            'FindEdgeIndependentPaths',\n            'FindEulerianCycle',\n            'FindFaces',\n            'FindFile',\n            'FindFit',\n            'FindFormula',\n            'FindFundamentalCycles',\n            'FindGeneratingFunction',\n            'FindGeoLocation',\n            'FindGeometricTransform',\n            'FindGraphCommunities',\n            'FindGraphIsomorphism',\n            'FindGraphPartition',\n            'FindHamiltonianCycle',\n            'FindHamiltonianPath',\n            'FindHiddenMarkovStates',\n            'FindIndependentEdgeSet',\n            'FindIndependentVertexSet',\n            'FindInstance',\n            'FindIntegerNullVector',\n            'FindKClan',\n            'FindKClique',\n            'FindKClub',\n            'FindKPlex',\n            'FindLibrary',\n            'FindLinearRecurrence',\n            'FindList',\n            'FindMaxValue',\n            'FindMaximum',\n            'FindMaximumFlow',\n            'FindMeshDefects',\n            'FindMinValue',\n            'FindMinimum',\n            'FindMinimumCostFlow',\n            'FindMinimumCut',\n            'FindPath',\n            'FindPeaks',\n            'FindPermutation',\n            'FindPostmanTour',\n            'FindProcessParameters',\n            'FindRoot',\n            'FindSequenceFunction',\n            'FindSettings',\n            'FindShortestPath',\n            'FindShortestTour',\n            'FindSpanningTree',\n            'FindThreshold',\n            'FindTransientRepeat',\n            'FindVertexCover',\n            'FindVertexCut',\n            'FindVertexIndependentPaths',\n            'FinishDynamic',\n            'FiniteAbelianGroupCount',\n            'FiniteGroupCount',\n            'FiniteGroupData',\n            'First',\n            'FirstCase',\n            'FirstPassageTimeDistribution',\n            'FirstPosition',\n            'FischerGroupFi22',\n            'FischerGroupFi23',\n            'FischerGroupFi24Prime',\n            'FisherHypergeometricDistribution',\n            'FisherRatioTest',\n            'FisherZDistribution',\n            'Fit',\n            'FittedModel',\n            'FixedOrder',\n            'FixedPoint',\n            'FixedPointList',\n            'Flat',\n            'FlatTopWindow',\n            'Flatten',\n            'FlattenAt',\n            'FlattenLayer',\n            'FlipView',\n            'Floor',\n            'FlowPolynomial',\n            'Fold',\n            'FoldList',\n            'FoldPair',\n            'FoldPairList',\n            'FollowRedirects',\n            'FontColor',\n            'FontFamily',\n            'FontSize',\n            'FontSlant',\n            'FontSubstitutions',\n            'FontTracking',\n            'FontVariations',\n            'FontWeight',\n            'For',\n            'ForAll',\n            'FormBox',\n            'FormBoxOptions',\n            'FormControl',\n            'FormFunction',\n            'FormLayoutFunction',\n            'FormObject',\n            'FormPage',\n            'Format',\n            'FormatType',\n            'FormulaData',\n            'FormulaLookup',\n            'FortranForm',\n            'Forward',\n            'ForwardBackward',\n            'Fourier',\n            'FourierCoefficient',\n            'FourierCosCoefficient',\n            'FourierCosSeries',\n            'FourierCosTransform',\n            'FourierDCT',\n            'FourierDCTFilter',\n            'FourierDCTMatrix',\n            'FourierDST',\n            'FourierDSTMatrix',\n            'FourierMatrix',\n            'FourierParameters',\n            'FourierSequenceTransform',\n            'FourierSeries',\n            'FourierSinCoefficient',\n            'FourierSinSeries',\n            'FourierSinTransform',\n            'FourierTransform',\n            'FourierTrigSeries',\n            'FractionBox',\n            'FractionBoxOptions',\n            'FractionalBrownianMotionProcess',\n            'FractionalGaussianNoiseProcess',\n            'FractionalPart',\n            'Frame',\n            'FrameBox',\n            'FrameBoxOptions',\n            'FrameLabel',\n            'FrameMargins',\n            'FrameStyle',\n            'FrameTicks',\n            'FrameTicksStyle',\n            'Framed',\n            'FrechetDistribution',\n            'FreeQ',\n            'FrenetSerretSystem',\n            'FrequencySamplingFilterKernel',\n            'FresnelC',\n            'FresnelF',\n            'FresnelG',\n            'FresnelS',\n            'Friday',\n            'FrobeniusNumber',\n            'FrobeniusSolve',\n            'FromCharacterCode',\n            'FromCoefficientRules',\n            'FromContinuedFraction',\n            'FromDMS',\n            'FromDigits',\n            'FromEntity',\n            'FromJulianDate',\n            'FromLetterNumber',\n            'FromPolarCoordinates',\n            'FromRomanNumeral',\n            'FromSphericalCoordinates',\n            'FromUnixTime',\n            'Front',\n            'FrontEndDynamicExpression',\n            'FrontEndEventActions',\n            'FrontEndExecute',\n            'FrontEndToken',\n            'FrontEndTokenExecute',\n            'Full',\n            'FullDefinition',\n            'FullForm',\n            'FullGraphics',\n            'FullInformationOutputRegulator',\n            'FullRegion',\n            'FullSimplify',\n            'Function',\n            'FunctionDomain',\n            'FunctionExpand',\n            'FunctionInterpolation',\n            'FunctionPeriod',\n            'FunctionRange',\n            'FunctionSpace',\n            'FussellVeselyImportance',\n\n            'GARCHProcess',\n            'GCD',\n            'GaborFilter',\n            'GaborMatrix',\n            'GaborWavelet',\n            'GainMargins',\n            'GainPhaseMargins',\n            'GalaxyData',\n            'GalleryView',\n            'Gamma',\n            'GammaDistribution',\n            'GammaRegularized',\n            'GapPenalty',\n            'Gather',\n            'GatherBy',\n            'GaugeFaceElementFunction',\n            'GaugeFaceStyle',\n            'GaugeFrameElementFunction',\n            'GaugeFrameSize',\n            'GaugeFrameStyle',\n            'GaugeLabels',\n            'GaugeMarkers',\n            'GaugeStyle',\n            'GaussianFilter',\n            'GaussianIntegers',\n            'GaussianMatrix',\n            'GaussianOrthogonalMatrixDistribution',\n            'GaussianSymplecticMatrixDistribution',\n            'GaussianUnitaryMatrixDistribution',\n            'GaussianWindow',\n            'GegenbauerC',\n            'General',\n            'GeneralizedLinearModelFit',\n            'GenerateAsymmetricKeyPair',\n            'GenerateConditions',\n            'GenerateDocument',\n            'GenerateHTTPResponse',\n            'GenerateSymmetricKey',\n            'GeneratedCell',\n            'GeneratedDocumentBinding',\n            'GeneratedParameters',\n            'GeneratingFunction',\n            'GeneratorDescription',\n            'GeneratorHistoryLength',\n            'GeneratorOutputType',\n            'GenericCylindricalDecomposition',\n            'GenomeData',\n            'GenomeLookup',\n            'GeoArea',\n            'GeoBackground',\n            'GeoBoundingBox',\n            'GeoBounds',\n            'GeoBoundsRegion',\n            'GeoCenter',\n            'GeoCircle',\n            'GeoDestination',\n            'GeoDirection',\n            'GeoDisk',\n            'GeoDisplacement',\n            'GeoDistance',\n            'GeoDistanceList',\n            'GeoElevationData',\n            'GeoEntities',\n            'GeoGraphics',\n            'GeoGridLines',\n            'GeoGridLinesStyle',\n            'GeoGridPosition',\n            'GeoGroup',\n            'GeoHemisphere',\n            'GeoHemisphereBoundary',\n            'GeoHistogram',\n            'GeoIdentify',\n            'GeoLabels',\n            'GeoLength',\n            'GeoListPlot',\n            'GeoLocation',\n            'GeoMarker',\n            'GeoModel',\n            'GeoNearest',\n            'GeoPath',\n            'GeoPosition',\n            'GeoPositionENU',\n            'GeoPositionXYZ',\n            'GeoProjection',\n            'GeoProjectionData',\n            'GeoRange',\n            'GeoRangePadding',\n            'GeoRegionValuePlot',\n            'GeoScaleBar',\n            'GeoServer',\n            'GeoStyling',\n            'GeoStylingImageFunction',\n            'GeoVariant',\n            'GeoVisibleRegion',\n            'GeoVisibleRegionBoundary',\n            'GeoWithinQ',\n            'GeoZoomLevel',\n            'GeodesicClosing',\n            'GeodesicDilation',\n            'GeodesicErosion',\n            'GeodesicOpening',\n            'GeodesyData',\n            'GeogravityModelData',\n            'GeologicalPeriodData',\n            'GeomagneticModelData',\n            'GeometricBrownianMotionProcess',\n            'GeometricDistribution',\n            'GeometricMean',\n            'GeometricMeanFilter',\n            'GeometricTransformation',\n            'GestureHandler',\n            'Get',\n            'GetEnvironment',\n            'Glaisher',\n            'GlobalClusteringCoefficient',\n            'Glow',\n            'GoldenAngle',\n            'GoldenRatio',\n            'GompertzMakehamDistribution',\n            'GoodmanKruskalGamma',\n            'GoodmanKruskalGammaTest',\n            'Goto',\n            'Grad',\n            'Gradient',\n            'GradientFilter',\n            'GradientOrientationFilter',\n            'GrammarApply',\n            'GrammarRules',\n            'GrammarToken',\n            'Graph',\n            'Graph3D',\n            'GraphAssortativity',\n            'GraphAutomorphismGroup',\n            'GraphCenter',\n            'GraphComplement',\n            'GraphData',\n            'GraphDensity',\n            'GraphDiameter',\n            'GraphDifference',\n            'GraphDisjointUnion',\n            'GraphDistance',\n            'GraphDistanceMatrix',\n            'GraphEmbedding',\n            'GraphHighlight',\n            'GraphHighlightStyle',\n            'GraphHub',\n            'GraphIntersection',\n            'GraphLayout',\n            'GraphLinkEfficiency',\n            'GraphPeriphery',\n            'GraphPlot',\n            'GraphPlot3D',\n            'GraphPower',\n            'GraphPropertyDistribution',\n            'GraphQ',\n            'GraphRadius',\n            'GraphReciprocity',\n            'GraphStyle',\n            'GraphUnion',\n            'Graphics',\n            'Graphics3D',\n            'GraphicsColumn',\n            'GraphicsComplex',\n            'GraphicsGrid',\n            'GraphicsGroup',\n            'GraphicsRow',\n            'Gray',\n            'GrayLevel',\n            'Greater',\n            'GreaterEqual',\n            'GreaterEqualLess',\n            'GreaterEqualThan',\n            'GreaterFullEqual',\n            'GreaterGreater',\n            'GreaterLess',\n            'GreaterSlantEqual',\n            'GreaterThan',\n            'GreaterTilde',\n            'Green',\n            'GreenFunction',\n            'Grid',\n            'GridBox',\n            'GridDefaultElement',\n            'GridGraph',\n            'GridLines',\n            'GridLinesStyle',\n            'GroebnerBasis',\n            'GroupActionBase',\n            'GroupBy',\n            'GroupCentralizer',\n            'GroupElementFromWord',\n            'GroupElementPosition',\n            'GroupElementQ',\n            'GroupElementToWord',\n            'GroupElements',\n            'GroupGenerators',\n            'GroupMultiplicationTable',\n            'GroupOrbits',\n            'GroupOrder',\n            'GroupPageBreakWithin',\n            'GroupSetwiseStabilizer',\n            'GroupStabilizer',\n            'GroupStabilizerChain',\n            'Groupings',\n            'GrowCutComponents',\n            'Gudermannian',\n            'GuidedFilter',\n            'GumbelDistribution',\n\n            'HITSCentrality',\n            'HTTPErrorResponse',\n            'HTTPRedirect',\n            'HTTPRequest',\n            'HTTPRequestData',\n            'HTTPResponse',\n            'HaarWavelet',\n            'HadamardMatrix',\n            'HalfLine',\n            'HalfNormalDistribution',\n            'HalfPlane',\n            'HalfSpace',\n            'HamiltonianGraphQ',\n            'HammingDistance',\n            'HammingWindow',\n            'HandlerFunctions',\n            'HandlerFunctionsKeys',\n            'HankelH1',\n            'HankelH2',\n            'HankelMatrix',\n            'HannPoissonWindow',\n            'HannWindow',\n            'HaradaNortonGroupHN',\n            'HararyGraph',\n            'HarmonicMean',\n            'HarmonicMeanFilter',\n            'HarmonicNumber',\n            'Hash',\n            'Haversine',\n            'HazardFunction',\n            'Head',\n            'HeaderLines',\n            'Heads',\n            'HeavisideLambda',\n            'HeavisidePi',\n            'HeavisideTheta',\n            'HeldGroupHe',\n            'Here',\n            'HermiteDecomposition',\n            'HermiteH',\n            'HermitianMatrixQ',\n            'HessenbergDecomposition',\n            'HexadecimalCharacter',\n            'Hexahedron',\n            'HiddenMarkovProcess',\n            'HighlightGraph',\n            'HighlightImage',\n            'HighlightMesh',\n            'Highlighted',\n            'HighpassFilter',\n            'HigmanSimsGroupHS',\n            'HilbertFilter',\n            'HilbertMatrix',\n            'Histogram',\n            'Histogram3D',\n            'HistogramDistribution',\n            'HistogramList',\n            'HistogramTransform',\n            'HistogramTransformInterpolation',\n            'HistoricalPeriodData',\n            'HitMissTransform',\n            'HodgeDual',\n            'HoeffdingD',\n            'HoeffdingDTest',\n            'Hold',\n            'HoldAll',\n            'HoldAllComplete',\n            'HoldComplete',\n            'HoldFirst',\n            'HoldForm',\n            'HoldPattern',\n            'HoldRest',\n            'HolidayCalendar',\n            'HorizontalGauge',\n            'HornerForm',\n            'HostLookup',\n            'HotellingTSquareDistribution',\n            'HoytDistribution',\n            'Hue',\n            'HumanGrowthData',\n            'HumpDownHump',\n            'HumpEqual',\n            'HurwitzLerchPhi',\n            'HurwitzZeta',\n            'HyperbolicDistribution',\n            'HypercubeGraph',\n            'HyperexponentialDistribution',\n            'Hyperfactorial',\n            'Hypergeometric0F1',\n            'Hypergeometric0F1Regularized',\n            'Hypergeometric1F1',\n            'Hypergeometric1F1Regularized',\n            'Hypergeometric2F1',\n            'Hypergeometric2F1Regularized',\n            'HypergeometricDistribution',\n            'HypergeometricPFQ',\n            'HypergeometricPFQRegularized',\n            'HypergeometricU',\n            'Hyperlink',\n            'Hyperplane',\n            'Hyphenation',\n            'HypoexponentialDistribution',\n            'HypothesisTestData',\n\n            'I',\n            'IPAddress',\n            'IconData',\n            'IconRules',\n            'Identity',\n            'IdentityMatrix',\n            'If',\n            'IgnoreCase',\n            'IgnoreDiacritics',\n            'IgnorePunctuation',\n            'IgnoringInactive',\n            'Im',\n            'Image',\n            'Image3D',\n            'Image3DSlices',\n            'ImageAccumulate',\n            'ImageAdd',\n            'ImageAdjust',\n            'ImageAlign',\n            'ImageApply',\n            'ImageApplyIndexed',\n            'ImageAspectRatio',\n            'ImageAssemble',\n            'ImageCapture',\n            'ImageChannels',\n            'ImageClip',\n            'ImageCollage',\n            'ImageColorSpace',\n            'ImageCompose',\n            'ImageConvolve',\n            'ImageCooccurrence',\n            'ImageCorners',\n            'ImageCorrelate',\n            'ImageCorrespondingPoints',\n            'ImageCrop',\n            'ImageData',\n            'ImageDeconvolve',\n            'ImageDemosaic',\n            'ImageDifference',\n            'ImageDimensions',\n            'ImageDisplacements',\n            'ImageDistance',\n            'ImageEffect',\n            'ImageExposureCombine',\n            'ImageFeatureTrack',\n            'ImageFileApply',\n            'ImageFileFilter',\n            'ImageFileScan',\n            'ImageFilter',\n            'ImageFocusCombine',\n            'ImageForestingComponents',\n            'ImageFormattingWidth',\n            'ImageForwardTransformation',\n            'ImageHistogram',\n            'ImageIdentify',\n            'ImageInstanceQ',\n            'ImageKeypoints',\n            'ImageLevels',\n            'ImageLines',\n            'ImageMargins',\n            'ImageMarker',\n            'ImageMeasurements',\n            'ImageMesh',\n            'ImageMultiply',\n            'ImagePad',\n            'ImagePadding',\n            'ImagePartition',\n            'ImagePeriodogram',\n            'ImagePerspectiveTransformation',\n            'ImageQ',\n            'ImageReflect',\n            'ImageResize',\n            'ImageResolution',\n            'ImageRotate',\n            'ImageSaliencyFilter',\n            'ImageScaled',\n            'ImageScan',\n            'ImageSize',\n            'ImageSizeAction',\n            'ImageSizeMultipliers',\n            'ImageSubtract',\n            'ImageTake',\n            'ImageTransformation',\n            'ImageTrim',\n            'ImageType',\n            'ImageValue',\n            'ImageValuePositions',\n            'ImagingDevice',\n            'ImplicitRegion',\n            'Implies',\n            'Import',\n            'ImportOptions',\n            'ImportString',\n            'ImprovementImportance',\n            'In',\n            'InString',\n            'Inactivate',\n            'Inactive',\n            'IncidenceGraph',\n            'IncidenceList',\n            'IncidenceMatrix',\n            'IncludeConstantBasis',\n            'IncludeGeneratorTasks',\n            'IncludeInflections',\n            'IncludeMetaInformation',\n            'IncludePods',\n            'IncludeQuantities',\n            'IncludeWindowTimes',\n            'Increment',\n            'IndefiniteMatrixQ',\n            'IndependenceTest',\n            'IndependentEdgeSetQ',\n            'IndependentUnit',\n            'IndependentVertexSetQ',\n            'Indeterminate',\n            'IndeterminateThreshold',\n            'IndexGraph',\n            'Indexed',\n            'InexactNumberQ',\n            'InfiniteLine',\n            'InfinitePlane',\n            'Infinity',\n            'Infix',\n            'InflationAdjust',\n            'InflationMethod',\n            'Information',\n            'InheritScope',\n            'Inherited',\n            'InhomogeneousPoissonProcess',\n            'InitialEvaluationHistory',\n            'Initialization',\n            'InitializationCell',\n            'Inner',\n            'Inpaint',\n            'Input',\n            'InputAliases',\n            'InputAssumptions',\n            'InputAutoReplacements',\n            'InputField',\n            'InputForm',\n            'InputNamePacket',\n            'InputNotebook',\n            'InputPacket',\n            'InputStream',\n            'InputString',\n            'InputStringPacket',\n            'Insert',\n            'InsertLinebreaks',\n            'InsertResults',\n            'InsertionFunction',\n            'Inset',\n            'Insphere',\n            'Install',\n            'InstallService',\n            'Integer',\n            'IntegerDigits',\n            'IntegerExponent',\n            'IntegerLength',\n            'IntegerName',\n            'IntegerPart',\n            'IntegerPartitions',\n            'IntegerQ',\n            'IntegerReverse',\n            'IntegerString',\n            'Integers',\n            'Integrate',\n            'Interactive',\n            'InteractiveTradingChart',\n            'Interleaving',\n            'InternallyBalancedDecomposition',\n            'InterpolatingFunction',\n            'InterpolatingPolynomial',\n            'Interpolation',\n            'InterpolationOrder',\n            'InterpolationPoints',\n            'Interpretation',\n            'InterpretationBox',\n            'InterpretationBoxOptions',\n            'Interpreter',\n            'InterquartileRange',\n            'Interrupt',\n            'IntersectingQ',\n            'Intersection',\n            'Interval',\n            'IntervalIntersection',\n            'IntervalMemberQ',\n            'IntervalSlider',\n            'IntervalUnion',\n            'Inverse',\n            'InverseBetaRegularized',\n            'InverseCDF',\n            'InverseChiSquareDistribution',\n            'InverseContinuousWaveletTransform',\n            'InverseDistanceTransform',\n            'InverseEllipticNomeQ',\n            'InverseErf',\n            'InverseErfc',\n            'InverseFourier',\n            'InverseFourierCosTransform',\n            'InverseFourierSequenceTransform',\n            'InverseFourierSinTransform',\n            'InverseFourierTransform',\n            'InverseFunction',\n            'InverseFunctions',\n            'InverseGammaDistribution',\n            'InverseGammaRegularized',\n            'InverseGaussianDistribution',\n            'InverseGudermannian',\n            'InverseHaversine',\n            'InverseJacobiCD',\n            'InverseJacobiCN',\n            'InverseJacobiCS',\n            'InverseJacobiDC',\n            'InverseJacobiDN',\n            'InverseJacobiDS',\n            'InverseJacobiNC',\n            'InverseJacobiND',\n            'InverseJacobiNS',\n            'InverseJacobiSC',\n            'InverseJacobiSD',\n            'InverseJacobiSN',\n            'InverseLaplaceTransform',\n            'InverseMellinTransform',\n            'InversePermutation',\n            'InverseRadon',\n            'InverseSeries',\n            'InverseSurvivalFunction',\n            'InverseTransformedRegion',\n            'InverseWaveletTransform',\n            'InverseWeierstrassP',\n            'InverseWishartMatrixDistribution',\n            'InverseZTransform',\n            'Invisible',\n            'IrreduciblePolynomialQ',\n            'IslandData',\n            'IsolatingInterval',\n            'IsomorphicGraphQ',\n            'IsotopeData',\n            'Italic',\n            'Item',\n            'ItemAspectRatio',\n            'ItemSize',\n            'ItemStyle',\n            'ItoProcess',\n\n            'JaccardDissimilarity',\n            'JacobiAmplitude',\n            'JacobiCD',\n            'JacobiCN',\n            'JacobiCS',\n            'JacobiDC',\n            'JacobiDN',\n            'JacobiDS',\n            'JacobiNC',\n            'JacobiND',\n            'JacobiNS',\n            'JacobiP',\n            'JacobiSC',\n            'JacobiSD',\n            'JacobiSN',\n            'JacobiSymbol',\n            'JacobiZeta',\n            'JankoGroupJ1',\n            'JankoGroupJ2',\n            'JankoGroupJ3',\n            'JankoGroupJ4',\n            'JarqueBeraALMTest',\n            'JohnsonDistribution',\n            'Join',\n            'JoinAcross',\n            'JoinForm',\n            'Joined',\n            'JoinedCurve',\n            'JordanDecomposition',\n            'JordanModelDecomposition',\n            'JuliaSetBoettcher',\n            'JuliaSetIterationCount',\n            'JuliaSetPlot',\n            'JuliaSetPoints',\n            'JulianDate',\n\n            'KCoreComponents',\n            'KDistribution',\n            'KEdgeConnectedComponents',\n            'KEdgeConnectedGraphQ',\n            'KVertexConnectedComponents',\n            'KVertexConnectedGraphQ',\n            'KagiChart',\n            'KaiserBesselWindow',\n            'KaiserWindow',\n            'KalmanEstimator',\n            'KalmanFilter',\n            'KarhunenLoeveDecomposition',\n            'KaryTree',\n            'KatzCentrality',\n            'KelvinBei',\n            'KelvinBer',\n            'KelvinKei',\n            'KelvinKer',\n            'KendallTau',\n            'KendallTauTest',\n            'KernelMixtureDistribution',\n            'KernelObject',\n            'Kernels',\n            'Key',\n            'KeyCollisionFunction',\n            'KeyComplement',\n            'KeyDrop',\n            'KeyDropFrom',\n            'KeyExistsQ',\n            'KeyFreeQ',\n            'KeyIntersection',\n            'KeyMap',\n            'KeyMemberQ',\n            'KeySelect',\n            'KeySort',\n            'KeySortBy',\n            'KeyTake',\n            'KeyUnion',\n            'KeyValueMap',\n            'KeyValuePattern',\n            'KeypointStrength',\n            'Keys',\n            'Khinchin',\n            'KillProcess',\n            'KirchhoffGraph',\n            'KirchhoffMatrix',\n            'KleinInvariantJ',\n            'KnapsackSolve',\n            'KnightTourGraph',\n            'KnotData',\n            'KnownUnitQ',\n            'KolmogorovSmirnovTest',\n            'KroneckerDelta',\n            'KroneckerModelDecomposition',\n            'KroneckerProduct',\n            'KroneckerSymbol',\n            'KuiperTest',\n            'KumaraswamyDistribution',\n            'Kurtosis',\n            'KuwaharaFilter',\n\n            'LABColor',\n            'LCHColor',\n            'LCM',\n            'LQEstimatorGains',\n            'LQGRegulator',\n            'LQOutputRegulatorGains',\n            'LQRegulatorGains',\n            'LUDecomposition',\n            'LUVColor',\n            'Label',\n            'LabelStyle',\n            'Labeled',\n            'LabelingFunction',\n            'LaguerreL',\n            'LakeData',\n            'LambdaComponents',\n            'LaminaData',\n            'LanczosWindow',\n            'LandauDistribution',\n            'Language',\n            'LanguageCategory',\n            'LanguageData',\n            'LanguageIdentify',\n            'LaplaceDistribution',\n            'LaplaceTransform',\n            'Laplacian',\n            'LaplacianFilter',\n            'LaplacianGaussianFilter',\n            'Large',\n            'Larger',\n            'Last',\n            'Latitude',\n            'LatitudeLongitude',\n            'LatticeData',\n            'LatticeReduce',\n            'LaunchKernels',\n            'LayerSizeFunction',\n            'LayeredGraphPlot',\n            'LeaderSize',\n            'LeafCount',\n            'LeapYearQ',\n            'LeastSquares',\n            'LeastSquaresFilterKernel',\n            'Left',\n            'LeftArrow',\n            'LeftArrowBar',\n            'LeftArrowRightArrow',\n            'LeftDownTeeVector',\n            'LeftDownVector',\n            'LeftDownVectorBar',\n            'LeftRightArrow',\n            'LeftRightVector',\n            'LeftTee',\n            'LeftTeeArrow',\n            'LeftTeeVector',\n            'LeftTriangle',\n            'LeftTriangleBar',\n            'LeftTriangleEqual',\n            'LeftUpDownVector',\n            'LeftUpTeeVector',\n            'LeftUpVector',\n            'LeftUpVectorBar',\n            'LeftVector',\n            'LeftVectorBar',\n            'LegendAppearance',\n            'LegendFunction',\n            'LegendLabel',\n            'LegendLayout',\n            'LegendMargins',\n            'LegendMarkerSize',\n            'LegendMarkers',\n            'Legended',\n            'LegendreP',\n            'LegendreQ',\n            'Length',\n            'LengthWhile',\n            'LerchPhi',\n            'Less',\n            'LessEqual',\n            'LessEqualGreater',\n            'LessEqualThan',\n            'LessFullEqual',\n            'LessGreater',\n            'LessLess',\n            'LessSlantEqual',\n            'LessThan',\n            'LessTilde',\n            'LetterCharacter',\n            'LetterCounts',\n            'LetterNumber',\n            'LetterQ',\n            'Level',\n            'LeveneTest',\n            'LeviCivitaTensor',\n            'LevyDistribution',\n            'LibraryDataType',\n            'LibraryFunction',\n            'LibraryFunctionError',\n            'LibraryFunctionInformation',\n            'LibraryFunctionLoad',\n            'LibraryFunctionUnload',\n            'LibraryLoad',\n            'LibraryUnload',\n            'LiftingFilterData',\n            'LiftingWaveletTransform',\n            'LightBlue',\n            'LightBrown',\n            'LightCyan',\n            'LightGray',\n            'LightGreen',\n            'LightMagenta',\n            'LightOrange',\n            'LightPink',\n            'LightPurple',\n            'LightRed',\n            'LightYellow',\n            'Lighter',\n            'Lighting',\n            'LightingAngle',\n            'Likelihood',\n            'Limit',\n            'LimitsPositioning',\n            'LindleyDistribution',\n            'Line',\n            'LineBreakChart',\n            'LineGraph',\n            'LineIndent',\n            'LineIndentMaxFraction',\n            'LineIntegralConvolutionPlot',\n            'LineIntegralConvolutionScale',\n            'LineLegend',\n            'LineSpacing',\n            'LinearFractionalTransform',\n            'LinearGradientImage',\n            'LinearModelFit',\n            'LinearOffsetFunction',\n            'LinearProgramming',\n            'LinearRecurrence',\n            'LinearSolve',\n            'LinearSolveFunction',\n            'LinearizingTransformationData',\n            'LinkActivate',\n            'LinkClose',\n            'LinkConnect',\n            'LinkCreate',\n            'LinkFunction',\n            'LinkInterrupt',\n            'LinkLaunch',\n            'LinkObject',\n            'LinkPatterns',\n            'LinkProtocol',\n            'LinkRankCentrality',\n            'LinkRead',\n            'LinkReadyQ',\n            'LinkWrite',\n            'Links',\n            'LiouvilleLambda',\n            'List',\n            'ListAnimate',\n            'ListContourPlot',\n            'ListContourPlot3D',\n            'ListConvolve',\n            'ListCorrelate',\n            'ListCurvePathPlot',\n            'ListDeconvolve',\n            'ListDensityPlot',\n            'ListDensityPlot3D',\n            'ListFormat',\n            'ListFourierSequenceTransform',\n            'ListInterpolation',\n            'ListLineIntegralConvolutionPlot',\n            'ListLinePlot',\n            'ListLogLinearPlot',\n            'ListLogLogPlot',\n            'ListLogPlot',\n            'ListPicker',\n            'ListPickerBox',\n            'ListPickerBoxOptions',\n            'ListPlay',\n            'ListPlot',\n            'ListPlot3D',\n            'ListPointPlot3D',\n            'ListPolarPlot',\n            'ListQ',\n            'ListSliceContourPlot3D',\n            'ListSliceDensityPlot3D',\n            'ListSliceVectorPlot3D',\n            'ListStepPlot',\n            'ListStreamDensityPlot',\n            'ListStreamPlot',\n            'ListSurfacePlot3D',\n            'ListVectorDensityPlot',\n            'ListVectorPlot',\n            'ListVectorPlot3D',\n            'ListZTransform',\n            'Listable',\n            'LocalAdaptiveBinarize',\n            'LocalCache',\n            'LocalClusteringCoefficient',\n            'LocalObject',\n            'LocalObjects',\n            'LocalSymbol',\n            'LocalTime',\n            'LocalTimeZone',\n            'LocalizeVariables',\n            'LocationEquivalenceTest',\n            'LocationTest',\n            'Locator',\n            'LocatorAutoCreate',\n            'LocatorPane',\n            'LocatorRegion',\n            'Locked',\n            'Log',\n            'Log10',\n            'Log2',\n            'LogBarnesG',\n            'LogGamma',\n            'LogGammaDistribution',\n            'LogIntegral',\n            'LogLikelihood',\n            'LogLinearPlot',\n            'LogLogPlot',\n            'LogLogisticDistribution',\n            'LogMultinormalDistribution',\n            'LogNormalDistribution',\n            'LogPlot',\n            'LogRankTest',\n            'LogSeriesDistribution',\n            'LogicalExpand',\n            'LogisticDistribution',\n            'LogisticSigmoid',\n            'LogitModelFit',\n            'LongLeftArrow',\n            'LongLeftRightArrow',\n            'LongRightArrow',\n            'Longest',\n            'LongestCommonSequence',\n            'LongestCommonSequencePositions',\n            'LongestCommonSubsequence',\n            'LongestCommonSubsequencePositions',\n            'LongestOrderedSequence',\n            'Longitude',\n            'Lookup',\n            'LoopFreeGraphQ',\n            'LowerCaseQ',\n            'LowerLeftArrow',\n            'LowerRightArrow',\n            'LowerTriangularize',\n            'LowpassFilter',\n            'LucasL',\n            'LuccioSamiComponents',\n            'LunarEclipse',\n            'LyapunovSolve',\n            'LyonsGroupLy',\n\n            'MAProcess',\n            'MachineNumberQ',\n            'MachinePrecision',\n            'Magenta',\n            'Magnification',\n            'Magnify',\n            'MailReceiverFunction',\n            'MailResponseFunction',\n            'Majority',\n            'MakeBoxes',\n            'MakeExpression',\n            'ManagedLibraryExpressionID',\n            'ManagedLibraryExpressionQ',\n            'MandelbrotSetBoettcher',\n            'MandelbrotSetDistance',\n            'MandelbrotSetIterationCount',\n            'MandelbrotSetMemberQ',\n            'MandelbrotSetPlot',\n            'MangoldtLambda',\n            'ManhattanDistance',\n            'Manipulate',\n            'Manipulator',\n            'MannWhitneyTest',\n            'MannedSpaceMissionData',\n            'MantissaExponent',\n            'Manual',\n            'Map',\n            'MapAll',\n            'MapAt',\n            'MapIndexed',\n            'MapThread',\n            'MarchenkoPasturDistribution',\n            'MarcumQ',\n            'MardiaCombinedTest',\n            'MardiaKurtosisTest',\n            'MardiaSkewnessTest',\n            'MarginalDistribution',\n            'MarkovProcessProperties',\n            'Masking',\n            'MatchLocalNames',\n            'MatchQ',\n            'MatchingDissimilarity',\n            'MathMLForm',\n            'MathematicalFunctionData',\n            'MathieuC',\n            'MathieuCPrime',\n            'MathieuCharacteristicA',\n            'MathieuCharacteristicB',\n            'MathieuCharacteristicExponent',\n            'MathieuGroupM11',\n            'MathieuGroupM12',\n            'MathieuGroupM22',\n            'MathieuGroupM23',\n            'MathieuGroupM24',\n            'MathieuS',\n            'MathieuSPrime',\n            'Matrices',\n            'MatrixExp',\n            'MatrixForm',\n            'MatrixFunction',\n            'MatrixLog',\n            'MatrixNormalDistribution',\n            'MatrixPlot',\n            'MatrixPower',\n            'MatrixPropertyDistribution',\n            'MatrixQ',\n            'MatrixRank',\n            'MatrixTDistribution',\n            'Max',\n            'MaxCellMeasure',\n            'MaxDetect',\n            'MaxExtraBandwidths',\n            'MaxExtraConditions',\n            'MaxFeatureDisplacement',\n            'MaxFeatures',\n            'MaxFilter',\n            'MaxItems',\n            'MaxIterations',\n            'MaxMemoryUsed',\n            'MaxMixtureKernels',\n            'MaxPlotPoints',\n            'MaxRecursion',\n            'MaxStableDistribution',\n            'MaxStepFraction',\n            'MaxStepSize',\n            'MaxSteps',\n            'MaxTrainingRounds',\n            'MaxValue',\n            'MaxWordGap',\n            'MaximalBy',\n            'Maximize',\n            'MaxwellDistribution',\n            'McLaughlinGroupMcL',\n            'Mean',\n            'MeanAbsoluteLossLayer',\n            'MeanClusteringCoefficient',\n            'MeanDegreeConnectivity',\n            'MeanDeviation',\n            'MeanFilter',\n            'MeanGraphDistance',\n            'MeanNeighborDegree',\n            'MeanShift',\n            'MeanShiftFilter',\n            'MeanSquaredLossLayer',\n            'Median',\n            'MedianDeviation',\n            'MedianFilter',\n            'MedicalTestData',\n            'Medium',\n            'MeijerG',\n            'MeijerGReduce',\n            'MeixnerDistribution',\n            'MellinConvolve',\n            'MellinTransform',\n            'MemberQ',\n            'MemoryConstrained',\n            'MemoryConstraint',\n            'MemoryInUse',\n            'MenuCommandKey',\n            'MenuPacket',\n            'MenuSortingValue',\n            'MenuStyle',\n            'MenuView',\n            'Merge',\n            'MersennePrimeExponent',\n            'MersennePrimeExponentQ',\n            'Mesh',\n            'MeshCellCentroid',\n            'MeshCellCount',\n            'MeshCellHighlight',\n            'MeshCellIndex',\n            'MeshCellLabel',\n            'MeshCellMarker',\n            'MeshCellMeasure',\n            'MeshCellQuality',\n            'MeshCellShapeFunction',\n            'MeshCellStyle',\n            'MeshCells',\n            'MeshCoordinates',\n            'MeshFunctions',\n            'MeshPrimitives',\n            'MeshQualityGoal',\n            'MeshRefinementFunction',\n            'MeshRegion',\n            'MeshRegionQ',\n            'MeshShading',\n            'MeshStyle',\n            'Message',\n            'MessageDialog',\n            'MessageList',\n            'MessageName',\n            'MessagePacket',\n            'Messages',\n            'MetaInformation',\n            'MeteorShowerData',\n            'Method',\n            'MexicanHatWavelet',\n            'MeyerWavelet',\n            'Min',\n            'MinColorDistance',\n            'MinDetect',\n            'MinFilter',\n            'MinIntervalSize',\n            'MinMax',\n            'MinStableDistribution',\n            'MinValue',\n            'MineralData',\n            'MinimalBy',\n            'MinimalPolynomial',\n            'MinimalStateSpaceModel',\n            'Minimize',\n            'MinimumTimeIncrement',\n            'MinkowskiQuestionMark',\n            'MinorPlanetData',\n            'Minors',\n            'Minus',\n            'MinusPlus',\n            'Missing',\n            'MissingBehavior',\n            'MissingDataMethod',\n            'MissingDataRules',\n            'MissingQ',\n            'MissingString',\n            'MissingStyle',\n            'MittagLefflerE',\n            'MixedGraphQ',\n            'MixedMagnitude',\n            'MixedRadix',\n            'MixedRadixQuantity',\n            'MixedUnit',\n            'MixtureDistribution',\n            'Mod',\n            'Modal',\n            'ModularLambda',\n            'Module',\n            'Modulus',\n            'MoebiusMu',\n            'Moment',\n            'MomentConvert',\n            'MomentEvaluate',\n            'MomentGeneratingFunction',\n            'MomentOfInertia',\n            'Monday',\n            'Monitor',\n            'MonomialList',\n            'MonsterGroupM',\n            'MoonPhase',\n            'MoonPosition',\n            'MorletWavelet',\n            'MorphologicalBinarize',\n            'MorphologicalBranchPoints',\n            'MorphologicalComponents',\n            'MorphologicalEulerNumber',\n            'MorphologicalGraph',\n            'MorphologicalPerimeter',\n            'MorphologicalTransform',\n            'MortalityData',\n            'Most',\n            'MountainData',\n            'MouseAnnotation',\n            'MouseAppearance',\n            'MousePosition',\n            'Mouseover',\n            'MovieData',\n            'MovingAverage',\n            'MovingMap',\n            'MovingMedian',\n            'MoyalDistribution',\n            'Multicolumn',\n            'MultiedgeStyle',\n            'MultigraphQ',\n            'Multinomial',\n            'MultinomialDistribution',\n            'MultinormalDistribution',\n            'MultiplicativeOrder',\n            'Multiselection',\n            'MultivariateHypergeometricDistribution',\n            'MultivariatePoissonDistribution',\n            'MultivariateTDistribution',\n\n            'N',\n            'NArgMax',\n            'NArgMin',\n            'NCache',\n            'NDEigensystem',\n            'NDEigenvalues',\n            'NDSolve',\n            'NDSolveValue',\n            'NExpectation',\n            'NHoldAll',\n            'NHoldFirst',\n            'NHoldRest',\n            'NIntegrate',\n            'NMaxValue',\n            'NMaximize',\n            'NMinValue',\n            'NMinimize',\n            'NProbability',\n            'NProduct',\n            'NRoots',\n            'NSolve',\n            'NSum',\n            'NakagamiDistribution',\n            'NameQ',\n            'Names',\n            'Nand',\n            'Nearest',\n            'NearestFunction',\n            'NearestNeighborGraph',\n            'NebulaData',\n            'NeedlemanWunschSimilarity',\n            'Needs',\n            'Negative',\n            'NegativeBinomialDistribution',\n            'NegativeDefiniteMatrixQ',\n            'NegativeMultinomialDistribution',\n            'NegativeSemidefiniteMatrixQ',\n            'NeighborhoodData',\n            'NeighborhoodGraph',\n            'Nest',\n            'NestGraph',\n            'NestList',\n            'NestWhile',\n            'NestWhileList',\n            'NestedGreaterGreater',\n            'NestedLessLess',\n            'NetChain',\n            'NetDecoder',\n            'NetEncoder',\n            'NetExtract',\n            'NetGraph',\n            'NetInitialize',\n            'NetPort',\n            'NetTrain',\n            'NeumannValue',\n            'NevilleThetaC',\n            'NevilleThetaD',\n            'NevilleThetaN',\n            'NevilleThetaS',\n            'NextCell',\n            'NextPrime',\n            'NextScheduledTaskTime',\n            'NicholsGridLines',\n            'NicholsPlot',\n            'NightHemisphere',\n            'NoWhitespace',\n            'NominalVariables',\n            'NonCommutativeMultiply',\n            'NonConstants',\n            'NonNegative',\n            'NonPositive',\n            'NoncentralBetaDistribution',\n            'NoncentralChiSquareDistribution',\n            'NoncentralFRatioDistribution',\n            'NoncentralStudentTDistribution',\n            'None',\n            'NoneTrue',\n            'NonlinearModelFit',\n            'NonlinearStateSpaceModel',\n            'NonlocalMeansFilter',\n            'Nor',\n            'NorlundB',\n            'Norm',\n            'NormFunction',\n            'Normal',\n            'NormalDistribution',\n            'NormalMatrixQ',\n            'Normalize',\n            'Normalized',\n            'NormalizedSquaredEuclideanDistance',\n            'NormalsFunction',\n            'Not',\n            'NotCongruent',\n            'NotCupCap',\n            'NotDoubleVerticalBar',\n            'NotElement',\n            'NotEqualTilde',\n            'NotExists',\n            'NotGreater',\n            'NotGreaterEqual',\n            'NotGreaterFullEqual',\n            'NotGreaterGreater',\n            'NotGreaterLess',\n            'NotGreaterSlantEqual',\n            'NotGreaterTilde',\n            'NotHumpDownHump',\n            'NotHumpEqual',\n            'NotLeftTriangle',\n            'NotLeftTriangleBar',\n            'NotLeftTriangleEqual',\n            'NotLess',\n            'NotLessEqual',\n            'NotLessFullEqual',\n            'NotLessGreater',\n            'NotLessLess',\n            'NotLessSlantEqual',\n            'NotLessTilde',\n            'NotNestedGreaterGreater',\n            'NotNestedLessLess',\n            'NotPrecedes',\n            'NotPrecedesEqual',\n            'NotPrecedesSlantEqual',\n            'NotPrecedesTilde',\n            'NotReverseElement',\n            'NotRightTriangle',\n            'NotRightTriangleBar',\n            'NotRightTriangleEqual',\n            'NotSquareSubset',\n            'NotSquareSubsetEqual',\n            'NotSquareSuperset',\n            'NotSquareSupersetEqual',\n            'NotSubset',\n            'NotSubsetEqual',\n            'NotSucceeds',\n            'NotSucceedsEqual',\n            'NotSucceedsSlantEqual',\n            'NotSucceedsTilde',\n            'NotSuperset',\n            'NotSupersetEqual',\n            'NotTilde',\n            'NotTildeEqual',\n            'NotTildeFullEqual',\n            'NotTildeTilde',\n            'NotVerticalBar',\n            'Notebook',\n            'NotebookApply',\n            'NotebookAutoSave',\n            'NotebookClose',\n            'NotebookDelete',\n            'NotebookDirectory',\n            'NotebookDynamicExpression',\n            'NotebookEvaluate',\n            'NotebookEventActions',\n            'NotebookFileName',\n            'NotebookFind',\n            'NotebookGet',\n            'NotebookImport',\n            'NotebookInformation',\n            'NotebookLocate',\n            'NotebookObject',\n            'NotebookOpen',\n            'NotebookPrint',\n            'NotebookPut',\n            'NotebookRead',\n            'NotebookSave',\n            'NotebookSelection',\n            'NotebookTemplate',\n            'NotebookWrite',\n            'Notebooks',\n            'Nothing',\n            'NotificationFunction',\n            'Now',\n            'NuclearExplosionData',\n            'NuclearReactorData',\n            'Null',\n            'NullRecords',\n            'NullSpace',\n            'NullWords',\n            'Number',\n            'NumberCompose',\n            'NumberDecompose',\n            'NumberExpand',\n            'NumberFieldClassNumber',\n            'NumberFieldDiscriminant',\n            'NumberFieldFundamentalUnits',\n            'NumberFieldIntegralBasis',\n            'NumberFieldNormRepresentatives',\n            'NumberFieldRegulator',\n            'NumberFieldRootsOfUnity',\n            'NumberFieldSignature',\n            'NumberForm',\n            'NumberFormat',\n            'NumberLinePlot',\n            'NumberMarks',\n            'NumberMultiplier',\n            'NumberPadding',\n            'NumberPoint',\n            'NumberQ',\n            'NumberSeparator',\n            'NumberSigns',\n            'NumberString',\n            'Numerator',\n            'NumericFunction',\n            'NumericQ',\n            'NuttallWindow',\n            'NyquistGridLines',\n            'NyquistPlot',\n\n            'O',\n            'ONanGroupON',\n            'ObservabilityGramian',\n            'ObservabilityMatrix',\n            'ObservableDecomposition',\n            'ObservableModelQ',\n            'OceanData',\n            'OddQ',\n            'Off',\n            'Offset',\n            'On',\n            'Once',\n            'OneIdentity',\n            'Opacity',\n            'OpacityFunction',\n            'OpacityFunctionScaling',\n            'OpenAppend',\n            'OpenRead',\n            'OpenWrite',\n            'Opener',\n            'OpenerView',\n            'Opening',\n            'Operate',\n            'OperatingSystem',\n            'OptimumFlowData',\n            'OptionValue',\n            'Optional',\n            'OptionalElement',\n            'Options',\n            'OptionsPattern',\n            'Or',\n            'Orange',\n            'Order',\n            'OrderDistribution',\n            'OrderedQ',\n            'Ordering',\n            'Orderless',\n            'OrderlessPatternSequence',\n            'OrnsteinUhlenbeckProcess',\n            'OrthogonalMatrixQ',\n            'Orthogonalize',\n            'Out',\n            'Outer',\n            'OutputControllabilityMatrix',\n            'OutputControllableModelQ',\n            'OutputForm',\n            'OutputNamePacket',\n            'OutputResponse',\n            'OutputSizeLimit',\n            'OutputStream',\n            'OverBar',\n            'OverDot',\n            'OverHat',\n            'OverTilde',\n            'OverVector',\n            'Overflow',\n            'Overlaps',\n            'Overlay',\n            'Overscript',\n            'OverscriptBox',\n            'OverscriptBoxOptions',\n            'OverwriteTarget',\n            'OwenT',\n            'OwnValues',\n\n            'PDF',\n            'PERTDistribution',\n            'PIDData',\n            'PIDDerivativeFilter',\n            'PIDFeedforward',\n            'PIDTune',\n            'PackingMethod',\n            'PadLeft',\n            'PadRight',\n            'PaddedForm',\n            'Padding',\n            'PaddingSize',\n            'PadeApproximant',\n            'PageBreakAbove',\n            'PageBreakBelow',\n            'PageBreakWithin',\n            'PageFooters',\n            'PageHeaders',\n            'PageRankCentrality',\n            'PageTheme',\n            'PageWidth',\n            'Pagination',\n            'PairedBarChart',\n            'PairedHistogram',\n            'PairedSmoothHistogram',\n            'PairedTTest',\n            'PairedZTest',\n            'PaletteNotebook',\n            'PalindromeQ',\n            'Pane',\n            'PaneSelector',\n            'Panel',\n            'Paneled',\n            'ParabolicCylinderD',\n            'ParagraphIndent',\n            'ParagraphSpacing',\n            'ParallelArray',\n            'ParallelCombine',\n            'ParallelDo',\n            'ParallelEvaluate',\n            'ParallelMap',\n            'ParallelNeeds',\n            'ParallelProduct',\n            'ParallelSubmit',\n            'ParallelSum',\n            'ParallelTable',\n            'ParallelTry',\n            'Parallelepiped',\n            'Parallelization',\n            'Parallelize',\n            'Parallelogram',\n            'ParameterEstimator',\n            'ParameterMixtureDistribution',\n            'ParametricFunction',\n            'ParametricNDSolve',\n            'ParametricNDSolveValue',\n            'ParametricPlot',\n            'ParametricPlot3D',\n            'ParametricRegion',\n            'ParentBox',\n            'ParentCell',\n            'ParentDirectory',\n            'ParentNotebook',\n            'ParetoDistribution',\n            'ParkData',\n            'Part',\n            'PartBehavior',\n            'PartOfSpeech',\n            'PartProtection',\n            'PartialCorrelationFunction',\n            'ParticleAcceleratorData',\n            'ParticleData',\n            'Partition',\n            'PartitionGranularity',\n            'PartitionsP',\n            'PartitionsQ',\n            'ParzenWindow',\n            'PascalDistribution',\n            'PassEventsDown',\n            'PassEventsUp',\n            'Paste',\n            'PasteButton',\n            'Path',\n            'PathGraph',\n            'PathGraphQ',\n            'Pattern',\n            'PatternSequence',\n            'PatternTest',\n            'PaulWavelet',\n            'PauliMatrix',\n            'Pause',\n            'PeakDetect',\n            'PearsonChiSquareTest',\n            'PearsonCorrelationTest',\n            'PearsonDistribution',\n            'PerfectNumber',\n            'PerfectNumberQ',\n            'PerformanceGoal',\n            'PeriodicBoundaryCondition',\n            'Periodogram',\n            'PeriodogramArray',\n            'Permanent',\n            'Permissions',\n            'PermissionsGroup',\n            'PermissionsGroups',\n            'PermissionsKey',\n            'PermissionsKeys',\n            'PermutationCycles',\n            'PermutationCyclesQ',\n            'PermutationGroup',\n            'PermutationLength',\n            'PermutationList',\n            'PermutationListQ',\n            'PermutationMax',\n            'PermutationMin',\n            'PermutationOrder',\n            'PermutationPower',\n            'PermutationProduct',\n            'PermutationReplace',\n            'PermutationSupport',\n            'Permutations',\n            'Permute',\n            'PeronaMalikFilter',\n            'PersonData',\n            'PetersenGraph',\n            'PhaseMargins',\n            'PhaseRange',\n            'PhysicalSystemData',\n            'Pi',\n            'Pick',\n            'PieChart',\n            'PieChart3D',\n            'Piecewise',\n            'PiecewiseExpand',\n            'PillaiTrace',\n            'PillaiTraceTest',\n            'PingTime',\n            'Pink',\n            'PixelConstrained',\n            'PixelValue',\n            'PixelValuePositions',\n            'Placed',\n            'Placeholder',\n            'PlaceholderReplace',\n            'Plain',\n            'PlanarGraph',\n            'PlanarGraphQ',\n            'PlanckRadiationLaw',\n            'PlaneCurveData',\n            'PlanetData',\n            'PlanetaryMoonData',\n            'PlantData',\n            'Play',\n            'PlayRange',\n            'Plot',\n            'Plot3D',\n            'PlotLabel',\n            'PlotLabels',\n            'PlotLayout',\n            'PlotLegends',\n            'PlotMarkers',\n            'PlotPoints',\n            'PlotRange',\n            'PlotRangeClipping',\n            'PlotRangePadding',\n            'PlotRegion',\n            'PlotStyle',\n            'PlotTheme',\n            'Pluralize',\n            'Plus',\n            'PlusMinus',\n            'Pochhammer',\n            'PodStates',\n            'PodWidth',\n            'Point',\n            'PointFigureChart',\n            'PointLegend',\n            'PointSize',\n            'PoissonConsulDistribution',\n            'PoissonDistribution',\n            'PoissonProcess',\n            'PoissonWindow',\n            'PolarAxes',\n            'PolarAxesOrigin',\n            'PolarGridLines',\n            'PolarPlot',\n            'PolarTicks',\n            'PoleZeroMarkers',\n            'PolyGamma',\n            'PolyLog',\n            'PolyaAeppliDistribution',\n            'Polygon',\n            'PolygonalNumber',\n            'PolyhedronData',\n            'PolynomialExtendedGCD',\n            'PolynomialGCD',\n            'PolynomialLCM',\n            'PolynomialMod',\n            'PolynomialQ',\n            'PolynomialQuotient',\n            'PolynomialQuotientRemainder',\n            'PolynomialReduce',\n            'PolynomialRemainder',\n            'PoolingLayer',\n            'PopupMenu',\n            'PopupView',\n            'PopupWindow',\n            'Position',\n            'PositionIndex',\n            'Positive',\n            'PositiveDefiniteMatrixQ',\n            'PositiveSemidefiniteMatrixQ',\n            'PossibleZeroQ',\n            'Postfix',\n            'Power',\n            'PowerDistribution',\n            'PowerExpand',\n            'PowerMod',\n            'PowerModList',\n            'PowerRange',\n            'PowerSpectralDensity',\n            'PowerSymmetricPolynomial',\n            'PowersRepresentations',\n            'PreDecrement',\n            'PreIncrement',\n            'PrecedenceForm',\n            'Precedes',\n            'PrecedesEqual',\n            'PrecedesSlantEqual',\n            'PrecedesTilde',\n            'Precision',\n            'PrecisionGoal',\n            'Predict',\n            'PredictorFunction',\n            'PredictorInformation',\n            'PredictorMeasurements',\n            'PredictorMeasurementsObject',\n            'PreemptProtect',\n            'Prefix',\n            'Prepend',\n            'PrependTo',\n            'PreserveImageOptions',\n            'PreviousCell',\n            'PriceGraphDistribution',\n            'Prime',\n            'PrimeNu',\n            'PrimeOmega',\n            'PrimePi',\n            'PrimePowerQ',\n            'PrimeQ',\n            'PrimeZetaP',\n            'Primes',\n            'PrimitiveRoot',\n            'PrimitiveRootList',\n            'PrincipalComponents',\n            'PrincipalValue',\n            'Print',\n            'PrintTemporary',\n            'PrintableASCIIQ',\n            'PrintingStyleEnvironment',\n            'Printout3D',\n            'Printout3DPreviewer',\n            'Prism',\n            'PrivateCellOptions',\n            'PrivateFontOptions',\n            'PrivateKey',\n            'PrivateNotebookOptions',\n            'Probability',\n            'ProbabilityDistribution',\n            'ProbabilityPlot',\n            'ProbabilityScalePlot',\n            'ProbitModelFit',\n            'ProcessConnection',\n            'ProcessDirectory',\n            'ProcessEnvironment',\n            'ProcessEstimator',\n            'ProcessInformation',\n            'ProcessObject',\n            'ProcessParameterAssumptions',\n            'ProcessParameterQ',\n            'ProcessStatus',\n            'Processes',\n            'Product',\n            'ProductDistribution',\n            'ProductLog',\n            'ProgressIndicator',\n            'Projection',\n            'Prolog',\n            'Properties',\n            'Property',\n            'PropertyList',\n            'PropertyValue',\n            'Proportion',\n            'Proportional',\n            'Protect',\n            'Protected',\n            'ProteinData',\n            'Pruning',\n            'PseudoInverse',\n            'PublicKey',\n            'PulsarData',\n            'PunctuationCharacter',\n            'Purple',\n            'Put',\n            'PutAppend',\n            'Pyramid',\n\n            'QBinomial',\n            'QFactorial',\n            'QGamma',\n            'QHypergeometricPFQ',\n            'QPochhammer',\n            'QPolyGamma',\n            'QRDecomposition',\n            'QuadraticIrrationalQ',\n            'Quantile',\n            'QuantilePlot',\n            'Quantity',\n            'QuantityArray',\n            'QuantityDistribution',\n            'QuantityForm',\n            'QuantityMagnitude',\n            'QuantityQ',\n            'QuantityUnit',\n            'QuantityVariable',\n            'QuantityVariableCanonicalUnit',\n            'QuantityVariableDimensions',\n            'QuantityVariableIdentifier',\n            'QuantityVariablePhysicalQuantity',\n            'Quartics',\n            'QuartileDeviation',\n            'QuartileSkewness',\n            'Quartiles',\n            'Query',\n            'QueueProperties',\n            'QueueingNetworkProcess',\n            'QueueingProcess',\n            'Quiet',\n            'Quit',\n            'Quotient',\n            'QuotientRemainder',\n\n            'RGBColor',\n            'RSolve',\n            'RSolveValue',\n            'RadialGradientImage',\n            'RadialityCentrality',\n            'RadicalBox',\n            'RadicalBoxOptions',\n            'RadioButton',\n            'RadioButtonBar',\n            'Radon',\n            'RamanujanTau',\n            'RamanujanTauL',\n            'RamanujanTauTheta',\n            'RamanujanTauZ',\n            'Ramp',\n            'RandomChoice',\n            'RandomColor',\n            'RandomComplex',\n            'RandomEntity',\n            'RandomFunction',\n            'RandomGraph',\n            'RandomImage',\n            'RandomInteger',\n            'RandomPermutation',\n            'RandomPoint',\n            'RandomPrime',\n            'RandomReal',\n            'RandomSample',\n            'RandomVariate',\n            'RandomWalkProcess',\n            'RandomWord',\n            'Range',\n            'RangeFilter',\n            'RankedMax',\n            'RankedMin',\n            'Raster',\n            'Raster3D',\n            'RasterSize',\n            'Rasterize',\n            'Rational',\n            'Rationalize',\n            'Rationals',\n            'Ratios',\n            'RawBoxes',\n            'RawData',\n            'RayleighDistribution',\n            'Re',\n            'ReIm',\n            'Read',\n            'ReadLine',\n            'ReadList',\n            'ReadProtected',\n            'ReadString',\n            'Real',\n            'RealBlockDiagonalForm',\n            'RealDigits',\n            'RealExponent',\n            'Reals',\n            'Reap',\n            'RecognitionPrior',\n            'RecognitionThreshold',\n            'Record',\n            'RecordLists',\n            'RecordSeparators',\n            'Rectangle',\n            'RectangleChart',\n            'RectangleChart3D',\n            'RecurrenceFilter',\n            'RecurrenceTable',\n            'Red',\n            'Reduce',\n            'ReferenceLineStyle',\n            'Refine',\n            'ReflectionMatrix',\n            'ReflectionTransform',\n            'Refresh',\n            'RefreshRate',\n            'RegionBinarize',\n            'RegionBoundary',\n            'RegionBounds',\n            'RegionCentroid',\n            'RegionDifference',\n            'RegionDimension',\n            'RegionDistance',\n            'RegionDistanceFunction',\n            'RegionEmbeddingDimension',\n            'RegionFunction',\n            'RegionIntersection',\n            'RegionMeasure',\n            'RegionMember',\n            'RegionMemberFunction',\n            'RegionMoment',\n            'RegionNearest',\n            'RegionNearestFunction',\n            'RegionPlot',\n            'RegionPlot3D',\n            'RegionProduct',\n            'RegionQ',\n            'RegionResize',\n            'RegionSize',\n            'RegionSymmetricDifference',\n            'RegionUnion',\n            'RegularExpression',\n            'RegularPolygon',\n            'Regularization',\n            'RegularlySampledQ',\n            'RelationGraph',\n            'ReleaseHold',\n            'ReliabilityDistribution',\n            'ReliefImage',\n            'ReliefPlot',\n            'Remove',\n            'RemoveAlphaChannel',\n            'RemoveAsynchronousTask',\n            'RemoveBackground',\n            'RemoveChannelListener',\n            'RemoveDiacritics',\n            'RemoveInputStreamMethod',\n            'RemoveOutputStreamMethod',\n            'RemoveProperty',\n            'RemoveScheduledTask',\n            'RemoveUsers',\n            'RenameDirectory',\n            'RenameFile',\n            'RenewalProcess',\n            'RenkoChart',\n            'RepairMesh',\n            'Repeated',\n            'RepeatedNull',\n            'RepeatedTiming',\n            'RepeatingElement',\n            'Replace',\n            'ReplaceAll',\n            'ReplaceImageValue',\n            'ReplaceList',\n            'ReplacePart',\n            'ReplacePixelValue',\n            'ReplaceRepeated',\n            'RequiredPhysicalQuantities',\n            'Resampling',\n            'ResamplingAlgorithmData',\n            'ResamplingMethod',\n            'Rescale',\n            'RescalingTransform',\n            'ResetDirectory',\n            'ResetScheduledTask',\n            'ReshapeLayer',\n            'Residue',\n            'Resolve',\n            'ResourceData',\n            'ResourceObject',\n            'ResourceRemove',\n            'ResourceSearch',\n            'ResponseForm',\n            'Rest',\n            'RestartInterval',\n            'Restricted',\n            'Resultant',\n            'Return',\n            'ReturnExpressionPacket',\n            'ReturnPacket',\n            'ReturnReceiptFunction',\n            'ReturnTextPacket',\n            'Reverse',\n            'ReverseBiorthogonalSplineWavelet',\n            'ReverseElement',\n            'ReverseEquilibrium',\n            'ReverseGraph',\n            'ReverseUpEquilibrium',\n            'RevolutionAxis',\n            'RevolutionPlot3D',\n            'RiccatiSolve',\n            'RiceDistribution',\n            'RidgeFilter',\n            'RiemannR',\n            'RiemannSiegelTheta',\n            'RiemannSiegelZ',\n            'RiemannXi',\n            'Riffle',\n            'Right',\n            'RightArrow',\n            'RightArrowBar',\n            'RightArrowLeftArrow',\n            'RightComposition',\n            'RightCosetRepresentative',\n            'RightDownTeeVector',\n            'RightDownVector',\n            'RightDownVectorBar',\n            'RightTee',\n            'RightTeeArrow',\n            'RightTeeVector',\n            'RightTriangle',\n            'RightTriangleBar',\n            'RightTriangleEqual',\n            'RightUpDownVector',\n            'RightUpTeeVector',\n            'RightUpVector',\n            'RightUpVectorBar',\n            'RightVector',\n            'RightVectorBar',\n            'RiskAchievementImportance',\n            'RiskReductionImportance',\n            'RogersTanimotoDissimilarity',\n            'RollPitchYawAngles',\n            'RollPitchYawMatrix',\n            'RomanNumeral',\n            'Root',\n            'RootApproximant',\n            'RootIntervals',\n            'RootLocusPlot',\n            'RootMeanSquare',\n            'RootOfUnityQ',\n            'RootReduce',\n            'RootSum',\n            'Roots',\n            'Rotate',\n            'RotateLabel',\n            'RotateLeft',\n            'RotateRight',\n            'RotationAction',\n            'RotationMatrix',\n            'RotationTransform',\n            'Round',\n            'RoundingRadius',\n            'Row',\n            'RowAlignments',\n            'RowBox',\n            'RowLines',\n            'RowMinHeight',\n            'RowReduce',\n            'RowSpacings',\n            'RowsEqual',\n            'RudinShapiro',\n            'RudvalisGroupRu',\n            'Rule',\n            'RuleDelayed',\n            'RulePlot',\n            'Run',\n            'RunProcess',\n            'RunScheduledTask',\n            'RunThrough',\n            'RuntimeAttributes',\n            'RuntimeOptions',\n            'RussellRaoDissimilarity',\n\n            'SARIMAProcess',\n            'SARMAProcess',\n            'SASTriangle',\n            'SSSTriangle',\n            'SameQ',\n            'SameTest',\n            'SampleDepth',\n            'SampleRate',\n            'SampledSoundFunction',\n            'SampledSoundList',\n            'SamplingPeriod',\n            'SatelliteData',\n            'SatisfiabilityCount',\n            'SatisfiabilityInstances',\n            'SatisfiableQ',\n            'Saturday',\n            'Save',\n            'SaveDefinitions',\n            'SavitzkyGolayMatrix',\n            'SawtoothWave',\n            'Scale',\n            'ScaleDivisions',\n            'ScaleOrigin',\n            'ScalePadding',\n            'ScaleRangeStyle',\n            'ScaleRanges',\n            'Scaled',\n            'ScalingFunctions',\n            'ScalingMatrix',\n            'ScalingTransform',\n            'Scan',\n            'ScheduledTask',\n            'ScheduledTaskActiveQ',\n            'ScheduledTaskInformation',\n            'ScheduledTaskObject',\n            'ScheduledTasks',\n            'SchurDecomposition',\n            'ScientificForm',\n            'ScorerGi',\n            'ScorerGiPrime',\n            'ScorerHi',\n            'ScorerHiPrime',\n            'ScreenStyleEnvironment',\n            'ScriptBaselineShifts',\n            'ScriptMinSize',\n            'ScriptSizeMultipliers',\n            'ScrollPosition',\n            'Scrollbars',\n            'ScrollingOptions',\n            'SearchAdjustment',\n            'SearchIndexObject',\n            'SearchIndices',\n            'SearchQueryString',\n            'SearchResultObject',\n            'Sec',\n            'Sech',\n            'SechDistribution',\n            'SectorChart',\n            'SectorChart3D',\n            'SectorOrigin',\n            'SectorSpacing',\n            'SeedRandom',\n            'Select',\n            'SelectComponents',\n            'SelectFirst',\n            'Selectable',\n            'SelectedCells',\n            'SelectedNotebook',\n            'SelectionCreateCell',\n            'SelectionEvaluate',\n            'SelectionEvaluateCreateCell',\n            'SelectionMove',\n            'SelfLoopStyle',\n            'SemanticImport',\n            'SemanticImportString',\n            'SemanticInterpretation',\n            'SemialgebraicComponentInstances',\n            'SendMail',\n            'SendMessage',\n            'Sequence',\n            'SequenceAlignment',\n            'SequenceCases',\n            'SequenceCount',\n            'SequenceFold',\n            'SequenceFoldList',\n            'SequenceHold',\n            'SequencePosition',\n            'Series',\n            'SeriesCoefficient',\n            'SeriesData',\n            'ServiceConnect',\n            'ServiceDisconnect',\n            'ServiceExecute',\n            'ServiceObject',\n            'SessionTime',\n            'Set',\n            'SetAccuracy',\n            'SetAlphaChannel',\n            'SetAttributes',\n            'SetCloudDirectory',\n            'SetCookies',\n            'SetDelayed',\n            'SetDirectory',\n            'SetEnvironment',\n            'SetFileDate',\n            'SetOptions',\n            'SetPermissions',\n            'SetPrecision',\n            'SetProperty',\n            'SetSelectedNotebook',\n            'SetSharedFunction',\n            'SetSharedVariable',\n            'SetStreamPosition',\n            'SetSystemOptions',\n            'SetUsers',\n            'Setter',\n            'SetterBar',\n            'Setting',\n            'Shallow',\n            'ShannonWavelet',\n            'ShapiroWilkTest',\n            'Share',\n            'Sharpen',\n            'ShearingMatrix',\n            'ShearingTransform',\n            'ShellRegion',\n            'ShenCastanMatrix',\n            'ShiftRegisterSequence',\n            'ShiftedGompertzDistribution',\n            'Short',\n            'ShortDownArrow',\n            'ShortLeftArrow',\n            'ShortRightArrow',\n            'ShortUpArrow',\n            'Shortest',\n            'ShortestPathFunction',\n            'Show',\n            'ShowAutoSpellCheck',\n            'ShowAutoStyles',\n            'ShowCellBracket',\n            'ShowCellLabel',\n            'ShowCellTags',\n            'ShowCursorTracker',\n            'ShowGroupOpener',\n            'ShowPageBreaks',\n            'ShowSelection',\n            'ShowSpecialCharacters',\n            'ShowStringCharacters',\n            'ShrinkingDelay',\n            'SiderealTime',\n            'SiegelTheta',\n            'SiegelTukeyTest',\n            'Sign',\n            'SignPadding',\n            'SignTest',\n            'Signature',\n            'SignedRankTest',\n            'SignedRegionDistance',\n            'SignificanceLevel',\n            'SimilarityRules',\n            'SimpleGraph',\n            'SimpleGraphQ',\n            'Simplex',\n            'Simplify',\n            'Sin',\n            'SinIntegral',\n            'Sinc',\n            'SinghMaddalaDistribution',\n            'SingleLetterItalics',\n            'SingularValueDecomposition',\n            'SingularValueList',\n            'SingularValuePlot',\n            'Sinh',\n            'SinhIntegral',\n            'SixJSymbol',\n            'Skeleton',\n            'SkeletonTransform',\n            'SkellamDistribution',\n            'SkewNormalDistribution',\n            'Skewness',\n            'SkinStyle',\n            'Skip',\n            'SliceContourPlot3D',\n            'SliceDensityPlot3D',\n            'SliceDistribution',\n            'SliceVectorPlot3D',\n            'SlideView',\n            'Slider',\n            'Slider2D',\n            'Slot',\n            'SlotSequence',\n            'Small',\n            'SmallCircle',\n            'Smaller',\n            'SmithDecomposition',\n            'SmithDelayCompensator',\n            'SmithWatermanSimilarity',\n            'SmoothDensityHistogram',\n            'SmoothHistogram',\n            'SmoothHistogram3D',\n            'SmoothKernelDistribution',\n            'Snippet',\n            'SocialMediaData',\n            'SocketConnect',\n            'SocketObject',\n            'SoftmaxLayer',\n            'SokalSneathDissimilarity',\n            'SolarEclipse',\n            'SolarSystemFeatureData',\n            'SolidData',\n            'SolidRegionQ',\n            'Solve',\n            'SolveAlways',\n            'Sort',\n            'SortBy',\n            'Sound',\n            'SoundNote',\n            'SoundVolume',\n            'SourceLink',\n            'Sow',\n            'SpaceCurveData',\n            'Spacer',\n            'Spacings',\n            'Span',\n            'SpanFromAbove',\n            'SpanFromBoth',\n            'SpanFromLeft',\n            'SparseArray',\n            'SpatialGraphDistribution',\n            'Speak',\n            'SpearmanRankTest',\n            'SpearmanRho',\n            'SpeciesData',\n            'SpecificityGoal',\n            'Spectrogram',\n            'SpectrogramArray',\n            'Specularity',\n            'SpellingCorrection',\n            'SpellingCorrectionList',\n            'SpellingOptions',\n            'Sphere',\n            'SphericalBesselJ',\n            'SphericalBesselY',\n            'SphericalHankelH1',\n            'SphericalHankelH2',\n            'SphericalHarmonicY',\n            'SphericalPlot3D',\n            'SphericalRegion',\n            'SphericalShell',\n            'SpheroidalEigenvalue',\n            'SpheroidalJoiningFactor',\n            'SpheroidalPS',\n            'SpheroidalPSPrime',\n            'SpheroidalQS',\n            'SpheroidalQSPrime',\n            'SpheroidalRadialFactor',\n            'SpheroidalS1',\n            'SpheroidalS1Prime',\n            'SpheroidalS2',\n            'SpheroidalS2Prime',\n            'SplicedDistribution',\n            'SplineClosed',\n            'SplineDegree',\n            'SplineKnots',\n            'SplineWeights',\n            'Split',\n            'SplitBy',\n            'SpokenString',\n            'Sqrt',\n            'SqrtBox',\n            'SqrtBoxOptions',\n            'Square',\n            'SquareFreeQ',\n            'SquareIntersection',\n            'SquareMatrixQ',\n            'SquareSubset',\n            'SquareSubsetEqual',\n            'SquareSuperset',\n            'SquareSupersetEqual',\n            'SquareUnion',\n            'SquareWave',\n            'SquaredEuclideanDistance',\n            'SquaresR',\n            'StabilityMargins',\n            'StabilityMarginsStyle',\n            'StableDistribution',\n            'Stack',\n            'StackBegin',\n            'StackComplete',\n            'StackInhibit',\n            'StadiumShape',\n            'StandardAtmosphereData',\n            'StandardDeviation',\n            'StandardDeviationFilter',\n            'StandardForm',\n            'StandardOceanData',\n            'Standardize',\n            'Standardized',\n            'StandbyDistribution',\n            'Star',\n            'StarClusterData',\n            'StarData',\n            'StarGraph',\n            'StartAsynchronousTask',\n            'StartOfLine',\n            'StartOfString',\n            'StartProcess',\n            'StartScheduledTask',\n            'StartingStepSize',\n            'StateFeedbackGains',\n            'StateOutputEstimator',\n            'StateResponse',\n            'StateSpaceModel',\n            'StateSpaceRealization',\n            'StateSpaceTransform',\n            'StateTransformationLinearize',\n            'StationaryDistribution',\n            'StationaryWaveletPacketTransform',\n            'StationaryWaveletTransform',\n            'StatusArea',\n            'StatusCentrality',\n            'StepMonitor',\n            'StieltjesGamma',\n            'StirlingS1',\n            'StirlingS2',\n            'StopAsynchronousTask',\n            'StopScheduledTask',\n            'StoppingPowerData',\n            'StrataVariables',\n            'StratonovichProcess',\n            'StreamColorFunction',\n            'StreamColorFunctionScaling',\n            'StreamDensityPlot',\n            'StreamPlot',\n            'StreamPoints',\n            'StreamPosition',\n            'StreamScale',\n            'StreamStyle',\n            'Streams',\n            'String',\n            'StringCases',\n            'StringContainsQ',\n            'StringCount',\n            'StringDelete',\n            'StringDrop',\n            'StringEndsQ',\n            'StringExpression',\n            'StringExtract',\n            'StringForm',\n            'StringFormat',\n            'StringFreeQ',\n            'StringInsert',\n            'StringJoin',\n            'StringLength',\n            'StringMatchQ',\n            'StringPadLeft',\n            'StringPadRight',\n            'StringPart',\n            'StringPartition',\n            'StringPosition',\n            'StringQ',\n            'StringRepeat',\n            'StringReplace',\n            'StringReplaceList',\n            'StringReplacePart',\n            'StringReverse',\n            'StringRiffle',\n            'StringRotateLeft',\n            'StringRotateRight',\n            'StringSkeleton',\n            'StringSplit',\n            'StringStartsQ',\n            'StringTake',\n            'StringTemplate',\n            'StringToStream',\n            'StringTrim',\n            'StripBoxes',\n            'StripOnInput',\n            'StripWrapperBoxes',\n            'StructuralImportance',\n            'StructuredArray',\n            'StructuredSelection',\n            'StruveH',\n            'StruveL',\n            'Stub',\n            'StudentTDistribution',\n            'Style',\n            'StyleBox',\n            'StyleData',\n            'StyleDefinitions',\n            'SubMinus',\n            'SubPlus',\n            'SubStar',\n            'Subdivide',\n            'Subfactorial',\n            'Subgraph',\n            'SubresultantPolynomialRemainders',\n            'SubresultantPolynomials',\n            'Subresultants',\n            'Subscript',\n            'SubscriptBox',\n            'SubscriptBoxOptions',\n            'Subsequences',\n            'Subset',\n            'SubsetEqual',\n            'SubsetQ',\n            'Subsets',\n            'SubstitutionSystem',\n            'Subsuperscript',\n            'SubsuperscriptBox',\n            'SubsuperscriptBoxOptions',\n            'Subtract',\n            'SubtractFrom',\n            'Succeeds',\n            'SucceedsEqual',\n            'SucceedsSlantEqual',\n            'SucceedsTilde',\n            'SuchThat',\n            'Sum',\n            'SumConvergence',\n            'SummationLayer',\n            'SunPosition',\n            'Sunday',\n            'Sunrise',\n            'Sunset',\n            'SuperDagger',\n            'SuperMinus',\n            'SuperPlus',\n            'SuperStar',\n            'SupernovaData',\n            'Superscript',\n            'SuperscriptBox',\n            'SuperscriptBoxOptions',\n            'Superset',\n            'SupersetEqual',\n            'Surd',\n            'SurfaceData',\n            'SurvivalDistribution',\n            'SurvivalFunction',\n            'SurvivalModel',\n            'SurvivalModelFit',\n            'SuzukiDistribution',\n            'SuzukiGroupSuz',\n            'SwatchLegend',\n            'Switch',\n            'Symbol',\n            'SymbolName',\n            'SymletWavelet',\n            'Symmetric',\n            'SymmetricGroup',\n            'SymmetricKey',\n            'SymmetricMatrixQ',\n            'SymmetricPolynomial',\n            'SymmetricReduction',\n            'Symmetrize',\n            'SymmetrizedArray',\n            'SymmetrizedArrayRules',\n            'SymmetrizedDependentComponents',\n            'SymmetrizedIndependentComponents',\n            'SymmetrizedReplacePart',\n            'SynchronousInitialization',\n            'SynchronousUpdating',\n            'SyntaxForm',\n            'SyntaxInformation',\n            'SyntaxLength',\n            'SyntaxPacket',\n            'SyntaxQ',\n            'SystemDialogInput',\n            'SystemInformation',\n            'SystemOpen',\n            'SystemOptions',\n            'SystemsModelDelay',\n            'SystemsModelDelayApproximate',\n            'SystemsModelDelete',\n            'SystemsModelDimensions',\n            'SystemsModelExtract',\n            'SystemsModelFeedbackConnect',\n            'SystemsModelLabels',\n            'SystemsModelLinearity',\n            'SystemsModelMerge',\n            'SystemsModelOrder',\n            'SystemsModelParallelConnect',\n            'SystemsModelSeriesConnect',\n            'SystemsModelStateFeedbackConnect',\n            'SystemsModelVectorRelativeOrders',\n\n            'TTest',\n            'TabView',\n            'Table',\n            'TableAlignments',\n            'TableDepth',\n            'TableDirections',\n            'TableForm',\n            'TableHeadings',\n            'TableSpacing',\n            'TagBox',\n            'TagBoxOptions',\n            'TagSet',\n            'TagSetDelayed',\n            'TagUnset',\n            'TaggingRules',\n            'Take',\n            'TakeDrop',\n            'TakeLargest',\n            'TakeLargestBy',\n            'TakeSmallest',\n            'TakeSmallestBy',\n            'TakeWhile',\n            'Tally',\n            'Tan',\n            'Tanh',\n            'TargetDevice',\n            'TargetFunctions',\n            'TargetUnits',\n            'TautologyQ',\n            'TeXForm',\n            'TelegraphProcess',\n            'TemplateApply',\n            'TemplateBox',\n            'TemplateBoxOptions',\n            'TemplateExpression',\n            'TemplateIf',\n            'TemplateObject',\n            'TemplateSequence',\n            'TemplateSlot',\n            'TemplateWith',\n            'TemporalData',\n            'TemporalRegularity',\n            'Temporary',\n            'TensorContract',\n            'TensorDimensions',\n            'TensorExpand',\n            'TensorProduct',\n            'TensorRank',\n            'TensorReduce',\n            'TensorSymmetry',\n            'TensorTranspose',\n            'TensorWedge',\n            'TestID',\n            'TestReport',\n            'TestReportObject',\n            'TestResultObject',\n            'Tetrahedron',\n            'Text',\n            'TextAlignment',\n            'TextCases',\n            'TextCell',\n            'TextClipboardType',\n            'TextData',\n            'TextElement',\n            'TextGrid',\n            'TextJustification',\n            'TextPacket',\n            'TextPosition',\n            'TextRecognize',\n            'TextSearch',\n            'TextSearchReport',\n            'TextSentences',\n            'TextString',\n            'TextStructure',\n            'TextWords',\n            'Texture',\n            'TextureCoordinateFunction',\n            'TextureCoordinateScaling',\n            'Therefore',\n            'ThermodynamicData',\n            'ThermometerGauge',\n            'Thick',\n            'Thickness',\n            'Thin',\n            'Thinning',\n            'ThompsonGroupTh',\n            'Thread',\n            'ThreeJSymbol',\n            'Threshold',\n            'Through',\n            'Throw',\n            'ThueMorse',\n            'Thumbnail',\n            'Thursday',\n            'Ticks',\n            'TicksStyle',\n            'Tilde',\n            'TildeEqual',\n            'TildeFullEqual',\n            'TildeTilde',\n            'TimeConstrained',\n            'TimeConstraint',\n            'TimeDirection',\n            'TimeFormat',\n            'TimeObject',\n            'TimeObjectQ',\n            'TimeSeries',\n            'TimeSeriesAggregate',\n            'TimeSeriesForecast',\n            'TimeSeriesInsert',\n            'TimeSeriesInvertibility',\n            'TimeSeriesMap',\n            'TimeSeriesMapThread',\n            'TimeSeriesModel',\n            'TimeSeriesModelFit',\n            'TimeSeriesResample',\n            'TimeSeriesRescale',\n            'TimeSeriesShift',\n            'TimeSeriesThread',\n            'TimeSeriesWindow',\n            'TimeUsed',\n            'TimeValue',\n            'TimeZone',\n            'TimeZoneConvert',\n            'TimeZoneOffset',\n            'TimelinePlot',\n            'Times',\n            'TimesBy',\n            'Timing',\n            'Tiny',\n            'TitsGroupT',\n            'ToBoxes',\n            'ToCharacterCode',\n            'ToContinuousTimeModel',\n            'ToDiscreteTimeModel',\n            'ToEntity',\n            'ToExpression',\n            'ToInvertibleTimeSeries',\n            'ToLowerCase',\n            'ToNumberField',\n            'ToPolarCoordinates',\n            'ToRadicals',\n            'ToRules',\n            'ToSphericalCoordinates',\n            'ToString',\n            'ToUpperCase',\n            'Today',\n            'ToeplitzMatrix',\n            'Together',\n            'Toggler',\n            'TogglerBar',\n            'TokenWords',\n            'Tolerance',\n            'Tomorrow',\n            'Tooltip',\n            'TooltipDelay',\n            'TooltipStyle',\n            'Top',\n            'TopHatTransform',\n            'TopologicalSort',\n            'Total',\n            'TotalLayer',\n            'TotalVariationFilter',\n            'TotalWidth',\n            'TouchPosition',\n            'TouchscreenAutoZoom',\n            'TouchscreenControlPlacement',\n            'Tr',\n            'Trace',\n            'TraceAbove',\n            'TraceBackward',\n            'TraceDepth',\n            'TraceDialog',\n            'TraceForward',\n            'TraceOff',\n            'TraceOn',\n            'TraceOriginal',\n            'TracePrint',\n            'TraceScan',\n            'TrackedSymbols',\n            'TrackingFunction',\n            'TracyWidomDistribution',\n            'TradingChart',\n            'TraditionalForm',\n            'TransferFunctionCancel',\n            'TransferFunctionExpand',\n            'TransferFunctionFactor',\n            'TransferFunctionModel',\n            'TransferFunctionPoles',\n            'TransferFunctionTransform',\n            'TransferFunctionZeros',\n            'TransformationClass',\n            'TransformationFunction',\n            'TransformationFunctions',\n            'TransformationMatrix',\n            'TransformedDistribution',\n            'TransformedField',\n            'TransformedProcess',\n            'TransformedRegion',\n            'TransitionDirection',\n            'TransitionDuration',\n            'TransitionEffect',\n            'TransitiveClosureGraph',\n            'TransitiveReductionGraph',\n            'Translate',\n            'TranslationOptions',\n            'TranslationTransform',\n            'Transliterate',\n            'Transparent',\n            'Transpose',\n            'TravelDirections',\n            'TravelDirectionsData',\n            'TravelDistance',\n            'TravelDistanceList',\n            'TravelMethod',\n            'TravelTime',\n            'TreeForm',\n            'TreeGraph',\n            'TreeGraphQ',\n            'TreePlot',\n            'TrendStyle',\n            'Triangle',\n            'TriangleWave',\n            'TriangularDistribution',\n            'TriangulateMesh',\n            'Trig',\n            'TrigExpand',\n            'TrigFactor',\n            'TrigFactorList',\n            'TrigReduce',\n            'TrigToExp',\n            'Trigger',\n            'TrimmedMean',\n            'TropicalStormData',\n            'True',\n            'TrueQ',\n            'TruncatedDistribution',\n            'TsallisQExponentialDistribution',\n            'TsallisQGaussianDistribution',\n            'Tube',\n            'Tuesday',\n            'TukeyLambdaDistribution',\n            'TukeyWindow',\n            'TunnelData',\n            'Tuples',\n            'TuranGraph',\n            'TuringMachine',\n            'TuttePolynomial',\n\n            'URL',\n            'URLBuild',\n            'URLDecode',\n            'URLDispatcher',\n            'URLDownload',\n            'URLEncode',\n            'URLExecute',\n            'URLExpand',\n            'URLParse',\n            'URLQueryDecode',\n            'URLQueryEncode',\n            'URLRead',\n            'URLSaveAsynchronous',\n            'URLShorten',\n            'URLSubmit',\n            'UnateQ',\n            'Uncompress',\n            'Undefined',\n            'UnderBar',\n            'Underflow',\n            'Underlined',\n            'Underoverscript',\n            'UnderoverscriptBox',\n            'UnderoverscriptBoxOptions',\n            'Underscript',\n            'UnderscriptBox',\n            'UnderscriptBoxOptions',\n            'UnderseaFeatureData',\n            'UndirectedEdge',\n            'UndirectedGraph',\n            'UndirectedGraphQ',\n            'UndoOptions',\n            'UndoTrackedVariables',\n            'Unequal',\n            'UnequalTo',\n            'Unevaluated',\n            'UniformDistribution',\n            'UniformGraphDistribution',\n            'UniformSumDistribution',\n            'Uninstall',\n            'Union',\n            'UnionPlus',\n            'Unique',\n            'UnitBox',\n            'UnitConvert',\n            'UnitDimensions',\n            'UnitRootTest',\n            'UnitSimplify',\n            'UnitStep',\n            'UnitSystem',\n            'UnitTriangle',\n            'UnitVector',\n            'UnitaryMatrixQ',\n            'Unitize',\n            'UnityDimensions',\n            'UniverseModelData',\n            'UniversityData',\n            'UnixTime',\n            'Unprotect',\n            'UnsameQ',\n            'UnsavedVariables',\n            'Unset',\n            'UnsetShared',\n            'UpArrow',\n            'UpArrowBar',\n            'UpArrowDownArrow',\n            'UpDownArrow',\n            'UpEquilibrium',\n            'UpSet',\n            'UpSetDelayed',\n            'UpTee',\n            'UpTeeArrow',\n            'UpTo',\n            'UpValues',\n            'Update',\n            'UpdateInterval',\n            'UpdateSearchIndex',\n            'UpperCaseQ',\n            'UpperLeftArrow',\n            'UpperRightArrow',\n            'UpperTriangularize',\n            'Upsample',\n            'UsingFrontEnd',\n            'UtilityFunction',\n\n            'ValidationLength',\n            'ValidationSet',\n            'ValueDimensions',\n            'ValueQ',\n            'Values',\n            'Variables',\n            'Variance',\n            'VarianceEquivalenceTest',\n            'VarianceEstimatorFunction',\n            'VarianceGammaDistribution',\n            'VarianceTest',\n            'VectorAngle',\n            'VectorColorFunction',\n            'VectorColorFunctionScaling',\n            'VectorDensityPlot',\n            'VectorPlot',\n            'VectorPlot3D',\n            'VectorPoints',\n            'VectorQ',\n            'VectorScale',\n            'VectorStyle',\n            'Vectors',\n            'Vee',\n            'Verbatim',\n            'VerificationTest',\n            'VerifyConvergence',\n            'VerifySecurityCertificates',\n            'VerifySolutions',\n            'VerifyTestAssumptions',\n            'VertexAdd',\n            'VertexCapacity',\n            'VertexColors',\n            'VertexComponent',\n            'VertexConnectivity',\n            'VertexContract',\n            'VertexCoordinateRules',\n            'VertexCoordinates',\n            'VertexCorrelationSimilarity',\n            'VertexCosineSimilarity',\n            'VertexCount',\n            'VertexCoverQ',\n            'VertexDataCoordinates',\n            'VertexDegree',\n            'VertexDelete',\n            'VertexDiceSimilarity',\n            'VertexEccentricity',\n            'VertexInComponent',\n            'VertexInDegree',\n            'VertexIndex',\n            'VertexJaccardSimilarity',\n            'VertexLabelStyle',\n            'VertexLabeling',\n            'VertexLabels',\n            'VertexList',\n            'VertexNormals',\n            'VertexOutComponent',\n            'VertexOutDegree',\n            'VertexQ',\n            'VertexRenderingFunction',\n            'VertexReplace',\n            'VertexShape',\n            'VertexShapeFunction',\n            'VertexSize',\n            'VertexStyle',\n            'VertexTextureCoordinates',\n            'VertexWeight',\n            'VerticalBar',\n            'VerticalGauge',\n            'VerticalSeparator',\n            'VerticalSlider',\n            'VerticalTilde',\n            'ViewAngle',\n            'ViewCenter',\n            'ViewMatrix',\n            'ViewPoint',\n            'ViewRange',\n            'ViewVector',\n            'ViewVertical',\n            'Visible',\n            'VoigtDistribution',\n            'VolcanoData',\n            'Volume',\n            'VonMisesDistribution',\n            'VoronoiMesh',\n\n            'WaitAll',\n            'WaitAsynchronousTask',\n            'WaitNext',\n            'WakebyDistribution',\n            'WalleniusHypergeometricDistribution',\n            'WaringYuleDistribution',\n            'WarpingCorrespondence',\n            'WarpingDistance',\n            'WatershedComponents',\n            'WatsonUSquareTest',\n            'WattsStrogatzGraphDistribution',\n            'WaveletBestBasis',\n            'WaveletFilterCoefficients',\n            'WaveletImagePlot',\n            'WaveletListPlot',\n            'WaveletMapIndexed',\n            'WaveletMatrixPlot',\n            'WaveletPhi',\n            'WaveletPsi',\n            'WaveletScale',\n            'WaveletScalogram',\n            'WaveletThreshold',\n            'WeakStationarity',\n            'WeaklyConnectedComponents',\n            'WeaklyConnectedGraphComponents',\n            'WeaklyConnectedGraphQ',\n            'WeatherData',\n            'WeatherForecastData',\n            'WeberE',\n            'Wedge',\n            'Wednesday',\n            'WeibullDistribution',\n            'WeierstrassHalfPeriods',\n            'WeierstrassInvariants',\n            'WeierstrassP',\n            'WeierstrassPPrime',\n            'WeierstrassSigma',\n            'WeierstrassZeta',\n            'WeightedAdjacencyGraph',\n            'WeightedAdjacencyMatrix',\n            'WeightedData',\n            'WeightedGraphQ',\n            'Weights',\n            'WelchWindow',\n            'WheelGraph',\n            'WhenEvent',\n            'Which',\n            'While',\n            'White',\n            'WhiteNoiseProcess',\n            'WhitePoint',\n            'Whitespace',\n            'WhitespaceCharacter',\n            'WhittakerM',\n            'WhittakerW',\n            'WienerFilter',\n            'WienerProcess',\n            'WignerD',\n            'WignerSemicircleDistribution',\n            'WikipediaData',\n            'WikipediaSearch',\n            'WilksW',\n            'WilksWTest',\n            'WindDirectionData',\n            'WindSpeedData',\n            'WindVectorData',\n            'WindowClickSelect',\n            'WindowElements',\n            'WindowFloating',\n            'WindowFrame',\n            'WindowMargins',\n            'WindowMovable',\n            'WindowOpacity',\n            'WindowSize',\n            'WindowStatusArea',\n            'WindowTitle',\n            'WindowToolbars',\n            'WishartMatrixDistribution',\n            'With',\n            'WolframAlpha',\n            'WolframLanguageData',\n            'Word',\n            'WordBoundary',\n            'WordCharacter',\n            'WordCloud',\n            'WordCount',\n            'WordCounts',\n            'WordData',\n            'WordDefinition',\n            'WordFrequency',\n            'WordFrequencyData',\n            'WordList',\n            'WordOrientation',\n            'WordSearch',\n            'WordSeparators',\n            'WordSpacings',\n            'WordStem',\n            'WordTranslation',\n            'WorkingPrecision',\n            'WrapAround',\n            'Write',\n            'WriteLine',\n            'WriteString',\n            'Wronskian',\n\n            'XMLElement',\n            'XMLObject',\n            'XMLTemplate',\n            'XYZColor',\n            'Xnor',\n            'Xor',\n\n            'Yellow',\n            'Yesterday',\n            'YuleDissimilarity',\n\n            'ZIPCodeData',\n            'ZTest',\n            'ZTransform',\n            'ZernikeR',\n            'ZeroSymmetric',\n            'ZeroTest',\n            'Zeta',\n            'ZoomCenter',\n            'ZetaZero',\n            'ZipfDistribution',\n            'ZoomFactor'\n        )\n    ),\n    'CASE_SENSITIVE' => array(\n        1 => true\n    ),\n    'SYMBOLS' => array(\n        1 => array(\n            '@', '//', '/@', '@@', '@@@', '#', '&', //functions\n            '=', ':=', '+=', '-=', '*=', '/=', //assignments\n            '^', '+' ,'-', '/', '*', '>', '<', '%', //math\n            '||', '&&', //logic\n            '/.', '/;', '->', ':>' //rules\n        ),\n        2 => array( // Wolfram\n            '$Aborted',\n            '$AllowExternalChannelFunctions',\n            '$AssertFunction',\n            '$Assumptions',\n            '$AsynchronousTask',\n            '$AudioOutputDevices',\n\n            '$BaseDirectory',\n            '$BatchInput',\n            '$BatchOutput',\n            '$ByteOrdering',\n\n            '$CacheBaseDirectory',\n            '$Canceled',\n            '$ChannelBase',\n            '$CharacterEncoding',\n            '$CharacterEncodings',\n            '$CloudBase',\n            '$CloudConnected',\n            '$CloudCreditsAvailable',\n            '$CloudEvaluation',\n            '$CloudExpressionBase',\n            '$CloudRootDirectory',\n            '$CloudSymbolBase',\n            '$CommandLine',\n            '$CompilationTarget',\n            '$ConfiguredKernels',\n            '$Context',\n            '$ContextPath',\n            '$ControlActiveSetting',\n            '$CookieStore',\n            '$Cookies',\n            '$CreationDate',\n            '$CurrentLink',\n\n            '$DateStringFormat',\n            '$DefaultAudioOutputDevice',\n            '$DefaultImagingDevice',\n            '$DefaultLocalBase',\n            '$Display',\n            '$DisplayFunction',\n            '$DistributedContexts',\n            '$DynamicEvaluation',\n\n            '$Echo',\n            '$EmbedCodeEnvironments',\n            '$EmbeddableServices',\n            '$EntityStores',\n            '$Epilog',\n            '$EvaluationCloudObject',\n            '$EvaluationEnvironment',\n            '$ExportFormats',\n\n            '$Failed',\n            '$FontFamilies',\n            '$FrontEnd',\n            '$FrontEndSession',\n\n            '$GeoLocation',\n            '$GeoLocationCity',\n            '$GeoLocationCountry',\n            '$GeoLocationSource',\n\n            '$HistoryLength',\n            '$HomeDirectory',\n\n            '$IgnoreEOF',\n            '$ImageFormattingWidth',\n            '$ImagingDevice',\n            '$ImagingDevices',\n            '$ImportFormats',\n            '$InitialDirectory',\n            '$Input',\n            '$InputFileName',\n            '$InputStreamMethods',\n            '$Inspector',\n            '$InstallationDirectory',\n            '$InterpreterTypes',\n            '$IterationLimit',\n\n            '$KernelCount',\n            '$KernelID',\n\n            '$Language',\n            '$LibraryPath',\n            '$LicenseExpirationDate',\n            '$LicenseID',\n            '$LicenseServer',\n            '$Line',\n            '$Linked',\n            '$LocalBase',\n            '$LocalSymbolBase',\n\n            '$MachineAddresses',\n            '$MachineDomains',\n            '$MachineEpsilon',\n            '$MachineID',\n            '$MachineName',\n            '$MachinePrecision',\n            '$MachineType',\n            '$MaxExtraPrecision',\n            '$MaxMachineNumber',\n            '$MaxNumber',\n            '$MaxPiecewiseCases',\n            '$MaxPrecision',\n            '$MaxRootDegree',\n            '$MessageGroups',\n            '$MessageList',\n            '$MessagePrePrint',\n            '$Messages',\n            '$MinMachineNumber',\n            '$MinNumber',\n            '$MinPrecision',\n            '$ModuleNumber',\n\n            '$NewMessage',\n            '$NewSymbol',\n            '$Notebooks',\n            '$NumberMarks',\n\n            '$OperatingSystem',\n            '$Output',\n            '$OutputSizeLimit',\n            '$OutputStreamMethods',\n\n            '$Packages',\n            '$ParentLink',\n            '$ParentProcessID',\n            '$Path',\n            '$PathnameSeparator',\n            '$PerformanceGoal',\n            '$Permissions',\n            '$PlotTheme',\n            '$Post',\n            '$Pre',\n            '$PrePrint',\n            '$PreRead',\n            '$Printout3DPreviewer',\n            '$ProcessID',\n            '$ProcessorCount',\n            '$ProcessorType',\n\n            '$RecursionLimit',\n            '$ReleaseNumber',\n            '$RequesterAddress',\n            '$RequesterWolframID',\n            '$RequesterWolframUUID',\n            '$RootDirectory',\n\n            '$ScheduledTask',\n            '$ScriptCommandLine',\n            '$ScriptInputString',\n            '$Services',\n            '$SessionID',\n            '$SharedFunctions',\n            '$SharedVariables',\n            '$SoundDisplayFunction',\n            '$SourceLink',\n            '$SynchronousEvaluation',\n            '$SyntaxHandler',\n            '$System',\n            '$SystemCharacterEncoding',\n            '$SystemID',\n            '$SystemShell',\n            '$SystemTimeZone',\n            '$SystemWordLength',\n\n            '$TemplatePath',\n            '$TemporaryDirectory',\n            '$TimeUnit',\n            '$TimeZone',\n            '$TimeZoneEntity',\n            '$TimedOut',\n\n            '$UnitSystem',\n            '$Urgent',\n            '$UserAgentString',\n            '$UserBaseDirectory',\n            '$UserDocumentsDirectory',\n            '$UserName',\n\n            '$Version',\n            '$VersionNumber',\n\n            '$WolframID',\n            '$WolframUUID',\n        ),\n        3 => array( // array stuff\n            '{', '}', '[[', ']]', '<|', '|>'\n        ),\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #FF7700; font-weight: bold;',\n        ),\n        'COMMENTS' => array(\n            'MULTI' => 'color: #999999; font-style: italic;',\n        ),\n        'ESCAPE_CHAR' => array(\n            1 => '',\n        ),\n        'BRACKETS' => array(),\n        'STRINGS' => array(\n            1 => 'color: #666666; font-style: italic;',\n        ),\n        'NUMBERS' => array(\n        ),\n        'METHODS' => array(),\n        'SYMBOLS' => array(\n            1 => 'color: #133CAC; font-weight: bold;',\n            2 => 'color: #028E9B; font-weight: bold;',\n            3 => 'color: #FFAD00; font-weight: bold;',\n        ),\n        //'BRACKETS' => array(\n        //0 => 'color: #8C0953; font-weight: bold;', // array\n        //),\n        'REGEXPS' => array(\n            0 => 'color: #133CAC; font-weight: bold;',\n        ),\n        'SCRIPT' => array()\n    ),\n    'URLS' => array(\n        1 => 'http://reference.wolfram.com/language/ref/{FNAME}.html'\n    ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        0 => '#[1-9][0-9]*'\n    ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/matlab.php",
    "content": "<?php\n/*************************************************************************************\n * matlab.php\n * -----------\n * Author: Florian Knorn (floz@gmx.de)\n * Copyright: (c) 2004 Florian Knorn (http://www.florian-knorn.com)\n * Release Version: 1.0.9.1\n * Date Started: 2005/02/09\n *\n * Matlab M-file language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2006-03-25 (1.0.7.22)\n *   - support for the transpose operator\n *   - many keywords added\n *   - links to the matlab documentation at mathworks\n *      by: Olivier Verdier (olivier.verdier@free.fr)\n * 2005/05/07 (1.0.0)\n *   -  First Release\n *\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Matlab M',\n    'COMMENT_SINGLE' => array(1 => '%'),\n    'COMMENT_MULTI' => array(),\n    //Matlab Strings\n    'COMMENT_REGEXP' => array(\n        2 => \"/(?<![\\\\w\\\\)\\\\]\\\\}\\\\.])('[^\\\\n']*?')/\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'break', 'case', 'catch', 'classdef', 'continue', 'elseif', 'else', 'end', 'for',\n            'function', 'global', 'if', 'otherwise', 'persistent', 'return',\n            'switch', 'try', 'while'\n            ),\n        2 => array(\n            'all','any','exist','is','logical','mislocked',\n\n            'abs','acos','acosh','acot','acoth','acsc','acsch','airy','angle',\n            'ans','area','arrayfun','asec','asech','asin','asinh','atan','atan2','atanh',\n            'auread','autumn','auwrite','axes','axis','balance','bar','bar3',\n            'bar3h','barh','besselh','besseli','besselj','besselk','Bessely',\n            'beta','betainc','betaln','bicg','bicgstab','bin2dec','bitand',\n            'bitcmp','bitget','bitmax','bitor','bitset','bitshift','bitxor',\n            'blkdiag','bone','bounds','box','brighten','builtin','bwcontr','calendar',\n            'camdolly','camlight','camlookat','camorbit','campan','campos',\n            'camproj','camroll','camtarget','camup','camva','camzoom','capture',\n            'cart2pol','cart2sph','cat','caxis','cdf2rdf','ceil','cell',\n            'cell2struct','celldisp','cellfun','cellplot','cellstr','cgs',\n            'char','chol','cholinc','cholupdate','cla','clabel','class','clc',\n            'clf','clg','clock','close','colmmd','colorbar','colorcube',\n            'colordef','colormap','colperm','comet','comet3','compan','compass',\n            'complex','computer','cond','condeig','condest','coneplot','conj',\n            'contour','contourc','contourf','contourslice','contrast','conv',\n            'conv2','convhull','cool','copper','copyobj','corrcoef','cos',\n            'cosh','cot','coth','cov','cplxpair','cputime','cross','csc','csch',\n            'cumprod','cumsum','cumtrapz','cylinder','daspect','dataset','datastore','date','datenum',\n            'datestr','datetick','datetime','datevec','dbclear','dbcont','dbdown',\n            'dblquad','dbmex','dbquit','dbstack','dbstatus','dbstep','dbstop',\n            'dbtype','dbup','deblank','dec2bin','dec2hex','deconv','del2',\n            'delaunay','det','diag','dialog','diff','diffuse','discretize','dlmread',\n            'dlmwrite','dmperm','double','dragrect','drawnow','dsearch','duration','eig',\n            'eigs','ellipj','ellipke','eomday','eps','erf','erfc','erfcx',\n            'erfiny','error','errorbar','errordlg','etime','eval','evalc',\n            'evalin','exp','expint','expm','eye','ezcontour','ezcontourf',\n            'ezmesh','ezmeshc','ezplot','ezplot3','ezpolar','ezsurf','ezsurfc',\n            'factor','factorial','fclose','feather','feof','ferror','feval',\n            'fft','fft2','fftshift','fgetl','fgets','fieldnames','figure',\n            'fill','fill3','filter','filter2','find','findfigs','findobj',\n            'findstr','fix','flag','flipdim','fliplr','flipud','floor','flops',\n            'fmin','fmins','fopen','fplot','fprintf','fread','frewind','fscanf',\n            'fseek','ftell','full','funm','fwrite','fzero','gallery','gamma',\n            'gammainc','gammaln','gca','gcbo','gcd','gcf','gco','get',\n            'getfield','ginput','gmres','gradient','gray','graymon','grid',\n            'griddata','gsvd','gtext','hadamard','hankel','hdf','head','helpdlg',\n            'hess','hex2dec','hex2num','hidden','hilb','hist','hold','hot',\n            'hsv','hsv2rgb','i','ifft','ifft2','ifftn','ifftshift','imag',\n            'image','imfinfo','imread','imwrite','ind2sub','Inf','inferiorto',\n            'inline','inpolygon','input','inputdlg','inputname','int16',\n            'int2str','int32','int8','int64','interp1','interp2','interp3','interpft',\n            'interpn','intersect','inv','invhilb','ipermute','isa','iscell',\n            'iscellstr','isfile','isfolder','ishandle','isinf',\n            'ismember','isnan','isocaps','isonormals','isosurface','issorted','j','jet','keyboard',\n            'lcm','legend','legendre','light','lighting','lightingangle',\n            'lin2mu','line','lines','linspace','listdlg','loadobj','log',\n            'log10','log2','loglog','logm','logspace','lower','lscov','lu',\n            'luinc','magic','mat2str','material','max','mean','median','menu',\n            'menuedit','mesh','meshc','meshgrid','min','missing','mod','msgbox','mu2lin',\n            'NaN','nargchk','nargin','nargout','nchoosek','ndgrid','ndims',\n            'newplot','nextpow2','nnls','nnz','nonzeros','norm','normest','now',\n            'null','num2cell','num2str','nzmax','ode113,','ode15s,','ode23s,',\n            'ode23t,','ode23tb','ode45,','odefile','odeget','odeset','ones',\n            'orient','orth','pagedlg','pareto','pascal','patch','pause',\n            'pbaspect','pcg','pcolor','peaks','perms','permute','pi','pie',\n            'pie3','pinv','plot','plot3','plotmatrix','plotyy','pol2cart',\n            'polar','poly','polyarea','polyder','polyeig','polyfit','polyval',\n            'polyvalm','pow2','primes','print','printdlg','printopt','prism',\n            'prod','propedit','qmr','qr','qrdelete','qrinsert','qrupdate',\n            'quad','questdlg','quiver','quiver3','qz','rand','randn','randperm',\n            'rank','rat','rats','rbbox','rcond','readtable','real','realmax','realmin',\n            'rectangle','reducepatch','reducevolume','refresh','rem','repmat',\n            'reset','reshape','residue','rgb2hsv','rgbplot','ribbon','rmfield',\n            'roots','rose','rot90','rotate','rotate3d','round','rref',\n            'rrefmovie','rsf2csf','saveobj','scatter','scatter3','schur',\n            'script','sec','sech','selectmoveresize','semilogx','semilogy',\n            'set','setdiff','setfield','setxor','shading','shg','shiftdim',\n            'shrinkfaces','sign','sin','single','sinh','slice','smooth3','sort',\n            'sortrows','sound','soundsc','spalloc','sparse','spconvert',\n            'spdiags','specular','speye','spfun','sph2cart','sphere','spinmap',\n            'spline','spones','spparms','sprand','sprandn','sprandsym','spring',\n            'sprintf','sqrt','sqrtm','squeeze','sscanf','stairs','std','stem',\n            'stem3','str2double','str2num','strcat','strcmp','strcmpi',\n            'stream2','stream3','streamline','string','strings','strjust','strmatch',\n            'strncmp','strrep','strtok','struct','structfun','struct2cell','strvcat',\n            'sub2ind','subplot','subspace','subvolume','sum','summer',\n            'superiorto','surf','surf2patch','surface','surfc','surfl',\n            'surfnorm','svd','svds','symmmd','symrcm','symvar','tail','tall','tan','tanh',\n            'texlabel','text Create','textread','textwrap','tic','timeseries','timer','timetable','title','toc',\n            'toeplitz','trace','trapz','tril','trimesh','trisurf','triu',\n            'tsearch','uicontext Create','uicontextmenu','uicontrol',\n            'uigetfile','uimenu','uint32','uint8','uint64','uiputfile','uiresume',\n            'uisetcolor','uisetfont','uiwait Used','union','unique','unwrap',\n            'upper','var','varargin','varargout','vectorize','view','viewmtx',\n            'voronoi','waitbar','waitforbuttonpress','warndlg','warning',\n            'waterfall','wavread','wavwrite','weekday','whitebg','wilkinson',\n            'winter','wk1read','wk1write','writetable','xlabel','xlim','ylabel','ylim',\n            'zeros','zlabel','zlim','zoom',\n            //'[Keywords 6]',\n            'addpath','cd','clear','copyfile','delete','diary','dir','disp',\n            'doc','docopt','echo','edit','fileparts','format','fullfile','help',\n            'helpdesk','helpwin','home','inmem','lasterr','lastwarn','length',\n            'load','lookfor','ls','matlabrc','matlabroot','mkdir','mlock',\n            'more','munlock','numel','open','openvar','pack','partialpath','path',\n            'pathtool','profile','profreport','pwd','quit','rmpath','save',\n            'saveas','size','tempdir','tempname','type','ver','version','web',\n            'what','whatsnew','which','who','whos','workspace'\n            )\n        ),\n    'SYMBOLS' => array(\n        '...'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        //3 => false,\n        //4 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000FF;',\n            2 => 'color: #0000FF;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #228B22;',\n            2 => 'color:#A020F0;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #080;'\n            ),\n        'STRINGS' => array(\n            //0 => 'color: #A020F0;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #33f;'\n            ),\n        'METHODS' => array(\n            1 => '',\n            2 => ''\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #080;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #33f;'\n            ),\n        'SCRIPT' => array(\n            0 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => 'https://www.mathworks.com/help/matlab/ref/{FNAMEL}.html'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        //Complex numbers\n        0 => '(?<![\\\\w\\\\/])[+-]?[\\\\d]*([\\\\d]\\\\.|\\\\.[\\\\d])?[\\\\d]*[ij](?![\\\\w]|\\<DOT>html)'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/mercury.php",
    "content": "<?php\n/*************************************************************************************\n * mercury.php\n * --------\n * Author: Sebastian Godelet (sebastian.godelet+github@gmail.com)\n * Copyright: (c) 2014\n * Release Version: 1.0.9.1\n * Date Started: 2014/10/30\n *\n * Mercury language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2014/10/30 (1.0.8.13)\n *  -  First Release\n *\n * TODO (updated 2014/10/30)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Mercury',\n    'COMMENT_SINGLE' => array(1 => '%'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'HARDQUOTE' => array(\"'\", \"'\"),\n    'HARDESCAPE' => array('\"', \"\\'\"),\n    'HARDCHAR' => '\"',\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '\\\\',\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'end_module', 'finalise', 'finalize', 'func', 'implementation',\n            'include_module', 'initalisation', 'initialization',\n            'instance', 'interface',\n            'import_module', 'module', 'pragma', 'pred',\n            'type', 'typeclass', 'use_module'\n        ),\n        2 => array(\n            'atomic', 'foreign_code', 'foreign_export', 'foreign_type', 'memo'\n        )\n    ),\n    'SYMBOLS' => array(\n        0 => array('(', ')', '[', ']', '{', '}',),\n        1 => array('?-', ':-', '=:='),\n        2 => array('\\-', '\\+', '\\*', '\\/', '/\\\\'),\n        3 => array('-', '+', '*', '/'),\n        4 => array('.', ':', ',', ';'),\n        5 => array('!', '@', '&', '|', '!.', '!:'),\n        6 => array('<', '>', '=')\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #990000;',\n            2 => 'color: #99aa77;'\n        ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n        ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            'HARD' => 'color: #000099; font-weight: bold;'\n        ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;',\n            'HARD' => 'color: #0000ff;'\n        ),\n        'NUMBERS' => array(\n            0 => 'color: #800080;'\n        ),\n        'METHODS' => array(),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;',\n            1 => 'color: #339933;',\n            2 => 'color: #339933;',\n            3 => 'color: #339933;',\n            4 => 'color: #339933;',\n            5 => 'color: #339933;',\n            6 => 'color: #339933;'\n        ),\n        'REGEXPS' => array(\n            0 => 'color: #008080;'\n        ),\n        'SCRIPT' => array()\n    ),\n    'URLS' => array(\n        1 => 'http://www.mercurylang.org',\n        2 => 'http://www.mercurylang.org'\n    ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        //Variables\n        0 => \"(?<![a-zA-Z0-9_])(?!(?:PIPE|SEMI|DOT)[^a-zA-Z0-9_])[A-Z_][a-zA-Z0-9_]*(?![a-zA-Z0-9_])(?!\\x7C)\"\n    ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/metapost.php",
    "content": "<?php\n/*************************************************************************************\n * metapost.php\n * -----------\n * Author: Maxime Chupin (notezik@gmail.com)\n * Copyright: (c) 2011 Maxime Chupin\n * Release Version: 1.0.9.1\n * Date Started: 2011/08/02\n *\n * Metapost language file for GeSHi.\n *\n * https://en.wikipedia.org/wiki/MetaPost\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'MetaPost',\n    'COMMENT_SINGLE' => array(1 => '%'),\n    'COMMENT_MULTI' => array(\n        'verbatim'=>'etex', //TeX and LaTeX preambule\n        'btex' => 'etex' //TeX invocation\n    ),\n    'COMMENT_REGEXP' => array(\n    ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array( //type\n            'boolean',\n            'color', 'cmykcolor',\n            'expr',\n            'numeric',\n            'pair', 'path', 'pen', 'picture',\n            'string', 'suffix',\n            'text', 'transform',\n        ),\n        2 => array( //file construction\n            'beginfig', 'begingroup',\n            'def',\n            'end', 'enddef', 'endfig', 'endgroup',\n            'hide',\n            'image', 'input',\n            'let',\n            'makepen', 'makepath',\n            'newinternal',\n            'primary', 'primarydef',\n            'save', 'secondarydef', 'shipout', 'special',\n            'tertiarydef',\n            'vardef'\n        ),\n        3 => array( //programmation structure\n            'else', 'elseif', 'endfor', 'exitif', 'exitunless',\n            'fi', 'for', 'forever', 'forsuffix',\n            'if',\n            'step',\n            'until', 'upto',\n        ),\n        4 => array( //operations return pair\n            'bot',\n            'dir', 'direction of',\n            'intersectionpoint', 'intiersectiontimes',\n            'lft', 'llcorner', 'lrcorner',\n            'penoffset of', 'point of', 'postcontrol of', 'precontrol of',\n            'rt',\n            'top',\n            'ulcorner', 'unitvector', 'urcorner',\n            'z',\n        ),\n        5 => array( //operations return path or picture or pen\n            'bbox',\n            'center', 'cutafter', 'cutbefore',\n            'dashpart', 'dashpattern',\n            'glyph of',\n            'infont',\n            'pathpart', 'penpart',\n            'reverse',\n            'subpath of',\n        ),\n        6 => array( //operations return string (or complementary)\n            'closefrom',\n            'fontpart',\n            'readfrom',\n            'str', 'substring of',\n            'textpart'\n        ),\n        7 => array( // operations return numeric\n            'abs', 'angle', 'arclength', 'arctime of', 'ASCII',\n            'blackpart', 'bluepart',\n            'ceiling', 'char', 'colormodel', 'cosd', 'cyanpart',\n            'decimal', 'decr', 'directionpoint of', 'directiontime of',\n            'div', 'dotprod',\n            'floor', 'fontsize',\n            'greenpart', 'greypart',\n            'hex',\n            'incr',\n            'length',\n            'magentapart', 'max', 'mexp', 'min', 'mlog', 'mod',\n            'normaldeviate',\n            'oct',\n            'redpart', 'round',\n            'sind', 'sqrt',\n            'uniformdeviate',\n            'xpart', 'xxpart', 'xypart',\n            'yellowpart', 'ypart', 'yxpart', 'yypart',\n        ),\n        8 => array( // operations return boolean\n            'and',\n            'bounded',\n            'clipped',\n            'filled',\n            'known',\n            'not',\n            'odd',\n            'or',\n            'rgbcolor',\n            'stroked',\n            'textual',\n            'unknown'\n        ),\n        9 => array( //operations return color\n            'colorpart'\n        ),\n        10 => array( //operations return transform\n            'inverse'\n        ),\n        11 => array( //constructors\n            'also',\n            'buildcycle',\n            'contour', 'controls', 'cycle',\n            'doublepath',\n            'setbounds',\n            'to',\n            'whatever'\n        ),\n        12 => array( //labels\n            'label',\n            'label.bot',\n            'label.top',\n            'label.llft',\n            'label.lft',\n            'label.ulft',\n            'label.lrt',\n            'label.rt',\n            'label.urt',\n\n            'labels',\n            'labels.bot',\n            'labels.top',\n            'labels.llft',\n            'labels.lft',\n            'labels.ulft',\n            'labels.lrt',\n            'labels.rt',\n            'labels.urt',\n\n            'thelabel',\n            'thelabel.bot',\n            'thelabel.top',\n            'thelabel.llft',\n            'thelabel.lft',\n            'thelabel.ulft',\n            'thelabel.lrt',\n            'thelabel.rt',\n            'thelabel.urt',\n\n            'dotlabel',\n            'dotlabel.bot',\n            'dotlabel.top',\n            'dotlabel.llft',\n            'dotlabel.lft',\n            'dotlabel.ulft',\n            'dotlabel.lrt',\n            'dotlabel.rt',\n            'dotlabel.urt',\n        ),\n        13 => array( //general transformations\n            'about',\n            'reflected', 'reflectedaround',\n            'rotated', 'rotatedabout', 'rotatedaround',\n            'scaled', 'slanted', 'shifted',\n            'transformed',\n            'xscaled',\n            'yscaled',\n            'zscaled',\n        ),\n        14 => array( //draw instructions\n            'addto',\n            'clip', 'cutdraw',\n            'draw', 'drawarrow', 'drawdblarrow', 'drawdot',\n            'fill', 'filldraw',\n            'undraw', 'unfill', 'unfilldraw'\n        ),\n        15 => array( //style of drawing\n            'curl',\n            'dashed', 'drawoptions',\n            'pickup',\n            'tension',\n            'withcmykcolor', 'withcolor',\n            'withgreyscale', 'withpen', 'withpostscript', 'withprescript',\n            'withrgbcolor',\n        ),\n        16 => array( //read write show\n            'errhelp', 'errmessage',\n            'fontmapfile', 'fontmapline',\n            'interim',\n            'loggingall',\n            'message',\n            'scantokens', 'show', 'showdependencies', 'showtoken', 'showvariable',\n            'tracingall', 'tracingnone',\n            'write to',\n        ),\n        17 => array( //Internal variables with numeric values\n            'ahangle', 'ahlength',\n            'bboxmargin',\n            'charcode',\n            'day', 'defaultcolormodel', 'defaultpen', 'defaultscale',\n            'dotlabeldiam',\n            'hour',\n            'labeloffset',\n            'linecap', 'linejoin',\n            'minute', 'miterlimit', 'month', 'mpprocset',\n            'pausing', 'prologues',\n            'restoreclipcolor',\n            'showstopping',\n            'time',\n            'tracingcapsules', 'tracingchoices', 'tracingcommands',\n            'tracingequations', 'tracinglostchars', 'tracingmacros',\n            'tracingonline', 'tracingoutput', 'tracingrestores',\n            'tracingspecs', 'tracingstats', 'tracingtitles',\n            'troffmode', 'truecorners',\n            'warningcheck',\n            'year',\n        ),\n        18 => array( //Internal string variables\n            'filenametemplate',\n            'jobname',\n            'outputformat', 'outputtemplate',\n        ),\n        19 => array( //other predefined variables\n            'background',\n            'currentpen', 'currentpicture', 'cuttings',\n            'defaultfont',\n            'extra_beginfig', 'extra_endfig',\n        ),\n        20 => array( //predefined constants\n            'beveled', 'black', 'blue', 'bp', 'butt',\n            'cc', 'cm',\n            'dd', 'ditto', 'down',\n            'epsilon', 'evenly', 'EOF',\n            'false', 'fullcircle',\n            'green',\n            'halfcircle',\n            'identity',\n            'left',\n            'mitered', 'mm', 'mpversion',\n            'nullpen', 'nullpicture',\n            'origin',\n            'pc', 'pencircle', 'pensquare', 'pt',\n            'quartercircle',\n            'red', 'right', 'rounded',\n            'squared',\n            'true',\n            'unitsquare', 'up',\n            'white', 'withdots',\n        )\n    ),\n    'SYMBOLS' => array(\n        '&', ':=', '=', '+', '-',\n        '*', '**', '/', '++', '+-+',\n        '<', '>', '>=', '<=', '<>',\n        '#@', '@', '@#'\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true,\n        9 => true,\n        10 => true,\n        11 => true,\n        12 => true,\n        13 => true,\n        14 => true,\n        15 => true,\n        16 => true,\n        17 => true,\n        18 => true,\n        19 => true,\n        20 => true\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1  => 'color: #472;', //type\n            2  => 'color: #35A;font-weight: bold;', //file construction\n            3  => 'color: #A53;', //structure\n            4  => 'color: #35A;', //operations return pair\n            5  => 'color: #35A;', //operations return path or picture or pen\n            6  => 'color: #35A;', //operations return string\n            7  => 'color: #35A;', //operations return numeric\n            8  => 'color: #35A;', //operations return boolean\n            9  => 'color: #35A;', //operations return color\n            10 => 'color: #35A;', //operations return transform\n            11 => 'color: #35A;', //constructors\n            12 => 'color: #35A;', //labels\n            13 => 'color: #3B5;', //general transformations\n            14 => 'color: #35A;', //draw instructions\n            15 => 'color: #472;', //style of drawing\n            16 => 'color: #000;', //read write show\n            17 => 'color: #000;', //Internal variables with numeric values\n            18 => 'color: #000;', //Internal string variables\n            19 => 'color: #000;', //other predefined variables\n            20 => 'color: #000;'  //predefined constants\n        ),\n        'COMMENTS' => array(\n            1 => 'color: #777;',\n            'MULTI' => 'color: #880;'\n        ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n        ),\n        'BRACKETS' => array(\n            0 => 'color: #820;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #880;'\n        ),\n        'NUMBERS' => array(\n            0 => 'color: #000;'\n        ),\n        'METHODS' => array(\n            1 => '',\n            2 => ''\n        ),\n        'SYMBOLS' => array(\n            0 => 'color: #000;'\n        ),\n        'REGEXPS' => array(\n        ),\n        'SCRIPT' => array(\n            0 => ''\n        )\n    ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => '',\n        9 => '',\n        10 => '',\n        11 => '',\n        12 => '',\n        13 => '',\n        14 => '',\n        15 => '',\n        16 => '',\n        17 => '',\n        18 => '',\n        19 => '',\n        20 => ''\n    ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n    ),\n    'REGEXPS' => array(\n    ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n    ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n    )\n);\n"
  },
  {
    "path": "includes/geshi/mirc.php",
    "content": "<?php\n/*************************************************************************************\n * mirc.php\n * -----\n * Author: Alberto 'Birckin' de Areba (Birckin@hotmail.com)\n * Copyright: (c) 2006 Alberto de Areba\n * Release Version: 1.0.9.1\n * Date Started: 2006/05/29\n *\n * mIRC Scripting language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n * 2006/05/29 (1.0.0)\n *   -  First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'mIRC Scripting',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'alias', 'menu', 'dialog',\n            ),\n        2 => array(\n            'if', 'elseif', 'else', 'while', 'return', 'goto', 'var'\n            ),\n        3 => array(\n            'action','ajinvite','amsg','ame','anick','aop','auser',\n            'avoice','auto','autojoin','away','background','ban','beep',\n            'channel','clear','clearall','clipboard','close','closemsg','color',\n            'copy','creq','ctcp','ctcpreply','ctcps','dcc','dde','ddeserver',\n            'debug','describe','disable','disconnect','dlevel','dll','dns',\n            'dqwindow','ebeeps','echo','editbox','emailaddr','enable','events',\n            'exit','filter','findtext','finger','flash','flood','flush',\n            'flushini','font','fsend','fserve','fullname','ghide','gload',\n            'gmove','gopts','gplay','gpoint','gqreq','groups','gshow','gsize',\n            'gstop','gtalk','gunload','guser','help','hop','ignore','invite',\n            'join','kick','linesep','links','list','load','loadbuf','localinfo',\n            'log','me','mdi','mkdir','mnick','mode','msg','names','nick','noop',\n            'notice','notify','omsg','onotice','part','partall','pdcc',\n            'perform','ping','play','pop','protect','pvoice','qmsg','qme',\n            'query','queryrn','quit','raw','remini','remote','remove','rename',\n            'enwin','resetidle','rlevel','rmdir','run','ruser','save','savebuf',\n            'saveini','say','server','showmirc','sline','sound','speak','splay',\n            'sreq','strip','time',\n            //'timer[N/name]', //Handled as a regular expression below ...\n            'timers','timestamp','titlebar','tnick','tokenize','topic','ulist',\n            'unload','updatenl','url','uwho','window','winhelp','write',\n            'writeini','who','whois','whowas'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']', '/'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #994444;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #990000; font-weight: bold;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #FF0000;',\n            ),\n        'STRINGS' => array(\n            ),\n        'NUMBERS' => array(\n            0 => '',\n            ),\n        'METHODS' => array(\n            0 => 'color: #008000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #FF0000;',\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #000099;',\n            1 => 'color: #990000;',\n            2 => 'color: #000099;',\n            3 => 'color: #888800;',\n            4 => 'color: #888800;',\n            5 => 'color: #000099;',\n            6 => 'color: #990000; font-weight: bold;',\n            7 => 'color: #990000; font-weight: bold;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://en.wikichip.org/wiki/mirc/commands/{FNAMEL}'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array('.'),\n    'REGEXPS' => array(\n        //Variable names\n        0 => '\\$[a-zA-Z0-9]+',\n        //Variable names\n        1 => '(%|&amp;)[\\w\\x80-\\xFE]+',\n        //Client to Client Protocol handling\n        2 => '(on|ctcp) (!|@|&amp;)?(\\d|\\*):[a-zA-Z]+:',\n        /*4 => array(\n            GESHI_SEARCH => '((on|ctcp) (!|@|&)?(\\d|\\*):(Action|Active|Agent|AppActive|Ban|Chat|Close|Connect|Ctcp|CtcpReply|DccServer|DeHelp|DeOp|DeVoice|Dialog|Dns|Error|Exit|FileRcvd|FileSent|GetFail|Help|Hotlink|Input|Invite|Join|KeyDown|KeyUp|Kick|Load|Logon|MidiEnd|Mode|Mp3End|Nick|NoSound|Notice|Notify|Op|Open|Part|Ping|Pong|PlayEnd|Quit|Raw|RawMode|SendFail|Serv|ServerMode|ServerOp|Signal|Snotice|Start|Text|Topic|UnBan|Unload|Unotify|User|Mode|Voice|Wallops|WaveEnd):)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'i',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),*/\n        //Channel names\n        3 => '(#|@)[a-zA-Z0-9]+',\n        4 => '-[a-z\\d]+',\n        //Raw protocol handling\n        5 => 'raw (\\d|\\*):',\n        //Timer handling\n        6 => '(?<!>|:|\\/)\\/timer(?!s\\b)[0-9a-zA-Z_]+',\n        // /...\n        7 => '(?<!>|:|\\/|\\w)\\/[a-zA-Z][a-zA-Z0-9]*(?!>)'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'NUMBERS' => GESHI_NEVER\n            ),\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => '(?<![\\w\\$\\|\\#;<^&])'\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/mk-61.php",
    "content": "<?php\n/*********************************************************************\n * МК-61/52 language file for GeSHi.\n *\n * Author: Russkiy\n * Copyright: (c) 2014 Russkiy\n * Release Version: 1.0.9.1\n * Date Started: 2014-03-11\n *\n *********************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ********************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'МК-61/52',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(),\n    'SYMBOLS' => array(),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(),\n        'COMMENTS' => array(),\n        'ESCAPE_CHAR' => array(),\n        'BRACKETS' => array(),\n        'STRINGS' => array(),\n        'NUMBERS' => array(),\n        'METHODS' => array(),\n        'SYMBOLS' => array(),\n        'SCRIPT' => array(),\n        'REGEXPS' => array(\n            1 => 'color:#000000;',\n            2 => 'color:#A0A000;',\n            3 => 'color:#00A000;',\n            4 => 'color:#A00000;',\n            5 => 'color:#0000A0;',\n            6 => 'text-decoration: underline; color: #A000A0;',\n            7 => 'font-size: 75%; color: #A0A0A0;'\n        )\n    ),\n    'URLS' => array(),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        1 => array(\n            GESHI_SEARCH => '(\\s|\\t|^|\\G|\\.)((F|K|К)?(пи|π|СЧ|KСЧ|КСЧ|,|\\.|\\/\\-\\/|\\+\\/\\-|ВП))(\\s|\\t|$)',\n            GESHI_REPLACE => '\\\\4',\n            GESHI_MODIFIERS => '', GESHI_BEFORE => '\\\\1<span style=\"font-weight:lighter;font-size:90%;color:#404040;\">\\\\3</span>', GESHI_AFTER => '\\\\5'\n        ),\n        2 => array(\n            GESHI_SEARCH => '(\\s|\\t|^|\\G|\\.)((F|K|К)?(НОП|&lt;\\-&gt;|XY|↔|X↔Y|\\^|В\\^|↑|В↑|Вx|Вx|Сx|\\-&gt;|↻|→))(\\s|\\t|$)',\n            GESHI_REPLACE => '\\\\4',\n            GESHI_MODIFIERS => '', GESHI_BEFORE => '\\\\1<span style=\"font-weight:lighter;font-size:90%;color:#404040;\">\\\\3</span>', GESHI_AFTER => '\\\\5'\n        ),\n        3 => array(\n            GESHI_SEARCH => '(\\s|\\t|^|\\G|\\.)((K|К)?(П|XП|ИП|ПX|Пx)(\\d|[A-E]|[a-e]|(А|В|С|Д|Е)))(\\s|\\t|$)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '', GESHI_BEFORE => '\\\\1', GESHI_AFTER => '\\\\7'\n        ),\n        4 => array(\n            GESHI_SEARCH => '(\\s|\\t|^|\\G|\\.)((F|K|К)?(10\\^x|10x|e\\^x|ex|lg|ln|ЧМ|arcsin|<PIPE>x<PIPE>|arccos|ЗН|arctg|ГМ|sin|\\[x\\]|cos|\\{x\\}|\\(x\\)|tg|max|\\+|\\-|\\*|x|х|×|⋅|\\/|\\:|÷|МГ|КвКор|квкор|корень|√|x\\^2|x2|x²|1\\/x|x\\^y|xy|МЧ|\\x2F\\x5C|⋀|\\x5C\\x2F|⋁|\\(\\+\\)|⊕|ИНВ))(\\s|\\t|$)',\n            GESHI_REPLACE => '\\\\4',\n            GESHI_MODIFIERS => '', GESHI_BEFORE => '\\\\1<span style=\"font-weight:lighter;font-size:90%;color:#404040;\">\\\\3</span>', GESHI_AFTER => '\\\\5'\n        ),\n        5 => array(\n            GESHI_SEARCH => '(\\s|\\t|^|\\G|\\.)((F?)((K|К)?(В\\/О|В\\/0|С\\/П|x&gt;\\=0|x≥0|x≥0|x⩾0|x\\#0|x\\!\\=0|x&lt;&gt;0|x≠0|БП|ПП|L2|L3|x&lt;0|x\\=0|L0|L1)))(\\s|\\t|$)',\n            GESHI_REPLACE => '\\\\4',\n            GESHI_MODIFIERS => '', GESHI_BEFORE => '\\\\1<span style=\"font-weight:lighter;font-size:90%;color:#404040;\">\\\\3</span>', GESHI_AFTER => '\\\\7'\n        ),\n        6 => array(\n            GESHI_SEARCH => '(\\s|\\t|^|\\G|\\.)(\\d{2})(\\s|\\t|$)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '', GESHI_BEFORE => '\\\\1', GESHI_AFTER => '\\\\3'\n        ),\n        7 => array(\n            GESHI_SEARCH => '(\\s|\\t|^|\\G|\\.)([\\d\\-A]\\d\\.)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '', GESHI_BEFORE => '\\\\1', GESHI_AFTER => ''\n        )\n    ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'PARSER_CONTROL' => array()\n);\n"
  },
  {
    "path": "includes/geshi/mmix.php",
    "content": "<?php\n/*************************************************************************************\n * mmix.php\n * -------\n * Author: Benny Baumann (BenBE@geshi.org)\n * Copyright: (c) 2009 Benny Baumann (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2009/10/16\n *\n * MMIX Assembler language file for GeSHi.\n *\n * This is an implementation of the MMIX language as designed by Donald E. Knuth\n *\n * CHANGES\n * -------\n * 2004/08/05 (1.0.8.6)\n *   -  First Release\n *\n * TODO (updated 2009/10/16)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'MMIX',\n    'COMMENT_SINGLE' => array(1 => ';', 2 => '%'),\n    'COMMENT_MULTI' => array(),\n    //Line address prefix suppression\n    'COMMENT_REGEXP' => array(\n        3 => \"/^\\s*(?!\\s)[^\\w].*$/m\",\n        4 => \"/^\\s*[0-9a-f]{12,16}+(?:\\s+[0-9a-f]+(?:\\.{3}[0-9a-f]{2,})?)?:/mi\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'NUMBERS' => array(\n        1 => '(?<![\\d\\$#\\w])[\\da-fA-F]+(?!\\w)',\n        2 => '#[\\da-fA-F]+',\n        3 => '\\$\\d+'\n        ),\n    'KEYWORDS' => array(\n        /*CPU*/\n        1 => array(\n            '16ADDU','2ADDU','4ADDU','8ADDU','ADD','ADDU','AND','ANDN','ANDNH',\n            'ANDNL','ANDNMH','ANDNML','BDIF','BEV','BN','BNN','BNP','BNZ','BOD',\n            'BP','BZ','CMP','CMPU','CSEV','CSN','CSNN','CSNP','CSNZ','CSOD',\n            'CSP','CSWAP','CSZ','DIV','DIVU','FADD','FCMP','FCMPE','FDIV',\n            'FEQL','FEQLE','FINT','FIX','FIXU','FLOT','FLOTU','FMUL','FREM',\n            'FSQRT','FSUB','FUN','FUNE','GET','GETA','GO','INCH','INCL','INCMH',\n            'INCML','JMP','LDA','LDB','LDBU','LDHT','LDO','LDOU','LDSF','LDT',\n            'LDTU','LDUNC','LDVTS','LDW','LDWU','MOR','MUL','MULU','MUX','MXOR',\n            'NAND','NEG','NEGU','NOR','NXOR','ODIF','OR','ORH','ORL','ORMH',\n            'ORML','ORN','PBEV','PBN','PBNN','PBNP','PBNZ','PBOD','PBP','PBZ',\n            'POP','PREGO','PRELD','PREST','PUSHGO','PUSHJ','PUT','RESUME','SADD',\n            'SAVE','SETH','SETL','SETMH','SETML','SFLOT','SFLOTU','SL','SLU',\n            'SR','SRU','STB','STBU','STCO','STHT','STO','STOU','STSF','STT',\n            'STTU','STUNC','STW','STWU','SUB','SUBU','SWYM','SYNC','SYNCD',\n            'SYNCID','TDIF','TRAP','TRIP','UNSAVE','WDIF','XOR','ZSEV','ZSN',\n            'ZSNN','ZSNP','ZSNZ','ZSOD','ZSP','ZSZ'\n            ),\n        2 => array(\n            'BSPEC','BYTE','ESPEC','GREG','IS','LOC','LOCAL','OCTA',\n            'PREFIX','SET','TETRA','WYDE'\n            ),\n        /*registers*/\n        3 => array(\n            'rA','rB','rC','rD','rE','rF','rG','rH','rI','rJ','rK','rL','rM',\n            'rN','rO','rP','rQ','rR','rS','rT','rU','rV','rW','rX','rY','rZ',\n            'rBB','rTT','rWW','rXX','rYY','rZZ'\n            ),\n//        /*Directive*/\n//        4 => array(\n//            ),\n//        /*Operands*/\n//        5 => array(\n//            )\n        ),\n    'SYMBOLS' => array(\n        '[', ']', '(', ')',\n        '+', '-', '*', '/', '%',\n        '.', ',', ';', ':',\n        '<<','>>'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => false,\n        3 => true,\n//        4 => false,\n//        5 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #00007f; font-weight: bold;',\n            2 => 'color: #0000ff; font-weight: bold;',\n            3 => 'color: #00007f;',\n//            4 => 'color: #000000; font-weight: bold;',\n//            5 => 'color: #000000; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #666666; font-style: italic;',\n            3 => 'color: #666666; font-style: italic;',\n            4 => 'color: #adadad; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900; font-weight: bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #7f007f;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000ff;',\n            1 => 'color: #0000ff;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #00007f;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n//            0 => 'color: #0000ff;',\n//            1 => 'color: #0000ff;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n//        4 => '',\n//        5 => ''\n        ),\n/*\n    'NUMBERS' =>\n        GESHI_NUMBER_BIN_PREFIX_PERCENT |\n        GESHI_NUMBER_BIN_SUFFIX |\n        GESHI_NUMBER_HEX_PREFIX |\n        GESHI_NUMBER_HEX_SUFFIX |\n        GESHI_NUMBER_OCT_SUFFIX |\n        GESHI_NUMBER_INT_BASIC |\n        GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F |\n        GESHI_NUMBER_FLT_SCI_ZERO,\n*/\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        //Hex numbers\n//        0 => /*  */ \"(?<=([\\\\s\\\\(\\\\)\\\\[\\\\],;.:+\\\\-\\\\/*]))(?:[0-9][0-9a-fA-F]{0,31}[hH]|0x[0-9a-fA-F]{1,32})(?=([\\\\s\\\\(\\\\)\\\\[\\\\],;.:+\\\\-\\\\/*]))\",\n        //Binary numbers\n//        1 => \"(?<=([\\\\s\\\\(\\\\)\\\\[\\\\],;.:+\\\\-\\\\/*]))[01]{1,64}[bB](?=([\\\\s\\\\(\\\\)\\\\[\\\\],;.:+\\\\-\\\\/*]))\"\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 8,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\|\\#>|^])\",\n            'DISALLOWED_AFTER' => \"(?![a-zA-Z0-9_<\\|%])\"\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/modula2.php",
    "content": "<?php\n/****************************************************************************\n * modula2.php\n * -----------\n * Author: Benjamin Kowarsch (benjamin@modula2.net)\n * Copyright: (c) 2009 Benjamin Kowarsch (benjamin@modula2.net)\n * Release Version: 1.0.9.1\n * Date Started: 2009/11/05\n *\n * Modula-2 language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/05/22 (1.0.8.8)\n *   -  First Release\n *\n * TODO (updated 2010/05/22)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Modula-2',\n    'COMMENT_MULTI' => array('(*' => '*)'),\n    'COMMENT_SINGLE' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'HARDQUOTE' => array(\"'\", \"'\"),\n    'HARDESCAPE' => array(\"''\"),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array( /* reserved words */\n            'AND', 'ARRAY', 'BEGIN', 'BY', 'CASE', 'CONST', 'DEFINITION',\n            'DIV', 'DO', 'ELSE', 'ELSIF', 'END', 'EXIT', 'EXPORT', 'FOR',\n            'FROM', 'IF', 'IMPLEMENTATION', 'IMPORT', 'IN', 'LOOP', 'MOD',\n            'MODULE', 'NOT', 'OF', 'OR', 'POINTER', 'PROCEDURE', 'QUALIFIED',\n            'RECORD', 'REPEAT', 'RETURN', 'SET', 'THEN', 'TO', 'TYPE',\n            'UNTIL', 'VAR', 'WHILE', 'WITH'\n            ),\n        2 => array( /* pervasive constants */\n            'NIL', 'FALSE', 'TRUE',\n            ),\n        3 => array( /* pervasive types */\n            'BITSET', 'CAP', 'CHR', 'DEC', 'DISPOSE', 'EXCL', 'FLOAT',\n            'HALT', 'HIGH', 'INC', 'INCL', 'MAX', 'MIN', 'NEW', 'ODD', 'ORD',\n            'SIZE', 'TRUNC', 'VAL'\n            ),\n        4 => array( /* pervasive functions and macros */\n            'ABS', 'BOOLEAN', 'CARDINAL', 'CHAR', 'INTEGER',\n            'LONGCARD', 'LONGINT', 'LONGREAL', 'PROC', 'REAL'\n            ),\n        ),\n    'SYMBOLS' => array(\n        ',', ':', '=', '+', '-', '*', '/', '#', '~'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;',\n            4 => 'color: #000066; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            'HARD' => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;',\n            'HARD' => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #0066ee;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        1 => ''\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/modula3.php",
    "content": "<?php\n/*************************************************************************************\n * modula3.php\n * ----------\n * Author: mbishop (mbishop@esoteriq.org)\n * Copyright: (c) 2009 mbishop (mbishop@esoteriq.org)\n * Release Version: 1.0.9.1\n * Date Started: 2009/01/21\n *\n * Modula-3 language file for GeSHi.\n *\n * CHANGES\n * -------\n *\n * TODO\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Modula-3',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array('(*' => '*)'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'HARDQUOTE' => array(\"'\", \"'\"),\n    'HARDESCAPE' => array(\"''\"),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'AND', 'ANY', 'ARRAY', 'AS', 'BEGIN', 'BITS', 'BRANDED', 'BY', 'CASE',\n            'CONST', 'DIV', 'DO', 'ELSE', 'ELSIF', 'END', 'EVAL', 'EXCEPT', 'EXCEPTION',\n            'EXIT', 'EXPORTS', 'FINALLY', 'FOR', 'FROM', 'GENERIC', 'IF', 'IMPORT', 'IN',\n            'INTERFACE', 'LOCK', 'LOOP', 'METHODS', 'MOD', 'MODULE', 'NOT', 'OBJECT', 'OF',\n            'OR', 'OVERRIDES', 'PROCEDURE', 'RAISE', 'RAISES', 'READONLY', 'RECORD', 'REF',\n            'REPEAT', 'RETURN', 'REVEAL', 'ROOT', 'SET', 'THEN', 'TO', 'TRY', 'TYPE', 'TYPECASE',\n            'UNSAFE', 'UNTIL', 'UNTRACED', 'VALUE', 'VAR', 'WHILE', 'WITH'\n            ),\n        2 => array(\n            'NIL', 'NULL', 'FALSE', 'TRUE',\n            ),\n        3 => array(\n            'ABS','ADR','ADRSIZE','BITSIZE','BYTESIZE','CEILING','DEC','DISPOSE',\n            'EXTENDED','FIRST','FLOAT','FLOOR','INC','ISTYPE','LAST','LOOPHOLE','MAX','MIN',\n            'NARROW','NEW','NUMBER','ORD','ROUND','SUBARRAY','TRUNC','TYPECODE', 'VAL'\n            ),\n        4 => array(\n            'ADDRESS', 'BOOLEAN', 'CARDINAL', 'CHAR', 'INTEGER',\n            'LONGREAL', 'MUTEX', 'REAL', 'REFANY', 'TEXT'\n            ),\n        ),\n    'SYMBOLS' => array(\n        ',', ':', '=', '+', '-', '*', '/', '#'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;',\n            4 => 'color: #000066; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            'HARD' => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;',\n            'HARD' => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #0066ee;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/mpasm.php",
    "content": "<?php\n/*************************************************************************************\n * mpasm.php\n * ---------\n * Author: Bakalex (bakalex@gmail.com)\n * Copyright: (c) 2004 Bakalex, Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/12/6\n *\n * Microchip Assembler language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *  - Added description of extra language features (SF#1970248)\n * 2005/01/29 (1.0.0)\n *  - First Release\n *\n * TODO (updated 2005/12/6)\n * -------------------------\n *\n * For the moment, i've only added PIC16C6X registers. We need more (PIC16F/C7x/8x,\n * PIC10, PIC18 and dsPIC registers).\n * Must take a look to dsPIC instructions.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Microchip Assembler',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        /*Directive Language*/\n        4 => array(\n            'CONSTANT', '#DEFINE', 'END', 'EQU', 'ERROR', 'ERROR-LEVEL', '#INCLUDE', 'LIST',\n            'MESSG', 'NOLIST', 'ORG', 'PAGE', 'PROCESSOR', 'RADIX', 'SET', 'SPACE', 'SUBTITLE',\n            'TITLE', '#UNDEFINE', 'VARIABLE', 'ELSE', 'ENDIF', 'ENDW', 'IF', 'IFDEF', 'IFNDEF',\n            'WHILE', '__BADRAM', 'CBLOCK', '__CONFIG', 'DA', 'DATA', 'DB', 'DE', 'DT', 'DW',\n            'ENDC', 'FILL', '__IDLOCS', '__MAXRAM', 'RES', 'ENDM', 'EXITM', 'EXPAND', 'LOCAL',\n            'MACRO', 'NOEXPAND', 'BANKISEL', 'BANKSEL', 'CODE', 'EXTERN', 'GLOBAL', 'IDATA',\n            'PAGESEL', 'UDATA', 'UDATA_ACS', 'UDATA_OVR', 'UDATA_SHR'\n            ),\n        /* 12&14-bit Specific Instruction Set*/\n        1 => array(\n            'andlw', 'call', 'clrwdt', 'goto', 'iorlw', 'movlw', 'option', 'retlw', 'sleep',\n            'tris', 'xorlw', 'addwf', 'andwf', 'clrf', 'clrw', 'comf', 'decf', 'decfsz', 'incf',\n            'incfsz', 'iorwf', 'movf', 'nop', 'rlf', 'rrf', 'subwf', 'swapf', 'xorwf',\n            'bcf', 'bsf', 'btfsc', 'btfss',\n            'addlw', 'retfie', 'return', 'sublw', 'addcf', 'adddcf', 'b', 'bc', 'bdc',\n            'bnc', 'bndc', 'bnz', 'bz', 'clrc', 'clrdc', 'clrz', 'lcall', 'lgoto', 'movfw',\n            'negf', 'setc', 'setdc', 'setz', 'skpc', 'skpdc', 'skpnc', 'skpndc', 'skpnz', 'skpz',\n            'subcf', 'subdcf', 'tstf'\n            ),\n        /* 16-bit Specific Instructiob Set */\n        2 => array (\n            'movfp', 'movlb', 'movlp', 'movpf', 'movwf', 'tablrd', 'tablwt', 'tlrd', 'tlwt',\n            'addwfc', 'daw', 'mullw', 'negw', 'rlcf', 'rlncf', 'rrcf', 'rrncf', 'setf', 'subwfb',\n            'btg', 'cpfseq', 'cpfsgt', 'cpfslt', 'dcfsnz', 'infsnz', 'tstfsz', 'lfsr', 'bnn',\n            'bnov', 'bra', 'pop', 'push', 'rcall', 'reset'\n            ),\n        /* Registers */\n        3 => array(\n            'INDF', 'TMR0', 'PCL', 'STATUS', 'FSR', 'PORTA', 'PORTB', 'PORTC', 'PORTD', 'PORTE',\n            'PCLATH', 'INTCON', 'PIR1', 'PIR2', 'TMR1L', 'TMR1H', 'T1CON', 'TMR2', 'T2CON', 'TMR2L',\n            'TMR2H', 'TMR0H', 'TMR0L', 'SSPBUF', 'SSPCON', 'CCPR1L', 'CCPR1H', 'CCP1CON', 'RCSTA',\n            'TXREG', 'RCREG', 'CCPR2L', 'CCPR2H', 'CCP2CON', 'OPTION', 'TRISA', 'TRISB', 'TRISC',\n            'TRISD', 'TRISE', 'PIE2', 'PIE1', 'PR2', 'SSPADD', 'SSPSTAT', 'TXSTA', 'SPBRG'\n            ),\n        /*Operands*/\n        5 => array(\n            'high','low'\n            )\n        ),\n    'SYMBOLS' => array(\n        '[', ']', '(', ')'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #00007f;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #007f00;',\n            4 => 'color: #46aa03; font-weight:bold;',\n            5 => 'color: #7f0000;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #adadad; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #7f007f;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #ff0000;',\n            1 => 'color: #ff0000;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        //Hex numbers\n        0 => '[0-9a-fA-F]{1,32}[hH]',\n        //Binary numbers\n        1 => '[01]{1,64}[bB]'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/mxml.php",
    "content": "<?php\n/*************************************************************************************\n * mxml.php\n * -------\n * Author: David Spurr\n * Copyright: (c) 2007 David Spurr (http://www.defusion.org.uk/)\n * Release Version: 1.0.9.1\n * Date Started: 2007/10/04\n *\n * MXML language file for GeSHi. Based on the XML file by Nigel McNie\n *\n * CHANGES\n * -------\n * 2007/10/04 (1.0.7.22)\n *   -  First Release\n *\n * TODO\n * ----\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'MXML',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array('<!--' => '-->'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        ),\n    'SYMBOLS' => array(\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            ),\n        'COMMENTS' => array(\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'SCRIPT' => array(\n            0 => 'color: #00bbdd;',\n            1 => 'color: #ddbb00;',\n            2 => 'color: #339933;',\n            3 => 'color: #000000;'\n            ),\n        'REGEXPS' => array(\n            0 => 'font-weight: bold; color: black;',\n            1 => 'color: #7400FF;',\n            2 => 'color: #7400FF;'\n            )\n        ),\n    'URLS' => array(\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        // xml declaration\n        0 => array(\n            GESHI_SEARCH => '(&lt;[\\/?|(\\?xml)]?[a-z0-9_\\-:]*(\\?&gt;))',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'i',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        // opening tags\n        1 => array(\n            GESHI_SEARCH => '(&lt;\\/?[a-z]+:[a-z]+)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'i',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        // closing tags\n        2 => array(\n            GESHI_SEARCH => '(\\/?&gt;)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'i',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,\n    'SCRIPT_DELIMITERS' => array(\n        0 => array(\n            '<!DOCTYPE' => '>'\n            ),\n        1 => array(\n            '&' => ';'\n            ),\n        2 => array(\n            //'<![CDATA[' => ']]>'\n            '<mx:Script>' => '</mx:Script>'\n            ),\n        3 => array(\n            '<' => '>'\n            )\n    ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => false,\n        1 => false,\n        2 => false,\n        3 => true\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/mysql.php",
    "content": "<?php\n/*************************************************************************************\n * mysql.php\n * ---------\n * Author: Marjolein Katsma (marjolein.is.back@gmail.com)\n * Copyright: (c) 2008 Marjolein Katsma (http://blog.marjoleinkatsma.com/)\n * Release Version: 1.0.9.1\n * Date Started: 2008-12-12\n *\n * MySQL language file for GeSHi.\n *\n * Based on original MySQL language file by Carl Fürstenberg (2004); brought\n * up-to-date for current MySQL versions, and with more classes for different\n * types of keywords; several minor errors were corrected as well.\n *\n * Some \"classes\" have two groups here: this is to allow for the fact that some\n * keywords in MySQL have a double function: many of those are either a function\n * (must be immediately followed by an opening bracket) or some other keyword:\n * so they can be distinguished by the presence (or not) of that opening bracket.\n * (An immediately following opening bracket is a default rule for functions in\n * MySQL, though this may be overridden; because it's only a default, we use a\n * regex lookahead only where necessary to distinguish homonyms, not generally\n * to match any function.)\n * Other keywords with double usage cannot be distinguished and are classified\n * in the \"Mix\" category.\n *\n *************************************************************************************\n *\n * This file is part of GeSHi.\n *\n * GeSHi is free software; you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation; either version 2 of the License, or\n * (at your option) any later version.\n *\n * GeSHi is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with GeSHi; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'MySQL',\n    //'COMMENT_SINGLE' => array(1 =>'--', 2 => '#'),    // '--' MUST be folowed by whitespace,not necessarily a space\n    'COMMENT_SINGLE' => array(\n        1 =>'-- ',\n        2 => '#'\n        ),\n    'COMMENT_REGEXP' => array(\n        1 => \"/(?:--\\s).*?$/\",                          // double dash followed by any whitespace\n        ),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,            // @@@ would be nice if this could be defined per group!\n    'QUOTEMARKS' => array(\"'\", '\"', '`'),\n    'ESCAPE_CHAR' => '\\\\',                              // by default only, can be specified\n    'ESCAPE_REGEXP' => array(\n        1 => \"/[_%]/\",                                  // search wildcards\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC |\n        GESHI_NUMBER_OCT_PREFIX |\n        GESHI_NUMBER_HEX_PREFIX |\n        GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_SCI_SHORT |\n        GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            // Mix: statement keywords and keywords that don't fit in any other\n            // category, or have multiple usage/meanings\n            'ACTION','ADD','AFTER','ALGORITHM','ALL','ALTER','ANALYZE','ANY',\n            'ASC','AS','BDB','BEGIN','BERKELEYDB','BINARY','BTREE','CALL',\n            'CASCADED','CASCADE','CHAIN','CHANGE','CHECK','COLUMNS','COLUMN',\n            'COMMENT','COMMIT','COMMITTED','CONSTRAINT','CONTAINS SQL',\n            'CONSISTENT','CONVERT','CREATE','CROSS','DATA','DATABASES',\n            'DECLARE','DEFINER','DELAYED','DELETE','DESCRIBE','DESC',\n            'DETERMINISTIC','DISABLE','DISCARD','DISTINCTROW','DISTINCT','DO',\n            'DROP','DUMPFILE','DUPLICATE KEY','ENABLE','ENCLOSED BY','ENGINE',\n            'ERRORS','ESCAPED BY','EXISTS','EXPLAIN','EXTENDED','FIELDS',\n            'FIRST','FOR EACH ROW','FORCE','FOREIGN KEY','FROM','FULL',\n            'FUNCTION','GLOBAL','GRANT','GROUP BY','HANDLER','HASH','HAVING',\n            'HELP','HIGH_PRIORITY','IF NOT EXISTS','IGNORE','IMPORT','INDEX',\n            'INFILE','INNER','INNODB','INOUT','INTO','INVOKER',\n            'ISOLATION LEVEL','JOIN','KEYS','KEY','KILL','LANGUAGE SQL','LAST',\n            'LIMIT','LINES','LOAD','LOCAL','LOCK','LOW_PRIORITY',\n            'MASTER_SERVER_ID','MATCH','MERGE','MIDDLEINT','MODIFIES SQL DATA',\n            'MODIFY','MRG_MYISAM','NATURAL','NEXT','NO SQL','NO','ON',\n            'OPTIMIZE','OPTIONALLY','OPTION','ORDER BY','OUTER','OUTFILE','OUT',\n            'PARTIAL','PARTITION','PREV','PRIMARY KEY','PRIVILEGES','PROCEDURE',\n            'PURGE','QUICK','READS SQL DATA','READ','REFERENCES','RELEASE',\n            'RENAME','REORGANIZE','REPEATABLE','REQUIRE','RESTRICT','RETURNS',\n            'REVOKE','ROLLBACK','ROUTINE','RTREE','SAVEPOINT','SELECT',\n            'SERIALIZABLE','SESSION','SET','SHARE MODE','SHOW','SIMPLE',\n            'SNAPSHOT','SOME','SONAME','SQL SECURITY','SQL_BIG_RESULT',\n            'SQL_BUFFER_RESULT','SQL_CACHE','SQL_CALC_FOUND_ROWS',\n            'SQL_NO_CACHE','SQL_SMALL_RESULT','SSL','START','STARTING BY',\n            'STATUS','STRAIGHT_JOIN','STRIPED','TABLESPACE','TABLES','TABLE',\n            'TEMPORARY','TEMPTABLE','TERMINATED BY','TO','TRANSACTIONS',\n            'TRANSACTION','TRIGGER','TYPES','TYPE','UNCOMMITTED','UNDEFINED',\n            'UNION','UNLOCK_TABLES','UPDATE','USAGE','USE','USER_RESOURCES',\n            'USING','VALUES','VALUE','VIEW','WARNINGS','WHERE','WITH ROLLUP',\n            'WITH','WORK','WRITE',\n            ),\n        2 => array(     //No ( must follow\n            // Mix: statement keywords distinguished from functions by the same name\n            \"CURRENT_USER\", \"DATABASE\", \"IN\", \"INSERT\", \"DEFAULT\", \"REPLACE\", \"SCHEMA\", \"TRUNCATE\"\n            ),\n        3 => array(\n            // Values (Constants)\n            'FALSE','NULL','TRUE',\n            ),\n        4 => array(\n            // Column Data Types\n            'BIGINT','BIT','BLOB','BOOLEAN','BOOL','CHARACTER VARYING',\n            'CHAR VARYING','DATETIME','DECIMAL','DEC','DOUBLE PRECISION',\n            'DOUBLE','ENUM','FIXED','FLOAT','GEOMETRYCOLLECTION','GEOMETRY',\n            'INTEGER','INT','LINESTRING','LONGBLOB','LONGTEXT','MEDIUMBLOB',\n            'MEDIUMINT','MEDIUMTEXT','MULTIPOINT','MULTILINESTRING',\n            'MULTIPOLYGON','NATIONAL CHARACTER','NATIONAL CHARACTER VARYING',\n            'NATIONAL CHAR VARYING','NATIONAL VARCHAR','NCHAR VARCHAR','NCHAR',\n            'NUMERIC','POINT','POLYGON','REAL','SERIAL',\n            'SMALLINT','TEXT','TIMESTAMP','TINYBLOB','TINYINT',\n            'TINYTEXT','VARBINARY','VARCHARACTER','VARCHAR',\n            ),\n        5 => array(     //No ( must follow\n            // Column data types distinguished from functions by the same name\n            \"CHAR\", \"DATE\", \"TIME\"\n            ),\n        6 => array(\n            // Table, Column & Index Attributes\n            'AUTO_INCREMENT','AVG_ROW_LENGTH','BOTH','CHECKSUM','CONNECTION',\n            'DATA DIRECTORY','DEFAULT NULL','DELAY_KEY_WRITE','FULLTEXT',\n            'INDEX DIRECTORY','INSERT_METHOD','LEADING','MAX_ROWS','MIN_ROWS',\n            'NOT NULL','PACK_KEYS','ROW_FORMAT','SERIAL DEFAULT VALUE','SIGNED',\n            'SPATIAL','TRAILING','UNIQUE','UNSIGNED','ZEROFILL'\n            ),\n        7 => array(     //No ( must follow\n            // Column attribute distinguished from function by the same name\n            \"CHARSET\"\n            ),\n        8 => array(\n            // Date and Time Unit Specifiers\n            'DAY_HOUR','DAY_MICROSECOND','DAY_MINUTE','DAY_SECOND',\n            'HOUR_MICROSECOND','HOUR_MINUTE','HOUR_SECOND',\n            'MINUTE_MICROSECOND','MINUTE_SECOND',\n            'SECOND_MICROSECOND','YEAR_MONTH'\n            ),\n        9 => array(     //No ( must follow\n            // Date-time unit specifiers distinguished from functions by the same name\n            \"DAY\", \"HOUR\", \"MICROSECOND\", \"MINUTE\", \"MONTH\", \"QUARTER\", \"SECOND\", \"WEEK\", \"YEAR\"\n            ),\n        10 => array(\n            // Operators (see also Symbols)\n            'AND','BETWEEN','CHARACTER SET','COLLATE','DIV','IS NOT NULL',\n            'IS NOT','IS NULL','IS','LIKE','NOT','OFFSET','OR','REGEXP','RLIKE',\n            'SOUNDS LIKE','XOR'\n            ),\n        11 => array(     //No ( must follow\n            // Operator distinghuished from function by the same name\n            \"INTERVAL\"\n            ),\n        12 => array(\n            // Control Flow (functions)\n            'CASE','ELSE','END','IFNULL','IF','NULLIF','THEN','WHEN',\n            ),\n        13 => array(\n            // String Functions\n            'ASCII','BIN','BIT_LENGTH','CHAR_LENGTH','CHARACTER_LENGTH',\n            'CONCAT_WS','CONCAT','ELT','EXPORT_SET','FIELD',\n            'FIND_IN_SET','FORMAT','HEX','INSTR','LCASE','LEFT','LENGTH',\n            'LOAD_FILE','LOCATE','LOWER','LPAD','LTRIM','MAKE_SET','MID',\n            'OCTET_LENGTH','ORD','POSITION','QUOTE','REPEAT','REVERSE',\n            'RIGHT','RPAD','RTRIM','SOUNDEX','SPACE','STRCMP','SUBSTRING_INDEX',\n            'SUBSTRING','TRIM','UCASE','UNHEX','UPPER',\n            ),\n        14 => array(     //A ( must follow\n            // String functions distinguished from other keywords by the same name\n            \"INSERT\", \"REPLACE\", \"CHAR\"\n            ),\n        15 => array(\n            // Numeric Functions\n            'ABS','ACOS','ASIN','ATAN2','ATAN','CEILING','CEIL',\n            'CONV','COS','COT','CRC32','DEGREES','EXP','FLOOR','LN','LOG10',\n            'LOG2','LOG','MOD','OCT','PI','POWER','POW','RADIANS','RAND',\n            'ROUND','SIGN','SIN','SQRT','TAN',\n            ),\n        16 => array(     //A ( must follow\n            // Numeric function distinguished from other keyword by the same name\n            \"TRUNCATE\"\n            ),\n        17 => array(\n            // Date and Time Functions\n            'ADDDATE','ADDTIME','CONVERT_TZ','CURDATE','CURRENT_DATE',\n            'CURRENT_TIME','CURRENT_TIMESTAMP','CURTIME','DATE_ADD',\n            'DATE_FORMAT','DATE_SUB','DATEDIFF','DAYNAME','DAYOFMONTH',\n            'DAYOFWEEK','DAYOFYEAR','EXTRACT','FROM_DAYS','FROM_UNIXTIME',\n            'GET_FORMAT','LAST_DAY','LOCALTIME','LOCALTIMESTAMP','MAKEDATE',\n            'MAKETIME','MONTHNAME','NOW','PERIOD_ADD',\n            'PERIOD_DIFF','SEC_TO_TIME','STR_TO_DATE','SUBDATE','SUBTIME',\n            'SYSDATE','TIME_FORMAT','TIME_TO_SEC',\n            'TIMESTAMPADD','TIMESTAMPDIFF','TO_DAYS',\n            'UNIX_TIMESTAMP','UTC_DATE','UTC_TIME','UTC_TIMESTAMP','WEEKDAY',\n            'WEEKOFYEAR','YEARWEEK',\n            ),\n        18 => array(     //A ( must follow\n            // Date-time functions distinguished from other keywords by the same name\n            \"DATE\", \"DAY\", \"HOUR\", \"MICROSECOND\", \"MINUTE\", \"MONTH\", \"QUARTER\",\n            \"SECOND\", \"TIME\", \"WEEK\", \"YEAR\"\n            ),\n        19 => array(\n            // Comparison Functions\n            'COALESCE','GREATEST','ISNULL','LEAST',\n            ),\n        20 => array(     //A ( must follow\n            // Comparison functions distinguished from other keywords by the same name\n            \"IN\", \"INTERVAL\"\n            ),\n        21 => array(\n            // Encryption and Compression Functions\n            'AES_DECRYPT','AES_ENCRYPT','COMPRESS','DECODE','DES_DECRYPT',\n            'DES_ENCRYPT','ENCODE','ENCRYPT','MD5','OLD_PASSWORD','PASSWORD',\n            'SHA1','SHA','UNCOMPRESS','UNCOMPRESSED_LENGTH',\n            ),\n        22 => array(\n            // GROUP BY (aggregate) Functions\n            'AVG','BIT_AND','BIT_OR','BIT_XOR','COUNT','GROUP_CONCAT',\n            'MAX','MIN','STDDEV_POP','STDDEV_SAMP','STDDEV','STD','SUM',\n            'VAR_POP','VAR_SAMP','VARIANCE',\n            ),\n        23 => array(\n            // Information Functions\n            'BENCHMARK','COERCIBILITY','COLLATION','CONNECTION_ID',\n            'FOUND_ROWS','LAST_INSERT_ID','ROW_COUNT',\n            'SESSION_USER','SYSTEM_USER','USER','VERSION',\n            ),\n        24 => array(     //A ( must follow\n            // Information functions distinguished from other keywords by the same name\n            \"CURRENT_USER\", \"DATABASE\", \"SCHEMA\", \"CHARSET\"\n            ),\n        25 => array(\n            // Miscellaneous Functions\n            'ExtractValue','BIT_COUNT','GET_LOCK','INET_ATON','INET_NTOA',\n            'IS_FREE_LOCK','IS_USED_LOCK','MASTER_POS_WAIT','NAME_CONST',\n            'RELEASE_LOCK','SLEEP','UpdateXML','UUID',\n            ),\n        26 => array(     //A ( must follow\n            // Miscellaneous function distinguished from other keyword by the same name\n            \"DEFAULT\"\n            ),\n        27 => array(\n            // Geometry Functions\n            'Area','AsBinary','AsText','AsWKB','AsWKT','Boundary','Buffer',\n            'Centroid','Contains','ConvexHull','Crosses',\n            'Difference','Dimension','Disjoint','Distance',\n            'EndPoint','Envelope','Equals','ExteriorRing',\n            'GLength','GeomCollFromText','GeomCollFromWKB','GeomFromText',\n            'GeomFromWKB','GeometryCollectionFromText',\n            'GeometryCollectionFromWKB','GeometryFromText','GeometryFromWKB',\n            'GeometryN','GeometryType',\n            'InteriorRingN','Intersection','Intersects','IsClosed','IsEmpty',\n            'IsRing','IsSimple',\n            'LineFromText','LineFromWKB','LineStringFromText',\n            'LineStringFromWKB',\n            'MBRContains','MBRDisjoint','MBREqual','MBRIntersects',\n            'MBROverlaps','MBRTouches','MBRWithin','MLineFromText',\n            'MLineFromWKB','MPointFromText','MPointFromWKB','MPolyFromText',\n            'MPolyFromWKB','MultiLineStringFromText','MultiLineStringFromWKB',\n            'MultiPointFromText','MultiPointFromWKB','MultiPolygonFromText',\n            'MultiPolygonFromWKB',\n            'NumGeometries','NumInteriorRings','NumPoints',\n            'Overlaps',\n            'PointFromText','PointFromWKB','PointN','PointOnSurface',\n            'PolyFromText','PolyFromWKB','PolygonFromText','PolygonFromWKB',\n            'Related','SRID','StartPoint','SymDifference',\n            'Touches',\n            'Union',\n            'Within',\n            'X',\n            'Y',\n            ),\n        ),\n    'SYMBOLS' => array(\n        1 => array(\n            /* Operators */\n            '=', ':=',                                      // assignment operators\n            '||', '&&', '!',                                // locical operators\n            '=', '<=>', '>=', '>', '<=', '<', '<>', '!=',   // comparison operators\n            '|', '&', '^', '~', '<<', '>>',                 // bitwise operators\n            '-', '+', '*', '/', '%',                        // numerical operators\n            ),\n        2 => array(\n            /* Other syntactical symbols */\n            '(', ')',\n            ',', ';',\n            ),\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false,\n        8 => false,\n        9 => false,\n        10 => false,\n        11 => false,\n        12 => false,\n        13 => false,\n        14 => false,\n        15 => false,\n        16 => false,\n        17 => false,\n        18 => false,\n        19 => false,\n        20 => false,\n        21 => false,\n        22 => false,\n        23 => false,\n        24 => false,\n        25 => false,\n        26 => false,\n        27 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #990099; font-weight: bold;',      // mix\n            2 => 'color: #990099; font-weight: bold;',      // mix\n            3 => 'color: #9900FF; font-weight: bold;',      // constants\n            4 => 'color: #999900; font-weight: bold;',      // column data types\n            5 => 'color: #999900; font-weight: bold;',      // column data types\n            6 => 'color: #FF9900; font-weight: bold;',      // attributes\n            7 => 'color: #FF9900; font-weight: bold;',      // attributes\n            8 => 'color: #9900FF; font-weight: bold;',      // date-time units\n            9 => 'color: #9900FF; font-weight: bold;',      // date-time units\n\n            10 => 'color: #CC0099; font-weight: bold;',      // operators\n            11 => 'color: #CC0099; font-weight: bold;',      // operators\n\n            12 => 'color: #009900;',     // control flow (functions)\n            13 => 'color: #000099;',     // string functions\n            14 => 'color: #000099;',     // string functions\n            15 => 'color: #000099;',     // numeric functions\n            16 => 'color: #000099;',     // numeric functions\n            17 => 'color: #000099;',     // date-time functions\n            18 => 'color: #000099;',     // date-time functions\n            19 => 'color: #000099;',     // comparison functions\n            20 => 'color: #000099;',     // comparison functions\n            21 => 'color: #000099;',     // encryption functions\n            22 => 'color: #000099;',     // aggregate functions\n            23 => 'color: #000099;',     // information functions\n            24 => 'color: #000099;',     // information functions\n            25 => 'color: #000099;',     // miscellaneous functions\n            26 => 'color: #000099;',     // miscellaneous functions\n            27 => 'color: #00CC00;',     // geometry functions\n            ),\n        'COMMENTS' => array(\n            'MULTI' => 'color: #808000; font-style: italic;',\n            1 => 'color: #808080; font-style: italic;',\n            2 => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #004000; font-weight: bold;',\n            1 => 'color: #008080; font-weight: bold;'       // search wildcards\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #FF00FF;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #008000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #008080;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            1 => 'color: #CC0099;',         // operators\n            2 => 'color: #000033;',         // syntax\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => 'https://www.oracle.com/search/results?cat=mysql&amp;Ntk=SI-ALL5&amp;Ntt={FNAME}',\n        2 => 'https://www.oracle.com/search/results?cat=mysql&amp;Ntk=SI-ALL5&amp;Ntt={FNAME}',\n        3 => 'https://www.oracle.com/search/results?cat=mysql&amp;Ntk=SI-ALL5&amp;Ntt={FNAME}',\n        4 => 'https://www.oracle.com/search/results?cat=mysql&amp;Ntk=SI-ALL5&amp;Ntt={FNAME}',\n        5 => 'https://www.oracle.com/search/results?cat=mysql&amp;Ntk=SI-ALL5&amp;Ntt={FNAME}',\n        6 => 'https://www.oracle.com/search/results?cat=mysql&amp;Ntk=SI-ALL5&amp;Ntt={FNAME}',\n        7 => 'https://www.oracle.com/search/results?cat=mysql&amp;Ntk=SI-ALL5&amp;Ntt={FNAME}',\n        8 => 'https://www.oracle.com/search/results?cat=mysql&amp;Ntk=SI-ALL5&amp;Ntt={FNAME}',\n        9 => 'https://www.oracle.com/search/results?cat=mysql&amp;Ntk=SI-ALL5&amp;Ntt={FNAME}',\n\n        10 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html',\n        11 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html',\n\n        12 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/control-flow-functions.html',\n        13 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/string-functions.html',\n        14 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/string-functions.html',\n        15 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/numeric-functions.html',\n        16 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/numeric-functions.html',\n        17 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/date-and-time-functions.html',\n        18 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/date-and-time-functions.html',\n        19 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/comparison-operators.html',\n        20 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/comparison-operators.html',\n        21 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/encryption-functions.html',\n        22 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/group-by-functions-and-modifiers.html',\n        23 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/information-functions.html',\n        24 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/information-functions.html',\n        25 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/func-op-summary-ref.html',\n        26 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/func-op-summary-ref.html',\n        27 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/analysing-spatial-information.html',\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            2 => array(\n                'DISALLOWED_AFTER' => '(?![\\(\\w])'\n                ),\n            5 => array(\n                'DISALLOWED_AFTER' => '(?![\\(\\w])'\n                ),\n            7 => array(\n                'DISALLOWED_AFTER' => '(?![\\(\\w])'\n                ),\n            9 => array(\n                'DISALLOWED_AFTER' => '(?![\\(\\w])'\n                ),\n            11 => array(\n                'DISALLOWED_AFTER' => '(?![\\(\\w])'\n                ),\n\n            14 => array(\n                'DISALLOWED_AFTER' => '(?=\\()'\n                ),\n            16 => array(\n                'DISALLOWED_AFTER' => '(?=\\()'\n                ),\n            18 => array(\n                'DISALLOWED_AFTER' => '(?=\\()'\n                ),\n            20 => array(\n                'DISALLOWED_AFTER' => '(?=\\()'\n                ),\n            24 => array(\n                'DISALLOWED_AFTER' => '(?=\\()'\n                ),\n            26 => array(\n                'DISALLOWED_AFTER' => '(?=\\()'\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/nagios.php",
    "content": "<?php\n/*************************************************************************************\n * nagios.php\n * --------\n * Author: Albéric de Pertat <alberic@depertat.net>\n * Copyright: (c) 2012 Albéric de Pertat (https://github.com/adepertat/geshi-nagios)\n * Release Version: 1.0.9.1\n * Date Started: 2012/01/19\n *\n * Nagios language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2012/01/19 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2012/01/19)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Nagios',\n    'COMMENT_SINGLE' => array(1 => ';', 2 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'HARDQUOTE' => array(\"'\", \"'\"),\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\'',\n    'KEYWORDS' => array(\n        1 => array(\n            'define'\n            ),\n        2 => array(\n            'command', 'contact', 'contactgroup', 'host', 'hostdependency',\n            'hostescalation', 'hostextinfo', 'hostgroup', 'service',\n            'servicedependency', 'serviceescalation',\n            'serviceextinfo', 'servicegroup', 'timeperiod'\n            ),\n        3 => array(\n            'active_checks_enabled', 'passive_checks_enabled', 'alias',\n            'display_name', 'host_name', 'address', 'hostgroups', 'parents',\n            'hostgroup_members', 'members', 'service_description',\n            'servicegroups', 'is_volatile', 'servicegroup_name',\n            'servicegroup_members', 'contact_name', 'contactgroups', 'email',\n            'pager', 'can_submit_commands', 'contactgroup_name',\n            'contactgroup_members', 'host_notifications_enabled',\n            'service_notifications_enabled', 'host_notification_period',\n            'service_notification_period', 'host_notification_options',\n            'service_notification_options', 'host_notification_commands',\n            'service_notification_commands', 'check_command',\n            'check_freshness', 'check_interval', 'check_period', 'contacts',\n            'contact_groups', 'event_handler', 'event_handler_enabled',\n            'flap_detection_enabled', 'flap_detection_options',\n            'freshness_threshold', 'initial_state', 'low_flap_threshold',\n            'high_flap_threshold', 'max_check_attempts',\n            'notification_interval', 'first_notification_delay',\n            'notification_period', 'notification_options',\n            'notifications_enabled', 'stalking_options', 'notes', 'notes_url',\n            'action_url', 'icon_image', 'icon_image_alt', 'vrml_image',\n            'statusmap_image', '2d_coords', '3d_coords', 'obsess_over_host',\n            'obsess_over_hostver_service', 'process_perf_data',\n            'retain_status_information', 'retain_nonstatus_information',\n            'retry_interval', 'register', 'use', 'name', 'timeperiod_name',\n            'exclude', 'command_name', 'command_line', 'dependent_host_name',\n            'dependent_hostgroup_name', 'dependent_service_description',\n            'inherits_parent', 'execution_failure_criteria',\n            'notification_failure_criteria', 'dependency_period',\n            'first_notification', 'last_notification', 'escalation_period',\n            'escalation_options'\n            ),\n        4 => array(\n            'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday',\n            'sunday', 'january', 'february', 'march', 'april', 'may', 'june',\n            'july', 'august', 'september', 'october', 'november', 'december',\n            'day'\n            )\n        ),\n    'SYMBOLS' => array(\n        0 => array(\n            '{', '}', ',', '+'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'font-weight:bold;color:#FFDCA8;',\n            2 => 'font-weight:bold;color #FFA858;',\n            3 => 'font-weight:bold;color:#00C0C0;',\n            4 => 'font-weight:bold;color:#C0C0FF;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'font-weight:bold;color:#000000;'\n            ),\n        'NUMBERS' => array(\n            0 => ''\n            ),\n        'COMMENTS' => array(\n            0 => 'color: #AAAAAA; font-style: italic;',\n            1 => 'color: #AAAAAA; font-style: italic;',\n            2 => 'color: #AAAAAA; font-style: italic;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #660066;',\n            'HARD' => 'color: #660066;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;'\n            ),\n        'REGEXPS' => array(\n            0 => 'font-weight:bold;color:#808080;',\n            1 => 'font-weight:bold;color:#000080;',\n            2 => 'font-weight:bold;color:red;',\n            3 => 'font-weight:bold;color:#808000;',\n            4 => 'font-weight:bold;color:blue;',\n            5 => 'font-weight:bold;color:#C0FFC0;',\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            )\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        1 => '\\\\'\n        ),\n    'REGEXPS' => array(\n        // Custom macros\n        0 => array(\n            GESHI_SEARCH => '(\\$[a-zA-Z_]+\\$)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '',\n            ),\n        // Custom macro definitions\n        1 => array(\n            GESHI_SEARCH => '(\\A|\\s)(_[a-zA-Z_]+)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '',\n            ),\n        // $USERxx$\n        2 => array(\n            GESHI_SEARCH => '(\\$USER[0-9]+\\$)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '',\n            ),\n        // $ARGxx$\n        3 => array(\n            GESHI_SEARCH => '(\\$ARG[1-9]\\$)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '',\n            ),\n        // register 0\n        4 => array(\n            GESHI_SEARCH => '(\\bregister[\\\\x20\\\\t]+[01])',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '',\n            ),\n        // use\n        5 => array(\n            GESHI_SEARCH => '(use[\\\\x20\\\\t]+[^\\\\x20\\\\t]+)([\\\\x20\\\\t]*[$;#])',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '',\n            ),\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => false\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'NUMBERS' => GESHI_NEVER\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/netrexx.php",
    "content": "<?php\n/*************************************************************************************\n * netrexx.php\n * ---------------------------------\n * Author: Jon Wolfers (sahananda@windhorse.biz)\n * Contributors:\n *    - Walter Pachl (pachl@chello.at)\n * Copyright: (c) 2008 Jon Wolfers, (c) 2012 Walter Pachl\n * Release Version: 1.0.9.1\n * Date Started: 2008/01/07\n *\n * NetRexx language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2012/07/29 (1.0.0)\n *    -  tried to get it syntactically right\n *\n * TODO (updated 2012/07/29)\n * -------------------------\n *   -  Get it working on rosettacode.org\n *\n *************************************************************************************\n *\n *      This file is part of GeSHi.\n *\n *    GeSHi is free software; you can redistribute it and/or modify\n *    it under the terms of the GNU General Public License as published by\n *    the Free Software Foundation; either version 2 of the License, or\n *    (at your option) any later version.\n *\n *    GeSHi is distributed in the hope that it will be useful,\n *    but WITHOUT ANY WARRANTY; without even the implied warranty of\n *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *    GNU General Public License for more details.\n *\n *    You should have received a copy of the GNU General Public License\n *    along with GeSHi; if not, write to the Free Software\n *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'NetRexx',\n    'COMMENT_SINGLE' => array(1 => '--'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'class', 'do', 'exit', 'if', 'import', 'iterate', 'leave',\n            'loop', 'nop', 'numeric', 'package', 'parse', 'properties',\n            'return', 'say', 'select', 'signal', 'trace'\n            ),\n        2 => array(\n            'abstract', 'adapter', 'all', 'ask', 'binary', 'case',\n            'constant', 'dependent', 'deprecated', 'extends', 'final',\n            'implements', 'inheritable', 'interface', 'label', 'methods',\n            'native', 'off', 'private', 'protect', 'public', 'results',\n            'returns', 'shared', 'signals', 'source', 'static',\n            'transient', 'unused', 'uses', 'version', 'volatile'\n            ),\n        3 => array(\n            'catch', 'else', 'end', 'finally', 'otherwise', 'then', 'when'\n            ),\n        4 => array(\n            'rc', 'result', 'self', 'sigl', 'super'\n            ),\n        5 => array(\n            'placeholderforoorexxdirectives'\n            ),\n        6 => array(\n            'abbrev', 'abs', 'b2x', 'c2d', 'c2x', 'center', 'centre',\n            'changestr', 'compare', 'copies', 'copyindexed', 'countstr',\n            'd2c', 'd2x', 'datatype', 'delstr', 'delword', 'exists',\n            'formword', 'hashcode', 'insert', 'lastpos', 'left', 'lower',\n            'max', 'min', 'noteq', 'noteqs', 'opadd', 'opand', 'opcc',\n            'opccblank', 'opdiv', 'opdivi', 'opeq', 'opeqs', 'opgt',\n            'opgteq', 'opgteqs', 'opgts', 'oplt', 'oplteq', 'oplteqs',\n            'oplts', 'opminus', 'opmult', 'opnot', 'opor', 'opplus',\n            'oppow', 'oprem', 'opsub', 'opxor', 'overlay', 'pos position',\n            'reverse', 'right', 'sequence', 'setdigits', 'setform',\n            'sign', 'space', 'strip', 'substr', 'subword', 'toboolean',\n            'tobyte', 'tochar', 'todouble', 'tofloat', 'toint', 'tolong',\n            'toshort', 'tostring', 'translate', 'trunc', 'upper',\n            'verify', 'word', 'wordindex', 'wordlength', 'wordpos',\n            'words', 'x2b', 'x2c', 'x2d'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '<', '>', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':',\n        '<', '>'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => true,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #ff0000; font-weight: bold;',\n            3 => 'color: #00ff00; font-weight: bold;',\n            4 => 'color: #0000ff; font-weight: bold;',\n            5 => 'color: #880088; font-weight: bold;',\n            6 => 'color: #888800; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666;',\n            'MULTI' => 'color: #808080;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;',\n            2 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/newlisp.php",
    "content": "<?php\n/*************************************************************************************\n * newlisp.php\n * ----------\n * Author: cormullion (cormullion@mac.com) Sept 2009\n * Copyright: (c) 2009 Cormullion (http://unbalanced-parentheses.nfshost.com/)\n * Release Version: 1.0.9.1\n * Date Started: 2009/09/30\n *\n * newLISP language file for GeSHi.\n *\n * based on work by Lutz Mueller and Jeff Ober\n *\n * CHANGES\n * -------\n * 2009/09/30 (1.0.8.6)\n *  -  First Release\n *\n * TODO (updated 2009/09/30)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'newlisp',\n    'COMMENT_SINGLE' => array(1 => ';', 2 => '#'),\n    'COMMENT_MULTI' => array('[text]' => '[/text]', '{' => '}'), // also used for strings\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'NUMBERS' => GESHI_NUMBER_INT_BASIC |  GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_SCI_ZERO,\n    'TAB_WIDTH' => 2,\n    'KEYWORDS' => array(\n        1 => array(\n            'NaN?','abort','abs','acos','acosh','add','address','amb','and',\n            'append','append-file','apply','args','array','array-list','array?',\n            'asin','asinh','assoc','atan','atan2','atanh','atom?','base64-dec',\n            'base64-enc','bayes-query','bayes-train','begin','beta','betai',\n            'bind','binomial','bits','callback','case','catch','ceil',\n            'change-dir','char','chop','clean','close','command-event','cond',\n            'cons','constant','context','context?','copy','copy-file','cos',\n            'cosh','count','cpymem','crc32','crit-chi2','crit-z','current-line',\n            'curry','date','date-value','debug','dec','def-new','default',\n            'define','define-macro','delete','delete-file','delete-url',\n            'destroy','det','device','difference','directory','directory?',\n            'div','do-until','do-while','doargs','dolist','dostring','dotimes',\n            'dotree','dump','dup','empty?','encrypt','ends-with','env','erf',\n            'error-event','estack','eval','eval-string','exec','exists','exit',\n            'exp','expand','explode','factor','fft','file-info','file?',\n            'filter','find','find-all','first','flat','float','float?','floor',\n            'flt','for','for-all','fork','format','fv','gammai','gammaln','gcd',\n            'get-char','get-float','get-int','get-long','get-string','get-url',\n            'global','global?','if','if-not','ifft','import','inc','index',\n            'inf?','int','integer','integer?','intersect','invert','irr','join',\n            'lambda','lambda?','last','last-error','legal?','length','let',\n            'letex','letn','list','list?','load','local','log','lookup',\n            'lower-case','macro?','main-args','make-dir','map','mat','match',\n            'max','member','min','mod','mul','multiply','name','net-accept',\n            'net-close','net-connect','net-error','net-eval','net-interface',\n            'net-listen','net-local','net-lookup','net-peek','net-peer',\n            'net-ping','net-receive','net-receive-from','net-receive-udp',\n            'net-select','net-send','net-send-to','net-send-udp','net-service',\n            'net-sessions','new','nil','nil?','normal','not','now','nper','npv',\n            'nth','null?','number?','open','or','pack','parse','parse-date',\n            'peek','pipe','pmt','pop','pop-assoc','post-url','pow',\n            'pretty-print','primitive?','print','println','prob-chi2','prob-z',\n            'process','prompt-event','protected?','push','put-url','pv','quote',\n            'quote?','rand','random','randomize','read-buffer','read-char',\n            'read-expr','read-file','read-key','read-line','read-utf8',\n            'real-path','receive','ref','ref-all','regex','regex-comp',\n            'remove-dir','rename-file','replace','reset','rest','reverse',\n            'rotate','round','save','search','seed','seek','select','semaphore',\n            'send','sequence','series','set','set-locale','set-ref',\n            'set-ref-all','setf','setq','sgn','share','signal','silent','sin',\n            'sinh','sleep','slice','sort','source','spawn','sqrt','starts-with',\n            'string','string?','sub','swap','sym','symbol?','symbols','sync',\n            'sys-error','sys-info','tan','tanh','throw','throw-error','time',\n            'time-of-day','timer','title-case','trace','trace-highlight',\n            'transpose','trim','true','true?','unicode','unify','unique',\n            'unless','unpack','until','upper-case','utf8','utf8len','uuid',\n            'wait-pid','when','while','write-buffer','write-char','write-file',\n            'write-line','xfer-event','xml-error','xml-parse','xml-type-tags',\n            'zero?'\n            )\n        ),\n    'SYMBOLS' => array(\n        0 => array(\n            '(', ')','\\''\n            ),\n        1 => array(\n            '!','!=','$','%','&','*','+','-','/',':',\n            '<','<<','<=','=','>','>=','>>','^','|'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000AA;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            2 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #00aa00; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #009900;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #009900;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #777700;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #000099;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #AA0000;',\n            1 => 'color: #0000AA;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #00aa00;',\n            1 => 'color: #00aa00;',\n            2 => 'color: #00aa00;',\n            3 => 'color: #00aa00;',\n            4 => 'color: #00aa00;',\n            5 => 'color: #AA0000;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => 'http://www.newlisp.org/downloads/newlisp_manual.html#{FNAME}'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(':'),\n    'REGEXPS' => array(\n        // tags in newlispdoc\n        0 => \"\\s+@\\S*?\\s+\",\n        // dollar sign symbols\n        1 => \"[\\\\$]\\w*\",\n        // curly-braced string literals\n        2 => \"{[^{}]*?}\",\n        // [text] multi-line strings\n        3 => \"(?s)\\[text\\].*\\[\\/text\\](?-s)\",\n        // [code] multi-line blocks\n        4 => \"(?s)\\[code\\].*\\[\\/code\\](?-s)\",\n        // variable references\n        5 => \"'[\\w\\-]+\"\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'OOLANG' => array(\n            'MATCH_AFTER' => '[a-zA-Z][a-zA-Z0-9_\\-]*'\n            ),\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => '(?<=[^\\w\\-])',\n            )\n        ),\n\n);\n"
  },
  {
    "path": "includes/geshi/nginx.php",
    "content": "<?php\n/*************************************************************************************\n * nginx.php\n * ------\n * Author: Cliff Wells (cliff@nginx.org)\n * Copyright: (c) Cliff Wells (http://wiki.nginx.org/CliffWells)\n * Contributors:\n *  - Deoren Moor (http://www.whyaskwhy.org/blog/)\n *  - Thomas Joiner\n * Release Version: 1.0.9.1\n * Date Started: 2010/08/24\n *\n * nginx language file for GeSHi.\n *\n * Original release found at http://forum.nginx.org/read.php?2,123194,123210\n *\n * CHANGES\n * -------\n * 2012/08/29\n *   - Clean up the duplicate keywords\n *\n * 2012/08/26\n *   - Synchronized with directives listed on wiki/doc pages\n *   - Misc formatting tweaks and language fixes to pass langcheck\n *\n * 2010/08/24\n *   - First Release\n *\n * TODO (updated 2012/08/26)\n * -------------------------\n *  - Verify PARSER_CONTROL items are correct\n *  - Verify REGEXPS\n *  - Verify ['STYLES']['REGEXPS'] entries\n *\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'nginx',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array( // core module\n            // http://wiki.nginx.org/CoreModule\n            // http://nginx.org/en/docs/ngx_core_module.html\n            'daemon',\n            'debug_points',\n            'env',\n            'error_log',\n            'events',\n            'include',\n            'lock_file',\n            'master_process',\n            'pcre_jit',\n            'pid',\n            'ssl_engine',\n            'timer_resolution',\n            'user',\n            'worker_cpu_affinity',\n            'worker_priority',\n            'worker_processes',\n            'worker_rlimit_core',\n            'worker_rlimit_nofile',\n            'worker_rlimit_sigpending',\n            'working_directory',\n            // see EventsModule due to organization of wiki\n            //'accept_mutex',\n            //'accept_mutex_delay',\n            //'debug_connection',\n            //'multi_accept',\n            //'use',\n            //'worker_connections',\n            ),\n        2 => array( // events module\n            // http://wiki.nginx.org/EventsModule\n            // http://nginx.org/en/docs/ngx_core_module.html\n            'accept_mutex',\n            'accept_mutex_delay',\n            'debug_connection',\n            'devpoll_changes',\n            'devpoll_events',\n            'kqueue_changes',\n            'kqueue_events',\n            'epoll_events',\n            'multi_accept',\n            'rtsig_signo',\n            'rtsig_overflow_events',\n            'rtsig_overflow_test',\n            'rtsig_overflow_threshold',\n            'use',\n            'worker_connections',\n            ),\n        3 => array( // http module\n            // http://wiki.nginx.org/HttpCoreModule\n            // http://nginx.org/en/docs/http/ngx_http_core_module.html\n            'aio',\n            'alias',\n            'chunked_transfer_encoding',\n            'client_body_buffer_size',\n            'client_body_in_file_only',\n            'client_body_in_single_buffer',\n            'client_body_temp_path',\n            'client_body_timeout',\n            'client_header_buffer_size',\n            'client_header_timeout',\n            'client_max_body_size',\n            'connection_pool_size',\n            'default_type',\n            'directio',\n            'directio_alignment',\n            'disable_symlinks',\n            'error_page',\n            'etag',\n            'http',\n            'if_modified_since',\n            'ignore_invalid_headers',\n            'internal',\n            'keepalive_disable',\n            'keepalive_requests',\n            'keepalive_timeout',\n            'large_client_header_buffers',\n            'limit_except',\n            'limit_rate',\n            'limit_rate_after',\n            'lingering_close',\n            'lingering_time',\n            'lingering_timeout',\n            'listen',\n            'location',\n            'log_not_found',\n            'log_subrequest',\n            'max_ranges',\n            'merge_slashes',\n            'msie_padding',\n            'msie_refresh',\n            'open_file_cache',\n            'open_file_cache_errors',\n            'open_file_cache_min_uses',\n            'open_file_cache_valid',\n            'optimize_server_names',\n            'port_in_redirect',\n            'postpone_output',\n            'read_ahead',\n            'recursive_error_pages',\n            'request_pool_size',\n            'reset_timedout_connection',\n            'resolver',\n            'resolver_timeout',\n            'root',\n            'satisfy',\n            'satisfy_any',\n            'send_lowat',\n            'send_timeout',\n            'sendfile',\n            'sendfile_max_chunk',\n            'server',\n            'server_name',\n            'server_name_in_redirect',\n            'server_names_hash_bucket_size',\n            'server_names_hash_max_size',\n            'server_tokens',\n            'tcp_nodelay',\n            'tcp_nopush',\n            'try_files',\n            'types',\n            'types_hash_bucket_size',\n            'types_hash_max_size',\n            'underscores_in_headers',\n            'variables_hash_bucket_size',\n            'variables_hash_max_size',\n            ),\n        4 => array( // upstream module\n            // http://wiki.nginx.org/HttpUpstreamModule\n            // http://nginx.org/en/docs/http/ngx_http_upstream_module.html\n            'ip_hash',\n            'keepalive',\n            'least_conn',\n            // Use the documentation from the core module since every conf will have at least one of those.\n            //'server',\n            'upstream',\n            ),\n        5 => array( // access module\n            // http://wiki.nginx.org/HttpAccessModule\n            // http://nginx.org/en/docs/http/ngx_http_access_module.html\n            'deny',\n            'allow',\n            ),\n        6 => array( // auth basic module\n            // http://wiki.nginx.org/HttpAuthBasicModule\n            // http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html\n            'auth_basic',\n            'auth_basic_user_file'\n            ),\n        7 => array( // auto index module\n            // http://wiki.nginx.org/HttpAutoindexModule\n            // http://nginx.org/en/docs/http/ngx_http_autoindex_module.html\n            'autoindex',\n            'autoindex_exact_size',\n            'autoindex_localtime',\n            ),\n        8 => array( // browser module\n            // http://wiki.nginx.org/HttpBrowserModule\n            // http://nginx.org/en/docs/http/ngx_http_browser_module.html\n            'ancient_browser',\n            'ancient_browser_value',\n            'modern_browser',\n            'modern_browser_value',\n            ),\n        9 => array( // charset module\n            // http://wiki.nginx.org/HttpCharsetModule\n            // http://nginx.org/en/docs/http/ngx_http_charset_module.html\n            'charset',\n            'charset_map',\n            'charset_types',\n            'override_charset',\n            'source_charset',\n            ),\n        10 => array( // empty gif module\n            // http://wiki.nginx.org/HttpEmptyGifModule\n            // http://nginx.org/en/docs/http/ngx_http_empty_gif_module.html\n            'empty_gif',\n            ),\n        11 => array( // fastcgi module\n            // http://wiki.nginx.org/HttpFastcgiModule\n            // http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html\n            'fastcgi_bind',\n            'fastcgi_buffer_size',\n            'fastcgi_buffers',\n            'fastcgi_busy_buffers_size',\n            'fastcgi_cache',\n            'fastcgi_cache_bypass',\n            'fastcgi_cache_key',\n            'fastcgi_cache_lock',\n            'fastcgi_cache_lock_timeout',\n            'fastcgi_cache_methods',\n            'fastcgi_cache_min_uses',\n            'fastcgi_cache_path',\n            'fastcgi_cache_use_stale',\n            'fastcgi_cache_valid',\n            'fastcgi_connect_timeout',\n            'fastcgi_hide_header',\n            'fastcgi_ignore_client_abort',\n            'fastcgi_ignore_headers',\n            'fastcgi_index',\n            'fastcgi_intercept_errors',\n            'fastcgi_keep_conn',\n            'fastcgi_max_temp_file_size',\n            'fastcgi_next_upstream',\n            'fastcgi_no_cache',\n            'fastcgi_param',\n            'fastcgi_pass',\n            'fastcgi_pass_header',\n            'fastcgi_pass_request_body',\n            'fastcgi_pass_request_headers',\n            'fastcgi_read_timeout',\n            'fastcgi_redirect_errors',\n            'fastcgi_send_timeout',\n            'fastcgi_split_path_info',\n            'fastcgi_store',\n            'fastcgi_store_access',\n            'fastcgi_temp_file_write_size',\n            'fastcgi_temp_path',\n            ),\n        12 => array( // geo module\n            // http://wiki.nginx.org/HttpGeoModule\n            // http://nginx.org/en/docs/http/ngx_http_geo_module.html\n            'geo'\n            ),\n        13 => array( // gzip module\n            // http://wiki.nginx.org/HttpGzipModule\n            // http://nginx.org/en/docs/http/ngx_http_gzip_module.html\n            'gzip',\n            'gzip_buffers',\n            'gzip_comp_level',\n            'gzip_disable',\n            'gzip_min_length',\n            'gzip_http_version',\n            'gzip_proxied',\n            'gzip_types',\n            'gzip_vary',\n            ),\n        14 => array( // headers module\n            // http://wiki.nginx.org/HttpHeadersModule\n            // http://nginx.org/en/docs/http/ngx_http_headers_module.html\n            'add_header',\n            'expires',\n            ),\n        15 => array( // index module\n            // http://wiki.nginx.org/HttpIndexModule\n            // http://nginx.org/en/docs/http/ngx_http_index_module.html\n            'index',\n            ),\n        16 => array( // limit requests module\n            // http://wiki.nginx.org/HttpLimitReqModule\n            // http://nginx.org/en/docs/http/ngx_http_limit_req_module.html\n            'limit_req',\n            'limit_req_log_level',\n            'limit_req_zone',\n            ),\n        17 => array( // referer module\n            // http://wiki.nginx.org/HttpRefererModule\n            // http://nginx.org/en/docs/http/ngx_http_referer_module.html\n            'referer_hash_bucket_size',\n            'referer_hash_max_size',\n            'valid_referers',\n            ),\n        18 => array( // limit zone module\n            // deprecated in 1.1.8\n            // http://wiki.nginx.org/HttpLimitZoneModule\n            'limit_zone',\n            // Covered by documentation for ngx_http_limit_conn_module\n            //'limit_conn',\n            ),\n        19 => array( // limit connection module\n            // http://wiki.nginx.org/HttpLimitConnModule\n            // http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html\n            'limit_conn',\n            'limit_conn_zone',\n            'limit_conn_log_level',\n            ),\n        20 => array( // log module\n            // http://wiki.nginx.org/HttpLogModule\n            // http://nginx.org/en/docs/http/ngx_http_log_module.html\n            'access_log',\n            'log_format',\n            // Appears to be deprecated\n            'log_format_combined',\n            'open_log_file_cache',\n            ),\n        21 => array( // map module\n            // http://wiki.nginx.org/HttpMapModule\n            // http://nginx.org/en/docs/http/ngx_http_map_module.html\n            'map',\n            'map_hash_max_size',\n            'map_hash_bucket_size',\n            ),\n        22 => array( // memcached module\n            // http://wiki.nginx.org/HttpMemcachedModule\n            // http://nginx.org/en/docs/http/ngx_http_memcached_module.html\n            'memcached_buffer_size',\n            'memcached_connect_timeout',\n            'memcached_next_upstream',\n            'memcached_pass',\n            'memcached_read_timeout',\n            'memcached_send_timeout',\n            ),\n        23 => array( // proxy module\n            // http://wiki.nginx.org/HttpProxyModule\n            // http://nginx.org/en/docs/http/ngx_http_proxy_module.html\n            'proxy_bind',\n            'proxy_buffer_size',\n            'proxy_buffering',\n            'proxy_buffers',\n            'proxy_busy_buffers_size',\n            'proxy_cache',\n            'proxy_cache_bypass',\n            'proxy_cache_key',\n            'proxy_cache_lock',\n            'proxy_cache_lock_timeout',\n            'proxy_cache_methods',\n            'proxy_cache_min_uses',\n            'proxy_cache_path',\n            'proxy_cache_use_stale',\n            'proxy_cache_valid',\n            'proxy_connect_timeout',\n            'proxy_cookie_domain',\n            'proxy_cookie_path',\n            'proxy_headers_hash_bucket_size',\n            'proxy_headers_hash_max_size',\n            'proxy_hide_header',\n            'proxy_http_version',\n            'proxy_ignore_client_abort',\n            'proxy_ignore_headers',\n            'proxy_intercept_errors',\n            'proxy_max_temp_file_size',\n            'proxy_method',\n            'proxy_next_upstream',\n            'proxy_no_cache',\n            'proxy_pass',\n            'proxy_pass_header',\n            'proxy_pass_request_body',\n            'proxy_pass_request_headers',\n            'proxy_redirect',\n            'proxy_read_timeout',\n            'proxy_redirect_errors',\n            'proxy_send_lowat',\n            'proxy_send_timeout',\n            'proxy_set_body',\n            'proxy_set_header',\n            'proxy_ssl_session_reuse',\n            'proxy_store',\n            'proxy_store_access',\n            'proxy_temp_file_write_size',\n            'proxy_temp_path',\n            'proxy_upstream_fail_timeout',\n            'proxy_upstream_max_fails',\n            ),\n        24 => array( // rewrite module\n            // http://wiki.nginx.org/HttpRewriteModule\n            // http://nginx.org/en/docs/http/ngx_http_rewrite_module.html\n            'break',\n            'if',\n            'return',\n            'rewrite',\n            'rewrite_log',\n            'set',\n            'uninitialized_variable_warn',\n            ),\n        25 => array( // ssi module\n            // http://wiki.nginx.org/HttpSsiModule\n            // http://nginx.org/en/docs/http/ngx_http_ssi_module.html\n            'ssi',\n            'ssi_silent_errors',\n            'ssi_types',\n            'ssi_value_length',\n            ),\n        26 => array( // user id module\n            // http://wiki.nginx.org/HttpUseridModule\n            // http://nginx.org/en/docs/http/ngx_http_userid_module.html\n            'userid',\n            'userid_domain',\n            'userid_expires',\n            'userid_name',\n            'userid_p3p',\n            'userid_path',\n            'userid_service',\n            ),\n        27 => array( // addition module\n            // http://wiki.nginx.org/HttpAdditionModule\n            // http://nginx.org/en/docs/http/ngx_http_addition_module.html\n            'add_before_body',\n            'add_after_body',\n            'addition_types',\n            ),\n        28 => array( // embedded Perl module\n            // http://wiki.nginx.org/HttpPerlModule\n            // http://nginx.org/en/docs/http/ngx_http_perl_module.html\n            'perl',\n            'perl_modules',\n            'perl_require',\n            'perl_set',\n            ),\n        29 => array( // flash video files module\n            // http://wiki.nginx.org/HttpFlvModule\n            // http://nginx.org/en/docs/http/ngx_http_flv_module.html\n            'flv',\n            ),\n        30 => array( // gzip precompression module\n            // http://wiki.nginx.org/HttpGzipStaticModule\n            // http://nginx.org/en/docs/http/ngx_http_gzip_static_module.html\n            'gzip_static',\n            // Removed to remove duplication with ngx_http_gzip_module\n            //'gzip_http_version',\n            //'gzip_proxied',\n            //'gzip_disable',\n            //'gzip_vary',\n            ),\n        31 => array( // random index module\n            // http://wiki.nginx.org/HttpRandomIndexModule\n            // http://nginx.org/en/docs/http/ngx_http_random_index_module.html\n            'random_index',\n            ),\n        32 => array( // real ip module\n            // http://wiki.nginx.org/HttpRealipModule\n            // http://nginx.org/en/docs/http/ngx_http_realip_module.html\n            'set_real_ip_from',\n            'real_ip_header',\n            'real_ip_recursive',\n            ),\n        33 => array( // https module\n            // http://wiki.nginx.org/HttpSslModule\n            // http://nginx.org/en/docs/http/ngx_http_ssl_module.html\n            'ssl',\n            'ssl_certificate',\n            'ssl_certificate_key',\n            'ssl_ciphers',\n            'ssl_client_certificate',\n            'ssl_crl',\n            'ssl_dhparam',\n            // Use the documentation for the core module since it links to the\n            // original properly\n            //'ssl_engine',\n            'ssl_prefer_server_ciphers',\n            'ssl_protocols',\n            'ssl_session_cache',\n            'ssl_session_timeout',\n            'ssl_verify_client',\n            'ssl_verify_depth',\n            ),\n        34 => array( // status module\n            // http://wiki.nginx.org/HttpStubStatusModule\n            'stub_status',\n            ),\n        35 => array( // substitution module\n            // http://wiki.nginx.org/HttpSubModule\n            // http://nginx.org/en/docs/http/ngx_http_sub_module.html\n            'sub_filter',\n            'sub_filter_once',\n            'sub_filter_types',\n            ),\n        36 => array( // NginxHttpDavModule\n            // http://wiki.nginx.org/HttpDavModule\n            // http://nginx.org/en/docs/http/ngx_http_dav_module.html\n            'dav_access',\n            'dav_methods',\n            'create_full_put_path',\n            'min_delete_depth',\n            ),\n        37 => array( // Google performance tools module\n            // http://wiki.nginx.org/GooglePerftoolsModule\n            'google_perftools_profiles',\n            ),\n        38 => array( // xslt module\n            // http://wiki.nginx.org/HttpXsltModule\n            // http://nginx.org/en/docs/http/ngx_http_xslt_module.html\n            'xslt_entities',\n            'xslt_param',\n            'xslt_string_param',\n            'xslt_stylesheet',\n            'xslt_types',\n            ),\n        39 => array( // uWSGI module\n            // http://wiki.nginx.org/HttpUwsgiModule\n            'uwsgi_bind',\n            'uwsgi_buffer_size',\n            'uwsgi_buffering',\n            'uwsgi_buffers',\n            'uwsgi_busy_buffers_size',\n            'uwsgi_cache',\n            'uwsgi_cache_bypass',\n            'uwsgi_cache_key',\n            'uwsgi_cache_lock',\n            'uwsgi_cache_lock_timeout',\n            'uwsgi_cache_methods',\n            'uwsgi_cache_min_uses',\n            'uwsgi_cache_path',\n            'uwsgi_cache_use_stale',\n            'uwsgi_cache_valid',\n            'uwsgi_connect_timeout',\n            'uwsgi_hide_header',\n            'uwsgi_ignore_client_abort',\n            'uwsgi_ignore_headers',\n            'uwsgi_intercept_errors',\n            'uwsgi_max_temp_file_size',\n            'uwsgi_modifier',\n            'uwsgi_next_upstream',\n            'uwsgi_no_cache',\n            'uwsgi_param',\n            'uwsgi_pass',\n            'uwsgi_pass_header',\n            'uwsgi_pass_request_body',\n            'uwsgi_pass_request_headers',\n            'uwsgi_read_timeout',\n            'uwsgi_send_timeout',\n            'uwsgi_store',\n            'uwsgi_store_access',\n            'uwsgi_string',\n            'uwsgi_temp_file_write_size',\n            'uwsgi_temp_path',\n            ),\n        40 => array( // SCGI module\n            // http://wiki.nginx.org/HttpScgiModule\n            // Note: These directives were pulled from nginx 1.2.3\n            //       ngx_http_scgi_module.c source file.\n            'scgi_bind',\n            'scgi_buffering',\n            'scgi_buffers',\n            'scgi_buffer_size',\n            'scgi_busy_buffers_size',\n            'scgi_cache',\n            'scgi_cache_bypass',\n            'scgi_cache_key',\n            'scgi_cache_lock',\n            'scgi_cache_lock_timeout',\n            'scgi_cache_methods',\n            'scgi_cache_min_uses',\n            'scgi_cache_path',\n            'scgi_cache_use_stale',\n            'scgi_cache_valid',\n            'scgi_connect_timeout',\n            'scgi_hide_header',\n            'scgi_ignore_client_abort',\n            'scgi_ignore_headers',\n            'scgi_intercept_errors',\n            'scgi_max_temp_file_size',\n            'scgi_next_upstream',\n            'scgi_no_cache',\n            'scgi_param',\n            'scgi_pass',\n            'scgi_pass_header',\n            'scgi_pass_request_body',\n            'scgi_pass_request_headers',\n            'scgi_read_timeout',\n            'scgi_send_timeout',\n            'scgi_store',\n            'scgi_store_access',\n            'scgi_temp_file_write_size',\n            'scgi_temp_path',\n            ),\n        41 => array( // split clients module\n            // http://wiki.nginx.org/HttpSplitClientsModule\n            // http://nginx.org/en/docs/http/ngx_http_split_clients_module.html\n            'split_clients',\n            ),\n        42 => array( // X-Accel module\n            // http://wiki.nginx.org/X-accel\n            'X-Accel-Redirect',\n            'X-Accel-Buffering',\n            'X-Accel-Charset',\n            'X-Accel-Expires',\n            'X-Accel-Limit-Rate',\n            ),\n        43 => array( // degradation module\n            // http://wiki.nginx.org/HttpDegradationModule\n            'degradation',\n            'degrade',\n            ),\n        44 => array( // GeoIP module\n            // http://wiki.nginx.org/HttpGeoipModule\n            // http://nginx.org/en/docs/http/ngx_http_geoip_module.html\n            'geoip_country',\n            'geoip_city',\n            'geoip_proxy',\n            'geoip_proxy_recursive',\n            ),\n        45 => array( // Image filter module\n            // http://wiki.nginx.org/HttpImageFilterModule\n            // http://nginx.org/en/docs/http/ngx_http_image_filter_module.html\n            'image_filter',\n            'image_filter_buffer',\n            'image_filter_jpeg_quality',\n            'image_filter_sharpen',\n            'image_filter_transparency',\n            ),\n        46 => array( // MP4 module\n            // http://wiki.nginx.org/HttpMp4Module\n            // http://nginx.org/en/docs/http/ngx_http_mp4_module.html\n            'mp4',\n            'mp4_buffer_size',\n            'mp4_max_buffer_size',\n            ),\n        47 => array( // Secure Link module\n            // http://wiki.nginx.org/HttpSecureLinkModule\n            // http://nginx.org/en/docs/http/ngx_http_secure_link_module.html\n            'secure_link',\n            'secure_link_md',\n            'secure_link_secret',\n            ),\n        48 => array( // Mail Core module\n            // http://wiki.nginx.org/MailCoreModule\n            'auth',\n            'imap_capabilities',\n            'imap_client_buffer',\n            'pop_auth',\n            'pop_capabilities',\n            'protocol',\n            'smtp_auth',\n            'smtp_capabilities',\n            'so_keepalive',\n            'timeout',\n            // Removed to prioritize documentation for core module\n            //'listen',\n            //'server',\n            //'server_name',\n            ),\n        49 => array( // Mail Auth module\n            // http://wiki.nginx.org/MailAuthModule\n            'auth_http',\n            'auth_http_header',\n            'auth_http_timeout',\n            ),\n        50 => array( // Mail Proxy module\n            // http://wiki.nginx.org/MailProxyModule\n            'proxy',\n            'proxy_buffer',\n            'proxy_pass_error_message',\n            'proxy_timeout',\n            'xclient',\n            ),\n        51 => array( // Mail SSL module\n            // http://wiki.nginx.org/MailSslModule\n            // Removed to prioritize documentation for http\n            //'ssl',\n            //'ssl_certificate',\n            //'ssl_certificate_key',\n            //'ssl_ciphers',\n            //'ssl_prefer_server_ciphers',\n            //'ssl_protocols',\n            //'ssl_session_cache',\n            //'ssl_session_timeout',\n            'starttls',\n            ),\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '=', '~', ';'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => true,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true,\n        9 => true,\n        10 => true,\n        11 => true,\n        12 => true,\n        13 => true,\n        14 => true,\n        15 => true,\n        16 => true,\n        17 => true,\n        18 => true,\n        19 => true,\n        20 => true,\n        21 => true,\n        22 => true,\n        23 => true,\n        24 => true,\n        25 => true,\n        26 => true,\n        27 => true,\n        28 => true,\n        29 => true,\n        30 => true,\n        31 => true,\n        32 => true,\n        33 => true,\n        34 => true,\n        35 => true,\n        36 => true,\n        37 => true,\n        38 => true,\n        39 => true,\n        40 => true,\n        41 => true,\n        42 => true,\n        43 => true,\n        44 => true,\n        45 => true,\n        46 => true,\n        47 => true,\n        48 => true,\n        49 => true,\n        50 => true,\n        51 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;',\n            4 => 'color: #993333;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;',\n            2 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #000066;',\n            4 => 'color: #000000; font-weight: bold;',\n        ),\n        'SCRIPT' => array()\n        ),\n    'URLS' => array(\n        1 => 'http://wiki.nginx.org/CoreModule#{FNAME}',\n        2 => 'http://wiki.nginx.org/NginxHttpEventsModule#{FNAME}',\n        3 => 'http://wiki.nginx.org/NginxHttpCoreModule#{FNAME}',\n        4 => 'http://wiki.nginx.org/NginxHttpUpstreamModule#{FNAME}',\n        5 => 'http://wiki.nginx.org/NginxHttpAccessModule#{FNAME}',\n        6 => 'http://wiki.nginx.org/NginxHttpAuthBasicModule#{FNAME}',\n        7 => 'http://wiki.nginx.org/NginxHttpAutoIndexModule#{FNAME}',\n        8 => 'http://wiki.nginx.org/NginxHttpBrowserModule#{FNAME}',\n        9 => 'http://wiki.nginx.org/NginxHttpCharsetModule#{FNAME}',\n        10 => 'http://wiki.nginx.org/NginxHttpEmptyGifModule#{FNAME}',\n        11 => 'http://wiki.nginx.org/NginxHttpFcgiModule#{FNAME}',\n        12 => 'http://wiki.nginx.org/NginxHttpGeoModule#{FNAME}',\n        13 => 'http://wiki.nginx.org/NginxHttpGzipModule#{FNAME}',\n        14 => 'http://wiki.nginx.org/NginxHttpHeadersModule#{FNAME}',\n        15 => 'http://wiki.nginx.org/NginxHttpIndexModule#{FNAME}',\n        16 => 'http://wiki.nginx.org/HttpLimitReqModule#{FNAME}',\n        17 => 'http://wiki.nginx.org/NginxHttpRefererModule#{FNAME}',\n        18 => 'http://wiki.nginx.org/NginxHttpLimitZoneModule#{FNAME}',\n        19 => 'http://wiki.nginx.org/HttpLimitConnModule#{FNAME}',\n        20 => 'http://wiki.nginx.org/NginxHttpLogModule#{FNAME}',\n        21 => 'http://wiki.nginx.org/NginxHttpMapModule#{FNAME}',\n        22 => 'http://wiki.nginx.org/NginxHttpMemcachedModule#{FNAME}',\n        23 => 'http://wiki.nginx.org/NginxHttpProxyModule#{FNAME}',\n        24 => 'http://wiki.nginx.org/NginxHttpRewriteModule#{FNAME}',\n        25 => 'http://wiki.nginx.org/NginxHttpSsiModule#{FNAME}',\n        26 => 'http://wiki.nginx.org/NginxHttpUserIdModule#{FNAME}',\n        27 => 'http://wiki.nginx.org/NginxHttpAdditionModule#{FNAME}',\n        28 => 'http://wiki.nginx.org/NginxHttpEmbeddedPerlModule#{FNAME}',\n        29 => 'http://wiki.nginx.org/NginxHttpFlvStreamModule#{FNAME}',\n        30 => 'http://wiki.nginx.org/NginxHttpGzipStaticModule#{FNAME}',\n        31 => 'http://wiki.nginx.org/NginxHttpRandomIndexModule#{FNAME}',\n        32 => 'http://wiki.nginx.org/NginxHttpRealIpModule#{FNAME}',\n        33 => 'http://wiki.nginx.org/NginxHttpSslModule#{FNAME}',\n        34 => 'http://wiki.nginx.org/NginxHttpStubStatusModule#{FNAME}',\n        35 => 'http://wiki.nginx.org/NginxHttpSubModule#{FNAME}',\n        36 => 'http://wiki.nginx.org/NginxHttpDavModule#{FNAME}',\n        37 => 'http://wiki.nginx.org/NginxHttpGooglePerfToolsModule#{FNAME}',\n        38 => 'http://wiki.nginx.org/NginxHttpXsltModule#{FNAME}',\n        39 => 'http://wiki.nginx.org/NginxHttpUwsgiModule#{FNAME}',\n        40 => 'http://wiki.nginx.org/HttpScgiModule',\n        41 => 'http://wiki.nginx.org/HttpSplitClientsModule#{FNAME}',\n        42 => 'http://wiki.nginx.org/X-accel#{FNAME}',\n        43 => 'http://wiki.nginx.org/HttpDegradationModule#{FNAME}',\n        44 => 'http://wiki.nginx.org/HttpGeoipModule#{FNAME}',\n        45 => 'http://wiki.nginx.org/HttpImageFilterModule#{FNAME}',\n        46 => 'http://wiki.nginx.org/HttpMp4Module#{FNAME}',\n        47 => 'http://wiki.nginx.org/HttpSecureLinkModule#{FNAME}',\n        48 => 'http://wiki.nginx.org/MailCoreModule#{FNAME}',\n        49 => 'http://wiki.nginx.org/MailAuthModule#{FNAME}',\n        50 => 'http://wiki.nginx.org/MailProxyModule#{FNAME}',\n        51 => 'http://wiki.nginx.org/MailSslModule#{FNAME}',\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        0 => '[\\\\$%@]+[a-zA-Z_][a-zA-Z0-9_]*',\n        4 => '&lt;[a-zA-Z_][a-zA-Z0-9_]*&gt;',\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'NUMBERS' => GESHI_NEVER\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/nimrod.php",
    "content": "<?php\n/*************************************************************************************\n * nimrod.php\n * ----------\n * Author: Dennis Felsing (dennis@felsin9.de)\n * Copyright: (c) 2014 Dennis Felsing\n * Release Version: 1.0.9.1\n * Date Started: 2014/07/15\n *\n * Nimrod language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2014/07/15 (1.0.8.13)\n *  -  First Release\n *\n * TODO (updated 2014/07/15)\n * -------------------------\n * - Int literals like 50'u8\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Nimrod',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    //Longest quotemarks ALWAYS first\n    'QUOTEMARKS' => array('\"\"\"', '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_OCT_PREFIX_0O | GESHI_NUMBER_HEX_PREFIX |\n        GESHI_NUMBER_FLT_NONSCI | GESHI_NUMBER_FLT_NONSCI_F |\n        GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n\n        /*\n        ** Set 1: reserved words\n        ** http://nimrod-lang.org/manual.html#identifiers-keywords\n        */\n        1 => array(\n            'addr', 'and', 'as', 'asm', 'atomic',\n            'bind', 'block', 'break',\n            'case', 'cast', 'const', 'continue', 'converter',\n            'discard', 'distinct', 'div', 'do',\n            'elif', 'else', 'end', 'enum', 'except', 'export',\n            'finally', 'for', 'from',\n            'generic',\n            'if', 'import', 'in', 'include', 'interface', 'is', 'isnot', 'iterator',\n            'lambda', 'let',\n            'macro', 'method', 'mixin', 'mod',\n            'nil', 'not', 'notin',\n            'object', 'of', 'or', 'out',\n            'proc',\n            'raise', 'ref', 'return',\n            'shl', 'shr', 'static',\n            'template', 'try', 'tuple', 'type',\n            'using',\n            'var',\n            'when', 'while', 'with', 'without',\n            'xor',\n            'yield'\n            ),\n\n        2 => array(\n            'true', 'false'\n            ),\n\n        3 => array(\n            /* system module */\n            'abs', 'accumulateResult', 'add', 'addAndFetch', 'addQuitProc',\n            'alloc', 'alloc0', 'allocCStringArray', 'allocShared',\n            'allocShared0', 'assert', 'astToStr', 'atomicDec', 'atomicInc',\n            'card', 'chr', 'clamp', 'close', 'cmp', 'compileOption',\n            'compiles', 'contains', 'copy', 'copyMem', 'countdown', 'countup',\n            'create', 'createShared', 'createSharedU', 'createU',\n            'cstringArrayToSeq', 'currentSourcePath', 'dealloc',\n            'deallocCStringArray', 'deallocShared', 'debugEcho', 'dec',\n            'defined', 'definedInScope', 'del', 'delete', 'doAssert', 'each',\n            'echo', 'endOfFile', 'equalMem', 'excl', 'failedAssertImpl',\n            'fieldPairs', 'fields', 'fileHandle', 'find', 'finished',\n            'flushFile', 'free', 'freeShared', 'GC_addCycleRoot', 'GC_disable',\n            'GC_disableMarkAndSweep', 'GC_enable', 'GC_enableMarkAndSweep',\n            'GC_fullCollect', 'GC_getStatistics', 'gcInvariant', 'GC_ref',\n            'GC_setStrategy', 'GC_unref', 'getCurrentException',\n            'getCurrentExceptionMsg', 'getFilePos', 'getFileSize',\n            'getFreeMem', 'getOccupiedMem', 'getRefcount', 'getStackTrace',\n            'getTotalMem', 'getTypeInfo', 'gorge', 'high', 'inc', 'incl',\n            'insert', 'instantiationInfo', 'internalNew', 'isNil', 'isOnStack',\n            'isStatic', 'items', 'len', 'likely', 'lines', 'locals', 'low',\n            'map', 'max', 'min', 'moveMem', 'new', 'newException', 'newSeq',\n            'newString', 'newStringOfCap', 'newWideCString', 'nimDestroyRange',\n            'onFailedAssert', 'onRaise', 'open', 'ord', 'pairs', 'pop', 'pred',\n            'quit', 'raiseAssert', 'rand', 'rawEnv', 'rawProc', 'readAll',\n            'readBuffer', 'readBytes', 'readChar', 'readChars', 'readFile',\n            'readLine', 'realloc', 'reallocShared', 'reopen', 'repr', 'reset',\n            'resize', 'safeAdd', 'setControlCHook', 'setFilePos', 'setLen',\n            'shallow', 'shallowCopy', 'sizeof', 'slurp', 'staticExec',\n            'staticRead', 'stdmsg', 'substr', 'succ', 'swap', 'toBiggestFloat',\n            'toBiggestInt', 'toFloat', 'toInt', 'toU16', 'toU32', 'toU8',\n            'unlikely', 'unsafeNew', 'write', 'writeBuffer', 'writeBytes',\n            'writeChars', 'writeFile', 'writeln', 'writeStackTrace', 'ze',\n            'ze64', 'zeroMem'\n            ),\n\n        4 => array(\n            'auto', 'pointer', 'ptr', 'void', 'any', 'expr', 'stmt', 'typedesc',\n            'int', 'int8', 'int16', 'int32', 'int64', 'float', 'float32', 'float64',\n            'uint', 'uint8', 'uint16', 'uint32', 'uint64',\n            'bool', 'char', 'range', 'array', 'seq', 'set', 'string', 'TSlice',\n            'cstring', 'cint', 'clong', 'culong', 'cchar', 'cschar', 'cshort',\n            'csize', 'clonglong', 'cfloat', 'cdouble', 'clongdouble', 'cuchar',\n            'cushort', 'cuint', 'culonglong', 'cstringArray'\n            )\n        ),\n    'SYMBOLS' => array(\n        '*', '/', '%', '\\\\',\n        '+', '-', '~', '|',\n        '&',\n        '..',\n        '=', '<', '>', '!',\n        '@', '?'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #ff7700;font-weight:bold;',    // Reserved\n            2 => 'color: #008000;',                     // Built-ins + self\n            3 => 'color: #dc143c;',                     // Standard lib\n            4 => 'color: #0000cd;'                      // Special methods\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: black;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #483d8b;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff4500;'\n            ),\n        'METHODS' => array(\n            1 => 'color: black;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/nsis.php",
    "content": "<?php\n/*************************************************************************************\n * nsis.php\n * --------\n * Author: deguix (cevo_deguix@yahoo.com.br), Tux (http://tux.a4.cz/), Jan T. Sott (http://github.com/idleberg)\n * Copyright: (c) 2005 deguix, 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2005/12/03\n *\n * Nullsoft Scriptable Install System language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2014/04/23 (2.0.3)\n *   - Updated to NSIS 3.0a2\n *   - Removed deprecated commands\n * 2005/12/03 (2.0.2)\n *   - Updated to NSIS 2.11.\n * 2005/06/17 (2.0.1)\n *   - Updated to NSIS 2.07b0.\n * 2005/04/05 (2.0.0)\n *   - Updated to NSIS 2.06.\n * 2004/11/27 (1.0.2)\n *   - Added support for multiple object splitters\n * 2004/10/27 (1.0.1)\n *   - Added support for URLs\n * 2004/08/05 (1.0.0)\n *   - First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'NSIS',\n    'COMMENT_SINGLE' => array(1 => ';', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\",'\"','`'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            '!addincludedir', '!addplugindir', '!appendfile', '!cd', '!define', '!delfile', '!echo', '!error',\n            '!execute', '!finalize', '!getdllversion', '!include', '!insertmacro', '!macro', '!macroend', '!makensis', '!packhdr',\n            '!searchparse', '!searchreplace', '!system', '!tempfile', '!undef', '!verbose', '!warning'\n            ),\n        2 => array(\n            'AddBrandingImage', 'AllowRootDirInstall', 'AutoCloseWindow', 'BGFont',\n            'BGGradient', 'BrandingText', 'Caption', 'ChangeUI', 'CheckBitmap', 'CompletedText', 'ComponentText',\n            'CRCCheck', 'DetailsButtonText', 'DirText', 'DirVar', 'DirVerify', 'FileErrorText',\n            'Function', 'FunctionEnd', 'Icon', 'InstallButtonText', 'InstallColors', 'InstallDir',\n            'InstallDirRegKey', 'InstProgressFlags', 'InstType', 'LangString', 'LicenseBkColor',\n            'LicenseData', 'LicenseForceSelection', 'LicenseLangString', 'LicenseText', 'LoadLanguageFile', 'ManifestDPIAware', 'ManifestSupportedOS',\n            'MiscButtonText', 'Name', 'OutFile', 'Page', 'PageEx', 'PageExEnd', 'RequestExecutionLevel', 'Section',\n            'SectionEnd', 'SectionGroup', 'SectionGroupEnd', 'SetCompressor', 'SetFont', 'ShowInstDetails',\n            'ShowUninstDetails', 'SilentInstall', 'SilentUnInstall', 'SpaceTexts', 'SubCaption', 'SubSection',\n            'SubSectionEnd', 'Unicode', 'UninstallButtonText', 'UninstallCaption', 'UninstallIcon', 'UninstallSubCaption',\n            'UninstallText', 'UninstPage', 'Var', 'VIAddVersionKey', 'VIFileVersion', 'VIProductVersion', 'WindowIcon', 'XPStyle'\n            ),\n        3 => array(\n            'AddSize', 'AllowSkipFiles', 'FileBufSize', 'GetInstDirError', 'PageCallbacks',\n            'SectionIn', 'SetCompress', 'SetCompressorDictSize',\n            'SetDatablockOptimize', 'SetDateSave', 'SetOverwrite', 'SetPluginUnload'\n            ),\n        4 => array(\n            'Abort', 'BringToFront', 'Call', 'CallInstDLL', 'ClearErrors', 'CopyFiles','CreateDirectory',\n            'CreateFont', 'CreateShortCut', 'Delete', 'DeleteINISec', 'DeleteINIStr', 'DeleteRegKey',\n            'DeleteRegValue', 'DetailPrint', 'EnableWindow', 'EnumRegKey', 'EnumRegValue', 'Exch', 'Exec',\n            'ExecShell', 'ExecWait', 'ExpandEnvStrings', 'File', 'FileClose', 'FileOpen', 'FileRead',\n            'FileReadByte', 'FileReadUTF16LE', 'FileReadWord', 'FileSeek', 'FileWrite', 'FileWriteByte', 'FileWriteUTF16LE', 'FileWriteWord', 'FindClose', 'FindFirst', 'FindNext',\n            'FindWindow', 'FlushINI', 'GetCurInstType', 'GetCurrentAddress', 'GetDlgItem', 'GetDLLVersion',\n            'GetDLLVersionLocal', 'GetErrorLevel', 'GetFileTime', 'GetFileTimeLocal', 'GetFullPathName',\n            'GetFunctionAddress', 'GetLabelAddress', 'GetTempFileName', 'Goto', 'HideWindow',\n            'IfAbort', 'IfErrors', 'IfFileExists', 'IfRebootFlag', 'IfSilent', 'InitPluginsDir', 'InstTypeGetText',\n            'InstTypeSetText', 'IntCmp', 'IntCmpU', 'IntFmt', 'IntOp', 'IsWindow', 'LockWindow', 'LogSet', 'LogText',\n            'MessageBox', 'Nop', 'Pop', 'Push', 'Quit', 'ReadEnvStr', 'ReadINIStr', 'ReadRegDWORD', 'ReadRegStr',\n            'Reboot', 'RegDLL', 'Rename', 'ReserveFile', 'Return', 'RMDir', 'SearchPath', 'SectionGetFlags',\n            'SectionGetInstTypes', 'SectionGetSize', 'SectionGetText', 'SectionSetFlags', 'SectionSetInstTypes',\n            'SectionSetSize', 'SectionSetText', 'SendMessage', 'SetAutoClose', 'SetBrandingImage', 'SetCtlColors',\n            'SetCurInstType', 'SetDetailsPrint', 'SetDetailsView', 'SetErrorLevel', 'SetErrors', 'SetFileAttributes',\n            'SetOutPath', 'SetRebootFlag', 'SetRegView', 'SetShellVarContext', 'SetSilent', 'ShowWindow', 'Sleep', 'StrCmp', 'StrCmpS',\n            'StrCpy', 'StrLen', 'UnRegDLL', 'WriteINIStr', 'WriteRegBin', 'WriteRegDWORD', 'WriteRegExpandStr',\n            'WriteRegStr', 'WriteUninstaller'\n            ),\n        5 => array(\n            'all', 'alwaysoff', 'ARCHIVE', 'auto', 'both', 'bzip2', 'checkbox', 'components', 'current',\n            'custom', 'directory', 'false', 'FILE_ATTRIBUTE_ARCHIVE', 'FILE_ATTRIBUTE_HIDDEN', 'FILE_ATTRIBUTE_NORMAL',\n            'FILE_ATTRIBUTE_OFFLINE', 'FILE_ATTRIBUTE_READONLY', 'FILE_ATTRIBUTE_SYSTEM,TEMPORARY',\n            'FILE_ATTRIBUTE_TEMPORARY', 'force', 'HIDDEN', 'hide', 'HKCC', 'HKCR', 'HKCU', 'HKDD', 'HKEY_CLASSES_ROOT',\n            'HKEY_CURRENT_CONFIG', 'HKEY_CURRENT_USER', 'HKEY_DYN_DATA', 'HKEY_LOCAL_MACHINE', 'HKEY_PERFORMANCE_DATA',\n            'HKEY_USERS', 'HKLM', 'HKPD', 'HKU', 'IDABORT', 'IDCANCEL', 'IDIGNORE', 'IDNO', 'IDOK', 'IDRETRY', 'IDYES',\n            'ifdiff', 'ifnewer', 'instfiles', 'lastused', 'leave', 'license', 'listonly', 'lzma', 'manual',\n            'MB_ABORTRETRYIGNORE', 'MB_DEFBUTTON1', 'MB_DEFBUTTON2', 'MB_DEFBUTTON3', 'MB_DEFBUTTON4',\n            'MB_ICONEXCLAMATION', 'MB_ICONINFORMATION', 'MB_ICONQUESTION', 'MB_ICONSTOP', 'MB_OK', 'MB_OKCANCEL',\n            'MB_RETRYCANCEL', 'MB_RIGHT', 'MB_SETFOREGROUND', 'MB_TOPMOST', 'MB_YESNO', 'MB_YESNOCANCEL', 'nevershow',\n            'none', 'normal', 'off', 'OFFLINE', 'on', 'radiobuttons', 'READONLY', 'RO', 'SHCTX', 'SHELL_CONTEXT', 'show',\n            'silent', 'silentlog', 'SW_HIDE', 'SW_SHOWMAXIMIZED', 'SW_SHOWMINIMIZED', 'SW_SHOWNORMAL', 'SYSTEM',\n            'textonly', 'true', 'try', 'uninstConfirm', 'zlib'\n            ),\n        6 => array(\n            '/a', '/components', '/COMPONENTSONLYONCUSTOM', '/CUSTOMSTRING', '/e', '/FILESONLY', '/FINAL', '/gray', '/GLOBAL',\n            '/ifempty', '/IMGID', '/ITALIC', '/lang', '/NOCUSTOM', '/nonfatal', '/NOUNLOAD', '/oname', '/r', '/REBOOTOK',\n            '/RESIZETOFIT', '/SOLID', '/SD', '/SHORT', '/silent', '/STRIKE', '/TIMEOUT', '/TRIMCENTER', '/TRIMLEFT',\n            '/TRIMRIGHT', '/UNDERLINE', '/windows', '/x'\n            ),\n        7 => array(\n            '.onGUIEnd', '.onGUIInit', '.onInit', '.onInstFailed', '.onInstSuccess', '.onMouseOverSection',\n            '.onRebootFailed', '.onSelChange', '.onUserAbort', '.onVerifyInstDir', 'un.onGUIEnd', 'un.onGUIInit',\n            'un.onInit', 'un.onRebootFailed', 'un.onUninstFailed', 'un.onUninstSuccess', 'un.onUserAbort'\n            ),\n        8 => array(\n            'MUI.nsh', '\"${NSISDIR}\\Contrib\\Modern UI\\System.nsh\"', 'MUI_SYSVERSION', 'MUI_ICON', 'MUI_UNICON',\n            'MUI_HEADERIMAGE', 'MUI_HEADERIMAGE_BITMAP', 'MUI_HEADERIMAGE_BITMAP_NOSTRETCH', 'MUI_HEADERIMAGE_BITMAP_RTL',\n            'MUI_HEADERIMAGE_BITMAP_RTL_NOSTRETCH', 'MUI_HEADERIMAGE_UNBITMAP', 'MUI_HEADERIMAGE_UNBITMAP_NOSTRETCH',\n            'MUI_HEADERIMAGE_UNBITMAP_RTL', 'MUI_HEADERIMAGE_UNBITMAP_RTL_NOSTRETCH', 'MUI_HEADERIMAGE_RIGHT', 'MUI_BGCOLOR',\n            'MUI_UI', 'MUI_UI_HEADERIMAGE', 'MUI_UI_HEADERIMAGE_RIGHT', 'MUI_UI_COMPONENTSPAGE_SMALLDESC',\n            'MUI_UI_COMPONENTSPAGE_NODESC', 'MUI_WELCOMEFINISHPAGE_BITMAP', 'MUI_WELCOMEFINISHPAGE_BITMAP_NOSTRETCH',\n            'MUI_WELCOMEFINISHPAGE_INI', 'MUI_UNWELCOMEFINISHPAGE_BITMAP', 'MUI_UNWELCOMEFINISHPAGE_BITMAP_NOSTRETCH',\n            'MUI_UNWELCOMEFINISHPAGE_INI', 'MUI_LICENSEPAGE_BGCOLOR', 'MUI_COMPONENTSPAGE_CHECKBITMAP',\n            'MUI_COMPONENTSPAGE_SMALLDESC', 'MUI_COMPONENTSPAGE_NODESC', 'MUI_INSTFILESPAGE_COLORS',\n            'MUI_INSTFILESPAGE_PROGRESSBAR', 'MUI_FINISHPAGE_NOAUTOCLOSE', 'MUI_UNFINISHPAGE_NOAUTOCLOSE',\n            'MUI_ABORTWARNING', 'MUI_ABORTWARNING_TEXT', 'MUI_UNABORTWARNING', 'MUI_UNABORTWARNING_TEXT',\n            'MUI_PAGE_WELCOME', 'MUI_PAGE_LICENSE', 'MUI_PAGE_COMPONENTS', 'MUI_PAGE_DIRECTORY',\n            'MUI_PAGE_STARTMENU', 'MUI_PAGE_INSTFILES', 'MUI_PAGE_FINISH', 'MUI_UNPAGE_WELCOME',\n            'MUI_UNPAGE_CONFIRM', 'MUI_UNPAGE_LICENSE', 'MUI_UNPAGE_COMPONENTS', 'MUI_UNPAGE_DIRECTORY',\n            'MUI_UNPAGE_INSTFILES', 'MUI_UNPAGE_FINISH', 'MUI_PAGE_HEADER_TEXT', 'MUI_PAGE_HEADER_SUBTEXT',\n            'MUI_WELCOMEPAGE_TITLE', 'MUI_WELCOMEPAGE_TITLE_3LINES', 'MUI_WELCOMEPAGE_TEXT',\n            'MUI_LICENSEPAGE_TEXT_TOP', 'MUI_LICENSEPAGE_TEXT_BOTTOM', 'MUI_LICENSEPAGE_BUTTON',\n            'MUI_LICENSEPAGE_CHECKBOX', 'MUI_LICENSEPAGE_CHECKBOX_TEXT', 'MUI_LICENSEPAGE_RADIOBUTTONS',\n            'MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_ACCEPT', 'MUI_LICENSEPAGE_RADIOBUTTONS_TEXT_DECLINE',\n            'MUI_COMPONENTSPAGE_TEXT_TOP', 'MUI_COMPONENTSPAGE_TEXT_COMPLIST', 'MUI_COMPONENTSPAGE_TEXT_INSTTYPE',\n            'MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_TITLE', 'MUI_COMPONENTSPAGE_TEXT_DESCRIPTION_INFO',\n            'MUI_DIRECTORYPAGE_TEXT_TOP', 'MUI_DIRECTORYPAGE_TEXT_DESTINATION', 'MUI_DIRECTORYPAGE_VARIABLE',\n            'MUI_DIRECTORYPAGE_VERIFYONLEAVE', 'MUI_STARTMENU_WRITE_BEGIN', 'MUI_STARTMENU_WRITE_END',\n            'MUI_STARTMENUPAGE_TEXT_TOP', 'MUI_STARTMENUPAGE_TEXT_CHECKBOX', 'MUI_STARTMENUPAGE_DEFAULTFOLDER',\n            'MUI_STARTMENUPAGE_NODISABLE', 'MUI_STARTMENUPAGE_REGISTRY_ROOT', 'MUI_STARTMENUPAGE_REGISTRY_KEY',\n            'MUI_STARTMENUPAGE_REGISTRY_VALUENAME', 'MUI_INSTFILESPAGE_FINISHHEADER_TEXT',\n            'MUI_INSTFILESPAGE_FINISHHEADER_SUBTEXT', 'MUI_INSTFILESPAGE_ABORTHEADER_TEXT',\n            'MUI_INSTFILESPAGE_ABORTHEADER_SUBTEXT', 'MUI_FINISHPAGE_TITLE', 'MUI_FINISHPAGE_TITLE_3LINES',\n            'MUI_FINISHPAGE_TEXT', 'MUI_FINISHPAGE_TEXT_LARGE', 'MUI_FINISHPAGE_BUTTON',\n            'MUI_FINISHPAGE_TEXT_REBOOT', 'MUI_FINISHPAGE_TEXT_REBOOTNOW', 'MUI_FINISHPAGE_TEXT_REBOOTLATER',\n            'MUI_FINISHPAGE_RUN', 'MUI_FINISHPAGE_RUN_TEXT', 'MUI_FINISHPAGE_RUN_PARAMETERS',\n            'MUI_FINISHPAGE_RUN_NOTCHECKED', 'MUI_FINISHPAGE_RUN_FUNCTION', 'MUI_FINISHPAGE_SHOWREADME',\n            'MUI_FINISHPAGE_SHOWREADME_TEXT', 'MUI_FINISHPAGE_SHOWREADME_NOTCHECKED',\n            'MUI_FINISHPAGE_SHOWREADME_FUNCTION', 'MUI_FINISHPAGE_LINK', 'MUI_FINISHPAGE_LINK_LOCATION',\n            'MUI_FINISHPAGE_LINK_COLOR', 'MUI_FINISHPAGE_NOREBOOTSUPPORT', 'MUI_UNCONFIRMPAGE_TEXT_TOP',\n            'MUI_UNCONFIRMPAGE_TEXT_LOCATION', 'MUI_LANGUAGE', 'MUI_LANGDLL_DISPLAY',\n            'MUI_LANGDLL_REGISTRY_ROOT', 'MUI_LANGDLL_REGISTRY_KEY', 'MUI_LANGDLL_REGISTRY_VALUENAME',\n            'MUI_LANGDLL_WINDOWTITLE', 'MUI_LANGDLL_INFO', 'MUI_LANGDLL_ALWAYSSHOW',\n            'MUI_RESERVEFILE_INSTALLOPTIONS', 'MUI_RESERVEFILE_LANGDLL', 'MUI_FUNCTION_DESCRIPTION_BEGIN',\n            'MUI_DESCRIPTION_TEXT', 'MUI_FUNCTION_DESCRIPTION_END', 'MUI_INSTALLOPTIONS_EXTRACT',\n            'MUI_INSTALLOPTIONS_EXTRACT_AS', 'MUI_HEADER_TEXT', 'MUI_INSTALLOPTIONS_DISPLAY',\n            'MUI_INSTALLOPTIONS_INITDIALOG', 'MUI_INSTALLOPTIONS_SHOW',\n            'MUI_INSTALLOPTIONS_DISPLAY_RETURN', 'MUI_INSTALLOPTIONS_SHOW_RETURN',\n            'MUI_INSTALLOPTIONS_READ', 'MUI_INSTALLOPTIONS_WRITE',\n            'MUI_CUSTOMFUNCTION_GUIINIT', 'MUI_CUSTOMFUNCTION_UNGUIINIT',\n            'MUI_CUSTOMFUNCTION_ABORT', 'MUI_CUSTOMFUNCTION_UNABORT',\n            'MUI_PAGE_CUSTOMFUNCTION_PRE', 'MUI_PAGE_CUSTOMFUNCTION_SHOW', 'MUI_PAGE_CUSTOMFUNCTION_LEAVE',\n            'MUI_WELCOMEFINISHPAGE_CUSTOMFUNCTION_INIT'\n            ),\n        9 => array(\n            'LogicLib.nsh', '${LOGICLIB}', 'LOGICLIB_STRCMP', 'LOGICLIB_INT64CMP', 'LOGICLIB_SECTIONCMP', '${If}', '${Unless}',\n            '${ElseIf}', '${ElseUnless}', '${Else}', '${EndIf}', '${EndUnless}', '${AndIf}', '${AndUnless}',\n            '${OrIf}', '${OrUnless}', '${IfThen}', '${IfCmd}', '${Select}', '${Case2}', '${Case3}',\n            '${Case4}', '${Case5}', '${CaseElse}', '${Default}', '${EndSelect}', '${Switch}',\n            '${Case}', '${EndSwitch}', '${Do}', '${DoWhile}', '${UntilWhile}', '${Continue}', '${Break}',\n            '${Loop}', '${LoopWhile}', '${LoopUntil}', '${While}', '${ExitWhile}', '${EndWhile}', '${For}',\n            '${ForEach}', '${ExitFor}', '${Next}', '${Abort}', '${Errors}', '${RebootFlag}', '${Silent}',\n            '${FileExists}', '${Cmd}', '${SectionIsSelected}', '${SectionIsSectionGroup}',\n            '${SectionIsSectionGroupEnd}', '${SectionIsBold}', '${SectionIsReadOnly}',\n            '${SectionIsExpanded}', '${SectionIsPartiallySelected}'\n            ),\n        10 => array(\n            'StrFunc.nsh', '${STRFUNC}', '${StrCase}', '${StrClb}', '${StrIOToNSIS}', '${StrLoc}', '${StrNSISToIO}', '${StrRep}',\n            '${StrSort}', '${StrStr}', '${StrStrAdv}', '${StrTok}', '${StrTrimNewLines}'\n            ),\n        11 => array(\n            'UpgradeDLL.nsh', 'UPGRADEDLL_INCLUDED', 'UpgradeDLL'\n            ),\n        12 => array(\n            'Sections.nsh', 'SECTIONS_INCLUDED', '${SF_SELECTED}', '${SF_SECGRP}', '${SF_SUBSEC}', '${SF_SECGRPEND}',\n            '${SF_SUBSECEND}', '${SF_BOLD}', '${SF_RO}', '${SF_EXPAND}', '${SF_PSELECTED}', '${SF_TOGGLED}',\n            '${SF_NAMECHG}', '${SECTION_OFF}', 'SelectSection', 'UnselectSection', 'ReverseSection',\n            'StartRadioButtons', 'RadioButton', 'EndRadioButtons', '${INSTTYPE_0}', '${INSTTYPE_1}', '${INSTTYPE_2}',\n            '${INSTTYPE_3}', '${INSTTYPE_4}', '${INSTTYPE_5}', '${INSTTYPE_6}', '${INSTTYPE_7}', '${INSTTYPE_8}',\n            '${INSTTYPE_9}', '${INSTTYPE_10}', '${INSTTYPE_11}', '${INSTTYPE_12}', '${INSTTYPE_13}', '${INSTTYPE_14}',\n            '${INSTTYPE_15}', '${INSTTYPE_16}', '${INSTTYPE_17}', '${INSTTYPE_18}', '${INSTTYPE_19}', '${INSTTYPE_20}',\n            '${INSTTYPE_21}', '${INSTTYPE_22}', '${INSTTYPE_23}', '${INSTTYPE_24}', '${INSTTYPE_25}', '${INSTTYPE_26}',\n            '${INSTTYPE_27}', '${INSTTYPE_28}', '${INSTTYPE_29}', '${INSTTYPE_30}', '${INSTTYPE_31}', '${INSTTYPE_32}',\n            'SetSectionInInstType', 'ClearSectionInInstType', 'SetSectionFlag', 'ClearSectionFlag', 'SectionFlagIsSet'\n            ),\n        13 => array(\n            'Colors.nsh', 'WHITE', 'BLACK', 'YELLOW', 'RED', 'GREEN', 'BLUE', 'MAGENTA', 'CYAN', 'rgb2hex'\n            ),\n        14 => array(\n            'FileFunc.nsh', '${Locate}', '${GetSize}', '${DriveSpace}', '${GetDrives}', '${GetTime}', '${GetFileAttributes}', '${GetFileVersion}', '${GetExeName}', '${GetExePath}', '${GetParameters}', '${GetOptions}', '${GetRoot}', '${GetParent}', '${GetFileName}', '${GetBaseName}', '${GetFileExt}', '${BannerTrimPath}', '${DirState}', '${RefreshShellIcons}'\n            ),\n        15 => array(\n            'TextFunc.nsh', '${LineFind}', '${LineRead}', '${FileReadFromEnd}', '${LineSum}', '${FileJoin}', '${TextCompare}', '${ConfigRead}', '${ConfigWrite}', '${FileRecode}', '${TrimNewLines}'\n            ),\n        16 => array(\n            'WordFunc.nsh', '${WordFind}', '${WordFind2X}', '${WordFind3X}', '${WordReplace}', '${WordAdd}', '${WordInsert}', '${StrFilter}', '${VersionCompare}', '${VersionConvert}'\n            )\n        ),\n    'SYMBOLS' => array(\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false,\n        8 => false,\n        9 => false,\n        10 => false,\n        11 => false,\n        12 => false,\n        13 => false,\n        14 => false,\n        15 => false,\n        16 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000066; font-weight:bold;',\n            2 => 'color: #000066;',\n            3 => 'color: #003366;',\n            4 => 'color: #000099;',\n            5 => 'color: #ff6600;',\n            6 => 'color: #ff6600;',\n            7 => 'color: #006600;',\n            8 => 'color: #006600;',\n            9 => 'color: #006600;',\n            10 => 'color: #006600;',\n            11 => 'color: #006600;',\n            12 => 'color: #006600;',\n            13 => 'color: #006600;',\n            14 => 'color: #006600;',\n            15 => 'color: #006600;',\n            16 => 'color: #006600;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #666666; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #660066; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => ''\n            ),\n        'STRINGS' => array(\n            0 => 'color: #660066;'\n            ),\n        'NUMBERS' => array(\n            0 => ''\n            ),\n        'METHODS' => array(\n            0 => ''\n            ),\n        'SYMBOLS' => array(\n            0 => ''\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #660000;',\n            1 => 'color: #660000;',\n            2 => 'color: #660000;',\n            3 => 'color: #660000;',\n            4 => 'color: #660000;',\n            5 => 'color: #660000;',\n            6 => 'color: #660000;',\n            7 => 'color: #000099;',\n            8 => 'color: #003399;'\n            ),\n        'SCRIPT' => array(\n            0 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => '',\n        9 => '',\n        10 => '',\n        11 => '',\n        12 => '',\n        13 => '',\n        14 => '',\n        15 => '',\n        16 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        0 => '\\$\\$',\n        1 => '\\$\\\\r',\n        2 => '\\$\\\\n',\n        3 => '\\$\\\\t',\n        4 => '\\$[a-zA-Z0-9_]+',\n        5 => '\\$\\{.{1,256}\\}',\n        6 => '\\$\\\\\\(.{1,256}\\\\\\)',\n        7 => array(\n            GESHI_SEARCH => '([^:\\/\\\\\\*\\?\\\"\\<\\>(?:<PIPE>)\\s]*?)(::)([^:\\/\\\\\\*\\?\\\"\\<\\>(?:<PIPE>)\\s]*?)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '\\\\2\\\\3'\n            ),\n        8 => array(\n            GESHI_SEARCH => '([^:\\/\\\\\\*\\?\\\"\\<\\>(?:<PIPE>)\\s]*?)(::)([^:\\/\\\\\\*\\?\\\"\\<\\>(?:<PIPE>)]*?\\s)',\n            GESHI_REPLACE => '\\\\3',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1\\\\2',\n            GESHI_AFTER => ''\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/oberon2.php",
    "content": "<?php\n/*************************************************************************************\n * oberon2.php\n * ----------\n * Author: mbishop (mbishop@esoteriq.org)\n * Copyright: (c) 2009 mbishop (mbishop@esoteriq.org)\n * Release Version: 1.0.9.1\n * Date Started: 2009/02/10\n *\n * Oberon-2 language file for GeSHi.\n *\n * CHANGES\n * -------\n *\n * TODO\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Oberon-2',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array('(*' => '*)'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'HARDQUOTE' => array(\"'\", \"'\"),\n    'HARDESCAPE' => array(\"''\"),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'ARRAY', 'BEGIN', 'BY', 'CASE',\n            'CONST', 'DIV', 'DO', 'ELSE', 'ELSIF', 'END',\n            'EXIT', 'FOR', 'IF', 'IMPORT', 'IN', 'IS',\n            'LOOP', 'MOD', 'MODULE', 'OF',\n            'OR', 'POINTER', 'PROCEDURE', 'RECORD',\n            'REPEAT', 'RETURN', 'THEN', 'TO',\n            'TYPE', 'UNTIL', 'VAR', 'WHILE', 'WITH'\n            ),\n        2 => array(\n            'NIL', 'FALSE', 'TRUE',\n            ),\n        3 => array(\n            'ABS', 'ASH', 'ASSERT', 'CAP', 'CHR', 'COPY', 'DEC',\n            'ENTIER', 'EXCL', 'HALT', 'INC', 'INCL', 'LEN',\n            'LONG', 'MAX', 'MIN', 'NEW', 'ODD', 'ORD', 'SHORT', 'SIZE'\n            ),\n        4 => array(\n            'BOOLEAN', 'CHAR', 'SHORTINT', 'LONGINT',\n            'INTEGER', 'LONGREAL', 'REAL', 'SET', 'PTR'\n            ),\n        ),\n    'SYMBOLS' => array(\n        ',', ':', '=', '+', '-', '*', '/', '#', '~'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;',\n            4 => 'color: #000066; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            'HARD' => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;',\n            'HARD' => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #0066ee;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/objc.php",
    "content": "<?php\n/*************************************************************************************\n * objc.php\n * --------\n * Author: M. Uli Kusterer (witness.of.teachtext@gmx.net)\n * Contributors: Quinn Taylor (quinntaylor@mac.com)\n * Copyright: (c) 2008 Quinn Taylor, 2004 M. Uli Kusterer, Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/06/04\n *\n * Objective-C language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/07/11 (1.0.8)\n *   -  Added support for @ before strings being highlighted\n * 2008/06/10 (1.0.7.22)\n *   -  Added keywords for Objective-C 2.0 (Leopard+).\n *   -  Changed colors to match Xcode 3 highlighting more closely.\n *   -  Updated API for AppKit and Foundation; added CoreData classes.\n *   -  Updated URLs for AppKit and Foundation; split classes and protocols.\n *   -  Sorted all keyword group in reverse-alpha order for correct matching.\n *   -  Changed all keyword groups to be case-sensitive.\n * 2004/11/27 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Objective-C',\n    'COMMENT_SINGLE' => array(\n        //Compiler directives\n        1 => '#',\n        //Single line C-Comments\n        2 => '//'\n        ),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Multiline Continuation for single-line comment\n        2 => '/\\/\\/(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //Pseudo-Highlighting of the @-sign before strings\n        3 => \"/@(?=\\\")/\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', \"'\"),\n    'ESCAPE_CHAR' => '\\\\',\n\n    'KEYWORDS' => array(\n        // Objective-C keywords\n        1 => array(\n            'while', 'switch', 'return', 'in', 'if', 'goto', 'foreach', 'for',\n            'else', 'do', 'default', 'continue', 'case', '@try', '@throw',\n            '@synthesize', '@synchronized', '@selector', '@public', '@protocol',\n            '@protected', '@property', '@private', '@interface',\n            '@implementation', '@finally', '@end', '@encode', '@defs', '@class',\n            '@catch'\n            ),\n        // Macros and constants\n        2 => array(\n            'YES', 'USHRT_MAX', 'ULONG_MAX', 'UINT_MAX', 'UCHAR_MAX', 'true',\n            'TMP_MAX', 'stdout', 'stdin', 'stderr', 'SIGTERM', 'SIGSEGV',\n            'SIGINT', 'SIGILL', 'SIG_IGN', 'SIGFPE', 'SIG_ERR', 'SIG_DFL',\n            'SIGABRT', 'SHRT_MIN', 'SHRT_MAX', 'SEEK_SET', 'SEEK_END',\n            'SEEK_CUR', 'SCHAR_MIN', 'SCHAR_MAX', 'RAND_MAX', 'NULL',\n            'NO', 'nil', 'Nil', 'L_tmpnam', 'LONG_MIN', 'LONG_MAX',\n            'LDBL_MIN_EXP', 'LDBL_MIN', 'LDBL_MAX_EXP', 'LDBL_MAX',\n            'LDBL_MANT_DIG', 'LDBL_EPSILON', 'LDBL_DIG', 'INT_MIN', 'INT_MAX',\n            'HUGE_VAL', 'FOPEN_MAX', 'FLT_ROUNDS', 'FLT_RADIX', 'FLT_MIN_EXP',\n            'FLT_MIN', 'FLT_MAX_EXP', 'FLT_MAX', 'FLT_MANT_DIG', 'FLT_EPSILON',\n            'FLT_DIG', 'FILENAME_MAX', 'false', 'EXIT_SUCCESS', 'EXIT_FAILURE',\n            'errno', 'ERANGE', 'EOF', 'enum', 'EDOM', 'DBL_MIN_EXP', 'DBL_MIN',\n            'DBL_MAX_EXP', 'DBL_MAX', 'DBL_MANT_DIG', 'DBL_EPSILON', 'DBL_DIG',\n            'CLOCKS_PER_SEC', 'CHAR_MIN', 'CHAR_MAX', 'CHAR_BIT', 'BUFSIZ',\n            'break'\n            ),\n        // C standard library functions\n        3 => array(\n            'vsprintf', 'vprintf', 'vfprintf', 'va_start', 'va_end', 'va_arg',\n            'ungetc', 'toupper', 'tolower', 'tmpname', 'tmpfile', 'time',\n            'tanh', 'tan', 'system', 'strxfrm', 'strtoul', 'strtol', 'strtok',\n            'strtod', 'strstr', 'strspn', 'strrchr', 'strpbrk', 'strncpy',\n            'strncmp', 'strncat', 'strlen', 'strftime', 'strerror', 'strcspn',\n            'strcpy', 'strcoll', 'strcmp', 'strchr', 'strcat', 'sscanf',\n            'srand', 'sqrt', 'sprintf', 'snprintf', 'sizeof', 'sinh', 'sin',\n            'setvbuf', 'setjmp', 'setbuf', 'scanf', 'rewind', 'rename',\n            'remove', 'realloc', 'rand', 'qsort', 'puts', 'putchar', 'putc',\n            'printf', 'pow', 'perror', 'offsetof', 'modf', 'mktime', 'memset',\n            'memmove', 'memcpy', 'memcmp', 'memchr', 'malloc', 'longjmp',\n            'log10', 'log', 'localtime', 'ldiv', 'ldexp', 'labs', 'isxdigit',\n            'isupper', 'isspace', 'ispunct', 'isprint', 'islower',\n            'isgraph', 'isdigit', 'iscntrl', 'isalpha', 'isalnum', 'gmtime',\n            'gets', 'getenv', 'getchar', 'getc', 'fwrite', 'ftell', 'fsetpos',\n            'fseek', 'fscanf', 'frexp', 'freopen', 'free', 'fread', 'fputs',\n            'fputc', 'fprintf', 'fopen', 'fmod', 'floor', 'fgets', 'fgetpos',\n            'fgetc', 'fflush', 'ferror', 'feof', 'fclose', 'fabs', 'exp',\n            'exit', 'div', 'difftime', 'ctime', 'cosh', 'cos', 'clock',\n            'clearerr', 'ceil', 'calloc', 'bsearch', 'atol', 'atoi', 'atof',\n            'atexit', 'atan2', 'atan', 'assert', 'asin', 'asctime', 'acos',\n            'abs', 'abort'\n            ),\n        // Data types (C, Objective-C, Cocoa)\n        4 => array(\n            'volatile', 'void', 'va_list', 'unsigned', 'union', 'typedef', 'tm',\n            'time_t', 'struct', 'string', 'static', 'size_t',\n            'signed', 'signal', 'short', 'SEL', 'register', 'raise',\n            'ptrdiff_t', 'NSZone', 'NSRect', 'NSRange', 'NSPoint', 'long',\n            'ldiv_t', 'jmp_buf', 'int', 'IMP', 'id', 'fpos_t', 'float', 'FILE',\n            'extern', 'double', 'div_t', 'const', 'clock_t', 'Class', 'char',\n            'BOOL', 'auto'\n            ),\n        // Foundation classes\n        5 => array(\n            'NSXMLParser', 'NSXMLNode', 'NSXMLElement', 'NSXMLDTDNode',\n            'NSXMLDTD', 'NSXMLDocument', 'NSWhoseSpecifier',\n            'NSValueTransformer', 'NSValue', 'NSUserDefaults', 'NSURLResponse',\n            'NSURLRequest', 'NSURLProtocol', 'NSURLProtectionSpace',\n            'NSURLHandle', 'NSURLDownload', 'NSURLCredentialStorage',\n            'NSURLCredential', 'NSURLConnection', 'NSURLCache',\n            'NSURLAuthenticationChallenge', 'NSURL', 'NSUniqueIDSpecifier',\n            'NSUndoManager', 'NSUnarchiver', 'NSTimeZone', 'NSTimer',\n            'NSThread', 'NSTask', 'NSString', 'NSStream', 'NSSpellServer',\n            'NSSpecifierTest', 'NSSortDescriptor', 'NSSocketPortNameServer',\n            'NSSocketPort', 'NSSetCommand', 'NSSet', 'NSSerializer',\n            'NSScriptWhoseTest', 'NSScriptSuiteRegistry',\n            'NSScriptObjectSpecifier', 'NSScriptExecutionContext',\n            'NSScriptCommandDescription', 'NSScriptCommand',\n            'NSScriptCoercionHandler', 'NSScriptClassDescription', 'NSScanner',\n            'NSRunLoop', 'NSRelativeSpecifier', 'NSRecursiveLock',\n            'NSRangeSpecifier', 'NSRandomSpecifier', 'NSQuitCommand', 'NSProxy',\n            'NSProtocolChecker', 'NSPropertySpecifier',\n            'NSPropertyListSerialization', 'NSProcessInfo', 'NSPredicate',\n            'NSPositionalSpecifier', 'NSPortNameServer', 'NSPortMessage',\n            'NSPortCoder', 'NSPort', 'NSPointerFunctions', 'NSPointerArray',\n            'NSPipe', 'NSOutputStream', 'NSOperationQueue', 'NSOperation',\n            'NSObject', 'NSNumberFormatter', 'NSNumber', 'NSNull',\n            'NSNotificationQueue', 'NSNotificationCenter', 'NSNotification',\n            'NSNetServiceBrowser', 'NSNetService', 'NSNameSpecifier',\n            'NSMutableURLRequest', 'NSMutableString', 'NSMutableSet',\n            'NSMutableIndexSet', 'NSMutableDictionary', 'NSMutableData',\n            'NSMutableCharacterSet', 'NSMutableAttributedString',\n            'NSMutableArray', 'NSMoveCommand', 'NSMiddleSpecifier',\n            'NSMethodSignature', 'NSMetadataQueryResultGroup',\n            'NSMetadataQueryAttributeValueTuple', 'NSMetadataQuery',\n            'NSMetadataItem', 'NSMessagePortNameServer', 'NSMessagePort',\n            'NSMapTable', 'NSMachPort', 'NSMachBootstrapServer',\n            'NSLogicalTest', 'NSLock', 'NSLocale', 'NSKeyedUnarchiver',\n            'NSKeyedArchiver', 'NSInvocationOperation', 'NSInvocation',\n            'NSInputStream', 'NSIndexSpecifier', 'NSIndexSet', 'NSIndexPath',\n            'NSHTTPURLResponse', 'NSHTTPCookieStorage', 'NSHTTPCookie',\n            'NSHost', 'NSHashTable', 'NSGetCommand', 'NSGarbageCollector',\n            'NSFormatter', 'NSFileManager', 'NSFileHandle', 'NSExpression',\n            'NSExistsCommand', 'NSException', 'NSError', 'NSEnumerator',\n            'NSDistributedNotificationCenter', 'NSDistributedLock',\n            'NSDistantObjectRequest', 'NSDistantObject',\n            'NSDirectoryEnumerator', 'NSDictionary', 'NSDeserializer',\n            'NSDeleteCommand', 'NSDecimalNumberHandler', 'NSDecimalNumber',\n            'NSDateFormatter', 'NSDateComponents', 'NSDate', 'NSData',\n            'NSCreateCommand', 'NSCountedSet', 'NSCountCommand', 'NSConnection',\n            'NSConditionLock', 'NSCondition', 'NSCompoundPredicate',\n            'NSComparisonPredicate', 'NSCoder', 'NSCloseCommand',\n            'NSCloneCommand', 'NSClassDescription', 'NSCharacterSet',\n            'NSCalendarDate', 'NSCalendar', 'NSCachedURLResponse', 'NSBundle',\n            'NSAutoreleasePool', 'NSAttributedString', 'NSAssertionHandler',\n            'NSArray', 'NSArchiver', 'NSAppleScript', 'NSAppleEventManager',\n            'NSAppleEventDescriptor', 'NSAffineTransform'\n            ),\n        // Foundation protocols\n        6 => array(\n            'NSURLProtocolClient', 'NSURLHandleClient', 'NSURLClient',\n            'NSURLAuthenticationChallengeSender', 'NSScriptObjectSpecifiers',\n            'NSScriptKeyValueCoding', 'NSScriptingComparisonMethods',\n            'NSObjCTypeSerializationCallBack', 'NSMutableCopying',\n            'NSLocking', 'NSKeyValueObserving', 'NSKeyValueCoding',\n            'NSFastEnumeration', 'NSErrorRecoveryAttempting',\n            'NSDecimalNumberBehaviors', 'NSCopying', 'NSComparisonMethods',\n            'NSCoding'\n            ),\n        // AppKit classes\n        7 => array(\n            'NSWorkspace', 'NSWindowController', 'NSWindow', 'NSViewController',\n            'NSViewAnimation', 'NSView', 'NSUserDefaultsController',\n            'NSTypesetter', 'NSTreeNode', 'NSTreeController', 'NSTrackingArea',\n            'NSToolbarItemGroup', 'NSToolbarItem', 'NSToolbar',\n            'NSTokenFieldCell', 'NSTokenField', 'NSTextView',\n            'NSTextTableBlock', 'NSTextTable', 'NSTextTab', 'NSTextStorage',\n            'NSTextList', 'NSTextFieldCell', 'NSTextField', 'NSTextContainer',\n            'NSTextBlock', 'NSTextAttachmentCell', 'NSTextAttachment', 'NSText',\n            'NSTabViewItem', 'NSTabView', 'NSTableView', 'NSTableHeaderView',\n            'NSTableHeaderCell', 'NSTableColumn', 'NSStepperCell', 'NSStepper',\n            'NSStatusItem', 'NSStatusBar', 'NSSplitView', 'NSSpellChecker',\n            'NSSpeechSynthesizer', 'NSSpeechRecognizer', 'NSSound',\n            'NSSliderCell', 'NSSlider', 'NSSimpleHorizontalTypesetter',\n            'NSShadow', 'NSSegmentedControl', 'NSSegmentedCell',\n            'NSSecureTextFieldCell', 'NSSecureTextField', 'NSSearchFieldCell',\n            'NSSearchField', 'NSScrollView', 'NSScroller', 'NSScreen',\n            'NSSavePanel', 'NSRulerView', 'NSRulerMarker', 'NSRuleEditor',\n            'NSResponder', 'NSQuickDrawView', 'NSProgressIndicator',\n            'NSPrintPanel', 'NSPrintOperation', 'NSPrintInfo', 'NSPrinter',\n            'NSPredicateEditorRowTemplate', 'NSPredicateEditor',\n            'NSPopUpButtonCell', 'NSPopUpButton', 'NSPICTImageRep',\n            'NSPersistentDocument', 'NSPDFImageRep', 'NSPathControl',\n            'NSPathComponentCell', 'NSPathCell', 'NSPasteboard',\n            'NSParagraphStyle', 'NSPanel', 'NSPageLayout', 'NSOutlineView',\n            'NSOpenPanel', 'NSOpenGLView', 'NSOpenGLPixelFormat',\n            'NSOpenGLPixelBuffer', 'NSOpenGLContext', 'NSObjectController',\n            'NSNibOutletConnector', 'NSNibControlConnector', 'NSNibConnector',\n            'NSNib', 'NSMutableParagraphStyle', 'NSMovieView', 'NSMovie',\n            'NSMenuView', 'NSMenuItemCell', 'NSMenuItem', 'NSMenu', 'NSMatrix',\n            'NSLevelIndicatorCell', 'NSLevelIndicator', 'NSLayoutManager',\n            'NSInputServer', 'NSInputManager', 'NSImageView', 'NSImageRep',\n            'NSImageCell', 'NSImage', 'NSHelpManager', 'NSGraphicsContext',\n            'NSGradient', 'NSGlyphInfo', 'NSGlyphGenerator', 'NSFormCell',\n            'NSForm', 'NSFontPanel', 'NSFontManager', 'NSFontDescriptor',\n            'NSFont', 'NSFileWrapper', 'NSEvent', 'NSEPSImageRep', 'NSDrawer',\n            'NSDocumentController', 'NSDocument', 'NSDockTile',\n            'NSDictionaryController', 'NSDatePickerCell', 'NSDatePicker',\n            'NSCustomImageRep', 'NSCursor', 'NSController', 'NSControl',\n            'NSComboBoxCell', 'NSComboBox', 'NSColorWell', 'NSColorSpace',\n            'NSColorPicker', 'NSColorPanel', 'NSColorList', 'NSColor',\n            'NSCollectionViewItem', 'NSCollectionView', 'NSClipView',\n            'NSCIImageRep', 'NSCell', 'NSCachedImageRep', 'NSButtonCell',\n            'NSButton', 'NSBrowserCell', 'NSBrowser', 'NSBox',\n            'NSBitmapImageRep', 'NSBezierPath', 'NSATSTypesetter',\n            'NSArrayController', 'NSApplication', 'NSAnimationContext',\n            'NSAnimation', 'NSAlert', 'NSActionCell'\n            ),\n        // AppKit protocols\n        8 => array(\n            'NSWindowScripting', 'NSValidatedUserInterfaceItem',\n            'NSUserInterfaceValidations', 'NSToolTipOwner',\n            'NSToolbarItemValidation', 'NSTextInput',\n            'NSTableDataSource', 'NSServicesRequests',\n            'NSPrintPanelAccessorizing', 'NSPlaceholders',\n            'NSPathControlDelegate', 'NSPathCellDelegate',\n            'NSOutlineViewDataSource', 'NSNibAwaking', 'NSMenuValidation',\n            'NSKeyValueBindingCreation', 'NSInputServiceProvider',\n            'NSInputServerMouseTracker', 'NSIgnoreMisspelledWords',\n            'NSGlyphStorage', 'NSFontPanelValidation', 'NSEditorRegistration',\n            'NSEditor', 'NSDraggingSource', 'NSDraggingInfo',\n            'NSDraggingDestination', 'NSDictionaryControllerKeyValuePair',\n            'NSComboBoxDataSource', 'NSComboBoxCellDataSource',\n            'NSColorPickingDefault', 'NSColorPickingCustom', 'NSChangeSpelling',\n            'NSAnimatablePropertyContainer', 'NSAccessibility'\n            ),\n        // CoreData classes\n        9 => array(\n            'NSRelationshipDescription', 'NSPropertyMapping',\n            'NSPropertyDescription', 'NSPersistentStoreCoordinator',\n            'NSPersistentStore', 'NSMigrationManager', 'NSMappingModel',\n            'NSManagedObjectModel', 'NSManagedObjectID',\n            'NSManagedObjectContext', 'NSManagedObject',\n            'NSFetchRequestExpression', 'NSFetchRequest',\n            'NSFetchedPropertyDescription', 'NSEntityMigrationPolicy',\n            'NSEntityMapping', 'NSEntityDescription', 'NSAttributeDescription',\n            'NSAtomicStoreCacheNode', 'NSAtomicStore'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => true,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true,\n        9 => true\n        ),\n    // Define the colors for the groups listed above\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #a61390;', // Objective-C keywords\n            2 => 'color: #a61390;', // Macros and constants\n            3 => 'color: #a61390;', // C standard library functions\n            4 => 'color: #a61390;', // data types\n            5 => 'color: #400080;', // Foundation classes\n            6 => 'color: #2a6f76;', // Foundation protocols\n            7 => 'color: #400080;', // AppKit classes\n            8 => 'color: #2a6f76;', // AppKit protocols\n            9 => 'color: #400080;' // CoreData classes\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #6e371a;', // Preprocessor directives\n            2 => 'color: #11740a; font-style: italic;', // Normal C single-line comments\n            3 => 'color: #bf1d1a;', // Q-sign in front of Strings\n            'MULTI' => 'color: #11740a; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #2400d9;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #002200;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #bf1d1a;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #2400d9;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #002200;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAME}.html',\n        4 => '',\n        5 => 'http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/{FNAME}_Class/',\n        6 => 'http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Protocols/{FNAME}_Protocol/',\n        7 => 'http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/{FNAME}_Class/',\n        8 => 'http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Protocols/{FNAME}_Protocol/',\n        9 => 'http://developer.apple.com/documentation/Cocoa/Reference/CoreDataFramework/Classes/{FNAME}_Class/'\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/objeck.php",
    "content": "<?php\n/*************************************************************************************\n * objeck.php\n * --------\n * Author: Randy Hollines (objeck@gmail.com)\n * Copyright: (c) 2010 Randy Hollines (http://code.google.com/p/objeck-lang/)\n * Release Version: 1.0.9.1\n * Date Started: 2010/07/01\n *\n * Objeck Programming Language language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/07/26 (1.0.8.10)\n *  -  Added new and missing keywords and symbols: 'String', 'each', '+=', '-=', '*=' and '/='.\n * 2010/07/01 (1.0.8.9)\n *  -  First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Objeck Programming Language',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array('#~' => '~#'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'virtual', 'if', 'else', 'do', 'while', 'use', 'bundle', 'native',\n            'static', 'public', 'private', 'class', 'function', 'method',\n            'select', 'other', 'enum', 'for', 'each', 'label', 'return', 'from'\n            ),\n        2 => array(\n            'Byte', 'Int', 'Nil', 'Float', 'Char', 'Bool', 'String'\n            ),\n        3 => array(\n            'true', 'false'\n            )\n        ),\n    'SYMBOLS' => array(\n        1 => array(\n            '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '%', '=', '<', '>', '&', '|', ':', ';', ',', '+=', '-=', '*=', '/=',\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #b1b100;',\n            3 => 'color: #b1b100;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;',\n            ),\n        'METHODS' => array(\n            0 => 'color: #004000;'\n            ),\n        'SYMBOLS' => array(\n            1 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(),\n        'SCRIPT' => array()\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '-&gt;'\n        ),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/ocaml-brief.php",
    "content": "<?php\n/*************************************************************************************\n * ocaml.php\n * ----------\n * Author: Flaie (fireflaie@gmail.com)\n * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2005/08/27\n *\n * OCaml (Objective Caml) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2005/08/27 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2005/08/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'OCaml (brief)',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array('(*' => '*)'),\n    'CASE_KEYWORDS' => 0,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => \"\",\n    'KEYWORDS' => array(\n        /* main OCaml keywords */\n        1 => array(\n            'and', 'as', 'asr', 'begin', 'class', 'closed', 'constraint', 'do', 'done', 'downto', 'else',\n            'end', 'exception', 'external', 'failwith', 'false', 'flush', 'for', 'fun', 'function', 'functor',\n            'if', 'in', 'include', 'inherit',  'incr', 'land', 'let', 'load', 'los', 'lsl', 'lsr', 'lxor',\n            'match', 'method', 'mod', 'module', 'mutable', 'new', 'not', 'of', 'open', 'option', 'or', 'parser',\n            'private', 'ref', 'rec', 'raise', 'regexp', 'sig', 'struct', 'stdout', 'stdin', 'stderr', 'then',\n            'to', 'true', 'try', 'type', 'val', 'virtual', 'when', 'while', 'with'\n            )\n        ),\n    /* highlighting symbols is really important in OCaml */\n    'SYMBOLS' => array(\n        ';', '!', ':', '.', '=', '%', '^', '*', '-', '/', '+',\n        '>', '<', '(', ')', '[', ']', '&', '|', '#', \"'\"\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #06c; font-weight: bold;' /* nice blue */\n            ),\n        'COMMENTS' => array(\n            'MULTI' => 'color: #5d478b; font-style: italic;' /* light purple */\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #6c6;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #3cb371;' /* nice green */\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #c6c;' /* pink */\n            ),\n        'METHODS' => array(\n            1 => 'color: #060;' /* dark green */\n            ),\n        'REGEXPS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #a52a2a;' /* maroon */\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/ocaml.php",
    "content": "<?php\n/*************************************************************************************\n * ocaml.php\n * ----------\n * Author: Flaie (fireflaie@gmail.com)\n * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2005/08/27\n *\n * OCaml (Objective Caml) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/03/29 (1.0.7.22)\n *   -  Fixed warnings resulting from missing style information\n * 2005/08/27 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2005/08/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'OCaml',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array('(*' => '*)'),\n    'COMMENT_REGEXP' => array(1 => '/\\(\\*(?:(?R)|.)+?\\*\\)/s'),\n    'CASE_KEYWORDS' => 0,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => \"\",\n    'KEYWORDS' => array(\n        /* main OCaml keywords */\n        1 => array(\n            'and', 'as', 'asr', 'begin', 'class', 'closed', 'constraint', 'do', 'done', 'downto', 'else',\n            'end', 'exception', 'external', 'failwith', 'false', 'for', 'fun', 'function', 'functor',\n            'if', 'in', 'include', 'inherit',  'incr', 'land', 'let', 'load', 'los', 'lsl', 'lsr', 'lxor',\n            'match', 'method', 'mod', 'module', 'mutable', 'new', 'not', 'of', 'open', 'option', 'or', 'parser',\n            'private', 'ref', 'rec', 'raise', 'regexp', 'sig', 'struct', 'stdout', 'stdin', 'stderr', 'then',\n            'to', 'true', 'try', 'type', 'val', 'virtual', 'when', 'while', 'with'\n            ),\n        /* define names of main librarys, so we can link to it */\n        2 => array(\n            'Arg', 'Arith_status', 'Array', //'Array1', 'Array2', 'Array3',\n            'ArrayLabels', 'Big_int', 'Bigarray', 'Buffer', 'Callback',\n            'CamlinternalLazy', 'CamlinternalMod', 'CamlinternalOO', 'Char',\n            'Complex', 'Condition', 'Dbm', 'Digest', 'Dynlink', 'Event',\n            'Filename', 'Format', 'Gc', 'Genlex', 'Graphics', 'GraphicsX11',\n            'Hashtbl', 'Int32', 'Int64', 'Lazy', 'Lexing', 'List', 'ListLabels',\n            'Map', 'Marshal', 'MoreLabels', 'Mutex', 'Nativeint', 'Num', 'Obj',\n            'Oo', 'Parsing', 'Pervasives', 'Printexc', 'Printf', 'Queue',\n            'Random', 'Scanf', 'Set', 'Sort', 'Stack', 'StdLabels', 'Str',\n            'Stream', 'String', 'StringLabels', 'Sys', 'Thread', 'ThreadUnix',\n            'Tk', 'Unix', 'UnixLabels', 'Weak'\n            ),\n        /* just link to the Pervasives functions library, cause it's the default opened library when starting OCaml */\n        3 => array(\n            'abs', 'abs_float', 'acos', 'asin', 'at_exit', 'atan', 'atan2',\n            'bool_of_string', 'ceil', 'char_of_int', 'classify_float',\n            'close_in', 'close_in_noerr', 'close_out', 'close_out_noerr',\n            'compare', 'cos', 'cosh', 'decr', 'epsilon_float', 'exit', 'exp',\n            'float', 'float_of_int', 'float_of_string', 'floor', 'flush',\n            'flush_all', 'format_of_string', 'frexp', 'fst', 'ignore',\n            'in_channel_length', 'infinity', 'input', 'input_binary_int',\n            'input_byte', 'input_char', 'input_line', 'input_value',\n            'int_of_char', 'int_of_float', 'int_of_string', 'invalid_arg',\n            'ldexp', 'log', 'log10', 'max', 'max_float', 'max_int', 'min',\n            'min_float', 'min_int', 'mod_float', 'modf', 'nan', 'open_in',\n            'open_in_bin', 'open_in_gen', 'open_out', 'open_out_bin',\n            'open_out_gen', 'out_channel_length', 'output', 'output_binary_int',\n            'output_byte', 'output_char', 'output_string', 'output_value',\n            'pos_in', 'pos_out',  'pred', 'prerr_char', 'prerr_endline',\n            'prerr_float', 'prerr_int', 'prerr_newline', 'prerr_string',\n            'print_char', 'print_endline', 'print_float', 'print_int',\n            'print_newline', 'print_string', 'read_float', 'read_int',\n            'read_line', 'really_input', 'seek_in', 'seek_out',\n            'set_binary_mode_in', 'set_binary_mode_out', 'sin', 'sinh', 'snd',\n            'sqrt', 'string_of_bool', 'string_of_float', 'string_of_format',\n            'string_of_int', 'succ', 'tan', 'tanh', 'truncate'\n            ),\n        /* here Pervasives Types */\n        4 => array (\n            'array','bool','char','exn','file_descr','format','fpclass',\n            'in_channel','int','int32','int64','list','nativeint','open_flag',\n            'out_channel','string','Sys_error','unit'\n            ),\n        /* finally Pervasives Exceptions */\n        5 => array (\n            'Exit', 'Invalid_Argument', 'Failure', 'Division_by_zero'\n            )\n        ),\n    /* highlighting symbols is really important in OCaml */\n    'SYMBOLS' => array(\n        '+.', '-.', '*.', '/.', '[<', '>]',\n        ';', '!', ':', '.', '=', '%', '^', '*', '-', '/', '+',\n        '>', '<', '(', ')', '[', ']', '&', '|', '#', \"'\",\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => true, /* functions name are case sensitive */\n        3 => true, /* types name too */\n        4 => true, /* pervasives types */\n        5 => true  /* pervasives exceptions */\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #06c; font-weight: bold;', /* nice blue */\n            2 => 'color: #06c; font-weight: bold;', /* nice blue */\n            3 => 'color: #06c; font-weight: bold;', /* nice blue */\n            4 => 'color: #06c; font-weight: bold;', /* nice blue */\n            5 => 'color: #06c; font-weight: bold;' /* nice blue */\n            ),\n        'COMMENTS' => array(\n            'MULTI' => 'color: #5d478b; font-style: italic;', /* light purple */\n            1 => 'color: #5d478b; font-style: italic;' /* light purple */\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #a52a2a;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #3cb371;' /* nice green */\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #c6c;' /* pink */\n            ),\n        'METHODS' => array(\n            1 => 'color: #060;' /* dark green */\n            ),\n        'REGEXPS' => array(\n            1 => 'font-weight:bold; color:#339933;',\n            2 => 'font-weight:bold; color:#993399;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #a52a2a;' /* maroon */\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        /* some of keywords are Pervasives functions (land, lxor, asr, ...) */\n        1 => '',\n        /* link to the wanted library */\n        2 => 'http://caml.inria.fr/pub/docs/manual-ocaml/libref/{FNAME}.html',\n        /* link to Pervasives functions */\n        3 => 'http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#VAL{FNAME}',\n        /* link to Pervasives type */\n        4 => 'http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#TYPE{FNAME}',\n        /* link to Pervasives exceptions */\n        5 => 'http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#EXCEPTION{FNAME}'\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        1 => '~\\w+',\n        2 => '`(?=(?-i:[a-z]))\\w*',\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/octave.php",
    "content": "<?php\n/*************************************************************************************\n * octave.php\n * -----------\n * Author: Carnë Draug (carandraug+dev@gmail.com)\n *         Juan Pablo Carbajal (carbajal@ifi.uzh.ch)\n * Copyright: (c) 2012 Carnë Draug\n *            (c) 2012 Juan Pablo Carbajal\n * Release Version: 1.0.9.1\n * Date Started: 2012/05/22\n *\n * GNU/Octave M-file language file for GeSHi.\n *\n * This file was heavily based on octave.lang from gtksourceview. If bugs are\n * found and/or fixed on this file, please send them to the gtksourceview\n * project or e-mail them to this file authors. Thanks in advance\n *\n * CHANGES\n * -------\n * 2012/05/22 (1.0.8.11)\n *   -  First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'GNU/Octave',\n    'COMMENT_SINGLE' => array(1 => '#', 2 => '%'),\n    // we can't use COMMENT_MULTI since start and end of block comments need to\n    // be alone on the line (optionally, with whitespace). See COMMENT_REGEXP\n    'COMMENT_MULTI' => array(),\n    // we can't use QUOTEMARKS, not even HARDQUOTE, see COMMENT_REGEXP\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'COMMENT_REGEXP' => array(\n        // Single quote strings: we can't use QUOTEMARKS here since new\n        // lines will break the string. Plus, single quote strings do not even\n        // allow for continuation markers, only double quote strings allow it.\n        // Also, to do not misdetect the transpose operator ' as the start of a\n        // string we assert to not follow a variable name (letters, digits and\n        // underscores) or a closing bracket (round, square or curly) or a dot\n        // (to form the array transpose operator \".'\" ).\n        3 => \"/(?<![0-9a-zA-Z_\\)\\]}\\.])'.*?'/\",\n        // Double quote strings: we also can't use QUOTEMARKS here (see single\n        // line quotes). However, with double quote strings both \\ and ... can\n        // be used to make multiline strings. Continuation markers can be\n        // followed by whitespace\n        4 => '/\"(.|(\\.\\.\\.|\\\\\\)(\\s)*?\\n)*?(?<!\\\\\\)\"/',\n        // Block comments: the ms modifiers treat strings as multiple lines (to\n        // be able to use ^ and $ instead of newline and thus support block\n        // comments on the first and last line of source) and make . also match\n        // a newline\n        5 => \"/^\\s*?[%#]{\\s*?$.*?^\\s*?[%#]}\\s*?$/ms\",\n        // Packaging system: comes here so that pkg can also be used in the\n        // function form. The list of pkg commands is optional to the match so\n        // that at least pkg is highlighted if new commands are implemented\n        6 => \"/\\bpkg(?!\\s*\\()\\s+((un)?install|update|(un)?load|list|(global|local)_list|describe|prefix|(re)?build)?\\b/\",\n        // Function handles\n        7 => \"/@([a-z_][a-z1-9_]*)?/i\",\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC |\n        GESHI_NUMBER_OCT_PREFIX |\n        GESHI_NUMBER_HEX_PREFIX |\n        GESHI_NUMBER_FLT_SCI_ZERO,\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'KEYWORDS' => array(\n        // Reserved words\n        1 => array(\n            'break', 'case', 'catch', 'continue', 'do', 'else', 'elseif', 'end',\n            'end_try_catch', 'end_unwind_protect', 'endfor', 'endfunction',\n            'endif', 'endparfor', 'endswitch', 'endwhile', 'for', 'function',\n            'if', 'otherwise', 'parfor', 'return',\n            'switch', 'try', 'until', 'unwind_protect',\n            'unwind_protect_cleanup', 'varargin', 'varargout', 'while'\n            ),\n        // Storage type\n        2 => array(\n            'global', 'persistent', 'static'\n            ),\n        // Internal variable\n        3 => array(\n            'ans'\n            ),\n        // Data types\n        4 => array(\n            'cell', 'char', 'double', 'uint8', 'uint16', 'uint32', 'uint64',\n            'int8','int16', 'int32', 'int64', 'logical', 'single', 'struct'\n            ),\n        // Built in\n        5 => array(\n            'P_tmpdir', 'abs', 'acos', 'acosh',\n            'add_input_event_hook', 'addlistener', 'addpath', 'addproperty',\n            'all', 'allow_noninteger_range_as_index', 'and', 'angle', 'any',\n            'arg', 'argnames', 'argv', 'asin', 'asinh', 'assignin', 'atan',\n            'atan2', 'atanh', 'atexit', 'autoload', 'available_graphics_toolkits',\n            'beep_on_error', 'bitand', 'bitmax', 'bitor', 'bitshift', 'bitxor',\n            'builtin', 'canonicalize_file_name', 'cat', 'cbrt', 'cd', 'ceil',\n            'cell2struct', 'cellstr', 'chdir', 'class', 'clc',\n            'clear', 'columns', 'command_line_path', 'completion_append_char',\n            'completion_matches', 'complex', 'confirm_recursive_rmdir', 'conj',\n            'cos', 'cosh', 'cputime', 'crash_dumps_octave_core', 'ctranspose',\n            'cumprod', 'cumsum', 'dbclear', 'dbcont', 'dbdown', 'dbnext',\n            'dbquit', 'dbstack', 'dbstatus', 'dbstep', 'dbstop', 'dbtype', 'dbup',\n            'dbwhere', 'debug_on_error', 'debug_on_interrupt', 'debug_on_warning',\n            'default_save_options', 'dellistener', 'diag', 'diary', 'diff',\n            'disp', 'do_braindead_shortcircuit_evaluation', 'do_string_escapes',\n            'doc_cache_file', 'drawnow', 'dup2', 'echo',\n            'echo_executing_commands', 'edit_history','eq', 'erf', 'erfc',\n            'erfcx', 'erfinv', 'errno', 'errno_list', 'error', 'eval', 'evalin',\n            'exec', 'exist', 'exit', 'exp', 'expm1', 'eye', 'fclear',\n            'fclose', 'fcntl', 'fdisp', 'feof', 'ferror', 'feval', 'fflush',\n            'fgetl', 'fgets', 'fieldnames', 'file_in_loadpath', 'file_in_path',\n            'filemarker', 'filesep', 'find_dir_in_path', 'finite', 'fix',\n            'fixed_point_format', 'floor', 'fmod', 'fnmatch', 'fopen', 'fork',\n            'format', 'formula', 'fprintf', 'fputs', 'fread', 'freport',\n            'frewind', 'fscanf', 'fseek', 'fskipl', 'ftell', 'full', 'func2str',\n            'functions', 'fwrite', 'gamma', 'gammaln', 'ge', 'genpath', 'get',\n            'get_help_text', 'get_help_text_from_file', 'getegid', 'getenv',\n            'geteuid', 'getgid', 'gethostname', 'getpgrp', 'getpid', 'getppid',\n            'getuid', 'glob', 'gt', 'history', 'history_control', 'history_file',\n            'history_size', 'history_timestamp_format_string', 'home', 'horzcat',\n            'hypot', 'ifelse', 'ignore_function_time_stamp', 'imag',\n            'inferiorto', 'info_file', 'info_program', 'inline', 'input',\n            'intmax', 'intmin', 'ipermute',\n            'is_absolute_filename', 'is_dq_string', 'is_function_handle',\n            'is_rooted_relative_filename', 'is_sq_string', 'isalnum', 'isalpha',\n            'isargout', 'isascii', 'isbool', 'iscell', 'iscellstr', 'ischar',\n            'iscntrl', 'iscomplex', 'isdebugmode', 'isdigit', 'isempty',\n            'isfield', 'isfinite', 'isfloat', 'isglobal', 'isgraph', 'ishandle',\n            'isieee', 'isindex', 'isinf', 'isinteger', 'iskeyword', 'islogical',\n            'islower', 'ismatrix', 'ismethod', 'isna', 'isnan', 'isnull',\n            'isnumeric', 'isobject', 'isprint', 'ispunct', 'isreal', 'issorted',\n            'isspace', 'issparse', 'isstruct', 'isupper', 'isvarname', 'isxdigit',\n            'kbhit', 'keyboard', 'kill', 'lasterr', 'lasterror', 'lastwarn',\n            'ldivide', 'le', 'length', 'lgamma', 'link', 'linspace',\n            'list_in_columns', 'load', 'loaded_graphics_toolkits', 'log', 'log10',\n            'log1p', 'log2', 'lower', 'lstat', 'lt',\n            'make_absolute_filename', 'makeinfo_program', 'max_recursion_depth',\n            'merge', 'methods', 'mfilename', 'minus', 'mislocked',\n            'missing_function_hook', 'mkdir', 'mkfifo', 'mkstemp', 'mldivide',\n            'mlock', 'mod', 'more', 'mpower', 'mrdivide', 'mtimes', 'munlock',\n            'nargin', 'nargout', 'native_float_format', 'ndims', 'ne',\n            'nfields', 'nnz', 'norm', 'not', 'nth_element', 'numel', 'nzmax',\n            'octave_config_info', 'octave_core_file_limit',\n            'octave_core_file_name', 'octave_core_file_options',\n            'octave_tmp_file_name', 'onCleanup', 'ones',\n            'optimize_subsasgn_calls', 'or', 'output_max_field_width',\n            'output_precision', 'page_output_immediately', 'page_screen_output',\n            'path', 'pathsep', 'pause', 'pclose', 'permute', 'pipe', 'plus',\n            'popen', 'popen2', 'power', 'print_empty_dimensions',\n            'print_struct_array_contents', 'printf', 'prod',\n            'program_invocation_name', 'program_name', 'putenv', 'puts', 'pwd',\n            'quit', 'rats', 'rdivide', 're_read_readline_init_file',\n            'read_readline_init_file', 'readdir', 'readlink', 'real', 'realmax',\n            'realmin', 'register_graphics_toolkit', 'rehash', 'rem',\n            'remove_input_event_hook', 'rename', 'repelems', 'reset', 'reshape',\n            'resize', 'restoredefaultpath', 'rethrow', 'rmdir', 'rmfield',\n            'rmpath', 'round', 'roundb', 'rows', 'run_history', 'save',\n            'save_header_format_string', 'save_precision', 'saving_history',\n            'scanf', 'set', 'setenv', 'sighup_dumps_octave_core', 'sign',\n            'sigterm_dumps_octave_core', 'silent_functions', 'sin',\n            'sinh', 'size', 'size_equal', 'sizemax', 'sizeof', 'sleep', 'sort',\n            'source', 'spalloc', 'sparse', 'sparse_auto_mutate',\n            'split_long_rows', 'sprintf', 'sqrt', 'squeeze', 'sscanf', 'stat',\n            'stderr', 'stdin', 'stdout', 'str2func', 'strcmp', 'strcmpi',\n            'string_fill_char', 'strncmp', 'strncmpi', 'struct2cell',\n            'struct_levels_to_print', 'strvcat', 'subsasgn', 'subsref', 'sum',\n            'sumsq', 'superiorto', 'suppress_verbose_help_message', 'symlink',\n            'system', 'tan', 'tanh', 'terminal_size', 'tic', 'tilde_expand',\n            'times', 'tmpfile', 'tmpnam', 'toascii', 'toc', 'tolower', 'toupper',\n            'transpose', 'typeinfo',\n            'umask', 'uminus', 'uname', 'undo_string_escapes', 'unlink',\n            'uplus', 'upper', 'usage', 'usleep', 'vec', 'vectorize', 'vertcat',\n            'waitfor', 'waitpid', 'warning', 'warranty', 'who', 'whos',\n            'whos_line_format', 'yes_or_no', 'zeros'\n            ),\n        // Octave functions\n        6 => array(\n            'accumarray', 'accumdim', 'acosd', 'acot', 'acotd', 'acoth', 'acsc',\n            'acscd', 'acsch', 'addpref', 'addtodate', 'allchild', 'amd',\n            'ancestor', 'anova', 'arch_fit', 'arch_rnd', 'arch_test',\n            'area', 'arma_rnd', 'asctime', 'asec', 'asecd', 'asech', 'asind',\n            'assert', 'atand', 'autoreg_matrix', 'autumn',\n            'axes', 'axis', 'balance', 'bar', 'barh', 'bartlett', 'bartlett_test',\n            'base2dec', 'beep', 'bessel', 'besselj', 'beta', 'betacdf',\n            'betainc', 'betainv', 'betaln', 'betapdf', 'betarnd', 'bicg',\n            'bicgstab', 'bicubic', 'bin2dec', 'bincoeff', 'binocdf', 'binoinv',\n            'binopdf', 'binornd', 'bitcmp', 'bitget', 'bitset', 'blackman',\n            'blanks', 'blkdiag', 'bone', 'box', 'brighten', 'bsxfun',\n            'bug_report', 'bunzip2', 'bzip2', 'calendar', 'cart2pol', 'cart2sph',\n            'cast', 'cauchy_cdf', 'cauchy_inv', 'cauchy_pdf', 'cauchy_rnd',\n            'caxis', 'ccolamd', 'cell2mat', 'celldisp', 'cellfun',\n            'center', 'cgs', 'chi2cdf', 'chi2inv', 'chi2pdf', 'chi2rnd',\n            'chisquare_test_homogeneity', 'chisquare_test_independence', 'chol',\n            'chop', 'circshift', 'cla', 'clabel', 'clf', 'clock',\n            'cloglog', 'close', 'closereq', 'colamd', 'colloc', 'colon',\n            'colorbar', 'colormap', 'colperm', 'colstyle', 'comet', 'comet3',\n            'comma', 'common_size', 'commutation_matrix', 'compan',\n            'compare_versions', 'compass', 'computer', 'cond', 'condest',\n            'contour', 'contour3', 'contourc', 'contourf', 'contrast', 'conv',\n            'conv2', 'convhull', 'convhulln', 'cool', 'copper', 'copyfile',\n            'cor_test', 'corr', 'cosd', 'cot', 'cotd', 'coth', 'cov',\n            'cplxpair', 'cross', 'csc', 'cscd', 'csch', 'cstrcat',\n            'csvread', 'csvwrite', 'ctime', 'cumtrapz', 'curl', 'cylinder',\n            'daspect', 'daspk', 'dasrt', 'dassl', 'date', 'datenum', 'datestr',\n            'datetick', 'datevec', 'dblquad', 'deal', 'deblank', 'debug',\n            'dec2base', 'dec2bin', 'dec2hex', 'deconv', 'del2', 'delaunay',\n            'delaunay3', 'delaunayn', 'delete', 'demo', 'det', 'detrend',\n            'diffpara', 'diffuse', 'dir', 'discrete_cdf', 'discrete_inv',\n            'discrete_pdf', 'discrete_rnd', 'display', 'divergence',\n            'dlmread', 'dlmwrite', 'dmperm', 'doc', 'dos', 'dot', 'dsearch',\n            'dsearchn', 'dump_prefs', 'duplication_matrix', 'durbinlevinson',\n            'edit', 'eig', 'eigs', 'ellipsoid', 'empirical_cdf', 'empirical_inv',\n            'empirical_pdf', 'empirical_rnd', 'eomday', 'errorbar',\n            'etime', 'etreeplot', 'example', 'expcdf', 'expinv', 'expm', 'exppdf',\n            'exprnd', 'ezcontour', 'ezcontourf', 'ezmesh', 'ezmeshc', 'ezplot',\n            'ezplot3', 'ezpolar', 'ezsurf', 'ezsurfc', 'f_test_regression',\n            'fact', 'factor', 'factorial', 'fail', 'fcdf', 'feather', 'fft',\n            'fft2', 'fftconv', 'fftfilt', 'fftn', 'fftshift', 'fftw', 'figure',\n            'fileattrib', 'fileparts', 'fileread', 'fill', 'filter', 'filter2',\n            'find', 'findall', 'findobj', 'findstr', 'finv', 'flag', 'flipdim',\n            'fliplr', 'flipud', 'fminbnd', 'fminunc', 'fpdf', 'fplot',\n            'fractdiff', 'freqz', 'freqz_plot', 'frnd', 'fsolve',\n            'fullfile', 'fzero', 'gamcdf', 'gaminv', 'gammainc',\n            'gampdf', 'gamrnd', 'gca', 'gcbf', 'gcbo', 'gcd', 'gcf',\n            'gen_doc_cache', 'genvarname', 'geocdf', 'geoinv', 'geopdf', 'geornd',\n            'get_first_help_sentence', 'getappdata', 'getfield', 'getgrent',\n            'getpref', 'getpwent', 'getrusage', 'ginput', 'givens', 'glpk',\n            'gls', 'gmap40', 'gmres', 'gnuplot_binary', 'gplot',\n            'gradient', 'graphics_toolkit', 'gray', 'gray2ind', 'grid',\n            'griddata', 'griddata3', 'griddatan', 'gtext', 'guidata',\n            'guihandles', 'gunzip', 'gzip', 'hadamard', 'hamming', 'hankel',\n            'hanning', 'help', 'hess', 'hex2dec', 'hex2num', 'hggroup', 'hidden',\n            'hilb', 'hist', 'histc', 'hold', 'hot', 'hotelling_test',\n            'hotelling_test_2', 'housh', 'hsv', 'hsv2rgb', 'hurst', 'hygecdf',\n            'hygeinv', 'hygepdf', 'hygernd', 'idivide', 'ifftshift', 'image',\n            'imagesc', 'imfinfo', 'imread', 'imshow', 'imwrite', 'ind2gray',\n            'ind2rgb', 'index', 'info', 'inpolygon', 'inputname', 'int2str',\n            'interp1', 'interp1q', 'interp2', 'interp3', 'interpft', 'interpn',\n            'intersect', 'inv', 'invhilb', 'iqr',\n            'is_leap_year', 'is_valid_file_id',\n            'isa', 'isappdata', 'iscolumn', 'isdefinite', 'isdeployed', 'isdir',\n            'isequal', 'isequalwithequalnans', 'isfigure', 'ishermitian',\n            'ishghandle', 'ishold', 'isletter', 'ismac', 'ismember', 'isocolors',\n            'isonormals', 'isosurface', 'ispc', 'ispref', 'isprime', 'isprop',\n            'isrow', 'isscalar', 'issquare', 'isstrprop', 'issymmetric',\n            'isunix', 'isvector', 'jet', 'kendall', 'kolmogorov_smirnov_cdf',\n            'kolmogorov_smirnov_test', 'kolmogorov_smirnov_test_2', 'kron',\n            'kruskal_wallis_test', 'krylov', 'kurtosis', 'laplace_cdf',\n            'laplace_inv', 'laplace_pdf', 'laplace_rnd', 'lcm', 'legend',\n            'legendre', 'license', 'lin2mu', 'line', 'linkprop', 'list_primes',\n            'loadaudio', 'loadobj', 'logistic_cdf', 'logistic_inv',\n            'logistic_pdf', 'logistic_regression', 'logistic_rnd', 'logit',\n            'loglog', 'loglogerr', 'logm', 'logncdf', 'logninv', 'lognpdf',\n            'lognrnd', 'logspace', 'lookfor', 'lookup', 'ls', 'ls_command',\n            'lsode', 'lsqnonneg', 'lu', 'luinc', 'magic', 'mahalanobis', 'manova',\n            'mat2str', 'matlabroot', 'matrix_type', 'max', 'mcnemar_test',\n            'md5sum', 'mean', 'meansq', 'median', 'menu', 'mesh', 'meshc',\n            'meshgrid', 'meshz', 'mex', 'mexext', 'mgorth', 'mkoctfile', 'mkpp',\n            'mode', 'moment', 'movefile', 'mpoles', 'mu2lin', 'namelengthmax',\n            'nargchk', 'narginchk', 'nargoutchk', 'nbincdf', 'nbininv', 'nbinpdf',\n            'nbinrnd', 'nchoosek', 'ndgrid', 'newplot', 'news', 'nextpow2',\n            'nonzeros', 'normcdf', 'normest', 'norminv', 'normpdf', 'normrnd',\n            'now', 'nproc', 'nthargout', 'nthroot', 'ntsc2rgb', 'null', 'num2str',\n            'ocean', 'ols', 'onenormest', 'optimget', 'optimset', 'orderfields',\n            'orient', 'orth', 'pack', 'paren', 'pareto', 'parseparams', 'pascal',\n            'patch', 'pathdef', 'pbaspect', 'pcg', 'pchip', 'pcolor', 'pcr',\n            'peaks', 'periodogram', 'perl', 'perms', 'pie', 'pie3',\n            'pink', 'pinv', 'pkg', 'planerot', 'playaudio', 'plot', 'plot3',\n            'plotmatrix', 'plotyy', 'poisscdf', 'poissinv', 'poisspdf',\n            'poissrnd', 'pol2cart', 'polar', 'poly', 'polyaffine', 'polyarea',\n            'polyder', 'polyfit', 'polygcd', 'polyint', 'polyout',\n            'polyreduce', 'polyval', 'polyvalm', 'postpad', 'pow2', 'powerset',\n            'ppder', 'ppint', 'ppjumps', 'ppplot', 'ppval', 'pqpnonneg',\n            'prctile', 'prepad', 'primes', 'print', 'printAllBuiltins',\n            'print_usage', 'prism', 'probit', 'profexplore', 'profile',\n            'profshow', 'prop_test_2', 'python', 'qp', 'qqplot', 'qr', 'quad',\n            'quadcc', 'quadgk', 'quadl', 'quadv', 'quantile', 'quiver', 'quiver3',\n            'qz', 'qzhess', 'rainbow', 'rand', 'randi', 'range', 'rank', 'ranks',\n            'rat', 'rcond', 'reallog', 'realpow', 'realsqrt', 'record',\n            'rectangle', 'rectint', 'recycle', 'refresh', 'refreshdata', 'regexp',\n            'regexptranslate', 'repmat', 'residue', 'rgb2hsv',\n            'rgb2ind', 'rgb2ntsc', 'ribbon', 'rindex', 'rmappdata', 'rmpref',\n            'roots', 'rose', 'rosser', 'rot90', 'rotdim', 'rref', 'run',\n            'run_count', 'run_test', 'rundemos', 'runlength', 'runtests',\n            'saveas', 'saveaudio', 'saveobj', 'savepath', 'scatter',\n            'scatter3', 'schur', 'sec', 'secd', 'sech', 'semicolon', 'semilogx',\n            'semilogxerr', 'semilogy', 'semilogyerr', 'setappdata', 'setaudio',\n            'setdiff', 'setfield', 'setpref', 'setxor', 'shading',\n            'shg', 'shift', 'shiftdim', 'sign_test', 'sinc', 'sind',\n            'sinetone', 'sinewave', 'skewness', 'slice', 'sombrero', 'sortrows',\n            'spaugment', 'spconvert', 'spdiags', 'spearman', 'spectral_adf',\n            'spectral_xdf', 'specular', 'speed', 'spencer', 'speye', 'spfun',\n            'sph2cart', 'sphere', 'spinmap', 'spline', 'spones', 'spparms',\n            'sprand', 'sprandn', 'sprandsym', 'spring', 'spstats', 'spy', 'sqp',\n            'sqrtm', 'stairs', 'statistics', 'std', 'stdnormal_cdf',\n            'stdnormal_inv', 'stdnormal_pdf', 'stdnormal_rnd', 'stem', 'stem3',\n            'stft', 'str2double', 'str2num', 'strcat', 'strchr',\n            'strfind', 'strjust', 'strmatch', 'strread', 'strsplit', 'strtok',\n            'strtrim', 'strtrunc', 'structfun', 'sub2ind',\n            'subplot', 'subsindex', 'subspace', 'substr', 'substruct', 'summer',\n            'surf', 'surface', 'surfc', 'surfl', 'surfnorm', 'svd', 'svds',\n            'swapbytes', 'syl', 'symbfact', 'symrcm',\n            'symvar', 'synthesis', 't_test', 't_test_2', 't_test_regression',\n            'table', 'tand', 'tar', 'tcdf', 'tempdir', 'tempname', 'test', 'text',\n            'textread', 'textscan', 'time', 'tinv', 'title', 'toeplitz', 'tpdf',\n            'trace', 'trapz', 'treelayout', 'treeplot', 'tril', 'trimesh',\n            'triplequad', 'triplot', 'trisurf', 'trnd', 'tsearch', 'tsearchn',\n            'type', 'typecast', 'u_test', 'uicontextmenu', 'uicontrol',\n            'uigetdir', 'uigetfile', 'uimenu', 'uipanel', 'uipushtool',\n            'uiputfile', 'uiresume', 'uitoggletool', 'uitoolbar', 'uiwait',\n            'unidcdf', 'unidinv', 'unidpdf', 'unidrnd', 'unifcdf', 'unifinv',\n            'unifpdf', 'unifrnd', 'unimplemented', 'union', 'unique', 'unix',\n            'unmkpp', 'unpack', 'untabify', 'untar', 'unwrap', 'unzip',\n            'urlwrite', 'usejava', 'validatestring', 'vander', 'var',\n            'var_test', 'vech', 'ver', 'version', 'view', 'voronoi', 'voronoin',\n            'waitbar', 'waitforbuttonpress', 'warning_ids', 'wavread', 'wavwrite',\n            'wblcdf', 'wblinv', 'wblpdf', 'wblrnd', 'weekday',\n            'welch_test', 'what', 'which',\n            'white', 'whitebg', 'wienrnd', 'wilcoxon_test', 'wilkinson', 'winter',\n            'xlabel', 'xlim', 'xor', 'ylabel', 'ylim', 'yulewalker', 'z_test',\n            'z_test_2', 'zip', 'zlabel', 'zlim', 'zscore', 'airy', 'arrayfun',\n            'besselh', 'besseli', 'besselk', 'bessely', 'bitpack', 'bitunpack',\n            'blkmm', 'cellindexmat', 'cellslices', 'chol2inv', 'choldelete',\n            'cholinsert', 'cholinv', 'cholshift', 'cholupdate', 'convn',\n            'csymamd', 'cummax', 'cummin', 'daspk_options', 'dasrt_options',\n            'dassl_options', 'endgrent', 'endpwent', 'etree', 'getgrgid',\n            'getgrnam', 'getpwnam', 'getpwuid', 'gmtime', 'gui_mode', 'ifft',\n            'ifft2', 'ifftn', 'ind2sub', 'inverse', 'localtime', 'lsode_options',\n            'luupdate', 'mat2cell', 'min', 'mktime', 'mouse_wheel_zoom',\n            'num2cell', 'num2hex', 'qrdelete', 'qrinsert', 'qrshift', 'qrupdate',\n            'quad_options', 'rande', 'randg', 'randn', 'randp', 'randperm',\n            'regexpi', 'regexprep', 'rsf2csf', 'setgrent', 'setpwent', 'sprank',\n            'strftime', 'strptime', 'strrep', 'svd_driver', 'symamd', 'triu',\n            'urlread'\n            ),\n        // Private builtin\n        7 => array(\n            '__accumarray_max__', '__accumarray_min__', '__accumarray_sum__',\n            '__accumdim_sum__', '__builtins__', '__calc_dimensions__',\n            '__current_scope__', '__display_tokens__', '__dump_symtab_info__',\n            '__end__', '__get__', '__go_axes__', '__go_axes_init__',\n            '__go_delete__', '__go_execute_callback__', '__go_figure__',\n            '__go_figure_handles__', '__go_handles__', '__go_hggroup__',\n            '__go_image__', '__go_line__', '__go_patch__', '__go_surface__',\n            '__go_text__', '__go_uicontextmenu__', '__go_uicontrol__',\n            '__go_uimenu__', '__go_uipanel__', '__go_uipushtool__',\n            '__go_uitoggletool__', '__go_uitoolbar__', '__gud_mode__',\n            '__image_pixel_size__', '__is_handle_visible__', '__isa_parent__',\n            '__keywords__', '__lexer_debug_flag__', '__list_functions__',\n            '__operators__', '__parent_classes__', '__parser_debug_flag__',\n            '__pathorig__', '__profiler_data__', '__profiler_enable__',\n            '__profiler_reset__', '__request_drawnow__', '__sort_rows_idx__',\n            '__token_count__', '__varval__', '__version_info__', '__which__'\n            ),\n        // Private Octave functions\n        8 => array(\n            '__all_opts__', '__contourc__', '__delaunayn__', '__dispatch__',\n            '__dsearchn__', '__finish__', '__fltk_uigetfile__',\n            '__glpk__', '__gnuplot_drawnow__', '__init_fltk__',\n            '__init_gnuplot__', '__lin_interpn__', '__magick_read__',\n            '__makeinfo__', '__pchip_deriv__', '__plt_get_axis_arg__', '__qp__',\n            '__voronoi__', '__fltk_maxtime__', '__fltk_redraw__', '__ftp__',\n            '__ftp_ascii__', '__ftp_binary__', '__ftp_close__', '__ftp_cwd__',\n            '__ftp_delete__', '__ftp_dir__', '__ftp_mget__', '__ftp_mkdir__',\n            '__ftp_mode__', '__ftp_mput__', '__ftp_pwd__', '__ftp_rename__',\n            '__ftp_rmdir__', '__magick_finfo__', '__magick_format_list__',\n            '__magick_write__'\n            ),\n        // Builtin Global Variables\n        9 => array(\n            'EDITOR', 'EXEC_PATH', 'F_DUPFD', 'F_GETFD', 'F_GETFL', 'F_SETFD',\n            'F_SETFL', 'IMAGE_PATH', 'OCTAVE_HOME',\n            'OCTAVE_VERSION', 'O_APPEND', 'O_ASYNC', 'O_CREAT', 'O_EXCL',\n            'O_NONBLOCK', 'O_RDONLY', 'O_RDWR', 'O_SYNC', 'O_TRUNC', 'O_WRONLY',\n            'PAGER', 'PAGER_FLAGS', 'PS1', 'PS2', 'PS4', 'SEEK_CUR', 'SEEK_END',\n            'SEEK_SET', 'SIG', 'S_ISBLK', 'S_ISCHR', 'S_ISDIR', 'S_ISFIFO',\n            'S_ISLNK', 'S_ISREG', 'S_ISSOCK', 'WCONTINUE', 'WCOREDUMP',\n            'WEXITSTATUS', 'WIFCONTINUED', 'WIFEXITED', 'WIFSIGNALED',\n            'WIFSTOPPED', 'WNOHANG', 'WSTOPSIG', 'WTERMSIG', 'WUNTRACED'\n            ),\n        // Constant functions\n        10 => array (\n            'e', 'eps', 'inf', 'Inf', 'nan', 'NaN', 'NA', 'pi', 'i', 'I', 'j',\n            'J', 'true', 'false'\n            ),\n        ),\n    'SYMBOLS' => array(\n        // Comparison & logical\n        0 => array(\n            '!', '!=', '&', '&&','|', '||', '~', '~=',\n            '<', '<=', '==', '>', '>='\n            ),\n        // Aritmethical\n        1 => array(\n            '*', '**', '+', '++', '-', '--', '/', \"\\\\\",\"'\"\n            ),\n        // Elementwise arithmetical\n        2 => array(\n            '.*', '.**','./', '.^', '^',\".\\\\\",\".'\"\n            ),\n        // Arithmetical & assignation\n        3 => array(\n            '*=','+=','-=','/=','\\=','**=','^=',\n            '.*=','.+=','.-=','./=','.\\=','.**=','.^=','='\n            ),\n        // Indexer\n        4 => array(\n            ':'\n            ),\n        // Delimiters\n        5 => array(\n            ',', '...', ';'\n            ),\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => true,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true,\n        9 => true,\n        10 => true,\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => 'http://octave.sourceforge.net/octave/function/{FNAME}.html',\n        5 => 'http://octave.sourceforge.net/octave/function/{FNAME}.html',\n        6 => 'http://octave.sourceforge.net/octave/function/{FNAME}.html',\n        7 => '',\n        8 => '',\n        9 => 'http://octave.sourceforge.net/octave/function/{FNAME}.html',\n        10 => 'http://octave.sourceforge.net/octave/function/{FNAME}.html',\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        ),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'STYLES' => array(\n        'COMMENTS' => array(\n            1 => 'color: #0000FF; font-style: italic;', // comments with #\n            2 => 'color: #0000FF; font-style: italic;', // comments with %\n            3 => 'color: #FF00FF; font-style: italic;', // single quote strings\n            4 => 'color: #FF00FF; font-style: italic;', // double quote strings\n            5 => 'color: #0000FF; font-style: italic;', // block comments\n            6 => 'color: #996600; font-weight:bold;',   // packaging system\n            7 => 'color: #006600; font-weight:bold;',   // function handles\n            'MULTI' => 'color: #0000FF; font-style: italic;',\n            ),\n        'KEYWORDS' => array(\n            1 => 'color: #990000; font-weight:bold;',   // Reserved words\n            2 => 'color: #2E8B57;',                     // Storage type\n            3 => 'color: #0000FF; font-weight:bold;',   // Internal variable\n            4 => 'color: #2E8B57; font-weight:bold;',   // Data types\n            5 => 'color: #008A8C; font-weight:bold;',   // Built-in\n            6 => 'color: #008A8C;',                     // Octave functions\n            9 => 'color: #000000; font-weight:bold;',   // Builtin Global Variables\n            10 => 'color: #008A8C; font-weight:bold;',  // Constant functions\n            ),\n        'ESCAPE_CHAR' => array(),\n        'BRACKETS' => array(\n            0 => 'color: #080;',\n            ),\n        'STRINGS' => array(\n            // strings were specified on the COMMENT_REGEXP section\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            ),\n        'METHODS' => array(),\n        'SYMBOLS' => array(\n            0 => 'color: #FF9696; font-weight:bold;',   // Comparison & logical\n            1 => 'color: #CC0000; font-weight:bold;',   // Aritmethical\n            2 => 'color: #993333; font-weight:bold;',   // Elementwise arithmetical\n            3 => 'color: #FF0000; font-weight:bold;',   // Arithmetical & assignation\n            4 => 'color: #33F;',                        // Indexer\n            5 => 'color: #33F;',                        // Delimiters\n            ),\n        'REGEXPS' => array(),\n        'SCRIPT' => array(),\n        )\n);\n"
  },
  {
    "path": "includes/geshi/oobas.php",
    "content": "<?php\n/*************************************************************************************\n * oobas.php\n * ---------\n * Author: Roberto Rossi (rsoftware@altervista.org)\n * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/08/30\n *\n * OpenOffice.org Basic language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *  -  Added description of extra language features (SF#1970248)\n * 2004/11/27 (1.0.1)\n *  -  Added support for multiple object splitters\n * 2004/10/27 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'OpenOffice.org Basic',\n    'COMMENT_SINGLE' => array(1 => \"'\"),\n    'COMMENT_MULTI' => array(),\n    //Single-Line comments using REM keyword\n    'COMMENT_REGEXP' => array(2 => '/\\bREM.*?$/i'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'dim','private','public','global','as','if','redim','true','set','byval',\n            'false','bool','double','integer','long','object','single','variant',\n            'msgbox','print','inputbox','green','blue','red','qbcolor',\n            'rgb','open','close','reset','freefile','get','input','line',\n            'put','write','loc','seek','eof','lof','chdir','chdrive',\n            'curdir','dir','fileattr','filecopy','filedatetime','fileexists',\n            'filelen','getattr','kill','mkdir','name','rmdir','setattr',\n            'dateserial','datevalue','day','month','weekday','year','cdatetoiso',\n            'cdatefromiso','hour','minute','second','timeserial','timevalue',\n            'date','now','time','timer','erl','err','error','on','goto','resume',\n            'and','eqv','imp','not','or','xor','mod','atn','cos','sin','tan','log',\n            'exp','rnd','randomize','sqr','fix','int','abs','sgn','hex','oct',\n            'it','then','else','select','case','iif','do','loop','for','next','to',\n            'while','wend','gosub','return','call','choose','declare',\n            'end','exit','freelibrary','function','rem','stop','sub','switch','with',\n            'cbool','cdate','cdbl','cint','clng','const','csng','cstr','defbool',\n            'defdate','defdbl','defint','deflng','asc','chr','str','val','cbyte',\n            'space','string','format','lcase','left','lset','ltrim','mid','right',\n            'rset','rtrim','trim','ucase','split','join','converttourl','convertfromurl',\n            'instr','len','strcomp','beep','shell','wait','getsystemticks','environ',\n            'getsolarversion','getguitype','twipsperpixelx','twipsperpixely',\n            'createunostruct','createunoservice','getprocessservicemanager',\n            'createunodialog','createunolistener','createunovalue','thiscomponent',\n            'globalscope'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '='\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080;',\n            2 => 'color: #808080;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/oorexx.php",
    "content": "<?php\n/*************************************************************************************\n * oorexx.php\n * ---------------------------------\n * Author: Jon Wolfers (sahananda@windhorse.biz)\n * Contributors:\n *    - Walter Pachl (pachl@chello.at)\n * Copyright: (c) 2008 Jon Wolfers, (c) 2012 Walter Pachl\n * Release Version: 1.0.9.1\n * Date Started: 2008/01/07\n *\n * ooRexx language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2012/07/29 (1.0.0)\n *    -  tried to get it syntactically right\n *\n * TODO (updated 2012/07/29)\n * -------------------------\n *   -  Get it working on rosettacode.org\n *\n *************************************************************************************\n *\n *      This file is part of GeSHi.\n *\n *    GeSHi is free software; you can redistribute it and/or modify\n *    it under the terms of the GNU General Public License as published by\n *    the Free Software Foundation; either version 2 of the License, or\n *    (at your option) any later version.\n *\n *    GeSHi is distributed in the hope that it will be useful,\n *    but WITHOUT ANY WARRANTY; without even the implied warranty of\n *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *    GNU General Public License for more details.\n *\n *    You should have received a copy of the GNU General Public License\n *    along with GeSHi; if not, write to the Free Software\n *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'ooRexx',\n    'COMMENT_SINGLE' => array(1 => '--'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'address', 'arg', 'attribute', 'call', 'constant', 'do',\n            'drop', 'exit', 'if',\n            'interpret', 'iterate', 'leave', 'loop', 'nop', 'numeric',\n            'parse', 'procedure', 'pull', 'push', 'queue',\n            'raise', 'reply', 'return', 'say', 'select', 'signal',\n            'use'\n            ),\n        2 => array(\n            'abstract', 'any', 'arguments', 'array', 'by',\n            'continue', 'digits', 'engineering', 'error',\n            'expose', 'external', 'failure', 'for', 'forever',\n            'forward', 'get', 'guard', 'guarded', 'halt',\n            'inherit', 'library', 'lostdigits', 'message',\n            'metaclass', 'mixinclass', 'name', 'nomethod', 'nostring',\n            'notready', 'novalue', 'off', 'on', 'options', 'over',\n            'private', 'protected', 'public', 'scientific', 'set',\n            'source', 'subclass', 'syntax', 'to', 'unguarded',\n            'unprotected', 'until', 'user',\n            'version', 'while', 'with'\n            ),\n        3 => array(\n            'else', 'end', 'otherwise', 'then', 'when'\n            ),\n        4 => array(\n            'rc', 'result', 'self', 'sigl', 'super'\n            ),\n        5 => array(\n            '::attribute', '::class', '::constant', '::method',\n            '::optins', '::requires', '::routine'\n            ),\n        6 => array(\n            'abbrev', 'abs', 'beep', 'bitand', 'bitor',\n            'bitxor', 'b2x', 'center', 'centre', 'changestr', 'charin',\n            'charout', 'chars', 'compare', 'condition', 'copies',\n            'countstr', 'c2d', 'c2x', 'datatype', 'date', 'delstr',\n            'delword', 'directory', 'd2c', 'd2x', 'endlocal',\n            'errortext', 'filespec', 'form', 'format', 'fuzz', 'insert',\n            'lastpos', 'left', 'length', 'linein', 'lineout', 'lines',\n            'lower', 'max', 'min', 'overlay', 'pos', 'qualify', 'queued',\n            'random', 'reverse', 'right', 'rxfuncadd', 'rxfuncdrop',\n            'rxfuncquery', 'rxqueue', 'setlocal', 'sign', 'sourceline',\n            'space', 'stream', 'strip', 'substr', 'subword', 'symbol',\n            'time', 'trace', 'translate', 'trunc', 'upper', 'userid',\n            'value', 'var', 'verify', 'word', 'wordindex', 'wordlength',\n            'wordpos', 'words', 'xrange', 'x2b', 'x2c', 'x2d'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '<', '>', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':',\n        '<', '>'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => true,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #ff0000; font-weight: bold;',\n            3 => 'color: #00ff00; font-weight: bold;',\n            4 => 'color: #0000ff; font-weight: bold;',\n            5 => 'color: #880088; font-weight: bold;',\n            6 => 'color: #888800; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666;',\n            'MULTI' => 'color: #808080;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;',\n            2 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/oracle11.php",
    "content": "<?php\n/*************************************************************************************\n * oracle11.php\n * -----------\n * Author: Guy Wicks (Guy.Wicks@rbs.co.uk)\n * Contributions:\n * - Updated for 11i by Simon Redhead\n * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/06/04\n *\n * Oracle 11i language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/04/08 (1.0.8)\n *  -  SR changes to oracle8.php to support Oracle 11i reserved words.\n * 2005/01/29 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Oracle 11 SQL',\n    'COMMENT_SINGLE' => array(1 => '--'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,\n    'QUOTEMARKS' => array(\"'\", '\"', '`'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n//Put your package names here - e.g. select distinct ''''|| lower(name) || ''',' from user_source;\n//        6 => array(\n//            ),\n\n//Put your table names here - e.g. select distinct ''''|| lower(table_name) || ''',' from user_tables;\n//        5 => array(\n//            ),\n\n//Put your view names here - e.g. select distinct ''''|| lower(view_name) || ''',' from user_views;\n//        4 => array(\n//            ),\n\n//Put your table field names here - e.g. select distinct ''''|| lower(column_name) || ''',' from user_tab_columns;\n//        3 => array(\n//            ),\n\n        //Put ORACLE reserved keywords here (11i).  I like mine uppercase.\n        1 => array(\n            'ABS',\n            'ACCESS',\n            'ACOS',\n            'ADD',\n            'ADD_MONTHS',\n            'ALL',\n            'ALTER',\n            'ANALYZE',\n            'AND',\n            'ANY',\n            'APPENDCHILDXML',\n            'ARRAY',\n            'AS',\n            'ASC',\n            'ASCII',\n            'ASCIISTR',\n            'ASIN',\n            'ASSOCIATE',\n            'AT',\n            'ATAN',\n            'ATAN2',\n            'AUDIT',\n            'AUTHID',\n            'AVG',\n            'BEGIN',\n            'BETWEEN',\n            'BFILENAME',\n            'BIN_TO_NUM',\n            'BINARY_INTEGER',\n            'BITAND',\n            'BODY',\n            'BOOLEAN',\n            'BULK',\n            'BY',\n            'CALL',\n            'CARDINALITY',\n            'CASCADE',\n            'CASE',\n            'CAST',\n            'CEIL',\n            'CHAR',\n            'CHAR_BASE',\n            'CHARTOROWID',\n            'CHECK',\n            'CHR',\n            'CLOSE',\n            'CLUSTER',\n            'CLUSTER_ID',\n            'CLUSTER_PROBABILITY',\n            'CLUSTER_SET',\n            'COALESCE',\n            'COLLECT',\n            'COLUMN',\n            'COMMENT',\n            'COMMIT',\n            'COMPOSE',\n            'COMPRESS',\n            'CONCAT',\n            'CONNECT',\n            'CONSTANT',\n            'CONSTRAINT',\n            'CONSTRAINTS',\n            'CONTEXT',\n            'CONTROLFILE',\n            'CONVERT',\n            'CORR',\n            'CORR_K',\n            'CORR_S',\n            'COS',\n            'COSH',\n            'COST',\n            'COUNT',\n            'COVAR_POP',\n            'COVAR_SAMP',\n            'CREATE',\n            'CUBE_TABLE',\n            'CUME_DIST',\n            'CURRENT',\n            'CURRENT_DATE',\n            'CURRENT_TIMESTAMP',\n            'CURRVAL',\n            'CURSOR',\n            'CV',\n            'DATABASE',\n            'DATAOBJ_TO_PARTITION',\n            'DATE',\n            'DAY',\n            'DBTIMEZONE',\n            'DECIMAL',\n            'DECLARE',\n            'DECODE',\n            'DECOMPOSE',\n            'DEFAULT',\n            'DELETE',\n            'DELETEXML',\n            'DENSE_RANK',\n            'DEPTH',\n            'DEREF',\n            'DESC',\n            'DIMENSION',\n            'DIRECTORY',\n            'DISASSOCIATE',\n            'DISTINCT',\n            'DO',\n            'DROP',\n            'DUMP',\n            'ELSE',\n            'ELSIF',\n            'EMPTY_BLOB',\n            'EMPTY_CLOB',\n            'END',\n            'EXCEPTION',\n            'EXCLUSIVE',\n            'EXEC',\n            'EXECUTE',\n            'EXISTS',\n            'EXISTSNODE',\n            'EXIT',\n            'EXP',\n            'EXPLAIN',\n            'EXTENDS',\n            'EXTRACT',\n            'EXTRACTVALUE',\n            'FALSE',\n            'FEATURE_ID',\n            'FEATURE_SET',\n            'FEATURE_VALUE',\n            'FETCH',\n            'FILE',\n            'FIRST',\n            'FIRST_VALUE',\n            'FLOAT',\n            'FLOOR',\n            'FOR',\n            'FORALL',\n            'FROM',\n            'FROM_TZ',\n            'FUNCTION',\n            'GOTO',\n            'GRANT',\n            'GREATEST',\n            'GROUP',\n            'GROUP_ID',\n            'GROUPING',\n            'GROUPING_ID',\n            'HAVING',\n            'HEAP',\n            'HEXTORAW',\n            'HOUR',\n            'IDENTIFIED',\n            'IF',\n            'IMMEDIATE',\n            'IN',\n            'INCREMENT',\n            'INDEX',\n            'INDEXTYPE',\n            'INDICATOR',\n            'INITCAP',\n            'INITIAL',\n            'INSERT',\n            'INSERTCHILDXML',\n            'INSERTXMLBEFORE',\n            'INSTR',\n            'INSTRB',\n            'INTEGER',\n            'INTERFACE',\n            'INTERSECT',\n            'INTERVAL',\n            'INTO',\n            'IS',\n            'ISOLATION',\n            'ITERATION_NUMBER',\n            'JAVA',\n            'KEY',\n            'LAG',\n            'LAST',\n            'LAST_DAY',\n            'LAST_VALUE',\n            'LEAD',\n            'LEAST',\n            'LENGTH',\n            'LENGTHB',\n            'LEVEL',\n            'LIBRARY',\n            'LIKE',\n            'LIMITED',\n            'LINK',\n            'LN',\n            'LNNVL',\n            'LOCALTIMESTAMP',\n            'LOCK',\n            'LOG',\n            'LONG',\n            'LOOP',\n            'LOWER',\n            'LPAD',\n            'LTRIM',\n            'MAKE_REF',\n            'MATERIALIZED',\n            'MAX',\n            'MAXEXTENTS',\n            'MEDIAN',\n            'MIN',\n            'MINUS',\n            'MINUTE',\n            'MLSLABEL',\n            'MOD',\n            'MODE',\n            'MODIFY',\n            'MONTH',\n            'MONTHS_BETWEEN',\n            'NANVL',\n            'NATURAL',\n            'NATURALN',\n            'NCHR',\n            'NEW',\n            'NEW_TIME',\n            'NEXT_DAY',\n            'NEXTVAL',\n            'NLS_CHARSET_DECL_LEN',\n            'NLS_CHARSET_ID',\n            'NLS_CHARSET_NAME',\n            'NLS_INITCAP',\n            'NLS_LOWER',\n            'NLS_UPPER',\n            'NLSSORT',\n            'NOAUDIT',\n            'NOCOMPRESS',\n            'NOCOPY',\n            'NOT',\n            'NOWAIT',\n            'NTILE',\n            'NULL',\n            'NULLIF',\n            'NUMBER',\n            'NUMBER_BASE',\n            'NUMTODSINTERVAL',\n            'NUMTOYMINTERVAL',\n            'NVL',\n            'NVL2',\n            'OCIROWID',\n            'OF',\n            'OFFLINE',\n            'ON',\n            'ONLINE',\n            'OPAQUE',\n            'OPEN',\n            'OPERATOR',\n            'OPTION',\n            'OR',\n            'ORA_HASH',\n            'ORDER',\n            'ORGANIZATION',\n            'OTHERS',\n            'OUT',\n            'OUTLINE',\n            'PACKAGE',\n            'PARTITION',\n            'PATH',\n            'PCTFREE',\n            'PERCENT_RANK',\n            'PERCENTILE_CONT',\n            'PERCENTILE_DISC',\n            'PLAN',\n            'PLS_INTEGER',\n            'POSITIVE',\n            'POSITIVEN',\n            'POWER',\n            'POWERMULTISET',\n            'POWERMULTISET_BY_CARDINALITY',\n            'PRAGMA',\n            'PREDICTION',\n            'PREDICTION_BOUNDS',\n            'PREDICTION_COST',\n            'PREDICTION_DETAILS',\n            'PREDICTION_PROBABILITY',\n            'PREDICTION_SET',\n            'PRESENTNNV',\n            'PRESENTV',\n            'PREVIOUS',\n            'PRIMARY',\n            'PRIOR',\n            'PRIVATE',\n            'PRIVILEGES',\n            'PROCEDURE',\n            'PROFILE',\n            'PUBLIC',\n            'RAISE',\n            'RANGE',\n            'RANK',\n            'RATIO_TO_REPORT',\n            'RAW',\n            'RAWTOHEX',\n            'RAWTONHEX',\n            'REAL',\n            'RECORD',\n            'REF',\n            'REFTOHEX',\n            'REGEXP_COUNT',\n            'REGEXP_INSTR',\n            'REGEXP_REPLACE',\n            'REGEXP_SUBSTR',\n            'REGR_AVGX',\n            'REGR_AVGY',\n            'REGR_COUNT',\n            'REGR_INTERCEPT',\n            'REGR_R2',\n            'REGR_SLOPE',\n            'REGR_SXX',\n            'REGR_SXY',\n            'REGR_SYY',\n            'RELEASE',\n            'REMAINDER',\n            'RENAME',\n            'REPLACE',\n            'RESOURCE',\n            'RETURN',\n            'RETURNING',\n            'REVERSE',\n            'REVOKE',\n            'ROLE',\n            'ROLLBACK',\n            'ROUND',\n            'ROW',\n            'ROW_NUMBER',\n            'ROWID',\n            'ROWIDTOCHAR',\n            'ROWIDTONCHAR',\n            'ROWNUM',\n            'ROWS',\n            'ROWTYPE',\n            'RPAD',\n            'RTRIM',\n            'SAVEPOINT',\n            'SCHEMA',\n            'SCN_TO_TIMESTAMP',\n            'SECOND',\n            'SEGMENT',\n            'SELECT',\n            'SEPERATE',\n            'SEQUENCE',\n            'SESSION',\n            'SESSIONTIMEZONE',\n            'SET',\n            'SHARE',\n            'SIGN',\n            'SIN',\n            'SINH',\n            'SIZE',\n            'SMALLINT',\n            'SOUNDEX',\n            'SPACE',\n            'SQL',\n            'SQLCODE',\n            'SQLERRM',\n            'SQRT',\n            'START',\n            'STATISTICS',\n            'STATS_BINOMIAL_TEST',\n            'STATS_CROSSTAB',\n            'STATS_F_TEST',\n            'STATS_KS_TEST',\n            'STATS_MODE',\n            'STATS_MW_TEST',\n            'STATS_ONE_WAY_ANOVA',\n            'STATS_T_TEST_INDEP',\n            'STATS_T_TEST_INDEPU',\n            'STATS_T_TEST_ONE',\n            'STATS_T_TEST_PAIRED',\n            'STATS_WSR_TEST',\n            'STDDEV',\n            'STDDEV_POP',\n            'STDDEV_SAMP',\n            'STOP',\n            'SUBSTR',\n            'SUBSTRB',\n            'SUBTYPE',\n            'SUCCESSFUL',\n            'SUM',\n            'SYNONYM',\n            'SYS_CONNECT_BY_PATH',\n            'SYS_CONTEXT',\n            'SYS_DBURIGEN',\n            'SYS_EXTRACT_UTC',\n            'SYS_GUID',\n            'SYS_TYPEID',\n            'SYS_XMLAGG',\n            'SYS_XMLGEN',\n            'SYSDATE',\n            'SYSTEM',\n            'SYSTIMESTAMP',\n            'TABLE',\n            'TABLESPACE',\n            'TAN',\n            'TANH',\n            'TEMPORARY',\n            'THEN',\n            'TIME',\n            'TIMESTAMP',\n            'TIMESTAMP_TO_SCN',\n            'TIMEZONE_ABBR',\n            'TIMEZONE_HOUR',\n            'TIMEZONE_MINUTE',\n            'TIMEZONE_REGION',\n            'TIMING',\n            'TO',\n            'TO_BINARY_DOUBLE',\n            'TO_BINARY_FLOAT',\n            'TO_CHAR',\n            'TO_CLOB',\n            'TO_DATE',\n            'TO_DSINTERVAL',\n            'TO_LOB',\n            'TO_MULTI_BYTE',\n            'TO_NCHAR',\n            'TO_NCLOB',\n            'TO_NUMBER',\n            'TO_SINGLE_BYTE',\n            'TO_TIMESTAMP',\n            'TO_TIMESTAMP_TZ',\n            'TO_YMINTERVAL',\n            'TRANSACTION',\n            'TRANSLATE',\n            'TREAT',\n            'TRIGGER',\n            'TRIM',\n            'TRUE',\n            'TRUNC',\n            'TRUNCATE',\n            'TYPE',\n            'TZ_OFFSET',\n            'UI',\n            'UID',\n            'UNION',\n            'UNIQUE',\n            'UNISTR',\n            'UPDATE',\n            'UPDATEXML',\n            'UPPER',\n            'USE',\n            'USER',\n            'USERENV',\n            'USING',\n            'VALIDATE',\n            'VALUE',\n            'VALUES',\n            'VAR_POP',\n            'VAR_SAMP',\n            'VARCHAR',\n            'VARCHAR2',\n            'VARIANCE',\n            'VIEW',\n            'VSIZE',\n            'WHEN',\n            'WHENEVER',\n            'WHERE',\n            'WHILE',\n            'WIDTH_BUCKET',\n            'WITH',\n            'WORK',\n            'WRITE',\n            'XMLAGG',\n            'XMLCAST',\n            'XMLCDATA',\n            'XMLCOLATTVAL',\n            'XMLCOMMENT',\n            'XMLCONCAT',\n            'XMLDIFF',\n            'XMLELEMENT',\n            'XMLEXISTS',\n            'XMLFOREST',\n            'XMLPARSE',\n            'XMLPATCH',\n            'XMLPI',\n            'XMLQUERY',\n            'XMLROOT',\n            'XMLSEQUENCE',\n            'XMLSERIALIZE',\n            'XMLTABLE',\n            'XMLTRANSFORM',\n            'YEAR',\n            'ZONE'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '=', '<', '>', '|', '+', '-', '*', '/', ','\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n//        3 => false,\n//        4 => false,\n//        5 => false,\n//        6 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #993333; font-weight: bold; text-transform: uppercase;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #ff0000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n//        3 => '',\n//        4 => '',\n//        5 => '',\n//        6 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/oracle8.php",
    "content": "<?php\n/*************************************************************************************\n * oracle8.php\n * -----------\n * Author: Guy Wicks (Guy.Wicks@rbs.co.uk)\n * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/06/04\n *\n * Oracle 8 language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2005/01/29 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Oracle 8 SQL',\n    'COMMENT_SINGLE' => array(1 => '--'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,\n    'QUOTEMARKS' => array(\"'\", '\"', '`'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n//Put your package names here - e.g. select distinct ''''|| lower(name) || ''',' from user_source;\n//        6 => array(\n//            ),\n\n//Put your table names here - e.g. select distinct ''''|| lower(table_name) || ''',' from user_tables;\n//        5 => array(\n//            ),\n\n//Put your view names here - e.g. select distinct ''''|| lower(view_name) || ''',' from user_views;\n//        4 => array(\n//            ),\n\n//Put your table field names here - e.g. select distinct ''''|| lower(column_name) || ''',' from user_tab_columns;\n//        3 => array(\n//            ),\n\n//Put ORACLE reserved keywords here (8.1.7).  I like mine uppercase.\n        1 => array(\n            'ABS',\n            'ACCESS',\n            'ACOS',\n            'ADD',\n            'ADD_MONTHS',\n            'ALL',\n            'ALTER',\n            'ANALYZE',\n            'AND',\n            'ANY',\n            'ARRAY',\n            'AS',\n            'ASC',\n            'ASCII',\n            'ASIN',\n            'ASSOCIATE',\n            'AT',\n            'ATAN',\n            'ATAN2',\n            'AUDIT',\n            'AUTHID',\n            'AVG',\n            'BEGIN',\n            'BETWEEN',\n            'BFILENAME',\n            'BINARY_INTEGER',\n            'BITAND',\n            'BODY',\n            'BOOLEAN',\n            'BULK',\n            'BY',\n            'CALL',\n            'CASCADE',\n            'CASE',\n            'CEIL',\n            'CHAR',\n            'CHAR_BASE',\n            'CHARTOROWID',\n            'CHECK',\n            'CHR',\n            'CLOSE',\n            'CLUSTER',\n            'COALESCE',\n            'COLLECT',\n            'COLUMN',\n            'COMMENT',\n            'COMMIT',\n            'COMPRESS',\n            'CONCAT',\n            'CONNECT',\n            'CONSTANT',\n            'CONSTRAINT',\n            'CONSTRAINTS',\n            'CONTEXT',\n            'CONTROLFILE',\n            'CONVERT',\n            'CORR',\n            'COS',\n            'COSH',\n            'COST',\n            'COUNT',\n            'COVAR_POP',\n            'COVAR_SAMP',\n            'CREATE',\n            'CUME_DIST',\n            'CURRENT',\n            'CURRVAL',\n            'CURSOR',\n            'DATABASE',\n            'DATE',\n            'DAY',\n            'DECIMAL',\n            'DECLARE',\n            'DECODE',\n            'DEFAULT',\n            'DELETE',\n            'DENSE_RANK',\n            'DEREF',\n            'DESC',\n            'DIMENSION',\n            'DIRECTORY',\n            'DISASSOCIATE',\n            'DISTINCT',\n            'DO',\n            'DROP',\n            'DUMP',\n            'ELSE',\n            'ELSIF',\n            'EMPTY_BLOB',\n            'EMPTY_CLOB',\n            'END',\n            'EXCEPTION',\n            'EXCLUSIVE',\n            'EXEC',\n            'EXECUTE',\n            'EXISTS',\n            'EXIT',\n            'EXP',\n            'EXPLAIN',\n            'EXTENDS',\n            'EXTRACT',\n            'FALSE',\n            'FETCH',\n            'FILE',\n            'FIRST_VALUE',\n            'FLOAT',\n            'FLOOR',\n            'FOR',\n            'FORALL',\n            'FROM',\n            'FUNCTION',\n            'GOTO',\n            'GRANT',\n            'GREATEST',\n            'GROUP',\n            'GROUPING',\n            'HAVING',\n            'HEAP',\n            'HEXTORAW',\n            'HOUR',\n            'IDENTIFIED',\n            'IF',\n            'IMMEDIATE',\n            'IN',\n            'INCREMENT',\n            'INDEX',\n            'INDEXTYPE',\n            'INDICATOR',\n            'INITCAP',\n            'INITIAL',\n            'INSERT',\n            'INSTR',\n            'INSTRB',\n            'INTEGER',\n            'INTERFACE',\n            'INTERSECT',\n            'INTERVAL',\n            'INTO',\n            'IS',\n            'ISOLATION',\n            'JAVA',\n            'KEY',\n            'LAG',\n            'LAST_DAY',\n            'LAST_VALUE',\n            'LEAD',\n            'LEAST',\n            'LENGTH',\n            'LENGTHB',\n            'LEVEL',\n            'LIBRARY',\n            'LIKE',\n            'LIMITED',\n            'LINK',\n            'LN',\n            'LOCK',\n            'LOG',\n            'LONG',\n            'LOOP',\n            'LOWER',\n            'LPAD',\n            'LTRIM',\n            'MAKE_REF',\n            'MATERIALIZED',\n            'MAX',\n            'MAXEXTENTS',\n            'MIN',\n            'MINUS',\n            'MINUTE',\n            'MLSLABEL',\n            'MOD',\n            'MODE',\n            'MODIFY',\n            'MONTH',\n            'MONTHS_BETWEEN',\n            'NATURAL',\n            'NATURALN',\n            'NEW',\n            'NEW_TIME',\n            'NEXT_DAY',\n            'NEXTVAL',\n            'NLS_CHARSET_DECL_LEN',\n            'NLS_CHARSET_ID',\n            'NLS_CHARSET_NAME',\n            'NLS_INITCAP',\n            'NLS_LOWER',\n            'NLS_UPPER',\n            'NLSSORT',\n            'NOAUDIT',\n            'NOCOMPRESS',\n            'NOCOPY',\n            'NOT',\n            'NOWAIT',\n            'NTILE',\n            'NULL',\n            'NULLIF',\n            'NUMBER',\n            'NUMBER_BASE',\n            'NUMTODSINTERVAL',\n            'NUMTOYMINTERVAL',\n            'NVL',\n            'NVL2',\n            'OCIROWID',\n            'OF',\n            'OFFLINE',\n            'ON',\n            'ONLINE',\n            'OPAQUE',\n            'OPEN',\n            'OPERATOR',\n            'OPTION',\n            'OR',\n            'ORDER',\n            'ORGANIZATION',\n            'OTHERS',\n            'OUT',\n            'OUTLINE',\n            'PACKAGE',\n            'PARTITION',\n            'PCTFREE',\n            'PERCENT_RANK',\n            'PLAN',\n            'PLS_INTEGER',\n            'POSITIVE',\n            'POSITIVEN',\n            'POWER',\n            'PRAGMA',\n            'PRIMARY',\n            'PRIOR',\n            'PRIVATE',\n            'PRIVILEGES',\n            'PROCEDURE',\n            'PROFILE',\n            'PUBLIC',\n            'RAISE',\n            'RANGE',\n            'RANK',\n            'RATIO_TO_REPORT',\n            'RAW',\n            'RAWTOHEX',\n            'REAL',\n            'RECORD',\n            'REF',\n            'REFTOHEX',\n            'REGR_AVGX',\n            'REGR_AVGY',\n            'REGR_COUNT',\n            'REGR_INTERCEPT',\n            'REGR_R2',\n            'REGR_SLOPE',\n            'REGR_SXX',\n            'REGR_SXY',\n            'REGR_SYY',\n            'RELEASE',\n            'RENAME',\n            'REPLACE',\n            'RESOURCE',\n            'RETURN',\n            'RETURNING',\n            'REVERSE',\n            'REVOKE',\n            'ROLE',\n            'ROLLBACK',\n            'ROUND',\n            'ROW',\n            'ROW_NUMBER',\n            'ROWID',\n            'ROWIDTOCHAR',\n            'ROWNUM',\n            'ROWS',\n            'ROWTYPE',\n            'RPAD',\n            'RTRIM',\n            'SAVEPOINT',\n            'SCHEMA',\n            'SECOND',\n            'SEGMENT',\n            'SELECT',\n            'SEPERATE',\n            'SEQUENCE',\n            'SESSION',\n            'SET',\n            'SHARE',\n            'SIGN',\n            'SIN',\n            'SINH',\n            'SIZE',\n            'SMALLINT',\n            'SOUNDEX',\n            'SPACE',\n            'SQL',\n            'SQLCODE',\n            'SQLERRM',\n            'SQRT',\n            'START',\n            'STATISTICS',\n            'STDDEV',\n            'STDDEV_POP',\n            'STDDEV_SAMP',\n            'STOP',\n            'SUBSTR',\n            'SUBSTRB',\n            'SUBTYPE',\n            'SUCCESSFUL',\n            'SUM',\n            'SYNONYM',\n            'SYS_CONTEXT',\n            'SYS_GUID',\n            'SYSDATE',\n            'SYSTEM',\n            'TABLE',\n            'TABLESPACE',\n            'TAN',\n            'TANH',\n            'TEMPORARY',\n            'THEN',\n            'TIME',\n            'TIMESTAMP',\n            'TIMEZONE_ABBR',\n            'TIMEZONE_HOUR',\n            'TIMEZONE_MINUTE',\n            'TIMEZONE_REGION',\n            'TIMING',\n            'TO',\n            'TO_CHAR',\n            'TO_DATE',\n            'TO_LOB',\n            'TO_MULTI_BYTE',\n            'TO_NUMBER',\n            'TO_SINGLE_BYTE',\n            'TRANSACTION',\n            'TRANSLATE',\n            'TRIGGER',\n            'TRIM',\n            'TRUE',\n            'TRUNC',\n            'TRUNCATE',\n            'TYPE',\n            'UI',\n            'UID',\n            'UNION',\n            'UNIQUE',\n            'UPDATE',\n            'UPPER',\n            'USE',\n            'USER',\n            'USERENV',\n            'USING',\n            'VALIDATE',\n            'VALUE',\n            'VALUES',\n            'VAR_POP',\n            'VAR_SAMP',\n            'VARCHAR',\n            'VARCHAR2',\n            'VARIANCE',\n            'VIEW',\n            'VSIZE',\n            'WHEN',\n            'WHENEVER',\n            'WHERE',\n            'WHILE',\n            'WITH',\n            'WORK',\n            'WRITE',\n            'YEAR',\n            'ZONE'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '=', '<', '>', '|', '+', '-', '*', '/', ','\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n//        3 => false,\n//        4 => false,\n//        5 => false,\n//        6 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #993333; font-weight: bold; text-transform: uppercase;'\n//Add the styles for groups 3-6 here when used\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #ff0000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n//        3 => '',\n//        4 => '',\n//        5 => '',\n//        6 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/oxygene.php",
    "content": "<?php\n/*************************************************************************************\n * oxygene.php\n * ----------\n * Author: Carlo Kok (ck@remobjects.com), J�rja Norbert (jnorbi@vipmail.hu), Benny Baumann (BenBE@omorphia.de)\n * Copyright: (c) 2004 J�rja Norbert, Benny Baumann (BenBE@omorphia.de), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2010/01/11\n *\n * Delphi Prism (Oxygene) language file for GeSHi.\n * Based on the original Delphi language file.\n *\n * CHANGES\n * -------\n * 2014/01/09 (1.0.8.13)\n *   -  New keywords & updated languge name\n * 2012/06/28 (1.0.8.11)\n *   -  Added \"write\" keyword for properties\n * 2010/01/11 (1.0.0)\n *   -  First Release\n *\n *************************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Oxygene',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('(*' => '*)', '{' => '}'),\n    //Compiler directives\n    'COMMENT_REGEXP' => array(2 => '/{\\\\$.*?}|\\\\(\\\\*\\\\$.*?\\\\*\\\\)/U'),\n    'CASE_KEYWORDS' => 0,\n    'QUOTEMARKS' => array(\"'\"),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'and',   'begin', 'case', 'const',  'div', 'do', 'downto', 'else',\n            'end',  'for',  'function', 'if', 'in', 'mod', 'not', 'of', 'or',\n            'procedure', 'repeat', 'record', 'set', 'shl', 'shr', 'then', 'to',\n            'type', 'until', 'uses', 'var','while', 'with', 'xor', 'exit', 'break',\n            'class', 'constructor', 'inherited', 'private', 'public', 'protected',\n            'property', 'As', 'Is', 'Unit', 'Continue', 'Try', 'Except', 'Forward',\n            'Interface','Implementation', 'nil', 'out', 'loop', 'namespace', 'true',\n            'false', 'new', 'ensure', 'require', 'on', 'event', 'delegate', 'method',\n            'raise', 'assembly', 'module', 'using','locking', 'old', 'invariants', 'operator',\n            'self', 'async', 'finalizer', 'where', 'yield', 'nullable', 'Future',\n            'From',  'Finally', 'dynamic', 'mapped'\n            ),\n        2 => array(\n            'override', 'virtual', 'External', 'read', 'add', 'remove','final', 'abstract',\n            'empty', 'global', 'locked', 'sealed', 'reintroduce', 'implements', 'each',\n            'default', 'partial', 'finalize', 'enum', 'flags', 'result', 'readonly', 'unsafe',\n            'pinned', 'matching', 'static', 'has', 'step', 'iterator', 'inline', 'nested',\n            'Implies', 'Select', 'Order', 'By', 'Desc', 'Asc', 'Group', 'Join', 'Take',\n            'Skip', 'Concat', 'Union', 'Reverse', 'Distinct', 'Into', 'Equals', 'params',\n            'sequence', 'index', 'notify', 'Parallel', 'create', 'array', 'Queryable', 'Aspect',\n            'volatile', 'write', 'autoreleasepool', 'await', 'block', 'deprecated', 'extension',\n            'optional', 'raises', 'selector', 'strong', 'weak', 'tuple', 'unretained'\n            ),\n        3 => array(\n            'chr', 'ord', 'inc', 'dec', 'assert', 'iff', 'assigned','futureAssigned', 'length', 'low', 'high', 'typeOf', 'sizeOf', 'disposeAndNil', 'Coalesce', 'unquote'\n            ),\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n//        4 => false,\n        ),\n    'SYMBOLS' => array(\n        0 => array('(', ')', '[', ']'),\n        1 => array('.', ',', ':', ';'),\n        2 => array('@', '^'),\n        3 => array('=', '+', '-', '*', '/')\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;',\n//            4 => 'color: #000066; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            2 => 'color: #008000; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #ff0000; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000066;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #000000;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #9ac;',\n            1 => 'color: #ff0000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000066;',\n            1 => 'color: #000066;',\n            2 => 'color: #000066;',\n            3 => 'color: #000066;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n//        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        //Hex numbers\n        0 => '\\$[0-9a-fA-F]+',\n        //Characters\n        1 => '\\#\\$?[0-9]{1,3}'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 2\n);\n"
  },
  {
    "path": "includes/geshi/oz.php",
    "content": "<?php\n/*************************************************************************************\n * oz.php\n * --------\n * Author: Wolfgang Meyer (Wolfgang.Meyer@gmx.net)\n * Copyright: (c) 2010 Wolfgang Meyer\n * Release Version: 1.0.9.1\n * Date Started: 2010/01/03\n *\n * Oz language file for GeSHi.\n *\n * CHANGES\n * -------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'OZ',\n    'COMMENT_SINGLE' => array(1 => '%'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"','\\''),\n    'ESCAPE_CHAR' => '\\\\',\n    'NUMBERS' => array(),\n    'KEYWORDS' => array(\n        1 => array(\n            'declare','local','in','end','proc','fun','functor','require','prepare',\n            'import','export','define','at','case','then','else','of','elseof',\n            'elsecase','if','elseif','class','from','prop','attr','feat','meth',\n            'self','true','false','unit','div','mod','andthen','orelse','cond','or',\n            'dis','choice','not','thread','try','catch','finally','raise','lock',\n            'skip','fail','for','do'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true\n        ),\n    'SYMBOLS' => array(\n        '@', '!', '|', '<-', ':=', '<', '>', '=<', '>=', '<=', '#', '~', '.',\n        '*', '-', '+', '/', '<:', '>:', '=:', '=<:', '>=:', '\\\\=', '\\\\=:', ',',\n        '!!', '...', '==', '::', ':::'\n        ),\n    'STYLES' => array(\n        'REGEXPS' => array(\n            1 => 'color: #0000ff;',\n            2 => 'color: #00a030;',\n            3 => 'color: #bc8f8f;',\n            4 => 'color: #0000ff;',\n            5 => 'color: #a020f0;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #bc8f8f;'\n            ),\n        'KEYWORDS' => array(\n            1 => 'color: #a020f0;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #B22222;',\n            'MULTI' => 'color: #B22222;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #bc8f8f;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #a020f0;'\n            ),\n        'BRACKETS' => array(),\n        'NUMBERS' => array(),\n        'METHODS' => array(),\n        'SCRIPT' => array()\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'URLS' => array(\n        1 => ''\n        ),\n    'REGEXPS' => array(\n        // function and procedure definition\n        1 => array(\n            GESHI_SEARCH => \"(proc|fun)([^{}\\n\\)]*)(\\\\{)([\\$A-Z\\300-\\326\\330-\\336][A-Z\\300-\\326\\330-\\336a-z\\337-\\366\\370-\\3770-9_.]*)\",\n            GESHI_REPLACE => '\\4',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\1\\2\\3',\n            GESHI_AFTER => ''\n            ),\n        // class definition\n        2 => array(\n            GESHI_SEARCH => \"(class)([^A-Z\\$]*)([\\$A-Z\\300-\\326\\330-\\336][A-Z\\300-\\326\\330-\\336a-z\\337-\\366\\370-\\3770-9_.]*)\",\n            GESHI_REPLACE => '\\3\\4',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\1\\2',\n            GESHI_AFTER => ''\n            ),\n        // single character\n        3 => array(\n            GESHI_SEARCH => \"&amp;.\",\n            GESHI_REPLACE => '\\0',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        // method definition\n        4 => array(\n            GESHI_SEARCH => \"(meth)([^a-zA-Z]+)([a-zA-Z\\300-\\326\\330-\\336][A-Z\\300-\\326\\330-\\336a-z\\337-\\366\\370-\\3770-9]*)\",\n            GESHI_REPLACE => '\\3',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\1\\2',\n            GESHI_AFTER => ''\n            ),\n        // highlight \"[]\"\n        // ([] is actually a keyword, but that causes problems in validation; putting it into symbols doesn't work.)\n        5 => array(\n            GESHI_SEARCH => \"\\[\\]\",\n            GESHI_REPLACE => '\\0',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/parasail.php",
    "content": "<?php\n/*************************************************************************************\n * parasail.php\n * -------\n * Author: T. Taft (taft@adacore.com)\n * Copyright: (c) 2012 AdaCore (http://adacore.com/)\n * Release Version: 1.0.9.1\n * Date Started: 2012/08/02\n *\n * ParaSail language file for GeSHi.\n *\n * Words are from SciTe configuration file\n *\n * CHANGES\n * -------\n * 2012/08/02 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2012/08/02)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'ParaSail',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('{' => '}'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'all', 'block', 'case', 'continue', 'each',\n            'else', 'elsif', 'exit', 'for',\n            'forward', 'if', 'loop', 'return', 'reverse', 'some',\n            'then', 'until', 'while', 'with'\n            ),\n        2 => array(\n            'abs', 'and','in', 'mod', 'not', 'null', 'or', 'rem', 'xor'\n            ),\n        3 => array(\n            'abstract', 'class',\n            'concurrent', 'const',\n            'end', 'extends', 'exports',\n            'func', 'global', 'implements', 'import',\n            'interface', 'is', 'lambda', 'locked',\n            'new', 'of', 'op', 'optional',\n            'private', 'queued', 'ref',\n            'separate', 'type', 'var',\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '<', '>'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #00007f;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #46aa03; font-weight:bold;',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #adadad; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #7f007f;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/parigp.php",
    "content": "<?php\n/*************************************************************************************\n * parigp.php\n * --------\n * Author: Charles R Greathouse IV (charles@crg4.com)\n * Copyright: 2011-2013 Charles R Greathouse IV (http://math.crg4.com/)\n * Release Version: 1.0.9.1\n * Date Started: 2011/05/11\n *\n * PARI/GP language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2011/07/09 (1.0.8.11)\n *  -  First Release\n * 2013/02/05 (1.0.8.13)\n *  -  Added 2.6.0 commands, default, member functions, and error-handling\n *\n * TODO (updated 2011/07/09)\n * -------------------------\n *\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'PARI/GP',\n    'COMMENT_SINGLE' => array(1 => '\\\\\\\\'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'NUMBERS' => array(\n        # Integers\n        1 => GESHI_NUMBER_INT_BASIC,\n        # Reals\n        2 => GESHI_NUMBER_FLT_SCI_ZERO\n        ),\n    'KEYWORDS' => array(\n        1 => array(\n            'abs','acos','acosh','addhelp','addprimes','agm','alarm','algdep',\n            'alias','allocatemem','apply','arg','asin','asinh','atan','atanh',\n            'bernfrac','bernpol','bernreal','bernvec','besselh1','besselh2',\n            'besseli','besselj','besseljh','besselk','besseln','bestappr',\n            'bestapprPade','bezout','bezoutres','bigomega','binary','binomial',\n            'bitand','bitneg','bitnegimply','bitor','bittest','bitxor',\n            'bnfcertify','bnfcompress','bnfdecodemodule','bnfinit',\n            'bnfisintnorm','bnfisnorm','bnfisprincipal','bnfissunit',\n            'bnfisunit','bnfnarrow','bnfsignunit','bnfsunit','bnrclassno',\n            'bnrclassnolist','bnrconductor','bnrconductorofchar','bnrdisc',\n            'bnrdisclist','bnrinit','bnrisconductor','bnrisprincipal','bnrL1',\n            'bnrrootnumber','bnrstark','break','breakpoint','Catalan','ceil',\n            'centerlift','charpoly','chinese','cmp','Col','component','concat',\n            'conj','conjvec','content','contfrac','contfracpnqn','core',\n            'coredisc','cos','cosh','cotan','dbg_down','dbg_err','dbg_up',\n            'dbg_x','default','denominator','deriv','derivnum','diffop',\n            'digits','dilog','dirdiv','direuler','dirmul','dirzetak','divisors',\n            'divrem','eint1','elladd','ellak','ellan','ellanalyticrank','ellap',\n            'ellbil','ellcard','ellchangecurve','ellchangepoint',\n            'ellconvertname','elldivpol','elleisnum','elleta','ellffinit',\n            'ellfromj','ellgenerators','ellglobalred','ellgroup','ellheegner',\n            'ellheight','ellheightmatrix','ellidentify','ellinit',\n            'ellisoncurve','ellj','ellL1','elllocalred','elllog','elllseries',\n            'ellminimalmodel','ellmodulareqn','ellmul','ellneg','ellorder',\n            'ellordinate','ellpointtoz','ellrootno','ellsearch','ellsigma',\n            'ellsub','elltaniyama','elltatepairing','elltors','ellweilpairing',\n            'ellwp','ellzeta','ellztopoint','erfc','errname','error','eta','Euler',\n            'eulerphi','eval','exp','extern','externstr','factor','factorback',\n            'factorcantor','factorff','factorial','factorint','factormod',\n            'factornf','factorpadic','ffgen','ffinit','fflog','ffnbirred',\n            'fforder','ffprimroot','fibonacci','floor','for','forcomposite','fordiv','forell',\n            'forprime','forqfvec','forstep','forsubgroup','forvec','frac','galoisexport',\n            'galoisfixedfield','galoisgetpol','galoisidentify','galoisinit',\n            'galoisisabelian','galoisisnormal','galoispermtopol',\n            'galoissubcyclo','galoissubfields','galoissubgroups','gamma',\n            'gammah','gcd','getenv','getheap','getrand','getstack','gettime',\n            'global','hammingweight','hilbert','hyperu','I','idealadd',\n            'idealaddtoone','idealappr','idealchinese','idealcoprime',\n            'idealdiv','idealfactor','idealfactorback','idealfrobenius',\n            'idealhnf','idealintersect','idealinv','ideallist','ideallistarch',\n            'ideallog','idealmin','idealmul','idealnorm','idealnumden',\n            'idealpow','idealprimedec','idealramgroups','idealred','idealstar',\n            'idealtwoelt','idealval','if','iferr','iferrname','imag','incgam','incgamc','input',\n            'install','intcirc','intformal','intfouriercos','intfourierexp',\n            'intfouriersin','intfuncinit','intlaplaceinv','intmellininv',\n            'intmellininvshort','intnum','intnuminit','intnuminitgen',\n            'intnumromb','intnumstep','isfundamental','ispolygonal','ispower','ispowerful',\n            'isprime','isprimepower','ispseudoprime','issquare','issquarefree','istotient',\n            'kill','kronecker','lcm','length','lex','lift','lindep','List',\n            'listcreate','listinsert','listkill','listpop','listput','listsort',\n            'lngamma','local','log','Mat','matadjoint','matalgtobasis',\n            'matbasistoalg','matcompanion','matconcat','matcontent','matdet','matdetint',\n            'matdiagonal','mateigen','matfrobenius','mathess','mathilbert',\n            'mathnf','mathnfmod','mathnfmodid','matid','matimage',\n            'matimagecompl','matindexrank','matintersect','matinverseimage',\n            'matisdiagonal','matker','matkerint','matmuldiagonal',\n            'matmultodiagonal','matpascal','matrank','matrix','matrixqz',\n            'matsize','matsnf','matsolve','matsolvemod','matsupplement',\n            'mattranspose','max','min','minpoly','Mod','modreverse','moebius',\n            'my','newtonpoly','next','nextprime','nfalgtobasis','nfbasis',\n            'nfbasistoalg','nfdetint','nfdisc','nfeltadd','nfeltdiv',\n            'nfeltdiveuc','nfeltdivmodpr','nfeltdivrem','nfeltmod','nfeltmul',\n            'nfeltmulmodpr','nfeltnorm','nfeltpow','nfeltpowmodpr',\n            'nfeltreduce','nfeltreducemodpr','nfelttrace','nfeltval','nffactor',\n            'nffactorback','nffactormod','nfgaloisapply','nfgaloisconj',\n            'nfhilbert','nfhnf','nfhnfmod','nfinit','nfisideal','nfisincl',\n            'nfisisom','nfkermodpr','nfmodprinit','nfnewprec','nfroots',\n            'nfrootsof1','nfsnf','nfsolvemodpr','nfsubfields','norm','norml2',\n            'numbpart','numdiv','numerator','numtoperm','O','omega','padicappr',\n            'padicfields','padicprec','partitions','permtonum','Pi','plot',\n            'plotbox','plotclip','plotcolor','plotcopy','plotcursor','plotdraw',\n            'ploth','plothraw','plothsizes','plotinit','plotkill','plotlines',\n            'plotlinetype','plotmove','plotpoints','plotpointsize',\n            'plotpointtype','plotrbox','plotrecth','plotrecthraw','plotrline',\n            'plotrmove','plotrpoint','plotscale','plotstring','Pol',\n            'polchebyshev','polcoeff','polcompositum','polcyclo','polcyclofactors','poldegree',\n            'poldisc','poldiscreduced','polgalois','polgraeffe','polhensellift',\n            'polhermite','polinterpolate','poliscyclo','poliscycloprod',\n            'polisirreducible','pollead','pollegendre','polrecip','polred',\n            'polredabs','polredbest','polredord','polresultant','Polrev','polroots',\n            'polrootsff','polrootsmod','polrootspadic','polsturm','polsubcyclo',\n            'polsylvestermatrix','polsym','poltchebi','poltschirnhaus',\n            'polylog','polzagier','precision','precprime','prime','primepi',\n            'primes','print','print1','printf','printsep','printtex','prod','prodeuler',\n            'prodinf','psdraw','psi','psploth','psplothraw','Qfb','qfbclassno',\n            'qfbcompraw','qfbhclassno','qfbnucomp','qfbnupow','qfbpowraw',\n            'qfbprimeform','qfbred','qfbsolve','qfgaussred','qfjacobi','qflll',\n            'qflllgram','qfminim','qfperfection','qfrep','qfsign',\n            'quadclassunit','quaddisc','quadgen','quadhilbert','quadpoly',\n            'quadray','quadregulator','quadunit','quit','random','randomprime','read',\n            'readvec','real','removeprimes','return','rnfalgtobasis','rnfbasis',\n            'rnfbasistoalg','rnfcharpoly','rnfconductor','rnfdedekind','rnfdet',\n            'rnfdisc','rnfeltabstorel','rnfeltdown','rnfeltreltoabs','rnfeltup',\n            'rnfequation','rnfhnfbasis','rnfidealabstorel','rnfidealdown',\n            'rnfidealhnf','rnfidealmul','rnfidealnormabs','rnfidealnormrel',\n            'rnfidealreltoabs','rnfidealtwoelt','rnfidealup','rnfinit',\n            'rnfisabelian','rnfisfree','rnfisnorm','rnfisnorminit','rnfkummer',\n            'rnflllgram','rnfnormgroup','rnfpolred','rnfpolredabs',\n            'rnfpseudobasis','rnfsteinitz','round','select','Ser','serconvol',\n            'serlaplace','serreverse','Set','setbinop','setintersect',\n            'setisset','setminus','setrand','setsearch','setunion','shift',\n            'shiftmul','sigma','sign','simplify','sin','sinh','sizebyte',\n            'sizedigit','solve','sqr','sqrt','sqrtint','sqrtn','sqrtnint','stirling','Str',\n            'Strchr','Strexpand','Strprintf','Strtex','subgrouplist','subst',\n            'substpol','substvec','sum','sumalt','sumdedekind','sumdiv','sumdivmult','sumdigits',\n            'sumformal','suminf','sumnum','sumnumalt','sumnuminit','sumpos','system','tan',\n            'tanh','taylor','teichmuller','theta','thetanullk','thue',\n            'thueinit','trace','trap','truncate','type','until','valuation',\n            'variable','Vec','vecextract','vecmax','vecmin','Vecrev',\n            'vecsearch','Vecsmall','vecsort','vector','vectorsmall','vectorv',\n            'version','warning','weber','whatnow','while','write','write1',\n            'writebin','writetex','zeta','zetak','zetakinit','zncoppersmith',\n            'znlog','znorder','znprimroot','znstar'\n            ),\n\n        2 => array(\n            'void','bool','negbool','small','int',/*'real',*/'mp','var','lg','pol',\n            'vecsmall','vec','list','str','genstr','gen','typ'\n            ),\n\n        3 => array(\n            'TeXstyle','breakloop','colors','compatible','datadir','debug',\n            'debugfiles','debugmem','echo','factor_add_primes','factor_proven',\n            'format','graphcolormap','graphcolors','help','histfile','histsize',\n            'lines','linewrap',/*'log',*/'logfile','new_galois_format','output',\n            'parisize','path','prettyprinter','primelimit','prompt_cont',\n            'prompt','psfile','readline','realprecision','recover','secure',\n            'seriesprecision',/*'simplify',*/'sopath','strictmatch','timer'\n            ),\n\n        4 => array(\n            '\"e_ARCH\"','\"e_BUG\"','\"e_FILE\"','\"e_IMPL\"','\"e_PACKAGE\"','\"e_DIM\"',\n            '\"e_FLAG\"','\"e_NOTFUNC\"','\"e_OP\"','\"e_TYPE\"','\"e_TYPE2\"',\n            '\"e_PRIORITY\"','\"e_VAR\"','\"e_DOMAIN\"','\"e_MAXPRIME\"','\"e_MEM\"',\n            '\"e_OVERFLOW\"','\"e_PREC\"','\"e_STACK\"','\"e_ALARM\"','\"e_USER\"',\n            '\"e_CONSTPOL\"','\"e_COPRIME\"','\"e_INV\"','\"e_IRREDPOL\"','\"e_MISC\"',\n            '\"e_MODULUS\"','\"e_NEGVAL\"','\"e_PRIME\"','\"e_ROOTS0\"','\"e_SQRTN\"'\n            )\n        ),\n    'SYMBOLS' => array(\n        1 => array(\n            '(',')','{','}','[',']','+','-','*','/','%','=','<','>','!','^','&','|','?',';',':',',','\\\\','\\''\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000ff;',\n            2 => 'color: #e07022;',\n            3 => 'color: #00d2d2;',\n            4 => 'color: #00d2d2;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000;',\n            'MULTI' => 'color: #008000;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #111111; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #002222;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #800080;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #666666;',\n            1 => 'color: #666666;',\n            2 => 'color: #666666;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #004000;'\n            ),\n        'SYMBOLS' => array(\n            1 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #e07022',    # Should be the same as keyword group 2\n            1 => 'color: #555555',\n            2 => 'color: #0000ff'     # Should be the same as keyword group 1\n            ),\n        'SCRIPT' => array()\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        0 => array( # types marked on variables\n            GESHI_SEARCH => '(?<!\\\\\\\\ )\"(t_(?:INT|REAL|INTMOD|FRAC|FFELT|COMPLEX|PADIC|QUAD|POLMOD|POL|SER|RFRAC|QFR|QFI|VEC|COL|MAT|LIST|STR|VECSMALL|CLOSURE|ERROR))\"',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\"',\n            GESHI_AFTER => '\"'\n            ),\n        1 => array( # literal variables\n            GESHI_SEARCH => '(?<!\\\\\\\\)(\\'[a-zA-Z][a-zA-Z0-9_]*)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        2 => array( # member functions\n            GESHI_SEARCH => '(?<=[.])(a[1-6]|b[2-8]|c[4-6]|area|bid|bnf|clgp|cyc|diff|disc|[efjp]|fu|gen|index|mod|nf|no|omega|pol|reg|roots|sign|r[12]|t2|tate|tu|zk|zkst)\\b',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        2 => array(\n            '[a-zA-Z][a-zA-Z0-9_]*:' => ''\n            ),\n        3 => array(\n            'default(' => ''\n            ),\n        4 => array(\n            'iferrname(' => ''\n            ),\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/pascal.php",
    "content": "<?php\n/*************************************************************************************\n * pascal.php\n * ----------\n * Author: Tux (tux@inamil.cz)\n * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/07/26\n *\n * Pascal language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n * 2004/11/27 (1.0.2)\n *  -  Added support for multiple object splitters\n * 2004/10/27 (1.0.1)\n *   -  Added support for URLs\n * 2004/08/05 (1.0.0)\n *   -  Added support for symbols\n * 2004/07/27 (0.9.1)\n *   -  Pascal is OO language. Some new words.\n * 2004/07/26 (0.9.0)\n *   -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Pascal',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('(*' => '*)', '{' => '}'),\n    //Compiler directives\n    'COMMENT_REGEXP' => array(2 => '/\\\\{\\\\$.*?}|\\\\(\\\\*\\\\$.*?\\\\*\\\\)/U'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\"),\n    'ESCAPE_CHAR' => '',\n\n    'KEYWORDS' => array(\n        1 => array(\n            'absolute','asm','assembler','begin','break','case','catch','cdecl',\n            'const','constructor','default','destructor','div','do','downto',\n            'else','end','except','export','exports','external','far',\n            'finalization','finally','for','forward','function','goto','if',\n            'implementation','in','index','inherited','initialization','inline',\n            'interface','interrupt','label','library','mod','name','not','of',\n            'or','overload','override','private','procedure','program',\n            'property','protected','public','published','raise','repeat',\n            'resourcestring','shl','shr','stdcall','stored','switch','then',\n            'to','try','type','unit','until','uses','var','while','with','xor'\n            ),\n        2 => array(\n            'nil', 'false', 'true',\n            ),\n        3 => array(\n            'abs','and','arc','arctan','blockread','blockwrite','chr','dispose',\n            'cos','eof','eoln','exp','get','ln','new','odd','ord','ordinal',\n            'pred','read','readln','sin','sqrt','succ','write','writeln'\n            ),\n        4 => array(\n            'ansistring','array','boolean','byte','bytebool','char','file',\n            'integer','longbool','longint','object','packed','pointer','real',\n            'record','set','shortint','smallint','string','union','word'\n            ),\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        ),\n    'SYMBOLS' => array(\n        0 => array('(', ')', '[', ']'),\n        1 => array('.', ',', ':', ';'),\n        2 => array('@', '^'),\n        3 => array('=', '+', '-', '*', '/')\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;',\n            4 => 'color: #000066; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            2 => 'color: #008000; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #ff0000; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;',\n            //'HARD' => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #0000cc;',\n            1 => 'color: #ff0000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000066;',\n            1 => 'color: #000066;',\n            2 => 'color: #000066;',\n            3 => 'color: #000066;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        //Hex numbers\n        0 => '\\$[0-9a-fA-F]+',\n        //Characters\n        1 => '\\#(?:\\$[0-9a-fA-F]{1,2}|\\d{1,3})'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/pcre.php",
    "content": "<?php\n/*************************************************************************************\n * pcre.php\n * --------\n * Author: Benny Baumann (BenBE@geshi.org)\n * Copyright: (c) 2010 Benny Baumann (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2010/05/22\n *\n * PCRE language file for GeSHi.\n *\n * NOTE: This language file handles plain PCRE expressions without delimiters.\n * If you want to highlight PCRE with delimiters you should use the\n * Perl language file instead.\n *\n * CHANGES\n * -------\n * 2010/05/22 (1.0.8.8)\n *   -  First Release\n *\n * TODO (updated 2010/05/22)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'PCRE',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(\n        ),\n    'COMMENT_REGEXP' => array(\n        // Non-matching groups\n        1 => \"/(?<=\\()\\?(?::|(?=\\())/\",\n\n        // Modifier groups\n        2 => \"/(?<=\\()\\?[cdegimopsuxUX\\-]+(?::|(?=\\)))/\",\n\n        // Look-Aheads\n        3 => \"/(?<=\\()\\?[!=]/\",\n\n        // Look-Behinds\n        4 => \"/(?<=\\()\\?<[!=]/\",\n\n        // Forward Matching\n        5 => \"/(?<=\\()\\?>/\",\n\n        // Recursive Matching\n        6 => \"/(?<=\\()\\?R(?=\\))/\",\n\n        // Named Subpattern\n        7 => \"/(?<=\\()\\?(?:P?<\\w+>|\\d+(?=\\))|P[=>]\\w+(?=\\)))/\",\n\n        // Back Reference\n        8 => \"/\\\\\\\\(?:[1-9]\\d?|g\\d+|g\\{(?:-?\\d+|\\w+)\\}|k<\\w+>|k'\\w+'|k\\{\\w+\\})/\",\n\n        // Byte sequence: Octal\n        9 => \"/\\\\\\\\[0-7]{2,3}/\",\n\n        // Byte sequence: Hex\n        10 => \"/\\\\\\\\x[0-9a-fA-F]{2}/\",\n\n        // Byte sequence: Hex\n        11 => \"/\\\\\\\\u[0-9a-fA-F]{4}/\",\n\n        // Byte sequence: Hex\n        12 => \"/\\\\\\\\U[0-9a-fA-F]{8}/\",\n\n        // Byte sequence: Unicode\n        13 => \"/\\\\\\\\[pP]\\{[^}\\n]+\\}/\",\n\n        // One-Char Escapes\n        14 => \"/\\\\\\\\[abdefnrstvwzABCDGSWXZ\\\\\\\\\\\\.\\[\\]\\(\\)\\{\\}\\^\\\\\\$\\?\\+\\*]/\",\n\n        // Byte sequence: Control-X sequence\n        15 => \"/\\\\\\\\c./\",\n\n        // Quantifier\n        16 => \"/\\{(?:\\d+,?|\\d*,\\d+)\\}/\",\n\n        // Comment Subpattern\n        17 => \"/(?<=\\()\\?#[^\\)]*/\",\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        ),\n    'SYMBOLS' => array(\n        0 => array('.'),\n        1 => array('(', ')'),\n        2 => array('[', ']', '|'),\n        3 => array('^', '$'),\n        4 => array('?', '+', '*'),\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #993333; font-weight: bold;',\n            2 => 'color: #cc3300; font-weight: bold;',\n            3 => 'color: #cc0066; font-weight: bold;',\n            4 => 'color: #cc0066; font-weight: bold;',\n            5 => 'color: #cc6600; font-weight: bold;',\n            6 => 'color: #cc00cc; font-weight: bold;',\n            7 => 'color: #cc9900; font-weight: bold; font-style: italic;',\n            8 => 'color: #cc9900; font-style: italic;',\n            9 => 'color: #669933; font-style: italic;',\n            10 => 'color: #339933; font-style: italic;',\n            11 => 'color: #339966; font-style: italic;',\n            12 => 'color: #339999; font-style: italic;',\n            13 => 'color: #663399; font-style: italic;',\n            14 => 'color: #999933; font-style: italic;',\n            15 => 'color: #993399; font-style: italic;',\n            16 => 'color: #333399; font-style: italic;',\n            17 => 'color: #666666; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            'HARD' => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;',\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;',\n            2 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #333399; font-weight: bold;',\n            1 => 'color: #993333; font-weight: bold;',\n            2 => 'color: #339933; font-weight: bold;',\n            3 => 'color: #333399; font-weight: bold;',\n            4 => 'color: #333399; font-style: italic;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'BRACKETS' => GESHI_NEVER,\n            'NUMBERS' => GESHI_NEVER\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/per.php",
    "content": "<?php\n/*************************************************************************************\n * per.php\n * --------\n * Author: Lars Gersmann (lars.gersmann@gmail.com)\n * Copyright: (c) 2007 Lars Gersmann\n * Release Version: 1.0.9.1\n * Date Started: 2007/06/03\n *\n * Per (forms) (FOURJ's Genero 4GL) language file for GeSHi.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'per',\n    'COMMENT_SINGLE' => array(1 => '--', 2 => '#'),\n    'COMMENT_MULTI' => array('{' => '}'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            \"ACCELERATOR\",\n            \"ACCELERATOR2\",\n            \"ACTION\",\n            \"ALT\",\n            \"AND\",\n            \"AUTO\",\n            \"AUTONEXT\",\n            \"AUTOSCALE\",\n            \"BETWEEN\",\n            \"BOTH\",\n            \"BUTTON\",\n            \"BUTTONEDIT\",\n            \"BUTTONTEXTHIDDEN\",\n            \"BY\",\n            \"BYTE\",\n            \"CANVAS\",\n            \"CENTER\",\n            \"CHECKBOX\",\n            \"CLASS\",\n            \"COLOR\",\n            \"COLUMNS\",\n            \"COMBOBOX\",\n            \"COMMAND\",\n            \"COMMENT\",\n            \"COMMENTS\",\n            \"COMPACT\",\n            \"COMPRESS\",\n            \"CONFIG\",\n            \"CONTROL\",\n            \"CURRENT\",\n            \"DATABASE\",\n            \"DATEEDIT\",\n            \"DEC\",\n            \"DEFAULT\",\n            \"DEFAULTS\",\n            \"DELIMITERS\",\n            \"DISPLAY\",\n            \"DISPLAYONLY\",\n            \"DOWNSHIFT\",\n            \"DYNAMIC\",\n            \"EDIT\",\n            \"FIXED\",\n            \"FOLDER\",\n            \"FONTPITCH\",\n            \"FORMAT\",\n            \"FORMONLY\",\n            \"GRID\",\n            \"GRIDCHILDRENINPARENT\",\n            \"GROUP\",\n            \"HBOX\",\n            \"HEIGHT\",\n            \"HIDDEN\",\n            \"HORIZONTAL\",\n            \"INCLUDE\",\n            \"INITIAL\",\n            \"INITIALIZER\",\n            \"INPUT\",\n            \"INSTRUCTIONS\",\n            \"INTERVAL\",\n            \"INVISIBLE\",\n            \"IS\",\n            \"ITEM\",\n            \"ITEMS\",\n            \"JUSTIFY\",\n            \"KEY\",\n            \"KEYS\",\n            \"LABEL\",\n            \"LEFT\",\n            \"LIKE\",\n            \"LINES\",\n            \"MATCHES\",\n            \"NAME\",\n            \"NOENTRY\",\n            \"NONCOMPRESS\",\n            \"NORMAL\",\n            \"NOT\",\n            \"NOUPDATE\",\n            \"OPTIONS\",\n            \"OR\",\n            \"ORIENTATION\",\n            \"PACKED\",\n            \"PAGE\",\n            \"PICTURE\",\n            \"PIXELHEIGHT\",\n            \"PIXELS\",\n            \"PIXELWIDTH\",\n            \"POINTS\",\n            \"PROGRAM\",\n            \"PROGRESSBAR\",\n            \"QUERYCLEAR\",\n            \"QUERYEDITABLE\",\n            \"RADIOGROUP\",\n            \"RECORD\",\n            \"REQUIRED\",\n            \"REVERSE\",\n            \"RIGHT\",\n            \"SAMPLE\",\n            \"SCREEN\",\n            \"SCROLL\",\n            \"SCROLLBARS\",\n            \"SCROLLGRID\",\n            \"SECOND\",\n            \"SEPARATOR\",\n            \"SHIFT\",\n            \"SIZE\",\n            \"SIZEPOLICY\",\n            \"SMALLFLOAT\",\n            \"SMALLINT\",\n            \"SPACING\",\n            \"STRETCH\",\n            \"STYLE\",\n            \"TABINDEX\",\n            \"TABLE\",\n            \"TAG\",\n            \"TEXT\",\n            \"TEXTEDIT\",\n            \"THROUGH\",\n            \"THRU\",\n            \"TITLE\",\n            \"TO\",\n            \"TOOLBAR\",\n            \"TOPMENU\",\n            \"TYPE\",\n            \"UNHIDABLE\",\n            \"UNHIDABLECOLUMNS\",\n            \"UNMOVABLE\",\n            \"UNMOVABLECOLUMNS\",\n            \"UNSIZABLE\",\n            \"UNSIZABLECOLUMNS\",\n            \"UNSORTABLE\",\n            \"UNSORTABLECOLUMNS\",\n            \"UPSHIFT\",\n            \"USER\",\n            \"VALIDATE\",\n            \"VALUECHECKED\",\n            \"VALUEMAX\",\n            \"VALUEMIN\",\n            \"VALUEUNCHECKED\",\n            \"VARCHAR\",\n            \"VARIABLE\",\n            \"VBOX\",\n            \"VERIFY\",\n            \"VERSION\",\n            \"VERTICAL\",\n            \"TIMESTAMP\",\n            \"WANTCOLUMNSANCHORED\", /* to be removed! */\n            \"WANTFIXEDPAGESIZE\",\n            \"WANTNORETURNS\",\n            \"WANTTABS\",\n            \"WHERE\",\n            \"WIDGET\",\n            \"WIDTH\",\n            \"WINDOWSTYLE\",\n            \"WITHOUT\",\n            \"WORDWRAP\",\n            \"X\",\n            \"Y\",\n            \"ZEROFILL\",\n            \"SCHEMA\",\n            \"ATTRIBUTES\",\n            \"TABLES\",\n            \"LAYOUT\",\n            \"END\"\n            ),\n        2 => array(\n            \"YEAR\",\n            \"BLACK\",\n            \"BLINK\",\n            \"BLUE\",\n            \"YELLOW\",\n            \"WHITE\",\n            \"UNDERLINE\",\n            \"CENTURY\",\n            \"FRACTION\",\n            \"CHAR\",\n            \"CHARACTER\",\n            \"CHARACTERS\",\n            \"CYAN\",\n            \"DATE\",\n            \"DATETIME\",\n            \"DAY\",\n            \"DECIMAL\",\n            \"FALSE\",\n            \"FLOAT\",\n            \"GREEN\",\n            \"HOUR\",\n            \"INT\",\n            \"INTEGER\",\n            \"MAGENTA\",\n            \"MINUTE\",\n            \"MONEY\",\n            \"NONE\",\n            \"NULL\",\n            \"REAL\",\n            \"RED\",\n            \"TRUE\",\n            \"TODAY\",\n            \"MONTH\",\n            \"IMAGE\"\n            ),\n        ),\n    'SYMBOLS' => array(\n        '+', '-', '*', '?', '=', '/', '%', '>', '<', '^', '!', '|', ':',\n        '(', ')', '[', ']'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0600FF;',\n            2 => 'color: #0000FF; font-weight: bold;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008080; font-style: italic;',\n            2 => 'color: #008080;',\n            'MULTI' => 'color: green'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #008080; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #808080;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #FF0000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #0000FF;',\n            2 => 'color: #0000FF;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #008000;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/perl.php",
    "content": "<?php\n/*************************************************************************************\n * perl.php\n * --------\n * Author: Andreas Gohr (andi@splitbrain.org), Ben Keen (ben.keen@gmail.com)\n * Copyright: (c) 2004 Andreas Gohr, Ben Keen (http://www.benjaminkeen.org/), Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/08/20\n *\n * Perl language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/06/22 (1.0.8)\n *   -  Added support for system calls in backticks (Corley Kinnane)\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n *   -  Added comment_regexp for predefined variables\n * 2008/02/15 (1.003)\n *   -  Fixed SF#1891630 with placebo patch\n * 2006/01/05 (1.0.2)\n *   -  Used hardescape feature for ' strings (Cliff Stanford)\n * 2004/11/27 (1.0.1)\n *   -  Added support for multiple object splitters\n * 2004/08/20 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n * * LABEL:\n * * string comparison operators\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Perl',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(\n        '=back' => '=cut',\n        '=head' => '=cut',\n        '=item' => '=cut',\n        '=over' => '=cut',\n        '=begin' => '=cut',\n        '=end' => '=cut',\n        '=for' => '=cut',\n        '=encoding' => '=cut',\n        '=pod' => '=cut'\n        ),\n    'COMMENT_REGEXP' => array(\n        //Regular expressions\n        2 => \"/(?<=[\\\\s^])(s|tr|y)\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])*\\\\/[msixpogcde]*(?=[\\\\s$\\\\.\\\\;])|(?<=[\\\\s^(=])(m|q[qrwx]?)?\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+\\\\/[msixpogc]*(?=[\\\\s$\\\\.\\\\,\\\\;\\\\)])/iU\",\n        //Regular expression match variables\n        3 => '/\\$\\d+/',\n        //Heredoc\n        4 => '/<<\\s*?([\\'\"]?)([a-zA-Z0-9]+)\\1;[^\\n]*?\\\\n.*\\\\n\\\\2(?![a-zA-Z0-9])/siU',\n        //Predefined variables\n        5 => '/\\$(\\^[a-zA-Z]?|[\\*\\$`\\'&_\\.,+\\-~:;\\\\\\\\\\/\"\\|%=\\?!@#<>\\(\\)\\[\\]])(?!\\w)|@[_+\\-]|%[!]|\\$(?=\\{)/',\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"','`'),\n    'HARDQUOTE' => array(\"'\", \"'\"),            // An optional 2-element array defining the beginning and end of a hard-quoted string\n    'HARDESCAPE' => array('\\\\\\'',),\n        // Things that must still be escaped inside a hard-quoted string\n        // If HARDQUOTE is defined, HARDESCAPE must be defined\n        // This will not work unless the first character of each element is either in the\n        // QUOTEMARKS array or is the ESCAPE_CHAR\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'case', 'do', 'else', 'elsif', 'for', 'if', 'then', 'until', 'while', 'foreach', 'my',\n            'xor', 'or', 'and', 'unless', 'next', 'last', 'redo', 'not', 'our',\n            'reset', 'continue', 'cmp', 'ne', 'eq', 'lt', 'gt', 'le', 'ge',\n            ),\n        2 => array(\n            'use', 'sub', 'new', '__END__', '__DATA__', '__DIE__', '__WARN__', 'BEGIN',\n            'STDIN', 'STDOUT', 'STDERR', 'ARGV', 'ARGVOUT'\n            ),\n        3 => array(\n            'abs', 'accept', 'alarm', 'atan2', 'bind', 'binmode', 'bless',\n            'caller', 'chdir', 'chmod', 'chomp', 'chop', 'chown', 'chr',\n            'chroot', 'close', 'closedir', 'connect', 'cos',\n            'crypt', 'dbmclose', 'dbmopen', 'defined', 'delete', 'die',\n            'dump', 'each', 'endgrent', 'endhostent', 'endnetent', 'endprotoent',\n            'endpwent', 'endservent', 'eof', 'eval', 'exec', 'exists', 'exit',\n            'exp', 'fcntl', 'fileno', 'flock', 'fork', 'format', 'formline',\n            'getc', 'getgrent', 'getgrgid', 'getgrnam', 'gethostbyaddr',\n            'gethostbyname', 'gethostent', 'getlogin', 'getnetbyaddr', 'getnetbyname',\n            'getnetent', 'getpeername', 'getpgrp', 'getppid', 'getpriority',\n            'getprotobyname', 'getprotobynumber', 'getprotoent', 'getpwent',\n            'getpwnam', 'getpwuid', 'getservbyname', 'getservbyport', 'getservent',\n            'getsockname', 'getsockopt', 'glob', 'gmtime', 'goto', 'grep',\n            'hex', 'import', 'index', 'int', 'ioctl', 'join', 'keys', 'kill',\n            'lc', 'lcfirst', 'length', 'link', 'listen', 'local',\n            'localtime', 'log', 'lstat', 'm', 'map', 'mkdir', 'msgctl', 'msgget',\n            'msgrcv', 'msgsnd', 'no', 'oct', 'open', 'opendir',\n            'ord', 'pack', 'package', 'pipe', 'pop', 'pos', 'print',\n            'printf', 'prototype', 'push', 'qq', 'qr', 'quotemeta', 'qw',\n            'qx', 'q', 'rand', 'read', 'readdir', 'readline', 'readlink', 'readpipe',\n            'recv', 'ref', 'rename', 'require', 'return',\n            'reverse', 'rewinddir', 'rindex', 'rmdir', 's', 'scalar', 'seek',\n            'seekdir', 'select', 'semctl', 'semget', 'semop', 'send', 'setgrent',\n            'sethostent', 'setnetent', 'setpgrp', 'setpriority', 'setprotoent',\n            'setpwent', 'setservent', 'setsockopt', 'shift', 'shmctl', 'shmget',\n            'shmread', 'shmwrite', 'shutdown', 'sin', 'sleep', 'socket', 'socketpair',\n            'sort', 'splice', 'split', 'sprintf', 'sqrt', 'srand', 'stat',\n            'study', 'substr', 'symlink', 'syscall', 'sysopen', 'sysread',\n            'sysseek', 'system', 'syswrite', 'tell', 'telldir', 'tie', 'tied',\n            'time', 'times', 'tr', 'truncate', 'uc', 'ucfirst', 'umask', 'undef',\n            'unlink', 'unpack', 'unshift', 'untie', 'utime', 'values',\n            'vec', 'wait', 'waitpid', 'wantarray', 'warn', 'write', 'y'\n            )\n        ),\n    'SYMBOLS' => array(\n        '<', '>', '=',\n        '!', '@', '~', '&', '|', '^',\n        '+','-', '*', '/', '%',\n        ',', ';', '?', '.', ':'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #009966; font-style: italic;',\n            3 => 'color: #0000ff;',\n            4 => 'color: #cc0000; font-style: italic;',\n            5 => 'color: #0000ff;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            'HARD' => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;',\n            'HARD' => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;',\n            2 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #0000ff;',\n            4 => 'color: #009999;',\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://perldoc.perl.org/functions/{FNAMEL}.html'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '-&gt;',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        //Variable\n        0 => '(?:\\$[\\$#]?|\\\\\\\\(?:[@%*]?|\\\\\\\\*\\$|&amp;)|%[$]?|@[$]?|\\*[$]?|&amp;[$]?)[a-zA-Z_][a-zA-Z0-9_]*',\n        //File Descriptor\n        4 => '&lt;[a-zA-Z_][a-zA-Z0-9_]*&gt;',\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'COMMENTS' => array(\n            'DISALLOWED_BEFORE' => '$'\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/perl6.php",
    "content": "<?php\n/*************************************************************************************\n * perl6.php\n * ---------\n * Author: Kodi Arfer (kodiarfer {at} warpmail {period} net); forked from perl.php 1.0.8 by Andreas Gohr (andi@splitbrain.org), Ben Keen (ben.keen@gmail.com)\n * Copyright: (c) 2009 Kodi Arfer, (c) 2004 Andreas Gohr, Ben Keen (http://www.benjaminkeen.org/), Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2009/11/07\n *\n * Perl 6 language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009/12/25 (1.0.8.6)\n *   - First Release\n *\n * TODO (updated 2009/11/07)\n * -------------------------\n * * It's all pretty rough. Perl 6 is complicated; this'll never be more\n *   than reasonably accurate unless it's carefully written to match\n *   STD.pm.\n * * It's largely incomplete. Lots of keywords are no doubt missing.\n * * Recognize comments like #`( Hello! ).\n * * Recognize qw-ing angle brackets.\n * * ! should probably be in OBJECT_SPLITTERS too, but putting it there\n *   gives bizarre results. What to do?.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Perl 6',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array('=begin' => '=end'),\n    'COMMENT_REGEXP' => array(\n        //Regular expressions\n        2 => \"/(?<=[\\\\s^])(s|tr|y)\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])*\\\\/[msixpogcde]*(?=[\\\\s$\\\\.\\\\;])|(?<=[\\\\s^(=])(m|q[qrwx]?)?\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+\\\\/[msixpogc]*(?=[\\\\s$\\\\.\\\\,\\\\;\\\\)])/iU\",\n        //Regular expression match variables\n        3 => '/\\$\\d+/',\n        //Heredoc\n        4 => '/<<\\s*?([\\'\"]?)([a-zA-Z0-9]+)\\1;[^\\n]*?\\\\n.*\\\\n\\\\2(?![a-zA-Z0-9])/siU',\n        //Beastly hack to finish highlighting each POD block\n        5 => '((?<==end) .+)'\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'HARDQUOTE' => array(\"'\", \"'\"),            // An optional 2-element array defining the beginning and end of a hard-quoted string\n    'HARDESCAPE' => array('\\\\\\''),\n        // Things that must still be escaped inside a hard-quoted string\n        // If HARDQUOTE is defined, HARDESCAPE must be defined\n        // This will not work unless the first character of each element is either in the\n        // QUOTEMARKS array or is the ESCAPE_CHAR\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'do', 'else', 'elsif', 'for', 'if', 'then', 'until',\n            'while', 'loop', 'repeat', 'my', 'xor', 'or', 'and',\n            'unless', 'next', 'last', 'redo', 'not', 'our', 'let',\n            'temp', 'state', 'enum', 'constant', 'continue', 'cmp',\n            'ne', 'eq', 'lt', 'gt', 'le', 'ge', 'leg', 'div', 'X',\n            'Z', 'x', 'xx', 'given', 'when', 'default', 'has',\n            'returns', 'of', 'is', 'does', 'where', 'subset', 'but',\n            'True', 'False', 'return', 'die', 'fail'\n            ),\n        2 => array(\n            'use', 'sub', 'multi', 'method', 'submethod', 'proto',\n            'class', 'role', 'grammar', 'regex', 'token', 'rule',\n            'new', 'BEGIN', 'END', 'CHECK', 'INIT', 'START', 'FIRST',\n            'ENTER', 'LEAVE', 'KEEP', 'UNDO', 'NEXT', 'LAST', 'PRE',\n            'POST', 'CATCH', 'CONTROL', 'BUILD'\n            ),\n        3 => array(\n            'all', 'any', 'cat', 'classify', 'defined', 'grep', 'first',\n            'keys', 'kv', 'join', 'map', 'max', 'min', 'none', 'one', 'pairs',\n            'print', 'printf', 'roundrobin', 'pick', 'reduce', 'reverse', 'say',\n            'shape', 'sort', 'srand', 'undefine', 'uri', 'values', 'warn', 'zip',\n\n            # Container\n            'rotate', 'comb', 'end', 'elems', 'delete',\n            'exists', 'pop', 'push', 'shift', 'splice',\n            'unshift', 'invert', 'decode',\n\n            # Numeric\n            'succ', 'pred', 'abs', 'exp', 'log',\n            'log10', 'rand', 'roots', 'cis', 'unpolar', 'i', 'floor',\n            'ceiling', 'round', 'truncate', 'sign', 'sqrt',\n            'polar', 're', 'im', 'I', 'atan2', 'nude',\n            'denominator', 'numerator',\n\n            # Str\n            'p5chop', 'chop', 'p5chomp', 'chomp', 'lc', 'lcfirst',\n            'uc', 'ucfirst', 'normalize', 'samecase', 'sameaccent',\n            'capitalize', 'length', 'chars', 'graphs', 'codes',\n            'bytes', 'encode', 'index', 'pack', 'quotemeta', 'rindex',\n            'split', 'words', 'flip', 'sprintf', 'fmt',\n            'substr', 'trim', 'unpack', 'match', 'subst', 'trans'\n            )\n        ),\n    'SYMBOLS' => array(\n        '<', '>', '=',\n        '!', '@', '~', '&', '|', '^',\n        '+','-', '*', '/', '%',\n        ',', ';', '?', '.', ':',\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #009966; font-style: italic;',\n            3 => 'color: #0000ff;',\n            4 => 'color: #cc0000; font-style: italic;',\n            5 => 'color: #666666; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            'HARD' => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;',\n            'HARD' => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;',\n            2 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #0000ff;',\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        //Variable\n        0 => '(?:[$@%]|&amp;)(?:(?:[\\^:*?!~]|&lt;)?[a-zA-Z_][a-zA-Z0-9_]*|(?=\\.))'\n        # We treat the . twigil specially so the name can be highlighted as an\n        # object field (via OBJECT_SPLITTERS).\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'COMMENTS' => array(\n            'DISALLOWED_BEFORE' => '$'\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/pf.php",
    "content": "<?php\n/*************************************************************************************\n * pf.php\n * --------\n * Author: David Berard (david@nfrance.com)\n * Copyright: (c) 2010 Benny Baumann (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2009/10/16\n * Based on bash.php\n *\n * OpenBSD PACKET FILTER language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009/10/16 (1.0.0)\n *   -  First Release\n *\n * TODO\n * -------------------------\n * * Support ALTQ\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'OpenBSD Packet Filter',\n    'COMMENT_SINGLE' => array('#'),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        1 => \"/\\\\$\\\\{[^\\\\n\\\\}]*?\\\\}/i\",\n        2 => '/<<-?\\s*?(\\'?)([a-zA-Z0-9]+)\\1\\\\n.*\\\\n\\\\2(?![a-zA-Z0-9])/siU',\n        3 => \"/\\\\\\\\['\\\"]/siU\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'HARDQUOTE' => array(\"'\", \"'\"),\n    'HARDESCAPE' => array(\"\\'\"),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        1 => \"#\\\\\\\\[nfrtv\\\\$\\\\\\\"\\n]#i\",\n        2 => \"#\\\\$[a-z_][a-z0-9_]*#i\",\n        3 => \"/\\\\$\\\\{[^\\\\n\\\\}]*?\\\\}/i\",\n        4 => \"/\\\\$\\\\([^\\\\n\\\\)]*?\\\\)/i\",\n        5 => \"/`[^`]*`/\"\n        ),\n    'KEYWORDS' => array(\n        1 => array(\n            'pass'\n        ),\n        2 => array(\n            'block'\n            ),\n        3 => array(\n            'quick','keep','state','antispoof','table','persist','file','scrub',\n            'set','skip','flags','on'\n            ),\n        4 => array(\n            'in','out','proto'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>', ';;', '`','='\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #009900; font-weight: bold;',\n            2 => 'color: #990000; font-weight: bold;',\n            3 => 'color: #7a0874;',\n            4 => 'color: #336699;'\n            ),\n        'COMMENTS' => array(\n            0 => 'color: #666666; font-style: italic;',\n            1 => 'color: #800000;',\n            2 => 'color: #cc0000; font-style: italic;',\n            3 => 'color: #000000; font-weight: bold;'\n            ),\n        'ESCAPE_CHAR' => array(\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #007800;',\n            3 => 'color: #007800;',\n            4 => 'color: #007800;',\n            5 => 'color: #780078;',\n            'HARD' => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #7a0874; font-weight: bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #CC0000;',\n            'HARD' => 'color: #CC0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff00cc;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000; font-weight: bold;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #007800;',\n            1 => 'color: #007800;',\n            2 => 'color: #007800;',\n            4 => 'color: #007800;',\n            5 => 'color: #660033;',\n            6 => 'color: #000099; font-weight: bold;',\n            7 => 'color: #0000ff;',\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        //Variables (will be handled by comment_regexps)\n        0 => \"\\\\$\\\\{[a-zA-Z_][a-zA-Z0-9_]*?\\\\}\",\n        //Variables without braces\n        1 => \"\\\\$[a-zA-Z_][a-zA-Z0-9_]*\",\n        //Variable assignment\n        2 => \"(?<![\\.a-zA-Z_\\-])([a-zA-Z_][a-zA-Z0-9_]*?)(?==)\",\n        //Shorthand shell variables\n        4 => \"\\\\$[*#\\$\\\\-\\\\?!]\",\n        //Parameters of commands\n        5 => \"(?<=\\s)--?[0-9a-zA-Z\\-]+(?=[\\s=]|$)\",\n        //IPs\n        6 => \"([0-9]{1,3}\\.){3}[0-9]{1,3}\",\n        //Tables\n        7 => \"(&lt;(.*)&gt;)\"\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n    ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'COMMENTS' => array(\n            'DISALLOWED_BEFORE' => '$'\n        ),\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![\\.\\-a-zA-Z0-9_\\$\\#])\",\n            'DISALLOWED_AFTER' =>  \"(?![\\.\\-a-zA-Z0-9_%\\\\/])\"\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/phix.php",
    "content": "<?php\n/*************************************************************************************\n * phix.php\n * ---------------------------------\n * Author: Pete Lomax\n * Copyright: (c) 2010 Nicholas Koceja\n * Release Version: 1.0.9.1\n * Date Started: 16/08/2015\n *\n * Phix language file for GeSHi.\n *\n * Author's note:  The colors are based on those of Edita.\n *\n * CHANGES\n * -------\n * <date-of-release> (1.0.8.9)\n *  -  First Release\n *\n * TODO (updated <date-of-release>)\n * -------------------------\n * seperate the funtions from the procedures, and have a slight color change for each.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Phix',\n    'COMMENT_SINGLE' => array(1 => '--'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(2 => '/\\/\\*(?:(?R)|.)+?\\*\\//s'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"', '\"\"\"', '`'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array( // keywords\n            'and', 'as',\n            'break', 'by',\n            'case', 'constant',\n            'default', 'do',\n            'else', 'elsif', 'end', 'enum', 'exit',\n            'for', 'forward', 'function',\n            'global',\n            'if', 'include',\n            'not',\n            'or',\n            'procedure',\n            'return',\n            'switch',\n            'then', 'to', 'type',\n            'while', 'with', 'without',\n            'xor'\n        ),\n        2 => array( // directives\n            'console',\n            'debug',\n            'fallthru',\n            'fallthrough', 'format',\n            'gui',\n            'ilASM',\n            'jump_table',\n            'profile', 'profile_time',\n            'trace', 'type_check',\n            'warning'\n        ),\n        3 => array( // built-ins\n            'abort',\n            'abs',\n            'adjust_timedate',\n            'allocate',\n            'allocate_string',\n            'allocate_struct',\n            'allow_break',\n            'and_bits',\n            'append',\n            'arccos',\n            'arcsin',\n            'arctan',\n            'atom',\n            'atom_to_float32',\n            'atom_to_float64',\n            'atom_to_float80',\n\n            'bits_to_int',\n            'bk_color',\n            'bytes_to_int',\n\n            'call',\n            'call_back',\n            'call_func',\n            'call_proc',\n            'canonical_path',\n            'ceil',\n            'change_timezone',\n            'chdir',\n            'check_break',\n            'clear_screen',\n            'close',\n            'columnize',\n            'compare',\n            'command_line',\n            'cos',\n            'crash_file',\n            'crash_message',\n            'crash_routine',\n            'create_thread',\n            'current_dir',\n            'cursor',\n            'custom_sort',\n            'c_func',\n            'c_proc',\n\n            'date',\n            'day_of_week',\n            'day_of_year',\n            'db_close',\n            'db_compress',\n            'db_create',\n            'db_create_table',\n            'db_delete_record',\n            'db_delete_table',\n            'db_dump',\n            'db_fatal_id',\n            'db_find_key',\n            'db_insert',\n            'db_open',\n            'db_record_data',\n            'db_record_key',\n            'db_replace_data',\n            'db_select',\n            'db_select_table',\n            'db_table_list',\n            'db_table_size',\n            'define_c_func',\n            'define_c_proc',\n            'define_c_var',\n            'define_cfunc',\n            'define_cproc',\n            'define_struct',\n            'delete',\n            'delete_cs',\n            'delete_routine',\n            'dir',\n            'display_text_image',\n\n            'enter_cs',\n            'equal',\n            'exit_thread',\n\n            'factorial',\n            'factors',\n            'find',\n            'flatten',\n            'float32_to_atom',\n            'float64_to_atom',\n            'float80_to_atom',\n            'floor',\n            'flush',\n            'format_timedate',\n            'free',\n            'free_console',\n\n            'gcd',\n            'get',\n            'getc',\n            'getenv',\n            'gets',\n            'get_bytes',\n            'get_field_details',\n            'get_key',\n            'get_position',\n            'get_proper_path',\n            'get_screen_char',\n            'get_struct_field',\n            'get_struct_size',\n            'get_text',\n            'get_thread_exitcode',\n\n            'iif',\n            'iff',\n            'include_paths',\n            'init_cs',\n            'instance',\n            'integer',\n            'int_to_bits',\n            'int_to_bytes',\n            'is_leap_year',\n\n            'join',\n\n            'leave_cs',\n            'length',\n            'lock_file',\n            'log',\n            'lower',\n\n            'machine_bits',\n            'machine_func',\n            'machine_proc',\n            'match',\n            'max',\n            'mem_copy',\n            'mem_set',\n            'message_box',\n            'min',\n            'mod',\n\n            'not_bits',\n\n            'object',\n            'open',\n            'open_dll',\n            'or_bits',\n\n            'parse_date_string',\n            'peek',\n            'peek1s',\n            'peek1u',\n            'peek2s',\n            'peek2u',\n            'peek4s',\n            'peek4u',\n            'peek8s',\n            'peek8u',\n            'peekNS',\n            'peek_string',\n            'permute',\n            'platform',\n            'poke',\n            'poke1',\n            'poke2',\n            'poke4',\n            'poke8',\n            'pokeN',\n            'position',\n            'power',\n            'prepend',\n            'prime_factors',\n            'print',\n            'printf',\n            'prompt_number',\n            'prompt_string',\n            'puts',\n            'put_screen_char',\n\n            'rand',\n            'read_bitmap',\n            'remainder',\n            'repeat',\n            'resume_thread',\n            'reverse',\n            'rfind',\n            'round',\n            'routine_id',\n\n            'save_bitmap',\n            'save_text_image',\n            'scanf',\n            'scroll',\n            'seek',\n            'sequence',\n            'set_rand',\n            'set_struct_field',\n            'set_system_doevents',\n            'set_timedate_formats',\n            'set_timezone',\n            'set_unicode',\n            'sign',\n            'sin',\n            'sleep',\n            'sort',\n            'sprint',\n            'sprintf',\n            'sqrt',\n            'sq_abs',\n            'sq_add',\n            'sq_and',\n            'sq_and_bits',\n            'sq_arccos',\n            'sq_arcsin',\n            'sq_arctan',\n            'sq_atom',\n            'sq_ceil',\n            'sq_cos',\n            'sq_div',\n            'sq_eq',\n            'sq_floor',\n            'sq_floor_div',\n            'sq_ge',\n            'sq_gt',\n            'sq_int',\n            'sq_le',\n            'sq_log',\n            'sq_lower',\n            'sq_lt',\n            'sq_mod',\n            'sq_mul',\n            'sq_ne',\n            'sq_not',\n            'sq_not_bits',\n            'sq_or',\n            'sq_or_bits',\n            'sq_power',\n            'sq_rand',\n            'sq_round',\n            'sq_rmdr',\n            'sq_seq',\n            'sq_sign',\n            'sq_sin',\n            'sq_sqrt',\n            'sq_str',\n            'sq_sub',\n            'sq_tan',\n            'sq_trunc',\n            'sq_uminus',\n            'sq_upper',\n            'sq_xor',\n            'sq_xor_bits',\n            'string',\n            'substitute',\n            'sum',\n            'suspend_thread',\n            'system',\n            'system_exec',\n            'system_open',\n            'system_wait',\n\n            'tagset',\n            'tan',\n            'task_clock_stop',\n            'task_clock_start',\n            'task_create',\n            'task_list',\n            'task_schedule',\n            'task_self',\n            'task_status',\n            'task_suspend',\n            'task_yield',\n            'text_color',\n            'text_rows',\n            'time',\n            'timedate',\n            'timedelta',\n            'trunc',\n            'try_cs',\n\n            'unlock_file',\n            'upper',\n\n            'value',\n            'video_config',\n\n            'wait_key',\n            'wait_thread',\n            'walk_dir',\n            'where',\n            'wildcard_file',\n            'wildcard_match',\n            'wrap',\n\n            'xor_bits'\n        ),\n    ),\n    'SYMBOLS' => array(\n        0 => array(\n            '(', ')', '{', '}', '[', ']'\n        ),\n        1 => array(\n            '+', '-', '*', '/', '=', '&', '^', '?', ',', ':'\n        )\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #008080;', // keywords\n            2 => 'color: #008080;', // directives\n            3 => 'color: #004080;'  // builtins\n        ),\n        'COMMENTS' => array(\n            1 => 'color: #000080; font-style: italic;',\n            2 => 'color: #000080; font-style: italic;',\n            'MULTI' => 'color: #000080; font-style: italic;'\n        ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #009900; font-weight: bold;'\n        ),\n        'BRACKETS' => array(\n            0 => 'color: #0000FF;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #008000;'\n        ),\n        'NUMBERS' => array(\n            0 => 'color: #000000;'\n        ),\n        'METHODS' => array( // Do not exist in Phix)\n            0 => ''\n        ),\n        'SYMBOLS' => array(\n            0 => 'color: #0000FF;', // brackets\n            1 => 'color: #0000FF;'  // operators\n        ),\n        'REGEXPS' => array(),\n        'SCRIPT' => array( // Never included in scripts.\n        )\n    ),\n    'REGEXPS' => array(),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n    ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/php-brief.php",
    "content": "<?php\n/*************************************************************************************\n * php-brief.php\n * -------------\n * Author: Nigel McNie (nigel@geshi.org)\n * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/06/02\n *\n * PHP (brief version) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *  -  Added description of extra language features (SF#1970248)\n * 2004/11/27 (1.0.3)\n *  -  Added support for multiple object splitters\n *  -  Fixed &new problem\n * 2004/10/27 (1.0.2)\n *   -  Added support for URLs\n * 2004/08/05 (1.0.1)\n *   -  Added support for symbols\n * 2004/07/14 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2004/07/14)\n * -------------------------\n * * Remove more functions that are hardly used\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'PHP (brief)',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    //Heredoc and Nowdoc syntax\n    'COMMENT_REGEXP' => array(3 => '/<<<\\s*?(\\'?)([a-zA-Z0-9]+)\\1[^\\n]*?\\\\n.*\\\\n\\\\2(?![a-zA-Z0-9])/siU'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'HARDQUOTE' => array(\"'\", \"'\"),\n    'HARDESCAPE' => array(\"\\'\"),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC |  GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX |\n        GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'include', 'require', 'include_once', 'require_once',\n            'for', 'as', 'foreach', 'if', 'elseif', 'else', 'while', 'do', 'endwhile', 'endif', 'switch', 'case', 'endswitch',\n            'return', 'break'\n            ),\n        2 => array(\n            'null', '__LINE__', '__FILE__',\n            'false', '&lt;?php',\n            'true', 'var', 'default',\n            'function', 'class', 'new', '&amp;new', 'public', 'private', 'interface', 'extends',\n            'const', 'self'\n            ),\n        3 => array(\n            'func_num_args', 'func_get_arg', 'func_get_args', 'strlen', 'strcmp', 'strncmp', 'strcasecmp', 'strncasecmp', 'each', 'error_reporting', 'define', 'defined',\n            'trigger_error', 'user_error', 'set_error_handler', 'restore_error_handler', 'get_declared_classes', 'get_loaded_extensions',\n            'extension_loaded', 'get_extension_funcs', 'debug_backtrace',\n            'constant', 'bin2hex', 'sleep', 'usleep', 'time', 'mktime', 'gmmktime', 'strftime', 'gmstrftime', 'strtotime', 'date', 'gmdate', 'getdate', 'localtime', 'checkdate', 'flush', 'wordwrap', 'htmlspecialchars', 'htmlentities', 'html_entity_decode', 'md5', 'md5_file', 'crc32', 'getimagesize', 'image_type_to_mime_type', 'phpinfo', 'phpversion', 'phpcredits', 'strnatcmp', 'strnatcasecmp', 'substr_count', 'strspn', 'strcspn', 'strtok', 'strtoupper', 'strtolower', 'strpos', 'strrpos', 'strrev', 'hebrev', 'hebrevc', 'nl2br', 'basename', 'dirname', 'pathinfo', 'stripslashes', 'stripcslashes', 'strstr', 'stristr', 'strrchr', 'str_shuffle', 'str_word_count', 'strcoll', 'substr', 'substr_replace', 'quotemeta', 'ucfirst', 'ucwords', 'strtr', 'addslashes', 'addcslashes', 'rtrim', 'str_replace', 'str_repeat', 'count_chars', 'chunk_split', 'trim', 'ltrim', 'strip_tags', 'similar_text', 'explode', 'implode', 'setlocale', 'localeconv',\n            'parse_str', 'str_pad', 'chop', 'strchr', 'sprintf', 'printf', 'vprintf', 'vsprintf', 'sscanf', 'fscanf', 'parse_url', 'urlencode', 'urldecode', 'rawurlencode', 'rawurldecode', 'readlink', 'linkinfo', 'link', 'unlink', 'exec', 'system', 'escapeshellcmd', 'escapeshellarg', 'passthru', 'shell_exec', 'proc_open', 'proc_close', 'rand', 'srand', 'getrandmax', 'mt_rand', 'mt_srand', 'mt_getrandmax', 'base64_decode', 'base64_encode', 'abs', 'ceil', 'floor', 'round', 'is_finite', 'is_nan', 'is_infinite', 'bindec', 'hexdec', 'octdec', 'decbin', 'decoct', 'dechex', 'base_convert', 'number_format', 'fmod', 'ip2long', 'long2ip', 'getenv', 'putenv', 'getopt', 'microtime', 'gettimeofday', 'getrusage', 'uniqid', 'quoted_printable_decode', 'set_time_limit', 'get_cfg_var', 'magic_quotes_runtime', 'set_magic_quotes_runtime', 'get_magic_quotes_gpc', 'get_magic_quotes_runtime',\n            'import_request_variables', 'error_log', 'serialize', 'unserialize', 'memory_get_usage', 'var_dump', 'var_export', 'debug_zval_dump', 'print_r','highlight_file', 'show_source', 'highlight_string', 'ini_get', 'ini_get_all', 'ini_set', 'ini_alter', 'ini_restore', 'get_include_path', 'set_include_path', 'restore_include_path', 'setcookie', 'header', 'headers_sent', 'connection_aborted', 'connection_status', 'ignore_user_abort', 'parse_ini_file', 'is_uploaded_file', 'move_uploaded_file', 'intval', 'floatval', 'doubleval', 'strval', 'gettype', 'settype', 'is_null', 'is_resource', 'is_bool', 'is_long', 'is_float', 'is_int', 'is_integer', 'is_double', 'is_real', 'is_numeric', 'is_string', 'is_array', 'is_object', 'is_scalar',\n            'ereg', 'ereg_replace', 'eregi', 'eregi_replace', 'split', 'spliti', 'join', 'sql_regcase', 'dl', 'pclose', 'popen', 'readfile', 'rewind', 'rmdir', 'umask', 'fclose', 'feof', 'fgetc', 'fgets', 'fgetss', 'fread', 'fopen', 'fpassthru', 'ftruncate', 'fstat', 'fseek', 'ftell', 'fflush', 'fwrite', 'fputs', 'mkdir', 'rename', 'copy', 'tempnam', 'tmpfile', 'file', 'file_get_contents', 'stream_select', 'stream_context_create', 'stream_context_set_params', 'stream_context_set_option', 'stream_context_get_options', 'stream_filter_prepend', 'stream_filter_append', 'fgetcsv', 'flock', 'get_meta_tags', 'stream_set_write_buffer', 'set_file_buffer', 'set_socket_blocking', 'stream_set_blocking', 'socket_set_blocking', 'stream_get_meta_data', 'stream_register_wrapper', 'stream_wrapper_register', 'stream_set_timeout', 'socket_set_timeout', 'socket_get_status', 'realpath', 'fnmatch', 'fsockopen', 'pfsockopen', 'pack', 'unpack', 'get_browser', 'crypt', 'opendir', 'closedir', 'chdir', 'getcwd', 'rewinddir', 'readdir', 'dir', 'glob', 'fileatime', 'filectime', 'filegroup', 'fileinode', 'filemtime', 'fileowner', 'fileperms', 'filesize', 'filetype', 'file_exists', 'is_writable', 'is_writeable', 'is_readable', 'is_executable', 'is_file', 'is_dir', 'is_link', 'stat', 'lstat', 'chown',\n            'touch', 'clearstatcache', 'mail', 'ob_start', 'ob_flush', 'ob_clean', 'ob_end_flush', 'ob_end_clean', 'ob_get_flush', 'ob_get_clean', 'ob_get_length', 'ob_get_level', 'ob_get_status', 'ob_get_contents', 'ob_implicit_flush', 'ob_list_handlers', 'ksort', 'krsort', 'natsort', 'natcasesort', 'asort', 'arsort', 'sort', 'rsort', 'usort', 'uasort', 'uksort', 'shuffle', 'array_walk', 'count', 'end', 'prev', 'next', 'reset', 'current', 'key', 'min', 'max', 'in_array', 'array_search', 'extract', 'compact', 'array_fill', 'range', 'array_multisort', 'array_push', 'array_pop', 'array_shift', 'array_unshift', 'array_splice', 'array_slice', 'array_merge', 'array_merge_recursive', 'array_keys', 'array_values', 'array_count_values', 'array_reverse', 'array_reduce', 'array_pad', 'array_flip', 'array_change_key_case', 'array_rand', 'array_unique', 'array_intersect', 'array_intersect_assoc', 'array_diff', 'array_diff_assoc', 'array_sum', 'array_filter', 'array_map', 'array_chunk', 'array_key_exists', 'pos', 'sizeof', 'key_exists', 'assert', 'assert_options', 'version_compare', 'ftok', 'str_rot13', 'aggregate',\n            'session_name', 'session_module_name', 'session_save_path', 'session_id', 'session_regenerate_id', 'session_decode', 'session_register', 'session_unregister', 'session_is_registered', 'session_encode',\n            'session_start', 'session_destroy', 'session_unset', 'session_set_save_handler', 'session_cache_limiter', 'session_cache_expire', 'session_set_cookie_params', 'session_get_cookie_params', 'session_write_close', 'preg_match', 'preg_match_all', 'preg_replace', 'preg_replace_callback', 'preg_split', 'preg_quote', 'preg_grep', 'overload', 'ctype_alnum', 'ctype_alpha', 'ctype_cntrl', 'ctype_digit', 'ctype_lower', 'ctype_graph', 'ctype_print', 'ctype_punct', 'ctype_space', 'ctype_upper', 'ctype_xdigit', 'virtual', 'apache_request_headers', 'apache_note', 'apache_lookup_uri', 'apache_child_terminate', 'apache_setenv', 'apache_response_headers', 'apache_get_version', 'getallheaders', 'mysql_connect', 'mysql_pconnect', 'mysql_close', 'mysql_select_db', 'mysql_create_db', 'mysql_drop_db', 'mysql_query', 'mysql_unbuffered_query', 'mysql_db_query', 'mysql_list_dbs', 'mysql_list_tables', 'mysql_list_fields', 'mysql_list_processes', 'mysql_error', 'mysql_errno', 'mysql_affected_rows', 'mysql_insert_id', 'mysql_result', 'mysql_num_rows', 'mysql_num_fields', 'mysql_fetch_row', 'mysql_fetch_array', 'mysql_fetch_assoc', 'mysql_fetch_object', 'mysql_data_seek', 'mysql_fetch_lengths', 'mysql_fetch_field', 'mysql_field_seek', 'mysql_free_result', 'mysql_field_name', 'mysql_field_table', 'mysql_field_len', 'mysql_field_type', 'mysql_field_flags', 'mysql_escape_string', 'mysql_real_escape_string', 'mysql_stat',\n            'mysql_thread_id', 'mysql_client_encoding', 'mysql_get_client_info', 'mysql_get_host_info', 'mysql_get_proto_info', 'mysql_get_server_info', 'mysql_info', 'mysql', 'mysql_fieldname', 'mysql_fieldtable', 'mysql_fieldlen', 'mysql_fieldtype', 'mysql_fieldflags', 'mysql_selectdb', 'mysql_createdb', 'mysql_dropdb', 'mysql_freeresult', 'mysql_numfields', 'mysql_numrows', 'mysql_listdbs', 'mysql_listtables', 'mysql_listfields', 'mysql_db_name', 'mysql_dbname', 'mysql_tablename', 'mysql_table_name', 'pg_connect', 'pg_pconnect', 'pg_close', 'pg_connection_status', 'pg_connection_busy', 'pg_connection_reset', 'pg_host', 'pg_dbname', 'pg_port', 'pg_tty', 'pg_options', 'pg_ping', 'pg_query', 'pg_send_query', 'pg_cancel_query', 'pg_fetch_result', 'pg_fetch_row', 'pg_fetch_assoc', 'pg_fetch_array', 'pg_fetch_object', 'pg_fetch_all', 'pg_affected_rows', 'pg_get_result', 'pg_result_seek', 'pg_result_status', 'pg_free_result', 'pg_last_oid', 'pg_num_rows', 'pg_num_fields', 'pg_field_name', 'pg_field_num', 'pg_field_size', 'pg_field_type', 'pg_field_prtlen', 'pg_field_is_null', 'pg_get_notify', 'pg_get_pid', 'pg_result_error', 'pg_last_error', 'pg_last_notice', 'pg_put_line', 'pg_end_copy', 'pg_copy_to', 'pg_copy_from',\n            'pg_trace', 'pg_untrace', 'pg_lo_create', 'pg_lo_unlink', 'pg_lo_open', 'pg_lo_close', 'pg_lo_read', 'pg_lo_write', 'pg_lo_read_all', 'pg_lo_import', 'pg_lo_export', 'pg_lo_seek', 'pg_lo_tell', 'pg_escape_string', 'pg_escape_bytea', 'pg_unescape_bytea', 'pg_client_encoding', 'pg_set_client_encoding', 'pg_meta_data', 'pg_convert', 'pg_insert', 'pg_update', 'pg_delete', 'pg_select', 'pg_exec', 'pg_getlastoid', 'pg_cmdtuples', 'pg_errormessage', 'pg_numrows', 'pg_numfields', 'pg_fieldname', 'pg_fieldsize', 'pg_fieldtype', 'pg_fieldnum', 'pg_fieldprtlen', 'pg_fieldisnull', 'pg_freeresult', 'pg_result', 'pg_loreadall', 'pg_locreate', 'pg_lounlink', 'pg_loopen', 'pg_loclose', 'pg_loread', 'pg_lowrite', 'pg_loimport', 'pg_loexport',\n            'echo', 'print', 'global', 'static', 'exit', 'array', 'empty', 'eval', 'isset', 'unset', 'die'\n            )\n        ),\n    'SYMBOLS' => array(\n        1 => array(\n            '<%', '<%=', '%>', '<?', '<?=', '?>'\n            ),\n        0 => array(\n            '(', ')', '[', ']', '{', '}',\n            '!', '@', '%', '&', '|', '/',\n            '<', '>',\n            '=', '-', '+', '*',\n            '.', ':', ',', ';'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #990000;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #666666; font-style: italic;',\n            3 => 'color: #0000cc; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            'HARD' => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;',\n            'HARD' => 'color: #0000ff;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            ),\n        'METHODS' => array(\n            1 => 'color: #004000;',\n            2 => 'color: #004000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;',\n            1 => 'color: #000000; font-weight: bold;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            3 => '',\n            4 => '',\n            5 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://www.php.net/{FNAMEL}'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '-&gt;',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        //Variables\n        0 => \"[\\\\$]+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*\"\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        0 => array(\n            '<?php' => '?>'\n            ),\n        1 => array(\n            '<?' => '?>'\n            ),\n        2 => array(\n            '<%' => '%>'\n            ),\n        3 => array(\n            '<script language=\"php\">' => '</script>'\n            ),\n        4 => \"/(?P<start><\\\\?(?>php\\b)?)(?:\".\n            \"(?>[^\\\"'?\\\\/<]+)|\".\n            \"\\\\?(?!>)|\".\n            \"(?>'(?>[^'\\\\\\\\]|\\\\\\\\'|\\\\\\\\\\\\\\|\\\\\\\\)*')|\".\n            \"(?>\\\"(?>[^\\\"\\\\\\\\]|\\\\\\\\\\\"|\\\\\\\\\\\\\\\\|\\\\\\\\)*\\\")|\".\n            \"(?>\\\\/\\\\*(?>[^\\\\*]|(?!\\\\*\\\\/)\\\\*)*\\\\*\\\\/)|\".\n            \"\\\\/\\\\/(?>.*?$)|\".\n            \"\\\\/(?=[^*\\\\/])|\".\n            \"<(?!<<)|\".\n            \"<<<(?P<phpdoc>\\w+)\\s.*?\\s\\k<phpdoc>\".\n            \")*(?P<end>\\\\?>|\\Z)/sm\",\n        5 => \"/(?P<start><%)(?:\".\n            \"(?>[^\\\"'%\\\\/<]+)|\".\n            \"%(?!>)|\".\n            \"(?>'(?>[^'\\\\\\\\]|\\\\\\\\'|\\\\\\\\\\\\\\|\\\\\\\\)*')|\".\n            \"(?>\\\"(?>[^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\"|\\\\\\\\\\\\\\\\|\\\\\\\\)*\\\")|\".\n            \"(?>\\\\/\\\\*(?>[^\\\\*]|(?!\\\\*\\\\/)\\\\*)*\\\\*\\\\/)|\".\n            \"\\\\/\\\\/(?>.*?$)|\".\n            \"\\\\/(?=[^*\\\\/])|\".\n            \"<(?!<<)|\".\n            \"<<<(?P<phpdoc>\\w+)\\s.*?\\s\\k<phpdoc>\".\n            \")*(?P<end>%>)/sm\"\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/php.php",
    "content": "<?php\n/*************************************************************************************\n * php.php\n * --------\n * Author: Nigel McNie (nigel@geshi.org)\n * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/06/20\n *\n * PHP language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *  -  Added description of extra language features (SF#1970248)\n * 2004/11/25 (1.0.3)\n *  -  Added support for multiple object splitters\n *  -  Fixed &new problem\n * 2004/10/27 (1.0.2)\n *  -  Added URL support\n *  -  Added extra constants\n * 2004/08/05 (1.0.1)\n *  -  Added support for symbols\n * 2004/07/14 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/07/14)\n * -------------------------\n * * Make sure the last few function I may have missed\n *   (like eval()) are included for highlighting\n * * Split to several files - php4, php5 etc\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'PHP',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Heredoc and Nowdoc syntax\n        3 => '/<<<\\s*?(\\'?)([a-zA-Z0-9]+?)\\1[^\\n]*?\\\\n.*\\\\n\\\\2(?![a-zA-Z0-9])/siU',\n        // phpdoc comments\n        4 => '#/\\*\\*(?![\\*\\/]).*\\*/#sU',\n        // Advanced # handling\n        2 => \"/#.*?(?:(?=\\?\\>)|^)/smi\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[nfrtv\\$\\\"\\n\\\\\\\\]#i\",\n        //Hexadecimal Char Specs\n        2 => \"#\\\\\\\\x[\\da-fA-F]{1,2}#i\",\n        //Octal Char Specs\n        3 => \"#\\\\\\\\[0-7]{1,3}#\",\n        //String Parsing of Variable Names\n        4 => \"#\\\\$[a-z0-9_]+(?:\\\\[[a-z0-9_]+\\\\]|->[a-z0-9_]+)?|(?:\\\\{\\\\$|\\\\$\\\\{)[a-z0-9_]+(?:\\\\[('?)[a-z0-9_]*\\\\1\\\\]|->[a-z0-9_]+)*\\\\}#i\",\n        //Experimental extension supporting cascaded {${$var}} syntax\n        5 => \"#\\$[a-z0-9_]+(?:\\[[a-z0-9_]+\\]|->[a-z0-9_]+)?|(?:\\{\\$|\\$\\{)[a-z0-9_]+(?:\\[('?)[a-z0-9_]*\\\\1\\]|->[a-z0-9_]+)*\\}|\\{\\$(?R)\\}#i\",\n        //Format String support in \"\"-Strings\n        6 => \"#%(?:%|(?:\\d+\\\\\\\\\\\\\\$)?\\\\+?(?:\\x20|0|'.)?-?(?:\\d+|\\\\*)?(?:\\.\\d+)?[bcdefFosuxX])#\"\n        ),\n    'HARDQUOTE' => array(\"'\", \"'\"),\n    'HARDESCAPE' => array(\"'\", \"\\\\\"),\n    'HARDCHAR' => \"\\\\\",\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX |\n        GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'as','break','case','continue','default','do','else','elseif',\n            'endfor','endforeach','endif','endswitch','endwhile','for',\n            'foreach','if','include','include_once','require','require_once',\n            'return','switch','throw','while', 'yield','match',\n\n            'echo','print'\n            ),\n        2 => array(\n            '&amp;new','&lt;/script&gt;','&lt;?php','&lt;script language',\n            'abstract','class','const','declare','extends','function','global',\n            'implements', 'interface','namespace','new','private','protected',\n            'public','self','trait','use','var', 'fn',\n            ),\n        3 => array(\n            'abs','acos','acosh','addcslashes','addslashes','aggregate',\n            'aggregate_methods','aggregate_methods_by_list',\n            'aggregate_methods_by_regexp','aggregate_properties',\n            'aggregate_properties_by_list','aggregate_properties_by_regexp',\n            'aggregation_info','apache_child_terminate','apache_get_modules',\n            'apache_get_version','apache_getenv','apache_lookup_uri',\n            'apache_note','apache_request_headers','apache_response_headers',\n            'apache_setenv','array','array_change_key_case','array_chunk',\n            'array_combine','array_count_values','array_diff',\n            'array_diff_assoc','array_diff_key','array_diff_uassoc',\n            'array_diff_ukey','array_fill','array_fill_keys','array_filter',\n            'array_flip','array_intersect','array_intersect_assoc',\n            'array_intersect_key','array_intersect_uassoc',\n            'array_intersect_ukey','array_key_exists','array_keys','array_map',\n            'array_merge','array_merge_recursive','array_multisort','array_pad',\n            'array_pop','array_product','array_push','array_rand',\n            'array_reduce','array_reverse','array_search','array_shift',\n            'array_slice','array_splice','array_sum','array_udiff',\n            'array_udiff_assoc','array_udiff_uassoc','array_uintersect',\n            'array_uintersect_assoc','array_uintersect_uassoc','array_unique',\n            'array_unshift','array_values','array_walk','array_walk_recursive',\n            'arsort','asin','asinh','asort','assert','assert_options','atan',\n            'atan2','atanh','base_convert','base64_decode','base64_encode',\n            'basename','bcadd','bccomp','bcdiv','bcmod','bcmul',\n            'bcompiler_load','bcompiler_load_exe','bcompiler_parse_class',\n            'bcompiler_read','bcompiler_write_class','bcompiler_write_constant',\n            'bcompiler_write_exe_footer','bcompiler_write_file',\n            'bcompiler_write_footer','bcompiler_write_function',\n            'bcompiler_write_functions_from_file','bcompiler_write_header',\n            'bcompiler_write_included_filename','bcpow','bcpowmod','bcscale',\n            'bcsqrt','bcsub','bin2hex','bindec','bindtextdomain',\n            'bind_textdomain_codeset','bitset_empty','bitset_equal',\n            'bitset_excl','bitset_fill','bitset_from_array','bitset_from_hash',\n            'bitset_from_string','bitset_in','bitset_incl',\n            'bitset_intersection','bitset_invert','bitset_is_empty',\n            'bitset_subset','bitset_to_array','bitset_to_hash',\n            'bitset_to_string','bitset_union','blenc_encrypt','bzclose',\n            'bzcompress','bzdecompress','bzerrno','bzerror','bzerrstr',\n            'bzflush','bzopen','bzread','bzwrite','cal_days_in_month',\n            'cal_from_jd','cal_info','cal_to_jd','call_user_func',\n            'call_user_func_array','call_user_method','call_user_method_array',\n            'ceil','chdir','checkdate','checkdnsrr','chgrp','chmod','chop',\n            'chown','chr','chunk_split','class_exists','class_implements',\n            'class_parents','classkit_aggregate_methods',\n            'classkit_doc_comments','classkit_import','classkit_method_add',\n            'classkit_method_copy','classkit_method_redefine',\n            'classkit_method_remove','classkit_method_rename','clearstatcache',\n            'closedir','closelog','com_create_guid','com_event_sink',\n            'com_get_active_object','com_load_typelib','com_message_pump',\n            'com_print_typeinfo','compact','confirm_phpdoc_compiled',\n            'connection_aborted','connection_status','constant',\n            'convert_cyr_string','convert_uudecode','convert_uuencode','copy',\n            'cos','cosh','count','count_chars','cpdf_add_annotation',\n            'cpdf_add_outline','cpdf_arc','cpdf_begin_text','cpdf_circle',\n            'cpdf_clip','cpdf_close','cpdf_closepath',\n            'cpdf_closepath_fill_stroke','cpdf_closepath_stroke',\n            'cpdf_continue_text','cpdf_curveto','cpdf_end_text','cpdf_fill',\n            'cpdf_fill_stroke','cpdf_finalize','cpdf_finalize_page',\n            'cpdf_global_set_document_limits','cpdf_import_jpeg','cpdf_lineto',\n            'cpdf_moveto','cpdf_newpath','cpdf_open','cpdf_output_buffer',\n            'cpdf_page_init','cpdf_rect','cpdf_restore','cpdf_rlineto',\n            'cpdf_rmoveto','cpdf_rotate','cpdf_rotate_text','cpdf_save',\n            'cpdf_save_to_file','cpdf_scale','cpdf_set_action_url',\n            'cpdf_set_char_spacing','cpdf_set_creator','cpdf_set_current_page',\n            'cpdf_set_font','cpdf_set_font_directories',\n            'cpdf_set_font_map_file','cpdf_set_horiz_scaling',\n            'cpdf_set_keywords','cpdf_set_leading','cpdf_set_page_animation',\n            'cpdf_set_subject','cpdf_set_text_matrix','cpdf_set_text_pos',\n            'cpdf_set_text_rendering','cpdf_set_text_rise','cpdf_set_title',\n            'cpdf_set_viewer_preferences','cpdf_set_word_spacing',\n            'cpdf_setdash','cpdf_setflat','cpdf_setgray','cpdf_setgray_fill',\n            'cpdf_setgray_stroke','cpdf_setlinecap','cpdf_setlinejoin',\n            'cpdf_setlinewidth','cpdf_setmiterlimit','cpdf_setrgbcolor',\n            'cpdf_setrgbcolor_fill','cpdf_setrgbcolor_stroke','cpdf_show',\n            'cpdf_show_xy','cpdf_stringwidth','cpdf_stroke','cpdf_text',\n            'cpdf_translate','crack_check','crack_closedict',\n            'crack_getlastmessage','crack_opendict','crc32','create_function',\n            'crypt','ctype_alnum','ctype_alpha','ctype_cntrl','ctype_digit',\n            'ctype_graph','ctype_lower','ctype_print','ctype_punct',\n            'ctype_space','ctype_upper','ctype_xdigit','curl_close',\n            'curl_copy_handle','curl_errno','curl_error','curl_exec',\n            'curl_getinfo','curl_init','curl_multi_add_handle',\n            'curl_multi_close','curl_multi_exec','curl_multi_getcontent',\n            'curl_multi_info_read','curl_multi_init','curl_multi_remove_handle',\n            'curl_multi_select','curl_setopt','curl_setopt_array',\n            'curl_version','current','cvsclient_connect','cvsclient_log',\n            'cvsclient_login','cvsclient_retrieve','date','date_create',\n            'date_date_set','date_default_timezone_get',\n            'date_default_timezone_set','date_format','date_isodate_set',\n            'date_modify','date_offset_get','date_parse','date_sun_info',\n            'date_sunrise','date_sunset','date_time_set','date_timezone_get',\n            'date_timezone_set','db_id_list','dba_close','dba_delete',\n            'dba_exists','dba_fetch','dba_firstkey','dba_handlers','dba_insert',\n            'dba_key_split','dba_list','dba_nextkey','dba_open','dba_optimize',\n            'dba_popen','dba_replace','dba_sync','dbase_add_record',\n            'dbase_close','dbase_create','dbase_delete_record',\n            'dbase_get_header_info','dbase_get_record',\n            'dbase_get_record_with_names','dbase_numfields','dbase_numrecords',\n            'dbase_open','dbase_pack','dbase_replace_record',\n            'dbg_get_all_contexts','dbg_get_all_module_names',\n            'dbg_get_all_source_lines','dbg_get_context_name',\n            'dbg_get_module_name','dbg_get_profiler_results',\n            'dbg_get_source_context','dblist','dbmclose','dbmdelete',\n            'dbmexists','dbmfetch','dbmfirstkey','dbminsert','dbmnextkey',\n            'dbmopen','dbmreplace','dbx_close','dbx_compare','dbx_connect',\n            'dbx_error','dbx_escape_string','dbx_fetch_row','dbx_query',\n            'dbx_sort','dcgettext','dcngettext','deaggregate','debug_backtrace',\n            'debug_zval_dump','debugbreak','decbin','dechex','decoct','define',\n            'defined','define_syslog_variables','deg2rad','dgettext','die',\n            'dio_close','dio_open','dio_read','dio_seek','dio_stat','dio_write',\n            'dir','dirname','disk_free_space','disk_total_space',\n            'diskfreespace','dl','dngettext','docblock_token_name',\n            'docblock_tokenize','dom_import_simplexml','domxml_add_root',\n            'domxml_attributes','domxml_children','domxml_doc_add_root',\n            'domxml_doc_document_element','domxml_doc_get_element_by_id',\n            'domxml_doc_get_elements_by_tagname','domxml_doc_get_root',\n            'domxml_doc_set_root','domxml_doc_validate','domxml_doc_xinclude',\n            'domxml_dump_mem','domxml_dump_mem_file','domxml_dump_node',\n            'domxml_dumpmem','domxml_elem_get_attribute',\n            'domxml_elem_set_attribute','domxml_get_attribute','domxml_getattr',\n            'domxml_html_dump_mem','domxml_new_child','domxml_new_doc',\n            'domxml_new_xmldoc','domxml_node','domxml_node_add_namespace',\n            'domxml_node_attributes','domxml_node_children',\n            'domxml_node_get_content','domxml_node_has_attributes',\n            'domxml_node_new_child','domxml_node_set_content',\n            'domxml_node_set_namespace','domxml_node_unlink_node',\n            'domxml_open_file','domxml_open_mem','domxml_parser',\n            'domxml_parser_add_chunk','domxml_parser_cdata_section',\n            'domxml_parser_characters','domxml_parser_comment',\n            'domxml_parser_end','domxml_parser_end_document',\n            'domxml_parser_end_element','domxml_parser_entity_reference',\n            'domxml_parser_get_document','domxml_parser_namespace_decl',\n            'domxml_parser_processing_instruction',\n            'domxml_parser_start_document','domxml_parser_start_element',\n            'domxml_root','domxml_set_attribute','domxml_setattr',\n            'domxml_substitute_entities_default','domxml_unlink_node',\n            'domxml_version','domxml_xmltree','doubleval','each','easter_date',\n            'easter_days','empty','end','ereg','ereg_replace','eregi',\n            'eregi_replace','error_get_last','error_log','error_reporting',\n            'escapeshellarg','escapeshellcmd','eval','event_deschedule',\n            'event_dispatch','event_free','event_handle_signal',\n            'event_have_events','event_init','event_new','event_pending',\n            'event_priority_set','event_schedule','event_set','event_timeout',\n            'exec','exif_imagetype','exif_read_data','exif_tagname',\n            'exif_thumbnail','exit','exp','explode','expm1','extension_loaded',\n            'extract','ezmlm_hash','fbird_add_user','fbird_affected_rows',\n            'fbird_backup','fbird_blob_add','fbird_blob_cancel',\n            'fbird_blob_close','fbird_blob_create','fbird_blob_echo',\n            'fbird_blob_get','fbird_blob_import','fbird_blob_info',\n            'fbird_blob_open','fbird_close','fbird_commit','fbird_commit_ret',\n            'fbird_connect','fbird_db_info','fbird_delete_user','fbird_drop_db',\n            'fbird_errcode','fbird_errmsg','fbird_execute','fbird_fetch_assoc',\n            'fbird_fetch_object','fbird_fetch_row','fbird_field_info',\n            'fbird_free_event_handler','fbird_free_query','fbird_free_result',\n            'fbird_gen_id','fbird_maintain_db','fbird_modify_user',\n            'fbird_name_result','fbird_num_fields','fbird_num_params',\n            'fbird_param_info','fbird_pconnect','fbird_prepare','fbird_query',\n            'fbird_restore','fbird_rollback','fbird_rollback_ret',\n            'fbird_server_info','fbird_service_attach','fbird_service_detach',\n            'fbird_set_event_handler','fbird_trans','fbird_wait_event','fclose',\n            'fdf_add_doc_javascript','fdf_add_template','fdf_close',\n            'fdf_create','fdf_enum_values','fdf_errno','fdf_error','fdf_get_ap',\n            'fdf_get_attachment','fdf_get_encoding','fdf_get_file',\n            'fdf_get_flags','fdf_get_opt','fdf_get_status','fdf_get_value',\n            'fdf_get_version','fdf_header','fdf_next_field_name','fdf_open',\n            'fdf_open_string','fdf_remove_item','fdf_save','fdf_save_string',\n            'fdf_set_ap','fdf_set_encoding','fdf_set_file','fdf_set_flags',\n            'fdf_set_javascript_action','fdf_set_on_import_javascript',\n            'fdf_set_opt','fdf_set_status','fdf_set_submit_form_action',\n            'fdf_set_target_frame','fdf_set_value','fdf_set_version','feof',\n            'fflush','fgetc','fgetcsv','fgets','fgetss','file','file_exists',\n            'file_get_contents','file_put_contents','fileatime','filectime',\n            'filegroup','fileinode','filemtime','fileowner','fileperms',\n            'filepro','filepro_fieldcount','filepro_fieldname',\n            'filepro_fieldtype','filepro_fieldwidth','filepro_retrieve',\n            'filepro_rowcount','filesize','filetype','filter_has_var',\n            'filter_id','filter_input','filter_input_array','filter_list',\n            'filter_var','filter_var_array','finfo_buffer','finfo_close',\n            'finfo_file','finfo_open','finfo_set_flags','floatval','flock',\n            'floor','flush','fmod','fnmatch','fopen','fpassthru','fprintf',\n            'fputcsv','fputs','fread','frenchtojd','fribidi_charset_info',\n            'fribidi_get_charsets','fribidi_log2vis','fscanf','fseek',\n            'fsockopen','fstat','ftell','ftok','ftp_alloc','ftp_cdup',\n            'ftp_chdir','ftp_chmod','ftp_close','ftp_connect','ftp_delete',\n            'ftp_exec','ftp_fget','ftp_fput','ftp_get','ftp_get_option',\n            'ftp_login','ftp_mdtm','ftp_mkdir','ftp_nb_continue','ftp_nb_fget',\n            'ftp_nb_fput','ftp_nb_get','ftp_nb_put','ftp_nlist','ftp_pasv',\n            'ftp_put','ftp_pwd','ftp_quit','ftp_raw','ftp_rawlist','ftp_rename',\n            'ftp_rmdir','ftp_set_option','ftp_site','ftp_size',\n            'ftp_ssl_connect','ftp_systype','ftruncate','function_exists',\n            'func_get_arg','func_get_args','func_num_args','fwrite','gd_info',\n            'getallheaders','getcwd','getdate','getenv','gethostbyaddr',\n            'gethostbyname','gethostbynamel','getimagesize','getlastmod',\n            'getmxrr','getmygid','getmyinode','getmypid','getmyuid','getopt',\n            'getprotobyname','getprotobynumber','getrandmax','getrusage',\n            'getservbyname','getservbyport','gettext','gettimeofday','gettype',\n            'get_browser','get_cfg_var','get_class','get_class_methods',\n            'get_class_vars','get_current_user','get_declared_classes',\n            'get_defined_constants','get_defined_functions','get_defined_vars',\n            'get_extension_funcs','get_headers','get_html_translation_table',\n            'get_included_files','get_include_path','get_loaded_extensions',\n            'get_magic_quotes_gpc','get_magic_quotes_runtime','get_meta_tags',\n            'get_object_vars','get_parent_class','get_required_files',\n            'get_resource_type','glob','gmdate','gmmktime','gmp_abs','gmp_add',\n            'gmp_and','gmp_clrbit','gmp_cmp','gmp_com','gmp_div','gmp_div_q',\n            'gmp_div_qr','gmp_div_r','gmp_divexact','gmp_fact','gmp_gcd',\n            'gmp_gcdext','gmp_hamdist','gmp_init','gmp_intval','gmp_invert',\n            'gmp_jacobi','gmp_legendre','gmp_mod','gmp_mul','gmp_neg',\n            'gmp_nextprime','gmp_or','gmp_perfect_square','gmp_popcount',\n            'gmp_pow','gmp_powm','gmp_prob_prime','gmp_random','gmp_scan0',\n            'gmp_scan1','gmp_setbit','gmp_sign','gmp_sqrt','gmp_sqrtrem',\n            'gmp_strval','gmp_sub','gmp_xor','gmstrftime','gopher_parsedir',\n            'gregoriantojd','gzclose','gzcompress','gzdeflate','gzencode',\n            'gzeof','gzfile','gzgetc','gzgets','gzgetss','gzinflate','gzopen',\n            'gzpassthru','gzputs','gzread','gzrewind','gzseek','gztell',\n            'gzuncompress','gzwrite','hash','hash_algos','hash_file',\n            'hash_final','hash_hmac','hash_hmac_file','hash_init','hash_update',\n            'hash_update_file','hash_update_stream','header','headers_list',\n            'headers_sent','hebrev','hebrevc','hexdec','highlight_file',\n            'highlight_string','html_doc','html_doc_file','html_entity_decode',\n            'htmlentities','htmlspecialchars','htmlspecialchars_decode',\n            'http_build_cookie','http_build_query','http_build_str',\n            'http_build_url','http_cache_etag','http_cache_last_modified',\n            'http_chunked_decode','http_date','http_deflate','http_get',\n            'http_get_request_body','http_get_request_body_stream',\n            'http_get_request_headers','http_head','http_inflate',\n            'http_match_etag','http_match_modified','http_match_request_header',\n            'http_negotiate_charset','http_negotiate_content_type',\n            'http_negotiate_language','http_parse_cookie','http_parse_headers',\n            'http_parse_message','http_parse_params',\n            'http_persistent_handles_clean','http_persistent_handles_count',\n            'http_persistent_handles_ident','http_post_data','http_post_fields',\n            'http_put_data','http_put_file','http_put_stream','http_redirect',\n            'http_request','http_request_body_encode',\n            'http_request_method_exists','http_request_method_name',\n            'http_request_method_register','http_request_method_unregister',\n            'http_send_content_disposition','http_send_content_type',\n            'http_send_data','http_send_file','http_send_last_modified',\n            'http_send_status','http_send_stream','http_support',\n            'http_throttle','hypot','i18n_convert','i18n_discover_encoding',\n            'i18n_http_input','i18n_http_output','i18n_internal_encoding',\n            'i18n_ja_jp_hantozen','i18n_mime_header_decode',\n            'i18n_mime_header_encode','ibase_add_user','ibase_affected_rows',\n            'ibase_backup','ibase_blob_add','ibase_blob_cancel',\n            'ibase_blob_close','ibase_blob_create','ibase_blob_echo',\n            'ibase_blob_get','ibase_blob_import','ibase_blob_info',\n            'ibase_blob_open','ibase_close','ibase_commit','ibase_commit_ret',\n            'ibase_connect','ibase_db_info','ibase_delete_user','ibase_drop_db',\n            'ibase_errcode','ibase_errmsg','ibase_execute','ibase_fetch_assoc',\n            'ibase_fetch_object','ibase_fetch_row','ibase_field_info',\n            'ibase_free_event_handler','ibase_free_query','ibase_free_result',\n            'ibase_gen_id','ibase_maintain_db','ibase_modify_user',\n            'ibase_name_result','ibase_num_fields','ibase_num_params',\n            'ibase_param_info','ibase_pconnect','ibase_prepare','ibase_query',\n            'ibase_restore','ibase_rollback','ibase_rollback_ret',\n            'ibase_server_info','ibase_service_attach','ibase_service_detach',\n            'ibase_set_event_handler','ibase_trans','ibase_wait_event','iconv',\n            'iconv_get_encoding','iconv_mime_decode',\n            'iconv_mime_decode_headers','iconv_mime_encode',\n            'iconv_set_encoding','iconv_strlen','iconv_strpos','iconv_strrpos',\n            'iconv_substr','id3_get_frame_long_name','id3_get_frame_short_name',\n            'id3_get_genre_id','id3_get_genre_list','id3_get_genre_name',\n            'id3_get_tag','id3_get_version','id3_remove_tag','id3_set_tag',\n            'idate','ignore_user_abort','image_type_to_extension',\n            'image_type_to_mime_type','image2wbmp','imagealphablending',\n            'imageantialias','imagearc','imagechar','imagecharup',\n            'imagecolorallocate','imagecolorallocatealpha','imagecolorat',\n            'imagecolorclosest','imagecolorclosestalpha','imagecolordeallocate',\n            'imagecolorexact','imagecolorexactalpha','imagecolormatch',\n            'imagecolorresolve','imagecolorresolvealpha','imagecolorset',\n            'imagecolorsforindex','imagecolorstotal','imagecolortransparent',\n            'imageconvolution','imagecopy','imagecopymerge',\n            'imagecopymergegray','imagecopyresampled','imagecopyresized',\n            'imagecreate','imagecreatefromgd','imagecreatefromgd2',\n            'imagecreatefromgd2part','imagecreatefromgif','imagecreatefromjpeg',\n            'imagecreatefrompng','imagecreatefromstring','imagecreatefromwbmp',\n            'imagecreatefromxbm','imagecreatetruecolor','imagedashedline',\n            'imagedestroy','imageellipse','imagefill','imagefilledarc',\n            'imagefilledellipse','imagefilledpolygon','imagefilledrectangle',\n            'imagefilltoborder','imagefilter','imagefontheight',\n            'imagefontwidth','imageftbbox','imagefttext','imagegammacorrect',\n            'imagegd','imagegd2','imagegif','imagegrabscreen','imagegrabwindow',\n            'imageinterlace','imageistruecolor','imagejpeg','imagelayereffect',\n            'imageline','imageloadfont','imagepalettecopy','imagepng',\n            'imagepolygon','imagepsbbox','imagepsencodefont',\n            'imagepsextendfont','imagepsfreefont','imagepsloadfont',\n            'imagepsslantfont','imagepstext','imagerectangle','imagerotate',\n            'imagesavealpha','imagesetbrush','imagesetpixel','imagesetstyle',\n            'imagesetthickness','imagesettile','imagestring','imagestringup',\n            'imagesx','imagesy','imagetruecolortopalette','imagettfbbox',\n            'imagettftext','imagetypes','imagewbmp','imagexbm','imap_8bit',\n            'imap_alerts','imap_append','imap_base64','imap_binary','imap_body',\n            'imap_bodystruct','imap_check','imap_clearflag_full','imap_close',\n            'imap_create','imap_createmailbox','imap_delete',\n            'imap_deletemailbox','imap_errors','imap_expunge',\n            'imap_fetch_overview','imap_fetchbody','imap_fetchheader',\n            'imap_fetchstructure','imap_fetchtext','imap_get_quota',\n            'imap_get_quotaroot','imap_getacl','imap_getmailboxes',\n            'imap_getsubscribed','imap_header','imap_headerinfo','imap_headers',\n            'imap_last_error','imap_list','imap_listmailbox',\n            'imap_listsubscribed','imap_lsub','imap_mail','imap_mail_compose',\n            'imap_mail_copy','imap_mail_move','imap_mailboxmsginfo',\n            'imap_mime_header_decode','imap_msgno','imap_num_msg',\n            'imap_num_recent','imap_open','imap_ping','imap_qprint',\n            'imap_rename','imap_renamemailbox','imap_reopen',\n            'imap_rfc822_parse_adrlist','imap_rfc822_parse_headers',\n            'imap_rfc822_write_address','imap_savebody','imap_scan',\n            'imap_scanmailbox','imap_search','imap_set_quota','imap_setacl',\n            'imap_setflag_full','imap_sort','imap_status','imap_subscribe',\n            'imap_thread','imap_timeout','imap_uid','imap_undelete',\n            'imap_unsubscribe','imap_utf7_decode','imap_utf7_encode',\n            'imap_utf8','implode','import_request_variables','in_array',\n            'ini_alter','ini_get','ini_get_all','ini_restore','ini_set',\n            'intval','ip2long','iptcembed','iptcparse','isset','is_a',\n            'is_array','is_bool','is_callable','is_dir','is_double',\n            'is_executable','is_file','is_finite','is_float','is_infinite',\n            'is_int','is_integer','is_link','is_long','is_nan','is_null',\n            'is_numeric','is_object','is_readable','is_real','is_resource',\n            'is_scalar','is_soap_fault','is_string','is_subclass_of',\n            'is_uploaded_file','is_writable','is_writeable','iterator_apply',\n            'iterator_count','iterator_to_array','java_last_exception_clear',\n            'java_last_exception_get','jddayofweek','jdmonthname','jdtofrench',\n            'jdtogregorian','jdtojewish','jdtojulian','jdtounix','jewishtojd',\n            'join','jpeg2wbmp','json_decode','json_encode','juliantojd','key',\n            'key_exists','krsort','ksort','lcg_value','ldap_add','ldap_bind',\n            'ldap_close','ldap_compare','ldap_connect','ldap_count_entries',\n            'ldap_delete','ldap_dn2ufn','ldap_err2str','ldap_errno',\n            'ldap_error','ldap_explode_dn','ldap_first_attribute',\n            'ldap_first_entry','ldap_first_reference','ldap_free_result',\n            'ldap_get_attributes','ldap_get_dn','ldap_get_entries',\n            'ldap_get_option','ldap_get_values','ldap_get_values_len',\n            'ldap_list','ldap_mod_add','ldap_mod_del','ldap_mod_replace',\n            'ldap_modify','ldap_next_attribute','ldap_next_entry',\n            'ldap_next_reference','ldap_parse_reference','ldap_parse_result',\n            'ldap_read','ldap_rename','ldap_search','ldap_set_option',\n            'ldap_sort','ldap_start_tls','ldap_unbind','levenshtein',\n            'libxml_clear_errors','libxml_get_errors','libxml_get_last_error',\n            'libxml_set_streams_context','libxml_use_internal_errors','link',\n            'linkinfo','list','localeconv','localtime','log','log1p','log10',\n            'long2ip','lstat','ltrim','lzf_compress','lzf_decompress',\n            'lzf_optimized_for','magic_quotes_runtime','mail','max','mbereg',\n            'mberegi','mberegi_replace','mbereg_match','mbereg_replace',\n            'mbereg_search','mbereg_search_getpos','mbereg_search_getregs',\n            'mbereg_search_init','mbereg_search_pos','mbereg_search_regs',\n            'mbereg_search_setpos','mbregex_encoding','mbsplit','mbstrcut',\n            'mbstrlen','mbstrpos','mbstrrpos','mbsubstr','mb_check_encoding',\n            'mb_convert_case','mb_convert_encoding','mb_convert_kana',\n            'mb_convert_variables','mb_decode_mimeheader',\n            'mb_decode_numericentity','mb_detect_encoding','mb_detect_order',\n            'mb_encode_mimeheader','mb_encode_numericentity','mb_ereg',\n            'mb_eregi','mb_eregi_replace','mb_ereg_match','mb_ereg_replace',\n            'mb_ereg_search','mb_ereg_search_getpos','mb_ereg_search_getregs',\n            'mb_ereg_search_init','mb_ereg_search_pos','mb_ereg_search_regs',\n            'mb_ereg_search_setpos','mb_get_info','mb_http_input',\n            'mb_http_output','mb_internal_encoding','mb_language',\n            'mb_list_encodings','mb_output_handler','mb_parse_str',\n            'mb_preferred_mime_name','mb_regex_encoding','mb_regex_set_options',\n            'mb_send_mail','mb_split','mb_strcut','mb_strimwidth','mb_stripos',\n            'mb_stristr','mb_strlen','mb_strpos','mb_strrchr','mb_strrichr',\n            'mb_strripos','mb_strrpos','mb_strstr','mb_strtolower',\n            'mb_strtoupper','mb_strwidth','mb_substitute_character','mb_substr',\n            'mb_substr_count','mcrypt_cbc','mcrypt_cfb','mcrypt_create_iv',\n            'mcrypt_decrypt','mcrypt_ecb','mcrypt_enc_get_algorithms_name',\n            'mcrypt_enc_get_block_size','mcrypt_enc_get_iv_size',\n            'mcrypt_enc_get_key_size','mcrypt_enc_get_modes_name',\n            'mcrypt_enc_get_supported_key_sizes',\n            'mcrypt_enc_is_block_algorithm',\n            'mcrypt_enc_is_block_algorithm_mode','mcrypt_enc_is_block_mode',\n            'mcrypt_enc_self_test','mcrypt_encrypt','mcrypt_generic',\n            'mcrypt_generic_deinit','mcrypt_generic_end','mcrypt_generic_init',\n            'mcrypt_get_block_size','mcrypt_get_cipher_name',\n            'mcrypt_get_iv_size','mcrypt_get_key_size','mcrypt_list_algorithms',\n            'mcrypt_list_modes','mcrypt_module_close',\n            'mcrypt_module_get_algo_block_size',\n            'mcrypt_module_get_algo_key_size',\n            'mcrypt_module_get_supported_key_sizes',\n            'mcrypt_module_is_block_algorithm',\n            'mcrypt_module_is_block_algorithm_mode',\n            'mcrypt_module_is_block_mode','mcrypt_module_open',\n            'mcrypt_module_self_test','mcrypt_ofb','md5','md5_file',\n            'mdecrypt_generic','memcache_add','memcache_add_server',\n            'memcache_close','memcache_connect','memcache_debug',\n            'memcache_decrement','memcache_delete','memcache_flush',\n            'memcache_get','memcache_get_extended_stats',\n            'memcache_get_server_status','memcache_get_stats',\n            'memcache_get_version','memcache_increment','memcache_pconnect',\n            'memcache_replace','memcache_set','memcache_set_compress_threshold',\n            'memcache_set_server_params','memory_get_peak_usage',\n            'memory_get_usage','metaphone','mhash','mhash_count',\n            'mhash_get_block_size','mhash_get_hash_name','mhash_keygen_s2k',\n            'method_exists','microtime','mime_content_type','min',\n            'ming_keypress','ming_setcubicthreshold','ming_setscale',\n            'ming_useconstants','ming_useswfversion','mkdir','mktime',\n            'money_format','move_uploaded_file','msql','msql_affected_rows',\n            'msql_close','msql_connect','msql_create_db','msql_createdb',\n            'msql_data_seek','msql_db_query','msql_dbname','msql_drop_db',\n            'msql_dropdb','msql_error','msql_fetch_array','msql_fetch_field',\n            'msql_fetch_object','msql_fetch_row','msql_field_flags',\n            'msql_field_len','msql_field_name','msql_field_seek',\n            'msql_field_table','msql_field_type','msql_fieldflags',\n            'msql_fieldlen','msql_fieldname','msql_fieldtable','msql_fieldtype',\n            'msql_free_result','msql_freeresult','msql_list_dbs',\n            'msql_list_fields','msql_list_tables','msql_listdbs',\n            'msql_listfields','msql_listtables','msql_num_fields',\n            'msql_num_rows','msql_numfields','msql_numrows','msql_pconnect',\n            'msql_query','msql_regcase','msql_result','msql_select_db',\n            'msql_selectdb','msql_tablename','mssql_bind','mssql_close',\n            'mssql_connect','mssql_data_seek','mssql_execute',\n            'mssql_fetch_array','mssql_fetch_assoc','mssql_fetch_batch',\n            'mssql_fetch_field','mssql_fetch_object','mssql_fetch_row',\n            'mssql_field_length','mssql_field_name','mssql_field_seek',\n            'mssql_field_type','mssql_free_result','mssql_free_statement',\n            'mssql_get_last_message','mssql_guid_string','mssql_init',\n            'mssql_min_error_severity','mssql_min_message_severity',\n            'mssql_next_result','mssql_num_fields','mssql_num_rows',\n            'mssql_pconnect','mssql_query','mssql_result','mssql_rows_affected',\n            'mssql_select_db','mt_getrandmax','mt_rand','mt_srand','mysql',\n            'mysql_affected_rows','mysql_client_encoding','mysql_close',\n            'mysql_connect','mysql_createdb','mysql_create_db',\n            'mysql_data_seek','mysql_dbname','mysql_db_name','mysql_db_query',\n            'mysql_dropdb','mysql_drop_db','mysql_errno','mysql_error',\n            'mysql_escape_string','mysql_fetch_array','mysql_fetch_assoc',\n            'mysql_fetch_field','mysql_fetch_lengths','mysql_fetch_object',\n            'mysql_fetch_row','mysql_fieldflags','mysql_fieldlen',\n            'mysql_fieldname','mysql_fieldtable','mysql_fieldtype',\n            'mysql_field_flags','mysql_field_len','mysql_field_name',\n            'mysql_field_seek','mysql_field_table','mysql_field_type',\n            'mysql_freeresult','mysql_free_result','mysql_get_client_info',\n            'mysql_get_host_info','mysql_get_proto_info',\n            'mysql_get_server_info','mysql_info','mysql_insert_id',\n            'mysql_listdbs','mysql_listfields','mysql_listtables',\n            'mysql_list_dbs','mysql_list_fields','mysql_list_processes',\n            'mysql_list_tables','mysql_numfields','mysql_numrows',\n            'mysql_num_fields','mysql_num_rows','mysql_pconnect','mysql_ping',\n            'mysql_query','mysql_real_escape_string','mysql_result',\n            'mysql_selectdb','mysql_select_db','mysql_set_charset','mysql_stat',\n            'mysql_tablename','mysql_table_name','mysql_thread_id',\n            'mysql_unbuffered_query','mysqli_affected_rows','mysqli_autocommit',\n            'mysqli_bind_param','mysqli_bind_result','mysqli_change_user',\n            'mysqli_character_set_name','mysqli_client_encoding','mysqli_close',\n            'mysqli_commit','mysqli_connect','mysqli_connect_errno',\n            'mysqli_connect_error','mysqli_data_seek','mysqli_debug',\n            'mysqli_disable_reads_from_master','mysqli_disable_rpl_parse',\n            'mysqli_dump_debug_info','mysqli_embedded_server_end',\n            'mysqli_embedded_server_start','mysqli_enable_reads_from_master',\n            'mysqli_enable_rpl_parse','mysqli_errno','mysqli_error',\n            'mysqli_escape_string','mysqli_execute','mysqli_fetch',\n            'mysqli_fetch_array','mysqli_fetch_assoc','mysqli_fetch_field',\n            'mysqli_fetch_field_direct','mysqli_fetch_fields',\n            'mysqli_fetch_lengths','mysqli_fetch_object','mysqli_fetch_row',\n            'mysqli_field_count','mysqli_field_seek','mysqli_field_tell',\n            'mysqli_free_result','mysqli_get_charset','mysqli_get_client_info',\n            'mysqli_get_client_version','mysqli_get_host_info',\n            'mysqli_get_metadata','mysqli_get_proto_info',\n            'mysqli_get_server_info','mysqli_get_server_version',\n            'mysqli_get_warnings','mysqli_info','mysqli_init',\n            'mysqli_insert_id','mysqli_kill','mysqli_master_query',\n            'mysqli_more_results','mysqli_multi_query','mysqli_next_result',\n            'mysqli_num_fields','mysqli_num_rows','mysqli_options',\n            'mysqli_param_count','mysqli_ping','mysqli_prepare','mysqli_query',\n            'mysqli_real_connect','mysqli_real_escape_string',\n            'mysqli_real_query','mysqli_report','mysqli_rollback',\n            'mysqli_rpl_parse_enabled','mysqli_rpl_probe',\n            'mysqli_rpl_query_type','mysqli_select_db','mysqli_send_long_data',\n            'mysqli_send_query','mysqli_set_charset',\n            'mysqli_set_local_infile_default','mysqli_set_local_infile_handler',\n            'mysqli_set_opt','mysqli_slave_query','mysqli_sqlstate',\n            'mysqli_ssl_set','mysqli_stat','mysqli_stmt_affected_rows',\n            'mysqli_stmt_attr_get','mysqli_stmt_attr_set',\n            'mysqli_stmt_bind_param','mysqli_stmt_bind_result',\n            'mysqli_stmt_close','mysqli_stmt_data_seek','mysqli_stmt_errno',\n            'mysqli_stmt_error','mysqli_stmt_execute','mysqli_stmt_fetch',\n            'mysqli_stmt_field_count','mysqli_stmt_free_result',\n            'mysqli_stmt_get_warnings','mysqli_stmt_init',\n            'mysqli_stmt_insert_id','mysqli_stmt_num_rows',\n            'mysqli_stmt_param_count','mysqli_stmt_prepare','mysqli_stmt_reset',\n            'mysqli_stmt_result_metadata','mysqli_stmt_send_long_data',\n            'mysqli_stmt_sqlstate','mysqli_stmt_store_result',\n            'mysqli_store_result','mysqli_thread_id','mysqli_thread_safe',\n            'mysqli_use_result','mysqli_warning_count','natcasesort','natsort',\n            'new_xmldoc','next','ngettext','nl2br','nl_langinfo',\n            'ntuser_getdomaincontroller','ntuser_getusergroups',\n            'ntuser_getuserinfo','ntuser_getuserlist','number_format',\n            'ob_clean','ob_deflatehandler','ob_end_clean','ob_end_flush',\n            'ob_etaghandler','ob_flush','ob_get_clean','ob_get_contents',\n            'ob_get_flush','ob_get_length','ob_get_level','ob_get_status',\n            'ob_gzhandler','ob_iconv_handler','ob_implicit_flush',\n            'ob_inflatehandler','ob_list_handlers','ob_start','ob_tidyhandler',\n            'octdec','odbc_autocommit','odbc_binmode','odbc_close',\n            'odbc_close_all','odbc_columnprivileges','odbc_columns',\n            'odbc_commit','odbc_connect','odbc_cursor','odbc_data_source',\n            'odbc_do','odbc_error','odbc_errormsg','odbc_exec','odbc_execute',\n            'odbc_fetch_array','odbc_fetch_into','odbc_fetch_object',\n            'odbc_fetch_row','odbc_field_len','odbc_field_name',\n            'odbc_field_num','odbc_field_precision','odbc_field_scale',\n            'odbc_field_type','odbc_foreignkeys','odbc_free_result',\n            'odbc_gettypeinfo','odbc_longreadlen','odbc_next_result',\n            'odbc_num_fields','odbc_num_rows','odbc_pconnect','odbc_prepare',\n            'odbc_primarykeys','odbc_procedurecolumns','odbc_procedures',\n            'odbc_result','odbc_result_all','odbc_rollback','odbc_setoption',\n            'odbc_specialcolumns','odbc_statistics','odbc_tableprivileges',\n            'odbc_tables','opendir','openlog','openssl_csr_export',\n            'openssl_csr_export_to_file','openssl_csr_get_public_key',\n            'openssl_csr_get_subject','openssl_csr_new','openssl_csr_sign',\n            'openssl_error_string','openssl_free_key','openssl_get_privatekey',\n            'openssl_get_publickey','openssl_open','openssl_pkcs12_export',\n            'openssl_pkcs12_export_to_file','openssl_pkcs12_read',\n            'openssl_pkcs7_decrypt','openssl_pkcs7_encrypt',\n            'openssl_pkcs7_sign','openssl_pkcs7_verify','openssl_pkey_export',\n            'openssl_pkey_export_to_file','openssl_pkey_free',\n            'openssl_pkey_get_details','openssl_pkey_get_private',\n            'openssl_pkey_get_public','openssl_pkey_new',\n            'openssl_private_decrypt','openssl_private_encrypt',\n            'openssl_public_decrypt','openssl_public_encrypt','openssl_seal',\n            'openssl_sign','openssl_verify','openssl_x509_checkpurpose',\n            'openssl_x509_check_private_key','openssl_x509_export',\n            'openssl_x509_export_to_file','openssl_x509_free',\n            'openssl_x509_parse','openssl_x509_read','ord',\n            'output_add_rewrite_var','output_reset_rewrite_vars','overload',\n            'outputdebugstring','pack','parse_ini_file','parse_str','parse_url',\n            'parsekit_compile_file','parsekit_compile_string',\n            'parsekit_func_arginfo','parsekit_opcode_flags',\n            'parsekit_opcode_name','passthru','pathinfo','pclose',\n            'pdf_add_bookmark','pdf_add_launchlink','pdf_add_locallink',\n            'pdf_add_nameddest','pdf_add_note','pdf_add_pdflink',\n            'pdf_add_thumbnail','pdf_add_weblink','pdf_arc','pdf_arcn',\n            'pdf_attach_file','pdf_begin_font','pdf_begin_glyph',\n            'pdf_begin_page','pdf_begin_pattern','pdf_begin_template',\n            'pdf_circle','pdf_clip','pdf_close','pdf_close_image',\n            'pdf_close_pdi','pdf_close_pdi_page','pdf_closepath',\n            'pdf_closepath_fill_stroke','pdf_closepath_stroke','pdf_concat',\n            'pdf_continue_text','pdf_create_gstate','pdf_create_pvf',\n            'pdf_curveto','pdf_delete','pdf_delete_pvf','pdf_encoding_set_char',\n            'pdf_end_font','pdf_end_glyph','pdf_end_page','pdf_end_pattern',\n            'pdf_end_template','pdf_endpath','pdf_fill','pdf_fill_imageblock',\n            'pdf_fill_pdfblock','pdf_fill_stroke','pdf_fill_textblock',\n            'pdf_findfont','pdf_fit_image','pdf_fit_pdi_page',\n            'pdf_fit_textline','pdf_get_apiname','pdf_get_buffer',\n            'pdf_get_errmsg','pdf_get_errnum','pdf_get_parameter',\n            'pdf_get_pdi_parameter','pdf_get_pdi_value','pdf_get_value',\n            'pdf_initgraphics','pdf_lineto','pdf_load_font',\n            'pdf_load_iccprofile','pdf_load_image','pdf_makespotcolor',\n            'pdf_moveto','pdf_new','pdf_open_ccitt','pdf_open_file',\n            'pdf_open_image','pdf_open_image_file','pdf_open_pdi',\n            'pdf_open_pdi_page','pdf_place_image','pdf_place_pdi_page',\n            'pdf_process_pdi','pdf_rect','pdf_restore','pdf_rotate','pdf_save',\n            'pdf_scale','pdf_set_border_color','pdf_set_border_dash',\n            'pdf_set_border_style','pdf_set_gstate','pdf_set_info',\n            'pdf_set_parameter','pdf_set_text_pos','pdf_set_value',\n            'pdf_setcolor','pdf_setdash','pdf_setdashpattern','pdf_setflat',\n            'pdf_setfont','pdf_setlinecap','pdf_setlinejoin','pdf_setlinewidth',\n            'pdf_setmatrix','pdf_setmiterlimit','pdf_setpolydash','pdf_shading',\n            'pdf_shading_pattern','pdf_shfill','pdf_show','pdf_show_boxed',\n            'pdf_show_xy','pdf_skew','pdf_stringwidth','pdf_stroke',\n            'pdf_translate','pdo_drivers','pfsockopen','pg_affected_rows',\n            'pg_cancel_query','pg_clientencoding','pg_client_encoding',\n            'pg_close','pg_cmdtuples','pg_connect','pg_connection_busy',\n            'pg_connection_reset','pg_connection_status','pg_convert',\n            'pg_copy_from','pg_copy_to','pg_dbname','pg_delete','pg_end_copy',\n            'pg_errormessage','pg_escape_bytea','pg_escape_string','pg_exec',\n            'pg_execute','pg_fetch_all','pg_fetch_all_columns','pg_fetch_array',\n            'pg_fetch_assoc','pg_fetch_object','pg_fetch_result','pg_fetch_row',\n            'pg_fieldisnull','pg_fieldname','pg_fieldnum','pg_fieldprtlen',\n            'pg_fieldsize','pg_fieldtype','pg_field_is_null','pg_field_name',\n            'pg_field_num','pg_field_prtlen','pg_field_size','pg_field_table',\n            'pg_field_type','pg_field_type_oid','pg_free_result',\n            'pg_freeresult','pg_get_notify','pg_get_pid','pg_get_result',\n            'pg_getlastoid','pg_host','pg_insert','pg_last_error',\n            'pg_last_notice','pg_last_oid','pg_loclose','pg_locreate',\n            'pg_loexport','pg_loimport','pg_loopen','pg_loread','pg_loreadall',\n            'pg_lounlink','pg_lowrite','pg_lo_close','pg_lo_create',\n            'pg_lo_export','pg_lo_import','pg_lo_open','pg_lo_read',\n            'pg_lo_read_all','pg_lo_seek','pg_lo_tell','pg_lo_unlink',\n            'pg_lo_write','pg_meta_data','pg_numfields','pg_numrows',\n            'pg_num_fields','pg_num_rows','pg_options','pg_parameter_status',\n            'pg_pconnect','pg_ping','pg_port','pg_prepare','pg_put_line',\n            'pg_query','pg_query_params','pg_result','pg_result_error',\n            'pg_result_error_field','pg_result_seek','pg_result_status',\n            'pg_select','pg_send_execute','pg_send_prepare','pg_send_query',\n            'pg_send_query_params','pg_set_client_encoding',\n            'pg_set_error_verbosity','pg_setclientencoding','pg_trace',\n            'pg_transaction_status','pg_tty','pg_unescape_bytea','pg_untrace',\n            'pg_update','pg_version','php_egg_logo_guid','php_ini_loaded_file',\n            'php_ini_scanned_files','php_logo_guid','php_real_logo_guid',\n            'php_sapi_name','php_strip_whitespace','php_uname','phpcredits',\n            'phpdoc_xml_from_string','phpinfo','phpversion','pi','png2wbmp',\n            'pop3_close','pop3_delete_message','pop3_get_account_size',\n            'pop3_get_message','pop3_get_message_count',\n            'pop3_get_message_header','pop3_get_message_ids',\n            'pop3_get_message_size','pop3_get_message_sizes','pop3_open',\n            'pop3_undelete','popen','pos','posix_ctermid','posix_errno',\n            'posix_getcwd','posix_getegid','posix_geteuid','posix_getgid',\n            'posix_getgrgid','posix_getgrnam','posix_getgroups',\n            'posix_getlogin','posix_getpgid','posix_getpgrp','posix_getpid',\n            'posix_getppid','posix_getpwnam','posix_getpwuid','posix_getrlimit',\n            'posix_getsid','posix_getuid','posix_get_last_error','posix_isatty',\n            'posix_kill','posix_mkfifo','posix_setegid','posix_seteuid',\n            'posix_setgid','posix_setpgid','posix_setsid','posix_setuid',\n            'posix_strerror','posix_times','posix_ttyname','posix_uname','pow',\n            'preg_grep','preg_last_error','preg_match','preg_match_all',\n            'preg_quote','preg_replace','preg_replace_callback','preg_split',\n            'prev','print_r','printf','proc_close','proc_get_status',\n            'proc_open','proc_terminate','putenv','quoted_printable_decode',\n            'quotemeta','rad2deg','radius_acct_open','radius_add_server',\n            'radius_auth_open','radius_close','radius_config',\n            'radius_create_request','radius_cvt_addr','radius_cvt_int',\n            'radius_cvt_string','radius_demangle','radius_demangle_mppe_key',\n            'radius_get_attr','radius_get_vendor_attr','radius_put_addr',\n            'radius_put_attr','radius_put_int','radius_put_string',\n            'radius_put_vendor_addr','radius_put_vendor_attr',\n            'radius_put_vendor_int','radius_put_vendor_string',\n            'radius_request_authenticator','radius_send_request',\n            'radius_server_secret','radius_strerror','rand','range',\n            'rawurldecode','rawurlencode','read_exif_data','readdir','readfile',\n            'readgzfile','readlink','realpath','reg_close_key','reg_create_key',\n            'reg_enum_key','reg_enum_value','reg_get_value','reg_open_key',\n            'reg_set_value','register_shutdown_function',\n            'register_tick_function','rename','res_close','res_get','res_list',\n            'res_list_type','res_open','res_set','reset',\n            'restore_error_handler','restore_include_path','rewind','rewinddir',\n            'rmdir','round','rsort','rtrim','runkit_class_adopt',\n            'runkit_class_emancipate','runkit_constant_add',\n            'runkit_constant_redefine','runkit_constant_remove',\n            'runkit_default_property_add','runkit_function_add',\n            'runkit_function_copy','runkit_function_redefine',\n            'runkit_function_remove','runkit_function_rename','runkit_import',\n            'runkit_lint','runkit_lint_file','runkit_method_add',\n            'runkit_method_copy','runkit_method_redefine',\n            'runkit_method_remove','runkit_method_rename','runkit_object_id',\n            'runkit_return_value_used','runkit_sandbox_output_handler',\n            'runkit_superglobals','runkit_zval_inspect','scandir','sem_acquire',\n            'sem_get','sem_release','sem_remove','serialize',\n            'session_cache_expire','session_cache_limiter','session_commit',\n            'session_decode','session_destroy','session_encode',\n            'session_get_cookie_params','session_id','session_is_registered',\n            'session_module_name','session_name','session_regenerate_id',\n            'session_register','session_save_path','session_set_cookie_params',\n            'session_set_save_handler','session_start','session_unregister',\n            'session_unset','session_write_close','set_content',\n            'set_error_handler','set_file_buffer','set_include_path',\n            'set_magic_quotes_runtime','set_socket_blocking','set_time_limit',\n            'setcookie','setlocale','setrawcookie','settype','sha1','sha1_file',\n            'shell_exec','shmop_close','shmop_delete','shmop_open','shmop_read',\n            'shmop_size','shmop_write','shm_attach','shm_detach','shm_get_var',\n            'shm_put_var','shm_remove','shm_remove_var','show_source','shuffle',\n            'similar_text','simplexml_import_dom','simplexml_load_file',\n            'simplexml_load_string','sin','sinh','sizeof','sleep','smtp_close',\n            'smtp_cmd_data','smtp_cmd_mail','smtp_cmd_rcpt','smtp_connect',\n            'snmp_get_quick_print','snmp_get_valueretrieval','snmp_read_mib',\n            'snmp_set_quick_print','snmp_set_valueretrieval','snmp2_get',\n            'snmp2_getnext','snmp2_real_walk','snmp2_set','snmp2_walk',\n            'snmp3_get','snmp3_getnext','snmp3_real_walk','snmp3_set',\n            'snmp3_walk','snmpget','snmpgetnext','snmprealwalk','snmpset',\n            'snmpwalk','snmpwalkoid','socket_accept','socket_bind',\n            'socket_clear_error','socket_close','socket_connect',\n            'socket_create','socket_create_listen','socket_create_pair',\n            'socket_getopt','socket_getpeername','socket_getsockname',\n            'socket_get_option','socket_get_status','socket_iovec_add',\n            'socket_iovec_alloc','socket_iovec_delete','socket_iovec_fetch',\n            'socket_iovec_free','socket_iovec_set','socket_last_error',\n            'socket_listen','socket_read','socket_readv','socket_recv',\n            'socket_recvfrom','socket_recvmsg','socket_select','socket_send',\n            'socket_sendmsg','socket_sendto','socket_setopt','socket_set_block',\n            'socket_set_blocking','socket_set_nonblock','socket_set_option',\n            'socket_set_timeout','socket_shutdown','socket_strerror',\n            'socket_write','socket_writev','sort','soundex','spl_autoload',\n            'spl_autoload_call','spl_autoload_extensions',\n            'spl_autoload_functions','spl_autoload_register',\n            'spl_autoload_unregister','spl_classes','spl_object_hash','split',\n            'spliti','sprintf','sql_regcase','sqlite_array_query',\n            'sqlite_busy_timeout','sqlite_changes','sqlite_close',\n            'sqlite_column','sqlite_create_aggregate','sqlite_create_function',\n            'sqlite_current','sqlite_error_string','sqlite_escape_string',\n            'sqlite_exec','sqlite_factory','sqlite_fetch_all',\n            'sqlite_fetch_array','sqlite_fetch_column_types',\n            'sqlite_fetch_object','sqlite_fetch_single','sqlite_fetch_string',\n            'sqlite_field_name','sqlite_has_more','sqlite_has_prev',\n            'sqlite_last_error','sqlite_last_insert_rowid','sqlite_libencoding',\n            'sqlite_libversion','sqlite_next','sqlite_num_fields',\n            'sqlite_num_rows','sqlite_open','sqlite_popen','sqlite_prev',\n            'sqlite_query','sqlite_rewind','sqlite_seek','sqlite_single_query',\n            'sqlite_udf_decode_binary','sqlite_udf_encode_binary',\n            'sqlite_unbuffered_query','sqlite_valid','sqrt','srand','sscanf',\n            'ssh2_auth_hostbased_file','ssh2_auth_none','ssh2_auth_password',\n            'ssh2_auth_pubkey_file','ssh2_connect','ssh2_exec',\n            'ssh2_fetch_stream','ssh2_fingerprint','ssh2_forward_accept',\n            'ssh2_forward_listen','ssh2_methods_negotiated','ssh2_poll',\n            'ssh2_publickey_add','ssh2_publickey_init','ssh2_publickey_list',\n            'ssh2_publickey_remove','ssh2_scp_recv','ssh2_scp_send','ssh2_sftp',\n            'ssh2_sftp_lstat','ssh2_sftp_mkdir','ssh2_sftp_readlink',\n            'ssh2_sftp_realpath','ssh2_sftp_rename','ssh2_sftp_rmdir',\n            'ssh2_sftp_stat','ssh2_sftp_symlink','ssh2_sftp_unlink',\n            'ssh2_shell','ssh2_tunnel','stat','stats_absolute_deviation',\n            'stats_cdf_beta','stats_cdf_binomial','stats_cdf_cauchy',\n            'stats_cdf_chisquare','stats_cdf_exponential','stats_cdf_f',\n            'stats_cdf_gamma','stats_cdf_laplace','stats_cdf_logistic',\n            'stats_cdf_negative_binomial','stats_cdf_noncentral_chisquare',\n            'stats_cdf_noncentral_f','stats_cdf_noncentral_t',\n            'stats_cdf_normal','stats_cdf_poisson','stats_cdf_t',\n            'stats_cdf_uniform','stats_cdf_weibull','stats_covariance',\n            'stats_dens_beta','stats_dens_cauchy','stats_dens_chisquare',\n            'stats_dens_exponential','stats_dens_f','stats_dens_gamma',\n            'stats_dens_laplace','stats_dens_logistic','stats_dens_normal',\n            'stats_dens_pmf_binomial','stats_dens_pmf_hypergeometric',\n            'stats_dens_pmf_negative_binomial','stats_dens_pmf_poisson',\n            'stats_dens_t','stats_dens_uniform','stats_dens_weibull',\n            'stats_harmonic_mean','stats_kurtosis','stats_rand_gen_beta',\n            'stats_rand_gen_chisquare','stats_rand_gen_exponential',\n            'stats_rand_gen_f','stats_rand_gen_funiform','stats_rand_gen_gamma',\n            'stats_rand_gen_ipoisson','stats_rand_gen_iuniform',\n            'stats_rand_gen_noncenral_f','stats_rand_gen_noncentral_chisquare',\n            'stats_rand_gen_noncentral_t','stats_rand_gen_normal',\n            'stats_rand_gen_t','stats_rand_getsd','stats_rand_ibinomial',\n            'stats_rand_ibinomial_negative','stats_rand_ignlgi',\n            'stats_rand_phrase_to_seeds','stats_rand_ranf','stats_rand_setall',\n            'stats_skew','stats_standard_deviation','stats_stat_binomial_coef',\n            'stats_stat_correlation','stats_stat_factorial',\n            'stats_stat_independent_t','stats_stat_innerproduct',\n            'stats_stat_paired_t','stats_stat_percentile','stats_stat_powersum',\n            'stats_variance','strcasecmp','strchr','strcmp','strcoll','strcspn',\n            'stream_bucket_append','stream_bucket_make_writeable',\n            'stream_bucket_new','stream_bucket_prepend','stream_context_create',\n            'stream_context_get_default','stream_context_get_options',\n            'stream_context_set_default','stream_context_set_option',\n            'stream_context_set_params','stream_copy_to_stream',\n            'stream_encoding','stream_filter_append','stream_filter_prepend',\n            'stream_filter_register','stream_filter_remove',\n            'stream_get_contents','stream_get_filters','stream_get_line',\n            'stream_get_meta_data','stream_get_transports',\n            'stream_get_wrappers','stream_is_local',\n            'stream_notification_callback','stream_register_wrapper',\n            'stream_resolve_include_path','stream_select','stream_set_blocking',\n            'stream_set_timeout','stream_set_write_buffer',\n            'stream_socket_accept','stream_socket_client',\n            'stream_socket_enable_crypto','stream_socket_get_name',\n            'stream_socket_pair','stream_socket_recvfrom',\n            'stream_socket_sendto','stream_socket_server',\n            'stream_socket_shutdown','stream_supports_lock',\n            'stream_wrapper_register','stream_wrapper_restore',\n            'stream_wrapper_unregister','strftime','stripcslashes','stripos',\n            'stripslashes','strip_tags','stristr','strlen','strnatcasecmp',\n            'strnatcmp','strpbrk','strncasecmp','strncmp','strpos','strrchr',\n            'strrev','strripos','strrpos','strspn','strstr','strtok',\n            'strtolower','strtotime','strtoupper','strtr','strval',\n            'str_ireplace','str_pad','str_repeat','str_replace','str_rot13',\n            'str_split','str_shuffle','str_word_count','substr',\n            'substr_compare','substr_count','substr_replace','svn_add',\n            'svn_auth_get_parameter','svn_auth_set_parameter','svn_cat',\n            'svn_checkout','svn_cleanup','svn_client_version','svn_commit',\n            'svn_diff','svn_export','svn_fs_abort_txn','svn_fs_apply_text',\n            'svn_fs_begin_txn2','svn_fs_change_node_prop','svn_fs_check_path',\n            'svn_fs_contents_changed','svn_fs_copy','svn_fs_delete',\n            'svn_fs_dir_entries','svn_fs_file_contents','svn_fs_file_length',\n            'svn_fs_is_dir','svn_fs_is_file','svn_fs_make_dir',\n            'svn_fs_make_file','svn_fs_node_created_rev','svn_fs_node_prop',\n            'svn_fs_props_changed','svn_fs_revision_prop',\n            'svn_fs_revision_root','svn_fs_txn_root','svn_fs_youngest_rev',\n            'svn_import','svn_info','svn_log','svn_ls','svn_repos_create',\n            'svn_repos_fs','svn_repos_fs_begin_txn_for_commit',\n            'svn_repos_fs_commit_txn','svn_repos_hotcopy','svn_repos_open',\n            'svn_repos_recover','svn_status','svn_update','symlink',\n            'sys_get_temp_dir','syslog','system','tan','tanh','tempnam',\n            'textdomain','thread_get','thread_include','thread_lock',\n            'thread_lock_try','thread_mutex_destroy','thread_mutex_init',\n            'thread_set','thread_start','thread_unlock','tidy_access_count',\n            'tidy_clean_repair','tidy_config_count','tidy_diagnose',\n            'tidy_error_count','tidy_get_body','tidy_get_config',\n            'tidy_get_error_buffer','tidy_get_head','tidy_get_html',\n            'tidy_get_html_ver','tidy_get_output','tidy_get_release',\n            'tidy_get_root','tidy_get_status','tidy_getopt','tidy_is_xhtml',\n            'tidy_is_xml','tidy_parse_file','tidy_parse_string',\n            'tidy_repair_file','tidy_repair_string','tidy_warning_count','time',\n            'timezone_abbreviations_list','timezone_identifiers_list',\n            'timezone_name_from_abbr','timezone_name_get','timezone_offset_get',\n            'timezone_open','timezone_transitions_get','tmpfile',\n            'token_get_all','token_name','touch','trigger_error',\n            'transliterate','transliterate_filters_get','trim','uasort',\n            'ucfirst','ucwords','uksort','umask','uniqid','unixtojd','unlink',\n            'unpack','unregister_tick_function','unserialize','unset',\n            'urldecode','urlencode','user_error','use_soap_error_handler',\n            'usleep','usort','utf8_decode','utf8_encode','var_dump',\n            'var_export','variant_abs','variant_add','variant_and',\n            'variant_cast','variant_cat','variant_cmp',\n            'variant_date_from_timestamp','variant_date_to_timestamp',\n            'variant_div','variant_eqv','variant_fix','variant_get_type',\n            'variant_idiv','variant_imp','variant_int','variant_mod',\n            'variant_mul','variant_neg','variant_not','variant_or',\n            'variant_pow','variant_round','variant_set','variant_set_type',\n            'variant_sub','variant_xor','version_compare','virtual','vfprintf',\n            'vprintf','vsprintf','wddx_add_vars','wddx_deserialize',\n            'wddx_packet_end','wddx_packet_start','wddx_serialize_value',\n            'wddx_serialize_vars','win_beep','win_browse_file',\n            'win_browse_folder','win_create_link','win_message_box',\n            'win_play_wav','win_shell_execute','win32_create_service',\n            'win32_delete_service','win32_get_last_control_message',\n            'win32_ps_list_procs','win32_ps_stat_mem','win32_ps_stat_proc',\n            'win32_query_service_status','win32_scheduler_delete_task',\n            'win32_scheduler_enum_tasks','win32_scheduler_get_task_info',\n            'win32_scheduler_run','win32_scheduler_set_task_info',\n            'win32_set_service_status','win32_start_service',\n            'win32_start_service_ctrl_dispatcher','win32_stop_service',\n            'wordwrap','xml_error_string','xml_get_current_byte_index',\n            'xml_get_current_column_number','xml_get_current_line_number',\n            'xml_get_error_code','xml_parse','xml_parser_create',\n            'xml_parser_create_ns','xml_parser_free','xml_parser_get_option',\n            'xml_parser_set_option','xml_parse_into_struct',\n            'xml_set_character_data_handler','xml_set_default_handler',\n            'xml_set_element_handler','xml_set_end_namespace_decl_handler',\n            'xml_set_external_entity_ref_handler',\n            'xml_set_notation_decl_handler','xml_set_object',\n            'xml_set_processing_instruction_handler',\n            'xml_set_start_namespace_decl_handler',\n            'xml_set_unparsed_entity_decl_handler','xmldoc','xmldocfile',\n            'xmlrpc_decode','xmlrpc_decode_request','xmlrpc_encode',\n            'xmlrpc_encode_request','xmlrpc_get_type','xmlrpc_is_fault',\n            'xmlrpc_parse_method_descriptions',\n            'xmlrpc_server_add_introspection_data','xmlrpc_server_call_method',\n            'xmlrpc_server_create','xmlrpc_server_destroy',\n            'xmlrpc_server_register_introspection_callback',\n            'xmlrpc_server_register_method','xmlrpc_set_type','xmltree',\n            'xmlwriter_end_attribute','xmlwriter_end_cdata',\n            'xmlwriter_end_comment','xmlwriter_end_document',\n            'xmlwriter_end_dtd','xmlwriter_end_dtd_attlist',\n            'xmlwriter_end_dtd_element','xmlwriter_end_dtd_entity',\n            'xmlwriter_end_element','xmlwriter_end_pi','xmlwriter_flush',\n            'xmlwriter_full_end_element','xmlwriter_open_memory',\n            'xmlwriter_open_uri','xmlwriter_output_memory',\n            'xmlwriter_set_indent','xmlwriter_set_indent_string',\n            'xmlwriter_start_attribute','xmlwriter_start_attribute_ns',\n            'xmlwriter_start_cdata','xmlwriter_start_comment',\n            'xmlwriter_start_document','xmlwriter_start_dtd',\n            'xmlwriter_start_dtd_attlist','xmlwriter_start_dtd_element',\n            'xmlwriter_start_dtd_entity','xmlwriter_start_element',\n            'xmlwriter_start_element_ns','xmlwriter_start_pi','xmlwriter_text',\n            'xmlwriter_write_attribute','xmlwriter_write_attribute_ns',\n            'xmlwriter_write_cdata','xmlwriter_write_comment',\n            'xmlwriter_write_dtd','xmlwriter_write_dtd_attlist',\n            'xmlwriter_write_dtd_element','xmlwriter_write_dtd_entity',\n            'xmlwriter_write_element','xmlwriter_write_element_ns',\n            'xmlwriter_write_pi','xmlwriter_write_raw','xpath_eval',\n            'xpath_eval_expression','xpath_new_context','xpath_register_ns',\n            'xpath_register_ns_auto','xptr_eval','xptr_new_context','yp_all',\n            'yp_cat','yp_errno','yp_err_string','yp_first',\n            'yp_get_default_domain','yp_master','yp_match','yp_next','yp_order',\n            'zend_current_obfuscation_level','zend_get_cfg_var','zend_get_id',\n            'zend_loader_current_file','zend_loader_enabled',\n            'zend_loader_file_encoded','zend_loader_file_licensed',\n            'zend_loader_install_license','zend_loader_version',\n            'zend_logo_guid','zend_match_hostmasks','zend_obfuscate_class_name',\n            'zend_obfuscate_function_name','zend_optimizer_version',\n            'zend_runtime_obfuscate','zend_version','zip_close',\n            'zip_entry_close','zip_entry_compressedsize',\n            'zip_entry_compressionmethod','zip_entry_filesize','zip_entry_name',\n            'zip_entry_open','zip_entry_read','zip_open','zip_read',\n            'zlib_get_coding_type', 'get_called_class', 'get_mangled_object_vars',\n            'property_exists', 'interface_exists', 'trait_exists', 'class_alias',\n            'set_exception_handler', 'restore_exception_handler', 'get_declared_traits',\n            'get_declared_interfaces', 'get_resource_id', 'get_resources', 'debug_print_backtrace',\n            'gc_mem_caches', 'gc_collect_cycles', 'gc_enabled', 'gc_enable', 'gc_disable',\n            'gc_status', 'date_create_immutable', 'date_create_from_format',\n            'date_create_immutable_from_format', 'date_parse_from_format', 'date_get_last_errors',\n            'date_add', 'date_sub', 'date_diff', 'date_timestamp_set', 'date_timestamp_get',\n            'timezone_location_get', 'timezone_version_get', 'date_interval_create_from_date_string',\n            'date_interval_format', 'libxml_disable_entity_loader', 'libxml_set_external_entity_loader',\n            'openssl_x509_fingerprint', 'openssl_x509_verify', 'openssl_pbkdf2', 'openssl_pkcs7_read',\n            'openssl_cms_verify', 'openssl_cms_encrypt', 'openssl_cms_sign', 'openssl_cms_decrypt',\n            'openssl_cms_read', 'openssl_get_md_methods', 'openssl_get_cipher_methods',\n            'openssl_get_curve_names', 'openssl_digest', 'openssl_encrypt', 'openssl_decrypt',\n            'openssl_cipher_iv_length', 'openssl_dh_compute_key', 'openssl_pkey_derive',\n            'openssl_random_pseudo_bytes', 'openssl_spki_new', 'openssl_spki_verify',\n            'openssl_spki_export', 'openssl_spki_export_challenge', 'openssl_get_cert_locations',\n            'preg_filter', 'preg_replace_callback_array', 'preg_last_error_msg', 'zlib_encode',\n            'zlib_decode', 'gzdecode', 'deflate_init', 'deflate_add', 'inflate_init', 'inflate_add',\n            'inflate_get_status', 'inflate_get_read_len', 'curl_escape', 'curl_unescape',\n            'curl_multi_setopt', 'curl_file_create', 'curl_multi_errno', 'curl_multi_strerror',\n            'curl_pause', 'curl_reset', 'curl_share_close', 'curl_share_errno', 'curl_share_init',\n            'curl_share_setopt', 'curl_share_strerror', 'curl_strerror', 'ftp_mlsd', 'ftp_append',\n            'imagepalettetotruecolor', 'imagecreatefromwebp', 'imagecreatefromxpm',\n            'imagecreatefrombmp', 'imagecreatefromtga', 'imagewebp', 'imagebmp',\n            'imagecolorclosesthwb', 'imageopenpolygon', 'imagesetclip', 'imagegetclip',\n            'imageflip', 'imagecrop', 'imagecropauto', 'imagescale', 'imageaffine',\n            'imageaffinematrixget', 'imageaffinematrixconcat', 'imagegetinterpolation',\n            'imagesetinterpolation', 'imageresolution', '_', 'gmp_import', 'gmp_export',\n            'gmp_root', 'gmp_rootrem', 'gmp_perfect_power', 'gmp_lcm', 'gmp_kronecker',\n            'gmp_random_seed', 'gmp_random_bits', 'gmp_random_range', 'gmp_testbit', 'gmp_binomial',\n            'hash_copy', 'hash_hmac_algos', 'hash_pbkdf2', 'hash_equals', 'hash_hkdf',\n            'intlcal_create_instance', 'intlcal_get_keyword_values_for_locale', 'intlcal_get_now',\n            'intlcal_get_available_locales', 'intlcal_get', 'intlcal_get_time', 'intlcal_set_time',\n            'intlcal_add', 'intlcal_set_time_zone', 'intlcal_after', 'intlcal_before',\n            'intlcal_set', 'intlcal_roll', 'intlcal_clear', 'intlcal_field_difference',\n            'intlcal_get_actual_maximum', 'intlcal_get_actual_minimum',\n            'intlcal_get_day_of_week_type', 'intlcal_get_first_day_of_week',\n            'intlcal_get_least_maximum', 'intlcal_get_greatest_minimum',\n            'intlcal_get_locale', 'intlcal_get_maximum', 'intlcal_get_minimal_days_in_first_week',\n            'intlcal_set_minimal_days_in_first_week', 'intlcal_get_minimum',\n            'intlcal_get_time_zone', 'intlcal_get_type', 'intlcal_get_weekend_transition',\n            'intlcal_in_daylight_time', 'intlcal_is_lenient', 'intlcal_is_set',\n            'intlcal_is_equivalent_to', 'intlcal_is_weekend', 'intlcal_set_first_day_of_week',\n            'intlcal_set_lenient', 'intlcal_get_repeated_wall_time_option', 'intlcal_equals',\n            'intlcal_get_skipped_wall_time_option', 'intlcal_set_repeated_wall_time_option',\n            'intlcal_set_skipped_wall_time_option', 'intlcal_from_date_time', 'intlcal_to_date_time',\n            'intlcal_get_error_code', 'intlcal_get_error_message', 'intlgregcal_create_instance',\n            'intlgregcal_set_gregorian_change', 'intlgregcal_get_gregorian_change',\n            'intlgregcal_is_leap_year', 'collator_create', 'collator_compare', 'collator_get_attribute',\n            'collator_set_attribute', 'collator_get_strength', 'collator_set_strength', 'collator_sort',\n            'collator_sort_with_sort_keys', 'collator_asort', 'collator_get_locale',\n            'collator_get_error_code', 'collator_get_error_message', 'collator_get_sort_key',\n            'intl_get_error_code', 'intl_get_error_message', 'intl_is_failure', 'intl_error_name',\n            'datefmt_create', 'datefmt_get_datetype', 'datefmt_get_timetype', 'datefmt_get_calendar',\n            'datefmt_set_calendar', 'datefmt_get_timezone_id', 'datefmt_get_calendar_object',\n            'datefmt_get_timezone', 'datefmt_set_timezone', 'datefmt_set_pattern',\n            'datefmt_get_pattern', 'datefmt_get_locale', 'datefmt_set_lenient',\n            'datefmt_is_lenient', 'datefmt_format', 'datefmt_format_object', 'datefmt_parse',\n            'datefmt_localtime', 'datefmt_get_error_code', 'datefmt_get_error_message',\n            'numfmt_create', 'numfmt_format', 'numfmt_parse', 'numfmt_format_currency',\n            'numfmt_parse_currency', 'numfmt_set_attribute', 'numfmt_get_attribute',\n            'numfmt_set_text_attribute', 'numfmt_get_text_attribute', 'numfmt_set_symbol',\n            'numfmt_get_symbol', 'numfmt_set_pattern', 'numfmt_get_pattern', 'numfmt_get_locale',\n            'numfmt_get_error_code', 'numfmt_get_error_message', 'grapheme_strlen',\n            'grapheme_strpos', 'grapheme_stripos', 'grapheme_strrpos', 'grapheme_strripos',\n            'grapheme_substr', 'grapheme_strstr', 'grapheme_stristr', 'grapheme_extract',\n            'idn_to_ascii', 'idn_to_utf8', 'locale_get_default', 'locale_set_default',\n            'locale_get_primary_language', 'locale_get_script', 'locale_get_region',\n            'locale_get_keywords', 'locale_get_display_script', 'locale_get_display_region',\n            'locale_get_display_name', 'locale_get_display_language', 'locale_get_display_variant',\n            'locale_compose', 'locale_parse', 'locale_get_all_variants', 'locale_filter_matches',\n            'locale_canonicalize', 'locale_lookup', 'locale_accept_from_http', 'msgfmt_create',\n            'msgfmt_format', 'msgfmt_format_message', 'msgfmt_parse', 'msgfmt_parse_message',\n            'msgfmt_set_pattern', 'msgfmt_get_pattern', 'msgfmt_get_locale', 'msgfmt_get_error_code',\n            'msgfmt_get_error_message', 'normalizer_normalize', 'normalizer_is_normalized',\n            'normalizer_get_raw_decomposition', 'resourcebundle_create', 'resourcebundle_get',\n            'resourcebundle_count', 'resourcebundle_locales', 'resourcebundle_get_error_code',\n            'resourcebundle_get_error_message', 'intltz_count_equivalent_ids', 'intltz_create_default',\n            'intltz_create_enumeration', 'intltz_create_time_zone',\n            'intltz_create_time_zone_id_enumeration', 'intltz_from_date_time_zone',\n            'intltz_get_canonical_id', 'intltz_get_display_name', 'intltz_get_dst_savings',\n            'intltz_get_equivalent_id', 'intltz_get_error_code', 'intltz_get_error_message',\n            'intltz_get_gmt', 'intltz_get_id', 'intltz_get_offset', 'intltz_get_raw_offset',\n            'intltz_get_region', 'intltz_get_tz_data_version', 'intltz_get_unknown',\n            'intltz_get_windows_id', 'intltz_get_id_for_windows_id', 'intltz_has_same_rules',\n            'intltz_to_date_time_zone', 'intltz_use_daylight_time', 'transliterator_create',\n            'transliterator_create_from_rules', 'transliterator_list_ids',\n            'transliterator_create_inverse', 'transliterator_transliterate',\n            'transliterator_get_error_code', 'transliterator_get_error_message',\n            'json_last_error', 'json_last_error_msg', 'ldap_bind_ext', 'ldap_sasl_bind',\n            'ldap_add_ext', 'ldap_delete_ext', 'ldap_modify_batch', 'ldap_mod_add_ext',\n            'ldap_mod_replace_ext', 'ldap_mod_del_ext', 'ldap_rename_ext', 'ldap_count_references',\n            'ldap_set_rebind_proc', 'ldap_escape', 'ldap_exop', 'ldap_exop_passwd',\n            'ldap_exop_whoami', 'ldap_exop_refresh', 'ldap_parse_exop', 'mb_str_split',\n            'mb_encoding_aliases', 'mb_scrub', 'mb_ord', 'mb_chr', 'mb_ereg_replace_callback',\n            'mysqli_begin_transaction', 'mysqli_error_list', 'mysqli_fetch_all',\n            'mysqli_get_connection_stats', 'mysqli_get_client_stats', 'mysqli_get_links_stats',\n            'mysqli_poll', 'mysqli_reap_async_query', 'mysqli_release_savepoint', 'mysqli_savepoint',\n            'mysqli_stmt_error_list', 'mysqli_stmt_get_result', 'mysqli_stmt_more_results',\n            'mysqli_stmt_next_result', 'mysqli_refresh', 'pcntl_fork', 'pcntl_waitpid', 'pcntl_wait',\n            'pcntl_signal', 'pcntl_signal_get_handler', 'pcntl_signal_dispatch', 'pcntl_sigprocmask',\n            'pcntl_wifexited', 'pcntl_wifstopped', 'pcntl_wifcontinued', 'pcntl_wifsignaled',\n            'pcntl_wexitstatus', 'pcntl_wtermsig', 'pcntl_wstopsig', 'pcntl_exec', 'pcntl_alarm',\n            'pcntl_get_last_error', 'pcntl_errno', 'pcntl_getpriority', 'pcntl_setpriority',\n            'pcntl_strerror', 'pcntl_async_signals', 'class_uses', 'spl_object_id', 'pg_connect_poll',\n            'pg_lo_truncate', 'pg_escape_literal', 'pg_escape_identifier', 'pg_socket',\n            'pg_consume_input', 'pg_flush', 'posix_mknod', 'posix_access', 'posix_setrlimit',\n            'posix_initgroups', 'pspell_new', 'pspell_new_personal', 'pspell_new_config',\n            'pspell_check', 'pspell_suggest', 'pspell_store_replacement', 'pspell_add_to_personal',\n            'pspell_add_to_session', 'pspell_clear_session', 'pspell_save_wordlist',\n            'pspell_config_create', 'pspell_config_runtogether', 'pspell_config_mode',\n            'pspell_config_ignore', 'pspell_config_personal', 'pspell_config_dict_dir',\n            'pspell_config_data_dir', 'pspell_config_repl', 'pspell_config_save_repl',\n            'readline', 'readline_info', 'readline_add_history', 'readline_clear_history',\n            'readline_read_history', 'readline_write_history', 'readline_completion_function',\n            'readline_callback_handler_install', 'readline_callback_read_char',\n            'readline_callback_handler_remove', 'readline_redisplay', 'readline_on_new_line',\n            'session_create_id', 'session_gc', 'session_abort', 'session_reset',\n            'session_status', 'session_register_shutdown', 'socket_import_stream',\n            'socket_export_stream', 'socket_cmsg_space', 'socket_addrinfo_lookup',\n            'socket_addrinfo_connect', 'socket_addrinfo_bind', 'socket_addrinfo_explain',\n            'sodium_crypto_aead_aes256gcm_is_available', 'sodium_crypto_aead_aes256gcm_decrypt',\n            'sodium_crypto_aead_aes256gcm_encrypt', 'sodium_crypto_aead_aes256gcm_keygen',\n            'sodium_crypto_aead_chacha20poly1305_decrypt', 'sodium_crypto_aead_chacha20poly1305_encrypt',\n            'sodium_crypto_aead_chacha20poly1305_keygen', 'sodium_crypto_aead_chacha20poly1305_ietf_decrypt',\n            'sodium_crypto_aead_chacha20poly1305_ietf_encrypt',\n            'sodium_crypto_aead_chacha20poly1305_ietf_keygen',\n            'sodium_crypto_aead_xchacha20poly1305_ietf_decrypt',\n            'sodium_crypto_aead_xchacha20poly1305_ietf_keygen',\n            'sodium_crypto_aead_xchacha20poly1305_ietf_encrypt', 'sodium_crypto_auth',\n            'sodium_crypto_auth_keygen', 'sodium_crypto_auth_verify', 'sodium_crypto_box',\n            'sodium_crypto_box_keypair', 'sodium_crypto_box_seed_keypair',\n            'sodium_crypto_box_keypair_from_secretkey_and_publickey', 'sodium_crypto_box_open',\n            'sodium_crypto_box_publickey', 'sodium_crypto_box_publickey_from_secretkey',\n            'sodium_crypto_box_seal', 'sodium_crypto_box_seal_open', 'sodium_crypto_box_secretkey',\n            'sodium_crypto_kx_keypair', 'sodium_crypto_kx_publickey', 'sodium_crypto_kx_secretkey',\n            'sodium_crypto_kx_seed_keypair', 'sodium_crypto_kx_client_session_keys',\n            'sodium_crypto_kx_server_session_keys', 'sodium_crypto_generichash',\n            'sodium_crypto_generichash_keygen', 'sodium_crypto_generichash_init',\n            'sodium_crypto_generichash_update', 'sodium_crypto_generichash_final',\n            'sodium_crypto_kdf_derive_from_key', 'sodium_crypto_kdf_keygen', 'sodium_crypto_pwhash',\n            'sodium_crypto_pwhash_str', 'sodium_crypto_pwhash_str_verify',\n            'sodium_crypto_pwhash_str_needs_rehash', 'sodium_crypto_pwhash_scryptsalsa208sha256',\n            'sodium_crypto_pwhash_scryptsalsa208sha256_str',\n            'sodium_crypto_pwhash_scryptsalsa208sha256_str_verify', 'sodium_crypto_scalarmult',\n            'sodium_crypto_secretbox', 'sodium_crypto_secretbox_keygen', 'sodium_crypto_secretbox_open',\n            'sodium_crypto_secretstream_xchacha20poly1305_keygen',\n            'sodium_crypto_secretstream_xchacha20poly1305_init_push',\n            'sodium_crypto_secretstream_xchacha20poly1305_push',\n            'sodium_crypto_secretstream_xchacha20poly1305_init_pull',\n            'sodium_crypto_secretstream_xchacha20poly1305_pull',\n            'sodium_crypto_secretstream_xchacha20poly1305_rekey', 'sodium_crypto_shorthash',\n            'sodium_crypto_shorthash_keygen', 'sodium_crypto_sign', 'sodium_crypto_sign_detached',\n            'sodium_crypto_sign_ed25519_pk_to_curve25519', 'sodium_crypto_sign_ed25519_sk_to_curve25519',\n            'sodium_crypto_sign_keypair', 'sodium_crypto_sign_keypair_from_secretkey_and_publickey',\n            'sodium_crypto_sign_open', 'sodium_crypto_sign_publickey', 'sodium_crypto_sign_secretkey',\n            'sodium_crypto_sign_publickey_from_secretkey', 'sodium_crypto_sign_seed_keypair',\n            'sodium_crypto_sign_verify_detached', 'sodium_crypto_stream', 'sodium_crypto_stream_keygen',\n            'sodium_crypto_stream_xor', 'sodium_add', 'sodium_compare', 'sodium_increment', 'sodium_memcmp',\n            'sodium_memzero', 'sodium_pad', 'sodium_unpad', 'sodium_bin2hex', 'sodium_hex2bin',\n            'sodium_bin2base64', 'sodium_base642bin', 'sodium_crypto_scalarmult_base',\n            'header_register_callback', 'array_replace', 'array_replace_recursive', 'array_key_first',\n            'array_key_last', 'array_column', 'time_nanosleep', 'time_sleep_until', 'error_clear_last',\n            'forward_static_call', 'forward_static_call_array', 'parse_ini_string', 'sys_getloadavg',\n            'strptime', 'gethostname', 'dns_check_record', 'dns_get_record', 'dns_get_mx',\n            'net_get_interfaces', 'hrtime', 'inet_ntop', 'inet_pton', 'header_remove', 'http_response_code',\n            'hex2bin', 'str_contains', 'str_starts_with', 'str_ends_with', 'lcfirst', 'str_getcsv',\n            'proc_nice', 'lchown', 'lchgrp', 'realpath_cache_get', 'realpath_cache_size',\n            'getimagesizefromstring', 'intdiv', 'fdiv', 'password_get_info', 'password_hash',\n            'password_needs_rehash', 'password_verify', 'password_algos', 'quoted_printable_encode',\n            'random_bytes', 'random_int', 'stream_context_get_params', 'stream_set_read_buffer',\n            'stream_isatty', 'stream_set_chunk_size', 'get_debug_type', 'boolval', 'is_iterable',\n            'is_countable', 'msg_get_queue', 'msg_send', 'msg_receive', 'msg_remove_queue',\n            'msg_stat_queue', 'msg_set_queue', 'msg_queue_exists', 'shm_has_var', 'tidy_get_opt_doc',\n            'fastcgi_finish_request', 'fpm_get_status', 'yaml_parse', 'yaml_parse_file', 'yaml_parse_url',\n            'yaml_emit', 'yaml_emit_file', 'opcache_reset', 'opcache_get_status', 'opcache_compile_file',\n            'opcache_invalidate', 'opcache_get_configuration', 'opcache_is_script_cached'\n            ),\n        4 => array(\n            'DEFAULT_INCLUDE_PATH', 'DIRECTORY_SEPARATOR', 'E_ALL',\n            'E_COMPILE_ERROR', 'E_COMPILE_WARNING', 'E_CORE_ERROR',\n            'E_CORE_WARNING', 'E_ERROR', 'E_NOTICE', 'E_PARSE', 'E_STRICT',\n            'E_USER_ERROR', 'E_USER_NOTICE', 'E_USER_WARNING', 'E_WARNING',\n            'ENT_COMPAT','ENT_QUOTES','ENT_NOQUOTES',\n            'false', 'null', 'PEAR_EXTENSION_DIR', 'PEAR_INSTALL_DIR',\n            'PHP_BINDIR', 'PHP_CONFIG_FILE_PATH', 'PHP_DATADIR',\n            'PHP_EXTENSION_DIR', 'PHP_LIBDIR',\n            'PHP_LOCALSTATEDIR', 'PHP_OS',\n            'PHP_OUTPUT_HANDLER_CONT', 'PHP_OUTPUT_HANDLER_END',\n            'PHP_OUTPUT_HANDLER_START', 'PHP_SYSCONFDIR',\n            'PHP_VERSION', 'true', '__CLASS__', '__FILE__', '__FUNCTION__',\n            '__LINE__', '__METHOD__', 'E_RECOVERABLE_ERROR', 'E_DEPRECATED',\n            'E_USER_DEPRECATED', 'DEBUG_BACKTRACE_PROVIDE_OBJECT',\n            'DEBUG_BACKTRACE_IGNORE_ARGS', 'ZEND_THREAD_SAFE', 'ZEND_DEBUG_BUILD',\n            'TRUE', 'FALSE', 'NULL', 'PHP_MAJOR_VERSION', 'PHP_MINOR_VERSION',\n            'PHP_RELEASE_VERSION', 'PHP_EXTRA_VERSION', 'PHP_VERSION_ID',\n            'PHP_ZTS', 'PHP_DEBUG', 'PHP_OS_FAMILY', 'PHP_SAPI', 'PHP_PREFIX',\n            'PHP_MANDIR', 'PHP_CONFIG_FILE_SCAN_DIR', 'PHP_SHLIB_SUFFIX',\n            'PHP_EOL', 'PHP_MAXPATHLEN', 'PHP_INT_MAX', 'PHP_INT_MIN',\n            'PHP_INT_SIZE', 'PHP_FD_SETSIZE', 'PHP_FLOAT_DIG',\n            'PHP_FLOAT_EPSILON', 'PHP_FLOAT_MAX', 'PHP_FLOAT_MIN',\n            'PHP_BINARY', 'PHP_OUTPUT_HANDLER_WRITE', 'PHP_OUTPUT_HANDLER_FLUSH',\n            'PHP_OUTPUT_HANDLER_CLEAN', 'PHP_OUTPUT_HANDLER_FINAL',\n            'PHP_OUTPUT_HANDLER_CLEANABLE', 'PHP_OUTPUT_HANDLER_FLUSHABLE',\n            'PHP_OUTPUT_HANDLER_REMOVABLE', 'PHP_OUTPUT_HANDLER_STDFLAGS',\n            'PHP_OUTPUT_HANDLER_STARTED', 'PHP_OUTPUT_HANDLER_DISABLED',\n            'UPLOAD_ERR_OK', 'UPLOAD_ERR_INI_SIZE', 'UPLOAD_ERR_FORM_SIZE',\n            'UPLOAD_ERR_PARTIAL', 'UPLOAD_ERR_NO_FILE', 'UPLOAD_ERR_NO_TMP_DIR',\n            'UPLOAD_ERR_CANT_WRITE', 'UPLOAD_ERR_EXTENSION', 'DATE_W3C', 'DATE_COOKIE', 'DATE_ISO8601', 'DATE_RFC1036',\n            'DATE_RFC850', 'DATE_RSS', 'DATE_RFC7231', 'DATE_RFC3339_EXTENDED',\n            'YAML_ANY_BREAK', 'YAML_CR_BREAK', 'YAML_LN_BREAK',\n            'LIBXML_LOADED_VERSION', 'LIBXML_DOTTED_VERSION',\n            'YAML_LITERAL_SCALAR_STYLE', 'XSL_SECPREF_CREATE_DIRECTORY',\n            'XSL_SECPREF_READ_NETWORK', 'XSL_SECPREF_WRITE_NETWORK',\n            'TIDY_TAG_MAP', 'AI_ALL', 'AI_ADDRCONFIG',\n            'MYSQLI_ON_UPDATE_NOW_FLAG', 'MYSQLI_PART_KEY_FLAG', 'AI_V4MAPPED',\n            'TIDY_TAG_COMMAND', 'PASSWORD_ARGON2_DEFAULT_MEMORY_COST',\n            'SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_INTERACTIVE',\n            'MYSQLI_CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS', 'YAML_CRLN_BREAK',\n            'OPENSSL_VERSION_TEXT', 'OPENSSL_VERSION_NUMBER',\n            'YAML_FOLDED_SCALAR_STYLE', 'XML_ERROR_PARTIAL_CHAR',\n            'XML_ERROR_TAG_MISMATCH', 'XML_ERROR_JUNK_AFTER_DOC_ELEMENT',\n            'XML_ERROR_PARAM_ENTITY_REF', 'XML_ERROR_RECURSIVE_ENTITY_REF',\n            'OPENSSL_DEFAULT_STREAM_CIPHERS', 'SO_REUSEPORT', 'PCRE_VERSION',\n            'TIDY_TAG_FORM', 'TIDY_TAG_DL', 'XML_ERROR_BINARY_ENTITY_REF',\n            'ZLIB_ENCODING_RAW', 'ZLIB_VERSION', 'ZLIB_VERNUM', 'XSL_CLONE_NEVER',\n            'SQL_BINARY', 'SQL_VARBINARY', 'SQL_LONGVARBINARY', 'SQL_BIGINT',\n            'SQL_TINYINT', 'TIDY_TAG_LABEL', 'CURLOPT_BINARYTRANSFER',\n            'TIDY_TAG_SMALL', 'CURLOPT_CAINFO', 'CURLOPT_CAPATH',\n            'TIDY_TAG_OPTGROUP', 'CURLOPT_COOKIE', 'CURLOPT_COOKIEFILE',\n            'CURLOPT_COOKIEJAR', 'TIDY_TAG_SERVER', 'TIDY_TAG_DEL',\n            'CURLOPT_CUSTOMREQUEST', 'TIDY_TAG_S', 'TIDY_TAG_RUBY',\n            'CURLOPT_EGDSOCKET', 'CURLOPT_ACCEPT_ENCODING', 'TIDY_TAG_H6',\n            'CURLOPT_FILE', 'TIDY_TAG_MULTICOL', 'TIDY_TAG_IMG',\n            'TIDY_TAG_NOSCRIPT', 'TIDY_TAG_NOSAVE', 'TIDY_TAG_IFRAME',\n            'TIDY_TAG_HTML', 'CURLOPT_FTPPORT', 'XSD_DURATION', 'TIDY_TAG_Q',\n            'TIDY_TAG_H3', 'CURLOPT_HEADERFUNCTION', 'CURLOPT_HTTP200ALIASES',\n            'TIDY_TAG_P', 'CURLOPT_HTTPHEADER', 'TIDY_TAG_LI', 'TIDY_TAG_PRE',\n            'CURLOPT_READDATA', 'XML_ERROR_BAD_CHAR_REF', 'CURLOPT_INTERFACE',\n            'CURLOPT_KRBLEVEL', 'XML_ERROR_INCORRECT_ENCODING',\n            'XML_ERROR_UNCLOSED_CDATA_SECTION', 'TIDY_TAG_NOEMBED',\n            'TIDY_TAG_META', 'TIDY_TAG_ILAYER', 'XSL_SECPREF_DEFAULT',\n            'TIDY_TAG_H4', 'TIDY_TAG_SPACER', 'TIDY_TAG_HR', 'CURLOPT_POSTFIELDS',\n            'CURLOPT_POSTQUOTE', 'CURLOPT_PREQUOTE', 'CURLOPT_PRIVATE',\n            'CURLOPT_PROGRESSFUNCTION', 'CURLOPT_PROXY', 'TIDY_TAG_LAYER',\n            'TIDY_TAG_STRIKE', 'CURLOPT_PROXYUSERPWD', 'TIDY_TAG_INS',\n            'CURLOPT_QUOTE', 'CURLOPT_RANDOM_FILE', 'CURLOPT_RANGE',\n            'CURLOPT_READFUNCTION', 'CURLOPT_REFERER',\n            'XML_ERROR_EXTERNAL_ENTITY_HANDLING', 'CURLOPT_RETURNTRANSFER',\n            'CURLOPT_SHARE', 'CURLOPT_SSLCERT', 'CURLOPT_KEYPASSWD',\n            'CURLOPT_SSLCERTTYPE', 'CURLOPT_SSLENGINE', 'TIDY_TAG_RTC',\n            'CURLOPT_SSLKEY', 'CURLOPT_SSLKEYTYPE', 'CURLOPT_SSL_CIPHER_LIST',\n            'TIDY_TAG_PARAM', 'CURLOPT_STDERR', 'CURLOPT_TELNETOPTIONS',\n            'TIDY_TAG_EM', 'XML_ERROR_ASYNC_ENTITY', 'TIDY_TAG_EMBED',\n            'TIDY_TAG_INPUT', 'TIDY_TAG_SUP', 'TIDY_TAG_HEAD', 'CURLOPT_URL',\n            'CURLOPT_USERAGENT', 'CURLOPT_USERPWD', 'TIDY_TAG_H2',\n            'CURLOPT_WRITEFUNCTION', 'CURLOPT_WRITEHEADER', 'TIDY_TAG_FONT',\n            'TIDY_TAG_DIR', 'XML_ERROR_MISPLACED_XML_PI', 'TIDY_TAG_COMMENT',\n            'XML_ERROR_UNKNOWN_ENCODING', 'TIDY_TAG_DIV',\n            'XML_ERROR_UNDEFINED_ENTITY', 'TIDY_TAG_CODE', 'TIDY_TAG_FRAME',\n            'TIDY_TAG_FRAMESET', 'TIDY_TAG_H1', 'TIDY_TAG_COLGROUP',\n            'TIDY_TAG_DFN', 'TIDY_TAG_DD', 'TIDY_TAG_KBD', 'TIDY_TAG_ISINDEX',\n            'TIDY_TAG_KEYGEN', 'TIDY_TAG_LEGEND', 'TIDY_TAG_FIELDSET',\n            'TIDY_TAG_I', 'TIDY_TAG_COL', 'CURLINFO_CONNECT_TIME',\n            'CURLINFO_CONTENT_LENGTH_DOWNLOAD', 'CURLINFO_CONTENT_LENGTH_UPLOAD',\n            'CURLINFO_CONTENT_TYPE', 'CURLINFO_EFFECTIVE_URL',\n            'CURLINFO_FILETIME', 'CURLINFO_HEADER_SIZE', 'CURLINFO_RESPONSE_CODE',\n            'CURLINFO_NAMELOOKUP_TIME', 'CURLINFO_PRETRANSFER_TIME',\n            'CURLINFO_PRIVATE', 'CURLINFO_REDIRECT_COUNT',\n            'CURLINFO_REDIRECT_TIME', 'CURLINFO_REQUEST_SIZE',\n            'CURLINFO_SIZE_DOWNLOAD', 'CURLINFO_SIZE_UPLOAD',\n            'CURLINFO_SPEED_DOWNLOAD', 'CURLINFO_SPEED_UPLOAD',\n            'CURLINFO_SSL_VERIFYRESULT', 'CURLINFO_STARTTRANSFER_TIME',\n            'CURLINFO_TOTAL_TIME', 'AI_NUMERICSERV', 'TIDY_TAG_TABLE',\n            'CURLAUTH_ANY', 'CURLAUTH_ANYSAFE', 'CURLINFO_HTTP_CONNECTCODE',\n            'TIDY_TAG_TEXTAREA', 'TIDY_TAG_TFOOT', 'TIDY_TAG_LISTING',\n            'TIDY_TAG_LINK', 'CURLINFO_HTTPAUTH_AVAIL',\n            'CURLINFO_PROXYAUTH_AVAIL', 'TIDY_TAG_TH', 'TIDY_TAG_THEAD',\n            'TIDY_TAG_TITLE', 'TIDY_TAG_VAR', 'CURLOPT_NETRC_FILE',\n            'TIDY_TAG_XMP', 'XSD_ENTITY', 'CURLOPT_FTP_ACCOUNT',\n            'CURLINFO_OS_ERRNO', 'CURLINFO_NUM_CONNECTS', 'CURLINFO_SSL_ENGINES',\n            'CURLINFO_COOKIELIST', 'CURLOPT_COOKIELIST', 'TIDY_TAG_HEADER',\n            'TIDY_TAG_HGROUP', 'TIDY_TAG_MAIN', 'TIDY_TAG_METER', 'TIDY_TAG_MARK',\n            'TIDY_TAG_MENUITEM', 'CURLINFO_FTP_ENTRY_PATH',\n            'CURLOPT_FTP_ALTERNATIVE_TO_USER', 'CURLOPT_MAX_RECV_SPEED_LARGE',\n            'CURLOPT_MAX_SEND_SPEED_LARGE', 'TIDY_TAG_OL', 'TIDY_TAG_TRACK',\n            'TIDY_TAG_OPTION', 'CURLOPT_FTP_SSL_CCC', 'TIDY_TAG_VIDEO',\n            'CURLOPT_SSH_PRIVATE_KEYFILE', 'CURLOPT_SSH_PUBLIC_KEYFILE',\n            'INTL_MAX_LOCALE_LEN', 'CURLOPT_HTTP_CONTENT_DECODING',\n            'CURLOPT_HTTP_TRANSFER_DECODING', 'CURLOPT_TIMEOUT_MS', 'LOG_LOCAL4',\n            'CURLOPT_NEW_FILE_PERMS', 'CURLOPT_SSH_HOST_PUBLIC_KEY_MD5',\n            'CURLOPT_PROXY_TRANSFER_MODE', 'CURL_WRITEFUNC_PAUSE',\n            'CURLINFO_REDIRECT_URL', 'CURLINFO_APPCONNECT_TIME',\n            'CURLINFO_PRIMARY_IP', 'CURLOPT_ADDRESS_SCOPE', 'CURLOPT_CRLFILE',\n            'CURLOPT_ISSUERCERT', 'CURLINFO_CERTINFO', 'CURLOPT_CERTINFO',\n            'CURLOPT_PASSWORD', 'CURLOPT_POSTREDIR', 'CURLOPT_PROXYPASSWORD',\n            'CURLOPT_PROXYUSERNAME', 'CURLOPT_USERNAME',\n            'CURLINFO_CONDITION_UNMET', 'CURLOPT_NOPROXY', 'CURLOPT_PROTOCOLS',\n            'CURLOPT_REDIR_PROTOCOLS', 'CURLOPT_SOCKS5_GSSAPI_NEC',\n            'CURLOPT_SOCKS5_GSSAPI_SERVICE', 'CURLOPT_TFTP_BLKSIZE',\n            'CURLOPT_SSH_KNOWNHOSTS', 'CURLINFO_RTSP_CLIENT_CSEQ',\n            'CURLINFO_RTSP_CSEQ_RECV', 'CURLINFO_RTSP_SERVER_CSEQ',\n            'CURLINFO_RTSP_SESSION_ID', 'CURLOPT_FTP_USE_PRET',\n            'CURLOPT_MAIL_FROM', 'CURLOPT_MAIL_RCPT', 'CURLOPT_RTSP_CLIENT_CSEQ',\n            'CURLOPT_RTSP_REQUEST', 'CURLOPT_RTSP_SERVER_CSEQ',\n            'CURLOPT_RTSP_SESSION_ID', 'CURLOPT_RTSP_STREAM_URI',\n            'CURLOPT_RTSP_TRANSPORT', 'MYSQLI_GROUP_FLAG',\n            'FILTER_FLAG_PATH_REQUIRED', 'CURL_VERSION_GSSAPI',\n            'CURLINFO_LOCAL_IP', 'CURLINFO_LOCAL_PORT', 'CURLINFO_PRIMARY_PORT',\n            'CURLOPT_FNMATCH_FUNCTION', 'CURLOPT_WILDCARDMATCH',\n            'MYSQLI_REFRESH_BACKUP_LOG', 'FILTER_FLAG_NO_PRIV_RANGE',\n            'JSON_INVALID_UTF8_IGNORE',\n            'SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_INTERACTIVE',\n            'SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_OPSLIMIT_SENSITIVE',\n            'CURLAUTH_ONLY', 'CURLOPT_RESOLVE', 'CURLOPT_TLSAUTH_PASSWORD',\n            'CURLOPT_TLSAUTH_TYPE', 'CURLOPT_TLSAUTH_USERNAME',\n            'CURLOPT_TRANSFER_ENCODING', 'CURLOPT_GSSAPI_DELEGATION',\n            'CURLOPT_ACCEPTTIMEOUT_MS', 'CURLOPT_DNS_SERVERS',\n            'CURLOPT_MAIL_AUTH', 'CURLOPT_SSL_OPTIONS', 'CURLOPT_TCP_KEEPALIVE',\n            'CURLOPT_TCP_KEEPIDLE', 'CURLOPT_TCP_KEEPINTVL',\n            'CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE',\n            'CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE', 'CURLOPT_SASL_IR',\n            'CURLOPT_DNS_INTERFACE', 'CURLOPT_DNS_LOCAL_IP4',\n            'CURLOPT_DNS_LOCAL_IP6', 'CURLOPT_XOAUTH2_BEARER',\n            'CURLOPT_LOGIN_OPTIONS', 'CURLOPT_EXPECT_100_TIMEOUT_MS',\n            'CURLOPT_SSL_ENABLE_ALPN', 'CURLOPT_SSL_ENABLE_NPN',\n            'CURLOPT_HEADEROPT', 'CURLOPT_PROXYHEADER', 'CURLOPT_PINNEDPUBLICKEY',\n            'CURLOPT_UNIX_SOCKET_PATH',\n            'SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE', 'DNS_AAAA',\n            'CURLOPT_SSL_VERIFYSTATUS', 'CURLOPT_PATH_AS_IS',\n            'CURLOPT_SSL_FALSESTART', 'CURLOPT_PIPEWAIT',\n            'CURLOPT_PROXY_SERVICE_NAME', 'CURLOPT_SERVICE_NAME',\n            'CURLOPT_DEFAULT_PROTOCOL', 'CURLOPT_STREAM_WEIGHT',\n            'CURLMOPT_PUSHFUNCTION', 'CURLOPT_TFTP_NO_OPTIONS',\n            'CURLOPT_CONNECT_TO', 'CURLOPT_TCP_FASTOPEN', 'CURLINFO_HTTP_VERSION',\n            'MYSQLI_TYPE_JSON', 'CURLINFO_PROTOCOL',\n            'CURLINFO_PROXY_SSL_VERIFYRESULT', 'CURLINFO_SCHEME',\n            'CURLOPT_PRE_PROXY', 'CURLOPT_PROXY_CAINFO', 'CURLOPT_PROXY_CAPATH',\n            'CURLOPT_PROXY_CRLFILE', 'CURLOPT_PROXY_KEYPASSWD',\n            'CURLOPT_PROXY_PINNEDPUBLICKEY', 'CURLOPT_PROXY_SSL_CIPHER_LIST',\n            'T_INCLUDE_ONCE', 'MYSQLI_TYPE_TINY_BLOB', 'MYSQLI_TYPE_SET',\n            'CURLOPT_PROXY_SSLCERT', 'CURLOPT_PROXY_SSLCERTTYPE',\n            'CURLOPT_PROXY_SSLKEY', 'CURLOPT_PROXY_SSLKEYTYPE',\n            'MYSQLI_TYPE_MEDIUM_BLOB', 'CURLOPT_PROXY_TLSAUTH_PASSWORD',\n            'CURLOPT_PROXY_TLSAUTH_TYPE', 'CURLOPT_PROXY_TLSAUTH_USERNAME',\n            'CURLOPT_ABSTRACT_UNIX_SOCKET', 'CURL_SSLVERSION_MAX_TLSv1_1',\n            'CURL_SSLVERSION_MAX_TLSv1_2', 'CURL_SSLVERSION_MAX_TLSv1_3',\n            'T_LOGICAL_XOR', 'CURLINFO_CONTENT_LENGTH_DOWNLOAD_T',\n            'CURLINFO_CONTENT_LENGTH_UPLOAD_T', 'CURLINFO_SIZE_DOWNLOAD_T',\n            'CURLINFO_SIZE_UPLOAD_T', 'CURLINFO_SPEED_DOWNLOAD_T',\n            'CURLINFO_SPEED_UPLOAD_T', 'CURLOPT_REQUEST_TARGET', 'T_PRINT',\n            'T_YIELD', 'CURLINFO_FILETIME_T', 'T_PLUS_EQUAL',\n            'CURLOPT_TIMEVALUE_LARGE', 'T_CONCAT_EQUAL', 'T_DIV_EQUAL',\n            'CURLINFO_APPCONNECT_TIME_T', 'CURLINFO_CONNECT_TIME_T',\n            'CURLINFO_NAMELOOKUP_TIME_T', 'CURLINFO_PRETRANSFER_TIME_T',\n            'CURLINFO_REDIRECT_TIME_T', 'CURLINFO_STARTTRANSFER_TIME_T',\n            'CURLINFO_TOTAL_TIME_T', 'T_OR_EQUAL', 'CURLOPT_PROXY_TLS13_CIPHERS',\n            'CURLOPT_TLS13_CIPHERS', 'T_BOOLEAN_OR', 'FILEINFO_MIME',\n            'FILTER_VALIDATE_INT', 'T_THROW', 'FILTER_VALIDATE_FLOAT',\n            'T_MINUS_EQUAL', 'T_AND_EQUAL', 'T_MUL_EQUAL', 'T_MOD_EQUAL',\n            'FILTER_UNSAFE_RAW', 'FILTER_SANITIZE_STRIPPED',\n            'FILTER_SANITIZE_ENCODED', 'FILTER_SANITIZE_SPECIAL_CHARS',\n            'FILTER_SANITIZE_FULL_SPECIAL_CHARS', 'FILTER_SANITIZE_EMAIL',\n            'FILTER_SANITIZE_URL', 'FILTER_SANITIZE_NUMBER_INT',\n            'FILTER_SANITIZE_NUMBER_FLOAT', 'FILTER_SANITIZE_ADD_SLASHES',\n            'GD_VERSION', 'GD_EXTRA_VERSION', 'GMP_VERSION', 'ICONV_IMPL',\n            'ICONV_VERSION', 'INTL_ICU_DATA_VERSION', 'U_ERROR_WARNING_START',\n            'U_USING_DEFAULT_WARNING', 'U_SAFECLONE_ALLOCATED_WARNING',\n            'U_STATE_OLD_WARNING', 'U_STRING_NOT_TERMINATED_WARNING',\n            'U_SORT_KEY_TOO_SHORT_WARNING', 'U_AMBIGUOUS_ALIAS_WARNING',\n            'U_DIFFERENT_UCA_VERSION', 'U_ERROR_WARNING_LIMIT',\n            'U_MALFORMED_RULE', 'U_MALFORMED_SET', 'U_MALFORMED_SYMBOL_REFERENCE',\n            'U_MALFORMED_UNICODE_ESCAPE', 'U_MALFORMED_VARIABLE_DEFINITION',\n            'U_MALFORMED_VARIABLE_REFERENCE', 'U_MISMATCHED_SEGMENT_DELIMITERS',\n            'U_MISPLACED_ANCHOR_START', 'U_MISPLACED_CURSOR_OFFSET',\n            'U_MISPLACED_QUANTIFIER', 'U_MISSING_OPERATOR',\n            'U_MISSING_SEGMENT_CLOSE', 'U_MULTIPLE_ANTE_CONTEXTS',\n            'U_MULTIPLE_CURSORS', 'U_MULTIPLE_POST_CONTEXTS',\n            'U_TRAILING_BACKSLASH', 'U_UNDEFINED_SEGMENT_REFERENCE',\n            'U_UNDEFINED_VARIABLE', 'U_UNQUOTED_SPECIAL', 'U_UNTERMINATED_QUOTE',\n            'U_RULE_MASK_ERROR', 'U_MISPLACED_COMPOUND_FILTER',\n            'U_MULTIPLE_COMPOUND_FILTERS', 'U_INVALID_RBT_SYNTAX',\n            'U_INVALID_PROPERTY_PATTERN', 'U_MALFORMED_PRAGMA',\n            'U_UNCLOSED_SEGMENT', 'U_ILLEGAL_CHAR_IN_SEGMENT',\n            'U_VARIABLE_RANGE_EXHAUSTED', 'U_VARIABLE_RANGE_OVERLAP',\n            'U_ILLEGAL_CHARACTER', 'U_INTERNAL_TRANSLITERATOR_ERROR',\n            'U_INVALID_ID', 'U_INVALID_FUNCTION', 'U_PARSE_ERROR_LIMIT',\n            'U_FMT_PARSE_ERROR_START', 'U_MULTIPLE_DECIMAL_SEPERATORS',\n            'U_MULTIPLE_EXPONENTIAL_SYMBOLS', 'U_MALFORMED_EXPONENTIAL_PATTERN',\n            'U_MULTIPLE_PERCENT_SYMBOLS', 'U_MULTIPLE_PERMILL_SYMBOLS',\n            'U_MULTIPLE_PAD_SPECIFIERS', 'U_PATTERN_SYNTAX_ERROR',\n            'U_ILLEGAL_PAD_POSITION', 'U_UNMATCHED_BRACES',\n            'U_UNSUPPORTED_PROPERTY', 'U_UNSUPPORTED_ATTRIBUTE',\n            'U_FMT_PARSE_ERROR_LIMIT', 'U_BRK_ERROR_START',\n            'U_BRK_HEX_DIGITS_EXPECTED', 'U_BRK_SEMICOLON_EXPECTED',\n            'U_BRK_RULE_SYNTAX', 'U_BRK_UNCLOSED_SET', 'U_BRK_ASSIGN_ERROR',\n            'U_BRK_VARIABLE_REDFINITION', 'U_BRK_MISMATCHED_PAREN',\n            'U_BRK_NEW_LINE_IN_QUOTED_STRING', 'U_BRK_UNDEFINED_VARIABLE',\n            'U_BRK_INIT_ERROR', 'U_BRK_RULE_EMPTY_SET',\n            'U_BRK_UNRECOGNIZED_OPTION', 'U_BRK_MALFORMED_RULE_TAG',\n            'U_BRK_ERROR_LIMIT', 'U_REGEX_ERROR_START', 'U_REGEX_RULE_SYNTAX',\n            'U_REGEX_INVALID_STATE', 'U_REGEX_BAD_ESCAPE_SEQUENCE',\n            'U_REGEX_PROPERTY_SYNTAX', 'U_REGEX_UNIMPLEMENTED',\n            'U_REGEX_MISMATCHED_PAREN', 'U_REGEX_NUMBER_TOO_BIG',\n            'U_REGEX_BAD_INTERVAL', 'U_REGEX_MAX_LT_MIN',\n            'U_REGEX_INVALID_BACK_REF', 'U_REGEX_INVALID_FLAG',\n            'U_REGEX_LOOK_BEHIND_LIMIT', 'U_REGEX_SET_CONTAINS_STRING',\n            'U_REGEX_ERROR_LIMIT', 'U_STRINGPREP_PROHIBITED_ERROR',\n            'U_STRINGPREP_UNASSIGNED_ERROR', 'U_STRINGPREP_CHECK_BIDI_ERROR',\n            'U_IDNA_STD3_ASCII_RULES_ERROR', 'U_IDNA_ACE_PREFIX_ERROR',\n            'U_IDNA_VERIFICATION_ERROR', 'U_IDNA_LABEL_TOO_LONG_ERROR',\n            'U_IDNA_ZERO_LENGTH_LABEL_ERROR', 'U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR',\n            'U_IDNA_ERROR_LIMIT', 'U_ERROR_LIMIT', 'LDAP_MODIFY_BATCH_ATTRIB',\n            'LDAP_MODIFY_BATCH_MODTYPE', 'LDAP_MODIFY_BATCH_VALUES',\n            'LDAP_OPT_NETWORK_TIMEOUT', 'LDAP_OPT_TIMEOUT',\n            'LDAP_OPT_DEBUG_LEVEL', 'LDAP_OPT_X_SASL_MECH',\n            'LDAP_OPT_X_SASL_REALM', 'LDAP_OPT_X_SASL_AUTHCID',\n            'LDAP_OPT_X_SASL_AUTHZID', 'LDAP_OPT_X_SASL_NOCANON',\n            'LDAP_OPT_X_SASL_USERNAME', 'LDAP_OPT_X_TLS_REQUIRE_CERT',\n            'LDAP_OPT_X_TLS_CACERTDIR', 'LDAP_OPT_X_TLS_CACERTFILE',\n            'LDAP_OPT_X_TLS_CERTFILE', 'LDAP_OPT_X_TLS_CIPHER_SUITE',\n            'LDAP_OPT_X_TLS_KEYFILE', 'LDAP_OPT_X_TLS_RANDOM_FILE',\n            'LDAP_OPT_X_TLS_CRLCHECK', 'LDAP_OPT_X_TLS_DHFILE',\n            'LDAP_OPT_X_TLS_CRLFILE', 'LDAP_OPT_X_TLS_PROTOCOL_MIN',\n            'LDAP_OPT_X_TLS_PROTOCOL_SSL3', 'LDAP_OPT_X_TLS_PROTOCOL_TLS1_0',\n            'LDAP_OPT_X_TLS_PROTOCOL_TLS1_1', 'LDAP_OPT_X_TLS_PROTOCOL_TLS1_2',\n            'LDAP_OPT_X_TLS_PACKAGE', 'LDAP_OPT_X_KEEPALIVE_IDLE',\n            'LDAP_OPT_X_KEEPALIVE_PROBES', 'LDAP_OPT_X_KEEPALIVE_INTERVAL',\n            'LDAP_EXOP_START_TLS', 'LDAP_EXOP_MODIFY_PASSWD', 'LDAP_EXOP_REFRESH',\n            'LDAP_EXOP_WHO_AM_I', 'LDAP_EXOP_TURN', 'LDAP_CONTROL_MANAGEDSAIT',\n            'LDAP_CONTROL_PROXY_AUTHZ', 'LDAP_CONTROL_SUBENTRIES',\n            'LDAP_CONTROL_VALUESRETURNFILTER', 'LDAP_CONTROL_ASSERT',\n            'LDAP_CONTROL_PRE_READ', 'LDAP_CONTROL_POST_READ',\n            'LDAP_CONTROL_SORTREQUEST', 'LDAP_CONTROL_SORTRESPONSE',\n            'LDAP_CONTROL_PAGEDRESULTS', 'LDAP_CONTROL_AUTHZID_REQUEST',\n            'LDAP_CONTROL_AUTHZID_RESPONSE', 'LDAP_CONTROL_SYNC',\n            'LDAP_CONTROL_SYNC_STATE', 'LDAP_CONTROL_SYNC_DONE',\n            'LDAP_CONTROL_DONTUSECOPY', 'LDAP_CONTROL_PASSWORDPOLICYRESPONSE',\n            'LDAP_CONTROL_X_INCREMENTAL_VALUES', 'LDAP_CONTROL_X_DOMAIN_SCOPE',\n            'LDAP_CONTROL_X_PERMISSIVE_MODIFY', 'LDAP_CONTROL_X_SEARCH_OPTIONS',\n            'LDAP_CONTROL_X_TREE_DELETE', 'LDAP_CONTROL_X_EXTENDED_DN',\n            'LDAP_CONTROL_VLVREQUEST', 'LDAP_CONTROL_VLVRESPONSE',\n            'MB_ONIGURUMA_VERSION', 'CREDITS_ALL', 'TIDY_TAG_CANVAS',\n            'SOCKET_EHOSTUNREACH', 'TIDY_TAG_BDI', 'TIDY_TAG_WBR',\n            'MYSQLI_REPORT_ALL', 'PASSWORD_DEFAULT', 'PASSWORD_BCRYPT',\n            'PASSWORD_ARGON2I', 'PASSWORD_ARGON2ID', 'PASSWORD_ARGON2_PROVIDER',\n            'TIDY_TAG_ARTICLE', 'PATH_SEPARATOR',\n            'SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_MEMLIMIT_SENSITIVE',\n            'GLOB_AVAILABLE_FLAGS', 'TIDY_TAG_NOFRAMES', 'TIDY_TAG_PROGRESS',\n            'LOG_LOCAL3', 'LOG_LOCAL5', 'LOG_LOCAL6', 'LOG_LOCAL7',\n            'SODIUM_CRYPTO_PWHASH_MEMLIMIT_MODERATE', 'DNS_ALL', 'ODBC_TYPE',\n            'SQL_BIT', 'TIDY_TAG_SAMP', 'SQL_WCHAR', 'SQL_WVARCHAR',\n            'SQL_WLONGVARCHAR', 'PGSQL_LIBPQ_VERSION_STR', 'TIDY_TAG_PLAINTEXT',\n            'TIDY_TAG_MENU', 'TIDY_TAG_RBC', 'TIDY_TAG_NOBR', 'TIDY_TAG_OBJECT',\n            'PGSQL_DIAG_SOURCE_FUNCTION', 'TIDY_TAG_TR', 'TIDY_TAG_TT',\n            'TIDY_TAG_SPAN', 'TIDY_TAG_RB', 'POSIX_S_IFBLK', 'POSIX_S_IFSOCK',\n            'POSIX_RLIMIT_INFINITY', 'READLINE_LIB',\n            'MYSQLI_OPT_NET_CMD_BUFFER_SIZE', 'MYSQLI_OPT_NET_READ_BUFFER_SIZE',\n            'MYSQLI_OPT_INT_AND_FLOAT_NATIVE', 'MYSQLI_TYPE_INTERVAL',\n            'MYSQLI_TYPE_LONG_BLOB', 'MYSQLI_TYPE_BLOB', 'MYSQLI_TYPE_VAR_STRING',\n            'MYSQLI_TYPE_STRING', 'MYSQLI_TYPE_NEWDECIMAL', 'SOAP_FUNCTIONS_ALL',\n            'UNKNOWN_TYPE', 'TIDY_TAG_STRONG', 'TIDY_TAG_STYLE', 'TIDY_TAG_SUB',\n            'TIDY_TAG_TBODY', 'TIDY_TAG_TD', 'TIDY_TAG_U', 'TIDY_TAG_UL',\n            'XSD_LANGUAGE', 'TIDY_TAG_ASIDE', 'TIDY_TAG_AUDIO',\n            'TIDY_TAG_DATALIST', 'TIDY_TAG_DETAILS', 'TIDY_TAG_DIALOG',\n            'TIDY_TAG_FIGCAPTION', 'TIDY_TAG_FIGURE', 'TIDY_TAG_FOOTER',\n            'TIDY_TAG_NAV', 'TIDY_TAG_OUTPUT', 'TIDY_TAG_SECTION',\n            'TIDY_TAG_SUMMARY', 'APACHE_MAP', 'T_OBJECT_CAST', 'T_ARRAY_CAST',\n            'T_BAD_CHARACTER', 'XSD_NAMESPACE', 'XSD_1999_NAMESPACE', 'SO_SNDBUF',\n            'SO_RCVBUF', 'SO_SNDLOWAT', 'SO_RCVLOWAT', 'SO_SNDTIMEO',\n            'SO_RCVTIMEO', 'SO_TYPE', 'SO_ERROR', 'SOL_SOCKET',\n            'TIDY_TAG_MARQUEE', 'TIDY_TAG_SERVLET', 'TIDY_TAG_SELECT',\n            'TIDY_TAG_SCRIPT', 'SODIUM_LIBRARY_VERSION',\n            'SODIUM_CRYPTO_SECRETSTREAM_XCHACHA20POLY1305_MESSAGEBYTES_MAX',\n            'SODIUM_CRYPTO_PWHASH_STRPREFIX',\n            'SODIUM_CRYPTO_PWHASH_SCRYPTSALSA208SHA256_STRPREFIX',\n            'TIDY_TAG_NOLAYER', 'TIDY_TAG_RP', 'TIDY_TAG_RT', 'TIDY_TAG_SOURCE',\n            'TIDY_TAG_TEMPLATE', 'TIDY_TAG_TIME', 'T_INCLUDE', 'T_REQUIRE',\n            'T_REQUIRE_ONCE', 'T_LOGICAL_OR', 'T_LOGICAL_AND', 'T_DOUBLE_ARROW',\n            'T_YIELD_FROM', 'T_XOR_EQUAL', 'T_SL_EQUAL', 'T_SR_EQUAL',\n            'T_POW_EQUAL', 'T_COALESCE_EQUAL', 'T_COALESCE', 'T_BOOLEAN_AND',\n            'T_IS_EQUAL', 'T_IS_NOT_EQUAL', 'T_IS_IDENTICAL',\n            'T_IS_NOT_IDENTICAL', 'T_SPACESHIP', 'T_IS_SMALLER_OR_EQUAL',\n            'T_IS_GREATER_OR_EQUAL', 'T_SL', 'T_SR', 'T_INSTANCEOF', 'T_INT_CAST',\n            'T_DOUBLE_CAST', 'T_STRING_CAST', 'T_BOOL_CAST', 'T_UNSET_CAST',\n            'T_POW', 'T_CLONE', 'T_ELSEIF', 'T_ELSE', 'T_LNUMBER', 'T_DNUMBER',\n            'T_STRING', 'T_NAME_FULLY_QUALIFIED', 'T_NAME_RELATIVE',\n            'T_NAME_QUALIFIED', 'T_VARIABLE', 'T_INLINE_HTML',\n            'T_ENCAPSED_AND_WHITESPACE', 'T_CONSTANT_ENCAPSED_STRING',\n            'T_STRING_VARNAME', 'T_NUM_STRING', 'T_EVAL', 'T_NEW', 'T_EXIT',\n            'T_IF', 'T_ENDIF', 'T_ECHO', 'T_DO', 'T_WHILE', 'T_ENDWHILE', 'T_FOR',\n            'T_ENDFOR', 'T_FOREACH', 'T_ENDFOREACH', 'T_DECLARE', 'T_ENDDECLARE',\n            'T_AS', 'T_SWITCH', 'T_ENDSWITCH', 'T_CASE', 'T_DEFAULT', 'T_MATCH',\n            'T_BREAK', 'T_CONTINUE', 'T_GOTO', 'T_FUNCTION', 'T_FN', 'T_CONST',\n            'T_RETURN', 'T_TRY', 'T_CATCH', 'T_FINALLY', 'T_USE', 'T_INSTEADOF',\n            'T_GLOBAL', 'T_STATIC', 'T_ABSTRACT', 'T_FINAL', 'T_PRIVATE',\n            'T_PROTECTED', 'T_PUBLIC', 'T_VAR', 'T_UNSET', 'T_ISSET', 'T_EMPTY',\n            'T_HALT_COMPILER', 'T_CLASS', 'T_TRAIT', 'T_INTERFACE', 'T_EXTENDS',\n            'T_IMPLEMENTS', 'T_NAMESPACE', 'T_LIST', 'T_ARRAY', 'T_CALLABLE',\n            'T_LINE', 'T_FILE', 'T_DIR', 'T_CLASS_C', 'T_TRAIT_C', 'T_METHOD_C',\n            'T_FUNC_C', 'T_NS_C', 'T_ATTRIBUTE', 'T_INC', 'T_DEC',\n            'T_OBJECT_OPERATOR', 'T_NULLSAFE_OBJECT_OPERATOR', 'T_COMMENT',\n            'T_DOC_COMMENT', 'T_OPEN_TAG', 'T_OPEN_TAG_WITH_ECHO', 'T_CLOSE_TAG',\n            'T_WHITESPACE', 'T_START_HEREDOC', 'T_END_HEREDOC',\n            'T_DOLLAR_OPEN_CURLY_BRACES', 'T_CURLY_OPEN', 'T_DOUBLE_COLON',\n            'T_NS_SEPARATOR', 'T_ELLIPSIS', 'XML_SAX_IMPL', 'LIBXSLT_VERSION',\n            'LIBEXSLT_DOTTED_VERSION', 'LIBEXSLT_VERSION', 'YAML_NULL_TAG',\n            'YAML_BOOL_TAG', 'YAML_STR_TAG', 'YAML_INT_TAG', 'YAML_FLOAT_TAG',\n            'YAML_TIMESTAMP_TAG', 'YAML_SEQ_TAG', 'YAML_MAP_TAG', 'YAML_PHP_TAG',\n            'YAML_MERGE_TAG', 'YAML_BINARY_TAG'\n            )\n        ),\n    'SYMBOLS' => array(\n        1 => array(\n            '<'.'%', '<'.'%=', '%'.'>', '<'.'?', '<'.'?=', '?'.'>'\n            ),\n        0 => array(\n            '(', ')', '[', ']', '{', '}',\n            '!', '@', '%', '&', '|', '/',\n            '<', '>',\n            '=', '-', '+', '*',\n            '.', ':', ',', ';'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #990000;',\n            4 => 'color: #009900; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #666666; font-style: italic;',\n            3 => 'color: #0000cc; font-style: italic;',\n            4 => 'color: #009933; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #660099; font-weight: bold;',\n            3 => 'color: #660099; font-weight: bold;',\n            4 => 'color: #006699; font-weight: bold;',\n            5 => 'color: #006699; font-weight: bold; font-style: italic;',\n            6 => 'color: #009933; font-weight: bold;',\n            'HARD' => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;',\n            'HARD' => 'color: #0000ff;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            ),\n        'METHODS' => array(\n            1 => 'color: #004000;',\n            2 => 'color: #004000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;',\n            1 => 'color: #000000; font-weight: bold;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #000088;'\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            3 => '',\n            4 => '',\n            5 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://www.php.net/{FNAMEL}',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '-&gt;',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        //Variables\n        0 => \"[\\\\$]+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*\"\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        0 => array(\n            '<'.'?php' => '?'.'>'\n            ),\n        1 => array(\n            '<'.'?' => '?'.'>'\n            ),\n        2 => array(\n            '<'.'%' => '%'.'>'\n            ),\n        3 => array(\n            '<script language=\"php\">' => '</script>'\n            ),\n        4 => \"/(?P<start><\\\\?(?>php\\b)?)(?:\".\n            \"(?>[^\\\"'?\\\\/<]+)|\".\n            \"\\\\?(?!>)|\".\n            \"(?>'(?>[^'\\\\\\\\]|\\\\\\\\'|\\\\\\\\\\\\\\|\\\\\\\\)*')|\".\n            \"(?>\\\"(?>[^\\\"\\\\\\\\]|\\\\\\\\\\\"|\\\\\\\\\\\\\\\\|\\\\\\\\)*\\\")|\".\n            \"(?>\\\\/\\\\*(?>[^\\\\*]|(?!\\\\*\\\\/)\\\\*)*\\\\*\\\\/)|\".\n            \"\\\\/\\\\/(?>.*?(?:\\\\?>|$))|\".\n            \"#(?>.*?(?:\\\\?>|$))|\".\n            \"\\\\/(?=[^*\\\\/])|\".\n            \"<(?!<<)|\".\n            \"<<<(?P<phpdoc>\\w+)\\s.*?\\s\\k<phpdoc>\".\n            \")*?(?P<end>\\\\?>|\\Z)/sm\",\n        5 => \"/(?P<start><%)(?:\".\n            \"(?>[^\\\"'%\\\\/<]+)|\".\n            \"%(?!>)|\".\n            \"(?>'(?>[^'\\\\\\\\]|\\\\\\\\'|\\\\\\\\\\\\\\|\\\\\\\\)*')|\".\n            \"(?>\\\"(?>[^\\\\\\\"\\\\\\\\]|\\\\\\\\\\\"|\\\\\\\\\\\\\\\\|\\\\\\\\)*\\\")|\".\n            \"(?>\\\\/\\\\*(?>[^\\\\*]|(?!\\\\*\\\\/)\\\\*)*\\\\*\\\\/)|\".\n            \"\\\\/\\\\/(?>.*?(?:%>|$))|\".\n            \"#(?>.*?(?:%>|$))|\".\n            \"\\\\/(?=[^*\\\\/])|\".\n            \"<(?!<<)|\".\n            \"<<<(?P<phpdoc>\\w+)\\s.*?\\s\\k<phpdoc>\".\n            \")*?(?P<end>%>|\\Z)/sm\",\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/pic16.php",
    "content": "<?php\n/*************************************************************************************\n * pic16.php\n * -------\n * Author: Phil Mattison (mattison@ohmikron.com)\n * Copyright: (c) 2008 Ohmikron Corp. (http://www.ohmikron.com/)\n * Release Version: 1.0.9.1\n * Date Started: 2008/07/30\n *\n * PIC16 Assembler language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/07/30 (1.0.8)\n *   -  First Release\n *\n * TODO (updated 2008/07/30)\n * -------------------------\n *\n *************************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'PIC16',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        /*Instructions*/\n        1 => array(\n            'addcf','adddcf','addlw','addwf','andlw','andwf','bc','bcf','bdc',\n            'bnc','bndc','bnz','bsf','btfsc','btfss','bz','call','clrc','clrdc',\n            'clrf','clrw','clrwdt','clrz','comf','decf','goto','incf','incfsz',\n            'iorlw','iorwf','lcall','lgoto','movf','movfw','movlw','movwf',\n            'option','negf','nop','retfie','retlw','return','rlf','rrf','setc',\n            'setdc','setz','skpc','skpdc','skpnc','skpndc','skpnz','skpz',\n            'sleep','subcf','subdcf','sublw','subwf','swapf','tris','tstf',\n            'xorlw','xorwf'\n            ),\n        /*Registers*/\n        2 => array(\n            'INDF','TMR0','OPTION','PCL','STATUS','FSR','PORTA','PORTB','PORTC',\n            'PORTD','PORTE','PORTF','TRISA','TRISB','TRISC','TRISD','TRISE',\n            'TRISF','PCLATH','INTCON','PIR1','PIE1','PCON','CMCON','VRCON',\n            'F','W'\n            ),\n        /*Directives*/\n        3 => array(\n            '_BADRAM','BANKISEL','BANKSEL','CBLOCK','CODE','_CONFIG','CONSTANT',\n            'DA','DATA','DB','DE','#DEFINE','DT','DW','ELSE','END','ENDC',\n            'ENDIF','ENDM','ENDW','EQU','ERROR','ERRORLEVEL','EXITM','EXPAND',\n            'EXTERN','FILL','GLOBAL','IDATA','_IDLOCS','IF','IFDEF','IFNDEF',\n            'INCLUDE','#INCLUDE','LIST','LOCAL','MACRO','_MAXRAM','MESSG',\n            'NOEXPAND','NOLIST','ORG','PAGE','PAGESEL','PROCESSOR','RADIX',\n            'RES','SET','SPACE','SUBTITLE','TITLE','UDATA','UDATA_ACS',\n            'UDATA_OVR','UDATA_SHR','#UNDEFINE','VARIABLE','WHILE',\n            'D','H','O','B','A'\n            ),\n        ),\n    'SYMBOLS' => array('=','.',',',':'),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000a0; font-weight: bold;',\n            2 => 'color: #aa3300; font-weight: bold;',\n            3 => 'color: #0000ff;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #00a000;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff7700;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff7700;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #7777ff;'\n            ),\n        'REGEXPS' => array(),\n        'SCRIPT' => array()\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC |\n        GESHI_NUMBER_BIN_SUFFIX |\n        GESHI_NUMBER_HEX_PREFIX |\n        GESHI_NUMBER_HEX_SUFFIX,\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"a-zA-Z0-9\\$_\\|\\#>|^\",\n            'DISALLOWED_AFTER' => \"a-zA-Z0-9_<\\|%\"\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/pike.php",
    "content": "<?php\n/*************************************************************************************\n * pike.php\n * --------\n * Author: Rick E. (codeblock@eighthbit.net)\n * Copyright: (c) 2009 Rick E.\n * Release Version: 1.0.9.1\n * Date Started: 2009/12/10\n *\n * Pike language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009/12/25 (1.0.8.6)\n *  -  First Release\n *\n * TODO (updated 2009/12/25)\n * -------------------------\n *\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Pike',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'goto', 'break', 'continue', 'return', 'case', 'default', 'if',\n            'else', 'switch', 'while', 'foreach', 'do', 'for', 'gauge',\n            'destruct', 'lambda', 'inherit', 'import', 'typeof', 'catch',\n            'inline', 'nomask', 'private', 'protected', 'public', 'static'\n            )\n        ),\n    'SYMBOLS' => array(\n        1 => array(\n            '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '%', '=', '!', '&', '|', '?', ';'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;',\n            ),\n        'METHODS' => array(\n            0 => 'color: #004000;'\n            ),\n        'SYMBOLS' => array(\n            1 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(),\n        'SCRIPT' => array()\n        ),\n    'URLS' => array(1 => ''),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(1 => '.'),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/pixelbender.php",
    "content": "<?php\n/*************************************************************************************\n * pixelbender.php\n * ----------------\n * Author: Richard Olsson (r@richardolsson.se)\n * Copyright: (c) 2008 Richard Olsson (richardolsson.se)\n * Release Version: 1.0.9.1\n * Date Started: 2008/11/16\n *\n * Pixel Bender 1.0 language file for GeSHi.\n *\n *\n * Please feel free to modify this file, although I would greatly appreciate\n * it if you would then send some feedback on why the file needed to be\n * changed, using the e-mail address above.\n *\n *\n * The colors are inspired by those used in the Pixel Bender Toolkit, with\n * some slight modifications.\n *\n * For more info on Pixel Bender, see the Adobe Labs Wiki article at\n * http://labs.adobe.com/wiki/index.php/Pixel_Bender_Toolkit.\n *\n * Keyword groups are defined as follows (groups marked with an asterisk\n * inherit their names from terminology used in the language specification\n * included with the Pixel Bender Toolkit, see URL above.)\n *\n *  1. languageVersion & kernel keywords\n *  2. Kernel Members *\n *  3. Types *\n *  4. Statements * & qualifiers (in, out, inout)\n *  5. Built-in functions *\n *  6. Meta-data names\n *  7. Preprocessor & Pre-defined symbols *\n *\n *\n * CHANGES\n * -------\n * 2008/11/16 (1.0.8.2)\n *  - Initial release\n *\n * TODO (updated 2008/11/16)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Pixel Bender 1.0',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'languageVersion', 'kernel'\n            ),\n        2 => array(\n            'import', 'parameter', 'dependent', 'const', 'input', 'output',\n            'evaluatePixel', 'evaluateDependents', 'needed', 'changed', 'generated'\n            ),\n        3 => array(\n            'bool', 'bool2', 'bool3', 'bool4', 'int', 'int2', 'int3', 'int4',\n            'float', 'float2', 'float3', 'float4', 'float2x2', 'float3x3', 'float4x4',\n            'pixel2', 'pixel3', 'pixel4', 'region', 'image1', 'image2', 'image3', 'image4',\n            'imageRef', 'void'\n            ),\n        4 => array(\n            'in', 'out', 'inout', 'if', 'else', 'for', 'while', 'do', 'break',\n            'continue', 'return'\n            ),\n        5 => array(\n            'radians', 'degrees', 'sin', 'cos', 'tan', 'asin', 'acos', 'atan', 'pow',\n            'exp', 'exp2', 'log', 'log2', 'sqrt', 'inverseSqrt', 'abs', 'sign', 'floor',\n            'ceil', 'fract', 'mod', 'min', 'max', 'step', 'clamp', 'mix', 'smoothStep',\n            'length', 'distance', 'dot', 'cross', 'normalize', 'matrixCompMult', 'lessThan',\n            'lessThanEqual', 'greaterThan', 'greaterThanEqual', 'equal', 'notEqual', 'any',\n            'all', 'not', 'nowhere', 'everywhere', 'transform', 'union', 'intersect',\n            'outset', 'inset', 'bounds', 'isEmpty', 'sample', 'sampleLinear', 'sampleNearest',\n            'outCoord', 'dod', 'pixelSize', 'pixelAspectRatio'\n            ),\n        6 => array(\n            'namespace', 'vendor', 'version', 'minValue', 'maxValue', 'defaultValue', 'description'\n            ),\n        7 => array(\n            '#if', '#endif', '#ifdef', '#elif', 'defined', '#define',\n            'AIF_ATI', 'AIF_NVIDIA', 'AIF_FLASH_TARGET'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '!', '%', '&', '|', '+', '-', '*', '/', '=', '<', '>', '?', ':'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0033ff;',\n            2 => 'color: #0033ff; font-weight: bold;',\n            3 => 'color: #0033ff;',\n            4 => 'color: #9900cc; font-weight: bold;',\n            5 => 'color: #333333;',\n            6 => 'color: #666666;',\n            7 => 'color: #990000;',\n        ),\n        'COMMENTS' => array(\n            1 => 'color: #009900;',\n            'MULTI' => 'color: #3f5fbf;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #990000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #000000; font-weight:bold;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #000000;',\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000; font-weight: bold;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array('.'),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/pli.php",
    "content": "<?php\n/*************************************************************************************\n * pli.php\n * --------\n * Author: Robert AH Prins (robert@prino.org)\n * Copyright: (c) 2011 Robert AH Prins (http://hitchwiki.org/en/User:Prino)\n * Release Version: 1.0.9.1\n * Date Started: 2011/02/09\n *\n * PL/I language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2011/02/09 (1.0.8.10)\n *  -  First Release - machine(ish) generated by http://rosettacode.org/geshi/\n *\n * TODO (updated 2011/02/09)\n * -------------------------\n *\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'PL/I',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', '\\''),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'abnormal', 'abs', 'acos', 'acosf', 'add', 'addbuff', 'addr',\n            'addrdata', 'alias', 'aligned', 'all', 'alloc', 'allocate',\n            'allocation', 'allocn', 'allocsize', 'any', 'anycondition', 'area',\n            'ascii', 'asin', 'asinf', 'asm', 'asmtdli', 'assembler',\n            'assignable', 'atan', 'atand', 'atanf', 'atanh', 'attach',\n            'attention', 'attn', 'auto', 'automatic', 'availablearea',\n            'backwards', 'based', 'begin', 'bigendian', 'bin', 'binary',\n            'binaryvalue', 'bind', 'binvalue', 'bit', 'bitloc', 'bitlocation',\n            'bkwd', 'blksize', 'bool', 'buf', 'buffered', 'buffers', 'bufnd',\n            'bufni', 'bufoff', 'bufsp', 'builtin', 'bx', 'by', 'byaddr', 'byte',\n            'byvalue', 'b4', 'call', 'cast', 'cds', 'ceil', 'center',\n            'centerleft', 'centerright', 'centre', 'centreleft', 'centreright',\n            'char', 'character', 'charg', 'chargraphic', 'charval', 'check',\n            'checkstg', 'close', 'cmpat', 'cobol', 'col', 'collate', 'column',\n            'comment', 'compare', 'compiledate', 'compiletime', 'completion',\n            'complex', 'cond', 'condition', 'conjg', 'conn', 'connected',\n            'consecutive', 'controlled', 'conv', 'conversion', 'copy', 'cos',\n            'cosd', 'cosf', 'cosh', 'count', 'counter', 'cpln', 'cplx', 'cs',\n            'cstg', 'ctl', 'ctlasa', 'ctl360', 'currentsize', 'currentstorage',\n            'data', 'datafield', 'date', 'datetime', 'days', 'daystodate',\n            'daystosecs', 'db', 'dcl', 'dec', 'decimal', 'declare', 'def',\n            'default', 'define', 'defined', 'delay', 'delete', 'descriptor',\n            'descriptors', 'detach', 'dft', 'dim', 'dimacross', 'dimension',\n            'direct', 'display', 'divide', 'do', 'downthru', 'edit', 'else',\n            'empty', 'end', 'endfile', 'endpage', 'entry', 'entryaddr', 'env',\n            'environment', 'epsilon', 'erf', 'erfc', 'error', 'event', 'excl',\n            'exclusive', 'exit', 'exp', 'expf', 'exponent', 'exports', 'ext',\n            'external', 'fb', 'fbs', 'fetch', 'file', 'fileddint', 'fileddtest',\n            'fileddword', 'fileid', 'fileopen', 'fileread', 'fileseek',\n            'filetell', 'filewrite', 'finish', 'first', 'fixed', 'fixedbin',\n            'fixeddec', 'fixedoverflow', 'float', 'floatbin', 'floatdec',\n            'floor', 'flush', 'fofl', 'format', 'fortran', 'free', 'from',\n            'fromalien', 'fs', 'gamma', 'generic', 'genkey', 'get', 'getenv',\n            'go', 'goto', 'graphic', 'gx', 'handle', 'hbound', 'hex', 'hexadec',\n            'heximage', 'high', 'huge', 'iand', 'ieee', 'ieor', 'if', 'ignore',\n            'imag', 'in', 'index', 'indexarea', 'indexed', 'init', 'initial',\n            'inline', 'inonly', 'inot', 'inout', 'input', 'int', 'inter',\n            'internal', 'into', 'invalidop', 'ior', 'irred', 'irreducible',\n            'isfinite', 'isigned', 'isinf', 'isll', 'ismain', 'isnan',\n            'isnormal', 'isrl', 'iszero', 'iunsigned', 'key', 'keyed',\n            'keyfrom', 'keylength', 'keyloc', 'keyto', 'label', 'last',\n            'lbound', 'leave', 'left', 'length', 'like', 'limited', 'line',\n            'lineno', 'linesize', 'linkage', 'list', 'littleendian', 'loc',\n            'locate', 'location', 'log', 'logf', 'loggamma', 'log10', 'log10f',\n            'log2', 'low', 'lowercase', 'lower2', 'maccol', 'maclmar',\n            'macname', 'macrmar', 'main', 'max', 'maxexp', 'maxlength',\n            'memconvert', 'memcu12', 'memcu14', 'memcu21', 'memcu24', 'memcu41',\n            'memcu42', 'memindex', 'memsearch', 'memsearchr', 'memverify',\n            'memverifyr', 'min', 'minexp', 'mod', 'mpstr', 'multiply', 'name',\n            'native', 'ncp', 'new', 'nocharg', 'nochargraphic', 'nocheck',\n            'nocmpat', 'noconv', 'noconversion', 'nodescriptor', 'noexecops',\n            'nofixedoverflow', 'nofofl', 'noinline', 'nolock', 'nomap',\n            'nomapin', 'nomapout', 'nonasgn', 'nonassignable', 'nonconnected',\n            'nonnative', 'noofl', 'nooverflow', 'norescan', 'normal', 'nosize',\n            'nostrg', 'nostringrange', 'nostringsize', 'nostrz', 'nosubrg',\n            'nosubscriptrange', 'noufl', 'nounderflow', 'nowrite', 'nozdiv',\n            'nozerodivide', 'null', 'offset', 'offsetadd', 'offsetdiff',\n            'offsetsubtract', 'offsetvalue', 'ofl', 'omitted', 'on', 'onarea',\n            'onchar', 'oncode', 'oncondcond', 'oncondid', 'oncount', 'onfile',\n            'ongsource', 'onkey', 'online', 'onloc', 'onoffset', 'onsource',\n            'onsubcode', 'onwchar', 'onwsource', 'open', 'optional', 'options',\n            'order', 'ordinal', 'ordinalname', 'ordinalpred', 'ordinalsucc',\n            'other', 'otherwise', 'outonly', 'output', 'overflow', 'package',\n            'packagename', 'page', 'pageno', 'pagesize', 'parameter', 'parmset',\n            'password', 'pending', 'pic', 'picspec', 'picture', 'places',\n            'pliascii', 'plicanc', 'plickpt', 'plidelete', 'plidump',\n            'pliebcdic', 'plifill', 'plifree', 'plimove', 'pliover', 'plirest',\n            'pliretc', 'pliretv', 'plisaxa', 'plisaxb', 'plisaxc', 'plisaxd',\n            'plisrta', 'plisrtb', 'plisrtc', 'plisrtd', 'plitdli', 'plitran11',\n            'plitran12', 'plitran21', 'plitran22', 'pointer', 'pointeradd',\n            'pointerdiff', 'pointersubtract', 'pointervalue', 'poly', 'pos',\n            'position', 'prec', 'precision', 'pred', 'present', 'print',\n            'priority', 'proc', 'procedure', 'procedurename', 'procname',\n            'prod', 'ptr', 'ptradd', 'ptrdiff', 'ptrsubtract', 'ptrvalue',\n            'put', 'putenv', 'quote', 'radix', 'raise2', 'random', 'range',\n            'rank', 'read', 'real', 'record', 'recsize', 'recursive', 'red',\n            'reducible', 'reentrant', 'refer', 'regional', 'reg12', 'release',\n            'rem', 'reorder', 'repattern', 'repeat', 'replaceby2', 'reply',\n            'reread', 'rescan', 'reserved', 'reserves', 'resignal', 'respec',\n            'retcode', 'return', 'returns', 'reuse', 'reverse', 'revert',\n            'rewrite', 'right', 'round', 'rounddec', 'samekey', 'scalarvarying',\n            'scale', 'search', 'searchr', 'secs', 'secstodate', 'secstodays',\n            'select', 'seql', 'sequential', 'serialize4', 'set', 'sign',\n            'signal', 'signed', 'sin', 'sind', 'sinf', 'sinh', 'sis', 'size',\n            'skip', 'snap', 'sourcefile', 'sourceline', 'sqrt', 'sqrtf',\n            'stackaddr', 'statement', 'static', 'status', 'stg', 'stmt', 'stop',\n            'storage', 'stream', 'strg', 'string', 'stringrange', 'stringsize',\n            'structure', 'strz', 'subrg', 'subscriptrange', 'substr',\n            'subtract', 'succ', 'sum', 'suppress', 'sysin', 'sysnull',\n            'sysparm', 'sysprint', 'system', 'sysversion', 'tally', 'tan',\n            'tand', 'tanf', 'tanh', 'task', 'then', 'thread', 'threadid',\n            'time', 'tiny', 'title', 'to', 'total', 'tpk', 'tpm', 'transient',\n            'translate', 'transmit', 'trim', 'trkofl', 'trunc', 'type', 'ufl',\n            'ulength', 'ulength16', 'ulength8', 'unal', 'unaligned',\n            'unallocated', 'unbuf', 'unbuffered', 'undefinedfile', 'underflow',\n            'undf', 'unlock', 'unsigned', 'unspec', 'until', 'update', 'upos',\n            'uppercase', 'upthru', 'usubstr', 'usurrogate', 'uvalid', 'uwidth',\n            'valid', 'validdate', 'value', 'var', 'varglist', 'vargsize',\n            'variable', 'varying', 'varyingz', 'vb', 'vbs', 'verify', 'verifyr',\n            'vs', 'vsam', 'wait', 'wchar', 'wcharval', 'weekday', 'when',\n            'whigh', 'while', 'widechar', 'wlow', 'write', 'xmlchar', 'y4date',\n            'y4julian', 'y4year', 'zdiv', 'zerodivide'\n            )\n        ),\n    'SYMBOLS' => array(\n        1 => array(\n            '+', '-', '*', '/', '=', '<', '>', '&', '^', '|', ':', '(', ')', ';', ','\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;'\n            ),\n        'COMMENTS' => array(\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;',\n            ),\n        'METHODS' => array(\n            0 => 'color: #004000;'\n            ),\n        'SYMBOLS' => array(\n            1 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(),\n        'SCRIPT' => array()\n        ),\n    'URLS' => array(1 => ''),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(1 => '.'),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/plsql.php",
    "content": "<?php\n/*************************************************************************************\n * plsql.php\n * -------\n * Author: Victor Engmark <victor.engmark@gmail.com>\n * Copyright: (c) 2006 Victor Engmark (http://l0b0.net/)\n * Release Version: 1.0.9.1\n * Date Started: 2006/10/26\n *\n * Oracle 9.2 PL/SQL language file for GeSHi.\n * Formatting is based on the default setup of TOAD 8.6.\n *\n * CHANGES\n * -------\n * 2006/10/27 (1.0.0)\n *    -    First Release\n *\n * TODO (updated 2006/10/27)\n * -------------------------\n * * Add < and > to brackets\n * * Remove symbols which are also comment delimiters / quote marks?\n *\n *************************************************************************************\n *\n *         This file is part of GeSHi.\n *\n *     GeSHi is free software; you can redistribute it and/or modify\n *     it under the terms of the GNU General Public License as published by\n *     the Free Software Foundation; either version 2 of the License, or\n *     (at your option) any later version.\n *\n *     GeSHi is distributed in the hope that it will be useful,\n *     but WITHOUT ANY WARRANTY; without even the implied warranty of\n *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.    See the\n *     GNU General Public License for more details.\n *\n *     You should have received a copy of the GNU General Public License\n *     along with GeSHi; if not, write to the Free Software\n *     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA    02111-1307    USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'PL/SQL',\n    'COMMENT_SINGLE' => array(1 =>'--'), //http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/02_funds.htm#2930\n    'COMMENT_MULTI' => array('/*' => '*/'), //http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/02_funds.htm#2950\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,\n    'QUOTEMARKS' => array(\"'\", '\"'), //http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/02_funds.htm\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        //PL/SQL reserved keywords (http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/f_words.htm#LNPLS019)\n        1 => array('ZONE', 'YEAR', 'WRITE', 'WORK', 'WITH', 'WHILE', 'WHERE',\n        'WHENEVER', 'WHEN', 'VIEW', 'VARCHAR2', 'VARCHAR', 'VALUES',\n        'VALIDATE', 'USE', 'UPDATE', 'UNIQUE', 'UNION', 'TYPE', 'TRUE',\n        'TRIGGER', 'TO', 'TIMEZONE_REGION', 'TIMEZONE_MINUTE', 'TIMEZONE_HOUR',\n        'TIMEZONE_ABBR', 'TIMESTAMP', 'TIME', 'THEN', 'TABLE', 'SYNONYM',\n        'SUCCESSFUL', 'SUBTYPE', 'START', 'SQLERRM', 'SQLCODE', 'SQL', 'SPACE',\n        'SMALLINT', 'SHARE', 'SET', 'SEPARATE', 'SELECT', 'SECOND',\n        'SAVEPOINT', 'ROWTYPE', 'ROWNUM', 'ROWID', 'ROW', 'ROLLBACK',\n        'REVERSE', 'RETURN', 'RELEASE', 'RECORD', 'REAL', 'RAW', 'RANGE',\n        'RAISE', 'PUBLIC', 'PROCEDURE', 'PRIVATE', 'PRIOR', 'PRAGMA',\n        'POSITIVEN', 'POSITIVE', 'PLS_INTEGER', 'PCTFREE', 'PARTITION',\n        'PACKAGE', 'OUT', 'OTHERS', 'ORGANIZATION', 'ORDER', 'OR', 'OPTION',\n        'OPERATOR', 'OPEN', 'OPAQUE', 'ON', 'OF', 'OCIROWID', 'NUMBER_BASE',\n        'NUMBER', 'NULL', 'NOWAIT', 'NOT', 'NOCOPY', 'NEXTVAL', 'NEW',\n        'NATURALN', 'NATURAL', 'MONTH', 'MODE', 'MLSLABEL', 'MINUTE', 'MINUS',\n        'LOOP', 'LONG', 'LOCK', 'LIMITED', 'LIKE', 'LEVEL', 'JAVA',\n        'ISOLATION', 'IS', 'INTO', 'INTERVAL', 'INTERSECT', 'INTERFACE',\n        'INTEGER', 'INSERT', 'INDICATOR', 'INDEX', 'IN', 'IMMEDIATE', 'IF',\n        'HOUR', 'HEAP', 'HAVING', 'GROUP', 'GOTO', 'FUNCTION', 'FROM',\n        'FORALL', 'FOR', 'FLOAT', 'FETCH', 'FALSE', 'EXTENDS', 'EXIT',\n        'EXISTS', 'EXECUTE', 'EXCLUSIVE', 'EXCEPTION', 'END', 'ELSIF', 'ELSE',\n        'DROP', 'DO', 'DISTINCT', 'DESC', 'DELETE', 'DEFAULT', 'DECLARE',\n        'DECIMAL', 'DAY', 'DATE', 'CURSOR', 'CURRVAL', 'CURRENT', 'CREATE',\n        'CONSTANT', 'CONNECT', 'COMPRESS', 'COMMIT', 'COMMENT', 'COLLECT',\n        'CLUSTER', 'CLOSE', 'CHECK', 'CHAR_BASE', 'CHAR', 'CASE', 'BY', 'BULK',\n        'BOOLEAN', 'BODY', 'BINARY_INTEGER', 'BETWEEN', 'BEGIN', 'AUTHID',\n        'AT', 'ASC', 'AS', 'ARRAY', 'ANY', 'AND', 'ALTER', 'ALL'),\n        //SQL functions (http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96540/toc.htm & http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96540/functions101a.htm#85925)\n        2 => array('XMLTRANSFORM', 'XMLSEQUENCE', 'XMLFOREST', 'XMLELEMENT',\n        'XMLCONCAT', 'XMLCOLATTVAL', 'XMLAGG', 'WIDTH_BUCKET', 'VSIZE',\n        'VARIANCE', 'VAR_SAMP', 'VAR_POP', 'VALUE', 'USERENV', 'USER', 'UPPER',\n        'UPDATEXML', 'UNISTR', 'UID', 'TZ_OFFSET', 'TRUNC', 'TRIM', 'TREAT',\n        'TRANSLATE', 'TO_YMINTERVAL', 'TO_TIMESTAMP_TZ', 'TO_TIMESTAMP',\n        'TO_SINGLE_BYTE', 'TO_NUMBER', 'TO_NCLOB', 'TO_NCHAR', 'TO_MULTI_BYTE',\n        'TO_LOB', 'TO_DSINTERVAL', 'TO_DATE', 'TO_CLOB', 'TO_CHAR', 'TANH',\n        'TAN', 'SYSTIMESTAMP', 'SYSDATE', 'SYS_XMLGEN', 'SYS_XMLAGG',\n        'SYS_TYPEID', 'SYS_GUID', 'SYS_EXTRACT_UTC', 'SYS_DBURIGEN',\n        'SYS_CONTEXT', 'SYS_CONNECT_BY_PATH', 'SUM', 'SUBSTR', 'STDDEV_SAMP',\n        'STDDEV_POP', 'STDDEV', 'SQRT', 'SOUNDEX', 'SINH', 'SIN', 'SIGN',\n        'SESSIONTIMEZONE', 'RTRIM', 'RPAD', 'ROWIDTONCHAR', 'ROWIDTOCHAR',\n        'ROW_NUMBER', 'ROUND', 'REPLACE', 'REGR_SYY', 'REGR_SXY', 'REGR_SXX',\n        'REGR_SLOPE', 'REGR_R2', 'REGR_INTERCEPT', 'REGR_COUNT', 'REGR_AVGY',\n        'REGR_AVGX', 'REFTOHEX', 'REF', 'RAWTONHEX', 'RAWTOHEX',\n        'RATIO_TO_REPORT', 'RANK', 'POWER', 'PERCENTILE_DISC',\n        'PERCENTILE_CONT', 'PERCENT_RANK', 'PATH', 'NVL2', 'NVL',\n        'NUMTOYMINTERVAL', 'NUMTODSINTERVAL', 'NULLIF', 'NTILE', 'NLSSORT',\n        'NLS_UPPER', 'NLS_LOWER', 'NLS_INITCAP', 'NLS_CHARSET_NAME',\n        'NLS_CHARSET_ID', 'NLS_CHARSET_DECL_LEN', 'NEXT_DAY', 'NEW_TIME',\n        'NCHR', 'MONTHS_BETWEEN', 'MOD', 'MIN', 'MAX', 'MAKE_REF', 'LTRIM',\n        'LPAD', 'LOWER', 'LOG', 'LOCALTIMESTAMP', 'LN', 'LENGTH', 'LEAST',\n        'LEAD', 'LAST_VALUE', 'LAST_DAY', 'LAST', 'LAG', 'INSTR', 'INITCAP',\n        'HEXTORAW', 'GROUPING_ID', 'GROUPING', 'GROUP_ID', 'GREATEST',\n        'FROM_TZ', 'FLOOR', 'FIRST_VALUE', 'FIRST', 'EXTRACTVALUE', 'EXTRACT',\n        'EXP', 'EXISTSNODE', 'EMPTY_CLOB', 'EMPTY_BLOB', 'DUMP', 'DEREF',\n        'DEPTH', 'DENSE_RANK', 'DECOMPOSE', 'DECODE', 'DBTIMEZONE',\n        'CURRENT_TIMESTAMP', 'CURRENT_DATE', 'CUME_DIST', 'COVAR_SAMP',\n        'COVAR_POP', 'COUNT', 'COSH', 'COS', 'CORR', 'CONVERT', 'CONCAT',\n        'COMPOSE', 'COALESCE', 'CHR', 'CHARTOROWID', 'CEIL', 'CAST', 'BITAND',\n        'BIN_TO_NUM', 'BFILENAME', 'AVG', 'ATAN2', 'ATAN', 'ASIN', 'ASCIISTR',\n        'ASCII', 'ADD_MONTHS', 'ACOS', 'ABS'),\n        //PL/SQL packages (http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96612/intro2.htm#1025672)\n        3 => array('UTL_URL', 'UTL_TCP', 'UTL_SMTP', 'UTL_REF', 'UTL_RAW',\n        'UTL_PG', 'UTL_INADDR', 'UTL_HTTP', 'UTL_FILE', 'UTL_ENCODE',\n        'UTL_COLL', 'SDO_UTIL', 'SDO_TUNE', 'SDO_MIGRATE', 'SDO_LRS',\n        'SDO_GEOM', 'SDO_CS', 'DMBS_XMLQUERY', 'DMBS_FLASHBACK',\n        'DMBS_DEFER_SYS', 'DEBUG_EXTPROC', 'DBMS_XSLPROCESSOR', 'DBMS_XPLAN',\n        'DBMS_XMLSCHEMA', 'DBMS_XMLSAVE', 'DBMS_XMLPARSER', 'DBMS_XMLGEN',\n        'DBMS_XMLDOM', 'DBMS_XDBT', 'DBMS_XDB_VERSION', 'DBMS_XDB', 'DBMS_WM',\n        'DBMS_UTILITY', 'DBMS_TYPES', 'DBMS_TTS', 'DBMS_TRANSFORM',\n        'DBMS_TRANSACTION', 'DBMS_TRACE', 'DBMS_STRM_A', 'DBMS_STRM',\n        'DBMS_STORAGE_MAP', 'DBMS_STATS', 'DBMS_SQL', 'DBMS_SPACE_ADMIN',\n        'DBMS_SPACE', 'DBMS_SHARED_POOL', 'DBMS_SESSION', 'DBMS_RULE_ADM',\n        'DBMS_RULE', 'DBMS_ROWID', 'DBMS_RLS', 'DBMS_RESUMABLE',\n        'DBMS_RESOURCE_MANAGER_PRIVS', 'DBMS_RESOURCE_MANAGER', 'DBMS_REPUTIL',\n        'DBMS_REPCAT_RGT', 'DBMS_REPCAT_INSTATIATE', 'DBMS_REPCAT_ADMIN',\n        'DBMS_REPCAT', 'DBMS_REPAIR', 'DBMS_REFRESH', 'DBMS_REDEFINITION',\n        'DBMS_RECTIFIER_DIFF', 'DBMS_RANDOM', 'DBMS_PROPAGATION_ADM',\n        'DBMS_PROFILER', 'DBMS_PIPE', 'DBMS_PCLXUTIL', 'DBMS_OUTPUT',\n        'DBMS_OUTLN_EDIT', 'DBMS_OUTLN', 'DBMS_ORACLE_TRACE_USER',\n        'DBMS_ORACLE_TRACE_AGENT', 'DBMS_OLAP', 'DBMS_OFFLINE_SNAPSHOT',\n        'DBMS_OFFLINE_OG', 'DBMS_ODCI', 'DBMS_OBFUSCATION_TOOLKIT',\n        'DBMS_MVIEW', 'DBMS_MGWMSG', 'DBMS_MGWADM', 'DBMS_METADATA',\n        'DBMS_LOGSTDBY', 'DBMS_LOGMNR_D', 'DBMS_LOGMNR_CDC_SUBSCRIBE',\n        'DBMS_LOGMNR_CDC_PUBLISH', 'DBMS_LOGMNR', 'DBMS_LOCK', 'DBMS_LOB',\n        'DBMS_LIBCACHE', 'DBMS_LDAP', 'DBMS_JOB', 'DBMS_IOT',\n        'DBMS_HS_PASSTHROUGH', 'DBMS_FGA', 'DBMS_DISTRIBUTED_TRUST_ADMIN',\n        'DBMS_DESCRIBE', 'DBMS_DEFER_QUERY', 'DBMS_DEFER', 'DBMS_DEBUG',\n        'DBMS_DDL', 'DBMS_CAPTURE_ADM', 'DBMS_AW', 'DBMS_AQELM', 'DBMS_AQADM',\n        'DBMS_AQ', 'DBMS_APPLY_ADM', 'DBMS_APPLICATION_INFO', 'DBMS_ALERT',\n        'CWM2_OLAP_AW_ACCESS'),\n        //PL/SQL predefined exceptions (http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/07_errs.htm#784)\n        4 => array('ZERO_DIVIDE', 'VALUE_ERROR', 'TOO_MANY_ROWS',\n        'TIMEOUT_ON_RESOURCE', 'SYS_INVALID_ROWID', 'SUBSCRIPT_OUTSIDE_LIMIT',\n        'SUBSCRIPT_BEYOND_COUNT', 'STORAGE_ERROR', 'SELF_IS_NULL',\n        'ROWTYPE_MISMATCH', 'PROGRAM_ERROR', 'NOT_LOGGED_ON', 'NO_DATA_FOUND',\n        'LOGIN_DENIED', 'INVALID_NUMBER', 'INVALID_CURSOR', 'DUP_VAL_ON_INDEX',\n        'CURSOR_ALREADY_OPEN', 'COLLECTION_IS_NULL', 'CASE_NOT_FOUND',\n        'ACCESS_INTO_NULL'),\n        //Static data dictionary views (http://download-uk.oracle.com/docs/cd/B10501_01/server.920/a96536/ch2.htm)\n        5 => array('USER_REPSITES', 'USER_REPSCHEMA',\n        'USER_REPRESOLUTION_STATISTICS', 'USER_REPRESOLUTION_METHOD',\n        'USER_REPRESOLUTION', 'USER_REPRESOL_STATS_CONTROL', 'USER_REPPROP',\n        'USER_REPPRIORITY_GROUP', 'USER_REPPRIORITY',\n        'USER_REPPARAMETER_COLUMN', 'USER_REPOBJECT', 'USER_REPKEY_COLUMNS',\n        'USER_REPGROUPED_COLUMN', 'USER_REPGROUP_PRIVILEGES', 'USER_REPGROUP',\n        'USER_REPGENOBJECTS', 'USER_REPGENERATED', 'USER_REPFLAVORS',\n        'USER_REPFLAVOR_OBJECTS', 'USER_REPFLAVOR_COLUMNS', 'USER_REPDDL',\n        'USER_REPCONFLICT', 'USER_REPCOLUMN_GROUP', 'USER_REPCOLUMN',\n        'USER_REPCATLOG', 'USER_REPCAT_USER_PARM_VALUES',\n        'USER_REPCAT_USER_AUTHORIZATIONS', 'USER_REPCAT_TEMPLATE_SITES',\n        'USER_REPCAT_TEMPLATE_PARMS', 'USER_REPCAT_TEMPLATE_OBJECTS',\n        'USER_REPCAT_REFRESH_TEMPLATES', 'USER_REPCAT', 'USER_REPAUDIT_COLUMN',\n        'USER_REPAUDIT_ATTRIBUTE', 'DBA_REPSITES_NEW', 'DBA_REPSITES',\n        'DBA_REPSCHEMA', 'DBA_REPRESOLUTION_STATISTICS',\n        'DBA_REPRESOLUTION_METHOD', 'DBA_REPRESOLUTION',\n        'DBA_REPRESOL_STATS_CONTROL', 'DBA_REPPROP', 'DBA_REPPRIORITY_GROUP',\n        'DBA_REPPRIORITY', 'DBA_REPPARAMETER_COLUMN', 'DBA_REPOBJECT',\n        'DBA_REPKEY_COLUMNS', 'DBA_REPGROUPED_COLUMN',\n        'DBA_REPGROUP_PRIVILEGES', 'DBA_REPGROUP', 'DBA_REPGENOBJECTS',\n        'DBA_REPGENERATED', 'DBA_REPFLAVORS', 'DBA_REPFLAVOR_OBJECTS',\n        'DBA_REPFLAVOR_COLUMNS', 'DBA_REPEXTENSIONS', 'DBA_REPDDL',\n        'DBA_REPCONFLICT', 'DBA_REPCOLUMN_GROUP', 'DBA_REPCOLUMN',\n        'DBA_REPCATLOG', 'DBA_REPCAT_USER_PARM_VALUES',\n        'DBA_REPCAT_USER_AUTHORIZATIONS', 'DBA_REPCAT_TEMPLATE_SITES',\n        'DBA_REPCAT_TEMPLATE_PARMS', 'DBA_REPCAT_TEMPLATE_OBJECTS',\n        'DBA_REPCAT_REFRESH_TEMPLATES', 'DBA_REPCAT_EXCEPTIONS', 'DBA_REPCAT',\n        'DBA_REPAUDIT_COLUMN', 'DBA_REPAUDIT_ATTRIBUTE', 'ALL_REPSITES',\n        'ALL_REPSCHEMA', 'ALL_REPRESOLUTION_STATISTICS',\n        'ALL_REPRESOLUTION_METHOD', 'ALL_REPRESOLUTION',\n        'ALL_REPRESOL_STATS_CONTROL', 'ALL_REPPROP', 'ALL_REPPRIORITY_GROUP',\n        'ALL_REPPRIORITY', 'ALL_REPPARAMETER_COLUMN', 'ALL_REPOBJECT',\n        'ALL_REPKEY_COLUMNS', 'ALL_REPGROUPED_COLUMN',\n        'ALL_REPGROUP_PRIVILEGES', 'ALL_REPGROUP', 'ALL_REPGENOBJECTS',\n        'ALL_REPGENERATED', 'ALL_REPFLAVORS', 'ALL_REPFLAVOR_OBJECTS',\n        'ALL_REPFLAVOR_COLUMNS', 'ALL_REPDDL', 'ALL_REPCONFLICT',\n        'ALL_REPCOLUMN_GROUP', 'ALL_REPCOLUMN', 'ALL_REPCATLOG',\n        'ALL_REPCAT_USER_PARM_VALUES', 'ALL_REPCAT_USER_AUTHORIZATIONS',\n        'ALL_REPCAT_TEMPLATE_SITES', 'ALL_REPCAT_TEMPLATE_PARMS',\n        'ALL_REPCAT_TEMPLATE_OBJECTS', 'ALL_REPCAT_REFRESH_TEMPLATES',\n        'ALL_REPCAT', 'ALL_REPAUDIT_COLUMN', 'ALL_REPAUDIT_ATTRIBUTE')\n        ),\n    'SYMBOLS' => array(\n        //PL/SQL delimiters (http://download-uk.oracle.com/docs/cd/B10501_01/appdev.920/a96624/02_funds.htm#2732)\n        '+', '%', \"'\", '.', '/', '(', ')', ':', ',', '*', '\"', '=', '<', '>', '@', ';', '-', ':=', '=>', '||', '**', '<<', '>>', '/*', '*/', '..', '<>', '!=', '~=', '^=', '<=', '>='\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #00F;',\n            2 => 'color: #000;',\n            3 => 'color: #00F;',\n            4 => 'color: #F00;',\n            5 => 'color: #800;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #080; font-style: italic;',\n            'MULTI' => 'color: #080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #00F;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #F00;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #800;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #0F0;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #00F;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            0 => 'color: #0F0;'\n            )\n        ),\n        'URLS' => array(\n            1 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAMEU}',\n            2 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAMEU}',\n            3 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAMEU}',\n            4 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAMEU}',\n            5 => 'http://www.oracle.com/pls/db92/db92.drilldown?word={FNAMEU}'\n            ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/postgresql.php",
    "content": "<?php\n/*************************************************************************************\n * postgresql.php\n * -----------\n * Author: Christophe Chauvet (christophe_at_kryskool_dot_org)\n * Contributors: Leif Biberg Kristensen <leif_at_solumslekt_dot_org> 2010-05-03\n * Copyright: (c) 2007 Christophe Chauvet (http://kryskool.org/), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2007/07/20\n *\n * PostgreSQL language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2007/07/20 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2007/07/20)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'PostgreSQL',\n    'COMMENT_SINGLE' => array(1 => '--'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"', '`'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        //Put PostgreSQL reserved keywords here.  I like mine uppercase.\n        1 => array(\n            'ABORT','ABSOLUTE','ACCESS','ACTION','ADD','ADMIN','AFTER',\n            'AGGREGATE','ALL','ALSO','ALTER','ALWAYS','ANALYSE','ANALYZE','AND',\n            'ANY','AS','ASC,','ASSERTION','ASSIGNMENT','ASYMMETRIC','AT',\n            'AUTHORIZATION','BACKWARD','BEFORE','BEGIN','BETWEEN','BOTH','BY',\n            'CACHE','CALLED','CASCADE','CASCADED','CASE','CAST','CATALOG',\n            'CHAIN','CHARACTERISTICS','CHECK','CHECKPOINT','CLASS','CLOSE',\n            'CLUSTER','COALESCE','COLLATE','COLUMN','COMMENT','COMMIT',\n            'COMMITTED','CONCURRENTLY','CONFIGURATION','CONNECTION',\n            'CONSTRAINT','CONSTRAINTS','CONTENT','CONTINUE','CONVERSION','COPY',\n            'COST','CREATE','CREATEDB','CREATEROLE','CREATEUSER','CROSS','CSV',\n            'CURRENT','CURRENT_CATALOG','CURRENT_DATE','CURRENT_ROLE',\n            'CURRENT_SCHEMA','CURRENT_TIME','CURRENT_TIMESTAMP','CURRENT_USER',\n            'CURSOR','CYCLE','DATA','DATABASE','DAY','DEALLOCATE','DEC',\n            'DECLARE','DEFAULT','DEFAULTS','DEFERRABLE','DEFERRED','DEFINER',\n            'DELETE','DELIMITER','DELIMITERS','DESC','DICTIONARY','DISABLE',\n            'DISCARD','DISTINCT','DO','DOCUMENT','DOMAIN','DOUBLE','DROP',\n            'EACH','ELSE','ENABLE','ENCODING','ENCRYPTED','END','ESCAPE',\n            'EXCEPT','EXCLUDING','EXCLUSIVE','EXECUTE','EXISTS','EXPLAIN',\n            'EXTERNAL','EXTRACT','FALSE','FAMILY','FETCH','FIRST','FOLLOWING',\n            'FOR','FORCE','FOREIGN','FORWARD','FREEZE','FROM','FULL','FUNCTION',\n            'GLOBAL','GRANT','GRANTED','GREATEST','GROUP','HANDLER','HAVING',\n            'HEADER','HOLD','HOUR','IDENTITY','IF','ILIKE','IMMEDIATE',\n            'IMMUTABLE','IMPLICIT','IN','INCLUDING','INCREMENT','INDEX',\n            'INDEXES','INHERIT','INHERITS','INITIALLY','INNER','INOUT','INPUT',\n            'INSENSITIVE','INSERT','INSTEAD','INTERSECT','INTO','INVOKER','IS',\n            'ISNULL','ISOLATION','JOIN','KEY','LANCOMPILER','LANGUAGE','LARGE',\n            'LAST','LC_COLLATE','LC_CTYPE','LEADING','LEAST','LEFT','LEVEL',\n            'LIKE','LIMIT','LISTEN','LOAD','LOCAL','LOCALTIME','LOCALTIMESTAMP',\n            'LOCATION','LOCK','LOGIN','LOOP','MAPPING','MATCH','MAXVALUE',\n            'MINUTE','MINVALUE','MODE','MONTH','MOVE','NAME','NAMES','NATIONAL',\n            'NATURAL','NEW','NEXT','NO','NOCREATEDB','NOCREATEROLE',\n            'NOCREATEUSER','NOINHERIT','NOLOGIN','NONE','NOSUPERUSER','NOT',\n            'NOTHING','NOTIFY','NOTNULL','NOWAIT','NULL','NULLIF','NULLS',\n            'NUMERIC','OBJECT','OF','OFF','OFFSET','OIDS','OLD','ON','ONLY',\n            'OPERATOR','OPTION','OPTIONS','OR','ORDER','OUT','OUTER','OVER',\n            'OVERLAPS','OVERLAY','OWNED','OWNER','PARSER','PARTIAL','PARTITION',\n            'PASSWORD','PLACING','PLANS','POSITION','PRECEDING','PRECISION',\n            'PREPARE','PREPARED','PRESERVE','PRIMARY','PRIOR','PRIVILEGES',\n            'PROCEDURAL','PROCEDURE','QUOTE','RANGE','READ','REASSIGN',\n            'RECHECK','RECURSIVE','REFERENCES','REINDEX','RELATIVE','RELEASE',\n            'RENAME','REPEATABLE','REPLACE','REPLICA','RESET','RESTART',\n            'RESTRICT','RETURN','RETURNING','RETURNS','REVOKE','RIGHT','ROLE',\n            'ROLLBACK','ROW','ROWS','RULE','SAVEPOINT','SCHEMA','SCROLL',\n            'SEARCH','SECOND',\n            'SECURITY','SELECT','SEQUENCE','SERIALIZABLE','SERVER','SESSION',\n            'SESSION_USER','SET','SETOF','SHARE','SHOW','SIMILAR','SIMPLE',\n            'SOME','STABLE','STANDALONE','START','STATEMENT','STATISTICS',\n            'STDIN','STDOUT','STORAGE','STRICT','STRIP','SUPERUSER',\n            'SYMMETRIC','SYSID','SYSTEM','TABLE','TABLESPACE','TEMP','TEMPLATE',\n            'TEMPORARY','THEN','TO','TRAILING','TRANSACTION','TREAT','TRIGGER',\n            'TRUE','TRUNCATE','TRUSTED','TYPE','UNBOUNDED','UNCOMMITTED',\n            'UNENCRYPTED','UNION','UNIQUE','UNKNOWN','UNLISTEN','UNTIL',\n            'UPDATE','USER','USING','VACUUM','VALID','VALIDATOR','VALUE',\n            'VALUES','VARIADIC','VERBOSE','VERSION','VIEW','VOLATILE','WHEN',\n            'WHERE','WHILE','WHITESPACE','WINDOW','WITH','WITHOUT','WORK','WRAPPER',\n            'WRITE','XMLATTRIBUTES','XMLCONCAT','XMLELEMENT','XMLFOREST',\n            'XMLPARSE','XMLPI','XMLROOT','XMLSERIALIZE','YEAR','YES','ZONE'\n            ),\n\n        //Put functions here\n        3 => array(\n            // mathematical functions\n            'ABS','CBRT','CEIL','CEILING','DEGREES','DIV','EXP','FLOOR','LN',\n            'LOG','MOD','PI','POWER','RADIANS','RANDOM','ROUND','SETSEED',\n            'SIGN','SQRT','TRUNC','WIDTH_BUCKET',\n            // trigonometric functions\n            'ACOS','ASIN','ATAN','ATAN2','COS','COT','SIN','TAN',\n            // string functions\n            'BIT_LENGTH','CHAR_LENGTH','CHARACTER_LENGTH','LOWER',\n            'OCTET_LENGTH','POSITION','SUBSTRING','TRIM','UPPER',\n            // other string functions\n            'ASCII','BTRIM','CHR','CONVERT','CONVERT_FROM','CONVERT_TO',\n            'DECODE','ENCODE','INITCAP','LENGTH','LPAD','LTRIM','MD5',\n            'PG_CLIENT_ENCODING','QUOTE_IDENT','QUOTE_LITERAL','QUOTE_NULLABLE',\n            'REGEXP_MATCHES','REGEXP_REPLACE','REGEXP_SPLIT_TO_ARRAY',\n            'REGEXP_SPLIT_TO_TABLE','REPEAT','RPAD','RTRIM','SPLIT_PART',\n            'STRPOS','SUBSTR','TO_ASCII','TO_HEX','TRANSLATE',\n            // binary string functions\n            'GET_BIT','GET_BYTE','SET_BIT','SET_BYTE',\n            // data type formatting functions\n            'TO_CHAR','TO_DATE','TO_NUMBER','TO_TIMESTAMP',\n            // date/time functions\n            'AGE','CLOCK_TIMESTAMP','DATE_PART','DATE_TRUNC','EXTRACT',\n            'ISFINITE','JUSTIFY_DAYS','JUSTIFY_HOURS','JUSTIFY_INTERVAL','NOW',\n            'STATEMENT_TIMESTAMP','TIMEOFDAY','TRANSACTION_TIMESTAMP',\n            // enum support functions\n            'ENUM_FIRST','ENUM_LAST','ENUM_RANGE',\n            // geometric functions\n            'AREA','CENTER','DIAMETER','HEIGHT','ISCLOSED','ISOPEN','NPOINTS',\n            'PCLOSE','POPEN','RADIUS','WIDTH',\n            'BOX','CIRCLE','LSEG','PATH','POINT','POLYGON',\n            // cidr and inet functions\n            'ABBREV','BROADCAST','FAMILY','HOST','HOSTMASK','MASKLEN','NETMASK',\n            'NETWORK','SET_MASKLEN',\n            // text search functions\n            'TO_TSVECTOR','SETWEIGHT','STRIP','TO_TSQUERY','PLAINTO_TSQUERY',\n            'NUMNODE','QUERYTREE','TS_RANK','TS_RANK_CD','TS_HEADLINE',\n            'TS_REWRITE','GET_CURRENT_TS_CONFIG','TSVECTOR_UPDATE_TRIGGER',\n            'TSVECTOR_UPDATE_TRIGGER_COLUMN',\n            'TS_DEBUG','TS_LEXISE','TS_PARSE','TS_TOKEN_TYPE','TS_STAT',\n            // XML functions\n            'XMLCOMMENT','XMLCONCAT','XMLELEMENT','XMLFOREST','XMLPI','XMLROOT',\n            'XMLAGG','XPATH','TABLE_TO_XMLSCHEMA','QUERY_TO_XMLSCHEMA',\n            'CURSOR_TO_XMLSCHEMA','TABLE_TO_XML_AND_XMLSCHEMA',\n            'QUERY_TO_XML_AND_XMLSCHEMA','SCHEMA_TO_XML','SCHEMA_TO_XMLSCHEMA',\n            'SCHEMA_TO_XML_AND_XMLSCHEMA','DATABASE_TO_XML',\n            'DATABASE_TO_XMLSCHEMA','DATABASE_TO_XML_AND_XMLSCHEMA',\n            // sequence manipulating functions\n            'CURRVAL','LASTVAL','NEXTVAL','SETVAL',\n            // conditional expressions\n            'COALESCE','NULLIF','GREATEST','LEAST',\n            // array functions\n            'ARRAY_APPEND','ARRAY_CAT','ARRAY_NDIMS','ARRAY_DIMS','ARRAY_FILL',\n            'ARRAY_LENGTH','ARRAY_LOWER','ARRAY_PREPEND','ARRAY_TO_STRING',\n            'ARRAY_UPPER','STRING_TO_ARRAY','UNNEST',\n            // aggregate functions\n            'ARRAY_AGG','AVG','BIT_AND','BIT_OR','BOOL_AND','BOOL_OR','COUNT',\n            'EVERY','MAX','MIN','STRING_AGG','SUM',\n            // statistic aggregate functions\n            'CORR','COVAR_POP','COVAR_SAMP','REGR_AVGX','REGR_AVGY',\n            'REGR_COUNT','REGR_INTERCEPT','REGR_R2','REGR_SLOPE','REGR_SXX',\n            'REGR_SXY','REGR_SYY','STDDEV','STDDEV_POP','STDDEV_SAMP',\n            'VARIANCE','VAR_POP','VAR_SAMP',\n            // window functions\n            'ROW_NUMBER','RANK','DENSE_RANK','PERCENT_RANK','CUME_DIST','NTILE',\n            'LAG','LEAD','FIRST_VALUE','LAST_VALUE','NTH_VALUE',\n            // set returning functions\n            'GENERATE_SERIES','GENERATE_SUBSCRIPTS'\n            // system information functions not currently included\n            ),\n\n        //Put your postgresql var\n        4 => array(\n            'client_encoding',\n            'standard_conforming_strings'\n            ),\n\n        //Put your data types here\n        5 => array(\n            'ARRAY','ABSTIME','BIGINT','BIGSERIAL','BINARY','BIT','BIT VARYING',\n            'BOOLEAN','BOX','BYTEA','CHAR','CHARACTER','CHARACTER VARYING',\n            'CIDR','CIRCLE','DATE','DECIMAL','DOUBLE PRECISION','ENUM','FLOAT',\n            'INET','INT','INTEGER','INTERVAL','NCHAR','REAL','SMALLINT','TEXT',\n            'TIME','TIMESTAMP','VARCHAR','XML',\n            ),\n\n        //        //Put your package names here\n        //        6 => array(\n        //            ),\n\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '=', '<', '>', '|'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        3 => false,\n        4 => false,\n        5 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            // regular keywords\n            1 => 'color: #000000; font-weight: bold; text-transform: uppercase;',\n            // inbuilt functions\n            3 => 'color: #333399; font-weight: bold; text-transform: uppercase;',\n            // postgresql var(?)\n            4 => 'color: #993333; font-weight: bold; text-transform: uppercase;',\n            // data types\n            5 => 'color: #993333; font-weight: bold; text-transform: uppercase;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #ff0000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        3 => '',\n        4 => 'http://paste.postgresql.fr/wiki/desc.php?def={FNAME}',\n        5 => '',\n        ),\n\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            1 => array(\n                'DISALLOWED_AFTER' => '(?![\\(\\w])'\n                ),\n\n            3 => array(\n                'DISALLOWED_AFTER' => '(?=\\()'\n                ),\n\n            4 => array(\n                'DISALLOWED_AFTER' => '(?![\\(\\w])'\n                ),\n\n            5 => array(\n                'DISALLOWED_AFTER' => '(?![\\(\\w])'\n                ),\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/postscript.php",
    "content": "<?php\n/*************************************************************************************\n * c.php\n * -----\n * Author: Benny Baumann (BenBE@geshi.org)\n * Copyright: (c) 2014 Benny Baumann (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2014/08/10\n *\n * PostScript language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2014/08/10 (1.0.8.13)\n *   -  First Release\n *\n * TODO (updated 2014/08/10)\n * -------------------------\n *  -  Get a list of inbuilt functions to add\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'PostScript',\n    'COMMENT_SINGLE' => array(0 => '%'),\n    'COMMENT_MULTI' => array(), //array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        // Strings\n        1 => \"/\\((?:\\\\\\\\[0-7]{3}|\\\\\\\\.|(?R)|[^)])*\\)/s\",\n        // Hex Strings\n        2 => \"/<(?!<)[0-9a-f\\s]*>/si\",\n        // ASCII-85 Strings\n        3 => \"/<~.*~>/si\",\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        ),\n    'NUMBERS' => array(\n        0 => GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_NONSCI | GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n        1 => \"\\d+#[0-9a-zA-Z]+\"\n        ),\n    'KEYWORDS' => array(\n        1 => array(\n            'countexecstack', 'def', 'dup', 'exch', 'exec', 'execstack', 'exit',\n            'for', 'if', 'ifelse', 'loop', 'pop', 'repeat',\n\n            'abs', 'add', 'atan', 'ceiling', 'cos', 'div', 'exp', 'floor',\n            'idiv', 'ln', 'log', 'mul', 'mod', 'neg', 'rand', 'round', 'rrand',\n            'sin', 'sqrt', 'srand', 'sub', 'truncate',\n\n            'and', 'bitshift', 'eq', 'ge', 'gt', 'le', 'lt', 'ne', 'not', 'or', 'xor',\n            ),\n        2 => array(\n            'false', 'null', 'true', 'version'\n            ),\n        3 => array(\n            'quit', 'start', 'stop', 'stopped',\n\n            'clear', 'cleartomark', 'copy', 'count', 'counttomark', 'index', 'roll',\n\n            'aload', 'astore', 'begin', 'countdictstack', 'currentdict',\n            'dictstack', 'end', 'errordict', 'forall', 'get',\n            'getinterval', 'known', 'length', 'load', 'maxlength', 'put',\n            'putinterval', 'store', 'systemdict', 'userdict', 'where',\n\n            'anchorsearch', 'search', 'token',\n\n            'cvi', 'cvlit', 'cvn', 'cvr', 'cvrs', 'cvs', 'cvx', 'executeonly',\n            'noaccess', 'rcheck', 'readonly', 'type', 'wcheck', 'xcheck',\n\n            'bytesavailable', 'closefile', 'currentfile', 'echo', 'file',\n            'flush', 'flushfile', 'print', 'prompt', 'pstack', 'read',\n            'readhexstring', 'readline', 'readstring', 'resetfile', 'restore',\n            'run', 'save', 'stack', 'status', 'vmstatus', 'write',\n            'writehexstring', 'writestring',\n\n            'bind', 'usertime',\n\n            'currentdash', 'currentflat', 'currentgray', 'currenthsbcolor',\n            'currentlinecap', 'currentlinejoin', 'currentlinewidth',\n            'currentmiterlimit', 'currentrgbcolor', 'currentscreen',\n            'currenttransfer', 'grestore', 'grestoreall', 'gsave',\n            'initgraphics', 'proc', 'setdash', 'setflat', 'setgray',\n            'sethsbcolor', 'setlinecap', 'setlinejoin', 'setlinewidth',\n            'setmiterlimit', 'setrgbcolor', 'setscreen', 'settransfer',\n\n            'concat', 'concatmatrix', 'currentmatrix', 'defaultmatrix',\n            'dtransform', 'identmatrix', 'idtransform', 'initmatrix',\n            'invertmatrix', 'itransform', 'rotate', 'scale', 'setmatrix',\n            'transform', 'translate',\n\n            'arc', 'arcn', 'arcto', 'charpath', 'clip', 'clippath', 'closepath',\n            'currentpoint', 'curveto', 'eoclip', 'eofill', 'erasepage', 'fill',\n            'flattenpath', 'image', 'imagemask', 'initclip', 'lineto', 'moveto',\n            'newpath', 'pathbbox', 'pathforall', 'rcurveto', 'reversepath',\n            'rlineto', 'rmoveto', 'stroke', 'strokepath',\n\n            'banddevice', 'copypage', 'framedevice', 'nulldevice', 'renderbands',\n            'showpage',\n\n            'ashow', 'awidthshow', 'currentfont', 'definefont', 'findfont',\n            'fontdict', 'kshow', 'makefont', 'scalefont', 'setfont', 'show',\n            'stringwidth', 'widthshow', 'FontDirectory', 'StandardEncoding',\n\n            'cachestatus', 'setcachedevice', 'setcachelimit', 'setcharwidth',\n\n            'dictfull', 'dictstackoverflow', 'dictstackunderflow',\n            'execstackoverflow', 'handleerror', 'interrupt', 'invalidaccess',\n            'invalidexit', 'invalidfileaccess', 'invalidfont', 'invalidrestore',\n            'ioerror', 'limitcheck', 'nocurrentpoint', 'rangecheck',\n            'stackoverflow', 'stackunderflow', 'syntaxerror', 'timeout',\n            'typecheck', 'undefined', 'undefinedfilename', 'undefinedresult',\n            'unmatchedmark', 'unregistered', 'VMerror'\n            ),\n        4 => array(\n            'array', 'dict', 'mark', 'matrix', 'string'\n            ),\n        ),\n    'SYMBOLS' => array(\n        0 => array('==', '=', '/', '//'),\n        1 => array('[', ']'),\n        2 => array('{', '}'),\n        3 => array('<<', '>>')\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000066; font-weight: bold;',\n            2 => 'color: #0000ff; font-weight: bold;',\n            3 => 'color: #000000; font-weight: bold;',\n            4 => 'color: #993333; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            0 => 'color: #333333; font-style: italic;',\n            1 => 'color: #339933;',\n            2 => 'color: #006600;',\n            3 => 'color: #666666;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            'HARD' => ''\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000dd;',\n            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;',\n            1 => 'color: #009900;',\n            2 => 'color: #009900;',\n            3 => 'color: #009900;'\n            ),\n        'REGEXPS' => array(\n            1 => 'color: #006600;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        1 => \"#(?<=\\\\x2F)[\\\\w-]+#\"\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/povray.php",
    "content": "<?php\n/*************************************************************************************\n * povray.php\n * --------\n * Author: Carl Fürstenberg (azatoth@gmail.com)\n * Copyright: © 2007 Carl Fürstenberg\n * Release Version: 1.0.9.1\n * Date Started: 2008/07/11\n *\n * Povray language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/07/11 (1.0.8)\n *   -  initial import to GeSHi SVN\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'POVRAY',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'yes', 'wrinkles', 'wood', 'width', 'waves', 'water_level', 'warp', 'vturbulence',\n            'vstr', 'vrotate', 'vnormalize', 'vlength', 'vcross', 'vaxis_rotate', 'variance', 'v_steps',\n            'uv_mapping', 'utf8', 'use_index', 'use_colour', 'use_color', 'use_alpha', 'up', 'undef',\n            'ultra_wide_angle', 'u_steps', 'type', 'turbulence', 'turb_depth', 'ttf', 'true', 'triangle_wave',\n            'translate', 'transform', 'trace', 'toroidal', 'tolerance', 'tiles', 'tile2', 'tightness',\n            'tiff', 'threshold', 'thickness', 'tga', 'texture_map', 'target', 'sys', 'sum',\n            'substr', 'sturm', 'strupr', 'strlwr', 'strength', 'str', 'statistics', 'sqr',\n            'spotted', 'spotlight', 'split_union', 'spline', 'spiral2', 'spiral1', 'spherical', 'specular',\n            'spacing', 'solid', 'smooth', 'slope', 'slice', 'sky', 'size', 'sine_wave',\n            'shadowless', 'scattering', 'scallop_wave', 'scale', 'save_file', 'samples', 'roughness', 'rotate',\n            'ripples', 'right', 'rgbt', 'rgbft', 'rgbf', 'rgb', 'repeat', 'render',\n            'refraction', 'reflection_exponent', 'recursion_limit', 'reciprocal', 'ratio', 'ramp_wave', 'radius', 'radial',\n            'quilted', 'quick_colour', 'quick_color', 'quaternion', 'quadratic_spline', 'pwr', 'projected_through', 'prod',\n            'pretrace_start', 'pretrace_end', 'precompute', 'precision', 'ppm', 'pow', 'pot', 'poly_wave',\n            'point_at', 'png', 'planar', 'pigment_pattern', 'pi', 'phong_size', 'phong', 'phase',\n            'pgm', 'perspective', 'pattern', 'pass_through', 'parallel', 'panoramic', 'orthographic', 'orientation',\n            'orient', 'open', 'onion', 'once', 'on', 'omnimax', 'omega', 'offset',\n            'off', 'octaves', 'number_of_waves', 'noise_generator', 'no_shadow', 'no_reflection', 'no_image', 'no_bump_scale',\n            'no', 'nearest_count', 'natural_spline', 'mortar', 'minimum_reuse', 'min_extent', 'metric', 'method',\n            'metallic', 'media_interaction', 'media_attenuation', 'media', 'max_trace_level', 'max_trace', 'max_sample', 'max_iteration',\n            'max_intersections', 'max_gradient', 'max_extent', 'matrix', 'material_map', 'marble', 'map_type', 'mandel',\n            'major_radius', 'magnet', 'low_error_factor', 'look_at', 'location', 'load_file', 'linear_sweep', 'linear_spline',\n            'leopard', 'lambda', 'julia', 'jpeg', 'jitter', 'irid_wavelength', 'ior', 'inverse',\n            'intervals', 'interpolate', 'internal', 'inside_vector', 'inside', 'initial_frame', 'initial_clock', 'image_width',\n            'image_pattern', 'image_height', 'iff', 'hypercomplex', 'hollow', 'hierarchy', 'hf_gray_16', 'hexagon',\n            'gray_threshold', 'granite', 'gradient', 'global_lights', 'gif', 'gather', 'fresnel', 'frequency',\n            'frame_number', 'form', 'fog_type', 'fog_offset', 'fog_alt', 'focal_point', 'flip', 'flatness',\n            'fisheye', 'final_frame', 'final_clock', 'false', 'falloff_angle', 'falloff', 'fade_power', 'fade_distance',\n            'fade_colour', 'fade_color', 'facets', 'extinction', 'exterior', 'exponent', 'expand_thresholds', 'evaluate',\n            'error_bound', 'emission', 'eccentricity', 'double_illuminate', 'distance', 'dist_exp', 'dispersion_samples', 'dispersion',\n            'direction', 'diffuse', 'df3', 'dents', 'density_map', 'density_file', 'density', 'cylindrical',\n            'cutaway_textures', 'cubic_wave', 'cubic_spline', 'cube', 'crand', 'crackle', 'count', 'coords',\n            'control1', 'control0', 'conserve_energy', 'conic_sweep', 'confidence', 'concat', 'composite', 'component',\n            'colour_map', 'colour', 'color', 'collect', 'clock_on', 'clock_delta', 'clock', 'circular',\n            'chr', 'checker', 'charset', 'cells', 'caustics', 'bumps', 'bump_size', 'brilliance',\n            'brightness', 'brick_size', 'brick', 'bozo', 'boxed', 'blur_samples', 'black_hole', 'bezier_spline',\n            'b_spline', 'average', 'autostop', 'assumed_gamma', 'ascii', 'array', 'area_light', 'arc_angle',\n            'append', 'aperture', 'angle', 'ambient_light', 'ambient', 'always_sample', 'altitude', 'alpha',\n            'all_intersections', 'all', 'agate_turb', 'agate', 'adc_bailout', 'adaptive', 'accuracy', 'absorption',\n            'aa_threshold', 'aa_level', 'reflection'\n            ),\n        2 => array(\n            'abs', 'acos', 'acosh', 'asc', 'asin', 'asinh', 'atan', 'atanh',\n            'atan2', 'ceil', 'cos', 'cosh', 'defined', 'degrees', 'dimensions', 'dimension_size',\n            'div', 'exp', 'file_exists', 'floor', 'int', 'ln', 'log', 'max',\n            'min', 'mod', 'pov', 'radians', 'rand', 'seed', 'select', 'sin',\n            'sinh', 'sqrt', 'strcmp', 'strlen', 'tan', 'tanh', 'val', 'vdot',\n            'vlenght',\n            ),\n        3 => array (\n            'x', 'y', 'z', 't', 'u', 'v', 'red', 'blue',\n            'green', 'filter', 'transmit', 'gray', 'e',\n            ),\n        4 => array (\n            'camera', 'background', 'fog', 'sky_sphere', 'rainbow', 'global_settings', 'radiosity', 'photon',\n            'object', 'blob', 'sphere', 'cylinder', 'box', 'cone', 'height_field', 'julia_fractal',\n            'lathe', 'prism', 'sphere_sweep', 'superellipsoid', 'sor', 'text', 'torus', 'bicubic_patch',\n            'disc', 'mesh', 'triangle', 'smooth_triangle', 'mesh2', 'vertex_vectors', 'normal_vectors', 'uv_vectors',\n            'texture_list', 'face_indices', 'normal_indices', 'uv_indices', 'texture', 'polygon', 'plane', 'poly',\n            'cubic', 'quartic', 'quadric', 'isosurface', 'function', 'contained_by', 'parametric', 'pigment',\n            'union', 'intersection', 'difference', 'merge', 'light_source', 'looks_like', 'light_group', 'clipped_by',\n            'bounded_by', 'interior', 'material', 'interior_texture', 'normal', 'finish', 'color_map', 'pigment_map',\n            'image_map', 'bump_map', 'slope_map', 'normal_map', 'irid', 'photons',\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '!',\n        '@', '%', '&', '*', '|', '/', '<',\n        '>', '+', '-', '.', '=', '<=', '>=',\n        '!=',\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #a63123;',\n            2 => 'color: #2312bc;',\n            3 => 'color: #cc1122; font-weight: bold;',\n            4 => 'color: #116688; font-weight: bold;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n//            2 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66aa;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;',\n            2 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #6666cc; font-weight: bold;',\n            1 => 'color: #66cc66; font-weight: bold;',\n            2 => 'color: #66cc66; font-weight: bold;'\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            3 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        # normal hash lines\n        0 => '\\#(?!(include|declare|local|fopen|fclose|read|write|default|version|if|else|end|ifdef|ifndef|switch|case|range|break|while|debug|error|warning|macro) )[[:word:]]*',\n        # syntax functions hash thingis\n        1 => \"\\#(include|declare|local|fopen|fclose|read|write|default|version|if|else|end|ifdef|ifndef|switch|case|range|break|while|debug|error|warning|macro)\",\n        2 => array(\n            GESHI_SEARCH  => \"([a-zA-Z]+)(\\n)(.*)(\\n)(\\\\1;?)\",\n            GESHI_REPLACE => '\\3',\n            GESHI_BEFORE => '\\1\\2',\n            GESHI_AFTER => '\\4\\5',\n            GESHI_MODIFIERS => 'siU'\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        1 => true,\n        2 => true,\n        3 => true\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/powerbuilder.php",
    "content": "<?php\n/*************************************************************************************\n * powerbuilder.php\n * ------\n * Author: Doug Porter (powerbuilder.geshi@gmail.com)\n * Copyright: (c) 2009 Doug Porter\n * Release Version: 1.0.9.1\n * Date Started: 2009/07/13\n *\n * PowerBuilder (PowerScript) language file for GeSHi.\n *\n * Based on the TextPad Syntax file for PowerBuilder\n * built by Rafi Avital\n *\n * CHANGES\n * -------\n * 2009/07/13 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2009/07/13)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'PowerBuilder',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '~',\n    'KEYWORDS' => array(\n        1 => array(\n            'alias', 'and', 'autoinstantiate', 'call',\n            'case', 'catch', 'choose', 'close', 'commit', 'connect',\n            'constant', 'continue', 'create', 'cursor', 'declare',\n            'delete', 'describe', 'descriptor', 'destroy', 'disconnect',\n            'do', 'dynamic', 'else', 'elseif', 'end', 'enumerated',\n            'event', 'execute', 'exit', 'external', 'false', 'fetch',\n            'first', 'for', 'forward', 'from', 'function', 'global',\n            'goto', 'halt', 'if', 'immediate', 'indirect', 'insert',\n            'into', 'intrinsic', 'is', 'last', 'library', 'loop', 'next',\n            'not', 'of', 'on', 'open', 'or', 'parent', 'post', 'prepare',\n            'prior', 'private', 'privateread', 'privatewrite', 'procedure',\n            'protected', 'protectedread', 'protectedwrite', 'prototypes',\n            'public', 'readonly', 'ref', 'return', 'rollback', 'rpcfunc',\n            'select', 'selectblob', 'shared', 'static', 'step', 'subroutine',\n            'super', 'system', 'systemread', 'systemwrite', 'then', 'this',\n            'to', 'trigger', 'true', 'try', 'type', 'until', 'update', 'updateblob',\n            'using', 'variables', 'where', 'while', 'with', 'within'\n            ),\n        2 => array (\n            'blob', 'boolean', 'char', 'character', 'date', 'datetime',\n            'dec', 'decimal',\n            'double', 'int', 'integer', 'long', 'real', 'string', 'time',\n            'uint', 'ulong', 'unsignedint', 'unsignedinteger', 'unsignedlong'\n            ),\n        3 => array (\n            'abortretryignore!', 'actbegin!', 'acterror!', 'actesql!',\n            'actgarbagecollect!', 'activate!', 'activatemanually!',\n            'activateondoubleclick!',\n            'activateongetfocus!', 'actline!', 'actobjectcreate!', 'actobjectdestroy!',\n            'actprofile!', 'actroutine!', 'acttrace!', 'actual!',\n            'actuser!', 'adoresultset!', 'adtdate!', 'adtdatetime!',\n            'adtdefault!', 'adtdouble!', 'adttext!', 'adttime!',\n            'aix!', 'alignatbottom!', 'alignatleft!', 'alignatright!',\n            'alignattop!', 'all!', 'allowpartialchanges!', 'alpha!',\n            'ansi!', 'any!', 'anycase!', 'anyfont!',\n            'append!', 'application!', 'arabiccharset!', 'area3d!',\n            'areagraph!', 'arraybounds!', 'arrow!', 'ascending!',\n            'asstatement!', 'atbottom!', 'atleft!', 'atright!',\n            'attop!', 'autosize!', 'background!', 'balticcharset!',\n            'bar3dgraph!', 'bar3dobjgraph!', 'bargraph!', 'barstack3dobjgraph!',\n            'barstackgraph!', 'bdiagonal!', 'beam!', 'begin!',\n            'begindrag!', 'beginlabeledit!', 'beginrightdrag!', 'behind!',\n            'blob!', 'bold!', 'boolean!', 'bottom!',\n            'boundedarray!', 'box!', 'byreferenceargument!', 'byvalueargument!',\n            'cancel!', 'cascade!', 'cascaded!', 'category!',\n            'center!', 'character!', 'charsetansi!', 'charsetansiarabic!',\n            'charsetansihebrew!', 'charsetdbcsjapanese!', 'charsetunicode!', 'checkbox!',\n            'child!', 'childtreeitem!', 'chinesebig5!', 'classdefinition!',\n            'classdefinitionobject!', 'classorstructuretype!', 'clicked!', 'clip!',\n            'clipboard!', 'clipformatbitmap!', 'clipformatdib!', 'clipformatdif!',\n            'clipformatenhmetafile!', 'clipformathdrop!', 'clipformatlocale!',\n            'clipformatmetafilepict!',\n            'clipformatoemtext!', 'clipformatpalette!', 'clipformatpendata!', 'clipformatriff!',\n            'clipformatsylk!', 'clipformattext!', 'clipformattiff!', 'clipformatunicodetext!',\n            'clipformatwave!', 'clock!', 'close!', 'closequery!',\n            'col3dgraph!', 'col3dobjgraph!', 'colgraph!',\n            'colstack3dobjgraph!', 'colstackgraph!', 'columnclick!', 'commandbutton!',\n            'connection!', 'connectioninfo!', 'connectobject!', 'connectprivilege!',\n            'connectwithadminprivilege!', 'constructor!', 'containsany!', 'containsembeddedonly!',\n            'containslinkedonly!', 'contextinformation!', 'contextkeyword!', 'continuous!',\n            'corbaobject!', 'corbaunion!', 'cplusplus!', 'cross!',\n            'csv!', 'cumulative!', 'cumulativepercent!', 'currenttreeitem!',\n            'customvisual!', 'dash!', 'dashdot!', 'dashdotdot!',\n            'data!', 'datachange!', 'datamodified!', 'datastore!',\n            'datawindow!', 'datawindowchild!', 'date!', 'datemask!',\n            'datetime!', 'datetimemask!', 'dbase2!', 'dbase3!',\n            'dberror!', 'deactivate!', 'decimal!', 'decimalmask!',\n            'decorative!', 'default!', 'defaultcharset!', 'delete!',\n            'deleteallitems!', 'deleteitem!', 'descending!', 'desktop!',\n            'destructor!', 'detail!', 'diamond!', 'dif!',\n            'dirall!', 'dirapplication!', 'dirdatawindow!', 'directionall!',\n            'directiondown!', 'directionleft!', 'directionright!', 'directionup!',\n            'dirfunction!', 'dirmenu!', 'dirpipeline!', 'dirproject!',\n            'dirquery!', 'dirstructure!', 'diruserobject!', 'dirwindow!',\n            'displayasactivexdocument!', 'displayascontent!', 'displayasicon!', 'dot!',\n            'double!', 'doubleclicked!', 'dragdrop!', 'dragenter!',\n            'dragleave!', 'dragobject!', 'dragwithin!', 'drawobject!',\n            'dropdownlistbox!', 'dropdownpicturelistbox!', 'drophighlighttreeitem!', 'dwobject!',\n            'dynamicdescriptionarea!', 'dynamicstagingarea!', 'easteuropecharset!', 'editchanged!',\n            'editmask!', 'editmenu!', 'encodingansi!', 'encodingutf8!',\n            'encodingutf16le!', 'encodingutf16be!', 'end!', 'endlabeledit!',\n            'enterprise!', 'enterpriseonlyfeature!', 'enumeratedtype!', 'enumerationdefinition!',\n            'enumerationitemdefinition!', 'environment!', 'error!', 'errorlogging!',\n            'eventnotexisterror!', 'eventwrongprototypeerror!', 'excel!', 'excel5!',\n            'exceptionfail!', 'exceptionignore!', 'exceptionretry!',\n            'exceptionsubstitutereturnvalue!',\n            'exclamation!', 'exclude!', 'exportapplication!', 'exportdatawindow!',\n            'exportfunction!', 'exportmenu!', 'exportpipeline!', 'exportproject!',\n            'exportquery!', 'exportstructure!', 'exportuserobject!', 'exportwindow!',\n            'externalvisual!', 'extobject!', 'failonanyconflict!', 'fdiagonal!',\n            'featurenotsupportederror!', 'filealreadyopenerror!', 'filecloseerror!',\n            'fileexists!',\n            'fileinvalidformaterror!', 'filemenu!', 'filenotopenerror!', 'filenotseterror!',\n            'filereaderror!', 'filetyperichtext!', 'filetypetext!', 'filewriteerror!',\n            'filter!', 'first!', 'firstvisibletreeitem!', 'fixed!',\n            'floating!', 'focusrect!', 'footer!', 'foreground!',\n            'frombeginning!', 'fromcurrent!', 'fromend!', 'functionobject!',\n            'gb231charset!', 'getfocus!', 'graph!', 'graphicobject!',\n            'graxis!', 'grdispattr!', 'greekcharset!', 'groupbox!',\n            'hand!', 'hangeul!', 'header!', 'hebrewcharset!',\n            'helpmenu!', 'hide!', 'horizontal!', 'hotlinkalarm!',\n            'hourglass!', 'hppa!', 'hprogressbar!', 'hpux!',\n            'hscrollbar!', 'hticksonboth!', 'hticksonbottom!', 'hticksonneither!',\n            'hticksontop!', 'htmltable!', 'htrackbar!', 'i286!',\n            'i386!', 'i486!', 'icon!', 'icons!',\n            'idle!', 'importdatawindow!', 'indent!', 'index!',\n            'inet!', 'information!', 'inplace!', 'inputfieldselected!',\n            'insertitem!', 'inside!', 'integer!', 'internetresult!',\n            'italic!', 'itemchanged!', 'itemchanging!', 'itemcollapsed!',\n            'itemcollapsing!', 'itemerror!', 'itemexpanded!', 'itemexpanding!',\n            'itemfocuschanged!', 'itempopulate!', 'jaguarorb!', 'johabcharset!',\n            'justify!', 'key!', 'key0!', 'key1!',\n            'key2!', 'key3!', 'key4!', 'key5!',\n            'key6!', 'key7!', 'key8!', 'key9!',\n            'keya!', 'keyadd!', 'keyalt!', 'keyapps!',\n            'keyb!', 'keyback!', 'keybackquote!', 'keybackslash!',\n            'keyc!', 'keycapslock!', 'keycomma!', 'keycontrol!',\n            'keyd!', 'keydash!', 'keydecimal!', 'keydelete!',\n            'keydivide!', 'keydownarrow!', 'keye!', 'keyend!',\n            'keyenter!', 'keyequal!', 'keyescape!', 'keyf!',\n            'keyf1!', 'keyf10!', 'keyf11!', 'keyf12!',\n            'keyf2!', 'keyf3!', 'keyf4!', 'keyf5!',\n            'keyf6!', 'keyf7!', 'keyf8!', 'keyf9!',\n            'keyg!', 'keyh!', 'keyhome!', 'keyi!',\n            'keyinsert!', 'keyj!', 'keyk!', 'keyl!',\n            'keyleftarrow!', 'keyleftbracket!', 'keyleftbutton!', 'keyleftwindows!',\n            'keym!', 'keymiddlebutton!', 'keymultiply!', 'keyn!',\n            'keynull!', 'keynumlock!', 'keynumpad0!', 'keynumpad1!',\n            'keynumpad2!', 'keynumpad3!', 'keynumpad4!', 'keynumpad5!',\n            'keynumpad6!', 'keynumpad7!', 'keynumpad8!', 'keynumpad9!',\n            'keyo!', 'keyp!', 'keypagedown!', 'keypageup!',\n            'keypause!', 'keyperiod!', 'keyprintscreen!', 'keyq!',\n            'keyquote!', 'keyr!', 'keyrightarrow!', 'keyrightbracket!',\n            'keyrightbutton!', 'keyrightwindows!', 'keys!', 'keyscrolllock!',\n            'keysemicolon!', 'keyshift!', 'keyslash!', 'keyspacebar!',\n            'keysubtract!', 'keyt!', 'keytab!', 'keyu!',\n            'keyuparrow!', 'keyv!', 'keyw!', 'keyword!',\n            'keyx!', 'keyy!', 'keyz!', 'languageafrikaans!',\n            'languagealbanian!', 'languagearabicalgeria!', 'languagearabicbahrain!',\n            'languagearabicegypt!',\n            'languagearabiciraq!', 'languagearabicjordan!', 'languagearabickuwait!',\n            'languagearabiclebanon!',\n            'languagearabiclibya!', 'languagearabicmorocco!', 'languagearabicoman!',\n            'languagearabicqatar!',\n            'languagearabicsaudiarabia!', 'languagearabicsyria!', 'languagearabictunisia!',\n            'languagearabicuae!',\n            'languagearabicyemen!', 'languagebasque!', 'languagebulgarian!', 'languagebyelorussian!',\n            'languagecatalan!', 'languagechinese!', 'languagechinesehongkong!', 'languagechinesesimplified!',\n            'languagechinesesingapore!', 'languagechinesetraditional!', 'languagecroatian!', 'languageczech!',\n            'languagedanish!', 'languagedutch!', 'languagedutchbelgian!', 'languagedutchneutral!',\n            'languageenglish!', 'languageenglishaustralian!', 'languageenglishcanadian!',\n            'languageenglishirish!',\n            'languageenglishnewzealand!', 'languageenglishsouthafrica!', 'languageenglishuk!',\n            'languageenglishus!',\n            'languageestonian!', 'languagefaeroese!', 'languagefarsi!', 'languagefinnish!',\n            'languagefrench!', 'languagefrenchbelgian!', 'languagefrenchcanadian!', 'languagefrenchluxembourg!',\n            'languagefrenchneutral!', 'languagefrenchswiss!', 'languagegerman!', 'languagegermanaustrian!',\n            'languagegermanliechtenstein!', 'languagegermanluxembourg!', 'languagegermanneutral!',\n            'languagegermanswiss!',\n            'languagegreek!', 'languagehebrew!', 'languagehindi!', 'languagehungarian!',\n            'languageicelandic!', 'languageindonesian!', 'languageitalian!', 'languageitalianneutral!',\n            'languageitalianswiss!', 'languagejapanese!', 'languagekorean!', 'languagekoreanjohab!',\n            'languagelatvian!', 'languagelithuanian!', 'languagemacedonian!', 'languagemaltese!',\n            'languageneutral!', 'languagenorwegian!', 'languagenorwegianbokmal!', 'languagenorwegiannynorsk!',\n            'languagepolish!', 'languageportuguese!', 'languageportuguese_brazilian!',\n            'languageportugueseneutral!',\n            'languagerhaetoromanic!', 'languageromanian!', 'languageromanianmoldavia!', 'languagerussian!',\n            'languagerussianmoldavia!', 'languagesami!', 'languageserbian!', 'languageslovak!',\n            'languageslovenian!', 'languagesorbian!', 'languagesortnative!', 'languagesortunicode!',\n            'languagespanish!', 'languagespanishcastilian!', 'languagespanishmexican!', 'languagespanishmodern!',\n            'languagesutu!', 'languageswedish!', 'languagesystemdefault!', 'languagethai!',\n            'languagetsonga!', 'languagetswana!', 'languageturkish!', 'languageukrainian!',\n            'languageurdu!', 'languageuserdefault!', 'languagevenda!', 'languagexhosa!',\n            'languagezulu!', 'last!', 'layer!', 'layered!',\n            'Left!', 'leftmargin!', 'line!', 'line3d!',\n            'linear!', 'linecolor!', 'linedown!', 'linegraph!',\n            'lineleft!', 'linemode!', 'lineright!', 'lineup!',\n            'linkupdateautomatic!', 'linkupdatemanual!', 'listbox!', 'listview!',\n            'listviewitem!', 'listviewlargeicon!', 'listviewlist!', 'listviewreport!',\n            'listviewsmallicon!', 'lockread!', 'lockreadwrite!', 'lockwrite!',\n            'log10!', 'loge!', 'long!', 'losefocus!',\n            'lower!', 'lowered!', 'm68000!', 'm68020!',\n            'm68030!', 'm68040!', 'maccharset!', 'macintosh!',\n            'mailattach!', 'mailbcc!', 'mailbodyasfile!', 'mailcc!',\n            'maildownload!', 'mailentiremessage!', 'mailenvelopeonly!', 'mailfiledescription!',\n            'mailmessage!', 'mailnewsession!', 'mailnewsessionwithdownload!', 'mailole!',\n            'mailolestatic!', 'mailoriginator!', 'mailrecipient!', 'mailreturnaccessdenied!',\n            'mailreturnattachmentnotfound!', 'mailreturnattachmentopenfailure!',\n            'mailreturnattachmentwritefailure!', 'mailreturndiskfull!',\n            'mailreturnfailure!', 'mailreturninsufficientmemory!', 'mailreturninvalidmessage!',\n            'mailreturnloginfailure!',\n            'mailreturnmessageinuse!', 'mailreturnnomessages!', 'mailreturnsuccess!', 'mailreturntexttoolarge!',\n            'mailreturntoomanyfiles!', 'mailreturntoomanyrecipients!', 'mailreturntoomanysessions!',\n            'mailreturnunknownrecipient!',\n            'mailreturnuserabort!', 'mailsession!', 'mailsuppressattachments!', 'mailto!',\n            'main!', 'maximized!', 'mdi!', 'mdiclient!',\n            'mdihelp!', 'menu!', 'menucascade!', 'menuitemtypeabout!',\n            'menuitemtypeexit!', 'menuitemtypehelp!', 'menuitemtypenormal!', 'merge!',\n            'message!', 'minimized!', 'mips!', 'modelexistserror!',\n            'modelnotexistserror!', 'modern!', 'modified!', 'mousedown!',\n            'mousemove!', 'mouseup!', 'moved!', 'multiline!',\n            'multilineedit!', 'mutexcreateerror!', 'new!', 'newmodified!',\n            'next!', 'nexttreeitem!', 'nextvisibletreeitem!', 'noborder!',\n            'noconnectprivilege!', 'nolegend!', 'none!', 'nonvisualobject!',\n            'normal!', 'nosymbol!', 'notic!', 'notmodified!',\n            'notopmost!', 'notype!', 'numericmask!', 'objhandle!',\n            'oem!', 'off!', 'offsite!', 'ok!',\n            'okcancel!', 'olecontrol!', 'olecustomcontrol!', 'oleobject!',\n            'olestorage!', 'olestream!', 'oletxnobject!', 'omcontrol!',\n            'omcustomcontrol!', 'omembeddedcontrol!', 'omobject!', 'omstorage!',\n            'omstream!', 'open!', 'orb!', 'original!',\n            'osf1!', 'other!', 'outside!', 'oval!',\n            'pagedown!', 'pageleft!', 'pageright!', 'pageup!',\n            'parenttreeitem!', 'pbtocppobject!', 'pentium!', 'percentage!',\n            'picture!', 'picturebutton!', 'picturehyperlink!', 'picturelistbox!',\n            'pictureselected!', 'pie3d!', 'piegraph!', 'pipeend!',\n            'pipeline!', 'pipemeter!', 'pipestart!', 'popup!',\n            'powerobject!', 'powerpc!', 'powerrs!', 'ppc601!',\n            'ppc603!', 'ppc604!', 'previewdelete!', 'previewfunctionreselectrow!',\n            'previewfunctionretrieve!', 'previewfunctionupdate!', 'previewinsert!', 'previewselect!',\n            'previewupdate!', 'previoustreeitem!', 'previousvisibletreeitem!', 'primary!',\n            'printend!', 'printfooter!', 'printheader!', 'printpage!',\n            'printstart!', 'prior!', 'private!', 'process!',\n            'profilecall!', 'profileclass!', 'profileline!', 'profileroutine!',\n            'profiling!', 'protected!', 'psreport!', 'public!',\n            'question!', 'radiobutton!', 'raised!', 'rbuttondown!',\n            'rbuttonup!', 'read!', 'readonlyargument!', 'real!',\n            'rectangle!', 'regbinary!', 'regexpandstring!', 'reglink!',\n            'regmultistring!', 'regstring!', 'regulong!', 'regulongbigendian!',\n            'remoteexec!', 'remotehotlinkstart!', 'remotehotlinkstop!', 'remoteobject!',\n            'remoterequest!', 'remotesend!', 'rename!', 'replace!',\n            'resize!', 'resizeborder!', 'response!', 'resultset!',\n            'resultsets!', 'retrieveend!', 'retrieverow!', 'retrievestart!',\n            'retrycancel!', 'richtextedit!', 'Right!', 'rightclicked!',\n            'rightdoubleclicked!', 'rightmargin!', 'rnddays!', 'rnddefault!',\n            'rndhours!', 'rndmicroseconds!', 'rndminutes!', 'rndmonths!',\n            'rndnumber!', 'rndseconds!', 'rndyears!', 'roman!',\n            'roottreeitem!', 'roundrectangle!', 'routineesql!', 'routineevent!',\n            'routinefunction!', 'routinegarbagecollection!', 'routineobjectcreation!',\n            'routineobjectdestruction!',\n            'routineroot!', 'rowfocuschanged!', 'russiancharset!', 'save!',\n            'scalartype!', 'scattergraph!', 'script!', 'scriptdefinition!',\n            'scriptevent!', 'scriptfunction!', 'scrollhorizontal!', 'scrollvertical!',\n            'selected!', 'selectionchanged!', 'selectionchanging!', 'series!',\n            'service!', 'shade!', 'shadowbox!', 'shared!',\n            'sharedobjectcreateinstanceerror!', 'sharedobjectcreatepbsessionerror!',\n            'sharedobjectexistserror!', 'sharedobjectnotexistserror!',\n            'shiftjis!', 'show!', 'simpletype!', 'simpletypedefinition!',\n            'singlelineedit!', 'size!', 'sizenesw!', 'sizens!',\n            'sizenwse!', 'sizewe!', 'sol2!', 'solid!',\n            'sort!', 'sourcepblerror!', 'spacing1!', 'spacing15!',\n            'spacing2!', 'sparc!', 'sqlinsert!', 'sqlpreview!',\n            'square!', 'sslcallback!', 'sslserviceprovider!', 'statichyperlink!',\n            'statictext!', 'stgdenynone!', 'stgdenyread!', 'stgdenywrite!',\n            'stgexclusive!', 'stgread!', 'stgreadwrite!', 'stgwrite!',\n            'stopsign!', 'straddle!', 'streammode!', 'stretch!',\n            'strikeout!', 'string!', 'stringmask!', 'structure!',\n            'stylebox!', 'stylelowered!', 'styleraised!', 'styleshadowbox!',\n            'subscript!', 'success!', 'superscript!', 'swiss!',\n            'sylk!', 'symbol!', 'symbolhollowbox!', 'symbolhollowcircle!',\n            'symbolhollowdiamond!', 'symbolhollowdownarrow!', 'symbolhollowuparrow!', 'symbolplus!',\n            'symbolsolidbox!', 'symbolsolidcircle!', 'symbolsoliddiamond!', 'symbolsoliddownarrow!',\n            'symbolsoliduparrow!', 'symbolstar!', 'symbolx!', 'system!',\n            'systemerror!', 'systemfunctions!', 'systemkey!', 'tab!',\n            'tabsonbottom!', 'tabsonbottomandtop!', 'tabsonleft!', 'tabsonleftandright!',\n            'tabsonright!', 'tabsonrightandleft!', 'tabsontop!', 'tabsontopandbottom!',\n            'text!', 'thaicharset!', 'thread!', 'tile!',\n            'tilehorizontal!', 'time!', 'timemask!', 'timer!',\n            'timernone!', 'timing!', 'tobottom!', 'toolbarmoved!',\n            'top!', 'topic!', 'topmost!', 'totop!',\n            'traceactivitynode!', 'traceatomic!', 'tracebeginend!', 'traceerror!',\n            'traceesql!', 'tracefile!', 'tracegarbagecollect!', 'tracegeneralerror!',\n            'tracein!', 'traceline!', 'tracenomorenodes!', 'tracenotstartederror!',\n            'traceobject!', 'traceout!', 'traceroutine!', 'tracestartederror!',\n            'tracetree!', 'tracetreeerror!', 'tracetreeesql!', 'tracetreegarbagecollect!',\n            'tracetreeline!', 'tracetreenode!', 'tracetreeobject!', 'tracetreeroutine!',\n            'tracetreeuser!', 'traceuser!', 'transaction!', 'transactionserver!',\n            'transparent!', 'transport!', 'treeview!', 'treeviewitem!',\n            'turkishcharset!', 'typeboolean!', 'typecategory!', 'typecategoryaxis!',\n            'typecategorylabel!', 'typedata!', 'typedate!', 'typedatetime!',\n            'typedecimal!', 'typedefinition!', 'typedouble!', 'typegraph!',\n            'typeinteger!', 'typelegend!', 'typelong!', 'typereal!',\n            'typeseries!', 'typeseriesaxis!', 'typeserieslabel!', 'typestring!',\n            'typetime!', 'typetitle!', 'typeuint!', 'typeulong!',\n            'typeunknown!', 'typevalueaxis!', 'typevaluelabel!', 'ultrasparc!',\n            'unboundedarray!', 'underline!', 'underlined!', 'unsignedinteger!',\n            'unsignedlong!', 'unsorted!', 'uparrow!', 'updateend!',\n            'updatestart!', 'upper!', 'userdefinedsort!', 'userobject!',\n            'variable!', 'variableargument!', 'variablecardinalitydefinition!', 'variabledefinition!',\n            'variableglobal!', 'variableinstance!', 'variablelocal!', 'variableshared!',\n            'varlistargument!', 'vbxvisual!', 'vcenter!', 'vertical!',\n            'vietnamesecharset!', 'viewchange!', 'vprogressbar!', 'vscrollbar!',\n            'vticksonboth!', 'vticksonleft!', 'vticksonneither!', 'vticksonright!',\n            'vtrackbar!', 'window!', 'windowmenu!', 'windowobject!',\n            'windows!', 'windowsnt!', 'wk1!', 'wks!',\n            'wmf!', 'write!', 'xpixelstounits!', 'xunitstopixels!',\n            'xvalue!', 'yesno!', 'yesnocancel!', 'ypixelstounits!',\n            'yunitstopixels!',\n            'yvalue!',\n            'zoom!'\n            )\n        ),\n    'SYMBOLS' => array(\n            0 => array('(', ')', '[', ']', '{', '}'),\n            1 => array('|'),\n            2 => array('+', '-', '*', '/'),\n            3 => array('=', '&lt;', '>', '^')\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #008000; font-weight: bold;',\n            2 => 'color: #990099; font-weight: bold;',\n            3 => 'color: #330099; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #0000ff; font-weight: bold;',\n            'MULTI' => 'color: #0000ff; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #800000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #330099; font-weight: bold;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000;',\n            1 => 'color: #ffff00; background-color:#993300; font-weight: bold',\n            2 => 'color: #000000;',\n            3 => 'color: #000000;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #800000; font-weight: bold;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/powershell.php",
    "content": "<?php\n/*************************************************************************************\n * powershell.php\n * ---------------------------------\n * Author: Frode Aarebrot (frode@aarebrot.net)\n * Copyright: (c) 2008 Frode Aarebrot (http://www.aarebrot.net)\n * Release Version: 1.0.9.1\n * Date Started: 2008/06/20\n *\n * PowerShell language file for GeSHi.\n *\n * I've tried to make this language file as true to the highlighting in PowerGUI as\n * possible. Unfortunately it's not 100% complete, although it is pretty close.\n *\n * I've included some classes and their members, but there's tons and tons of these.\n * I suggest you add the ones you need yourself. I've included a few Sharepoint ones\n * in this language file.\n *\n * CHANGES\n * -------\n * 2008/06/20 (1.0.8)\n *  -  First Release\n *\n * TODO (updated 2008/06/20)\n * -------------------------\n * - Color text between Cmdlets/Aliases and pipe/end-of-line\n * - Try and get -- and ++ to work in the KEYWORDS array with the other operators\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'PowerShell',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array('<#' => '#>'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '`',\n    'KEYWORDS' => array(\n        1 => array(\n            // Cmdlets\n            'Add-Content', 'Add-History', 'Add-Member', 'Add-PSSnapin', 'Clear-Content', 'Clear-Item',\n            'Clear-ItemProperty', 'Clear-Variable', 'Compare-Object', 'ConvertFrom-SecureString',\n            'Convert-Path', 'ConvertTo-Html', 'ConvertTo-SecureString', 'Copy-Item', 'Copy-ItemProperty',\n            'Export-Alias', 'Export-Clixml', 'Export-Console', 'Export-Csv', 'ForEach-Object',\n            'Format-Custom', 'Format-List', 'Format-Table', 'Format-Wide', 'Get-Acl', 'Get-Alias',\n            'Get-AuthenticodeSignature', 'Get-ChildItem', 'Get-Command', 'Get-Content', 'Get-Credential',\n            'Get-Culture', 'Get-Date', 'Get-EventLog', 'Get-ExecutionPolicy', 'Get-Help', 'Get-History',\n            'Get-Host', 'Get-Item', 'Get-ItemProperty', 'Get-Location', 'Get-Member',\n            'Get-PfxCertificate', 'Get-Process', 'Get-PSDrive', 'Get-PSProvider', 'Get-PSSnapin',\n            'Get-Service', 'Get-TraceSource', 'Get-UICulture', 'Get-Unique', 'Get-Variable',\n            'Get-WmiObject', 'Group-Object', 'Import-Alias', 'Import-Clixml', 'Import-Csv',\n            'Invoke-Expression', 'Invoke-History', 'Invoke-Item', 'Join-Path', 'Measure-Command',\n            'Measure-Object', 'Move-Item', 'Move-ItemProperty', 'New-Alias', 'New-Item',\n            'New-ItemProperty', 'New-Object', 'New-PSDrive', 'New-Service', 'New-TimeSpan',\n            'New-Variable', 'Out-Default', 'Out-File', 'Out-Host', 'Out-Null', 'Out-Printer',\n            'Out-String', 'Pop-Location', 'Push-Location', 'Read-Host', 'Remove-Item',\n            'Remove-ItemProperty', 'Remove-PSDrive', 'Remove-PSSnapin', 'Remove-Variable', 'Rename-Item',\n            'Rename-ItemProperty', 'Resolve-Path', 'Restart-Service', 'Resume-Service', 'Select-Object',\n            'Select-String', 'Set-Acl', 'Set-Alias', 'Set-AuthenticodeSignature', 'Set-Content',\n            'Set-Date', 'Set-ExecutionPolicy', 'Set-Item', 'Set-ItemProperty', 'Set-Location',\n            'Set-PSDebug', 'Set-Service', 'Set-TraceSource', 'Set-Variable', 'Sort-Object', 'Split-Path',\n            'Start-Service', 'Start-Sleep', 'Start-Transcript', 'Stop-Process', 'Stop-Service',\n            'Stop-Transcript', 'Suspend-Service', 'Tee-Object', 'Test-Path', 'Trace-Command',\n            'Update-FormatData', 'Update-TypeData', 'Where-Object', 'Write-Debug', 'Write-Error',\n            'Write-Host', 'Write-Output', 'Write-Progress', 'Write-Verbose', 'Write-Warning'\n            ),\n        2 => array(\n            // Aliases\n            'ac', 'asnp', 'clc', 'cli', 'clp', 'clv', 'cpi', 'cpp', 'cvpa', 'diff', 'epal', 'epcsv', 'fc',\n            'fl', 'ft', 'fw', 'gal', 'gc', 'gci', 'gcm', 'gdr', 'ghy', 'gi', 'gl', 'gm',\n            'gp', 'gps', 'group', 'gsv', 'gsnp', 'gu', 'gv', 'gwmi', 'iex', 'ihy', 'ii', 'ipal', 'ipcsv',\n            'mi', 'mp', 'nal', 'ndr', 'ni', 'nv', 'oh', 'rdr', 'ri', 'rni', 'rnp', 'rp', 'rsnp', 'rv',\n            'rvpa', 'sal', 'sasv', 'sc', 'select', 'si', 'sl', 'sleep', 'sort', 'sp', 'spps', 'spsv', 'sv',\n            'tee', 'write', 'cat', 'cd', 'clear', 'cp', 'h', 'history', 'kill', 'lp', 'ls',\n            'mount', 'mv', 'popd', 'ps', 'pushd', 'pwd', 'r', 'rm', 'rmdir', 'echo', 'cls', 'chdir',\n            'copy', 'del', 'dir', 'erase', 'move', 'rd', 'ren', 'set', 'type'\n            ),\n        3 => array(\n            // Reserved words\n            'break', 'continue', 'do', 'for', 'foreach', 'while', 'if', 'switch', 'until', 'where',\n            'function', 'filter', 'else', 'elseif', 'in', 'return', 'param', 'throw', 'trap'\n            ),\n        4 => array(\n            // Operators\n            '-eq', '-ne', '-gt', '-ge', '-lt', '-le', '-ieq', '-ine', '-igt', '-ige', '-ilt', '-ile',\n            '-ceq', '-cne', '-cgt', '-cge', '-clt', '-cle', '-like', '-notlike', '-match', '-notmatch',\n            '-ilike', '-inotlike', '-imatch', '-inotmatch', '-clike', '-cnotlike', '-cmatch', '-cnotmatch',\n            '-contains', '-notcontains', '-icontains', '-inotcontains', '-ccontains', '-cnotcontains',\n            '-isnot', '-is', '-as', '-replace', '-ireplace', '-creplace', '-and', '-or', '-band', '-bor',\n            '-not', '-bnot', '-f', '-casesensitive', '-exact', '-file', '-regex', '-wildcard'\n            ),\n        5 => array(\n            // Options\n            '-Year', '-Wrap', '-Word', '-Width', '-WhatIf', '-Wait', '-View', '-Verbose', '-Verb',\n            '-Variable', '-ValueOnly', '-Value', '-Unique', '-UFormat', '-TypeName', '-Trace', '-TotalCount',\n            '-Title', '-TimestampServer', '-TargetObject', '-Syntax', '-SyncWindow', '-Sum', '-String',\n            '-Strict', '-Stream', '-Step', '-Status', '-Static', '-StartupType', '-Start', '-StackName',\n            '-Stack', '-SourceId', '-SimpleMatch', '-ShowError', '-Separator', '-SecureString', '-SecureKey',\n            '-SecondValue', '-SecondsRemaining', '-Seconds', '-Second', '-Scope', '-Root', '-Role',\n            '-Resolve', '-RemoveListener', '-RemoveFileListener', '-Registered', '-ReferenceObject',\n            '-Recurse', '-RecommendedAction', '-ReadCount', '-Quiet', '-Query', '-Qualifier', '-PSSnapin',\n            '-PSProvider', '-PSHost', '-PSDrive', '-PropertyType', '-Property', '-Prompt', '-Process',\n            '-PrependPath', '-PercentComplete', '-Pattern', '-PathType', '-Path', '-PassThru', '-ParentId',\n            '-Parent', '-Parameter', '-Paging', '-OutVariable', '-OutBuffer', '-Option', '-OnType', '-Off',\n            '-Object', '-Noun', '-NoTypeInformation', '-NoQualifier', '-NoNewline', '-NoElement',\n            '-NoClobber', '-NewName', '-Newest', '-Namespace', '-Name', '-Month', '-Minutes', '-Minute',\n            '-Minimum', '-Milliseconds', '-Message', '-MemberType', '-Maximum', '-LogName', '-LiteralPath',\n            '-LiteralName', '-ListenerOption', '-List', '-Line', '-Leaf', '-Last', '-Key', '-ItemType',\n            '-IsValid', '-IsAbsolute', '-InputObject', '-IncludeEqual', '-IncludeChain', '-Include',\n            '-IgnoreWhiteSpace', '-Id', '-Hours', '-Hour', '-HideTableHeaders', '-Head', '-GroupBy',\n            '-Functionality', '-Full', '-Format', '-ForegroundColor', '-Force', '-First', '-FilterScript',\n            '-Filter', '-FilePath', '-Expression', '-ExpandProperty', '-Expand', '-ExecutionPolicy',\n            '-ExcludeProperty', '-ExcludeDifferent', '-Exclude', '-Exception', '-Examples', '-ErrorVariable',\n            '-ErrorRecord', '-ErrorId', '-ErrorAction', '-End', '-Encoding', '-DisplayName', '-DisplayHint',\n            '-DisplayError', '-DifferenceObject', '-Detailed', '-Destination', '-Description', '-Descending',\n            '-Depth', '-DependsOn', '-Delimiter', '-Debugger', '-Debug', '-Days', '-Day', '-Date',\n            '-CurrentOperation', '-Culture', '-Credential', '-Count', '-Container', '-Confirm',\n            '-ComputerName', '-Component', '-Completed', '-ComObject', '-CommandType', '-Command',\n            '-Column', '-Class', '-ChildPath', '-Character', '-Certificate', '-CategoryTargetType',\n            '-CategoryTargetName', '-CategoryReason', '-CategoryActivity', '-Category', '-CaseSensitive',\n            '-Body', '-BinaryPathName', '-Begin', '-BackgroundColor', '-Average', '-AutoSize', '-Audit',\n            '-AsString', '-AsSecureString', '-AsPlainText', '-As', '-ArgumentList', '-AppendPath', '-Append',\n            '-Adjust', '-Activity', '-AclObject'\n            ),\n        6 => array(\n            '_','args','DebugPreference','Error','ErrorActionPreference',\n            'foreach','Home','Host','Input','LASTEXITCODE','MaximumAliasCount',\n            'MaximumDriveCount','MaximumFunctionCount','MaximumHistoryCount',\n            'MaximumVariableCount','OFS','PsHome',\n            'ReportErrorShowExceptionClass','ReportErrorShowInnerException',\n            'ReportErrorShowSource','ReportErrorShowStackTrace',\n            'ShouldProcessPreference','ShouldProcessReturnPreference',\n            'StackTrace','VerbosePreference','WarningPreference','PWD'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '=', '<', '>', '@', '|', '&', ',', '?',\n        '+=', '-=', '*=', '/=', '%=', '*', '/', '%', '!', '+', '-', '++', '--'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #008080; font-weight: bold;',\n            2 => 'color: #008080; font-weight: bold;',\n            3 => 'color: #0000FF;',\n            4 => 'color: #FF0000;',\n            5 => 'color: #008080; font-style: italic;',\n            6 => 'color: #000080;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000;',\n            'MULTI' => 'color: #008000;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #008080; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #800000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #804000;'\n            ),\n        'METHODS' => array(\n            0 => 'color: pink;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: pink;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #800080;',\n            3 => 'color: #008080;',\n            4 => 'color: #008080;',\n            5 => 'color: #800000;',\n            6 => 'color: #000080;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => 'about:blank',\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        // special after pipe\n        3 => array(\n            GESHI_SEARCH => '(\\[)(int|long|string|char|bool|byte|double|decimal|float|single|regex|array|xml|scriptblock|switch|hashtable|type|ref|psobject|wmi|wmisearcher|wmiclass|object)((\\[.*\\])?\\])',\n            GESHI_REPLACE => '\\2',\n            GESHI_MODIFIERS => 'si',\n            GESHI_BEFORE => '\\1',\n            GESHI_AFTER => '\\3'\n            ),\n        // Classes\n        4 => array(\n            GESHI_SEARCH => '(\\[)(System\\.Reflection\\.Assembly|System\\.Net\\.CredentialCache|Microsoft\\.SharePoint\\.SPFileLevel|Microsoft\\.SharePoint\\.Publishing\\.PublishingWeb|Microsoft\\.SharePoint\\.Publishing|Microsoft\\.SharePoint\\.SPWeb)(\\])',\n            GESHI_REPLACE => '\\2',\n            GESHI_MODIFIERS => 'i',\n            GESHI_BEFORE => '\\1',\n            GESHI_AFTER => '\\3'\n            ),\n        // Members\n        // There's about a hundred million of these, add the ones you need as you need them\n        5 => array (\n            GESHI_SEARCH => '(::)(ReflectionOnlyLoadFrom|ReflectionOnlyLoad|ReferenceEquals|LoadWithPartialName|LoadFrom|LoadFile|Load|GetExecutingAssembly|GetEntryAssembly|GetCallingAssembly|GetAssembly|Equals|DefaultNetworkCredentials|DefaultCredentials|CreateQualifiedName|Checkout|Draft|Published|IsPublishingWeb)',\n            GESHI_REPLACE => '\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\1',\n            GESHI_AFTER => ''\n            ),\n        // Special variables\n        6 => array(\n            GESHI_SEARCH => '(\\$)(\\$[_\\^]?|\\?)(?!\\w)',\n            GESHI_REPLACE => '\\1\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        // variables\n        //BenBE: Please note that changes here and in Keyword group 6 have to be synchronized in order to work properly.\n        //This Regexp must only match, if keyword group 6 doesn't. If this assumption fails\n        //Highlighting of the keywords will be incomplete or incorrect!\n        0 => \"(?<!\\\\\\$|>)[\\\\\\$](\\w+)(?=[^|\\w])\",\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            4 => array(\n                'DISALLOWED_AFTER' => '(?![a-zA-Z])',\n                'DISALLOWED_BEFORE' => ''\n                ),\n            6 => array(\n                'DISALLOWED_BEFORE' => '(?<!\\$>)\\$'\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/proftpd.php",
    "content": "<?php\n/*************************************************************************************\n * proftpd.php\n * ----------\n * Author: Benny Baumann (BenBE@geshi.org)\n * Copyright: (c) 2010 Benny Baumann (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2011/01/25\n *\n * ProFTPd language file for GeSHi.\n * Words are scraped from their documentation\n *\n * CHANGES\n * -------\n * 2004/08/05 (1.0.8.10)\n *   -  First Release\n *\n * TODO (updated 2011/01/25)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'ProFTPd configuration',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        /*keywords*/\n        1 => array(\n            //mod_auth\n            'AccessDenyMsg', 'AccessGrantMsg', 'AnonRejectePasswords',\n            'AnonRequirePassword', 'AuthAliasOnly', 'AuthUsingAlias',\n            'CreateHome', 'DefaultChdir', 'DefaultRoot', 'GroupPassword',\n            'LoginPasswordPrompt', 'MaxClients', 'MaxClientsPerClass',\n            'MaxClientsPerHost', 'MaxClientsPerUser', 'MaxConnectionsPerHost',\n            'MaxHostsPerUser', 'MaxLoginAttempts', 'RequireValidShell',\n            'RootLogin', 'RootRevoke', 'TimeoutLogin', 'TimeoutSession',\n            'UseFtpUsers', 'UserAlias', 'UserDirRoot', 'UserPassword',\n\n            //mod_auth_file\n            'AuthGroupFile', 'AuthUserFile',\n\n            //mod_auth_pam\n            'AuthPAM', 'AuthPAMConfig',\n\n            //mod_auth_unix\n            'PersistentPasswd',\n\n            //mod_ban\n            'BanControlsACLs', 'BanEngine', 'BanLog', 'BanMessage', 'BanOnEvent',\n            'BanTable',\n\n            //mod_cap\n            'CapabilitiesEngine', 'CapabilitiesSet',\n\n            //mod_core\n            'Allow', 'AllowAll', 'AllowClass', 'AllowFilter',\n            'AllowForeignAddress', 'AllowGroup', 'AllowOverride',\n            'AllowRetrieveRestart', 'AllowStoreRestart', 'AllowUser',\n            'AnonymousGroup', 'AuthOrder', 'Bind', 'CDPath', 'Class', 'Classes',\n            'CommandBufferSize', 'DebugLevel', 'DefaultAddress',\n            'DefaultServer', 'DefaultTransferMode', 'DeferWelcome', 'Define',\n            'Deny', 'DenyAll', 'DenyClass', 'DenyFilter', 'DenyGroup',\n            'DenyUser', 'DisplayChdir', 'DisplayConnect', 'DisplayFirstChdir',\n            'DisplayGoAway', 'DisplayLogin', 'DisplayQuit', 'From', 'Group',\n            'GroupOwner', 'HideFiles', 'HideGroup', 'HideNoAccess', 'HideUser',\n            'IdentLookups', 'IgnoreHidden', 'Include', 'MasqueradeAddress',\n            'MaxConnectionRate', 'MaxInstances', 'MultilineRFC2228', 'Order',\n            'PassivePorts', 'PathAllowFilter', 'PathDenyFilter', 'PidFile',\n            'Port', 'RLimitCPU', 'RLimitMemory', 'RLimitOpenFiles', 'Satisfy',\n            'ScoreboardFile', 'ServerAdmin', 'ServerIdent', 'ServerName',\n            'ServerType', 'SetEnv', 'SocketBindTight', 'SocketOptions',\n            'SyslogFacility', 'SyslogLevel', 'tcpBackLog', 'tcpNoDelay',\n            'TimeoutIdle', 'TimeoutLinger', 'TimesGMT', 'TransferLog', 'Umask',\n            'UnsetEnv', 'UseIPv6', 'User', 'UseReverseDNS', 'UserOwner',\n            'UseUTF8', 'WtmpLog',\n\n            //mod_ctrls_admin\n            'AdminControlsACLs', 'AdminControlsEngine',\n\n            //mod_delay\n            'DelayEngine', 'DelayTable',\n\n            //mod_dynmasq\n            'DynMasqRefresh',\n\n            //mod_exec\n            'ExecBeforeCommand', 'ExecEngine', 'ExecEnviron', 'ExecLog',\n            'ExecOnCommand', 'ExecOnConnect', 'ExecOnError', 'ExecOnEvent',\n            'ExecOnExit', 'ExecOnRestart', 'ExecOptions', 'ExecTimeout',\n\n            //mod_ldap\n            'LDAPAliasDereference', 'LDAPAttr', 'LDAPAuthBinds',\n            'LDAPDefaultAuthScheme', 'LDAPDefaultGID', 'LDAPDefaultUID',\n            'LDAPDNInfo', 'LDAPDoAuth', 'LDAPDoGIDLookups',\n            'LDAPDoQuotaLookups', 'LDAPDoUIDLookups',\n            'LDAPForceGeneratedHomedir', 'LDAPForceHomedirOnDemand',\n            'LDAPGenerateHomedir', 'LDAPGenerateHomedirPrefix',\n            'LDAPGenerateHomedirPrefixNoUsername', 'LDAPHomedirOnDemand',\n            'LDAPHomedirOnDemandPrefix', 'LDAPHomedirOnDemandPrefixNoUsername',\n            'LDAPHomedirOnDemandSuffix', 'LDAPNegativeCache',\n            'LDAPProtocolVersion', 'LDAPQueryTimeout', 'LDAPSearchScope',\n            'LDAPServer',\n\n            //mod_load\n            'MaxLoad',\n\n            //mod_log\n            'AllowLogSymlinks', 'ExtendedLog', 'LogFormat', 'ServerLog',\n            'SystemLog',\n\n            //mod_ls'\n            'DirFakeGroup', 'DirFakeMode', 'DirFakeUser', 'ListOptions',\n            'ShowSymlinks', 'UseGlobbing',\n\n            //mod_quotatab\n            'QuotaDirectoryTally', 'QuotaDisplayUnits', 'QuotaEngine',\n            'QuotaExcludeFilter', 'QuotaLimitTable', 'QuotaLock', 'QuotaLog',\n            'QuotaOptions', 'QuotaShowQuotas', 'QuotaTallyTable',\n\n            //mod_quotatab_file\n\n            //mod_quotatab_ldap\n\n            //mod_quotatab_sql\n\n            //mod_radius\n            'RadiusAcctServer', 'RadiusAuthServer', 'RadiusEngine',\n            'RadiusGroupInfo', 'RadiusLog', 'RadiusNASIdentifier',\n            'RadiusQuotaInfo', 'RadiusRealm', 'RadiusUserInfo', 'RadiusVendor',\n\n            //mod_ratio\n            'AnonRatio', 'ByteRatioErrMsg', 'CwdRatioMsg', 'FileRatioErrMsg',\n            'GroupRatio', 'HostRatio', 'LeechRatioMsg', 'RatioFile', 'Ratios',\n            'RatioTempFile', 'SaveRatios', 'UserRatio',\n\n            //mod_readme\n            'DisplayReadme',\n\n            //mod_rewrite\n            'RewriteCondition', 'RewriteEngine', 'RewriteLock', 'RewriteLog',\n            'RewriteMap', 'RewriteRule',\n\n            //mod_sftp\n            'SFTPAcceptEnv', 'SFTPAuthMethods', 'SFTPAuthorizedHostKeys',\n            'SFTPAuthorizedUserKeys', 'SFTPCiphers', 'SFTPClientMatch',\n            'SFTPCompression', 'SFTPCryptoDevice', 'SFTPDHParamFile',\n            'SFTPDigests', 'SFTPDisplayBanner', 'SFTPEngine', 'SFTPExtensions',\n            'SFTPHostKey', 'SFTPKeyBlacklist', 'SFTPKeyExchanges', 'SFTPLog',\n            'SFTPMaxChannels', 'SFTPOptions', 'SFTPPassPhraseProvider',\n            'SFTPRekey', 'SFTPTrafficPolicy',\n\n            //mod_sftp_pam\n            'SFTPPAMEngine', 'SFTPPAMOptions', 'SFTPPAMServiceName',\n\n            //mod_sftp_sql\n\n            //mod_shaper\n            'ShaperAll', 'ShaperControlsACLs', 'ShaperEngine', 'ShaperLog',\n            'ShaperSession', 'ShaperTable',\n\n            //mod_sql\n            'SQLAuthenticate', 'SQLAuthTypes', 'SQLBackend', 'SQLConnectInfo',\n            'SQLDefaultGID', 'SQLDefaultHomedir', 'SQLDefaultUID', 'SQLEngine',\n            'SQLGroupInfo', 'SQLGroupWhereClause', 'SQLHomedirOnDemand',\n            'SQLLog', 'SQLLogFile', 'SQLMinID', 'SQLMinUserGID',\n            'SQLMinUserUID', 'SQLNamedQuery', 'SQLNegativeCache', 'SQLOptions',\n            'SQLRatios', 'SQLRatioStats', 'SQLShowInfo', 'SQLUserInfo',\n            'SQLUserWhereClause',\n\n            //mod_sql_passwd\n            'SQLPasswordEncoding', 'SQLPasswordEngine', 'SQLPasswordSaltFile',\n            'SQLPasswordUserSalt',\n\n            //mod_tls\n            'TLSCACertificateFile', 'TLSCACertificatePath',\n            'TLSCARevocationFile', 'TLSCARevocationPath',\n            'TLSCertificateChainFile', 'TLSCipherSuite', 'TLSControlsACLs',\n            'TLSCryptoDevice', 'TLSDHParamFile', 'TLSDSACertificateFile',\n            'TLSDSACertificateKeyFile', 'TLSEngine', 'TLSLog', 'TLSOptions',\n            'TLSPKCS12File', 'TLSPassPhraseProvider', 'TLSProtocol',\n            'TLSRandomSeed', 'TLSRenegotiate', 'TLSRequired',\n            'TLSRSACertificateFile', 'TLSRSACertificateKeyFile',\n            'TLSSessionCache', 'TLSTimeoutHandshake', 'TLSVerifyClient',\n            'TLSVerifyDepth', 'TLSVerifyOrder',\n\n            //mod_tls_shmcache\n\n            //mod_unique_id\n            'UniqueIDEngine',\n\n            //mod_wrap\n            'TCPAccessFiles', 'TCPAccessSyslogLevels', 'TCPGroupAccessFiles',\n            'TCPServiceName', 'TCPUserAccessFiles',\n\n            //mod_wrap2\n            'WrapAllowMsg', 'WrapDenyMsg', 'WrapEngine', 'WrapGroupTables',\n            'WrapLog', 'WrapServiceName', 'WrapTables', 'WrapUserTables',\n\n            //mod_wrap2_file\n\n            //mod_wrap2_sql\n\n            //mod_xfer\n            'AllowOverwrite', 'DeleteAbortedStores', 'DisplayFileTransfer',\n            'HiddenStor', 'HiddenStores', 'MaxRetrieveFileSize',\n            'MaxStoreFileSize', 'StoreUniquePrefix', 'TimeoutNoTransfer',\n            'TimeoutStalled', 'TransferRate', 'UseSendfile',\n\n            //unknown\n            'ScoreboardPath', 'ScoreboardScrub'\n            ),\n        /*keywords 3*/\n        3 => array(\n            //mod_core\n            'Anonymous',\n            'Class',\n            'Directory',\n            'IfDefine',\n            'IfModule',\n            'Limit',\n            'VirtualHost',\n\n            //mod_ifsession\n            'IfClass', 'IfGroup', 'IfUser',\n\n            //mod_version\n            'IfVersion'\n            ),\n        /*permissions*/\n        4 => array(\n            //mod_core\n            'ALL',\n            'CDUP',\n            'CMD',\n            'CWD',\n            'DELE',\n            'DIRS',\n            'LOGIN',\n            'MKD',\n            'READ',\n            'RETR',\n            'RMD',\n            'RNFR',\n            'RNTO',\n            'STOR',\n            'WRITE',\n            'XCWD',\n            'XMKD',\n            'XRMD',\n\n            //mod_copy\n            'SITE_CPFR', 'SITE_CPTO',\n\n            //mod_quotatab\n            'SITE_QUOTA',\n\n            //mod_site\n            'SITE_HELP', 'SITE_CHMOD', 'SITE_CHGRP',\n\n            //mod_site_misc\n            'SITE_MKDIR', 'SITE_RMDIR', 'SITE_SYMLINK', 'SITE_UTIME',\n            ),\n        /*keywords 2*/\n        2 => array(\n            'all','on','off','yes','no',\n            'standalone', 'inetd',\n            'default', 'auth', 'write',\n            'internet', 'local', 'limit', 'ip',\n            'from'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '+', '-'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #00007f;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #000000; font-weight:bold;',\n            4 => 'color: #000080; font-weight:bold;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #adadad; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #339933;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #7f007f;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #008000;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => 'http://www.google.com/search?hl=en&amp;q={FNAMEL}+site:www.proftpd.org+inurl:docs&amp;btnI=I%27m%20Feeling%20Lucky',\n        2 => '',\n        3 => 'http://www.google.com/search?hl=en&amp;q={FNAMEL}+site:www.proftpd.org+inurl:docs&amp;btnI=I%27m%20Feeling%20Lucky',\n        4 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'BRACKETS' => GESHI_NEVER,\n            'SYMBOLS' => GESHI_NEVER\n            ),\n        'KEYWORDS' => array(\n            2 => array(\n                'DISALLOWED_BEFORE' => '(?<=\\s)(?<!=)',\n                'DISALLOWED_AFTER' => '(?!\\+)(?!\\w)',\n                ),\n            3 => array(\n                'DISALLOWED_BEFORE' => '(?<=&lt;|&lt;\\/)',\n                'DISALLOWED_AFTER' => '(?=\\s|\\/|&gt;)',\n                ),\n            4 => array(\n                'DISALLOWED_BEFORE' => '(?<=\\s)(?<!=)',\n                'DISALLOWED_AFTER' => '(?!\\+)(?=\\/|(?:\\s+\\w+)*\\s*&gt;)',\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/progress.php",
    "content": "<?php\n/*************************************************************************************\n * progress.php\n * --------\n * Author: Marco Aurelio de Pasqual (marcop@hdi.com.br)\n * Copyright: (c) 2008 Marco Aurelio de Pasqual, Benny Baumann (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2008/07/11\n *\n * Progress language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/07/11 (1.0.8)\n *   -  First Release\n *\n * TODO (updated 2008/07/11)\n * -------------------------\n * * Clean up the keyword list\n * * Sort Keyword lists by Control Structures, Predefined functions and other important keywords\n * * Complete language support\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Progress',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array (\n        1 => array(\n            'ACCUMULATE','APPLY','ASSIGN','BELL','QUERY',\n            'BUFFER-COMPARE','BUFFER-COPY','CALL','CASE',\n            'CHOOSE','CLASS','CLOSE QUERY','each','WHERE',\n            'CLOSE STORED-PROCEDURE','COLOR','COMPILE','CONNECT',\n            'CONSTRUCTOR','COPY-LOB','CREATE','CREATE ALIAS',\n            'CREATE BROWSE','CREATE BUFFER','CREATE CALL','CREATE CLIENT-PRINCIPAL',\n            'CREATE DATABASE','CREATE DATASET','CREATE DATA-SOURCE','CREATE QUERY',\n            'CREATE SAX-attributeS','CREATE SAX-READER','CREATE SAX-WRITER','CREATE SERVER',\n            'CREATE SERVER-SOCKET','CREATE SOAP-HEADER','CREATE SOAP-HEADER-ENTRYREF','CREATE SOCKET',\n            'CREATE TEMP-TABLE','CREATE WIDGET','CREATE widget-POOL','CREATE X-DOCUMENT',\n            'CREATE X-NODEREF','CURRENT-LANGUAGE','CURRENT-VALUE','DDE ADVISE',\n            'DDE EXECUTE','DDE GET','DDE INITIATE','DDE REQUEST',\n            'DDE SEND','DDE TERMINATE','DEFINE BROWSE','DEFINE BUFFER','DEFINE',\n            'DEFINE BUTTON','DEFINE DATASET','DEFINE DATA-SOURCE','DEFINE FRAME','DEF','VAR',\n            'DEFINE IMAGE','DEFINE MENU','DEFINE PARAMETER','DEFINE property','PARAM',\n            'DEFINE QUERY','DEFINE RECTANGLE','DEFINE STREAM','DEFINE SUB-MENU',\n            'DEFINE TEMP-TABLE','DEFINE WORKFILE','DEFINE WORK-TABLE',\n            'DELETE','DELETE ALIAS','DELETE object','DELETE PROCEDURE',\n            'DELETE widget','DELETE widget-POOL','DESTRUCTOR','DICTIONARY',\n            'DISABLE','DISABLE TRIGGERS','DISCONNECT','DISPLAY',\n            'DO','DOS','DOWN','DYNAMIC-CURRENT-VALUE',\n            'ELSE','EMPTY TEMP-TABLE','ENABLE','END',\n            'ENTRY','FIND','AND',\n            'FIX-CODEPAGE','FOR','FORM','FRAME-VALUE',\n            'GET','GET-KEY-VALUE','HIDE','IF',\n            'IMPORT','INPUT CLEAR','INPUT CLOSE','INPUT FROM','input',\n            'INPUT THROUGH','INPUT-OUTPUT CLOSE','INPUT-OUTPUT THROUGH',\n            'INTERFACE','LEAVE','BREAK',\n            'LOAD-PICTURE','MESSAGE','method','NEXT','prev',\n            'NEXT-PROMPT','ON','OPEN QUERY','OS-APPEND',\n            'OS-COMMAND','OS-COPY','OS-CREATE-DIR','OS-DELETE',\n            'OS-RENAME','OUTPUT CLOSE','OUTPUT THROUGH','OUTPUT TO',\n            'OVERLAY','PAGE','PAUSE','PROCEDURE',\n            'PROCESS EVENTS','PROMPT-FOR','PROMSGS','PROPATH',\n            'PUBLISH','PUT','PUT CURSOR','PUT SCREEN',\n            'PUT-BITS','PUT-BYTE','PUT-BYTES','PUT-DOUBLE',\n            'PUT-FLOAT','PUT-INT64','PUT-KEY-VALUE','PUT-LONG',\n            'PUT-SHORT','PUT-STRING','PUT-UNSIGNED-LONG','PUT-UNSIGNED-SHORT',\n            'QUIT','RAW-TRANSFER','READKEY','RELEASE',\n            'RELEASE EXTERNAL','RELEASE object','REPEAT','REPOSITION',\n            'RUN','RUN STORED-PROCEDURE','RUN SUPER',\n            'SAVE CACHE','SCROLL','SEEK','SET',\n            'SET-BYTE-ORDER','SET-POINTER-VALUE','SET-SIZE','SHOW-STATS',\n            'STATUS','STOP','SUBSCRIBE','SUBSTRING',\n            'system-DIALOG COLOR','system-DIALOG FONT','system-DIALOG GET-DIR','system-DIALOG GET-FILE',\n            'system-DIALOG PRINTER-SETUP','system-HELP','THEN','THIS-object',\n            'TRANSACTION-MODE AUTOMATIC','TRIGGER PROCEDURE','UNDERLINE','UNDO',\n            'UNIX','UNLOAD','UNSUBSCRIBE','UP','STRING',\n            'UPDATE','USE','USING','substr','SKIP','CLOSE',\n            'VIEW','WAIT-FOR','MODULO','NE','AVAIL',\n            'NOT','OR','&GLOBAL-DEFINE','&IF','UNFORMATTED','NO-PAUSE',\n            '&THEN','&ELSEIF','&ELSE','&ENDIF','OPEN','NO-WAIT',\n            '&MESSAGE','&SCOPED-DEFINE','&UNDEFINE','DEFINED',\n            'BROWSE','BUTTON','COMBO-BOX','CONTROL-FRAME',\n            'DIALOG-BOX','EDITOR','FIELD-GROUP','FILL-IN',\n            'FRAME','IMAGE','LITERAL','MENU',\n            'MENU-ITEM','RADIO-SET','RECTANGLE','SELECTION-LIST',\n            'SLIDER','SUB-MENU','TEXT','TOGGLE-BOX',\n            'WINDOW','WITH','AT','OF','EDITING','ON ENDKEY','output',\n            'ON ERROR','ON QUIT','ON STOP','PRESELECT',\n            'QUERY-TUNING','SIZE','Trigger','VIEW-AS','ALERT-BOX',\n            'Buffer','Data-relation','ProDataSet','SAX-attributes',\n            'SAX-reader','SAX-writer','Server socket','SOAP-fault',\n            'SOAP-header','SOAP-header-entryref','Socket','Temp-table',\n            'X-noderef','Height','Left','Top','TO',\n            'Width','ACTIVE-WINDOW','AUDIT-CONTROL','FIRST','LAST',\n            'AUDIT-POLICY','CLIPBOARD','CODEBASE-LOCATOR','COLOR-TABLE',\n            'COMPILER','COM-SELF','DEBUGGER','DEFAULT-WINDOW',\n            'ERROR-STATUS','FILE-INFO','FOCUS','FONT-TABLE',\n            'LAST-EVENT','LOG-MANAGER','RCODE-INFO','SECURITY-POLICY',\n            'SELF','SESSION','SOURCE-PROCEDURE','TARGET-PROCEDURE','NO-LOCK','NO-error',\n            'THIS-PROCEDURE','WEB-CONTEXT','FUNCTION','RETURNS','NO-UNDO'\n            ),\n        2 => array(\n            'ACCEPT-CHANGES','ACCEPT-ROW-CHANGES','ADD-BUFFER','ADD-CALC-COLUMN',\n            'ADD-COLUMNS-FROM','ADD-EVENTS-PROCEDURE','ADD-FIELDS-FROM','ADD-FIRST',\n            'ADD-HEADER-ENTRY','ADD-INDEX-FIELD','ADD-LAST','ADD-LIKE-COLUMN',\n            'ADD-LIKE-FIELD','ADD-LIKE-INDEX','ADD-NEW-FIELD','ADD-NEW-INDEX',\n            'ADD-RELATION','ADD-SCHEMA-LOCATION','ADD-SOURCE-BUFFER','ADD-SUPER-PROCEDURE',\n            'APPEND-CHILD','APPLY-CALLBACK','ATTACH-DATA-SOURCE','AUTHENTICATION-FAILED',\n            'BEGIN-EVENT-GROUP','BUFFER-CREATE',\n            'BUFFER-DELETE','BUFFER-RELEASE','BUFFER-VALIDATE',\n            'CANCEL-BREAK','CANCEL-REQUESTS','CLEAR','CLEAR-APPL-CONTEXT',\n            'CLEAR-LOG','CLEAR-SELECTION','CLEAR-SORT-ARROWS','CLONE-NODE',\n            'CLOSE-LOG','CONNECTED','CONVERT-TO-OFFSET',\n            'COPY-DATASET','COPY-SAX-attributeS','COPY-TEMP-TABLE','CREATE-LIKE',\n            'CREATE-NODE','CREATE-NODE-NAMESPACE','CREATE-RESULT-LIST-ENTRY','DEBUG',\n            'DECLARE-NAMESPACE','DELETE-CHAR','DELETE-CURRENT-ROW',\n            'DELETE-HEADER-ENTRY','DELETE-LINE','DELETE-NODE','DELETE-RESULT-LIST-ENTRY',\n            'DELETE-SELECTED-ROW','DELETE-SELECTED-ROWS','DESELECT-FOCUSED-ROW','DESELECT-ROWS',\n            'DESELECT-SELECTED-ROW','DETACH-DATA-SOURCE','DISABLE-CONNECTIONS',\n            'DISABLE-DUMP-TRIGGERS','DISABLE-LOAD-TRIGGERS','DISPLAY-MESSAGE',\n            'DUMP-LOGGING-NOW','EDIT-CLEAR','EDIT-COPY','EDIT-CUT',\n            'EDIT-PASTE','EDIT-UNDO','EMPTY-DATASET','EMPTY-TEMP-TABLE',\n            'ENABLE-CONNECTIONS','ENABLE-EVENTS','ENCRYPT-AUDIT-MAC-KEY',\n            'END-DOCUMENT','END-ELEMENT','END-EVENT-GROUP','END-FILE-DROP',\n            'EXPORT','EXPORT-PRINCIPAL','FETCH-SELECTED-ROW',\n            'FILL','FIND-BY-ROWID','FIND-CURRENT','FIND-FIRST',\n            'FIND-LAST','FIND-UNIQUE','GET-attribute','GET-attribute-NODE',\n            'GET-BINARY-DATA','GET-BLUE-VALUE','GET-BROWSE-COLUMN','GET-BUFFER-HANDLE',\n            'GET-BYTES-AVAILABLE','GET-CALLBACK-PROC-CONTEXT','GET-CALLBACK-PROC-NAME','GET-CGI-LIST',\n            'GET-CGI-LONG-VALUE','GET-CGI-VALUE','GET-CHANGES','GET-CHILD',\n            'GET-CHILD-RELATION','GET-CONFIG-VALUE','GET-CURRENT','GET-DATASET-BUFFER',\n            'GET-DOCUMENT-ELEMENT','GET-DROPPED-FILE','GET-DYNAMIC','GET-ERROR-COLUMN ',\n            'GET-ERROR-ROW ','GET-FILE-NAME ','GET-FILE-OFFSET ','GET-FIRST',\n            'GET-GREEN-VALUE','GET-HEADER-ENTRY','GET-INDEX-BY-NAMESPACE-NAME','GET-INDEX-BY-QNAME',\n            'GET-ITERATION','GET-LAST','GET-LOCALNAME-BY-INDEX','GET-MESSAGE',\n            'GET-NEXT','GET-NODE','GET-NUMBER','GET-PARENT',\n            'GET-PREV','GET-PRINTERS','GET-property','GET-QNAME-BY-INDEX',\n            'GET-RED-VALUE','GET-RELATION','GET-REPOSITIONED-ROW','GET-RGB-VALUE',\n            'GET-SELECTED-widget','GET-SERIALIZED','GET-SIGNATURE','GET-SOCKET-OPTION',\n            'GET-SOURCE-BUFFER','GET-TAB-ITEM','GET-TEXT-HEIGHT-CHARS','GET-TEXT-HEIGHT-PIXELS',\n            'GET-TEXT-WIDTH-CHARS','GET-TEXT-WIDTH-PIXELS','GET-TOP-BUFFER','GET-TYPE-BY-INDEX',\n            'GET-TYPE-BY-NAMESPACE-NAME','GET-TYPE-BY-QNAME','GET-URI-BY-INDEX','GET-VALUE-BY-INDEX',\n            'GET-VALUE-BY-NAMESPACE-NAME','GET-VALUE-BY-QNAME','GET-WAIT-STATE','IMPORT-NODE',\n            'IMPORT-PRINCIPAL','INCREMENT-EXCLUSIVE-ID','INITIALIZE-DOCUMENT-TYPE',\n            'INITIATE','INSERT','INSERT-attribute','INSERT-BACKTAB',\n            'INSERT-BEFORE','INSERT-FILE','INSERT-ROW','INSERT-STRING',\n            'INSERT-TAB','INVOKE','IS-ROW-SELECTED','IS-SELECTED',\n            'LIST-property-NAMES','LOAD','LoadControls','LOAD-DOMAINS',\n            'LOAD-ICON','LOAD-IMAGE','LOAD-IMAGE-DOWN','LOAD-IMAGE-INSENSITIVE',\n            'LOAD-IMAGE-UP','LOAD-MOUSE-POINTER','LOAD-SMALL-ICON','LOCK-REGISTRATION',\n            'LOG-AUDIT-EVENT','LOGOUT','LONGCHAR-TO-NODE-VALUE','LOOKUP',\n            'MEMPTR-TO-NODE-VALUE','MERGE-CHANGES','MERGE-ROW-CHANGES','MOVE-AFTER-TAB-ITEM',\n            'MOVE-BEFORE-TAB-ITEM','MOVE-COLUMN','MOVE-TO-BOTTOM','MOVE-TO-EOF',\n            'MOVE-TO-TOP','NODE-VALUE-TO-LONGCHAR','NODE-VALUE-TO-MEMPTR','NORMALIZE',\n            'QUERY-CLOSE','QUERY-OPEN','QUERY-PREPARE',\n            'READ','READ-FILE','READ-XML','READ-XMLSCHEMA',\n            'REFRESH','REFRESH-AUDIT-POLICY','REGISTER-DOMAIN','REJECT-CHANGES',\n            'REJECT-ROW-CHANGES','REMOVE-attribute','REMOVE-CHILD','REMOVE-EVENTS-PROCEDURE',\n            'REMOVE-SUPER-PROCEDURE','REPLACE','REPLACE-CHILD','REPLACE-SELECTION-TEXT',\n            'REPOSITION-BACKWARD','REPOSITION-FORWARD','REPOSITION-TO-ROW','REPOSITION-TO-ROWID',\n            'RESET','SAVE','SAVE-FILE','SAVE-ROW-CHANGES',\n            'SAX-PARSE','SAX-PARSE-FIRST','SAX-PARSE-NEXT','SCROLL-TO-CURRENT-ROW',\n            'SCROLL-TO-ITEM','SCROLL-TO-SELECTED-ROW','SEAL','SEARCH',\n            'SELECT-ALL','SELECT-FOCUSED-ROW','SELECT-NEXT-ROW','SELECT-PREV-ROW',\n            'SELECT-ROW','SET-ACTOR','SET-APPL-CONTEXT','SET-attribute',\n            'SET-attribute-NODE','SET-BLUE-VALUE','SET-BREAK','SET-BUFFERS',\n            'SET-CALLBACK','SET-CALLBACK-PROCEDURE','SET-CLIENT','SET-COMMIT',\n            'SET-CONNECT-PROCEDURE','SET-DYNAMIC','SET-GREEN-VALUE','SET-INPUT-SOURCE',\n            'SET-MUST-UNDERSTAND','SET-NODE','SET-NUMERIC-FORMAT','SET-OUTPUT-DESTINATION',\n            'SET-PARAMETER','SET-property','SET-READ-RESPONSE-PROCEDURE','SET-RED-VALUE',\n            'SET-REPOSITIONED-ROW','SET-RGB-VALUE','SET-ROLLBACK','SET-SELECTION',\n            'SET-SERIALIZED','SET-SOCKET-OPTION','SET-SORT-ARROW','SET-WAIT-STATE',\n            'START-DOCUMENT','START-ELEMENT','STOP-PARSING','SYNCHRONIZE',\n            'TEMP-TABLE-PREPARE','UPDATE-attribute','URL-DECODE','URL-ENCODE',\n            'VALIDATE','VALIDATE-SEAL','WRITE','WRITE-CDATA','USE-INDEX',\n            'WRITE-CHARACTERS','WRITE-COMMENT','WRITE-DATA-ELEMENT','WRITE-EMPTY-ELEMENT',\n            'WRITE-ENTITY-REF','WRITE-EXTERNAL-DTD','WRITE-FRAGMENT','WRITE-MESSAGE',\n            'WRITE-PROCESSING-INSTRUCTION','WRITE-XML','WRITE-XMLSCHEMA','FALSE','true'\n            ),\n        3 => array(\n            'ABSOLUTE','ACCUM','ADD-INTERVAL','ALIAS','mod',\n            'AMBIGUOUS','ASC','AUDIT-ENABLED','AVAILABLE',\n            'BASE64-DECODE','BASE64-ENCODE','CAN-DO','CAN-FIND',\n            'CAN-QUERY','CAN-SET','CAPS','CAST','OS-DIR',\n            'CHR','CODEPAGE-CONVERT','COMPARE',\n            'COUNT-OF','CURRENT-CHANGED','CURRENT-RESULT-ROW','DATASERVERS',\n            'DATA-SOURCE-MODIFIED','DATETIME','DATETIME-TZ',\n            'DAY','DBCODEPAGE','DBCOLLATION','DBNAME',\n            'DBPARAM','DBRESTRICTIONS','DBTASKID','DBTYPE',\n            'DBVERSION','DECIMAL','DECRYPT','DYNAMIC-function',\n            'DYNAMIC-NEXT-VALUE','ENCODE','ENCRYPT','ENTERED',\n            'ERROR','ETIME','EXP','ENDKEY','END-error',\n            'FIRST-OF','FRAME-DB','FRAME-DOWN',\n            'FRAME-FIELD','FRAME-FILE','FRAME-INDEX','FRAME-LINE',\n            'GATEWAYS','GENERATE-PBE-KEY','GENERATE-PBE-SALT','GENERATE-RANDOM-KEY',\n            'GENERATE-UUID','GET-BITS','GET-BYTE','GET-BYTE-ORDER',\n            'GET-BYTES','GET-CODEPAGE','GET-CODEPAGES','GET-COLLATION',\n            'GET-COLLATIONS','GET-DOUBLE','GET-FLOAT','GET-INT64',\n            'GET-LONG','GET-POINTER-VALUE','GET-SHORT','GET-SIZE',\n            'GET-STRING','GET-UNSIGNED-LONG','GET-UNSIGNED-SHORT','GO-PENDING',\n            'GUID','HEX-DECODE','INDEX',\n            'INT64','INTEGER','INTERVAL','IS-ATTR-SPACE',\n            'IS-CODEPAGE-FIXED','IS-COLUMN-CODEPAGE','IS-LEAD-BYTE','ISO-DATE',\n            'KBLABEL','KEYCODE','KEYFUNCTION','KEYLABEL',\n            'KEYWORD','KEYWORD-ALL','LASTKEY',\n            'LAST-OF','LC','LDBNAME','LEFT-TRIM',\n            'LIBRARY','LINE-COUNTER','LIST-EVENTS','LIST-QUERY-ATTRS',\n            'LIST-SET-ATTRS','LIST-widgetS','LOCKED',\n            'LOGICAL','MAXIMUM','MD5-DIGEST',\n            'MEMBER','MESSAGE-LINES','MINIMUM','MONTH',\n            'MTIME','NEW','NEXT-VALUE','SHARED',\n            'NOT ENTERED','NOW','NUM-ALIASES','NUM-DBS',\n            'NUM-ENTRIES','NUM-RESULTS','OPSYS','OS-DRIVES',\n            'OS-ERROR','OS-GETENV','PAGE-NUMBER','PAGE-SIZE',\n            'PDBNAME','PROC-HANDLE','PROC-STATUS','PROGRAM-NAME',\n            'PROGRESS','PROVERSION','QUERY-OFF-END','QUOTER',\n            'RANDOM','RAW','RECID','REJECTED',\n            'RETRY','RETURN-VALUE','RGB-VALUE',\n            'RIGHT-TRIM','R-INDEX','ROUND','ROWID','LENGTH',\n            'SDBNAME','SET-DB-CLIENT','SETUSERID',\n            'SHA1-DIGEST','SQRT','SUBSTITUTE','VARIABLE',\n            'SUPER','TERMINAL','TIME','TIMEZONE','external',\n            'TODAY','TO-ROWID','TRIM','TRUNCATE','return',\n            'TYPE-OF','USERID','VALID-EVENT','VALID-HANDLE',\n            'VALID-object','WEEKDAY','YEAR','BEGINS','VALUE',\n            'EQ','GE','GT','LE','LT','MATCHES','AS','BY','LIKE'\n            ),\n        4 => array(\n            'ACCELERATOR','ACTIVE','ACTOR','ADM-DATA',\n            'AFTER-BUFFER','AFTER-ROWID','AFTER-TABLE','ALLOW-COLUMN-SEARCHING',\n            'ALWAYS-ON-TOP','APPL-ALERT-BOXES','APPL-CONTEXT-ID','APPSERVER-INFO',\n            'APPSERVER-PASSWORD','APPSERVER-USERID','ASYNCHRONOUS','ASYNC-REQUEST-COUNT',\n            'ASYNC-REQUEST-HANDLE','ATTACHED-PAIRLIST','attribute-NAMES','ATTR-SPACE',\n            'AUDIT-EVENT-CONTEXT','AUTO-COMPLETION','AUTO-DELETE','AUTO-DELETE-XML',\n            'AUTO-END-KEY','AUTO-GO','AUTO-INDENT','AUTO-RESIZE',\n            'AUTO-RETURN','AUTO-SYNCHRONIZE','AUTO-VALIDATE','AUTO-ZAP',\n            'AVAILABLE-FORMATS','BACKGROUND','BASE-ADE','BASIC-LOGGING',\n            'BATCH-MODE','BATCH-SIZE','BEFORE-BUFFER','BEFORE-ROWID',\n            'BEFORE-TABLE','BGCOLOR','BLANK','BLOCK-ITERATION-DISPLAY',\n            'BORDER-BOTTOM-CHARS','BORDER-BOTTOM-PIXELS','BORDER-LEFT-CHARS','BORDER-LEFT-PIXELS',\n            'BORDER-RIGHT-CHARS','BORDER-RIGHT-PIXELS','BORDER-TOP-CHARS','BORDER-TOP-PIXELS',\n            'BOX','BOX-SELECTABLE','BUFFER-CHARS','BUFFER-FIELD',\n            'BUFFER-HANDLE','BUFFER-LINES','BUFFER-NAME','BUFFER-VALUE',\n            'BYTES-READ','BYTES-WRITTEN','CACHE','CALL-NAME',\n            'CALL-TYPE','CANCEL-BUTTON','CANCELLED','CAN-CREATE',\n            'CAN-DELETE','CAN-READ','CAN-WRITE','CAREFUL-PAINT',\n            'CASE-SENSITIVE','CENTERED','CHARSET','CHECKED',\n            'CHILD-BUFFER','CHILD-NUM','CLASS-TYPE','CLIENT-CONNECTION-ID',\n            'CLIENT-TTY','CLIENT-TYPE','CLIENT-WORKSTATION','CODE',\n            'CODEPAGE','COLUMN','COLUMN-BGCOLOR','COLUMN-DCOLOR',\n            'COLUMN-FGCOLOR','COLUMN-FONT','COLUMN-LABEL','COLUMN-MOVABLE',\n            'COLUMN-PFCOLOR','COLUMN-READ-ONLY','COLUMN-RESIZABLE','COLUMN-SCROLLING',\n            'COM-HANDLE','COMPLETE','CONFIG-NAME','CONTEXT-HELP',\n            'CONTEXT-HELP-FILE','CONTEXT-HELP-ID','CONTROL-BOX','CONVERT-3D-COLORS',\n            'CPCASE','CPCOLL','CPINTERNAL','CPLOG',\n            'CPPRINT','CPRCODEIN','CPRCODEOUT','CPSTREAM',\n            'CPTERM','CRC-VALUE','CURRENT-COLUMN','CURRENT-ENVIRONMENT',\n            'CURRENT-ITERATION','CURRENT-ROW-MODIFIED','CURRENT-WINDOW','CURSOR-CHAR',\n            'CURSOR-LINE','CURSOR-OFFSET','DATA-ENTRY-RETURN','DATASET',\n            'DATA-SOURCE','DATA-SOURCE-COMPLETE-MAP','DATA-TYPE','DATE-FORMAT',\n            'DB-REFERENCES','DCOLOR','DDE-ERROR','DDE-ID',\n            'DDE-ITEM','DDE-NAME','DDE-TOPIC','DEBLANK',\n            'DEBUG-ALERT','DECIMALS','DEFAULT','DEFAULT-BUFFER-HANDLE',\n            'DEFAULT-BUTTON','DEFAULT-COMMIT','DELIMITER','DISABLE-AUTO-ZAP',\n            'DISPLAY-TIMEZONE','DISPLAY-TYPE','DOMAIN-DESCRIPTION','DOMAIN-NAME',\n            'DOMAIN-TYPE','DRAG-ENABLED','DROP-TARGET','DYNAMIC',\n            'EDGE-CHARS','EDGE-PIXELS','EDIT-CAN-PASTE','EDIT-CAN-UNDO',\n            'EMPTY','ENCODING','ENCRYPTION-SALT','END-USER-PROMPT',\n            'ENTRY-TYPES-LIST','ERROR-COLUMN','ERROR-object-DETAIL','ERROR-ROW',\n            'ERROR-STRING','EVENT-GROUP-ID','EVENT-PROCEDURE','EVENT-PROCEDURE-CONTEXT',\n            'EVENT-TYPE','EXCLUSIVE-ID','EXECUTION-LOG','EXPAND',\n            'EXPANDABLE','FGCOLOR','FILE-CREATE-DATE','FILE-CREATE-TIME',\n            'FILE-MOD-DATE','FILE-MOD-TIME','FILE-NAME','FILE-OFFSET',\n            'FILE-SIZE','FILE-TYPE','FILLED','FILL-MODE',\n            'FILL-WHERE-STRING','FIRST-ASYNC-REQUEST','FIRST-BUFFER','FIRST-CHILD',\n            'FIRST-COLUMN','FIRST-DATASET','FIRST-DATA-SOURCE','FIRST-object',\n            'FIRST-PROCEDURE','FIRST-QUERY','FIRST-SERVER','FIRST-SERVER-SOCKET',\n            'FIRST-SOCKET','FIRST-TAB-ITEM','FIT-LAST-COLUMN','FLAT-BUTTON',\n            'FOCUSED-ROW','FOCUSED-ROW-SELECTED','FONT','FOREGROUND',\n            'FORMAT','FORMATTED','FORM-INPUT','FORM-LONG-INPUT',\n            'FORWARD-ONLY','FRAGMENT','FRAME-COL','FRAME-NAME',\n            'FRAME-ROW','FRAME-SPACING','FRAME-X','FRAME-Y',\n            'FREQUENCY','FULL-HEIGHT-CHARS','FULL-HEIGHT-PIXELS','FULL-PATHNAME',\n            'FULL-WIDTH-CHARS','FULL-WIDTH-PIXELS','GRAPHIC-EDGE',\n            'GRID-FACTOR-HORIZONTAL','GRID-FACTOR-VERTICAL','GRID-SNAP','GRID-UNIT-HEIGHT-CHARS',\n            'GRID-UNIT-HEIGHT-PIXELS','GRID-UNIT-WIDTH-CHARS','GRID-UNIT-WIDTH-PIXELS','GRID-VISIBLE',\n            'GROUP-BOX','HANDLE','HANDLER','HAS-LOBS',\n            'HAS-RECORDS','HEIGHT-CHARS','HEIGHT-PIXELS','HELP',\n            'HIDDEN','HORIZONTAL','HTML-CHARSET','HTML-END-OF-LINE',\n            'HTML-END-OF-PAGE','HTML-FRAME-BEGIN','HTML-FRAME-END','HTML-HEADER-BEGIN',\n            'HTML-HEADER-END','HTML-TITLE-BEGIN','HTML-TITLE-END','HWND',\n            'ICFPARAMETER','ICON','IGNORE-CURRENT-MODIFIED','IMAGE-DOWN',\n            'IMAGE-INSENSITIVE','IMAGE-UP','IMMEDIATE-DISPLAY','INDEX-INFORMATION',\n            'IN-HANDLE','INHERIT-BGCOLOR','INHERIT-FGCOLOR','INITIAL','INIT',\n            'INNER-CHARS','INNER-LINES','INPUT-VALUE','INSTANTIATING-PROCEDURE',\n            'INTERNAL-ENTRIES','IS-CLASS','IS-OPEN','IS-PARAMETER-SET',\n            'IS-XML','ITEMS-PER-ROW','KEEP-CONNECTION-OPEN','KEEP-FRAME-Z-ORDER',\n            'KEEP-SECURITY-CACHE','KEY','KEYS','LABEL',\n            'LABEL-BGCOLOR','LABEL-DCOLOR','LABEL-FGCOLOR','LABEL-FONT',\n            'LABELS','LANGUAGES','LARGE','LARGE-TO-SMALL',\n            'LAST-ASYNC-REQUEST','LAST-BATCH','LAST-CHILD','LAST-object',\n            'LAST-PROCEDURE','LAST-SERVER','LAST-SERVER-SOCKET','LAST-SOCKET',\n            'LAST-TAB-ITEM','LINE','LIST-ITEM-PAIRS','LIST-ITEMS',\n            'LITERAL-QUESTION','LOCAL-HOST','LOCAL-NAME','LOCAL-PORT',\n            'LOCATOR-COLUMN-NUMBER','LOCATOR-LINE-NUMBER','LOCATOR-PUBLIC-ID','LOCATOR-system-ID',\n            'LOCATOR-TYPE','LOG-ENTRY-TYPES','LOGFILE-NAME','LOGGING-LEVEL',\n            'LOGIN-EXPIRATION-TIMESTAMP','LOGIN-HOST','LOGIN-STATE','LOG-THRESHOLD',\n            'MANDATORY','MANUAL-HIGHLIGHT','MAX-BUTTON','MAX-CHARS',\n            'MAX-DATA-GUESS','MAX-HEIGHT-CHARS','MAX-HEIGHT-PIXELS','MAX-VALUE',\n            'MAX-WIDTH-CHARS','MAX-WIDTH-PIXELS','MD5-VALUE','MENU-BAR',\n            'MENU-KEY','MENU-MOUSE','MERGE-BY-FIELD','MESSAGE-AREA',\n            'MESSAGE-AREA-FONT','MIN-BUTTON','MIN-COLUMN-WIDTH-CHARS','MIN-COLUMN-WIDTH-PIXELS',\n            'MIN-HEIGHT-CHARS','MIN-HEIGHT-PIXELS','MIN-SCHEMA-MARSHAL','MIN-VALUE',\n            'MIN-WIDTH-CHARS','MIN-WIDTH-PIXELS','MODIFIED','MOUSE-POINTER',\n            'MOVABLE','MULTI-COMPILE','MULTIPLE','MULTITASKING-INTERVAL',\n            'MUST-UNDERSTAND','NAME','NAMESPACE-PREFIX','NAMESPACE-URI',\n            'NEEDS-APPSERVER-PROMPT','NEEDS-PROMPT','NESTED','NEW-ROW',\n            'NEXT-COLUMN','NEXT-ROWID','NEXT-SIBLING','NEXT-TAB-ITEM', 'NO-BOX',\n            'NO-CURRENT-VALUE','NODE-VALUE','NO-EMPTY-SPACE','NO-FOCUS',\n            'NONAMESPACE-SCHEMA-LOCATION','NO-SCHEMA-MARSHAL','NO-VALIDATE','NUM-BUFFERS',\n            'NUM-BUTTONS','NUM-CHILD-RELATIONS','NUM-CHILDREN','NUM-COLUMNS',\n            'NUM-DROPPED-FILES','NUMERIC-DECIMAL-POINT','NUMERIC-FORMAT','NUMERIC-SEPARATOR',\n            'NUM-FIELDS','NUM-FORMATS','NUM-HEADER-ENTRIES','NUM-ITEMS',\n            'NUM-ITERATIONS','NUM-LINES','NUM-LOCKED-COLUMNS','NUM-LOG-FILES',\n            'NUM-MESSAGES','NUM-PARAMETERS','NUM-REFERENCES','NUM-RELATIONS',\n            'NUM-REPLACED','NUM-SELECTED-ROWS','NUM-SELECTED-WIDGETS','NUM-SOURCE-BUFFERS',\n            'NUM-TABS','NUM-TOP-BUFFERS','NUM-TO-RETAIN','NUM-VISIBLE-COLUMNS',\n            'ON-FRAME-BORDER','ORIGIN-HANDLE','ORIGIN-ROWID','OWNER',\n            'OWNER-DOCUMENT','PAGE-BOTTOM','PAGE-TOP','PARAMETER',\n            'PARENT','PARENT-BUFFER','PARENT-RELATION','PARSE-STATUS',\n            'PASSWORD-FIELD','PATHNAME','PBE-HASH-ALGORITHM','PBE-KEY-ROUNDS',\n            'PERSISTENT','PERSISTENT-CACHE-DISABLED','PERSISTENT-PROCEDURE','PFCOLOR',\n            'PIXELS-PER-COLUMN','PIXELS-PER-ROW','POPUP-MENU','POPUP-ONLY',\n            'POSITION','PREFER-DATASET','PREPARED','PREPARE-STRING',\n            'PREV-COLUMN','PREV-SIBLING','PREV-TAB-ITEM','PRIMARY',\n            'PRINTER-CONTROL-HANDLE','PRINTER-HDC','PRINTER-NAME','PRINTER-PORT',\n            'PRIVATE-DATA','PROCEDURE-NAME','PROGRESS-SOURCE','PROXY',\n            'PROXY-PASSWORD','PROXY-USERID','PUBLIC-ID','PUBLISHED-EVENTS',\n            'RADIO-BUTTONS','READ-ONLY','RECORD-LENGTH',\n            'REFRESHABLE','RELATION-FIELDS','RELATIONS-ACTIVE','REMOTE',\n            'REMOTE-HOST','REMOTE-PORT','RESIZABLE','RESIZE',\n            'RESTART-ROWID','RETAIN-SHAPE','RETURN-INSERTED','RETURN-VALUE-DATA-TYPE',\n            'ROLES','ROUNDED','COL','ROW','ROW-HEIGHT-CHARS',\n            'ROW-HEIGHT-PIXELS','ROW-MARKERS','ROW-RESIZABLE','ROW-STATE',\n            'SAVE-WHERE-STRING','SCHEMA-CHANGE','SCHEMA-LOCATION','SCHEMA-MARSHAL',\n            'SCHEMA-PATH','SCREEN-LINES','SCREEN-VALUE','SCROLLABLE',\n            'SCROLLBAR-HORIZONTAL','SCROLL-BARS','SCROLLBAR-VERTICAL','SEAL-TIMESTAMP',\n            'SELECTABLE','SELECTED','SELECTION-END','SELECTION-START',\n            'SELECTION-TEXT','SENSITIVE','SEPARATOR-FGCOLOR','SEPARATORS',\n            'SERVER','SERVER-CONNECTION-BOUND','SERVER-CONNECTION-BOUND-REQUEST','SERVER-CONNECTION-CONTEXT',\n            'SERVER-CONNECTION-ID','SERVER-OPERATING-MODE','SESSION-END','SESSION-ID',\n            'SHOW-IN-TASKBAR','SIDE-LABEL-HANDLE','SIDE-LABELS','SKIP-DELETED-RECORD',\n            'SMALL-ICON','SMALL-TITLE','SOAP-FAULT-ACTOR','SOAP-FAULT-CODE',\n            'SOAP-FAULT-DETAIL','SOAP-FAULT-STRING','SORT','SORT-ASCENDING',\n            'SORT-NUMBER','SSL-SERVER-NAME','STANDALONE','STARTUP-PARAMETERS',\n            'STATE-DETAIL','STATUS-AREA','STATUS-AREA-FONT','STOPPED',\n            'STREAM','STRETCH-TO-FIT','STRICT','STRING-VALUE',\n            'SUBTYPE','SUPER-PROCEDURES','SUPPRESS-NAMESPACE-PROCESSING','SUPPRESS-WARNINGS',\n            'SYMMETRIC-ENCRYPTION-ALGORITHM','SYMMETRIC-ENCRYPTION-IV','SYMMETRIC-ENCRYPTION-KEY','SYMMETRIC-SUPPORT',\n            'system-ALERT-BOXES','system-ID','TABLE','TABLE-CRC-LIST',\n            'TABLE-HANDLE','TABLE-LIST','TABLE-NUMBER','TAB-POSITION',\n            'TAB-STOP','TEMP-DIRECTORY','TEXT-SELECTED','THREE-D',\n            'TIC-MARKS','TIME-SOURCE','TITLE','TITLE-BGCOLOR','FIELD',\n            'TITLE-DCOLOR','TITLE-FGCOLOR','TITLE-FONT','TOOLTIP',\n            'TOOLTIPS','TOP-ONLY','TRACKING-CHANGES','TRANSACTION',\n            'TRANS-INIT-PROCEDURE','TRANSPARENT','TYPE','UNIQUE-ID',\n            'UNIQUE-MATCH','URL','URL-PASSWORD','URL-USERID','EXTENT',\n            'USER-ID','V6DISPLAY','VALIDATE-EXPRESSION','VALIDATE-MESSAGE',\n            'VALIDATE-XML','VALIDATION-ENABLED','VIEW-FIRST-COLUMN-ON-REOPEN',\n            'VIRTUAL-HEIGHT-CHARS','VIRTUAL-HEIGHT-PIXELS','VIRTUAL-WIDTH-CHARS','VIRTUAL-WIDTH-PIXELS',\n            'VISIBLE','WARNING','WHERE-STRING','widget-ENTER','DATE',\n            'widget-LEAVE','WIDTH-CHARS','WIDTH-PIXELS','WINDOW-STATE',\n            'WINDOW-system','WORD-WRAP','WORK-AREA-HEIGHT-PIXELS','WORK-AREA-WIDTH-PIXELS',\n            'WORK-AREA-X','WORK-AREA-Y','WRITE-STATUS','X','widget-Handle',\n            'X-DOCUMENT','XML-DATA-TYPE','XML-NODE-TYPE','XML-SCHEMA-PATH',\n            'XML-SUPPRESS-NAMESPACE-PROCESSING','Y','YEAR-OFFSET','CHARACTER',\n            'LONGCHAR','MEMPTR','CHAR','DEC','INT','LOG','DECI','INTE','LOGI','long'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}',\n        '<', '>', '=',\n        '+', '-', '*', '/',\n        '!', '@', '%', '|', '$',\n        ':', '.', ';', ',',\n        '?', '<=','<>','>=', '\\\\'\n        ),\n    'CASE_SENSITIVE' => array (\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false\n        ),\n    'STYLES' => array (\n        'KEYWORDS' => array (\n            1 => 'color: #0000ff; font-weight: bold;',\n            2 => 'color: #1D16B2;',\n            3 => 'color: #993333;',\n            4 => 'color: #0000ff;'\n            ),\n        'COMMENTS' => array (\n//            1 => 'color: #808080; font-style: italic;',\n//            2 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array (\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array (\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array (\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array (\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array (\n            0 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array (\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array (\n            ),\n        'SCRIPT' => array (\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        0 => ':'\n        ),\n    'REGEXPS' => array (\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array (\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array (\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![\\.\\-a-zA-Z0-9_\\$\\#&])\",\n            'DISALLOWED_AFTER' =>  \"(?![\\-a-zA-Z0-9_%])\",\n            1 => array(\n                'SPACE_AS_WHITESPACE' => true\n                ),\n            2 => array(\n                'SPACE_AS_WHITESPACE' => true\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/prolog.php",
    "content": "<?php\n/*************************************************************************************\n * prolog.php\n * --------\n * Author: Benny Baumann (BenBE@geshi.org)\n * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2008/10/02\n *\n * Prolog language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/10/02 (1.0.8.1)\n *  -  First Release\n *\n * TODO (updated 2008/10/02)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Prolog',\n    'COMMENT_SINGLE' => array(1 => '%'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'HARDQUOTE' => array(\"'\", \"'\"),\n    'HARDESCAPE' => array(\"\\'\"),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'abolish','abs','arg','asserta','assertz','at_end_of_stream','atan',\n            'atom','atom_chars','atom_codes','atom_concat','atom_length',\n            'atomic','bagof','call','catch','ceiling','char_code',\n            'char_conversion','clause','close','compound','consult','copy_term',\n            'cos','current_char_conversion','current_input','current_op',\n            'current_output','current_predicate','current_prolog_flag',\n            'discontiguous','dynamic','ensure_loaded','exp','fail','findall',\n            'float','float_fractional_part','float_integer_part','floor',\n            'flush_output','functor','get_byte','get_char','get_code','halt',\n            'include','initialization','integer','is','listing','log','mod',\n            'multifile','nl','nonvar','notrace','number','number_chars',\n            'number_codes','once','op','open','peek_byte','peek_char',\n            'peek_code','put_byte','put_char','put_code','read','read_term',\n            'rem','repeat','retract','round','set_input','set_output',\n            'set_prolog_flag','set_stream_position','setof','sign','sin','sqrt',\n            'stream_property','sub_atom','throw','trace','true','truncate',\n            'unify_with_occurs_check','univ','var','write','write_canonical',\n            'write_term','writeq'\n            )\n        ),\n    'SYMBOLS' => array(\n        0 => array('(', ')', '[', ']', '{', '}',),\n        1 => array('?-', ':-', '=:='),\n        2 => array('\\-', '\\+', '\\*', '\\/'),\n        3 => array('-', '+', '*', '/'),\n        4 => array('.', ':', ',', ';'),\n        5 => array('!', '@', '&', '|'),\n        6 => array('<', '>', '=')\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #990000;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            'HARD' => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;',\n            'HARD' => 'color: #0000ff;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #800080;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;',\n            1 => 'color: #339933;',\n            2 => 'color: #339933;',\n            3 => 'color: #339933;',\n            4 => 'color: #339933;',\n            5 => 'color: #339933;',\n            6 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #008080;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => 'http://pauillac.inria.fr/~deransar/prolog/bips.html'\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        //Variables\n        0 => \"(?<![a-zA-Z0-9_])(?!(?:PIPE|SEMI|DOT)[^a-zA-Z0-9_])[A-Z_][a-zA-Z0-9_]*(?![a-zA-Z0-9_])(?!\\x7C)\"\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/properties.php",
    "content": "<?php\n/*************************************************************************************\n * properties.php\n * --------\n * Author: Edy Hinzen\n * Copyright: (c) 2009 Edy Hinzen\n * Release Version: 1.0.9.1\n * Date Started: 2009/04/03\n *\n * Property language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/04/03 (1.0.0)\n *   -  First Release\n *\n * TODO\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'PROPERTIES',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        /* Common used variables */\n        1 => array(\n            '${user.home}'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '[', ']', '='\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'font-weight: bold;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'BRACKETS' => array(\n            0 => ''\n            ),\n        'STRINGS' => array(\n            0 => 'color: #933;'\n            ),\n        'NUMBERS' => array(\n            0 => ''\n            ),\n        'METHODS' => array(\n            0 => ''\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #000080; font-weight:bold;',\n            1 => 'color: #008000; font-weight:bold;'\n            ),\n        'SCRIPT' => array(\n            0 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        //Entry names\n        0 => array(\n            GESHI_SEARCH => '^(\\s*)([.a-zA-Z0-9_\\-]+)(\\s*=)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3'\n            ),\n        //Entry values\n        1 => array(\n            // Evil hackery to get around GeSHi bug: <>\" and ; are added so <span>s can be matched\n            // Explicit match on variable names because if a comment is before the first < of the span\n            // gets chewed up...\n            GESHI_SEARCH => '([<>\";a-zA-Z0-9_]+\\s*)=(.*)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1=',\n            GESHI_AFTER => ''\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/providex.php",
    "content": "<?php\n/******************************************************************************\n * providex.php\n * ----------\n * Author: Jeff Wilder (jeff@coastallogix.com)\n * Copyright:  (c) 2008 Coastal Logix (http://www.coastallogix.com)\n * Release Version: 1.0.9.1\n * Date Started: 2008/10/18\n *\n * ProvideX language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/10/21 (1.0.0)\n *  - First Release\n *\n * TODO\n * -------------------------\n * 1. Create a regexp for numeric global variables (ex: %VarName = 3)\n * 2. Add standard object control properties\n *\n ******************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n *****************************************************************************/\n$language_data = array (\n    'LANG_NAME' => 'ProvideX',\n    'COMMENT_SINGLE' => array(1 => '!'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        // Single-Line Comments using REM command\n        2 => \"/\\bREM\\b.*?$/i\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            // Directives\n            '*break', '*continue', '*end', '*escape', '*next', '*proceed',\n            '*retry', '*return', '*same', 'accept', 'add index', 'addr',\n            'auto', 'begin', 'break', 'button', 'bye', 'call', 'case',\n            'chart', 'check_box', 'class', 'clear', 'clip_board', 'close',\n            'continue', 'control', 'create required', 'create table',\n            'cwdir', 'data', 'day_format', 'def', 'default', 'defctl',\n            'defprt', 'deftty', 'delete required', 'dictionary', 'dim', 'direct',\n            'directory', 'disable', 'drop', 'drop_box', 'dump', 'edit',\n            'else', 'enable', 'end switch', 'end', 'end_if', 'endtrace',\n            'enter', 'erase', 'error_handler', 'escape', 'event', 'execute',\n            'exit', 'exitto', 'extract', 'file', 'find', 'floating point',\n            'for', 'function', 'get_file_box', 'gosub', 'goto', 'grid',\n            'h_scrollbar', 'hide', 'if', 'index', 'indexed', 'input',\n            'insert', 'invoke', 'iolist', 'keyed', 'let', 'like',\n            'line_switch', 'list', 'list_box', 'load', 'local', 'lock',\n            'long_form', 'menu_bar', 'merge', 'message_lib', 'mnemonic',\n            'msgbox', 'multi_line', 'multi_media', 'next', 'object', 'obtain',\n            'on', 'open', 'password', 'perform', 'pop', 'popup_menu',\n            'precision', 'prefix', 'preinput', 'print', 'process', 'program',\n            'property', 'purge', 'quit', 'radio_button', 'randomize',\n            'read', 'record', 'redim', 'refile', 'release', 'rem', 'remove',\n            'rename', 'renumber', 'repeat', 'reset', 'restore', 'retry',\n            'return', 'round', 'run', 'save', 'select', 'serial', 'server',\n            'set_focus', 'set_nbf', 'set_param', 'setctl', 'setday', 'setdev',\n            'setdrive', 'seterr', 'setesc', 'setfid', 'setmouse', 'settime',\n            'settrace', 'short_form', 'show', 'sort', 'start', 'static',\n            'step', 'stop', 'switch', 'system_help', 'system_jrnl', 'table',\n            'then', 'to', 'translate', 'tristate_box', 'unlock', 'until',\n            'update', 'user_lex', 'v_scrollbar', 'vardrop_box', 'varlist_box',\n            'via', 'video_palette', 'wait', 'wend', 'while', 'winprt_setup',\n            'with', 'write'\n            ),\n        2 => array(\n            // System Functions\n            '@x', '@y', 'abs', 'acs', 'and', 'arg', 'asc', 'asn', 'ath',\n            'atn', 'bin', 'bsz', 'chg', 'chr', 'cmp', 'cos', 'cpl',\n            'crc', 'cse', 'ctl', 'cvs', 'dec', 'dir', 'dll', 'dsk',\n            'dte', 'env', 'ept', 'err', 'evn', 'evs', 'exp', 'ffn',\n            'fib', 'fid', 'fin', 'fpt', 'gap', 'gbl', 'gep', 'hsa',\n            'hsh', 'hta', 'hwn', 'i3e', 'ind', 'int', 'iol', 'ior',\n            'jul', 'jst', 'kec', 'kef', 'kel', 'ken', 'kep', 'key',\n            'kgn', 'lcs', 'len', 'lno', 'log', 'lrc', 'lst', 'max',\n            'mem', 'mid', 'min', 'mnm', 'mod', 'msg', 'msk', 'mxc',\n            'mxl', 'new', 'not', 'nul', 'num', 'obj', 'opt', 'pad',\n            'pck', 'pfx', 'pgm', 'pos', 'prc', 'prm', 'pth', 'pub',\n            'rcd', 'rdx', 'rec', 'ref', 'rnd', 'rno', 'sep', 'sgn',\n            'sin', 'sqr', 'srt', 'ssz', 'stk', 'stp', 'str', 'sub',\n            'swp', 'sys', 'tan', 'tbl', 'tcb', 'tmr', 'trx', 'tsk',\n            'txh', 'txw', 'ucp', 'ucs', 'upk', 'vin', 'vis', 'xeq',\n            'xfa', 'xor', '_obj'\n            ),\n        3 => array(\n            // System Variables\n            // Vars that are duplicates of functions\n            // 'ctl', 'err', 'pfx', 'prm', 'rnd', 'sep', 'sys',\n            'bkg', 'chn', 'day', 'dlm', 'dsz', 'eom', 'ers', 'esc',\n            'gfn', 'gid', 'hfn', 'hlp', 'hwd', 'lfa', 'lfo', 'lip',\n            'lpg', 'lwd', 'mse', 'msl', 'nar', 'nid', 'pgn', 'psz',\n            'quo', 'ret', 'sid', 'ssn', 'tim', 'tme', 'tms', 'tsm',\n            'uid', 'unt', 'who'\n\n            ),\n        4 => array(\n            // Nomads Variables\n            '%Flmaint_Lib$', '%Flmaint_Msg$', '%Nomads_Activation_Ok',\n            '%Nomads_Auto_Qry', '%Nomads_Disable_Debug',\n            '%Nomads_Disable_Trace', '%Nomads_Fkey_Handler$',\n            '%Nomads_Fkey_Tbl$', '%Nomads_Notest', '%Nomads_Onexit$',\n            '%Nomads_Post_Display', '%Nomads_Pre_Display$',\n            '%Nomads_Process$', '%Nomads_Trace_File$',\n            '%Nomad_Actv_Folder_Colors$', '%Nomad_Automation_Enabled',\n            '%Nomad_Auto_Close', '%Nomad_Center_Wdw', '%Nomad_Concurrent_Wdw',\n            '%Nomad_Custom_Define', '%Nomad_Custom_Dir$',\n            '%Nomad_Custom_Genmtc', '%Nomad_Custom_Skip_Definition',\n            '%Nomad_Def_Sfx$', '%Nomad_Enter_Tab', '%Nomad_Esc_Sel',\n            '%Nomad_Isjavx', '%Nomad_Iswindx', '%Nomad_Iswindx$',\n            '%Nomad_Menu$', '%Nomad_Menu_Leftedge_Clr$',\n            '%Nomad_Menu_Textbackground_Clr$', '%Nomad_Mln_Sep$',\n            '%Nomad_Msgmnt$', '%Nomad_Noplusw', '%Nomad_No_Customize',\n            '%Nomad_Object_Persistence', '%Nomad_Object_Resize',\n            '%Nomad_Open_Load', '%Nomad_Override_Font$',\n            '%Nomad_Palette_Loaded', '%Nomad_Panel_Info_Force',\n            '%Nomad_Panel_Info_Prog$', '%Nomad_Pnl_Def_Colour$',\n            '%Nomad_Pnl_Def_Font$', '%Nomad_Prg_Cache', '%Nomad_Qry_Attr$',\n            '%Nomad_Qry_Btn$', '%Nomad_Qry_Clear_Start', '%Nomad_Qry_Tip$',\n            '%Nomad_Qry_Wide', '%Nomad_Query_Clear_Status', '%Nomad_Query_Kno',\n            '%Nomad_Query_No_Gray', '%Nomad_Query_Odb_Ignore',\n            '%Nomad_Query_Retkno', '%Nomad_Query_Sbar_Max',\n            '%Nomad_Relative_Wdw', '%Nomad_Save_Qry_Path', '%Nomad_Script_Fn',\n            '%Nomad_Script_Log', '%Nomad_Script_Wdw',\n            '%Nomad_Skip_Change_Logic', '%Nomad_Skip_Onselect_Logic',\n            '%Nomad_Stk$', '%Nomad_Tab_Dir', '%Nomad_Timeout',\n            '%Nomad_Turbo_Off', '%Nomad_Visual_Effect',\n            '%Nomad_Visual_Override', '%Nomad_Win_Ver', '%Nomad_Xchar',\n            '%Nomad_Xmax', '%Nomad_Ychar', '%Nomad_Ymax', '%Scr_Def_Attr$',\n            '%Scr_Def_H_Fl$', '%Scr_Def_H_Id$', '%Scr_Lib', '%Scr_Lib$',\n            '%Z__Usr_Sec$', 'Alternate_Panel$', 'Alternate_Panel_Type$',\n            'Arg_1$', 'Arg_10$', 'Arg_11$', 'Arg_12$', 'Arg_13$', 'Arg_14$',\n            'Arg_15$', 'Arg_16$', 'Arg_17$', 'Arg_18$', 'Arg_19$', 'Arg_2$',\n            'Arg_20$', 'Arg_3$', 'Arg_4$', 'Arg_5$', 'Arg_6$', 'Arg_7$',\n            'Arg_8$', 'Arg_9$', 'Change_Flg', 'Cmd_Str$', 'Default_Prog$',\n            'Disp_Cmd$', 'Entire_Record$', 'Exit_Cmd$', 'Fldr_Default_Prog$',\n            'Folder_Id$', 'Id', 'Id$', 'Ignore_Exit', 'Initialize_Flg',\n            'Init_Text$', 'Init_Val$', 'Main_Scrn_K$', 'Mnu_Ln$',\n            'Next_Folder', 'Next_Id', 'Next_Id$', 'No_Flush', 'Prime_Key$',\n            'Prior_Val', 'Prior_Val$', 'Qry_Val$', 'Refresh_Flg',\n            'Replacement_Folder$', 'Replacement_Lib$', 'Replacement_Scrn$',\n            'Scrn_Id$', 'Scrn_K$', 'Scrn_Lib$', 'Tab_Table$', '_Eom$'\n            ),\n        5 => array(\n            // Mnemonics\n            \"'!w'\", \"'*c'\", \"'*h'\", \"'*i'\", \"'*o'\", \"'*r'\", \"'*x'\",\n            \"'+b'\", \"'+d'\", \"'+e'\", \"'+f'\", \"'+i'\", \"'+n'\",\n            \"'+p'\", \"'+s'\", \"'+t'\", \"'+u'\", \"'+v'\", \"'+w'\", \"'+x'\",\n            \"'+z'\", \"'-b'\", \"'-d'\", \"'-e'\", \"'-f'\", \"'-i'\",\n            \"'-n'\", \"'-p'\", \"'-s'\", \"'-t'\", \"'-u'\", \"'-v'\", \"'-w'\",\n            \"'-x'\", \"'-z'\", \"'2d'\", \"'3d'\", \"'4d'\", \"'@@'\", \"'ab'\",\n            \"'arc'\", \"'at'\", \"'backgr'\", \"'bb'\", \"'be'\", \"'beep'\",\n            \"'bg'\", \"'bi'\", \"'bj'\", \"'bk'\", \"'black'\", \"'blue'\",\n            \"'bm'\", \"'bo'\", \"'box'\", \"'br'\", \"'bs'\", \"'bt'\", \"'bu'\",\n            \"'bw'\", \"'bx'\", \"'caption'\", \"'ce'\", \"'cf'\", \"'ch'\",\n            \"'ci'\", \"'circle'\", \"'cl'\", \"'colour'\", \"'cp'\", \"'cpi'\",\n            \"'cr'\", \"'cs'\", \"'cursor'\", \"'cyan''_cyan'\", \"'dc'\",\n            \"'default'\", \"'df'\", \"'dialogue'\", \"'dn'\", \"'do'\",\n            \"'drop'\", \"'eb'\", \"'ee'\", \"'ef'\", \"'eg'\", \"'ei'\", \"'ej'\",\n            \"'el'\", \"'em'\", \"'eo'\", \"'ep'\", \"'er'\", \"'es'\", \"'et'\",\n            \"'eu'\", \"'ew'\", \"'ff'\", \"'fill'\", \"'fl'\", \"'font'\",\n            \"'frame'\", \"'gd'\", \"'ge'\", \"'gf'\", \"'goto'\", \"'green'\",\n            \"'gs'\", \"'hide'\", \"'ic'\", \"'image'\", \"'jc'\",\n            \"'jd'\", \"'jl'\", \"'jn'\", \"'jr'\", \"'js'\", \"'l6'\", \"'l8'\",\n            \"'lc'\", \"'ld'\", \"'lf'\", \"'li'\", \"'line'\", \"'lm'\",\n            \"'lpi'\", \"'lt'\", \"'magenta'\", \"'maxsize'\", \"'me'\",\n            \"'message'\", \"'minsize'\", \"'mn'\", \"'mode'\",\n            \"'move'\", \"'mp'\", \"'ms'\", \"'ni'\", \"'offset'\", \"'option'\",\n            \"'pe'\", \"'pen'\", \"'picture'\", \"'pie'\", \"'pm'\", \"'polygon'\",\n            \"'pop'\", \"'ps'\", \"'push'\", \"'rb'\", \"'rc'\", \"'rectangle'\",\n            \"'red'\", \"'rl'\", \"'rm'\", \"'rp'\", \"'rs'\", \"'rt'\", \"'sb'\",\n            \"'scroll'\", \"'sd'\", \"'se'\", \"'sf'\", \"'show'\", \"'size'\",\n            \"'sl'\", \"'sn'\", \"'sp'\", \"'sr'\", \"'swap'\", \"'sx'\", \"'text'\",\n            \"'textwdw'\", \"'tr'\", \"'tw'\", \"'uc'\", \"'up'\", \"'vt'\", \"'wa'\",\n            \"'wc'\", \"'wd'\", \"'wg'\", \"'white'\", \"'window'\", \"'wm'\",\n            \"'wp'\", \"'wr'\", \"'wrap'\", \"'ws'\", \"'wx'\", \"'xp'\", \"'yellow'\",\n            \"'zx'\", \"'_black'\", \"'_blue'\", \"'_colour'\", \"'_green'\",\n            \"'_magenta'\", \"'_red'\", \"'_white'\", \"'_yellow'\"\n            ),\n        ),\n    'SYMBOLS' => array(\n        0 => array('+', '-', '*', '/', '^', '|'),\n        1 => array('++', '--', '+=', '-=', '*=', '/=', '^=', '|='),\n        2 => array('&lt;', '&gt;', '='),\n        3 => array('(', ')', '[', ']', '{', '}'),\n        4 => array(',', '@', ';', '\\\\')\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: navy;', // Directives\n            2 => 'color: blue;', // System Functions\n            3 => 'color: blue;', // System Variables\n            4 => 'color: #6A5ACD; font-style: italic;', // Nomads Global Variables\n            5 => 'color: #BDB76B;', // Mnemonics\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008080; font-style: italic;',\n            2 => 'color: #008080;',\n            'MULTI' => 'color: #008080; font-style: italic;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000066;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: green;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #00008B;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #008000;',\n            1 => 'color: #000099;',\n            2 => 'color: #000099;',\n            3 => 'color: #0000C9;',\n            4 => 'color: #000099;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            1 => 'color: #006400; font-weight: bold',\n            2 => 'color: #6A5ACD;'\n            )\n        ),\n    'URLS' => array(\n        1 => 'http://www.allbasic.info./wiki/index.php/PX:Directive_{FNAME}',\n        2 => 'http://www.allbasic.info./wiki/index.php/PX:System_function_{FNAME}',\n        3 => 'http://www.allbasic.info./wiki/index.php/PX:System_variable_{FNAME}',\n        4 => 'http://www.allbasic.info./wiki/index.php/PX:Nomads_{FNAME}',\n        5 => 'http://www.allbasic.info./wiki/index.php/PX:Mnemonic_{FNAMEU}'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => \"'\"\n        ),\n    'REGEXPS' => array(\n        1 => array(\n            // Line Labels\n            GESHI_SEARCH => '([[:space:]])([a-zA-Z_][a-zA-Z0-9_]+)(:)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3'\n            ),\n        2 => array(\n            // Global String Variables\n            GESHI_SEARCH => '(\\%)([a-zA-Z_][a-zA-Z0-9_]+)(\\$)',\n            GESHI_REPLACE => '\\\\1\\\\2\\\\3',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'NUMBERS' => GESHI_NEVER\n            )\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/purebasic.php",
    "content": "<?php\n/*************************************************************************************\n * purebasic.php\n * -------\n * Author: GuShH\n * Copyright: (c) 2009 Gustavo Julio Fiorenza\n * Release Version: 1.0.9.1\n * Date Started: 13/06/2009\n *\n * PureBasic language file for GeSHi.\n *\n * CHANGES\n * -------\n * 13/06/2009 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2009/06/13)\n * -------------------------\n * Add the remaining ASM mnemonics and the 4.3x functions/etc.\n * Better coloring (perhaps match the default scheme of PB?)\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'PureBasic',\n    'COMMENT_SINGLE' => array( 1 => \";\"  ),\n    'COMMENT_MULTI' => array( ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            // Keywords\n            'And', 'As', 'Break', 'CallDebugger', 'Case', 'CompilerCase', 'CompilerDefault', 'CompilerElse', 'CompilerEndIf', 'CompilerEndSelect',\n            'CompilerError', 'CompilerIf', 'CompilerSelect', 'Continue', 'Data', 'DataSection', 'EndDataSection', 'Debug', 'DebugLevel', 'Declare',\n            'DeclareCDLL', 'DeclareDLL', 'Default', 'Define', 'Dim', 'DisableASM', 'DisableDebugger', 'DisableExplicit', 'Else', 'ElseIf', 'EnableASM',\n            'EnableDebugger', 'EnableExplicit', 'End', 'EndEnumeration', 'EndIf', 'EndImport', 'EndInterface', 'EndMacro', 'EndProcedure',\n            'EndSelect', 'EndStructure', 'EndStructureUnion', 'EndWith', 'Enumeration', 'Extends', 'FakeReturn', 'For', 'Next', 'ForEach',\n            'ForEver', 'Global', 'Gosub', 'Goto', 'If', 'Import', 'ImportC', 'IncludeBinary', 'IncludeFile', 'IncludePath', 'Interface', 'Macro',\n            'NewList', 'Not', 'Or', 'Procedure', 'ProcedureC', 'ProcedureCDLL', 'ProcedureDLL', 'ProcedureReturn', 'Protected', 'Prototype',\n            'PrototypeC', 'Read', 'ReDim', 'Repeat', 'Until', 'Restore', 'Return', 'Select', 'Shared', 'Static', 'Step', 'Structure', 'StructureUnion',\n            'Swap', 'To', 'Wend', 'While', 'With', 'XIncludeFile', 'XOr'\n            ),\n        2 => array(\n            // All Functions\n            'Abs', 'ACos', 'Add3DArchive', 'AddBillboard', 'AddDate', 'AddElement', 'AddGadgetColumn', 'AddGadgetItem',\n            'AddKeyboardShortcut', 'AddMaterialLayer', 'AddPackFile', 'AddPackMemory', 'AddStatusBarField', 'AddSysTrayIcon',\n            'AllocateMemory', 'AmbientColor', 'AnimateEntity', 'Asc', 'ASin', 'ATan', 'AudioCDLength', 'AudioCDName', 'AudioCDStatus',\n            'AudioCDTrackLength', 'AudioCDTracks', 'AudioCDTrackSeconds', 'AvailableProgramOutput', 'AvailableScreenMemory',\n            'BackColor', 'Base64Decoder', 'Base64Encoder', 'BillboardGroupLocate', 'BillboardGroupMaterial', 'BillboardGroupX',\n            'BillboardGroupY', 'BillboardGroupZ', 'BillboardHeight', 'BillboardLocate', 'BillboardWidth', 'BillboardX', 'BillboardY', 'BillboardZ',\n            'Bin', 'BinQ', 'Blue', 'Box', 'ButtonGadget', 'ButtonImageGadget', 'CalendarGadget', 'CallCFunction', 'CallCFunctionFast',\n            'CallFunction', 'CallFunctionFast', 'CameraBackColor', 'CameraFOV', 'CameraLocate', 'CameraLookAt', 'CameraProjection',\n            'CameraRange', 'CameraRenderMode', 'CameraX', 'CameraY', 'CameraZ', 'CatchImage', 'CatchSound', 'CatchSprite',\n            'CatchXML', 'ChangeAlphaIntensity', 'ChangeCurrentElement', 'ChangeGamma', 'ChangeListIconGadgetDisplay',\n            'ChangeSysTrayIcon', 'CheckBoxGadget', 'CheckEntityCollision', 'CheckFilename', 'ChildXMLNode', 'Chr', 'Circle',\n            'ClearBillboards', 'ClearClipboard', 'ClearConsole', 'ClearError', 'ClearGadgetItemList', 'ClearList', 'ClearScreen', 'ClipSprite',\n            'CloseConsole', 'CloseDatabase', 'CloseFile', 'CloseGadgetList', 'CloseHelp', 'CloseLibrary', 'CloseNetworkConnection',\n            'CloseNetworkServer', 'ClosePack', 'ClosePreferences', 'CloseProgram', 'CloseScreen', 'CloseSubMenu', 'CloseWindow',\n            'ColorRequester', 'ComboBoxGadget', 'CompareMemory', 'CompareMemoryString', 'ConnectionID', 'ConsoleColor',\n            'ConsoleCursor', 'ConsoleError', 'ConsoleLocate', 'ConsoleTitle', 'ContainerGadget', 'CopyDirectory', 'CopyEntity',\n            'CopyFile', 'CopyImage', 'CopyLight', 'CopyMaterial', 'CopyMemory', 'CopyMemoryString', 'CopyMesh', 'CopySprite',\n            'CopyTexture', 'CopyXMLNode', 'Cos', 'CountBillboards', 'CountGadgetItems', 'CountLibraryFunctions', 'CountList',\n            'CountMaterialLayers', 'CountProgramParameters', 'CountRenderedTriangles', 'CountString', 'CRC32Fingerprint',\n            'CreateBillboardGroup', 'CreateCamera', 'CreateDirectory', 'CreateEntity', 'CreateFile', 'CreateGadgetList',\n            'CreateImage', 'CreateLight', 'CreateMaterial', 'CreateMenu', 'CreateMesh', 'CreateMutex', 'CreateNetworkServer',\n            'CreatePack', 'CreatePalette', 'CreateParticleEmitter', 'CreatePopupMenu', 'CreatePreferences', 'CreateSprite',\n            'CreateSprite3D', 'CreateStatusBar', 'CreateTerrain', 'CreateTexture', 'CreateThread', 'CreateToolBar', 'CreateXML',\n            'CreateXMLNode', 'DatabaseColumnName', 'DatabaseColumns', 'DatabaseColumnType', 'DatabaseDriverDescription',\n            'DatabaseDriverName', 'DatabaseError', 'DatabaseQuery', 'DatabaseUpdate', 'Date', 'DateGadget', 'Day', 'DayOfWeek',\n            'DayOfYear', 'DefaultPrinter', 'Defined', 'Delay', 'DeleteDirectory', 'DeleteElement', 'DeleteFile', 'DeleteXMLNode',\n            'DESFingerprint', 'DesktopDepth', 'DesktopFrequency', 'DesktopHeight', 'DesktopMouseX', 'DesktopMouseY', 'DesktopName',\n            'DesktopWidth', 'DirectoryEntryAttributes', 'DirectoryEntryDate', 'DirectoryEntryName', 'DirectoryEntrySize',\n            'DirectoryEntryType', 'DisableGadget', 'DisableMaterialLighting', 'DisableMenuItem', 'DisableToolBarButton', 'DisableWindow',\n            'DisASMCommand', 'DisplayAlphaSprite', 'DisplayPalette', 'DisplayPopupMenu', 'DisplayRGBFilter', 'DisplayShadowSprite',\n            'DisplaySolidSprite', 'DisplaySprite', 'DisplaySprite3D', 'DisplayTranslucentSprite', 'DisplayTransparentSprite', 'DragFiles',\n            'DragImage', 'DragOSFormats', 'DragPrivate', 'DragText', 'DrawAlphaImage', 'DrawImage', 'DrawingBuffer',\n            'DrawingBufferPitch', 'DrawingBufferPixelFormat', 'DrawingFont', 'DrawingMode', 'DrawText', 'EditorGadget',\n            'egrid_AddColumn', 'egrid_AddRows', 'egrid_AppendCells', 'egrid_ClearRows', 'egrid_CopyCells',\n            'egrid_CreateCellCallback', 'egrid_CreateGrid', 'egrid_DeleteCells', 'egrid_FastDeleteCells', 'egrid_FreeGrid',\n            'egrid_GetCellSelection', 'egrid_GetCellText', 'egrid_GetColumnOrderArray', 'egrid_HasSelectedCellChanged', 'egrid_Height',\n            'egrid_HideEdit', 'egrid_HideGrid', 'egrid_MakeCellVisible', 'egrid_NumberOfColumns', 'egrid_NumberOfRows',\n            'egrid_PasteCells', 'egrid_Register', 'egrid_RemoveCellCallback', 'egrid_RemoveColumn', 'egrid_RemoveRow', 'egrid_Resize',\n            'egrid_SelectCell', 'egrid_SelectedColumn', 'egrid_SelectedRow', 'egrid_SetCellSelection', 'egrid_SetCellText',\n            'egrid_SetColumnOrderArray', 'egrid_SetHeaderFont', 'egrid_SetHeaderHeight', 'egrid_SetOption', 'egrid_Width', 'egrid_x',\n            'egrid_y', 'EjectAudioCD', 'ElapsedMilliseconds', 'Ellipse', 'EnableGadgetDrop', 'EnableGraphicalConsole',\n            'EnableWindowDrop', 'EnableWorldCollisions', 'EnableWorldPhysics', 'Engine3DFrameRate', 'EntityAngleX',\n            'EntityAnimationLength', 'EntityLocate', 'EntityMaterial', 'EntityMesh', 'EntityPhysicBody', 'EntityRenderMode',\n            'EntityX', 'EntityY', 'EntityZ', 'EnvironmentVariableName', 'EnvironmentVariableValue', 'Eof', 'EventClient',\n            'EventDropAction', 'EventDropBuffer', 'EventDropFiles', 'EventDropImage', 'EventDropPrivate', 'EventDropSize',\n            'EventDropText', 'EventDropType', 'EventDropX', 'EventDropY', 'EventGadget', 'EventlParam', 'EventMenu', 'EventServer',\n            'EventType', 'EventWindow', 'EventwParam', 'ExamineDatabaseDrivers', 'ExamineDesktops', 'ExamineDirectory',\n            'ExamineEnvironmentVariables', 'ExamineIPAddresses', 'ExamineJoystick', 'ExamineKeyboard', 'ExamineLibraryFunctions',\n            'ExamineMouse', 'ExaminePreferenceGroups', 'ExaminePreferenceKeys', 'ExamineScreenModes', 'ExamineWorldCollisions',\n            'ExamineXMLAttributes', 'ExplorerComboGadget', 'ExplorerListGadget', 'ExplorerTreeGadget', 'ExportXML',\n            'ExportXMLSize', 'FileBuffersSize', 'FileID', 'FileSeek', 'FileSize', 'FillArea', 'FindString', 'FinishDirectory',\n            'FirstDatabaseRow', 'FirstElement', 'FirstWorldCollisionEntity', 'FlipBuffers', 'FlushFileBuffers', 'Fog', 'FontID',\n            'FontRequester', 'FormatDate', 'FormatXML', 'Frame3DGadget', 'FreeBillboardGroup', 'FreeCamera', 'FreeEntity',\n            'FreeFont', 'FreeGadget', 'FreeImage', 'FreeLight', 'FreeMaterial', 'FreeMemory', 'FreeMenu', 'FreeMesh',\n            'FreeModule', 'FreeMovie', 'FreeMutex', 'FreePalette', 'FreeParticleEmitter', 'FreeSound', 'FreeSprite',\n            'FreeSprite3D', 'FreeStatusBar', 'FreeTexture', 'FreeToolBar', 'FreeXML', 'FrontColor', 'GadgetHeight', 'GadgetID',\n            'GadgetItemID', 'GadgetToolTip', 'GadgetType', 'GadgetWidth', 'GadgetX', 'GadgetY', 'GetActiveGadget',\n            'GetActiveWindow', 'GetClientIP', 'GetClientPort', 'GetClipboardImage', 'GetClipboardText', 'GetCurrentDirectory',\n            'GetCurrentEIP', 'GetDatabaseDouble', 'GetDatabaseFloat', 'GetDatabaseLong', 'GetDatabaseQuad', 'GetDatabaseString',\n            'GetDisASMString', 'GetEntityAnimationTime', 'GetEntityFriction', 'GetEntityMass', 'GetEnvironmentVariable',\n            'GetErrorAddress', 'GetErrorCounter', 'GetErrorDescription', 'GetErrorDLL', 'GetErrorLineNR', 'GetErrorModuleName',\n            'GetErrorNumber', 'GetErrorRegister', 'GetExtensionPart', 'GetFileAttributes', 'GetFileDate', 'GetFilePart', 'GetFunction',\n            'GetFunctionEntry', 'GetGadgetAttribute', 'GetGadgetColor', 'GetGadgetData', 'GetGadgetFont',\n            'GetGadgetItemAttribute', 'GetGadgetItemColor', 'GetGadgetItemData', 'GetGadgetItemState', 'GetGadgetItemText',\n            'GetGadgetState', 'GetGadgetText', 'GetHomeDirectory', 'GetMenuItemState', 'GetMenuItemText', 'GetMenuTitleText',\n            'GetModulePosition', 'GetModuleRow', 'GetPaletteColor', 'GetPathPart', 'GetTemporaryDirectory',\n            'GetToolBarButtonState', 'GetWindowColor', 'GetWindowState', 'GetWindowTitle', 'GetXMLAttribute', 'GetXMLEncoding',\n            'GetXMLNodeName', 'GetXMLNodeOffset', 'GetXMLNodeText', 'GetXMLStandalone', 'GoToEIP', 'GrabImage', 'GrabSprite',\n            'Green', 'Hex', 'HexQ', 'HideBillboardGroup', 'HideEntity', 'HideGadget', 'HideLight', 'HideMenu', 'HideParticleEmitter',\n            'HideWindow', 'Hostname', 'Hour', 'HyperLinkGadget', 'ImageDepth', 'ImageGadget', 'ImageHeight', 'ImageID',\n            'ImageOutput', 'ImageWidth', 'InitAudioCD', 'InitEngine3D', 'InitJoystick', 'InitKeyboard', 'InitMouse', 'InitMovie',\n            'InitNetwork', 'InitPalette', 'InitScintilla', 'InitSound', 'InitSprite', 'InitSprite3D', 'Inkey', 'Input', 'InputRequester',\n            'InsertElement', 'Int', 'IntQ', 'IPAddressField', 'IPAddressGadget', 'IPString', 'IsBillboardGroup', 'IsCamera', 'IsDatabase',\n            'IsDirectory', 'IsEntity', 'IsFile', 'IsFont', 'IsGadget', 'IsImage', 'IsLibrary', 'IsLight', 'IsMaterial', 'IsMenu', 'IsMesh',\n            'IsModule', 'IsMovie', 'IsPalette', 'IsParticleEmitter', 'IsProgram', 'IsScreenActive', 'IsSound', 'IsSprite', 'IsSprite3D',\n            'IsStatusBar', 'IsSysTrayIcon', 'IsTexture', 'IsThread', 'IsToolBar', 'IsWindow', 'IsXML', 'JoystickAxisX', 'JoystickAxisY',\n            'JoystickButton', 'KeyboardInkey', 'KeyboardMode', 'KeyboardPushed', 'KeyboardReleased', 'KillProgram', 'KillThread',\n            'LastElement', 'LCase', 'Left', 'Len', 'LibraryFunctionAddress', 'LibraryFunctionName', 'LibraryID', 'LightColor',\n            'LightLocate', 'LightSpecularColor', 'Line', 'LineXY', 'ListIconGadget', 'ListIndex', 'ListViewGadget', 'LoadFont',\n            'LoadImage', 'LoadMesh', 'LoadModule', 'LoadMovie', 'LoadPalette', 'LoadSound', 'LoadSprite', 'LoadTexture',\n            'LoadWorld', 'LoadXML', 'Loc', 'LockMutex', 'Lof', 'Log', 'Log10', 'LSet', 'LTrim', 'MainXMLNode', 'MakeIPAddress',\n            'MaterialAmbientColor', 'MaterialBlendingMode', 'MaterialDiffuseColor', 'MaterialFilteringMode', 'MaterialID',\n            'MaterialShadingMode', 'MaterialSpecularColor', 'MD5FileFingerprint', 'MD5Fingerprint', 'MDIGadget', 'MemorySize',\n            'MemoryStringLength', 'MenuBar', 'MenuHeight', 'MenuID', 'MenuItem', 'MenuTitle', 'MeshID', 'MessageRequester',\n            'Mid', 'Minute', 'ModuleVolume', 'Month', 'MouseButton', 'MouseDeltaX', 'MouseDeltaY', 'MouseLocate', 'MouseWheel',\n            'MouseX', 'MouseY', 'MoveBillboard', 'MoveBillboardGroup', 'MoveCamera', 'MoveEntity', 'MoveLight', 'MoveMemory',\n            'MoveParticleEmitter', 'MoveXMLNode', 'MovieAudio', 'MovieHeight', 'MovieInfo', 'MovieLength', 'MovieSeek',\n            'MovieStatus', 'MovieWidth', 'NetworkClientEvent', 'NetworkServerEvent', 'NewPrinterPage', 'NextDatabaseDriver',\n            'NextDatabaseRow', 'NextDirectoryEntry', 'NextElement', 'NextEnvironmentVariable', 'NextIPAddress',\n            'NextLibraryFunction', 'NextPackFile', 'NextPreferenceGroup', 'NextPreferenceKey', 'NextScreenMode',\n            'NextSelectedFileName', 'NextWorldCollision', 'NextXMLAttribute', 'NextXMLNode', 'OffsetOf', 'OnErrorExit',\n            'OnErrorGosub', 'OnErrorGoto', 'OnErrorResume', 'OpenComPort', 'OpenConsole', 'OpenDatabase',\n            'OpenDatabaseRequester', 'OpenFile', 'OpenFileRequester', 'OpenGadgetList', 'OpenHelp', 'OpenLibrary',\n            'OpenNetworkConnection', 'OpenPack', 'OpenPreferences', 'OpenScreen', 'OpenSubMenu', 'OpenWindow',\n            'OpenWindowedScreen', 'OptionGadget', 'OSVersion', 'PackerCallback', 'PackFileSize', 'PackMemory', 'PanelGadget',\n            'ParentXMLNode', 'Parse3DScripts', 'ParseDate', 'ParticleColorFader', 'ParticleColorRange', 'ParticleEmissionRate',\n            'ParticleEmitterDirection', 'ParticleEmitterLocate', 'ParticleEmitterX', 'ParticleEmitterY', 'ParticleEmitterZ',\n            'ParticleMaterial', 'ParticleSize', 'ParticleTimeToLive', 'ParticleVelocity', 'PathRequester', 'PauseAudioCD',\n            'PauseMovie', 'PauseThread', 'PeekB', 'PeekC', 'PeekD', 'PeekF', 'PeekL', 'PeekQ', 'PeekS', 'PeekW', 'PlayAudioCD',\n            'PlayModule', 'PlayMovie', 'PlaySound', 'Plot', 'Point', 'PokeB', 'PokeC', 'PokeD', 'PokeF', 'PokeL', 'PokeQ', 'PokeS',\n            'PokeW', 'Pow', 'PreferenceComment', 'PreferenceGroup', 'PreferenceGroupName', 'PreferenceKeyName',\n            'PreferenceKeyValue', 'PreviousDatabaseRow', 'PreviousElement', 'PreviousXMLNode', 'Print', 'PrinterOutput',\n            'PrinterPageHeight', 'PrinterPageWidth', 'PrintN', 'PrintRequester', 'ProgramExitCode', 'ProgramFilename',\n            'ProgramID', 'ProgramParameter', 'ProgramRunning', 'ProgressBarGadget', 'Random', 'RandomSeed', 'RawKey',\n            'ReadByte', 'ReadCharacter', 'ReadConsoleData', 'ReadData', 'ReadDouble', 'ReadFile', 'ReadFloat', 'ReadLong',\n            'ReadPreferenceDouble', 'ReadPreferenceFloat', 'ReadPreferenceLong', 'ReadPreferenceQuad',\n            'ReadPreferenceString', 'ReadProgramData', 'ReadProgramError', 'ReadProgramString', 'ReadQuad', 'ReadString',\n            'ReadStringFormat', 'ReadWord', 'ReAllocateMemory', 'ReceiveNetworkData', 'ReceiveNetworkFile', 'Red',\n            'Reg_DeleteEmptyKey', 'Reg_DeleteKey', 'Reg_DeleteValue', 'Reg_GetErrorMsg', 'Reg_GetErrorNr',\n            'Reg_GetValueTyp', 'Reg_ListSubKey', 'Reg_ListSubValue', 'Reg_ReadBinary', 'Reg_ReadExpandString',\n            'Reg_ReadLong', 'Reg_ReadMultiLineString', 'Reg_ReadQuad', 'Reg_ReadString', 'Reg_WriteBinary',\n            'Reg_WriteExpandString', 'Reg_WriteLong', 'Reg_WriteMultiLineString', 'Reg_WriteQuad', 'Reg_WriteString',\n            'ReleaseMouse', 'RemoveBillboard', 'RemoveEnvironmentVariable', 'RemoveGadgetColumn', 'RemoveGadgetItem',\n            'RemoveKeyboardShortcut', 'RemoveMaterialLayer', 'RemovePreferenceGroup', 'RemovePreferenceKey',\n            'RemoveString', 'RemoveSysTrayIcon', 'RemoveXMLAttribute', 'RenameFile', 'RenderMovieFrame', 'RenderWorld',\n            'ReplaceString', 'ResetList', 'ResizeBillboard', 'ResizeEntity', 'ResizeGadget', 'ResizeImage', 'ResizeMovie',\n            'ResizeParticleEmitter', 'ResizeWindow', 'ResolveXMLAttributeName', 'ResolveXMLNodeName', 'ResumeAudioCD',\n            'ResumeMovie', 'ResumeThread', 'RGB', 'Right', 'RootXMLNode', 'RotateBillboardGroup', 'RotateCamera',\n            'RotateEntity', 'RotateMaterial', 'RotateSprite3D', 'Round', 'RSet', 'RTrim', 'RunProgram', 'SaveFileRequester',\n            'SaveImage', 'SaveSprite', 'SaveXML', 'ScaleEntity', 'ScaleMaterial', 'ScintillaGadget', 'ScintillaSendMessage',\n            'ScreenID', 'ScreenModeDepth', 'ScreenModeHeight', 'ScreenModeRefreshRate', 'ScreenModeWidth',\n            'ScreenOutput', 'ScrollAreaGadget', 'ScrollBarGadget', 'ScrollMaterial', 'Second', 'SecondWorldCollisionEntity',\n            'SelectedFilePattern', 'SelectedFontColor', 'SelectedFontName', 'SelectedFontSize', 'SelectedFontStyle',\n            'SelectElement', 'SendNetworkData', 'SendNetworkFile', 'SendNetworkString', 'SetActiveGadget',\n            'SetActiveWindow', 'SetClipboardImage', 'SetClipboardText', 'SetCurrentDirectory', 'SetDragCallback',\n            'SetDropCallback', 'SetEntityAnimationTime', 'SetEntityFriction', 'SetEntityMass', 'SetEnvironmentVariable',\n            'SetErrorNumber', 'SetFileAttributes', 'SetFileDate', 'SetFrameRate', 'SetGadgetAttribute', 'SetGadgetColor',\n            'SetGadgetData', 'SetGadgetFont', 'SetGadgetItemAttribute', 'SetGadgetItemColor', 'SetGadgetItemData',\n            'SetGadgetItemState', 'SetGadgetItemText', 'SetGadgetState', 'SetGadgetText', 'SetMenuItemState',\n            'SetMenuItemText', 'SetMenuTitleText', 'SetMeshData', 'SetModulePosition', 'SetPaletteColor', 'SetRefreshRate',\n            'SetToolBarButtonState', 'SetWindowCallback', 'SetWindowColor', 'SetWindowState', 'SetWindowTitle',\n            'SetXMLAttribute', 'SetXMLEncoding', 'SetXMLNodeName', 'SetXMLNodeOffset', 'SetXMLNodeText',\n            'SetXMLStandalone', 'Sin', 'SizeOf', 'SkyBox', 'SkyDome', 'SmartWindowRefresh', 'SortArray', 'SortList',\n            'SortStructuredArray', 'SortStructuredList', 'SoundFrequency', 'SoundPan', 'SoundVolume', 'Space',\n            'SpinGadget', 'SplitterGadget', 'Sprite3DBlendingMode', 'Sprite3DQuality', 'SpriteCollision', 'SpriteDepth',\n            'SpriteHeight', 'SpriteID', 'SpriteOutput', 'SpritePixelCollision', 'SpriteWidth', 'Sqr', 'Start3D', 'StartDrawing',\n            'StartPrinting', 'StartSpecialFX', 'StatusBarHeight', 'StatusBarIcon', 'StatusBarID', 'StatusBarText',\n            'StickyWindow', 'Stop3D', 'StopAudioCD', 'StopDrawing', 'StopModule', 'StopMovie', 'StopPrinting',\n            'StopSound', 'StopSpecialFX', 'Str', 'StrD', 'StrF', 'StringByteLength', 'StringField', 'StringGadget', 'StrQ',\n            'StrU', 'Subsystem', 'SwapElements', 'SysTrayIconToolTip', 'Tan', 'TerrainHeight', 'TextGadget', 'TextHeight',\n            'TextureHeight', 'TextureID', 'TextureOutput', 'TextureWidth', 'TextWidth', 'ThreadID', 'ThreadPriority',\n            'ToolBarHeight', 'ToolBarID', 'ToolBarImageButton', 'ToolBarSeparator', 'ToolBarStandardButton',\n            'ToolBarToolTip', 'TrackBarGadget', 'TransformSprite3D', 'TransparentSpriteColor', 'TreeGadget', 'Trim',\n            'TruncateFile', 'TryLockMutex', 'UCase', 'UnlockMutex', 'UnpackMemory', 'UseAudioCD', 'UseBuffer',\n            'UseGadgetList', 'UseJPEGImageDecoder', 'UseJPEGImageEncoder', 'UseODBCDatabase', 'UseOGGSoundDecoder',\n            'UsePNGImageDecoder', 'UsePNGImageEncoder', 'UseTGAImageDecoder', 'UseTIFFImageDecoder', 'Val', 'ValD',\n            'ValF', 'ValQ', 'WaitProgram', 'WaitThread', 'WaitWindowEvent', 'WebGadget', 'WebGadgetPath', 'WindowEvent',\n            'WindowHeight', 'WindowID', 'WindowMouseX', 'WindowMouseY', 'WindowOutput', 'WindowWidth', 'WindowX',\n            'WindowY', 'WorldGravity', 'WorldShadows', 'WriteByte', 'WriteCharacter', 'WriteConsoleData', 'WriteData',\n            'WriteDouble', 'WriteFloat', 'WriteLong', 'WritePreferenceDouble', 'WritePreferenceFloat', 'WritePreferenceLong',\n            'WritePreferenceQuad', 'WritePreferenceString', 'WriteProgramData', 'WriteProgramString', 'WriteProgramStringN',\n            'WriteQuad', 'WriteString', 'WriteStringFormat', 'WriteStringN', 'WriteWord', 'XMLAttributeName', 'XMLAttributeValue',\n            'XMLChildCount', 'XMLError', 'XMLErrorLine', 'XMLErrorPosition', 'XMLNodeFromID', 'XMLNodeFromPath', 'XMLNodePath',\n            'XMLNodeType', 'XMLStatus', 'Year', 'ZoomSprite3D'\n            ),\n        3 => array(\n            // some ASM instructions\n            'AAA', 'AAD', 'AAM', 'AAS', 'ADC', 'ADD', 'AND', 'ARPL', 'BOUND', 'BSF', 'BSR', 'BSWAP', 'BT', 'BTC', 'BTR',\n            'BTS', 'CALL', 'CBW', 'CDQ', 'CLC', 'CLD', 'CLI', 'CLTS', 'CMC', 'CMP', 'CMPS', 'CMPXCHG', 'CWD', 'CWDE',\n            'DAA', 'DAS', 'DB', 'DD', 'DEC', 'DIV', 'DW', 'ENTER', 'ESC', 'F2XM1', 'FABS', 'FADD', 'FCHS', 'FCLEX',\n            'FCOM', 'FDIV', 'FDIVR', 'FFREE', 'FINCSTP', 'FINIT', 'FLD', 'FLD1', 'FLDCW', 'FMUL', 'FNOP', 'FPATAN',\n            'FPREM', 'FRNDINT', 'FSAVE', 'FSCALE', 'FSETPM', 'FSIN', 'FSQRT', 'FST', 'FSTENV', 'FSTSW', 'FSUB',\n            'FSUBR', 'FTST', 'FUCOM', 'FWAIT', 'FXAM', 'FXCH', 'FXTRACT', 'FYL2X', 'FYL2XP1', 'HLT', 'IDIV', 'IMUL',\n            'IN', 'INC', 'INS', 'INT', 'INTO', 'INVLPG', 'IRET', 'IRETD', 'JA', 'JAE', 'JB', 'JBE', 'JC', 'JCXZ', 'JE', 'JECXZ',\n            'JG', 'JGE', 'JL', 'JLE', 'JMP', 'JNA', 'JNAE', 'JNB', 'JNBE', 'JNC', 'JNE', 'JNG', 'JNGE', 'JNL', 'JNLE', 'JNO', 'JNP',\n            'JNS', 'JNZ', 'JO', 'JP', 'JPE', 'JPO', 'JS', 'JZ', 'LAHF', 'LAR', 'LDS', 'LEA', 'LEAVE', 'LES', 'LFS', 'LGDT', 'LGS',\n            'LIDT', 'LLDT', 'LMSW', 'LOCK', 'LODS', 'LOOP', 'LOOPE', 'LOOPNE', 'LOOPNZ', 'LOOPZ', 'LSL', 'LSS', 'LTR',\n            'MOV', 'MOVS', 'MOVSX', 'MOVZX', 'MUL', 'NEG', 'NOP', 'NOT', 'OR', 'OUT', 'OUTS', 'POP', 'POPA', 'POPAD',\n            'POPF', 'POPFD', 'PUSH', 'PUSHA', 'PUSHAD', 'PUSHF', 'PUSHFD', 'RCL', 'RCR', 'REP', 'REPE', 'REPNE',\n            'REPNZ', 'REPZ', 'RET', 'RETF', 'ROL', 'ROR', 'SAHF', 'SAL', 'SAR', 'SBB', 'SCAS', 'SETAE', 'SETB', 'SETBE',\n            'SETC', 'SETE', 'SETG', 'SETGE', 'SETL', 'SETLE', 'SETNA', 'SETNAE', 'SETNB', 'SETNC', 'SETNE', 'SETNG',\n            'SETNGE', 'SETNL', 'SETNLE', 'SETNO', 'SETNP', 'SETNS', 'SETNZ', 'SETO', 'SETP', 'SETPE', 'SETPO',\n            'SETS', 'SETZ', 'SGDT', 'SHL', 'SHLD', 'SHR', 'SHRD', 'SIDT', 'SLDT', 'SMSW', 'STC', 'STD', 'STI',\n            'STOS', 'STR', 'SUB', 'TEST', 'VERR', 'VERW', 'WAIT', 'WBINVD', 'XCHG', 'XLAT', 'XLATB', 'XOR'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '+', '-', '*', '/', '\\\\', '>', '<', '=', '<=', '>=', '&', '|', '!', '~', '<>', '>>', '<<', '%'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000066; font-weight: bold;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #000fff;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #ff0000; font-style: italic;',\n            'MULTI' => 'color: #ff0000; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000066;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #009900;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #CC0000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000066;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        1 => '\\\\'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => false,\n        1 => false\n        )\n);\n"
  },
  {
    "path": "includes/geshi/pycon.php",
    "content": "<?php\n/*************************************************************************************\n * python.php\n * ----------\n * Author: Roberto Rossi (rsoftware@altervista.org)\n * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/08/30\n *\n * Python language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/12/18\n *  -  Added missing functions and keywords. Also added two new Python 3.0 types. SF#2441839\n * 2005/05/26\n *  -  Modifications by Tim (tim@skreak.com): added more keyword categories, tweaked colors\n * 2004/11/27 (1.0.1)\n *  -  Added support for multiple object splitters\n * 2004/08/30 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n//This\nrequire(dirname(__FILE__).'/python.php');\n\n$language_data['LANG_NAME'] = 'Python (console mode)';\n\n$language_data['STRICT_MODE_APPLIES'] = GESHI_ALWAYS;\n$language_data['SCRIPT_DELIMITERS'][-1] = '/^(>>>).*?$(?:\\n\\.\\.\\..*?$)*($)/m';\n$language_data['HIGHLIGHT_STRICT_BLOCK'][-1] = true;\n\n$language_data['STYLES']['SCRIPT'][-1] = 'color: #222222;';\n\nif(!isset($language_data['COMMENT_REGEXP'])) {\n    $language_data['COMMENT_REGEXP'] = array();\n}\n\n$language_data['COMMENT_REGEXP'][-1] = '/(?:^|\\A\\s)(?:>>>|\\.\\.\\.)/m';\n$language_data['STYLES']['COMMENTS'][-1] = 'color: #444444;';\n"
  },
  {
    "path": "includes/geshi/pys60.php",
    "content": "<?php\n/**************************************************************************************\n * pys60.php\n * ----------\n * Author: Sohan Basak (ronnie.basak96 @gmail.com)\n * Copyright: (c) 2012 Sohan Basak (http://tothepower.tk),  Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2012/05/03\n *\n * Python for S60 language file for GeSHi.\n *\n * CHANGES\n * -------\n * No Changes Till Date\n *\n * The python.php file is extended to pys60.php with required modifications\n *\n * NOTES\n *\n * -I have kept the \":\" in Reserved chars, so that it gets highlighted differently than brackets and/or symbols\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Python for S60',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', \"'\", '\"\"\"',\"'''\",'\"\"','\"\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n\n        /*\n         ** Set 1: reserved words\n         ** http://python.org/doc/current/ref/keywords.html\n         */\n        1 => array(\n            'and', 'del', 'for', 'is', 'raise', 'assert', 'elif', 'from', 'lambda', 'return', 'break',\n            'else', 'global', 'not', 'try', 'class', 'except', 'if', 'or', 'while', 'continue', 'exec',\n            'import', 'pass', 'yield', 'def', 'finally', 'in', 'print', \"<<\", \">>\", \"as\"\n            ),\n\n        /*\n         ** Set 2: builtins\n         ** http://python.org/doc/current/lib/built-in-funcs.html\n         */\n        2 => array(\n            '__import__', 'abs', 'basestring', 'bool', 'callable', 'chr', 'classmethod', 'cmp',\n            'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile',\n            'file', 'filter', 'float', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help',\n            'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'list', 'locals',\n            'long', 'map', 'max', 'min', 'object', 'oct', 'open', 'ord', 'pow', 'property', 'range',\n            'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice',\n            'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode',\n            'vars', 'xrange', 'zip',\n            // Built-in constants: http://python.org/doc/current/lib/node35.html\n            'False', 'True', 'None', 'NotImplemented', 'Ellipsis',\n            // Built-in Exceptions: http://python.org/doc/current/lib/module-exceptions.html\n            'Exception', 'StandardError', 'ArithmeticError', 'LookupError', 'EnvironmentError',\n            'AssertionError', 'AttributeError', 'EOFError', 'FloatingPointError', 'IOError',\n            'ImportError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'MemoryError', 'NameError',\n            'NotImplementedError', 'OSError', 'OverflowError', 'ReferenceError', 'RuntimeError',\n            'StopIteration', 'SyntaxError', 'SystemError', 'SystemExit', 'TypeError',\n            'UnboundlocalError', 'UnicodeError', 'UnicodeEncodeError', 'UnicodeDecodeError',\n            'UnicodeTranslateError', 'ValueError', 'WindowsError', 'ZeroDivisionError', 'Warning',\n            'UserWarning', 'DeprecationWarning', 'PendingDeprecationWarning', 'SyntaxWarning',\n            'RuntimeWarning', 'FutureWarning',\n            //Symbian Errors\n            \"SymbianError\", \"KernelError\",\n            // self: this is a common python convention (but not a reserved word)\n            'self'\n            ),\n\n        /*\n         ** Set 3: standard library\n         ** http://python.org/doc/current/lib/modindex.html\n         */\n        3 => array(\n            '__builtin__', '__future__', '__main__', '_winreg', 'aifc', 'AL', 'al', 'anydbm',\n            'array', 'asynchat', 'asyncore', 'atexit', 'audioop', 'base64', 'BaseHTTPServer',\n            'Bastion', 'binascii', 'binhex', 'bisect', 'bsddb', 'bz2', 'calendar', 'cd', 'cgi',\n            'CGIHTTPServer', 'cgitb', 'chunk', 'cmath', 'cmd', 'code', 'codecs', 'codeop',\n            'collections', 'colorsys', 'commands', 'compileall', 'compiler',\n            'ConfigParser', 'Cookie', 'cookielib', 'copy', 'copy_reg', 'cPickle', 'crypt',\n            'cStringIO', 'csv', 'curses', 'datetime', 'dbhash', 'dbm', 'decimal', 'DEVICE',\n            'difflib', 'dircache', 'dis', 'distutils', 'dl', 'doctest', 'DocXMLRPCServer', 'dumbdbm',\n            'dummy_thread', 'dummy_threading', 'email', 'encodings', 'errno', 'exceptions', 'fcntl',\n            'filecmp', 'fileinput', 'FL', 'fl', 'flp', 'fm', 'fnmatch', 'formatter', 'fpectl',\n            'fpformat', 'ftplib', 'gc', 'gdbm', 'getopt', 'getpass', 'gettext', 'GL', 'gl', 'glob',\n            'gopherlib', 'grp', 'gzip', 'heapq', 'hmac', 'hotshot', 'htmlentitydefs', 'htmllib',\n            'HTMLParser', 'httplib', 'imageop', 'imaplib', 'imgfile', 'imghdr', 'imp', 'inspect',\n            'itertools', 'jpeg', 'keyword', 'linecache', 'locale', 'logging', 'mailbox', 'mailcap',\n            'marshal', 'math', 'md5', 'mhlib', 'mimetools', 'mimetypes', 'MimeWriter', 'mimify',\n            'mmap', 'msvcrt', 'multifile', 'mutex', 'netrc', 'new', 'nis', 'nntplib', 'operator',\n            'optparse', 'os', 'ossaudiodev', 'parser', 'pdb', 'pickle', 'pickletools', 'pipes',\n            'pkgutil', 'platform', 'popen2', 'poplib', 'posix', 'posixfile', 'pprint', 'profile',\n            'pstats', 'pty', 'pwd', 'py_compile', 'pyclbr', 'pydoc', 'Queue', 'quopri', 'random',\n            're', 'readline', 'resource', 'rexec', 'rgbimg', 'rlcompleter',\n            'robotparser', 'sched', 'ScrolledText', 'select', 'sets', 'sgmllib', 'sha', 'shelve',\n            'shlex', 'shutil', 'signal', 'SimpleHTTPServer', 'SimpleXMLRPCServer', 'site', 'smtpd',\n            'smtplib', 'sndhdr', 'socket', 'SocketServer', 'stat', 'statcache', 'statvfs', 'string',\n            'StringIO', 'stringprep', 'struct', 'subprocess', 'sunau', 'SUNAUDIODEV', 'sunaudiodev',\n            'symbol', 'sys', 'syslog', 'tabnanny', 'tarfile', 'telnetlib', 'tempfile', 'termios',\n            'test', 'textwrap', 'thread', 'threading', 'time', 'timeit', 'Tix', 'Tkinter', 'token',\n            'tokenize', 'traceback', 'tty', 'turtle', 'types', 'unicodedata', 'unittest', 'urllib2',\n            'urllib', 'urlparse', 'user', 'UserDict', 'UserList', 'UserString', 'uu', 'warnings',\n            'wave', 'weakref', 'webbrowser', 'whichdb', 'whrandom', 'winsound', 'xdrlib', 'xml',\n            'xmllib', 'xmlrpclib', 'zipfile', 'zipimport', 'zlib', \"os.path\", \"sys.path\",\n\n            //PythonS60 Standard Library\n            //http://pys60.garage.maemo.org/doc/s60/\n            //These are the standard modules in the archive\n\n            \"appuifw\", \"globalui\",\"e32\", \"telephone\", \"aosocket\", \"btsocket\",\n            \"sysinfo\",\"camera\",\"graphics\",\"keycapture\",\"key_codes\",\"topwindow\", \"gles\",\n            \"glcanvas\",\"sensor\", \"audio\",\"messaging\", \"inbox\",\"location\",\"positioning\",\n            \"contacts\", \"e32calendar\", \"e32db\",\"e32dbm\",\"logs\",\"scriptext\",\n            \"series60_console\",\n\n            //These are external but very often usable modules\n\n            \"appuifw2\",\"ArchetypeUI\",\"elementtree\",\"lightblue\",\n            \"activaprofile\",\"Adjustor\",\"akntextutils\",\"aosocketnativenew\",\n            \"appreciation\",\"applicationmanager\",\"appswitch\",\"atextit\",\"bt_teror\",\"btconsole\",\n            \"btswitch\",\"cElementTree\",\"cenrep\",\"cerealizer\",\"cl_gui\",\"clipboard\",\n            \"clipboard_CHN\",\"debugger\",\"decompile2\",\n            \"dir_iter\",\"download\",\"easydb\",\"ECenrep\",\"Edit_find\",\"efeature\",\"elocation\",\"envy\",\n            \"EProfile\",\"erestart\",\"error\",\"esyagent\",\"Execwap\",\"exprofile\",\"fastcamera\",\n            \"feature\",\"fgimage\",\"filebrowser\",\"firmware\",\"fold\",\"fonts\",\"fraction\",\"FTP\",\n            \"ftplibnew\",\"fy_manager\",\"fy_menu\",\"gles_utils\",\"gps_location\",\"hack\",\n            \"HTML2TXT\",\"iapconnect\",\"icon_image\",\"image_decoder\",\n            \"ini\",\"interactive_console\",\"inting\",\"key_modifiers\",\"key_tricks\",\"keypress\",\n            \"landmarks\",\"lite_fm\",\"locationacq\",\"locationrequestor\",\n            \"logo\",\"markupbase\",\"mbm\",\"mbm2\",\"minidb\",\"miniinfo\",\"MISC\",\n            \"misty\",\"Msg\",\"ntpath\",\"odict\",\"Paintbox\",\"pathinfo\",\"pexif\",\"pickcolor\",\n            \"powlite_fm\",\"powlite_fm2\",\"powlite_fm3\",\"powlite_fme\",\"prgbar\",\"prodb\",\n            \"profileengine\",\"progressbar\",\"progressbartw\",\"progressnotes\",\n            \"ProgressBarTW2\",\"proshivka\",\"py_upload\",\"pyConnection\",\"PyFileMan\",\n            \"pykeylock\",\"PyPyc\",\"pyqq\",\"pys60crypto\",\"pys60usb\",\"rfc822\",\n            \"RUSOS\",\"scmk\",\"scrollpage\",\"SISFIELDS\",\"SISFIELD\",\"sisfile\",\n            \"SISINFO\",\"sisreader\",\"Sistools\",\"smidi\",\"smsreject\",\"speechy\",\"sre_compile\",\n            \"sre_constants\",\"sre_parse\",\"sre\",\"sysagent\",\"syslang\",\"TextMan\",\n            \"textrenderer\",\"TextWrap\",\"topwind\",\"tsocket\",\"uikludge\",\"uikludges\",\"uitricks\",\n            \"walkfile\",\"wallpaper\",\"wfm_lite\",\n            \"wif_keys\",\"wif\",\"window\",\"wlanmgmt\",\"wlantools\",\"wt_color\",\"wt_requesters\",\n            \"zhkey\",\n\n            //These are recent additions\n            \"miffile\"\n            ),\n\n        /*\n         ** Set 4: special methods\n         ** http://python.org/doc/current/ref/specialnames.html\n         */\n        4 => array(\n            ///*\n            //// Iterator types: http://python.org/doc/current/lib/typeiter.html\n            //'__iter__', 'next',\n            //// String types: http://python.org/doc/current/lib/string-methods.html\n            //'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs',\n            //'find', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle',\n            //'isupper', 'join', 'ljust', 'lower', 'lstrip', 'replace', 'rfind', 'rindex', 'rjust',\n            //'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title',\n            //'translate', 'upper', 'zfill',\n            // */\n\n            // Basic customization: http://python.org/doc/current/ref/customization.html\n            '__new__', '__init__', '__del__', '__repr__', '__str__',\n            '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__cmp__', '__rcmp__',\n            '__hash__', '__nonzero__', '__unicode__', '__dict__',\n            // Attribute access: http://python.org/doc/current/ref/attribute-access.html\n            '__setattr__', '__delattr__', '__getattr__', '__getattribute__', '__get__', '__set__',\n            '__delete__', '__slots__',\n            // Class creation, callable objects\n            '__metaclass__', '__call__',\n            // Container types: http://python.org/doc/current/ref/sequence-types.html\n            '__len__', '__getitem__', '__setitem__', '__delitem__', '__iter__', '__contains__',\n            '__getslice__', '__setslice__', '__delslice__',\n            // Numeric types: http://python.org/doc/current/ref/numeric-types.html\n            '__abs__','__add__','__and__','__coerce__','__div__','__divmod__','__float__',\n            '__hex__','__iadd__','__isub__','__imod__','__idiv__','__ipow__','__iand__',\n            '__ior__','__ixor__', '__ilshift__','__irshift__','__invert__','__int__',\n            '__long__','__lshift__',\n            '__mod__','__mul__','__neg__','__oct__','__or__','__pos__','__pow__',\n            '__radd__','__rdiv__','__rdivmod__','__rmod__','__rpow__','__rlshift__','__rrshift__',\n            '__rshift__','__rsub__','__rmul__','__rand__','__rxor__','__ror__',\n            '__sub__','__xor__'\n            )\n\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?', '`'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => true,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #006000;font-weight:bold;',   // Reserved\n            2 => 'color: #800950;font-size:105%',                  // Built-ins + self\n            3 => 'color: #003399;font-size:106%',                  // Standard lib\n            4 => 'color: #0000cd;'                  // Special methods\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style:italic;font-size:92%',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #930; font-weight: bold;font-size:105%'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: maroon;font-size:102%;padding:2px'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #666;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #2356F8;'\n            ),\n        'METHODS' => array(\n            1 => 'color: navy;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66ccFF;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/python.php",
    "content": "<?php\n/*************************************************************************************\n * python.php\n * ----------\n * Author: Roberto Rossi (rsoftware@altervista.org)\n * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/08/30\n *\n * Python language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/12/18\n *  -  Added missing functions and keywords. Also added two new Python 3.0 types. SF#2441839\n * 2005/05/26\n *  -  Modifications by Tim (tim@skreak.com): added more keyword categories, tweaked colors\n * 2004/11/27 (1.0.1)\n *  -  Added support for multiple object splitters\n * 2004/08/30 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Python',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    //Longest quotemarks ALWAYS first\n    'QUOTEMARKS' => array('\"\"\"', \"'''\", '\"', \"'\"),\n    'ESCAPE_CHAR' => '\\\\',\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_OCT_PREFIX_0O | GESHI_NUMBER_HEX_PREFIX |\n        GESHI_NUMBER_FLT_NONSCI | GESHI_NUMBER_FLT_NONSCI_F |\n        GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n\n        /*\n        ** Set 1: reserved words\n        ** http://python.org/doc/current/ref/keywords.html\n        */\n        1 => array(\n            'and', 'del', 'for', 'is', 'raise', 'assert', 'elif', 'from', 'lambda', 'return', 'break',\n            'else', 'global', 'not', 'try', 'class', 'except', 'if', 'or', 'while', 'continue', 'exec',\n            'import', 'pass', 'yield', 'def', 'finally', 'in', 'print', 'with', 'as', 'nonlocal'\n            ),\n\n        /*\n        ** Set 2: builtins\n        ** http://python.org/doc/current/lib/built-in-funcs.html\n        */\n        2 => array(\n            '__import__', 'abs', 'basestring', 'bool', 'callable', 'chr', 'classmethod', 'cmp',\n            'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile',\n            'file', 'filter', 'float', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help',\n            'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'list', 'locals',\n            'long', 'map', 'max', 'min', 'object', 'oct', 'open', 'ord', 'pow', 'property', 'range',\n            'raw_input', 'reduce', 'reload', 'reversed', 'round', 'set', 'setattr', 'slice',\n            'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode',\n            'vars', 'xrange', 'zip',\n            // Built-in constants: http://python.org/doc/current/lib/node35.html\n            'False', 'True', 'None', 'NotImplemented', 'Ellipsis',\n            // Built-in Exceptions: http://python.org/doc/current/lib/module-exceptions.html\n            'Exception', 'StandardError', 'ArithmeticError', 'LookupError', 'EnvironmentError',\n            'AssertionError', 'AttributeError', 'EOFError', 'FloatingPointError', 'IOError',\n            'ImportError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'MemoryError', 'NameError',\n            'NotImplementedError', 'OSError', 'OverflowError', 'ReferenceError', 'RuntimeError',\n            'StopIteration', 'SyntaxError', 'SystemError', 'SystemExit', 'TypeError',\n            'UnboundlocalError', 'UnicodeError', 'UnicodeEncodeError', 'UnicodeDecodeError',\n            'UnicodeTranslateError', 'ValueError', 'WindowsError', 'ZeroDivisionError', 'Warning',\n            'UserWarning', 'DeprecationWarning', 'PendingDeprecationWarning', 'SyntaxWarning',\n            'RuntimeWarning', 'FutureWarning',\n            // self: this is a common python convention (but not a reserved word)\n            'self',\n            // other\n            'any', 'all'\n            ),\n\n        /*\n        ** Set 3: standard library\n        ** http://python.org/doc/current/lib/modindex.html\n        */\n        3 => array(\n            '__builtin__', '__future__', '__main__', '_winreg', 'aifc', 'AL', 'al', 'anydbm',\n            'array', 'asynchat', 'asyncore', 'atexit', 'audioop', 'base64', 'BaseHTTPServer',\n            'Bastion', 'binascii', 'binhex', 'bisect', 'bsddb', 'bz2', 'calendar', 'cd', 'cgi',\n            'CGIHTTPServer', 'cgitb', 'chunk', 'cmath', 'cmd', 'code', 'codecs', 'codeop',\n            'collections', 'colorsys', 'commands', 'compileall', 'compiler',\n            'ConfigParser', 'Cookie', 'cookielib', 'copy', 'copy_reg', 'cPickle', 'crypt',\n            'cStringIO', 'csv', 'curses', 'datetime', 'dbhash', 'dbm', 'decimal', 'DEVICE',\n            'difflib', 'dircache', 'dis', 'distutils', 'dl', 'doctest', 'DocXMLRPCServer', 'dumbdbm',\n            'dummy_thread', 'dummy_threading', 'email', 'encodings', 'errno', 'exceptions', 'fcntl',\n            'filecmp', 'fileinput', 'FL', 'fl', 'flp', 'fm', 'fnmatch', 'formatter', 'fpectl',\n            'fpformat', 'ftplib', 'gc', 'gdbm', 'getopt', 'getpass', 'gettext', 'GL', 'gl', 'glob',\n            'gopherlib', 'grp', 'gzip', 'heapq', 'hmac', 'hotshot', 'htmlentitydefs', 'htmllib',\n            'HTMLParser', 'httplib', 'imageop', 'imaplib', 'imgfile', 'imghdr', 'imp', 'inspect',\n            'itertools', 'jpeg', 'keyword', 'linecache', 'locale', 'logging', 'mailbox', 'mailcap',\n            'marshal', 'math', 'md5', 'mhlib', 'mimetools', 'mimetypes', 'MimeWriter', 'mimify',\n            'mmap', 'msvcrt', 'multifile', 'mutex', 'netrc', 'new', 'nis', 'nntplib', 'operator',\n            'optparse', 'os', 'ossaudiodev', 'parser', 'pdb', 'pickle', 'pickletools', 'pipes',\n            'pkgutil', 'platform', 'popen2', 'poplib', 'posix', 'posixfile', 'pprint', 'profile',\n            'pstats', 'pty', 'pwd', 'py_compile', 'pyclbr', 'pydoc', 'Queue', 'quopri', 'random',\n            're', 'readline', 'repr', 'resource', 'rexec', 'rfc822', 'rgbimg', 'rlcompleter',\n            'robotparser', 'sched', 'ScrolledText', 'select', 'sets', 'sgmllib', 'sha', 'shelve',\n            'shlex', 'shutil', 'signal', 'SimpleHTTPServer', 'SimpleXMLRPCServer', 'site', 'smtpd',\n            'smtplib', 'sndhdr', 'socket', 'SocketServer', 'stat', 'statcache', 'statvfs', 'string',\n            'StringIO', 'stringprep', 'struct', 'subprocess', 'sunau', 'SUNAUDIODEV', 'sunaudiodev',\n            'symbol', 'sys', 'syslog', 'tabnanny', 'tarfile', 'telnetlib', 'tempfile', 'termios',\n            'test', 'textwrap', 'thread', 'threading', 'time', 'timeit', 'Tix', 'Tkinter', 'token',\n            'tokenize', 'traceback', 'tty', 'turtle', 'types', 'unicodedata', 'unittest', 'urllib2',\n            'urllib', 'urlparse', 'user', 'UserDict', 'UserList', 'UserString', 'uu', 'warnings',\n            'wave', 'weakref', 'webbrowser', 'whichdb', 'whrandom', 'winsound', 'xdrlib', 'xml',\n            'xmllib', 'xmlrpclib', 'zipfile', 'zipimport', 'zlib',\n            // Python 3.0\n            'bytes', 'bytearray'\n            ),\n\n        /*\n        ** Set 4: special methods\n        ** http://python.org/doc/current/ref/specialnames.html\n        */\n        4 => array(\n            /*\n            // Iterator types: http://python.org/doc/current/lib/typeiter.html\n            '__iter__', 'next',\n            // String types: http://python.org/doc/current/lib/string-methods.html\n            'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs',\n            'find', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle',\n            'isupper', 'join', 'ljust', 'lower', 'lstrip', 'replace', 'rfind', 'rindex', 'rjust',\n            'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title',\n            'translate', 'upper', 'zfill',\n            */\n            // Basic customization: http://python.org/doc/current/ref/customization.html\n            '__new__', '__init__', '__del__', '__repr__', '__str__',\n            '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__cmp__', '__rcmp__',\n            '__hash__', '__nonzero__', '__unicode__', '__dict__',\n            // Attribute access: http://python.org/doc/current/ref/attribute-access.html\n            '__setattr__', '__delattr__', '__getattr__', '__getattribute__', '__get__', '__set__',\n            '__delete__', '__slots__',\n            // Class creation, callable objects\n            '__metaclass__', '__call__',\n            // Container types: http://python.org/doc/current/ref/sequence-types.html\n            '__len__', '__getitem__', '__setitem__', '__delitem__', '__iter__', '__contains__',\n            '__getslice__', '__setslice__', '__delslice__',\n            // Numeric types: http://python.org/doc/current/ref/numeric-types.html\n            '__abs__','__add__','__and__','__coerce__','__div__','__divmod__','__float__',\n            '__hex__','__iadd__','__isub__','__imod__','__idiv__','__ipow__','__iand__',\n            '__ior__','__ixor__', '__ilshift__','__irshift__','__invert__','__int__',\n            '__long__','__lshift__',\n            '__mod__','__mul__','__neg__','__oct__','__or__','__pos__','__pow__',\n            '__radd__','__rdiv__','__rdivmod__','__rmod__','__rpow__','__rlshift__','__rrshift__',\n            '__rshift__','__rsub__','__rmul__','__rand__','__rxor__','__ror__',\n            '__sub__','__xor__'\n            )\n        ),\n    'SYMBOLS' => array(\n        '<', '>', '=', '!', '<=', '>=',             //·comparison·operators\n        '~', '@',                                   //·unary·operators\n        ';', ','                                    //·statement·separator\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #ff7700;font-weight:bold;',    // Reserved\n            2 => 'color: #008000;',                        // Built-ins + self\n            3 => 'color: #dc143c;',                        // Standard lib\n            4 => 'color: #0000cd;'                        // Special methods\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: black;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #483d8b;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff4500;'\n            ),\n        'METHODS' => array(\n            1 => 'color: black;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/q.php",
    "content": "<?php\n/*************************************************************************************\n * q.php\n * -----\n * Author: Ian Roddis (ian.roddis@proteanmind.net)\n * Copyright: (c) 2008 Ian Roddis (http://proteanmind.net)\n * Release Version: 1.0.9.1\n * Date Started: 2009/01/21\n *\n * q/kdb+ language file for GeSHi.\n *\n * Based on information available from code.kx.com\n *\n * CHANGES\n * -------\n * 2010/01/21 (1.0.0)\n *   -  First Release\n *\n * TODO (updated <1.0.0>)\n * -------------------------\n *  - Fix the handling of single line comments\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME'                 => 'q/kdb+',\n    'COMMENT_SINGLE'            => array(1 => '//'),\n    'COMMENT_MULTI'             => array(),\n    'COMMENT_REGEXP'            => array(\n        2 => '/ \\s\\/.*/',         # This needs to get fixed up, since it won't catch some instances\n        # Multi line comments (Moved from REGEXPS)\n        3 => '/^\\/\\s*?\\n.*?\\n\\\\\\s*?\\n/smi'\n        ),\n    'CASE_KEYWORDS'             => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS'                => array('\"'),\n    'ESCAPE_CHAR'               => '\\\\',\n    'OOLANG'                    => false,\n    'OBJECT_SPLITTERS'          => array(),\n    'STRICT_MODE_APPLIES'       => GESHI_NEVER,\n    'SCRIPT_DELIMITERS'         => array(),\n    'HIGHLIGHT_STRICT_BLOCK'    => array(),\n    'TAB_WIDTH'                 => 4,\n    'KEYWORDS' => array(\n        1 => array(\n            'abs', 'acos', 'all', 'and', 'any', 'asc', 'asin', 'asof', 'atan', 'attr', 'avg', 'avgs', 'bin', 'ceiling',\n            'cols', 'cor', 'cos', 'count', 'cov', 'cross', 'cut', 'deltas', 'desc', 'dev', 'differ', 'distinct',\n            'div', 'each', 'enlist', 'eval', 'except', 'exec', 'exit', 'exp', 'fills', 'first', 'flip', 'floor',\n            'fkeys', 'get', 'getenv', 'group', 'gtime', 'hclose', 'hcount', 'hdel', 'hopen', 'hsym', 'iasc', 'idesc',\n            'in', 'insert', 'inter', 'inv', 'joins', 'key', 'keys', 'last', 'like', 'load', 'log', 'lower',\n            'lsq', 'ltime', 'ltrim', 'mavg', 'max', 'maxs', 'mcount', 'md5', 'mdev', 'med', 'meta', 'min', 'mins',\n            'mmax', 'mmin', 'mmu', 'mod', 'msum', 'neg', 'next', 'not', 'null', 'or', 'over', 'parse', 'peach',\n            'plist', 'prd', 'prds', 'prev', 'rand', 'rank', 'ratios', 'raze', 'read0', 'read1', 'reciprocal',\n            'reverse', 'rload', 'rotate', 'rsave', 'rtrim', 'save', 'scan', 'set', 'setenv', 'show', 'signum',\n            'sin', 'sqrt', 'ss', 'ssr', 'string', 'sublist', 'sum', 'sums', 'sv', 'system', 'tables', 'tan', 'til', 'trim',\n            'txf', 'type', 'ungroup', 'union', 'upper', 'upsert', 'value', 'var', 'view', 'views', 'vs',\n            'wavg', 'within', 'wsum', 'xasc', 'xbar', 'xcol', 'xcols', 'xdesc', 'xexp', 'xgroup', 'xkey',\n            'xlog', 'xprev', 'xrank'\n            ),\n        # kdb database template keywords\n        2 => array(\n            'aj', 'by', 'delete', 'fby', 'from', 'ij', 'lj', 'pj', 'select', 'uj', 'update', 'where', 'wj',\n            ),\n        ),\n    'SYMBOLS' => array(\n        '?', '#', ',', '_', '@', '.', '^', '~', '$', '!', '\\\\', '\\\\', '/:', '\\:', \"'\", \"':\", '::', '+', '-', '%', '*'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #009900; font-weight: bold;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #666666; font-style: italic;',\n            3 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #660099; font-weight: bold;',\n            3 => 'color: #660099; font-weight: bold;',\n            4 => 'color: #660099; font-weight: bold;',\n            5 => 'color: #006699; font-weight: bold;',\n            'HARD' => '',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #990000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000dd;',\n            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;',\n            2 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            2   => 'color: #999900;',\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'REGEXPS' => array(\n        # Symbols\n        2 => '`[^\\s\"]*',\n        ),\n    'URLS'  => array(\n        1   => '',\n        2   => '',\n        ),\n);\n"
  },
  {
    "path": "includes/geshi/qbasic.php",
    "content": "<?php\n/*************************************************************************************\n * qbasic.php\n * ----------\n * Author: Nigel McNie (nigel@geshi.org)\n * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/06/20\n *\n * QBasic/QuickBASIC language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *  -  Added description of extra language features (SF#1970248)\n * 2004/11/27 (1.0.3)\n *  -  Added support for multiple object splitters\n * 2004/10/27 (1.0.2)\n *   -  Added support for URLs\n * 2004/08/05 (1.0.1)\n *   -  Added support for symbols\n *   -  Removed unnessecary slashes from some keywords\n * 2004/07/14 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n * * Make sure all possible combinations of keywords with\n *   a space in them (EXIT FOR, END SELECT) are added\n *   to the first keyword group\n * * Update colours, especially for the first keyword group\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n$language_data = array (\n    'LANG_NAME' => 'QBasic/QuickBASIC',\n    'COMMENT_SINGLE' => array(1 => \"'\"),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        //Single-Line Comments using REM command\n        2 => \"/\\bREM.*?$/i\",\n        //Line numbers\n        3 => \"/^\\s*\\d+/im\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT |\n        GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'DO', 'LOOP', 'WHILE', 'WEND', 'THEN', 'ELSE', 'ELSEIF', 'IF',\n            'FOR', 'TO', 'NEXT', 'STEP', 'GOTO', 'GOSUB', 'CALL', 'CALLS',\n            'SUB', 'FUNCTION', 'RETURN', 'RESUME', 'SELECT', 'CASE', 'UNTIL'\n            ),\n        3 => array(\n            'ABS', 'ABSOLUTE', 'ACCESS', 'ALIAS', 'AND', 'ANY', 'APPEND', 'AS', 'ASC', 'ATN',\n            'BASE', 'BEEP', 'BINARY', 'BLOAD', 'BSAVE', 'BYVAL',\n            'CDBL', 'CDECL', 'CHAIN', 'CHDIR', 'CHR$', 'CINT', 'CIRCLE', 'CLEAR',\n            'CLNG', 'CLOSE', 'CLS', 'COM', 'COMMAND$', 'COMMON', 'CONST', 'COS', 'CSNG',\n            'CSRLIN', 'CVD', 'CVDMBF', 'CVI', 'CVL', 'CVS', 'CVSMDF', 'DATA', 'DATE$',\n            'DECLARE', 'DEF', 'FN', 'SEG', 'DEFDBL', 'DEFINT', 'DEFLNG', 'DEFSNG', 'DEFSTR',\n            'DIM', 'DOUBLE', 'DRAW', 'END', 'ENVIRON', 'ENVIRON$', 'EOF', 'EQV', 'ERASE',\n            'ERDEV', 'ERDEV$', 'ERL', 'ERR', 'ERROR', 'EXIT', 'EXP', 'FIELD', 'FILEATTR',\n            'FILES', 'FIX', 'FRE', 'FREEFILE', 'GET', 'HEX$', 'IMP', 'INKEY$',\n            'INP', 'INPUT', 'INPUT$', 'INSTR', 'INT', 'INTEGER', 'IOCTL', 'IOCTL$', 'IS',\n            'KEY', 'KILL', 'LBOUND', 'LCASE$', 'LEFT$', 'LEN', 'LET', 'LINE', 'LIST', 'LOC',\n            'LOCAL', 'LOCATE', 'LOCK', 'LOF', 'LOG', 'LONG', 'LPOS', 'LPRINT',\n            'LSET', 'LTRIM$', 'MID$', 'MKD$', 'MKDIR', 'MKDMBF$', 'MKI$', 'MKL$',\n            'MKS$', 'MKSMBF$', 'MOD', 'NAME', 'NOT', 'OCT$', 'OFF', 'ON', 'PEN', 'PLAY',\n            'OPEN', 'OPTION', 'OR', 'OUT', 'OUTPUT',\n            'PAINT', 'PALETTE', 'PCOPY', 'PEEK', 'PMAP', 'POINT', 'POKE', 'POS', 'PRESET',\n            'PRINT', 'PSET', 'PUT', 'RANDOM', 'RANDOMIZE', 'READ', 'REDIM', 'RESET',\n            'RESTORE', 'RIGHT$', 'RMDIR', 'RND', 'RSET', 'RTRIM$', 'RUN', 'SADD', 'SCREEN',\n            'SEEK', 'SETMEM', 'SGN', 'SHARED', 'SHELL', 'SIGNAL', 'SIN', 'SINGLE', 'SLEEP',\n            'SOUND', 'SPACE$', 'SPC', 'SQR', 'STATIC', 'STICK', 'STOP', 'STR$', 'STRIG',\n            'STRING', 'STRING$', 'SWAP', 'SYSTEM', 'TAB', 'TAN', 'TIME$', 'TIMER',\n            'TROFF', 'TRON', 'TYPE', 'UBOUND', 'UCASE$', 'UEVENT', 'UNLOCK', 'USING', 'VAL',\n            'VARPTR', 'VARPTR$', 'VARSEG', 'VIEW', 'WAIT', 'WIDTH', 'WINDOW', 'WRITE', 'XOR'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', ',', '+', '-', '*', '/', '=', '<', '>', '^'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        3 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #a1a100;',\n            3 => 'color: #000066;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080;',\n            2 => 'color: #808080;',\n            3 => 'color: #8080C0;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            1 => 'color: #cc66cc;',\n            2 => 'color: #339933;'\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        3 => 'http://www.qbasicnews.com/qboho/qck{FNAMEL}.shtml'\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        1 => '&amp;(?:H[0-9a-fA-F]+|O[0-7]+)(?!\\w)',\n        2 => '#[0-9]+(?!\\w)'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 8\n);\n"
  },
  {
    "path": "includes/geshi/qml.php",
    "content": "<?php\n/*************************************************************************************\n * qml.php\n * --------------\n * Author: J-P Nurmi <jpnurmi@gmail.com>\n * Copyright: (c) 2012-2014 J-P Nurmi <jpnurmi@gmail.com>\n * Release Version: 1.0.9.1\n * Date Started: 2012/08/19\n *\n * QML language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2014/06/29 (1.0.8.13)\n *  - Synced QML types from Qt 5.3:\n *    http://qt-project.org/doc/qt-5/modules-qml.html\n * 2012/08/19\n *  - First version based on Qt 4\n *\n * TODO (updated 2014/06/29)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'QML',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        // comments\n        2 => \"/(?<=[\\\\s^])(s|tr|y)\\\\/(?!\\*)(?!\\s)(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+(?<!\\s)\\\\/(?!\\s)(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])*(?<!\\s)\\\\/[msixpogcde]*(?=[\\\\s$\\\\.\\\\;])|(?<=[\\\\s^(=])(m|q[qrwx]?)?\\\\/(?!\\*)(?!\\s)(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+(?<!\\s)\\\\/[msixpogc]*(?=[\\\\s$\\\\.\\\\,\\\\;\\\\)])/iU\",\n        // property binding\n        3 => \"/([a-z][\\\\w\\\\.]*)(?=:)/\",\n        // TODO: property name (fixed length lookbehind assertion?)\n        4 => \"/(?<=property\\\\s+\\\\w+\\\\s+)(\\\\w+)/\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'as','alias','break','case','catch','continue','const','debugger',\n            'default','delete','do','else','finally','for','function',\n            'if','import','in','instanceof','new','on','public','property',\n            'readonly','return','signal','switch','this','throw','try',\n            'typeof','while','with'\n            ),\n        2 => array(\n            'action','bool','color','date','double','enumeration','font',\n            'int','list','matrix4x4','point','quaternion','real','rect',\n            'size','string','time','url','var','variant','vector2d',\n            'vector3d','vector4d','void'\n            ),\n        // http://qt-project.org/doc/qt-5/qtbluetooth-qmlmodule.html\n        3 => array(\n            'BluetoothDiscoveryModel','BluetoothService','BluetoothSocket'\n            ),\n        // http://qt-project.org/doc/qt-5/qtgraphicaleffects-qmlmodule.html\n        4 => array(\n            'Blend','BrightnessContrast','ColorOverlay','Colorize',\n            'ConicalGradient','Desaturate','DirectionalBlur','Displace',\n            'DropShadow','FastBlur','GammaAdjust','GaussianBlur','Glow',\n            'HueSaturation','InnerShadow','LevelAdjust','LinearGradient',\n            'MaskedBlur','OpacityMask','RadialBlur','RadialGradient',\n            'RectangularGlow','RecursiveBlur','ThresholdMask','ZoomBlur'\n            ),\n        // http://qt-project.org/doc/qt-5/qtaudioengine-qmlmodule.html\n        5 => array(\n            'AttenuationModelLinear','AttenuationModelInverse','AudioCategory',\n            'AudioEngine','AudioListener','AudioSample','PlayVariation',\n            'Sound','SoundInstance'\n            ),\n        // http://qt-project.org/doc/qt-5/qtmultimedia-qmlmodule.html\n        6 => array(\n            'Video','Audio','MediaPlayer','Camera','CameraCapture',\n            'CameraExposure','CameraFlash','CameraFocus','CameraImageProcessing',\n            'CameraRecorder','Radio','RadioData','Torch','SoundEffect','VideoOutput'\n            ),\n        // http://qt-project.org/doc/qt-5/qtnfc-qmlmodule.html\n        7 => array(\n            'NdefFilter','NdefMimeRecord','NdefTextRecord','NdefUriRecord',\n            'NearField','NdefRecord'\n            ),\n        // http://qt-project.org/doc/qt-5/qtpositioning-qmlmodule.html\n        8 => array(\n            'QtPositioning','CoordinateAnimation','Position','PositionSource',\n            'Address','Location'\n            ),\n        // http://qt-project.org/doc/qt-5/qtqml-models-qmlmodule.html\n        9 => array(\n            'DelegateModel','DelegateModelGroup','ListModel','ListElement','ObjectModel'\n            ),\n        // http://qt-project.org/doc/qt-5/qtqml-qmlmodule.html\n        10 => array(\n            'Binding','Component','Connections','Date','Instantiator',\n            'Locale','Number','Qt','QtObject','String','Timer'\n            ),\n        // http://qt-project.org/doc/qt-5/qt-labs-folderlistmodel-qmlmodule.html\n        11 => array(\n            'FolderListModel'\n            ),\n        // http://qt-project.org/doc/qt-5/qtquick-localstorage-qmlmodule.html\n        12 => array(\n            'openDatabaseSync'\n            ),\n        // http://qt-project.org/doc/qt-5/qt-labs-settings-qmlmodule.html\n        13 => array(\n            'Settings'\n            ),\n        // http://qt-project.org/doc/qt-5/qtquick-window-qmlmodule.html\n        14 => array(\n            'Screen','Window','CloseEvent'\n            ),\n        // http://qt-project.org/doc/qt-5/qtquick-xmllistmodel-qmlmodule.html\n        15 => array(\n            'XmlRole','XmlListModel'\n            ),\n        // http://qt-project.org/doc/qt-5/qtquick-particles-qmlmodule.html\n        16 => array(\n            'Age','AngleDirection','CumulativeDirection','CustomParticle',\n            'Direction','EllipseShape','Friction','Gravity','GroupGoal',\n            'ImageParticle','ItemParticle','LineShape','MaskShape','Affector',\n            'Emitter','Shape','ParticleGroup','ParticlePainter','ParticleSystem',\n            'Attractor','PointDirection','RectangleShape','SpriteGoal',\n            'TargetDirection','TrailEmitter','Turbulence','Particle','Wander'\n            ),\n        // http://qt-project.org/doc/qt-5/qttest-qmlmodule.html\n        17 => array(\n            'SignalSpy','TestCase'\n            ),\n        // http://qt-project.org/doc/qt-5/qtquick-qmltypereference.html\n        18 => array(\n            'Item','Rectangle','Image','BorderImage','AnimatedImage','AnimatedSprite',\n            'SpriteSequence','Text','Accessible','Gradient','GradientStop','SystemPalette',\n            'Sprite','FontLoader','Repeater','Loader','Visual Item Transformations','Transform',\n            'Scale','Rotation','Translate','MouseArea','Keys','KeyNavigation','FocusScope',\n            'Flickable','PinchArea','MultiPointTouchArea','Drag','DropArea','TextInput',\n            'TextEdit','IntValidator','DoubleValidator','RegExpValidator','TouchPoint',\n            'PinchEvent','WheelEvent','MouseEvent','KeyEvent','DragEvent','Positioner',\n            'Column','Row','Grid','Flow','LayoutMirroring','State','PropertyChanges',\n            'StateGroup','StateChangeScript','ParentChange','AnchorChanges','Transition',\n            'ViewTransition','SequentialAnimation','ParallelAnimation','Behavior','PropertyAction',\n            'PauseAnimation','SmoothedAnimation','SpringAnimation','ScriptAction','PropertyAnimation',\n            'NumberAnimation','Vector3dAnimation','ColorAnimation','RotationAnimation','ParentAnimation',\n            'AnchorAnimation','PathAnimation','XAnimator','YAnimator','ScaleAnimator','RotationAnimator',\n            'OpacityAnimator','UniformAnimator','Lower-level Animation Types','PathInterpolator',\n            'AnimationController','Path','PathLine','PathQuad','PathCubic','PathArc','PathCurve',\n            'PathSvg','PathAttribute','PathPercent','VisualItemModel','VisualDataModel','VisualDataGroup',\n            'ListView','GridView','PathView','Package','Flipable','ShaderEffect','ShaderEffectSource',\n            'GridMesh','WorkerScript','Canvas','Context2D','CanvasGradient','CanvasPixelArray',\n            'CanvasImageData','TextMetrics',\n            ),\n        // http://qt-project.org/doc/qt-5/qtquick-controls-qmlmodule.html\n        19 => array(\n            'ApplicationWindow','BusyIndicator','Button','Calendar',\n            'CheckBox','ComboBox','GroupBox','Label','Menu','MenuBar',\n            'ProgressBar','RadioButton','ScrollView','Slider','SpinBox',\n            'SplitView','StackView','StackViewDelegate','StatusBar',\n            'Switch','Tab','TabView','TableView','TableViewColumn',\n            'TextArea','TextField','ToolBar','ToolButton','Action',\n            'ExclusiveGroup','MenuSeparator','MenuItem','Stack'\n            ),\n        // http://qt-project.org/doc/qt-5/qtquick-dialogs-qmlmodule.html\n        20 => array(\n            'Dialog','ColorDialog','FileDialog','FontDialog','MessageDialog'\n            ),\n        // http://qt-project.org/doc/qt-5/qtquick-layouts-qmlmodule.html\n        21 => array(\n            'Layout','RowLayout','ColumnLayout','GridLayout'\n            ),\n        // http://qt-project.org/doc/qt-5/qtsensors-qmlmodule.html\n        22 => array(\n            'Accelerometer','AccelerometerReading','Altimeter','AltimeterReading',\n            'AmbientLightReading','AmbientLightSensor','AmbientTemperatureReading',\n            'AmbientTemperatureSensor','Compass','CompassReading','Gyroscope',\n            'GyroscopeReading','HolsterReading','HolsterSensor','IRProximityReading',\n            'IRProximitySensor','LightReading','LightSensor','Magnetometer',\n            'MagnetometerReading','OrientationReading','OrientationSensor',\n            'PressureReading','PressureSensor','ProximityReading','ProximitySensor',\n            'RotationReading','RotationSensor','SensorGesture','SensorGlobal',\n            'SensorReading','TapReading','TapSensor','TiltReading','TiltSensor'\n            ),\n        // http://qt-project.org/doc/qt-5/qtwinextras-qmlmodule.html\n        23 => array(\n            'JumpListDestination','JumpListLink','JumpListSeparator','DwmFeatures',\n            'JumpList','JumpListCategory','TaskbarButton','ThumbnailToolBar','ThumbnailToolButton'\n            ),\n        // http://qt-project.org/doc/qt-5/qtwebkit-qmlmodule.html\n        24 => array(\n            'WebView','WebLoadRequest'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}',\n        '+', '-', '*', '/', '%',\n        '!', '@', '&', '|', '^',\n        '<', '>', '=',\n        ',', ';', '?', ':'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true,\n        9 => true,\n        10 => true,\n        11 => true,\n        12 => true,\n        13 => true,\n        14 => true,\n        15 => true,\n        16 => true,\n        17 => true,\n        18 => true,\n        19 => true,\n        20 => true,\n        21 => true,\n        22 => true,\n        23 => true,\n        24 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #808041;',\n            2 => 'color: #808041;',\n            3 => 'color: #800780;',\n            4 => 'color: #800780;',\n            5 => 'color: #800780;',\n            6 => 'color: #800780;',\n            7 => 'color: #800780;',\n            8 => 'color: #800780;',\n            9 => 'color: #800780;',\n            10 => 'color: #800780;',\n            11 => 'color: #800780;',\n            12 => 'color: #800780;',\n            13 => 'color: #800780;',\n            14 => 'color: #800780;',\n            15 => 'color: #800780;',\n            16 => 'color: #800780;',\n            17 => 'color: #800780;',\n            18 => 'color: #800780;',\n            19 => 'color: #800780;',\n            20 => 'color: #800780;',\n            21 => 'color: #800780;',\n            22 => 'color: #800780;',\n            23 => 'color: #800780;',\n            24 => 'color: #800780;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008025;',\n            2 => 'color: #008025;',\n            3 => 'color: #970009;',\n            4 => 'color: #970009;',\n            'MULTI' => 'color: #008025;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #008025;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #000000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #000000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            3 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://qt-project.org/doc/qt-5/qml-qtbluetooth-{FNAMEL}.html',\n        4 => 'http://qt-project.org/doc/qt-5/qml-qtgraphicaleffects-{FNAMEL}.html',\n        5 => 'http://qt-project.org/doc/qt-5/qml-qtaudioengine-{FNAMEL}.html',\n        6 => 'http://qt-project.org/doc/qt-5/qml-qtmultimedia-{FNAMEL}.html',\n        7 => 'http://qt-project.org/doc/qt-5/qml-qtnfc-{FNAMEL}.html',\n        8 => 'http://qt-project.org/doc/qt-5/qml-qtpositioning-{FNAMEL}.html',\n        9 => 'http://qt-project.org/doc/qt-5/qml-qtqml-models-{FNAMEL}.html',\n        10 => 'http://qt-project.org/doc/qt-5/qml-qtqml-{FNAMEL}.html',\n        11 => 'http://qt-project.org/doc/qt-5/qml-qt-labs-folderlistmodel-{FNAMEL}.html',\n        12 => 'http://qt-project.org/doc/qt-5/qtquick-localstorage-qmlmodule.html',\n        13 => 'http://qt-project.org/doc/qt-5/qml-qt-labs-settings-{FNAMEL}.html',\n        14 => 'http://qt-project.org/doc/qt-5/qml-qtquick-window-{FNAMEL}.html',\n        15 => 'http://qt-project.org/doc/qt-5/qml-qtquick-xmllistmodel-{FNAMEL}.html',\n        16 => 'http://qt-project.org/doc/qt-5/qml-qtquick-particles-{FNAMEL}.html',\n        17 => 'http://qt-project.org/doc/qt-5/qml-qttest-{FNAMEL}.html',\n        18 => 'http://qt-project.org/doc/qt-5/qml-qtquick-{FNAMEL}.html',\n        19 => 'http://qt-project.org/doc/qt-5/qml-qtquick-controls-{FNAMEL}.html',\n        20 => 'http://qt-project.org/doc/qt-5/qml-qtquick-dialogs-{FNAMEL}.html',\n        21 => 'http://qt-project.org/doc/qt-5/qml-qtquick-layouts-{FNAMEL}.html',\n        22 => 'http://qt-project.org/doc/qt-5/qml-qtsensors-{FNAMEL}.html',\n        23 => 'http://qt-project.org/doc/qt-5/qml-qtwinextras-{FNAMEL}.html',\n        24 => 'http://qt-project.org/doc/qt-5/qml-qtwebkit-{FNAMEL}.html'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        0 => array(\n            '<script type=\"text/javascript\">' => '</script>'\n            ),\n        1 => array(\n            '<script language=\"javascript\">' => '</script>'\n            )\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        1 => true\n        )\n);\n"
  },
  {
    "path": "includes/geshi/racket.php",
    "content": "<?php\n/*************************************************************************************\n * racket.php\n * ----------\n * Author:          Tim Brown (tim@timb.net)\n * Copyright:   (c) 2013 Tim Brown ((https://github.com/tim-brown/geshi-racket))\n * Release Version: 1.0.9.1\n * Date Started:    2013-03-01\n *\n * Racket language file for GeSHi.\n *\n * This file was built automatically from the scripts in\n * https://github.com/tim-brown/geshi-racket (you didn't think\n * I typed those NUMBER regular expressions in myself, did you?).\n * Use those scripts to regenerate the file.\n *\n * CHANGES\n * -------\n *   1.0 (2013-03-31)\n *   - Initial Release1.1 (2013-03-31)\n *   - Added URLs, \"symbol\"-like identifiers moved to SYMBOLS*\n *\n * TODO (updated 2013-04-25)\n * -------------------------\n *   * better handling of empty and short arrays\n *   * care more about indentation and line lengths\n *   * most compound regexps are possibly over-bracketed: (or ...)\n *   * most compound regexps are possibly over-bracketed: (: ...)\n *   * URLs should be formed more smartly by discovering which module they came from.\n *   * '|...| identifiers\n *   * #<<HERE strings\n *   * #;(...) comments -- (note: requires balanced parenthesis regexp)\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Racket',\n    'COMMENT_SINGLE' => array(\n        1 => ';',\n        ),\n    'COMMENT_MULTI' => array(\n        '#|' => '|#',\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"',\n        ),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'abort-current-continuation', 'abs', 'absolute-path?', 'acos', 'add1',\n            'alarm-evt', 'always-evt', 'andmap', 'angle', 'append',\n            'arithmetic-shift', 'arity-at-least-value', 'arity-at-least?',\n            'asin', 'assf', 'assoc', 'assq', 'assv', 'atan', 'banner',\n            'bitwise-and', 'bitwise-bit-field', 'bitwise-bit-set?',\n            'bitwise-ior', 'bitwise-not', 'bitwise-xor', 'boolean?',\n            'bound-identifier=?', 'box', 'box-cas!', 'box-immutable', 'box?',\n            'break-enabled', 'break-thread', 'build-list', 'build-path',\n            'build-path/convention-type', 'build-string', 'build-vector',\n            'byte-pregexp', 'byte-pregexp?', 'byte-ready?', 'byte-regexp',\n            'byte-regexp?', 'byte?', 'bytes', 'bytes&gt;?', 'bytes&lt;?',\n            'bytes-&gt;immutable-bytes', 'bytes-&gt;list', 'bytes-&gt;path',\n            'bytes-&gt;path-element', 'bytes-&gt;string/latin-1',\n            'bytes-&gt;string/locale', 'bytes-&gt;string/utf-8',\n            'bytes-append', 'bytes-close-converter', 'bytes-convert',\n            'bytes-convert-end', 'bytes-converter?', 'bytes-copy',\n            'bytes-copy!', 'bytes-fill!', 'bytes-length',\n            'bytes-open-converter', 'bytes-ref', 'bytes-set!',\n            'bytes-utf-8-index', 'bytes-utf-8-length', 'bytes-utf-8-ref',\n            'bytes=?', 'bytes?', 'caaaar', 'caaadr', 'caaar', 'caadar',\n            'caaddr', 'caadr', 'caar', 'cadaar', 'cadadr', 'cadar', 'caddar',\n            'cadddr', 'caddr', 'cadr', 'call-in-nested-thread',\n            'call-with-break-parameterization',\n            'call-with-composable-continuation',\n            'call-with-continuation-barrier', 'call-with-continuation-prompt',\n            'call-with-current-continuation', 'call-with-escape-continuation',\n            'call-with-exception-handler',\n            'call-with-immediate-continuation-mark',\n            'call-with-parameterization', 'call-with-semaphore',\n            'call-with-semaphore/enable-break', 'call-with-values', 'call/cc',\n            'call/ec', 'car', 'cdaaar', 'cdaadr', 'cdaar', 'cdadar', 'cdaddr',\n            'cdadr', 'cdar', 'cddaar', 'cddadr', 'cddar', 'cdddar', 'cddddr',\n            'cdddr', 'cddr', 'cdr', 'ceiling', 'channel-get', 'channel-put',\n            'channel-put-evt', 'channel-put-evt?', 'channel-try-get',\n            'channel?', 'chaperone-box', 'chaperone-continuation-mark-key',\n            'chaperone-evt', 'chaperone-hash', 'chaperone-of?',\n            'chaperone-procedure', 'chaperone-prompt-tag', 'chaperone-struct',\n            'chaperone-struct-type', 'chaperone-vector', 'chaperone?',\n            'char&gt;=?', 'char&gt;?', 'char&lt;=?', 'char&lt;?',\n            'char-&gt;integer', 'char-alphabetic?', 'char-blank?',\n            'char-ci&gt;=?', 'char-ci&gt;?', 'char-ci&lt;=?', 'char-ci&lt;?',\n            'char-ci=?', 'char-downcase', 'char-foldcase',\n            'char-general-category', 'char-graphic?', 'char-iso-control?',\n            'char-lower-case?', 'char-numeric?', 'char-punctuation?',\n            'char-ready?', 'char-symbolic?', 'char-title-case?',\n            'char-titlecase', 'char-upcase', 'char-upper-case?',\n            'char-utf-8-length', 'char-whitespace?', 'char=?', 'char?',\n            'check-duplicate-identifier',\n            'checked-procedure-check-and-extract', 'choice-evt',\n            'cleanse-path', 'close-input-port', 'close-output-port',\n            'collect-garbage', 'collection-file-path', 'collection-path',\n            'compile', 'compile-allow-set!-undefined',\n            'compile-context-preservation-enabled',\n            'compile-enforce-module-constants', 'compile-syntax',\n            'compiled-expression?', 'compiled-module-expression?',\n            'complete-path?', 'complex?', 'compose', 'compose1', 'cons',\n            'continuation-mark-key?', 'continuation-mark-set-&gt;context',\n            'continuation-mark-set-&gt;list',\n            'continuation-mark-set-&gt;list*', 'continuation-mark-set-first',\n            'continuation-mark-set?', 'continuation-marks',\n            'continuation-prompt-available?', 'continuation-prompt-tag?',\n            'continuation?', 'copy-file', 'cos',\n            'current-break-parameterization', 'current-code-inspector',\n            'current-command-line-arguments', 'current-compile',\n            'current-compiled-file-roots', 'current-continuation-marks',\n            'current-custodian', 'current-directory', 'current-drive',\n            'current-error-port', 'current-eval',\n            'current-evt-pseudo-random-generator', 'current-gc-milliseconds',\n            'current-get-interaction-input-port',\n            'current-inexact-milliseconds', 'current-input-port',\n            'current-inspector', 'current-library-collection-paths',\n            'current-load', 'current-load-extension',\n            'current-load-relative-directory', 'current-load/use-compiled',\n            'current-locale', 'current-logger', 'current-memory-use',\n            'current-milliseconds', 'current-module-declare-name',\n            'current-module-declare-source', 'current-module-name-resolver',\n            'current-namespace', 'current-output-port',\n            'current-parameterization', 'current-preserved-thread-cell-values',\n            'current-print', 'current-process-milliseconds',\n            'current-prompt-read', 'current-pseudo-random-generator',\n            'current-read-interaction', 'current-reader-guard',\n            'current-readtable', 'current-seconds', 'current-security-guard',\n            'current-subprocess-custodian-mode', 'current-thread',\n            'current-thread-group', 'current-thread-initial-stack-size',\n            'current-write-relative-directory', 'custodian-box-value',\n            'custodian-box?', 'custodian-limit-memory',\n            'custodian-managed-list', 'custodian-memory-accounting-available?',\n            'custodian-require-memory', 'custodian-shutdown-all', 'custodian?',\n            'custom-print-quotable-accessor', 'custom-print-quotable?',\n            'custom-write-accessor', 'custom-write?', 'date*-nanosecond',\n            'date*-time-zone-name', 'date*?', 'date-day', 'date-dst?',\n            'date-hour', 'date-minute', 'date-month', 'date-second',\n            'date-time-zone-offset', 'date-week-day', 'date-year',\n            'date-year-day', 'date?', 'datum-&gt;syntax',\n            'datum-intern-literal', 'default-continuation-prompt-tag',\n            'delete-directory', 'delete-file', 'denominator',\n            'directory-exists?', 'directory-list', 'display', 'displayln',\n            'double-flonum?', 'dump-memory-stats', 'dynamic-require',\n            'dynamic-require-for-syntax', 'dynamic-wind', 'eof', 'eof-object?',\n            'ephemeron-value', 'ephemeron?', 'eprintf', 'eq-hash-code', 'eq?',\n            'equal-hash-code', 'equal-secondary-hash-code', 'equal?',\n            'equal?/recur', 'eqv-hash-code', 'eqv?', 'error',\n            'error-display-handler', 'error-escape-handler',\n            'error-print-context-length', 'error-print-source-location',\n            'error-print-width', 'error-value-&gt;string-handler', 'eval',\n            'eval-jit-enabled', 'eval-syntax', 'even?', 'evt?',\n            'exact-&gt;inexact', 'exact-integer?',\n            'exact-nonnegative-integer?', 'exact-positive-integer?', 'exact?',\n            'executable-yield-handler', 'exit', 'exit-handler',\n            'exn-continuation-marks', 'exn-message', 'exn:break-continuation',\n            'exn:break:hang-up?', 'exn:break:terminate?', 'exn:break?',\n            'exn:fail:contract:arity?', 'exn:fail:contract:continuation?',\n            'exn:fail:contract:divide-by-zero?',\n            'exn:fail:contract:non-fixnum-result?',\n            'exn:fail:contract:variable-id', 'exn:fail:contract:variable?',\n            'exn:fail:contract?', 'exn:fail:filesystem:errno-errno',\n            'exn:fail:filesystem:errno?', 'exn:fail:filesystem:exists?',\n            'exn:fail:filesystem:version?', 'exn:fail:filesystem?',\n            'exn:fail:network:errno-errno', 'exn:fail:network:errno?',\n            'exn:fail:network?', 'exn:fail:out-of-memory?',\n            'exn:fail:read-srclocs', 'exn:fail:read:eof?',\n            'exn:fail:read:non-char?', 'exn:fail:read?',\n            'exn:fail:syntax-exprs', 'exn:fail:syntax:unbound?',\n            'exn:fail:syntax?', 'exn:fail:unsupported?', 'exn:fail:user?',\n            'exn:fail?', 'exn:srclocs-accessor', 'exn:srclocs?', 'exn?', 'exp',\n            'expand', 'expand-once', 'expand-syntax', 'expand-syntax-once',\n            'expand-syntax-to-top-form', 'expand-to-top-form',\n            'expand-user-path', 'expt', 'file-exists?',\n            'file-or-directory-identity', 'file-or-directory-modify-seconds',\n            'file-or-directory-permissions', 'file-position', 'file-position*',\n            'file-size', 'file-stream-buffer-mode', 'file-stream-port?',\n            'filesystem-root-list', 'filter', 'find-executable-path',\n            'find-library-collection-paths', 'find-system-path', 'findf',\n            'fixnum?', 'floating-point-bytes-&gt;real', 'flonum?', 'floor',\n            'flush-output', 'foldl', 'foldr', 'for-each', 'format', 'fprintf',\n            'free-identifier=?', 'free-label-identifier=?',\n            'free-template-identifier=?', 'free-transformer-identifier=?',\n            'gcd', 'generate-temporaries', 'gensym', 'get-output-bytes',\n            'get-output-string', 'getenv', 'global-port-print-handler',\n            'guard-evt', 'handle-evt', 'handle-evt?', 'hash', 'hash-&gt;list',\n            'hash-copy', 'hash-count', 'hash-eq?', 'hash-equal?', 'hash-eqv?',\n            'hash-for-each', 'hash-has-key?', 'hash-iterate-first',\n            'hash-iterate-key', 'hash-iterate-next', 'hash-iterate-value',\n            'hash-keys', 'hash-map', 'hash-placeholder?', 'hash-ref',\n            'hash-ref!', 'hash-remove', 'hash-remove!', 'hash-set',\n            'hash-set!', 'hash-set*', 'hash-set*!', 'hash-update',\n            'hash-update!', 'hash-values', 'hash-weak?', 'hash?', 'hasheq',\n            'hasheqv', 'identifier-binding', 'identifier-label-binding',\n            'identifier-prune-lexical-context',\n            'identifier-prune-to-source-module',\n            'identifier-remove-from-definition-context',\n            'identifier-template-binding', 'identifier-transformer-binding',\n            'identifier?', 'imag-part', 'immutable?', 'impersonate-box',\n            'impersonate-continuation-mark-key', 'impersonate-hash',\n            'impersonate-procedure', 'impersonate-prompt-tag',\n            'impersonate-struct', 'impersonate-vector', 'impersonator-of?',\n            'impersonator-prop:application-mark',\n            'impersonator-property-accessor-procedure?',\n            'impersonator-property?', 'impersonator?', 'in-cycle',\n            'in-directory', 'in-hash', 'in-hash-keys', 'in-hash-pairs',\n            'in-hash-values', 'in-parallel', 'in-sequences',\n            'in-values*-sequence', 'in-values-sequence', 'inexact-&gt;exact',\n            'inexact-real?', 'inexact?', 'input-port?', 'inspector?',\n            'integer-&gt;char', 'integer-&gt;integer-bytes',\n            'integer-bytes-&gt;integer', 'integer-length', 'integer-sqrt',\n            'integer-sqrt/remainder', 'integer?',\n            'internal-definition-context-seal', 'internal-definition-context?',\n            'keyword&lt;?', 'keyword-&gt;string', 'keyword-apply', 'keyword?',\n            'kill-thread', 'lcm', 'length', 'liberal-define-context?',\n            'link-exists?', 'list', 'list*', 'list-&gt;bytes',\n            'list-&gt;string', 'list-&gt;vector', 'list-ref', 'list-tail',\n            'list?', 'load', 'load-extension', 'load-on-demand-enabled',\n            'load-relative', 'load-relative-extension', 'load/cd',\n            'load/use-compiled', 'local-expand', 'local-expand/capture-lifts',\n            'local-transformer-expand',\n            'local-transformer-expand/capture-lifts', 'locale-string-encoding',\n            'log', 'log-level?', 'log-max-level', 'log-message',\n            'log-receiver?', 'logger-name', 'logger?', 'magnitude',\n            'make-arity-at-least', 'make-base-empty-namespace',\n            'make-base-namespace', 'make-bytes', 'make-channel',\n            'make-continuation-mark-key', 'make-continuation-prompt-tag',\n            'make-custodian', 'make-custodian-box', 'make-date', 'make-date*',\n            'make-derived-parameter', 'make-directory', 'make-do-sequence',\n            'make-empty-namespace', 'make-ephemeron', 'make-exn',\n            'make-exn:break', 'make-exn:break:hang-up',\n            'make-exn:break:terminate', 'make-exn:fail',\n            'make-exn:fail:contract', 'make-exn:fail:contract:arity',\n            'make-exn:fail:contract:continuation',\n            'make-exn:fail:contract:divide-by-zero',\n            'make-exn:fail:contract:non-fixnum-result',\n            'make-exn:fail:contract:variable', 'make-exn:fail:filesystem',\n            'make-exn:fail:filesystem:errno',\n            'make-exn:fail:filesystem:exists',\n            'make-exn:fail:filesystem:version', 'make-exn:fail:network',\n            'make-exn:fail:network:errno', 'make-exn:fail:out-of-memory',\n            'make-exn:fail:read', 'make-exn:fail:read:eof',\n            'make-exn:fail:read:non-char', 'make-exn:fail:syntax',\n            'make-exn:fail:syntax:unbound', 'make-exn:fail:unsupported',\n            'make-exn:fail:user', 'make-file-or-directory-link', 'make-hash',\n            'make-hash-placeholder', 'make-hasheq', 'make-hasheq-placeholder',\n            'make-hasheqv', 'make-hasheqv-placeholder', 'make-immutable-hash',\n            'make-immutable-hasheq', 'make-immutable-hasheqv',\n            'make-impersonator-property', 'make-input-port', 'make-inspector',\n            'make-keyword-procedure', 'make-known-char-range-list',\n            'make-log-receiver', 'make-logger', 'make-output-port',\n            'make-parameter', 'make-phantom-bytes', 'make-pipe',\n            'make-placeholder', 'make-polar', 'make-prefab-struct',\n            'make-pseudo-random-generator', 'make-reader-graph',\n            'make-readtable', 'make-rectangular', 'make-rename-transformer',\n            'make-resolved-module-path', 'make-security-guard',\n            'make-semaphore', 'make-set!-transformer', 'make-shared-bytes',\n            'make-sibling-inspector', 'make-special-comment', 'make-srcloc',\n            'make-string', 'make-struct-field-accessor',\n            'make-struct-field-mutator', 'make-struct-type',\n            'make-struct-type-property', 'make-syntax-delta-introducer',\n            'make-syntax-introducer', 'make-thread-cell', 'make-thread-group',\n            'make-vector', 'make-weak-box', 'make-weak-hash',\n            'make-weak-hasheq', 'make-weak-hasheqv', 'make-will-executor',\n            'map', 'max', 'mcar', 'mcdr', 'mcons', 'member', 'memf', 'memq',\n            'memv', 'min', 'module-&gt;exports', 'module-&gt;imports',\n            'module-&gt;language-info', 'module-&gt;namespace',\n            'module-compiled-exports', 'module-compiled-imports',\n            'module-compiled-language-info', 'module-compiled-name',\n            'module-compiled-submodules', 'module-declared?',\n            'module-path-index-join', 'module-path-index-resolve',\n            'module-path-index-split', 'module-path-index-submodule',\n            'module-path-index?', 'module-path?', 'module-predefined?',\n            'module-provide-protected?', 'modulo', 'mpair?', 'nack-guard-evt',\n            'namespace-anchor-&gt;empty-namespace',\n            'namespace-anchor-&gt;namespace', 'namespace-anchor?',\n            'namespace-attach-module', 'namespace-attach-module-declaration',\n            'namespace-base-phase', 'namespace-mapped-symbols',\n            'namespace-module-identifier', 'namespace-module-registry',\n            'namespace-require', 'namespace-require/constant',\n            'namespace-require/copy', 'namespace-require/expansion-time',\n            'namespace-set-variable-value!', 'namespace-symbol-&gt;identifier',\n            'namespace-syntax-introduce', 'namespace-undefine-variable!',\n            'namespace-unprotect-module', 'namespace-variable-value',\n            'namespace?', 'negative?', 'never-evt', 'newline',\n            'normal-case-path', 'not', 'null', 'null?', 'number-&gt;string',\n            'number?', 'numerator', 'object-name', 'odd?', 'open-input-bytes',\n            'open-input-string', 'open-output-bytes', 'open-output-string',\n            'ormap', 'output-port?', 'pair?', 'parameter-procedure=?',\n            'parameter?', 'parameterization?', 'path-&gt;bytes',\n            'path-&gt;complete-path', 'path-&gt;directory-path',\n            'path-&gt;string', 'path-add-suffix', 'path-convention-type',\n            'path-element-&gt;bytes', 'path-element-&gt;string',\n            'path-for-some-system?', 'path-list-string-&gt;path-list',\n            'path-replace-suffix', 'path-string?', 'path?', 'peek-byte',\n            'peek-byte-or-special', 'peek-bytes', 'peek-bytes!',\n            'peek-bytes-avail!', 'peek-bytes-avail!*',\n            'peek-bytes-avail!/enable-break', 'peek-char',\n            'peek-char-or-special', 'peek-string', 'peek-string!',\n            'phantom-bytes?', 'pipe-content-length', 'placeholder-get',\n            'placeholder-set!', 'placeholder?', 'poll-guard-evt',\n            'port-closed-evt', 'port-closed?', 'port-commit-peeked',\n            'port-count-lines!', 'port-count-lines-enabled',\n            'port-display-handler', 'port-file-identity', 'port-file-unlock',\n            'port-next-location', 'port-print-handler', 'port-progress-evt',\n            'port-provides-progress-evts?', 'port-read-handler',\n            'port-try-file-lock?', 'port-write-handler', 'port-writes-atomic?',\n            'port-writes-special?', 'port?', 'positive?',\n            'prefab-key-&gt;struct-type', 'prefab-key?', 'prefab-struct-key',\n            'pregexp', 'pregexp?', 'primitive-closure?',\n            'primitive-result-arity', 'primitive?', 'print',\n            'print-as-expression', 'print-boolean-long-form', 'print-box',\n            'print-graph', 'print-hash-table', 'print-mpair-curly-braces',\n            'print-pair-curly-braces', 'print-reader-abbreviations',\n            'print-struct', 'print-syntax-width', 'print-unreadable',\n            'print-vector-length', 'printf', 'procedure-&gt;method',\n            'procedure-arity', 'procedure-arity-includes?', 'procedure-arity?',\n            'procedure-closure-contents-eq?', 'procedure-extract-target',\n            'procedure-keywords', 'procedure-reduce-arity',\n            'procedure-reduce-keyword-arity', 'procedure-rename',\n            'procedure-struct-type?', 'procedure?', 'progress-evt?',\n            'prop:arity-string', 'prop:checked-procedure',\n            'prop:custom-print-quotable', 'prop:custom-write',\n            'prop:equal+hash', 'prop:evt', 'prop:exn:srclocs',\n            'prop:impersonator-of', 'prop:input-port',\n            'prop:liberal-define-context', 'prop:output-port',\n            'prop:procedure', 'prop:rename-transformer', 'prop:sequence',\n            'prop:set!-transformer', 'pseudo-random-generator-&gt;vector',\n            'pseudo-random-generator-vector?', 'pseudo-random-generator?',\n            'putenv', 'quotient', 'quotient/remainder', 'raise',\n            'raise-argument-error', 'raise-arguments-error',\n            'raise-arity-error', 'raise-mismatch-error', 'raise-range-error',\n            'raise-result-error', 'raise-syntax-error', 'raise-type-error',\n            'raise-user-error', 'random', 'random-seed', 'rational?',\n            'rationalize', 'read', 'read-accept-bar-quote', 'read-accept-box',\n            'read-accept-compiled', 'read-accept-dot', 'read-accept-graph',\n            'read-accept-infix-dot', 'read-accept-lang',\n            'read-accept-quasiquote', 'read-accept-reader', 'read-byte',\n            'read-byte-or-special', 'read-bytes', 'read-bytes!',\n            'read-bytes-avail!', 'read-bytes-avail!*',\n            'read-bytes-avail!/enable-break', 'read-bytes-line',\n            'read-case-sensitive', 'read-char', 'read-char-or-special',\n            'read-curly-brace-as-paren', 'read-decimal-as-inexact',\n            'read-eval-print-loop', 'read-language', 'read-line',\n            'read-on-demand-source', 'read-square-bracket-as-paren',\n            'read-string', 'read-string!', 'read-syntax',\n            'read-syntax/recursive', 'read/recursive', 'readtable-mapping',\n            'readtable?', 'real-&gt;decimal-string', 'real-&gt;double-flonum',\n            'real-&gt;floating-point-bytes', 'real-&gt;single-flonum',\n            'real-part', 'real?', 'regexp', 'regexp-match',\n            'regexp-match-exact?', 'regexp-match-peek',\n            'regexp-match-peek-immediate', 'regexp-match-peek-positions',\n            'regexp-match-peek-positions-immediate',\n            'regexp-match-peek-positions-immediate/end',\n            'regexp-match-peek-positions/end', 'regexp-match-positions',\n            'regexp-match-positions/end', 'regexp-match/end', 'regexp-match?',\n            'regexp-max-lookbehind', 'regexp-quote', 'regexp-replace',\n            'regexp-replace*', 'regexp-replace-quote', 'regexp-replaces',\n            'regexp-split', 'regexp-try-match', 'regexp?', 'relative-path?',\n            'remainder', 'remove', 'remove*', 'remq', 'remq*', 'remv', 'remv*',\n            'rename-file-or-directory', 'rename-transformer-target',\n            'rename-transformer?', 'reroot-path', 'resolve-path',\n            'resolved-module-path-name', 'resolved-module-path?', 'reverse',\n            'round', 'seconds-&gt;date', 'security-guard?',\n            'semaphore-peek-evt', 'semaphore-peek-evt?', 'semaphore-post',\n            'semaphore-try-wait?', 'semaphore-wait',\n            'semaphore-wait/enable-break', 'semaphore?', 'sequence-&gt;stream',\n            'sequence-generate', 'sequence-generate*', 'sequence?',\n            'set!-transformer-procedure', 'set!-transformer?', 'set-box!',\n            'set-mcar!', 'set-mcdr!', 'set-phantom-bytes!',\n            'set-port-next-location!', 'shared-bytes', 'shell-execute',\n            'simplify-path', 'sin', 'single-flonum?', 'sleep',\n            'special-comment-value', 'special-comment?', 'split-path', 'sqrt',\n            'srcloc-column', 'srcloc-line', 'srcloc-position', 'srcloc-source',\n            'srcloc-span', 'srcloc?', 'stop-after', 'stop-before', 'string',\n            'string&gt;=?', 'string&gt;?', 'string&lt;=?', 'string&lt;?',\n            'string-&gt;bytes/latin-1', 'string-&gt;bytes/locale',\n            'string-&gt;bytes/utf-8', 'string-&gt;immutable-string',\n            'string-&gt;keyword', 'string-&gt;list', 'string-&gt;number',\n            'string-&gt;path', 'string-&gt;path-element', 'string-&gt;symbol',\n            'string-&gt;uninterned-symbol', 'string-&gt;unreadable-symbol',\n            'string-append', 'string-ci&gt;=?', 'string-ci&gt;?',\n            'string-ci&lt;=?', 'string-ci&lt;?', 'string-ci=?', 'string-copy',\n            'string-copy!', 'string-downcase', 'string-fill!',\n            'string-foldcase', 'string-length', 'string-locale&gt;?',\n            'string-locale&lt;?', 'string-locale-ci&gt;?',\n            'string-locale-ci&lt;?', 'string-locale-ci=?',\n            'string-locale-downcase', 'string-locale-upcase',\n            'string-locale=?', 'string-normalize-nfc', 'string-normalize-nfd',\n            'string-normalize-nfkc', 'string-normalize-nfkd', 'string-ref',\n            'string-set!', 'string-titlecase', 'string-upcase',\n            'string-utf-8-length', 'string=?', 'string?', 'struct-&gt;vector',\n            'struct-accessor-procedure?', 'struct-constructor-procedure?',\n            'struct-info', 'struct-mutator-procedure?',\n            'struct-predicate-procedure?', 'struct-type-info',\n            'struct-type-make-constructor', 'struct-type-make-predicate',\n            'struct-type-property-accessor-procedure?',\n            'struct-type-property?', 'struct-type?', 'struct:arity-at-least',\n            'struct:date', 'struct:date*', 'struct:exn', 'struct:exn:break',\n            'struct:exn:break:hang-up', 'struct:exn:break:terminate',\n            'struct:exn:fail', 'struct:exn:fail:contract',\n            'struct:exn:fail:contract:arity',\n            'struct:exn:fail:contract:continuation',\n            'struct:exn:fail:contract:divide-by-zero',\n            'struct:exn:fail:contract:non-fixnum-result',\n            'struct:exn:fail:contract:variable', 'struct:exn:fail:filesystem',\n            'struct:exn:fail:filesystem:errno',\n            'struct:exn:fail:filesystem:exists',\n            'struct:exn:fail:filesystem:version', 'struct:exn:fail:network',\n            'struct:exn:fail:network:errno', 'struct:exn:fail:out-of-memory',\n            'struct:exn:fail:read', 'struct:exn:fail:read:eof',\n            'struct:exn:fail:read:non-char', 'struct:exn:fail:syntax',\n            'struct:exn:fail:syntax:unbound', 'struct:exn:fail:unsupported',\n            'struct:exn:fail:user', 'struct:srcloc', 'struct?', 'sub1',\n            'subbytes', 'subprocess', 'subprocess-group-enabled',\n            'subprocess-kill', 'subprocess-pid', 'subprocess-status',\n            'subprocess-wait', 'subprocess?', 'substring', 'symbol-&gt;string',\n            'symbol-interned?', 'symbol-unreadable?', 'symbol?', 'sync',\n            'sync/enable-break', 'sync/timeout', 'sync/timeout/enable-break',\n            'syntax-&gt;datum', 'syntax-&gt;list', 'syntax-arm',\n            'syntax-column', 'syntax-disarm', 'syntax-e', 'syntax-line',\n            'syntax-local-bind-syntaxes', 'syntax-local-certifier',\n            'syntax-local-context', 'syntax-local-expand-expression',\n            'syntax-local-get-shadower', 'syntax-local-introduce',\n            'syntax-local-lift-context', 'syntax-local-lift-expression',\n            'syntax-local-lift-module-end-declaration',\n            'syntax-local-lift-provide', 'syntax-local-lift-require',\n            'syntax-local-lift-values-expression',\n            'syntax-local-make-definition-context',\n            'syntax-local-make-delta-introducer',\n            'syntax-local-module-defined-identifiers',\n            'syntax-local-module-exports',\n            'syntax-local-module-required-identifiers', 'syntax-local-name',\n            'syntax-local-phase-level', 'syntax-local-submodules',\n            'syntax-local-transforming-module-provides?', 'syntax-local-value',\n            'syntax-local-value/immediate', 'syntax-original?',\n            'syntax-position', 'syntax-property',\n            'syntax-property-symbol-keys', 'syntax-protect', 'syntax-rearm',\n            'syntax-recertify', 'syntax-shift-phase-level', 'syntax-source',\n            'syntax-source-module', 'syntax-span', 'syntax-taint',\n            'syntax-tainted?', 'syntax-track-origin',\n            'syntax-transforming-module-expression?', 'syntax-transforming?',\n            'syntax?', 'system-big-endian?', 'system-idle-evt',\n            'system-language+country', 'system-library-subpath',\n            'system-path-convention-type', 'system-type', 'tan',\n            'terminal-port?', 'thread', 'thread-cell-ref', 'thread-cell-set!',\n            'thread-cell-values?', 'thread-cell?', 'thread-dead-evt',\n            'thread-dead?', 'thread-group?', 'thread-receive',\n            'thread-receive-evt', 'thread-resume', 'thread-resume-evt',\n            'thread-rewind-receive', 'thread-running?', 'thread-send',\n            'thread-suspend', 'thread-suspend-evt', 'thread-try-receive',\n            'thread-wait', 'thread/suspend-to-kill', 'thread?', 'time-apply',\n            'truncate', 'unbox', 'uncaught-exception-handler',\n            'use-collection-link-paths', 'use-compiled-file-paths',\n            'use-user-specific-search-paths', 'values',\n            'variable-reference-&gt;empty-namespace',\n            'variable-reference-&gt;module-base-phase',\n            'variable-reference-&gt;module-declaration-inspector',\n            'variable-reference-&gt;module-path-index',\n            'variable-reference-&gt;module-source',\n            'variable-reference-&gt;namespace', 'variable-reference-&gt;phase',\n            'variable-reference-&gt;resolved-module-path',\n            'variable-reference-constant?', 'variable-reference?', 'vector',\n            'vector-&gt;immutable-vector', 'vector-&gt;list',\n            'vector-&gt;pseudo-random-generator',\n            'vector-&gt;pseudo-random-generator!', 'vector-&gt;values',\n            'vector-copy!', 'vector-fill!', 'vector-immutable',\n            'vector-length', 'vector-ref', 'vector-set!',\n            'vector-set-performance-stats!', 'vector?', 'version', 'void',\n            'void?', 'weak-box-value', 'weak-box?', 'will-execute',\n            'will-executor?', 'will-register', 'will-try-execute', 'wrap-evt',\n            'write', 'write-byte', 'write-bytes', 'write-bytes-avail',\n            'write-bytes-avail*', 'write-bytes-avail-evt',\n            'write-bytes-avail/enable-break', 'write-char', 'write-special',\n            'write-special-avail*', 'write-special-evt', 'write-string',\n            'zero?',\n            ),\n\n        2 => array(\n            '#%app', '#%datum', '#%expression', '#%module-begin', '#%plain-app',\n            '#%plain-lambda', '#%plain-module-begin', '#%provide', '#%require',\n            '#%stratified-body', '#%top', '#%top-interaction',\n            '#%variable-reference', ':do-in', 'all-defined-out',\n            'all-from-out', 'and', 'apply', 'arity-at-least', 'begin',\n            'begin-for-syntax', 'begin0', 'call-with-input-file',\n            'call-with-input-file*', 'call-with-output-file',\n            'call-with-output-file*', 'case', 'case-lambda', 'combine-in',\n            'combine-out', 'cond', 'date', 'date*', 'define',\n            'define-for-syntax', 'define-logger', 'define-namespace-anchor',\n            'define-sequence-syntax', 'define-struct', 'define-struct/derived',\n            'define-syntax', 'define-syntax-rule', 'define-syntaxes',\n            'define-values', 'define-values-for-syntax', 'do', 'else',\n            'except-in', 'except-out', 'exn', 'exn:break', 'exn:break:hang-up',\n            'exn:break:terminate', 'exn:fail', 'exn:fail:contract',\n            'exn:fail:contract:arity', 'exn:fail:contract:continuation',\n            'exn:fail:contract:divide-by-zero',\n            'exn:fail:contract:non-fixnum-result',\n            'exn:fail:contract:variable', 'exn:fail:filesystem',\n            'exn:fail:filesystem:errno', 'exn:fail:filesystem:exists',\n            'exn:fail:filesystem:version', 'exn:fail:network',\n            'exn:fail:network:errno', 'exn:fail:out-of-memory',\n            'exn:fail:read', 'exn:fail:read:eof', 'exn:fail:read:non-char',\n            'exn:fail:syntax', 'exn:fail:syntax:unbound',\n            'exn:fail:unsupported', 'exn:fail:user', 'file', 'for', 'for*',\n            'for*/and', 'for*/first', 'for*/fold', 'for*/fold/derived',\n            'for*/hash', 'for*/hasheq', 'for*/hasheqv', 'for*/last',\n            'for*/list', 'for*/lists', 'for*/or', 'for*/product', 'for*/sum',\n            'for*/vector', 'for-label', 'for-meta', 'for-syntax',\n            'for-template', 'for/and', 'for/first', 'for/fold',\n            'for/fold/derived', 'for/hash', 'for/hasheq', 'for/hasheqv',\n            'for/last', 'for/list', 'for/lists', 'for/or', 'for/product',\n            'for/sum', 'for/vector', 'gen:custom-write', 'gen:equal+hash',\n            'if', 'in-bytes', 'in-bytes-lines', 'in-indexed',\n            'in-input-port-bytes', 'in-input-port-chars', 'in-lines',\n            'in-list', 'in-mlist', 'in-naturals', 'in-port', 'in-producer',\n            'in-range', 'in-string', 'in-value', 'in-vector', 'lambda', 'let',\n            'let*', 'let*-values', 'let-syntax', 'let-syntaxes', 'let-values',\n            'let/cc', 'let/ec', 'letrec', 'letrec-syntax', 'letrec-syntaxes',\n            'letrec-syntaxes+values', 'letrec-values', 'lib', 'local-require',\n            'log-debug', 'log-error', 'log-fatal', 'log-info', 'log-warning',\n            'module', 'module*', 'module+', 'only-in', 'only-meta-in',\n            'open-input-file', 'open-input-output-file', 'open-output-file',\n            'or', 'parameterize', 'parameterize*', 'parameterize-break',\n            'planet', 'prefix-in', 'prefix-out', 'protect-out', 'provide',\n            'quasiquote', 'quasisyntax', 'quasisyntax/loc', 'quote',\n            'quote-syntax', 'quote-syntax/prune', 'regexp-match*',\n            'regexp-match-peek-positions*', 'regexp-match-positions*',\n            'relative-in', 'rename-in', 'rename-out', 'require', 'set!',\n            'set!-values', 'sort', 'srcloc', 'struct', 'struct-copy',\n            'struct-field-index', 'struct-out', 'submod', 'syntax',\n            'syntax-case', 'syntax-case*', 'syntax-id-rules', 'syntax-rules',\n            'syntax/loc', 'time', 'unless', 'unquote', 'unquote-splicing',\n            'unsyntax', 'unsyntax-splicing', 'when', 'with-continuation-mark',\n            'with-handlers', 'with-handlers*', 'with-input-from-file',\n            'with-output-to-file', 'with-syntax', 'λ',\n            ),\n\n        3 => array(\n            '&gt;/c', '&lt;/c', 'append*', 'append-map', 'argmax', 'argmin',\n            'bad-number-of-results', 'base-&gt;-doms/c', 'base-&gt;-rngs/c',\n            'base-&gt;?', 'blame-add-unknown-context', 'blame-context',\n            'blame-contract', 'blame-fmt-&gt;-string', 'blame-negative',\n            'blame-original?', 'blame-positive', 'blame-replace-negative',\n            'blame-source', 'blame-swap', 'blame-swapped?', 'blame-value',\n            'blame?', 'boolean=?', 'build-chaperone-contract-property',\n            'build-compound-type-name', 'build-contract-property',\n            'build-flat-contract-property', 'bytes-append*', 'bytes-join',\n            'bytes-no-nuls?', 'call-with-input-bytes',\n            'call-with-input-string', 'call-with-output-bytes',\n            'call-with-output-string', 'chaperone-contract-property?',\n            'chaperone-contract?', 'class-&gt;interface', 'class-info',\n            'class?', 'coerce-chaperone-contract',\n            'coerce-chaperone-contracts', 'coerce-contract',\n            'coerce-contract/f', 'coerce-contracts', 'coerce-flat-contract',\n            'coerce-flat-contracts', 'conjugate', 'cons?', 'const',\n            'contract-first-order', 'contract-first-order-passes?',\n            'contract-name', 'contract-proc', 'contract-projection',\n            'contract-property?', 'contract-random-generate',\n            'contract-stronger?', 'contract-struct-exercise',\n            'contract-struct-generate', 'contract?', 'convert-stream',\n            'copy-directory/files', 'copy-port', 'cosh', 'count',\n            'current-blame-format', 'current-future', 'curry', 'curryr',\n            'degrees-&gt;radians', 'delete-directory/files',\n            'deserialize-info:set-v0', 'dict-iter-contract',\n            'dict-key-contract', 'dict-value-contract', 'drop', 'drop-right',\n            'dup-input-port', 'dup-output-port', 'dynamic-get-field',\n            'dynamic-send', 'dynamic-set-field!', 'eighth', 'empty',\n            'empty-sequence', 'empty-stream', 'empty?', 'env-stash',\n            'eq-contract-val', 'eq-contract?', 'equal&lt;%&gt;',\n            'equal-contract-val', 'equal-contract?', 'exact-ceiling',\n            'exact-floor', 'exact-round', 'exact-truncate',\n            'exn:fail:contract:blame-object', 'exn:fail:contract:blame?',\n            'exn:fail:object?', 'exn:misc:match?', 'explode-path',\n            'externalizable&lt;%&gt;', 'false', 'false/c', 'false?',\n            'field-names', 'fifth', 'file-name-from-path',\n            'filename-extension', 'filter-map', 'filter-not',\n            'filter-read-input-port', 'find-files', 'first', 'flat-contract',\n            'flat-contract-predicate', 'flat-contract-property?',\n            'flat-contract?', 'flat-named-contract', 'flatten', 'fold-files',\n            'force', 'fourth', 'fsemaphore-count', 'fsemaphore-post',\n            'fsemaphore-try-wait?', 'fsemaphore-wait', 'fsemaphore?', 'future',\n            'future?', 'futures-enabled?', 'generate-ctc-fail?',\n            'generate-env', 'generate-member-key', 'generate/choose',\n            'generate/direct', 'generic?', 'group-execute-bit',\n            'group-read-bit', 'group-write-bit', 'has-contract?', 'identity',\n            'impersonator-contract?', 'impersonator-prop:contracted',\n            'implementation?', 'implementation?/c', 'in-dict', 'in-dict-keys',\n            'in-dict-pairs', 'in-dict-values', 'infinite?',\n            'input-port-append', 'instanceof/c', 'interface-&gt;method-names',\n            'interface-extension?', 'interface?', 'is-a?', 'is-a?/c', 'last',\n            'last-pair', 'list-&gt;set', 'list-&gt;seteq', 'list-&gt;seteqv',\n            'make-chaperone-contract', 'make-contract', 'make-custom-hash',\n            'make-directory*', 'make-exn:fail:contract:blame',\n            'make-exn:fail:object', 'make-flat-contract', 'make-fsemaphore',\n            'make-generate-ctc-fail', 'make-generic',\n            'make-immutable-custom-hash', 'make-input-port/read-to-peek',\n            'make-limited-input-port', 'make-list', 'make-lock-file-name',\n            'make-mixin-contract', 'make-none/c', 'make-pipe-with-specials',\n            'make-primitive-class', 'make-proj-contract',\n            'make-tentative-pretty-print-output-port', 'make-weak-custom-hash',\n            'match-equality-test', 'matches-arity-exactly?',\n            'member-name-key-hash-code', 'member-name-key=?',\n            'member-name-key?', 'merge-input', 'method-in-interface?',\n            'mixin-contract', 'n-&gt;th', 'nan?', 'natural-number/c', 'negate',\n            'new-∀/c', 'new-∃/c', 'ninth', 'normalize-path', 'object%',\n            'object-&gt;vector', 'object-info', 'object-interface',\n            'object-method-arity-includes?', 'object=?', 'object?',\n            'open-output-nowhere', 'order-of-magnitude', 'other-execute-bit',\n            'other-read-bit', 'other-write-bit', 'parse-command-line',\n            'partition', 'path-element?', 'path-only', 'pathlist-closure',\n            'pi', 'pi.f', 'place-break', 'place-channel', 'place-channel-get',\n            'place-channel-put', 'place-channel-put/get', 'place-channel?',\n            'place-dead-evt', 'place-enabled?', 'place-kill',\n            'place-message-allowed?', 'place-sleep', 'place-wait', 'place?',\n            'port-&gt;bytes', 'port-&gt;list', 'port-&gt;string',\n            'predicate/c', 'preferences-lock-file-mode', 'pretty-display',\n            'pretty-format', 'pretty-print',\n            'pretty-print-.-symbol-without-bars',\n            'pretty-print-abbreviate-read-macros', 'pretty-print-columns',\n            'pretty-print-current-style-table', 'pretty-print-depth',\n            'pretty-print-exact-as-decimal', 'pretty-print-extend-style-table',\n            'pretty-print-handler', 'pretty-print-newline',\n            'pretty-print-post-print-hook', 'pretty-print-pre-print-hook',\n            'pretty-print-print-hook', 'pretty-print-print-line',\n            'pretty-print-remap-stylable', 'pretty-print-show-inexactness',\n            'pretty-print-size-hook', 'pretty-print-style-table?',\n            'pretty-printing', 'pretty-write', 'printable&lt;%&gt;',\n            'printable/c', 'process', 'process*', 'process*/ports',\n            'process/ports', 'processor-count', 'promise-forced?',\n            'promise-running?', 'promise?', 'prop:chaperone-contract',\n            'prop:contract', 'prop:contracted', 'prop:dict',\n            'prop:flat-contract', 'prop:opt-chaperone-contract',\n            'prop:opt-chaperone-contract-get-test',\n            'prop:opt-chaperone-contract?', 'prop:stream', 'proper-subset?',\n            'put-preferences', 'radians-&gt;degrees', 'raise-blame-error',\n            'raise-contract-error', 'range', 'reencode-input-port',\n            'reencode-output-port', 'relocate-input-port',\n            'relocate-output-port', 'rest', 'second', 'sequence-&gt;list',\n            'sequence-add-between', 'sequence-andmap', 'sequence-append',\n            'sequence-count', 'sequence-filter', 'sequence-fold',\n            'sequence-for-each', 'sequence-length', 'sequence-map',\n            'sequence-ormap', 'sequence-ref', 'sequence-tail', 'set',\n            'set-&gt;list', 'set-add', 'set-count', 'set-empty?', 'set-eq?',\n            'set-equal?', 'set-eqv?', 'set-first', 'set-for-each',\n            'set-intersect', 'set-map', 'set-member?', 'set-remove',\n            'set-rest', 'set-subtract', 'set-symmetric-difference',\n            'set-union', 'set/c', 'set=?', 'set?', 'seteq', 'seteqv',\n            'seventh', 'sgn', 'shuffle', 'simple-form-path', 'sinh', 'sixth',\n            'skip-projection-wrapper?', 'some-system-path-&gt;string',\n            'special-filter-input-port', 'split-at', 'split-at-right', 'sqr',\n            'stream-&gt;list', 'stream-add-between', 'stream-andmap',\n            'stream-append', 'stream-count', 'stream-empty?', 'stream-filter',\n            'stream-first', 'stream-fold', 'stream-for-each', 'stream-length',\n            'stream-map', 'stream-ormap', 'stream-ref', 'stream-rest',\n            'stream-tail', 'stream?', 'string-&gt;some-system-path',\n            'string-append*', 'string-no-nuls?', 'struct-type-property/c',\n            'struct:exn:fail:contract:blame', 'struct:exn:fail:object',\n            'subclass?', 'subclass?/c', 'subset?', 'symbol=?', 'system',\n            'system*', 'system*/exit-code', 'system/exit-code', 'take',\n            'take-right', 'tanh', 'tcp-abandon-port', 'tcp-accept',\n            'tcp-accept-evt', 'tcp-accept-ready?', 'tcp-accept/enable-break',\n            'tcp-addresses', 'tcp-close', 'tcp-connect',\n            'tcp-connect/enable-break', 'tcp-listen', 'tcp-listener?',\n            'tcp-port?', 'tentative-pretty-print-port-cancel',\n            'tentative-pretty-print-port-transfer', 'tenth',\n            'the-unsupplied-arg', 'third', 'touch', 'transplant-input-port',\n            'transplant-output-port', 'true', 'udp-addresses', 'udp-bind!',\n            'udp-bound?', 'udp-close', 'udp-connect!', 'udp-connected?',\n            'udp-open-socket', 'udp-receive!', 'udp-receive!*',\n            'udp-receive!-evt', 'udp-receive!/enable-break',\n            'udp-receive-ready-evt', 'udp-send', 'udp-send*', 'udp-send-evt',\n            'udp-send-ready-evt', 'udp-send-to', 'udp-send-to*',\n            'udp-send-to-evt', 'udp-send-to/enable-break',\n            'udp-send/enable-break', 'udp?', 'unit?', 'unsupplied-arg?',\n            'user-execute-bit', 'user-read-bit', 'user-write-bit',\n            'value-contract', 'vector-append', 'vector-argmax',\n            'vector-argmin', 'vector-copy', 'vector-count', 'vector-drop',\n            'vector-drop-right', 'vector-filter', 'vector-filter-not',\n            'vector-map', 'vector-map!', 'vector-member', 'vector-memq',\n            'vector-memv', 'vector-set*!', 'vector-split-at',\n            'vector-split-at-right', 'vector-take', 'vector-take-right',\n            'with-input-from-bytes', 'with-input-from-string',\n            'with-output-to-bytes', 'with-output-to-string', 'would-be-future',\n            'writable&lt;%&gt;', 'xor',\n            ),\n        4 => array(\n            '&gt;=/c', '&lt;=/c', '-&gt;*m', '-&gt;d', '-&gt;dm', '-&gt;i', '-&gt;m',\n            '=/c', 'absent', 'abstract', 'add-between', 'and/c', 'any',\n            'any/c', 'augment', 'augment*', 'augment-final', 'augment-final*',\n            'augride', 'augride*', 'between/c', 'blame-add-context',\n            'box-immutable/c', 'box/c', 'call-with-file-lock/timeout',\n            'case-&gt;', 'case-&gt;m', 'class', 'class*',\n            'class-field-accessor', 'class-field-mutator', 'class/c',\n            'class/derived', 'command-line', 'compound-unit',\n            'compound-unit/infer', 'cons/c', 'continuation-mark-key/c',\n            'contract', 'contract-out', 'contract-struct', 'contracted',\n            'current-contract-region', 'define-compound-unit',\n            'define-compound-unit/infer', 'define-contract-struct',\n            'define-local-member-name', 'define-match-expander',\n            'define-member-name', 'define-opt/c', 'define-serializable-class',\n            'define-serializable-class*', 'define-signature',\n            'define-signature-form', 'define-struct/contract', 'define-unit',\n            'define-unit-binding', 'define-unit-from-context',\n            'define-unit/contract', 'define-unit/new-import-export',\n            'define-unit/s', 'define-values-for-export',\n            'define-values/invoke-unit', 'define-values/invoke-unit/infer',\n            'define/augment', 'define/augment-final', 'define/augride',\n            'define/contract', 'define/final-prop', 'define/match',\n            'define/overment', 'define/override', 'define/override-final',\n            'define/private', 'define/public', 'define/public-final',\n            'define/pubment', 'define/subexpression-pos-prop', 'delay',\n            'delay/idle', 'delay/name', 'delay/strict', 'delay/sync',\n            'delay/thread', 'dict-&gt;list', 'dict-can-functional-set?',\n            'dict-can-remove-keys?', 'dict-count', 'dict-for-each',\n            'dict-has-key?', 'dict-iterate-first', 'dict-iterate-key',\n            'dict-iterate-next', 'dict-iterate-value', 'dict-keys', 'dict-map',\n            'dict-mutable?', 'dict-ref', 'dict-ref!', 'dict-remove',\n            'dict-remove!', 'dict-set', 'dict-set!', 'dict-set*', 'dict-set*!',\n            'dict-update', 'dict-update!', 'dict-values', 'dict?',\n            'display-lines', 'display-lines-to-file', 'display-to-file',\n            'dynamic-place', 'dynamic-place*', 'eof-evt', 'except',\n            'exn:fail:contract:blame', 'exn:fail:object', 'export', 'extends',\n            'field', 'field-bound?', 'file-&gt;bytes', 'file-&gt;bytes-lines',\n            'file-&gt;lines', 'file-&gt;list', 'file-&gt;string',\n            'file-&gt;value', 'find-relative-path', 'flat-murec-contract',\n            'flat-rec-contract', 'for*/set', 'for*/seteq', 'for*/seteqv',\n            'for/set', 'for/seteq', 'for/seteqv', 'gen:dict', 'gen:stream',\n            'generic', 'get-field', 'get-preference', 'hash/c', 'implies',\n            'import', 'in-set', 'in-stream', 'include',\n            'include-at/relative-to', 'include-at/relative-to/reader',\n            'include/reader', 'inherit', 'inherit-field', 'inherit/inner',\n            'inherit/super', 'init', 'init-depend', 'init-field', 'init-rest',\n            'inner', 'inspect', 'instantiate', 'integer-in', 'interface',\n            'interface*', 'invoke-unit', 'invoke-unit/infer', 'lazy', 'link',\n            'list/c', 'listof', 'local', 'make-handle-get-preference-locked',\n            'make-object', 'make-temporary-file', 'match', 'match*',\n            'match*/derived', 'match-define', 'match-define-values',\n            'match-lambda', 'match-lambda*', 'match-lambda**', 'match-let',\n            'match-let*', 'match-let*-values', 'match-let-values',\n            'match-letrec', 'match/derived', 'match/values', 'member-name-key',\n            'method-contract?', 'mixin', 'nand', 'new', 'non-empty-listof',\n            'none/c', 'nor', 'not/c', 'object-contract', 'object/c',\n            'one-of/c', 'only', 'open', 'opt/c', 'or/c', 'overment',\n            'overment*', 'override', 'override*', 'override-final',\n            'override-final*', 'parameter/c', 'parametric-&gt;/c',\n            'peek-bytes!-evt', 'peek-bytes-avail!-evt', 'peek-bytes-evt',\n            'peek-string!-evt', 'peek-string-evt', 'peeking-input-port',\n            'place', 'place*', 'port-&gt;bytes-lines', 'port-&gt;lines',\n            'prefix', 'private', 'private*', 'procedure-arity-includes/c',\n            'promise/c', 'prompt-tag/c', 'prop:dict/contract',\n            'provide-signature-elements', 'provide/contract', 'public',\n            'public*', 'public-final', 'public-final*', 'pubment', 'pubment*',\n            'read-bytes!-evt', 'read-bytes-avail!-evt', 'read-bytes-evt',\n            'read-bytes-line-evt', 'read-line-evt', 'read-string!-evt',\n            'read-string-evt', 'real-in', 'recursive-contract',\n            'regexp-match-evt', 'remove-duplicates', 'rename', 'rename-inner',\n            'rename-super', 'send', 'send*', 'send+', 'send-generic',\n            'send/apply', 'send/keyword-apply', 'set-field!', 'shared',\n            'stream', 'stream-cons', 'string-join', 'string-len/c',\n            'string-normalize-spaces', 'string-replace', 'string-split',\n            'string-trim', 'struct*', 'struct/c', 'struct/ctc', 'struct/dc',\n            'super', 'super-instantiate', 'super-make-object', 'super-new',\n            'symbols', 'syntax/c', 'tag', 'this', 'this%', 'thunk', 'thunk*',\n            'unconstrained-domain-&gt;', 'unit', 'unit-from-context', 'unit/c',\n            'unit/new-import-export', 'unit/s', 'vector-immutable/c',\n            'vector-immutableof', 'vector/c', 'vectorof', 'with-contract',\n            'with-method', 'write-to-file', '~.a', '~.s', '~.v', '~a', '~e',\n            '~r', '~s', '~v',\n            ),\n        ),\n    'SYMBOLS' => array(\n        0 => array(\n            '&gt;', '&gt;=', '&lt;', '&lt;=', '*', '+', '-', '-&gt;', '-&gt;*', '...', '/',\n            '=', '=&gt;', '==', '_', '#fl', '#fx', '#s', '#', '#f', '#F',\n            '#false', '#t', '#T', '#true', '#lang', '#reader', '.', '\\'', '#`',\n            '#,@', '#,', '#\\'', '`', '@', ',', '#%', '#$', '#&', '#~', '#rx',\n            '#px', '#<<', '#;', '#hash', '#',\n            ),\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        ),\n    'NUMBERS' => array(\n        1 => '(((#x#e)|(#e#x)|(#x#i)|(#i#x)|(#x))((((((((((((-)|(\\+)))?(((('.\n            '(([0-9])+)?(\\.)?(([0-9a-fA-F])+(#)*)))|(((([0-9a-fA-F])+(#)*)'.\n            '(\\.)?(#)*))|(((([0-9a-fA-F])+(#)*)\\\\/(([0-9a-fA-F])+(#)*))))('.\n            '([sl]((((-)|(\\+)))?([0-9])+)))?)))|((((-)|(\\+))(((inf\\.)|(nan'.\n            '\\.))[0f])))))?((-)|(\\+))(((((((([0-9])+)?(\\.)?(([0-9a-fA-F])+'.\n            '(#)*)))|(((([0-9a-fA-F])+(#)*)(\\.)?(#)*))|(((([0-9a-fA-F])+(#'.\n            ')*)\\\\/(([0-9a-fA-F])+(#)*))))(([sl]((((-)|(\\+)))?([0-9])+)))?'.\n            '))|((((inf\\.)|(nan\\.))[0f])))i))|((((((((-)|(\\+)))?(((((([0-9'.\n            '])+)?(\\.)?(([0-9a-fA-F])+(#)*)))|(((([0-9a-fA-F])+(#)*)(\\.)?('.\n            '#)*))|(((([0-9a-fA-F])+(#)*)\\\\/(([0-9a-fA-F])+(#)*))))(([sl]('.\n            '(((-)|(\\+)))?([0-9])+)))?)))|((((-)|(\\+))(((inf\\.)|(nan\\.))[0'.\n            'f]))))@((((((-)|(\\+)))?(((((([0-9])+)?(\\.)?(([0-9a-fA-F])+(#)'.\n            '*)))|(((([0-9a-fA-F])+(#)*)(\\.)?(#)*))|(((([0-9a-fA-F])+(#)*)'.\n            '\\\\/(([0-9a-fA-F])+(#)*))))(([sl]((((-)|(\\+)))?([0-9])+)))?)))'.\n            '|((((-)|(\\+))(((inf\\.)|(nan\\.))[0f]))))))))|((((((-)|(\\+)))?('.\n            '([0-9])+\\\\/([0-9])+))((-)|(\\+))(([0-9])+\\\\/([0-9])+)i))|((((('.\n            '-)|(\\+)))?(([0-9])+\\\\/([0-9])+)))|(((((((-)|(\\+)))?(((((([0-9'.\n            '])+)?(\\.)?(([0-9a-fA-F])+(#)*)))|(((([0-9a-fA-F])+(#)*)(\\.)?('.\n            '#)*))|(((([0-9a-fA-F])+(#)*)\\\\/(([0-9a-fA-F])+(#)*))))(([sl]('.\n            '(((-)|(\\+)))?([0-9])+)))?)))|((((-)|(\\+))(((inf\\.)|(nan\\.))[0'.\n            'f])))))|(((((-)|(\\+)))?([0-9])+))))',\n        2 => '(((#o#e)|(#e#o)|(#o#i)|(#i#o)|(#o))((((((((((((-)|(\\+)))?(((('.\n            '(([0-9])+)?(\\.)?(([0-7])+(#)*)))|(((([0-7])+(#)*)(\\.)?(#)*))|'.\n            '(((([0-7])+(#)*)\\\\/(([0-7])+(#)*))))(((([sl])|([def]))((((-)|'.\n            '(\\+)))?([0-9])+)))?)))|((((-)|(\\+))(((inf\\.)|(nan\\.))[0f]))))'.\n            ')?((-)|(\\+))(((((((([0-9])+)?(\\.)?(([0-7])+(#)*)))|(((([0-7])'.\n            '+(#)*)(\\.)?(#)*))|(((([0-7])+(#)*)\\\\/(([0-7])+(#)*))))(((([sl'.\n            '])|([def]))((((-)|(\\+)))?([0-9])+)))?))|((((inf\\.)|(nan\\.))[0'.\n            'f])))i))|((((((((-)|(\\+)))?(((((([0-9])+)?(\\.)?(([0-7])+(#)*)'.\n            '))|(((([0-7])+(#)*)(\\.)?(#)*))|(((([0-7])+(#)*)\\\\/(([0-7])+(#'.\n            ')*))))(((([sl])|([def]))((((-)|(\\+)))?([0-9])+)))?)))|((((-)|'.\n            '(\\+))(((inf\\.)|(nan\\.))[0f]))))@((((((-)|(\\+)))?(((((([0-9])+'.\n            ')?(\\.)?(([0-7])+(#)*)))|(((([0-7])+(#)*)(\\.)?(#)*))|(((([0-7]'.\n            ')+(#)*)\\\\/(([0-7])+(#)*))))(((([sl])|([def]))((((-)|(\\+)))?(['.\n            '0-9])+)))?)))|((((-)|(\\+))(((inf\\.)|(nan\\.))[0f]))))))))|(((('.\n            '((-)|(\\+)))?(([0-9])+\\\\/([0-9])+))((-)|(\\+))(([0-9])+\\\\/([0-9'.\n            '])+)i))|(((((-)|(\\+)))?(([0-9])+\\\\/([0-9])+)))|(((((((-)|(\\+)'.\n            '))?(((((([0-9])+)?(\\.)?(([0-7])+(#)*)))|(((([0-7])+(#)*)(\\.)?'.\n            '(#)*))|(((([0-7])+(#)*)\\\\/(([0-7])+(#)*))))(((([sl])|([def]))'.\n            '((((-)|(\\+)))?([0-9])+)))?)))|((((-)|(\\+))(((inf\\.)|(nan\\.))['.\n            '0f])))))|(((((-)|(\\+)))?([0-9])+))))',\n        3 => '(((#b#e)|(#e#b)|(#b#i)|(#i#b)|(#b))((((((((((((-)|(\\+)))?(((('.\n            '(([0-9])+)?(\\.)?(([0-1])+(#)*)))|(((([0-1])+(#)*)(\\.)?(#)*))|'.\n            '(((([0-1])+(#)*)\\\\/(([0-1])+(#)*))))(((([sl])|([def]))((((-)|'.\n            '(\\+)))?([0-9])+)))?)))|((((-)|(\\+))(((inf\\.)|(nan\\.))[0f]))))'.\n            ')?((-)|(\\+))(((((((([0-9])+)?(\\.)?(([0-1])+(#)*)))|(((([0-1])'.\n            '+(#)*)(\\.)?(#)*))|(((([0-1])+(#)*)\\\\/(([0-1])+(#)*))))(((([sl'.\n            '])|([def]))((((-)|(\\+)))?([0-9])+)))?))|((((inf\\.)|(nan\\.))[0'.\n            'f])))i))|((((((((-)|(\\+)))?(((((([0-9])+)?(\\.)?(([0-1])+(#)*)'.\n            '))|(((([0-1])+(#)*)(\\.)?(#)*))|(((([0-1])+(#)*)\\\\/(([0-1])+(#'.\n            ')*))))(((([sl])|([def]))((((-)|(\\+)))?([0-9])+)))?)))|((((-)|'.\n            '(\\+))(((inf\\.)|(nan\\.))[0f]))))@((((((-)|(\\+)))?(((((([0-9])+'.\n            ')?(\\.)?(([0-1])+(#)*)))|(((([0-1])+(#)*)(\\.)?(#)*))|(((([0-1]'.\n            ')+(#)*)\\\\/(([0-1])+(#)*))))(((([sl])|([def]))((((-)|(\\+)))?(['.\n            '0-9])+)))?)))|((((-)|(\\+))(((inf\\.)|(nan\\.))[0f]))))))))|(((('.\n            '((-)|(\\+)))?(([0-9])+\\\\/([0-9])+))((-)|(\\+))(([0-9])+\\\\/([0-9'.\n            '])+)i))|(((((-)|(\\+)))?(([0-9])+\\\\/([0-9])+)))|(((((((-)|(\\+)'.\n            '))?(((((([0-9])+)?(\\.)?(([0-1])+(#)*)))|(((([0-1])+(#)*)(\\.)?'.\n            '(#)*))|(((([0-1])+(#)*)\\\\/(([0-1])+(#)*))))(((([sl])|([def]))'.\n            '((((-)|(\\+)))?([0-9])+)))?)))|((((-)|(\\+))(((inf\\.)|(nan\\.))['.\n            '0f])))))|(((((-)|(\\+)))?([0-9])+))))',\n        4 => '((((#d#e)|(#e#d)|(#d#i)|(#i#d)|(#e)|(#i)|(#d)))?((((((((((((-'.\n            ')|(\\+)))?(((((([0-9])+)?(\\.)?(([0-9])+(#)*)))|(((([0-9])+(#)*'.\n            ')(\\.)?(#)*))|(((([0-9])+(#)*)\\\\/(([0-9])+(#)*))))(((([sl])|(['.\n            'def]))((((-)|(\\+)))?([0-9])+)))?)))|((((-)|(\\+))(((inf\\.)|(na'.\n            'n\\.))[0f])))))?((-)|(\\+))(((((((([0-9])+)?(\\.)?(([0-9])+(#)*)'.\n            '))|(((([0-9])+(#)*)(\\.)?(#)*))|(((([0-9])+(#)*)\\\\/(([0-9])+(#'.\n            ')*))))(((([sl])|([def]))((((-)|(\\+)))?([0-9])+)))?))|((((inf'.\n            '\\.)|(nan\\.))[0f])))i))|((((((((-)|(\\+)))?(((((([0-9])+)?(\\.)?'.\n            '(([0-9])+(#)*)))|(((([0-9])+(#)*)(\\.)?(#)*))|(((([0-9])+(#)*)'.\n            '\\\\/(([0-9])+(#)*))))(((([sl])|([def]))((((-)|(\\+)))?([0-9])+)'.\n            '))?)))|((((-)|(\\+))(((inf\\.)|(nan\\.))[0f]))))@((((((-)|(\\+)))'.\n            '?(((((([0-9])+)?(\\.)?(([0-9])+(#)*)))|(((([0-9])+(#)*)(\\.)?(#'.\n            ')*))|(((([0-9])+(#)*)\\\\/(([0-9])+(#)*))))(((([sl])|([def]))(('.\n            '((-)|(\\+)))?([0-9])+)))?)))|((((-)|(\\+))(((inf\\.)|(nan\\.))[0f'.\n            ']))))))))|((((((-)|(\\+)))?(([0-9])+\\\\/([0-9])+))((-)|(\\+))((['.\n            '0-9])+\\\\/([0-9])+)i))|(((((-)|(\\+)))?(([0-9])+\\\\/([0-9])+)))|'.\n            '(((((((-)|(\\+)))?(((((([0-9])+)?(\\.)?(([0-9])+(#)*)))|(((([0-'.\n            '9])+(#)*)(\\.)?(#)*))|(((([0-9])+(#)*)\\\\/(([0-9])+(#)*))))(((('.\n            '[sl])|([def]))((((-)|(\\+)))?([0-9])+)))?)))|((((-)|(\\+))(((in'.\n            'f\\.)|(nan\\.))[0f])))))|(((((-)|(\\+)))?([0-9])+))))',\n            ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: blue;',\n            2 => 'color: rgb(34, 34, 139);',\n            3 => 'color: blue;',\n            4 => 'color: rgb(34, 34, 139);',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: rgb(194, 116, 31);',\n            'MULTI' => 'color: rgb(194, 116, 31);',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => '',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: rgb(132, 60,36);',\n            ),\n        'STRINGS' => array(\n            0 => 'color: rgb(34, 139, 34);',\n            ),\n        'NUMBERS' => array(\n            0 => 'color: rgb(34, 139, 34);',\n            1 => 'color: rgb(34, 139, 34);',\n            2 => 'color: rgb(34, 139, 34);',\n            3 => 'color: rgb(34, 139, 34);',\n            4 => 'color: rgb(34, 139, 34);',\n            ),\n        'METHODS' => array(\n            0 => 'color: #202020;',\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: rgb(132, 60,36);',\n            ),\n        'REGEXPS' => array(\n            1 => 'color: rgb(34, 139, 34);',\n            2 => 'color: rgb(132, 60,36);',\n            3 => 'color: rgb(34, 139, 34);',\n            ),\n        'SCRIPT' => array(\n            ),\n        ),\n    'URLS' => array(\n        1 => 'http://docs.racket-lang.org/reference/',\n        2 => 'http://docs.racket-lang.org/reference/',\n        3 => 'http://docs.racket-lang.org/reference/',\n        4 => 'http://docs.racket-lang.org/reference/',\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        1 => '#\\\\\\\\(nul|null|backspace|tab|newline|linefeed|vtab|page|retur'.\n            'n|space|rubout|([0-7]{1,3})|(u[[:xdigit:]]{1,4})|(U[[:xdigit:'.\n            ']]{1,6})|[a-z])',\n        2 => '#:[^[:space:]()[\\\\]{}\",\\']+',\n        3 => '\\'((\\\\\\\\ )|([^[:space:]()[\\\\]{}\",\\']))+',\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => '[[:space:]()[\\\\]{}\",\\']',\n            ),\n        'ENABLE_FLAGS' => array(\n            'SYMBOLS' => GESHI_MAYBE,\n            'BRACKETS' => GESHI_MAYBE,\n            'REGEXPS' => GESHI_MAYBE,\n            'ESCAPE_CHAR' => GESHI_MAYBE,\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/rails.php",
    "content": "<?php\n/*************************************************************************************\n * rails.php\n * ---------\n * Author: Moises Deniz\n * Copyright: (c) 2005 Moises Deniz\n * Release Version: 1.0.9.1\n * Date Started: 2007/03/21\n *\n * Ruby (with Ruby on Rails Framework) language file for GeSHi.\n *\n *************************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Rails',\n    'COMMENT_SINGLE' => array(1 => \"#\"),\n    'COMMENT_MULTI' => array(\"=begin\" => \"=end\"),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', '`','\\''),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'alias', 'and', 'begin', 'break', 'case', 'class',\n            'def', 'defined', 'do', 'else', 'elsif', 'end',\n            'ensure', 'for', 'if', 'in', 'module', 'while',\n            'next', 'not', 'or', 'redo', 'rescue', 'yield',\n            'retry', 'super', 'then', 'undef', 'unless',\n            'until', 'when', 'BEGIN', 'END', 'include'\n            ),\n        2 => array(\n            '__FILE__', '__LINE__', 'false', 'nil', 'self', 'true',\n            'return'\n            ),\n        3 => array(\n            'Array', 'Float', 'Integer', 'String', 'at_exit',\n            'autoload', 'binding', 'caller', 'catch', 'chop', 'chop!',\n            'chomp', 'chomp!', 'eval', 'exec', 'exit', 'exit!', 'fail',\n            'fork', 'format', 'gets', 'global_variables', 'gsub', 'gsub!',\n            'iterator?', 'lambda', 'load', 'local_variables', 'loop',\n            'open', 'p', 'print', 'printf', 'proc', 'putc', 'puts',\n            'raise', 'rand', 'readline', 'readlines', 'require', 'select',\n            'sleep', 'split', 'sprintf', 'srand', 'sub', 'sub!', 'syscall',\n            'system', 'trace_var', 'trap', 'untrace_var'\n            ),\n        4 => array(\n            'Abbrev', 'ArgumentError', 'Base64', 'Benchmark',\n            'Benchmark::Tms', 'Bignum', 'Binding', 'CGI', 'CGI::Cookie',\n            'CGI::HtmlExtension', 'CGI::QueryExtension',\n            'CGI::Session', 'CGI::Session::FileStore',\n            'CGI::Session::MemoryStore', 'Class', 'Comparable', 'Complex',\n            'ConditionVariable', 'Continuation', 'Data',\n            'Date', 'DateTime', 'Delegator', 'Dir', 'EOFError', 'ERB',\n            'ERB::Util', 'Enumerable', 'Enumerable::Enumerator', 'Errno',\n            'Exception', 'FalseClass', 'File',\n            'File::Constants', 'File::Stat', 'FileTest', 'FileUtils',\n            'FileUtils::DryRun', 'FileUtils::NoWrite',\n            'FileUtils::StreamUtils_', 'FileUtils::Verbose', 'Find',\n            'Fixnum', 'FloatDomainError', 'Forwardable', 'GC', 'Generator',\n            'Hash', 'IO', 'IOError', 'Iconv', 'Iconv::BrokenLibrary',\n            'Iconv::Failure', 'Iconv::IllegalSequence',\n            'Iconv::InvalidCharacter', 'Iconv::InvalidEncoding',\n            'Iconv::OutOfRange', 'IndexError', 'Interrupt', 'Kernel',\n            'LoadError', 'LocalJumpError', 'Logger', 'Logger::Application',\n            'Logger::Error', 'Logger::Formatter', 'Logger::LogDevice',\n            'Logger::LogDevice::LogDeviceMutex', 'Logger::Severity',\n            'Logger::ShiftingError', 'Marshal', 'MatchData',\n            'Math', 'Matrix', 'Method', 'Module', 'Mutex', 'NameError',\n            'NameError::message', 'NilClass', 'NoMemoryError',\n            'NoMethodError', 'NotImplementedError', 'Numeric', 'Object',\n            'ObjectSpace', 'Observable', 'PStore', 'PStore::Error',\n            'Pathname', 'Precision', 'Proc', 'Process', 'Process::GID',\n            'Process::Status', 'Process::Sys', 'Process::UID', 'Queue',\n            'Range', 'RangeError', 'Rational', 'Regexp', 'RegexpError',\n            'RuntimeError', 'ScriptError', 'SecurityError', 'Set',\n            'Shellwords', 'Signal', 'SignalException', 'SimpleDelegator',\n            'SingleForwardable', 'Singleton', 'SingletonClassMethods',\n            'SizedQueue', 'SortedSet', 'StandardError', 'StringIO',\n            'StringScanner', 'StringScanner::Error', 'Struct', 'Symbol',\n            'SyncEnumerator', 'SyntaxError', 'SystemCallError',\n            'SystemExit', 'SystemStackError', 'Tempfile',\n            'Test::Unit::TestCase', 'Test::Unit', 'Test', 'Thread',\n            'ThreadError', 'ThreadGroup',\n            'ThreadsWait', 'Time', 'TrueClass', 'TypeError', 'URI',\n            'URI::BadURIError', 'URI::Error', 'URI::Escape', 'URI::FTP',\n            'URI::Generic', 'URI::HTTP', 'URI::HTTPS',\n            'URI::InvalidComponentError', 'URI::InvalidURIError',\n            'URI::LDAP', 'URI::MailTo', 'URI::REGEXP',\n            'URI::REGEXP::PATTERN', 'UnboundMethod', 'Vector', 'YAML',\n            'ZeroDivisionError', 'Zlib',\n            'Zlib::BufError', 'Zlib::DataError', 'Zlib::Deflate',\n            'Zlib::Error', 'Zlib::GzipFile', 'Zlib::GzipFile::CRCError',\n            'Zlib::GzipFile::Error', 'Zlib::GzipFile::LengthError',\n            'Zlib::GzipFile::NoFooter', 'Zlib::GzipReader',\n            'Zlib::GzipWriter', 'Zlib::Inflate', 'Zlib::MemError',\n            'Zlib::NeedDict', 'Zlib::StreamEnd', 'Zlib::StreamError',\n            'Zlib::VersionError',\n            'Zlib::ZStream',\n            'ActionController::AbstractRequest',\n            'ActionController::Assertions::DomAssertions',\n            'ActionController::Assertions::ModelAssertions',\n            'ActionController::Assertions::ResponseAssertions',\n            'ActionController::Assertions::RoutingAssertions',\n            'ActionController::Assertions::SelectorAssertions',\n            'ActionController::Assertions::TagAssertions',\n            'ActionController::Base',\n            'ActionController::Benchmarking::ClassMethods',\n            'ActionController::Caching',\n            'ActionController::Caching::Actions',\n            'ActionController::Caching::Actions::ActionCachePath',\n            'ActionController::Caching::Fragments',\n            'ActionController::Caching::Pages',\n            'ActionController::Caching::Pages::ClassMethods',\n            'ActionController::Caching::Sweeping',\n            'ActionController::Components',\n            'ActionController::Components::ClassMethods',\n            'ActionController::Components::InstanceMethods',\n            'ActionController::Cookies',\n            'ActionController::Filters::ClassMethods',\n            'ActionController::Flash',\n            'ActionController::Flash::FlashHash',\n            'ActionController::Helpers::ClassMethods',\n            'ActionController::Integration::Session',\n            'ActionController::IntegrationTest',\n            'ActionController::Layout::ClassMethods',\n            'ActionController::Macros',\n            'ActionController::Macros::AutoComplete::ClassMethods',\n            'ActionController::Macros::InPlaceEditing::ClassMethods',\n            'ActionController::MimeResponds::InstanceMethods',\n            'ActionController::Pagination',\n            'ActionController::Pagination::ClassMethods',\n            'ActionController::Pagination::Paginator',\n            'ActionController::Pagination::Paginator::Page',\n            'ActionController::Pagination::Paginator::Window',\n            'ActionController::Rescue', 'ActionController::Resources',\n            'ActionController::Routing',\n            'ActionController::Scaffolding::ClassMethods',\n            'ActionController::SessionManagement::ClassMethods',\n            'ActionController::Streaming', 'ActionController::TestProcess',\n            'ActionController::TestUploadedFile',\n            'ActionController::UrlWriter',\n            'ActionController::Verification::ClassMethods',\n            'ActionMailer::Base', 'ActionView::Base',\n            'ActionView::Helpers::ActiveRecordHelper',\n            'ActionView::Helpers::AssetTagHelper',\n            'ActionView::Helpers::BenchmarkHelper',\n            'ActionView::Helpers::CacheHelper',\n            'ActionView::Helpers::CaptureHelper',\n            'ActionView::Helpers::DateHelper',\n            'ActionView::Helpers::DebugHelper',\n            'ActionView::Helpers::FormHelper',\n            'ActionView::Helpers::FormOptionsHelper',\n            'ActionView::Helpers::FormTagHelper',\n            'ActionView::Helpers::JavaScriptHelper',\n            'ActionView::Helpers::JavaScriptMacrosHelper',\n            'ActionView::Helpers::NumberHelper',\n            'ActionView::Helpers::PaginationHelper',\n            'ActionView::Helpers::PrototypeHelper',\n            'ActionView::Helpers::PrototypeHelper::JavaScriptGenerator::GeneratorMethods',\n            'ActionView::Helpers::ScriptaculousHelper',\n            'ActionView::Helpers::TagHelper',\n            'ActionView::Helpers::TextHelper',\n            'ActionView::Helpers::UrlHelper', 'ActionView::Partials',\n            'ActionWebService::API::Method', 'ActionWebService::Base',\n            'ActionWebService::Client::Soap',\n            'ActionWebService::Client::XmlRpc',\n            'ActionWebService::Container::ActionController::ClassMethods',\n            'ActionWebService::Container::Delegated::ClassMethods',\n            'ActionWebService::Container::Direct::ClassMethods',\n            'ActionWebService::Invocation::ClassMethods',\n            'ActionWebService::Scaffolding::ClassMethods',\n            'ActionWebService::SignatureTypes', 'ActionWebService::Struct',\n            'ActiveRecord::Acts::List::ClassMethods',\n            'ActiveRecord::Acts::List::InstanceMethods',\n            'ActiveRecord::Acts::NestedSet::ClassMethods',\n            'ActiveRecord::Acts::NestedSet::InstanceMethods',\n            'ActiveRecord::Acts::Tree::ClassMethods',\n            'ActiveRecord::Acts::Tree::InstanceMethods',\n            'ActiveRecord::Aggregations::ClassMethods',\n            'ActiveRecord::Associations::ClassMethods',\n            'ActiveRecord::AttributeMethods::ClassMethods',\n            'ActiveRecord::Base',\n            'ActiveRecord::Calculations::ClassMethods',\n            'ActiveRecord::Callbacks',\n            'ActiveRecord::ConnectionAdapters::AbstractAdapter',\n            'ActiveRecord::ConnectionAdapters::Column',\n            'ActiveRecord::ConnectionAdapters::DB2Adapter',\n            'ActiveRecord::ConnectionAdapters::DatabaseStatements',\n            'ActiveRecord::ConnectionAdapters::FirebirdAdapter',\n            'ActiveRecord::ConnectionAdapters::FrontBaseAdapter',\n            'ActiveRecord::ConnectionAdapters::MysqlAdapter',\n            'ActiveRecord::ConnectionAdapters::OpenBaseAdapter',\n            'ActiveRecord::ConnectionAdapters::OracleAdapter',\n            'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter',\n            'ActiveRecord::ConnectionAdapters::Quoting',\n            'ActiveRecord::ConnectionAdapters::SQLServerAdapter',\n            'ActiveRecord::ConnectionAdapters::SQLiteAdapter',\n            'ActiveRecord::ConnectionAdapters::SchemaStatements',\n            'ActiveRecord::ConnectionAdapters::SybaseAdapter::ColumnWithIdentity',\n            'ActiveRecord::ConnectionAdapters::SybaseAdapterContext',\n            'ActiveRecord::ConnectionAdapters::TableDefinition',\n            'ActiveRecord::Errors', 'ActiveRecord::Locking',\n            'ActiveRecord::Locking::Optimistic',\n            'ActiveRecord::Locking::Optimistic::ClassMethods',\n            'ActiveRecord::Locking::Pessimistic',\n            'ActiveRecord::Migration', 'ActiveRecord::Observer',\n            'ActiveRecord::Observing::ClassMethods',\n            'ActiveRecord::Reflection::ClassMethods',\n            'ActiveRecord::Reflection::MacroReflection',\n            'ActiveRecord::Schema', 'ActiveRecord::Timestamp',\n            'ActiveRecord::Transactions::ClassMethods',\n            'ActiveRecord::Validations',\n            'ActiveRecord::Validations::ClassMethods',\n            'ActiveRecord::XmlSerialization',\n            'ActiveSupport::CachingTools::HashCaching',\n            'ActiveSupport::CoreExtensions::Array::Conversions',\n            'ActiveSupport::CoreExtensions::Array::Grouping',\n            'ActiveSupport::CoreExtensions::Date::Conversions',\n            'ActiveSupport::CoreExtensions::Hash::Conversions',\n            'ActiveSupport::CoreExtensions::Hash::Conversions::ClassMethods',\n            'ActiveSupport::CoreExtensions::Hash::Diff',\n            'ActiveSupport::CoreExtensions::Hash::Keys',\n            'ActiveSupport::CoreExtensions::Hash::ReverseMerge',\n            'ActiveSupport::CoreExtensions::Integer::EvenOdd',\n            'ActiveSupport::CoreExtensions::Integer::Inflections',\n            'ActiveSupport::CoreExtensions::Numeric::Bytes',\n            'ActiveSupport::CoreExtensions::Numeric::Time',\n            'ActiveSupport::CoreExtensions::Pathname::CleanWithin',\n            'ActiveSupport::CoreExtensions::Range::Conversions',\n            'ActiveSupport::CoreExtensions::String::Access',\n            'ActiveSupport::CoreExtensions::String::Conversions',\n            'ActiveSupport::CoreExtensions::String::Inflections',\n            'ActiveSupport::CoreExtensions::String::Iterators',\n            'ActiveSupport::CoreExtensions::String::StartsEndsWith',\n            'ActiveSupport::CoreExtensions::String::Unicode',\n            'ActiveSupport::CoreExtensions::Time::Calculations',\n            'ActiveSupport::CoreExtensions::Time::Calculations::ClassMethods',\n            'ActiveSupport::CoreExtensions::Time::Conversions',\n            'ActiveSupport::Multibyte::Chars',\n            'ActiveSupport::Multibyte::Handlers::UTF8Handler',\n            'Breakpoint', 'Builder::BlankSlate', 'Builder::XmlMarkup',\n            'Fixtures',\n            'HTML::Selector', 'HashWithIndifferentAccess', 'Inflector',\n            'Inflector::Inflections', 'Mime', 'Mime::Type',\n            'OCI8AutoRecover', 'TimeZone', 'XmlSimple'\n            ),\n        5 => array(\n            'image_tag', 'link_to', 'link_to_remote', 'javascript_include_tag',\n            'assert_equal', 'assert_not_equal', 'before_filter',\n            'after_filter', 'render', 'redirect_to', 'hide_action',\n            'render_to_string', 'url_for', 'controller_name',\n            'controller_class_name', 'controller_path', 'session',\n            'render_component', 'render_component_as_string', 'cookie',\n            'layout', 'flash', 'auto_complete_for', 'in_place_editor_for',\n            'respond_to', 'paginate', 'current_page', 'each', 'first',\n            'first_page', 'last_page', 'last', 'length', 'new', 'page_count',\n            'previous', 'scaffold', 'send_data',\n            'send_file', 'deliver', 'receive', 'error_messages_for',\n            'error_message_on', 'form', 'input', 'stylesheet_link_tag',\n            'stylesheet_path', 'content_for', 'select_date', 'ago',\n            'month', 'day', 'check_box', 'fields_for', 'file_field',\n            'form_for', 'hidden_field', 'text_area', 'password_field',\n            'collection_select', 'options_for_select',\n            'options_from_collection_for_select', 'file_field_tag',\n            'form_for_tag', 'hidden_field_tag', 'text_area_tag',\n            'password_field_tag', 'link_to_function', 'javascript_tag',\n            'human_size', 'number_to_currency', 'pagination_links',\n            'form_remote_tag', 'form_remote_for',\n            'submit_to_remote', 'remote_function', 'observe_form',\n            'observe_field', 'remote_form_for', 'options_for_ajax', 'alert',\n            'call', 'assign', 'show', 'hide', 'insert_html', 'sortable',\n            'toggle', 'visual_effect', 'replace', 'replace_html', 'remove',\n            'save', 'save!', 'draggable', 'drop_receiving', 'literal',\n            'draggable_element', 'drop_receiving_element', 'sortable_element',\n            'content_tag', 'tag', 'link_to_image', 'link_to_if',\n            'link_to_unless', 'mail_to', 'link_image_to', 'button_to',\n            'current_page?', 'act_as_list', 'act_as_nested', 'act_as_tree',\n            'has_many', 'has_one', 'belongs_to', 'has_many_and_belogns_to',\n            'delete', 'destroy', 'destroy_all', 'clone', 'deep_clone', 'copy',\n            'update', 'table_name', 'primary_key', 'sum', 'maximun', 'minimum',\n            'count', 'size', 'after_save', 'after_create', 'before_save',\n            'before_create', 'add_to_base', 'errors', 'add', 'validate',\n            'validates_presence_of', 'validates_numericality_of',\n            'validates_uniqueness_of', 'validates_length_of',\n            'validates_format_of', 'validates_size_of', 'to_a', 'to_s',\n            'to_xml', 'to_i'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '%', '&', '*', '|', '/', '<', '>',\n        '+', '-', '=>', '<<'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color:#9966CC; font-weight:bold;',\n            2 => 'color:#0000FF; font-weight:bold;',\n            3 => 'color:#CC0066; font-weight:bold;',\n            4 => 'color:#CC00FF; font-weight:bold;',\n            5 => 'color:#5A0A0A; font-weight:bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color:#008000; font-style:italic;',\n                    'MULTI' => 'color:#000080; font-style:italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color:#000099;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color:#006600; font-weight:bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color:#996600;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color:#006666;'\n            ),\n        'METHODS' => array(\n            1 => 'color:#9900CC;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color:#006600; font-weight:bold;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color:#ff6633; font-weight:bold;',\n            1 => 'color:#0066ff; font-weight:bold;',\n            2 => 'color:#6666ff; font-weight:bold;',\n            3 => 'color:#ff3333; font-weight:bold;'\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        0 => array(\n            GESHI_SEARCH => \"([[:space:]])(\\\\$[a-zA-Z_][a-zA-Z0-9_]*)\",\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n        1 => array(\n            GESHI_SEARCH => \"([[:space:]])(@[a-zA-Z_][a-zA-Z0-9_]*)\",\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n        2 => \"([A-Z][a-zA-Z0-9_]*::)+[A-Z][a-zA-Z0-9_]*\", //Static OOP References\n        3 => array(\n            GESHI_SEARCH => \"([[:space:]]|\\[|\\()(:[a-zA-Z_][a-zA-Z0-9_]*)\",\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        0 => array(\n            '<%' => '%>'\n            )\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true\n        )\n);\n"
  },
  {
    "path": "includes/geshi/rbs.php",
    "content": "<?php\n/*************************************************************************************\n * rbs.php\n * ------\n * Author: Deng Wen Gang (deng@priity.com)\n * Copyright: (c) 2013 Deng Wen Gang\n * Release Version: 1.0.9.1\n * Date Started: 2013/01/15\n *\n * RBScript language file for GeSHi.\n *\n * RBScript official website: http://docs.realsoftware.com/index.php/Rbscript\n *\n * CHANGES\n * -------\n * 2013/01/15 (1.0.0)\n *  -  First Release\n *\n * TODO\n * ----\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'RBScript',\n    'COMMENT_SINGLE' => array( 1 => '//', 2 => \"'\" ),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        3 => '/REM\\s.*$/im',\n        4 => '/&b[01]+/',\n        5 => '/&o[0-7]+/',\n        6 => '/&h[a-f0-9]+/i',\n        7 => '/&c[a-f0-9]+/i',\n        8 => '/&u[a-f0-9]+/i',\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'Int8', 'Int16', 'Int32', 'Int64', 'Uint8', 'Uint16', 'Uint32', 'Uint64', 'Byte', 'Integer',\n            'Single', 'Double', 'Boolean', 'String', 'Color', 'Object', 'Variant'\n            ),\n        2 => array(\n            'Private', 'Public', 'Protected',\n            'Sub', 'Function', 'Delegate', 'Exception',\n            ),\n        3 => array(\n            'IsA',\n            'And', 'Or', 'Not', 'Xor',\n            'If', 'Then', 'Else', 'ElseIf',\n            'Select', 'Case',\n            'For', 'Each', 'In', 'To', 'Step', 'Next',\n            'Do', 'Loop', 'Until',\n            'While', 'Wend',\n            'Continue', 'Exit', 'Goto', 'End',\n            ),\n        4 => array(\n            'Const', 'Static',\n            'Dim', 'As', 'Redim',\n            'Me', 'Self', 'Super', 'Extends', 'Implements',\n            'ByRef', 'ByVal', 'Assigns', 'ParamArray',\n            'Mod',\n            'Raise',\n            ),\n        5 => array(\n            'False', 'True', 'Nil'\n            ),\n        6 => array(\n            'Abs',\n            'Acos',\n            'Asc',\n            'AscB',\n            'Asin',\n            'Atan',\n            'Atan2',\n            'CDbl',\n            'Ceil',\n            'Chr',\n            'ChrB',\n            'CMY',\n            'Cos',\n            'CountFields',\n            'CStr',\n            'Exp',\n            'Floor',\n            'Format',\n            'Hex',\n            'HSV',\n            'InStr',\n            'InStrB',\n            'Left',\n            'LeftB',\n            'Len',\n            'LenB',\n            'Log',\n            'Lowercase',\n            'LTrim',\n            'Max',\n            'Microseconds',\n            'Mid',\n            'MidB',\n            'Min',\n            'NthField',\n            'Oct',\n            'Pow',\n            'Replace',\n            'ReplaceB',\n            'ReplaceAll',\n            'ReplaceAllB',\n            'RGB',\n            'Right',\n            'RightB',\n            'Rnd',\n            'Round',\n            'RTrim',\n            'Sin',\n            'Sqrt',\n            'Str',\n            'StrComp',\n            'Tan',\n            'Ticks',\n            'Titlecase',\n            'Trim',\n            'UBound',\n            'Uppercase',\n            'Val',\n            ),\n        ),\n    'SYMBOLS' => array(\n            '+', '-', '*', '/', '\\\\', '^', '<', '>', '=', '<>', '&'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #F660AB; font-weight: bold;',\n            2 => 'color: #E56717; font-weight: bold;',\n            3 => 'color: #8D38C9; font-weight: bold;',\n            4 => 'color: #151B8D; font-weight: bold;',\n            5 => 'color: #00C2FF; font-weight: bold;',\n            6 => 'color: #3EA99F; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000;',\n            2 => 'color: #008000;',\n            3 => 'color: #008000;',\n\n            4 => 'color: #800000;',\n            5 => 'color: #800000;',\n            6 => 'color: #800000;',\n            7 => 'color: #800000;',\n            8 => 'color: #800000;',\n            ),\n        'BRACKETS' => array(\n            ),\n        'STRINGS' => array(\n            0 => 'color: #800000;'\n            ),\n        'NUMBERS' => array(\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #800000; font-weight: bold;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'BRACKETS' => GESHI_NEVER,\n            'SYMBOLS' => GESHI_NEVER,\n            'NUMBERS' => GESHI_NEVER\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/rebol.php",
    "content": "<?php\n/*************************************************************************************\n * rebol.php\n * --------\n * Author: Lecanu Guillaume (Guillaume@LyA.fr)\n * Copyright: (c) 2004-2005 Lecanu Guillaume (Guillaume@LyA.fr)\n * Release Version: 1.0.9.1\n * Date Started: 2004/12/22\n *\n * Rebol language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009/01/26 (1.0.8.3)\n *  -  Adapted language file to comply to GeSHi language file guidelines\n * 2004/11/25 (1.0.3)\n *  -  Added support for multiple object splitters\n *  -  Fixed &new problem\n * 2004/10/27 (1.0.2)\n *  -  Added URL support\n *  -  Added extra constants\n * 2004/08/05 (1.0.1)\n *  -  Added support for symbols\n * 2004/07/14 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/07/14)\n * -------------------------\n * * Make sure the last few function I may have missed\n *   (like eval()) are included for highlighting\n * * Split to several files - php4, php5 etc\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'REBOL',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array('rebol [' => ']', 'comment [' => ']'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'binary!','block!','char!','date!','decimal!','email!','file!',\n            'hash!','integer!','issue!','list!','logic!','money!','none!',\n            'object!','paren!','pair!','path!','string!','tag!','time!',\n            'tuple!','url!',\n            ),\n        2 => array(\n            'all','any','attempt','break','catch','compose','disarm','dispatch',\n            'do','do-events','does','either','else','exit','for','forall',\n            'foreach','forever','forskip','func','function','halt','has','if',\n            'launch','loop','next','quit','reduce','remove-each','repeat',\n            'return','secure','switch','throw','try','until','wait','while',\n            ),\n        3 => array(\n            'about','abs','absolute','add','alert','alias','alter','and',\n            'any-block?','any-function?','any-string?','any-type?','any-word?',\n            'append','arccosine','arcsine','arctangent','array','as-pair',\n            'ask','at','back','binary?','bind','bitset?','block?','brightness?',\n            'browse','build-tag','caret-to-offset','center-face','change',\n            'change-dir','char?','charset','checksum','choose','clean-path',\n            'clear','clear-fields','close','comment','complement','component?',\n            'compress','confirm','connected?','construct','context','copy',\n            'cosine','datatype?','date?','debase','decimal?','decode-cgi',\n            'decompress','dehex','delete','detab','difference','dir?','dirize',\n            'divide','dump-face','dump-obj','echo','email?','empty?','enbase',\n            'entab','equal?','error?','even?','event?','exclude','exists?',\n            'exp','extract','fifth','file?','find','first','flash','focus',\n            'form','found?','fourth','free','function?','get','get-modes',\n            'get-word?','greater-or-equal?','greater?','hash?','head','head?',\n            'help','hide','hide-popup','image?','import-email','in',\n            'in-window?','index?','info?','inform','input','input?','insert',\n            'integer?','intersect','issue?','join','last','layout','length?',\n            'lesser-or-equal?','lesser?','library?','license','link?',\n            'list-dir','list?','lit-path?','lit-word?','load','load-image',\n            'log-10','log-2','log-e','logic?','lowercase','make','make-dir',\n            'make-face','max','maximum','maximum-of','min','minimum',\n            'minimum-of','modified?','mold','money?','multiply','native?',\n            'negate','negative?','none?','not','not-equal?','now','number?',\n            'object?','odd?','offset-to-caret','offset?','op?','open','or',\n            'pair?','paren?','parse','parse-xml','path?','pick','poke','port?',\n            'positive?','power','prin','print','probe','protect',\n            'protect-system','query','random','read','read-io','recycle',\n            'refinement?','reform','rejoin','remainder','remold','remove',\n            'rename',\n            //'repeat',\n            'repend','replace','request','request-color','request-date',\n            'request-download','request-file','request-list','request-pass',\n            'request-text','resend','reverse','routine?','same?','save',\n            'script?','second','select','send','series?','set','set-modes',\n            'set-net','set-path?','set-word?','show','show-popup','sign?',\n            'sine','size-text','size?','skip','sort','source','span?',\n            'split-path','square-root','strict-equal?','strict-not-equal?',\n            'string?','struct?','stylize','subtract','suffix?','tag?','tail',\n            'tail?','tangent','third','time?','to','to-binary','to-bitset',\n            'to-block','to-char','to-date','to-decimal','to-email','to-file',\n            'to-get-word','to-hash','to-hex','to-idate','to-image','to-integer',\n            'to-issue','to-list','to-lit-path','to-lit-word','to-local-file',\n            'to-logic','to-money','to-pair','to-paren','to-path',\n            'to-rebol-file','to-refinement','to-set-path','to-set-word',\n            'to-string','to-tag','to-time','to-tuple','to-url','to-word',\n            'trace','trim','tuple?','type?','unfocus','union','unique',\n            'unprotect','unset','unset?','unview','update','upgrade',\n            'uppercase','url?','usage','use','value?','view','viewed?','what',\n            'what-dir','within?','word?','write','write-io','xor','zero?',\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '!', '@', '%', '&', '*', '|', '/', '<', '>'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n//            2 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;',\n            2 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            3 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n//        2 => 'includes/dico_rebol.php?word={FNAME}',\n//        3 => 'includes/dico_rebol.php?word={FNAME}'\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        0 => \"[\\\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*\",\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/reg.php",
    "content": "<?php\n/*************************************************************************************\n * reg.php\n * -------\n * Author: Sean Hanna (smokingrope@gmail.com)\n * Copyright: (c) 2006 Sean Hanna\n * Release Version: 1.0.9.1\n * Date Started: 03/15/2006\n *\n * Microsoft Registry Editor language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *  -  Added description of extra language features (SF#1970248)\n *  -  Updated and optimized most regular expressions\n * 03/15/2006 (0.5.0)\n *  -  Syntax File Created\n * 04/27/2006 (0.9.5)\n *  -  Syntax Coloring Cleaned Up\n *  -  First Release\n * 04/29/2006 (1.0.0)\n *  -  Updated a few coloring settings\n *\n * TODO (updated 4/27/2006)\n * -------------------------\n * - Add a verification to the multi-line portion of the hex field regex\n *    for a '\\' character on the line preceding the line of the multi-line\n *    hex field.\n *\n * KNOWN ISSUES (updated 4/27/2006)\n * ---------------------------------\n *\n * - There are two regexes for the multiline hex value regex. The regex for\n *        all lines after the first does not verify that the previous line contains\n *        a line continuation character '\\'. This regex also does not check for\n *        end of line as it should.\n *\n * - If number_highlighting is enabled during processing of this syntax file\n *    many of the regexps used will appear slightly incorrect.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n\n ************************************************************************************/\n$language_data = array (\n    'LANG_NAME' => 'Microsoft Registry',\n    'COMMENT_SINGLE' => array(1 =>';'),\n    'COMMENT_MULTI' => array( ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n//        1 => array(),\n//        2 => array(),\n        /* Registry Key Constants Not Used */\n        3 => array(\n            'HKEY_LOCAL_MACHINE',\n            'HKEY_CLASSES_ROOT',\n            'HKEY_CURRENT_USER',\n            'HKEY_USERS',\n            'HKEY_CURRENT_CONFIG',\n            'HKEY_DYN_DATA',\n            'HKLM', 'HKCR', 'HKCU', 'HKU', 'HKCC', 'HKDD'\n            )\n        ),\n    'SYMBOLS' => array(\n        '='\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n//        1 => false,\n//        2 => false,\n        3 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n//            1 => 'color: #00CCFF;',\n//            2 => 'color: #0000FF;',\n            3 => 'color: #800000;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #009900;'\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #009900;'\n            ),\n        'NUMBERS' => array(\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #00CCFF;',\n            1 => 'color: #0000FF;',\n            2 => '',\n            3 => 'color: #0000FF;',\n            4 => 'color: #0000FF;',\n            5 => '',\n            6 => '',\n            7 => '',\n            8 => 'color: #FF6600;',\n            )\n        ),\n    'URLS' => array(\n//        1 => '',\n//        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        // Highlight Key Delimiters\n        0 => array(\n            GESHI_SEARCH => '((^|\\\\n)\\\\s*)(\\\\\\\\\\\\[(.*)\\\\\\\\\\\\])(\\\\s*(\\\\n|$))',\n            GESHI_REPLACE => '\\\\3',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\5'\n//            GESHI_CLASS => 'kw1'\n            ),\n        // Highlight File Format Header Version 5\n        1 => array(\n            GESHI_SEARCH => '(^\\s*)(Windows Registry Editor Version \\d+\\.\\d+)(\\s*$)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3',\n            GESHI_CLASS => 'geshi_registry_header'\n            ),\n        // Highlight File Format Header Version 4\n        2 => array(\n            GESHI_SEARCH => '(^\\\\s*)(REGEDIT\\s?\\d+)(\\s*$)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3',\n            GESHI_CLASS => 'geshi_registry_header'\n            ),\n        // Highlight dword: 32 bit integer values\n        3 => array(\n            GESHI_SEARCH => '(=\\s*)(dword:[0-9a-fA-F]{8})(\\s*$)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3'\n//            GESHI_CLASS => 'kw2'\n            ),\n        // Highlight variable names\n        4 => array(\n            GESHI_SEARCH => '(^\\s*)(\\&quot;.*?\\&quot;)(\\s*=)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3',\n            GESHI_CLASS => 'geshi_variable'\n            ),\n        // Highlight String Values\n        5 => array(\n            GESHI_SEARCH => '(=\\s*)(\\&quot;.*?\\&quot;)(\\s*$)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3',\n            GESHI_CLASS => 'st0'\n            ),\n        // Highlight Hexadecimal Values (Single-Line and Multi-Line)\n        6 => array(\n            GESHI_SEARCH => '(=\\s*\\n?\\s*)(hex:[0-9a-fA-F]{2}(,(\\\\\\s*\\n\\s*)?[0-9a-fA-F]{2})*)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '',\n            GESHI_CLASS => 'kw2'\n            ),\n        // Highlight Default Variable\n        7 => array(\n            GESHI_SEARCH => '(^\\s*)(@)(\\s*=)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3',\n            GESHI_CLASS => 'geshi_variable'\n            ),\n        // Highlight GUID's found anywhere.\n        8 => array(\n            GESHI_SEARCH => '(\\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\})',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'i',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '',\n            GESHI_CLASS => 'geshi_guid'\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'NUMBERS' => GESHI_NEVER,\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/rexx.php",
    "content": "<?php\n/*************************************************************************************\n * rexx.php\n * ---------------------------------\n * Author: Jon Wolfers (sahananda@windhorse.biz)\n * Contributors:\n *    - Walter Pachl (pachl@chello.at)\n * Copyright: (c) 2008 Jon Wolfers, (c) 2012 Walter Pachl\n * Release Version: 1.0.9.1\n * Date Started: 2008/01/07\n *\n * Rexx language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2012/07/29 (1.0.0)\n *    -  tried to get it syntactically right\n *\n * TODO (updated 2012/07/29)\n * -------------------------\n *   -  Get it working on rosettacode.org\n *\n *************************************************************************************\n *\n *      This file is part of GeSHi.\n *\n *    GeSHi is free software; you can redistribute it and/or modify\n *    it under the terms of the GNU General Public License as published by\n *    the Free Software Foundation; either version 2 of the License, or\n *    (at your option) any later version.\n *\n *    GeSHi is distributed in the hope that it will be useful,\n *    but WITHOUT ANY WARRANTY; without even the implied warranty of\n *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *    GNU General Public License for more details.\n *\n *    You should have received a copy of the GNU General Public License\n *    along with GeSHi; if not, write to the Free Software\n *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'rexx',\n    'COMMENT_SINGLE' => array(1 => '--'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'address', 'arg', 'attribute', 'call', 'constant', 'do',\n            'drop', 'exit', 'forward', 'if',\n            'interpret', 'iterate', 'leave', 'loop', 'nop', 'numeric',\n            'options', 'parse', 'procedure', 'pull', 'push', 'queue',\n            'raise', 'return', 'say', 'select', 'signal', 'trace'\n            ),\n        2 => array(\n            'by', 'digits', 'engineering', 'error', 'expose',\n            'failure', 'for', 'forever', 'form', 'fuzz', 'halt',\n            'name', 'novalue', 'off', 'on', 'over', 'scientific', 'source',\n            'syntax', 'to', 'until', 'upper', 'version',\n            'while', 'with'\n            ),\n        3 => array(\n            'else', 'end', 'otherwise', 'then', 'when'\n            ),\n        4 => array(\n            'rc', 'result', 'sigl'\n            ),\n        5 => array(\n            'placeholderforoorexxdirectives'\n            ),\n        6 => array(\n            'abbrev', 'abs', 'beep', 'bitand', 'bitor',\n            'bitxor', 'b2x', 'center', 'centre', 'changestr', 'charin',\n            'charout', 'chars', 'compare', 'condition', 'copies',\n            'countstr', 'c2d', 'c2x', 'datatype', 'date', 'delstr',\n            'delword', 'directory', 'd2c', 'd2x', 'endlocal',\n            'errortext', 'filespec', 'format', 'insert',\n            'lastpos', 'left', 'length', 'linein', 'lineout', 'lines',\n            'lower', 'max', 'min', 'overlay', 'pos', 'queued', 'random',\n            'reverse', 'right', 'rxfuncadd', 'rxfuncdrop', 'rxfuncquery',\n            'rxqueue', 'setlocal', 'sign', 'sourceline', 'space',\n            'stream', 'strip', 'substr', 'subword', 'symbol', 'time',\n            'translate', 'trunc', 'userid', 'value',\n            'var', 'verify', 'word', 'wordindex', 'wordlength', 'wordpos',\n            'words', 'xrange', 'x2b', 'x2c', 'x2d'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '<', '>', '=', '+', '-', '*', '**', '/', '|', '%', '^', '&', ':'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => true,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #ff0000; font-weight: bold;',\n            3 => 'color: #00ff00; font-weight: bold;',\n            4 => 'color: #0000ff; font-weight: bold;',\n            5 => 'color: #880088; font-weight: bold;',\n            6 => 'color: #888800; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666;',\n            'MULTI' => 'color: #808080;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;',\n            2 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/robots.php",
    "content": "<?php\n/*************************************************************************************\n * robots.php\n * --------\n * Author: Christian Lescuyer (cl@goelette.net)\n * Copyright: (c) 2006 Christian Lescuyer http://xtian.goelette.info\n * Release Version: 1.0.9.1\n * Date Started: 2006/02/17\n *\n * robots.txt language file for GeSHi.\n *\n * 2006/02/17 (1.0.0)\n *   -  First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'robots.txt',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(1 => \"/^Comment:.*?/m\"),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'Allow', 'Crawl-delay', 'Disallow', 'Request-rate', 'Robot-version',\n            'Sitemap', 'User-agent', 'Visit-time'\n            )\n        ),\n    'SYMBOLS' => array(\n        ':'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => 'http://www.robotstxt.org/wc/norobots.html'\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/roff.php",
    "content": "<?php\n/*************************************************************************************\n * roff.php\n * ---------------------------------\n * Author: Artur Iwicki (iwicki DOT artur AT svgames DOT pl)\n * Copyright: (c) 2017 Artur Iwicki\n * Release Version: 1.0.9.1\n * Date Started: 2017-11-17\n *\n * roff (Unix man page) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2018-12-06 (1.0.1)\n *  - Fix reqex for line-start requests (must start with [.'], not [\\.'])\n *  - Add some missing whitespace escapes\n * 2017-11-20 (1.0.0)\n *  - First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'roff',\n    'COMMENT_SINGLE' => array(\n        1 => '\\\\\"',\n        2 => '\\\\#',\n        ),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        1 => '/^\\\\.\\\\\\\\\"[[:print:]]*/m'\n        ),\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        ),\n    'KEYWORDS' => array(\n        ),\n    'SYMBOLS' => array(\n        0 => array(\n            '\\\\[-D]',    '\\\\(-D',\n            '\\\\[Sd]',    '\\\\(Sd',\n            '\\\\[TP]',    '\\\\(TP',\n            '\\\\[Tp]',    '\\\\(Tp',\n            '\\\\[ss]',    '\\\\(ss',\n            '\\\\[ff]',    '\\\\(ff',\n            '\\\\[fi]',    '\\\\(fi',\n            '\\\\[fl]',    '\\\\(fl',\n            '\\\\[Fi]',    '\\\\(Fi',\n            '\\\\[Fl]',    '\\\\(Fl',\n            '\\\\[/L]',    '\\\\(/L',\n            '\\\\[/l]',    '\\\\(/l',\n            '\\\\[/O]',    '\\\\(/O',\n            '\\\\[/o]',    '\\\\(/o',\n            '\\\\[AE]',    '\\\\(AE',\n            '\\\\[ae]',    '\\\\(ae',\n            '\\\\[OE]',    '\\\\(OE',\n            '\\\\[oe]',    '\\\\(oe',\n            '\\\\[IJ]',    '\\\\(IJ',\n            '\\\\[ij]',    '\\\\(ij',\n            '\\\\[.i]',    '\\\\(.i',\n            '\\\\[.j]',    '\\\\(.j',\n            '\\\\[\\'A]',    '\\\\(\\'A',\n            '\\\\[\\'C]',    '\\\\(\\'C',\n            '\\\\[\\'E]',    '\\\\(\\'E',\n            '\\\\[\\'I]',    '\\\\(\\'I',\n            '\\\\[\\'O]',    '\\\\(\\'O',\n            '\\\\[\\'U]',    '\\\\(\\'U',\n            '\\\\[\\'Y]',    '\\\\(\\'Y',\n            '\\\\[\\'a]',    '\\\\(\\'a',\n            '\\\\[\\'c]',    '\\\\(\\'c',\n            '\\\\[\\'e]',    '\\\\(\\'e',\n            '\\\\[\\'i]',    '\\\\(\\'i',\n            '\\\\[\\'o]',    '\\\\(\\'o',\n            '\\\\[\\'u]',    '\\\\(\\'u',\n            '\\\\[\\'y]',    '\\\\(\\'y',\n            '\\\\[:A]',    '\\\\(:A',\n            '\\\\[:E]',    '\\\\(:E',\n            '\\\\[:I]',    '\\\\(:I',\n            '\\\\[:O]',    '\\\\(:O',\n            '\\\\[:U]',    '\\\\(:U',\n            '\\\\[:Y]',    '\\\\(:Y',\n            '\\\\[:a]',    '\\\\(:a',\n            '\\\\[:e]',    '\\\\(:e',\n            '\\\\[:i]',    '\\\\(:i',\n            '\\\\[:o]',    '\\\\(:o',\n            '\\\\[:u]',    '\\\\(:u',\n            '\\\\[:y]',    '\\\\(:y',\n            '\\\\[^A]',    '\\\\(^A',\n            '\\\\[^E]',    '\\\\(^E',\n            '\\\\[^I]',    '\\\\(^I',\n            '\\\\[^O]',    '\\\\(^O',\n            '\\\\[^U]',    '\\\\(^U',\n            '\\\\[^a]',    '\\\\(^a',\n            '\\\\[^e]',    '\\\\(^e',\n            '\\\\[^i]',    '\\\\(^i',\n            '\\\\[^o]',    '\\\\(^o',\n            '\\\\[^u]',    '\\\\(^u',\n            '\\\\[`A]',    '\\\\(`A',\n            '\\\\[`E]',    '\\\\(`E',\n            '\\\\[`I]',    '\\\\(`I',\n            '\\\\[`O]',    '\\\\(`O',\n            '\\\\[`U]',    '\\\\(`U',\n            '\\\\[`a]',    '\\\\(`a',\n            '\\\\[`e]',    '\\\\(`e',\n            '\\\\[`i]',    '\\\\(`i',\n            '\\\\[`o]',    '\\\\(`o',\n            '\\\\[`u]',    '\\\\(`u',\n            '\\\\[~A]',    '\\\\(~A',\n            '\\\\[~N]',    '\\\\(~N',\n            '\\\\[~O]',    '\\\\(~O',\n            '\\\\[~a]',    '\\\\(~a',\n            '\\\\[~n]',    '\\\\(~n',\n            '\\\\[~o]',    '\\\\(~o',\n            '\\\\[vS]',    '\\\\(vS',\n            '\\\\[vs]',    '\\\\(vs',\n            '\\\\[vZ]',    '\\\\(vZ',\n            '\\\\[vz]',    '\\\\(vz',\n            '\\\\[,C]',    '\\\\(,C',\n            '\\\\[,c]',    '\\\\(,c',\n            '\\\\[oA]',    '\\\\(oA',\n            '\\\\[oa]',    '\\\\(oa',\n            '\\\\[a\"]',    '\\\\(a\"',\n            '\\\\[a-]',    '\\\\(a-',\n            '\\\\[a.]',    '\\\\(a.',\n            '\\\\[a^]',    '\\\\(a^',\n            '\\\\[aa]',    '\\\\(aa',\n            '\\\\[ga]',    '\\\\(ga',\n            '\\\\[ab]',    '\\\\(ab',\n            '\\\\[ac]',    '\\\\(ac',\n            '\\\\[ad]',    '\\\\(ad',\n            '\\\\[ah]',    '\\\\(ah',\n            '\\\\[ao]',    '\\\\(ao',\n            '\\\\[a~]',    '\\\\(a~',\n            '\\\\[ho]',    '\\\\(ho',\n            '\\\\[ha]',    '\\\\(ha',\n            '\\\\[ti]',    '\\\\(ti',\n            '\\\\[Bq]',    '\\\\(Bq',\n            '\\\\[bq]',    '\\\\(bq',\n            '\\\\[lq]',    '\\\\(lq',\n            '\\\\[rq]',    '\\\\(rq',\n            '\\\\[oq]',    '\\\\(oq',\n            '\\\\[cq]',    '\\\\(cq',\n            '\\\\[aq]',    '\\\\(aq',\n            '\\\\[dq]',    '\\\\(dq',\n            '\\\\[Fo]',    '\\\\(Fo',\n            '\\\\[Fc]',    '\\\\(Fc',\n            '\\\\[fo]',    '\\\\(fo',\n            '\\\\[fc]',    '\\\\(fc',\n            '\\\\[r!]',    '\\\\(r!',\n            '\\\\[r?]',    '\\\\(r?',\n            '\\\\[em]',    '\\\\(em',\n            '\\\\[en]',    '\\\\(en',\n            '\\\\[hy]',    '\\\\(hy',\n            '\\\\[lB]',    '\\\\(lB',\n            '\\\\[rB]',    '\\\\(rB',\n            '\\\\[lC]',    '\\\\(lC',\n            '\\\\[rC]',    '\\\\(rC',\n            '\\\\[la]',    '\\\\(la',\n            '\\\\[ra]',    '\\\\(ra',\n            '\\\\[bv]',    '\\\\(bv',\n            '\\\\[braceex]',\n            '\\\\[bracketlefttp]',\n            '\\\\[bracketleftbt]',\n            '\\\\[bracketleftex]',\n            '\\\\[bracketrighttp]',\n            '\\\\[bracketrightbt]',\n            '\\\\[bracketrightex]',\n            '\\\\[lt]',    '\\\\(lt',\n            '\\\\[bracelefttp]',\n            '\\\\[lk]',    '\\\\(lk',\n            '\\\\[braceleftmid]',\n            '\\\\[lb]',    '\\\\(lb',\n            '\\\\[braceleftbt]',\n            '\\\\[braceleftex]',\n            '\\\\[rt]',    '\\\\(rt',\n            '\\\\[bracerighttp]',\n            '\\\\[rk]',    '\\\\(rk',\n            '\\\\[bracerightmid]',\n            '\\\\[rb]',    '\\\\(rb',\n            '\\\\[bracerightbt]',\n            '\\\\[bracerightex]',\n            '\\\\[parenlefttp]',\n            '\\\\[parenleftbt]',\n            '\\\\[parenleftex]',\n            '\\\\[parenrighttp]',\n            '\\\\[parenrightbt]',\n            '\\\\[parenrightex]',\n            '\\\\[&lt;-]',    '\\\\(&lt;-',\n            '\\\\[-&gt;]',    '\\\\(-&gt;',\n            '\\\\[&lt;&gt;]',    '\\\\(&lt;&gt;',\n            '\\\\[da]',    '\\\\(da',\n            '\\\\[ua]',    '\\\\(ua',\n            '\\\\[va]',    '\\\\(va',\n            '\\\\[lA]',    '\\\\(lA',\n            '\\\\[rA]',    '\\\\(rA',\n            '\\\\[hA]',    '\\\\(hA',\n            '\\\\[dA]',    '\\\\(dA',\n            '\\\\[uA]',    '\\\\(uA',\n            '\\\\[vA]',    '\\\\(vA',\n            '\\\\[an]',    '\\\\(an',\n            '\\\\[ba]',    '\\\\(ba',\n            '\\\\[br]',    '\\\\(br',\n            '\\\\[ul]',    '\\\\(ul',\n            '\\\\[rn]',    '\\\\(rn',\n            '\\\\[ru]',    '\\\\(ru',\n            '\\\\[bb]',    '\\\\(bb',\n            '\\\\[sl]',    '\\\\(sl',\n            '\\\\[rs]',    '\\\\(rs',\n            '\\\\[ci]',    '\\\\(ci',\n            '\\\\[bu]',    '\\\\(bu',\n            '\\\\[dd]',    '\\\\(dd',\n            '\\\\[dg]',    '\\\\(dg',\n            '\\\\[lz]',    '\\\\(lz',\n            '\\\\[sq]',    '\\\\(sq',\n            '\\\\[ps]',    '\\\\(ps',\n            '\\\\[sc]',    '\\\\(sc',\n            '\\\\[lh]',    '\\\\(lh',\n            '\\\\[rh]',    '\\\\(rh',\n            '\\\\[at]',    '\\\\(at',\n            '\\\\[sh]',    '\\\\(sh',\n            '\\\\[CR]',    '\\\\(CR',\n            '\\\\[OK]',    '\\\\(OK',\n            '\\\\[co]',    '\\\\(co',\n            '\\\\[rg]',    '\\\\(rg',\n            '\\\\[tm]',    '\\\\(tm',\n            '\\\\[bs]',    '\\\\(bs',\n            '\\\\[Do]',    '\\\\(Do',\n            '\\\\[ct]',    '\\\\(ct',\n            '\\\\[eu]',    '\\\\(eu',\n            '\\\\[Eu]',    '\\\\(Eu',\n            '\\\\[Ye]',    '\\\\(Ye',\n            '\\\\[Po]',    '\\\\(Po',\n            '\\\\[Cs]',    '\\\\(Cs',\n            '\\\\[Fn]',    '\\\\(Fn',\n            '\\\\[de]',    '\\\\(de',\n            '\\\\[%0]',    '\\\\(%0',\n            '\\\\[fm]',    '\\\\(fm',\n            '\\\\[sd]',    '\\\\(sd',\n            '\\\\[mc]',    '\\\\(mc',\n            '\\\\[Of]',    '\\\\(Of',\n            '\\\\[Om]',    '\\\\(Om',\n            '\\\\[AN]',    '\\\\(AN',\n            '\\\\[OR]',    '\\\\(OR',\n            '\\\\[no]',    '\\\\(no',\n            '\\\\[tno]',\n            '\\\\[te]',    '\\\\(te',\n            '\\\\[fa]',    '\\\\(fa',\n            '\\\\[st]',    '\\\\(st',\n            '\\\\[3d]',    '\\\\(3d',\n            '\\\\[tf]',    '\\\\(tf',\n            '\\\\[or]',    '\\\\(or',\n            '\\\\[12]',    '\\\\(12',\n            '\\\\[14]',    '\\\\(14',\n            '\\\\[34]',    '\\\\(34',\n            '\\\\[18]',    '\\\\(18',\n            '\\\\[38]',    '\\\\(38',\n            '\\\\[58]',    '\\\\(58',\n            '\\\\[78]',    '\\\\(78',\n            '\\\\[S1]',    '\\\\(S1',\n            '\\\\[S2]',    '\\\\(S2',\n            '\\\\[S3]',    '\\\\(S3',\n            '\\\\[pl]',    '\\\\(pl',\n            '\\\\[mi]',    '\\\\(mi',\n            '\\\\[-+]',    '\\\\(-+',\n            '\\\\[+-]',    '\\\\(+-',\n            '\\\\[t+-]',\n            '\\\\[pc]',    '\\\\(pc',\n            '\\\\[md]',    '\\\\(md',\n            '\\\\[mu]',    '\\\\(mu',\n            '\\\\[tmu]',\n            '\\\\[c*]',    '\\\\(c*',\n            '\\\\[c+]',    '\\\\(c+',\n            '\\\\[di]',    '\\\\(di',\n            '\\\\[tdi]',\n            '\\\\[f/]',    '\\\\(f/',\n            '\\\\[**]',    '\\\\(**',\n            '\\\\[&lt;=]',    '\\\\(&lt;=',\n            '\\\\[&gt;=]',    '\\\\(&gt;=',\n            '\\\\[&lt;&lt;]',    '\\\\(&lt;&lt;',\n            '\\\\[&gt;&gt;]',    '\\\\(&gt;&gt;',\n            '\\\\[eq]',    '\\\\(eq',\n            '\\\\[!=]',    '\\\\(!=',\n            '\\\\[==]',    '\\\\(==',\n            '\\\\[ne]',    '\\\\(ne',\n            '\\\\[=~]',    '\\\\(=~',\n            '\\\\[|=]',    '\\\\(|=',\n            '\\\\[ap]',    '\\\\(ap',\n            '\\\\[~~]',    '\\\\(~~',\n            '\\\\[~=]',    '\\\\(~=',\n            '\\\\[pt]',    '\\\\(pt',\n            '\\\\[es]',    '\\\\(es',\n            '\\\\[mo]',    '\\\\(mo',\n            '\\\\[nm]',    '\\\\(nm',\n            '\\\\[sb]',    '\\\\(sb',\n            '\\\\[nb]',    '\\\\(nb',\n            '\\\\[sp]',    '\\\\(sp',\n            '\\\\[nc]',    '\\\\(nc',\n            '\\\\[ib]',    '\\\\(ib',\n            '\\\\[ip]',    '\\\\(ip',\n            '\\\\[ca]',    '\\\\(ca',\n            '\\\\[cu]',    '\\\\(cu',\n            '\\\\[/_]',    '\\\\(/_',\n            '\\\\[pp]',    '\\\\(pp',\n            '\\\\[is]',    '\\\\(is',\n            '\\\\[integral]',\n            '\\\\[sum]',\n            '\\\\[product]',\n            '\\\\[coproduct]',\n            '\\\\[gr]',    '\\\\(gr',\n            '\\\\[sr]',    '\\\\(sr',\n            '\\\\[sqrt]',\n            '\\\\[radicalex]',\n            '\\\\[sqrtex]',\n            '\\\\[lc]',    '\\\\(lc',\n            '\\\\[rc]',    '\\\\(rc',\n            '\\\\[lf]',    '\\\\(lf',\n            '\\\\[rf]',    '\\\\(rf',\n            '\\\\[if]',    '\\\\(if',\n            '\\\\[Ah]',    '\\\\(Ah',\n            '\\\\[Im]',    '\\\\(Im',\n            '\\\\[Re]',    '\\\\(Re',\n            '\\\\[wp]',    '\\\\(wp',\n            '\\\\[pd]',    '\\\\(pd',\n            '\\\\[-h]',    '\\\\(-h',\n            '\\\\[hbar]',\n            '\\\\[*A]',    '\\\\(*A',\n            '\\\\[*B]',    '\\\\(*B',\n            '\\\\[*G]',    '\\\\(*G',\n            '\\\\[*D]',    '\\\\(*D',\n            '\\\\[*E]',    '\\\\(*E',\n            '\\\\[*Z]',    '\\\\(*Z',\n            '\\\\[*Y]',    '\\\\(*Y',\n            '\\\\[*H]',    '\\\\(*H',\n            '\\\\[*I]',    '\\\\(*I',\n            '\\\\[*K]',    '\\\\(*K',\n            '\\\\[*L]',    '\\\\(*L',\n            '\\\\[*M]',    '\\\\(*M',\n            '\\\\[*N]',    '\\\\(*N',\n            '\\\\[*C]',    '\\\\(*C',\n            '\\\\[*O]',    '\\\\(*O',\n            '\\\\[*P]',    '\\\\(*P',\n            '\\\\[*R]',    '\\\\(*R',\n            '\\\\[*S]',    '\\\\(*S',\n            '\\\\[*T]',    '\\\\(*T',\n            '\\\\[*U]',    '\\\\(*U',\n            '\\\\[*F]',    '\\\\(*F',\n            '\\\\[*X]',    '\\\\(*X',\n            '\\\\[*Q]',    '\\\\(*Q',\n            '\\\\[*W]',    '\\\\(*W',\n            '\\\\[*a]',    '\\\\(*a',\n            '\\\\[*b]',    '\\\\(*b',\n            '\\\\[*g]',    '\\\\(*g',\n            '\\\\[*d]',    '\\\\(*d',\n            '\\\\[*e]',    '\\\\(*e',\n            '\\\\[*z]',    '\\\\(*z',\n            '\\\\[*y]',    '\\\\(*y',\n            '\\\\[*h]',    '\\\\(*h',\n            '\\\\[*i]',    '\\\\(*i',\n            '\\\\[*k]',    '\\\\(*k',\n            '\\\\[*l]',    '\\\\(*l',\n            '\\\\[*m]',    '\\\\(*m',\n            '\\\\[*n]',    '\\\\(*n',\n            '\\\\[*c]',    '\\\\(*c',\n            '\\\\[*o]',    '\\\\(*o',\n            '\\\\[*p]',    '\\\\(*p',\n            '\\\\[*r]',    '\\\\(*r',\n            '\\\\[ts]',    '\\\\(ts',\n            '\\\\[*s]',    '\\\\(*s',\n            '\\\\[*t]',    '\\\\(*t',\n            '\\\\[*u]',    '\\\\(*u',\n            '\\\\[*f]',    '\\\\(*f',\n            '\\\\[*x]',    '\\\\(*x',\n            '\\\\[*q]',    '\\\\(*q',\n            '\\\\[*w]',    '\\\\(*w',\n            '\\\\[+h]',    '\\\\(+h',\n            '\\\\[+f]',    '\\\\(+f',\n            '\\\\[+p]',    '\\\\(+p',\n            '\\\\[+e]',    '\\\\(+e',\n            '\\\\[CL]',    '\\\\(CL',\n            '\\\\[SP]',    '\\\\(SP',\n            '\\\\[HE]',    '\\\\(HE',\n            '\\\\[DI]',    '\\\\(DI',\n            ),\n        1 => array(\n            // Special characters\n            '\\\\\\\\', '\\\\´', '\\\\`', '\\\\-',\n            '\\\\_',  '\\\\.', '\\\\%', '\\\\!',\n            '\\\\0',  '\\\\|', '\\\\^', '\\\\&',\n            '\\\\)',  '\\\\/', '\\\\,', '\\\\~',\n            '\\\\:',  '\\\\{', '\\\\}', '\\\\a',\n            '\\\\c',  '\\\\d', '\\\\e', '\\\\E',\n            '\\\\p',  '\\\\r', '\\\\t', '\\\\u',\n\n            // Whitespace escapes\n            '\\\\ ', '\\\\h', \"\\\\\\n\",\n\n            // Text modifiers\n            '\\\\fB', '\\\\fI', '\\\\fR', '\\\\fP',\n            '\\\\f0', '\\\\f1', '\\\\f2', '\\\\f3', '\\\\f4', '\\\\f5', '\\\\f6', '\\\\f7', '\\\\f8', '\\\\f9',\n            ),\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #ffff55;',\n            2 => 'color: #ffff55;',\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'BRACKETS' => array(\n            ),\n        'STRINGS' => array(\n            ),\n        'NUMBERS' => array(\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #00aaaa',\n            1 => 'color: #aa00aa',\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #ffff55;',\n            1 => 'font-weight: bold;',\n            2 => 'font-style: italic;',\n            3 => 'font-weight: bold;',\n            4 => 'font-style: italic;',\n            5 => 'color: #55aaff;',\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'REGEXPS' => array(\n        0 => array(\n            // Unicode characters\n            GESHI_SEARCH => '\\\\\\\\\\\\[u([[:xdigit:]]{4,5})\\\\]',\n            GESHI_REPLACE => '\\\\\\\\[\\\\1]',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '',\n            ),\n        1 => array(\n            // Bold text - formatted using .B or 'B\n            GESHI_SEARCH => \"^([\\\\.']{1}B[[:blank:]]*\\\\n{0,1})([[:print:]]+)\",\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '',\n            ),\n        2 => array(\n            // Italic text - formatted using .I or 'I\n            GESHI_SEARCH => \"^([\\\\.']{1}I[[:blank:]]*\\\\n{0,1})([[:print:]]+)\",\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '',\n            ),\n        3 => array(\n            // Bold text - formatted inline\n            GESHI_SEARCH => '(\\\\\\\\fB)([[:print:]]+?)(\\\\\\\\fR)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3',\n            ),\n        4 => array (\n            // Italic text - formatted inline\n            GESHI_SEARCH => '(\\\\\\\\fI)([[:print:]]+?)(\\\\\\\\fR)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3',\n            ),\n        5 => array(\n            // Line start macros (.TP, .SH, et cetera)\n            GESHI_SEARCH => \"^([.']{1}[a-zA-Z]+)\",\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'm',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '',\n            ),\n        ),\n    'URLS' => array(),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n);\n"
  },
  {
    "path": "includes/geshi/rpmspec.php",
    "content": "<?php\n/*************************************************************************************\n * rpmspec.php\n * ---------------------------------\n * Author: Paul Grinberg (gri6507 TA unity-linux TOD org)\n * Copyright: (c) 2010 Paul Grinberg\n * Release Version: 1.0.9.1\n * Date Started: 2010/04/27\n *\n * RPM Spec language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/04/27 (0.1)\n *  -  First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'RPM Specification File',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'QUOTEMARKS' => array('\"','`'),\n    'ESCAPE_CHAR' => '\\\\',\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        ),\n    'KEYWORDS' => array(\n        ),\n    'SYMBOLS' => array(\n        '<', '>', '=',\n        '!', '@', '~', '&', '|', '^',\n        '+','-', '*', '/', '%',\n        ',', ';', '?', '.', ':'\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            'HARD' => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;',\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;',\n            2 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            1 => 'color: #0000ff;',\n            2 => 'color: #009999;',\n            3 => 'color: #000000; font-weight: bold;',\n            4 => 'color: #ff6600; font-style: italic;',\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'REGEXPS' => array(\n        1 => array(\n            // search for generic macros\n            GESHI_SEARCH => '(%{?[a-zA-Z0-9_]+}?)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '',\n            ),\n        2 => array(\n            // search for special macros\n            GESHI_SEARCH => '(%(?:define|patch\\d*|mklibname|mkrel|configure\\S+|makeinstall\\S+|make_session|make|defattr|config|doc|setup))',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'i',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '',\n            ),\n        3 => array (\n            // special definitions\n            GESHI_SEARCH => '((?:summary|license|buildroot|buildrequires|provides|version|release|source\\d*|group|buildarch|autoreqprov|provides|obsoletes|vendor|distribution|suggests|autoreq|autoprov|conflicts|name|url|requires|patch\\d*):)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'i',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '',\n            ),\n        4 => array (\n            // section delimiting words\n            GESHI_SEARCH => '(%(?:description|package|prep|build|install|clean|postun|preun|post|pre|files|changelog))',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'i',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '',\n            ),\n        ),\n    'URLS' => array(),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n);\n"
  },
  {
    "path": "includes/geshi/rsplus.php",
    "content": "<?php\n/*************************************************************************************\n * rsplus.php\n * ———–\n * Author: Ron Fredericks (ronf@LectureMaker.com)\n * Contributors:\n *  - Benilton Carvalho (beniltoncarvalho@gmail.com)\n *  - Fernando Henrique Ferraz Pereira da Rosa (mentus@gmail.com)\n * Copyright: (c) 2009 Ron Fredericks (http://www.LectureMaker.com)\n * Release Version: 1.0.9.1\n * Date Started: 2009/03/28\n *\n * R language file for GeSHi.\n *\n * CHANGES\n * ——-\n * 2009/04/06\n *   -  Add references to Sekhon’s R Package docs\n * 2009/03/29 (1.0.8.5)\n *   -  First Release\n * 2009/07/16 (1.0.8.6)\n *   - Added functions from base packages (Benilton Carvalho - carvalho@bclab.org)\n *\n * References\n * ———-\n * Some online R Package documentation:\n *     http://sekhon.berkeley.edu/library/index.html         2.4 docs\n *     http://astrostatistics.psu.edu/su07/R/html            2.5 docs\n *\n * Another R GeSHi with no meat?\n *     http://organicdesign.co.nz/GeSHi/R.php\n * SourceForge R discussion:\n *     http://sourceforge.net/tracker/?func=detail&aid=2276025&group_id=114997&atid=670234\n *\n * TODO (updated 2007/02/06)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'R / S+',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', \"'\"),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'else','global','in', 'otherwise','persistent',\n            ),\n        2 => array( // base package\n            '$.package_version', '$<-', '$<-.data.frame', 'abbreviate', 'abs', 'acos', 'acosh', 'addNA', 'addTaskCallback',\n            'agrep', 'alist', 'all', 'all.equal', 'all.equal.character', 'all.equal.default', 'all.equal.factor',\n            'all.equal.formula', 'all.equal.language', 'all.equal.list', 'all.equal.numeric', 'all.equal.POSIXct',\n            'all.equal.raw', 'all.names', 'all.vars', 'any', 'aperm', 'append', 'apply', 'Arg', 'args', 'array', 'as.array',\n            'as.array.default', 'as.call', 'as.character', 'as.character.condition', 'as.character.Date', 'as.character.default',\n            'as.character.error', 'as.character.factor', 'as.character.hexmode', 'as.character.numeric_version', 'as.character.octmode',\n            'as.character.POSIXt', 'as.character.srcref', 'as.complex', 'as.data.frame', 'as.data.frame.array', 'as.data.frame.AsIs',\n            'as.data.frame.character', 'as.data.frame.complex', 'as.data.frame.data.frame', 'as.data.frame.Date', 'as.data.frame.default',\n            'as.data.frame.difftime', 'as.data.frame.factor', 'as.data.frame.integer', 'as.data.frame.list', 'as.data.frame.logical',\n            'as.data.frame.matrix', 'as.data.frame.model.matrix', 'as.data.frame.numeric', 'as.data.frame.numeric_version',\n            'as.data.frame.ordered', 'as.data.frame.POSIXct', 'as.data.frame.POSIXlt', 'as.data.frame.raw', 'as.data.frame.table',\n            'as.data.frame.ts', 'as.data.frame.vector', 'as.Date', 'as.Date.character', 'as.Date.date', 'as.Date.dates',\n            'as.Date.default', 'as.Date.factor', 'as.Date.numeric', 'as.Date.POSIXct', 'as.Date.POSIXlt', 'as.difftime', 'as.double',\n            'as.double.difftime', 'as.double.POSIXlt', 'as.environment', 'as.expression', 'as.expression.default', 'as.factor',\n            'as.function', 'as.function.default', 'as.hexmode', 'as.integer', 'as.list', 'as.list.data.frame', 'as.list.default',\n            'as.list.environment', 'as.list.factor', 'as.list.function', 'as.list.numeric_version', 'as.logical', 'as.matrix',\n            'as.matrix.data.frame', 'as.matrix.default', 'as.matrix.noquote', 'as.matrix.POSIXlt', 'as.name', 'as.null', 'as.null.default',\n            'as.numeric', 'as.numeric_version', 'as.octmode', 'as.ordered', 'as.package_version', 'as.pairlist', 'as.POSIXct',\n            'as.POSIXct.date', 'as.POSIXct.Date', 'as.POSIXct.dates', 'as.POSIXct.default', 'as.POSIXct.numeric', 'as.POSIXct.POSIXlt',\n            'as.POSIXlt', 'as.POSIXlt.character', 'as.POSIXlt.date', 'as.POSIXlt.Date', 'as.POSIXlt.dates', 'as.POSIXlt.default',\n            'as.POSIXlt.factor', 'as.POSIXlt.numeric', 'as.POSIXlt.POSIXct', 'as.qr', 'as.raw', 'as.real', 'as.single',\n            'as.single.default', 'as.symbol', 'as.table', 'as.table.default', 'as.vector', 'as.vector.factor', 'asin', 'asinh',\n            'asNamespace', 'asS4', 'assign', 'atan', 'atan2', 'atanh', 'attach', 'attachNamespace', 'attr', 'attr.all.equal',\n            'attr<-', 'attributes', 'attributes<-', 'autoload', 'autoloader', 'backsolve', 'baseenv', 'basename', 'besselI',\n            'besselJ', 'besselK', 'besselY', 'beta', 'bindingIsActive', 'bindingIsLocked', 'bindtextdomain', 'body', 'body<-',\n            'bquote', 'break', 'browser', 'builtins', 'by', 'by.data.frame', 'by.default', 'bzfile', 'c', 'c.Date', 'c.noquote',\n            'c.numeric_version', 'c.POSIXct', 'c.POSIXlt', 'call', 'callCC', 'capabilities', 'casefold', 'cat', 'category',\n            'cbind', 'cbind.data.frame', 'ceiling', 'char.expand', 'character', 'charmatch', 'charToRaw', 'chartr', 'check_tzones',\n            'chol', 'chol.default', 'chol2inv', 'choose', 'class', 'class<-', 'close', 'close.connection', 'close.srcfile',\n            'closeAllConnections', 'codes', 'codes.factor', 'codes.ordered', 'codes<-', 'col', 'colMeans', 'colnames',\n            'colnames<-', 'colSums', 'commandArgs', 'comment', 'comment<-', 'complex', 'computeRestarts', 'conditionCall',\n            'conditionCall.condition', 'conditionMessage', 'conditionMessage.condition', 'conflicts', 'Conj', 'contributors',\n            'cos', 'cosh', 'crossprod', 'Cstack_info', 'cummax', 'cummin', 'cumprod', 'cumsum', 'cut', 'cut.Date', 'cut.default',\n            'cut.POSIXt', 'data.class', 'data.frame', 'data.matrix', 'date', 'debug', 'default.stringsAsFactors', 'delay',\n            'delayedAssign', 'deparse', 'det', 'detach', 'determinant', 'determinant.matrix', 'dget', 'diag', 'diag<-', 'diff',\n            'diff.Date', 'diff.default', 'diff.POSIXt', 'difftime', 'digamma', 'dim', 'dim.data.frame', 'dim<-', 'dimnames',\n            'dimnames.data.frame', 'dimnames<-', 'dimnames<-.data.frame', 'dir', 'dir.create', 'dirname', 'do.call', 'double',\n            'dput', 'dQuote', 'drop', 'dump', 'duplicated', 'duplicated.array', 'duplicated.data.frame', 'duplicated.default',\n            'duplicated.matrix', 'duplicated.numeric_version', 'duplicated.POSIXlt', 'dyn.load', 'dyn.unload', 'eapply', 'eigen',\n            'emptyenv', 'encodeString', 'Encoding', 'Encoding<-', 'env.profile', 'environment', 'environment<-', 'environmentIsLocked',\n            'environmentName', 'eval', 'eval.parent', 'evalq', 'exists', 'exp', 'expand.grid', 'expm1', 'expression', 'F', 'factor',\n            'factorial', 'fifo', 'file', 'file.access', 'file.append', 'file.choose', 'file.copy', 'file.create', 'file.exists',\n            'file.info', 'file.path', 'file.remove', 'file.rename', 'file.show', 'file.symlink', 'Filter', 'Find', 'findInterval',\n            'findPackageEnv', 'findRestart', 'floor', 'flush', 'flush.connection', 'for', 'force', 'formals', 'formals<-',\n            'format', 'format.AsIs', 'format.char', 'format.data.frame', 'format.Date', 'format.default', 'format.difftime',\n            'format.factor', 'format.hexmode', 'format.info', 'format.octmode', 'format.POSIXct', 'format.POSIXlt',\n            'format.pval', 'formatC', 'formatDL', 'forwardsolve', 'function', 'gamma', 'gammaCody', 'gc', 'gc.time',\n            'gcinfo', 'gctorture', 'get', 'getAllConnections', 'getCallingDLL', 'getCallingDLLe', 'getCConverterDescriptions',\n            'getCConverterStatus', 'getConnection', 'getDLLRegisteredRoutines', 'getDLLRegisteredRoutines.character',\n            'getDLLRegisteredRoutines.DLLInfo', 'getenv', 'geterrmessage', 'getExportedValue', 'getHook', 'getLoadedDLLs',\n            'getNamespace', 'getNamespaceExports', 'getNamespaceImports', 'getNamespaceInfo', 'getNamespaceName',\n            'getNamespaceUsers', 'getNamespaceVersion', 'getNativeSymbolInfo', 'getNumCConverters', 'getOption', 'getRversion',\n            'getSrcLines', 'getTaskCallbackNames', 'gettext', 'gettextf', 'getwd', 'gl', 'globalenv', 'gregexpr', 'grep',\n            'grepl', 'gsub', 'gzcon', 'gzfile', 'httpclient', 'I', 'iconv', 'iconvlist', 'icuSetCollate', 'identical', 'identity',\n            'if', 'ifelse', 'Im', 'importIntoEnv', 'inherits', 'integer', 'interaction', 'interactive', 'intersect', 'intToBits',\n            'intToUtf8', 'inverse.rle', 'invisible', 'invokeRestart', 'invokeRestartInteractively', 'is.array', 'is.atomic',\n            'is.call', 'is.character', 'is.complex', 'is.data.frame', 'is.double', 'is.element', 'is.environment',\n            'is.expression', 'is.factor', 'is.finite', 'is.function', 'is.infinite', 'is.integer', 'is.language',\n            'is.list', 'is.loaded', 'is.logical', 'is.matrix', 'is.na', 'is.na.data.frame', 'is.na.POSIXlt', 'is.na<-',\n            'is.na<-.default', 'is.na<-.factor', 'is.name', 'is.nan', 'is.null', 'is.numeric', 'is.numeric_version',\n            'is.numeric.Date', 'is.numeric.POSIXt', 'is.object', 'is.ordered', 'is.package_version', 'is.pairlist', 'is.primitive',\n            'is.qr', 'is.R', 'is.raw', 'is.real', 'is.recursive', 'is.single', 'is.symbol', 'is.table', 'is.unsorted', 'is.vector',\n            'isBaseNamespace', 'isdebugged', 'isIncomplete', 'isNamespace', 'ISOdate', 'ISOdatetime', 'isOpen', 'isRestart', 'isS4',\n            'isSeekable', 'isSymmetric', 'isSymmetric.matrix', 'isTRUE', 'jitter', 'julian', 'julian.Date', 'julian.POSIXt', 'kappa',\n            'kappa.default', 'kappa.lm', 'kappa.qr', 'kappa.tri', 'kronecker', 'l10n_info', 'La.chol', 'La.chol2inv', 'La.eigen',\n            'La.svd', 'labels', 'labels.default', 'lapply', 'lazyLoad', 'lazyLoadDBfetch', 'lbeta', 'lchoose', 'length', 'length<-',\n            'length<-.factor', 'letters', 'LETTERS', 'levels', 'levels.default', 'levels<-', 'levels<-.factor', 'lfactorial', 'lgamma',\n            'library', 'library.dynam', 'library.dynam.unload', 'licence', 'license', 'list', 'list.files', 'load', 'loadedNamespaces',\n            'loadingNamespaceInfo', 'loadNamespace', 'loadURL', 'local', 'lockBinding', 'lockEnvironment', 'log', 'log10', 'log1p', 'log2',\n            'logb', 'logical', 'lower.tri', 'ls', 'machine', 'Machine', 'make.names', 'make.unique', 'makeActiveBinding', 'manglePackageName',\n            'Map', 'mapply', 'margin.table', 'mat.or.vec', 'match', 'match.arg', 'match.call', 'match.fun', 'Math.data.frame', 'Math.Date',\n            'Math.difftime', 'Math.factor', 'Math.POSIXt', 'matrix', 'max', 'max.col', 'mean', 'mean.data.frame', 'mean.Date', 'mean.default',\n            'mean.difftime', 'mean.POSIXct', 'mean.POSIXlt', 'mem.limits', 'memory.profile', 'merge', 'merge.data.frame', 'merge.default',\n            'message', 'mget', 'min', 'missing', 'Mod', 'mode', 'mode<-', 'month.abb', 'month.name', 'months', 'months.Date',\n            'months.POSIXt', 'mostattributes<-', 'names', 'names<-', 'namespaceExport', 'namespaceImport', 'namespaceImportClasses',\n            'namespaceImportFrom', 'namespaceImportMethods', 'nargs', 'nchar', 'ncol', 'NCOL', 'Negate', 'new.env', 'next', 'NextMethod',\n            'ngettext', 'nlevels', 'noquote', 'nrow', 'NROW', 'numeric', 'numeric_version', 'nzchar', 'objects', 'oldClass',\n            'oldClass<-', 'on.exit', 'open', 'open.connection', 'open.srcfile', 'open.srcfilecopy', 'Ops.data.frame', 'Ops.Date',\n            'Ops.difftime', 'Ops.factor', 'Ops.numeric_version', 'Ops.ordered', 'Ops.POSIXt', 'options', 'order', 'ordered',\n            'outer', 'package_version', 'package.description', 'packageEvent', 'packageHasNamespace', 'packageStartupMessage',\n            'packBits', 'pairlist', 'parent.env', 'parent.env<-', 'parent.frame', 'parse', 'parse.dcf', 'parseNamespaceFile',\n            'paste', 'path.expand', 'pentagamma', 'pi', 'pipe', 'Platform', 'pmatch', 'pmax', 'pmax.int', 'pmin', 'pmin.int',\n            'polyroot', 'pos.to.env', 'Position', 'pretty', 'prettyNum', 'print', 'print.AsIs', 'print.atomic', 'print.by',\n            'print.condition', 'print.connection', 'print.data.frame', 'print.Date', 'print.default', 'print.difftime',\n            'print.DLLInfo', 'print.DLLInfoList', 'print.DLLRegisteredRoutines', 'print.factor', 'print.hexmode', 'print.libraryIQR',\n            'print.listof', 'print.NativeRoutineList', 'print.noquote', 'print.numeric_version', 'print.octmode', 'print.packageInfo',\n            'print.POSIXct', 'print.POSIXlt', 'print.proc_time', 'print.restart', 'print.rle', 'print.simple.list',\n            'print.srcfile', 'print.srcref', 'print.summary.table', 'print.table', 'print.warnings', 'printNoClass',\n            'prmatrix', 'proc.time', 'prod', 'prop.table', 'provide', 'psigamma', 'pushBack', 'pushBackLength', 'q', 'qr',\n            'qr.coef', 'qr.default', 'qr.fitted', 'qr.Q', 'qr.qty', 'qr.qy', 'qr.R', 'qr.resid', 'qr.solve', 'qr.X', 'quarters',\n            'quarters.Date', 'quarters.POSIXt', 'quit', 'quote', 'R_system_version', 'R.home', 'R.version', 'R.Version',\n            'R.version.string', 'range', 'range.default', 'rank', 'rapply', 'raw', 'rawConnection', 'rawConnectionValue',\n            'rawShift', 'rawToBits', 'rawToChar', 'rbind', 'rbind.data.frame', 'rcond', 'Re', 'read.dcf', 'read.table.url',\n            'readBin', 'readChar', 'readline', 'readLines', 'real', 'Recall', 'Reduce', 'reg.finalizer', 'regexpr',\n            'registerS3method', 'registerS3methods', 'remove', 'removeCConverter', 'removeTaskCallback', 'rep', 'rep.Date',\n            'rep.factor', 'rep.int', 'rep.numeric_version', 'rep.POSIXct', 'rep.POSIXlt', 'repeat', 'replace', 'replicate',\n            'require', 'restart', 'restartDescription', 'restartFormals', 'retracemem', 'return', 'rev', 'rev.default', 'rle',\n            'rm', 'RNGkind', 'RNGversion', 'round', 'round.Date', 'round.difftime', 'round.POSIXt', 'row', 'row.names',\n            'row.names.data.frame', 'row.names.default', 'row.names<-', 'row.names<-.data.frame', 'row.names<-.default',\n            'rowMeans', 'rownames', 'rownames<-', 'rowsum', 'rowsum.data.frame', 'rowsum.default', 'rowSums', 'sample',\n            'sample.int', 'sapply', 'save', 'save.image', 'saveNamespaceImage', 'scale', 'scale.default', 'scan', 'scan.url',\n            'search', 'searchpaths', 'seek', 'seek.connection', 'seq', 'seq_along', 'seq_len', 'seq.Date', 'seq.default',\n            'seq.int', 'seq.POSIXt', 'sequence', 'serialize', 'set.seed', 'setCConverterStatus', 'setdiff', 'setequal',\n            'setHook', 'setNamespaceInfo', 'setSessionTimeLimit', 'setTimeLimit', 'setwd', 'showConnections', 'shQuote',\n            'sign', 'signalCondition', 'signif', 'simpleCondition', 'simpleError', 'simpleMessage', 'simpleWarning', 'sin',\n            'single', 'sinh', 'sink', 'sink.number', 'slice.index', 'socketConnection', 'socketSelect', 'solve', 'solve.default',\n            'solve.qr', 'sort', 'sort.default', 'sort.int', 'sort.list', 'sort.POSIXlt', 'source', 'source.url', 'split',\n            'split.data.frame', 'split.Date', 'split.default', 'split.POSIXct', 'split<-', 'split<-.data.frame', 'split<-.default',\n            'sprintf', 'sqrt', 'sQuote', 'srcfile', 'srcfilecopy', 'srcref', 'standardGeneric', 'stderr', 'stdin', 'stdout',\n            'stop', 'stopifnot', 'storage.mode', 'storage.mode<-', 'strftime', 'strptime', 'strsplit', 'strtrim', 'structure',\n            'strwrap', 'sub', 'subset', 'subset.data.frame', 'subset.default', 'subset.matrix', 'substitute', 'substr',\n            'substr<-', 'substring', 'substring<-', 'sum', 'summary', 'summary.connection', 'summary.data.frame',\n            'Summary.data.frame', 'summary.Date', 'Summary.Date', 'summary.default', 'Summary.difftime',\n            'summary.factor', 'Summary.factor', 'summary.matrix', 'Summary.numeric_version', 'summary.POSIXct',\n            'Summary.POSIXct', 'summary.POSIXlt', 'Summary.POSIXlt', 'summary.table', 'suppressMessages',\n            'suppressPackageStartupMessages', 'suppressWarnings', 'svd', 'sweep', 'switch', 'symbol.C',\n            'symbol.For', 'sys.call', 'sys.calls', 'Sys.chmod', 'Sys.Date', 'sys.frame', 'sys.frames',\n            'sys.function', 'Sys.getenv', 'Sys.getlocale', 'Sys.getpid', 'Sys.glob', 'Sys.info', 'sys.load.image',\n            'Sys.localeconv', 'sys.nframe', 'sys.on.exit', 'sys.parent', 'sys.parents', 'Sys.putenv',\n            'sys.save.image', 'Sys.setenv', 'Sys.setlocale', 'Sys.sleep', 'sys.source', 'sys.status',\n            'Sys.time', 'Sys.timezone', 'Sys.umask', 'Sys.unsetenv', 'Sys.which', 'system', 'system.file',\n            'system.time', 't', 'T', 't.data.frame', 't.default', 'table', 'tabulate', 'tan', 'tanh', 'tapply',\n            'taskCallbackManager', 'tcrossprod', 'tempdir', 'tempfile', 'testPlatformEquivalence', 'tetragamma',\n            'textConnection', 'textConnectionValue', 'tolower', 'topenv', 'toString', 'toString.default', 'toupper',\n            'trace', 'traceback', 'tracemem', 'tracingState', 'transform', 'transform.data.frame', 'transform.default',\n            'trigamma', 'trunc', 'trunc.Date', 'trunc.POSIXt', 'truncate', 'truncate.connection', 'try', 'tryCatch',\n            'typeof', 'unclass', 'undebug', 'union', 'unique', 'unique.array', 'unique.data.frame', 'unique.default',\n            'unique.matrix', 'unique.numeric_version', 'unique.POSIXlt', 'units', 'units.difftime', 'units<-',\n            'units<-.difftime', 'unix', 'unix.time', 'unlink', 'unlist', 'unloadNamespace', 'unlockBinding',\n            'unname', 'unserialize', 'unsplit', 'untrace', 'untracemem', 'unz', 'upper.tri', 'url', 'UseMethod',\n            'utf8ToInt', 'vector', 'Vectorize', 'version', 'Version', 'warning', 'warnings', 'weekdays',\n            'weekdays.Date', 'weekdays.POSIXt', 'which', 'which.max', 'which.min', 'while', 'with',\n            'with.default', 'withCallingHandlers', 'within', 'within.data.frame', 'within.list', 'withRestarts',\n            'withVisible', 'write', 'write.dcf', 'write.table0', 'writeBin', 'writeChar', 'writeLines', 'xor',\n            'xpdrows.data.frame', 'xtfrm', 'xtfrm.Date', 'xtfrm.default', 'xtfrm.factor', 'xtfrm.numeric_version',\n            'xtfrm.POSIXct', 'xtfrm.POSIXlt', 'xtfrm.Surv', 'zapsmall',\n            ),\n        3 => array( // Datasets\n            'ability.cov', 'airmiles', 'AirPassengers', 'airquality',\n            'anscombe', 'attenu', 'attitude', 'austres', 'beaver1',\n            'beaver2', 'BJsales', 'BJsales.lead', 'BOD', 'cars',\n            'ChickWeight', 'chickwts', 'co2', 'crimtab',\n            'discoveries', 'DNase', 'esoph', 'euro', 'euro.cross',\n            'eurodist', 'EuStockMarkets', 'faithful', 'fdeaths',\n            'Formaldehyde', 'freeny', 'freeny.x', 'freeny.y',\n            'HairEyeColor', 'Harman23.cor', 'Harman74.cor', 'Indometh',\n            'infert', 'InsectSprays', 'iris', 'iris3', 'islands',\n            'JohnsonJohnson', 'LakeHuron', 'ldeaths', 'lh', 'LifeCycleSavings',\n            'Loblolly', 'longley', 'lynx', 'mdeaths', 'morley', 'mtcars',\n            'nhtemp', 'Nile', 'nottem', 'occupationalStatus', 'Orange',\n            'OrchardSprays', 'PlantGrowth', 'precip', 'presidents',\n            'pressure', 'Puromycin', 'quakes', 'randu', 'rivers', 'rock',\n            'Seatbelts', 'sleep', 'stack.loss', 'stack.x', 'stackloss',\n            'state.abb', 'state.area', 'state.center', 'state.division',\n            'state.name', 'state.region', 'state.x77', 'sunspot.month',\n            'sunspot.year', 'sunspots', 'swiss', 'Theoph', 'Titanic', 'ToothGrowth',\n            'treering', 'trees', 'UCBAdmissions', 'UKDriverDeaths', 'UKgas',\n            'USAccDeaths', 'USArrests', 'USJudgeRatings', 'USPersonalExpenditure',\n            'uspop', 'VADeaths', 'volcano', 'warpbreaks', 'women', 'WorldPhones',\n            'WWWusage',\n            ),\n        4 => array( // graphics package\n            'abline', 'arrows', 'assocplot', 'axis', 'Axis', 'axis.Date', 'axis.POSIXct',\n            'axTicks', 'barplot', 'barplot.default', 'box', 'boxplot', 'boxplot.default',\n            'boxplot.matrix', 'bxp', 'cdplot', 'clip', 'close.screen', 'co.intervals',\n            'contour', 'contour.default', 'coplot', 'curve', 'dotchart', 'erase.screen',\n            'filled.contour', 'fourfoldplot', 'frame', 'grconvertX', 'grconvertY', 'grid',\n            'hist', 'hist.default', 'identify', 'image', 'image.default', 'layout',\n            'layout.show', 'lcm', 'legend', 'lines', 'lines.default', 'locator', 'matlines',\n            'matplot', 'matpoints', 'mosaicplot', 'mtext', 'pairs', 'pairs.default',\n            'panel.smooth', 'par', 'persp', 'pie', 'piechart', 'plot', 'plot.default',\n            'plot.design', 'plot.new', 'plot.window', 'plot.xy', 'points', 'points.default',\n            'polygon', 'rect', 'rug', 'screen', 'segments', 'smoothScatter', 'spineplot',\n            'split.screen', 'stars', 'stem', 'strheight', 'stripchart', 'strwidth', 'sunflowerplot',\n            'symbols', 'text', 'text.default', 'title', 'xinch', 'xspline', 'xyinch', 'yinch',\n            ),\n        5 => array( // grDevices pkg\n            'as.graphicsAnnot', 'bitmap', 'blues9', 'bmp', 'boxplot.stats', 'cairo_pdf', 'cairo_ps', 'check.options',\n            'chull', 'CIDFont', 'cm', 'cm.colors', 'col2rgb', 'colorConverter', 'colorRamp', 'colorRampPalette',\n            'colors', 'colorspaces', 'colours', 'contourLines', 'convertColor', 'densCols', 'dev.control', 'dev.copy',\n            'dev.copy2eps', 'dev.copy2pdf', 'dev.cur', 'dev.interactive', 'dev.list', 'dev.new', 'dev.next', 'dev.off',\n            'dev.prev', 'dev.print', 'dev.set', 'dev.size', 'dev2bitmap', 'devAskNewPage', 'deviceIsInteractive',\n            'embedFonts', 'extendrange', 'getGraphicsEvent', 'graphics.off', 'gray', 'gray.colors', 'grey', 'grey.colors',\n            'hcl', 'heat.colors', 'Hershey', 'hsv', 'jpeg', 'make.rgb', 'n2mfrow', 'nclass.FD', 'nclass.scott',\n            'nclass.Sturges', 'palette', 'pdf', 'pdf.options', 'pdfFonts', 'pictex', 'png', 'postscript', 'postscriptFont',\n            'postscriptFonts', 'ps.options', 'quartz', 'quartz.options', 'quartzFont', 'quartzFonts', 'rainbow',\n            'recordGraphics', 'recordPlot', 'replayPlot', 'rgb', 'rgb2hsv', 'savePlot', 'setEPS', 'setPS', 'svg',\n            'terrain.colors', 'tiff', 'topo.colors', 'trans3d', 'Type1Font', 'x11', 'X11', 'X11.options', 'X11Font',\n            'X11Fonts', 'xfig', 'xy.coords', 'xyTable', 'xyz.coords',\n            ),\n        6 => array( // methods package\n            'addNextMethod', 'allGenerics', 'allNames', 'Arith', 'as', 'as<-',\n            'asMethodDefinition', 'assignClassDef', 'assignMethodsMetaData', 'balanceMethodsList',\n            'cacheGenericsMetaData', 'cacheMetaData', 'cacheMethod', 'callGeneric',\n            'callNextMethod', 'canCoerce', 'cbind2', 'checkSlotAssignment', 'classesToAM',\n            'classMetaName', 'coerce', 'coerce<-', 'Compare', 'completeClassDefinition',\n            'completeExtends', 'completeSubclasses', 'Complex', 'conformMethod', 'defaultDumpName',\n            'defaultPrototype', 'doPrimitiveMethod', 'dumpMethod', 'dumpMethods', 'el', 'el<-',\n            'elNamed', 'elNamed<-', 'empty.dump', 'emptyMethodsList', 'existsFunction', 'existsMethod',\n            'extends', 'finalDefaultMethod', 'findClass', 'findFunction', 'findMethod', 'findMethods',\n            'findMethodSignatures', 'findUnique', 'fixPre1.8', 'formalArgs', 'functionBody',\n            'functionBody<-', 'generic.skeleton', 'getAccess', 'getAllMethods', 'getAllSuperClasses',\n            'getClass', 'getClassDef', 'getClasses', 'getClassName', 'getClassPackage', 'getDataPart',\n            'getExtends', 'getFunction', 'getGeneric', 'getGenerics', 'getGroup', 'getGroupMembers',\n            'getMethod', 'getMethods', 'getMethodsForDispatch', 'getMethodsMetaData', 'getPackageName',\n            'getProperties', 'getPrototype', 'getSlots', 'getSubclasses', 'getValidity', 'getVirtual',\n            'hasArg', 'hasMethod', 'hasMethods', 'implicitGeneric', 'initialize', 'insertMethod', 'is',\n            'isClass', 'isClassDef', 'isClassUnion', 'isGeneric', 'isGrammarSymbol', 'isGroup',\n            'isSealedClass', 'isSealedMethod', 'isVirtualClass', 'isXS3Class', 'languageEl', 'languageEl<-',\n            'linearizeMlist', 'listFromMethods', 'listFromMlist', 'loadMethod', 'Logic',\n            'makeClassRepresentation', 'makeExtends', 'makeGeneric', 'makeMethodsList',\n            'makePrototypeFromClassDef', 'makeStandardGeneric', 'matchSignature', 'Math', 'Math2', 'mergeMethods',\n            'metaNameUndo', 'method.skeleton', 'MethodAddCoerce', 'methodSignatureMatrix', 'MethodsList',\n            'MethodsListSelect', 'methodsPackageMetaName', 'missingArg', 'mlistMetaName', 'new', 'newBasic',\n            'newClassRepresentation', 'newEmptyObject', 'Ops', 'packageSlot', 'packageSlot<-', 'possibleExtends',\n            'prohibitGeneric', 'promptClass', 'promptMethods', 'prototype', 'Quote', 'rbind2',\n            'reconcilePropertiesAndPrototype', 'registerImplicitGenerics', 'rematchDefinition',\n            'removeClass', 'removeGeneric', 'removeMethod', 'removeMethods', 'removeMethodsObject', 'representation',\n            'requireMethods', 'resetClass', 'resetGeneric', 'S3Class', 'S3Class<-', 'S3Part', 'S3Part<-', 'sealClass',\n            'seemsS4Object', 'selectMethod', 'selectSuperClasses', 'sessionData', 'setAs', 'setClass', 'setClassUnion',\n            'setDataPart', 'setGeneric', 'setGenericImplicit', 'setGroupGeneric', 'setIs', 'setMethod', 'setOldClass',\n            'setPackageName', 'setPrimitiveMethods', 'setReplaceMethod', 'setValidity', 'show', 'showClass', 'showDefault',\n            'showExtends', 'showMethods', 'showMlist', 'signature', 'SignatureMethod', 'sigToEnv', 'slot', 'slot<-',\n            'slotNames', 'slotsFromS3', 'substituteDirect', 'substituteFunctionArgs', 'Summary', 'superClassDepth',\n            'testInheritedMethods', 'testVirtual', 'traceOff', 'traceOn', 'tryNew', 'trySilent', 'unRematchDefinition',\n            'validObject', 'validSlotNames',\n            ),\n        7 => array( // stats pkg\n            'acf', 'acf2AR', 'add.scope', 'add1', 'addmargins', 'aggregate',\n            'aggregate.data.frame', 'aggregate.default', 'aggregate.ts', 'AIC',\n            'alias', 'anova', 'anova.glm', 'anova.glmlist', 'anova.lm', 'anova.lmlist',\n            'anova.mlm', 'anovalist.lm', 'ansari.test', 'aov', 'approx', 'approxfun',\n            'ar', 'ar.burg', 'ar.mle', 'ar.ols', 'ar.yw', 'arima', 'arima.sim',\n            'arima0', 'arima0.diag', 'ARMAacf', 'ARMAtoMA', 'as.dendrogram', 'as.dist',\n            'as.formula', 'as.hclust', 'as.stepfun', 'as.ts', 'asOneSidedFormula', 'ave',\n            'bandwidth.kernel', 'bartlett.test', 'binom.test', 'binomial', 'biplot',\n            'Box.test', 'bw.bcv', 'bw.nrd', 'bw.nrd0', 'bw.SJ', 'bw.ucv', 'C', 'cancor',\n            'case.names', 'ccf', 'chisq.test', 'clearNames', 'cmdscale', 'coef', 'coefficients',\n            'complete.cases', 'confint', 'confint.default', 'constrOptim', 'contr.helmert',\n            'contr.poly', 'contr.SAS', 'contr.sum', 'contr.treatment', 'contrasts', 'contrasts<-',\n            'convolve', 'cooks.distance', 'cophenetic', 'cor', 'cor.test', 'cov', 'cov.wt',\n            'cov2cor', 'covratio', 'cpgram', 'cutree', 'cycle', 'D', 'dbeta', 'dbinom', 'dcauchy',\n            'dchisq', 'decompose', 'delete.response', 'deltat', 'dendrapply', 'density', 'density.default',\n            'deriv', 'deriv.default', 'deriv.formula', 'deriv3', 'deriv3.default', 'deriv3.formula',\n            'deviance', 'dexp', 'df', 'df.kernel', 'df.residual', 'dfbeta', 'dfbetas', 'dffits',\n            'dgamma', 'dgeom', 'dhyper', 'diff.ts', 'diffinv', 'dist', 'dlnorm', 'dlogis',\n            'dmultinom', 'dnbinom', 'dnorm', 'dpois', 'drop.scope', 'drop.terms', 'drop1',\n            'dsignrank', 'dt', 'dummy.coef', 'dunif', 'dweibull', 'dwilcox', 'ecdf', 'eff.aovlist',\n            'effects', 'embed', 'end', 'estVar', 'expand.model.frame', 'extractAIC', 'factanal',\n            'factor.scope', 'family', 'fft', 'filter', 'fisher.test', 'fitted', 'fitted.values',\n            'fivenum', 'fligner.test', 'formula', 'frequency', 'friedman.test', 'ftable', 'Gamma',\n            'gaussian', 'get_all_vars', 'getInitial', 'glm', 'glm.control', 'glm.fit', 'glm.fit.null',\n            'hasTsp', 'hat', 'hatvalues', 'hatvalues.lm', 'hclust', 'heatmap', 'HoltWinters', 'influence',\n            'influence.measures', 'integrate', 'interaction.plot', 'inverse.gaussian', 'IQR',\n            'is.empty.model', 'is.leaf', 'is.mts', 'is.stepfun', 'is.ts', 'is.tskernel', 'isoreg',\n            'KalmanForecast', 'KalmanLike', 'KalmanRun', 'KalmanSmooth', 'kernapply', 'kernel', 'kmeans',\n            'knots', 'kruskal.test', 'ks.test', 'ksmooth', 'lag', 'lag.plot', 'line', 'lines.ts', 'lm',\n            'lm.fit', 'lm.fit.null', 'lm.influence', 'lm.wfit', 'lm.wfit.null', 'loadings', 'loess',\n            'loess.control', 'loess.smooth', 'logLik', 'loglin', 'lowess', 'ls.diag', 'ls.print', 'lsfit',\n            'mad', 'mahalanobis', 'make.link', 'makeARIMA', 'makepredictcall', 'manova', 'mantelhaen.test',\n            'mauchley.test', 'mauchly.test', 'mcnemar.test', 'median', 'median.default', 'medpolish',\n            'model.extract', 'model.frame', 'model.frame.aovlist', 'model.frame.default', 'model.frame.glm',\n            'model.frame.lm', 'model.matrix', 'model.matrix.default', 'model.matrix.lm', 'model.offset',\n            'model.response', 'model.tables', 'model.weights', 'monthplot', 'mood.test', 'mvfft', 'na.action',\n            'na.contiguous', 'na.exclude', 'na.fail', 'na.omit', 'na.pass', 'napredict', 'naprint', 'naresid',\n            'nextn', 'nlm', 'nlminb', 'nls', 'nls.control', 'NLSstAsymptotic', 'NLSstClosestX', 'NLSstLfAsymptote',\n            'NLSstRtAsymptote', 'numericDeriv', 'offset', 'oneway.test', 'optim', 'optimise', 'optimize',\n            'order.dendrogram', 'p.adjust', 'p.adjust.methods', 'pacf', 'pairwise.prop.test', 'pairwise.t.test',\n            'pairwise.table', 'pairwise.wilcox.test', 'pbeta', 'pbinom', 'pbirthday', 'pcauchy', 'pchisq', 'pexp',\n            'pf', 'pgamma', 'pgeom', 'phyper', 'plclust', 'plnorm', 'plogis', 'plot.density', 'plot.ecdf', 'plot.lm',\n            'plot.mlm', 'plot.spec', 'plot.spec.coherency', 'plot.spec.phase', 'plot.stepfun', 'plot.ts', 'plot.TukeyHSD',\n            'pnbinom', 'pnorm', 'poisson', 'poisson.test', 'poly', 'polym', 'power', 'power.anova.test', 'power.prop.test',\n            'power.t.test', 'PP.test', 'ppoints', 'ppois', 'ppr', 'prcomp', 'predict', 'predict.glm', 'predict.lm',\n            'predict.mlm', 'predict.poly', 'preplot', 'princomp', 'print.anova', 'print.coefmat', 'print.density',\n            'print.family', 'print.formula', 'print.ftable', 'print.glm', 'print.infl', 'print.integrate', 'print.lm',\n            'print.logLik', 'print.terms', 'print.ts', 'printCoefmat', 'profile', 'proj', 'promax', 'prop.test',\n            'prop.trend.test', 'psignrank', 'pt', 'ptukey', 'punif', 'pweibull', 'pwilcox', 'qbeta', 'qbinom',\n            'qbirthday', 'qcauchy', 'qchisq', 'qexp', 'qf', 'qgamma', 'qgeom', 'qhyper', 'qlnorm', 'qlogis',\n            'qnbinom', 'qnorm', 'qpois', 'qqline', 'qqnorm', 'qqnorm.default', 'qqplot', 'qsignrank', 'qt',\n            'qtukey', 'quade.test', 'quantile', 'quantile.default', 'quasi', 'quasibinomial', 'quasipoisson',\n            'qunif', 'qweibull', 'qwilcox', 'r2dtable', 'rbeta', 'rbinom', 'rcauchy', 'rchisq', 'read.ftable',\n            'rect.hclust', 'reformulate', 'relevel', 'reorder', 'replications', 'reshape', 'reshapeLong', 'reshapeWide',\n            'resid', 'residuals', 'residuals.default', 'residuals.glm', 'residuals.lm', 'rexp', 'rf', 'rgamma', 'rgeom',\n            'rhyper', 'rlnorm', 'rlogis', 'rmultinom', 'rnbinom', 'rnorm', 'rpois', 'rsignrank', 'rstandard', 'rstandard.glm',\n            'rstandard.lm', 'rstudent', 'rstudent.glm', 'rstudent.lm', 'rt', 'runif', 'runmed', 'rweibull', 'rwilcox',\n            'scatter.smooth', 'screeplot', 'sd', 'se.contrast', 'selfStart', 'setNames', 'shapiro.test', 'simulate',\n            'smooth', 'smooth.spline', 'smoothEnds', 'sortedXyData', 'spec.ar', 'spec.pgram', 'spec.taper', 'spectrum',\n            'spline', 'splinefun', 'splinefunH', 'SSasymp', 'SSasympOff', 'SSasympOrig', 'SSbiexp', 'SSD', 'SSfol',\n            'SSfpl', 'SSgompertz', 'SSlogis', 'SSmicmen', 'SSweibull', 'start', 'stat.anova', 'step', 'stepfun', 'stl',\n            'StructTS', 'summary.aov', 'summary.aovlist', 'summary.glm', 'summary.infl', 'summary.lm', 'summary.manova',\n            'summary.mlm', 'summary.stepfun', 'supsmu', 'symnum', 't.test', 'termplot', 'terms', 'terms.aovlist',\n            'terms.default', 'terms.formula', 'terms.terms', 'time', 'toeplitz', 'ts', 'ts.intersect', 'ts.plot',\n            'ts.union', 'tsdiag', 'tsp', 'tsp<-', 'tsSmooth', 'TukeyHSD', 'TukeyHSD.aov', 'uniroot', 'update',\n            'update.default', 'update.formula', 'var', 'var.test', 'variable.names', 'varimax', 'vcov', 'weighted.mean',\n            'weighted.residuals', 'weights', 'wilcox.test', 'window', 'window<-', 'write.ftable', 'xtabs',\n            ),\n        8 => array( // utils pkg\n            'alarm', 'apropos', 'argsAnywhere', 'as.person', 'as.personList', 'as.relistable', 'as.roman',\n            'assignInNamespace', 'available.packages', 'browseEnv', 'browseURL', 'browseVignettes', 'bug.report',\n            'capture.output', 'checkCRAN', 'chooseCRANmirror', 'citation', 'citEntry', 'citFooter', 'citHeader',\n            'close.socket', 'combn', 'compareVersion', 'contrib.url', 'count.fields', 'CRAN.packages', 'data',\n            'data.entry', 'dataentry', 'de', 'de.ncols', 'de.restore', 'de.setup', 'debugger', 'demo', 'download.file',\n            'download.packages', 'dump.frames', 'edit', 'emacs', 'example', 'file_test', 'file.edit', 'find', 'fix',\n            'fixInNamespace', 'flush.console', 'formatOL', 'formatUL', 'getAnywhere', 'getCRANmirrors', 'getFromNamespace',\n            'getS3method', 'getTxtProgressBar', 'glob2rx', 'head', 'head.matrix', 'help', 'help.request', 'help.search',\n            'help.start', 'history', 'index.search', 'install.packages', 'installed.packages', 'is.relistable',\n            'limitedLabels', 'loadhistory', 'localeToCharset', 'ls.str', 'lsf.str', 'make.packages.html', 'make.socket',\n            'makeRweaveLatexCodeRunner', 'memory.limit', 'memory.size', 'menu', 'mirror2html', 'modifyList',\n            'new.packages', 'normalizePath', 'nsl', 'object.size', 'old.packages', 'package.contents', 'package.skeleton',\n            'packageDescription', 'packageStatus', 'page', 'person', 'personList', 'pico', 'prompt', 'promptData',\n            'promptPackage', 'rc.getOption', 'rc.options', 'rc.settings', 'rc.status', 'read.csv', 'read.csv2', 'read.delim',\n            'read.delim2', 'read.DIF', 'read.fortran', 'read.fwf', 'read.socket', 'read.table', 'readCitationFile', 'recover',\n            'relist', 'remove.packages', 'Rprof', 'Rprofmem', 'RShowDoc', 'RSiteSearch', 'rtags', 'Rtangle', 'RtangleSetup',\n            'RtangleWritedoc', 'RweaveChunkPrefix', 'RweaveEvalWithOpt', 'RweaveLatex', 'RweaveLatexFinish', 'RweaveLatexOptions',\n            'RweaveLatexSetup', 'RweaveLatexWritedoc', 'RweaveTryStop', 'savehistory', 'select.list', 'sessionInfo',\n            'setRepositories', 'setTxtProgressBar', 'stack', 'Stangle', 'str', 'strOptions', 'summaryRprof', 'Sweave',\n            'SweaveHooks', 'SweaveSyntaxLatex', 'SweaveSyntaxNoweb', 'SweaveSyntConv', 'tail', 'tail.matrix', 'timestamp',\n            'toBibtex', 'toLatex', 'txtProgressBar', 'type.convert', 'unstack', 'unzip', 'update.packages', 'update.packageStatus',\n            'upgrade', 'url.show', 'URLdecode', 'URLencode', 'vi', 'View', 'vignette', 'write.csv', 'write.csv2', 'write.socket',\n            'write.table', 'wsbrowser', 'xedit', 'xemacs', 'zip.file.extract',\n            ),\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>',';','|','<-','->',\n        '^', '-', ':', '::', ':::', '!', '!=', '*', '?',\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => true,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000FF; font-weight: bold;',\n            2 => 'color: #0000FF; font-weight: bold;',\n            3 => 'color: #CC9900; font-weight: bold;',\n            4 => 'color: #0000FF; font-weight: bold;',\n            5 => 'color: #0000FF; font-weight: bold;',\n            6 => 'color: #0000FF; font-weight: bold;',\n            7 => 'color: #0000FF; font-weight: bold;',\n            8 => 'color: #0000FF; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #228B22;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #080;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'METHODS' => array(\n            1 => '',\n            2 => ''\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #080;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color:#A020F0;'\n            ),\n        'SCRIPT' => array(\n            0 => ''            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => 'http://stat.ethz.ch/R-manual/R-devel/library/base/html/{FNAME}.html', // Base Package\n        3 => 'http://stat.ethz.ch/R-manual/R-devel/library/datasets/html/{FNAME}.html', // Datasets\n        4 => 'http://stat.ethz.ch/R-manual/R-devel/library/graphics/html/{FNAME}.html', // Graphics Package\n        5 => 'http://stat.ethz.ch/R-manual/R-devel/library/grDevices/html/{FNAME}.html', // grDevices\n        6 => 'http://stat.ethz.ch/R-manual/R-devel/library/methods/html/{FNAME}.html', // methods\n        7 => 'http://stat.ethz.ch/R-manual/R-devel/library/stats/html/{FNAME}.html', // stats\n        8 => 'http://stat.ethz.ch/R-manual/R-devel/library/utils/html/{FNAME}.html' // utils\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        0 => array(\n            GESHI_SEARCH => \"([^\\w])'([^\\\\n\\\\r']*)'\",\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => \"\\\\1'\",\n            GESHI_AFTER => \"'\"\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\|\\#;>|^&\\\\.])(?<!\\/html\\/)\",\n            'DISALLOWED_AFTER' => \"(?![a-zA-Z0-9_\\|%\\\\-&;\\\\.])\"\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/ruby.php",
    "content": "<?php\n/*************************************************************************************\n * ruby.php\n * --------\n * Author: Moises Deniz\n * Copyright: (c) 2007 Moises Deniz\n * Release Version: 1.0.9.1\n * Date Started: 2007/03/21\n *\n * Ruby language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n * 2007/03/21 (1.0.7.19)\n *   -  Initial release\n *\n *************************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Ruby',\n    'COMMENT_SINGLE' => array(1 => \"#\"),\n    'COMMENT_MULTI' => array(\"=begin\" => \"=end\"),\n    'COMMENT_REGEXP' => array(\n        //Heredoc\n        4 => '/<<\\s*?(\\w+)\\\\n.*?\\\\n\\\\1(?![a-zA-Z0-9])/si',\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', '`','\\''),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n                'alias', 'and', 'begin', 'break', 'case', 'class',\n                'def', 'defined', 'do', 'else', 'elsif', 'end',\n                'ensure', 'for', 'if', 'in', 'module', 'while',\n                'next', 'not', 'or', 'redo', 'rescue', 'yield',\n                'retry', 'super', 'then', 'undef', 'unless',\n                'until', 'when', 'include'\n            ),\n        2 => array(\n                '__FILE__', '__LINE__', 'false', 'nil', 'self', 'true',\n                'return'\n            ),\n        3 => array(\n                'Array', 'Float', 'Integer', 'String', 'at_exit',\n                'autoload', 'binding', 'caller', 'catch', 'chop', 'chop!',\n                'chomp', 'chomp!', 'eval', 'exec', 'exit', 'exit!', 'fail',\n                'fork', 'format', 'gets', 'global_variables', 'gsub', 'gsub!',\n                'iterator?', 'lambda', 'load', 'local_variables', 'loop',\n                'open', 'p', 'print', 'printf', 'proc', 'putc', 'puts',\n                'raise', 'rand', 'readline', 'readlines', 'require', 'select',\n                'sleep', 'split', 'sprintf', 'srand', 'sub', 'sub!', 'syscall',\n                'system', 'trace_var', 'trap', 'untrace_var'\n            ),\n        4 => array(\n                'Abbrev', 'ArgumentError', 'Base64', 'Benchmark',\n                'Benchmark::Tms', 'Bignum', 'Binding', 'CGI', 'CGI::Cookie',\n                'CGI::HtmlExtension', 'CGI::QueryExtension',\n                'CGI::Session', 'CGI::Session::FileStore',\n                'CGI::Session::MemoryStore', 'Class', 'Comparable', 'Complex',\n                'ConditionVariable', 'Continuation', 'Data',\n                'Date', 'DateTime', 'Delegator', 'Dir', 'EOFError', 'ERB',\n                'ERB::Util', 'Enumerable', 'Enumerable::Enumerator', 'Errno',\n                'Exception', 'FalseClass', 'File',\n                'File::Constants', 'File::Stat', 'FileTest', 'FileUtils',\n                'FileUtils::DryRun', 'FileUtils::NoWrite',\n                'FileUtils::StreamUtils_', 'FileUtils::Verbose', 'Find',\n                'Fixnum', 'FloatDomainError', 'Forwardable', 'GC', 'Generator',\n                'Hash', 'IO', 'IOError', 'Iconv', 'Iconv::BrokenLibrary',\n                'Iconv::Failure', 'Iconv::IllegalSequence',\n                'Iconv::InvalidCharacter', 'Iconv::InvalidEncoding',\n                'Iconv::OutOfRange', 'IndexError', 'Interrupt', 'Kernel',\n                'LoadError', 'LocalJumpError', 'Logger', 'Logger::Application',\n                'Logger::Error', 'Logger::Formatter', 'Logger::LogDevice',\n                'Logger::LogDevice::LogDeviceMutex', 'Logger::Severity',\n                'Logger::ShiftingError', 'Marshal', 'MatchData',\n                'Math', 'Matrix', 'Method', 'Module', 'Mutex', 'NameError',\n                'NameError::message', 'NilClass', 'NoMemoryError',\n                'NoMethodError', 'NotImplementedError', 'Numeric', 'Object',\n                'ObjectSpace', 'Observable', 'PStore', 'PStore::Error',\n                'Pathname', 'Precision', 'Proc', 'Process', 'Process::GID',\n                'Process::Status', 'Process::Sys', 'Process::UID', 'Queue',\n                'Range', 'RangeError', 'Rational', 'Regexp', 'RegexpError',\n                'RuntimeError', 'ScriptError', 'SecurityError', 'Set',\n                'Shellwords', 'Signal', 'SignalException', 'SimpleDelegator',\n                'SingleForwardable', 'Singleton', 'SingletonClassMethods',\n                'SizedQueue', 'SortedSet', 'StandardError', 'StringIO',\n                'StringScanner', 'StringScanner::Error', 'Struct', 'Symbol',\n                'SyncEnumerator', 'SyntaxError', 'SystemCallError',\n                'SystemExit', 'SystemStackError', 'Tempfile',\n                'Test::Unit::TestCase', 'Test::Unit', 'Test', 'Thread',\n                'ThreadError', 'ThreadGroup',\n                'ThreadsWait', 'Time', 'TrueClass', 'TypeError', 'URI',\n                'URI::BadURIError', 'URI::Error', 'URI::Escape', 'URI::FTP',\n                'URI::Generic', 'URI::HTTP', 'URI::HTTPS',\n                'URI::InvalidComponentError', 'URI::InvalidURIError',\n                'URI::LDAP', 'URI::MailTo', 'URI::REGEXP',\n                'URI::REGEXP::PATTERN', 'UnboundMethod', 'Vector', 'YAML',\n                'ZeroDivisionError', 'Zlib',\n                'Zlib::BufError', 'Zlib::DataError', 'Zlib::Deflate',\n                'Zlib::Error', 'Zlib::GzipFile', 'Zlib::GzipFile::CRCError',\n                'Zlib::GzipFile::Error', 'Zlib::GzipFile::LengthError',\n                'Zlib::GzipFile::NoFooter', 'Zlib::GzipReader',\n                'Zlib::GzipWriter', 'Zlib::Inflate', 'Zlib::MemError',\n                'Zlib::NeedDict', 'Zlib::StreamEnd', 'Zlib::StreamError',\n                'Zlib::VersionError',\n                'Zlib::ZStream',\n                'HTML::Selector', 'HashWithIndifferentAccess', 'Inflector',\n                'Inflector::Inflections', 'Mime', 'Mime::Type',\n                'OCI8AutoRecover', 'TimeZone', 'XmlSimple'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '%', '&', '*', '|', '/', '<', '>',\n        '+', '-', '=>', '<<'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color:#9966CC; font-weight:bold;',\n            2 => 'color:#0000FF; font-weight:bold;',\n            3 => 'color:#CC0066; font-weight:bold;',\n            4 => 'color:#CC00FF; font-weight:bold;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color:#008000; font-style:italic;',\n            4 => 'color: #cc0000; font-style: italic;',\n            'MULTI' => 'color:#000080; font-style:italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color:#000099;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color:#006600; font-weight:bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color:#996600;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color:#006666;'\n            ),\n        'METHODS' => array(\n            1 => 'color:#9900CC;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color:#006600; font-weight:bold;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color:#ff6633; font-weight:bold;',\n            1 => 'color:#0066ff; font-weight:bold;',\n            2 => 'color:#6666ff; font-weight:bold;',\n            3 => 'color:#ff3333; font-weight:bold;'\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        0 => array(//Variables\n            GESHI_SEARCH => \"([[:space:]])(\\\\$[a-zA-Z_][a-zA-Z0-9_]*)\",\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n        1 => array(//Arrays\n            GESHI_SEARCH => \"([[:space:]])(@[a-zA-Z_][a-zA-Z0-9_]*)\",\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n        2 => \"([A-Z][a-zA-Z0-9_]*::)+[A-Z][a-zA-Z0-9_]*\",//Static OOP symbols\n        3 => array(\n            GESHI_SEARCH => \"([[:space:]]|\\[|\\()(:[a-zA-Z_][a-zA-Z0-9_]*)\",\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        0 => array(\n            '<%' => '%>'\n            )\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        ),\n    'TAB_WIDTH' => 2\n);\n"
  },
  {
    "path": "includes/geshi/rust.php",
    "content": "<?php\n/*************************************************************************************\n * rust.php\n * --------\n * Author: Edward Hart (edward.dan.hart@gmail.com)\n * Copyright: (c) 2013 Edward Hart\n * Release Version: 1.0.9.1\n * Date Started: 2013/10/20\n *\n * Rust language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2014/03/18\n *   -  Added support for raw strings\n *   -  Color symbols\n * 2013/10/20\n *   -  First Release\n *\n * TODO (updated 2013/10/20)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Rust',\n\n    'COMMENT_SINGLE' => array('//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        // Raw strings\n        1 => '/\\\\br(\\\\#*)\".*?\"\\\\1/'\n        ),\n\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[\\\\\\\\nrt\\'\\\"?\\n]#i\",\n        //Hexadecimal Char Specs\n        2 => \"#\\\\\\\\x[\\da-fA-F]{2}#\",\n        //Hexadecimal Char Specs\n        3 => \"#\\\\\\\\u[\\da-fA-F]{4}#\",\n        //Hexadecimal Char Specs\n        4 => \"#\\\\\\\\U[\\da-fA-F]{8}#\",\n        //Octal Char Specs\n        5 => \"#\\\\\\\\[0-7]{1,3}#\"\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n\n    'KEYWORDS' => array(\n        // Keywords\n        1 => array(\n            'alt', 'as', 'assert', 'break', 'const', 'continue', 'copy', 'do',\n            'else', 'enum', 'extern', 'fn', 'for', 'if',\n            'impl', 'in', 'let', 'log', 'loop', 'match', 'mod', 'mut', 'of',\n            'priv', 'pub', 'ref', 'return', 'self', 'static', 'struct', 'super',\n            'to', 'trait', 'type', 'unsafe', 'use', 'with', 'while'\n            ),\n        // Boolean values\n        2 => array( 'true', 'false' ),\n        // Structs and built-in types\n        3 => array(\n            'u8', 'i8',\n            'u16', 'i16',\n            'u32', 'i32',\n            'u64', 'i64',\n            'f32', 'f64',\n            'int', 'uint',\n            'float',\n            'bool',\n            'str', 'char',\n            'Argument', 'AsyncWatcher', 'BorrowRecord', 'BufReader',\n            'BufWriter', 'BufferedReader', 'BufferedStream', 'BufferedWriter',\n            'ByRef', 'ByteIterator', 'CFile', 'CString', 'CStringIterator',\n            'Cell', 'Chain', 'Chan', 'ChanOne', 'CharIterator',\n            'CharOffsetIterator', 'CharRange', 'CharSplitIterator',\n            'CharSplitNIterator', 'ChunkIter', 'Condition', 'ConnectRequest',\n            'Coroutine', 'Counter', 'CrateMap', 'Cycle', 'DeflateWriter',\n            'Display', 'ElementSwaps', 'Enumerate', 'Exp', 'Exp1', 'FileDesc',\n            'FileReader', 'FileStat', 'FileStream', 'FileWriter', 'Filter',\n            'FilterMap', 'FlatMap', 'FormatSpec', 'Formatter', 'FsRequest',\n            'Fuse', 'GarbageCollector', 'GetAddrInfoRequest', 'Handle',\n            'HashMap', 'HashMapIterator', 'HashMapMoveIterator',\n            'HashMapMutIterator', 'HashSet', 'HashSetIterator',\n            'HashSetMoveIterator', 'Hint', 'IdleWatcher', 'InflateReader',\n            'Info', 'Inspect', 'Invert', 'IoError', 'Isaac64Rng', 'IsaacRng',\n            'LineBufferedWriter', 'Listener', 'LocalHeap', 'LocalStorage',\n            'Loop', 'Map', 'MatchesIndexIterator', 'MemReader', 'MemWriter',\n            'MemoryMap', 'ModEntry', 'MoveIterator', 'MovePtrAdaptor',\n            'MoveRevIterator', 'NoOpRunnable', 'NonCopyable', 'Normal',\n            'OSRng', 'OptionIterator', 'Parser', 'Path', 'Peekable',\n            'Permutations', 'Pipe', 'PipeStream', 'PluralArm', 'Port',\n            'PortOne', 'Process', 'ProcessConfig', 'ProcessOptions',\n            'ProcessOutput', 'RC', 'RSplitIterator', 'RandSample', 'Range',\n            'RangeInclusive', 'RangeStep', 'RangeStepInclusive', 'Rc', 'RcMut',\n            'ReaderRng', 'Repeat', 'ReprVisitor', 'RequestData',\n            'ReseedWithDefault', 'ReseedingRng', 'Scan', 'SchedOpts',\n            'SelectArm', 'SharedChan', 'SharedPort', 'SignalWatcher',\n            'SipState', 'Skip', 'SkipWhile', 'SocketAddr', 'SplitIterator',\n            'StackPool', 'StackSegment', 'StandardNormal', 'StdErrLogger',\n            'StdIn', 'StdOut', 'StdReader', 'StdRng', 'StdWriter',\n            'StrSplitIterator', 'StreamWatcher', 'TTY', 'Take', 'TakeWhile',\n            'Task', 'TaskBuilder', 'TaskOpts', 'TcpAcceptor', 'TcpListener',\n            'TcpStream', 'TcpWatcher', 'Timer', 'TimerWatcher', 'TrieMap',\n            'TrieMapIterator', 'TrieSet', 'TrieSetIterator', 'Tube',\n            'UdpSendRequest', 'UdpSocket', 'UdpStream', 'UdpWatcher', 'Unfold',\n            'UnixAcceptor', 'UnixListener', 'UnixStream', 'Unwinder',\n            'UvAddrInfo', 'UvError', 'UvEventLoop', 'UvFileStream',\n            'UvIoFactory', 'UvPausibleIdleCallback', 'UvPipeStream',\n            'UvProcess', 'UvRemoteCallback', 'UvSignal', 'UvTTY',\n            'UvTcpAcceptor', 'UvTcpListener', 'UvTcpStream', 'UvTimer',\n            'UvUdpSocket', 'UvUnboundPipe', 'UvUnixAcceptor', 'UvUnixListener',\n            'VecIterator', 'VecMutIterator', 'Weighted', 'WeightedChoice',\n            'WindowIter', 'WriteRequest', 'XorShiftRng', 'Zip', 'addrinfo',\n            'uv_buf_t', 'uv_err_data', 'uv_process_options_t', 'uv_stat_t',\n            'uv_stdio_container_t', 'uv_timespec_t'\n            ),\n        // Enums\n        4 => array(\n            'Alignment', 'Count', 'Either', 'ExponentFormat', 'FPCategory',\n            'FileAccess', 'FileMode', 'Flag', 'IoErrorKind', 'IpAddr',\n            'KeyValue', 'MapError', 'MapOption', 'MemoryMapKind', 'Method',\n            'NullByteResolution', 'Option', 'Ordering', 'PathPrefix', 'Piece',\n            'PluralKeyword', 'Position', 'Protocol', 'Result', 'SchedHome',\n            'SchedMode', 'SeekStyle', 'SendStr', 'SignFormat',\n            'SignificantDigits', 'Signum', 'SocketType', 'StdioContainer',\n            'TaskResult', 'TaskType', 'UvSocketAddr', 'Void', 'uv_handle_type',\n            'uv_membership', 'uv_req_type'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']',\n        '+', '-', '*', '/', '%',\n        '&', '|', '^', '!', '<', '>', '~', '@',\n        ':',\n        ';', ',',\n        '='\n        ),\n\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true\n        ),\n\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #708;',\n            2 => 'color: #219;',\n            3 => 'color: #05a;',\n            4 => 'color: #800;'\n            ),\n        'COMMENTS' => array(\n            0 => 'color: #a50; font-style: italic;',\n            1 => 'color: #a11;',\n            'MULTI' => 'color: #a50; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #660099; font-weight: bold;',\n            3 => 'color: #660099; font-weight: bold;',\n            4 => 'color: #660099; font-weight: bold;',\n            5 => 'color: #006699; font-weight: bold;',\n            'HARD' => ''\n            ),\n        'STRINGS' => array(\n            0 => 'color: #a11;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000dd;',\n            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'\n            ),\n        'BRACKETS' => array(''),\n        'METHODS' => array(\n            1 => 'color: #164;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '::'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/sas.php",
    "content": "<?php\n/*************************************************************************************\n * sas.php\n * -------\n * Author: Galen Johnson (solitaryr@gmail.com)\n * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2005/12/27\n *\n * SAS language file for GeSHi. Based on the sas vim file.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n *   -  Cleaned up code style\n * 2005/12/27 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2005/12/27)\n * -------------------------\n * * Check highlighting stuff works\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'SAS',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array('/*' => '*/', '*' => ';'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            '_ALL_','_CHARACTER_','_INFILE_','_N_','_NULL_','_NUMERIC_',\n            '_WEBOUT_'\n            ),\n        2 => array(\n            '%BQUOTE','%CMPRES','%COMPSTOR','%DATATYP','%DISPLAY','%DO','%ELSE',\n            '%END','%EVAL','%GLOBAL','%GOTO','%IF','%INDEX','%INPUT','%KEYDEF',\n            '%LABEL','%LEFT','%LENGTH','%LET','%LOCAL','%LOWCASE','%MACRO',\n            '%MEND','%NRBQUOTE','%NRQUOTE','%NRSTR','%PUT','%QCMPRES','%QLEFT',\n            '%QLOWCASE','%QSCAN','%QSUBSTR','%QSYSFUNC','%QTRIM','%QUOTE',\n            '%QUPCASE','%SCAN','%STR','%SUBSTR','%SUPERQ','%SYSCALL',\n            '%SYSEVALF','%SYSEXEC','%SYSFUNC','%SYSGET','%SYSLPUT','%SYSPROD',\n            '%SYSRC','%SYSRPUT','%THEN','%TO','%TRIM','%UNQUOTE','%UNTIL',\n            '%UPCASE','%VERIFY','%WHILE','%WINDOW'\n            ),\n        3 => array(\n            'ABS','ADDR','AIRY','ARCOS','ARSIN','ATAN','ATTRC','ATTRN','BAND',\n            'BETAINV','BLSHIFT','BNOT','BOR','BRSHIFT','BXOR','BYTE','CDF',\n            'CEIL','CEXIST','CINV','CLOSE','CNONCT','COLLATE','COMPBL',\n            'COMPOUND','COMPRESS','COSH','COS','CSS','CUROBS','CV','DACCDBSL',\n            'DACCDB','DACCSL','DACCSYD','DACCTAB','DAIRY','DATETIME','DATEJUL',\n            'DATEPART','DATE','DAY','DCLOSE','DEPDBSL','DEPDB','DEPSL','DEPSYD',\n            'DEPTAB','DEQUOTE','DHMS','DIF','DIGAMMA','DIM','DINFO','DNUM',\n            'DOPEN','DOPTNAME','DOPTNUM','DREAD','DROPNOTE','DSNAME','ERFC',\n            'ERF','EXIST','EXP','FAPPEND','FCLOSE','FCOL','FDELETE','FETCHOBS',\n            'FETCH','FEXIST','FGET','FILEEXIST','FILENAME','FILEREF','FINFO',\n            'FINV','FIPNAMEL','FIPNAME','FIPSTATE','FLOOR','FNONCT','FNOTE',\n            'FOPEN','FOPTNAME','FOPTNUM','FPOINT','FPOS','FPUT','FREAD',\n            'FREWIND','FRLEN','FSEP','FUZZ','FWRITE','GAMINV','GAMMA',\n            'GETOPTION','GETVARC','GETVARN','HBOUND','HMS','HOSTHELP','HOUR',\n            'IBESSEL','INDEXW','INDEXC','INDEX','INPUTN','INPUTC','INPUT',\n            'INTRR','INTCK','INTNX','INT','IRR','JBESSEL','JULDATE','KURTOSIS',\n            'LAG','LBOUND','LEFT','LENGTH','LGAMMA','LIBNAME','LIBREF','LOG10',\n            'LOG2','LOGPDF','LOGPMF','LOGSDF','LOG','LOWCASE','MAX','MDY',\n            'MEAN','MINUTE','MIN','MOD','MONTH','MOPEN','MORT','NETPV','NMISS',\n            'NORMAL','NPV','N','OPEN','ORDINAL','PATHNAME','PDF','PEEKC','PEEK',\n            'PMF','POINT','POISSON','POKE','PROBBETA','PROBBNML','PROBCHI',\n            'PROBF','PROBGAM','PROBHYPR','PROBIT','PROBNEGB','PROBNORM','PROBT',\n            'PUTN','PUTC','PUT','QTR','QUOTE','RANBIN','RANCAU','RANEXP',\n            'RANGAM','RANGE','RANK','RANNOR','RANPOI','RANTBL','RANTRI',\n            'RANUNI','REPEAT','RESOLVE','REVERSE','REWIND','RIGHT','ROUND',\n            'SAVING','SCAN','SDF','SECOND','SIGN','SINH','SIN','SKEWNESS',\n            'SOUNDEX','SPEDIS','SQRT','STDERR','STD','STFIPS','STNAME',\n            'STNAMEL','SUBSTR','SUM','SYMGET','SYSGET','SYSMSG','SYSPROD',\n            'SYSRC','SYSTEM','TANH','TAN','TIMEPART','TIME','TINV','TNONCT',\n            'TODAY','TRANSLATE','TRANWRD','TRIGAMMA','TRIMN','TRIM','TRUNC',\n            'UNIFORM','UPCASE','USS','VARFMT','VARINFMT','VARLABEL','VARLEN',\n            'VARNAME','VARNUM','VARRAYX','VARRAY','VARTYPE','VAR','VERIFY',\n            'VFORMATX','VFORMATDX','VFORMATD','VFORMATNX','VFORMATN',\n            'VFORMATWX','VFORMATW','VFORMAT','VINARRAYX','VINARRAY',\n            'VINFORMATX','VINFORMATDX','VINFORMATD','VINFORMATNX','VINFORMATN',\n            'VINFORMATWX','VINFORMATW','VINFORMAT','VLABELX','VLABEL',\n            'VLENGTHX','VLENGTH','VNAMEX','VNAME','VTYPEX','VTYPE','WEEKDAY',\n            'YEAR','YYQ','ZIPFIPS','ZIPNAME','ZIPNAMEL','ZIPSTATE'\n            ),\n        4 => array(\n            'ABORT','ADD','ALTER','AND','ARRAY','AS','ATTRIB','BY','CALL',\n            'CARDS4','CASCADE','CATNAME','CHECK','CONTINUE','CREATE',\n            'DATALINES4','DELETE','DESCRIBE','DISPLAY','DISTINCT','DM','DROP',\n            'ENDSAS','FILE','FOOTNOTE','FOREIGN','FORMAT','FROM',\n            'GOTO','GROUP','HAVING','IN','INFILE','INFORMAT',\n            'INSERT','INTO','KEEP','KEY','LABEL','LEAVE',\n            'LIKE','LINK','LIST','LOSTCARD','MERGE','MESSAGE','MISSING',\n            'MODIFY','MSGTYPE','NOT','NULL','ON','OPTIONS','OR','ORDER',\n            'OUTPUT','PAGE','PRIMARY','REDIRECT','REFERENCES','REMOVE',\n            'RENAME','REPLACE','RESET','RESTRICT','RETAIN','RETURN','SELECT',\n            'SET','SKIP','STARTSAS','STOP','SYSTASK','TABLE','TITLE','UNIQUE',\n            'UPDATE','VALIDATE','VIEW','WAITSAS','WHERE','WINDOW','X'\n            ),\n        5 => array(\n            'DO','ELSE','END','IF','THEN','UNTIL','WHILE'\n            ),\n        6 => array(\n            'RUN','QUIT','DATA'\n            ),\n        7 => array(\n            'ERROR'\n            ),\n        8 => array(\n            'WARNING'\n            ),\n        9 => array(\n            'NOTE'\n            )\n        ),\n    'SYMBOLS' => array(\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false,\n        8 => false,\n        9 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000ff;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #0000ff;',\n            4 => 'color: #0000ff;',\n            5 => 'color: #0000ff;',\n            6 => 'color: #000080; font-weight: bold;',\n            7 => 'color: #ff0000;',\n            8 => 'color: #00ff00;',\n            9 => 'color: #0000ff;'\n            ),\n        'COMMENTS' => array(\n//            1 => 'color: #006400; font-style: italic;',\n            'MULTI' => 'color: #006400; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #a020f0;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #2e8b57; font-weight: bold;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            3 => ''\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #0000ff; font-weight: bold;',\n            1 => 'color: #000080; font-weight: bold;',\n            2 => 'color: #006400; font-style: italic;',\n            3 => 'color: #006400; font-style: italic;',\n            4 => 'color: #006400; font-style: italic;',\n            5 => 'color: #ff0000; font-weight: bold;',\n            6 => 'color: #00ff00; font-style: italic;',\n            7 => 'color: #0000ff; font-style: normal;',\n            8 => 'color: #b218b2; font-weight: bold;',\n            9 => 'color: #b218b2; font-weight: bold;'\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => '',\n        9 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        0 => \"&amp;[a-zA-Z_][a-zA-Z0-9_]*\",\n        1 => array(//Procedures\n            GESHI_SEARCH => '(^\\\\s*)(PROC \\\\w+)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'im',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n        2 => array(\n            GESHI_SEARCH => '(^\\\\s*)(\\\\*.*;)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'im',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n        3 => array(\n            GESHI_SEARCH => '(.*;\\\\s*)(\\\\*.*;)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'im',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n        4 => array(\n            GESHI_SEARCH => '(^\\\\s*)(%\\\\*.*;)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'im',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n        5 => array(//Error messages\n            GESHI_SEARCH => '(^ERROR.*)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'im',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        6 => array(//Warning messages\n            GESHI_SEARCH => '(^WARNING.*)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'im',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        7 => array(//Notice messages\n            GESHI_SEARCH => '(^NOTE.*)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'im',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        8 => array(\n            GESHI_SEARCH => '(^\\\\s*)(CARDS.*)(^\\\\s*;\\\\s*$)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'sim',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3'\n            ),\n        9 => array(\n            GESHI_SEARCH => '(^\\\\s*)(DATALINES.*)(^\\\\s*;\\\\s*$)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'sim',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3'\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/sass.php",
    "content": "<?php\n/*************************************************************************************\n * sass.php\n * -------\n * Author: Javier Eguiluz (javier.eguiluz@gmail.com)\n * Copyright: (c) 2014 Javier Eguiluz (javier.eguiluz@gmail.com)\n * Release Version: 1.0.9.1\n * Date Started: 2014/05/10\n *\n * SASS language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2014/05/10 (1.0.0)\n *   -  First Release\n *\n *************************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Sass',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', \"'\"),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        // properties\n        1 => array(\n            'azimuth',\n            'background-attachment',\n            'background-color',\n            'background-image',\n            'background-position',\n            'background-repeat',\n            'background',\n            'border-bottom-color',\n            'border-radius',\n            'border-top-left-radius',\n            'border-top-right-radius',\n            'border-bottom-right-radius',\n            'border-bottom-left-radius',\n            'border-bottom-style',\n            'border-bottom-width',\n            'border-left-color',\n            'border-left-style',\n            'border-left-width',\n            'border-right',\n            'border-right-color',\n            'border-right-style',\n            'border-right-width',\n            'border-top-color',\n            'border-top-style',\n            'border-top-width',\n            'border-bottom',\n            'border-collapse',\n            'border-left',\n            'border-width',\n            'border-color',\n            'border-spacing',\n            'border-style',\n            'border-top',\n            'border',\n            'box-shadow',\n            'caption-side',\n            'clear',\n            'clip',\n            'color',\n            'content',\n            'counter-increment',\n            'counter-reset',\n            'cue-after',\n            'cue-before',\n            'cue',\n            'cursor',\n            'direction',\n            'display',\n            'elevation',\n            'empty-cells',\n            'float',\n            'font-family',\n            'font-size',\n            'font-size-adjust',\n            'font-stretch',\n            'font-style',\n            'font-variant',\n            'font-weight',\n            'font',\n            'line-height',\n            'letter-spacing',\n            'list-style',\n            'list-style-image',\n            'list-style-position',\n            'list-style-type',\n            'margin-bottom',\n            'margin-left',\n            'margin-right',\n            'margin-top',\n            'margin',\n            'marker-offset',\n            'marks',\n            'max-height',\n            'max-width',\n            'min-height',\n            'min-width',\n            'orphans',\n            'outline',\n            'outline-color',\n            'outline-style',\n            'outline-width',\n            'overflow',\n            'padding-bottom',\n            'padding-left',\n            'padding-right',\n            'padding-top',\n            'padding',\n            'page',\n            'page-break-after',\n            'page-break-before',\n            'page-break-inside',\n            'pause-after',\n            'pause-before',\n            'pause',\n            'pitch',\n            'pitch-range',\n            'play-during',\n            'position',\n            'quotes',\n            'richness',\n            'right',\n            'size',\n            'speak-header',\n            'speak-numeral',\n            'speak-punctuation',\n            'speak',\n            'speech-rate',\n            'stress',\n            'table-layout',\n            'text-align',\n            'text-decoration',\n            'text-indent',\n            'text-shadow',\n            'text-transform',\n            'top',\n            'unicode-bidi',\n            'vertical-align',\n            'visibility',\n            'voice-family',\n            'volume',\n            'white-space',\n            'widows',\n            'width',\n            'word-spacing',\n            'z-index',\n            'bottom',\n            'left',\n            'height',\n            // media queries\n            'screen',\n            'orientation',\n            'min-device-width',\n            'max-device-width',\n        ),\n        // reserved words for values\n        2 => array(\n            // colors\n            'aqua',\n            'black',\n            'blue',\n            'fuchsia',\n            'gray',\n            'green',\n            'lime',\n            'maroon',\n            'navy',\n            'olive',\n            'orange',\n            'purple',\n            'red',\n            'silver',\n            'teal',\n            'white',\n            'yellow',\n            // media queries\n            'landscape',\n            'portrait',\n            // other\n            'above',\n            'absolute',\n            'always',\n            'armenian',\n            'aural',\n            'auto',\n            'avoid',\n            'baseline',\n            'behind',\n            'below',\n            'bidi-override',\n            'blink',\n            'block',\n            'bold',\n            'bolder',\n            'both',\n            'capitalize',\n            'center-left',\n            'center-right',\n            'center',\n            'circle',\n            'cjk-ideographic',\n            'close-quote',\n            'collapse',\n            'condensed',\n            'continuous',\n            'crop',\n            'crosshair',\n            'cross',\n            'cursive',\n            'dashed',\n            'decimal-leading-zero',\n            'decimal',\n            'default',\n            'digits',\n            'disc',\n            'dotted',\n            'double',\n            'e-resize',\n            'embed',\n            'extra-condensed',\n            'extra-expanded',\n            'expanded',\n            'fantasy',\n            'far-left',\n            'far-right',\n            'faster',\n            'fast',\n            'fixed',\n            'georgian',\n            'groove',\n            'hebrew',\n            'help',\n            'hidden',\n            'hide',\n            'higher',\n            'high',\n            'hiragana-iroha',\n            'hiragana',\n            'icon',\n            'inherit',\n            'inline-table',\n            'inline',\n            'inline-block',\n            'inset',\n            'inside',\n            'italic',\n            'justify',\n            'katakana-iroha',\n            'katakana',\n            'larger',\n            'large',\n            'left-side',\n            'leftwards',\n            'level',\n            'lighter',\n            'line-through',\n            'list-item',\n            'loud',\n            'lower-alpha',\n            'lower-greek',\n            'lower-roman',\n            'lowercase',\n            'ltr',\n            'lower',\n            'low',\n            'medium',\n            'message-box',\n            'middle',\n            'monospace',\n            'n-resize',\n            'narrower',\n            'ne-resize',\n            'no-close-quote',\n            'no-open-quote',\n            'no-repeat',\n            'none',\n            'normal',\n            'nowrap',\n            'nw-resize',\n            'oblique',\n            'once',\n            'open-quote',\n            'outset',\n            'outside',\n            'overline',\n            'pointer',\n            'px',\n            'relative',\n            'repeat-x',\n            'repeat-y',\n            'repeat',\n            'ridge',\n            'right-side',\n            'rightwards',\n            's-resize',\n            'sans-serif',\n            'scroll',\n            'se-resize',\n            'semi-condensed',\n            'semi-expanded',\n            'separate',\n            'serif',\n            'show',\n            'silent',\n            'slow',\n            'slower',\n            'small-caps',\n            'small-caption',\n            'smaller',\n            'soft',\n            'solid',\n            'spell-out',\n            'square',\n            'static',\n            'status-bar',\n            'super',\n            'sw-resize',\n            'table-caption',\n            'table-cell',\n            'table-column',\n            'table-column-group',\n            'table-footer-group',\n            'table-header-group',\n            'table-row',\n            'table-row-group',\n            'text',\n            'text-bottom',\n            'text-top',\n            'thick',\n            'thin',\n            'transparent',\n            'ultra-condensed',\n            'ultra-expanded',\n            'underline',\n            'upper-alpha',\n            'upper-latin',\n            'upper-roman',\n            'uppercase',\n            'url',\n            'visible',\n            'w-resize',\n            'wait',\n            'wider',\n            'x-fast',\n            'x-high',\n            'x-large',\n            'x-loud',\n            'x-low',\n            'x-small',\n            'x-soft',\n            'xx-large',\n            'xx-small',\n            'yes'\n        ),\n        // directives\n        3 => array(\n            '@at-root',\n            '@charset',\n            '@content',\n            '@debug',\n            '@each',\n            '@else',\n            '@elseif',\n            '@else if',\n            '@extend',\n            '@font-face',\n            '@for',\n            '@function',\n            '@if',\n            '@import',\n            '@include',\n            '@media',\n            '@mixin',\n            '@namespace',\n            '@page',\n            '@return',\n            '@warn',\n            '@while',\n        ),\n        // built-in Sass functions\n        4 => array(\n            'rgb',\n            'rgba',\n            'mix',\n            'hsl',\n            'hsla',\n            'hue',\n            'saturation',\n            'lightness',\n            'adjust-hue',\n            'lighten',\n            'darken',\n            'saturate',\n            'desaturate',\n            'grayscale',\n            'complement',\n            'invert',\n            'alpha',\n            'opacify',\n            'transparentize',\n            'adjust-color',\n            'scale-color',\n            'change-color',\n            'ie-hex-str',\n            'unquote',\n            'quote',\n            'str-length',\n            'str-insert',\n            'str-index',\n            'str-slice',\n            'to-upper-case',\n            'to-lower-case',\n            'percentage',\n            'round',\n            'ceil',\n            'floor',\n            'abs',\n            'min',\n            'max',\n            'random',\n            'length',\n            'nth',\n            'join',\n            'append',\n            'zip',\n            'index',\n            'list-separator',\n            'map-get',\n            'map-merge',\n            'map-remove',\n            'map-keys',\n            'map-values',\n            'map-has-key',\n            'keywords',\n            'feature-exists',\n            'variable-exists',\n            'global-variable-exists',\n            'function-exists',\n            'mixin-exists',\n            'inspect',\n            'type-of',\n            'unit',\n            'unitless',\n            'comparable',\n            'call',\n            'if',\n            'unique-id',\n        ),\n        // reserved words\n        5 => array(\n            '!important',\n            '!default',\n            '!optional',\n            'true',\n            'false',\n            'with',\n            'without',\n            'null',\n            'from',\n            'through',\n            'to',\n            'in',\n            'and',\n            'or',\n            'only',\n            'not',\n        ),\n    ),\n    'SYMBOLS' => array(\n        '(',\n        ')',\n        '{',\n        '}',\n        ':',\n        ';',\n        '>',\n        '+',\n        '*',\n        ',',\n        '^',\n        '=',\n        '&',\n        '~',\n        '!',\n        '%',\n        '?',\n        '...',\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #993333;',\n            3 => 'color: #990000;',\n            4 => 'color: #000000; font-weight: bold;',\n            5 => 'color: #009900;',\n        ),\n        'COMMENTS' => array(\n            1 => 'color: #006600; font-style: italic;',\n            'MULTI' => 'color: #006600; font-style: italic;'\n        ),\n        'ESCAPE_CHAR' => array(),\n        'BRACKETS' => array(\n            0 => 'color: #00AA00;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n        ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n        ),\n        'METHODS' => array(),\n        'SYMBOLS' => array(\n            0 => 'color: #00AA00;'\n        ),\n        'SCRIPT' => array(),\n        'REGEXPS' => array(\n            0 => 'color: #cc00cc;',\n            1 => 'color: #6666ff;',\n            2 => 'color: #3333ff;',\n            3 => 'color: #933;',\n            4 => 'color: #ff6633;',\n            5 => 'color: #0066ff;',\n        )\n    ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n    ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        // Variables\n        0 => \"[$][a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*\",\n        // Hexadecimal colors\n        1 => \"\\#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})\",\n        // CSS Pseudo classes\n        // note: & is needed for &gt; (i.e. > )\n        2 => \"(?<!\\\\\\\\):(?!\\d)[a-zA-Z0-9\\-]+\\b(?:\\s*(?=[\\{\\.#a-zA-Z,:+*&](.|\\n)|<\\|))\",\n        // Measurements\n        3 => \"[+\\-]?(\\d+|(\\d*\\.\\d+))(em|ex|pt|px|cm|in|%)\",\n        // Interpolation\n        4 => \"(\\#\\{.*\\})\",\n        // Browser prefixed properties\n        5 => \"(\\-(moz|ms|o|webkit)\\-[a-z\\-]*)\",\n    ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'TAB_WIDTH' => 2,\n);\n"
  },
  {
    "path": "includes/geshi/scala.php",
    "content": "<?php\n/*************************************************************************************\n * scala.php\n * ----------\n * Author: Franco Lombardo (franco@francolombardo.net)\n * Copyright: (c) 2008 Franco Lombardo, Benny Baumann\n * Release Version: 1.0.9.1\n * Date Started: 2008/02/08\n *\n * Scala language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/02/08 (1.0.7.22)\n *   -  First Release\n *\n * TODO (updated 2007/04/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Scala',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(2 => \"/\\\\'(?!\\w\\\\'|\\\\\\\\)\\w+(?=\\s)/\"),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\",'\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[nfrtv\\$\\\"\\n\\\\\\\\]#i\",\n        //Hexadecimal Char Specs\n        2 => \"#\\\\\\\\x[\\da-fA-F]{1,2}#i\",\n        //Hexadecimal Char Specs (unicode)\n        3 => \"#\\\\\\\\u[\\da-fA-F]{1,4}#\",\n        //Hexadecimal Char Specs (Extended Unicode)\n        4 => \"#\\\\\\\\U[\\da-fA-F]{1,8}#\",\n        ),\n    'KEYWORDS' => array(\n        1 => array(\n            'abstract', 'case', 'catch', 'class', 'def',\n            'do', 'else', 'extends', 'false', 'final',\n            'finally', 'for', 'forSome', 'if', 'implicit',\n            'import', 'match', 'new', 'null', 'object',\n            'override', 'package', 'private', 'protected', 'requires',\n            'return', 'sealed', 'super', 'this', 'throw',\n            'trait', 'try', 'true', 'type', 'val',\n            'var', 'while', 'with', 'yield'\n            ),\n        2 => array(\n            'void', 'double', 'int', 'boolean', 'byte', 'short', 'long', 'char', 'float'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '*', '&', '%', '!', ';', '<', '>', '?',\n        '_', ':', '=', '=>', '<<:',\n        '<%', '>:', '#', '@'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000ff; font-weight: bold;',\n            2 => 'color: #9999cc; font-weight: bold;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000; font-style: italic;',\n            2 => 'color: #CC66FF;',\n            'MULTI' => 'color: #00ff00; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #6666ff; font-weight: bold;',\n            1 => 'color: #6666ff; font-weight: bold;',\n            2 => 'color: #5555ff; font-weight: bold;',\n            3 => 'color: #4444ff; font-weight: bold;',\n            4 => 'color: #3333ff; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #F78811;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #6666FF;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #F78811;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #000000;',\n            2 => 'color: #000000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000080;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => 'http://scala-lang.org',\n        2 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/scheme.php",
    "content": "<?php\n/*************************************************************************************\n * scheme.php\n * ----------\n * Author: Jon Raphaelson (jonraphaelson@gmail.com)\n * Copyright: (c) 2005 Jon Raphaelson, Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/08/30\n *\n * Scheme language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2005/09/22 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2005/09/22)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Scheme',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array('#|' => '|#'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'abs', 'acos', 'and', 'angle', 'append', 'appply', 'approximate',\n            'asin', 'assoc', 'assq', 'assv', 'atan',\n\n            'begin', 'boolean?', 'bound-identifier=?',\n\n            'caar', 'caddr', 'cadr', 'call-with-current-continuation',\n            'call-with-input-file', 'call-with-output-file', 'call/cc', 'car',\n            'case', 'catch', 'cdddar', 'cddddr', 'cdr', 'ceiling', 'char->integer',\n            'char-alphabetic?', 'char-ci<=?', 'char-ci<?', 'char-ci?', 'char-ci>=?',\n            'char-ci>?', 'char-ci=?', 'char-downcase', 'char-lower-case?',\n            'char-numeric', 'char-ready', 'char-ready?', 'char-upcase',\n            'char-upper-case?', 'char-whitespace?', 'char<=?', 'char<?', 'char=?',\n            'char>=?', 'char>?', 'char?', 'close-input-port', 'close-output-port',\n            'complex?', 'cond', 'cons', 'construct-identifier', 'cos',\n            'current-input-port', 'current-output-port',\n\n            'd', 'define', 'define-syntax', 'delay', 'denominator', 'display', 'do',\n\n            'e', 'eof-object?', 'eq?', 'equal?', 'eqv?', 'even?', 'exact->inexact',\n            'exact?', 'exp', 'expt', 'else',\n\n            'f', 'floor', 'for-each', 'force', 'free-identifer=?',\n\n            'gcd', 'gen-counter', 'gen-loser', 'generate-identifier',\n\n            'identifier->symbol', 'identifier', 'if', 'imag-part', 'inexact->exact',\n            'inexact?', 'input-port?', 'integer->char', 'integer?', 'integrate-system',\n\n            'l', 'lambda', 'last-pair', 'lcm', 'length', 'let', 'let*', 'letrec',\n            'list', 'list->string', 'list->vector', 'list-ref', 'list-tail', 'list?',\n            'load', 'log',\n\n            'magnitude', 'make-polar', 'make-promise', 'make-rectangular',\n            'make-string', 'make-vector', 'map', 'map-streams', 'max', 'member',\n            'memq', 'memv', 'min', 'modulo',\n\n            'negative', 'newline', 'nil', 'not', 'null?', 'number->string', 'number?',\n            'numerator',\n\n            'odd?', 'open-input-file', 'open-output-file', 'or', 'output-port',\n\n            'pair?', 'peek-char', 'positive?', 'procedure?',\n\n            'quasiquote', 'quote', 'quotient',\n\n            'rational', 'rationalize', 'read', 'read-char', 'real-part', 'real?',\n            'remainder', 'return', 'reverse',\n\n            's', 'sequence', 'set!', 'set-char!', 'set-cdr!', 'sin', 'sqrt', 'string',\n            'string->list', 'string->number', 'string->symbol', 'string-append',\n            'string-ci<=?', 'string-ci<?', 'string-ci=?', 'string-ci>=?',\n            'string-ci>?', 'string-copy', 'string-fill!', 'string-length',\n            'string-ref', 'string-set!', 'string<=?', 'string<?', 'string=?',\n            'string>=?', 'string>?', 'string?', 'substring', 'symbol->string',\n            'symbol?', 'syntax', 'syntax-rules',\n\n            't', 'tan', 'template', 'transcript-off', 'transcript-on', 'truncate',\n\n            'unquote', 'unquote-splicing', 'unwrap-syntax',\n\n            'vector', 'vector->list', 'vector-fill!', 'vector-length', 'vector-ref',\n            'vector-set!', 'vector?',\n\n            'with-input-from-file', 'with-output-to-file', 'write', 'write-char',\n\n            'zero?'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>',';','|'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/scilab.php",
    "content": "<?php\n/*************************************************************************************\n * scilab.php\n * --------\n * Author: Christophe David (geshi@christophedavid.org)\n * Copyright: (c) 2008 Christophe David (geshi@christophedavid.org)\n * Release Version: 1.0.9.1\n * Date Started: 2008/08/04\n *\n * SciLab language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/08/25 (1.0.8.1)\n *   - Corrected with the help of Benny Baumann (BenBE@geshi.org)\n * 2008/08/04 (0.0.0.1)\n *   - First beta Release - known problem with ' used to transpose matrices considered as start of strings\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'SciLab',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        2 => \"/(?<=\\)|\\]|\\w)'/\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'HARDQUOTE' => array(\"'\", \"'\"),\n    'HARDESCAPE' => array(),\n    'KEYWORDS' => array(\n        1 => array(\n            'if', 'else', 'elseif', 'end', 'select', 'case', 'for', 'while', 'break'\n            ),\n        2 => array(\n            'STDIN', 'STDOUT', 'STDERR',\n            '%i', '%pi', '%e', '%eps', '%nan', '%inf', '%s', '%t', '%f',\n            'usual', 'polynomial', 'boolean', 'character', 'function', 'rational', 'state-space',\n            'sparse', 'boolean sparse', 'list', 'tlist', 'library', 'endfunction'\n            ),\n        3 => array(\n            '%asn', '%helps', '%k', '%sn', 'abcd', 'abinv', 'abort', 'about', 'About_M2SCI_tools',\n            'abs', 'acos', 'acosh', 'acoshm', 'acosm', 'AdCommunications', 'add_demo', 'add_edge',\n            'add_help_chapter', 'add_node', 'add_palette', 'addcolor', 'addf', 'addinter', 'addmenu',\n            'adj_lists', 'adj2sp', 'aff2ab', 'alufunctions', 'amell', 'analpf', 'analyze', 'and',\n            'ans', 'apropos', 'arc_graph', 'arc_number', 'arc_properties', 'argn', 'arhnk', 'arl2',\n            'arma', 'arma2p', 'armac', 'armax', 'armax1', 'arsimul', 'artest', 'articul', 'ascii',\n            'asciimat', 'asin', 'asinh', 'asinhm', 'asinm', 'assignation', 'atan', 'atanh', 'atanhm',\n            'atanm', 'augment', 'auread', 'auwrite', 'axes_properties', 'axis_properties', 'backslash',\n            'balanc', 'balreal', 'bandwr', 'banner','bar', 'barh', 'barhomogenize', 'basename', 'bdiag',\n            'beep', 'besselh', 'besseli', 'besselj', 'besselk', 'bessely', 'best_match', 'beta','bezout',\n            'bifish', 'bilin', 'binomial', 'black', 'bloc2exp', 'bloc2ss', 'bode', 'bool2s',\n            'boucle', 'brackets', 'browsevar', 'bsplin3val', 'bstap', 'buttmag', 'buttondialog',\n            'bvode', 'bvodeS', 'c_link', 'cainv', 'calendar', 'calerf', 'calfrq', 'call', 'canon', 'casc',\n            'cat', 'catch', 'ccontrg', 'cd', 'cdfbet', 'cdfbin', 'cdfchi', 'cdfchn', 'cdff', 'cdffnc',\n            'cdfgam', 'cdfnbn', 'cdfnor', 'cdfpoi', 'cdft', 'ceil', 'cell', 'cell2mat', 'cellstr', 'center',\n            'cepstrum', 'chain_struct', 'chaintest', 'champ', 'champ_properties', 'champ1', 'char', 'chart',\n            'chartooem', 'chdir', 'cheb1mag', 'cheb2mag', 'check_graph', 'chepol', 'chfact', 'chol', 'chsolve',\n            'circuit', 'classmarkov', 'clc', 'clean', 'clear', 'clear_pixmap', 'clearfun', 'clearglobal','clf',\n            'clipboard', 'close', 'cls2dls', 'cmb_lin', 'cmndred', 'cmoment', 'code2str', 'coeff', 'coff', 'coffg',\n            'colcomp', 'colcompr', 'colinout', 'colon', 'color', 'color_list', 'colorbar', 'colordef', 'colormap',\n            'colregul', 'comma', 'comments', 'comp', 'companion', 'comparison', 'Compound_properties', 'con_nodes',\n            'cond', 'config', 'configure_msvc', 'conj', 'connex', 'console', 'cont_frm', 'cont_mat', 'Contents',\n            'continue', 'contour', 'contour2d', 'contour2di', 'contourf', 'contr', 'contract_edge', 'contrss',\n            'convex_hull', 'convol', 'convstr', 'copfac', 'copy', 'corr', 'correl', 'cos', 'cosh', 'coshm',\n            'cosm', 'cotg', 'coth', 'cothm', 'covar', 'create_palette', 'cshep2d', 'csim', 'cspect', 'Cste',\n            'ctr_gram', 'cumprod', 'cumsum', 'cycle_basis', 'czt', 'dasrt', 'dassl', 'datafit', 'date', 'datenum',\n            'datevec', 'dbphi', 'dcf', 'ddp', 'debug', 'dec2hex', 'deff', 'definedfields', 'degree', 'delbpt',\n            'delete', 'delete_arcs', 'delete_nodes', 'delip', 'delmenu', 'demoplay', 'denom', 'derivat', 'derivative',\n            'des2ss', 'des2tf', 'det', 'determ', 'detr', 'detrend', 'dft', 'dhinf', 'dhnorm', 'diag', 'diary',\n            'diff', 'diophant', 'dir', 'dirname', 'disp', 'dispbpt', 'dispfiles', 'dlgamma', 'dnaupd', 'do', 'dot',\n            'double', 'dragrect', 'draw', 'drawaxis', 'drawlater', 'drawnow', 'driver', 'dsaupd', 'dscr',\n            'dsearch', 'dsimul', 'dt_ility', 'dtsi', 'edge_number', 'edit', 'edit_curv', 'edit_error',\n            'edit_graph', 'edit_graph_menus', 'editvar', 'eigenmarkov', 'ell1mag',\n            'empty', 'emptystr', 'eqfir', 'eqiir', 'equal', 'Equal', 'equil', 'equil1',\n            'ereduc', 'erf', 'erfc', 'erfcx', 'errbar', 'errcatch', 'errclear', 'error', 'error_table', 'etime',\n            'eval', 'eval_cshep2d', 'eval3d', 'eval3dp', 'evans', 'evstr', 'excel2sci', 'exec', 'execstr', 'exists',\n            'exit', 'exp', 'expm', 'external', 'extraction', 'eye', 'fac3d', 'factorial', 'factors', 'faurre', 'fchamp',\n            'fcontour', 'fcontour2d', 'fec', 'fec_properties', 'feedback', 'feval', 'ffilt', 'fft', 'fft2', 'fftshift',\n            'fgrayplot', 'figure', 'figure_properties', 'figure_style', 'file', 'fileinfo', 'fileparts', 'filter', 'find',\n            'find_freq', 'find_path', 'findABCD', 'findAC', 'findBD', 'findBDK', 'findm', 'findmsvccompiler', 'findobj',\n            'findR', 'findx0BD', 'firstnonsingleton', 'fit_dat', 'fix', 'floor', 'flts', 'foo', 'format',\n            'formatman', 'fort', 'fourplan', 'fplot2d', 'fplot3d', 'fplot3d1', 'fprintf', 'fprintfMat', 'frep2tf',\n            'freq', 'freson', 'frexp', 'frfit', 'frmag', 'fscanf', 'fscanfMat', 'fsfirlin', 'fsolve', 'fspecg',\n            'fstabst', 'fstair', 'ftest', 'ftuneq', 'full', 'fullfile', 'fullrf', 'fullrfk', 'fun2string', 'Funcall',\n            'funcprot', 'functions', 'funptr', 'fusee', 'G_make', 'g_margin', 'gainplot', 'gamitg',\n            'gamma', 'gammaln', 'gca', 'gcare', 'gcd', 'gce', 'gcf', 'gda', 'gdf', 'gen_net', 'genfac3d', 'genlib',\n            'genmarkov', 'geom3d', 'geomean', 'get', 'get_contents_infer', 'get_function_path', 'getcolor', 'getcwd',\n            'getd', 'getdate', 'getenv', 'getf', 'getfield', 'getfont', 'gethistory', 'getio', 'getlinestyle',\n            'getlongpathname', 'getmark', 'getmemory', 'getos', 'getpid', 'getscilabkeywords', 'getshell',\n            'getshortpathname', 'getsymbol', 'getvalue', 'getversion', 'gfare', 'gfrancis', 'girth', 'givens',\n            'glever', 'glist', 'global', 'GlobalProperty', 'glue', 'gmres', 'gpeche', 'gr_menu', 'graduate', 'grand',\n            'graph_2_mat', 'graph_center', 'graph_complement', 'graph_diameter', 'graph_power', 'graph_simp', 'graph_sum',\n            'graph_union', 'graphic', 'Graphics', 'graphics_entities', 'graph-list', 'graycolormap', 'grayplot',\n            'grayplot_properties', 'graypolarplot', 'great', 'grep', 'group', 'gschur', 'gsort', 'gspec', 'gstacksize',\n            'gtild', 'h_cl', 'h_inf', 'h_inf_st', 'h_norm', 'h2norm', 'halt', 'hamilton', 'hank', 'hankelsv', 'harmean',\n            'hat', 'havewindow', 'head_comments', 'help', 'help_skeleton', 'hermit', 'hess', 'hex2dec', 'hilb', 'hinf',\n            'hist3d', 'histplot', 'horner', 'host', 'hotcolormap', 'householder', 'hrmt', 'hsv2rgb', 'hsvcolormap',\n            'htrianr', 'hypermat', 'hypermatrices', 'iconvert', 'ieee', 'ifft', 'iir', 'iirgroup', 'iirlp',\n            'ilib_build', 'ilib_compile', 'ilib_for_link', 'ilib_gen_gateway', 'ilib_gen_loader', 'ilib_gen_Make',\n            'im_inv', 'imag', 'impl', 'imrep2ss', 'imult', 'ind2sub', 'Infer', 'inistate', 'input', 'insertion', 'int',\n            'int16', 'int2d', 'int32', 'int3d', 'int8', 'intc', 'intdec', 'integrate', 'interp', 'interp1', 'interp2d',\n            'interp3d', 'interpln', 'intersci', 'intersect', 'intg', 'intl', 'intppty', 'intsplin', 'inttrap', 'inttype',\n            'inv', 'inv_coeff', 'invr', 'invsyslin', 'iqr', 'is_connex', 'iscellstr', 'isdef', 'isdir', 'isempty',\n            'isequal', 'isequalbitwise', 'iserror', 'isglobal', 'isinf', 'isnan', 'isoview', 'isreal', 'javasci',\n            'jetcolormap', 'jmat', 'justify', 'kalm', 'karmarkar', 'kernel', 'keyboard', 'knapsack', 'kpure', 'krac2',\n            'kron', 'kroneck', 'label_properties', 'labostat', 'LANGUAGE', 'lasterror', 'lattn', 'lattp', 'lcf', 'lcm',\n            'lcmdiag', 'ldiv', 'ldivf', 'leastsq', 'left', 'legend', 'legend_properties', 'legendre', 'legends', 'length',\n            'leqr', 'less', 'lev', 'levin', 'lex_sort', 'lft', 'lgfft', 'lib', 'lin', 'lin2mu', 'lindquist',\n            'line_graph', 'linear_interpn', 'lines', 'LineSpec', 'linf', 'linfn', 'link', 'linmeq', 'linpro', 'linsolve',\n            'linspace', 'listfiles', 'listvarinfile', 'lmisolver', 'lmitool', 'load', 'load_graph', 'loadhistory',\n            'loadmatfile', 'loadplots', 'loadwave', 'locate', 'log', 'log10', 'log1p', 'log2', 'logm', 'logspace',\n            'lotest', 'lqe', 'lqg', 'lqg_ltr', 'lqg2stan', 'lqr', 'ls', 'lsq', 'lsq_splin', 'lsqrsolve', 'lsslist',\n            'lstcat', 'lstsize', 'ltitr', 'lu', 'ludel', 'lufact', 'luget', 'lusolve', 'lyap', 'm_circle', 'm2scideclare',\n            'macglov', 'macr2lst', 'macr2tree', 'macro', 'macrovar', 'mad', 'make_graph', 'make_index', 'makecell', 'man',\n            'manedit', 'mapsound', 'markp2ss', 'mat_2_graph', 'matfile2sci', 'Matlab-Scilab_character_strings', 'Matplot',\n            'Matplot_properties', 'Matplot1', 'matrices', 'matrix', 'max', 'max_cap_path', 'max_clique', 'max_flow',\n            'maxi', 'mcisendstring', 'mclearerr', 'mclose', 'mdelete', 'mean', 'meanf', 'median', 'menus', 'meof',\n            'merror', 'mese', 'mesh', 'mesh2d', 'meshgrid', 'mfft', 'mfile2sci', 'mfprintf', 'mfscanf', 'mget', 'mgeti',\n            'mgetl', 'mgetstr', 'milk_drop', 'min', 'min_lcost_cflow', 'min_lcost_flow1', 'min_lcost_flow2',\n            'min_qcost_flow', 'min_weight_tree', 'mine', 'mini', 'minreal', 'minss', 'minus', 'mkdir', 'mlist', 'mode',\n            'modulo', 'moment', 'mopen', 'move', 'mprintf', 'mps2linpro', 'mput', 'mputl', 'mputstr', 'mrfit', 'mscanf',\n            'msd', 'mseek', 'msprintf', 'msscanf', 'mstr2sci', 'mtell', 'mtlb_0', 'mtlb_a', 'mtlb_all', 'mtlb_any',\n            'mtlb_axis', 'mtlb_beta', 'mtlb_box', 'mtlb_close', 'mtlb_colordef', 'mtlb_conv', 'mtlb_cumprod', 'mtlb_cumsum',\n            'mtlb_dec2hex', 'mtlb_delete', 'mtlb_diag', 'mtlb_diff', 'mtlb_dir', 'mtlb_double', 'mtlb_e', 'mtlb_echo',\n            'mtlb_eig', 'mtlb_eval', 'mtlb_exist', 'mtlb_eye', 'mtlb_false', 'mtlb_fft', 'mtlb_fftshift', 'mtlb_find',\n            'mtlb_findstr', 'mtlb_fliplr', 'mtlb_fopen', 'mtlb_format', 'mtlb_fprintf', 'mtlb_fread', 'mtlb_fscanf',\n            'mtlb_full', 'mtlb_fwrite', 'mtlb_grid', 'mtlb_hold', 'mtlb_i', 'mtlb_ifft', 'mtlb_imp', 'mtlb_int16',\n            'mtlb_int32', 'mtlb_int8', 'mtlb_is', 'mtlb_isa', 'mtlb_isfield', 'mtlb_isletter', 'mtlb_isspace', 'mtlb_l',\n            'mtlb_legendre', 'mtlb_linspace', 'mtlb_load', 'mtlb_logic', 'mtlb_logical', 'mtlb_lower', 'mtlb_max',\n            'mtlb_min', 'mtlb_mode', 'mtlb_more', 'mtlb_num2str', 'mtlb_ones', 'mtlb_plot', 'mtlb_prod', 'mtlb_rand',\n            'mtlb_randn', 'mtlb_rcond', 'mtlb_realmax', 'mtlb_realmin', 'mtlb_repmat', 'mtlb_s', 'mtlb_save',\n            'mtlb_setstr', 'mtlb_size', 'mtlb_sort', 'mtlb_sparse', 'mtlb_strcmp', 'mtlb_strcmpi', 'mtlb_strfind',\n            'mtlb_strrep', 'mtlb_sum', 'mtlb_t', 'mtlb_toeplitz', 'mtlb_tril', 'mtlb_triu', 'mtlb_true', 'mtlb_uint16',\n            'mtlb_uint32', 'mtlb_uint8', 'mtlb_upper', 'mtlb_zeros', 'mu2lin', 'mucomp', 'mulf', 'mvvacov', 'name2rgb',\n            'names', 'nancumsum', 'nand2mean', 'nanmax', 'nanmean', 'nanmeanf', 'nanmedian', 'nanmin', 'nanstdev',\n            'nansum', 'narsimul', 'NDcost', 'ndgrid', 'ndims', 'nearfloat', 'nehari', 'neighbors', 'netclose', 'netwindow',\n            'netwindows', 'new', 'newaxes', 'newest', 'newfun', 'nextpow2', 'nf3d', 'nfreq', 'nlev', 'nnz', 'node_number',\n            'nodes_2_path', 'nodes_degrees', 'noisegen', 'norm', 'not', 'null', 'number_properties', 'numdiff', 'numer',\n            'nyquist', 'object_editor', 'obs_gram', 'obscont', 'obscont1', 'observer', 'obsv_mat', 'obsvss', 'ode',\n            'ode_discrete', 'ode_optional_output', 'ode_root', 'odedc', 'odeoptions', 'oemtochar', 'old_style',\n            'oldbesseli', 'oldbesselj', 'oldbesselk', 'oldbessely', 'oldload', 'oldplot', 'oldsave', 'ones',\n            'Operation', 'optim', 'or', 'orth', 'overloading', 'p_margin', 'param3d', 'param3d_properties',\n            'param3d1', 'paramfplot2d', 'parents', 'parrot', 'part', 'path_2_nodes', 'pathconvert', 'pause', 'pbig',\n            'pca', 'pcg', 'pdiv', 'pen2ea', 'pencan', 'penlaur', 'percent', 'perctl', 'perfect_match', 'perl',\n            'perms', 'permute', 'pertrans', 'pfss', 'phasemag', 'phc', 'pie', 'pinv', 'pipe_network', 'playsnd', 'plot',\n            'plot_graph', 'plot2d', 'plot2d_old_version', 'plot2d1', 'plot2d2', 'plot2d3', 'plot2d4', 'plot3d',\n            'plot3d_old_version', 'plot3d1', 'plot3d2', 'plot3d3', 'plotframe', 'plotprofile', 'plus', 'plzr',\n            'pmodulo', 'pol2des', 'pol2str', 'pol2tex', 'polar', 'polarplot', 'polfact', 'poly', 'polyline_properties',\n            'portr3d', 'portrait', 'power', 'ppol', 'prbs_a', 'predecessors', 'predef', 'print', 'printf',\n            'printf_conversion', 'printing', 'printsetupbox', 'prod', 'profile', 'progressionbar', 'proj', 'projsl',\n            'projspec', 'psmall', 'pspect', 'pvm', 'pvm_addhosts', 'pvm_barrier', 'pvm_bcast', 'pvm_bufinfo', 'pvm_config',\n            'pvm_delhosts', 'pvm_error', 'pvm_exit', 'pvm_f772sci', 'pvm_get_timer', 'pvm_getinst', 'pvm_gettid',\n            'pvm_gsize', 'pvm_halt', 'pvm_joingroup', 'pvm_kill', 'pvm_lvgroup', 'pvm_mytid', 'pvm_parent', 'pvm_probe',\n            'pvm_recv', 'pvm_reduce', 'pvm_sci2f77', 'pvm_send', 'pvm_set_timer', 'pvm_spawn', 'pvm_spawn_independent',\n            'pvm_start', 'pvm_tasks', 'pvm_tidtohost', 'pvmd3', 'pwd', 'qassign', 'qld', 'qmr', 'qr', 'quapro', 'quart',\n            'quaskro', 'quit', 'quote', 'rand', 'randpencil', 'range', 'rank', 'rankqr', 'rat',  'rcond',\n            'rdivf', 'read', 'read4b', 'readb', 'readc_', 'readmps', 'readxls', 'real', 'realtime', 'realtimeinit',\n            'rectangle_properties', 'recur', 'reglin', 'regress', 'remez', 'remezb', 'repfreq', 'replot', 'resethistory',\n            'residu', 'resume', 'return', 'rgb2name', 'ric_desc', 'ricc', 'riccati', 'rlist', 'rmdir', 'roots', 'rotate',\n            'round', 'routh_t', 'rowcomp', 'rowcompr', 'rowinout', 'rowregul', 'rowshuff', 'rpem', 'rref', 'rtitr',\n            'rubberbox', 'salesman', 'sample', 'samplef', 'samwr', 'save', 'save_format', 'save_graph', 'savehistory',\n            'savematfile', 'savewave', 'sca', 'scaling', 'scanf', 'scanf_conversion', 'scf', 'schur', 'sci_files',\n            'sci2exp', 'sci2for', 'sci2map', 'sciargs', 'SciComplex', 'SciComplexArray', 'SciDouble', 'SciDoubleArray',\n            'ScilabEval', 'scilink', 'scipad', 'SciString', 'SciStringArray', 'sd2sci', 'sda', 'sdf',\n            'secto3d', 'segs_properties', 'semi', 'semicolon', 'semidef', 'sensi', 'set', 'set_posfig_dim',\n            'setbpt', 'setdiff', 'setenv', 'seteventhandler', 'setfield', 'sethomedirectory', 'setlanguage', 'setmenu',\n            'sfact', 'Sfgrayplot', 'Sgrayplot', 'sgrid', 'shortest_path', 'show_arcs', 'show_graph', 'show_nodes',\n            'show_pixmap', 'showprofile', 'sident', 'sign', 'Signal', 'signm', 'simp', 'simp_mode', 'sin', 'sinc',\n            'sincd', 'sinh', 'sinhm', 'sinm', 'size', 'slash', 'sleep', 'sm2des', 'sm2ss', 'smooth', 'solve',\n            'sorder', 'sort', 'sound', 'soundsec', 'sp2adj', 'spaninter', 'spanplus', 'spantwo', 'spchol',\n            'spcompack', 'spec', 'specfact', 'speye', 'spget', 'splin', 'splin2d', 'splin3d', 'split_edge', 'spones',\n            'sprand', 'sprintf', 'spzeros', 'sqroot', 'sqrt', 'sqrtm', 'square', 'squarewave', 'srfaur', 'srkf', 'ss2des',\n            'ss2ss', 'ss2tf', 'sscanf', 'sskf', 'ssprint', 'ssrand', 'st_deviation', 'st_ility', 'stabil', 'stacksize',\n            'star', 'startup', 'stdev', 'stdevf', 'str2code', 'strange', 'strcat', 'strindex', 'string', 'stringbox',\n            'strings', 'stripblanks', 'strong_con_nodes', 'strong_connex', 'strsplit', 'strsubst', 'struct', 'sub2ind',\n            'subf', 'subgraph', 'subplot', 'successors', 'sum', 'supernode', 'surf', 'surface_properties', 'sva',\n            'svd', 'svplot', 'sylm', 'sylv', 'symbols', 'sysconv', 'sysdiag', 'sysfact', 'syslin', 'syssize', 'system',\n            'systems', 'systmat', 'tabul', 'tan', 'tangent', 'tanh', 'tanhm', 'tanm', 'TCL_CreateSlave', 'TCL_DeleteInterp',\n            'TCL_EvalFile', 'TCL_EvalStr', 'TCL_ExistInterp', 'TCL_ExistVar', 'TCL_GetVar', 'TCL_GetVersion', 'TCL_SetVar',\n            'TCL_UnsetVar', 'TCL_UpVar', 'tdinit', 'testmatrix', 'texprint', 'text_properties', 'tf2des', 'tf2ss', 'then',\n            'thrownan', 'tic', 'tilda', 'time_id', 'timer', 'title', 'titlepage', 'TK_EvalFile', 'TK_EvalStr', 'tk_getdir',\n            'tk_getfile', 'TK_GetVar', 'tk_savefile', 'TK_SetVar',  'toc', 'toeplitz', 'tohome', 'tokenpos',\n            'tokens', 'toolbar', 'toprint', 'trace', 'trans', 'trans_closure', 'translatepaths', 'tree2code', 'trfmod',\n            'trianfml', 'tril', 'trimmean', 'trisolve', 'triu', 'try', 'trzeros', 'twinkle', 'type', 'Type', 'typename',\n            'typeof', 'ui_observer', 'uicontrol', 'uimenu', 'uint16', 'uint32', 'uint8', 'ulink', 'unglue', 'union',\n            'unique', 'unix', 'unix_g', 'unix_s', 'unix_w', 'unix_x', 'unobs', 'unsetmenu', 'unzoom', 'user', 'varargin',\n            'varargout', 'Variable', 'variance', 'variancef', 'varn', 'vectorfind', 'waitbar', 'warning', 'wavread',\n            'wavwrite', 'wcenter', 'wfir', 'what', 'where', 'whereami', 'whereis', 'who', 'who_user', 'whos',\n            'wiener', 'wigner', 'winclose', 'window', 'winlist', 'winopen', 'winqueryreg', 'winsid', 'with_atlas',\n            'with_gtk', 'with_javasci', 'with_pvm', 'with_texmacs', 'with_tk', 'writb', 'write', 'write4b', 'x_choices',\n            'x_choose', 'x_dialog', 'x_matrix', 'x_mdialog', 'x_message', 'x_message_modeless', 'xarc', 'xarcs', 'xarrows',\n            'xaxis', 'xbasc', 'xbasimp', 'xbasr', 'xchange', 'xclea', 'xclear', 'xclick', 'xclip', 'xdel', 'xend',\n            'xfarc', 'xfarcs', 'xfpoly', 'xfpolys', 'xfrect', 'xget', 'xgetech', 'xgetfile', 'xgetmouse', 'xgraduate',\n            'xgrid', 'xinfo', 'xinit', 'xlfont', 'xload', 'xls_open', 'xls_read', 'xmltohtml', 'xname', 'xnumb', 'xpause',\n            'xpoly', 'xpolys', 'xrect', 'xrects', 'xrpoly', 'xs2bmp', 'xs2emf', 'xs2eps', 'xs2fig', 'xs2gif', 'xs2ppm',\n            'xs2ps', 'xsave', 'xsegs', 'xselect', 'xset', 'xsetech', 'xsetm', 'xstring', 'xstringb', 'xstringl', 'xtape',\n            'xtitle', 'yulewalk', 'zeropen', 'zeros', 'zgrid', 'zoom_rect', 'zpbutt', 'zpch1', 'zpch2', 'zpell'\n            )\n        ),\n    'SYMBOLS' => array(\n        '<', '>', '=',\n        '!', '@', '~', '&', '|',\n        '+','-', '*', '/', '%',\n        ',', ';', '?', ':', \"'\"\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => true,\n        1 => true,\n        2 => true,\n        3 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => '',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            'HARD' => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;',\n            'HARD' => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;',\n            2 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #0000ff;',\n            4 => 'color: #009999;',\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => 'http://www.scilab.org/product/dic-mat-sci/M2SCI_doc.htm',\n        2 => 'http://www.scilab.org/product/dic-mat-sci/M2SCI_doc.htm',\n        3 => 'http://www.scilab.org/product/dic-mat-sci/M2SCI_doc.htm'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '-&gt;',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        //Variable\n        0 => '[\\\\$%@]+[a-zA-Z_][a-zA-Z0-9_]*',\n        //File Descriptor\n        4 => '&lt;[a-zA-Z_][a-zA-Z0-9_]*&gt;',\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/scl.php",
    "content": "<?php\n/*************************************************************************************\n * <scl.php>\n * ---------------------------------\n * Author: Leonhard Hösch (leonhard.hoesch@siemens.com)\n * Copyright: (c) 2008 by Leonhard Hösch (siemens.de)\n * Release Version: 1.0.9.1\n * Date Started: 2012/09/25\n *\n * SCL language file for GeSHi.\n *\n * A SCL langauge file.\n *\n * CHANGES\n * -------\n * <date-of-release> (<GeSHi release>)\n *  -  First Release\n *\n * TODO (updated <date-of-release>)\n * -------------------------\n * <things-to-do>\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'SCL',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('(*' => '*)'),\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,\n    'QUOTEMARKS' => array(\"'\"),\n    'ESCAPE_CHAR' => '$',\n    'KEYWORDS' => array(\n        1 => array(\n            'AND','ANY','ARRAY','AT','BEGIN','BLOCK_DB','BLOCK_FB','BLOCK_FC','BLOCK_SDB',\n            'BLOCK_SFB','BLOCK_SFC','BOOL','BY','BYTE','CASE','CHAR','CONST','CONTINUE','COUNTER',\n            'DATA_BLOCK','DATE','DATE_AND_TIME','DINT','DIV','DO','DT','DWORD','ELSE','ELSIF',\n            'EN','END_CASE','END_CONST','END_DATA_BLOCK','END_FOR','END_FUNCTION',\n            'END_FUNCTION_BLOCK','END_IF','END_LABEL','END_TYPE','END_ORGANIZATION_BLOCK',\n            'END_REPEAT','END_STRUCT','END_VAR','END_WHILE','ENO','EXIT','FALSE','FOR','FUNCTION',\n            'FUNCTION_BLOCK','GOTO','IF','INT','LABEL','MOD','NIL','NOT','OF','OK','OR',\n            'ORGANIZATION_BLOCK','POINTER','PROGRAM','REAL','REPEAT','RETURN','S5TIME','STRING',\n            'STRUCT','THEN','TIME','TIMER','TIME_OF_DAY','TO','TOD','TRUE','TYPE','VAR',\n            'VAR_TEMP','UNTIL','VAR_INPUT','VAR_IN_OUT','VAR_OUTPUT','VOID','WHILE','WORD','XOR'\n            ),\n        2 =>array(\n            'UBLKMOV','FILL','CREAT_DB','DEL_DB','TEST_DB','COMPRESS','REPL_VAL','CREA_DBL','READ_DBL',\n            'WRIT_DBL','CREA_DB','RE_TRIGR','STP','WAIT','MP_ALM','CiR','PROTECT','SET_CLK','READ_CLK',\n            'SNC_RTCB','SET_CLKS','RTM','SET_RTM','CTRL_RTM','READ_RTM','TIME_TCK','RD_DPARM',\n            'RD_DPARA','WR_PARM','WR_DPARM','PARM_MOD','WR_REC','RD_REC','RD_DPAR','RDREC','WRREC','RALRM',\n            'SALRM','RCVREC','PRVREC','SET_TINT','CAN_TINT','ACT_TINT','QRY_TINT','SRT_DINT','QRY_DINT',\n            'CAN_DINT','MSK_FLT','DMSK_FLT','READ_ERR','DIS_IRT','EN_IRT','DIS_AIRT','EN_AIRT','RD_SINFO',\n            'RDSYSST','WR_USMSG','OB_RT','C_DIAG','DP_TOPOL','UPDAT_PI','UPDAT_PO','SYNC_PI','SYNC_PO',\n            'SET','RSET','DRUM','GADR_LGC','LGC_GADR','RD_LGADR','GEO_LOG','LOG_GEO','DP_PRAL','DPSYC_FR',\n            'D_ACT_DP','DPNRM_DG','DPRD_DAT','DPWR_DAT','PN_IN','PN_OUT','PN_DP','WWW','IP_CONF','GETIO',\n            'SETIO','GETIO_PART','SETIO_PART','GD_SND','GD_RCV','USEND','URCV','BSEND','BRCV','PUT','GET',\n            'PRINT','START','STOP','RESUME','STATUS','USTATUS','CONTROL','C_CNTRL','X_SEND','X_RCV',\n            'X_GET','X_PUT','X_ABORT','I_GET','I_PUT','I_ABORT','TCON','TDISCON','TSEND','TRCV','TUSEND',\n            'TURCV','NOTIFY','NOTIFY_8P','ALARM','ALARM_8P','ALARM_8','AR_SEND','DIS_MSG','EN_MSG',\n            'ALARM_SQ','ALARM_S','ALARM_SC','ALARM_DQ','LARM_D','READ_SI','DEL_SI','TP','TON','TOF','CTU',\n            'CTD','CTUD','CONT_C','CONT_S','PULSEGEN','Analog','DIGITAL','COUNT','FREQUENC','PULSE',\n            'SEND_PTP','RECV_PTP','RES_RECV','SEND_RK','FETCH_RK','SERVE_RK','H_CTRL','state'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '.', '\"', '|', ';', ',', '=>', '>=', '<=', ':=', '=', '<', '>'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000ff;',\n            2 => 'color: #ff6f00;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #009600; font-style: italic;',\n            'MULTI' => 'color: #009600; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            3 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => ''\n        ),\n    'NUMBERS' => GESHI_NUMBER_INT_BASIC,\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        1 => '',\n        2 => ''\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        0 => array(\n            '<?php11!!' => '!!11?>'\n            ),\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => false,\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/sdlbasic.php",
    "content": "<?php\n/*************************************************************************************\n * sdlbasic.php\n * ------------\n * Author: Roberto Rossi\n * Copyright: (c) 2005 Roberto Rossi (http://rsoftware.altervista.org)\n * Release Version: 1.0.9.1\n * Date Started: 2005/08/19\n *\n * sdlBasic (http://sdlbasic.sf.net) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2005/08/19 (1.0.0)\n *  -  First Release\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'sdlBasic',\n    'COMMENT_SINGLE' => array(1 => \"'\", 2 => \"rem\", 3 => \"!\", 4 => \"#\"),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'const', 'option', 'explicit', 'qbasic', 'include', 'argc',\n            'argv', 'command', 'command$', 'run', 'shell', 'os', 'declare',\n            'sub', 'function', 'return', 'while', 'wend', 'exit', 'end',\n            'continue', 'if', 'then', 'else', 'elseif',\n            'select', 'case', 'for', 'each', 'step',\n            'next', 'to', 'dim', 'shared', 'common', 'lbound', 'bound',\n            'erase', 'asc', 'chr', 'chr$', 'insert', 'insert$', 'instr', 'lcase',\n            'lcase$', 'left', 'left$', 'len', 'length', 'ltrim', 'ltrim$', 'mid',\n            'mid$', 'replace', 'replace$', 'replacesubstr', 'replacesubstr$',\n            'reverse', 'reverse$', 'right', 'right$', 'rinstr', 'rtrim', 'rtrim$',\n            'space', 'space$', 'str', 'str$', 'strf', 'strf$', 'string', 'string$',\n            'tally', 'trim', 'trim$', 'typeof', 'typeof$', 'ucase', 'ucase$', 'val',\n            'abs', 'acos', 'andbit', 'asin', 'atan', 'bitwiseand', 'bitwiseor',\n            'bitwisexor', 'cos', 'exp', 'fix', 'floor', 'frac', 'hex', 'hex$', 'int',\n            'log', 'min', 'max', 'orbit', 'randomize', 'rnd', 'round', 'sgn', 'sin',\n            'sqr', 'tan', 'xorbit', 'open', 'as', 'file', 'input', 'close', 'output',\n            'append', 'eof', 'fileexists', 'filecopy', 'filemove', 'filerename',\n            'freefile', 'kill', 'loc', 'lof', 'readbyte', 'rename', 'seek',\n            'writebyte', 'chdir', 'dir', 'dir$', 'direxists', 'dirfirst', 'dirnext',\n            'mkdir', 'rmdir', 'print', 'date', 'date$', 'time', 'time$', 'ticks',\n            'data', 'read', 'reservebank', 'freebank', 'copybank', 'loadbank',\n            'savebank', 'setbank', 'sizebank', 'poke', 'doke', 'loke', 'peek', 'deek',\n            'leek', 'memcopy', 'setdisplay', 'setcaption', 'caption', 'displaywidth',\n            'displayheight', 'displaybpp', 'screen', 'directscreen', 'screenopen',\n            'screenclose', 'screenclone', 'screencopy', 'screenfade', 'screenfadein',\n            'screencrossfade', 'screenalpha', 'screenlock', 'screenunlock',\n            'screenrect', 'xscreenrect', 'yscreenrect', 'wscreenrect', 'hscreenrect',\n            'flagscreenrect', 'screenwidth', 'screenheight', 'offset', 'xoffset',\n            'yoffset', 'cls', 'screenswap', 'autoback', 'setautoback',\n            'dualplayfield', 'waitvbl', 'fps', 'rgb', 'enablepalette', 'color',\n            'palette', 'colorcycling', 'ink', 'point', 'dot', 'plot', 'line', 'box',\n            'bar', 'circle', 'fillcircle', 'ellipse', 'fillellipse', 'paint',\n            'loadimage', 'saveimage', 'loadsound', 'savesound', 'loadmusic',\n            'hotspot', 'setcolorkey', 'imageexists', 'imagewidth', 'imageheight',\n            'deleteimage', 'copyimage', 'setalpha', 'zoomimage', 'rotateimage',\n            'rotozoomimage', 'blt', 'pastebob', 'pasteicon', 'grab', 'spriteclip',\n            'sprite', 'deletesprite', 'xsprite', 'ysprite', 'spritewidth',\n            'spriteheight', 'frsprite', 'livesprite', 'spritehit', 'autoupdatesprite',\n            'updatesprite', 'setbob', 'bob', 'deletebob', 'xbob', 'ybob', 'bobwidth',\n            'bobheight', 'frbob', 'livebob', 'bobhit', 'autoupdatebob', 'updatebob',\n            'text', 'setfont', 'textrender', 'pen', 'paper', 'prints', 'locate',\n            'atx', 'aty', 'curson', 'cursoff', 'inputs', 'zoneinputs',\n            'isenabledsound', 'soundexists', 'deletesound', 'copysound',\n            'musicexists', 'playsound', 'volumesound', 'stopsound', 'pausesound',\n            'resumesound', 'vumetersound', 'positionsound', 'soundchannels',\n            'playmusic', 'positionmusic', 'stopmusic', 'fademusic', 'pausemusic',\n            'resumemusic', 'rewindmusic', 'volumemusic', 'speedmusic', 'numdrivescd',\n            'namecd', 'getfreecd', 'opencd', 'indrivecd', 'trackscd', 'curtrackcd',\n            'curframecd', 'playcd', 'playtrackscd',\n            'pausecd', 'resumecd', 'stopcd', 'ejectcd', 'closecd', 'tracktypecd',\n            'tracklengthcd', 'trackoffsetcd', 'key', 'inkey', 'waitkey', 'xmouse',\n            'ymouse', 'xmousescreen', 'ymousescreen', 'bmouse', 'changemouse',\n            'locatemouse', 'mouseshow', 'mousehide', 'mousezone', 'numjoysticks',\n            'namejoystick', 'numaxesjoystick', 'numballsjoystick', 'numhatsjoystick',\n            'numbuttonsjoystick', 'getaxisjoystick', 'gethatjoystick',\n            'getbuttonjoystick', 'xgetballjoystick', 'ygetballjoystick', 'joy',\n            'bjoy', 'wait', 'timer', 'isenabledsock', 'getfreesock', 'opensock',\n            'acceptsock', 'isserverready', 'connectsock', 'connectionreadysock',\n            'isclientready', 'losesock', 'peeksock', 'readsock', 'readbytesock',\n            'readlinesock', 'writesock', 'writebytesock', 'writelinesock',\n            'getremoteip', 'getremoteport', 'getlocalip'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080;',\n            2 => 'color: #808080;',\n            3 => 'color: #808080;',\n            4 => 'color: #808080;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/smalltalk.php",
    "content": "<?php\n/*************************************************************************************\n * smalltalk.php\n * --------\n * Author: Bananeweizen (Bananeweizen@gmx.de)\n * Copyright: (c) 2005 Bananeweizen (www.bananeweizen.de)\n * Release Version: 1.0.9.1\n * Date Started: 2005/03/27\n *\n * Smalltalk language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2006-05-24 (1.0.0)\n *   -  First Release\n *\n * TODO\n * -------------------------\n * * recognize nested array symbols correctly\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Smalltalk',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array('\"' => '\"'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\"),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'self','super','true','false','nil'\n            )\n        ),\n    'SYMBOLS' => array(\n        '[', ']', '=' , ':=', '(', ')', '#'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #7f007f;'\n            ),\n        'COMMENTS' => array(\n            'MULTI' => 'color: #007f00; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'BRACKETS' => array(\n            0 => ''\n            ),\n        'STRINGS' => array(\n            0 => 'color: #7f0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #7f0000;'\n            ),\n        'METHODS' => array(\n            0 => ''\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000066; font-weight:bold;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #0000ff;',\n            1 => 'color: #7f0000;',\n            2 => 'color: #7f0000;',\n            3 => 'color: #00007f;',\n            5 => 'color: #00007f;',\n            6 => 'color: #00007f;'\n            ),\n        'SCRIPT' => array(\n            0 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        0 => array(\n            GESHI_SEARCH => '([^a-zA-Z0-9_#<])([A-Z]+[a-zA-Z0-9_]*)(?!>)', //class names\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n        1 => array(\n            GESHI_SEARCH => '(#+)([a-zA-Z0-9_]+)', //symbols\n            GESHI_REPLACE => '\\\\1\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        2 => array(\n            GESHI_SEARCH => '(#\\s*\\([^)]*\\))', //array symbols\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        3 => array(\n            GESHI_SEARCH => '<PIPE>([a-zA-Z0-9_\\s]+)<PIPE>', //temporary variables\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '|',\n            GESHI_AFTER => '|'\n            ),\n        5 => array(\n            GESHI_SEARCH => '([:(,=[.*\\/+-]\\s*(?!\\d+\\/))([a-zA-Z0-9_]+)', //message parameters, message receivers\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 's',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n        6 => array(\n            GESHI_SEARCH => '([a-zA-Z0-9_]+)(\\s*:=)', //assignment targets\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '\\\\2'\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/smarty.php",
    "content": "<?php\n/*************************************************************************************\n * smarty.php\n * ----------\n * Author: Alan Juden (alan@judenware.org)\n * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/07/10\n *\n * Smarty template language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2004/11/27 (1.0.0)\n *  -  Initial Release\n *\n * TODO\n * ----\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Smarty',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array('{*' => '*}'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            '$smarty', 'now', 'const', 'capture', 'config', 'section', 'foreach', 'template', 'version', 'ldelim', 'rdelim',\n            'foreachelse', 'include', 'include_php', 'insert', 'if', 'elseif', 'else', 'php',\n            'sectionelse', 'is_cached',\n            ),\n        2 => array(\n            'capitalize', 'count_characters', 'cat', 'count_paragraphs', 'count_sentences', 'count_words', 'date_format',\n            'default', 'escape', 'indent', 'lower', 'nl2br', 'regex_replace', 'replace', 'spacify', 'string_format',\n            'strip', 'strip_tags', 'truncate', 'upper', 'wordwrap',\n            ),\n        3 => array(\n            'counter', 'cycle', 'debug', 'eval', 'html_checkboxes', 'html_image', 'html_options',\n            'html_radios', 'html_select_date', 'html_select_time', 'html_table', 'math', 'mailto', 'popup_init',\n            'popup', 'textformat'\n            ),\n        4 => array(\n            '$template_dir', '$compile_dir', '$config_dir', '$plugins_dir', '$debugging', '$debug_tpl',\n            '$debugging_ctrl', '$autoload_filters', '$compile_check', '$force_compile', '$caching', '$cache_dir',\n            '$cache_lifetime', '$cache_handler_func', '$cache_modified_check', '$config_overwrite',\n            '$config_booleanize', '$config_read_hidden', '$config_fix_newlines', '$default_template_handler_func',\n            '$php_handling', '$security', '$secure_dir', '$security_settings', '$trusted_dir', '$left_delimiter',\n            '$right_delimiter', '$compiler_class', '$request_vars_order', '$request_use_auto_globals',\n            '$error_reporting', '$compile_id', '$use_sub_dirs', '$default_modifiers', '$default_resource_type'\n            ),\n        5 => array(\n            'append', 'append_by_ref', 'assign', 'assign_by_ref', 'clear_all_assign', 'clear_all_cache',\n            'clear_assign', 'clear_cache', 'clear_compiled_tpl', 'clear_config', 'config_load', 'display',\n            'fetch', 'get_config_vars', 'get_registered_object', 'get_template_vars',\n            'load_filter', 'register_block', 'register_compiler_function', 'register_function',\n            'register_modifier', 'register_object', 'register_outputfilter', 'register_postfilter',\n            'register_prefilter', 'register_resource', 'trigger_error', 'template_exists', 'unregister_block',\n            'unregister_compiler_function', 'unregister_function', 'unregister_modifier', 'unregister_object',\n            'unregister_outputfilter', 'unregister_postfilter', 'unregister_prefilter', 'unregister_resource'\n            ),\n        6 => array(\n            'name', 'file', 'scope', 'global', 'key', 'once', 'script',\n            'loop', 'start', 'step', 'max', 'show', 'values', 'value', 'from', 'item'\n            ),\n        7 => array(\n            'eq', 'neq', 'ne', 'lte', 'gte', 'ge', 'le', 'not', 'mod'\n            ),\n        8 => array(\n            // some common php functions\n            'isset', 'is_array', 'empty', 'count', 'sizeof'\n            )\n        ),\n    'SYMBOLS' => array(\n        '/', '=', '==', '!=', '>', '<', '>=', '<=', '!', '%'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false,\n        8 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0600FF;',        //Functions\n            2 => 'color: #008000;',        //Modifiers\n            3 => 'color: #0600FF;',        //Custom Functions\n            4 => 'color: #804040;',        //Variables\n            5 => 'color: #008000;',        //Methods\n            6 => 'color: #6A0A0A;',        //Attributes\n            7 => 'color: #D36900;',        //Text-based symbols\n            8 => 'color: #0600FF;'        //php functions\n            ),\n        'COMMENTS' => array(\n            'MULTI' => 'color: #008080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #D36900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #D36900;'\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => 'color: #808080; font-style: italic;',\n            2 => 'color: #009000;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #00aaff;'\n            )\n        ),\n    'URLS' => array(\n        1 => 'http://smarty.php.net/{FNAMEL}',\n        2 => 'http://smarty.php.net/{FNAMEL}',\n        3 => 'http://smarty.php.net/{FNAMEL}',\n        4 => 'http://smarty.php.net/{FNAMEL}',\n        5 => 'http://smarty.php.net/{FNAMEL}',\n        6 => '',\n        7 => 'http://smarty.php.net/{FNAMEL}',\n        8 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        // variables\n        0 => '\\$[a-zA-Z][a-zA-Z0-9_]*'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,\n    'SCRIPT_DELIMITERS' => array(\n        0 => array(\n            '{' => '}'\n            ),\n        1 => array(\n            '<!--' => '-->',\n        ),\n        2 => array(\n            '<' => '>'\n            )\n    ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        1 => false,\n        2 => false\n    ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\|\\#;>|^])\",\n            'DISALLOWED_AFTER' => \"(?![a-zA-Z0-9_<\\|%\\\\-&])\"\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/spark.php",
    "content": "<?php\n/*************************************************************************************\n * ada.php\n * -------\n * Author: Phil Thornley (tux@inmail.cz)\n * Copyright: (c) 2004 Phil Thornley (http://www.sparksure.com)\n * Release Version: 1.0.9.1\n * Date Started: 2010/08/22\n *\n * SPARK language file for GeSHi.\n *\n * Created by modifying Ada file version 1.0.2\n * Words are from SciTe configuration file\n *\n * CHANGES\n * -------\n * 2010/08/28 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2010/08/22)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'SPARK',\n    'COMMENT_SINGLE' => array(1 => '--', 2 => '--#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'begin', 'declare', 'do', 'else', 'elsif', 'exception', 'for', 'if',\n            'is', 'loop', 'while', 'then', 'end', 'select', 'case', 'until',\n            'goto', 'return'\n            ),\n        2 => array(\n            'abs', 'and', 'at', 'mod', 'not', 'or', 'rem', 'xor'\n            ),\n        3 => array(\n            'abort', 'abstract', 'accept', 'access', 'aliased', 'all', 'array',\n            'body', 'constant', 'delay', 'delta', 'digits', 'entry', 'exit',\n            'function', 'generic', 'in', 'interface', 'limited', 'new', 'null',\n            'of', 'others', 'out', 'overriding', 'package', 'pragma', 'private',\n            'procedure', 'protected', 'raise', 'range', 'record', 'renames',\n            'requeue', 'reverse', 'separate', 'subtype', 'synchronized',\n            'tagged', 'task', 'terminate', 'type', 'use', 'when', 'with'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #00007f;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #46aa03; font-weight:bold;',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #adadad; font-style: italic;',\n            2 => 'color: #adadad; font-style: italic; font-weight: bold;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #7f007f;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/sparql.php",
    "content": "<?php\n/*************************************************************************************\n * sparql.php\n * -------\n * Author: Karima Rafes (karima.rafes@bordercloud.com)\n * Copyright: (c) 2011 Bourdercloud.com\n * Release Version: 1.0.9.1\n * Date Started: 2011/11/05\n *\n * SPARQL language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2011/11/05 (1.0.0)\n *  -  First Release\n *\n * TODO\n * ----\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'SPARQL',\n    'COMMENT_SINGLE' => array('#'),\n    'COMMENT_MULTI' => array('/*' => '*/' ),\n    'COMMENT_REGEXP' => array(\n        //IRI (it's not a comment ;)\n        1 => \"/<[^> ]*>/i\"\n        ),\n    'CASE_KEYWORDS' => 1,\n    'QUOTEMARKS' => array(\"'\", '\"', '`'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'BASE','PREFIX','SELECT','DISTINCT','REDUCED','CONSTRUCT','DESCRIBE','ASK','FROM',\n            'NAMED','WHERE','ORDER','BY','ASC','DESC','LIMIT','OFFSET','OPTIONAL','GRAPH',\n            'UNION','FILTER','STR','LANG','LANGMATCHES','DATATYPE','BOUND','SAMETERM',\n            'ISIRI','ISURI','ISBLANK',\n            'ISLITERAL','REGEX','SUBSTR','TRUE',\n            'FALSE','LOAD','CLEAR',\n            'DROP','ADD','MOVE','COPY',\n            'CREATE','DELETE','INSERT',\n            'USING','SILENT','DEFAULT','ALL',\n            'DATA','WITH','INTO','TO',\n            'AS','GROUP','HAVING','UNDEF',\n            'BINDINGS','SERVICE','BIND','MINUS_KEYWORD',\n            'IRI','URI', 'BNODE',\n            'RAND','ABS','CEIL','FLOOR','ROUND',\n            'CONCAT','STRLEN',\n            'UCASE','LCASE','ENCODE_FOR_URI',\n            'CONTAINS','STRSTARTS',\n            'STRENDS','STRBEFORE',\n            'STRAFTER','REPLACE',\n            'YEAR','MONTH',\n            'DAY','HOURS',\n            'MINUTES','SECONDS',\n            'TIMEZONE','TZ',\n            'NOW','MD5',\n            'SHA1','SHA224',\n            'SHA256','SHA384',\n            'SHA512','COALESCE',\n            'IF','STRLANG','STRDT',\n            'ISNUMERIC','COUNT',\n            'SUM','MIN',\n            'MAX','AVG','SAMPLE',\n            'GROUP_CONCAT ','NOT',\n            'IN','EXISTS','SEPARATOR'\n            )\n        ),\n    'REGEXPS' => array(\n        //Variables without braces\n        1 => \"\\\\?[a-zA-Z_][a-zA-Z0-9_]*\",\n        //prefix\n        2 => \"[a-zA-Z_.\\\\-0-9]*:\",\n        //tag lang\n        3 => \"@[^ .)}]*\",\n        ),\n    'SYMBOLS' => array(\n        0 => array(\n            '{', '}' , '.', ';'\n            ),\n        1 => array(\n            '^^',\n            '<=','>=','!=','=','<','>','|',\n            '&&','||',\n            '(',')','[', ']',\n            '+','-','*','!','/'\n            ),\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #993333; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            0 => 'color: #808080; font-style: italic;',\n            1 => 'color: #000078;',\n            //2 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #FF63C3;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #0000FF;',\n            1 => 'color: #FF8000; font-weight: bold;'\n            ),\n        'SCRIPT' => array(),\n        'REGEXPS' => array(\n            1 => 'color: #007800;',\n            2 => 'color: #780078;',\n            3 => 'color: #005078;'\n            )\n        ),\n    'URLS' => array(\n        1 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/sql.php",
    "content": "<?php\n/*************************************************************************************\n * sql.php\n * -------\n * Author: Nigel McNie (nigel@geshi.org)\n * Contributors:\n *  - Jürgen Thomas (Juergen.Thomas@vs-polis.de)\n * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/06/04\n *\n * SQL language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/07/19 (1.0.8.9)\n *  -  Added many more keywords\n * 2008/05/23 (1.0.7.22)\n *  -  Added additional symbols for highlighting\n * 2004/11/27 (1.0.3)\n *  -  Added support for multiple object splitters\n * 2004/10/27 (1.0.2)\n *  -  Added \"`\" string delimiter\n *  -  Added \"#\" single comment starter\n * 2004/08/05 (1.0.1)\n *  -  Added support for symbols\n *  -  Added many more keywords (mostly MYSQL keywords)\n * 2004/07/14 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n * * Add all keywords\n * * Split this to several sql files - mysql-sql, ansi-sql etc\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'SQL',\n    'COMMENT_SINGLE' => array(1 =>'--'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => 1,\n    'QUOTEMARKS' => array(\"'\", '\"', '`'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'ADD', 'ALL', 'ALTER', 'AND', 'AS', 'ASC', 'AUTO_INCREMENT',\n            'BEFORE', 'BEGIN', 'BETWEEN', 'BIGINT', 'BINARY', 'BLOB', 'BOOLEAN', 'BOTH', 'BY',\n            'CALL', 'CASE', 'CAST', 'CEIL', 'CEILING', 'CHANGE', 'CHAR', 'CHAR_LENGTH', 'CHARACTER',\n            'CHARACTER_LENGTH', 'CHECK', 'CLOB', 'COALESCE', 'COLLATE', 'COLUMN', 'COLUMNS',\n            'CONNECT', 'CONSTRAINT', 'CONVERT', 'COUNT', 'CREATE', 'CROSS', 'CURRENT',\n            'CURRENT_DATE', 'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'CURRENT_USER',\n            'DATA', 'DATABASE', 'DATABASES', 'DATE', 'DAY', 'DEC', 'DECIMAL', 'DECLARE',\n            'DEFAULT', 'DEFERRABLE', 'DEFERRED', 'DELAYED', 'DELETE', 'DESC', 'DESCRIBE', 'DISTINCT', 'DOUBLE',\n            'DOMAIN', 'DROP',\n            'ELSE', 'ELSEIF', 'ENCLOSED', 'END', 'ESCAPED', 'EXCEPT', 'EXEC', 'EXECUTE', 'EXISTS',\n            'EXP', 'EXPLAIN', 'EXTRACT',\n            'FALSE', 'FIELD', 'FIELDS', 'FILTER', 'FIRST', 'FLOAT', 'FLOOR', 'FLUSH', 'FOR',\n            'FOREIGN', 'FROM', 'FULL', 'FUNCTION',\n            'GET', 'GROUP', 'GROUPING', 'GO', 'GOTO', 'GRANT', 'GRANTED',\n            'HAVING', 'HOUR',\n            'IDENTIFIED', 'IDENTITY', 'IF', 'IGNORE', 'IMMEDIATE', 'IN', 'INCREMENT', 'INDEX', 'INFILE', 'INITIALLY', 'INNER',\n            'INOUT', 'INPUT', 'INSERT', 'INT', 'INTEGER', 'INTERSECT', 'INTERSECTION', 'INTERVAL',\n            'INTO', 'IS',\n            'JOIN',\n            'KEY', 'KEYS', 'KILL',\n            'LANGUAGE', 'LARGE', 'LAST', 'LEADING', 'LEFT', 'LENGTH', 'LIKE', 'LIMIT', 'LINES', 'LOAD',\n            'LOCAL', 'LOCK', 'LOW_PRIORITY', 'LOWER',\n            'MATCH', 'MAX', 'MERGE', 'MIN', 'MINUTE', 'MOD', 'MODIFIES', 'MODIFY', 'MONTH',\n            'NATIONAL', 'NATURAL', 'NCHAR', 'NEW', 'NEXT', 'NEXTVAL', 'NONE', 'NOT',\n            'NULL', 'NULLABLE', 'NULLIF', 'NULLS', 'NUMBER', 'NUMERIC',\n            'OF', 'OLD', 'ON', 'ONLY', 'OPEN', 'OPTIMIZE', 'OPTION',\n            'OPTIONALLY', 'OR', 'ORDER', 'OUT', 'OUTER', 'OUTFILE', 'OVER',\n            'POSITION', 'POWER', 'PRECISION', 'PREPARE', 'PRIMARY', 'PROCEDURAL', 'PROCEDURE',\n            'READ', 'REAL', 'REF', 'REFERENCES', 'REFERENCING', 'REGEXP', 'RENAME', 'REPLACE',\n            'RESULT', 'RETURN', 'RETURNS', 'REVOKE', 'RIGHT', 'RLIKE', 'ROLLBACK', 'ROW',\n            'ROW_NUMBER', 'ROWS', 'RESTRICT', 'ROLE', 'ROUTINE', 'ROW_COUNT',\n            'SAVEPOINT', 'SEARCH', 'SECOND', 'SECTION', 'SELECT', 'SELF', 'SEQUENCE',\n            'SESSION', 'SET', 'SETVAL', 'SHOW', 'SIMILAR', 'SIZE', 'SMALLINT', 'SOME',\n            'SONAME', 'SOURCE', 'SPACE', 'SQL', 'SQRT', 'START', 'STATUS',\n            'STRAIGHT_JOIN', 'STRUCTURE', 'STYLE', 'SUBSTRING', 'SUM',\n            'TABLE', 'TABLE_NAME', 'TABLES', 'TERMINATED', 'TEMPORARY', 'THEN', 'TIME',\n            'TIMESTAMP', 'TO', 'TRAILING', 'TRANSACTION', 'TRIGGER', 'TRIM', 'TRUE', 'TRUNCATE',\n            'TRUSTED', 'TYPE',\n            'UNDER', 'UNION', 'UNIQUE', 'UNKNOWN', 'UNLOCK', 'UNSIGNED',\n            'UPDATE', 'UPPER', 'USE', 'USER', 'USING',\n            'VALUE', 'VALUES', 'VARCHAR', 'VARIABLES', 'VARYING', 'VIEW',\n            'WHEN', 'WHERE', 'WITH', 'WITHIN', 'WITHOUT', 'WORK', 'WRITE',\n            'XOR',\n            'YEAR',\n            'ZEROFILL'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '=', '<', '>', '|', ',', '.', '+', '-', '*', '/'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #993333; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            //2 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array( //'\n            'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\.\\|\\#|^&])\"\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/sshconfig.php",
    "content": "<?php\n/*************************************************************************************\n * sshconfig.php\n * --------\n * Author: Kevin Ernst (kevin.ernst -at- cchmc.org)\n * Copyright: (c) 2017 Kevin Ernst\n * Release Version: 1.0.9.1\n * Date Started: 2017/12/01\n *\n * OpenSSH config file (~/.ssh/config) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2017/12/02 (1.0.0)\n *   -  First release; couldn't figure out how to separately highlight negated\n *      hostnames/wildcards, but it's good enough for a basic ~/.ssh/config\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'sshconfig',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(0 => '/^\\s*#.*?$/m'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        0 => array(\n            'Host',\n            ),\n        1 => array(\n            \"Hostname\", \"Match\", \"AddKeysToAgent\", \"AddressFamily\", \"BatchMode\",\n            \"BindAddress\", \"CanonicalDomains\", \"CanonicalizeFallbackLocal\",\n            \"CanonicalizeHostname\", \"CanonicalizeMaxDots\",\n            \"CanonicalizePermittedCNAMEs\", \"CertificateFile\",\n            \"ChallengeResponseAuthentication\", \"CheckHostIP\", \"Ciphers\",\n            \"ClearAllForwardings\", \"Compression\", \"ConnectionAttempts\",\n            \"ConnectTimeout\", \"ControlMaster\", \"ControlPath\", \"ControlPersist\",\n            \"DynamicForward\", \"EnableSSHKeysign\", \"EscapeChar\",\n            \"ExitOnForwardFailure\", \"FingerprintHash\", \"ForwardAgent\",\n            \"ForwardX11\", \"ForwardX11Timeout\", \"ForwardX11Trusted\",\n            \"GatewayPorts\", \"GlobalKnownHostsFile\", \"GSSAPIAuthentication\",\n            \"GSSAPIDelegateCredentials\", \"HashKnownHosts\",\n            \"HostbasedAuthentication\", \"HostbasedKeyTypes\", \"HostKeyAlgorithms\",\n            \"HostKeyAlias\", \"HostName\", \"IdentitiesOnly\", \"IdentityAgent\",\n            \"IdentityFile\", \"IgnoreUnknown\", \"Include\", \"IPQoS\",\n            \"KbdInteractiveAuthentication\", \"KbdInteractiveDevices\",\n            \"KexAlgorithms\", \"LocalCommand\", \"LocalForward\", \"LogLevel\", \"MACs\",\n            \"NoHostAuthenticationForLocalhost\", \"NumberOfPasswordPrompts\",\n            \"PasswordAuthentication\", \"PermitLocalCommand\", \"PKCS11Provider\",\n            \"Port\", \"PreferredAuthentications\", \"ProxyCommand\", \"ProxyJump\",\n            \"ProxyUseFdpass\", \"PubkeyAcceptedKeyTypes\", \"PubkeyAuthentication\",\n            \"RekeyLimit\", \"RemoteCommand\", \"RemoteForward\", \"RequestTTY\",\n            \"RevokedHostKeys\", \"SendEnv\", \"ServerAliveCountMax\",\n            \"ServerAliveInterval\", \"StreamLocalBindMask\",\n            \"StreamLocalBindUnlink\", \"StrictHostKeyChecking\", \"SyslogFacility\",\n            \"TCPKeepAlive\", \"Tunnel\", \"TunnelDevice\", \"UpdateHostKeys\",\n            \"UsePrivilegedPort\", \"User\", \"UserKnownHostsFile\",\n            \"VerifyHostKeyDNS\", \"VisualHostKey\", \"XAuthLocation\",\n            ),\n        ),\n    'SYMBOLS' => array(\n        0 => array(\n            '%h', '%p',\n            ),\n        // these get clobbered by regexes anyway\n        //1 => array( '!'),\n        //2 => array( '*')\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        0 => true,\n        1 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            0 => 'color: green; font-weight: bold',\n            1 => 'color: blue',\n            ),\n        'COMMENTS' => array(\n            0 => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'BRACKETS' => array(\n            0 => ''\n            ),\n        'STRINGS' => array(\n            0 => 'color: #933;'\n            ),\n        'NUMBERS' => array(\n            0 => ''\n            ),\n        'METHODS' => array(\n            0 => ''\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: lightseagreen; font-weight: bold',\n            // these two get clobbered by regexes below anyway\n            1 => 'color: red; font-weight: bold',\n            1 => 'color: darkmagenta; font-weight: bold',\n            ),\n        'REGEXPS' => array(\n            0 => 'color: darkmagenta;',\n            //1 => 'color: red; font-weight: bold',\n            2 => 'color: magenta; font-weight: bold',\n            ),\n        'SCRIPT' => array(\n            0 => ''\n            )\n        ),\n    'URLS' => array(\n        0=> 'https://man.openbsd.org/ssh_config#{FNAME}',\n        1=> 'https://man.openbsd.org/ssh_config#{FNAME}',\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        // Hostnames\n        0 => array(\n            GESHI_SEARCH => '(Host(name)?.*?)(?<=\\s)(.*)',\n            GESHI_REPLACE => '\\\\3',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n        // Negated hostanmes (doesn't work)\n        //1 => array(\n        //    GESHI_SEARCH => '([([{,<+*-\\/=\\s!]|&lt;)(?!(?:PIPE|SEMI|DOT|NUM|REG3XP\\d*)\\W)(![a-zA-Z*]\\w*)(?!\\w)',\n        //    GESHI_SEARCH => '(?<=!)(.*?)',\n        //    GESH_REPLACE => '\\\\2',\n        //    GESHI_MODIFIERS => '',\n        //    GESHI_BEFORE => '\\\\1',\n        //    GESHI_AFTER => ''\n        //    ),\n        // Wildcards\n        2 => '\\*'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/standardml.php",
    "content": "<?php\n/*************************************************************************************\n * standardml.php\n * ----------\n * Author: eldesh (nephits@gmail.com)\n * Copyright: (c) 2014 eldesh (http://d.hatena.ne.jp/eldesh/)\n * Release Version: 1.0.9.1\n * Date Started: 2014/02/04\n *\n * SML (StandardML'97) language file for GeSHi.\n * This file also support some implementation dependent keywords by SML/NJ and SML#.\n *\n * CHANGES\n * -------\n * 2014/02/05 (1.0.8.11)\n *   -  First Release\n *\n * TODO (updated 2014/02/04)\n * -------------------------\n * - support character literal\n * - support Vector expressions and patterns (http://www.smlnj.org/doc/features.html)\n * - support more Basis functions...?\n *\n *************************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'StandardML',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array('(*' => '*)'),\n    'COMMENT_REGEXP' => array(1 => '/\\(\\*(?:(?R)|.)+?\\*\\)/s'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'NUMBERS' =>\n        array(\n            /* integer dec */\n            0 => GESHI_NUMBER_INT_BASIC,\n            /* integer hex */\n            1 => GESHI_NUMBER_HEX_PREFIX,\n            /* real */\n            2 => GESHI_NUMBER_FLT_SCI_ZERO,\n            /* word dec */\n            3 => '(?<![0-9a-z_\\.])(?<![\\d\\.]e[+\\-])0w[0-9]+?(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)',\n            /* word hex */\n            4 => '(?<![0-9a-z_\\.])(?<![\\d\\.]e[+\\-])0wx[0-9a-fA-F]+?(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)'\n        ),\n    'KEYWORDS' => array(\n        /* main SML keywords */\n        1 => array(\n            /* deprecated: SML90 */\n            'abstype',\n\n            'and', 'andalso', 'as', 'case', 'datatype', 'else',\n            'end', 'exception', 'fn', 'fun', 'functor',\n            'if', 'in', 'infix', 'infixr', 'let', 'local', 'nonfix',\n            'of', 'op', 'open', 'orelse',\n            'rec', 'raise', 'sharing', 'sig', 'signature', 'struct', 'structure', 'then',\n            'type', 'val', 'while', 'with', 'withtype'\n            ),\n        /* Top-level type and constructors */\n        2 => array(\n            'unit', 'int', 'word', 'real', 'char', 'string', 'substring', 'exn',\n            'array', 'vector', 'bool', 'option',\n            'list'\n            ),\n        /* standard structures/signatures/functors provided by Basis library */\n        3 => array(\n            'ARRAY', 'Array', 'Array2', 'ARRAY2', 'ArraySlice', 'ARRAY_SLICE',\n            'BinIO', 'BIT_FLAGS', 'Bool', 'BOOL', 'Byte', 'CHAR', 'Char',\n            'CommandLine', 'Date', 'General', 'GenericSock', 'IEEEReal', 'IMPERATIVE_IO',\n            'ImperativeIO', 'INetSock', 'INTEGER', 'Int', 'IntInf', 'IO', 'List', 'ListPair',\n            'MATH', 'MONO_ARRAY', 'MONO_ARRAY2', 'MONO_ARRAY_SLICE', 'MONO_VECTOR',\n            'MONO_VECTOR_SLICE', 'NetHostDB', 'NetProtDB', 'NetServDB', 'Option',\n            'OS', 'OS.FileSys', 'OS.IO', 'OS.Path', 'OS.Process', 'PACK_REAL', 'PACK_WORD',\n            'Posix', 'Posix.Error', 'Posix.FileSys', 'Posix.IO', 'Posix.ProcEnv', 'Posix.Process',\n            'Posix.Signal', 'Posix.SysDB', 'Posix.TTY', 'PRIM_IO', 'PrimIO', 'REAL', 'Real', 'Socket',\n            'STREAM_IO', 'StreamIO', 'STRING', 'String', 'StringCvt', 'SUBSTRING', 'Substring', 'TEXT', 'TEXT_IO',\n            'TEXT_STREAM_IO', 'Time', 'Timer', 'Unix', 'UnixSock', 'VECTOR', 'Vector', 'VECTOR_SLICE',\n            'Windows', 'WORD', 'Word'\n            ),\n        /* Top-level value identifiers / constructors */\n        4 => array(\n            'app', 'before', 'ceil', 'chr', 'concat', 'exnMessage', 'exnName', 'explode',\n            'floor', 'foldl', 'foldr', 'getOpt', 'hd', 'ignore', 'implode', 'isSome', 'length', 'map', 'not',\n            'null', 'o', 'ord', 'print', 'rev', 'round', 'size', 'str', 'tl', 'trunc',\n            'use', 'valOf',\n            /* constructors */\n            'ref', 'true', 'false', 'NONE', 'SOME', 'LESS', 'EQUAL', 'GREATER', 'nil',\n            /* overloaded identifiers */\n            'div', 'mod', 'abs'\n            ),\n        /* standard exceptions */\n        5 => array (\n            'Bind', 'Chr', 'Div', 'Domain', 'Empty', 'Fail', 'Match', 'Overflow', 'Size', 'Span', 'Subscript'\n            ),\n        /* implementation dependent keyword (not be sorted) */\n        6 => array (\n            /** SML/NJ */\n            /* functor signature > http://www.smlnj.org/doc/features.html */\n            'funsig',\n            /* lazy evaluation */\n            'lazy',\n            /** SML# */\n            /* binding to C function */\n            '_import',\n            /* read other source */\n            '_require',\n            /* export aggregated interface files */\n            'include',\n            /* integrated sql */\n            '_sqlserver', '_sql', 'from', 'where', '_sqleval', '_sqlexec',\n            'select', 'insert', 'update', 'begin', 'commit', 'rollback',\n            'values', 'delete'\n            )\n        ),\n    /* highlighting symbols */\n    'SYMBOLS' => array(\n        0 => array('=', ':', ':>', '=>', '(', ')', '|', '_', '==', ';', '.'),\n        1 => array('!', ':=', '@', '^'),\n        2 => array('[', ']', '::', '{', '}'),\n        /* overloaded identifiers */\n        3 => array('+', '-', '*', '/', '~', '<', '>', '<=', '>=')\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true, /* keywords */\n        2 => true, /* top level types */\n        3 => true, /* structures */\n        4 => true, /* top level identifiers */\n        5 => true, /* top level exceptions */\n        6 => true  /* implementation dependent keyword */\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #557cde; font-weight: bold;',\n            2 => 'color: #8dda4a; font-weight: bold;',\n            3 => 'color: #0066cc; font-weight: bold;',\n            4 => 'color: #5c8cbb;',\n            5 => 'color: #f33e64; font-weight: bold;',\n            6 => 'color: #f33e64;'\n            ),\n        'COMMENTS' => array(\n            'MULTI' => 'color: #5d478b; font-style: italic;', /* light purple */\n            1 => 'color: #5d478b; font-style: italic;' /* light purple */\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #79c200;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #488614;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #fb7600;',\n            1 => 'color: #fb7600;',\n            2 => 'color: #fb7600;',\n            3 => 'color: #fb7600;',\n            4 => 'color: #fb7600;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #0066cc;'\n            ),\n        'REGEXPS' => array(\n            1 => 'font-style:italic; color:#9f7eff;',\n            2 => 'font-weight:bold; color:#8dda4a;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #ff4bcf;',\n            1 => 'color: #ff4bcf; font-weight: bold;', // pink\n            2 => 'color: #90f963;', // orange\n            3 => 'color: #fa5bf8;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => 'http://www.standardml.org/Basis/top-level-chapter.html',\n        3 => '',\n        4 => '',\n        5 => 'http://www.standardml.org/Basis/top-level-chapter.html#section:2',\n        6 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        1 => '(?<!\\w)#\\w+',  /* record field access */\n        2 => '(?:(?<![0-9a-zA-Z]))\\'[a-z]+' /* type variable */\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/stonescript.php",
    "content": "<?php\n/*************************************************************************************\n * stonescript.php\n * --------\n * Author: Archimmersion ( based on ruby.php by Moises Deniz )\n * Copyright: (c) 2011 Archimmersion ( http://www.archimmersion.com )\n * Release Version: 1.0.9.1\n * Date Started: 2011/03/30\n *\n * StoneScript language file for GeSHi.\n *\n * StonesCript is a Lua based script language for the ShiVa3D game engine ( http://www.stonetrip.com )\n *\n * More information can be found at http://www.stonetrip.com/developer/doc/api/introduction\n *\n * CHANGES\n * -------\n * 2011/04/18 (1.0.8.11)\n *   -  Initial release\n *\n *************************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'StoneScript',\n    'COMMENT_SINGLE' => array(1 => \"--\"),\n    'COMMENT_MULTI' => array(\"--[[\" => \"]]\"),\n    'COMMENT_REGEXP' => array(\n        4 => '/<<\\s*?(\\w+)\\\\n.*?\\\\n\\\\1(?![a-zA-Z0-9])/si',\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', '`','\\''),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        // Blue - General Keywords\n        1 => array(\n                'and', 'begin', 'break', 'do', 'else', 'elseif', 'end',\n                'for', 'if', 'in', 'while', 'next', 'not', 'or', 'redo',\n                'then', 'unless', 'until', 'when', 'false', 'nil', 'self',\n                'true', 'local', 'this', 'return',\n            ),\n        // Dark Blue - Main API names\n        2 => array(\n                'animation', 'application', 'cache', 'camera', 'debug',\n                'dynamics', 'group', 'hashtable', 'hud', 'input', 'light',\n                'log', 'math', 'mesh', 'microphone', 'music', 'navigation',\n                'network', 'object', 'pixelmap', 'projector', 'scene',\n                'sensor', 'server', 'session', 'sfx', 'shape', 'sound',\n                'string', 'system', 'table', 'user', 'video', 'xml',\n                // Plugin API names\n                'plasma', 'watersim',\n                'winDirectories',\n                'ActionSheet', 'Alert', 'Mail', 'Picker', 'StatusBar',\n            ),\n        // Constants\n        // Can be commented out if performance is crucial -> then these keywords will appear in a slightly lighter color\n        3 => array(\n                //Animation\n                'kPlaybackModeLoop', 'kPlaybackModeLoopMirrored', 'kPlaybackModeLoopReversed',\n                'kPlaybackModeOnce', 'kPlaybackModeOnceReversed',\n                //Application - Environment\n                'kStatusLoading', 'kStatusReady', 'kStatusSaving', // 'kStatusNone'\n                //Application - Options\n                'kOptionAudioMasterVolume', 'kOptionAutomaticVirtualKeyboard', 'kOptionDynamicShadowsBufferCount',\n                'kOptionDynamicShadowsBufferSize', 'kOptionDynamicShadowsConstantSampling', 'kOptionDynamicShadowsPCFSampleCount',\n                'kOptionDynamicShadowsQuality', 'kOptionDynamicShadowsScreenSpaceBlur', 'kOptionFullscreen',\n                'kOptionFullscreenHeight', 'kOptionFullscreenWidth', 'kOptionHardwareOcclusion',\n                'kOptionMaxEventBouncesPerFrame', 'kOptionNetworkStreams', 'kOptionNetworkStreamsUseBrowser',\n                'kOptionPrioritizeEventBounces', 'kOptionRenderingEnabled', 'kOptionShadersQuality',\n                'kOptionSwapInterval', 'kOptionTerrainsQuality', 'kOptionTexturesAnisotropyLevel',\n                'kOptionTexturesMipmapBias', 'kOptionTexturesQuality', 'kOptionViewportRotation',\n                //Application - Resource Types\n                'kResourceTypeAnimBank', 'kResourceTypeFont', 'kResourceTypeHUD',\n                'kResourceTypeMaterial', 'kResourceTypeMesh', 'kResourceTypeParticle',\n                'kResourceTypePixelMap', 'kResourceTypeSoundBank', 'kResourceTypeTexture',\n                'kResourceTypeTextureClip', 'kResourceTypeTrail',\n                //Cache\n                'kPropertyHeight', 'kPropertySize', 'kPropertyWidth',\n                //Dynamics\n                'kAxisX', 'kAxisY', 'kAxisZ',\n                'kTypeBox', 'kTypeCapsule', 'kTypeSphere',\n                //HUD\n                'kAddressingModeClamp', 'kAddressingModeRepeat', 'kAlignCenter', 'kAlignJustify','kAlignLeft', 'kAlignRight',\n                'kAlignTop', 'kBlendModeAdd', 'kBlendModeDefault', 'kBlendModeModulate', 'kCaseFixed', 'kCaseVariable',\n                'kCommandTypeCallAction', 'kCommandTypeCopyCheckStateToRegister', 'kCommandTypeCopyEditTextToRegister',\n                'kCommandTypeCopyListItemTextToRegister', 'kCommandTypeCopyListLastSelectedItemToRegister',\n                'kCommandTypeCopyProgressValueToRegister', 'kCommandTypeCopySliderValueToRegister', 'kCommandTypeCopyTagToRegister',\n                'kCommandTypeEnterModalMode', 'kCommandTypeInterpolateBackgroundColor', 'kCommandTypeInterpolateBorderColor',\n                'kCommandTypeInterpolateForegroundColor', 'kCommandTypeInterpolateHeight', 'kCommandTypeInterpolateOpacity',\n                'kCommandTypeInterpolatePosition', 'kCommandTypeInterpolateProgressValue', 'kCommandTypeInterpolateRotation',\n                'kCommandTypeInterpolateSize', 'kCommandTypeInterpolateWidth', 'kCommandTypeLeaveModalMode',\n                'kCommandTypeMatchScreenSpaceBottomLeftCorner', 'kCommandTypeMatchScreenSpaceBottomRightCorner',\n                'kCommandTypeMatchScreenSpaceCenter', 'kCommandTypeMatchScreenSpaceHeight', 'kCommandTypeMatchScreenSpaceTopLeftCorner',\n                'kCommandTypeMatchScreenSpaceTopRightCorner', 'kCommandTypeMatchScreenSpaceWidth', 'kCommandTypePauseMovie',\n                'kCommandTypePauseSound', 'kCommandTypePauseTimer', 'kCommandTypePlayMovie', 'kCommandTypePlaySound',\n                'kCommandTypePlaySoundLoop', 'kCommandTypeResumeSound', 'kCommandTypeSendEventToUser', 'kCommandTypeSetActive',\n                'kCommandTypeSetBackgroundColor', 'kCommandTypeSetBackgroundImage', 'kCommandTypeSetBackgroundImageUVOffset',\n                'kCommandTypeSetBackgroundImageUVScale', 'kCommandTypeSetBorderColor', 'kCommandTypeSetButtonText',\n                'kCommandTypeSetCheckState', 'kCommandTypeSetCheckText', 'kCommandTypeSetCursorPosition', 'kCommandTypeSetCursorVisible',\n                'kCommandTypeSetEditText', 'kCommandTypeSetFocus', 'kCommandTypeSetForegroundColor', 'kCommandTypeSetHeight',\n                'kCommandTypeSetLabelText', 'kCommandTypeSetOpacity', 'kCommandTypeSetPosition', 'kCommandTypeSetRotation',\n                'kCommandTypeSetSize', 'kCommandTypeSetVisible', 'kCommandTypeSetWidth', 'kCommandTypeSleep', 'kCommandTypeStartTimer',\n                'kCommandTypeStopAction', 'kCommandTypeStopMovie', 'kCommandTypeStopSound', 'kCommandTypeStopTimer',\n                'kComponentTypeButton', 'kComponentTypeCheck', 'kComponentTypeContainer', 'kComponentTypeEdit', 'kComponentTypeLabel',\n                'kComponentTypeList', 'kComponentTypeMovie', 'kComponentTypePicture', 'kComponentTypePixelMap', 'kComponentTypeProgress',\n                'kComponentTypeRenderMap', 'kComponentTypeSlider', 'kCursorShapeCross', 'kCursorShapeDefault', 'kCursorShapeHandPointing',\n                'kCursorShapeIBeam', 'kCursorShapeNone', 'kCursorShapeWaiting', 'kDirectionLeftToRight', 'kDirectionRightToLeft',\n                'kEncodingASCII', 'kEncodingUTF8', 'kEventTypeGainFocus', 'kEventTypeLooseFocus', 'kEventTypeMouseEnter',\n                'kEventTypeMouseLeave', 'kFillModeSolid', 'kInterpolatorTypeLinear', 'kInterpolatorTypePower2', 'kInterpolatorTypePower3',\n                'kInterpolatorTypePower4', 'kInterpolatorTypeRoot2', 'kInterpolatorTypeRoot3', 'kInterpolatorTypeRoot4',\n                'kInterpolatorTypeSpring1', 'kInterpolatorTypeSpring2', 'kInterpolatorTypeSpring3', 'kInterpolatorTypeSpring4',\n                'kInterpolatorTypeSpring5', 'kInterpolatorTypeSpring6',\n                'kOriginBottom', 'kOriginBottomLeft', 'kOriginBottomRight', 'kOriginCenter', 'kOriginLeft', 'kOriginRight',\n                'kOriginTop', 'kOriginTopLeft', 'kOriginTopRight', 'kProgressTypeBottomToTop', 'kProgressTypeLeftToRight',\n                'kProgressTypeRightToLeft', 'kProgressTypeTopToBottom', 'kRuntimeValueCallArgument0', 'kRuntimeValueCallArgument1',\n                'kRuntimeValueCallArgument2', 'kRuntimeValueCallArgument3', 'kRuntimeValueCurrentUser', 'kRuntimeValueCurrentUserMainCamera',\n                'kRuntimeValueRegister0', 'kRuntimeValueRegister1', 'kRuntimeValueRegister2', 'kRuntimeValueRegister3',\n                'kShapeTypeEllipsoid', 'kShapeTypeRectangle', 'kShapeTypeRoundRectangle', 'kSliderTypeBottomToTop',\n                'kSliderTypeLeftToRight', 'kSliderTypeRightToLeft', 'kSliderTypeTopToBottom', 'kWaveTypeConstant',\n                'kWaveTypeSawtooth', 'kWaveTypeSawtoothInv', 'kWaveTypeSinus', 'kWaveTypeSinusNoise', 'kWaveTypeSquare', 'kWaveTypeTriangle',\n                //Input\n                'kJoypadTypeIPhone', 'kJoypadTypeNone', 'kJoypadTypePhone', 'kJoypadTypeStandard', 'kJoypadTypeWiimote',\n                'kKey0', 'kKey1', 'kKey2', 'kKey3', 'kKey4', 'kKey5', 'kKey6', 'kKey7', 'kKey8', 'kKey9', 'kKeyA', 'kKeyB',\n                'kKeyBackspace', 'kKeyC', 'kKeyD', 'kKeyDelete', 'kKeyDown', 'kKeyE', 'kKeyEnd', 'kKeyEscape', 'kKeyF',\n                'kKeyF1', 'kKeyF10', 'kKeyF11', 'kKeyF12', 'kKeyF2', 'kKeyF3', 'kKeyF4', 'kKeyF5', 'kKeyF6', 'kKeyF7',\n                'kKeyF8', 'kKeyF9', 'kKeyG', 'kKeyH', 'kKeyHome', 'kKeyI', 'kKeyInsert', 'kKeyJ', 'kKeyK', 'kKeyL',\n                'kKeyLAlt', 'kKeyLControl', 'kKeyLeft', 'kKeyLShift', 'kKeyM', 'kKeyN', 'kKeyO', 'kKeyP', 'kKeyPageDown',\n                'kKeyPageUp', 'kKeyQ', 'kKeyR', 'kKeyRAlt', 'kKeyRControl', 'kKeyReturn', 'kKeyRight', 'kKeyRShift',\n                'kKeyS', 'kKeySpace', 'kKeyT', 'kKeyTab', 'kKeyU', 'kKeyUp', 'kKeyV', 'kKeyW', 'kKeyX', 'kKeyY',\n                'kKeyZ', 'kJoypadButtonPSPCircle', 'kJoypadButtonPSPCross', 'kJoypadButtonPSPDown', 'kJoypadButtonPSPL',\n                'kJoypadButtonPSPLeft', 'kJoypadButtonPSPR', 'kJoypadButtonPSPRight', 'kJoypadButtonPSPSelect',\n                'kJoypadButtonPSPSquare', 'kJoypadButtonPSPStart', 'kJoypadButtonPSPTriangle', 'kJoypadButtonPSPUp',\n                'kJoypadTypePSP', 'kJoypadButtonWiimoteA', 'kJoypadButtonWiimoteB', 'kJoypadButtonWiimoteC',\n                'kJoypadButtonWiimoteDown', 'kJoypadButtonWiimoteHome', 'kJoypadButtonWiimoteLeft',\n                'kJoypadButtonWiimoteMinus', 'kJoypadButtonWiimoteOne', 'kJoypadButtonWiimotePlus',\n                'kJoypadButtonWiimoteRight', 'kJoypadButtonWiimoteTwo', 'kJoypadButtonWiimoteUp', 'kJoypadButtonWiimoteZ',\n                //Light\n                'kTypeDirectional', 'kTypePoint',\n                //Math\n                'kEpsilon', 'kInfinity', 'kPi',\n                //Mesh\n                'kLockModeRead', 'kLockModeWrite', 'kLockReadWrite',\n                //Network\n                'kBluetoothServerPort', 'kDefaultServerPort', 'kStatusAuthenticated', 'kStatusSearchFinished', // 'kStatusNone', 'kStatusPending',\n                //Object\n                'kControllerTypeAI', 'kControllerTypeAnimation', 'kControllerTypeAny', 'kControllerTypeDynamics',\n                'kControllerTypeNavigation', 'kControllerTypeSound', 'kGlobalSpace', 'kLocalSpace', 'kParentSpace',\n                'kTransformOptionInheritsParentRotation', 'kTransformOptionInheritsParentScale', 'kTransformOptionInheritsParentTranslation',\n                'kTransformOptionTranslationAffectedByParentRotation', 'kTransformOptionTranslationAffectedByParentScale', 'kTypeCamera',\n                'kTypeCollider', 'kTypeDummy', 'kTypeGroup', 'kTypeLight', 'kTypeOccluder', 'kTypeProjector', 'kTypeReflector',\n                'kTypeSensor', 'kTypeSfx', 'kTypeShape',\n                //Pixelmap\n                'kBlendModeDecal', 'kBlendModeReplace', 'kFillModeBrush', 'kFillModeNone', 'kPenModeBrush', // 'kFillModeSolid',\n                'kPenModeNone', 'kPenModeSolid',\n                //Projector\n                'kMapTypeMovie', 'kMapTypePixelMap', 'kMapTypeRenderMap', 'kMapTypeTexture', 'kMapTypeTextureClip',\n                //Scene\n                'kFilteringModeBilinear', 'kFilteringModeNearest', 'kFilteringModeTrilinear', // 'kAddressingModeClamp', 'kAddressingModeRepeat',\n                'kSkyBoxFaceBack', 'kSkyBoxFaceBottom', 'kSkyBoxFaceFront', 'kSkyBoxFaceLeft', 'kSkyBoxFaceRight', 'kSkyBoxFaceTop',\n                //Sensor\n                'kShapeTypeBox', 'kShapeTypeSphere',\n                //Server\n                'kStatusConnected', 'kStatusNone', 'kStatusPending',\n                //Session - duplicate keywords\n                //'kStatusConnected', 'kStatusNone', 'kStatusPending',\n                //Shape\n                'kMapTypeUnknown', 'kCurveTypeBezier', 'kCurveTypeBSpline', 'kCurveTypeCatmullRom', 'kCurveTypePolyLine',\n                // 'kMapTypeMovie', 'kMapTypePixelMap', 'kMapTypeRenderMap', 'kMapTypeTexture',  'kMapTypeTextureClip',\n\n                //System\n                'kOSType3DS', 'kOSTypeBada', 'kOSTypeBrew', 'kOSTypePalm', 'kOSTypePS3',\n                'kClientTypeEditor', 'kClientTypeEmbedded', 'kClientTypeStandalone',\n                'kGPUCapabilityBloomFilterSupport', 'kGPUCapabilityContrastFilterSupport', 'kGPUCapabilityDepthBlurFilterSupport',\n                'kGPUCapabilityDistortionFilterSupport', 'kGPUCapabilityDynamicShadowsSupport', 'kGPUCapabilityHardwareOcclusionSupport',\n                'kGPUCapabilityHardwareRenderingSupport', 'kGPUCapabilityMonochromeFilterSupport', 'kGPUCapabilityMotionBlurFilterSupport',\n                'kGPUCapabilityPixelShaderSupport', 'kGPUCapabilityVelocityBlurFilterSupport', 'kGPUCapabilityVertexShaderSupport',\n                'kLanguageAlbanian', 'kLanguageArabic', 'kLanguageBulgarian', 'kLanguageCatalan', 'kLanguageCzech', 'kLanguageDanish',\n                'kLanguageDutch', 'kLanguageEnglish', 'kLanguageFinnish', 'kLanguageFrench', 'kLanguageGerman', 'kLanguageGreek',\n                'kLanguageHebrew', 'kLanguageHungarian', 'kLanguageIcelandic', 'kLanguageItalian', 'kLanguageJapanese', 'kLanguageKorean',\n                'kLanguageNorwegian', 'kLanguagePolish', 'kLanguagePortuguese', 'kLanguageRomanian', 'kLanguageRussian',\n                'kLanguageSerboCroatian', 'kLanguageSlovak', 'kLanguageSpanish', 'kLanguageSwedish', 'kLanguageThai',\n                'kLanguageTurkish', 'kLanguageUnknown', 'kLanguageUrdu', 'kOSTypeAndroid', 'kOSTypeAngstrom', 'kOSTypeIPhone',\n                'kOSTypeLinux', 'kOSTypeMac', 'kOSTypePSP', 'kOSTypeSymbian', 'kOSTypeWii', 'kOSTypeWindows', 'kOSTypeWindowsCE',\n            ),\n        // Not used yet\n        4 => array(\n                'dummycommand',\n            ),\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '%', '&', '*', '|', '/', '<', '>',\n        '+', '-', '=>', '<<'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color:#0000FF; font-weight:bold;',\n            2 => 'color:#000088; font-weight:bold;',\n            3 => 'color:#C088C0; font-weight:bold;',\n            4 => 'color:#00FEFE; font-weight:bold;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color:#008000; font-style:italic;',\n            4 => 'color: #cc0000; font-style: italic;',\n            'MULTI' => 'color:#008000; font-style:italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color:#000099;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color:#000000; font-weight:bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color:#888800;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color:#AA0000;'\n            ),\n        // names after \".\"\n        'METHODS' => array(\n            1 => 'color:#FF00FF; font-weight:bold;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color:#000000; font-weight:bold;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color:#ff6633; font-weight:bold;',\n            1 => 'color:#0066ff; font-weight:bold;',\n            2 => 'color:#6666ff; font-weight:bold;',\n            3 => 'color:#ff3333; font-weight:bold;'\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        0 => array(//Variables\n            GESHI_SEARCH => \"([[:space:]])(\\\\$[a-zA-Z_][a-zA-Z0-9_]*)\",\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n        1 => array(//Arrays\n            GESHI_SEARCH => \"([[:space:]])(@[a-zA-Z_][a-zA-Z0-9_]*)\",\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n        2 => \"([A-Z][a-zA-Z0-9_]*::)+[A-Z][a-zA-Z0-9_]*\",//Static OOP symbols\n        3 => array(\n            GESHI_SEARCH => \"([[:space:]]|\\[|\\()(:[a-zA-Z_][a-zA-Z0-9_]*)\",\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        0 => array(\n            '<%' => '%>'\n            )\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        ),\n    'TAB_WIDTH' => 2\n);\n"
  },
  {
    "path": "includes/geshi/swift.php",
    "content": "<?php\n/*************************************************************************************\n * swift.php\n * ----------\n * Author: Ken Woo (ikenwoo@gmail.com)\n * Copyright: (c) 2015 Ken Woo\n * Release Version: 1.0.9.1\n * Date Started: 2015/05/20\n *\n * Swift language file for GeSHi.\n * To mirror official Apple documentation, set the overall style like so:\n * $geshi->set_overall_style('font-family: Menlo, monospace; font-size: 0.85em; color: #508187;', false);\n *\n * CHANGES\n * -------\n * 2015/05/20\n *  -   First Release\n *\n * TODO (updated 2015/05/20)\n * -------------------------\n *  -   Only added keywords for Swift, Foundation, Core Foundation, Core Graphics, UIKit and AppKit.\n * There are many other frameworks that can be added like SpriteKit, MapKit, HealthKit, etc.\n *  -   Hex regex is a bit wonky when combined with method highlghting and not working\n *      with negative exponents\n *  -   Swift strings can include expressions via \"sum is: \\( 2 + 3 )\" and the expression\n *      shouldn't be highlighted as a string. This isn't supported yet.\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Swift',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'NUMBERS' => array(\n        # Decimals\n        0 => '\\b[0-9][0-9_]*(\\.[0-9][0-9_]*)?([eE][+-]?[0-9][0-9_]*)?\\b',\n        # Hex\n        1 => '\\b0x[0-9A-Fa-f][0-9A-Fa-f_]*((\\.[0-9A-Fa-f][0-9A-Fa-f_]*)?([pP][+-]?[0-9][0-9_]*))?\\b',\n        # Octal\n        2 => '\\b0o[0-7][0-7_]*\\b',\n        # Binary\n        3 => '\\b0b[01][01_]*\\b'\n    ),\n    'KEYWORDS' => array(\n        /*\n        ** Swift Keywords\n        */\n        1 => array(\n            'Protocol', 'Self', 'Type', 'as', 'associativity', 'awillSet', 'break', 'case', 'class',\n            'continue', 'convenience', 'default', 'deinit', 'didSet', 'do', 'dynamic', 'dynamicType',\n            'else', 'enum', 'extension', 'fallthrough', 'false', 'final', 'for', 'func', 'get', 'if',\n            'import', 'in', 'infix', 'init', 'inout', 'internal', 'is', 'lazy', 'left', 'let', 'mutating',\n            'nil', 'none', 'nonmutating', 'operator', 'optional', 'override', 'postfix', 'precedence',\n            'prefix', 'private', 'protocol', 'public', 'required', 'return', 'right', 'self', 'set',\n            'static', 'struct', 'subscript', 'super', 'switch', 'true', 'typealias', 'unowned', 'var',\n            'weak', 'where', 'while', '__COLUMN__', '__FILE__', '__FUNCTION__', '__LINE__',\n        ),\n\n        /*\n        ** Swift Attributes\n        */\n        2 => array(\n            '@availability', '@autoclosure', '@IBAction', '@IBDesignable', '@IBInspectable', '@IBOutlet',\n            '@noescape', '@noreturn', '@NSApplicationMain', '@NSCopying', '@NSManaged', '@objc', '@UIApplicationMain'\n        ),\n        /*\n        ** Swift Builtin Functions\n        **\n        */\n        3 => array(\n            'abs', 'advance', 'alignof', 'alignofValue', 'assert', 'assertionFailure', 'contains', 'count', 'debugPrint',\n            'debugPrintln', 'distance', 'dropFirst', 'dropLast', 'dump', 'enumerate', 'equal', 'extend', 'fatalError',\n            'filter', 'find', 'first', 'flatMap', 'getVaList', 'indices', 'insert', 'isEmpty', 'isUniquelyReferenced',\n            'isUniquelyReferencedNonObjC', 'join', 'last', 'lexicographicalCompare', 'map', 'max', 'maxElement',\n            'min', 'minElement', 'numericCast', 'overlaps', 'partition', 'precondition', 'preconditionFailure',\n            'print', 'println', 'reduce', 'reflect', 'removeAll', 'removeAtIndex', 'removeLast', 'removeRange', 'reverse',\n            'sizeof', 'sizeofValue', 'sort', 'sorted', 'splice', 'split', 'startsWith', 'stride', 'strideof', 'strideofValue',\n            'suffix', 'swap', 'toDebugString', 'toString', 'transcode', 'underestimateCount', 'unsafeAddressOf', 'unsafeBitCast',\n            'unsafeDowncast', 'unsafeUnwrap', 'withExtendedLifetime', 'withUnsafeMutablePointer', 'withUnsafeMutablePointers',\n            'withUnsafePointer', 'withUnsafePointers', 'withVaList', 'zip'\n        ),\n        /*\n         ** Swift Types\n        */\n        4 => array(\n            'Array', 'ArraySlice', 'AutoreleasingUnsafeMutablePointer', 'BidirectionalReverseView', 'Bit', 'Bool',\n            'CFunctionPointer', 'COpaquePointer', 'CVaListPointer', 'Character', 'ClosedInterval', 'CollectionOfOne',\n            'ContiguousArray', 'Dictionary', 'DictionaryGenerator', 'DictionaryIndex', 'Double', 'EmptyCollection',\n            'EmptyGenerator', 'EnumerateGenerator', 'EnumerateSequence', 'FilterCollectionView', 'FilterCollectionViewIndex',\n            'FilterGenerator', 'FilterSequenceView', 'Float', 'Float80', 'FloatingPointClassification', 'GeneratorOf',\n            'GeneratorOfOne', 'GeneratorSequence', 'HalfOpenInterval', 'ImplicitlyUnwrappedOptional', 'IndexingGenerator',\n            'Int', 'Int16', 'Int32', 'Int64', 'Int8', 'LazyBidirectionalCollection', 'LazyForwardCollection',\n            'LazyRandomAccessCollection', 'LazySequence', 'ManagedBuffer', 'ManagedBufferPointer', 'ManagedProtoBuffer',\n            'MapCollectionView', 'MapSequenceGenerator', 'MapSequenceView', 'MirrorDisposition', 'NonObjectiveCBase',\n            'ObjectIdentifier', 'Optional', 'PermutationGenerator', 'Process', 'QuickLookObject', 'RandomAccessReverseView',\n            'Range', 'RangeGenerator', 'RawByte', 'Repeat', 'ReverseBidirectionalIndex', 'ReverseRandomAccessIndex',\n            'SequenceOf', 'Set', 'SetGenerator', 'SetIndex', 'SinkOf', 'StaticString', 'StrideThrough', 'StrideThroughGenerator',\n            'StrideTo', 'StrideToGenerator', 'String', 'String.Index', 'String.UTF16View', 'String.UTF16View.Index',\n            'String.UTF8View', 'String.UTF8View.Index', 'String.UnicodeScalarView', 'String.UnicodeScalarView.Generator',\n            'String.UnicodeScalarView.Index', 'UInt', 'UInt16', 'UInt32', 'UInt64', 'UInt8', 'UTF16', 'UTF32', 'UTF8',\n            'UnicodeDecodingResult', 'UnicodeScalar', 'UnicodeScalar.UTF16View', 'Unmanaged', 'UnsafeBufferPointer',\n            'UnsafeBufferPointerGenerator', 'UnsafeMutableBufferPointer', 'UnsafeMutablePointer', 'UnsafePointer',\n            'VaListBuilder', 'Zip2', 'ZipGenerator2'\n        ),\n        /*\n        ** Swift Type Aliases\n        */\n        5 => array(\n            'Any', 'AnyClass', 'CBool', 'CChar', 'CChar16', 'CChar32', 'CDouble', 'CFloat', 'CInt', 'CLong',\n            'CLongLong', 'CShort', 'CSignedChar', 'CUnsignedChar', 'CUnsignedInt', 'CUnsignedLong', 'CUnsignedLongLong',\n            'CUnsignedShort', 'CWideChar', 'ExtendedGraphemeClusterType', 'Float32', 'Float64', 'FloatLiteralType', 'IntMax',\n            'IntegerLiteralType', 'StringLiteralType', 'UIntMax', 'UWord', 'UnicodeScalarType', 'Void', 'Word'\n        ),\n        /*\n        ** Swift Protocols\n        */\n        6 => array(\n            'AbsoluteValuable', 'AnyObject', 'ArrayLiteralConvertible', 'BidirectionalIndexType', 'BitwiseOperationsType',\n            'BooleanLiteralConvertible', 'BooleanType', 'CVarArgType', 'CollectionType', 'Comparable', 'DebugPrintable',\n            'DictionaryLiteralConvertible', 'Equatable', 'ExtendedGraphemeClusterLiteralConvertible', 'ExtensibleCollectionType',\n            'FloatLiteralConvertible', 'FloatingPointType', 'ForwardIndexType', 'GeneratorType', 'Hashable', 'IntegerArithmeticType',\n            'IntegerLiteralConvertible', 'IntegerType', 'IntervalType', 'MirrorType', 'MutableCollectionType', 'MutableSliceable',\n            'NilLiteralConvertible', 'OutputStreamType', 'Printable', 'RandomAccessIndexType', 'RangeReplaceableCollectionType',\n            'RawOptionSetType', 'RawRepresentable', 'Reflectable', 'SequenceType', 'SignedIntegerType', 'SignedNumberType',\n            'SinkType', 'Sliceable', 'Streamable', 'Strideable', 'StringInterpolationConvertible', 'StringLiteralConvertible',\n            'UnicodeCodecType', 'UnicodeScalarLiteralConvertible', 'UnsignedIntegerType', '_ArrayBufferType', '_ArrayType',\n            '_BidirectionalIndexType', '_CVarArgPassedAsDouble', '_CocoaStringType', '_CollectionType', '_Comparable',\n            '_DestructorSafeContainer', '_ExtensibleCollectionType', '_ForwardIndexType', '_Incrementable', '_IntegerArithmeticType',\n            '_IntegerType', '_NSArrayCoreType', '_NSCopyingType', '_NSDictionaryCoreType', '_NSDictionaryType', '_NSEnumeratorType',\n            '_NSFastEnumerationType', '_NSSetCoreType', '_NSSetType', '_NSStringCoreType', '_ObjectiveCBridgeable', '_PointerType',\n            '_RandomAccessIndexType', '_RawOptionSetType', '_SequenceType', '_Sequence_Type', '_ShadowProtocol', '_SignedIntegerType',\n            '_SignedNumberType', '_Sliceable', '_Strideable', '_StringElementType', '_UnsignedIntegerType', '__ArrayType'\n        ),\n\n        /*\n        ** Foundation Classes\n        */\n        7 => array(\n            'NSObject', 'NSAffineTransform', 'NSAppleEventDescriptor', 'NSAppleEventManager', 'NSAppleScript', 'NSArray', 'NSMutableArray',\n            'NSAssertionHandler', 'NSAttributedString', 'NSMutableAttributedString', 'NSAutoreleasePool', 'NSBackgroundActivityScheduler',\n            'NSBundle', 'NSCache', 'NSCachedURLResponse', 'NSCalendar', 'NSCharacterSet', 'NSMutableCharacterSet', 'NSClassDescription',\n            'NSScriptClassDescription', 'NSCoder', 'NSArchiver', 'NSKeyedArchiver', 'NSKeyedUnarchiver', 'NSPortCoder', 'NSUnarchiver',\n            'NSCondition', 'NSConditionLock', 'NSConnection', 'NSData', 'NSMutableData', 'NSPurgeableData', 'NSDate', 'NSCalendarDate',\n            'NSDateComponents', 'NSDecimalNumberHandler', 'NSDictionary', 'NSMutableDictionary', 'NSDistantObjectRequest', 'NSDistributedLock',\n            'NSEnumerator', 'NSDirectoryEnumerator', 'NSError', 'NSException', 'NSExpression', 'NSExtensionContext', 'NSExtensionItem',\n            'NSFileAccessIntent', 'NSFileCoordinator', 'NSFileHandle', 'NSFileManager', 'NSFileSecurity', 'NSFileVersion', 'NSFileWrapper',\n            'NSFormatter', 'NSByteCountFormatter', 'NSDateComponentsFormatter', 'NSDateFormatter', 'NSDateIntervalFormatter',\n            'NSEnergyFormatter', 'NSLengthFormatter', 'NSMassFormatter', 'NSNumberFormatter', 'NSGarbageCollector', 'NSHashTable', 'NSHost',\n            'NSHTTPCookie', 'NSHTTPCookieStorage', 'NSIndexPath', 'NSIndexSet', 'NSMutableIndexSet', 'NSInvocation', 'NSItemProvider',\n            'NSJSONSerialization', 'NSLinguisticTagger', 'NSLocale', 'NSLock', 'NSMapTable', 'NSMetadataItem', 'NSMetadataQuery',\n            'NSMetadataQueryAttributeValueTuple', 'NSMetadataQueryResultGroup', 'NSMethodSignature', 'NSNetService', 'NSNetServiceBrowser',\n            'NSNotification', 'NSNotificationCenter', 'NSDistributedNotificationCenter', 'NSNotificationQueue', 'NSNull', 'NSOperation',\n            'NSBlockOperation', 'NSInvocationOperation', 'NSOperationQueue', 'NSOrderedSet', 'NSMutableOrderedSet', 'NSOrthography', 'NSPipe',\n            'NSPointerArray', 'NSPointerFunctions', 'NSPort', 'NSMachPort', 'NSMessagePort', 'NSSocketPort', 'NSPortMessage', 'NSPortNameServer',\n            'NSMachBootstrapServer', 'NSMessagePortNameServer', 'NSSocketPortNameServer', 'NSPositionalSpecifier', 'NSPredicate',\n            'NSComparisonPredicate', 'NSCompoundPredicate', 'NSProcessInfo', 'NSProgress', 'NSPropertyListSerialization', 'NSRecursiveLock',\n            'NSRegularExpression', 'NSDataDetector', 'NSRunLoop', 'NSScanner', 'NSScriptCoercionHandler', 'NSScriptCommand', 'NSCloneCommand',\n            'NSCloseCommand', 'NSCountCommand', 'NSCreateCommand', 'NSDeleteCommand', 'NSExistsCommand', 'NSGetCommand', 'NSMoveCommand',\n            'NSQuitCommand', 'NSSetCommand', 'NSScriptCommandDescription', 'NSScriptExecutionContext', 'NSScriptObjectSpecifier',\n            'NSIndexSpecifier', 'NSMiddleSpecifier', 'NSNameSpecifier', 'NSPropertySpecifier', 'NSRandomSpecifier', 'NSRangeSpecifier',\n            'NSRelativeSpecifier', 'NSUniqueIDSpecifier', 'NSWhoseSpecifier', 'NSScriptSuiteRegistry', 'NSScriptWhoseTest', 'NSLogicalTest',\n            'NSSpecifierTest', 'NSSet', 'NSMutableSet', 'NSCountedSet', 'NSSortDescriptor', 'NSSpellServer', 'NSStream', 'NSInputStream',\n            'NSOutputStream', 'NSString', 'NSMutableString', 'NSTask', 'NSTextCheckingResult', 'NSThread', 'NSTimer', 'NSTimeZone',\n            'NSUbiquitousKeyValueStore', 'NSUndoManager', 'NSURL', 'NSURLAuthenticationChallenge', 'NSURLCache', 'NSURLComponents',\n            'NSURLConnection', 'NSURLCredential', 'NSURLCredentialStorage', 'NSURLDownload', 'NSURLHandle', 'NSURLProtectionSpace',\n            'NSURLProtocol', 'NSURLQueryItem', 'NSURLRequest', 'NSMutableURLRequest', 'NSURLResponse', 'NSHTTPURLResponse', 'NSURLSession',\n            'NSURLSessionConfiguration', 'NSURLSessionTask', 'NSURLSessionDataTask', 'NSURLSessionUploadTask', 'NSURLSessionDownloadTask',\n            'NSUserActivity', 'NSUserDefaults', 'NSUserNotification', 'NSUserNotificationAction', 'NSUserNotificationCenter',\n            'NSUserScriptTask', 'NSUserAppleScriptTask', 'NSUserAutomatorTask', 'NSUserUnixTask', 'NSUUID', 'NSValue', 'NSNumber',\n            'NSDecimalNumber', 'NSValueTransformer', 'NSXMLNode', 'NSXMLDocument', 'NSXMLDTD', 'NSXMLDTDNode', 'NSXMLElement', 'NSXMLParser',\n            'NSXPCConnection', 'NSXPCInterface', 'NSXPCListener', 'NSXPCListenerEndpoint', 'NSProxy', 'NSDistantObject', 'NSProtocolChecker'\n        ),\n        /*\n        ** Foundation Protocols\n        */\n        8 => array(\n            'NSCacheDelegate', 'NSCoding', 'NSComparisonMethods', 'NSConnectionDelegate', 'NSCopying', 'NSDecimalNumberBehaviors',\n            'NSDiscardableContent', 'NSErrorRecoveryAttempting', 'NSExtensionRequestHandling', 'NSFastEnumeration', 'NSFileManagerDelegate',\n            'NSFilePresenter', 'NSKeyValueCoding', 'NSKeyValueObserving', 'NSKeyedArchiverDelegate', 'NSKeyedUnarchiverDelegate', 'NSLocking',\n            'NSMachPortDelegate', 'NSMetadataQueryDelegate', 'NSMutableCopying', 'NSNetServiceBrowserDelegate', 'NSNetServiceDelegate',\n            'NSPortDelegate', 'NSScriptKeyValueCoding', 'NSScriptObjectSpecifiers', 'NSScriptingComparisonMethods',\n            'NSSecureCoding', 'NSSpellServerDelegate', 'NSStreamDelegate', 'NSURLAuthenticationChallengeSender',\n            'NSURLConnectionDataDelegate', 'NSURLConnectionDelegate', 'NSURLDownloadDelegate', 'NSURLHandleClient', 'NSURLProtocolClient',\n            'NSURLSessionDataDelegate', 'NSURLSessionDelegate', 'NSURLSessionDownloadDelegate', 'NSURLSessionTaskDelegate',\n            'NSUserActivityDelegate', 'NSUserNotificationCenterDelegate', 'NSXMLParserDelegate', 'NSXPCListenerDelegate',\n            'NSXPCProxyCreating'\n        ),\n        /*\n        ** Core Foundation Protocols\n        **\n        */\n        9 => array(\n            'CFAllocator', 'CFArray', 'CFAttributedString', 'CFBag', 'CFBinaryHeap', 'CFBitVector', 'CFBoolean', 'CFBundle', 'CFCalendar',\n            'CFCharacterSet', 'CFData', 'CFDate', 'CFDateFormatter', 'CFDictionary', 'CFError', 'CFFileDescriptor', 'CFLocale', 'CFMachPort',\n            'CFMessagePort', 'CFMutableArray', 'CFMutableAttributedString', 'CFMutableBag', 'CFMutableBitVector', 'CFMutableCharacterSet',\n            'CFMutableData', 'CFMutableDictionary', 'CFMutableSet', 'CFMutableString', 'CFNotificationCenter', 'CFNull', 'CFNumber',\n            'CFNumberFormatter', 'CFPlugIn', 'CFPlugInInstance', 'CFPropertyList', 'CFReadStream', 'CFRunLoop', 'CFRunLoopObserver',\n            'CFRunLoopSource', 'CFRunLoopTimer', 'CFSet', 'CFSocket', 'CFString', 'CFStringTokenizer', 'CFTimeZone', 'CFTree', 'CFType', 'CFURL',\n            'CFUUID', 'CFUserNotification', 'CFWriteStream', 'CFXMLNode', 'CFXMLParser', 'CFXMLTree'\n        ),\n\n        /*\n        ** Core Foundation Data Types\n        **\n        */\n        10 => array(\n            'CFAbsoluteTime', 'CFAllocatorContext', 'CFAllocatorRef', 'CFArrayCallBacks', 'CFArrayRef', 'CFAttributedStringRef',\n            'CFBagCallBacks', 'CFBagRef', 'CFBinaryHeapCallBacks', 'CFBinaryHeapCompareContext', 'CFBinaryHeapRef', 'CFBit', 'CFBitVectorRef',\n            'CFBooleanRef', 'CFBundleRef', 'CFBundleRefNum', 'CFCalendarRef', 'CFCharacterSetPredefinedSet',\n            'CFCharacterSetPredefinedSet.AlphaNumeric', 'CFCharacterSetPredefinedSet.CapitalizedLetter',\n            'CFCharacterSetPredefinedSet.Control', 'CFCharacterSetPredefinedSet.DecimalDigit',\n            'CFCharacterSetPredefinedSet.Decomposable', 'CFCharacterSetPredefinedSet.Illegal', 'CFCharacterSetPredefinedSet.Letter',\n            'CFCharacterSetPredefinedSet.LowercaseLetter', 'CFCharacterSetPredefinedSet.Newline', 'CFCharacterSetPredefinedSet.NonBase',\n            'CFCharacterSetPredefinedSet.Punctuation', 'CFCharacterSetPredefinedSet.Symbol',\n            'CFCharacterSetPredefinedSet.UppercaseLetter', 'CFCharacterSetPredefinedSet.Whitespace',\n            'CFCharacterSetPredefinedSet.WhitespaceAndNewline', 'CFCharacterSetRef', 'CFDataRef', 'CFDataSearchFlags', 'CFDateFormatterRef',\n            'CFDateFormatterStyle', 'CFDateFormatterStyle.FullStyle', 'CFDateFormatterStyle.LongStyle', 'CFDateFormatterStyle.MediumStyle',\n            'CFDateFormatterStyle.NoStyle', 'CFDateFormatterStyle.ShortStyle', 'CFDateRef', 'CFDictionaryKeyCallBacks', 'CFDictionaryRef',\n            'CFDictionaryValueCallBacks', 'CFErrorRef', 'CFFileDescriptorCallBack', 'CFFileDescriptorContext',\n            'CFFileDescriptorNativeDescriptor', 'CFFileDescriptorRef', 'CFGregorianDate', 'CFGregorianUnits', 'CFHashCode', 'CFIndex',\n            'CFLocaleRef', 'CFMachPortContext', 'CFMachPortRef', 'CFMessagePortContext', 'CFMessagePortRef', 'CFMutableArrayRef',\n            'CFMutableAttributedStringRef', 'CFMutableBagRef', 'CFMutableBitVectorRef', 'CFMutableCharacterSetRef', 'CFMutableDataRef',\n            'CFMutableDictionaryRef', 'CFMutableSetRef', 'CFMutableStringRef', 'CFNotificationCenterRef', 'CFNullRef',\n            'CFNumberFormatterOptionFlags', 'CFNumberFormatterPadPosition', 'CFNumberFormatterPadPosition.AfterPrefix',\n            'CFNumberFormatterPadPosition.AfterSuffix', 'CFNumberFormatterPadPosition.BeforePrefix',\n            'CFNumberFormatterPadPosition.BeforeSuffix', 'CFNumberFormatterRef', 'CFNumberFormatterStyle',\n            'CFNumberFormatterStyle.CurrencyStyle', 'CFNumberFormatterStyle.DecimalStyle', 'CFNumberFormatterStyle.NoStyle',\n            'CFNumberFormatterStyle.PercentStyle', 'CFNumberFormatterStyle.ScientificStyle', 'CFNumberFormatterStyle.SpellOutStyle',\n            'CFNumberRef', 'CFOptionFlags', 'CFPlugInInstanceRef', 'CFPlugInRef', 'CFPropertyListMutabilityOptions', 'CFPropertyListRef',\n            'CFRange', 'CFReadStreamRef', 'CFRunLoopObserverContext', 'CFRunLoopObserverRef', 'CFRunLoopRef', 'CFRunLoopSourceContext',\n            'CFRunLoopSourceContext1', 'CFRunLoopSourceRef', 'CFRunLoopTimerContext', 'CFRunLoopTimerRef', 'CFSetCallBacks', 'CFSetRef',\n            'CFSocketContext', 'CFSocketNativeHandle', 'CFSocketRef', 'CFSocketSignature', 'CFStreamClientContext', 'CFStreamError',\n            'CFStringCompareFlags', 'CFStringEncoding', 'CFStringEncodings', 'CFStringEncodings.ANSEL', 'CFStringEncodings.Big5',\n            'CFStringEncodings.Big5_E', 'CFStringEncodings.Big5_HKSCS_1999', 'CFStringEncodings.CNS_11643_92_P1',\n            'CFStringEncodings.CNS_11643_92_P2', 'CFStringEncodings.CNS_11643_92_P3', 'CFStringEncodings.DOSArabic',\n            'CFStringEncodings.DOSBalticRim', 'CFStringEncodings.DOSCanadianFrench', 'CFStringEncodings.DOSChineseSimplif',\n            'CFStringEncodings.DOSChineseTrad', 'CFStringEncodings.DOSCyrillic', 'CFStringEncodings.DOSGreek',\n            'CFStringEncodings.DOSGreek1', 'CFStringEncodings.DOSGreek2', 'CFStringEncodings.DOSHebrew', 'CFStringEncodings.DOSIcelandic',\n            'CFStringEncodings.DOSJapanese', 'CFStringEncodings.DOSKorean', 'CFStringEncodings.DOSLatin1', 'CFStringEncodings.DOSLatin2',\n            'CFStringEncodings.DOSLatinUS', 'CFStringEncodings.DOSNordic', 'CFStringEncodings.DOSPortuguese',\n            'CFStringEncodings.DOSRussian', 'CFStringEncodings.DOSThai', 'CFStringEncodings.DOSTurkish', 'CFStringEncodings.EBCDIC_CP037',\n            'CFStringEncodings.EBCDIC_US', 'CFStringEncodings.EUC_CN', 'CFStringEncodings.EUC_JP', 'CFStringEncodings.EUC_KR',\n            'CFStringEncodings.EUC_TW', 'CFStringEncodings.GBK_95', 'CFStringEncodings.GB_18030_2000', 'CFStringEncodings.GB_2312_80',\n            'CFStringEncodings.HZ_GB_2312', 'CFStringEncodings.ISOLatin10', 'CFStringEncodings.ISOLatin2', 'CFStringEncodings.ISOLatin3',\n            'CFStringEncodings.ISOLatin4', 'CFStringEncodings.ISOLatin5', 'CFStringEncodings.ISOLatin6', 'CFStringEncodings.ISOLatin7',\n            'CFStringEncodings.ISOLatin8', 'CFStringEncodings.ISOLatin9', 'CFStringEncodings.ISOLatinArabic',\n            'CFStringEncodings.ISOLatinCyrillic', 'CFStringEncodings.ISOLatinGreek', 'CFStringEncodings.ISOLatinHebrew',\n            'CFStringEncodings.ISOLatinThai', 'CFStringEncodings.ISO_2022_CN', 'CFStringEncodings.ISO_2022_CN_EXT',\n            'CFStringEncodings.ISO_2022_JP', 'CFStringEncodings.ISO_2022_JP_1', 'CFStringEncodings.ISO_2022_JP_2',\n            'CFStringEncodings.ISO_2022_JP_3', 'CFStringEncodings.ISO_2022_KR', 'CFStringEncodings.JIS_C6226_78',\n            'CFStringEncodings.JIS_X0201_76', 'CFStringEncodings.JIS_X0208_83', 'CFStringEncodings.JIS_X0208_90',\n            'CFStringEncodings.JIS_X0212_90', 'CFStringEncodings.KOI8_R', 'CFStringEncodings.KOI8_U', 'CFStringEncodings.KSC_5601_87',\n            'CFStringEncodings.KSC_5601_92_Johab', 'CFStringEncodings.MacArabic', 'CFStringEncodings.MacArmenian',\n            'CFStringEncodings.MacBengali', 'CFStringEncodings.MacBurmese', 'CFStringEncodings.MacCeltic',\n            'CFStringEncodings.MacCentralEurRoman', 'CFStringEncodings.MacChineseSimp', 'CFStringEncodings.MacChineseTrad',\n            'CFStringEncodings.MacCroatian', 'CFStringEncodings.MacCyrillic', 'CFStringEncodings.MacDevanagari',\n            'CFStringEncodings.MacDingbats', 'CFStringEncodings.MacEthiopic', 'CFStringEncodings.MacExtArabic',\n            'CFStringEncodings.MacFarsi', 'CFStringEncodings.MacGaelic', 'CFStringEncodings.MacGeorgian', 'CFStringEncodings.MacGreek',\n            'CFStringEncodings.MacGujarati', 'CFStringEncodings.MacGurmukhi', 'CFStringEncodings.MacHFS', 'CFStringEncodings.MacHebrew',\n            'CFStringEncodings.MacIcelandic', 'CFStringEncodings.MacInuit', 'CFStringEncodings.MacJapanese',\n            'CFStringEncodings.MacKannada', 'CFStringEncodings.MacKhmer', 'CFStringEncodings.MacKorean', 'CFStringEncodings.MacLaotian',\n            'CFStringEncodings.MacMalayalam', 'CFStringEncodings.MacMongolian', 'CFStringEncodings.MacOriya',\n            'CFStringEncodings.MacRomanLatin1', 'CFStringEncodings.MacRomanian', 'CFStringEncodings.MacSinhalese',\n            'CFStringEncodings.MacSymbol', 'CFStringEncodings.MacTamil', 'CFStringEncodings.MacTelugu', 'CFStringEncodings.MacThai',\n            'CFStringEncodings.MacTibetan', 'CFStringEncodings.MacTurkish', 'CFStringEncodings.MacUkrainian', 'CFStringEncodings.MacVT100',\n            'CFStringEncodings.MacVietnamese', 'CFStringEncodings.NextStepJapanese', 'CFStringEncodings.ShiftJIS',\n            'CFStringEncodings.ShiftJIS_X0213', 'CFStringEncodings.ShiftJIS_X0213_MenKuTen', 'CFStringEncodings.UTF7',\n            'CFStringEncodings.UTF7_IMAP', 'CFStringEncodings.VISCII', 'CFStringEncodings.WindowsArabic',\n            'CFStringEncodings.WindowsBalticRim', 'CFStringEncodings.WindowsCyrillic', 'CFStringEncodings.WindowsGreek',\n            'CFStringEncodings.WindowsHebrew', 'CFStringEncodings.WindowsKoreanJohab', 'CFStringEncodings.WindowsLatin2',\n            'CFStringEncodings.WindowsLatin5', 'CFStringEncodings.WindowsVietnamese', 'CFStringInlineBuffer', 'CFStringRef',\n            'CFStringTokenizerRef', 'CFSwappedFloat32', 'CFSwappedFloat64', 'CFTimeInterval', 'CFTimeZoneNameStyle',\n            'CFTimeZoneNameStyle.DaylightSaving', 'CFTimeZoneNameStyle.Generic', 'CFTimeZoneNameStyle.ShortDaylightSaving',\n            'CFTimeZoneNameStyle.ShortGeneric', 'CFTimeZoneNameStyle.ShortStandard', 'CFTimeZoneNameStyle.Standard', 'CFTimeZoneRef',\n            'CFTreeContext', 'CFTreeRef', 'CFTypeID', 'CFTypeRef', 'CFURLBookmarkCreationOptions', 'CFURLBookmarkFileCreationOptions',\n            'CFURLBookmarkResolutionOptions', 'CFURLRef', 'CFUUIDBytes', 'CFUUIDRef', 'CFUserNotificationRef', 'CFWriteStreamRef',\n            'CFXMLAttributeDeclarationInfo', 'CFXMLAttributeListDeclarationInfo', 'CFXMLDocumentInfo', 'CFXMLDocumentTypeInfo',\n            'CFXMLElementInfo', 'CFXMLElementTypeDeclarationInfo', 'CFXMLEntityInfo', 'CFXMLEntityReferenceInfo', 'CFXMLExternalID',\n            'CFXMLNodeRef', 'CFXMLNotationInfo', 'CFXMLParserCallBacks', 'CFXMLParserContext', 'CFXMLParserRef',\n            'CFXMLProcessingInstructionInfo', 'CFXMLTreeRef'\n        ),\n        /*\n        ** Core Graphics Protocols\n        **\n        */\n        11 => array(\n            'CGBitmapContext', 'CGColor', 'CGColorSpace', 'CGContext', 'CGDataConsumer', 'CGDataProvider', 'CGFont', 'CGFunction', 'CGGradient',\n            'CGImage', 'CGLayer', 'CGPath', 'CGPattern', 'CGPDFArray', 'CGPDFContentStream', 'CGPDFContext', 'CGPDFDictionary', 'CGPDFDocument',\n            'CGPDFObject', 'CGPDFOperatorTable', 'CGPDFPage', 'CGPDFScanner', 'CGPDFStream', 'CGPDFString', 'CGShading'\n        ),\n\n        /*\n        ** Core Graphics Data Types\n        **\n        */\n        12 => array(\n            'CGBitmapContextReleaseDataCallback', 'CGColorRef', 'CGColorSpaceRef', 'CGContextRef', 'CGDataConsumerCallbacks',\n            'CGDataConsumerRef', 'CGDataProviderRef', 'CGDataProviderDirectCallbacks', 'CGDataProviderSequentialCallbacks', 'CGFontRef',\n            'CGFontIndex', 'CGGlyph', 'CGFunctionRef', 'CGFunctionCallbacks', 'CGGradientRef', 'CGImageRef', 'CGLayerRef', 'CGPathRef',\n            'CGMutablePathRef', 'CGPathElement', 'CGPatternRef', 'CGPatternCallbacks', 'CGPDFArrayRef', 'CGPDFContentStreamRef',\n            'CGPDFDictionaryRef', 'CGPDFDocumentRef', 'CGPDFObjectRef', 'CGPDFBoolean', 'CGPDFInteger', 'CGPDFReal', 'CGPDFOperatorTableRef',\n            'CGPDFPageRef', 'CGPDFScannerRef', 'CGPDFStreamRef', 'CGPDFStringRef', 'CGShadingRef', 'CGAffineTransform', 'CGFloat', 'CGPoint', 'CGRect',\n            'CGSize', 'CGVector', 'CGError'\n        ),\n        /*\n        ** UIKit Classes\n        **\n        */\n        13 => array(\n            'NSFileProviderExtension', 'NSLayoutConstraint', 'NSLayoutManager', 'NSParagraphStyle', 'NSMutableParagraphStyle',\n            'NSShadow', 'NSStringDrawingContext', 'NSTextAttachment', 'NSTextContainer', 'NSTextTab', 'UIAcceleration', 'UIAccelerometer',\n            'UIAccessibilityCustomAction', 'UIAccessibilityElement', 'UIActivity', 'UIAlertAction', 'UIBarItem', 'UIBarButtonItem',\n            'UITabBarItem', 'UIBezierPath', 'UICollectionViewLayout', 'UICollectionViewFlowLayout', 'UICollectionViewTransitionLayout',\n            'UICollectionViewLayoutAttributes', 'UICollectionViewLayoutInvalidationContext',\n            'UICollectionViewFlowLayoutInvalidationContext', 'UICollectionViewUpdateItem', 'UIColor', 'UIDevice', 'UIDictationPhrase',\n            'UIDocument', 'UIManagedDocument', 'UIDocumentInteractionController', 'UIDynamicAnimator', 'UIDynamicBehavior',\n            'UIAttachmentBehavior', 'UICollisionBehavior', 'UIDynamicItemBehavior', 'UIGravityBehavior', 'UIPushBehavior', 'UISnapBehavior',\n            'UIEvent', 'UIFont', 'UIFontDescriptor', 'UIGestureRecognizer', 'UILongPressGestureRecognizer', 'UIPanGestureRecognizer',\n            'UIScreenEdgePanGestureRecognizer', 'UIPinchGestureRecognizer', 'UIRotationGestureRecognizer', 'UISwipeGestureRecognizer',\n            'UITapGestureRecognizer', 'UIImage', 'UIImageAsset', 'UIKeyCommand', 'UILexicon', 'UILexiconEntry', 'UILocalNotification',\n            'UILocalizedIndexedCollation', 'UIMenuController', 'UIMenuItem', 'UIMotionEffect', 'UIInterpolatingMotionEffect',\n            'UIMotionEffectGroup', 'UINavigationItem', 'UINib', 'UIPasteboard', 'UIPercentDrivenInteractiveTransition', 'UIPopoverController',\n            'UIPresentationController', 'UIPopoverPresentationController', 'UIPrintFormatter', 'UIMarkupTextPrintFormatter',\n            'UISimpleTextPrintFormatter', 'UIViewPrintFormatter', 'UIPrintInfo', 'UIPrintInteractionController', 'UIPrintPageRenderer',\n            'UIPrintPaper', 'UIPrinter', 'UIPrinterPickerController', 'UIResponder', 'UIApplication', 'UIView', 'UIActionSheet',\n            'UIActivityIndicatorView', 'UIAlertView', 'UICollectionReusableView', 'UICollectionViewCell', 'UIControl', 'UIButton',\n            'UIDatePicker', 'UIPageControl', 'UIRefreshControl', 'UISegmentedControl', 'UISlider', 'UIStepper', 'UISwitch', 'UITextField',\n            'UIImageView', 'UIInputView', 'UILabel', 'UINavigationBar', 'UIPickerView', 'UIPopoverBackgroundView', 'UIProgressView',\n            'UIScrollView', 'UICollectionView', 'UITableView', 'UITextView', 'UISearchBar', 'UITabBar', 'UITableViewCell',\n            'UITableViewHeaderFooterView', 'UIToolbar', 'UIVisualEffectView', 'UIWebView', 'UIWindow', 'UIViewController',\n            'UIActivityViewController', 'UIAlertController', 'UICollectionViewController', 'UIDocumentMenuViewController',\n            'UIDocumentPickerExtensionViewController', 'UIDocumentPickerViewController', 'UIInputViewController', 'UINavigationController',\n            'UIImagePickerController', 'UIVideoEditorController', 'UIPageViewController', 'UIReferenceLibraryViewController',\n            'UISearchController', 'UISplitViewController', 'UITabBarController', 'UITableViewController', 'UIScreen', 'UIScreenMode',\n            'UISearchDisplayController', 'UIStoryboard', 'UIStoryboardSegue', 'UIStoryboardPopoverSegue', 'UITableViewRowAction',\n            'UITextChecker', 'UITextInputMode', 'UITextInputStringTokenizer', 'UITextPosition', 'UITextRange', 'UITextSelectionRect', 'UITouch',\n            'UITraitCollection', 'UIUserNotificationAction', 'UIMutableUserNotificationAction', 'UIUserNotificationCategory',\n            'UIMutableUserNotificationCategory', 'UIUserNotificationSettings', 'UIVisualEffect', 'UIBlurEffect', 'UIVibrancyEffect',\n            'NSTextStorage', 'UIActivityItemProvider'\n        ),\n        /*\n        ** UIKit Protocols\n        **\n        */\n        14 => array(\n            'NSLayoutManagerDelegate', 'NSTextAttachmentContainer', 'NSTextLayoutOrientationProvider', 'NSTextStorageDelegate',\n            'UIAccelerometerDelegate', 'UIAccessibility', 'UIAccessibilityAction', 'UIAccessibilityContainer', 'UIAccessibilityFocus',\n            'UIAccessibilityIdentification', 'UIAccessibilityReadingContent', 'UIActionSheetDelegate', 'UIActivityItemSource',\n            'UIAdaptivePresentationControllerDelegate', 'UIAlertViewDelegate', 'UIAppearance', 'UIAppearanceContainer',\n            'UIApplicationDelegate', 'UIBarPositioning', 'UIBarPositioningDelegate', 'UICollectionViewDataSource',\n            'UICollectionViewDelegate', 'UICollectionViewDelegateFlowLayout', 'UICollisionBehaviorDelegate', 'UIContentContainer',\n            'UICoordinateSpace', 'UIDataSourceModelAssociation', 'UIDocumentInteractionControllerDelegate', 'UIDocumentMenuDelegate',\n            'UIDocumentPickerDelegate', 'UIDynamicAnimatorDelegate', 'UIDynamicItem', 'UIGestureRecognizerDelegate',\n            'UIGuidedAccessRestrictionDelegate', 'UIImagePickerControllerDelegate', 'UIInputViewAudioFeedback', 'UIKeyInput',\n            'UILayoutSupport', 'UINavigationBarDelegate', 'UINavigationControllerDelegate', 'UIObjectRestoration',\n            'UIPageViewControllerDataSource', 'UIPageViewControllerDelegate', 'UIPickerViewAccessibilityDelegate',\n            'UIPickerViewDataSource', 'UIPickerViewDelegate', 'UIPopoverBackgroundViewMethods', 'UIPopoverControllerDelegate',\n            'UIPopoverPresentationControllerDelegate', 'UIPrintInteractionControllerDelegate', 'UIPrinterPickerControllerDelegate',\n            'UIResponderStandardEditActions', 'UIScrollViewAccessibilityDelegate', 'UIScrollViewDelegate', 'UISearchBarDelegate',\n            'UISearchControllerDelegate', 'UISearchDisplayDelegate', 'UISearchResultsUpdating', 'UISplitViewControllerDelegate',\n            'UIStateRestoring', 'UITabBarControllerDelegate', 'UITabBarDelegate', 'UITableViewDataSource', 'UITableViewDelegate',\n            'UITextDocumentProxy', 'UITextFieldDelegate', 'UITextInput', 'UITextInputDelegate', 'UITextInputTokenizer', 'UITextInputTraits',\n            'UITextViewDelegate', 'UIToolbarDelegate', 'UITraitEnvironment', 'UIVideoEditorControllerDelegate',\n            'UIViewControllerAnimatedTransitioning', 'UIViewControllerContextTransitioning', 'UIViewControllerInteractiveTransitioning',\n            'UIViewControllerRestoration', 'UIViewControllerTransitionCoordinator', 'UIViewControllerTransitionCoordinatorContext',\n            'UIViewControllerTransitioningDelegate', 'UIWebViewDelegate'\n        ),\n        /*\n        ** AppKit Classes\n        **\n        */\n        15 => array(\n            'NSAccessibilityElement', 'NSAlert', 'NSAnimation', 'NSViewAnimation', 'NSAnimationContext', 'NSAppearance',\n            'NSBezierPath', 'NSCell', 'NSActionCell', 'NSButtonCell', 'NSMenuItemCell', 'NSPopUpButtonCell', 'NSDatePickerCell', 'NSFormCell',\n            'NSLevelIndicatorCell', 'NSPathCell', 'NSSegmentedCell', 'NSSliderCell', 'NSStepperCell', 'NSTextFieldCell', 'NSComboBoxCell',\n            'NSPathComponentCell', 'NSSearchFieldCell', 'NSSecureTextFieldCell', 'NSTableHeaderCell', 'NSTokenFieldCell', 'NSBrowserCell',\n            'NSImageCell', 'NSTextAttachmentCell', 'NSColor', 'NSColorList', 'NSColorPicker', 'NSColorSpace', 'NSController', 'NSObjectController',\n            'NSArrayController', 'NSDictionaryController', 'NSTreeController', 'NSUserDefaultsController', 'NSCursor', 'NSDockTile',\n            'NSDocument', 'NSPersistentDocument', 'NSDocumentController', 'NSDraggingImageComponent', 'NSDraggingItem', 'NSDraggingSession',\n            'NSEvent', 'NSFont', 'NSFontCollection', 'NSMutableFontCollection', 'NSFontDescriptor', 'NSFontManager', 'NSGestureRecognizer',\n            'NSClickGestureRecognizer', 'NSMagnificationGestureRecognizer', 'NSPanGestureRecognizer', 'NSPressGestureRecognizer',\n            'NSRotationGestureRecognizer', 'NSGlyphGenerator', 'NSGlyphInfo', 'NSGradient', 'NSGraphicsContext', 'NSHelpManager', 'NSImage',\n            'NSImageRep', 'NSBitmapImageRep', 'NSCachedImageRep', 'NSCIImageRep', 'NSCustomImageRep', 'NSEPSImageRep', 'NSPDFImageRep',\n            'NSPICTImageRep', 'NSInputManager', 'NSInputServer', 'NSMediaLibraryBrowserController',\n            'NSMenu', 'NSMenuItem', 'NSMovie', 'NSNib', 'NSNibConnector', 'NSNibControlConnector', 'NSNibOutletConnector', 'NSOpenGLContext',\n            'NSOpenGLPixelBuffer', 'NSOpenGLPixelFormat', 'NSPageLayout', 'NSPasteboard',\n            'NSPasteboardItem', 'NSPathControlItem', 'NSPDFInfo', 'NSPDFPanel', 'NSPredicateEditorRowTemplate', 'NSPrinter', 'NSPrintInfo',\n            'NSPrintOperation', 'NSPrintPanel', 'NSResponder', 'NSApplication', 'NSDrawer', 'NSPopover', 'NSView', 'NSBox', 'NSClipView',\n            'NSCollectionView', 'NSControl', 'NSBrowser', 'NSButton', 'NSPopUpButton', 'NSStatusBarButton', 'NSColorWell', 'NSDatePicker',\n            'NSImageView', 'NSLevelIndicator', 'NSMatrix', 'NSForm', 'NSPathControl', 'NSRuleEditor', 'NSPredicateEditor', 'NSScroller',\n            'NSSegmentedControl', 'NSSlider', 'NSStepper', 'NSTableView', 'NSOutlineView', 'NSTextField', 'NSComboBox', 'NSSearchField',\n            'NSSecureTextField', 'NSTokenField', 'NSMenuView', 'NSMovieView', 'NSOpenGLView', 'NSProgressIndicator', 'NSQuickDrawView',\n            'NSRulerView', 'NSScrollView', 'NSSplitView', 'NSStackView', 'NSTableCellView', 'NSTableHeaderView', 'NSTableRowView', 'NSTabView',\n            'NSText', 'NSTextView', 'NSVisualEffectView', 'NSViewController', 'NSCollectionViewItem', 'NSPageController',\n            'NSSplitViewController', 'NSTabViewController', 'NSTitlebarAccessoryViewController', 'NSWindow', 'NSPanel', 'NSColorPanel',\n            'NSFontPanel', 'NSSavePanel', 'NSOpenPanel', 'NSWindowController', 'NSRulerMarker', 'NSRunningApplication', 'NSScreen',\n            'NSSharingService', 'NSSharingServicePicker', 'NSSound', 'NSSpeechRecognizer', 'NSSpeechSynthesizer', 'NSSpellChecker',\n            'NSSplitViewItem', 'NSStatusBar', 'NSStatusItem', 'NSStoryboard', 'NSStoryboardSegue', 'NSTableColumn', 'NSTabViewItem',\n            'NSTextAlternatives', 'NSTextBlock', 'NSTextTable', 'NSTextTableBlock', 'NSTextFinder',\n            'NSTextInputContext', 'NSTextList', 'NSToolbar', 'NSToolbarItem', 'NSToolbarItemGroup', 'NSTouch', 'NSTrackingArea',\n            'NSTreeNode', 'NSTypesetter', 'NSATSTypesetter', 'NSWorkspace', 'CAOpenGLLayer',\n            'NSOpenGLLayer'\n        ),\n        /*\n        ** AppKit Protocols\n        **\n        */\n        16 => array(\n            'NSAccessibility', 'NSAccessibility Informal', 'NSAccessibilityButton', 'NSAccessibilityCheckBox',\n            'NSAccessibilityContainsTransientUI', 'NSAccessibilityGroup', 'NSAccessibilityImage',\n            'NSAccessibilityLayoutArea', 'NSAccessibilityLayoutItem', 'NSAccessibilityList', 'NSAccessibilityNavigableStaticText',\n            'NSAccessibilityOutline', 'NSAccessibilityProgressIndicator', 'NSAccessibilityRadioButton', 'NSAccessibilityRow',\n            'NSAccessibilitySlider', 'NSAccessibilityStaticText', 'NSAccessibilityStepper', 'NSAccessibilitySwitch', 'NSAccessibilityTable',\n            'NSAlertDelegate', 'NSAnimatablePropertyContainer', 'NSAnimationDelegate', 'NSAppearanceCustomization', 'NSApplicationDelegate',\n            'NSBrowserDelegate', 'NSChangeSpelling', 'NSCollectionViewDelegate', 'NSColorPickingCustom', 'NSColorPickingDefault',\n            'NSComboBoxCellDataSource', 'NSComboBoxDataSource', 'NSComboBoxDelegate', 'NSControlTextEditingDelegate',\n            'NSDatePickerCellDelegate', 'NSDictionaryControllerKeyValuePair', 'NSDraggingDestination', 'NSDraggingInfo', 'NSDraggingSource',\n            'NSDrawerDelegate', 'NSEditor', 'NSEditorRegistration', 'NSFontPanelValidation', 'NSGestureRecognizerDelegate', 'NSGlyphStorage',\n            'NSIgnoreMisspelledWords', 'NSImageDelegate', 'NSKeyValueBindingCreation', 'NSLayerDelegateContentsScaleUpdating',\n            'NSMatrixDelegate', 'NSMenuDelegate', 'NSMenuValidation', 'NSNibAwaking', 'NSOpenSavePanelDelegate',\n            'NSOutlineViewDataSource', 'NSOutlineViewDelegate', 'NSPageControllerDelegate', 'NSPasteboardItemDataProvider',\n            'NSPasteboardReading', 'NSPasteboardWriting', 'NSPathCellDelegate', 'NSPathControlDelegate', 'NSPlaceholders', 'NSPopoverDelegate',\n            'NSPrintPanelAccessorizing', 'NSRuleEditorDelegate', 'NSSeguePerforming', 'NSServicesMenuRequestor', 'NSSharingServiceDelegate',\n            'NSSharingServicePickerDelegate', 'NSSoundDelegate', 'NSSpeechRecognizerDelegate', 'NSSpeechSynthesizerDelegate',\n            'NSSplitViewDelegate', 'NSStackViewDelegate', 'NSTabViewDelegate', 'NSTableViewDataSource', 'NSTableViewDelegate',\n            'NSTextDelegate', 'NSTextFieldDelegate', 'NSTextFinderBarContainer', 'NSTextFinderClient', 'NSTextInput',\n            'NSTextInputClient', 'NSTextViewDelegate',\n            'NSTokenFieldCellDelegate', 'NSTokenFieldDelegate', 'NSToolTipOwner', 'NSToolbarDelegate', 'NSToolbarItemValidation',\n            'NSUserInterfaceItemIdentification', 'NSUserInterfaceItemSearchDataSource', 'NSUserInterfaceItemSearching',\n            'NSUserInterfaceValidations', 'NSValidatedUserInterfaceItem', 'NSViewControllerPresentationAnimator', 'NSWindowDelegate',\n            'NSWindowRestoration', 'NSWindowScripting'\n        )\n    ),\n    'SYMBOLS' => array(\n        # Operators\n        1 => array(\n            '!=', '!==', '%', '%=', '&', '&&', '&*', '&+', '&-', '&=', '*', '*=', '+', '++', '+=', '-', '--', '-=', '...', '..<', '/',\n            '/=', '<', '<<', '<<=', '<=', '==', '===', '>', '>=', '>>', '>>=', '??', '^', '^=', '|', '|=', '||', '~=', '~>', '!', '~'\n        ),\n        # Structure\n        2 => array(\n            '(', ')', '[', ']', '{', '}', ',', ';', ':'\n        )\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true,\n        9 => true,\n        10 => true,\n        11 => true,\n        12 => true,\n        13 => true,\n        14 => true,\n        15 => true,\n        16 => true,\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #B833A1;',                        // Keywords\n            2 => 'color: #B833A1;',                        // Attributes\n            3 => 'color: #508187;',                        // Builtin Functions\n            4 => 'color: #6F41A7;',                        // Types\n            5 => 'color: #6F41A7;',\n            6 => 'color: #6F41A7;',\n            7 => 'color: #6F41A7;',\n            8 => 'color: #6F41A7;',\n            9 => 'color: #6F41A7;',\n            10 => 'color: #6F41A7;',\n            11 => 'color: #6F41A7;',\n            12 => 'color: #6F41A7;',\n            13 => 'color: #6F41A7;',\n            14 => 'color: #6F41A7;',\n            15 => 'color: #6F41A7;',\n            16 => 'color: #6F41A7;'\n        ),\n        'COMMENTS' => array(\n            1 => 'color: #008312;',\n            'MULTI' => 'color: #008312;'\n        ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #C41A16;'\n        ),\n        'BRACKETS' => array(\n            0 => 'color: black;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #C41A16;'\n        ),\n        'NUMBERS' => array(\n            0 => 'color: #1C00CF;',\n            1 => 'color: #1C00CF;',\n            2 => 'color: #1C00CF;',\n            3 => 'color: #1C00CF;',\n        ),\n        'METHODS' => array(\n            1 => 'color: #508187;'\n        ),\n        'SYMBOLS' => array(\n            0 => 'color: black;'\n        ),\n        'REGEXPS' => array(),\n        'SCRIPT' => array()\n    ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => '',\n        9 => '',\n        10 => '',\n        11 => '',\n        12 => '',\n        13 => '',\n        14 => '',\n        15 => '',\n        16 => '',\n    ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n    ),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/systemverilog.php",
    "content": "<?php\n/************************************************************************************\n * systemverilog.php\n * -------\n * Author: Sean O'Boyle\n * Copyright: (C) 2008 IntelligentDV\n * Release Version: 1.0.9.1\n * Date Started: 2008/06/25\n *\n * SystemVerilog IEEE 1800-2009(draft8) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/06/25 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2008/06/25)\n * -------------------------\n *\n *************************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *  GeSHi is free software: you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation, either version 3 of the License, or\n *  (at your option) any later version.\n *\n *  This program is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with this program.  If not, see <http://www.gnu.org/licenses/>.\n *\n ************************************************************************\n * Title:        SystemVerilog Language Keywords File for GeSHi\n * Description:  This file contains the SV keywords defined in the\n *               IEEE1800-2009 Draft Standard in the format expected by\n *               GeSHi.\n *\n * Original Author: Sean O'Boyle\n * Contact:         seanoboyle@intelligentdv.com\n * Company:         Intelligent Design Verification\n * Company URL:     http://intelligentdv.com\n *\n * Download the most recent version here:\n *                  http://intelligentdv.com/downloads\n *\n * File Bugs Here:  http://bugs.intelligentdv.com\n *        Project:  SyntaxFiles\n *\n * File: systemverilog.php\n * $LastChangedBy$\n * $LastChangedDate$\n * $LastChangedRevision$\n *\n ************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'SystemVerilog',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(1 => '/\\/\\/(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        // system tasks\n        1 => array(\n            'acos','acosh','asin','asinh','assertfailoff','assertfailon',\n            'assertkill','assertnonvacuouson','assertoff','asserton',\n            'assertpassoff','assertpasson','assertvacuousoff','async$and$array',\n            'async$and$plane','async$nand$array','async$nand$plane',\n            'async$nor$array','async$nor$plane','async$or$array',\n            'async$or$plane','atan','atan2','atanh','bits','bitstoreal',\n            'bitstoshortreal','cast','ceil','changed','changed_gclk',\n            'changing_gclk','clog2','cos','cosh','countones','coverage_control',\n            'coverage_get','coverage_get_max','coverage_merge','coverage_save',\n            'dimensions','display','displayb','displayh','displayo',\n            'dist_chi_square','dist_erlang','dist_exponential','dist_normal',\n            'dist_poisson','dist_t','dist_uniform','dumpall','dumpfile',\n            'dumpflush','dumplimit','dumpoff','dumpon','dumpports',\n            'dumpportsall','dumpportsflush','dumpportslimit','dumpportsoff',\n            'dumpportson','dumpvars','error','exit','exp','falling_gclk',\n            'fclose','fdisplay','fdisplayb','fdisplayh','fdisplayo','fell',\n            'fell_gclk','feof','ferror','fflush','fgetc','fgets','finish',\n            'floor','fmonitor','fmonitorb','fmonitorh','fmonitoro','fopen',\n            'fread','fscanf','fseek','fstrobe','fstrobeb','fstrobeh','fstrobeo',\n            'ftell','future_gclk','fwrite','fwriteb','fwriteh','fwriteo',\n            'get_coverage','high','hypot','increment','info','isunbounded',\n            'isunknown','itor','left','ln','load_coverage_db','log10','low',\n            'monitor','monitorb','monitorh','monitoro','monitoroff','monitoron',\n            'onehot','onehot0','past','past_gclk','pow','printtimescale',\n            'q_add','q_exam','q_full','q_initialize','q_remove','random',\n            'readmemb','readmemh','realtime','realtobits','rewind','right',\n            'rising_gclk','rose','rose_gclk','rtoi','sampled',\n            'set_coverage_db_name','sformat','sformatf','shortrealtobits',\n            'signed','sin','sinh','size','sqrt','sscanf','stable','stable_gclk',\n            'steady_gclk','stime','stop','strobe','strobeb','strobeh','strobeo',\n            'swrite','swriteb','swriteh','swriteo','sync$and$array',\n            'sync$and$plane','sync$nand$array','sync$nand$plane',\n            'sync$nor$array','sync$nor$plane','sync$or$array','sync$or$plane',\n            'system','tan','tanh','test$plusargs','time','timeformat',\n            'typename','ungetc','unpacked_dimensions','unsigned',\n            'value$plusargs','warning','write','writeb','writeh','writememb',\n            'writememh','writeo',\n            ),\n        // compiler directives\n        2 => array(\n            '`__FILE__', '`__LINE__', '`begin_keywords', '`case', '`celldefine',\n            '`endcelldefine', '`default_nettype', '`define', '`default', '`else',\n            '`elsif', '`end_keywords', '`endfor', '`endif',\n            '`endprotect', '`endswitch', '`endwhile', '`for', '`format',\n            '`if', '`ifdef', '`ifndef', '`include', '`let',\n            '`line', '`nounconnected_drive', '`pragma', '`protect', '`resetall',\n            '`switch', '`timescale', '`unconnected_drive', '`undef', '`undefineall',\n            '`while'\n            ),\n        // keywords\n        3 => array(\n            'assert', 'assume', 'cover', 'expect', 'disable',\n            'iff', 'binsof', 'intersect', 'first_match', 'throughout',\n            'within', 'coverpoint', 'cross', 'wildcard', 'bins',\n            'ignore_bins', 'illegal_bins', 'genvar', 'if', 'else',\n            'unique', 'priority', 'matches', 'default', 'forever',\n            'repeat', 'while', 'for', 'do', 'foreach',\n            'break', 'continue', 'return', 'pulsestyle_onevent', 'pulsestyle_ondetect',\n            'noshowcancelled', 'showcancelled', 'ifnone', 'posedge', 'negedge',\n            'edge', 'wait', 'wait_order', 'timeunit', 'timeprecision',\n            's', 'ms', 'us', 'ns',\n            'ps', 'fs', 'step', 'new', 'extends',\n            'this', 'super', 'protected', 'local', 'rand',\n            'randc', 'bind', 'constraint', 'solve', 'before',\n            'dist', 'inside', 'with', 'virtual', 'extern',\n            'pure', 'forkjoin', 'design', 'instance', 'cell',\n            'liblist', 'use', 'library', 'incdir', 'include',\n            'modport', 'sync_accept_on', 'reject_on', 'accept_on',\n            'sync_reject_on', 'restrict', 'let', 'until', 'until_with',\n            'unique0', 'eventually', 's_until', 's_always', 's_eventually',\n            's_nexttime', 's_until_with', 'global', 'untyped', 'implies',\n            'weak', 'strong', 'nexttime'\n            ),\n        // block keywords\n        4 => array(\n            'begin', 'end', 'package', 'endpackage', 'macromodule',\n            'module', 'endmodule', 'generate', 'endgenerate', 'program',\n            'endprogram', 'class', 'endclass', 'function', 'endfunction',\n            'case', 'casex', 'casez', 'randcase', 'endcase',\n            'interface', 'endinterface', 'clocking', 'endclocking', 'task',\n            'endtask', 'primitive', 'endprimitive', 'fork', 'join',\n            'join_any', 'join_none', 'covergroup', 'endgroup', 'checker',\n            'endchecker', 'property', 'endproperty', 'randsequence', 'sequence',\n            'endsequence', 'specify', 'endspecify', 'config', 'endconfig',\n            'table', 'endtable', 'initial', 'final', 'always',\n            'always_comb', 'always_ff', 'always_latch', 'alias', 'assign',\n            'force', 'release'\n            ),\n\n        // types\n        5 => array(\n            'parameter', 'localparam', 'specparam', 'input', 'output',\n            'inout', 'ref', 'byte', 'shortint', 'int',\n            'integer', 'longint', 'time', 'bit', 'logic',\n            'reg', 'supply0', 'supply1', 'tri', 'triand',\n            'trior', 'trireg', 'tri0', 'tri1', 'wire',\n            'uwire', 'wand', 'wor', 'signed', 'unsigned',\n            'shortreal', 'real', 'realtime', 'type', 'void',\n            'struct', 'union', 'tagged', 'const', 'var',\n            'automatic', 'static', 'packed', 'vectored', 'scalared',\n            'typedef', 'enum', 'string', 'chandle', 'event',\n            'null', 'pullup', 'pulldown', 'cmos', 'rcmos',\n            'nmos', 'pmos', 'rnmos', 'rpmos', 'and',\n            'nand', 'or', 'nor', 'xor', 'xnor',\n            'not', 'buf', 'tran', 'rtran', 'tranif0',\n            'tranif1', 'rtranif0', 'rtranif1', 'bufif0', 'bufif1',\n            'notif0', 'notif1', 'strong0', 'strong1', 'pull0',\n            'pull1', 'weak0', 'weak1', 'highz0', 'highz1',\n            'small', 'medium', 'large'\n            ),\n\n        // DPI\n        6 => array(\n            'DPI', 'DPI-C', 'import', 'export', 'context'\n            ),\n\n        // stdlib\n        7 => array(\n            'randomize', 'mailbox', 'semaphore', 'put', 'get',\n            'try_put', 'try_get', 'peek', 'try_peek', 'process',\n            'state', 'self', 'status', 'kill', 'await',\n            'suspend', 'resume', 'size', 'delete', 'insert',\n            'num', 'first', 'last', 'next', 'prev',\n            'pop_front', 'pop_back', 'push_front', 'push_back', 'find',\n            'find_index', 'find_first', 'find_last', 'find_last_index', 'min',\n            'max', 'unique_index', 'reverse', 'sort', 'rsort',\n            'shuffle', 'sum', 'product', 'List', 'List_Iterator',\n            'neq', 'eq', 'data', 'empty', 'front',\n            'back', 'start', 'finish', 'insert_range', 'erase',\n            'erase_range', 'set', 'swap', 'clear', 'purge'\n            ),\n\n        // key_deprecated\n        8 => array(\n            'defparam', 'deassign', 'TODO'\n        ),\n\n        ),\n    'SYMBOLS' => array(\n            '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%',\n            '^', '&', '|', '~',\n            '?', ':',\n            '#', '<<', '<<<',\n            '>', '<', '>=', '<=',\n            '@', ';', ','\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #996666; font-weight: bold;',\n            2 => 'color: #336600; font-weight: bold;',\n            3 => 'color: #996600; font-weight: bold;',\n            4 => 'color: #000033; font-weight: bold;',\n            5 => 'color: #330033; font-weight: bold;',\n            6 => 'color: #996600; font-weight: bold;',\n            7 => 'color: #CC9900; font-weight: bold;',\n            8 => 'color: #990000; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #00008B; font-style: italic;',\n            'MULTI' => 'color: #00008B; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #9F79EE'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #9F79EE;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #FF00FF;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff0055;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;',\n            2 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #5D478B;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #ff0055;',\n            1 => 'color: #ff0055;',\n            2 => 'color: #ff0055;',\n            3 => 'color: #ff0055;'\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            3 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        1 => ''\n        ),\n    'REGEXPS' => array(\n        // integer\n        0 => \"\\d'[bdh][0-9_a-fA-FxXzZ]+\",\n        // realtime\n        1 => \"\\d*\\.\\d+[munpf]?s\",\n        // time s, ms, us, ns, ps, of fs\n        2 => \"\\d+[munpf]?s\",\n        // real\n        3 => \"\\d*\\.\\d+\"\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        0 => ''\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true\n        ),\n    'TAB_WIDTH' => 3,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            1 => array(\n                'DISALLOWED_BEFORE' => '(?<=$)'\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/tcl.php",
    "content": "<?php\n/*************************************************************************************\n * tcl.php\n * ---------------------------------\n * Author: Reid van Melle (rvanmelle@gmail.com)\n * Copyright: (c) 2004 Reid van Melle (sorry@nowhere)\n * Release Version: 1.0.9.1\n * Date Started: 2006/05/05\n *\n * TCL/iTCL language file for GeSHi.\n *\n * This was thrown together in about an hour so I don't expect\n * really great things.  However, it is a good start.  I never\n * got a change to try out the iTCL or object-based support but\n * this is not widely used anyway.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *  -  Added description of extra language features (SF#1970248)\n * 2006/05/05 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2006/05/05)\n * -------------------------\n * - Get TCL built-in special variables highlighted with a new color..\n *   currently, these are listed in //special variables in the keywords\n *   section, but they get covered by the general REGEXP for symbols\n * - General cleanup, testing, and verification\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'TCL',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        1 => '/(?:^|(?<=\\{|;))\\s*#(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //2 => '/{[^}\\n]+}/'\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        /*\n         * Set 1: reserved words\n         * http://python.org/doc/current/ref/keywords.html\n         */\n        1 => array(\n            'proc', 'global', 'upvar', 'if', 'then', 'else', 'elseif', 'for', 'foreach',\n            'break', 'continue', 'while', 'set', 'eval', 'case', 'in', 'switch',\n            'default', 'exit', 'error', 'return', 'uplevel', 'loop',\n            'for_array_keys', 'for_recursive_glob', 'for_file', 'unwind_protect',\n            'expr', 'catch', 'namespace', 'rename', 'variable',\n            // itcl\n            'method', 'itcl_class', 'public', 'protected'),\n\n        /*\n         * Set 2: builtins\n         * http://asps.activatestate.com/ASPN/docs/ActiveTcl/8.4/tcl/tcl_2_contents.htm\n         */\n        2 => array(\n            // string handling\n            'append', 'binary', 'format', 're_syntax', 'regexp', 'regsub',\n            'scan', 'string', 'subst',\n            // list handling\n            'concat', 'join', 'lappend', 'lindex', 'list', 'llength', 'lrange',\n            'lreplace', 'lsearch', 'lset', 'lsort', 'split',\n            // procedures and output\n            'incr', 'close', 'eof', 'fblocked', 'fconfigure', 'fcopy', 'file',\n            'fileevent', 'flush', 'gets', 'open', 'puts', 'read', 'seek',\n            'socket', 'tell',\n            // packages and source files\n            'load', 'loadTk', 'package', 'pgk::create', 'pgk_mkIndex', 'source',\n            // interpreter routines\n            'bgerror', 'history', 'info', 'interp', 'memory', 'unknown',\n            // library routines\n            'enconding', 'http', 'msgcat',\n            // system related\n            'cd', 'clock', 'exec', 'glob', 'pid', 'pwd', 'time',\n            // platform specified\n            'dde', 'registry', 'resource',\n            // special variables\n            '$argc', '$argv', '$errorCode', '$errorInfo', '$argv0',\n            '$auto_index', '$auto_oldpath', '$auto_path', '$env',\n            '$tcl_interactive', '$tcl_libpath', '$tcl_library',\n            '$tcl_pkgPath', '$tcl_platform', '$tcl_precision', '$tcl_traceExec',\n            ),\n\n        /*\n         * Set 3: standard library\n         */\n        3 => array(\n            'comment', 'filename', 'library', 'packagens', 'tcltest', 'tclvars',\n            ),\n\n        /*\n         * Set 4: special methods\n         */\n//        4 => array(\n//            )\n\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '$', '*', '&', '%', '!', ';', '<', '>', '?'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n//        4 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #ff7700;font-weight:bold;',    // Reserved\n            2 => 'color: #008000;',                        // Built-ins + self\n            3 => 'color: #dc143c;',                        // Standard lib\n//            4 => 'color: #0000cd;'                        // Special methods\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n//            2 => 'color: #483d8b;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: black;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #483d8b;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff4500;'\n            ),\n        'METHODS' => array(\n            1 => 'color: black;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #ff3333;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n//        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '::'\n        ),\n    'REGEXPS' => array(\n        //Special variables\n        0 => '[\\\\$]+[a-zA-Z_][a-zA-Z0-9_]*',\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'COMMENTS' => array(\n            'DISALLOWED_BEFORE' => '\\\\'\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/tclegg.php",
    "content": "<?php\n/*************************************************************************************\n * tclegg.php\n * ---------------------------------\n * Author: Reid van Melle (rvanmelle@gmail.com)\n * Copyright: (c) 2004 Reid van Melle (sorry@nowhere)\n * Release Version: 1.0.9.1\n * Date Started: 2006/05/05\n *\n * TCL/iTCL language file for GeSHi.\n *\n * This was thrown together in about an hour so I don't expect\n * really great things.  However, it is a good start.  I never\n * got a change to try out the iTCL or object-based support but\n * this is not widely used anyway.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *  -  Added description of extra language features (SF#1970248)\n * 2006/05/05 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2006/05/05)\n * -------------------------\n * - Get TCL built-in special variables highlighted with a new color..\n *   currently, these are listed in //special variables in the keywords\n *   section, but they get covered by the general REGEXP for symbols\n * - General cleanup, testing, and verification\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'TCLEGG',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        1 => '/(?<!\\\\\\\\)#(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //2 => '/{[^}\\n]+}/'\n    ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', \"'\"),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        /*\n         * Set 1: reserved words\n         * http://python.org/doc/current/ref/keywords.html\n         */\n        1 => array(\n            'break',\n            'case',\n            'catch',\n            'continue',\n            'default',\n            'else',\n            'elseif',\n            'error',\n            'eval',\n            'exit',\n            'expr',\n            'for',\n            'for_array_keys',\n            'for_file',\n            'for_recursive_glob',\n            'foreach',\n            'global',\n            'if',\n            'in',\n            'itcl_class',\n            'loop',\n            'method',\n            'namespace',\n            'proc',\n            'protected',\n            'public',\n            'rename',\n            'return',\n            'set',\n            'switch',\n            'then',\n            'unwind_protect',\n            'uplevel',\n            'upvar',\n            'variable',\n            'while',\n        ),\n\n        /*\n         * Set 2: builtins\n         * http://asps.activatestate.com/ASPN/docs/ActiveTcl/8.4/tcl/tcl_2_contents.htm\n         */\n        2 => array(\n            // string handling\n            'append', 'binary', 'format', 're_syntax', 'regexp', 'regsub',\n            'scan', 'string', 'subst',\n            // list handling\n            'concat', 'join', 'lappend', 'lindex', 'list', 'llength', 'lrange',\n            'lreplace', 'lsearch', 'lset', 'lsort', 'split',\n            // procedures and output\n            'incr', 'close', 'eof', 'fblocked', 'fconfigure', 'fcopy', 'file',\n            'fileevent', 'flush', 'gets', 'open', 'puts', 'read', 'seek',\n            'socket', 'tell',\n            // packages and source files\n            'load', 'loadTk', 'package', 'pgk::create', 'pgk_mkIndex', 'source',\n            // interpreter routines\n            'bgerror', 'history', 'info', 'interp', 'memory', 'unknown',\n            // library routines\n            'enconding', 'http', 'msgcat',\n            // system related\n            'cd', 'clock', 'exec', 'glob', 'pid', 'pwd', 'time',\n            // platform specified\n            'dde', 'registry', 'resource',\n            // special variables\n            '$argc', '$argv', '$errorCode', '$errorInfo', '$argv0',\n            '$auto_index', '$auto_oldpath', '$auto_path', '$env',\n            '$tcl_interactive', '$tcl_libpath', '$tcl_library',\n            '$tcl_pkgPath', '$tcl_platform', '$tcl_precision', '$tcl_traceExec',\n        ),\n\n        /*\n         * Set 3: standard library\n         * Replaced by binds\n         */\n        3 => array(\n            //'comment', 'filename', 'library', 'packagens', 'tcltest', 'tclvars',\n            'act',\n            'away',\n            'bcst',\n            'bot',\n            'chat',\n            'chjn',\n            'chof',\n            'chon',\n            'chpt',\n            'cron',\n            'ctcp',\n            'ctcr',\n            'dcc',\n            'disc',\n            'evnt',\n            'fil',\n            'filt',\n            'flud',\n            'kick',\n            'link',\n            'log',\n            'lost',\n            'mode',\n            'msg',\n            'msgm',\n            'need',\n            'nick',\n            'nkch',\n            'notc',\n            'note',\n            'out',\n            'part',\n            'pub',\n            'pubm',\n            'raw',\n            'rcvd',\n            'rejn',\n            'sent',\n            'sign',\n            'splt',\n            'topc',\n            'tout',\n            'unld',\n            'wall',\n        ),\n\n        /*\n         * Set 4: tcl-commands (eggdrop dedicated)\n         */\n        4 => array(\n            'addbot',\n            'addchanrec',\n            'adduser',\n            'assoc',\n\n            'backup',\n            'banlist',\n            'bind',\n            'binds',\n            'boot',\n            'botattr',\n            'botishalfop',\n            'botisop',\n            'botisvoice',\n            'botlist',\n            'botonchan',\n            'bots',\n\n            'callevent',\n            'chanbans',\n            'chanexempts',\n            'chaninvites',\n            'chanlist',\n            'channel',\n            'channels',\n            'chansettype',\n            'chattr',\n            'chhandle',\n            'clearqueue',\n            'compressfile',\n            'connect',\n            'console',\n            'control',\n            'countusers',\n            'cp',\n            'ctime',\n\n            'dccbroadcast',\n            'dccdumpfile',\n            'dcclist',\n            'dccputchan',\n            'dccsend',\n            'dccsimul',\n            'dccused',\n            'decrypt',\n            'delchanrec',\n            'delhost',\n            'deludef',\n            'deluser',\n            'die',\n            'dnslookup',\n            'dumpfile',\n            'duration',\n\n            'echo',\n            'encpass',\n            'encrypt',\n            'erasenotes',\n            'exemptlist',\n\n            'filesend',\n            'finduser',\n            'flushmode',\n\n            'getchan',\n            'getchanhost',\n            'getchanidle',\n            'getchaninfo',\n            'getchanjoin',\n            'getchanmode',\n            'getdccaway',\n            'getdccidle',\n            'getdesc',\n            'getdirs',\n            'getfileq',\n            'getfiles',\n            'getfilesendtime',\n            'getflags',\n            'getlink',\n            'getowner',\n            'getpwd',\n            'getting',\n            'getudefs',\n            'getuser',\n\n            'hand',\n            'handonchan',\n\n            'idx',\n            'ignorelist',\n            'invitelist',\n            'isban',\n            'isbansticky',\n            'isbotnick',\n            'ischanban',\n            'ischanexempt',\n            'ischaninvite',\n            'ischanjuped',\n            'iscompressed',\n            'isdynamic',\n            'isexempt',\n            'isexemptsticky',\n            'ishalfop',\n            'isignore',\n            'isinvite',\n            'isinvitesticky',\n            'islinked',\n            'isop',\n            'ispermban',\n            'ispermexempt',\n            'isperminvite',\n            'isvoice',\n\n            'jump',\n\n            'killassoc',\n            'killban',\n            'killchanban',\n            'killchanexempt',\n            'killchaninvite',\n            'killdcc',\n            'killexempt',\n            'killignore',\n            'killinvite',\n            'killtimer',\n            'killutimer',\n\n            'listen',\n            'listnotes',\n            'loadchannels',\n            'loadhelp',\n            'loadmodule',\n            'logfile',\n\n            'maskhost',\n            'matchaddr',\n            'matchattr',\n            'matchban',\n            'matchcidr',\n            'matchexempt',\n            'matchinvite',\n            'matchstr',\n            'md',\n            'mkdir',\n            'modules',\n            'mv',\n            'myip',\n\n            'newban',\n            'newchanban',\n            'newchanexempt',\n            'newchaninvite',\n            'newexempt',\n            'newignore',\n            'newinvite',\n            'notes',\n\n            'onchan',\n            'onchansplit',\n\n            'passwdok',\n            'pushmode',\n            'putallbots',\n            'putbot',\n            'putcmdlog',\n            'putdcc',\n            'puthelp',\n            'putkick',\n            'putlog',\n            'putloglev',\n            'putnow',\n            'putquick',\n            'putserv',\n            'putxferlog',\n\n            'queuesize',\n\n            'rand',\n            'rehash',\n            'reload',\n            'reloadhelp',\n            'renudef',\n            'resetbans',\n            'resetchan',\n            'resetchanidle',\n            'resetchanjoin',\n            'resetexempts',\n            'resetinvites',\n            'restart',\n            'rmdir',\n\n            'save',\n            'savechannels',\n            'sendnote',\n            'setchan',\n            'setchaninfo',\n            'setdccaway',\n            'setdesc',\n            'setflags',\n            'setlink',\n            'setowner',\n            'setpwd',\n            'setudef',\n            'setuser',\n            'stickban',\n            'stickexempt',\n            'stickinvite',\n            'storenote',\n            'strftime',\n            'strip',\n            'stripcodes',\n\n            'timer',\n            'timers',\n            'topic',\n            'traffic',\n\n            'unames',\n            'unbind',\n            'uncompressfile',\n            'unixtime',\n            'unlink',\n            'unloadhelp',\n            'unloadmodule',\n            'unstickban',\n            'unstickexempt',\n            'unstickinvite',\n            'userlist',\n            'utimer',\n            'utimers',\n\n            'validchan',\n            'valididx',\n            'validuser',\n\n            'washalfop',\n            'wasop',\n            'whom',\n        )\n    ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '$', '*', '&', '%', '!', ';', '<', '>', '?'\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #ff7700;font-weight:bold;',    // Reserved\n            2 => 'color: #008000;',                        // Built-ins + self\n            3 => 'color: #dc143c;',                        // Standard lib\n            4 => 'color: #0000cd;'                        // Special methods\n        ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n//            2 => 'color: #483d8b;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n        ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n        ),\n        'BRACKETS' => array(\n            0 => 'color: black;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #483d8b;'\n        ),\n        'NUMBERS' => array(\n            0 => 'color: #ff4500;'\n        ),\n        'METHODS' => array(\n            1 => 'color: black;'\n        ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n        ),\n        'REGEXPS' => array(\n            0 => 'color: #ff3333;'\n        ),\n        'SCRIPT' => array()\n    ),\n    'URLS' => array(\n        1 => 'http://wiki.tcl.tk/{FNAMEL}',\n        2 => 'http://wiki.tcl.tk/{FNAMEUF}',\n        3 => 'http://wiki.eggdrop.fr/Binds#{FNAMEU}',\n        4 => 'http://wiki.eggdrop.fr/{FNAMEUF}'\n    ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '::'\n    ),\n    'REGEXPS' => array(\n        //Special variables\n        0 => '[\\\\$]+[a-zA-Z_][a-zA-Z0-9_]*',\n    ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'PARSER_CONTROL' => array(\n        'COMMENTS' => array(\n            'DISALLOWED_BEFORE' => '\\\\'\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/teraterm.php",
    "content": "<?php\n/*************************************************************************************\n * teraterm.php\n * --------\n * Author: Boris Maisuradze (boris at logmett.com)\n * Copyright: (c) 2008 Boris Maisuradze (http://logmett.com)\n * Release Version: 1.0.9.1\n * Date Started: 2008/09/26\n *\n * Tera Term Macro language file for GeSHi.\n *\n *\n * This version of teraterm.php was created for Tera Term 4.62 and LogMeTT 2.9.4.\n * Newer versions of these application can contain additional Macro commands\n * and/or keywords that are not listed here. The latest release of teraterm.php\n * can be downloaded from Download section of LogMeTT.com\n *\n * CHANGES\n * -------\n * 2008/09/26 (1.0.0)\n *   -  First Release for Tera Term 4.60 and below.\n * 2009/03/22 (1.1.0)\n *   -  First Release for Tera Term 4.62 and below.\n * 2009/04/25 (1.1.1)\n *   -  Second Release for Tera Term 4.62 and below.\n * 2010/09/12 (1.1.2)\n *   -  Second Release for Tera Term 4.67, LogMeTT 2.97, TTLEditor 1.2.1 and below.\n *\n * TODO (updated 2010/09/12)\n * -------------------------\n * *\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Tera Term Macro',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        /* Commands */\n        1 => array(\n            'Beep',\n            'BplusRecv',\n            'BplusSend',\n            'Break',\n            'Call',\n            'CallMenu',\n            'ChangeDir',\n            'ClearScreen',\n            'Clipb2Var',\n            'ClosesBox',\n            'CloseTT',\n            'Code2Str',\n            'Connect',\n            'CRC32',\n            'CRC32File',\n            'CygConnect',\n            'DelPassword',\n            'Disconnect',\n            'DispStr',\n            'Do',\n            'Else',\n            'ElseIf',\n            'EnableKeyb',\n            'End',\n            'EndIf',\n            'EndUntil',\n            'EndWhile',\n            'Exec',\n            'ExecCmnd',\n            'Exit',\n            'FileClose',\n            'FileConcat',\n            'FileCopy',\n            'FileCreate',\n            'FileDelete',\n            'FileMarkPtr',\n            'FileNameBox',\n            'FileOpen',\n            'FileRead',\n            'FileReadln',\n            'FileRename',\n            'FileSearch',\n            'FileSeek',\n            'FileSeekBack',\n            'FileStat',\n            'FileStrSeek',\n            'FileStrSeek2',\n            'FileTruncate',\n            'FileWrite',\n            'FileWriteLn',\n            'FindClose',\n            'FindFirst',\n            'FindNext',\n            'FlushRecv',\n            'For',\n            'GetDate',\n            'GetDir',\n            'GetEnv',\n            'GetHostname',\n            'GetPassword',\n            'GetTime',\n            'GetTitle',\n            'GetTTDir',\n            'Getver',\n            'GoTo',\n            'If',\n            'IfDefined',\n            'Include',\n            'InputBox',\n            'Int2Str',\n            'KmtFinish',\n            'KmtGet',\n            'KmtRecv',\n            'KmtSend',\n            'LoadKeymap',\n            'LogClose',\n            'LogOpen',\n            'LogPause',\n            'LogStart',\n            'LogWrite',\n            'Loop',\n            'MakePath',\n            'MessageBox',\n            'MPause',\n            'Next',\n            'PasswordBox',\n            'Pause',\n            'QuickVANRecv',\n            'QuickVANSend',\n            'Random',\n            'RecvLn',\n            'RestoreSetup',\n            'Return',\n            'RotateLeft',\n            'RotateRight',\n            'ScpRecv',\n            'ScpSend',\n            'Send',\n            'SendBreak',\n            'SendBroadcast',\n            'SendFile',\n            'SendKCode',\n            'SendLn',\n            'SendLnBroadcast',\n            'SendMulticast',\n            'SetBaud',\n            'SetDate',\n            'SetDebug',\n            'SetDir',\n            'SetDlgPos',\n            'SetDTR',\n            'SetEcho',\n            'SetEnv',\n            'SetExitCode',\n            'SetMulticastName',\n            'SetRTS',\n            'SetSync',\n            'SetTime',\n            'SetTitle',\n            'Show',\n            'ShowTT',\n            'SPrintF',\n            'SPrintF2',\n            'StatusBox',\n            'Str2Code',\n            'Str2Int',\n            'StrCompare',\n            'StrConcat',\n            'StrCopy',\n            'StrInsert',\n            'StrJoin',\n            'StrLen',\n            'StrMatch',\n            'StrRemove',\n            'StrReplace',\n            'StrScan',\n            'StrSpecial',\n            'StrSplit',\n            'StrTrim',\n            'TestLink',\n            'Then',\n            'ToLower',\n            'ToUpper',\n            'UnLink',\n            'Until',\n            'Var2Clipb',\n            'Wait',\n            'Wait4All',\n            'WaitEvent',\n            'WaitLn',\n            'WaitN',\n            'WaitRecv',\n            'WaitRegEx',\n            'While',\n            'XmodemRecv',\n            'XmodemSend',\n            'YesNoBox',\n            'YmodemRecv',\n            'YmodemSend',\n            'ZmodemRecv',\n            'ZmodemSend'\n            ),\n        /* System Variables */\n        2 => array(\n            'groupmatchstr1',\n            'groupmatchstr2',\n            'groupmatchstr3',\n            'groupmatchstr4',\n            'groupmatchstr5',\n            'groupmatchstr6',\n            'groupmatchstr7',\n            'groupmatchstr8',\n            'groupmatchstr9',\n            'inputstr',\n            'matchstr',\n            'mtimeout',\n            'param2',\n            'param3',\n            'param4',\n            'param5',\n            'param6',\n            'param7',\n            'param8',\n            'param9',\n            'result',\n            'timeout'\n            ),\n        /* LogMeTT Key Words */\n        3 => array(\n            '$[1]',\n            '$[2]',\n            '$[3]',\n            '$[4]',\n            '$[5]',\n            '$[6]',\n            '$[7]',\n            '$[8]',\n            '$[9]',\n            '$branch$',\n            '$computername$',\n            '$connection$',\n            '$email$',\n            '$logdir$',\n            '$logfilename$',\n            '$lttfilename$',\n            '$mobile$',\n            '$name$',\n            '$pager$',\n            '$parent$',\n            '$phone$',\n            '$snippet$',\n            '$ttdir$',\n            '$user$',\n            '$windir$',\n        ),\n        /* Keyword Symbols */\n        4 => array(\n            'and',\n            'not',\n            'or',\n            'xor'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}',\n        '+', '-', '*', '/', '%',\n        '!', '&', '|', '^',\n        '<', '>', '=',\n        '?', ':', ';',\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000080; font-weight: bold!important;',\n            2 => 'color: #808000; font-weight: bold;',  // System Variables\n            3 => 'color: #ff0000; font-weight: bold;',  // LogMeTT Key Words\n            4 => 'color: #ff00ff; font-weight: bold;'   // Keyword Symbols\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(),\n        'BRACKETS' => array(\n            0 => 'color: #ff00ff; font-weight: bold;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #800080;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #008080;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #ff00ff; font-weight: bold;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #0000ff; font-weight: bold;'\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        0 => array (\n            GESHI_SEARCH => '(\\:[_a-zA-Z][_a-zA-Z0-9]+)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/texgraph.php",
    "content": "<?php\n/*************************************************************************************\n * texgraph.php\n * -----------\n * Author: Patrick Fradin (patrick.fradin@gmail.com)\n * Copyright: (c) 2011 Patrick Fradin\n * Release Version: 1.0.9.1\n * Date Started: 2011-09-18\n *\n * TeXgraph language file for GeSHi.\n *\n * http://texgraph.tuxfamily.org/\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'TeXgraph',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array(\n        '{'=>'}'\n    ),\n    'COMMENT_REGEXP' => array(\n    ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array( //file construction\n            'TeXgraph', 'Cmd', 'Var', 'Mac', 'Graph', 'Include'\n        ),\n        2 => array( //programmation structure\n            'if', 'else', 'elif',  'fi',\n            'for', 'do', 'od', 'by', 'By',\n            'step', 'until', 'in', 'to', 'repeat', 'from', 'odfi', 'andif',\n            'And', 'Or', 'CutA', 'CutB', 'Inside', 'Inter', 'InterL'\n        ),\n        3 => array( // commandes prédéfinies\n            'Aretes',\n            'Arg',\n            'Args',\n            'Assign',\n            'Axes',\n            'Bezier',\n            'Bord',\n            'Border',\n            'Build3D',\n            'Cartesienne',\n            'ChangeAttr',\n            'Clip2D',\n            'Clip3DLine',\n            'ClipFacet',\n            'Close',\n            'CloseFile',\n            'ComposeMatrix',\n            'ComposeMatrix3D',\n            'Concat',\n            'ConvertToObj',\n            'ConvertToObjN',\n            'Copy',\n            'Courbe',\n            'Creer',\n            'DefMac',\n            'DefVar',\n            'DefaultAttr',\n            'Del',\n            'DelGraph',\n            'DelMac',\n            'DelVar',\n            'Der',\n            'Diff',\n            'Display3D',\n            'DistCam',\n            'Droite',\n            'Dup',\n            'Echange',\n            'Ellipse',\n            'EllipticArc',\n            'Ent',\n            'EpsCoord',\n            'EquaDif',\n            'Eval',\n            'Exec',\n            'Export',\n            'ExportObject',\n            'ExportPathData',\n            'Fenetre',\n            'FileExists',\n            'For',\n            'Free',\n            'Fvisible',\n            'Get',\n            'Get3D',\n            'GetAttr',\n            'GetMatrix',\n            'GetMatrix3D',\n            'GetSpline',\n            'GetStr',\n            'GetSurface',\n            'GrayScale',\n            'Grille',\n            'HexaColor',\n            'IdMatrix',\n            'IdMatrix3D',\n            'Im',\n            'Implicit',\n            'Inc',\n            'Input',\n            'InputMac',\n            'Inserer3D',\n            'Insert',\n            'Int',\n            'IsMac',\n            'IsString',\n            'IsVar',\n            'Label',\n            'Ligne',\n            'Liste',\n            'Load',\n            'LoadImage',\n            'Loop',\n            'LowerCase',\n            'M',\n            'MakePoly',\n            'Map',\n            'Marges',\n            'Merge',\n            'Message',\n            'Mix',\n            'ModelView',\n            'Mtransform',\n            'Mtransform3D',\n            'MyExport',\n            'Nargs',\n            'NewGraph',\n            'NewMac',\n            'NewVar',\n            'Nops',\n            'Norm',\n            'Normal',\n            'OpenFile',\n            'OriginalCoord',\n            'PaintFacet',\n            'PaintVertex',\n            'Path',\n            'PermuteWith',\n            'Point',\n            'Polaire',\n            'PosCam',\n            'Prodscal',\n            'Prodvec',\n            'Proj3D',\n            'Rand',\n            'Re',\n            'ReCalc',\n            'ReadData',\n            'ReadFlatPs',\n            'ReadObj',\n            'RenCommand',\n            'RenMac',\n            'RestoreAttr',\n            'Reverse',\n            'Rgb',\n            'Round',\n            'Saut',\n            'SaveAttr',\n            'ScientificF',\n            'Seq',\n            'Set',\n            'SetAttr',\n            'SetMatrix',\n            'SetMatrix3D',\n            'Si',\n            'Solve',\n            'Sommets',\n            'Sort',\n            'SortFacet',\n            'Special',\n            'Spline',\n            'Str',\n            'StrArgs',\n            'StrComp',\n            'StrCopy',\n            'StrDel',\n            'StrEval',\n            'StrLength',\n            'StrPos',\n            'StrReplace',\n            'String',\n            'TeX2FlatPs',\n            'UpperCase',\n            'While',\n            'WriteFile',\n            'abs',\n            'arccos',\n            'arccot',\n            'arcsin',\n            'arctan',\n            'argch',\n            'argcth',\n            'argsh',\n            'argth',\n            'bar',\n            'ch',\n            'cos',\n            'cot',\n            'cth',\n            'draw',\n            'opp',\n            'sh',\n            'sin',\n            'sqr',\n            'sqrt',\n            'tan',\n            'th',\n        ),\n        4 => array( //commandes relatives à l'interface graphique\n            'AddMenu2D',\n            'AddMenu3D',\n            'Attributs',\n            'DelBitmap',\n            'DelButton',\n            'DelItem',\n            'DelText',\n            'Delay',\n            'Hide',\n            'ListFiles',\n            'ListWords',\n            'MaxPixels',\n            'Move',\n            'NewBitmap',\n            'NewButton',\n            'NewItem',\n            'NewText',\n            'NotXor',\n            'Pixel',\n            'Pixel2Scr',\n            'ReDraw',\n            'Scr2Pixel',\n            'Show',\n            'Stroke',\n            'Timer',\n            'TimerMac',\n            'UpdateLocalDatabase',\n            'VisibleGraph',\n        ),\n        5 => array( //constantes prédéfinies\n            'Data',\n            'Diese',\n            'DirSep',\n            'DocPath',\n            'ExportMode',\n            'GUI',\n            'Huge',\n            'ImageViewer',\n            'InitialPath',\n            'JavaviewPath',\n            'LARGE',\n            'LF',\n            'Large',\n            'Nil',\n            'PdfReader',\n            'Thicklines',\n            'TmpPath',\n            'UserMacPath',\n            'WebLoad',\n            'Windows',\n            'Xmax',\n            'Xmin',\n            'Xscale',\n            'Ymax',\n            'Ymin',\n            'Yscale',\n            'aliceblue',\n            'antiquewhite',\n            'aqua',\n            'aquamarine',\n            'asterisk',\n            'azure',\n            'baseline',\n            'bdiag',\n            'beige',\n            'bevel',\n            'bezier',\n            'bigdot',\n            'bisque',\n            'black',\n            'blanchedalmond',\n            'blue',\n            'blueviolet',\n            'bmp',\n            'bottom',\n            'brown',\n            'burlywood',\n            'butt',\n            'cadetblue',\n            'center',\n            'centered',\n            'central',\n            'chartreuse',\n            'chocolate',\n            'circle',\n            'closepath',\n            'comp',\n            'coral',\n            'cornflowerblue',\n            'cornsilk',\n            'crimson',\n            'cross',\n            'curve',\n            'cyan',\n            'darkblue',\n            'darkcyan',\n            'darkgoldenrod',\n            'darkgray',\n            'darkgreen',\n            'darkkhaki',\n            'darkmagenta',\n            'darkolivegreen',\n            'darkorange',\n            'darkorchid',\n            'darkred',\n            'darksalmon',\n            'darkseagreen',\n            'darkslateblue',\n            'darkslategray',\n            'darkturquoise',\n            'darkviolet',\n            'dashed',\n            'deeppink',\n            'deepskyblue',\n            'diagcross',\n            'diamond',\n            'dimgray',\n            'dodgerblue',\n            'dot',\n            'dotcircle',\n            'dotted',\n            'e',\n            'ellipse',\n            'ellipticArc',\n            'eps',\n            'epsc',\n            'fdiag',\n            'firebrick',\n            'floralwhite',\n            'footnotesize',\n            'forestgreen',\n            'framed',\n            'fuchsia',\n            'full',\n            'gainsboro',\n            'geom',\n            'ghostwhite',\n            'gold',\n            'goldenrod',\n            'gray',\n            'green',\n            'greenyellow',\n            'honeydew',\n            'horizontal',\n            'hotpink',\n            'huge',\n            'hvcross',\n            'i',\n            'indianred',\n            'indigo',\n            'ivory',\n            'jump',\n            'jvx',\n            'khaki',\n            'large',\n            'lavender',\n            'lavenderblush',\n            'lawngreen',\n            'left',\n            'lemonchiffon',\n            'lightblue',\n            'lightcoral',\n            'lightcyan',\n            'lightgoldenrodyellow',\n            'lightgray',\n            'lightgreen',\n            'lightpink',\n            'lightsalmon',\n            'lightseagreen',\n            'lightskyblue',\n            'lightslategray',\n            'lightsteelblue',\n            'lightyellow',\n            'lime',\n            'limegreen',\n            'line',\n            'linearc',\n            'linen',\n            'magenta',\n            'margeB',\n            'margeD',\n            'margeG',\n            'margeH',\n            'maroon',\n            'mediumaquamarine',\n            'mediumblue',\n            'mediumorchid',\n            'mediumpurple',\n            'mediumseagreen',\n            'mediumslateblue',\n            'mediumspringgreen',\n            'mediumturquoise',\n            'mediumvioletred',\n            'midnightblue',\n            'mintcream',\n            'mistyrose',\n            'miter',\n            'moccasin',\n            'move',\n            'navajowhite',\n            'navy',\n            'noline',\n            'none',\n            'normalsize',\n            'obj',\n            'oldlace',\n            'olive',\n            'olivedrab',\n            'oplus',\n            'orange',\n            'orangered',\n            'orchid',\n            'ortho',\n            'otimes',\n            'palegoldenrod',\n            'palegreen',\n            'paleturquoise',\n            'palevioletred',\n            'papayawhip',\n            'pdf',\n            'pdfc',\n            'peachpuff',\n            'pentagon',\n            'peru',\n            'pgf',\n            'pi',\n            'pink',\n            'plum',\n            'plus',\n            'powderblue',\n            'psf',\n            'pst',\n            'purple',\n            'red',\n            'right',\n            'rosybrown',\n            'round',\n            'royalblue',\n            'saddlebrown',\n            'salmon',\n            'sandybrown',\n            'scriptsize',\n            'seagreen',\n            'seashell',\n            'sep',\n            'sep3D',\n            'sienna',\n            'silver',\n            'skyblue',\n            'slateblue',\n            'slategray',\n            'small',\n            'snow',\n            'solid',\n            'special',\n            'springgreen',\n            'square',\n            'src4latex',\n            'stacked',\n            'steelblue',\n            'svg',\n            'teal',\n            'teg',\n            'tex',\n            'texsrc',\n            'thicklines',\n            'thinlines',\n            'thistle',\n            'times',\n            'tiny',\n            'tkz',\n            'tomato',\n            'top',\n            'triangle',\n            'turquoise',\n            'user',\n            'userdash',\n            'version',\n            'vertical',\n            'violet',\n            'wheat',\n            'white',\n            'whitesmoke',\n            'yellow',\n            'yellowgreen',\n        ),\n        6 => array( //macros prédéfinies\n            'Abs',\n            'Anp',\n            'Apercu',\n            'Arc',\n            'Arc3D',\n            'AretesNum',\n            'AxeX3D',\n            'AxeY3D',\n            'AxeZ3D',\n            'Axes3D',\n            'Bcolor',\n            'Bouton',\n            'BoxAxes3D',\n            'BrightColor',\n            'Bsave',\n            'Ceil',\n            'Cercle',\n            'Cercle3D',\n            'Chanfrein',\n            'ChangeWinTo',\n            'Clip',\n            'Clip3D',\n            'ColorJump',\n            'CompVer',\n            'CompileEps',\n            'CompilePdf',\n            'Cone',\n            'Courbe3D',\n            'CpCopy',\n            'CpDel',\n            'CpNops',\n            'CpReplace',\n            'CpReverse',\n            'CplColor',\n            'Cvx2d',\n            'Cvx3d',\n            'Cvx3dAux',\n            'Cylindre',\n            'Dark',\n            'Dbissec',\n            'Dcarre',\n            'Dcone',\n            'Dcylindre',\n            'Ddroite',\n            'Dmed',\n            'Dparallel',\n            'Dparallelep',\n            'Dparallelo',\n            'Dperp',\n            'Dpolyreg',\n            'DpqGoneReg',\n            'DpqGoneReg3D',\n            'Dprisme',\n            'Dpyramide',\n            'DrawAretes',\n            'DrawDdroite',\n            'DrawDot',\n            'DrawDroite',\n            'DrawFaces',\n            'DrawFacet',\n            'DrawFlatFacet',\n            'DrawGouraudTr',\n            'DrawPlan',\n            'DrawPoly',\n            'DrawPolyNC',\n            'DrawSmoothFacet',\n            'Drectangle',\n            'Dsphere',\n            'Dsurface',\n            'Dtetraedre',\n            'Esave',\n            'ExportGouraudTr',\n            'ExportSmoothFacet',\n            'FacesNum',\n            'Gcolor',\n            'GradDroite',\n            'HollowFacet',\n            'Hsb',\n            'HueColor',\n            'Incfrac',\n            'Intersec',\n            'Intersection',\n            'IsAlign',\n            'IsAlign3d',\n            'IsIn',\n            'IsPlan',\n            'KillDup',\n            'KillDup3D',\n            'LabelArc',\n            'LabelAxe',\n            'LabelDot',\n            'LabelDot3D',\n            'LabelSeg',\n            'Lcolor',\n            'Light',\n            'Ligne3D',\n            'MakeVer',\n            'Map3D',\n            'MapBy',\n            'Merge3d',\n            'MixColor',\n            'MouseZoom',\n            'NewLabel',\n            'NewLabelDot',\n            'NewLabelDot3D',\n            'NewTeXlabel',\n            'Nops3d',\n            'Ordonner',\n            'Palette',\n            'Parallelep',\n            'Point3D',\n            'Pos',\n            'Pos3d',\n            'Prisme',\n            'Pyramide',\n            'Rarc',\n            'Rcercle',\n            'Rcolor',\n            'RealArg',\n            'RealCoord',\n            'RealCoordV',\n            'Rellipse',\n            'RellipticArc',\n            'RestoreTphi',\n            'RestoreWin',\n            'RestoreWin3d',\n            'Rgb2Gray',\n            'Rgb2Hexa',\n            'Rgb2Hsb',\n            'RgbL',\n            'Ryb',\n            'SatColor',\n            'SaveTphi',\n            'SaveWin',\n            'SaveWin3d',\n            'SceneToGeom',\n            'SceneToJvx',\n            'SceneToObj',\n            'ScrCoord',\n            'ScrCoordV',\n            'ScreenCenter',\n            'ScreenPos',\n            'ScreenX',\n            'ScreenY',\n            'Section',\n            'Section2',\n            'Seg',\n            'SetStr',\n            'Snapshot',\n            'SortWith',\n            'Sphere',\n            'StrListAdd',\n            'StrListCopy',\n            'StrListDelKey',\n            'StrListDelVal',\n            'StrListGetKey',\n            'StrListInit',\n            'StrListInsert',\n            'StrListKill',\n            'StrListReplace',\n            'StrListReplaceKey',\n            'StrListShow',\n            'StrNum',\n            'SvgCoord',\n            'TeXCoord',\n            'Tetra',\n            'VarGlob',\n            'WriteObj',\n            'WriteOff',\n            'Xde',\n            'Yde',\n            'Zde',\n            'addfrac',\n            'affin',\n            'aire3d',\n            'angle',\n            'angle3d',\n            'angleD',\n            'antirot3d',\n            'arc',\n            'arcBezier',\n            'axeX',\n            'axeY',\n            'axes',\n            'background',\n            'bande',\n            'bary',\n            'bary3d',\n            'bbox',\n            'bdAngleD',\n            'bdArc',\n            'bdAxes',\n            'bdCercle',\n            'bdCone',\n            'bdCurve',\n            'bdCylinder',\n            'bdDot',\n            'bdDroite',\n            'bdFacet',\n            'bdLabel',\n            'bdLine',\n            'bdPlan',\n            'bdPlanEqn',\n            'bdPrism',\n            'bdPyramid',\n            'bdSphere',\n            'bdSurf',\n            'bdTorus',\n            'bdWall',\n            'binom',\n            'bissec',\n            'bordsAjour',\n            'cap',\n            'capB',\n            'carre',\n            'centerView',\n            'chaine',\n            'class_Path',\n            'clipCurve',\n            'clipPoly',\n            'compileFormule',\n            'conv2Facet',\n            'conv2FlatPs',\n            'coord',\n            'cup',\n            'cupB',\n            'curve2Cone',\n            'curve2Cylinder',\n            'curveTube',\n            'cutBezier',\n            'defAff',\n            'defAff3d',\n            'del',\n            'det',\n            'det3d',\n            'div',\n            'domaine1',\n            'domaine2',\n            'domaine3',\n            'dproj3d',\n            'dproj3dO',\n            'drawFlatPs',\n            'drawSet',\n            'drawTeXlabel',\n            'drawTeXlabel3d',\n            'drawWin3d',\n            'dsym3d',\n            'dsym3dO',\n            'ecart',\n            'ellipseArc',\n            'engineerF',\n            'epsCoord',\n            'extractFlatPs',\n            'fact',\n            'flecher',\n            'free',\n            'ftransform',\n            'ftransform3d',\n            'geomview',\n            'getdot',\n            'getdroite',\n            'getplan',\n            'getplanEqn',\n            'grille3d',\n            'help',\n            'hom',\n            'hom3d',\n            'interDD',\n            'interDP',\n            'interLP',\n            'interPP',\n            'inv',\n            'inv3d',\n            'invmatrix',\n            'invmatrix3d',\n            'isobar',\n            'isobar3d',\n            'javaview',\n            'label',\n            'labelarc',\n            'length',\n            'length3d',\n            'line2Cone',\n            'line2Cylinder',\n            'lineTube',\n            'loadFlatPs',\n            'makeLabel3d',\n            'markangle',\n            'markseg',\n            'markseg3d',\n            'matrix',\n            'matrix3d',\n            'max',\n            'med',\n            'median',\n            'min',\n            'mod',\n            'moy',\n            'mtransform',\n            'mtransform3d',\n            'mulmatrix',\n            'mulmatrix3d',\n            'n',\n            'newxlegend',\n            'newylegend',\n            'newzlegend',\n            'nil',\n            'normalize',\n            'not',\n            'parallel',\n            'parallelo',\n            'pdfprog',\n            'periodic',\n            'permute',\n            'permute3d',\n            'perp',\n            'pgcd',\n            'planEqn',\n            'polyreg',\n            'ppcm',\n            'pqGoneReg',\n            'pqGoneReg3D',\n            'prod',\n            'proj',\n            'proj3d',\n            'proj3dO',\n            'projO',\n            'purge3d',\n            'putAbove',\n            'px',\n            'pxy',\n            'pxz',\n            'py',\n            'pyz',\n            'pz',\n            'rect',\n            'rectangle',\n            'rectangle3d',\n            'replace',\n            'replace3d',\n            'reverse',\n            'reverse3d',\n            'rot',\n            'rot3d',\n            'rotCurve',\n            'rotLine',\n            'set',\n            'setB',\n            'setminus',\n            'setminusB',\n            'shift',\n            'shift3d',\n            'simil',\n            'size',\n            'split2facet1',\n            'split2facet2',\n            'suite',\n            'sum',\n            'svgCoord',\n            'sym',\n            'sym3d',\n            'sym3dO',\n            'symG',\n            'symO',\n            'tangente',\n            'tangenteP',\n            'texCoord',\n            'transformbox3d',\n            'trianguler',\n            'var',\n            'view',\n            'view3D',\n            'viewDir',\n            'visible',\n            'wedge',\n            'zoom',\n        ),\n        7 => array( //variables prédéfinies\n            'AngleStep',\n            'Arrows',\n            'AutoReCalc',\n            'Color',\n            'ComptGraph',\n            'ComptLabel3d',\n            'DashPattern',\n            'DeltaB',\n            'DotAngle',\n            'DotScale',\n            'DotSize',\n            'DotStyle',\n            'Eofill',\n            'FillColor',\n            'FillOpacity',\n            'FillStyle',\n            'ForMinToMax',\n            'HideColor',\n            'HideStyle',\n            'HideWidth',\n            'IsVisible',\n            'LabelAngle',\n            'LabelSize',\n            'LabelStyle',\n            'LineCap',\n            'LineJoin',\n            'LineStyle',\n            'MiterLimit',\n            'MouseCode',\n            'NbBoutons',\n            'NbPoints',\n            'Origin',\n            'PenMode',\n            'RefPoint',\n            'ScriptExt',\n            'StrokeOpacity',\n            'TeXLabel',\n            'TeXify',\n            'TeXifyLabels',\n            'TphiList',\n            'Width',\n            'Xfact',\n            'Xinf',\n            'Xsup',\n            'Yfact',\n            'Yinf',\n            'Ysup',\n            'Zinf',\n            'ZoomList',\n            'Zsup',\n            'above',\n            'arrows',\n            'arrowscale',\n            'axeOrigin',\n            'backcolor',\n            'backculling',\n            'border',\n            'bordercolor',\n            'cleanLabel',\n            'clip',\n            'clipwin',\n            'close',\n            'color',\n            'contrast',\n            'cube',\n            'defaultMatrix',\n            'deg',\n            'dir',\n            'disc',\n            'dollar',\n            'dotcolor',\n            'dotscale',\n            'dotstyle',\n            'drawbox',\n            'flip',\n            'grid',\n            'gridcolor',\n            'gridwidth',\n            'height',\n            'hidden',\n            'hiddenLines',\n            'hollow',\n            'inside',\n            'label3d',\n            'labeldir',\n            'labelpos',\n            'labels',\n            'labelsep',\n            'labelsize',\n            'labelstyle',\n            'legendpos',\n            'linestyle',\n            'maxGrad',\n            'mirror',\n            'mm',\n            'nbdeci',\n            'nbdot',\n            'nbfacet',\n            'normal',\n            'numericFormat',\n            'opacity',\n            'originlabel',\n            'outside',\n            'phi',\n            'position',\n            'rad',\n            'radius',\n            'radiusscale',\n            'radscale',\n            'rotation',\n            'scale',\n            'select',\n            'showdot',\n            'smooth',\n            'stock',\n            'stock1',\n            'stock2',\n            'stock3',\n            'stock4',\n            'stock5',\n            't',\n            'tMax',\n            'tMin',\n            'tailleB',\n            'theta',\n            'tickdir',\n            'tickpos',\n            'tube',\n            'twoside',\n            'u',\n            'usecomma',\n            'v',\n            'vecI',\n            'vecJ',\n            'vecK',\n            'width',\n            'win2dList',\n            'win3dList',\n            'xaxe',\n            'xgradlimits',\n            'xlabelsep',\n            'xlabelstyle',\n            'xlegendsep',\n            'xlimits',\n            'xstep',\n            'xylabelpos',\n            'xylabelsep',\n            'xyticks',\n            'yaxe',\n            'ygradlimits',\n            'ylabelsep',\n            'ylabelstyle',\n            'ylegendsep',\n            'ylimits',\n            'ystep',\n            'zaxe',\n            'zgradlimits',\n            'zlabelsep',\n            'zlabelstyle',\n            'zlegendsep',\n            'zlimits',\n            'zstep',\n        )\n    ),\n    'SYMBOLS' => array(\n        ':=', '=', '+', '-', '*', '/',\n        '<', '>', '>=', '<=', '<>',\n        '\\\\', '@', ', ', ';', '#'\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1  => 'color: #3ad900;font-weight: bold;',// file construction\n            2  => 'color: #A53;',// programmation structure\n            3  => 'color: #35A;font-weight: bold;',// commandes prédéfinies\n            4  => 'color: #472;',// commandes relatives à l'interface graphique\n            5  => 'color: #008080;',// constantes prédéfinies\n            6  => 'color: #808000;font-weight: bold;',// macros prédéfinies\n            7  => 'color: #000;font-weight: bold;',// variables prédéfinies\n        ),\n        'COMMENTS' => array(\n            1 => 'color: #777;',\n            'MULTI' => 'color: #880;'\n        ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n        ),\n        'BRACKETS' => array(\n            0 => 'color: #820;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #880;'\n        ),\n        'NUMBERS' => array(\n            0 => 'color: #000;'\n        ),\n        'METHODS' => array(\n            1 => '',\n            2 => ''\n        ),\n        'SYMBOLS' => array(\n            0 => 'color: #000;'\n        ),\n        'REGEXPS' => array(\n        ),\n        'SCRIPT' => array(\n            0 => ''\n        )\n    ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://melusine.eu.org/syracuse/G/geshi/docs/texgraph/#{FNAME}',\n        4 => '',\n        5 => '',\n        6 => 'http://melusine.eu.org/syracuse/G/geshi/docs/texgraph/#{FNAME}',\n        7 => ''\n    ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n    ),\n    'REGEXPS' => array(\n    ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n    ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n    )\n);\n"
  },
  {
    "path": "includes/geshi/text.php",
    "content": "<?php\n/*************************************************************************************\n * text.php\n * --------\n * Author: Sean Hanna (smokingrope@gmail.com)\n * Copyright: (c) 2006 Sean Hanna\n * Release Version: 1.0.9.1\n * Date Started: 04/23/2006\n *\n * Standard Text File (No Syntax Highlighting).\n * Plaintext language file for GeSHi.\n *\n * CHANGES\n * -------\n * 04/23/2006 (0.5.0)\n * - Syntax File Created\n *\n * 04/27/2006 (1.0.0)\n * - Documentation Cleaned Up\n * - First Release\n *\n * TODO (updated 04/27/2006)\n * -------------------------\n *\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Text',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(),\n    'SYMBOLS' => array(),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(),\n        'COMMENTS' => array(),\n        'ESCAPE_CHAR' => array(),\n        'BRACKETS' => array(),\n        'STRINGS' => array(),\n        'NUMBERS' => array(),\n        'METHODS' => array(),\n        'SYMBOLS' => array(),\n        'SCRIPT' => array(),\n        'REGEXPS' => array()\n        ),\n    'URLS' => array(),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'ALL' => GESHI_NEVER\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/thinbasic.php",
    "content": "<?php\n/*************************************************************************************\n * thinbasic.php\n * ------\n * Author: Eros Olmi (eros.olmi@thinbasic.com)\n * Copyright: (c) 2006 Eros Olmi (http://www.thinbasic.com), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2006/05/12\n *\n * thinBasic language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2006/05/12 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2006/05/12)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'thinBasic',\n    'COMMENT_SINGLE' => array(1 => \"'\"),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'XOR','XML_TREETOSTRING','XML_PARSEFILE','XML_PARSE','XML_PARENT','XML_NODETYPE','XML_NODETOSTRING','XML_NEXTSIBLING',\n            'XML_LASTERROR','XML_GETTAG','XML_FREE','XML_FINDNODE','XML_DECODEPARAM','XML_CHILDDATA','XML_CHILD','XML_ATTRIBVALUE',\n            'XML_ATTRIBNAME','XML_ATTRIBCOUNT','WORD','WITH','WIN_SHOW','WIN_SETTITLE','WIN_SETFOREGROUND','WIN_ISZOOMED',\n            'WIN_ISVISIBLE','WIN_ISICONIC','WIN_GETTITLE','WIN_GETFOREGROUND','WIN_GETCLASS','WIN_GETACTIVE','WIN_FLASH','WIN_FINDBYTITLE',\n            'WIN_FINDBYCLASS','WHILE','WEND','VERIFY','VARPTR','VARIANTVT$','VARIANTVT','VARIANT',\n            'VARIABLE_GETINFO','VARIABLE_EXISTS','VARIABLE_EXIST','VALUE','VAL','USING$','USING','USES',\n            'USER','UNTIL','UNITS','UNION','UNICODE2ASCII','UDP_SEND','UDP_RECV','UDP_OPENSERVER',\n            'UDP_OPEN','UDP_FREEFILE','UDP_CLOSE','UCODE$','UCASE$','UBOUND','TYPE','TRIMFULL$',\n            'TRIM$','TOOLTIP','TOKENIZER_MOVETOEOL','TOKENIZER_KEYSETUSERSTRING','TOKENIZER_KEYSETUSERNUMBER','TOKENIZER_KEYGETUSERSTRING','TOKENIZER_KEYGETUSERNUMBER','TOKENIZER_KEYGETSUBTYPE',\n            'TOKENIZER_KEYGETNAME','TOKENIZER_KEYGETMAINTYPE','TOKENIZER_KEYFIND','TOKENIZER_KEYADD','TOKENIZER_GETNEXTTOKEN','TOKENIZER_DEFAULT_SET','TOKENIZER_DEFAULT_GET','TOKENIZER_DEFAULT_CODE',\n            'TOKENIZER_DEFAULT_CHAR','TO','TIMER','TIME$','THEN','TEXTBOX','TEXT','TCP_SEND',\n            'TCP_RECV','TCP_PRINT','TCP_OPEN','TCP_LINEINPUT','TCP_FREEFILE','TCP_CLOSE','TB_IMGCTX_SETIMAGEADJUSTMENT','TB_IMGCTX_LOADIMAGE',\n            'TB_IMGCTX_GETIMAGEADJUSTMENT','TBGL_VIEWPORT','TBGL_VERTEX','TBGL_USETEXTUREFLAG','TBGL_USETEXTURE','TBGL_USELINESTIPPLEFLAG','TBGL_USELINESTIPPLE','TBGL_USELIGHTSOURCEFLAG',\n            'TBGL_USELIGHTSOURCE','TBGL_USELIGHTINGFLAG','TBGL_USELIGHTING','TBGL_USEFOGFLAG','TBGL_USEFOG','TBGL_USEDEPTHMASK','TBGL_USEDEPTHFLAG','TBGL_USEDEPTH',\n            'TBGL_USECLIPPLANEFLAG','TBGL_USECLIPPLANE','TBGL_USEBLENDFLAG','TBGL_USEBLEND','TBGL_USEALPHATEST','TBGL_TRANSLATE','TBGL_TORUS','TBGL_TEXCOORD2D',\n            'TBGL_SPHERE','TBGL_SHOWWINDOW','TBGL_SHOWCURSOR','TBGL_SETWINDOWTITLE','TBGL_SETUPLIGHTSOURCE','TBGL_SETUPFOG','TBGL_SETUPCLIPPLANE','TBGL_SETPRIMITIVEQUALITY',\n            'TBGL_SETLIGHTPARAMETER','TBGL_SETDRAWDISTANCE','TBGL_SCALE','TBGL_SAVESCREENSHOT','TBGL_ROTATEXYZ','TBGL_ROTATE','TBGL_RESETMATRIX','TBGL_RENDERTOTEXTURE',\n            'TBGL_RENDERMATRIX3D','TBGL_RENDERMATRIX2D','TBGL_PUSHMATRIX','TBGL_PRINTFONT','TBGL_PRINTBMP','TBGL_PRINT','TBGL_POS3DTOPOS2D','TBGL_POPMATRIX',\n            'TBGL_POLYGONLOOK','TBGL_POINTSIZE','TBGL_POINTINSIDE3D','TBGL_NORMAL','TBGL_NEWLIST','TBGL_MOUSEGETWHEELDELTA','TBGL_MOUSEGETRBUTTON','TBGL_MOUSEGETPOSY',\n            'TBGL_MOUSEGETPOSX','TBGL_MOUSEGETMBUTTON','TBGL_MOUSEGETLBUTTON','TBGL_M15SETVERTEXZ','TBGL_M15SETVERTEXY','TBGL_M15SETVERTEXXYZ','TBGL_M15SETVERTEXX','TBGL_M15SETVERTEXTEXY',\n            'TBGL_M15SETVERTEXTEXXY','TBGL_M15SETVERTEXTEXX','TBGL_M15SETVERTEXTEXN','TBGL_M15SETVERTEXRGB','TBGL_M15SETVERTEXR','TBGL_M15SETVERTEXPSTOP','TBGL_M15SETVERTEXPARAM','TBGL_M15SETVERTEXLAYER',\n            'TBGL_M15SETVERTEXG','TBGL_M15SETVERTEXB','TBGL_M15SETMODELVERTEXCOUNT','TBGL_M15SETBONECHILD','TBGL_M15ROTBONEZ','TBGL_M15ROTBONEY','TBGL_M15ROTBONEX','TBGL_M15ROTBONE',\n            'TBGL_M15RESETBONES','TBGL_M15RECALCNORMALS','TBGL_M15LOADMODEL','TBGL_M15INITMODELBUFFERS','TBGL_M15GETVERTEXZ','TBGL_M15GETVERTEXY','TBGL_M15GETVERTEXXYZ','TBGL_M15GETVERTEXX',\n            'TBGL_M15GETVERTEXTEXY','TBGL_M15GETVERTEXTEXXY','TBGL_M15GETVERTEXTEXX','TBGL_M15GETVERTEXTEXN','TBGL_M15GETVERTEXRGB','TBGL_M15GETVERTEXR','TBGL_M15GETVERTEXPSTOP','TBGL_M15GETVERTEXPARAM',\n            'TBGL_M15GETVERTEXLAYER','TBGL_M15GETVERTEXG','TBGL_M15GETVERTEXB','TBGL_M15GETMODELVERTEXCOUNT','TBGL_M15GETMODELPOLYCOUNT','TBGL_M15ERASECHILDBONES','TBGL_M15DRAWMODEL','TBGL_M15DEFBONERESET',\n            'TBGL_M15DEFBONELAYER','TBGL_M15DEFBONEBOX','TBGL_M15DEFBONEANCHOR','TBGL_M15DEFBONEADDVERTEX','TBGL_M15CLEARMODEL','TBGL_M15APPLYBONES','TBGL_M15ADDBONETREEITEM','TBGL_LOADTEXTURE',\n            'TBGL_LOADFONT','TBGL_LOADBMPFONT','TBGL_LINEWIDTH','TBGL_LINESTIPPLE','TBGL_KILLFONT','TBGL_ISWINDOW','TBGL_ISPOINTVISIBLE','TBGL_ISPOINTBEHINDVIEW',\n            'TBGL_GETWINDOWMULTIKEYSTATE','TBGL_GETWINDOWKEYSTATE','TBGL_GETWINDOWKEYONCE','TBGL_GETWINDOWCLIENT','TBGL_GETTEXTURENAME','TBGL_GETTEXTURELIST','TBGL_GETPIXELINFO','TBGL_GETMULTIASYNCKEYSTATE',\n            'TBGL_GETLASTGLERROR','TBGL_GETFRAMERATE','TBGL_GETDESKTOPINFO','TBGL_GETASYNCKEYSTATE','TBGL_ERRORMESSAGES','TBGL_ENDPOLY','TBGL_ENDLIST','TBGL_DRAWFRAME',\n            'TBGL_DESTROYWINDOW','TBGL_DELETELIST','TBGL_CYLINDER','TBGL_CREATEWINDOWEX','TBGL_CREATEWINDOW','TBGL_COLORALPHA','TBGL_COLOR','TBGL_CLEARFRAME',\n            'TBGL_CAMERA','TBGL_CALLLIST','TBGL_BUILDFONT','TBGL_BOX','TBGL_BLENDFUNC','TBGL_BINDTEXTURE','TBGL_BEGINPOLY','TBGL_BACKCOLOR',\n            'TBGL_ALPHAFUNC','TBDI_JOYZ','TBDI_JOYY','TBDI_JOYX','TBDI_JOYSTOPEFFECT','TBDI_JOYSLIDER','TBDI_JOYSETRANGEZ','TBDI_JOYSETRANGEY',\n            'TBDI_JOYSETRANGEXYZ','TBDI_JOYSETRANGEX','TBDI_JOYSETDEADZONEZ','TBDI_JOYSETDEADZONEY','TBDI_JOYSETDEADZONEXYZ','TBDI_JOYSETDEADZONEX','TBDI_JOYSETAUTOCENTER','TBDI_JOYRZ',\n            'TBDI_JOYRY','TBDI_JOYRX','TBDI_JOYPOV','TBDI_JOYPLAYEFFECT','TBDI_JOYLOADEFFECT','TBDI_JOYHASFF','TBDI_JOYHASEFFECT','TBDI_JOYGETEFFECTNAME',\n            'TBDI_JOYGETEFFECTGUID','TBDI_JOYCREATEEFFECT','TBDI_JOYCOUNTPOV','TBDI_JOYCOUNTEFFECTS','TBDI_JOYCOUNTBTN','TBDI_JOYCOUNTAXES','TBDI_JOYBUTTON','TBDI_JOYAVAIL',\n            'TBDI_INIT','TBASS_STREAMFREE','TBASS_STREAMCREATEFILE','TBASS_SETVOLUME','TBASS_SETEAXPRESET','TBASS_SETEAXPARAMETERS','TBASS_SETCONFIG','TBASS_SET3DPOSITION',\n            'TBASS_SET3DFACTORS','TBASS_SAMPLELOAD','TBASS_SAMPLEGETCHANNEL','TBASS_MUSICLOAD','TBASS_MUSICFREE','TBASS_INIT','TBASS_GETVOLUME','TBASS_GETVERSION',\n            'TBASS_GETCONFIG','TBASS_FREE','TBASS_ERRORGETCODE','TBASS_CHANNELSTOP','TBASS_CHANNELSETPOSITION','TBASS_CHANNELSETATTRIBUTES','TBASS_CHANNELSET3DPOSITION','TBASS_CHANNELPLAY',\n            'TBASS_CHANNELPAUSE','TBASS_CHANNELISACTIVE','TBASS_CHANNELGETPOSITION','TBASS_CHANNELGETLENGTH','TBASS_CHANNELGETATTRIBUTES','TBASS_APPLY3D','TANH','TANGENT',\n            'TAN','TALLY','TABCTRL_ONNOTIFY','TABCTRL_INSERTITEM','TABCTRL_GETCURSEL','SWAP','SUB','STRZIP$',\n            'STRUNZIP$','STRREVERSE$','STRPTRLEN','STRPTR','STRINSERT$','STRING$','STRING','STRDELETE$',\n            'STR$','STOP','STEP','STDOUT','STDIN','STAT_SUM','STAT_STDERROR','STAT_STDDEVIATION',\n            'STAT_RANDOM','STAT_PRODUCT','STAT_MIN','STAT_MEDIAN','STAT_MEANHARMONIC','STAT_MEANGEOMETRIC','STAT_MEANARITHMETIC','STAT_MAX',\n            'STAT_INVERSESUM','STAT_HISTOGRAM','STAT_FILLARRAY','STAT_COUNT','STAT_COPYARRAY','STAT_CLONEARRAY','STAT_CHISQUARE','STATIC',\n            'STATE','SQR','SPLIT','SORT','SMTP_STATISTICS','SMTP_SETOPTION','SMTP_SETLOGFILE','SMTP_SENDHTML',\n            'SMTP_SENDEMAIL','SMTP_GETERROR','SMTP_FINISHED','SMTP_DEBUG','SMTP_CONNECT','SMTP_CLOSE','SLEEP','SIZEOF',\n            'SIZE','SINH','SINGLE','SIN','SIGNED','SHOW','SHIFT','SHAPETOBMP',\n            'SGN','SETAT','SET','SENDMESSAGE','SENDKEYSBULK','SENDKEYS','SEND','SELECTEXPRESSION',\n            'SELECT','SECH','SEC','SCAN','SAPI_SPEAK','SAPI_SETVOLUME','SAPI_SETRATE','SAPI_MODULELOADED',\n            'SAPI_GETVOLUME','SAPI_GETRATE','RTRIM$','RTF_SETTEXT','RTF_SETFONTSIZE','RTF_SETFONTNAME','RTF_SETFGCOLOR','RTF_SETEFFECT',\n            'RTF_SETBGCOLOR','RTF_SETALIGN','RTF_SAVETOFILE','RTF_LOADFROMFILE','RTF_GETTEXT','RTF_GETFONTSIZE','RTF_GETFONTNAME','RTF_GETEFFECT',\n            'RTF_GETCLASS','RTF_APPENDTEXT','RSET$','ROUND','RNDF','RND','RIGHT$','RIGHT',\n            'RGB','RESOURCE','RESIZE','RESET','REPLACE$','REPEAT$','REMOVE$','REM',\n            'REGISTRY_SETVALUE','REGISTRY_SETTXTNUM','REGISTRY_SETTXTBOOL','REGISTRY_SETDWORD','REGISTRY_GETVALUE','REGISTRY_GETTXTNUM','REGISTRY_GETTXTBOOL','REGISTRY_GETDWORD',\n            'REGISTRY_GETALLKEYS','REGISTRY_DELVALUE','REGISTRY_DELKEY','REFERENCE','REF','REDRAW','REDIM','RAS_SETPARAMS',\n            'RAS_OPENDIALUPDIALOG','RAS_LOADENTRIES','RAS_HANGUPALL','RAS_HANGUP','RAS_GETENTRY','RAS_BEGINDIAL','RANDOMIZE','RADTODEG',\n            'QUERYPERFORMANCEFREQUENCY','QUERYPERFORMANCECOUNTER','QUAD','PTR','PRESERVE','POST','POPUP','POKE$',\n            'POKE','PIXELS','PI','PERMUTATIONS','PEEKMESSAGE','PEEK$','PEEK','PC_SYSTEMUPFROM',\n            'PC_SUSPENDSTATE','PC_SHUTDOWN','PC_SHOWCARET','PC_SETCARETBLINKTIME','PC_RESTARTDIALOG','PC_PREVENTSHUTDOWN','PC_LOCK','PC_INSERTCD',\n            'PC_HIDECARET','PC_GETSTATEONOFF','PC_GETSCROLLLOCKKEYSTATE','PC_GETNUMLOCKKEYSTATE','PC_GETCARETBLINKTIME','PC_GETCAPSLOCKKEYSTATE','PC_EMPTYBIN','PC_EJECTCD',\n            'PC_DECODECDERROR','PCT','PARSESET$','PARSECOUNT','PARSE$','PARSE','PARAMETERS','OUTSIDE',\n            'OS_WINVERSIONTEXT','OS_WINGETVERSIONTIMELINE','OS_SHELLEXECUTE','OS_SHELLABOUT','OS_SHELL','OS_SETLASTCALLDLLERROR','OS_SERVICESTOP','OS_SERVICESTATUSDESCRIPTION',\n            'OS_SERVICESTARTTYPEDESCRIPTION','OS_SERVICESTART','OS_SERVICESETSTARTTYPE','OS_SERVICEQUERY','OS_SERVICEGETSTARTTYPE','OS_SERVICEGETLIST','OS_PROCESSKILLBYNAME','OS_PROCESSKILLBYID',\n            'OS_PROCESSISRUNNING','OS_PROCESSGETLIST','OS_PROCESSGETID','OS_PROCESSARERUNNING','OS_MESSAGEBEEP','OS_ISWOW64','OS_ISFEATUREPRESENT','OS_IEVERSION',\n            'OS_GETWINDOWSDIR','OS_GETUSERNAME','OS_GETTEMPDIR','OS_GETSYSTEMDIR','OS_GETSPECIALFOLDER','OS_GETLASTCALLDLLSTATUS','OS_GETLASTCALLDLLERROR','OS_GETCURRENTTHREADID',\n            'OS_GETCURRENTPROCESSID','OS_GETCOMPUTERNAME','OS_GETCOMMANDS','OS_GETCOMMAND','OS_FLASHWINDOW','OS_FATALAPPEXIT','OS_ENVIRON','OS_CALLDLL',\n            'OR','OPTIONAL','OPTION','OPT','ONCE','ON','OFF','NUMBER',\n            'NOT','NEXT','NEW','MSGBOX','MOUSEPTR','MODULE','MODELESS','MODAL',\n            'MOD','MKWRD$','MKS$','MKQ$','MKL$','MKI$','MKE$','MKDWD$',\n            'MKD$','MKCUX$','MKCUR$','MKBYT$','MIN$','MIN','MID$','MENU',\n            'MDI_CREATE','MCASE$','MAX$','MAX','MAKWRD','MAKLNG','MAKINT','MAKDWR',\n            'LTRIM$','LSET$','LOWRD','LOOP','LONG','LOINT','LOG_WRITE','LOGB',\n            'LOG2','LOG10','LOG','LOCAL','LOC','LL_UPDATEBYNAME','LL_UPDATE','LL_TOSTRING',\n            'LL_TOFILE','LL_NAME','LL_GETITEM','LL_GETBYNUMBER','LL_FROMFILE','LL_FREE','LL_FINDLAST','LL_FINDBYNAME',\n            'LL_FINDBYDATA','LL_DELETELIKE','LL_DELETEBYNAME','LL_DELETE','LL_DATABYNAME','LL_DATA','LL_COUNT','LL_ADD',\n            'LISTBOX','LINE','LIBRARY_EXISTS','LIB','LEN','LEFT$','LEFT','LCASE$',\n            'LBOUND','LABEL','KILL','JOIN$','ITERATE','ISWINDOW','ISUNICODE','ISTRUE',\n            'ISODD','ISLIKE','ISFALSE','ISEVEN','IP_TOSTRING','IP_ADDR','INTERNALINFO','INTEGER',\n            'INT','INSTR','INSIDE','INPUTBOX$','INI_SETKEY','INI_GETSECTIONSLIST','INI_GETSECTIONKEYLIST','INI_GETKEY',\n            'INET_URLDOWNLOAD','INET_PING','INET_OPENDIALUPDIALOG','INET_GETSTATE','INET_GETREMOTEMACADDRESS','INET_GETIP','INET_GETCONNECTIONMODE','INCR',\n            'IN','IMAGE','IIF$','IIF','IF','ICRYPTO_TESTSHA1','ICRYPTO_TESTMD5','ICRYPTO_TESTCRC32',\n            'ICRYPTO_TESTCRC16','ICRYPTO_STRING2ASCII','ICRYPTO_SHA1','ICRYPTO_MD5','ICRYPTO_ENCRYPTRIJNDAEL','ICRYPTO_ENCRYPTRC4','ICRYPTO_DECRYPTRIJNDAEL','ICRYPTO_DECRYPTRC4',\n            'ICRYPTO_CRC32','ICRYPTO_CRC16','ICRYPTO_BYTEXOR','ICRYPTO_BIN2ASCII','ICRYPTO_ASCII2STRING','ICRYPTO_ASCII2BIN','HOST_ADDR','HOSTNAME_TOIP',\n            'HOSTIP_TONAME','HIWRD','HIINT','HEX$','HASH','HANDLE','GUIDTXT$','GUID$',\n            'GRAPHIC','GLVOID','GLUSHORT','GLUINT','GLUBYTE','GLSIZEI','GLSHORT','GLOBAL',\n            'GLINT','GLFLOAT','GLENUM','GLDOUBLE','GLCLAMPF','GLCLAMPD','GLBYTE','GLBOOLEAN',\n            'GLBITFIELD','GETWINDOWMULTIKEYSTATE','GETWINDOWKEYSTATE','GETTICKCOUNT','GETS','GETMULTIASYNCKEYSTATE','GETMESSAGE','GETCURRENTINSTANCE',\n            'GETAT','GETASYNCKEYSTATE','GET','FUNCTION_NPARAMS','FUNCTION_EXISTS','FUNCTION_CPARAMS','FUNCTION','FTP_SETSTRING',\n            'FTP_SETSERVERDIR','FTP_SETNUMBER','FTP_SETMODE','FTP_SETLOGFILE','FTP_SETLOCALDIR','FTP_QUIT','FTP_PUTFILE','FTP_GETSTRING',\n            'FTP_GETSERVERDIR','FTP_GETNUMBER','FTP_GETLOCALDIR','FTP_GETLIST','FTP_GETFILE','FTP_GETERRORSTRING','FTP_GETERRORNUMBER','FTP_FINISHED',\n            'FTP_EXTRACT','FTP_DELFILE','FTP_CONNECT','FTP_COMMAND','FRAME','FRAC','FORMAT$','FOR',\n            'FONT_LIST','FONT_CREATE','FONT','FOCUS','FLUSH','FIX','FILE_SIZE','FILE_SHELLDELETE',\n            'FILE_SHELLCOPY','FILE_SETDATETIME','FILE_SEEK','FILE_SAVE','FILE_RENAME','FILE_PUT','FILE_PATHSPLIT','FILE_OPEN',\n            'FILE_LOF','FILE_LOAD','FILE_LINEPRINT','FILE_LINEINPUT','FILE_KILL','FILE_GETVERSIONSTRING','FILE_GETVERSION','FILE_GETTIME',\n            'FILE_GETDATETIMESTAMP','FILE_GETDATETIME','FILE_GETDATE','FILE_GET','FILE_EXISTS','FILE_EOF','FILE_COPY','FILE_CLOSE',\n            'FILE_CHANGED','FILE_APPEND','FACTORIAL','EXTRACT$','EXT','EXPORT','EXP2','EXP10',\n            'EXP','EXIT','EVAL_STRING','EVAL_SETSTRING','EVAL_SETNUMBER','EVAL_MATH','EVAL_LINKEXT','EVAL_GETSTRING',\n            'EVAL_GETNUMBER','EVAL_ERRORGETTOKEN','EVAL_ERRORDESCRIPTION','EVAL_ERRORCLEAR','EVAL','ERRCLEAR','ERR','ENGINE_GETCURRENTTOKEN',\n            'ENDIF','END','ENABLE','ELSEIF','ELSE','ECHO','DWORD','DT_YEAR',\n            'DT_TIMETOSEC','DT_TIMESUBSECONDS','DT_TIMEFORMAT','DT_TIMEADDSECONDS','DT_SETTIMESEPARATOR','DT_SETDATESEPARATOR','DT_SETDATECENTURY','DT_SECTOTIME',\n            'DT_SECTODATE','DT_SECOND','DT_MONTH','DT_MINUTE','DT_LASTDAYOFMONTH','DT_ISVALIDDATE','DT_ISLEAPYEAR','DT_HOUR',\n            'DT_GETWEEKDAYNAME','DT_GETWEEKDAY','DT_GETTIMESTAMP','DT_GETTIMESEPARATOR','DT_GETMONTHNAME','DT_GETDATESEPARATOR','DT_GETDATECENTURY','DT_DAY',\n            'DT_DATETOSEC','DT_DATETIMESUBSECONDS','DT_DATETIMEADDSECONDS','DT_DATESUBDAYS','DT_DATEFORMAT','DT_DATEDIFF','DT_DATEADDDAYS','DT_COOKIEDATE',\n            'DRAW','DOUBLE','DOEVENTS','DO','DISABLE','DIR_REMOVE','DIR_MAKEALL','DIR_MAKE',\n            'DIR_LISTARRAY','DIR_LIST','DIR_ISEMPTY','DIR_ISDIR','DIR_GETCURRENT','DIR_EXISTS','DIR_CHANGEDRIVE','DIR_CHANGE',\n            'DIM','DICTIONARY_MEMINFO','DICTIONARY_LISTKEYS','DICTIONARY_FREE','DICTIONARY_FIND','DICTIONARY_EXISTS','DICTIONARY_CREATE','DICTIONARY_COUNT',\n            'DICTIONARY_ADD','DIALOG_STOPEVENTS','DIALOG_SAVEFILE','DIALOG_OPENFILE','DIALOG_GETCONTROL','DIALOG_CHOOSECOLOR','DIALOG_BROWSEFORFOLDER','DIALOG',\n            'DESKTOP','DESCENDING','DESCEND','DELETEOBJECT','DELETE','DEGTORAD','DECR','DECLARE',\n            'DATE$','CVWRD','CVS','CVQ','CVL','CVI','CVE','CVDWD',\n            'CVD','CVCUX','CVCUR','CVBYT','CURRENCY','CUR','CSET$','CSCH',\n            'CSC','CRYPTO_GETPROVIDERTYPESCOUNT','CRYPTO_GETPROVIDERSCOUNT','CRYPTO_GETDEFAULTPROVIDER','CRYPTO_GENRANDOMSTRING','CRYPTO_ENUMPROVIDERTYPES','CRYPTO_ENUMPROVIDERS','CRYPTO_ENCRYPT',\n            'CRYPTO_DECRYPT','CREATEFONT','COTH','COTAN','COSH','COS','CONTROL_SETTEXT','CONTROL_GETTEXT',\n            'CONTROL_GETNUMBER','CONTROL','CONST','CONSOLE_WRITELINE','CONSOLE_WRITE','CONSOLE_WAITKEY','CONSOLE_SHOWWINDOW','CONSOLE_SHOWCURSOR',\n            'CONSOLE_SETTITLE','CONSOLE_SETTEXTATTRIBUTE','CONSOLE_SETSTDHANDLE','CONSOLE_SETSCREENBUFFERSIZE','CONSOLE_SETPROGRESSBARCHAR','CONSOLE_SETOUTPUTMODE','CONSOLE_SETOUTPUTCP','CONSOLE_SETINPUTMODE',\n            'CONSOLE_SETFILEAPISTOOEM','CONSOLE_SETFILEAPISTOANSI','CONSOLE_SETCURSORSIZE','CONSOLE_SETCURSORPOSITION','CONSOLE_SETCP','CONSOLE_SETACTIVESCREENBUFFER','CONSOLE_SCROLLWINDOW','CONSOLE_SCROLLBUFFERONEROW',\n            'CONSOLE_SCROLLBUFFER','CONSOLE_SAVESCREEN','CONSOLE_RESTORESCREEN','CONSOLE_READLINE','CONSOLE_READ','CONSOLE_PROGRESSBAR','CONSOLE_PRINTLINE','CONSOLE_PRINTAT',\n            'CONSOLE_PRINT','CONSOLE_NORMALSCREEN','CONSOLE_LINE','CONSOLE_INKEYB','CONSOLE_INKEY','CONSOLE_HIDECURSOR','CONSOLE_GETTITLE','CONSOLE_GETTEXTATTRIBUTE',\n            'CONSOLE_GETSTDHANDLE','CONSOLE_GETSIZEY','CONSOLE_GETSIZEX','CONSOLE_GETPROGRESSBARCHAR','CONSOLE_GETOUTPUTMODE','CONSOLE_GETOUTPUTCP','CONSOLE_GETNUMBEROFMOUSEBUTTONS','CONSOLE_GETINPUTMODE',\n            'CONSOLE_GETCURSORY','CONSOLE_GETCURSORX','CONSOLE_GETCURSORSIZE','CONSOLE_GETCURRENTFONTINDEX','CONSOLE_GETCP','CONSOLE_GENERATECTRLEVENT','CONSOLE_FULLSCREEN','CONSOLE_FREE',\n            'CONSOLE_FOREGROUNDRGB','CONSOLE_ENABLECTRLC','CONSOLE_DISABLECTRLC','CONSOLE_CREATESCREENBUFFER','CONSOLE_COLORAT','CONSOLE_CLS','CONSOLE_BOX','CONSOLE_BACKGROUNDRGB',\n            'CONSOLE_ATTACH','CONSOLE_AREFILEAPISANSI','CONSOLE_ALLOC','COM_VARIANTINIT','COM_VARIANTCOPY','COM_VARIANTCLEAR','COM_SUCCEEDED','COM_STRINGFROMCLSID',\n            'COM_RELEASE','COM_QUERYINTERFACE','COM_PROGIDFROMCLSID','COM_ISEQUALIID','COM_ISEQUALGUID','COM_ISEQUALCLSID','COM_GETOBJECT','COM_GETENGINEGUID',\n            'COM_EXECUTE','COM_DISPLAYERROR','COM_CREATEOBJECT','COM_CLSIDFROMSTRING','COM_CLSIDFROMPROGID','COM_BUILDVARIANT','COMBOBOX','COMBINATIONS',\n            'COLOR','CLIPBOARD_SETTEXT','CLIPBOARD_GETTEXT','CLIENT','CLEARMESSAGES','CHR$','CHOOSE$','CHOOSE',\n            'CHECKBOX','CHECK3STATE','CHECK','CGI_WRITELOGFILE','CGI_WRITE','CGI_URLDECODESTRING','CGI_UPLOADFILESTIME','CGI_UPLOADFILESNUMBER',\n            'CGI_UPLOADFILESIZE','CGI_STARTSESSION','CGI_SETSESSIONVARIABLE','CGI_RESETDEFAULTSETTINGS','CGI_REMOVESPECIALCHARSPREFIX','CGI_REMOVEQUOTE','CGI_READ','CGI_LOADCONFIGFILE',\n            'CGI_HEADER','CGI_GETSESSIONVARIABLE','CGI_GETREQUESTMETHOD','CGI_GETQUERYVALUE','CGI_GETCURRENTSESSION','CGI_GETCURRENTGUID','CGI_ENVIRON','CGI_CFGSETOPTION',\n            'CGI_CFGGETOPTION','CGI_ADDSPECIALCHARSPREFIX','CGI_ADDQUOTE','CEIL','CASE','CALL','BYVAL','BYTE',\n            'BYREF','BYCMD','BUTTON','BUNDLE_SETSCRIPTPARAMETERS','BUNDLE_SETSCRIPTNAME','BUNDLE_SETFLAGOBFUSCATEMAINSCRIPT','BUNDLE_SETFLAGDELETEAFTERRUN','BUNDLE_SETFLAGCOMPRESSALLFILES',\n            'BUNDLE_SETFLAGASKBEFOREEXTRACT','BUNDLE_SETEXTRACTIONFOLDER','BUNDLE_SETCREATIONFOLDER','BUNDLE_SETBUNDLENAME','BUNDLE_RESET','BUNDLE_MAKE','BUNDLE_BUILDER','BUNDLE_ADDFOLDER',\n            'BUNDLE_ADDFILE','BOUNDCHECK','BIN$','BIFF_WRITETEXT','BIFF_WRITENUMBER','BIFF_WRITEDATE','BIFF_SETROWHEIGHT','BIFF_SETCOLWIDTH',\n            'BIFF_SETBUFFER','BIFF_CREATEFILE','BIFF_CLOSEFILE','BETWEEN','BEEP','BAR','ATTACH','ATN',\n            'AT','ASSIGN','ASCIZ','ASCIIZ','ASCII2UNICODE','ASCENDING','ASCEND','ASC',\n            'AS','ARRAY','ARCTANH','ARCSINH','ARCSIN','ARCSECH','ARCSEC','ARCCSCH',\n            'ARCCSC','ARCCOTH','ARCCOT','ARCCOSH','ARCCOS','APP_TIMER','APP_SOURCEPATH','APP_SOURCENAME',\n            'APP_SOURCEFULLNAME','APP_PATH','APP_NAME','APP_LISTVARIABLES','APP_LISTKEYWORDS','APP_LISTFUNCTIONS','APP_LISTEQUATES','APP_INCLUDEPATH',\n            'APP_GETMODULEFULLPATH','APP_COUNTER','APPEND','ANY','ANIMATE_STOP','ANIMATE_PLAY','ANIMATE_OPEN','AND',\n            'ALIAS','ALERT','ADD','ACODE$','ABS','%DEF','#MINVERSION','#IF',\n            '#ENDIF','#ELSEIF','#ELSE','#DEFAULT','#DEF','SQLWRITEPRIVATEPROFILESTRING','SQLWRITEFILEDSN','SQLWRITEDSNTOINI',\n            'SQLVALIDDSN','SQLTRANSACT','SQLTABLES','SQLTABLEPRIVILEGES','SQLSTATISTICS','SQLSPECIALCOLUMNS','SQLSETSTMTOPTION','SQLSETSTMTATTR',\n            'SQLSETSCROLLOPTIONS','SQLSETPOS','SQLSETPARAM','SQLSETENVATTR','SQLSETDESCREC','SQLSETDESCFIELD','SQLSETCURSORNAME','SQLSETCONNECTOPTION',\n            'SQLSETCONNECTATTR','SQLSETCONFIGMODE','SQLROWCOUNT','SQLREMOVETRANSLATOR','SQLREMOVEDSNFROMINI','SQLREMOVEDRIVERMANAGER','SQLREMOVEDRIVER','SQLREADFILEDSN',\n            'SQLPUTDATA','SQLPROCEDURES','SQLPROCEDURECOLUMNS','SQLPRIMARYKEYS','SQLPREPARE','SQLPOSTINSTALLERERROR','SQLPARAMOPTIONS','SQLPARAMDATA',\n            'SQLNUMRESULTCOLS','SQLNUMPARAMS','SQLNATIVESQL','SQLMORERESULTS','SQLMANAGEDATASOURCES','SQLINSTALLTRANSLATOREX','SQLINSTALLERERROR','SQLINSTALLDRIVERMANAGER',\n            'SQLINSTALLDRIVEREX','SQLGETTYPEINFO','SQLGETTRANSLATOR','SQLGETSTMTOPTION','SQLGETSTMTATTR','SQLGETPRIVATEPROFILESTRING','SQLGETINSTALLEDDRIVERS','SQLGETINFO',\n            'SQLGETFUNCTIONS','SQLGETENVATTR','SQLGETDIAGREC','SQLGETDIAGFIELD','SQLGETDESCREC','SQLGETDESCFIELD','SQLGETDATA','SQLGETCURSORNAME',\n            'SQLGETCONNECTOPTION','SQLGETCONNECTATTR','SQLGETCONFIGMODE','SQLFREESTMT','SQLFREEHANDLE','SQLFREEENV','SQLFREECONNECT','SQLFOREIGNKEYS',\n            'SQLFETCHSCROLL','SQLFETCH','SQLEXTENDEDFETCH','SQLEXECUTE','SQLEXECDIRECT','SQLERROR','SQLENDTRAN','SQLDRIVERS',\n            'SQLDRIVERCONNECT','SQLDISCONNECT','SQLDESCRIBEPARAM','SQLDESCRIBECOL','SQLDATASOURCES','SQLCREATEDATASOURCE','SQLCOPYDESC','SQLCONNECT',\n            'SQLCONFIGDRIVER','SQLCONFIGDATASOURCE','SQLCOLUMNS','SQLCOLUMNPRIVILEGES','SQLCOLATTRIBUTES','SQLCOLATTRIBUTE','SQLCLOSECURSOR','SQLCANCEL',\n            'SQLBULKOPERATIONS','SQLBROWSECONNECT','SQLBINDPARAMETER','SQLBINDPARAM','SQLBINDCOL','SQLALLOCSTMT','SQLALLOCHANDLE','SQLALLOCENV',\n            'SQLALLOCCONNECT','ODBCWRONGDRIVER','ODBCWRITEPRIVATEPROFILESTRING','ODBCWRITEFILEDSN','ODBCWRITEDSNTOINI','ODBCVALIDDSN','ODBCUPDATERECORD','ODBCUPDATEBYBOOKMARK',\n            'ODBCUNLOCKRECORD','ODBCUNBINDCOLUMNS','ODBCUNBINDCOL','ODBCTABLESCOUNT','ODBCTABLES','ODBCTABLEPRIVILEGESCOUNT','ODBCTABLEPRIVILEGES','ODBCSUPPORTS',\n            'ODBCSTATTABLESCHEMANAME','ODBCSTATTABLEPAGES','ODBCSTATTABLECATALOGNAME','ODBCSTATTABLECARDINALITY','ODBCSTATISTICSCOUNT','ODBCSTATISTICS','ODBCSTATINDEXSORTSEQUENCE','ODBCSTATINDEXSCHEMANAME',\n            'ODBCSTATINDEXQUALIFIER','ODBCSTATINDEXPAGES','ODBCSTATINDEXFILTERCONDITION','ODBCSTATINDEXCOLUMNORDINALPOSITION','ODBCSTATINDEXCOLUMNNAME','ODBCSTATINDEXCATALOGNAME','ODBCSTATINDEXCARDINALITY','ODBCSTATINDEXALLOWDUPLICATES',\n            'ODBCSPECIALCOLUMNSCOUNT','ODBCSPECIALCOLUMNS','ODBCSETTXNISOLATION','ODBCSETTRANSLATELIB','ODBCSETTRACEFILE','ODBCSETTRACE','ODBCSETSTMTUSEBOOKMARKS','ODBCSETSTMTSIMULATECURSOR',\n            'ODBCSETSTMTROWSTATUSPTR','ODBCSETSTMTROWSFETCHEDPTR','ODBCSETSTMTROWOPERATIONPTR','ODBCSETSTMTROWBINDTYPE','ODBCSETSTMTROWBINDOFFSETPTR','ODBCSETSTMTROWARRAYSIZE','ODBCSETSTMTRETRIEVEDATA','ODBCSETSTMTQUERYTIMEOUT',\n            'ODBCSETSTMTPARAMSTATUSPTR','ODBCSETSTMTPARAMSPROCESSEDPTR','ODBCSETSTMTPARAMSETSIZE','ODBCSETSTMTPARAMOPERATIONPTR','ODBCSETSTMTPARAMBINDTYPE','ODBCSETSTMTPARAMBINDOFFSETPTR','ODBCSETSTMTNOSCAN','ODBCSETSTMTMETADATAID',\n            'ODBCSETSTMTMAXROWS','ODBCSETSTMTMAXLENGTH','ODBCSETSTMTKEYSETSIZE','ODBCSETSTMTFETCHBOOKMARKPTR','ODBCSETSTMTENABLEAUTOIPD','ODBCSETSTMTCURSORTYPE','ODBCSETSTMTCURSORSENSITIVITY','ODBCSETSTMTCURSORSCROLLABLE',\n            'ODBCSETSTMTCONCURRENCY','ODBCSETSTMTATTR','ODBCSETSTMTASYNCENABLE','ODBCSETSTMTAPPROWDESC','ODBCSETSTMTAPPPARAMDESC','ODBCSETSTATICCURSOR','ODBCSETROWVERCONCURRENCY','ODBCSETRESULT',\n            'ODBCSETRELATIVEPOSITION','ODBCSETREADONLYCONCURRENCY','ODBCSETQUIETMODE','ODBCSETPOSITION','ODBCSETPOS','ODBCSETPACKETMODE','ODBCSETOPTIMISTICCONCURRENCY','ODBCSETODBCCURSORS',\n            'ODBCSETMULTIUSERKEYSETCURSOR','ODBCSETMETADATAID','ODBCSETLOGINTIMEOUT','ODBCSETLOCKCONCURRENCY','ODBCSETKEYSETDRIVENCURSOR','ODBCSETFORWARDONLYCURSOR','ODBCSETENVOUTPUTNTS','ODBCSETENVODBCVERSION',\n            'ODBCSETENVCPMATCH','ODBCSETENVCONNECTIONPOOLING','ODBCSETENVATTR','ODBCSETDYNAMICCURSOR','ODBCSETDESCREC','ODBCSETDESCFIELD','ODBCSETCURSORTYPE','ODBCSETCURSORSENSITIVITY',\n            'ODBCSETCURSORSCROLLABILITY','ODBCSETCURSORNAME','ODBCSETCURSORLOCKTYPE','ODBCSETCURSORKEYSETSIZE','ODBCSETCURSORCONCURRENCY','ODBCSETCURRENTCATALOG','ODBCSETCONNECTIONTIMEOUT','ODBCSETCONNECTATTR',\n            'ODBCSETCONFIGMODE','ODBCSETCONCURVALUESCONCURRENCY','ODBCSETAUTOCOMMITON','ODBCSETAUTOCOMMITOFF','ODBCSETAUTOCOMMIT','ODBCSETASYNCENABLE','ODBCSETACCESSMODE','ODBCSETABSOLUTEPOSITION',\n            'ODBCROWCOUNT','ODBCROLLBACKTRAN','ODBCROLLBACKENVTRAN','ODBCROLLBACKDBCTRAN','ODBCRESULT','ODBCRESETPARAMS','ODBCREMOVETRANSLATOR','ODBCREMOVEDSNFROMINI',\n            'ODBCREMOVEDRIVERMANAGER','ODBCREMOVEDRIVER','ODBCREFRESHRECORD','ODBCRECORDCOUNT','ODBCREADFILEDSN','ODBCQUOTEDIDENTIFIERCASE','ODBCPUTDATA','ODBCPROCEDURESCOUNT',\n            'ODBCPROCEDURES','ODBCPROCEDURECOLUMNSCOUNT','ODBCPROCEDURECOLUMNS','ODBCPRIMARYKEYSCOUNT','ODBCPRIMARYKEYS','ODBCPREPARE','ODBCPOSTINSTALLERERROR','ODBCPARAMDATA',\n            'ODBCOPENSTMT','ODBCOPENCONNECTION','ODBCNUMRESULTCOLS','ODBCNUMPARAMS','ODBCNATIVESQL','ODBCMOVEPREVIOUS','ODBCMOVENEXT','ODBCMOVELAST',\n            'ODBCMOVEFIRST','ODBCMOVE','ODBCMORERESULTS','ODBCMANAGEDATASOURCES','ODBCLOCKRECORD','ODBCINSTALLTRANSLATOREX','ODBCINSTALLERERROR','ODBCINSTALLDRIVERMANAGER',\n            'ODBCINSTALLDRIVEREX','ODBCGETXOPENCLIYEAR','ODBCGETUSERNAME','ODBCGETUNION','ODBCGETTYPEINFOCOUNT','ODBCGETTYPEINFO','ODBCGETTXNISOLATIONOPTION','ODBCGETTXNISOLATION',\n            'ODBCGETTXNCAPABLE','ODBCGETTRANSLATOR','ODBCGETTRANSLATELIB','ODBCGETTRACEFILE','ODBCGETTRACE','ODBCGETTIMEDATEFUNCTIONS','ODBCGETTIMEDATEDIFFINTERVALS','ODBCGETTIMEDATEADDINTERVALS',\n            'ODBCGETTABLETERM','ODBCGETSYSTEMFUNCTIONS','ODBCGETSUBQUERIES','ODBCGETSTRINGFUNCTIONS','ODBCGETSTMTUSEBOOKMARKS','ODBCGETSTMTSQLSTATE','ODBCGETSTMTSIMULATECURSOR','ODBCGETSTMTROWSTATUSPTR',\n            'ODBCGETSTMTROWSFETCHEDPTR','ODBCGETSTMTROWOPERATIONPTR','ODBCGETSTMTROWNUMBER','ODBCGETSTMTROWBINDTYPE','ODBCGETSTMTROWBINDOFFSETPTR','ODBCGETSTMTROWARRAYSIZE','ODBCGETSTMTRETRIEVEDATA','ODBCGETSTMTQUERYTIMEOUT',\n            'ODBCGETSTMTPARAMSTATUSPTR','ODBCGETSTMTPARAMSPROCESSEDPTR','ODBCGETSTMTPARAMSETSIZE','ODBCGETSTMTPARAMOPERATIONPTR','ODBCGETSTMTPARAMBINDTYPE','ODBCGETSTMTPARAMBINDOFFSETPTR','ODBCGETSTMTNOSCAN','ODBCGETSTMTMETADATAID',\n            'ODBCGETSTMTMAXROWS','ODBCGETSTMTMAXLENGTH','ODBCGETSTMTKEYSETSIZE','ODBCGETSTMTIMPROWDESC','ODBCGETSTMTIMPPARAMDESC','ODBCGETSTMTFETCHBOOKMARKPTR','ODBCGETSTMTERRORINFO','ODBCGETSTMTENABLEAUTOIPD',\n            'ODBCGETSTMTCURSORTYPE','ODBCGETSTMTCURSORSENSITIVITY','ODBCGETSTMTCURSORSCROLLABLE','ODBCGETSTMTCONCURRENCY','ODBCGETSTMTATTR','ODBCGETSTMTASYNCENABLE','ODBCGETSTMTAPPROWDESC','ODBCGETSTMTAPPPARAMDESC',\n            'ODBCGETSTATICCURSORATTRIBUTES2','ODBCGETSTATICCURSORATTRIBUTES1','ODBCGETSTATEMENTSQLSTATE','ODBCGETSTATEMENTERRORINFO','ODBCGETSTANDARDCLICONFORMANCE','ODBCGETSQLSTATE','ODBCGETSQLCONFORMANCE','ODBCGETSQL92VALUEEXPRESSIONS',\n            'ODBCGETSQL92STRINGFUNCTIONS','ODBCGETSQL92ROWVALUECONSTRUCTOR','ODBCGETSQL92REVOKE','ODBCGETSQL92RELATIONALJOINOPERATORS','ODBCGETSQL92PREDICATES','ODBCGETSQL92NUMERICVALUEFUNCTIONS','ODBCGETSQL92GRANT','ODBCGETSQL92FOREIGNKEYUPDATERULE',\n            'ODBCGETSQL92FOREIGNKEYDELETERULE','ODBCGETSQL92DATETIMEFUNCTIONS','ODBCGETSPECIALCHARACTERS','ODBCGETSERVERNAME','ODBCGETSEARCHPATTERNESCAPE','ODBCGETSCROLLOPTIONS','ODBCGETSCHEMAUSAGE','ODBCGETSCHEMATERM',\n            'ODBCGETROWUPDATES','ODBCGETQUIETMODE','ODBCGETPROCEDURETERM','ODBCGETPROCEDURESSUPPORT','ODBCGETPRIVATEPROFILESTRING','ODBCGETPOSOPERATIONS','ODBCGETPARAMARRAYSELECTS','ODBCGETPARAMARRAYROWCOUNTS',\n            'ODBCGETPACKETMODE','ODBCGETOUTERJOINS','ODBCGETORDERBYCOLUMNSINSELECT','ODBCGETOJCAPABILITIES','ODBCGETODBCVER','ODBCGETODBCINTERFACECONFORMANCE','ODBCGETODBCCURSORS','ODBCGETNUMERICFUNCTIONS',\n            'ODBCGETNULLCOLLATION','ODBCGETNONNULLABLECOLUMNS','ODBCGETNEEDLONGDATALEN','ODBCGETMULTRESULTSETS','ODBCGETMULTIPLEACTIVETXN','ODBCGETMETADATAID','ODBCGETMAXUSERNAMELEN','ODBCGETMAXTABLESINSELECT',\n            'ODBCGETMAXTABLENAMELEN','ODBCGETMAXSTATEMENTLEN','ODBCGETMAXSCHEMANAMELEN','ODBCGETMAXROWSIZEINCLUDESLONG','ODBCGETMAXROWSIZE','ODBCGETMAXPROCEDURENAMELEN','ODBCGETMAXINDEXSIZE','ODBCGETMAXIDENTIFIERLEN',\n            'ODBCGETMAXDRIVERCONNECTIONS','ODBCGETMAXCURSORNAMELEN','ODBCGETMAXCONCURRENTACTIVITIES','ODBCGETMAXCOLUMNSINTABLE','ODBCGETMAXCOLUMNSINSELECT','ODBCGETMAXCOLUMNSINORDERBY','ODBCGETMAXCOLUMNSININDEX','ODBCGETMAXCOLUMNSINGROUPBY',\n            'ODBCGETMAXCOLUMNNAMELEN','ODBCGETMAXCHARLITERALLEN','ODBCGETMAXCATALOGNAMELEN','ODBCGETMAXBINARYLITERALLEN','ODBCGETMAXASYNCCONCURRENTSTATEMENTS','ODBCGETLONGVARCHARDATABYCOLNAME','ODBCGETLONGVARCHARDATA','ODBCGETLOGINTIMEOUT',\n            'ODBCGETLIKEESCAPECLAUSE','ODBCGETKEYWORDS','ODBCGETKEYSETCURSORATTRIBUTES2','ODBCGETKEYSETCURSORATTRIBUTES1','ODBCGETINTEGRITY','ODBCGETINSTALLERERRORMESSAGE','ODBCGETINSTALLERERRORCODE','ODBCGETINSTALLEDDRIVERS',\n            'ODBCGETINSERTSTATEMENT','ODBCGETINFOSTR','ODBCGETINFOSCHEMAVIEWS','ODBCGETINFOLONG','ODBCGETINFOINT','ODBCGETINFO','ODBCGETINDEXKEYWORDS','ODBCGETIMPROWDESCREC',\n            'ODBCGETIMPROWDESCFIELDTYPE','ODBCGETIMPROWDESCFIELDSCALE','ODBCGETIMPROWDESCFIELDPRECISION','ODBCGETIMPROWDESCFIELDOCTETLENGTH','ODBCGETIMPROWDESCFIELDNULLABLE','ODBCGETIMPROWDESCFIELDNAME','ODBCGETIMPROWDESCFIELD','ODBCGETIMPPARAMDESCREC',\n            'ODBCGETIMPPARAMDESCFIELDTYPE','ODBCGETIMPPARAMDESCFIELDSCALE','ODBCGETIMPPARAMDESCFIELDPRECISION','ODBCGETIMPPARAMDESCFIELDOCTETLENGTH','ODBCGETIMPPARAMDESCFIELDNULLABLE','ODBCGETIMPPARAMDESCFIELDNAME','ODBCGETIMPPARAMDESCFIELD','ODBCGETIDENTIFIERQUOTECHAR',\n            'ODBCGETIDENTIFIERCASE','ODBCGETGROUPBY','ODBCGETFUNCTIONS','ODBCGETFORWARDONLYCURSORATTRIBUTES2','ODBCGETFORWARDONLYCURSORATTRIBUTES1','ODBCGETFILEUSAGE','ODBCGETEXPRESSIONSINORDERBY','ODBCGETERRORINFO',\n            'ODBCGETENVSQLSTATE','ODBCGETENVOUTPUTNTS','ODBCGETENVODBCVERSION','ODBCGETENVIRONMENTSQLSTATE','ODBCGETENVIRONMENTERRORINFO','ODBCGETENVERRORINFO','ODBCGETENVCPMATCH','ODBCGETENVCONNECTIONPOOLING',\n            'ODBCGETENVATTR','ODBCGETDYNAMICCURSORATTRIBUTES2','ODBCGETDYNAMICCURSORATTRIBUTES1','ODBCGETDROPVIEW','ODBCGETDROPTRANSLATION','ODBCGETDROPTABLE','ODBCGETDROPSCHEMA','ODBCGETDROPDOMAIN',\n            'ODBCGETDROPCOLLATION','ODBCGETDROPCHARACTERSET','ODBCGETDROPASSERTION','ODBCGETDRIVERVER','ODBCGETDRIVERODBCVER','ODBCGETDRIVERNAME','ODBCGETDRIVERMANAGERINSTALLPATH','ODBCGETDRIVERHLIB',\n            'ODBCGETDRIVERHENV','ODBCGETDRIVERHDBC','ODBCGETDMVERMINOR','ODBCGETDMVERMAJOR','ODBCGETDMVER','ODBCGETDIAGREC','ODBCGETDIAGFIELD','ODBCGETDESCSQLSTATE',\n            'ODBCGETDESCRIPTORSQLSTATE','ODBCGETDESCRIPTORERRORINFO','ODBCGETDESCRIBEPARAMETER','ODBCGETDESCREC','ODBCGETDESCFIELD','ODBCGETDESCERRORINFO','ODBCGETDEFAULTTXNISOLATION','ODBCGETDDLINDEX',\n            'ODBCGETDBMSVER','ODBCGETDBMSNAME','ODBCGETDBCSQLSTATE','ODBCGETDBCERRORINFO','ODBCGETDATETIMELITERALS','ODBCGETDATASTRINGBYCOLNAME','ODBCGETDATASTRING','ODBCGETDATASOURCEREADONLY',\n            'ODBCGETDATASOURCENAME','ODBCGETDATAEXTENSIONS','ODBCGETDATABASENAME','ODBCGETDATA','ODBCGETCURSORTYPE','ODBCGETCURSORSENSITIVITYSUPPORT','ODBCGETCURSORSENSITIVITY','ODBCGETCURSORSCROLLABILITY',\n            'ODBCGETCURSORROLLBACKBEHAVIOR','ODBCGETCURSORNAME','ODBCGETCURSORLOCKTYPE','ODBCGETCURSORKEYSETSIZE','ODBCGETCURSORCONCURRENCY','ODBCGETCURSORCOMMITBEHAVIOR','ODBCGETCURRENTCATALOG','ODBCGETCREATEVIEW',\n            'ODBCGETCREATETRANSLATION','ODBCGETCREATETABLE','ODBCGETCREATESCHEMA','ODBCGETCREATEDOMAIN','ODBCGETCREATECOLLATION','ODBCGETCREATECHARACTERSET','ODBCGETCREATEASSERTION','ODBCGETCORRELATIONNAME',\n            'ODBCGETCONVERTVARCHAR','ODBCGETCONVERTVARBINARY','ODBCGETCONVERTTINYINT','ODBCGETCONVERTTIMESTAMP','ODBCGETCONVERTTIME','ODBCGETCONVERTSMALLINT','ODBCGETCONVERTREAL','ODBCGETCONVERTNUMERIC',\n            'ODBCGETCONVERTLONGVARCHAR','ODBCGETCONVERTLONGVARBINARY','ODBCGETCONVERTINTERVALYEARMONTH','ODBCGETCONVERTINTERVALDAYTIME','ODBCGETCONVERTINTEGER','ODBCGETCONVERTFUNCTIONS','ODBCGETCONVERTFLOAT','ODBCGETCONVERTDOUBLE',\n            'ODBCGETCONVERTDECIMAL','ODBCGETCONVERTDATE','ODBCGETCONVERTCHAR','ODBCGETCONVERTBIT','ODBCGETCONVERTBINARY','ODBCGETCONVERTBIGINT','ODBCGETCONNECTIONTIMEOUT','ODBCGETCONNECTIONSQLSTATE',\n            'ODBCGETCONNECTIONERRORINFO','ODBCGETCONNECTIONDEAD','ODBCGETCONNECTATTR','ODBCGETCONFIGMODE','ODBCGETCONCATNULLBEHAVIOR','ODBCGETCOLUMNALIAS','ODBCGETCOLLATIONSEQ','ODBCGETCATALOGUSAGE',\n            'ODBCGETCATALOGTERM','ODBCGETCATALOGNAMESEPARATOR','ODBCGETCATALOGNAME','ODBCGETCATALOGLOCATION','ODBCGETBOOKMARKPERSISTENCE','ODBCGETBATCHSUPPORT','ODBCGETBATCHROWCOUNT','ODBCGETAUTOIPD',\n            'ODBCGETAUTOCOMMIT','ODBCGETASYNCMODE','ODBCGETASYNCENABLE','ODBCGETALTERTABLE','ODBCGETALTERDOMAIN','ODBCGETAGGREGATEFUNCTIONS','ODBCGETACTIVEENVIRONMENTS','ODBCGETACCESSMODE',\n            'ODBCGETACCESSIBLETABLES','ODBCGETACCESSIBLEPROCEDURES','ODBCFREESTMT','ODBCFREEHANDLE','ODBCFREEENV','ODBCFREEDESC','ODBCFREEDBC','ODBCFREECONNECT',\n            'ODBCFOREIGNKEYSCOUNT','ODBCFOREIGNKEYS','ODBCFETCHSCROLL','ODBCFETCHBYBOOKMARK','ODBCFETCH','ODBCEXTENDEDFETCH','ODBCEXECUTE','ODBCEXECDIRECT',\n            'ODBCERROR','ODBCEOF','ODBCENDTRAN','ODBCDRIVERSCOUNT','ODBCDRIVERS','ODBCDRIVERCONNECT','ODBCDISCONNECT','ODBCDESCRIBEPARAM',\n            'ODBCDESCRIBECOL','ODBCDELETERECORD','ODBCDELETEBYBOOKMARK','ODBCDATASOURCES','ODBCCREATEDATASOURCE','ODBCCOPYDESC','ODBCCONNECTIONISDEAD','ODBCCONNECTIONISALIVE',\n            'ODBCCONNECT','ODBCCONFIGDRIVER','ODBCCONFIGDATASOURCE','ODBCCOMMITTRAN','ODBCCOMMITENVTRAN','ODBCCOMMITDBCTRAN','ODBCCOLUPDATABLE','ODBCCOLUNSIGNED',\n            'ODBCCOLUNNAMED','ODBCCOLUMNSCOUNT','ODBCCOLUMNS','ODBCCOLUMNPRIVILEGESCOUNT','ODBCCOLUMNPRIVILEGES','ODBCCOLUMN','ODBCCOLTYPENAME','ODBCCOLTYPE',\n            'ODBCCOLTABLENAME','ODBCCOLSEARCHABLE','ODBCCOLSCHEMANAME','ODBCCOLSCALE','ODBCCOLPRECISION','ODBCCOLOCTETLENGTH','ODBCCOLNUMPRECRADIX','ODBCCOLNULLABLE',\n            'ODBCCOLNAME','ODBCCOLLOCALTYPENAME','ODBCCOLLITERALSUFFIX','ODBCCOLLITERALPREFIX','ODBCCOLLENGTH','ODBCCOLLABEL','ODBCCOLISNULL','ODBCCOLFIXEDPRECSCALE',\n            'ODBCCOLDISPLAYSIZE','ODBCCOLCOUNT','ODBCCOLCONCISETYPE','ODBCCOLCATALOGNAME','ODBCCOLCASESENSITIVE','ODBCCOLBASETABLENAME','ODBCCOLBASECOLUMNNAME','ODBCCOLAUTOUNIQUEVALUE',\n            'ODBCCOLATTRIBUTE','ODBCCLOSESTMTCURSOR','ODBCCLOSESTMT','ODBCCLOSECURSOR','ODBCCLOSECONNECTION','ODBCCLEARRESULT','ODBCCANCEL','ODBCBULKOPERATIONS',\n            'ODBCBROWSECONNECT','ODBCBINDPARAMETER','ODBCBINDCOLTOWORD','ODBCBINDCOLTOTIMESTAMP','ODBCBINDCOLTOTIME','ODBCBINDCOLTOSTRING','ODBCBINDCOLTOSINGLE','ODBCBINDCOLTOQUAD',\n            'ODBCBINDCOLTONUMERIC','ODBCBINDCOLTOLONG','ODBCBINDCOLTOINTEGER','ODBCBINDCOLTODWORD','ODBCBINDCOLTODOUBLE','ODBCBINDCOLTODECIMAL','ODBCBINDCOLTODATE','ODBCBINDCOLTOCURRENCY',\n            'ODBCBINDCOLTOBYTE','ODBCBINDCOLTOBIT','ODBCBINDCOLTOBINARY','ODBCBINDCOL','ODBCALLOCSTMT','ODBCALLOCHANDLE','ODBCALLOCENV','ODBCALLOCDESC',\n            'ODBCALLOCDBC','ODBCALLOCCONNECT','ODBCADDRECORD','GLVIEWPORT','GLVERTEXPOINTER','GLVERTEX4SV','GLVERTEX4S','GLVERTEX4IV',\n            'GLVERTEX4I','GLVERTEX4FV','GLVERTEX4F','GLVERTEX4DV','GLVERTEX4D','GLVERTEX3SV','GLVERTEX3S','GLVERTEX3IV',\n            'GLVERTEX3I','GLVERTEX3FV','GLVERTEX3F','GLVERTEX3DV','GLVERTEX3D','GLVERTEX2SV','GLVERTEX2S','GLVERTEX2IV',\n            'GLVERTEX2I','GLVERTEX2FV','GLVERTEX2F','GLVERTEX2DV','GLVERTEX2D','GLUUNPROJECT','GLUTESSVERTEX','GLUTESSPROPERTY',\n            'GLUTESSNORMAL','GLUTESSENDPOLYGON','GLUTESSENDCONTOUR','GLUTESSCALLBACK','GLUTESSBEGINPOLYGON','GLUTESSBEGINCONTOUR','GLUSPHERE','GLUSCALEIMAGE',\n            'GLUQUADRICTEXTURE','GLUQUADRICORIENTATION','GLUQUADRICNORMALS','GLUQUADRICDRAWSTYLE','GLUQUADRICCALLBACK','GLUPWLCURVE','GLUPROJECT','GLUPICKMATRIX',\n            'GLUPERSPECTIVE','GLUPARTIALDISK','GLUORTHO2D','GLUNURBSSURFACE','GLUNURBSPROPERTY','GLUNURBSCURVE','GLUNURBSCALLBACK','GLUNEXTCONTOUR',\n            'GLUNEWTESS','GLUNEWQUADRIC','GLUNEWNURBSRENDERER','GLULOOKAT','GLULOADSAMPLINGMATRICES','GLUGETTESSPROPERTY','GLUGETSTRING','GLUGETNURBSPROPERTY',\n            'GLUERRORSTRING','GLUENDTRIM','GLUENDSURFACE','GLUENDPOLYGON','GLUENDCURVE','GLUDISK','GLUDELETETESS','GLUDELETEQUADRIC',\n            'GLUDELETENURBSRENDERER','GLUCYLINDER','GLUBUILD2DMIPMAPS','GLUBUILD1DMIPMAPS','GLUBEGINTRIM','GLUBEGINSURFACE','GLUBEGINPOLYGON','GLUBEGINCURVE',\n            'GLTRANSLATEF','GLTRANSLATED','GLTEXSUBIMAGE2D','GLTEXSUBIMAGE1D','GLTEXPARAMETERIV','GLTEXPARAMETERI','GLTEXPARAMETERFV','GLTEXPARAMETERF',\n            'GLTEXIMAGE2D','GLTEXIMAGE1D','GLTEXGENIV','GLTEXGENI','GLTEXGENFV','GLTEXGENF','GLTEXGENDV','GLTEXGEND',\n            'GLTEXENVIV','GLTEXENVI','GLTEXENVFV','GLTEXENVF','GLTEXCOORDPOINTER','GLTEXCOORD4SV','GLTEXCOORD4S','GLTEXCOORD4IV',\n            'GLTEXCOORD4I','GLTEXCOORD4FV','GLTEXCOORD4F','GLTEXCOORD4DV','GLTEXCOORD4D','GLTEXCOORD3SV','GLTEXCOORD3S','GLTEXCOORD3IV',\n            'GLTEXCOORD3I','GLTEXCOORD3FV','GLTEXCOORD3F','GLTEXCOORD3DV','GLTEXCOORD3D','GLTEXCOORD2SV','GLTEXCOORD2S','GLTEXCOORD2IV',\n            'GLTEXCOORD2I','GLTEXCOORD2FV','GLTEXCOORD2F','GLTEXCOORD2DV','GLTEXCOORD2D','GLTEXCOORD1SV','GLTEXCOORD1S','GLTEXCOORD1IV',\n            'GLTEXCOORD1I','GLTEXCOORD1FV','GLTEXCOORD1F','GLTEXCOORD1DV','GLTEXCOORD1D','GLSTENCILOP','GLSTENCILMASK','GLSTENCILFUNC',\n            'GLSHADEMODEL','GLSELECTBUFFER','GLSCISSOR','GLSCALEF','GLSCALED','GLROTATEF','GLROTATED','GLRENDERMODE',\n            'GLRECTSV','GLRECTS','GLRECTIV','GLRECTI','GLRECTFV','GLRECTF','GLRECTDV','GLRECTD',\n            'GLREADPIXELS','GLREADBUFFER','GLRASTERPOS4SV','GLRASTERPOS4S','GLRASTERPOS4IV','GLRASTERPOS4I','GLRASTERPOS4FV','GLRASTERPOS4F',\n            'GLRASTERPOS4DV','GLRASTERPOS4D','GLRASTERPOS3SV','GLRASTERPOS3S','GLRASTERPOS3IV','GLRASTERPOS3I','GLRASTERPOS3FV','GLRASTERPOS3F',\n            'GLRASTERPOS3DV','GLRASTERPOS3D','GLRASTERPOS2SV','GLRASTERPOS2S','GLRASTERPOS2IV','GLRASTERPOS2I','GLRASTERPOS2FV','GLRASTERPOS2F',\n            'GLRASTERPOS2DV','GLRASTERPOS2D','GLPUSHNAME','GLPUSHMATRIX','GLPUSHCLIENTATTRIB','GLPUSHATTRIB','GLPRIORITIZETEXTURES','GLPOPNAME',\n            'GLPOPMATRIX','GLPOPCLIENTATTRIB','GLPOPATTRIB','GLPOLYGONSTIPPLE','GLPOLYGONOFFSET','GLPOLYGONMODE','GLPOINTSIZE','GLPIXELZOOM',\n            'GLPIXELTRANSFERI','GLPIXELTRANSFERF','GLPIXELSTOREI','GLPIXELSTOREF','GLPIXELMAPUSV','GLPIXELMAPUIV','GLPIXELMAPFV','GLPASSTHROUGH',\n            'GLORTHO','GLNORMALPOINTER','GLNORMAL3SV','GLNORMAL3S','GLNORMAL3IV','GLNORMAL3I','GLNORMAL3FV','GLNORMAL3F',\n            'GLNORMAL3DV','GLNORMAL3D','GLNORMAL3BV','GLNORMAL3B','GLNEWLIST','GLMULTMATRIXF','GLMULTMATRIXD','GLMATRIXMODE',\n            'GLMATERIALIV','GLMATERIALI','GLMATERIALFV','GLMATERIALF','GLMAPGRID2F','GLMAPGRID2D','GLMAPGRID1F','GLMAPGRID1D',\n            'GLMAP2F','GLMAP2D','GLMAP1F','GLMAP1D','GLLOGICOP','GLLOADNAME','GLLOADMATRIXF','GLLOADMATRIXD',\n            'GLLOADIDENTITY','GLLISTBASE','GLLINEWIDTH','GLLINESTIPPLE','GLLIGHTMODELIV','GLLIGHTMODELI','GLLIGHTMODELFV','GLLIGHTMODELF',\n            'GLLIGHTIV','GLLIGHTI','GLLIGHTFV','GLLIGHTF','GLISTEXTURE','GLISLIST','GLISENABLED','GLINTERLEAVEDARRAYS',\n            'GLINITNAMES','GLINDEXUBV','GLINDEXUB','GLINDEXSV','GLINDEXS','GLINDEXPOINTER','GLINDEXMASK','GLINDEXIV',\n            'GLINDEXI','GLINDEXFV','GLINDEXF','GLINDEXDV','GLINDEXD','GLHINT','GLGETTEXPARAMETERIV','GLGETTEXPARAMETERFV',\n            'GLGETTEXLEVELPARAMETERIV','GLGETTEXLEVELPARAMETERFV','GLGETTEXIMAGE','GLGETTEXGENIV','GLGETTEXGENFV','GLGETTEXGENDV','GLGETTEXENVIV','GLGETTEXENVFV',\n            'GLGETSTRING','GLGETPOLYGONSTIPPLE','GLGETPOINTERV','GLGETPIXELMAPUSV','GLGETPIXELMAPUIV','GLGETPIXELMAPFV','GLGETMATERIALIV','GLGETMATERIALFV',\n            'GLGETMAPIV','GLGETMAPFV','GLGETMAPDV','GLGETLIGHTIV','GLGETLIGHTFV','GLGETINTEGERV','GLGETFLOATV','GLGETERROR',\n            'GLGETDOUBLEV','GLGETCLIPPLANE','GLGETBOOLEANV','GLGENTEXTURES','GLGENLISTS','GLFRUSTUM','GLFRONTFACE','GLFOGIV',\n            'GLFOGI','GLFOGFV','GLFOGF','GLFLUSH','GLFINISH','GLFEEDBACKBUFFER','GLEVALPOINT2','GLEVALPOINT1',\n            'GLEVALMESH2','GLEVALMESH1','GLEVALCOORD2FV','GLEVALCOORD2F','GLEVALCOORD2DV','GLEVALCOORD2D','GLEVALCOORD1FV','GLEVALCOORD1F',\n            'GLEVALCOORD1DV','GLEVALCOORD1D','GLENDLIST','GLEND','GLENABLECLIENTSTATE','GLENABLE','GLEDGEFLAGV','GLEDGEFLAGPOINTER',\n            'GLEDGEFLAG','GLDRAWPIXELS','GLDRAWELEMENTS','GLDRAWBUFFER','GLDRAWARRAYS','GLDISABLECLIENTSTATE','GLDISABLE','GLDEPTHRANGE',\n            'GLDEPTHMASK','GLDEPTHFUNC','GLDELETETEXTURES','GLDELETELISTS','GLCULLFACE','GLCOPYTEXSUBIMAGE2D','GLCOPYTEXSUBIMAGE1D','GLCOPYTEXIMAGE2D',\n            'GLCOPYTEXIMAGE1D','GLCOPYPIXELS','GLCOLORPOINTER','GLCOLORMATERIAL','GLCOLORMASK','GLCOLOR4USV','GLCOLOR4US','GLCOLOR4UIV',\n            'GLCOLOR4UI','GLCOLOR4UBV','GLCOLOR4UB','GLCOLOR4SV','GLCOLOR4S','GLCOLOR4IV','GLCOLOR4I','GLCOLOR4FV',\n            'GLCOLOR4F','GLCOLOR4DV','GLCOLOR4D','GLCOLOR4BV','GLCOLOR4B','GLCOLOR3USV','GLCOLOR3US','GLCOLOR3UIV',\n            'GLCOLOR3UI','GLCOLOR3UBV','GLCOLOR3UB','GLCOLOR3SV','GLCOLOR3S','GLCOLOR3IV','GLCOLOR3I','GLCOLOR3FV',\n            'GLCOLOR3F','GLCOLOR3DV','GLCOLOR3D','GLCOLOR3BV','GLCOLOR3B','GLCLIPPLANE','GLCLEARSTENCIL','GLCLEARINDEX',\n            'GLCLEARDEPTH','GLCLEARCOLOR','GLCLEARACCUM','GLCLEAR','GLCALLLISTS','GLCALLLIST','GLBLENDFUNC','GLBITMAP',\n            'GLBINDTEXTURE','GLBEGIN','GLARRAYELEMENT','GLARETEXTURESRESIDENT','GLALPHAFUNC','GLACCUM'),\n        2 => array(\n            '$BEL','$BS','$CR','$CRLF','$DQ','$DT_DATE_SEPARATOR','$DT_LANGUAGE','$DT_TIME_SEPARATOR',\n            '$ESC','$FF','$LF','$NUL','$PC_SD_MY_PC','$SPC','$SQL_OPT_TRACE_FILE_DEFAULT','$SQL_SPEC_STRING',\n            '$TAB','$TRACKBAR_CLASS','$VT','%ACM_OPEN','%ACM_OPENW','%ACM_PLAY','%ACM_STOP','%ACN_START',\n            '%ACN_STOP','%ACS_AUTOPLAY','%ACS_CENTER','%ACS_TIMER','%ACS_TRANSPARENT','%APP_COUNTER_FUNLOOKUP','%APP_COUNTER_KEYLOOKUP','%APP_COUNTER_LOOKUP',\n            '%APP_COUNTER_TESTALPHA','%APP_COUNTER_UDTLOOKUP','%APP_COUNTER_VARLOOKUP','%APP_TIMER_EXECTOTAL','%APP_TIMER_INIT','%APP_TIMER_LOAD','%APP_TIMER_PREPROCESSOR','%AW_ACTIVATE',\n            '%AW_BLEND','%AW_CENTER','%AW_HIDE','%AW_HOR_NEGATIVE','%AW_HOR_POSITIVE','%AW_SLIDE','%AW_VER_NEGATIVE','%AW_VER_POSITIVE',\n            '%BCM_FIRST','%BLACK','%BLUE','%BM_GETCHECK','%BM_SETCHECK','%BST_CHECKED','%BST_UNCHECKED','%BS_AUTOCHECKBOX',\n            '%BS_BOTTOM','%BS_CENTER','%BS_DEFAULT','%BS_DEFPUSHBUTTON','%BS_FLAT','%BS_LEFT','%BS_LEFTTEXT','%BS_MULTILINE',\n            '%BS_NOTIFY','%BS_OWNERDRAW','%BS_PUSHLIKE','%BS_RIGHT','%BS_TOP','%BS_VCENTER','%BUNDLE_BUILDER_CANCELLED','%CBM_FIRST',\n            '%CBN_CLOSEUP','%CBN_DBLCLK','%CBN_DROPDOWN','%CBN_EDITCHANGE','%CBN_EDITUPDATE','%CBN_ERRSPACE','%CBN_KILLFOCUS','%CBN_SELCANCEL',\n            '%CBN_SELCHANGE','%CBN_SELENDCANCEL','%CBN_SELENDOK','%CBN_SETFOCUS','%CBS_AUTOHSCROLL','%CBS_DISABLENOSCROLL','%CBS_DROPDOWN','%CBS_DROPDOWNLIST',\n            '%CBS_HASSTRINGS','%CBS_LOWERCASE','%CBS_NOINTEGRALHEIGHT','%CBS_SIMPLE','%CBS_SORT','%CBS_UPPERCASE','%CB_SELECTSTRING','%CCM_FIRST',\n            '%CC_ANYCOLOR','%CC_ENABLEHOOK','%CC_ENABLETEMPLATE','%CC_ENABLETEMPLATEHANDLE','%CC_FULLOPEN','%CC_PREVENTFULLOPEN','%CC_RGBINIT','%CC_SHOWHELP',\n            '%CC_SOLIDCOLOR','%CFE_BOLD','%CFE_ITALIC','%CFE_LINK','%CFE_PROTECTED','%CFE_STRIKEOUT','%CFE_UNDERLINE','%CFM_ANIMATION',\n            '%CFM_BACKCOLOR','%CFM_BOLD','%CFM_CHARSET','%CFM_COLOR','%CFM_FACE','%CFM_ITALIC','%CFM_KERNING','%CFM_LCID',\n            '%CFM_LINK','%CFM_OFFSET','%CFM_PROTECTED','%CFM_REVAUTHOR','%CFM_SIZE','%CFM_SPACING','%CFM_STRIKEOUT','%CFM_STYLE',\n            '%CFM_UNDERLINE','%CFM_UNDERLINETYPE','%CFM_WEIGHT','%CGI_ACCEPT_FILE_UPLOAD','%CGI_AUTO_ADD_SPECIAL_CHARS_PREFIX','%CGI_AUTO_CREATE_VARS','%CGI_BUFFERIZE_OUTPUT','%CGI_DOUBLE_QUOTE',\n            '%CGI_FILE_UPLOAD_BASEPATH','%CGI_FORCE_SESSION_VALIDATION','%CGI_MAX_BYTE_FROM_STD_IN','%CGI_REQUEST_METHOD_GET','%CGI_REQUEST_METHOD_POST','%CGI_SESSION_FILE_BASEPATH','%CGI_SINGLE_QUOTE','%CGI_SPECIAL_CHARS_PREFIX',\n            '%CGI_TEMPORARY_UPLOAD_PATH','%CGI_UPLOAD_CAN_OVERWRITE','%CGI_WRITE_LOG_FILE','%CGI_WRITE_VARS_INTO_LOG_FILE','%CONOLE_ATTACH_PARENT_PROCESS','%CONSOLE_BACKGROUND_BLUE','%CONSOLE_BACKGROUND_GREEN','%CONSOLE_BACKGROUND_INTENSITY',\n            '%CONSOLE_BACKGROUND_RED','%CONSOLE_BOX_FLAG_3DOFF','%CONSOLE_BOX_FLAG_3DON','%CONSOLE_BOX_FLAG_SHADOW','%CONSOLE_COMMON_LVB_GRID_HORIZONTAL','%CONSOLE_COMMON_LVB_GRID_LVERTICAL','%CONSOLE_COMMON_LVB_GRID_RVERTICAL','%CONSOLE_COMMON_LVB_LEADING_BYTE',\n            '%CONSOLE_COMMON_LVB_REVERSE_VIDEO','%CONSOLE_COMMON_LVB_TRAILING_BYTE','%CONSOLE_COMMON_LVB_UNDERSCORE','%CONSOLE_CTRL_BREAK_EVENT','%CONSOLE_CTRL_C_EVENT','%CONSOLE_DOUBLE_CLICK','%CONSOLE_ENABLE_AUTO_POSITION','%CONSOLE_ENABLE_ECHO_INPUT',\n            '%CONSOLE_ENABLE_EXTENDED_FLAGS','%CONSOLE_ENABLE_INSERT_MODE','%CONSOLE_ENABLE_LINE_INPUT','%CONSOLE_ENABLE_MOUSE_INPUT','%CONSOLE_ENABLE_PROCESSED_INPUT','%CONSOLE_ENABLE_PROCESSED_OUTPUT','%CONSOLE_ENABLE_QUICK_EDIT_MODE','%CONSOLE_ENABLE_WINDOW_INPUT',\n            '%CONSOLE_ENABLE_WRAP_AT_EOL_OUTPUT','%CONSOLE_FOREGROUND_BLUE','%CONSOLE_FOREGROUND_GREEN','%CONSOLE_FOREGROUND_INTENSITY','%CONSOLE_FOREGROUND_RED','%CONSOLE_LBUTTON','%CONSOLE_LINE_HORIZONTAL','%CONSOLE_LINE_VERTICAL',\n            '%CONSOLE_MBUTTON','%CONSOLE_MOUSE_MOVED','%CONSOLE_MOUSE_WHEELED','%CONSOLE_RBUTTON','%CONSOLE_SCROLLBUF_DOWN','%CONSOLE_SCROLLBUF_UP','%CONSOLE_SCROLLWND_ABSOLUTE','%CONSOLE_SCROLLWND_RELATIVE',\n            '%CONSOLE_STD_ERROR_HANDLE','%CONSOLE_STD_INPUT_HANDLE','%CONSOLE_STD_OUTPUT_HANDLE','%CONSOLE_SW_FORCEMINIMIZE','%CONSOLE_SW_HIDE','%CONSOLE_SW_MAXIMIZE','%CONSOLE_SW_MINIMIZE','%CONSOLE_SW_RESTORE',\n            '%CONSOLE_SW_SHOW','%CONSOLE_SW_SHOWDEFAULT','%CONSOLE_SW_SHOWMAXIMIZED','%CONSOLE_SW_SHOWMINIMIZED','%CONSOLE_SW_SHOWMINNOACTIVE','%CONSOLE_SW_SHOWNA','%CONSOLE_SW_SHOWNOACTIVATE','%CONSOLE_SW_SHOWNORMAL',\n            '%CONSOLE_UNAVAILABLE','%CRYPTO_CALG_DES','%CRYPTO_CALG_RC2','%CRYPTO_CALG_RC4','%CRYPTO_PROV_DH_SCHANNEL','%CRYPTO_PROV_DSS','%CRYPTO_PROV_DSS_DH','%CRYPTO_PROV_FORTEZZA',\n            '%CRYPTO_PROV_MS_EXCHANGE','%CRYPTO_PROV_RSA_FULL','%CRYPTO_PROV_RSA_SCHANNEL','%CRYPTO_PROV_RSA_SIG','%CRYPTO_PROV_SSL','%CSIDL_ADMINTOOLS','%CSIDL_ALTSTARTUP','%CSIDL_APPDATA',\n            '%CSIDL_BITBUCKET','%CSIDL_CDBURN_AREA','%CSIDL_COMMON_ADMINTOOLS','%CSIDL_COMMON_ALTSTARTUP','%CSIDL_COMMON_APPDATA','%CSIDL_COMMON_DESKTOPDIRECTORY','%CSIDL_COMMON_DOCUMENTS','%CSIDL_COMMON_FAVORITES',\n            '%CSIDL_COMMON_MUSIC','%CSIDL_COMMON_PICTURES','%CSIDL_COMMON_PROGRAMS','%CSIDL_COMMON_STARTMENU','%CSIDL_COMMON_STARTUP','%CSIDL_COMMON_TEMPLATES','%CSIDL_COMMON_VIDEO','%CSIDL_CONTROLS',\n            '%CSIDL_COOKIES','%CSIDL_DESKTOP','%CSIDL_DESKTOPDIRECTORY','%CSIDL_DRIVES','%CSIDL_FAVORITES','%CSIDL_FLAG_CREATE','%CSIDL_FONTS','%CSIDL_HISTORY',\n            '%CSIDL_INTERNET','%CSIDL_INTERNET_CACHE','%CSIDL_LOCAL_APPDATA','%CSIDL_MYDOCUMENTS','%CSIDL_MYMUSIC','%CSIDL_MYPICTURES','%CSIDL_MYVIDEO','%CSIDL_NETHOOD',\n            '%CSIDL_NETWORK','%CSIDL_PERSONAL','%CSIDL_PRINTERS','%CSIDL_PRINTHOOD','%CSIDL_PROFILE','%CSIDL_PROGRAMS','%CSIDL_PROGRAM_FILES','%CSIDL_PROGRAM_FILES_COMMON',\n            '%CSIDL_RECENT','%CSIDL_SENDTO','%CSIDL_STARTMENU','%CSIDL_STARTUP','%CSIDL_SYSTEM','%CSIDL_TEMPLATES','%CSIDL_WINDOWS','%CW_USEDEFAULT',\n            '%CYAN','%DATE_TIME_FILE_CREATION','%DATE_TIME_LAST_FILE_ACCESS','%DATE_TIME_LAST_FILE_WRITE','%DICTIONARY_MEMINFO_DATA','%DICTIONARY_MEMINFO_KEYS','%DICTIONARY_MEMINFO_TOTAL','%DICTIONARY_SORTDESCENDING',\n            '%DICTIONARY_SORTKEYS','%DSCAPS_CERTIFIED','%DSCAPS_CONTINUOUSRATE','%DSCAPS_EMULDRIVER','%DSCAPS_SECONDARY16BIT','%DSCAPS_SECONDARY8BIT','%DSCAPS_SECONDARYMONO','%DSCAPS_SECONDARYSTEREO',\n            '%DSCCAPS_CERTIFIED','%DSCCAPS_EMULDRIVER','%DS_3DLOOK','%DS_ABSALIGN','%DS_CENTER','%DS_CENTERMOUSE','%DS_CONTEXTHELP','%DS_CONTROL',\n            '%DS_MODALFRAME','%DS_NOFAILCREATE','%DS_SETFONT','%DS_SETFOREGROUND','%DS_SYSMODAL','%DTM_FIRST','%DTM_GETMCCOLOR','%DTM_GETMCFONT',\n            '%DTM_GETMONTHCAL','%DTM_GETRANGE','%DTM_GETSYSTEMTIME','%DTM_SETFORMAT','%DTM_SETFORMATW','%DTM_SETMCCOLOR','%DTM_SETMCFONT','%DTM_SETRANGE',\n            '%DTM_SETSYSTEMTIME','%DTN_CLOSEUP','%DTN_DATETIMECHANGE','%DTN_DROPDOWN','%DTN_FORMAT','%DTN_FORMATQUERY','%DTN_FORMATQUERYW','%DTN_FORMATW',\n            '%DTN_USERSTRING','%DTN_USERSTRINGW','%DTN_WMKEYDOWN','%DTN_WMKEYDOWNW','%DTS_APPCANPARSE','%DTS_LONGDATEFORMAT','%DTS_RIGHTALIGN','%DTS_SHORTDATECENTURYFORMAT',\n            '%DTS_SHORTDATEFORMAT','%DTS_SHOWNONE','%DTS_TIMEFORMAT','%DTS_UPDOWN','%DT_DATE_CENTURY','%DT_DATE_OK','%DT_DAY_IN_YEAR','%DT_DIFF_IN_DAYS',\n            '%DT_DIFF_IN_HOURS','%DT_DIFF_IN_MINUTES','%DT_DIFF_IN_SECONDS','%DT_HOURS_IN_DAY','%DT_MINUTES_IN_HOUR','%DT_SECONDS_IN_DAY','%DT_SECONDS_IN_HOUR','%DT_SECONDS_IN_MINUTE',\n            '%DT_SECONDS_IN_YEAR','%DT_USE_LONG_FORM','%DT_USE_SHORT_FORM','%DT_WRONG_DATE','%DT_WRONG_DAY','%DT_WRONG_MONTH','%ECM_FIRST','%ECOOP_AND',\n            '%ECOOP_OR','%ECOOP_SET','%ECOOP_XOR','%ECO_AUTOHSCROLL','%ECO_AUTOVSCROLL','%ECO_AUTOWORDSELECTION','%ECO_NOHIDESEL','%ECO_READONLY',\n            '%ECO_SELECTIONBAR','%ECO_WANTRETURN','%EM_AUTOURLDETECT','%EM_CANPASTE','%EM_CANREDO','%EM_CANUNDO','%EM_CHARFROMPOS','%EM_DISPLAYBAND',\n            '%EM_EMPTYUNDOBUFFER','%EM_EXGETSEL','%EM_EXLIMITTEXT','%EM_EXLINEFROMCHAR','%EM_EXSETSEL','%EM_FINDTEXT','%EM_FINDTEXTEX','%EM_FINDWORDBREAK',\n            '%EM_FMTLINES','%EM_FORMATRANGE','%EM_GETAUTOURLDETECT','%EM_GETCHARFORMAT','%EM_GETEDITSTYLE','%EM_GETEVENTMASK','%EM_GETFIRSTVISIBLELINE','%EM_GETHANDLE',\n            '%EM_GETIMESTATUS','%EM_GETLIMITTEXT','%EM_GETLINE','%EM_GETLINECOUNT','%EM_GETMARGINS','%EM_GETMODIFY','%EM_GETOLEINTERFACE','%EM_GETOPTIONS',\n            '%EM_GETPARAFORMAT','%EM_GETPASSWORDCHAR','%EM_GETRECT','%EM_GETREDONAME','%EM_GETSCROLLPOS','%EM_GETSEL','%EM_GETSELTEXT','%EM_GETTEXTMODE',\n            '%EM_GETTEXTRANGE','%EM_GETTHUMB','%EM_GETUNDONAME','%EM_GETWORDBREAKPROC','%EM_GETWORDBREAKPROCEX','%EM_HIDESELECTION','%EM_LIMITTEXT','%EM_LINEFROMCHAR',\n            '%EM_LINEINDEX','%EM_LINELENGTH','%EM_LINESCROLL','%EM_PASTESPECIAL','%EM_POSFROMCHAR','%EM_REDO','%EM_REPLACESEL','%EM_REQUESTRESIZE',\n            '%EM_SCROLL','%EM_SCROLLCARET','%EM_SELECTIONTYPE','%EM_SETBKGNDCOLOR','%EM_SETCHARFORMAT','%EM_SETEDITSTYLE','%EM_SETEVENTMASK','%EM_SETHANDLE',\n            '%EM_SETIMESTATUS','%EM_SETLIMITTEXT','%EM_SETMARGINS','%EM_SETMODIFY','%EM_SETOLECALLBACK','%EM_SETOPTIONS','%EM_SETPARAFORMAT','%EM_SETPASSWORDCHAR',\n            '%EM_SETREADONLY','%EM_SETRECT','%EM_SETRECTNP','%EM_SETSCROLLPOS','%EM_SETSEL','%EM_SETTABSTOPS','%EM_SETTARGETDEVICE','%EM_SETTEXTMODE',\n            '%EM_SETUNDOLIMIT','%EM_SETWORDBREAKPROC','%EM_SETWORDBREAKPROCEX','%EM_SETWORDWRAPMODE','%EM_SETZOOM','%EM_STOPGROUPTYPING','%EM_STREAMIN','%EM_STREAMOUT',\n            '%EM_UNDO','%ENM_CHANGE','%ENM_CORRECTTEXT','%ENM_DRAGDROPDONE','%ENM_DROPFILES','%ENM_KEYEVENTS','%ENM_MOUSEEVENTS','%ENM_NONE',\n            '%ENM_PARAGRAPHEXPANDED','%ENM_PROTECTED','%ENM_REQUESTRESIZE','%ENM_SCROLL','%ENM_SCROLLEVENTS','%ENM_SELCHANGE','%ENM_UPDATE','%EN_CHANGE',\n            '%EN_MSGFILTER','%EN_SELCHANGE','%EN_UPDATE','%ES_AUTOHSCROLL','%ES_AUTOVSCROLL','%ES_CENTER','%ES_DISABLENOSCROLL','%ES_EX_NOCALLOLEINIT',\n            '%ES_LEFT','%ES_LOWERCASE','%ES_MULTILINE','%ES_NOHIDESEL','%ES_NOOLEDRAGDROP','%ES_NUMBER','%ES_OEMCONVERT','%ES_PASSWORD',\n            '%ES_READONLY','%ES_RIGHT','%ES_SAVESEL','%ES_SELECTIONBAR','%ES_SUNKEN','%ES_UPPERCASE','%ES_WANTRETURN','%EVAL_EXEC_STRING',\n            '%FALSE','%FILE_ADDPATH','%FILE_ARCHIVE','%FILE_BUILDVERSION','%FILE_HIDDEN','%FILE_MAJORVERSION','%FILE_MINORVERSION','%FILE_NORMAL',\n            '%FILE_READONLY','%FILE_REVISIONVERSION','%FILE_SUBDIR','%FILE_SYSTEM','%FILE_VLABEL','%FTP_GET_CONNECT_STATUS','%FTP_GET_FILE_BYTES_RCVD','%FTP_GET_FILE_BYTES_SENT',\n            '%FTP_GET_LAST_RESPONSE','%FTP_GET_LOCAL_IP','%FTP_GET_SERVER_IP','%FTP_GET_TOTAL_BYTES_RCVD','%FTP_GET_TOTAL_BYTES_SENT','%FTP_LIST_FULLLIST','%FTP_LIST_FULLLISTDIR','%FTP_LIST_FULLLISTFILE',\n            '%FTP_SET_ASYNC','%FTP_SET_CONNECT_WAIT','%FTP_SET_MAX_LISTEN_WAIT','%FTP_SET_MAX_RESPONSE_WAIT','%FTP_SET_PASSIVE','%FTP_SET_SYNC','%FW_BLACK','%FW_BOLD',\n            '%FW_DEMIBOLD','%FW_DONTCARE','%FW_EXTRABOLD','%FW_EXTRALIGHT','%FW_HEAVY','%FW_LIGHT','%FW_MEDIUM','%FW_NORMAL',\n            '%FW_REGULAR','%FW_SEMIBOLD','%FW_THIN','%FW_ULTRABOLD','%FW_ULTRALIGHT','%GDTR_MAX','%GDTR_MIN','%GLU_AUTO_LOAD_MATRIX',\n            '%GLU_BEGIN','%GLU_CCW','%GLU_CULLING','%GLU_CW','%GLU_DISPLAY_MODE','%GLU_DOMAIN_DISTANCE','%GLU_EDGE_FLAG','%GLU_END',\n            '%GLU_ERROR','%GLU_EXTENSIONS','%GLU_EXTERIOR','%GLU_FALSE','%GLU_FILL','%GLU_FLAT','%GLU_INCOMPATIBLE_GL_VERSION','%GLU_INSIDE',\n            '%GLU_INTERIOR','%GLU_INVALID_ENUM','%GLU_INVALID_VALUE','%GLU_LINE','%GLU_MAP1_TRIM_2','%GLU_MAP1_TRIM_3','%GLU_NONE','%GLU_NURBS_ERROR1',\n            '%GLU_NURBS_ERROR10','%GLU_NURBS_ERROR11','%GLU_NURBS_ERROR12','%GLU_NURBS_ERROR13','%GLU_NURBS_ERROR14','%GLU_NURBS_ERROR15','%GLU_NURBS_ERROR16','%GLU_NURBS_ERROR17',\n            '%GLU_NURBS_ERROR18','%GLU_NURBS_ERROR19','%GLU_NURBS_ERROR2','%GLU_NURBS_ERROR20','%GLU_NURBS_ERROR21','%GLU_NURBS_ERROR22','%GLU_NURBS_ERROR23','%GLU_NURBS_ERROR24',\n            '%GLU_NURBS_ERROR25','%GLU_NURBS_ERROR26','%GLU_NURBS_ERROR27','%GLU_NURBS_ERROR28','%GLU_NURBS_ERROR29','%GLU_NURBS_ERROR3','%GLU_NURBS_ERROR30','%GLU_NURBS_ERROR31',\n            '%GLU_NURBS_ERROR32','%GLU_NURBS_ERROR33','%GLU_NURBS_ERROR34','%GLU_NURBS_ERROR35','%GLU_NURBS_ERROR36','%GLU_NURBS_ERROR37','%GLU_NURBS_ERROR4','%GLU_NURBS_ERROR5',\n            '%GLU_NURBS_ERROR6','%GLU_NURBS_ERROR7','%GLU_NURBS_ERROR8','%GLU_NURBS_ERROR9','%GLU_OUTLINE_PATCH','%GLU_OUTLINE_POLYGON','%GLU_OUTSIDE','%GLU_OUT_OF_MEMORY',\n            '%GLU_PARAMETRIC_ERROR','%GLU_PARAMETRIC_TOLERANCE','%GLU_PATH_LENGTH','%GLU_POINT','%GLU_SAMPLING_METHOD','%GLU_SAMPLING_TOLERANCE','%GLU_SILHOUETTE','%GLU_SMOOTH',\n            '%GLU_TESS_BEGIN','%GLU_TESS_BEGIN_DATA','%GLU_TESS_BOUNDARY_ONLY','%GLU_TESS_COMBINE','%GLU_TESS_COMBINE_DATA','%GLU_TESS_COORD_TOO_LARGE','%GLU_TESS_EDGE_FLAG','%GLU_TESS_EDGE_FLAG_DATA',\n            '%GLU_TESS_END','%GLU_TESS_END_DATA','%GLU_TESS_ERROR','%GLU_TESS_ERROR1','%GLU_TESS_ERROR2','%GLU_TESS_ERROR3','%GLU_TESS_ERROR4','%GLU_TESS_ERROR5',\n            '%GLU_TESS_ERROR6','%GLU_TESS_ERROR7','%GLU_TESS_ERROR8','%GLU_TESS_ERROR_DATA','%GLU_TESS_MISSING_BEGIN_CONTOUR','%GLU_TESS_MISSING_BEGIN_POLYGON','%GLU_TESS_MISSING_END_CONTOUR','%GLU_TESS_MISSING_END_POLYGON',\n            '%GLU_TESS_NEED_COMBINE_CALLBACK','%GLU_TESS_TOLERANCE','%GLU_TESS_VERTEX','%GLU_TESS_VERTEX_DATA','%GLU_TESS_WINDING_ABS_GEQ_TWO','%GLU_TESS_WINDING_NEGATIVE','%GLU_TESS_WINDING_NONZERO','%GLU_TESS_WINDING_ODD',\n            '%GLU_TESS_WINDING_POSITIVE','%GLU_TESS_WINDING_RULE','%GLU_TRUE','%GLU_UNKNOWN','%GLU_U_STEP','%GLU_VERSION','%GLU_VERSION_1_1','%GLU_VERSION_1_2',\n            '%GLU_VERTEX','%GLU_V_STEP','%GL_2D','%GL_2_BYTES','%GL_3D','%GL_3D_COLOR','%GL_3D_COLOR_TEXTURE','%GL_3_BYTES',\n            '%GL_4D_COLOR_TEXTURE','%GL_4_BYTES','%GL_ABGR_EXT','%GL_ACCUM','%GL_ACCUM_ALPHA_BITS','%GL_ACCUM_BLUE_BITS','%GL_ACCUM_BUFFER_BIT','%GL_ACCUM_CLEAR_VALUE',\n            '%GL_ACCUM_GREEN_BITS','%GL_ACCUM_RED_BITS','%GL_ADD','%GL_ALL_ATTRIB_BITS','%GL_ALPHA','%GL_ALPHA12','%GL_ALPHA16','%GL_ALPHA4',\n            '%GL_ALPHA8','%GL_ALPHA_BIAS','%GL_ALPHA_BITS','%GL_ALPHA_SCALE','%GL_ALPHA_TEST','%GL_ALPHA_TEST_FUNC','%GL_ALPHA_TEST_REF','%GL_ALWAYS',\n            '%GL_AMBIENT','%GL_AMBIENT_AND_DIFFUSE','%GL_AND','%GL_AND_INVERTED','%GL_AND_REVERSE','%GL_ARRAY_ELEMENT_LOCK_COUNT_EXT','%GL_ARRAY_ELEMENT_LOCK_FIRST_EXT','%GL_ATTRIB_STACK_DEPTH',\n            '%GL_AUTO_NORMAL','%GL_AUX0','%GL_AUX1','%GL_AUX2','%GL_AUX3','%GL_AUX_BUFFERS','%GL_BACK','%GL_BACK_LEFT',\n            '%GL_BACK_RIGHT','%GL_BGRA_EXT','%GL_BGR_EXT','%GL_BITMAP','%GL_BITMAP_TOKEN','%GL_BLEND','%GL_BLEND_COLOR_EXT','%GL_BLEND_DST',\n            '%GL_BLEND_EQUATION_EXT','%GL_BLEND_SRC','%GL_BLUE','%GL_BLUE_BIAS','%GL_BLUE_BITS','%GL_BLUE_SCALE','%GL_BYTE','%GL_C3F_V3F',\n            '%GL_C4F_N3F_V3F','%GL_C4UB_V2F','%GL_C4UB_V3F','%GL_CCW','%GL_CLAMP','%GL_CLEAR','%GL_CLIENT_ALL_ATTRIB_BITS','%GL_CLIENT_ATTRIB_STACK_DEPTH',\n            '%GL_CLIENT_PIXEL_STORE_BIT','%GL_CLIENT_VERTEX_ARRAY_BIT','%GL_CLIP_PLANE0','%GL_CLIP_PLANE1','%GL_CLIP_PLANE2','%GL_CLIP_PLANE3','%GL_CLIP_PLANE4','%GL_CLIP_PLANE5',\n            '%GL_CLIP_VOLUME_CLIPPING_HINT_EXT','%GL_COEFF','%GL_COLOR','%GL_COLOR_ARRAY','%GL_COLOR_ARRAY_COUNT_EXT','%GL_COLOR_ARRAY_EXT','%GL_COLOR_ARRAY_POINTER','%GL_COLOR_ARRAY_POINTER_EXT',\n            '%GL_COLOR_ARRAY_SIZE','%GL_COLOR_ARRAY_SIZE_EXT','%GL_COLOR_ARRAY_STRIDE','%GL_COLOR_ARRAY_STRIDE_EXT','%GL_COLOR_ARRAY_TYPE','%GL_COLOR_ARRAY_TYPE_EXT','%GL_COLOR_BUFFER_BIT','%GL_COLOR_CLEAR_VALUE',\n            '%GL_COLOR_INDEX','%GL_COLOR_INDEX12_EXT','%GL_COLOR_INDEX16_EXT','%GL_COLOR_INDEX1_EXT','%GL_COLOR_INDEX2_EXT','%GL_COLOR_INDEX4_EXT','%GL_COLOR_INDEX8_EXT','%GL_COLOR_INDEXES',\n            '%GL_COLOR_LOGIC_OP','%GL_COLOR_MATERIAL','%GL_COLOR_MATERIAL_FACE','%GL_COLOR_MATERIAL_PARAMETER','%GL_COLOR_SUM_EXT','%GL_COLOR_TABLE_ALPHA_SIZE_EXT','%GL_COLOR_TABLE_BIAS_EXT','%GL_COLOR_TABLE_BLUE_SIZE_EXT',\n            '%GL_COLOR_TABLE_EXT','%GL_COLOR_TABLE_FORMAT_EXT','%GL_COLOR_TABLE_GREEN_SIZE_EXT','%GL_COLOR_TABLE_INTENSITY_SIZE_EXT','%GL_COLOR_TABLE_LUMINANCE_SIZE_EXT','%GL_COLOR_TABLE_RED_SIZE_EXT','%GL_COLOR_TABLE_SCALE_EXT','%GL_COLOR_TABLE_WIDTH_EXT',\n            '%GL_COLOR_WRITEMASK','%GL_COMPILE','%GL_COMPILE_AND_EXECUTE','%GL_CONSTANT_ALPHA_EXT','%GL_CONSTANT_ATTENUATION','%GL_CONSTANT_COLOR_EXT','%GL_CONVOLUTION_1D_EXT','%GL_CONVOLUTION_2D_EXT',\n            '%GL_CONVOLUTION_BORDER_MODE_EXT','%GL_CONVOLUTION_FILTER_BIAS_EXT','%GL_CONVOLUTION_FILTER_SCALE_EXT','%GL_CONVOLUTION_FORMAT_EXT','%GL_CONVOLUTION_HEIGHT_EXT','%GL_CONVOLUTION_WIDTH_EXT','%GL_COPY','%GL_COPY_INVERTED',\n            '%GL_COPY_PIXEL_TOKEN','%GL_CULL_FACE','%GL_CULL_FACE_MODE','%GL_CULL_VERTEX_EXT','%GL_CULL_VERTEX_EYE_POSITION_EXT','%GL_CULL_VERTEX_OBJECT_POSITION_EXT','%GL_CURRENT_BIT','%GL_CURRENT_COLOR',\n            '%GL_CURRENT_INDEX','%GL_CURRENT_NORMAL','%GL_CURRENT_RASTER_COLOR','%GL_CURRENT_RASTER_DISTANCE','%GL_CURRENT_RASTER_INDEX','%GL_CURRENT_RASTER_POSITION','%GL_CURRENT_RASTER_POSITION_VALID','%GL_CURRENT_RASTER_TEXTURE_COORDS',\n            '%GL_CURRENT_SECONDARY_COLOR_EXT','%GL_CURRENT_TEXTURE_COORDS','%GL_CW','%GL_DECAL','%GL_DECR','%GL_DEPTH','%GL_DEPTH_BIAS','%GL_DEPTH_BITS',\n            '%GL_DEPTH_BUFFER_BIT','%GL_DEPTH_CLEAR_VALUE','%GL_DEPTH_COMPONENT','%GL_DEPTH_FUNC','%GL_DEPTH_RANGE','%GL_DEPTH_SCALE','%GL_DEPTH_TEST','%GL_DEPTH_WRITEMASK',\n            '%GL_DIFFUSE','%GL_DITHER','%GL_DOMAIN','%GL_DONT_CARE','%GL_DOUBLE','%GL_DOUBLEBUFFER','%GL_DOUBLE_EXT','%GL_DRAW_BUFFER',\n            '%GL_DRAW_PIXEL_TOKEN','%GL_DST_ALPHA','%GL_DST_COLOR','%GL_EDGE_FLAG','%GL_EDGE_FLAG_ARRAY','%GL_EDGE_FLAG_ARRAY_COUNT_EXT','%GL_EDGE_FLAG_ARRAY_EXT','%GL_EDGE_FLAG_ARRAY_POINTER',\n            '%GL_EDGE_FLAG_ARRAY_POINTER_EXT','%GL_EDGE_FLAG_ARRAY_STRIDE','%GL_EDGE_FLAG_ARRAY_STRIDE_EXT','%GL_EMISSION','%GL_ENABLE_BIT','%GL_EQUAL','%GL_EQUIV','%GL_EVAL_BIT',\n            '%GL_EXP','%GL_EXP2','%GL_EXTENSIONS','%GL_EXT_ABGR','%GL_EXT_BGRA','%GL_EXT_BLEND_COLOR','%GL_EXT_BLEND_MINMAX','%GL_EXT_BLEND_SUBTRACT',\n            '%GL_EXT_CLIP_VOLUME_HINT','%GL_EXT_COLOR_TABLE','%GL_EXT_COMPILED_VERTEX_ARRAY','%GL_EXT_CONVOLUTION','%GL_EXT_CULL_VERTEX','%GL_EXT_HISTOGRAM','%GL_EXT_PACKED_PIXELS','%GL_EXT_PALETTED_TEXTURE',\n            '%GL_EXT_POLYGON_OFFSET','%GL_EXT_SECONDARY_COLOR','%GL_EXT_SEPARATE_SPECULAR_COLOR','%GL_EXT_VERTEX_ARRAY','%GL_EYE_LINEAR','%GL_EYE_PLANE','%GL_FALSE','%GL_FASTEST',\n            '%GL_FEEDBACK','%GL_FEEDBACK_BUFFER_POINTER','%GL_FEEDBACK_BUFFER_SIZE','%GL_FEEDBACK_BUFFER_TYPE','%GL_FILL','%GL_FLAT','%GL_FLOAT','%GL_FOG',\n            '%GL_FOG_BIT','%GL_FOG_COLOR','%GL_FOG_DENSITY','%GL_FOG_END','%GL_FOG_HINT','%GL_FOG_INDEX','%GL_FOG_MODE','%GL_FOG_START',\n            '%GL_FRONT','%GL_FRONT_AND_BACK','%GL_FRONT_FACE','%GL_FRONT_LEFT','%GL_FRONT_RIGHT','%GL_FUNC_ADD_EXT','%GL_FUNC_REVERSE_SUBTRACT_EXT','%GL_FUNC_SUBTRACT_EXT',\n            '%GL_GEQUAL','%GL_GREATER','%GL_GREEN','%GL_GREEN_BIAS','%GL_GREEN_BITS','%GL_GREEN_SCALE','%GL_HINT_BIT','%GL_HISTOGRAM_ALPHA_SIZE_EXT',\n            '%GL_HISTOGRAM_BLUE_SIZE_EXT','%GL_HISTOGRAM_EXT','%GL_HISTOGRAM_FORMAT_EXT','%GL_HISTOGRAM_GREEN_SIZE_EXT','%GL_HISTOGRAM_LUMINANCE_SIZE_EXT','%GL_HISTOGRAM_RED_SIZE_EXT','%GL_HISTOGRAM_SINK_EXT','%GL_HISTOGRAM_WIDTH_EXT',\n            '%GL_INCR','%GL_INDEX_ARRAY','%GL_INDEX_ARRAY_COUNT_EXT','%GL_INDEX_ARRAY_EXT','%GL_INDEX_ARRAY_POINTER','%GL_INDEX_ARRAY_POINTER_EXT','%GL_INDEX_ARRAY_STRIDE','%GL_INDEX_ARRAY_STRIDE_EXT',\n            '%GL_INDEX_ARRAY_TYPE','%GL_INDEX_ARRAY_TYPE_EXT','%GL_INDEX_BITS','%GL_INDEX_CLEAR_VALUE','%GL_INDEX_LOGIC_OP','%GL_INDEX_MODE','%GL_INDEX_OFFSET','%GL_INDEX_SHIFT',\n            '%GL_INDEX_WRITEMASK','%GL_INT','%GL_INTENSITY','%GL_INTENSITY12','%GL_INTENSITY16','%GL_INTENSITY4','%GL_INTENSITY8','%GL_INVALID_ENUM',\n            '%GL_INVALID_OPERATION','%GL_INVALID_VALUE','%GL_INVERT','%GL_KEEP','%GL_LEFT','%GL_LEQUAL','%GL_LESS','%GL_LIGHT0',\n            '%GL_LIGHT1','%GL_LIGHT2','%GL_LIGHT3','%GL_LIGHT4','%GL_LIGHT5','%GL_LIGHT6','%GL_LIGHT7','%GL_LIGHTING',\n            '%GL_LIGHTING_BIT','%GL_LIGHT_MODEL_AMBIENT','%GL_LIGHT_MODEL_COLOR_CONTROL_EXT','%GL_LIGHT_MODEL_LOCAL_VIEWER','%GL_LIGHT_MODEL_TWO_SIDE','%GL_LINE','%GL_LINEAR','%GL_LINEAR_ATTENUATION',\n            '%GL_LINEAR_MIPMAP_LINEAR','%GL_LINEAR_MIPMAP_NEAREST','%GL_LINES','%GL_LINE_BIT','%GL_LINE_LOOP','%GL_LINE_RESET_TOKEN','%GL_LINE_SMOOTH','%GL_LINE_SMOOTH_HINT',\n            '%GL_LINE_STIPPLE','%GL_LINE_STIPPLE_PATTERN','%GL_LINE_STIPPLE_REPEAT','%GL_LINE_STRIP','%GL_LINE_TOKEN','%GL_LINE_WIDTH','%GL_LINE_WIDTH_GRANULARITY','%GL_LINE_WIDTH_RANGE',\n            '%GL_LIST_BASE','%GL_LIST_BIT','%GL_LIST_INDEX','%GL_LIST_MODE','%GL_LOAD','%GL_LOGIC_OP','%GL_LOGIC_OP_MODE','%GL_LUMINANCE',\n            '%GL_LUMINANCE12','%GL_LUMINANCE12_ALPHA12','%GL_LUMINANCE12_ALPHA4','%GL_LUMINANCE16','%GL_LUMINANCE16_ALPHA16','%GL_LUMINANCE4','%GL_LUMINANCE4_ALPHA4','%GL_LUMINANCE6_ALPHA2',\n            '%GL_LUMINANCE8','%GL_LUMINANCE8_ALPHA8','%GL_LUMINANCE_ALPHA','%GL_MAP1_COLOR_4','%GL_MAP1_GRID_DOMAIN','%GL_MAP1_GRID_SEGMENTS','%GL_MAP1_INDEX','%GL_MAP1_NORMAL',\n            '%GL_MAP1_TEXTURE_COORD_1','%GL_MAP1_TEXTURE_COORD_2','%GL_MAP1_TEXTURE_COORD_3','%GL_MAP1_TEXTURE_COORD_4','%GL_MAP1_VERTEX_3','%GL_MAP1_VERTEX_4','%GL_MAP2_COLOR_4','%GL_MAP2_GRID_DOMAIN',\n            '%GL_MAP2_GRID_SEGMENTS','%GL_MAP2_INDEX','%GL_MAP2_NORMAL','%GL_MAP2_TEXTURE_COORD_1','%GL_MAP2_TEXTURE_COORD_2','%GL_MAP2_TEXTURE_COORD_3','%GL_MAP2_TEXTURE_COORD_4','%GL_MAP2_VERTEX_3',\n            '%GL_MAP2_VERTEX_4','%GL_MAP_COLOR','%GL_MAP_STENCIL','%GL_MATRIX_MODE','%GL_MAX_ATTRIB_STACK_DEPTH','%GL_MAX_CLIENT_ATTRIB_STACK_DEPTH','%GL_MAX_CLIP_PLANES','%GL_MAX_CONVOLUTION_HEIGHT_EXT',\n            '%GL_MAX_CONVOLUTION_WIDTH_EXT','%GL_MAX_EVAL_ORDER','%GL_MAX_EXT','%GL_MAX_LIGHTS','%GL_MAX_LIST_NESTING','%GL_MAX_MODELVIEW_STACK_DEPTH','%GL_MAX_NAME_STACK_DEPTH','%GL_MAX_PIXEL_MAP_TABLE',\n            '%GL_MAX_PROJECTION_STACK_DEPTH','%GL_MAX_TEXTURE_SIZE','%GL_MAX_TEXTURE_STACK_DEPTH','%GL_MAX_VIEWPORT_DIMS','%GL_MINMAX_EXT','%GL_MINMAX_FORMAT_EXT','%GL_MINMAX_SINK_EXT','%GL_MIN_EXT',\n            '%GL_MODELVIEW','%GL_MODELVIEW_MATRIX','%GL_MODELVIEW_STACK_DEPTH','%GL_MODULATE','%GL_MULT','%GL_N3F_V3F','%GL_NAME_STACK_DEPTH','%GL_NAND',\n            '%GL_NEAREST','%GL_NEAREST_MIPMAP_LINEAR','%GL_NEAREST_MIPMAP_NEAREST','%GL_NEVER','%GL_NICEST','%GL_NONE','%GL_NOOP','%GL_NOR',\n            '%GL_NORMALIZE','%GL_NORMAL_ARRAY','%GL_NORMAL_ARRAY_COUNT_EXT','%GL_NORMAL_ARRAY_EXT','%GL_NORMAL_ARRAY_POINTER','%GL_NORMAL_ARRAY_POINTER_EXT','%GL_NORMAL_ARRAY_STRIDE','%GL_NORMAL_ARRAY_STRIDE_EXT',\n            '%GL_NORMAL_ARRAY_TYPE','%GL_NORMAL_ARRAY_TYPE_EXT','%GL_NOTEQUAL','%GL_NO_ERROR','%GL_OBJECT_LINEAR','%GL_OBJECT_PLANE','%GL_ONE','%GL_ONE_MINUS_CONSTANT_ALPHA_EXT',\n            '%GL_ONE_MINUS_CONSTANT_COLOR_EXT','%GL_ONE_MINUS_DST_ALPHA','%GL_ONE_MINUS_DST_COLOR','%GL_ONE_MINUS_SRC_ALPHA','%GL_ONE_MINUS_SRC_COLOR','%GL_OR','%GL_ORDER','%GL_OR_INVERTED',\n            '%GL_OR_REVERSE','%GL_OUT_OF_MEMORY','%GL_PACK_ALIGNMENT','%GL_PACK_LSB_FIRST','%GL_PACK_ROW_LENGTH','%GL_PACK_SKIP_PIXELS','%GL_PACK_SKIP_ROWS','%GL_PACK_SWAP_BYTES',\n            '%GL_PASS_THROUGH_TOKEN','%GL_PERSPECTIVE_CORRECTION_HINT','%GL_PIXEL_MAP_A_TO_A','%GL_PIXEL_MAP_A_TO_A_SIZE','%GL_PIXEL_MAP_B_TO_B','%GL_PIXEL_MAP_B_TO_B_SIZE','%GL_PIXEL_MAP_G_TO_G','%GL_PIXEL_MAP_G_TO_G_SIZE',\n            '%GL_PIXEL_MAP_I_TO_A','%GL_PIXEL_MAP_I_TO_A_SIZE','%GL_PIXEL_MAP_I_TO_B','%GL_PIXEL_MAP_I_TO_B_SIZE','%GL_PIXEL_MAP_I_TO_G','%GL_PIXEL_MAP_I_TO_G_SIZE','%GL_PIXEL_MAP_I_TO_I','%GL_PIXEL_MAP_I_TO_I_SIZE',\n            '%GL_PIXEL_MAP_I_TO_R','%GL_PIXEL_MAP_I_TO_R_SIZE','%GL_PIXEL_MAP_R_TO_R','%GL_PIXEL_MAP_R_TO_R_SIZE','%GL_PIXEL_MAP_S_TO_S','%GL_PIXEL_MAP_S_TO_S_SIZE','%GL_PIXEL_MODE_BIT','%GL_POINT',\n            '%GL_POINTS','%GL_POINT_BIT','%GL_POINT_SIZE','%GL_POINT_SIZE_GRANULARITY','%GL_POINT_SIZE_RANGE','%GL_POINT_SMOOTH','%GL_POINT_SMOOTH_HINT','%GL_POINT_TOKEN',\n            '%GL_POLYGON','%GL_POLYGON_BIT','%GL_POLYGON_MODE','%GL_POLYGON_OFFSET_BIAS_EXT','%GL_POLYGON_OFFSET_EXT','%GL_POLYGON_OFFSET_FACTOR','%GL_POLYGON_OFFSET_FACTOR_EXT','%GL_POLYGON_OFFSET_FILL',\n            '%GL_POLYGON_OFFSET_LINE','%GL_POLYGON_OFFSET_POINT','%GL_POLYGON_OFFSET_UNITS','%GL_POLYGON_SMOOTH','%GL_POLYGON_SMOOTH_HINT','%GL_POLYGON_STIPPLE','%GL_POLYGON_STIPPLE_BIT','%GL_POLYGON_TOKEN',\n            '%GL_POSITION','%GL_POST_COLOR_MATRIX_COLOR_TABLE_EXT','%GL_POST_CONVOLUTION_ALPHA_BIAS_EXT','%GL_POST_CONVOLUTION_ALPHA_SCALE_EXT','%GL_POST_CONVOLUTION_BLUE_BIAS_EXT','%GL_POST_CONVOLUTION_BLUE_SCALE_EXT','%GL_POST_CONVOLUTION_COLOR_TABLE_EXT','%GL_POST_CONVOLUTION_GREEN_BIAS_EXT',\n            '%GL_POST_CONVOLUTION_GREEN_SCALE_EXT','%GL_POST_CONVOLUTION_RED_BIAS_EXT','%GL_POST_CONVOLUTION_RED_SCALE_EXT','%GL_PROJECTION','%GL_PROJECTION_MATRIX','%GL_PROJECTION_STACK_DEPTH','%GL_PROXY_COLOR_TABLE_EXT','%GL_PROXY_HISTOGRAM_EXT',\n            '%GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE_EXT','%GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_EXT','%GL_PROXY_TEXTURE_1D','%GL_PROXY_TEXTURE_2D','%GL_Q','%GL_QUADRATIC_ATTENUATION','%GL_QUADS','%GL_QUAD_STRIP',\n            '%GL_R','%GL_R3_G3_B2','%GL_READ_BUFFER','%GL_RED','%GL_REDUCE_EXT','%GL_RED_BIAS','%GL_RED_BITS','%GL_RED_SCALE',\n            '%GL_RENDER','%GL_RENDERER','%GL_RENDER_MODE','%GL_REPEAT','%GL_REPLACE','%GL_RETURN','%GL_RGB','%GL_RGB10',\n            '%GL_RGB10_A2','%GL_RGB12','%GL_RGB16','%GL_RGB4','%GL_RGB5','%GL_RGB5_A1','%GL_RGB8','%GL_RGBA',\n            '%GL_RGBA12','%GL_RGBA16','%GL_RGBA2','%GL_RGBA4','%GL_RGBA8','%GL_RGBA_MODE','%GL_RIGHT','%GL_S',\n            '%GL_SCISSOR_BIT','%GL_SCISSOR_BOX','%GL_SCISSOR_TEST','%GL_SECONDARY_COLOR_ARRAY_EXT','%GL_SECONDARY_COLOR_ARRAY_POINTER_EXT','%GL_SECONDARY_COLOR_ARRAY_SIZE_EXT','%GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT','%GL_SECONDARY_COLOR_ARRAY_TYPE_EXT',\n            '%GL_SELECT','%GL_SELECTION_BUFFER_POINTER','%GL_SELECTION_BUFFER_SIZE','%GL_SEPARABLE_2D_EXT','%GL_SEPARATE_SPECULAR_COLOR_EXT','%GL_SET','%GL_SHADE_MODEL','%GL_SHININESS',\n            '%GL_SHORT','%GL_SINGLE_COLOR_EXT','%GL_SMOOTH','%GL_SPECULAR','%GL_SPHERE_MAP','%GL_SPOT_CUTOFF','%GL_SPOT_DIRECTION','%GL_SPOT_EXPONENT',\n            '%GL_SRC_ALPHA','%GL_SRC_ALPHA_SATURATE','%GL_SRC_COLOR','%GL_STACK_OVERFLOW','%GL_STACK_UNDERFLOW','%GL_STENCIL','%GL_STENCIL_BITS','%GL_STENCIL_BUFFER_BIT',\n            '%GL_STENCIL_CLEAR_VALUE','%GL_STENCIL_FAIL','%GL_STENCIL_FUNC','%GL_STENCIL_INDEX','%GL_STENCIL_PASS_DEPTH_FAIL','%GL_STENCIL_PASS_DEPTH_PASS','%GL_STENCIL_REF','%GL_STENCIL_TEST',\n            '%GL_STENCIL_VALUE_MASK','%GL_STENCIL_WRITEMASK','%GL_STEREO','%GL_SUBPIXEL_BITS','%GL_T','%GL_T2F_C3F_V3F','%GL_T2F_C4F_N3F_V3F','%GL_T2F_C4UB_V3F',\n            '%GL_T2F_N3F_V3F','%GL_T2F_V3F','%GL_T4F_C4F_N3F_V4F','%GL_T4F_V4F','%GL_TABLE_TOO_LARGE_EXT','%GL_TEXTURE','%GL_TEXTURE_1D','%GL_TEXTURE_2D',\n            '%GL_TEXTURE_ALPHA_SIZE','%GL_TEXTURE_BINDING_1D','%GL_TEXTURE_BINDING_2D','%GL_TEXTURE_BIT','%GL_TEXTURE_BLUE_SIZE','%GL_TEXTURE_BORDER','%GL_TEXTURE_BORDER_COLOR','%GL_TEXTURE_COMPONENTS',\n            '%GL_TEXTURE_COORD_ARRAY','%GL_TEXTURE_COORD_ARRAY_COUNT_EXT','%GL_TEXTURE_COORD_ARRAY_EXT','%GL_TEXTURE_COORD_ARRAY_POINTER','%GL_TEXTURE_COORD_ARRAY_POINTER_EXT','%GL_TEXTURE_COORD_ARRAY_SIZE','%GL_TEXTURE_COORD_ARRAY_SIZE_EXT','%GL_TEXTURE_COORD_ARRAY_STRIDE',\n            '%GL_TEXTURE_COORD_ARRAY_STRIDE_EXT','%GL_TEXTURE_COORD_ARRAY_TYPE','%GL_TEXTURE_COORD_ARRAY_TYPE_EXT','%GL_TEXTURE_ENV','%GL_TEXTURE_ENV_COLOR','%GL_TEXTURE_ENV_MODE','%GL_TEXTURE_GEN_MODE','%GL_TEXTURE_GEN_Q',\n            '%GL_TEXTURE_GEN_R','%GL_TEXTURE_GEN_S','%GL_TEXTURE_GEN_T','%GL_TEXTURE_GREEN_SIZE','%GL_TEXTURE_HEIGHT','%GL_TEXTURE_INTENSITY_SIZE','%GL_TEXTURE_INTERNAL_FORMAT','%GL_TEXTURE_LUMINANCE_SIZE',\n            '%GL_TEXTURE_MAG_FILTER','%GL_TEXTURE_MATRIX','%GL_TEXTURE_MIN_FILTER','%GL_TEXTURE_PRIORITY','%GL_TEXTURE_RED_SIZE','%GL_TEXTURE_RESIDENT','%GL_TEXTURE_STACK_DEPTH','%GL_TEXTURE_WIDTH',\n            '%GL_TEXTURE_WRAP_S','%GL_TEXTURE_WRAP_T','%GL_TRANSFORM_BIT','%GL_TRIANGLES','%GL_TRIANGLE_FAN','%GL_TRIANGLE_STRIP','%GL_TRUE','%GL_UNPACK_ALIGNMENT',\n            '%GL_UNPACK_LSB_FIRST','%GL_UNPACK_ROW_LENGTH','%GL_UNPACK_SKIP_PIXELS','%GL_UNPACK_SKIP_ROWS','%GL_UNPACK_SWAP_BYTES','%GL_UNSIGNED_BYTE','%GL_UNSIGNED_BYTE_3_3_2_EXT','%GL_UNSIGNED_INT',\n            '%GL_UNSIGNED_INT_10_10_10_2_EXT','%GL_UNSIGNED_INT_8_8_8_8_EXT','%GL_UNSIGNED_SHORT','%GL_UNSIGNED_SHORT_4_4_4_4_EXT','%GL_UNSIGNED_SHORT_5_5_5_1_EXT','%GL_V2F','%GL_V3F','%GL_VENDOR',\n            '%GL_VERSION','%GL_VERSION_1_1','%GL_VERTEX_ARRAY','%GL_VERTEX_ARRAY_COUNT_EXT','%GL_VERTEX_ARRAY_EXT','%GL_VERTEX_ARRAY_POINTER','%GL_VERTEX_ARRAY_POINTER_EXT','%GL_VERTEX_ARRAY_SIZE',\n            '%GL_VERTEX_ARRAY_SIZE_EXT','%GL_VERTEX_ARRAY_STRIDE','%GL_VERTEX_ARRAY_STRIDE_EXT','%GL_VERTEX_ARRAY_TYPE','%GL_VERTEX_ARRAY_TYPE_EXT','%GL_VIEWPORT','%GL_VIEWPORT_BIT','%GL_WIN_SWAP_HINT',\n            '%GL_XOR','%GL_ZERO','%GL_ZOOM_X','%GL_ZOOM_Y','%GRAY','%GREEN','%GWLP_HINSTANCE','%GWLP_HWNDPARENT',\n            '%GWLP_ID','%GWLP_USERDATA','%GWLP_WNDPROC','%GWL_EXSTYLE','%GWL_HINSTANCE','%GWL_HWNDPARENT','%GWL_ID','%GWL_STYLE',\n            '%GWL_USERDATA','%GWL_WNDPROC','%HDM_FIRST','%HTCAPTION','%HWND_BOTTOM','%HWND_DESKTOP','%HWND_MESSAGE','%HWND_NOTOPMOST',\n            '%HWND_TOP','%HWND_TOPMOST','%ICRYPTO_XOR_DECREASE','%ICRYPTO_XOR_INCREASE','%ICRYPTO_XOR_NORMAL','%IDABORT','%IDCANCEL','%IDCONTINUE',\n            '%IDIGNORE','%IDNO','%IDOK','%IDRETRY','%IDTIMEOUT','%IDTRYAGAIN','%IDYES','%INTERNET_CONNECTION_CONFIGURED',\n            '%INTERNET_CONNECTION_LAN','%INTERNET_CONNECTION_MODEM','%INTERNET_CONNECTION_MODEM_BUSY','%INTERNET_CONNECTION_OFFLINE','%INTERNET_CONNECTION_PROXY','%INTERNET_RAS_INSTALLED','%LBN_DBLCLK','%LBN_KILLFOCUS',\n            '%LBN_SELCANCEL','%LBN_SELCHANGE','%LBN_SETFOCUS','%LBS_DISABLENOSCROLL','%LBS_EXTENDEDSEL','%LBS_MULTICOLUMN','%LBS_MULTIPLESEL','%LBS_NOINTEGRALHEIGHT',\n            '%LBS_NOSEL','%LBS_NOTIFY','%LBS_SORT','%LBS_STANDARD','%LBS_USETABSTOPS','%LB_ADDFILE','%LB_ADDSTRING','%LB_DELETESTRING',\n            '%LB_DIR','%LB_FINDSTRING','%LB_FINDSTRINGEXACT','%LB_GETANCHORINDEX','%LB_GETCARETINDEX','%LB_GETCOUNT','%LB_GETCURSEL','%LB_GETHORIZONTALEXTENT',\n            '%LB_GETITEMDATA','%LB_GETITEMHEIGHT','%LB_GETITEMRECT','%LB_GETLISTBOXINFO','%LB_GETLOCALE','%LB_GETSEL','%LB_GETSELCOUNT','%LB_GETSELITEMS',\n            '%LB_GETTEXT','%LB_GETTEXTLEN','%LB_GETTOPINDEX','%LB_INITSTORAGE','%LB_INSERTSTRING','%LB_ITEMFROMPOINT','%LB_MULTIPLEADDSTRING','%LB_RESETCONTENT',\n            '%LB_SELECTSTRING','%LB_SELITEMRANGE','%LB_SELITEMRANGEEX','%LB_SETANCHORINDEX','%LB_SETCARETINDEX','%LB_SETCOLUMNWIDTH','%LB_SETCOUNT','%LB_SETCURSEL',\n            '%LB_SETHORIZONTALEXTENT','%LB_SETITEMDATA','%LB_SETITEMHEIGHT','%LB_SETLOCALE','%LB_SETSEL','%LB_SETTABSTOPS','%LB_SETTOPINDEX','%LF_FACESIZE',\n            '%LTGRAY','%LVM_FIRST','%LWA_ALPHA','%LWA_COLORKEY','%MAGENTA','%MAXBYTE','%MAXCHAR','%MAXDWORD',\n            '%MAXSHORT','%MAXWORD','%MAX_PATH','%MB_ABORTRETRYIGNORE','%MB_APPLMODAL','%MB_CANCELTRYCONTINUE','%MB_DEFBUTTON1','%MB_DEFBUTTON2',\n            '%MB_DEFBUTTON3','%MB_HELP','%MB_ICONASTERISK','%MB_ICONERROR','%MB_ICONEXCLAMATION','%MB_ICONHAND','%MB_ICONINFORMATION','%MB_ICONQUESTION',\n            '%MB_ICONSTOP','%MB_ICONWARNING','%MB_OK','%MB_OKCANCEL','%MB_RETRYCANCEL','%MB_SIMPLE','%MB_SYSTEMMODAL','%MB_TOPMOST',\n            '%MB_YESNO','%MB_YESNOCANCEL','%MF_CHECKED','%MF_DISABLED','%MF_ENABLED','%MF_GRAYED','%MF_SEPARATOR','%MF_UNCHECKED',\n            '%MINCHAR','%MINLONG','%MINSHORT','%NULL','%ODBC352_INC','%ODBCVER','%ODBC_ADD_DSN','%ODBC_ADD_SYS_DSN',\n            '%ODBC_BOTH_DSN','%ODBC_CONFIG_DRIVER','%ODBC_CONFIG_DRIVER_MAX','%ODBC_CONFIG_DSN','%ODBC_CONFIG_SYS_DSN','%ODBC_DRIVER_VERSION','%ODBC_ERROR_COMPONENT_NOT_FOUND','%ODBC_ERROR_CREATE_DSN_FAILED',\n            '%ODBC_ERROR_GENERAL_ERR','%ODBC_ERROR_INVALID_BUFF_LEN','%ODBC_ERROR_INVALID_DSN','%ODBC_ERROR_INVALID_HWND','%ODBC_ERROR_INVALID_INF','%ODBC_ERROR_INVALID_KEYWORD_VALUE','%ODBC_ERROR_INVALID_LOG_FILE','%ODBC_ERROR_INVALID_NAME',\n            '%ODBC_ERROR_INVALID_PARAM_SEQUENCE','%ODBC_ERROR_INVALID_PATH','%ODBC_ERROR_INVALID_REQUEST_TYPE','%ODBC_ERROR_INVALID_STR','%ODBC_ERROR_LOAD_LIB_FAILED','%ODBC_ERROR_OUTPUT_STRING_TRUNCATED','%ODBC_ERROR_OUT_OF_MEM','%ODBC_ERROR_REMOVE_DSN_FAILED',\n            '%ODBC_ERROR_REQUEST_FAILED','%ODBC_ERROR_USAGE_UPDATE_FAILED','%ODBC_ERROR_USER_CANCELED','%ODBC_ERROR_WRITING_SYSINFO_FAILED','%ODBC_INSTALL_COMPLETE','%ODBC_INSTALL_DRIVER','%ODBC_INSTALL_INQUIRY','%ODBC_REMOVE_DEFAULT_DSN',\n            '%ODBC_REMOVE_DRIVER','%ODBC_REMOVE_DSN','%ODBC_REMOVE_SYS_DSN','%ODBC_SYSTEM_DSN','%ODBC_USER_DSN','%OFN_ALLOWMULTISELECT','%OFN_CREATEPROMPT','%OFN_ENABLEHOOK',\n            '%OFN_ENABLEINCLUDENOTIFY','%OFN_ENABLESIZING','%OFN_ENABLETEMPLATE','%OFN_ENABLETEMPLATEHANDLE','%OFN_EXPLORER','%OFN_EXTENSIONDIFFERENT','%OFN_FILEMUSTEXIST','%OFN_HIDEREADONLY',\n            '%OFN_LONGNAMES','%OFN_NOCHANGEDIR','%OFN_NODEREFERENCELINKS','%OFN_NOLONGNAMES','%OFN_NONETWORKBUTTON','%OFN_NOREADONLYRETURN','%OFN_NOTESTFILECREATE','%OFN_NOVALIDATE',\n            '%OFN_OVERWRITEPROMPT','%OFN_PATHMUSTEXIST','%OFN_READONLY','%OFN_SHAREAWARE','%OFN_SHOWHELP','%OS_ERROR_CALLFUNCTION','%OS_ERROR_EMPTYSTRING','%OS_ERROR_LOADLIBRARY',\n            '%OS_ERROR_SUCCESS','%OS_ERROR_WRONGPARAMETER','%OS_SHELL_ASYNC','%OS_SHELL_SYNC','%OS_WINDOWS_2K','%OS_WINDOWS_95','%OS_WINDOWS_95_OSR2','%OS_WINDOWS_98',\n            '%OS_WINDOWS_98_SE','%OS_WINDOWS_ME','%OS_WINDOWS_NT','%OS_WINDOWS_SERVER_2003','%OS_WINDOWS_SERVER_LONGHORN','%OS_WINDOWS_SERVER_LONGHORN_DC','%OS_WINDOWS_VISTA','%OS_WINDOWS_XP',\n            '%OS_WNDSTYLE_HIDE','%OS_WNDSTYLE_MAXIMIZED','%OS_WNDSTYLE_MINIMIZED','%OS_WNDSTYLE_MINIMIZEDNOFOCUS','%OS_WNDSTYLE_NORMAL','%OS_WNDSTYLE_NORMALNOFOCUS','%PATH_EXT','%PATH_FILE',\n            '%PATH_FILEEXT','%PATH_ROOT','%PATH_ROOTPATH','%PATH_ROOTPATHPROG','%PATH_ROOTPATHPROGEXT','%PBM_DELTAPOS','%PBM_GETPOS','%PBM_GETRANGE',\n            '%PBM_SETBARCOLOR','%PBM_SETBKCOLOR','%PBM_SETPOS','%PBM_SETRANGE','%PBM_SETRANGE32','%PBM_SETSTEP','%PBM_STEPIT','%PBS_SMOOTH',\n            '%PBS_VERTICAL','%PC_DISABLEWAKEEVENT_OFF','%PC_DISABLEWAKEEVENT_ON','%PC_EB_NOCONFIRMATION','%PC_EB_NOPROGRESSUI','%PC_EB_NORMAL','%PC_EB_NOSOUND','%PC_FORCECRITICAL_OFF',\n            '%PC_FORCECRITICAL_ON','%PC_HIBERNATE_OFF','%PC_HIBERNATE_ON','%PC_RD_FORCE','%PC_RD_FORCEIFHUNG','%PC_RD_LOGOFF','%PC_RD_POWEROFF','%PC_RD_REBOOT',\n            '%PC_RD_SHUTDOWN','%PC_SD_DONOT_FORCE','%PC_SD_DONOT_REBOOT','%PC_SD_FORCE','%PC_SD_REBOOT','%PFA_CENTER','%PFA_LEFT','%PFA_RIGHT',\n            '%PF_3DNOW_INSTRUCTIONS_AVAILABLE','%PF_CHANNELS_ENABLED','%PF_COMPARE64_EXCHANGE128','%PF_COMPARE_EXCHANGE128','%PF_COMPARE_EXCHANGE_DOUBLE','%PF_FLOATING_POINT_EMULATED','%PF_FLOATING_POINT_PRECISION_ERRATA','%PF_MMX_INSTRUCTIONS_AVAILABLE',\n            '%PF_NX_ENABLED','%PF_PAE_ENABLED','%PF_RDTSC_INSTRUCTION_AVAILABLE','%PF_SSE3_INSTRUCTIONS_AVAILABLE','%PF_XMMI64_INSTRUCTIONS_AVAILABLE','%PF_XMMI_INSTRUCTIONS_AVAILABLE','%PGM_FIRST','%RED',\n            '%RTF_UBB','%SAPI_SVSFDEFAULT','%SAPI_SVSFISFILENAME','%SAPI_SVSFISNOTXML','%SAPI_SVSFISXML','%SAPI_SVSFLAGSASYNC','%SAPI_SVSFNLPMASK','%SAPI_SVSFNLPSPEAKPUNC',\n            '%SAPI_SVSFPERSISTXML','%SAPI_SVSFPURGEBEFORESPEAK','%SAPI_SVSFUNUSEDFLAGS','%SAPI_SVSFVOICEMASK','%SBS_SIZEGRIP','%SB_BOTTOM','%SB_ENDSCROLL','%SB_LEFT',\n            '%SB_LINEDOWN','%SB_LINELEFT','%SB_LINERIGHT','%SB_LINEUP','%SB_PAGEDOWN','%SB_PAGELEFT','%SB_PAGERIGHT','%SB_PAGEUP',\n            '%SB_RIGHT','%SB_SETPARTS','%SB_SETTEXT','%SB_THUMBPOSITION','%SB_THUMBTRACK','%SB_TOP','%SCF_ALL','%SCF_ASSOCIATEFONT',\n            '%SCF_DEFAULT','%SCF_NOKBUPDATE','%SCF_SELECTION','%SCF_USEUIRULES','%SCF_WORD','%SC_CLOSE','%SC_CONTEXTHELP','%SC_HOTKEY',\n            '%SC_HSCROLL','%SC_KEYMENU','%SC_MAXIMIZE','%SC_MINIMIZE','%SC_MONITORPOWER','%SC_MOUSEMENU','%SC_MOVE','%SC_NEXTWINDOW',\n            '%SC_PREVWINDOW','%SC_RESTORE','%SC_SCREENSAVE','%SC_SIZE','%SC_TASKLIST','%SC_VSCROLL','%SERVICE_ACTIVE','%SERVICE_AUTO_START',\n            '%SERVICE_BOOT_START','%SERVICE_CONTINUE_PENDING','%SERVICE_DEMAND_START','%SERVICE_DISABLED','%SERVICE_DRIVER','%SERVICE_INACTIVE','%SERVICE_INFO_DISPLAY_NAME','%SERVICE_INFO_NAME',\n            '%SERVICE_PAUSED','%SERVICE_PAUSE_PENDING','%SERVICE_RUNNING','%SERVICE_START_PENDING','%SERVICE_STATE_ALL','%SERVICE_STOPPED','%SERVICE_STOP_PENDING','%SERVICE_SYSTEM_START',\n            '%SERVICE_TYPE_ALL','%SERVICE_WIN32','%SES_ALLOWBEEPS','%SES_BEEPONMAXTEXT','%SES_BIDI','%SES_EMULATE10','%SES_EMULATESYSEDIT','%SES_EXTENDBACKCOLOR',\n            '%SES_LOWERCASE','%SES_MAPCPS','%SES_NOIME','%SES_NOINPUTSEQUENCECHK','%SES_SCROLLONKILLFOCUS','%SES_UPPERCASE','%SES_USEAIMM','%SES_USECRLF',\n            '%SES_XLTCRCRLFTOCR','%SF_RTF','%SF_TEXT','%SMTP_SET_ATTACH_CONTENT_TYPE','%SMTP_SET_CONTENT_TYPE_PREFIX','%SQL_AA_FALSE','%SQL_AA_TRUE','%SQL_ACCESSIBLE_PROCEDURES',\n            '%SQL_ACCESSIBLE_TABLES','%SQL_ACCESS_MODE','%SQL_ACTIVE_CONNECTIONS','%SQL_ACTIVE_ENVIRONMENTS','%SQL_ACTIVE_STATEMENTS','%SQL_ADD','%SQL_AD_ADD_CONSTRAINT_DEFERRABLE','%SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED',\n            '%SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE','%SQL_AD_ADD_DOMAIN_CONSTRAINT','%SQL_AD_ADD_DOMAIN_DEFAULT','%SQL_AD_CONSTRAINT_NAME_DEFINITION','%SQL_AD_DROP_DOMAIN_CONSTRAINT','%SQL_AD_DROP_DOMAIN_DEFAULT','%SQL_AF_ALL',\n            '%SQL_AF_AVG','%SQL_AF_COUNT','%SQL_AF_DISTINCT','%SQL_AF_MAX','%SQL_AF_MIN','%SQL_AF_SUM','%SQL_AGGREGATE_FUNCTIONS','%SQL_ALL_EXCEPT_LIKE',\n            '%SQL_ALL_TYPES','%SQL_ALTER_DOMAIN','%SQL_ALTER_TABLE','%SQL_AM_CONNECTION','%SQL_AM_NONE','%SQL_AM_STATEMENT','%SQL_API_ALL_FUNCTIONS','%SQL_API_LOADBYORDINAL',\n            '%SQL_API_ODBC3_ALL_FUNCTIONS','%SQL_API_ODBC3_ALL_FUNCTIONS_SIZE','%SQL_API_SQLALLOCCONNECT','%SQL_API_SQLALLOCENV','%SQL_API_SQLALLOCHANDLE','%SQL_API_SQLALLOCHANDLESTD','%SQL_API_SQLALLOCSTMT','%SQL_API_SQLBINDCOL',\n            '%SQL_API_SQLBINDPARAM','%SQL_API_SQLBINDPARAMETER','%SQL_API_SQLBROWSECONNECT','%SQL_API_SQLBULKOPERATIONS','%SQL_API_SQLCANCEL','%SQL_API_SQLCLOSECURSOR','%SQL_API_SQLCOLATTRIBUTE','%SQL_API_SQLCOLATTRIBUTES',\n            '%SQL_API_SQLCOLUMNPRIVILEGES','%SQL_API_SQLCOLUMNS','%SQL_API_SQLCONNECT','%SQL_API_SQLCOPYDESC','%SQL_API_SQLDATASOURCES','%SQL_API_SQLDESCRIBECOL','%SQL_API_SQLDESCRIBEPARAM','%SQL_API_SQLDISCONNECT',\n            '%SQL_API_SQLDRIVERCONNECT','%SQL_API_SQLDRIVERS','%SQL_API_SQLENDTRAN','%SQL_API_SQLERROR','%SQL_API_SQLEXECDIRECT','%SQL_API_SQLEXECUTE','%SQL_API_SQLEXTENDEDFETCH','%SQL_API_SQLFETCH',\n            '%SQL_API_SQLFETCHSCROLL','%SQL_API_SQLFOREIGNKEYS','%SQL_API_SQLFREECONNECT','%SQL_API_SQLFREEENV','%SQL_API_SQLFREEHANDLE','%SQL_API_SQLFREESTMT','%SQL_API_SQLGETCONNECTATTR','%SQL_API_SQLGETCONNECTOPTION',\n            '%SQL_API_SQLGETCURSORNAME','%SQL_API_SQLGETDATA','%SQL_API_SQLGETDESCFIELD','%SQL_API_SQLGETDESCREC','%SQL_API_SQLGETDIAGFIELD','%SQL_API_SQLGETDIAGREC','%SQL_API_SQLGETENVATTR','%SQL_API_SQLGETFUNCTIONS',\n            '%SQL_API_SQLGETINFO','%SQL_API_SQLGETSTMTATTR','%SQL_API_SQLGETSTMTOPTION','%SQL_API_SQLGETTYPEINFO','%SQL_API_SQLMORERESULTS','%SQL_API_SQLNATIVESQL','%SQL_API_SQLNUMPARAMS','%SQL_API_SQLNUMRESULTCOLS',\n            '%SQL_API_SQLPARAMDATA','%SQL_API_SQLPARAMOPTIONS','%SQL_API_SQLPREPARE','%SQL_API_SQLPRIMARYKEYS','%SQL_API_SQLPROCEDURECOLUMNS','%SQL_API_SQLPROCEDURES','%SQL_API_SQLPUTDATA','%SQL_API_SQLROWCOUNT',\n            '%SQL_API_SQLSETCONNECTATTR','%SQL_API_SQLSETCONNECTOPTION','%SQL_API_SQLSETCURSORNAME','%SQL_API_SQLSETDESCFIELD','%SQL_API_SQLSETDESCREC','%SQL_API_SQLSETENVATTR','%SQL_API_SQLSETPARAM','%SQL_API_SQLSETPOS',\n            '%SQL_API_SQLSETSCROLLOPTIONS','%SQL_API_SQLSETSTMTATTR','%SQL_API_SQLSETSTMTOPTION','%SQL_API_SQLSPECIALCOLUMNS','%SQL_API_SQLSTATISTICS','%SQL_API_SQLTABLEPRIVILEGES','%SQL_API_SQLTABLES','%SQL_API_SQLTRANSACT',\n            '%SQL_ARD_TYPE','%SQL_ASYNC_ENABLE','%SQL_ASYNC_ENABLE_DEFAULT','%SQL_ASYNC_ENABLE_OFF','%SQL_ASYNC_ENABLE_ON','%SQL_ASYNC_MODE','%SQL_ATTR_ACCESS_MODE','%SQL_ATTR_ANSI_APP',\n            '%SQL_ATTR_APP_PARAM_DESC','%SQL_ATTR_APP_ROW_DESC','%SQL_ATTR_ASYNC_ENABLE','%SQL_ATTR_AUTOCOMMIT','%SQL_ATTR_AUTO_IPD','%SQL_ATTR_CONCURRENCY','%SQL_ATTR_CONNECTION_DEAD','%SQL_ATTR_CONNECTION_POOLING',\n            '%SQL_ATTR_CONNECTION_TIMEOUT','%SQL_ATTR_CP_MATCH','%SQL_ATTR_CURRENT_CATALOG','%SQL_ATTR_CURSOR_SCROLLABLE','%SQL_ATTR_CURSOR_SENSITIVITY','%SQL_ATTR_CURSOR_TYPE','%SQL_ATTR_DISCONNECT_BEHAVIOR','%SQL_ATTR_ENABLE_AUTO_IPD',\n            '%SQL_ATTR_ENLIST_IN_DTC','%SQL_ATTR_ENLIST_IN_XA','%SQL_ATTR_FETCH_BOOKMARK_PTR','%SQL_ATTR_IMP_PARAM_DESC','%SQL_ATTR_IMP_ROW_DESC','%SQL_ATTR_KEYSET_SIZE','%SQL_ATTR_LOGIN_TIMEOUT','%SQL_ATTR_MAX_LENGTH',\n            '%SQL_ATTR_MAX_ROWS','%SQL_ATTR_METADATA_ID','%SQL_ATTR_NOSCAN','%SQL_ATTR_ODBC_CURSORS','%SQL_ATTR_ODBC_VERSION','%SQL_ATTR_OUTPUT_NTS','%SQL_ATTR_PACKET_SIZE','%SQL_ATTR_PARAMSET_SIZE',\n            '%SQL_ATTR_PARAMS_PROCESSED_PTR','%SQL_ATTR_PARAM_BIND_OFFSET_PTR','%SQL_ATTR_PARAM_BIND_TYPE','%SQL_ATTR_PARAM_OPERATION_PTR','%SQL_ATTR_PARAM_STATUS_PTR','%SQL_ATTR_QUERY_TIMEOUT','%SQL_ATTR_QUIET_MODE','%SQL_ATTR_READONLY',\n            '%SQL_ATTR_READWRITE_UNKNOWN','%SQL_ATTR_RETRIEVE_DATA','%SQL_ATTR_ROWS_FETCHED_PTR','%SQL_ATTR_ROW_ARRAY_SIZE','%SQL_ATTR_ROW_BIND_OFFSET_PTR','%SQL_ATTR_ROW_BIND_TYPE','%SQL_ATTR_ROW_NUMBER','%SQL_ATTR_ROW_OPERATION_PTR',\n            '%SQL_ATTR_ROW_STATUS_PTR','%SQL_ATTR_SIMULATE_CURSOR','%SQL_ATTR_TRACE','%SQL_ATTR_TRACEFILE','%SQL_ATTR_TRANSLATE_LIB','%SQL_ATTR_TRANSLATE_OPTION','%SQL_ATTR_TXN_ISOLATION','%SQL_ATTR_USE_BOOKMARKS',\n            '%SQL_ATTR_WRITE','%SQL_AT_ADD_COLUMN','%SQL_AT_ADD_COLUMN_COLLATION','%SQL_AT_ADD_COLUMN_DEFAULT','%SQL_AT_ADD_COLUMN_SINGLE','%SQL_AT_ADD_CONSTRAINT','%SQL_AT_ADD_TABLE_CONSTRAINT','%SQL_AT_CONSTRAINT_DEFERRABLE',\n            '%SQL_AT_CONSTRAINT_INITIALLY_DEFERRED','%SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_AT_CONSTRAINT_NAME_DEFINITION','%SQL_AT_CONSTRAINT_NON_DEFERRABLE','%SQL_AT_DROP_COLUMN','%SQL_AT_DROP_COLUMN_CASCADE','%SQL_AT_DROP_COLUMN_DEFAULT','%SQL_AT_DROP_COLUMN_RESTRICT',\n            '%SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE','%SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT','%SQL_AT_SET_COLUMN_DEFAULT','%SQL_AUTOCOMMIT','%SQL_AUTOCOMMIT_DEFAULT','%SQL_AUTOCOMMIT_OFF','%SQL_AUTOCOMMIT_ON','%SQL_BATCH_ROW_COUNT',\n            '%SQL_BATCH_SUPPORT','%SQL_BEST_ROWID','%SQL_BIGINT','%SQL_BINARY','%SQL_BIND_BY_COLUMN','%SQL_BIND_TYPE','%SQL_BIND_TYPE_DEFAULT','%SQL_BIT',\n            '%SQL_BOOKMARK_PERSISTENCE','%SQL_BP_CLOSE','%SQL_BP_DELETE','%SQL_BP_DROP','%SQL_BP_OTHER_HSTMT','%SQL_BP_SCROLL','%SQL_BP_TRANSACTION','%SQL_BP_UPDATE',\n            '%SQL_BRC_EXPLICIT','%SQL_BRC_PROCEDURES','%SQL_BRC_ROLLED_UP','%SQL_BS_ROW_COUNT_EXPLICIT','%SQL_BS_ROW_COUNT_PROC','%SQL_BS_SELECT_EXPLICIT','%SQL_BS_SELECT_PROC','%SQL_CA1_ABSOLUTE',\n            '%SQL_CA1_BOOKMARK','%SQL_CA1_BULK_ADD','%SQL_CA1_BULK_DELETE_BY_BOOKMARK','%SQL_CA1_BULK_FETCH_BY_BOOKMARK','%SQL_CA1_BULK_UPDATE_BY_BOOKMARK','%SQL_CA1_LOCK_EXCLUSIVE','%SQL_CA1_LOCK_NO_CHANGE','%SQL_CA1_LOCK_UNLOCK',\n            '%SQL_CA1_NEXT','%SQL_CA1_POSITIONED_DELETE','%SQL_CA1_POSITIONED_UPDATE','%SQL_CA1_POS_DELETE','%SQL_CA1_POS_POSITION','%SQL_CA1_POS_REFRESH','%SQL_CA1_POS_UPDATE','%SQL_CA1_RELATIVE',\n            '%SQL_CA1_SELECT_FOR_UPDATE','%SQL_CA2_CRC_APPROXIMATE','%SQL_CA2_CRC_EXACT','%SQL_CA2_LOCK_CONCURRENCY','%SQL_CA2_MAX_ROWS_AFFECTS_ALL','%SQL_CA2_MAX_ROWS_CATALOG','%SQL_CA2_MAX_ROWS_DELETE','%SQL_CA2_MAX_ROWS_INSERT',\n            '%SQL_CA2_MAX_ROWS_SELECT','%SQL_CA2_MAX_ROWS_UPDATE','%SQL_CA2_OPT_ROWVER_CONCURRENCY','%SQL_CA2_OPT_VALUES_CONCURRENCY','%SQL_CA2_READ_ONLY_CONCURRENCY','%SQL_CA2_SENSITIVITY_ADDITIONS','%SQL_CA2_SENSITIVITY_DELETIONS','%SQL_CA2_SENSITIVITY_UPDATES',\n            '%SQL_CA2_SIMULATE_NON_UNIQUE','%SQL_CA2_SIMULATE_TRY_UNIQUE','%SQL_CA2_SIMULATE_UNIQUE','%SQL_CASCADE','%SQL_CATALOG_LOCATION','%SQL_CATALOG_NAME','%SQL_CATALOG_NAME_SEPARATOR','%SQL_CATALOG_TERM',\n            '%SQL_CATALOG_USAGE','%SQL_CA_CONSTRAINT_DEFERRABLE','%SQL_CA_CONSTRAINT_INITIALLY_DEFERRED','%SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_CA_CONSTRAINT_NON_DEFERRABLE','%SQL_CA_CREATE_ASSERTION','%SQL_CB_CLOSE','%SQL_CB_DELETE',\n            '%SQL_CB_NON_NULL','%SQL_CB_NULL','%SQL_CB_PRESERVE','%SQL_CCOL_CREATE_COLLATION','%SQL_CCS_COLLATE_CLAUSE','%SQL_CCS_CREATE_CHARACTER_SET','%SQL_CCS_LIMITED_COLLATION','%SQL_CC_CLOSE',\n            '%SQL_CC_DELETE','%SQL_CC_PRESERVE','%SQL_CDO_COLLATION','%SQL_CDO_CONSTRAINT','%SQL_CDO_CONSTRAINT_DEFERRABLE','%SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED','%SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_CDO_CONSTRAINT_NAME_DEFINITION',\n            '%SQL_CDO_CONSTRAINT_NON_DEFERRABLE','%SQL_CDO_CREATE_DOMAIN','%SQL_CDO_DEFAULT','%SQL_CD_FALSE','%SQL_CD_TRUE','%SQL_CHAR','%SQL_CLOSE','%SQL_CL_END',\n            '%SQL_CL_START','%SQL_CN_ANY','%SQL_CN_DIFFERENT','%SQL_CN_NONE','%SQL_CODE_DATE','%SQL_CODE_DAY','%SQL_CODE_DAY_TO_HOUR','%SQL_CODE_DAY_TO_MINUTE',\n            '%SQL_CODE_DAY_TO_SECOND','%SQL_CODE_HOUR','%SQL_CODE_HOUR_TO_MINUTE','%SQL_CODE_HOUR_TO_SECOND','%SQL_CODE_MINUTE','%SQL_CODE_MINUTE_TO_SECOND','%SQL_CODE_MONTH','%SQL_CODE_SECOND',\n            '%SQL_CODE_TIME','%SQL_CODE_TIMESTAMP','%SQL_CODE_YEAR','%SQL_CODE_YEAR_TO_MONTH','%SQL_COLATT_OPT_MAX','%SQL_COLATT_OPT_MIN','%SQL_COLLATION_SEQ','%SQL_COLUMN_ALIAS',\n            '%SQL_COLUMN_AUTO_INCREMENT','%SQL_COLUMN_CASE_SENSITIVE','%SQL_COLUMN_COUNT','%SQL_COLUMN_DISPLAY_SIZE','%SQL_COLUMN_IGNORE','%SQL_COLUMN_LABEL','%SQL_COLUMN_LENGTH','%SQL_COLUMN_MONEY',\n            '%SQL_COLUMN_NAME','%SQL_COLUMN_NULLABLE','%SQL_COLUMN_NUMBER_UNKNOWN','%SQL_COLUMN_OWNER_NAME','%SQL_COLUMN_PRECISION','%SQL_COLUMN_QUALIFIER_NAME','%SQL_COLUMN_SCALE','%SQL_COLUMN_SEARCHABLE',\n            '%SQL_COLUMN_TABLE_NAME','%SQL_COLUMN_TYPE','%SQL_COLUMN_TYPE_NAME','%SQL_COLUMN_UNSIGNED','%SQL_COLUMN_UPDATABLE','%SQL_COL_PRED_BASIC','%SQL_COL_PRED_CHAR','%SQL_COMMIT',\n            '%SQL_CONCAT_NULL_BEHAVIOR','%SQL_CONCURRENCY','%SQL_CONCUR_DEFAULT','%SQL_CONCUR_LOCK','%SQL_CONCUR_READ_ONLY','%SQL_CONCUR_ROWVER','%SQL_CONCUR_TIMESTAMP','%SQL_CONCUR_VALUES',\n            '%SQL_CONVERT_BIGINT','%SQL_CONVERT_BINARY','%SQL_CONVERT_BIT','%SQL_CONVERT_CHAR','%SQL_CONVERT_DATE','%SQL_CONVERT_DECIMAL','%SQL_CONVERT_DOUBLE','%SQL_CONVERT_FLOAT',\n            '%SQL_CONVERT_FUNCTIONS','%SQL_CONVERT_GUID','%SQL_CONVERT_INTEGER','%SQL_CONVERT_INTERVAL_DAY_TIME','%SQL_CONVERT_INTERVAL_YEAR_MONTH','%SQL_CONVERT_LONGVARBINARY','%SQL_CONVERT_LONGVARCHAR','%SQL_CONVERT_NUMERIC',\n            '%SQL_CONVERT_REAL','%SQL_CONVERT_SMALLINT','%SQL_CONVERT_TIME','%SQL_CONVERT_TIMESTAMP','%SQL_CONVERT_TINYINT','%SQL_CONVERT_VARBINARY','%SQL_CONVERT_VARCHAR','%SQL_CONVERT_WCHAR',\n            '%SQL_CONVERT_WLONGVARCHAR','%SQL_CONVERT_WVARCHAR','%SQL_CORRELATION_NAME','%SQL_CP_DEFAULT','%SQL_CP_MATCH_DEFAULT','%SQL_CP_OFF','%SQL_CP_ONE_PER_DRIVER','%SQL_CP_ONE_PER_HENV',\n            '%SQL_CP_RELAXED_MATCH','%SQL_CP_STRICT_MATCH','%SQL_CREATE_ASSERTION','%SQL_CREATE_CHARACTER_SET','%SQL_CREATE_COLLATION','%SQL_CREATE_DOMAIN','%SQL_CREATE_SCHEMA','%SQL_CREATE_TABLE',\n            '%SQL_CREATE_TRANSLATION','%SQL_CREATE_VIEW','%SQL_CR_CLOSE','%SQL_CR_DELETE','%SQL_CR_PRESERVE','%SQL_CS_AUTHORIZATION','%SQL_CS_CREATE_SCHEMA','%SQL_CS_DEFAULT_CHARACTER_SET',\n            '%SQL_CTR_CREATE_TRANSLATION','%SQL_CT_COLUMN_COLLATION','%SQL_CT_COLUMN_CONSTRAINT','%SQL_CT_COLUMN_DEFAULT','%SQL_CT_COMMIT_DELETE','%SQL_CT_COMMIT_PRESERVE','%SQL_CT_CONSTRAINT_DEFERRABLE','%SQL_CT_CONSTRAINT_INITIALLY_DEFERRED',\n            '%SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE','%SQL_CT_CONSTRAINT_NAME_DEFINITION','%SQL_CT_CONSTRAINT_NON_DEFERRABLE','%SQL_CT_CREATE_TABLE','%SQL_CT_GLOBAL_TEMPORARY','%SQL_CT_LOCAL_TEMPORARY','%SQL_CT_TABLE_CONSTRAINT','%SQL_CURRENT_QUALIFIER',\n            '%SQL_CURSOR_COMMIT_BEHAVIOR','%SQL_CURSOR_DYNAMIC','%SQL_CURSOR_FORWARD_ONLY','%SQL_CURSOR_KEYSET_DRIVEN','%SQL_CURSOR_ROLLBACK_BEHAVIOR','%SQL_CURSOR_SENSITIVITY','%SQL_CURSOR_STATIC','%SQL_CURSOR_TYPE',\n            '%SQL_CURSOR_TYPE_DEFAULT','%SQL_CUR_DEFAULT','%SQL_CUR_USE_DRIVER','%SQL_CUR_USE_IF_NEEDED','%SQL_CUR_USE_ODBC','%SQL_CU_DML_STATEMENTS','%SQL_CU_INDEX_DEFINITION','%SQL_CU_PRIVILEGE_DEFINITION',\n            '%SQL_CU_PROCEDURE_INVOCATION','%SQL_CU_TABLE_DEFINITION','%SQL_CVT_BIGINT','%SQL_CVT_BINARY','%SQL_CVT_BIT','%SQL_CVT_CHAR','%SQL_CVT_DATE','%SQL_CVT_DECIMAL',\n            '%SQL_CVT_DOUBLE','%SQL_CVT_FLOAT','%SQL_CVT_GUID','%SQL_CVT_INTEGER','%SQL_CVT_INTERVAL_DAY_TIME','%SQL_CVT_INTERVAL_YEAR_MONTH','%SQL_CVT_LONGVARBINARY','%SQL_CVT_LONGVARCHAR',\n            '%SQL_CVT_NUMERIC','%SQL_CVT_REAL','%SQL_CVT_SMALLINT','%SQL_CVT_TIME','%SQL_CVT_TIMESTAMP','%SQL_CVT_TINYINT','%SQL_CVT_VARBINARY','%SQL_CVT_VARCHAR',\n            '%SQL_CVT_WCHAR','%SQL_CVT_WLONGVARCHAR','%SQL_CVT_WVARCHAR','%SQL_CV_CASCADED','%SQL_CV_CHECK_OPTION','%SQL_CV_CREATE_VIEW','%SQL_CV_LOCAL','%SQL_C_BINARY',\n            '%SQL_C_BIT','%SQL_C_BOOKMARK','%SQL_C_CHAR','%SQL_C_DATE','%SQL_C_DEFAULT','%SQL_C_DOUBLE','%SQL_C_FLOAT','%SQL_C_GUID',\n            '%SQL_C_INTERVAL_DAY','%SQL_C_INTERVAL_DAY_TO_HOUR','%SQL_C_INTERVAL_DAY_TO_MINUTE','%SQL_C_INTERVAL_DAY_TO_SECOND','%SQL_C_INTERVAL_HOUR','%SQL_C_INTERVAL_HOUR_TO_MINUTE','%SQL_C_INTERVAL_HOUR_TO_SECOND','%SQL_C_INTERVAL_MINUTE',\n            '%SQL_C_INTERVAL_MINUTE_TO_SECOND','%SQL_C_INTERVAL_MONTH','%SQL_C_INTERVAL_SECOND','%SQL_C_INTERVAL_YEAR','%SQL_C_INTERVAL_YEAR_TO_MONTH','%SQL_C_LONG','%SQL_C_NUMERIC','%SQL_C_SBIGINT',\n            '%SQL_C_SHORT','%SQL_C_SLONG','%SQL_C_SSHORT','%SQL_C_STINYINT','%SQL_C_TIME','%SQL_C_TIMESTAMP','%SQL_C_TINYINT','%SQL_C_TYPE_DATE',\n            '%SQL_C_TYPE_TIME','%SQL_C_TYPE_TIMESTAMP','%SQL_C_UBIGINT','%SQL_C_ULONG','%SQL_C_USHORT','%SQL_C_UTINYINT','%SQL_C_VARBOOKMARK','%SQL_DATABASE_NAME',\n            '%SQL_DATA_AT_EXEC','%SQL_DATA_SOURCE_NAME','%SQL_DATA_SOURCE_READ_ONLY','%SQL_DATE','%SQL_DATETIME','%SQL_DATETIME_LITERALS','%SQL_DATE_LEN','%SQL_DAY',\n            '%SQL_DAY_TO_HOUR','%SQL_DAY_TO_MINUTE','%SQL_DAY_TO_SECOND','%SQL_DA_DROP_ASSERTION','%SQL_DBMS_NAME','%SQL_DBMS_VER','%SQL_DB_DEFAULT','%SQL_DB_DISCONNECT',\n            '%SQL_DB_RETURN_TO_POOL','%SQL_DCS_DROP_CHARACTER_SET','%SQL_DC_DROP_COLLATION','%SQL_DDL_INDEX','%SQL_DD_CASCADE','%SQL_DD_DROP_DOMAIN','%SQL_DD_RESTRICT','%SQL_DECIMAL',\n            '%SQL_DEFAULT','%SQL_DEFAULT_PARAM','%SQL_DEFAULT_TXN_ISOLATION','%SQL_DELETE','%SQL_DELETE_BY_BOOKMARK','%SQL_DESCRIBE_PARAMETER','%SQL_DESC_ALLOC_AUTO','%SQL_DESC_ALLOC_TYPE',\n            '%SQL_DESC_ALLOC_USER','%SQL_DESC_ARRAY_SIZE','%SQL_DESC_ARRAY_STATUS_PTR','%SQL_DESC_AUTO_UNIQUE_VALUE','%SQL_DESC_BASE_COLUMN_NAME','%SQL_DESC_BASE_TABLE_NAME','%SQL_DESC_BIND_OFFSET_PTR','%SQL_DESC_BIND_TYPE',\n            '%SQL_DESC_CASE_SENSITIVE','%SQL_DESC_CATALOG_NAME','%SQL_DESC_CONCISE_TYPE','%SQL_DESC_COUNT','%SQL_DESC_DATA_PTR','%SQL_DESC_DATETIME_INTERVAL_CODE','%SQL_DESC_DATETIME_INTERVAL_PRECISION','%SQL_DESC_DISPLAY_SIZE',\n            '%SQL_DESC_FIXED_PREC_SCALE','%SQL_DESC_INDICATOR_PTR','%SQL_DESC_LABEL','%SQL_DESC_LENGTH','%SQL_DESC_LITERAL_PREFIX','%SQL_DESC_LITERAL_SUFFIX','%SQL_DESC_LOCAL_TYPE_NAME','%SQL_DESC_MAXIMUM_SCALE',\n            '%SQL_DESC_MINIMUM_SCALE','%SQL_DESC_NAME','%SQL_DESC_NULLABLE','%SQL_DESC_NUM_PREC_RADIX','%SQL_DESC_OCTET_LENGTH','%SQL_DESC_OCTET_LENGTH_PTR','%SQL_DESC_PARAMETER_TYPE','%SQL_DESC_PRECISION',\n            '%SQL_DESC_ROWS_PROCESSED_PTR','%SQL_DESC_SCALE','%SQL_DESC_SCHEMA_NAME','%SQL_DESC_SEARCHABLE','%SQL_DESC_TABLE_NAME','%SQL_DESC_TYPE','%SQL_DESC_TYPE_NAME','%SQL_DESC_UNNAMED',\n            '%SQL_DESC_UNSIGNED','%SQL_DESC_UPDATABLE','%SQL_DIAG_ALTER_TABLE','%SQL_DIAG_CALL','%SQL_DIAG_CLASS_ORIGIN','%SQL_DIAG_COLUMN_NUMBER','%SQL_DIAG_CONNECTION_NAME','%SQL_DIAG_CREATE_INDEX',\n            '%SQL_DIAG_CREATE_TABLE','%SQL_DIAG_CREATE_VIEW','%SQL_DIAG_CURSOR_ROW_COUNT','%SQL_DIAG_DELETE_WHERE','%SQL_DIAG_DROP_INDEX','%SQL_DIAG_DROP_TABLE','%SQL_DIAG_DROP_VIEW','%SQL_DIAG_DYNAMIC_DELETE_CURSOR',\n            '%SQL_DIAG_DYNAMIC_FUNCTION','%SQL_DIAG_DYNAMIC_FUNCTION_CODE','%SQL_DIAG_DYNAMIC_UPDATE_CURSOR','%SQL_DIAG_GRANT','%SQL_DIAG_INSERT','%SQL_DIAG_MESSAGE_TEXT','%SQL_DIAG_NATIVE','%SQL_DIAG_NUMBER',\n            '%SQL_DIAG_RETURNCODE','%SQL_DIAG_REVOKE','%SQL_DIAG_ROW_COUNT','%SQL_DIAG_ROW_NUMBER','%SQL_DIAG_SELECT_CURSOR','%SQL_DIAG_SERVER_NAME','%SQL_DIAG_SQLSTATE','%SQL_DIAG_SUBCLASS_ORIGIN',\n            '%SQL_DIAG_UNKNOWN_STATEMENT','%SQL_DIAG_UPDATE_WHERE','%SQL_DI_CREATE_INDEX','%SQL_DI_DROP_INDEX','%SQL_DL_SQL92_DATE','%SQL_DL_SQL92_INTERVAL_DAY','%SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR','%SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE',\n            '%SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND','%SQL_DL_SQL92_INTERVAL_HOUR','%SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE','%SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND','%SQL_DL_SQL92_INTERVAL_MINUTE','%SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND','%SQL_DL_SQL92_INTERVAL_MONTH','%SQL_DL_SQL92_INTERVAL_SECOND',\n            '%SQL_DL_SQL92_INTERVAL_YEAR','%SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH','%SQL_DL_SQL92_TIME','%SQL_DL_SQL92_TIMESTAMP','%SQL_DM_VER','%SQL_DOUBLE','%SQL_DRIVER_COMPLETE','%SQL_DRIVER_COMPLETE_REQUIRED',\n            '%SQL_DRIVER_HDBC','%SQL_DRIVER_HDESC','%SQL_DRIVER_HENV','%SQL_DRIVER_HLIB','%SQL_DRIVER_HSTMT','%SQL_DRIVER_NAME','%SQL_DRIVER_NOPROMPT','%SQL_DRIVER_ODBC_VER',\n            '%SQL_DRIVER_PROMPT','%SQL_DRIVER_VER','%SQL_DROP','%SQL_DROP_ASSERTION','%SQL_DROP_CHARACTER_SET','%SQL_DROP_COLLATION','%SQL_DROP_DOMAIN','%SQL_DROP_SCHEMA',\n            '%SQL_DROP_TABLE','%SQL_DROP_TRANSLATION','%SQL_DROP_VIEW','%SQL_DS_CASCADE','%SQL_DS_DROP_SCHEMA','%SQL_DS_RESTRICT','%SQL_DTC_DONE','%SQL_DTC_ENLIST_EXPENSIVE',\n            '%SQL_DTC_TRANSITION_COST','%SQL_DTC_UNENLIST_EXPENSIVE','%SQL_DTR_DROP_TRANSLATION','%SQL_DT_CASCADE','%SQL_DT_DROP_TABLE','%SQL_DT_RESTRICT','%SQL_DV_CASCADE','%SQL_DV_DROP_VIEW',\n            '%SQL_DV_RESTRICT','%SQL_DYNAMIC_CURSOR_ATTRIBUTES1','%SQL_DYNAMIC_CURSOR_ATTRIBUTES2','%SQL_ENSURE','%SQL_ENTIRE_ROWSET','%SQL_ERROR','%SQL_EXPRESSIONS_IN_ORDERBY','%SQL_FALSE',\n            '%SQL_FD_FETCH_ABSOLUTE','%SQL_FD_FETCH_BOOKMARK','%SQL_FD_FETCH_FIRST','%SQL_FD_FETCH_LAST','%SQL_FD_FETCH_NEXT','%SQL_FD_FETCH_PREV','%SQL_FD_FETCH_PRIOR','%SQL_FD_FETCH_RELATIVE',\n            '%SQL_FETCH_ABSOLUTE','%SQL_FETCH_BOOKMARK','%SQL_FETCH_BY_BOOKMARK','%SQL_FETCH_DIRECTION','%SQL_FETCH_FIRST','%SQL_FETCH_FIRST_SYSTEM','%SQL_FETCH_FIRST_USER','%SQL_FETCH_LAST',\n            '%SQL_FETCH_NEXT','%SQL_FETCH_PREV','%SQL_FETCH_PRIOR','%SQL_FETCH_RELATIVE','%SQL_FILE_CATALOG','%SQL_FILE_NOT_SUPPORTED','%SQL_FILE_QUALIFIER','%SQL_FILE_TABLE',\n            '%SQL_FILE_USAGE','%SQL_FLOAT','%SQL_FN_CVT_CAST','%SQL_FN_CVT_CONVERT','%SQL_FN_NUM_ABS','%SQL_FN_NUM_ACOS','%SQL_FN_NUM_ASIN','%SQL_FN_NUM_ATAN',\n            '%SQL_FN_NUM_ATAN2','%SQL_FN_NUM_CEILING','%SQL_FN_NUM_COS','%SQL_FN_NUM_COT','%SQL_FN_NUM_DEGREES','%SQL_FN_NUM_EXP','%SQL_FN_NUM_FLOOR','%SQL_FN_NUM_LOG',\n            '%SQL_FN_NUM_LOG10','%SQL_FN_NUM_MOD','%SQL_FN_NUM_PI','%SQL_FN_NUM_POWER','%SQL_FN_NUM_RADIANS','%SQL_FN_NUM_RAND','%SQL_FN_NUM_ROUND','%SQL_FN_NUM_SIGN',\n            '%SQL_FN_NUM_SIN','%SQL_FN_NUM_SQRT','%SQL_FN_NUM_TAN','%SQL_FN_NUM_TRUNCATE','%SQL_FN_STR_ASCII','%SQL_FN_STR_BIT_LENGTH','%SQL_FN_STR_CHAR','%SQL_FN_STR_CHARACTER_LENGTH',\n            '%SQL_FN_STR_CHAR_LENGTH','%SQL_FN_STR_CONCAT','%SQL_FN_STR_DIFFERENCE','%SQL_FN_STR_INSERT','%SQL_FN_STR_LCASE','%SQL_FN_STR_LEFT','%SQL_FN_STR_LENGTH','%SQL_FN_STR_LOCATE',\n            '%SQL_FN_STR_LOCATE_2','%SQL_FN_STR_LTRIM','%SQL_FN_STR_OCTET_LENGTH','%SQL_FN_STR_POSITION','%SQL_FN_STR_REPEAT','%SQL_FN_STR_REPLACE','%SQL_FN_STR_RIGHT','%SQL_FN_STR_RTRIM',\n            '%SQL_FN_STR_SOUNDEX','%SQL_FN_STR_SPACE','%SQL_FN_STR_SUBSTRING','%SQL_FN_STR_UCASE','%SQL_FN_SYS_DBNAME','%SQL_FN_SYS_IFNULL','%SQL_FN_SYS_USERNAME','%SQL_FN_TD_CURDATE',\n            '%SQL_FN_TD_CURRENT_DATE','%SQL_FN_TD_CURRENT_TIME','%SQL_FN_TD_CURRENT_TIMESTAMP','%SQL_FN_TD_CURTIME','%SQL_FN_TD_DAYNAME','%SQL_FN_TD_DAYOFMONTH','%SQL_FN_TD_DAYOFWEEK','%SQL_FN_TD_DAYOFYEAR',\n            '%SQL_FN_TD_EXTRACT','%SQL_FN_TD_HOUR','%SQL_FN_TD_MINUTE','%SQL_FN_TD_MONTH','%SQL_FN_TD_MONTHNAME','%SQL_FN_TD_NOW','%SQL_FN_TD_QUARTER','%SQL_FN_TD_SECOND',\n            '%SQL_FN_TD_TIMESTAMPADD','%SQL_FN_TD_TIMESTAMPDIFF','%SQL_FN_TD_WEEK','%SQL_FN_TD_YEAR','%SQL_FN_TSI_DAY','%SQL_FN_TSI_FRAC_SECOND','%SQL_FN_TSI_HOUR','%SQL_FN_TSI_MINUTE',\n            '%SQL_FN_TSI_MONTH','%SQL_FN_TSI_QUARTER','%SQL_FN_TSI_SECOND','%SQL_FN_TSI_WEEK','%SQL_FN_TSI_YEAR','%SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1','%SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2','%SQL_GB_COLLATE',\n            '%SQL_GB_GROUP_BY_CONTAINS_SELECT','%SQL_GB_GROUP_BY_EQUALS_SELECT','%SQL_GB_NOT_SUPPORTED','%SQL_GB_NO_RELATION','%SQL_GD_ANY_COLUMN','%SQL_GD_ANY_ORDER','%SQL_GD_BLOCK','%SQL_GD_BOUND',\n            '%SQL_GETDATA_EXTENSIONS','%SQL_GET_BOOKMARK','%SQL_GROUP_BY','%SQL_GUID','%SQL_HANDLE_DBC','%SQL_HANDLE_DESC','%SQL_HANDLE_ENV','%SQL_HANDLE_SENV',\n            '%SQL_HANDLE_STMT','%SQL_HOUR','%SQL_HOUR_TO_MINUTE','%SQL_HOUR_TO_SECOND','%SQL_IC_LOWER','%SQL_IC_MIXED','%SQL_IC_SENSITIVE','%SQL_IC_UPPER',\n            '%SQL_IDENTIFIER_CASE','%SQL_IDENTIFIER_QUOTE_CHAR','%SQL_IGNORE','%SQL_IK_ALL','%SQL_IK_ASC','%SQL_IK_DESC','%SQL_IK_NONE','%SQL_INDEX_ALL',\n            '%SQL_INDEX_CLUSTERED','%SQL_INDEX_HASHED','%SQL_INDEX_KEYWORDS','%SQL_INDEX_OTHER','%SQL_INDEX_UNIQUE','%SQL_INFO_FIRST','%SQL_INFO_SCHEMA_VIEWS','%SQL_INITIALLY_DEFERRED',\n            '%SQL_INITIALLY_IMMEDIATE','%SQL_INSENSITIVE','%SQL_INSERT_STATEMENT','%SQL_INTEGER','%SQL_INTEGRITY','%SQL_INTERVAL','%SQL_INTERVAL_DAY','%SQL_INTERVAL_DAY_TO_HOUR',\n            '%SQL_INTERVAL_DAY_TO_MINUTE','%SQL_INTERVAL_DAY_TO_SECOND','%SQL_INTERVAL_HOUR','%SQL_INTERVAL_HOUR_TO_MINUTE','%SQL_INTERVAL_HOUR_TO_SECOND','%SQL_INTERVAL_MINUTE','%SQL_INTERVAL_MINUTE_TO_SECOND','%SQL_INTERVAL_MONTH',\n            '%SQL_INTERVAL_SECOND','%SQL_INTERVAL_YEAR','%SQL_INTERVAL_YEAR_TO_MONTH','%SQL_INVALID_HANDLE','%SQL_ISV_ASSERTIONS','%SQL_ISV_CHARACTER_SETS','%SQL_ISV_CHECK_CONSTRAINTS','%SQL_ISV_COLLATIONS',\n            '%SQL_ISV_COLUMNS','%SQL_ISV_COLUMN_DOMAIN_USAGE','%SQL_ISV_COLUMN_PRIVILEGES','%SQL_ISV_CONSTRAINT_COLUMN_USAGE','%SQL_ISV_CONSTRAINT_TABLE_USAGE','%SQL_ISV_DOMAINS','%SQL_ISV_DOMAIN_CONSTRAINTS','%SQL_ISV_KEY_COLUMN_USAGE',\n            '%SQL_ISV_REFERENTIAL_CONSTRAINTS','%SQL_ISV_SCHEMATA','%SQL_ISV_SQL_LANGUAGES','%SQL_ISV_TABLES','%SQL_ISV_TABLE_CONSTRAINTS','%SQL_ISV_TABLE_PRIVILEGES','%SQL_ISV_TRANSLATIONS','%SQL_ISV_USAGE_PRIVILEGES',\n            '%SQL_ISV_VIEWS','%SQL_ISV_VIEW_COLUMN_USAGE','%SQL_ISV_VIEW_TABLE_USAGE','%SQL_IS_DAY','%SQL_IS_DAY_TO_HOUR','%SQL_IS_DAY_TO_MINUTE','%SQL_IS_DAY_TO_SECOND','%SQL_IS_HOUR',\n            '%SQL_IS_HOUR_TO_MINUTE','%SQL_IS_HOUR_TO_SECOND','%SQL_IS_INSERT_LITERALS','%SQL_IS_INSERT_SEARCHED','%SQL_IS_INTEGER','%SQL_IS_MINUTE','%SQL_IS_MINUTE_TO_SECOND','%SQL_IS_MONTH',\n            '%SQL_IS_POINTER','%SQL_IS_SECOND','%SQL_IS_SELECT_INTO','%SQL_IS_SMALLINT','%SQL_IS_UINTEGER','%SQL_IS_USMALLINT','%SQL_IS_YEAR','%SQL_IS_YEAR_TO_MONTH',\n            '%SQL_KEYSET_CURSOR_ATTRIBUTES1','%SQL_KEYSET_CURSOR_ATTRIBUTES2','%SQL_KEYSET_SIZE','%SQL_KEYSET_SIZE_DEFAULT','%SQL_KEYWORDS','%SQL_LCK_EXCLUSIVE','%SQL_LCK_NO_CHANGE','%SQL_LCK_UNLOCK',\n            '%SQL_LEN_BINARY_ATTR_OFFSET','%SQL_LEN_DATA_AT_EXEC_OFFSET','%SQL_LIKE_ESCAPE_CLAUSE','%SQL_LIKE_ONLY','%SQL_LOCK_EXCLUSIVE','%SQL_LOCK_NO_CHANGE','%SQL_LOCK_TYPES','%SQL_LOCK_UNLOCK',\n            '%SQL_LOGIN_TIMEOUT','%SQL_LOGIN_TIMEOUT_DEFAULT','%SQL_LONGVARBINARY','%SQL_LONGVARCHAR','%SQL_MAXIMUM_CATALOG_NAME_LENGTH','%SQL_MAXIMUM_COLUMNS_IN_GROUP_BY','%SQL_MAXIMUM_COLUMNS_IN_INDEX','%SQL_MAXIMUM_COLUMNS_IN_ORDER_BY',\n            '%SQL_MAXIMUM_COLUMNS_IN_SELECT','%SQL_MAXIMUM_COLUMN_NAME_LENGTH','%SQL_MAXIMUM_CONCURRENT_ACTIVITIES','%SQL_MAXIMUM_CURSOR_NAME_LENGTH','%SQL_MAXIMUM_DRIVER_CONNECTIONS','%SQL_MAXIMUM_IDENTIFIER_LENGTH','%SQL_MAXIMUM_INDEX_SIZE','%SQL_MAXIMUM_ROW_SIZE',\n            '%SQL_MAXIMUM_SCHEMA_NAME_LENGTH','%SQL_MAXIMUM_STATEMENT_LENGTH','%SQL_MAXIMUM_TABLES_IN_SELECT','%SQL_MAXIMUM_USER_NAME_LENGTH','%SQL_MAX_ASYNC_CONCURRENT_STATEMENTS','%SQL_MAX_BINARY_LITERAL_LEN','%SQL_MAX_CATALOG_NAME_LEN','%SQL_MAX_CHAR_LITERAL_LEN',\n            '%SQL_MAX_COLUMNS_IN_GROUP_BY','%SQL_MAX_COLUMNS_IN_INDEX','%SQL_MAX_COLUMNS_IN_ORDER_BY','%SQL_MAX_COLUMNS_IN_SELECT','%SQL_MAX_COLUMNS_IN_TABLE','%SQL_MAX_COLUMN_NAME_LEN','%SQL_MAX_CONCURRENT_ACTIVITIES','%SQL_MAX_CURSOR_NAME_LEN',\n            '%SQL_MAX_DRIVER_CONNECTIONS','%SQL_MAX_DSN_LENGTH','%SQL_MAX_IDENTIFIER_LEN','%SQL_MAX_INDEX_SIZE','%SQL_MAX_LENGTH','%SQL_MAX_LENGTH_DEFAULT','%SQL_MAX_MESSAGE_LENGTH','%SQL_MAX_NUMERIC_LEN',\n            '%SQL_MAX_OPTION_STRING_LENGTH','%SQL_MAX_OWNER_NAME_LEN','%SQL_MAX_PROCEDURE_NAME_LEN','%SQL_MAX_QUALIFIER_NAME_LEN','%SQL_MAX_ROWS','%SQL_MAX_ROWS_DEFAULT','%SQL_MAX_ROW_SIZE','%SQL_MAX_ROW_SIZE_INCLUDES_LONG',\n            '%SQL_MAX_SCHEMA_NAME_LEN','%SQL_MAX_STATEMENT_LEN','%SQL_MAX_TABLES_IN_SELECT','%SQL_MAX_TABLE_NAME_LEN','%SQL_MAX_USER_NAME_LEN','%SQL_MINUTE','%SQL_MINUTE_TO_SECOND','%SQL_MODE_DEFAULT',\n            '%SQL_MODE_READ_ONLY','%SQL_MODE_READ_WRITE','%SQL_MONTH','%SQL_MULTIPLE_ACTIVE_TXN','%SQL_MULT_RESULT_SETS','%SQL_NAMED','%SQL_NC_END','%SQL_NC_HIGH',\n            '%SQL_NC_LOW','%SQL_NC_START','%SQL_NEED_DATA','%SQL_NEED_LONG_DATA_LEN','%SQL_NNC_NON_NULL','%SQL_NNC_NULL','%SQL_NONSCROLLABLE','%SQL_NON_NULLABLE_COLUMNS',\n            '%SQL_NOSCAN','%SQL_NOSCAN_DEFAULT','%SQL_NOSCAN_OFF','%SQL_NOSCAN_ON','%SQL_NOT_DEFERRABLE','%SQL_NO_ACTION','%SQL_NO_COLUMN_NUMBER','%SQL_NO_DATA',\n            '%SQL_NO_DATA_FOUND','%SQL_NO_NULLS','%SQL_NO_ROW_NUMBER','%SQL_NO_TOTAL','%SQL_NTS','%SQL_NTSL','%SQL_NULLABLE','%SQL_NULLABLE_UNKNOWN',\n            '%SQL_NULL_COLLATION','%SQL_NULL_DATA','%SQL_NULL_HANDLE','%SQL_NULL_HDBC','%SQL_NULL_HDESC','%SQL_NULL_HENV','%SQL_NULL_HSTMT','%SQL_NUMERIC',\n            '%SQL_NUMERIC_FUNCTIONS','%SQL_OAC_LEVEL1','%SQL_OAC_LEVEL2','%SQL_OAC_NONE','%SQL_ODBC_API_CONFORMANCE','%SQL_ODBC_CURSORS','%SQL_ODBC_INTERFACE_CONFORMANCE','%SQL_ODBC_SAG_CLI_CONFORMANCE',\n            '%SQL_ODBC_SQL_CONFORMANCE','%SQL_ODBC_SQL_OPT_IEF','%SQL_ODBC_VER','%SQL_OIC_CORE','%SQL_OIC_LEVEL1','%SQL_OIC_LEVEL2','%SQL_OJ_ALL_COMPARISON_OPS','%SQL_OJ_CAPABILITIES',\n            '%SQL_OJ_FULL','%SQL_OJ_INNER','%SQL_OJ_LEFT','%SQL_OJ_NESTED','%SQL_OJ_NOT_ORDERED','%SQL_OJ_RIGHT','%SQL_OPT_TRACE','%SQL_OPT_TRACEFILE',\n            '%SQL_OPT_TRACE_DEFAULT','%SQL_OPT_TRACE_OFF','%SQL_OPT_TRACE_ON','%SQL_ORDER_BY_COLUMNS_IN_SELECT','%SQL_OSCC_COMPLIANT','%SQL_OSCC_NOT_COMPLIANT','%SQL_OSC_CORE','%SQL_OSC_EXTENDED',\n            '%SQL_OSC_MINIMUM','%SQL_OUTER_JOINS','%SQL_OUTER_JOIN_CAPABILITIES','%SQL_OU_DML_STATEMENTS','%SQL_OU_INDEX_DEFINITION','%SQL_OU_PRIVILEGE_DEFINITION','%SQL_OU_PROCEDURE_INVOCATION','%SQL_OU_TABLE_DEFINITION',\n            '%SQL_OV_ODBC2','%SQL_OV_ODBC3','%SQL_OWNER_TERM','%SQL_OWNER_USAGE','%SQL_PACKET_SIZE','%SQL_PARAM_ARRAY_ROW_COUNTS','%SQL_PARAM_ARRAY_SELECTS','%SQL_PARAM_BIND_BY_COLUMN',\n            '%SQL_PARAM_BIND_TYPE_DEFAULT','%SQL_PARAM_DIAG_UNAVAILABLE','%SQL_PARAM_ERROR','%SQL_PARAM_IGNORE','%SQL_PARAM_INPUT','%SQL_PARAM_INPUT_OUTPUT','%SQL_PARAM_OUTPUT','%SQL_PARAM_PROCEED',\n            '%SQL_PARAM_SUCCESS','%SQL_PARAM_SUCCESS_WITH_INFO','%SQL_PARAM_TYPE_DEFAULT','%SQL_PARAM_TYPE_UNKNOWN','%SQL_PARAM_UNUSED','%SQL_PARC_BATCH','%SQL_PARC_NO_BATCH','%SQL_PAS_BATCH',\n            '%SQL_PAS_NO_BATCH','%SQL_PAS_NO_SELECT','%SQL_PC_NON_PSEUDO','%SQL_PC_NOT_PSEUDO','%SQL_PC_PSEUDO','%SQL_PC_UNKNOWN','%SQL_POSITION','%SQL_POSITIONED_STATEMENTS',\n            '%SQL_POS_ADD','%SQL_POS_DELETE','%SQL_POS_OPERATIONS','%SQL_POS_POSITION','%SQL_POS_REFRESH','%SQL_POS_UPDATE','%SQL_PRED_BASIC','%SQL_PRED_CHAR',\n            '%SQL_PRED_NONE','%SQL_PRED_SEARCHABLE','%SQL_PROCEDURES','%SQL_PROCEDURE_TERM','%SQL_PS_POSITIONED_DELETE','%SQL_PS_POSITIONED_UPDATE','%SQL_PS_SELECT_FOR_UPDATE','%SQL_PT_FUNCTION',\n            '%SQL_PT_PROCEDURE','%SQL_PT_UNKNOWN','%SQL_QL_END','%SQL_QL_START','%SQL_QUALIFIER_LOCATION','%SQL_QUALIFIER_NAME_SEPARATOR','%SQL_QUALIFIER_TERM','%SQL_QUALIFIER_USAGE',\n            '%SQL_QUERY_TIMEOUT','%SQL_QUERY_TIMEOUT_DEFAULT','%SQL_QUICK','%SQL_QUIET_MODE','%SQL_QUOTED_IDENTIFIER_CASE','%SQL_QU_DML_STATEMENTS','%SQL_QU_INDEX_DEFINITION','%SQL_QU_PRIVILEGE_DEFINITION',\n            '%SQL_QU_PROCEDURE_INVOCATION','%SQL_QU_TABLE_DEFINITION','%SQL_RD_DEFAULT','%SQL_RD_OFF','%SQL_RD_ON','%SQL_REAL','%SQL_REFRESH','%SQL_RESET_PARAMS',\n            '%SQL_RESTRICT','%SQL_RESULT_COL','%SQL_RETRIEVE_DATA','%SQL_RETURN_VALUE','%SQL_ROLLBACK','%SQL_ROWSET_SIZE','%SQL_ROWSET_SIZE_DEFAULT','%SQL_ROWVER',\n            '%SQL_ROW_ADDED','%SQL_ROW_DELETED','%SQL_ROW_ERROR','%SQL_ROW_IDENTIFIER','%SQL_ROW_IGNORE','%SQL_ROW_NOROW','%SQL_ROW_NUMBER','%SQL_ROW_NUMBER_UNKNOWN',\n            '%SQL_ROW_PROCEED','%SQL_ROW_SUCCESS','%SQL_ROW_SUCCESS_WITH_INFO','%SQL_ROW_UPDATED','%SQL_ROW_UPDATES','%SQL_SCCO_LOCK','%SQL_SCCO_OPT_ROWVER','%SQL_SCCO_OPT_TIMESTAMP',\n            '%SQL_SCCO_OPT_VALUES','%SQL_SCCO_READ_ONLY','%SQL_SCC_ISO92_CLI','%SQL_SCC_XOPEN_CLI_VERSION1','%SQL_SCHEMA_TERM','%SQL_SCHEMA_USAGE','%SQL_SCOPE_CURROW','%SQL_SCOPE_SESSION',\n            '%SQL_SCOPE_TRANSACTION','%SQL_SCROLLABLE','%SQL_SCROLL_CONCURRENCY','%SQL_SCROLL_DYNAMIC','%SQL_SCROLL_FORWARD_ONLY','%SQL_SCROLL_KEYSET_DRIVEN','%SQL_SCROLL_OPTIONS','%SQL_SCROLL_STATIC',\n            '%SQL_SC_FIPS127_2_TRANSITIONAL','%SQL_SC_NON_UNIQUE','%SQL_SC_SQL92_ENTRY','%SQL_SC_SQL92_FULL','%SQL_SC_SQL92_INTERMEDIATE','%SQL_SC_TRY_UNIQUE','%SQL_SC_UNIQUE','%SQL_SDF_CURRENT_DATE',\n            '%SQL_SDF_CURRENT_TIME','%SQL_SDF_CURRENT_TIMESTAMP','%SQL_SEARCHABLE','%SQL_SEARCH_PATTERN_ESCAPE','%SQL_SECOND','%SQL_SENSITIVE','%SQL_SERVER_NAME','%SQL_SETPARAM_VALUE_MAX',\n            '%SQL_SETPOS_MAX_LOCK_VALUE','%SQL_SETPOS_MAX_OPTION_VALUE','%SQL_SET_DEFAULT','%SQL_SET_NULL','%SQL_SFKD_CASCADE','%SQL_SFKD_NO_ACTION','%SQL_SFKD_SET_DEFAULT','%SQL_SFKD_SET_NULL',\n            '%SQL_SFKU_CASCADE','%SQL_SFKU_NO_ACTION','%SQL_SFKU_SET_DEFAULT','%SQL_SFKU_SET_NULL','%SQL_SG_DELETE_TABLE','%SQL_SG_INSERT_COLUMN','%SQL_SG_INSERT_TABLE','%SQL_SG_REFERENCES_COLUMN',\n            '%SQL_SG_REFERENCES_TABLE','%SQL_SG_SELECT_TABLE','%SQL_SG_UPDATE_COLUMN','%SQL_SG_UPDATE_TABLE','%SQL_SG_USAGE_ON_CHARACTER_SET','%SQL_SG_USAGE_ON_COLLATION','%SQL_SG_USAGE_ON_DOMAIN','%SQL_SG_USAGE_ON_TRANSLATION',\n            '%SQL_SG_WITH_GRANT_OPTION','%SQL_SIGNED_OFFSET','%SQL_SIMULATE_CURSOR','%SQL_SMALLINT','%SQL_SNVF_BIT_LENGTH','%SQL_SNVF_CHARACTER_LENGTH','%SQL_SNVF_CHAR_LENGTH','%SQL_SNVF_EXTRACT',\n            '%SQL_SNVF_OCTET_LENGTH','%SQL_SNVF_POSITION','%SQL_SO_DYNAMIC','%SQL_SO_FORWARD_ONLY','%SQL_SO_KEYSET_DRIVEN','%SQL_SO_MIXED','%SQL_SO_STATIC','%SQL_SPECIAL_CHARACTERS',\n            '%SQL_SPEC_MAJOR','%SQL_SPEC_MINOR','%SQL_SP_BETWEEN','%SQL_SP_COMPARISON','%SQL_SP_EXISTS','%SQL_SP_IN','%SQL_SP_ISNOTNULL','%SQL_SP_ISNULL',\n            '%SQL_SP_LIKE','%SQL_SP_MATCH_FULL','%SQL_SP_MATCH_PARTIAL','%SQL_SP_MATCH_UNIQUE_FULL','%SQL_SP_MATCH_UNIQUE_PARTIAL','%SQL_SP_OVERLAPS','%SQL_SP_QUANTIFIED_COMPARISON','%SQL_SP_UNIQUE',\n            '%SQL_SQL92_DATETIME_FUNCTIONS','%SQL_SQL92_FOREIGN_KEY_DELETE_RULE','%SQL_SQL92_FOREIGN_KEY_UPDATE_RULE','%SQL_SQL92_GRANT','%SQL_SQL92_NUMERIC_VALUE_FUNCTIONS','%SQL_SQL92_PREDICATES','%SQL_SQL92_RELATIONAL_JOIN_OPERATORS','%SQL_SQL92_REVOKE',\n            '%SQL_SQL92_ROW_VALUE_CONSTRUCTOR','%SQL_SQL92_STRING_FUNCTIONS','%SQL_SQL92_VALUE_EXPRESSIONS','%SQL_SQLSTATE_SIZE','%SQL_SQL_CONFORMANCE','%SQL_SQ_COMPARISON','%SQL_SQ_CORRELATED_SUBQUERIES','%SQL_SQ_EXISTS',\n            '%SQL_SQ_IN','%SQL_SQ_QUANTIFIED','%SQL_SRJO_CORRESPONDING_CLAUSE','%SQL_SRJO_CROSS_JOIN','%SQL_SRJO_EXCEPT_JOIN','%SQL_SRJO_FULL_OUTER_JOIN','%SQL_SRJO_INNER_JOIN','%SQL_SRJO_INTERSECT_JOIN',\n            '%SQL_SRJO_LEFT_OUTER_JOIN','%SQL_SRJO_NATURAL_JOIN','%SQL_SRJO_RIGHT_OUTER_JOIN','%SQL_SRJO_UNION_JOIN','%SQL_SRVC_DEFAULT','%SQL_SRVC_NULL','%SQL_SRVC_ROW_SUBQUERY','%SQL_SRVC_VALUE_EXPRESSION',\n            '%SQL_SR_CASCADE','%SQL_SR_DELETE_TABLE','%SQL_SR_GRANT_OPTION_FOR','%SQL_SR_INSERT_COLUMN','%SQL_SR_INSERT_TABLE','%SQL_SR_REFERENCES_COLUMN','%SQL_SR_REFERENCES_TABLE','%SQL_SR_RESTRICT',\n            '%SQL_SR_SELECT_TABLE','%SQL_SR_UPDATE_COLUMN','%SQL_SR_UPDATE_TABLE','%SQL_SR_USAGE_ON_CHARACTER_SET','%SQL_SR_USAGE_ON_COLLATION','%SQL_SR_USAGE_ON_DOMAIN','%SQL_SR_USAGE_ON_TRANSLATION','%SQL_SSF_CONVERT',\n            '%SQL_SSF_LOWER','%SQL_SSF_SUBSTRING','%SQL_SSF_TRANSLATE','%SQL_SSF_TRIM_BOTH','%SQL_SSF_TRIM_LEADING','%SQL_SSF_TRIM_TRAILING','%SQL_SSF_UPPER','%SQL_SS_ADDITIONS',\n            '%SQL_SS_DELETIONS','%SQL_SS_UPDATES','%SQL_STANDARD_CLI_CONFORMANCE','%SQL_STATIC_CURSOR_ATTRIBUTES1','%SQL_STATIC_CURSOR_ATTRIBUTES2','%SQL_STATIC_SENSITIVITY','%SQL_STILL_EXECUTING','%SQL_STRING_FUNCTIONS',\n            '%SQL_SUBQUERIES','%SQL_SUCCESS','%SQL_SUCCESS_WITH_INFO','%SQL_SU_DML_STATEMENTS','%SQL_SU_INDEX_DEFINITION','%SQL_SU_PRIVILEGE_DEFINITION','%SQL_SU_PROCEDURE_INVOCATION','%SQL_SU_TABLE_DEFINITION',\n            '%SQL_SVE_CASE','%SQL_SVE_CAST','%SQL_SVE_COALESCE','%SQL_SVE_NULLIF','%SQL_SYSTEM_FUNCTIONS','%SQL_TABLE_STAT','%SQL_TABLE_TERM','%SQL_TC_ALL',\n            '%SQL_TC_DDL_COMMIT','%SQL_TC_DDL_IGNORE','%SQL_TC_DML','%SQL_TC_NONE','%SQL_TIME','%SQL_TIMEDATE_ADD_INTERVALS','%SQL_TIMEDATE_DIFF_INTERVALS','%SQL_TIMEDATE_FUNCTIONS',\n            '%SQL_TIMESTAMP','%SQL_TIMESTAMP_LEN','%SQL_TIME_LEN','%SQL_TINYINT','%SQL_TRANSACTION_CAPABLE','%SQL_TRANSACTION_ISOLATION_OPTION','%SQL_TRANSACTION_READ_COMMITTED','%SQL_TRANSACTION_READ_UNCOMMITTED',\n            '%SQL_TRANSACTION_REPEATABLE_READ','%SQL_TRANSACTION_SERIALIZABLE','%SQL_TRANSLATE_DLL','%SQL_TRANSLATE_OPTION','%SQL_TRUE','%SQL_TXN_CAPABLE','%SQL_TXN_ISOLATION','%SQL_TXN_ISOLATION_OPTION',\n            '%SQL_TXN_READ_COMMITTED','%SQL_TXN_READ_UNCOMMITTED','%SQL_TXN_REPEATABLE_READ','%SQL_TXN_SERIALIZABLE','%SQL_TYPE_DATE','%SQL_TYPE_NULL','%SQL_TYPE_TIME','%SQL_TYPE_TIMESTAMP',\n            '%SQL_UB_DEFAULT','%SQL_UB_FIXED','%SQL_UB_OFF','%SQL_UB_ON','%SQL_UB_VARIABLE','%SQL_UNBIND','%SQL_UNICODE','%SQL_UNICODE_CHAR',\n            '%SQL_UNICODE_LONGVARCHAR','%SQL_UNICODE_VARCHAR','%SQL_UNION','%SQL_UNION_STATEMENT','%SQL_UNKNOWN_TYPE','%SQL_UNNAMED','%SQL_UNSEARCHABLE','%SQL_UNSIGNED_OFFSET',\n            '%SQL_UNSPECIFIED','%SQL_UPDATE','%SQL_UPDATE_BY_BOOKMARK','%SQL_USER_NAME','%SQL_USE_BOOKMARKS','%SQL_US_UNION','%SQL_US_UNION_ALL','%SQL_U_UNION',\n            '%SQL_U_UNION_ALL','%SQL_VARBINARY','%SQL_VARCHAR','%SQL_XOPEN_CLI_YEAR','%SQL_YEAR','%SQL_YEAR_TO_MONTH','%SRCCOPY','%SS_BITMAP',\n            '%SS_BLACKFRAME','%SS_BLACKRECT','%SS_CENTER','%SS_CENTERIMAGE','%SS_ENDELLIPSIS','%SS_ETCHEDFRAME','%SS_ETCHEDHORZ','%SS_ETCHEDVERT',\n            '%SS_GRAYFRAME','%SS_GRAYRECT','%SS_LEFT','%SS_NOPREFIX','%SS_NOTIFY','%SS_NOWORDWRAP','%SS_PATHELLIPSIS','%SS_RIGHT',\n            '%SS_RIGHTJUST','%SS_SIMPLE','%SS_SUNKEN','%SS_WHITEFRAME','%SS_WHITERECT','%SS_WORDELLIPSIS','%STAT_FILL_FROM_MEMORY','%STAT_FILL_NATURAL',\n            '%STAT_FILL_NATURAL_ERASTONE','%STAT_FILL_NATURAL_EVEN','%STAT_FILL_NATURAL_FIBONACCI','%STAT_FILL_NATURAL_ODD','%STAT_FILL_WITH_NUMBER','%STAT_MINMAX_INDEX','%STAT_MINMAX_VALUE','%STAT_TYPE_BYTE',\n            '%STAT_TYPE_CURRENCY','%STAT_TYPE_DOUBLE','%STAT_TYPE_DWORD','%STAT_TYPE_EXT','%STAT_TYPE_INTEGER','%STAT_TYPE_LONG','%STAT_TYPE_QUAD','%STAT_TYPE_SINGLE',\n            '%STAT_TYPE_WORD','%SWP_ASYNCWINDOWPOS','%SWP_DEFERERASE','%SWP_DRAWFRAME','%SWP_FRAMECHANGED','%SWP_HIDEWINDOW','%SWP_NOACTIVATE','%SWP_NOCOPYBITS',\n            '%SWP_NOMOVE','%SWP_NOOWNERZORDER','%SWP_NOREDRAW','%SWP_NOREPOSITION','%SWP_NOSENDCHANGING','%SWP_NOSIZE','%SWP_NOZORDER','%SWP_SHOWWINDOW',\n            '%SW_FORCEMINIMIZE','%SW_HIDE','%SW_MAXIMIZE','%SW_MINIMIZE','%SW_NORMAL','%SW_RESTORE','%SW_SHOW','%SW_SHOWDEFAULT',\n            '%SW_SHOWMAXIMIZED','%SW_SHOWMINIMIZED','%SW_SHOWMINNOACTIVE','%SW_SHOWNA','%SW_SHOWNOACTIVATE','%SW_SHOWNORMAL','%TBASS_3DALG_DEFAULT','%TBASS_3DALG_FULL',\n            '%TBASS_3DALG_LIGHT','%TBASS_3DALG_OFF','%TBASS_3DMODE_NORMAL','%TBASS_3DMODE_OFF','%TBASS_3DMODE_RELATIVE','%TBASS_ACTIVE_PAUSED','%TBASS_ACTIVE_PLAYING','%TBASS_ACTIVE_STALLED',\n            '%TBASS_ACTIVE_STOPPED','%TBASS_CONFIG_3DALGORITHM','%TBASS_CONFIG_BUFFER','%TBASS_CONFIG_CURVE_PAN','%TBASS_CONFIG_CURVE_VOL','%TBASS_CONFIG_FLOATDSP','%TBASS_CONFIG_GVOL_MUSIC','%TBASS_CONFIG_GVOL_SAMPLE',\n            '%TBASS_CONFIG_GVOL_STREAM','%TBASS_CONFIG_MAXVOL','%TBASS_CONFIG_MP3_CODEC','%TBASS_CONFIG_NET_AGENT','%TBASS_CONFIG_NET_BUFFER','%TBASS_CONFIG_NET_PASSIVE','%TBASS_CONFIG_NET_PREBUF','%TBASS_CONFIG_NET_PROXY',\n            '%TBASS_CONFIG_NET_TIMEOUT','%TBASS_CONFIG_PAUSE_NOPLAY','%TBASS_CONFIG_UPDATEPERIOD','%TBASS_CTYPE_MUSIC_IT','%TBASS_CTYPE_MUSIC_MO3','%TBASS_CTYPE_MUSIC_MOD','%TBASS_CTYPE_MUSIC_MTM','%TBASS_CTYPE_MUSIC_S3M',\n            '%TBASS_CTYPE_MUSIC_XM','%TBASS_CTYPE_RECORD','%TBASS_CTYPE_SAMPLE','%TBASS_CTYPE_STREAM','%TBASS_CTYPE_STREAM_AIFF','%TBASS_CTYPE_STREAM_MP1','%TBASS_CTYPE_STREAM_MP2','%TBASS_CTYPE_STREAM_MP3',\n            '%TBASS_CTYPE_STREAM_OGG','%TBASS_CTYPE_STREAM_WAV','%TBASS_CTYPE_STREAM_WAV_FLOAT','%TBASS_CTYPE_STREAM_WAV_PCM','%TBASS_DATA_AVAILABLE','%TBASS_DATA_FFT1024','%TBASS_DATA_FFT2048','%TBASS_DATA_FFT4096',\n            '%TBASS_DATA_FFT512','%TBASS_DATA_FFT_INDIVIDUAL','%TBASS_DATA_FFT_NOWINDOW','%TBASS_DATA_FLOAT','%TBASS_DEVICE_3D','%TBASS_DEVICE_8BITS','%TBASS_DEVICE_LATENCY','%TBASS_DEVICE_MONO',\n            '%TBASS_DEVICE_NOSPEAKER','%TBASS_DEVICE_SPEAKERS','%TBASS_EAX_ENVIRONMENT_ALLEY','%TBASS_EAX_ENVIRONMENT_ARENA','%TBASS_EAX_ENVIRONMENT_AUDITORIUM','%TBASS_EAX_ENVIRONMENT_BATHROOM','%TBASS_EAX_ENVIRONMENT_CARPETEDHALLWAY','%TBASS_EAX_ENVIRONMENT_CAVE',\n            '%TBASS_EAX_ENVIRONMENT_CITY','%TBASS_EAX_ENVIRONMENT_CONCERTHALL','%TBASS_EAX_ENVIRONMENT_COUNT','%TBASS_EAX_ENVIRONMENT_DIZZY','%TBASS_EAX_ENVIRONMENT_DRUGGED','%TBASS_EAX_ENVIRONMENT_FOREST','%TBASS_EAX_ENVIRONMENT_GENERIC','%TBASS_EAX_ENVIRONMENT_HALLWAY',\n            '%TBASS_EAX_ENVIRONMENT_HANGAR','%TBASS_EAX_ENVIRONMENT_LIVINGROOM','%TBASS_EAX_ENVIRONMENT_MOUNTAINS','%TBASS_EAX_ENVIRONMENT_PADDEDCELL','%TBASS_EAX_ENVIRONMENT_PARKINGLOT','%TBASS_EAX_ENVIRONMENT_PLAIN','%TBASS_EAX_ENVIRONMENT_PSYCHOTIC','%TBASS_EAX_ENVIRONMENT_QUARRY',\n            '%TBASS_EAX_ENVIRONMENT_ROOM','%TBASS_EAX_ENVIRONMENT_SEWERPIPE','%TBASS_EAX_ENVIRONMENT_STONECORRIDOR','%TBASS_EAX_ENVIRONMENT_STONEROOM','%TBASS_EAX_ENVIRONMENT_UNDERWATER','%TBASS_ERROR_ALREADY','%TBASS_ERROR_BUFLOST','%TBASS_ERROR_CODEC',\n            '%TBASS_ERROR_CREATE','%TBASS_ERROR_DECODE','%TBASS_ERROR_DEVICE','%TBASS_ERROR_DRIVER','%TBASS_ERROR_DX','%TBASS_ERROR_EMPTY','%TBASS_ERROR_FILEFORM','%TBASS_ERROR_FILEOPEN',\n            '%TBASS_ERROR_FORMAT','%TBASS_ERROR_FREQ','%TBASS_ERROR_HANDLE','%TBASS_ERROR_ILLPARAM','%TBASS_ERROR_ILLTYPE','%TBASS_ERROR_INIT','%TBASS_ERROR_MEM','%TBASS_ERROR_NO3D',\n            '%TBASS_ERROR_NOCHAN','%TBASS_ERROR_NOEAX','%TBASS_ERROR_NOFX','%TBASS_ERROR_NOHW','%TBASS_ERROR_NONET','%TBASS_ERROR_NOPAUSE','%TBASS_ERROR_NOPLAY','%TBASS_ERROR_NOTAVAIL',\n            '%TBASS_ERROR_NOTFILE','%TBASS_ERROR_PLAYING','%TBASS_ERROR_POSITION','%TBASS_ERROR_SPEAKER','%TBASS_ERROR_START','%TBASS_ERROR_TIMEOUT','%TBASS_ERROR_UNKNOWN','%TBASS_ERROR_VERSION',\n            '%TBASS_FALSE','%TBASS_FILEPOS_CURRENT','%TBASS_FILEPOS_DECODE','%TBASS_FILEPOS_DOWNLOAD','%TBASS_FILEPOS_END','%TBASS_FILEPOS_START','%TBASS_FILE_CLOSE','%TBASS_FILE_LEN',\n            '%TBASS_FILE_READ','%TBASS_FILE_SEEK','%TBASS_FX_CHORUS','%TBASS_FX_COMPRESSOR','%TBASS_FX_DISTORTION','%TBASS_FX_ECHO','%TBASS_FX_FLANGER','%TBASS_FX_GARGLE',\n            '%TBASS_FX_I3DL2REVERB','%TBASS_FX_PARAMEQ','%TBASS_FX_PHASE_180','%TBASS_FX_PHASE_90','%TBASS_FX_PHASE_NEG_180','%TBASS_FX_PHASE_NEG_90','%TBASS_FX_PHASE_ZERO','%TBASS_FX_REVERB',\n            '%TBASS_INPUT_LEVEL','%TBASS_INPUT_OFF','%TBASS_INPUT_ON','%TBASS_INPUT_TYPE_ANALOG','%TBASS_INPUT_TYPE_AUX','%TBASS_INPUT_TYPE_CD','%TBASS_INPUT_TYPE_DIGITAL','%TBASS_INPUT_TYPE_LINE',\n            '%TBASS_INPUT_TYPE_MASK','%TBASS_INPUT_TYPE_MIC','%TBASS_INPUT_TYPE_PHONE','%TBASS_INPUT_TYPE_SPEAKER','%TBASS_INPUT_TYPE_SYNTH','%TBASS_INPUT_TYPE_UNDEF','%TBASS_INPUT_TYPE_WAVE','%TBASS_MP3_SETPOS',\n            '%TBASS_MUSIC_3D','%TBASS_MUSIC_ATTRIB_AMPLIFY','%TBASS_MUSIC_ATTRIB_BPM','%TBASS_MUSIC_ATTRIB_PANSEP','%TBASS_MUSIC_ATTRIB_PSCALER','%TBASS_MUSIC_ATTRIB_SPEED','%TBASS_MUSIC_ATTRIB_VOL_CHAN','%TBASS_MUSIC_ATTRIB_VOL_GLOBAL',\n            '%TBASS_MUSIC_ATTRIB_VOL_INST','%TBASS_MUSIC_AUTOFREE','%TBASS_MUSIC_CALCLEN','%TBASS_MUSIC_DECODE','%TBASS_MUSIC_FLOAT','%TBASS_MUSIC_FT2MOD','%TBASS_MUSIC_FX','%TBASS_MUSIC_LOOP',\n            '%TBASS_MUSIC_MONO','%TBASS_MUSIC_NONINTER','%TBASS_MUSIC_NOSAMPLE','%TBASS_MUSIC_POSRESET','%TBASS_MUSIC_POSRESETEX','%TBASS_MUSIC_PRESCAN','%TBASS_MUSIC_PT1MOD','%TBASS_MUSIC_RAMP',\n            '%TBASS_MUSIC_RAMPS','%TBASS_MUSIC_STOPBACK','%TBASS_MUSIC_SURROUND','%TBASS_MUSIC_SURROUND2','%TBASS_OBJECT_DS','%TBASS_OBJECT_DS3DL','%TBASS_OK','%TBASS_RECORD_PAUSE',\n            '%TBASS_SAMPLE_3D','%TBASS_SAMPLE_8BITS','%TBASS_SAMPLE_FLOAT','%TBASS_SAMPLE_FX','%TBASS_SAMPLE_LOOP','%TBASS_SAMPLE_MONO','%TBASS_SAMPLE_MUTEMAX','%TBASS_SAMPLE_OVER_DIST',\n            '%TBASS_SAMPLE_OVER_POS','%TBASS_SAMPLE_OVER_VOL','%TBASS_SAMPLE_SOFTWARE','%TBASS_SAMPLE_VAM','%TBASS_SLIDE_FREQ','%TBASS_SLIDE_PAN','%TBASS_SLIDE_VOL','%TBASS_SPEAKER_CENLFE',\n            '%TBASS_SPEAKER_CENTER','%TBASS_SPEAKER_FRONT','%TBASS_SPEAKER_FRONTLEFT','%TBASS_SPEAKER_FRONTRIGHT','%TBASS_SPEAKER_LEFT','%TBASS_SPEAKER_LFE','%TBASS_SPEAKER_REAR','%TBASS_SPEAKER_REAR2',\n            '%TBASS_SPEAKER_REAR2LEFT','%TBASS_SPEAKER_REAR2RIGHT','%TBASS_SPEAKER_REARLEFT','%TBASS_SPEAKER_REARRIGHT','%TBASS_SPEAKER_RIGHT','%TBASS_STREAMPROC_END','%TBASS_STREAM_AUTOFREE','%TBASS_STREAM_BLOCK',\n            '%TBASS_STREAM_DECODE','%TBASS_STREAM_PRESCAN','%TBASS_STREAM_RESTRATE','%TBASS_STREAM_STATUS','%TBASS_SYNC_DOWNLOAD','%TBASS_SYNC_END','%TBASS_SYNC_FREE','%TBASS_SYNC_MESSAGE',\n            '%TBASS_SYNC_META','%TBASS_SYNC_MIXTIME','%TBASS_SYNC_MUSICFX','%TBASS_SYNC_MUSICINST','%TBASS_SYNC_MUSICPOS','%TBASS_SYNC_ONETIME','%TBASS_SYNC_POS','%TBASS_SYNC_SLIDE',\n            '%TBASS_SYNC_STALL','%TBASS_TAG_HTTP','%TBASS_TAG_ICY','%TBASS_TAG_ID3','%TBASS_TAG_ID3V2','%TBASS_TAG_META','%TBASS_TAG_MUSIC_INST','%TBASS_TAG_MUSIC_MESSAGE',\n            '%TBASS_TAG_MUSIC_NAME','%TBASS_TAG_MUSIC_SAMPLE','%TBASS_TAG_OGG','%TBASS_TAG_RIFF_INFO','%TBASS_TAG_VENDOR','%TBASS_TRUE','%TBASS_UNICODE','%TBASS_VAM_HARDWARE',\n            '%TBASS_VAM_SOFTWARE','%TBASS_VAM_TERM_DIST','%TBASS_VAM_TERM_PRIO','%TBASS_VAM_TERM_TIME','%TBASS_VERSION','%TBCD_CHANNEL','%TBCD_THUMB','%TBCD_TICS',\n            '%TBGL_ALIGN_CENTER','%TBGL_ALIGN_CENTER_CENTER','%TBGL_ALIGN_CENTER_DOWN','%TBGL_ALIGN_CENTER_UP','%TBGL_ALIGN_LEFT','%TBGL_ALIGN_LEFT_CENTER','%TBGL_ALIGN_LEFT_DOWN','%TBGL_ALIGN_LEFT_UP',\n            '%TBGL_ALIGN_RIGHT','%TBGL_ALIGN_RIGHT_CENTER','%TBGL_ALIGN_RIGHT_DOWN','%TBGL_ALIGN_RIGHT_UP','%TBGL_ALWAYS','%TBGL_EQUAL','%TBGL_ERROR_FILE','%TBGL_ERROR_MSGBOX',\n            '%TBGL_ERROR_NONE','%TBGL_GEQUAL','%TBGL_GREATER','%TBGL_LEQUAL','%TBGL_LESS','%TBGL_LIGHT_AMBIENT','%TBGL_LIGHT_CONSTANT_ATTENUATION','%TBGL_LIGHT_DIFFUSE',\n            '%TBGL_LIGHT_LINEAR_ATTENUATION','%TBGL_LIGHT_POSITION','%TBGL_LIGHT_QUADRATIC_ATTENUATION','%TBGL_LIGHT_SPECULAR','%TBGL_LIGHT_SPOT_CUTOFF','%TBGL_LIGHT_SPOT_DIRECTION','%TBGL_LIGHT_SPOT_EXPONENT','%TBGL_M15B',\n            '%TBGL_M15G','%TBGL_M15LAYER','%TBGL_M15PSTOP','%TBGL_M15R','%TBGL_M15TEXN','%TBGL_M15TEXX','%TBGL_M15TEXY','%TBGL_M15X',\n            '%TBGL_M15Y','%TBGL_M15Z','%TBGL_NEVER','%TBGL_NORMAL_NONE','%TBGL_NORMAL_PRECISE','%TBGL_NORMAL_SMOOTH','%TBGL_NOTEQUAL','%TBGL_OBJ_CUBE',\n            '%TBGL_OBJ_CUBE3','%TBGL_OBJ_CYLINDER','%TBGL_OBJ_SPHERE','%TBGL_PINFO_RGB','%TBGL_PINFO_XYZ','%TBGL_TEX_LINEAR','%TBGL_TEX_MIPMAP','%TBGL_TEX_NEAREST',\n            '%TBM_CLEARSEL','%TBM_CLEARTICS','%TBM_GETBUDDY','%TBM_GETCHANNELRECT','%TBM_GETLINESIZE','%TBM_GETNUMTICS','%TBM_GETPAGESIZE','%TBM_GETPOS',\n            '%TBM_GETPTICS','%TBM_GETRANGEMAX','%TBM_GETRANGEMIN','%TBM_GETSELEND','%TBM_GETSELSTART','%TBM_GETTHUMBLENGTH','%TBM_GETTHUMBRECT','%TBM_GETTIC',\n            '%TBM_GETTICPOS','%TBM_GETTOOLTIPS','%TBM_GETUNICODEFORMAT','%TBM_SETBUDDY','%TBM_SETLINESIZE','%TBM_SETPAGESIZE','%TBM_SETPOS','%TBM_SETRANGE',\n            '%TBM_SETRANGEMAX','%TBM_SETRANGEMIN','%TBM_SETSEL','%TBM_SETSELEND','%TBM_SETSELSTART','%TBM_SETTHUMBLENGTH','%TBM_SETTIC','%TBM_SETTICFREQ',\n            '%TBM_SETTIPSIDE','%TBM_SETTOOLTIPS','%TBM_SETUNICODEFORMAT','%TBS_AUTOTICKS','%TBS_BOTH','%TBS_BOTTOM','%TBS_DOWNISLEFT','%TBS_ENABLESELRANGE',\n            '%TBS_FIXEDLENGTH','%TBS_HORZ','%TBS_LEFT','%TBS_NOTHUMB','%TBS_NOTICKS','%TBS_REVERSED','%TBS_RIGHT','%TBS_TOOLTIPS',\n            '%TBS_TOP','%TBS_VERT','%TBTS_BOTTOM','%TBTS_LEFT','%TBTS_RIGHT','%TBTS_TOP','%TB_%VT_BSTR','%TB_%VT_CY',\n            '%TB_%VT_DATE','%TB_%VT_EMPTY','%TB_%VT_I2','%TB_%VT_I4','%TB_%VT_NULL','%TB_%VT_R4','%TB_%VT_R8','%TB_BOTTOM',\n            '%TB_CLASS_E_NOAGGREGATION','%TB_CO_E_CLASSSTRING','%TB_DISPATCH_METHOD','%TB_DISPATCH_PROPERTYGET','%TB_DISPATCH_PROPERTYPUT','%TB_DISPATCH_PROPERTYPUTREF','%TB_ENDTRACK','%TB_E_INVALIDARG',\n            '%TB_E_NOINTERFACE','%TB_E_OUTOFMEMORY','%TB_IMGCTX_ACTUALSIZE','%TB_IMGCTX_AUTOSIZE','%TB_IMGCTX_FITTOHEIGHT','%TB_IMGCTX_FITTOWIDTH','%TB_IMGCTX_STRETCH','%TB_LINEDOWN',\n            '%TB_LINEUP','%TB_MK_E_CONNECTMANUALLY','%TB_MK_E_EXCEEDEDDEADLINE','%TB_MK_E_INTERMEDIATEINTERFACENOTSUPPORTED','%TB_MK_E_NOOBJECT','%TB_MK_E_SYNTAX','%TB_PAGEDOWN','%TB_PAGEUP',\n            '%TB_REGDB_E_CLASSNOTREG','%TB_REGDB_E_WRITEREGDB','%TB_SIZEOF_TBVARIANT','%TB_S_FALSE','%TB_S_OK','%TB_THUMBPOSITION','%TB_THUMBTRACK','%TB_TOP',\n            '%TCM_FIRST','%TCM_GETCURSEL','%TCN_FOCUSCHANGE','%TCN_GETOBJECT','%TCN_SELCHANGE','%TCN_SELCHANGING','%TCS_BOTTOM','%TCS_BUTTONS',\n            '%TCS_EX_FLATSEPARATORS','%TCS_EX_REGISTERDROP','%TCS_FIXEDWIDTH','%TCS_FLATBUTTONS','%TCS_FOCUSNEVER','%TCS_FOCUSONBUTTONDOWN','%TCS_FORCEICONLEFT','%TCS_FORCELABELLEFT',\n            '%TCS_HOTTRACK','%TCS_MULTILINE','%TCS_MULTISELECT','%TCS_OWNERDRAWFIXED','%TCS_RAGGEDRIGHT','%TCS_RIGHT','%TCS_RIGHTJUSTIFY','%TCS_SCROLLOPPOSITE',\n            '%TCS_SINGLELINE','%TCS_TABS','%TCS_TOOLTIPS','%TCS_VERTICAL','%TM_PLAINTEXT','%TM_RICHTEXT','%TOKENIZER_DEFAULT_ALPHA','%TOKENIZER_DEFAULT_DELIM',\n            '%TOKENIZER_DEFAULT_DQUOTE','%TOKENIZER_DEFAULT_NEWLINE','%TOKENIZER_DEFAULT_NUMERIC','%TOKENIZER_DEFAULT_SPACE','%TOKENIZER_DELIMITER','%TOKENIZER_EOL','%TOKENIZER_ERROR','%TOKENIZER_FINISHED',\n            '%TOKENIZER_NUMBER','%TOKENIZER_QUOTE','%TOKENIZER_STRING','%TOKENIZER_UNDEFTOK','%TRUE','%TV_FIRST','%UDM_GETACCEL','%UDM_GETBASE',\n            '%UDM_GETBUDDY','%UDM_GETPOS','%UDM_GETPOS32','%UDM_GETRANGE','%UDM_GETRANGE32','%UDM_GETUNICODEFORMAT','%UDM_SETACCEL','%UDM_SETBASE',\n            '%UDM_SETBUDDY','%UDM_SETPOS','%UDM_SETPOS32','%UDM_SETRANGE','%UDM_SETRANGE32','%UDM_SETUNICODEFORMAT','%UDS_ALIGNLEFT','%UDS_ALIGNRIGHT',\n            '%UDS_ARROWKEYS','%UDS_AUTOBUDDY','%UDS_HORZ','%UDS_HOTTRACK','%UDS_NOTHOUSANDS','%UDS_SETBUDDYINT','%UDS_WRAP','%UD_MAXVAL',\n            '%UD_MINVAL','%VK_0','%VK_1','%VK_2','%VK_3','%VK_4','%VK_5','%VK_6',\n            '%VK_7','%VK_8','%VK_9','%VK_A','%VK_ACCEPT','%VK_ADD','%VK_APPS','%VK_B',\n            '%VK_BACK','%VK_C','%VK_CANCEL','%VK_CAPITAL','%VK_CLEAR','%VK_CONTROL','%VK_CONVERT','%VK_D',\n            '%VK_DECIMAL','%VK_DELETE','%VK_DIVIDE','%VK_DOWN','%VK_E','%VK_END','%VK_ESCAPE','%VK_EXECUTE',\n            '%VK_F','%VK_F1','%VK_F10','%VK_F11','%VK_F12','%VK_F13','%VK_F14','%VK_F15',\n            '%VK_F16','%VK_F17','%VK_F18','%VK_F19','%VK_F2','%VK_F20','%VK_F21','%VK_F22',\n            '%VK_F23','%VK_F24','%VK_F3','%VK_F4','%VK_F5','%VK_F6','%VK_F7','%VK_F8',\n            '%VK_F9','%VK_FINAL','%VK_G','%VK_H','%VK_HANGEUL','%VK_HANGUL','%VK_HANJA','%VK_HELP',\n            '%VK_HOME','%VK_I','%VK_INSERT','%VK_J','%VK_JUNJA','%VK_K','%VK_KANA','%VK_KANJI',\n            '%VK_L','%VK_LBUTTON','%VK_LEFT','%VK_LINEFEED','%VK_LWIN','%VK_M','%VK_MBUTTON','%VK_MENU',\n            '%VK_MODECHANGE','%VK_MULTIPLY','%VK_N','%VK_NEXT','%VK_NONCONVERT','%VK_NUMLOCK','%VK_NUMPAD0','%VK_NUMPAD1',\n            '%VK_NUMPAD2','%VK_NUMPAD3','%VK_NUMPAD4','%VK_NUMPAD5','%VK_NUMPAD6','%VK_NUMPAD7','%VK_NUMPAD8','%VK_NUMPAD9',\n            '%VK_O','%VK_P','%VK_PAUSE','%VK_PGDN','%VK_PGUP','%VK_PRINT','%VK_PRIOR','%VK_Q',\n            '%VK_R','%VK_RBUTTON','%VK_RETURN','%VK_RIGHT','%VK_RWIN','%VK_S','%VK_SCROLL','%VK_SELECT',\n            '%VK_SEPARATOR','%VK_SHIFT','%VK_SLEEP','%VK_SNAPSHOT','%VK_SPACE','%VK_SUBTRACT','%VK_T','%VK_TAB',\n            '%VK_U','%VK_UP','%VK_V','%VK_W','%VK_X','%VK_XBUTTON1','%VK_XBUTTON2','%VK_Y',\n            '%VK_Z','%VT_ARRAY','%VT_BLOB','%VT_BLOB_OBJECT','%VT_BOOL','%VT_BSTR','%VT_BYREF','%VT_CARRAY',\n            '%VT_CF','%VT_CLSID','%VT_CY','%VT_DATE','%VT_DISPATCH','%VT_EMPTY','%VT_ERROR','%VT_FILETIME',\n            '%VT_HRESULT','%VT_I1','%VT_I2','%VT_I4','%VT_I8','%VT_INT','%VT_LPSTR','%VT_LPWSTR',\n            '%VT_NULL','%VT_PTR','%VT_R4','%VT_R8','%VT_RECORD','%VT_RESERVED','%VT_SAFEARRAY','%VT_STORAGE',\n            '%VT_STORED_OBJECT','%VT_STREAM','%VT_STREAMED_OBJECT','%VT_UI1','%VT_UI2','%VT_UI4','%VT_UI8','%VT_UINT',\n            '%VT_UNKNOWN','%VT_USERDEFINED','%VT_VARIANT','%VT_VECTOR','%VT_VOID','%WAVE_FORMAT_1M08','%WAVE_FORMAT_1M16','%WAVE_FORMAT_1S08',\n            '%WAVE_FORMAT_1S16','%WAVE_FORMAT_2M08','%WAVE_FORMAT_2M16','%WAVE_FORMAT_2S08','%WAVE_FORMAT_2S16','%WAVE_FORMAT_4M08','%WAVE_FORMAT_4M16','%WAVE_FORMAT_4S08',\n            '%WAVE_FORMAT_4S16','%WBF_CUSTOM','%WBF_LEVEL1','%WBF_LEVEL2','%WBF_OVERFLOW','%WBF_WORDBREAK','%WBF_WORDWRAP','%WHITE',\n            '%WIN_FINDTITLECONTAIN','%WIN_FINDTITLEEND','%WIN_FINDTITLEEQUAL','%WIN_FINDTITLESTART','%WM_ACTIVATE','%WM_ACTIVATEAPP','%WM_CAPTURECHANGED','%WM_CHAR',\n            '%WM_CLOSE','%WM_COMMAND','%WM_DESTROY','%WM_DROPFILES','%WM_ERASEBKGND','%WM_GETTEXTLENGTH','%WM_HOTKEY','%WM_HSCROLL',\n            '%WM_IDLE','%WM_INITDIALOG','%WM_KEYDOWN','%WM_KEYUP','%WM_KILLFOCUS','%WM_LBUTTONDBLCLK','%WM_LBUTTONDOWN','%WM_LBUTTONUP',\n            '%WM_MBUTTONDBLCLK','%WM_MBUTTONDOWN','%WM_MBUTTONUP','%WM_MOUSEFIRST','%WM_MOUSEMOVE','%WM_MOUSEWHEEL','%WM_MOVE','%WM_MOVING',\n            '%WM_NCLBUTTONDOWN','%WM_NCRBUTTONDOWN','%WM_NEXTDLGCTL','%WM_NOTIFY','%WM_PAINT','%WM_QUIT','%WM_RBUTTONDBLCLK','%WM_RBUTTONDOWN',\n            '%WM_RBUTTONUP','%WM_SETFOCUS','%WM_SETFONT','%WM_SETTEXT','%WM_SIZE','%WM_SIZING','%WM_SYSCOMMAND','%WM_TIMER',\n            '%WM_USER','%WM_VSCROLL','%WS_BORDER','%WS_CAPTION','%WS_CHILD','%WS_CLIPCHILDREN','%WS_CLIPSIBLINGS','%WS_DISABLED',\n            '%WS_DLGFRAME','%WS_EX_ACCEPTFILES','%WS_EX_APPWINDOW','%WS_EX_CLIENTEDGE','%WS_EX_CONTEXTHELP','%WS_EX_CONTROLPARENT','%WS_EX_LAYERED','%WS_EX_LEFT',\n            '%WS_EX_LEFTSCROLLBAR','%WS_EX_LTRREADING','%WS_EX_MDICHILD','%WS_EX_NOPARENTNOTIFY','%WS_EX_OVERLAPPEDWINDOW','%WS_EX_PALETTEWINDOW','%WS_EX_RIGHT','%WS_EX_RIGHTSCROLLBAR',\n            '%WS_EX_RTLREADING','%WS_EX_STATICEDGE','%WS_EX_TOOLWINDOW','%WS_EX_TOPMOST','%WS_EX_TRANSPARENT','%WS_EX_WINDOWEDGE','%WS_GROUP','%WS_HSCROLL',\n            '%WS_ICONIC','%WS_MAXIMIZE','%WS_MAXIMIZEBOX','%WS_MINIMIZE','%WS_MINIMIZEBOX','%WS_OVERLAPPEDWINDOW','%WS_POPUP','%WS_POPUPWINDOW',\n            '%WS_SYSMENU','%WS_TABSTOP','%WS_THICKFRAME','%WS_VISIBLE','%WS_VSCROLL','%YELLOW','%ZERO','CRLF',\n            'FALSE','M_E','M_PI','NULL','TAB','TRUE'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', '^', '&', ':'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000FF; font-weight: bold;',\n            2 => 'color: #993333; font-style: italic; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #333333;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #800080;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #CC0000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #66cc66;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #333333;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        1 => '_'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/tsql.php",
    "content": "<?php\n/*************************************************************************************\n * tsql.php\n * --------\n * Author: Duncan Lock (dunc@dflock.co.uk)\n * Copyright: (c) 2006 Duncan Lock (http://dflock.co.uk/), Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2005/11/22\n *\n * T-SQL language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2004/01/23 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2006/01/23)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'T-SQL',\n    'COMMENT_SINGLE' => array(1 => '--'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\"),\n    'HARDQUOTE' => array(\"N'\", \"'\"),\n    'ESCAPE_CHAR' => '[',\n    'KEYWORDS' => array(\n        1 => array(\n            /*\n                Built-in functions\n                Highlighted in pink.\n                Moved these to first array so that functions like @@ROWCOUNT\n                weren't broken up into @@ in black and ROWCOUNT in blue\n                This would prevent the correct pink coloring from taking place.\n                Not sure of any other downsides to this.\n            */\n\n            //Configuration Functions\n            '@@DATEFIRST','@@OPTIONS','@@DBTS','@@REMSERVER','@@LANGID','@@SERVERNAME',\n            '@@LANGUAGE','@@SERVICENAME','@@LOCK_TIMEOUT','@@SPID','@@MAX_CONNECTIONS',\n            '@@TEXTSIZE','@@MAX_PRECISION','@@VERSION','@@NESTLEVEL',\n\n            //Cursor Functions\n            '@@CURSOR_ROWS','@@FETCH_STATUS',\n\n            //Date and Time Functions\n            'DATEADD','DATEDIFF','DATENAME','DATEPART','GETDATE','GETUTCDATE',\n            'DATEFROMPARTS','DATETIMEFROMPARTS', 'SMALLDATETIMEFROMPARTS', 'DATETIME2FROMPARTS', 'TIMEFROMPARTS',\n            'CURRENT_TIME', 'CURRENT_TIMESTAMP', 'SYSDATETIME', 'SYSUTCDATETIME',\n            'YEAR', 'QUARTER', 'MONTH', 'DAY', 'HOUR', 'MINUTE', 'SECOND',\n            'EOMONTH',\n\n            //Mathematical Functions\n            'ABS','DEGREES','RAND','ACOS','EXP','ROUND','ASIN','FLOOR','SIGN',\n            'ATAN','LOG','SIN','ATN2','LOG10','SQUARE','CEILING','PI','SQRT','COS',\n            'POWER','TAN','COT','RADIANS', 'RANK',\n\n            //Meta Data Functions\n            'COL_LENGTH','COL_NAME','FULLTEXTCATALOGPROPERTY',\n            'COLUMNPROPERTY','FULLTEXTSERVICEPROPERTY','DATABASEPROPERTY','INDEX_COL',\n            'DATABASEPROPERTYEX','INDEXKEY_PROPERTY','DB_ID','INDEXPROPERTY','DB_NAME',\n            'OBJECT_ID','FILE_ID','OBJECT_NAME','FILE_NAME','OBJECTPROPERTY','FILEGROUP_ID',\n            '@@PROCID','FILEGROUP_NAME','SQL_VARIANT_PROPERTY','FILEGROUPPROPERTY',\n            'TYPEPROPERTY','FILEPROPERTY','OBJECT_SCHEMA_NAME', 'SCHEMA_ID', 'SCHEMA_NAME', 'OBJECT_DEFINITION',\n\n            //Security Functions\n            'IS_SRVROLEMEMBER','SUSER_SID','SUSER_SNAME','USER_NAME', 'SUSER_NAME', 'USER_ID',\n            'HAS_DBACCESS','IS_MEMBER', 'CURRENT_USER',\n\n            //String Functions\n            'ASCII','SOUNDEX','PATINDEX','CHARINDEX','REPLACE','STR','LEFT', 'RIGHT','DATALENGTH','HASHBYTES',\n            'DIFFERENCE','QUOTENAME','STUFF','REPLICATE','SUBSTRING','LEN',\n            'REVERSE','UNICODE','LOWER','UPPER','LTRIM','RTRIM','FORMAT','TRY_CONVERT','TRY_PARSE','PARSE','CONVERT','CONCAT',\n\n            //System Functions\n            'APP_NAME','COLLATIONPROPERTY','@@ERROR','FORMATMESSAGE',\n            'GETANSINULL','HOST_ID','HOST_NAME','IDENT_CURRENT','IDENT_INCR',\n            'IDENT_SEED','@@IDENTITY','ISDATE','ISNUMERIC','PARSENAME','PERMISSIONS','PROGRAM_NAME',\n            '@@ROWCOUNT','ROWCOUNT_BIG','SCOPE_IDENTITY','SERVERPROPERTY','SESSIONPROPERTY',\n            'STATS_DATE','@@TRANCOUNT',\n\n            // Error handling\n            'ERROR_STATE', 'ERROR_SEVERITY', 'ERROR_NUMBER', 'ERROR_MESSAGE', 'ERROR_LINE', 'ERROR_PROCEDURE',\n\n            //System Statistical Functions\n            '@@CONNECTIONS','@@PACK_RECEIVED','@@CPU_BUSY','@@PACK_SENT',\n            '@@TIMETICKS','@@IDLE','@@TOTAL_ERRORS','@@IO_BUSY',\n            '@@TOTAL_READ','@@PACKET_ERRORS','@@TOTAL_WRITE',\n\n            //Text and Image Functions\n            'TEXTPTR','TEXTVALID',\n\n            //Aggregate functions\n            'AVG', 'MAX', 'BINARY_CHECKSUM', 'MIN', 'CHECKSUM', 'SUM', 'CHECKSUM_AGG',\n            'STDEV', 'COUNT', 'STDEVP', 'COUNT_BIG', 'VAR', 'VARP', 'ROW_NUMBER',\n            'LAG', 'LEAD', 'PERCENT_RANK', 'CUME_DIST', 'FIRST_VALUE', 'LAST_VALUE',\n            'PERCENTILE_CONT', 'PERCENTILE_DESC',\n\n            // Logic functions\n            'CHOOSE', 'IIF', 'ISNULL', 'COALESCE', 'NULLIF',\n\n            // GUID\n            'NEWID', 'NEWSEQUENTIALID',\n        ),\n        2 => array(\n            // Datatypes\n            'bigint', 'tinyint', 'money',\n            'smallmoney', 'datetime', 'smalldatetime',\n            'text', 'nvarchar', 'ntext', 'varbinary', 'image',\n            'sql_variant', 'uniqueidentifier', 'smallint', 'int',\n            'xml', 'hierarchyid', 'geography', 'geometry', 'varchar', 'char', 'nchar',\n            'numeric', 'decimal', 'bit', 'sysname', 'date', 'time', 'datetime2', 'datetimeoffset',\n\n            // Keywords\n            'ABSOLUTE', 'ACTION', 'ADD', 'ADMIN', 'AFTER', 'AGGREGATE', 'ALIAS', 'ALLOCATE', 'ALLOWED', 'ALTER', 'ARE', 'ARRAY', 'AS',\n            'ASC', 'ASSERTION', 'AT', 'ATOMIC', 'AUDIT', 'AUTHORIZATION', 'AVAILABILITY', 'BACKUP', 'BEFORE', 'BEGIN', 'BINARY', 'BLOB', 'BOOLEAN', 'BOTH', 'BREADTH',\n            'BREAK', 'BROWSE', 'BUCKET_COUNT', 'BULK', 'BY', 'CACHE', 'CALL', 'CASCADE', 'CASCADED', 'CASE', 'CAST', 'CATALOG', 'CHARACTER', 'CHECK', 'CHECKCONSTRAINTS',\n            'CHECKDB', 'CHECKPOINT',\n            'CLASS', 'CLEAR', 'CLOB', 'CLOSE', 'CLUSTERED', 'COLLATE', 'COLLATION', 'COLUMN', 'COLUMNSTORE', 'COMMIT',\n            'COMMITTED', 'COMPLETION', 'COMPUTE', 'CONFIGURATION',\n            'CONNECT', 'CONNECTION', 'CONSTRAINT', 'CONSTRAINTS', 'CONSTRUCTOR', 'CONTAINMENT', 'CONTAINS', 'CONTAINSTABLE', 'CONTINUE', 'CORRESPONDING', 'CREATE',\n            'CUBE', 'CURRENT', 'CURRENT_DATE', 'CURRENT_PATH', 'CURRENT_ROLE',\n            'CURSOR', 'CYCLE', 'DATA', 'DATA_MIRRORING', 'DATABASE', 'DBCC', 'DEALLOCATE', 'DEC', 'DECLARE', 'DEFAULT', 'DEFERRABLE',\n            'DEFERRED', 'DELAY', 'DELAYED_DURABILITY', 'DELETE', 'DENY', 'DEPTH', 'DEREF', 'DESC', 'DESCRIBE', 'DESCRIPTOR', 'DESTROY', 'DESTRUCTOR', 'DETERMINISTIC',\n            'DIAGNOSTICS', 'DIALOG', 'DICTIONARY', 'DISABLED', 'DISCONNECT', 'DISK', 'DISTINCT', 'DISTRIBUTED', 'DOMAIN', 'DOUBLE', 'DROP', 'DROPCLEANBUFFERS', 'DROP_EXISTING',\n            'DUMMY', 'DUMP', 'DURABILITY', 'DYNAMIC',\n            'EACH', 'ELSE', 'END', 'END-EXEC', 'EQUALS', 'ERRLVL', 'ESCAPE', 'EVERY', 'EXCEPT', 'EXCEPTION', 'EXEC', 'EXECUTE', 'EXIT',\n            'EXTERNAL', 'FALSE', 'FETCH', 'FILE', 'FILLFACTOR', 'FIRST', 'FLOAT', 'FOR', 'FOR ATTACH', 'FOR ATTACH_REBUILD_LOG', 'FORCESCAN', 'FORCESEEK', 'FOREIGN', 'FOUND', 'FREE',\n            'FREEPROCCACHE', 'FREETEXT', 'FREETEXTTABLE',\n            'FROM', 'FUNCTION', 'GENERAL', 'GET', 'GLOBAL', 'GO', 'GOTO', 'GRANT', 'GROUP', 'GROUPING', 'HAVING', 'HOLDLOCK', 'HOST',\n            'IDENTITY', 'IDENTITY_INSERT', 'IDENTITYCOL', 'IF', 'IGNORE', 'IMMEDIATE', 'INDEX', 'INDICATOR', 'INITIALIZE', 'INITIALLY',\n            'INOUT', 'INPUT', 'INSERT', 'INTEGER', 'INTERSECT', 'INTERVAL', 'INTO', 'IS', 'ISOLATION', 'ITERATE', 'KEY',\n            'KILL', 'LANGUAGE', 'LARGE', 'LAST', 'LATERAL', 'LEADING', 'LESS', 'LEVEL', 'LIMIT', 'LINENO', 'LOAD', 'LOCAL',\n            'LOCALTIME', 'LOCALTIMESTAMP', 'LOCATOR', 'MAP', 'MASTER KEY', 'MATCH', 'MATCHED', 'MEMORY_OPTIMIZED', 'MEMORY_OPTIMIZED_DATA', 'MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT', 'MESSAGE', 'MILLISECOND', 'MODIFIES', 'MODIFY', 'MODULE', 'NAMES', 'NANOSECOND', 'NATIONAL', 'NATIVE_COMPILATION',\n            'NATURAL', 'NCLOB', 'NEW', 'NEXT', 'NO', 'NO_INFOMSGS', 'NOCHECK', 'NOCOUNT', 'NONCLUSTERED', 'NONE', 'OBJECT', 'OF',\n            'OFF', 'OFFSET', 'OFFSETS', 'OLD', 'ON', 'ONLY', 'OPEN', 'OPENDATASOURCE', 'OPENQUERY', 'OPENROWSET', 'OPENXML', 'OPERATION', 'OPTION',\n            'OPTIMIZER_WHATIF',\n            'ORDER', 'ORDINALITY', 'OUT', 'OUTPUT', 'OVER', 'OWNER', 'PAD', 'PARAMETER', 'PARTIAL', 'PARTITION', 'PASSWORD', 'PATH', 'PERCENT', 'PLAN',\n            'POSTFIX', 'PREFIX', 'PREORDER', 'PREPARE', 'PRESERVE', 'PRECEDING', 'PREVIOUS', 'PRIMARY', 'PRINT', 'PRIOR', 'PRIVILEGES', 'PROC', 'PROCEDURE',\n            'PUBLIC', 'QUERYRULEOFF', 'QUERYTRACEON', 'RAISERROR', 'RANGE', 'READ', 'READS', 'READTEXT', 'REAL', 'REBUILD', 'RECEIVE', 'RECONFIGURE', 'RECURSIVE', 'REF', 'REFERENCES', 'REFERENCING', 'RELATIVE',\n            'REPEATABLE', 'REPLICATION', 'RESTORE', 'RESTRICT', 'RESULT', 'RETURN', 'RETURNS', 'REVOKE', 'ROLE', 'ROLLBACK', 'ROLLUP', 'ROUTINE', 'ROW', 'ROWCOUNT',\n            'ROWGUIDCOL', 'ROWS', 'RULE', 'SAVE', 'SAVEPOINT', 'SCHEMA', 'SCHEMA_AND_DATA', 'SCOPE', 'SCROLL', 'SEARCH', 'SECONDS', 'SECTION', 'SELECT', 'SEND', 'SENT',\n            'SEQUENCE', 'SERIALIZABLE', 'SERVER', 'SESSION', 'SESSION_USER', 'SET', 'SETCPUWEIGHT', 'SETIOWEIGHT',\n            'SETS', 'SETUSER', 'SHOW_STATISTICS', 'SHOWWEIGHTS', 'SHUTDOWN', 'SIZE', 'SNAPSHOT', 'SPACE', 'SPECIFIC', 'SPECIFICATION',\n            'SPECIFICTYPE', 'SQL', 'SQLEXCEPTION', 'SQLPERF', 'SQLSTATE', 'SQLWARNING', 'START', 'STAT_HEADER', 'STATE', 'STATEMENT', 'STATIC', 'STATISTICS', 'STRUCTURE',\n            'SYSTEM_USER', 'TABLE', 'TEMPORARY', 'TERMINATE', 'TEXTSIZE', 'THAN', 'THEN', 'THROW', 'TIES', 'TIMESTAMP', 'TIMEZONE_HOUR', 'TIMEZONE_MINUTE',\n            'TO', 'TOP', 'TRAILING', 'TRAN', 'TRANSACTION', 'TRANSLATION', 'TREAT', 'TRIGGER', 'TRUE', 'TRUNCATE', 'TSEQUAL', 'TYPE', 'UNBOUNDED', 'UNCOMMITTED',\n            'UNDEFINED', 'UNDER', 'UNION', 'UNIQUE', 'UNKNOWN', 'UNNEST', 'UPDATE', 'UPDATETEXT', 'USAGE', 'USE', 'USER', 'USING', 'VALUE', 'VALUES',\n            'VARIABLE', 'VARYING', 'VIEW', 'WAITFOR', 'WHEN', 'WHENEVER', 'WHERE', 'WHILE', 'WITH', 'WITHIN', 'WITHOUT', 'WORK', 'WRITE', 'WRITETEXT', 'ZONE',\n\n            // cursor keywords\n            'FORWARD_ONLY', 'READ_ONLY', 'FAST_FORWARD',\n\n            // resource governor\n            'RESOURCE', 'GOVERNOR', 'POOL', 'WORKLOAD',\n\n            // other keywords that were missing or are new in SQL Server 2012.\n            'ANSI_NULL_DFLT_ON',\n            'ACCENT_SENSITIVITY', 'ACTIVATION', 'ACTIVE', 'ADDRESS', 'AES', 'AFFINITY', 'ALGORITHM', 'ALL_SPARSE_COLUMNS', 'ALLOW_MULTIPLE_EVENT_LOSS',\n            'ALLOW_PAGE_LOCKS', 'ALLOW_ROW_LOCKS', 'ALLOW_SINGLE_EVENT_LOSS', 'ALLOW_SNAPSHOT_ISOLATION', 'ANONYMOUS', 'ANSI_DEFAULTS', 'ANSI_NULL_DEFAULT',\n            'ANSI_NULL_DFLT_OFF', 'ANSI_NULLS', 'ANSI_PADDING', 'ANSI_WARNINGS', 'ARITHABORT', 'ARITHIGNORE', 'ASSEMBLY', 'ASYMMETRIC', 'ATTACH_REBUILD_LOG', 'AUTO', 'AUTO_CLEANUP',\n            'AUTO_CLOSE', 'AUTO_CREATE_STATISTICS', 'AUTO_SHRINK', 'AUTO_UPDATE_STATISTICS', 'AUTO_UPDATE_STATISTICS_ASYNC', 'BATCHSIZE', 'BEGIN_DIALOG',\n            'BINDING', 'BROKER', 'BROKER_INSTANCE', 'BULK_LOGGED', 'CAP_CPU_PERCENT', 'CATALOG_DEFAULT', 'CATCH', 'CERTIFICATE', 'CHANGE_RETENTION',\n            'CHANGE_TRACKING', 'CHECK_EXPIRATION',  'CHECK_POLICY', 'CLASSIFIER_FUNCTION', 'CLUSTER', 'CODEPAGE', 'COLLECTION',\n            'COLUMN_SET', 'COMPATIBILITY_LEVEL', 'COMPRESSION', 'CONCAT_NULL_YIELDS_NULL', 'CONTENT', 'CONTRACT', 'CONVERSATION', 'CPU', 'CPU_ID', 'CREDENTIAL',\n            'CRYPTOGRAPHIC', 'CURSOR_CLOSE_ON_COMMIT', 'CURSOR_DEFAULT', 'DATA_COMPRESSION', 'DATABASE_MIRRORING', 'DATAFILETYPE', 'DATE_CORRELATION_OPTIMIZATION',\n            'DATEFIRST', 'DATEFORMAT', 'DAYS', 'DB_CHAINING', 'DEADLOCK_PRIORITY', 'DECRYPTION', 'DEFAULT_DATABASE', 'DEFAULT_FULLTEXT_LANGUAGE', 'DEFAULT_LANGUAGE',\n            'DEFAULT_SCHEMA', 'DIRECTORY_NAME', 'DISABLE_BROKER', 'DOCUMENT', 'EMERGENCY', 'ENABLE_BROKER', 'ENCRYPTION', 'ENDPOINT', 'ERROR_BROKER_CONVERSATIONS',\n            'ERRORFILE', 'EVENT', 'EVENT_RETENTION_MODE', 'EXPAND', 'EXTERNAL_ACCESS', 'FAILOVER', 'FAST', 'FIELDTERMINATOR', 'FILEGROUP', 'FILEGROWTH', 'FILENAME',\n            'FILEPATH', 'FILESTREAM', 'FILESTREAM_ON', 'FILETABLE_DIRECTORY', 'FILETABLE_NAMESPACE', 'FIPS_FLAGGER', 'FIRE_TRIGGERS', 'FIRSTROW', 'FMTONLY', 'FORCE',\n            'FORCE_SERVICE_ALLOW_DATA_LOSS', 'FORCED', 'FORCEPLAN', 'FORMATFILE', 'FULLTEXT', 'GROUP_MAX_REQUESTS', 'HASH', 'HIGH', 'HONOR_BROKER_PRIORITY', 'HOURS',\n            'HTTP', 'IGNORE_CONSTRAINTS', 'IGNORE_DUP_KEY', 'IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX', 'IGNORE_TRIGGERS', 'IMPLICIT_TRANSACTIONS', 'IMPORTANCE',\n            'INCLUDE', 'INCREMENT', 'INCREMENTAL', 'INFINITE', 'INIT', 'INITIATOR', 'INSTEAD', 'IO', 'KB', 'KEEP', 'KEEPDEFAULTS', 'KEEPFIXED', 'KEEPIDENTITY',\n            'KEEPNULLS', 'KERBEROS', 'KILOBYTES_PER_BATCH', 'LASTROW', 'LIFETIME', 'LIST', 'LISTENER_IP', 'LISTENER_PORT', 'LOCAL_SERVICE_NAME', 'LOCK_ESCALATION',\n            'LOCK_TIMEOUT', 'LOOP', 'LOW', 'MAX_CPU_PERCENT', 'MAX_DISPATCH_LATENCY', 'MAX_DOP', 'MAX_EVENT_SIZE', 'MAX_FILES', 'MAX_MEMORY', 'MAX_MEMORY_PERCENT',\n            'MAX_QUEUE_READERS', 'MAX_ROLLOVER_FILES', 'MAXDOP', 'MAXERRORS', 'MAXRECURSION', 'MAXSIZE', 'MAXVALUE', 'MB', 'MEDIUM', 'MEMORY_PARTITION_MODE',\n            'MERGE', 'MESSAGE_FORWARD_SIZE', 'MESSAGE_FORWARDING', 'MIN_CPU_PERCENT', 'MIN_MEMORY_PERCENT', 'MINUTES', 'MINVALUE', 'MIRROR_ADDRESS', 'MOVE',\n            'MULTI_USER', 'MUST_CHANGE', 'NEGOTIATE', 'NESTED_TRIGGERS', 'NEW_ACCOUNT', 'NEW_BROKER', 'NEWNAME', 'NO_COMPRESSION', 'NO_EVENT_LOSS', 'NO_WAIT', 'NOEXEC', 'NOEXPAND',\n            'NOLOCK', 'NON_TRANSACTED_ACESS', 'NOWAIT', 'NTLM', 'NUMA_NODE_ID', 'NUMANODE', 'NUMERIC_ROUNDABORT', 'OFFLINE', 'OLD_ACCOUNT', 'ON_FAILURE', 'ONLINE',\n            'OPTIMIZE', 'OVERRIDE', 'PAD_INDEX', 'PAGE', 'PAGE_VERIFY', 'PAGLOCK', 'PARAMETERIZATION', 'PARSEONLY', 'PARTITIONS', 'PARTNER', 'PER_CPU', 'PER_NODE',\n            'PERMISSION_SET', 'PERSISTED', 'POISON_MESSAGE_HANDLING', 'POPULATION', 'PRIORITY', 'PRIORITY_LEVEL', 'PRIVATE', 'PROCEDURE_NAME', 'PROCESS', 'PROFILE',\n            'PROPERTY', 'PROPERTY_DESCRIPTION', 'PROPERTY_INT_ID', 'PROPERTY_SET_GUID', 'PROVIDER', 'QUERY_GOVERNOR_COST_LIMIT', 'QUEUE', 'QUEUE_DELAY',\n            'QUOTED_IDENTIFIER', 'RC4', 'READ_COMMITTED_SNAPSHOT', 'READ_WRITE', 'READCOMMITTED', 'READCOMMITTEDLOCK', 'READONLY', 'READPAST', 'READUNCOMMITTED',\n            'READWRITE', 'RECOMPILE', 'RECOVERY', 'RECOVERY FULL', 'RECOVERY SIMPLE', 'RECURSIVE_TRIGGERS', 'REGENERATE', 'REMOTE', 'REMOTE_PROC_TRANSACTIONS', 'REMOTE_SERVICE_NAME', 'REMOVE',\n            'REPEATABLEREAD', 'REQUEST_MAX_CPU_TIME_SEC', 'REQUEST_MAX_MEMORY_GRANT_PERCENT', 'REQUEST_MEMORY_GRANT_TIMEOUT_SEC', 'REQUIRED', 'RESERVE_DISK_SPACE',\n            'RESET', 'RESTART', 'RESTRICTED_USER', 'RESUME', 'RETENTION', 'ROBUST', 'ROUTE', 'ROWLOCK', 'ROWS_PER_BATCH', 'ROWTERMINATOR', 'SAFE', 'SAFETY',\n            'SCHEDULER', 'SCHEMABINDING', 'SCHEME', 'SECRET', 'SERVICE', 'SERVICE_BROKER', 'SERVICE_NAME', 'SETERROR', 'SHOWPLAN', 'SHOWPLAN_ALL', 'SHOWPLAN_TEXT',\n            'SHOWPLAN_XML', 'SIMPLE', 'SINGLE_USER', 'SORT_IN_TEMPDB', 'SOURCE', 'SPARSE', 'SPATIAL_WINDOW_MAX_CELLS', 'SPLIT', 'STARTED', 'STARTUP_STATE',\n            'STATISTICAL_SEMANTICS', 'STATISTICS_NORECOMPUTE', 'STATUS', 'STOP', 'STOPLIST', 'STOPPED', 'SUPPORTED', 'SUSPEND', 'SWITCH', 'SYMMETRIC', 'SYNONYM',\n            'SYSTEM', 'TABLOCK', 'TABLOCKX', 'TARGET', 'TARGET_RECOVERY_TIME', 'TCP', 'TIMEOUT', 'TORN_PAGE_DETECTION', 'TRACK_CAUSALITY', 'TRACK_COLUMNS_UPDATED',\n            'TRANSFER', 'TRANSFORM_NOISE_WORDS', 'TRUSTWORTHY', 'TRY', 'TSQL', 'TWO_DIGIT_YEAR_CUTOFF', 'UNCHECKED', 'UNLIMITED', 'UNLOCK', 'UNSAFE', 'UPDLOCK',\n            'USED', 'VALID_XML', 'VALIDATION', 'VIEW_METADATA', 'VISIBILITY', 'WEEKDAY', 'WELL_FORMED_XML', 'WINDOWS', 'WITH SUBJECT', 'WITNESS', 'XACT_ABORT', 'XLOCK',\n\n            /* AlwaysOn stuff */\n            'AUTHENTICATION', 'ENDPOINT_URL', 'LISTENER', 'COPY_ONLY', 'NORECOVERY', 'NOUNLOAD', 'HADR', 'PORT',\n            'FAILOVER_MODE', 'MANUAL', 'AVAILABILITY_MODE', 'ASYNCHRONOUS_COMMIT', 'SYNCHRONOUS_COMMIT', 'AUTOMATIC', 'REPLICA', 'READ_ONLY_ROUTING_URL', 'BACKUP_PRIORITY', 'SECONDARY_ROLE', 'ALLOW_CONNECTIONS', 'AUTOMATED_BACKUP_PREFERENCE', 'SECONDARY', 'SECONDARY_ONLY', 'PRIMARY_ROLE', 'READ_ONLY_ROUTING_LIST',\n        ),\n        3 => array(\n            /*\n                System stored procedures\n                Higlighted dark brown\n            */\n\n            // CLR stored procedures\n            'sp_FuzzyLookupTableMaintenanceInstall', 'sp_FuzzyLookupTableMaintenanceInvoke', 'sp_FuzzyLookupTableMaintenanceUninstall',\n\n            // system procedures named with xp_\n            'xp_grantlogin', 'xp_logininfo', 'xp_repl_convert_encrypt_sysadmin_wrapper', 'xp_revokelogin',\n\n            // extended procedures\n            'xp_availablemedia',  'xp_cmdshell', 'xp_create_subdir', 'xp_delete_file', 'xp_dirtree', 'xp_enum_oledb_providers',\n            'xp_enumerrorlogs', 'xp_enumgroups',  'xp_fileexist', 'xp_fixeddrives', 'xp_get_script', 'xp_get_tape_devices',\n            'xp_getnetname', 'xp_instance_regaddmultistring',  'xp_instance_regdeletekey', 'xp_instance_regdeletevalue',\n            'xp_instance_regenumkeys', 'xp_instance_regenumvalues',  'xp_instance_regread', 'xp_instance_regremovemultistring',\n            'xp_instance_regwrite', 'xp_logevent', 'xp_loginconfig', 'xp_msver',  'xp_msx_enlist', 'xp_passAgentInfo',\n            'xp_prop_oledb_provider', 'xp_qv', 'xp_readerrorlog', 'xp_regaddmultistring',  'xp_regdeletekey', 'xp_regdeletevalue',\n            'xp_regenumkeys', 'xp_regenumvalues', 'xp_regread', 'xp_regremovemultistring',  'xp_regwrite', 'xp_replposteor',\n            'xp_servicecontrol', 'xp_sprintf', 'xp_sqlagent_enum_jobs', 'xp_sqlagent_is_starting',  'xp_sqlagent_monitor',\n            'xp_sqlagent_notify', 'xp_sqlagent_param', 'xp_sqlmaint', 'xp_sscanf', 'xp_subdirs',  'xp_sysmail_activate',\n            'xp_sysmail_attachment_load',  'xp_sysmail_format_query',\n\n            // extended procedures named with sp_\n            'sp_AddFunctionalUnitToComponent', 'sp_audit_write', 'sp_availability_group_command_internal', 'sp_begin_parallel_nested_tran',\n            'sp_bindsession', 'sp_change_tracking_waitforchanges', 'sp_commit_parallel_nested_tran', 'sp_control_dbmasterkey_password',\n            'sp_createorphan', 'sp_cursor', 'sp_cursorclose', 'sp_cursorexecute', 'sp_cursorfetch', 'sp_cursoropen', 'sp_cursoroption',\n            'sp_cursorprepare', 'sp_cursorprepexec', 'sp_cursorunprepare', 'sp_delete_http_namespace_reservation',\n            'sp_describe_first_result_set', 'sp_describe_undeclared_parameters', 'sp_droporphans', 'sp_enable_sql_debug', 'sp_execute',\n            'sp_executesql', 'sp_fulltext_getdata', 'sp_fulltext_keymappings', 'sp_fulltext_pendingchanges', 'sp_get_query_template',\n            'sp_getbindtoken', 'sp_getschemalock', 'sp_http_generate_wsdl_complex', 'sp_http_generate_wsdl_simple',\n            'sp_migrate_user_to_contained', 'sp_new_parallel_nested_tran_id', 'sp_OACreate', 'sp_OADestroy', 'sp_OAGetErrorInfo',\n            'sp_OAGetProperty', 'sp_OAMethod', 'sp_OASetProperty', 'sp_OAStop', 'sp_PostAgentInfo', 'sp_prepare', 'sp_prepexec',\n            'sp_prepexecrpc', 'sp_releaseschemalock', 'sp_repl_generateevent', 'sp_replcmds', 'sp_replcounters', 'sp_replddlparser',\n            'sp_repldone', 'sp_replflush', 'sp_replhelp', 'sp_replsendtoqueue', 'sp_replsetsyncstatus', 'sp_repltrans',\n            'sp_replwritetovarbin', 'sp_reserve_http_namespace', 'sp_reset_connection', 'sp_resyncexecute', 'sp_resyncexecutesql',\n            'sp_resyncprepare', 'sp_resyncuniquetable', 'sp_rollback_parallel_nested_tran', 'sp_server_diagnostics',\n            'sp_SetOBDCertificate', 'sp_setuserbylogin', 'sp_showmemo_xml', 'sp_start_user_instance', 'sp_testlinkedserver',\n            'sp_trace_create', 'sp_trace_generateevent', 'sp_trace_setevent', 'sp_trace_setfilter', 'sp_trace_setstatus', 'sp_unprepare',\n            'sp_update_user_instance', 'sp_xml_preparedocument', 'sp_xml_removedocument', 'sp_xp_cmdshell_proxy_account'\n\n        ),\n        4 => array(\n            // DMVs/DMFs/catalog views etc. highlighted green.\n\n            //schemas\n            'sys', 'INFORMATION_SCHEMA',\n\n            // inline TVFs\n            'dm_cryptographic_provider_algorithms','dm_cryptographic_provider_keys','dm_cryptographic_provider_sessions',\n            'dm_db_database_page_allocations','dm_db_index_operational_stats','dm_db_index_physical_stats',\n            'dm_db_missing_index_columns','dm_db_objects_disabled_on_compatibility_level_change',\n            'dm_exec_cached_plan_dependent_objects','dm_exec_cursors','dm_exec_describe_first_result_set',\n            'dm_exec_describe_first_result_set_for_object','dm_exec_plan_attributes','dm_exec_query_plan','dm_exec_sql_text',\n            'dm_exec_text_query_plan','dm_exec_xml_handles','dm_fts_index_keywords','dm_fts_index_keywords_by_document',\n            'dm_fts_index_keywords_by_property','dm_fts_parser','dm_io_virtual_file_stats','dm_logconsumer_cachebufferrefs',\n            'dm_logconsumer_privatecachebuffers','dm_logpool_consumers','dm_logpool_sharedcachebuffers','dm_logpoolmgr_freepools',\n            'dm_logpoolmgr_respoolsize','dm_logpoolmgr_stats','dm_os_volume_stats','dm_sql_referenced_entities',\n            'dm_sql_referencing_entities','fn_builtin_permissions','fn_check_object_signatures','fn_dblog','fn_dump_dblog',\n            'fn_get_audit_file','fn_get_sql','fn_helpcollations','fn_MSxe_read_event_stream','fn_trace_gettable',\n            'fn_translate_permissions', 'fn_validate_plan_guide',  'fn_xe_file_target_read_file',\n\n            // multi-statement TVFs\n            'fn_EnumCurrentPrincipals', 'fn_helpdatatypemap', 'fn_listextendedproperty', 'fn_my_permissions',\n            'fn_PhysLocCracker', 'fn_replgetcolidfrombitmap', 'fn_RowDumpCracker', 'fn_servershareddrives',\n            'fn_trace_geteventinfo', 'fn_trace_getfilterinfo', 'fn_trace_getinfo',  'fn_virtualfilestats',\n            'fn_virtualservernodes',\n\n            // aggregate functions\n            'GeographyCollectionAggregate', 'GeographyConvexHullAggregate', 'GeographyEnvelopeAggregate', 'GeographyUnionAggregate',\n            'GeometryCollectionAggregate', 'GeometryConvexHullAggregate', 'GeometryEnvelopeAggregate', 'GeometryUnionAggregate',\n            'ORMask',\n\n            // scalar functions\n            'fn_cColvEntries_80','fn_cdc_check_parameters','fn_cdc_get_column_ordinal','fn_cdc_get_max_lsn','fn_cdc_get_min_lsn',\n            'fn_cdc_has_column_changed','fn_cdc_hexstrtobin','fn_cdc_map_lsn_to_time','fn_cdc_map_time_to_lsn','fn_fIsColTracked',\n            'fn_GetCurrentPrincipal','fn_GetRowsetIdFromRowDump','fn_hadr_backup_is_preferred_replica','fn_IsBitSetInBitmask',\n            'fn_isrolemember','fn_MapSchemaType','fn_MSdayasnumber','fn_MSgeneration_downloadonly','fn_MSget_dynamic_filter_login',\n            'fn_MSorbitmaps','fn_MSrepl_map_resolver_clsid','fn_MStestbit','fn_MSvector_downloadonly','fn_numberOf1InBinaryAfterLoc',\n            'fn_numberOf1InVarBinary','fn_PhysLocFormatter','fn_repladjustcolumnmap','fn_repldecryptver4','fn_replformatdatetime',\n            'fn_replgetparsedddlcmd','fn_replp2pversiontotranid', 'fn_replreplacesinglequote',\n            'fn_replreplacesinglequoteplusprotectstring', 'fn_repluniquename', 'fn_replvarbintoint', 'fn_sqlvarbasetostr',\n            'fn_varbintohexstr', 'fn_varbintohexsubstring', 'fn_yukonsecuritymodelrequired',\n\n            // service queues\n            'EventNotificationErrorsQueue', 'QueryNotificationErrorsQueue', 'ServiceBrokerQueue',\n\n            // system tables\n            'sysallocunits','sysasymkeys','sysaudacts','sysbinobjs','sysbinsubobjs','sysbrickfiles','syscerts','syschildinsts','sysclones','sysclsobjs',\n            'syscolpars','syscompfragments','sysconvgroup','syscscolsegments','syscsdictionaries','sysdbfiles','sysdbfrag','sysdbreg','sysdercv','sysdesend',\n            'sysendpts','sysfgfrag','sysfiles1','sysfoqueues','sysfos','sysftinds','sysftproperties','sysftsemanticsdb','sysftstops','sysguidrefs',\n            'sysidxstats','sysiscols','syslnklgns','sysmultiobjrefs','sysnsobjs','sysobjkeycrypts','sysobjvalues','sysowners','sysphfg','syspriorities',\n            'sysprivs','syspru','sysprufiles','sysqnames','sysremsvcbinds','sysrmtlgns','sysrowsetrefs','sysrowsets','sysrscols','sysrts',\n            'sysscalartypes','sysschobjs','sysseobjvalues','syssingleobjrefs','syssoftobjrefs','syssqlguides','systypedsubobjs','sysusermsgs','syswebmethods',\n            'sysxlgns','sysxmitbody', 'sysxmitqueue', 'sysxmlcomponent', 'sysxmlfacet', 'sysxmlplacement', 'sysxprops', 'sysxsrvs',\n\n            // user tables (these are currently in dbo schema but will be fixed)\n            'trace_xe_action_map', 'trace_xe_event_map',\n\n            // backward compatibility views\n            'sysaltfiles', 'syscacheobjects', 'syscharsets', 'syscolumns', 'syscomments', 'sysconfigures', 'sysconstraints', 'syscurconfigs', 'syscursorcolumns',\n            'syscursorrefs', 'syscursors', 'syscursortables', 'sysdatabases', 'sysdepends', 'sysdevices', 'sysfilegroups', 'sysfiles', 'sysforeignkeys',\n            'sysfulltextcatalogs', 'sysindexes', 'sysindexkeys', 'syslanguages', 'syslockinfo', 'syslogins', 'sysmembers', 'sysmessages', 'sysobjects',\n            'sysoledbusers', 'sysopentapes', 'sysperfinfo', 'syspermissions', 'sysprocesses', 'sysprotects', 'sysreferences', 'sysremotelogins', 'sysservers',\n            'systypes', 'sysusers',\n\n            // INFORMATION_SCHEMA views\n            'COLUMN_DOMAIN_USAGE', 'COLUMN_PRIVILEGES', 'COLUMNS', 'CONSTRAINT_COLUMN_USAGE',\n            'CONSTRAINT_TABLE_USAGE', 'KEY_COLUMN_USAGE', 'PARAMETERS', 'REFERENTIAL_CONSTRAINTS', 'ROUTINE_COLUMNS',\n            'ROUTINES', 'SCHEMATA', 'SEQUENCES', 'TABLE_CONSTRAINTS', 'TABLE_PRIVILEGES', 'TABLES', 'VIEW_COLUMN_USAGE',\n            'VIEW_TABLE_USAGE', 'VIEWS',\n\n            // catalog views\n            'default_constraints',\n            'all_columns', 'all_objects', 'all_parameters', 'all_sql_modules', 'all_views', 'allocation_units',\n            'assemblies', 'assembly_files', 'assembly_modules', 'assembly_references', 'assembly_types', 'asymmetric_keys',\n            'availability_databases_cluster', 'availability_group_listener_ip_addresses', 'availability_group_listeners',\n            'availability_groups', 'availability_groups_cluster', 'availability_read_only_routing_lists',\n            'availability_replicas', 'backup_devices', 'certificates', 'change_tracking_databases', 'change_tracking_tables',\n            'check_constraints', 'column_store_dictionaries', 'column_store_index_stats', 'column_store_segments',\n            'column_type_usages', 'column_xml_schema_collection_usages', 'computed_columns', 'configurations',\n            'conversation_endpoints', 'conversation_groups', 'conversation_priorities', 'credentials', 'crypt_properties',\n            'cryptographic_providers', 'databases', 'endpoint_webmethods', 'endpoints', 'event_notification_event_types',\n            'event_notifications', 'events', 'extended_procedures', 'extended_properties', 'filegroups',\n            'filetable_system_defined_objects', 'filetables', 'foreign_key_columns', 'foreign_keys', 'fulltext_catalogs',\n            'fulltext_document_types', 'fulltext_index_catalog_usages', 'fulltext_index_columns', 'fulltext_index_fragments',\n            'fulltext_indexes', 'fulltext_languages', 'fulltext_semantic_language_statistics_database',\n            'fulltext_semantic_languages', 'fulltext_stoplists', 'fulltext_stopwords', 'fulltext_system_stopwords',\n            'function_order_columns', 'http_endpoints', 'identity_columns', 'index_columns', 'indexes', 'internal_tables',\n            'key_constraints', 'key_encryptions', 'linked_logins', 'login_token', 'master_files', 'numbered_procedure_parameters',\n            'numbered_procedures', 'objects', 'openkeys', 'parameter_type_usages', 'parameter_xml_schema_collection_usages',\n            'partition_functions', 'partition_parameters', 'partition_range_values', 'partition_schemes',\n            'partitions', 'plan_guides', 'procedures', 'registered_search_properties', 'registered_search_property_lists',\n            'remote_logins', 'remote_service_bindings', 'resource_governor_configuration',  'resource_governor_resource_pool_affinity',\n            'resource_governor_resource_pools', 'resource_governor_workload_groups', 'routes', 'schemas', 'securable_classes',\n            'server_assembly_modules', 'server_audit_specification_details', 'server_audit_specifications',\n            'server_audits', 'server_event_notifications', 'server_event_session_actions', 'server_event_session_events',\n            'server_event_session_fields', 'server_event_session_targets', 'server_event_sessions', 'server_events',\n            'server_file_audits', 'server_permissions', 'server_principal_credentials', 'server_principals', 'server_role_members',\n            'server_sql_modules', 'server_trigger_events', 'server_triggers', 'servers', 'service_broker_endpoints',\n            'service_contract_message_usages', 'service_contract_usages', 'service_contracts', 'service_message_types',\n            'service_queue_usages', 'service_queues', 'services', 'soap_endpoints', 'spatial_index_tessellations', 'spatial_indexes',\n            'spatial_reference_systems', 'sql_dependencies', 'sql_expression_dependencies', 'sql_logins', 'sql_modules', 'stats',\n            'stats_columns', 'symmetric_keys', 'synonyms', 'system_columns', 'system_components_surface_area_configuration',\n            'system_internals_allocation_units', 'system_internals_partition_columns', 'system_internals_partitions', 'system_objects',\n            'system_parameters', 'system_sql_modules', 'system_views', 'table_types', 'tcp_endpoints', 'trace_categories',\n            'trace_columns', 'trace_event_bindings', 'trace_events', 'trace_subclass_values', 'traces', 'transmission_queue',\n            'trigger_event_types', 'trigger_events', 'triggers', 'type_assembly_usages', 'types', 'user_token', 'via_endpoints',\n            'xml_indexes', 'xml_schema_attributes', 'xml_schema_collections', 'xml_schema_component_placements',\n            'xml_schema_components',  'xml_schema_elements', 'xml_schema_facets', 'xml_schema_model_groups', 'xml_schema_namespaces',\n            'xml_schema_types', 'xml_schema_wildcard_namespaces', 'xml_schema_wildcards',\n\n            // DMVs / DMFs\n            'dm_audit_actions', 'dm_audit_class_type_map', 'dm_broker_activated_tasks', 'dm_broker_connections', 'dm_broker_forwarded_messages',\n            'dm_broker_queue_monitors', 'dm_cdc_errors', 'dm_cdc_log_scan_sessions', 'dm_clr_appdomains', 'dm_clr_loaded_assemblies',\n            'dm_clr_properties', 'dm_clr_tasks', 'dm_cryptographic_provider_properties', 'dm_database_encryption_keys', 'dm_db_file_space_usage',\n            'dm_db_fts_index_physical_stats', 'dm_db_index_usage_stats', 'dm_db_log_space_usage', 'dm_db_mirroring_auto_page_repair',\n            'dm_db_mirroring_connections', 'dm_db_mirroring_past_actions', 'dm_db_missing_index_details', 'dm_db_missing_index_group_stats',\n            'dm_db_missing_index_groups', 'dm_db_partition_stats', 'dm_db_persisted_sku_features', 'dm_db_script_level', 'dm_db_session_space_usage',\n            'dm_db_task_space_usage', 'dm_db_uncontained_entities', 'dm_exec_background_job_queue', 'dm_exec_background_job_queue_stats',\n            'dm_exec_cached_plans', 'dm_exec_connections', 'dm_exec_procedure_stats', 'dm_exec_query_memory_grants', 'dm_exec_query_optimizer_info', 'dm_exec_query_profiles',\n            'dm_exec_query_resource_semaphores', 'dm_exec_query_stats', 'dm_exec_query_transformation_stats', 'dm_exec_requests', 'dm_exec_sessions',\n            'dm_exec_trigger_stats', 'dm_filestream_file_io_handles', 'dm_filestream_file_io_requests', 'dm_filestream_non_transacted_handles',\n            'dm_fts_active_catalogs', 'dm_fts_fdhosts', 'dm_fts_index_population', 'dm_fts_memory_buffers', 'dm_fts_memory_pools',\n            'dm_fts_outstanding_batches', 'dm_fts_population_ranges', 'dm_fts_semantic_similarity_population', 'dm_hadr_auto_page_repair',\n            'dm_hadr_availability_group_states', 'dm_hadr_availability_replica_cluster_nodes', 'dm_hadr_availability_replica_cluster_states',\n            'dm_hadr_availability_replica_states', 'dm_hadr_cluster', 'dm_hadr_cluster_members', 'dm_hadr_cluster_networks',\n            'dm_hadr_database_replica_cluster_states', 'dm_hadr_database_replica_states', 'dm_hadr_instance_node_map', 'dm_hadr_name_id_map',\n            'dm_io_backup_tapes', 'dm_io_cluster_shared_drives', 'dm_io_pending_io_requests', 'dm_logpool_hashentries',\n            'dm_logpool_stats', 'dm_os_buffer_descriptors', 'dm_os_child_instances', 'dm_os_cluster_nodes', 'dm_os_cluster_properties',\n            'dm_os_dispatcher_pools', 'dm_os_dispatchers', 'dm_os_hosts', 'dm_os_latch_stats', 'dm_os_loaded_modules',\n            'dm_os_memory_allocations', 'dm_os_memory_broker_clerks', 'dm_os_memory_brokers', 'dm_os_memory_cache_clock_hands',\n            'dm_os_memory_cache_counters', 'dm_os_memory_cache_entries', 'dm_os_memory_cache_hash_tables', 'dm_os_memory_clerks',\n            'dm_os_memory_node_access_stats', 'dm_os_memory_nodes', 'dm_os_memory_objects', 'dm_os_memory_pools', 'dm_os_nodes',\n            'dm_os_performance_counters', 'dm_os_process_memory', 'dm_os_ring_buffers', 'dm_os_schedulers',\n            'dm_os_server_diagnostics_log_configurations', 'dm_os_spinlock_stats', 'dm_os_stacks', 'dm_os_sublatches', 'dm_os_sys_info',\n            'dm_os_sys_memory', 'dm_os_tasks', 'dm_os_threads', 'dm_os_virtual_address_dump', 'dm_os_wait_stats', 'dm_os_waiting_tasks',\n            'dm_os_windows_info', 'dm_os_worker_local_storage', 'dm_os_workers', 'dm_qn_subscriptions', 'dm_repl_articles', 'dm_repl_schemas',\n            'dm_repl_tranhash', 'dm_repl_traninfo', 'dm_resource_governor_configuration', 'dm_resource_governor_resource_pool_affinity',\n            'dm_resource_governor_resource_pools', 'dm_resource_governor_workload_groups', 'dm_server_audit_status', 'dm_server_memory_dumps',\n            'dm_server_registry', 'dm_server_services', 'dm_tcp_listener_states', 'dm_tran_active_snapshot_database_transactions',\n            'dm_tran_active_transactions', 'dm_tran_commit_table', 'dm_tran_current_snapshot', 'dm_tran_current_transaction',\n            'dm_tran_database_transactions', 'dm_tran_locks', 'dm_tran_session_transactions', 'dm_tran_top_version_generators',\n            'dm_tran_transactions_snapshot', 'dm_tran_version_store', 'dm_xe_map_values', 'dm_xe_object_columns', 'dm_xe_objects', 'dm_xe_packages', 'dm_xe_sessions', 'dm_xe_session_targets',\n        ),\n        5 => array(\n\n            // system procedures (sorry, not categorized, but definitely more complete and updated for Denali)\n            // moved these to their own array because they overloaded array 3\n\n            'sp_add_agent_parameter', 'sp_add_agent_profile', 'sp_add_data_file_recover_suspect_db', 'sp_add_log_file_recover_suspect_db',\n            'sp_add_log_shipping_alert_job', 'sp_add_log_shipping_primary_database', 'sp_add_log_shipping_primary_secondary',\n            'sp_add_log_shipping_secondary_database', 'sp_add_log_shipping_secondary_primary', 'sp_addapprole', 'sp_addarticle',\n            'sp_adddatatype', 'sp_adddatatypemapping', 'sp_adddistpublisher', 'sp_adddistributiondb', 'sp_adddistributor',\n            'sp_adddynamicsnapshot_job', 'sp_addextendedproc', 'sp_addextendedproperty', 'sp_addlinkedserver', 'sp_addlinkedsrvlogin',\n            'sp_addlogin', 'sp_addlogreader_agent', 'sp_addmergealternatepublisher', 'sp_addmergearticle', 'sp_addmergefilter',\n            'sp_addmergelogsettings', 'sp_addmergepartition', 'sp_addmergepublication', 'sp_addmergepullsubscription',\n            'sp_addmergepullsubscription_agent', 'sp_addmergepushsubscription_agent', 'sp_addmergesubscription', 'sp_addmessage',\n            'sp_addpublication', 'sp_addpublication_snapshot', 'sp_addpullsubscription', 'sp_addpullsubscription_agent',\n            'sp_addpushsubscription_agent', 'sp_addqreader_agent', 'sp_addqueued_artinfo', 'sp_addremotelogin', 'sp_addrole',\n            'sp_addrolemember', 'sp_addscriptexec', 'sp_addserver', 'sp_addsrvrolemember', 'sp_addsubscriber', 'sp_addsubscriber_schedule',\n            'sp_addsubscription', 'sp_addsynctriggers', 'sp_addsynctriggerscore', 'sp_addtabletocontents', 'sp_addtype', 'sp_addumpdevice',\n            'sp_adduser', 'sp_adjustpublisheridentityrange', 'sp_altermessage', 'sp_approlepassword', 'sp_article_validation',\n            'sp_articlecolumn', 'sp_articlefilter', 'sp_articleview', 'sp_assemblies_rowset', 'sp_assemblies_rowset_rmt',\n            'sp_assemblies_rowset2', 'sp_assembly_dependencies_rowset', 'sp_assembly_dependencies_rowset_rmt',\n            'sp_assembly_dependencies_rowset2', 'sp_attach_db', 'sp_attach_single_file_db', 'sp_attachsubscription', 'sp_autostats',\n            'sp_bcp_dbcmptlevel', 'sp_bindefault', 'sp_bindrule', 'sp_browsemergesnapshotfolder', 'sp_browsereplcmds',\n            'sp_browsesnapshotfolder', 'sp_can_tlog_be_applied', 'sp_catalogs', 'sp_catalogs_rowset', 'sp_catalogs_rowset_rmt',\n            'sp_catalogs_rowset2', 'sp_cdc_add_job', 'sp_cdc_change_job', 'sp_cdc_cleanup_change_table', 'sp_cdc_dbsnapshotLSN',\n            'sp_cdc_disable_db', 'sp_cdc_disable_table', 'sp_cdc_drop_job', 'sp_cdc_enable_db', 'sp_cdc_enable_table',\n            'sp_cdc_generate_wrapper_function', 'sp_cdc_get_captured_columns', 'sp_cdc_get_ddl_history', 'sp_cdc_help_change_data_capture',\n            'sp_cdc_help_jobs', 'sp_cdc_restoredb', 'sp_cdc_scan', 'sp_cdc_start_job', 'sp_cdc_stop_job', 'sp_cdc_vupgrade',\n            'sp_cdc_vupgrade_databases', 'sp_certify_removable', 'sp_change_agent_parameter', 'sp_change_agent_profile',\n            'sp_change_log_shipping_primary_database', 'sp_change_log_shipping_secondary_database', 'sp_change_log_shipping_secondary_primary',\n            'sp_change_subscription_properties', 'sp_change_users_login', 'sp_changearticle', 'sp_changearticlecolumndatatype',\n            'sp_changedbowner', 'sp_changedistpublisher', 'sp_changedistributiondb', 'sp_changedistributor_password',\n            'sp_changedistributor_property', 'sp_changedynamicsnapshot_job', 'sp_changelogreader_agent', 'sp_changemergearticle',\n            'sp_changemergefilter', 'sp_changemergelogsettings', 'sp_changemergepublication', 'sp_changemergepullsubscription',\n            'sp_changemergesubscription', 'sp_changeobjectowner', 'sp_changepublication', 'sp_changepublication_snapshot',\n            'sp_changeqreader_agent', 'sp_changereplicationserverpasswords', 'sp_changesubscriber', 'sp_changesubscriber_schedule',\n            'sp_changesubscription', 'sp_changesubscriptiondtsinfo', 'sp_changesubstatus', 'sp_check_constbytable_rowset',\n            'sp_check_constbytable_rowset2', 'sp_check_constraints_rowset', 'sp_check_constraints_rowset2', 'sp_check_dynamic_filters',\n            'sp_check_for_sync_trigger', 'sp_check_join_filter', 'sp_check_log_shipping_monitor_alert', 'sp_check_publication_access',\n            'sp_check_removable', 'sp_check_subset_filter', 'sp_check_sync_trigger', 'sp_checkinvalidivarticle',\n            'sp_checkOraclepackageversion', 'sp_clean_db_file_free_space', 'sp_clean_db_free_space', 'sp_cleanmergelogfiles',\n            'sp_cleanup_log_shipping_history', 'sp_cleanupdbreplication', 'sp_column_privileges', 'sp_column_privileges_ex',\n            'sp_column_privileges_rowset', 'sp_column_privileges_rowset_rmt', 'sp_column_privileges_rowset2', 'sp_columns', 'sp_columns_100',\n            'sp_columns_100_rowset', 'sp_columns_100_rowset2', 'sp_columns_90', 'sp_columns_90_rowset', 'sp_columns_90_rowset_rmt',\n            'sp_columns_90_rowset2', 'sp_columns_ex', 'sp_columns_ex_100', 'sp_columns_ex_90', 'sp_columns_managed', 'sp_columns_rowset',\n            'sp_columns_rowset_rmt', 'sp_columns_rowset2', 'sp_configure', 'sp_configure_peerconflictdetection', 'sp_constr_col_usage_rowset',\n            'sp_constr_col_usage_rowset2', 'sp_control_plan_guide', 'sp_copymergesnapshot', 'sp_copysnapshot', 'sp_copysubscription',\n            'sp_create_plan_guide', 'sp_create_plan_guide_from_handle', 'sp_create_removable', 'sp_createmergepalrole', 'sp_createstats',\n            'sp_createtranpalrole', 'sp_cursor_list', 'sp_cycle_errorlog', 'sp_databases', 'sp_datatype_info', 'sp_datatype_info_100',\n            'sp_datatype_info_90', 'sp_db_increased_partitions', 'sp_db_vardecimal_storage_format', 'sp_dbcmptlevel', 'sp_dbfixedrolepermission',\n            'sp_dbmmonitoraddmonitoring', 'sp_dbmmonitorchangealert', 'sp_dbmmonitorchangemonitoring', 'sp_dbmmonitordropalert',\n            'sp_dbmmonitordropmonitoring', 'sp_dbmmonitorhelpalert', 'sp_dbmmonitorhelpmonitoring', 'sp_dbmmonitorresults', 'sp_dbmmonitorupdate',\n            'sp_dbremove', 'sp_ddopen', 'sp_defaultdb', 'sp_defaultlanguage', 'sp_delete_log_shipping_alert_job',\n            'sp_delete_log_shipping_primary_database', 'sp_delete_log_shipping_primary_secondary', 'sp_delete_log_shipping_secondary_database',\n            'sp_delete_log_shipping_secondary_primary', 'sp_deletemergeconflictrow', 'sp_deletepeerrequesthistory', 'sp_deletetracertokenhistory',\n            'sp_denylogin', 'sp_depends', 'sp_describe_cursor', 'sp_describe_cursor_columns', 'sp_describe_cursor_tables', 'sp_detach_db',\n            'sp_disableagentoffload', 'sp_distcounters', 'sp_drop_agent_parameter', 'sp_drop_agent_profile', 'sp_dropanonymousagent',\n            'sp_dropanonymoussubscription', 'sp_dropapprole', 'sp_droparticle', 'sp_dropdatatypemapping', 'sp_dropdevice', 'sp_dropdistpublisher',\n            'sp_dropdistributiondb', 'sp_dropdistributor', 'sp_dropdynamicsnapshot_job', 'sp_dropextendedproc', 'sp_dropextendedproperty',\n            'sp_droplinkedsrvlogin', 'sp_droplogin', 'sp_dropmergealternatepublisher', 'sp_dropmergearticle', 'sp_dropmergefilter',\n            'sp_dropmergelogsettings', 'sp_dropmergepartition', 'sp_dropmergepublication', 'sp_dropmergepullsubscription',\n            'sp_dropmergesubscription', 'sp_dropmessage', 'sp_droppublication', 'sp_droppublisher', 'sp_droppullsubscription',\n            'sp_dropremotelogin', 'sp_dropreplsymmetrickey', 'sp_droprole', 'sp_droprolemember', 'sp_dropserver', 'sp_dropsrvrolemember',\n            'sp_dropsubscriber', 'sp_dropsubscription', 'sp_droptype', 'sp_dropuser', 'sp_dsninfo', 'sp_enable_heterogeneous_subscription',\n            'sp_enableagentoffload', 'sp_enum_oledb_providers', 'sp_enumcustomresolvers', 'sp_enumdsn', 'sp_enumeratependingschemachanges',\n            'sp_enumerrorlogs', 'sp_enumfullsubscribers', 'sp_enumoledbdatasources', 'sp_estimate_data_compression_savings',\n            'sp_estimated_rowsize_reduction_for_vardecimal', 'sp_expired_subscription_cleanup', 'sp_filestream_force_garbage_collection',\n            'sp_filestream_recalculate_container_size', 'sp_firstonly_bitmap', 'sp_fkeys', 'sp_flush_commit_table',\n            'sp_flush_commit_table_on_demand', 'sp_foreign_keys_rowset', 'sp_foreign_keys_rowset_rmt', 'sp_foreign_keys_rowset2',\n            'sp_foreign_keys_rowset3', 'sp_foreignkeys', 'sp_fulltext_catalog', 'sp_fulltext_column', 'sp_fulltext_database',\n            'sp_fulltext_load_thesaurus_file', 'sp_fulltext_recycle_crawl_log', 'sp_fulltext_semantic_register_language_statistics_db',\n            'sp_fulltext_semantic_unregister_language_statistics_db', 'sp_fulltext_service', 'sp_fulltext_table', 'sp_generate_agent_parameter',\n            'sp_generatefilters', 'sp_get_distributor', 'sp_get_job_status_mergesubscription_agent', 'sp_get_mergepublishedarticleproperties',\n            'sp_get_Oracle_publisher_metadata', 'sp_get_redirected_publisher', 'sp_getagentparameterlist', 'sp_getapplock',\n            'sp_getdefaultdatatypemapping', 'sp_getmergedeletetype', 'sp_getProcessorUsage', 'sp_getpublisherlink',\n            'sp_getqueuedarticlesynctraninfo', 'sp_getqueuedrows', 'sp_getsqlqueueversion', 'sp_getsubscription_status_hsnapshot',\n            'sp_getsubscriptiondtspackagename', 'sp_gettopologyinfo', 'sp_getVolumeFreeSpace', 'sp_grant_publication_access', 'sp_grantdbaccess',\n            'sp_grantlogin', 'sp_help', 'sp_help_agent_default', 'sp_help_agent_parameter', 'sp_help_agent_profile', 'sp_help_datatype_mapping',\n            'sp_help_fulltext_catalog_components', 'sp_help_fulltext_catalogs', 'sp_help_fulltext_catalogs_cursor', 'sp_help_fulltext_columns',\n            'sp_help_fulltext_columns_cursor', 'sp_help_fulltext_system_components', 'sp_help_fulltext_tables', 'sp_help_fulltext_tables_cursor',\n            'sp_help_log_shipping_alert_job', 'sp_help_log_shipping_monitor', 'sp_help_log_shipping_monitor_primary',\n            'sp_help_log_shipping_monitor_secondary', 'sp_help_log_shipping_primary_database', 'sp_help_log_shipping_primary_secondary',\n            'sp_help_log_shipping_secondary_database', 'sp_help_log_shipping_secondary_primary', 'sp_help_peerconflictdetection',\n            'sp_help_publication_access', 'sp_help_spatial_geography_histogram', 'sp_help_spatial_geography_index',\n            'sp_help_spatial_geography_index_xml', 'sp_help_spatial_geometry_histogram', 'sp_help_spatial_geometry_index',\n            'sp_help_spatial_geometry_index_xml', 'sp_helpallowmerge_publication', 'sp_helparticle', 'sp_helparticlecolumns', 'sp_helparticledts',\n            'sp_helpconstraint', 'sp_helpdatatypemap', 'sp_helpdb', 'sp_helpdbfixedrole', 'sp_helpdevice', 'sp_helpdistpublisher',\n            'sp_helpdistributiondb', 'sp_helpdistributor', 'sp_helpdistributor_properties', 'sp_helpdynamicsnapshot_job', 'sp_helpextendedproc',\n            'sp_helpfile', 'sp_helpfilegroup', 'sp_helpindex', 'sp_helplanguage', 'sp_helplinkedsrvlogin', 'sp_helplogins', 'sp_helplogreader_agent',\n            'sp_helpmergealternatepublisher', 'sp_helpmergearticle', 'sp_helpmergearticlecolumn', 'sp_helpmergearticleconflicts',\n            'sp_helpmergeconflictrows', 'sp_helpmergedeleteconflictrows', 'sp_helpmergefilter', 'sp_helpmergelogfiles',\n            'sp_helpmergelogfileswithdata', 'sp_helpmergelogsettings', 'sp_helpmergepartition', 'sp_helpmergepublication',\n            'sp_helpmergepullsubscription', 'sp_helpmergesubscription', 'sp_helpntgroup', 'sp_helppeerrequests', 'sp_helppeerresponses',\n            'sp_helppublication', 'sp_helppublication_snapshot', 'sp_helppublicationsync', 'sp_helppullsubscription', 'sp_helpqreader_agent',\n            'sp_helpremotelogin', 'sp_helpreplfailovermode', 'sp_helpreplicationdb', 'sp_helpreplicationdboption', 'sp_helpreplicationoption',\n            'sp_helprole', 'sp_helprolemember', 'sp_helprotect', 'sp_helpserver', 'sp_helpsort', 'sp_helpsrvrole', 'sp_helpsrvrolemember',\n            'sp_helpstats', 'sp_helpsubscriberinfo', 'sp_helpsubscription', 'sp_helpsubscription_properties', 'sp_helpsubscriptionerrors',\n            'sp_helptext', 'sp_helptracertokenhistory', 'sp_helptracertokens', 'sp_helptrigger', 'sp_helpuser', 'sp_helpxactsetjob',\n            'sp_hexadecimal', 'sp_http_generate_wsdl_defaultcomplexorsimple', 'sp_http_generate_wsdl_defaultsimpleorcomplex',\n            'sp_identitycolumnforreplication', 'sp_IH_LR_GetCacheData', 'sp_IHadd_sync_command', 'sp_IHarticlecolumn',\n            'sp_IHget_loopback_detection', 'sp_IHScriptIdxFile', 'sp_IHScriptSchFile', 'sp_IHValidateRowFilter', 'sp_IHXactSetJob',\n            'sp_indexcolumns_managed', 'sp_indexes', 'sp_indexes_100_rowset', 'sp_indexes_100_rowset2', 'sp_indexes_90_rowset',\n            'sp_indexes_90_rowset_rmt', 'sp_indexes_90_rowset2', 'sp_indexes_managed', 'sp_indexes_rowset', 'sp_indexes_rowset_rmt',\n            'sp_indexes_rowset2', 'sp_indexoption', 'sp_invalidate_textptr', 'sp_is_makegeneration_needed', 'sp_ivindexhasnullcols',\n            'sp_kill_filestream_non_transacted_handles', 'sp_lightweightmergemetadataretentioncleanup', 'sp_link_publication',\n            'sp_linkedservers', 'sp_linkedservers_rowset', 'sp_linkedservers_rowset2', 'sp_lock', 'sp_logshippinginstallmetadata',\n            'sp_lookupcustomresolver', 'sp_mapdown_bitmap', 'sp_markpendingschemachange', 'sp_marksubscriptionvalidation', 'sp_mergearticlecolumn',\n            'sp_mergecleanupmetadata', 'sp_mergedummyupdate', 'sp_mergemetadataretentioncleanup', 'sp_mergesubscription_cleanup',\n            'sp_mergesubscriptionsummary', 'sp_monitor',\n            'sp_objectfilegroup',\n            'sp_oledb_database', 'sp_oledb_defdb', 'sp_oledb_deflang', 'sp_oledb_language', 'sp_oledb_ro_usrname', 'sp_oledbinfo', 'sp_ORbitmap',\n            'sp_password', 'sp_peerconflictdetection_tableaug', 'sp_pkeys', 'sp_posttracertoken', 'sp_primary_keys_rowset',\n            'sp_primary_keys_rowset_rmt', 'sp_primary_keys_rowset2', 'sp_primarykeys', 'sp_procedure_params_100_managed',\n            'sp_procedure_params_100_rowset', 'sp_procedure_params_100_rowset2', 'sp_procedure_params_90_rowset', 'sp_procedure_params_90_rowset2',\n            'sp_procedure_params_managed', 'sp_procedure_params_rowset', 'sp_procedure_params_rowset2', 'sp_procedures_rowset', 'sp_procedures_rowset2',\n            'sp_processlogshippingmonitorhistory', 'sp_processlogshippingmonitorprimary', 'sp_processlogshippingmonitorsecondary',\n            'sp_processlogshippingretentioncleanup', 'sp_procoption', 'sp_prop_oledb_provider', 'sp_provider_types_100_rowset',\n            'sp_provider_types_90_rowset', 'sp_provider_types_rowset', 'sp_publication_validation', 'sp_publicationsummary', 'sp_publishdb',\n            'sp_publisherproperty', 'sp_readerrorlog', 'sp_recompile', 'sp_redirect_publisher', 'sp_refresh_heterogeneous_publisher',\n            'sp_refresh_log_shipping_monitor', 'sp_refreshsqlmodule', 'sp_refreshsubscriptions', 'sp_refreshview', 'sp_register_custom_scripting',\n            'sp_registercustomresolver', 'sp_reinitmergepullsubscription', 'sp_reinitmergesubscription', 'sp_reinitpullsubscription',\n            'sp_reinitsubscription', 'sp_releaseapplock', 'sp_remoteoption', 'sp_removedbreplication', 'sp_removedistpublisherdbreplication',\n            'sp_removesrvreplication', 'sp_rename', 'sp_renamedb', 'sp_repladdcolumn', 'sp_replcleanupccsprocs', 'sp_repldeletequeuedtran',\n            'sp_repldropcolumn', 'sp_replgetparsedddlcmd', 'sp_replica', 'sp_replication_agent_checkup', 'sp_replicationdboption', 'sp_replincrementlsn',\n            'sp_replmonitorchangepublicationthreshold', 'sp_replmonitorhelpmergesession', 'sp_replmonitorhelpmergesessiondetail',\n            'sp_replmonitorhelpmergesubscriptionmoreinfo', 'sp_replmonitorhelppublication', 'sp_replmonitorhelppublicationthresholds',\n            'sp_replmonitorhelppublisher', 'sp_replmonitorhelpsubscription', 'sp_replmonitorrefreshjob', 'sp_replmonitorsubscriptionpendingcmds',\n            'sp_replpostsyncstatus', 'sp_replqueuemonitor', 'sp_replrestart', 'sp_replrethrow', 'sp_replsetoriginator', 'sp_replshowcmds',\n            'sp_replsqlqgetrows', 'sp_replsync', 'sp_requestpeerresponse', 'sp_requestpeertopologyinfo', 'sp_resetsnapshotdeliveryprogress',\n            'sp_resetstatus', 'sp_resign_database', 'sp_resolve_logins', 'sp_restoredbreplication', 'sp_restoremergeidentityrange',\n            'sp_resyncmergesubscription', 'sp_revoke_publication_access', 'sp_revokedbaccess', 'sp_revokelogin', 'sp_schemafilter', 'sp_schemata_rowset',\n            'sp_script_reconciliation_delproc', 'sp_script_reconciliation_insproc', 'sp_script_reconciliation_sinsproc',\n            'sp_script_reconciliation_vdelproc', 'sp_script_reconciliation_xdelproc', 'sp_script_synctran_commands', 'sp_scriptdelproc',\n            'sp_scriptdynamicupdproc', 'sp_scriptinsproc', 'sp_scriptmappedupdproc', 'sp_scriptpublicationcustomprocs', 'sp_scriptsinsproc',\n            'sp_scriptsubconflicttable', 'sp_scriptsupdproc', 'sp_scriptupdproc', 'sp_scriptvdelproc', 'sp_scriptvupdproc', 'sp_scriptxdelproc',\n            'sp_scriptxupdproc', 'sp_sequence_get_range', 'sp_server_info', 'sp_serveroption', 'sp_setapprole', 'sp_SetAutoSAPasswordAndDisable',\n            'sp_setdefaultdatatypemapping', 'sp_setnetname', 'sp_setOraclepackageversion', 'sp_setreplfailovermode', 'sp_setsubscriptionxactseqno',\n            'sp_settriggerorder', 'sp_showcolv', 'sp_showlineage', 'sp_showpendingchanges', 'sp_showrowreplicainfo', 'sp_spaceused',\n            'sp_sparse_columns_100_rowset', 'sp_special_columns', 'sp_special_columns_100', 'sp_special_columns_90', 'sp_sproc_columns',\n            'sp_sproc_columns_100', 'sp_sproc_columns_90', 'sp_sqlexec', 'sp_srvrolepermission', 'sp_startmergepullsubscription_agent',\n            'sp_startmergepushsubscription_agent', 'sp_startpublication_snapshot', 'sp_startpullsubscription_agent', 'sp_startpushsubscription_agent',\n            'sp_statistics', 'sp_statistics_100', 'sp_statistics_rowset', 'sp_statistics_rowset2', 'sp_stopmergepullsubscription_agent',\n            'sp_stopmergepushsubscription_agent', 'sp_stoppublication_snapshot', 'sp_stoppullsubscription_agent', 'sp_stoppushsubscription_agent',\n            'sp_stored_procedures', 'sp_subscribe', 'sp_subscription_cleanup', 'sp_subscriptionsummary', 'sp_syspolicy_execute_policy',\n            'sp_syspolicy_subscribe_to_policy_category', 'sp_syspolicy_unsubscribe_from_policy_category', 'sp_syspolicy_update_ddl_trigger',\n            'sp_syspolicy_update_event_notification', 'sp_table_constraints_rowset', 'sp_table_constraints_rowset2', 'sp_table_privileges',\n            'sp_table_privileges_ex', 'sp_table_privileges_rowset', 'sp_table_privileges_rowset_rmt', 'sp_table_privileges_rowset2',\n            'sp_table_statistics_rowset', 'sp_table_statistics2_rowset', 'sp_table_type_columns_100', 'sp_table_type_columns_100_rowset',\n            'sp_table_type_pkeys', 'sp_table_type_primary_keys_rowset', 'sp_table_types', 'sp_table_types_rowset', 'sp_table_validation',\n            'sp_tablecollations', 'sp_tablecollations_100', 'sp_tablecollations_90', 'sp_tableoption', 'sp_tables', 'sp_tables_ex',\n            'sp_tables_info_90_rowset', 'sp_tables_info_90_rowset_64', 'sp_tables_info_90_rowset2', 'sp_tables_info_90_rowset2_64',\n            'sp_tables_info_rowset', 'sp_tables_info_rowset_64', 'sp_tables_info_rowset2', 'sp_tables_info_rowset2_64', 'sp_tables_rowset',\n            'sp_tables_rowset_rmt', 'sp_tables_rowset2', 'sp_tableswc', 'sp_trace_getdata', 'sp_unbindefault', 'sp_unbindrule',\n            'sp_unregister_custom_scripting', 'sp_unregistercustomresolver', 'sp_unsetapprole', 'sp_unsubscribe', 'sp_update_agent_profile',\n            'sp_updateextendedproperty', 'sp_updatestats', 'sp_upgrade_log_shipping', 'sp_user_counter1', 'sp_user_counter10', 'sp_user_counter2',\n            'sp_user_counter3', 'sp_user_counter4', 'sp_user_counter5', 'sp_user_counter6', 'sp_user_counter7', 'sp_user_counter8', 'sp_user_counter9',\n            'sp_usertypes_rowset', 'sp_usertypes_rowset_rmt', 'sp_usertypes_rowset2', 'sp_validate_redirected_publisher',\n            'sp_validate_replica_hosts_as_publishers', 'sp_validatecache', 'sp_validatelogins', 'sp_validatemergepublication',\n            'sp_validatemergepullsubscription', 'sp_validatemergesubscription', 'sp_validlang', 'sp_validname', 'sp_verifypublisher', 'sp_views_rowset',\n            'sp_views_rowset2', 'sp_vupgrade_mergeobjects', 'sp_vupgrade_mergetables',  'sp_vupgrade_replication', 'sp_vupgrade_replsecurity_metadata',\n            'sp_who', 'sp_who2', 'sp_xml_schema_rowset', 'sp_xml_schema_rowset2',\n        ),\n        6 => array(\n\n            // system MS procedures, marked brown.\n\n            'sp_MS_marksystemobject', 'sp_MS_replication_installed', 'sp_MSacquireHeadofQueueLock',\n            'sp_MSacquireserverresourcefordynamicsnapshot', 'sp_MSacquireSlotLock', 'sp_MSacquiresnapshotdeliverysessionlock',\n            'sp_MSactivate_auto_sub', 'sp_MSactivatelogbasedarticleobject', 'sp_MSactivateprocedureexecutionarticleobject',\n            'sp_MSadd_anonymous_agent', 'sp_MSadd_article', 'sp_MSadd_compensating_cmd', 'sp_MSadd_distribution_agent',\n            'sp_MSadd_distribution_history', 'sp_MSadd_dynamic_snapshot_location', 'sp_MSadd_filteringcolumn', 'sp_MSadd_log_shipping_error_detail',\n            'sp_MSadd_log_shipping_history_detail', 'sp_MSadd_logreader_agent', 'sp_MSadd_logreader_history', 'sp_MSadd_merge_agent',\n            'sp_MSadd_merge_anonymous_agent', 'sp_MSadd_merge_history', 'sp_MSadd_merge_history90', 'sp_MSadd_merge_subscription',\n            'sp_MSadd_mergereplcommand', 'sp_MSadd_mergesubentry_indistdb', 'sp_MSadd_publication', 'sp_MSadd_qreader_agent',\n            'sp_MSadd_qreader_history', 'sp_MSadd_repl_alert', 'sp_MSadd_repl_command', 'sp_MSadd_repl_commands27hp', 'sp_MSadd_repl_error',\n            'sp_MSadd_replcmds_mcit', 'sp_MSadd_replmergealert', 'sp_MSadd_snapshot_agent', 'sp_MSadd_snapshot_history', 'sp_MSadd_subscriber_info',\n            'sp_MSadd_subscriber_schedule', 'sp_MSadd_subscription', 'sp_MSadd_subscription_3rd', 'sp_MSadd_tracer_history', 'sp_MSadd_tracer_token',\n            'sp_MSaddanonymousreplica', 'sp_MSadddynamicsnapshotjobatdistributor', 'sp_MSaddguidcolumn', 'sp_MSaddguidindex', 'sp_MSaddinitialarticle',\n            'sp_MSaddinitialpublication', 'sp_MSaddinitialschemaarticle', 'sp_MSaddinitialsubscription', 'sp_MSaddlightweightmergearticle',\n            'sp_MSaddmergedynamicsnapshotjob', 'sp_MSaddmergetriggers', 'sp_MSaddmergetriggers_from_template', 'sp_MSaddmergetriggers_internal',\n            'sp_MSaddpeerlsn', 'sp_MSaddsubscriptionarticles', 'sp_MSadjust_pub_identity', 'sp_MSagent_retry_stethoscope', 'sp_MSagent_stethoscope',\n            'sp_MSallocate_new_identity_range', 'sp_MSalreadyhavegeneration', 'sp_MSanonymous_status', 'sp_MSarticlecleanup',\n            'sp_MSbrowsesnapshotfolder', 'sp_MScache_agent_parameter', 'sp_MScdc_capture_job', 'sp_MScdc_cleanup_job', 'sp_MScdc_db_ddl_event',\n            'sp_MScdc_ddl_event', 'sp_MScdc_logddl', 'sp_MSchange_article', 'sp_MSchange_distribution_agent_properties',\n            'sp_MSchange_logreader_agent_properties', 'sp_MSchange_merge_agent_properties', 'sp_MSchange_mergearticle', 'sp_MSchange_mergepublication',\n            'sp_MSchange_originatorid', 'sp_MSchange_priority', 'sp_MSchange_publication', 'sp_MSchange_retention', 'sp_MSchange_retention_period_unit',\n            'sp_MSchange_snapshot_agent_properties', 'sp_MSchange_subscription_dts_info', 'sp_MSchangearticleresolver',\n            'sp_MSchangedynamicsnapshotjobatdistributor', 'sp_MSchangedynsnaplocationatdistributor', 'sp_MSchangeobjectowner',\n            'sp_MScheck_agent_instance', 'sp_MScheck_Jet_Subscriber', 'sp_MScheck_logicalrecord_metadatamatch', 'sp_MScheck_merge_subscription_count',\n            'sp_MScheck_pub_identity', 'sp_MScheck_pull_access', 'sp_MScheck_snapshot_agent', 'sp_MScheck_subscription', 'sp_MScheck_subscription_expiry',\n            'sp_MScheck_subscription_partition', 'sp_MScheck_tran_retention', 'sp_MScheckexistsgeneration', 'sp_MScheckexistsrecguid',\n            'sp_MScheckfailedprevioussync', 'sp_MScheckidentityrange', 'sp_MScheckIsPubOfSub', 'sp_MSchecksharedagentforpublication',\n            'sp_MSchecksnapshotstatus', 'sp_MScleanup_agent_entry', 'sp_MScleanup_conflict', 'sp_MScleanup_publication_ADinfo',\n            'sp_MScleanup_subscription_distside_entry', 'sp_MScleanupdynamicsnapshotfolder', 'sp_MScleanupdynsnapshotvws', 'sp_MSCleanupForPullReinit',\n            'sp_MScleanupmergepublisher_internal', 'sp_MSclear_dynamic_snapshot_location', 'sp_MSclearresetpartialsnapshotprogressbit',\n            'sp_MScomputelastsentgen', 'sp_MScomputemergearticlescreationorder', 'sp_MScomputemergeunresolvedrefs', 'sp_MSconflicttableexists',\n            'sp_MScreate_all_article_repl_views', 'sp_MScreate_article_repl_views', 'sp_MScreate_dist_tables', 'sp_MScreate_logical_record_views',\n            'sp_MScreate_sub_tables', 'sp_MScreate_tempgenhistorytable', 'sp_MScreatedisabledmltrigger', 'sp_MScreatedummygeneration',\n            'sp_MScreateglobalreplica', 'sp_MScreatelightweightinsertproc', 'sp_MScreatelightweightmultipurposeproc',\n            'sp_MScreatelightweightprocstriggersconstraints', 'sp_MScreatelightweightupdateproc', 'sp_MScreatemergedynamicsnapshot',\n            'sp_MScreateretry', 'sp_MSdbuseraccess', 'sp_MSdbuserpriv', 'sp_MSdefer_check', 'sp_MSdelete_tracer_history', 'sp_MSdeletefoldercontents',\n            'sp_MSdeletemetadataactionrequest', 'sp_MSdeletepeerconflictrow', 'sp_MSdeleteretry', 'sp_MSdeletetranconflictrow', 'sp_MSdelgenzero',\n            'sp_MSdelrow', 'sp_MSdelrowsbatch', 'sp_MSdelrowsbatch_downloadonly', 'sp_MSdelsubrows', 'sp_MSdelsubrowsbatch', 'sp_MSdependencies',\n            'sp_MSdetect_nonlogged_shutdown', 'sp_MSdetectinvalidpeerconfiguration', 'sp_MSdetectinvalidpeersubscription', 'sp_MSdist_activate_auto_sub',\n            'sp_MSdist_adjust_identity', 'sp_MSdistpublisher_cleanup', 'sp_MSdistribution_counters', 'sp_MSdistributoravailable',\n            'sp_MSdodatabasesnapshotinitiation', 'sp_MSdopartialdatabasesnapshotinitiation', 'sp_MSdrop_6x_publication', 'sp_MSdrop_6x_replication_agent',\n            'sp_MSdrop_anonymous_entry', 'sp_MSdrop_article', 'sp_MSdrop_distribution_agent', 'sp_MSdrop_distribution_agentid_dbowner_proxy',\n            'sp_MSdrop_dynamic_snapshot_agent', 'sp_MSdrop_logreader_agent', 'sp_MSdrop_merge_agent', 'sp_MSdrop_merge_subscription',\n            'sp_MSdrop_publication', 'sp_MSdrop_qreader_history', 'sp_MSdrop_snapshot_agent', 'sp_MSdrop_snapshot_dirs', 'sp_MSdrop_subscriber_info',\n            'sp_MSdrop_subscription', 'sp_MSdrop_subscription_3rd', 'sp_MSdrop_tempgenhistorytable', 'sp_MSdroparticleconstraints',\n            'sp_MSdroparticletombstones', 'sp_MSdropconstraints', 'sp_MSdropdynsnapshotvws', 'sp_MSdropfkreferencingarticle', 'sp_MSdropmergearticle',\n            'sp_MSdropmergedynamicsnapshotjob', 'sp_MSdropretry', 'sp_MSdroptemptable', 'sp_MSdummyupdate', 'sp_MSdummyupdate_logicalrecord',\n            'sp_MSdummyupdate90', 'sp_MSdummyupdatelightweight', 'sp_MSdynamicsnapshotjobexistsatdistributor', 'sp_MSenable_publication_for_het_sub',\n            'sp_MSensure_single_instance', 'sp_MSenum_distribution', 'sp_MSenum_distribution_s', 'sp_MSenum_distribution_sd',\n            'sp_MSenum_logicalrecord_changes', 'sp_MSenum_logreader', 'sp_MSenum_logreader_s', 'sp_MSenum_logreader_sd', 'sp_MSenum_merge',\n            'sp_MSenum_merge_agent_properties', 'sp_MSenum_merge_s', 'sp_MSenum_merge_sd', 'sp_MSenum_merge_subscriptions',\n            'sp_MSenum_merge_subscriptions_90_publication', 'sp_MSenum_merge_subscriptions_90_publisher', 'sp_MSenum_metadataaction_requests',\n            'sp_MSenum_qreader', 'sp_MSenum_qreader_s', 'sp_MSenum_qreader_sd', 'sp_MSenum_replication_agents', 'sp_MSenum_replication_job',\n            'sp_MSenum_replqueues', 'sp_MSenum_replsqlqueues', 'sp_MSenum_snapshot', 'sp_MSenum_snapshot_s', 'sp_MSenum_snapshot_sd',\n            'sp_MSenum_subscriptions', 'sp_MSenumallpublications', 'sp_MSenumallsubscriptions', 'sp_MSenumarticleslightweight', 'sp_MSenumchanges',\n            'sp_MSenumchanges_belongtopartition', 'sp_MSenumchanges_notbelongtopartition', 'sp_MSenumchangesdirect', 'sp_MSenumchangeslightweight',\n            'sp_MSenumcolumns', 'sp_MSenumcolumnslightweight', 'sp_MSenumdeletes_forpartition', 'sp_MSenumdeleteslightweight', 'sp_MSenumdeletesmetadata',\n            'sp_MSenumdistributionagentproperties', 'sp_MSenumerate_PAL', 'sp_MSenumgenerations', 'sp_MSenumgenerations90', 'sp_MSenumpartialchanges',\n            'sp_MSenumpartialchangesdirect', 'sp_MSenumpartialdeletes', 'sp_MSenumpubreferences', 'sp_MSenumreplicas', 'sp_MSenumreplicas90',\n            'sp_MSenumretries', 'sp_MSenumschemachange', 'sp_MSenumsubscriptions', 'sp_MSenumthirdpartypublicationvendornames',\n            'sp_MSestimatemergesnapshotworkload', 'sp_MSestimatesnapshotworkload', 'sp_MSevalsubscriberinfo',\n            'sp_MSevaluate_change_membership_for_all_articles_in_pubid', 'sp_MSevaluate_change_membership_for_pubid',\n            'sp_MSevaluate_change_membership_for_row', 'sp_MSexecwithlsnoutput', 'sp_MSfast_delete_trans', 'sp_MSfetchAdjustidentityrange',\n            'sp_MSfetchidentityrange', 'sp_MSfillupmissingcols', 'sp_MSfilterclause', 'sp_MSfix_6x_tasks', 'sp_MSfixlineageversions',\n            'sp_MSFixSubColumnBitmaps', 'sp_MSfixupbeforeimagetables', 'sp_MSflush_access_cache', 'sp_MSforce_drop_distribution_jobs',\n            'sp_MSforcereenumeration', 'sp_MSforeach_worker', 'sp_MSforeachdb', 'sp_MSforeachtable', 'sp_MSgenerateexpandproc', 'sp_MSget_agent_names',\n            'sp_MSget_attach_state', 'sp_MSget_DDL_after_regular_snapshot', 'sp_MSget_dynamic_snapshot_location', 'sp_MSget_identity_range_info',\n            'sp_MSget_jobstate', 'sp_MSget_last_transaction', 'sp_MSget_latest_peerlsn', 'sp_MSget_load_hint', 'sp_MSget_log_shipping_new_sessionid',\n            'sp_MSget_logicalrecord_lineage', 'sp_MSget_max_used_identity', 'sp_MSget_min_seqno', 'sp_MSget_MSmerge_rowtrack_colinfo',\n            'sp_MSget_new_xact_seqno', 'sp_MSget_oledbinfo', 'sp_MSget_partitionid_eval_proc', 'sp_MSget_publication_from_taskname',\n            'sp_MSget_publisher_rpc', 'sp_MSget_repl_cmds_anonymous', 'sp_MSget_repl_commands', 'sp_MSget_repl_error', 'sp_MSget_session_statistics',\n            'sp_MSget_shared_agent', 'sp_MSget_snapshot_history', 'sp_MSget_subscriber_partition_id', 'sp_MSget_subscription_dts_info',\n            'sp_MSget_subscription_guid', 'sp_MSget_synctran_commands', 'sp_MSget_type_wrapper', 'sp_MSgetagentoffloadinfo', 'sp_MSgetalertinfo',\n            'sp_MSgetalternaterecgens', 'sp_MSgetarticlereinitvalue', 'sp_MSgetchangecount', 'sp_MSgetconflictinsertproc', 'sp_MSgetconflicttablename',\n            'sp_MSGetCurrentPrincipal', 'sp_MSgetdatametadatabatch', 'sp_MSgetdbversion', 'sp_MSgetdynamicsnapshotapplock',\n            'sp_MSgetdynsnapvalidationtoken', 'sp_MSgetisvalidwindowsloginfromdistributor', 'sp_MSgetlastrecgen', 'sp_MSgetlastsentgen',\n            'sp_MSgetlastsentrecgens', 'sp_MSgetlastupdatedtime', 'sp_MSgetlightweightmetadatabatch', 'sp_MSgetmakegenerationapplock',\n            'sp_MSgetmakegenerationapplock_90', 'sp_MSgetmaxbcpgen', 'sp_MSgetmaxsnapshottimestamp', 'sp_MSgetmergeadminapplock',\n            'sp_MSgetmetadata_changedlogicalrecordmembers', 'sp_MSgetmetadatabatch', 'sp_MSgetmetadatabatch90', 'sp_MSgetmetadatabatch90new',\n            'sp_MSgetonerow', 'sp_MSgetonerowlightweight', 'sp_MSgetpeerconflictrow', 'sp_MSgetpeerlsns', 'sp_MSgetpeertopeercommands',\n            'sp_MSgetpeerwinnerrow', 'sp_MSgetpubinfo', 'sp_MSgetreplicainfo', 'sp_MSgetreplicastate', 'sp_MSgetrowmetadata',\n            'sp_MSgetrowmetadatalightweight', 'sp_MSGetServerProperties', 'sp_MSgetsetupbelong_cost', 'sp_MSgetsubscriberinfo',\n            'sp_MSgetsupportabilitysettings', 'sp_MSgettrancftsrcrow', 'sp_MSgettranconflictrow', 'sp_MSgetversion', 'sp_MSgrantconnectreplication',\n            'sp_MShaschangeslightweight', 'sp_MShasdbaccess', 'sp_MShelp_article', 'sp_MShelp_distdb', 'sp_MShelp_distribution_agentid',\n            'sp_MShelp_identity_property', 'sp_MShelp_logreader_agentid', 'sp_MShelp_merge_agentid', 'sp_MShelp_profile', 'sp_MShelp_profilecache',\n            'sp_MShelp_publication', 'sp_MShelp_repl_agent', 'sp_MShelp_replication_status', 'sp_MShelp_replication_table', 'sp_MShelp_snapshot_agent',\n            'sp_MShelp_snapshot_agentid', 'sp_MShelp_subscriber_info', 'sp_MShelp_subscription', 'sp_MShelp_subscription_status', 'sp_MShelpcolumns',\n            'sp_MShelpconflictpublications', 'sp_MShelpcreatebeforetable', 'sp_MShelpdestowner', 'sp_MShelpdynamicsnapshotjobatdistributor',\n            'sp_MShelpfulltextindex', 'sp_MShelpfulltextscript', 'sp_MShelpindex', 'sp_MShelplogreader_agent', 'sp_MShelpmergearticles',\n            'sp_MShelpmergeconflictcounts', 'sp_MShelpmergedynamicsnapshotjob', 'sp_MShelpmergeidentity', 'sp_MShelpmergeschemaarticles',\n            'sp_MShelpobjectpublications', 'sp_MShelpreplicationtriggers', 'sp_MShelpsnapshot_agent', 'sp_MShelpsummarypublication',\n            'sp_MShelptracertokenhistory', 'sp_MShelptracertokens', 'sp_MShelptranconflictcounts', 'sp_MShelptype', 'sp_MShelpvalidationdate',\n            'sp_MSIfExistsSubscription', 'sp_MSindexspace', 'sp_MSinit_publication_access', 'sp_MSinit_subscription_agent', 'sp_MSinitdynamicsubscriber',\n            'sp_MSinsert_identity', 'sp_MSinsertdeleteconflict', 'sp_MSinserterrorlineage', 'sp_MSinsertgenerationschemachanges', 'sp_MSinsertgenhistory',\n            'sp_MSinsertlightweightschemachange', 'sp_MSinsertschemachange', 'sp_MSinvalidate_snapshot', 'sp_MSisnonpkukupdateinconflict',\n            'sp_MSispeertopeeragent', 'sp_MSispkupdateinconflict', 'sp_MSispublicationqueued', 'sp_MSisreplmergeagent', 'sp_MSissnapshotitemapplied',\n            'sp_MSkilldb', 'sp_MSlock_auto_sub', 'sp_MSlock_distribution_agent', 'sp_MSlocktable', 'sp_MSloginmappings', 'sp_MSmakearticleprocs',\n            'sp_MSmakebatchinsertproc', 'sp_MSmakebatchupdateproc', 'sp_MSmakeconflictinsertproc', 'sp_MSmakectsview', 'sp_MSmakedeleteproc',\n            'sp_MSmakedynsnapshotvws', 'sp_MSmakeexpandproc', 'sp_MSmakegeneration', 'sp_MSmakeinsertproc', 'sp_MSmakemetadataselectproc',\n            'sp_MSmakeselectproc', 'sp_MSmakesystableviews', 'sp_MSmakeupdateproc', 'sp_MSmap_partitionid_to_generations', 'sp_MSmarkreinit',\n            'sp_MSmatchkey', 'sp_MSmerge_alterschemaonly', 'sp_MSmerge_altertrigger', 'sp_MSmerge_alterview', 'sp_MSmerge_ddldispatcher',\n            'sp_MSmerge_getgencount', 'sp_MSmerge_getgencur_public', 'sp_MSmerge_is_snapshot_required', 'sp_MSmerge_log_identity_range_allocations',\n            'sp_MSmerge_parsegenlist', 'sp_MSmerge_upgrade_subscriber', 'sp_MSmergesubscribedb', 'sp_MSmergeupdatelastsyncinfo',\n            'sp_MSneedmergemetadataretentioncleanup', 'sp_MSNonSQLDDL', 'sp_MSNonSQLDDLForSchemaDDL', 'sp_MSobjectprivs', 'sp_MSpeerapplyresponse',\n            'sp_MSpeerapplytopologyinfo', 'sp_MSpeerconflictdetection_statuscollection_applyresponse',\n            'sp_MSpeerconflictdetection_statuscollection_sendresponse', 'sp_MSpeerconflictdetection_topology_applyresponse', 'sp_MSpeerdbinfo',\n            'sp_MSpeersendresponse', 'sp_MSpeersendtopologyinfo', 'sp_MSpeertopeerfwdingexec', 'sp_MSpost_auto_proc',\n            'sp_MSpostapplyscript_forsubscriberprocs', 'sp_MSprep_exclusive', 'sp_MSprepare_mergearticle', 'sp_MSprofile_in_use',\n            'sp_MSproxiedmetadata', 'sp_MSproxiedmetadatabatch', 'sp_MSproxiedmetadatalightweight', 'sp_MSpub_adjust_identity',\n            'sp_MSpublication_access', 'sp_MSpublicationcleanup', 'sp_MSpublicationview', 'sp_MSquery_syncstates', 'sp_MSquerysubtype',\n            'sp_MSrecordsnapshotdeliveryprogress', 'sp_MSreenable_check', 'sp_MSrefresh_anonymous', 'sp_MSrefresh_publisher_idrange',\n            'sp_MSregenerate_mergetriggersprocs', 'sp_MSregisterdynsnapseqno', 'sp_MSregistermergesnappubid', 'sp_MSregistersubscription',\n            'sp_MSreinit_failed_subscriptions', 'sp_MSreinit_hub', 'sp_MSreinit_subscription', 'sp_MSreinitoverlappingmergepublications',\n            'sp_MSreleasedynamicsnapshotapplock', 'sp_MSreleasemakegenerationapplock', 'sp_MSreleasemergeadminapplock', 'sp_MSreleaseSlotLock',\n            'sp_MSreleasesnapshotdeliverysessionlock', 'sp_MSremove_mergereplcommand', 'sp_MSremoveoffloadparameter', 'sp_MSrepl_agentstatussummary',\n            'sp_MSrepl_backup_complete', 'sp_MSrepl_backup_start', 'sp_MSrepl_check_publisher', 'sp_MSrepl_createdatatypemappings',\n            'sp_MSrepl_distributionagentstatussummary', 'sp_MSrepl_dropdatatypemappings', 'sp_MSrepl_enumarticlecolumninfo',\n            'sp_MSrepl_enumpublications', 'sp_MSrepl_enumpublishertables', 'sp_MSrepl_enumsubscriptions', 'sp_MSrepl_enumtablecolumninfo',\n            'sp_MSrepl_FixPALRole', 'sp_MSrepl_getdistributorinfo', 'sp_MSrepl_getpkfkrelation', 'sp_MSrepl_gettype_mappings',\n            'sp_MSrepl_helparticlermo', 'sp_MSrepl_init_backup_lsns', 'sp_MSrepl_isdbowner', 'sp_MSrepl_IsLastPubInSharedSubscription',\n            'sp_MSrepl_IsUserInAnyPAL', 'sp_MSrepl_linkedservers_rowset', 'sp_MSrepl_mergeagentstatussummary', 'sp_MSrepl_PAL_rolecheck',\n            'sp_MSrepl_raiserror', 'sp_MSrepl_schema', 'sp_MSrepl_setNFR', 'sp_MSrepl_snapshot_helparticlecolumns',\n            'sp_MSrepl_snapshot_helppublication', 'sp_MSrepl_startup_internal', 'sp_MSrepl_subscription_rowset', 'sp_MSrepl_testadminconnection',\n            'sp_MSrepl_testconnection', 'sp_MSreplagentjobexists', 'sp_MSreplcheck_permission', 'sp_MSreplcheck_pull', 'sp_MSreplcheck_subscribe',\n            'sp_MSreplcheck_subscribe_withddladmin', 'sp_MSreplcheckoffloadserver', 'sp_MSreplcopyscriptfile', 'sp_MSreplraiserror',\n            'sp_MSreplremoveuncdir', 'sp_MSreplupdateschema', 'sp_MSrequestreenumeration', 'sp_MSrequestreenumeration_lightweight',\n            'sp_MSreset_attach_state', 'sp_MSreset_queued_reinit', 'sp_MSreset_subscription', 'sp_MSreset_subscription_seqno',\n            'sp_MSreset_synctran_bit', 'sp_MSreset_transaction', 'sp_MSresetsnapshotdeliveryprogress', 'sp_MSrestoresavedforeignkeys',\n            'sp_MSretrieve_publication_attributes', 'sp_MSscript_article_view', 'sp_MSscript_dri', 'sp_MSscript_pub_upd_trig',\n            'sp_MSscript_sync_del_proc', 'sp_MSscript_sync_del_trig', 'sp_MSscript_sync_ins_proc', 'sp_MSscript_sync_ins_trig',\n            'sp_MSscript_sync_upd_proc', 'sp_MSscript_sync_upd_trig', 'sp_MSscriptcustomdelproc', 'sp_MSscriptcustominsproc',\n            'sp_MSscriptcustomupdproc', 'sp_MSscriptdatabase', 'sp_MSscriptdb_worker', 'sp_MSscriptforeignkeyrestore', 'sp_MSscriptsubscriberprocs',\n            'sp_MSscriptviewproc', 'sp_MSsendtosqlqueue', 'sp_MSset_dynamic_filter_options', 'sp_MSset_logicalrecord_metadata',\n            'sp_MSset_new_identity_range', 'sp_MSset_oledb_prop', 'sp_MSset_snapshot_xact_seqno', 'sp_MSset_sub_guid',\n            'sp_MSset_subscription_properties', 'sp_MSsetaccesslist', 'sp_MSsetalertinfo', 'sp_MSsetartprocs', 'sp_MSsetbit',\n            'sp_MSsetconflictscript', 'sp_MSsetconflicttable', 'sp_MSsetcontext_bypasswholeddleventbit', 'sp_MSsetcontext_replagent',\n            'sp_MSsetgentozero', 'sp_MSsetlastrecgen', 'sp_MSsetlastsentgen', 'sp_MSsetreplicainfo', 'sp_MSsetreplicaschemaversion',\n            'sp_MSsetreplicastatus', 'sp_MSsetrowmetadata', 'sp_MSSetServerProperties', 'sp_MSsetsubscriberinfo', 'sp_MSsettopology',\n            'sp_MSsetup_identity_range', 'sp_MSsetup_partition_groups', 'sp_MSsetup_use_partition_groups', 'sp_MSsetupbelongs',\n            'sp_MSsetupnosyncsubwithlsnatdist', 'sp_MSsetupnosyncsubwithlsnatdist_cleanup', 'sp_MSsetupnosyncsubwithlsnatdist_helper',\n            'sp_MSSharedFixedDisk', 'sp_MSSQLDMO70_version', 'sp_MSSQLDMO80_version', 'sp_MSSQLDMO90_version', 'sp_MSSQLOLE_version',\n            'sp_MSSQLOLE65_version', 'sp_MSstartdistribution_agent', 'sp_MSstartmerge_agent', 'sp_MSstartsnapshot_agent',\n            'sp_MSstopdistribution_agent', 'sp_MSstopmerge_agent', 'sp_MSstopsnapshot_agent', 'sp_MSsub_check_identity', 'sp_MSsub_set_identity',\n            'sp_MSsubscription_status', 'sp_MSsubscriptionvalidated', 'sp_MStablechecks', 'sp_MStablekeys', 'sp_MStablerefs', 'sp_MStablespace',\n            'sp_MStestbit', 'sp_MStran_ddlrepl', 'sp_MStran_is_snapshot_required', 'sp_MStrypurgingoldsnapshotdeliveryprogress', 'sp_MSuniquename',\n            'sp_MSunmarkifneeded', 'sp_MSunmarkreplinfo', 'sp_MSunmarkschemaobject', 'sp_MSunregistersubscription', 'sp_MSupdate_agenttype_default',\n            'sp_MSupdate_singlelogicalrecordmetadata', 'sp_MSupdate_subscriber_info', 'sp_MSupdate_subscriber_schedule',\n            'sp_MSupdate_subscriber_tracer_history', 'sp_MSupdate_subscription', 'sp_MSupdate_tracer_history', 'sp_MSupdatecachedpeerlsn',\n            'sp_MSupdategenerations_afterbcp', 'sp_MSupdategenhistory', 'sp_MSupdateinitiallightweightsubscription', 'sp_MSupdatelastsyncinfo',\n            'sp_MSupdatepeerlsn', 'sp_MSupdaterecgen', 'sp_MSupdatereplicastate', 'sp_MSupdatesysmergearticles', 'sp_MSuplineageversion',\n            'sp_MSuploadsupportabilitydata', 'sp_MSuselightweightreplication', 'sp_MSvalidate_dest_recgen', 'sp_MSvalidate_subscription',\n            'sp_MSvalidate_wellpartitioned_articles', 'sp_MSvalidatearticle', 'sp_MSwritemergeperfcounter',\n\n        ),\n        7 => array(\n            'APPLY', 'FULL', 'ALL', 'AND', 'ANY', 'BETWEEN', 'CROSS',\n            'EXISTS', 'IN', 'INNER', 'JOIN', 'LIKE', 'NOT', 'NULL', 'OR', 'OUTER', 'SOME'\n        )\n    ),\n    'SYMBOLS' => array(\n        '!', '!=', '%', '&', '&&', '(', ')', '*', '+', '-', '/', '<', '<<', '<=', ';', '::', ',', '.',\n        '<=>', '<>', '=', '>', '>=', '>>', '^', '|', '||', '~'\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false,\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #FF00FF;',\n            2 => 'color: #0000FF;',\n            3 => 'color: #AF0000;',\n            4 => 'color: #00AF00;',\n            5 => 'color: #AF0000;',\n            6 => 'color: #AF0000;',\n            7 => 'color: #808080;',\n        ),\n        'COMMENTS' => array(\n            1 => 'color: #009E00;',\n            'MULTI' => 'color: #009E00;'\n        ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #ff0000;'\n        ),\n        'BRACKETS' => array(\n            0 => 'color: #808080;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #FF0000;',\n            'HARD' => 'color: #FF0000;'\n        ),\n        'ESCAPE_CHAR' => array(\n            'HARD' => 'color: #FF0000;'\n        ),\n        'NUMBERS' => array(\n            0 => 'color: #000;'\n        ),\n        'METHODS' => array(\n            1 => 'color: #202020;',\n            2 => 'color: #202020;'\n        ),\n        'SYMBOLS' => array(\n            0 => 'color: #808080;'\n        ),\n        'REGEXPS' => array(\n            0 => 'color: #cc3333;'\n        ),\n        'SCRIPT' => array(\n        )\n    ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n    ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n    ),\n    'REGEXPS' => array(\n        // variables\n        0 => \"[\\\\@]+[a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*\"\n    ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n    ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n    ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            2 => array(\n                'DISALLOWED_BEFORE' => \"(?<![@\\[a-zA-Z0-9\\$_\\|\\#|^&'\\\"])\",\n                'DISALLOWED_AFTER' => \"(?![\\]a-zA-Z0-9_\\|%\\-&;'\\\"])\",\n            ),\n            7 => array(\n                'DISALLOWED_BEFORE' => \"(?<![@\\[a-zA-Z0-9\\$_\\|\\#|^&'\\\"])\",\n                'DISALLOWED_AFTER' => \"(?![\\]a-zA-Z0-9_\\|%\\-&;'\\\"])\",\n            ),\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/twig.php",
    "content": "<?php\n/*************************************************************************************\n * twig.php\n * ----------\n * Author: Keyvan Akbary (keyvan@kiwwito.com)\n * Copyright: (c) 2011 Keyvan Akbary (http://www.kiwwito.com/)\n * Release Version: 1.0.9.1\n * Date Started: 2011/12/05\n *\n * Twig template language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2012/09/28 (1.9.0 by José Andrés Puertas y Javier Eguiluz)\n *   - Added new tags, filters and functions\n *   - Added regexps for variables, objects and properties\n *   - Lots of other minor tweaks (delimites, comments, ...)\n *\n * 2011/12/05 (1.0.0 by Keyvan Akbary)\n *   -  Initial Release\n *\n * TODO\n * ----\n *\n *************************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Twig',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array('{#' => '#}'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        //TWIG\n        //Tags\n        1 => array(\n            'autoescape',\n            'endautoescape',\n            'block',\n            'endblock',\n            'do',\n            'embed',\n            'endembed',\n            'extends',\n            'filter',\n            'endfilter',\n            'for',\n            'endfor',\n            'from',\n            'if',\n            'else',\n            'elseif',\n            'endif',\n            'import',\n            'include',\n            'macro',\n            'endmacro',\n            'raw',\n            'endraw',\n            'sandbox',\n            'set',\n            'endset',\n            'spaceless',\n            'endspaceless',\n            'use',\n            'verbatim',\n            'endverbatim',\n            'trans',\n            'endtrans',\n            'transchoice',\n            'endtranschoice'\n        ),\n        //Filters\n        2 => array(\n            'abs',\n            'batch',\n            'capitalize',\n            'convert_encoding',\n            'date',\n            'date_modify',\n            'default',\n            'escape',\n            'first',\n            'format',\n            'join',\n            'json_encode',\n            'keys',\n            'last',\n            'length',\n            'lower',\n            'merge',\n            'nl2br',\n            'number_format',\n            'replace',\n            'reverse',\n            'slice',\n            'sort',\n            'split',\n            'striptags',\n            'title',\n            'trim',\n            'upper',\n            'url_encode'\n        ),\n        //Functions\n        3 => array(\n            'attribute',\n            'cycle',\n            'dump',\n            'parent',\n            'random',\n            'range',\n            'source',\n            'template_from_string'\n        ),\n        //Tests\n        4 => array(\n            'constant',\n            'defined',\n            'divisibleby',\n            'empty',\n            'even',\n            'iterable',\n            'null',\n            'odd',\n            'sameas'\n        ),\n        //Operators\n        5 => array(\n            'in',\n            'is',\n            'and',\n            'b-and',\n            'or',\n            'b-or',\n            'b-xor',\n            'not',\n            'into',\n            'starts with',\n            'ends with',\n            'matches'\n        )\n    ),\n    'SYMBOLS' => array(\n        '{{',\n        '}}',\n        '{%',\n        '%}',\n        '+',\n        '-',\n        '/',\n        '/',\n        '*',\n        '**', //Math operators\n        '==',\n        '!=',\n        '<',\n        '>',\n        '>=',\n        '<=',\n        '===', //Logic operators\n        '..',\n        '|',\n        '~',\n        '[',\n        ']',\n        '.',\n        '?',\n        ':',\n        '(',\n        ')', //Other\n        '=' //HTML (attributes)\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        //Twig\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0600FF;', //Tags\n            2 => 'color: #008000;', //Filters\n            3 => 'color: #0600FF;', //Functions\n            4 => 'color: #804040;', //Tests\n            5 => 'color: #008000;'\n        ),\n        'COMMENTS' => array(\n            'MULTI' => 'color: #008080; font-style: italic;'\n        ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n        ),\n        'BRACKETS' => array(\n            0 => 'color: #D36900;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n        ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n        ),\n        'METHODS' => array(\n            1 => 'color: #006600;'\n        ),\n        'SYMBOLS' => array(\n            0 => 'color: #D36900;'\n        ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => 'color: #808080; font-style: italic;',\n            2 => 'color: #009000;'\n        ),\n        'REGEXPS' => array(\n            0 => 'color: #00aaff;',\n            1 => 'color: #00aaff;'\n        )\n    ),\n    'URLS' => array(\n        1 => 'http://twig.sensiolabs.org/doc/tags/{FNAMEL}.html',\n        2 => 'http://twig.sensiolabs.org/doc/filters/{FNAMEL}.html',\n        3 => 'http://twig.sensiolabs.org/doc/functions/{FNAMEL}.html',\n        4 => 'http://twig.sensiolabs.org/doc/tests/{FNAMEL}.html',\n        5 => '',\n    ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n    ),\n    'REGEXPS' => array(\n        0 => array(\n            GESHI_SEARCH => \"([[:space:]])([a-zA-Z_][a-zA-Z0-9_]*)\",\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n        ),\n        1 => array(\n            GESHI_SEARCH => \"\\.([a-zA-Z_][a-zA-Z0-9_]*)\",\n            GESHI_REPLACE => '.\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n        ),\n    ),\n    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,\n    'SCRIPT_DELIMITERS' => array(\n        0 => array(\n            '{{' => '}}',\n            '{%' => '%}'\n        ),\n        1 => array(\n            '{#' => '#}',\n        )\n    ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        1 => true,\n        2 => true\n    ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array()\n    )\n);\n"
  },
  {
    "path": "includes/geshi/typoscript.php",
    "content": "<?php\n/*************************************************************************************\n * typoscript.php\n * --------\n * Author: Jan-Philipp Halle (typo3@jphalle.de)\n * Copyright: (c) 2005 Jan-Philipp Halle (http://www.jphalle.de/)\n * Release Version: 1.0.9.1\n * Date Started: 2005/07/29\n *\n * TypoScript language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/07/11 (1.0.8)\n * - Michiel Roos <geshi@typofree.org> Complete rewrite\n * 2005/07/29 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/07/14)\n * -------------------------\n * <things-to-do>\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'TypoScript',\n    'COMMENT_SINGLE' => array(1  => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(2 => '/(?<!(#|\\'|\"))(?:#(?!(?:[a-fA-F0-9]{6}|[a-fA-F0-9]{3}))[^\\n#]+|#{2}[^\\n#]+|#{7,999}[^\\n]+)/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        // Conditions: http://documentation.typo3.org/documentation/tsref/conditions/\n        1 => array(\n            'browser', 'compatVersion', 'dayofmonth', 'dayofweek', 'device',\n            'globalString', 'globalVars', 'hostname', 'hour',\n            'ip', 'language', 'loginUser', 'loginuser', 'minute',\n            'month', 'PIDinRootline', 'PIDupinRootline',\n            'system', 'treelevel', 'useragent', 'userFunc',\n            'usergroup', 'version'\n            ),\n\n        // Functions: http://documentation.typo3.org/documentation/tsref/functions/\n        2 => array(\n            'addParams', 'encapsLines', 'filelink', 'HTMLparser',\n            'HTMLparser_tags', 'if', 'imageLinkWrap',\n            'imgResource', 'makelinks', 'numRows', 'parseFunc',\n            'select', 'split', 'stdWrap', 'tableStyle', 'tags',\n            'textStyle', 'typolink'\n            ),\n\n        // Toplevel objects: http://documentation.typo3.org/documentation/tsref/tlo-objects/\n        3 => array(\n            'CARRAY', 'CONFIG', 'CONSTANTS', 'FE_DATA', 'FE_TABLE', 'FRAME',\n            'FRAMESET', 'META', 'PAGE', 'plugin'\n            ),\n\n        // Content Objects (cObject) : http://documentation.typo3.org/documentation/tsref/cobjects/\n        4 => array(\n            'CASE', 'CLEARGIF', 'COA', 'COA_INT', 'COBJ_ARRAY', 'COLUMNS',\n            'CONTENT', 'CTABLE', 'EDITPANEL', 'FILE', 'FORM',\n            'HMENU', 'HRULER', 'HTML', 'IMAGE', 'IMGTEXT',\n            'IMG_RESOURCE', 'LOAD_REGISTER', 'MULTIMEDIA',\n            'OTABLE', 'PHP_SCRIPT', 'PHP_SCRIPT_EXT',\n            'PHP_SCRIPT_INT', 'RECORDS', 'RESTORE_REGISTER',\n            'SEARCHRESULT', 'TEMPLATE', 'TEXT', 'USER',\n            'USER_INT'\n            ),\n\n        // GIFBUILDER toplevel link: http://documentation.typo3.org/documentation/tsref/gifbuilder/\n        5 => array(\n            'GIFBUILDER',\n            ),\n\n        // GIFBUILDER: http://documentation.typo3.org/documentation/tsref/gifbuilder/\n        // skipped fields: IMAGE, TEXT\n        // NOTE! the IMAGE and TEXT field already are linked in group 4, they\n        // cannot be linked twice . . . . unfortunately\n        6 => array(\n            'ADJUST', 'BOX', 'CROP', 'EFFECT', 'EMBOSS',\n            'IMGMAP', 'OUTLINE', 'SCALE', 'SHADOW',\n            'WORKAREA'\n            ),\n\n        // MENU Objects: http://documentation.typo3.org/documentation/tsref/menu/\n        7 => array(\n            'GMENU', 'GMENU_FOLDOUT', 'GMENU_LAYERS', 'IMGMENU',\n            'IMGMENUITEM', 'JSMENU', 'JSMENUITEM', 'TMENU',\n            'TMENUITEM', 'TMENU_LAYERS'\n            ),\n\n        // MENU common properties: http://documentation.typo3.org/documentation/tsref/menu/common-properties/\n        8 => array(\n            'alternativeSortingField', 'begin', 'debugItemConf',\n            'imgNameNotRandom', 'imgNamePrefix',\n            'itemArrayProcFunc', 'JSWindow', 'maxItems',\n            'minItems', 'overrideId', 'sectionIndex',\n            'showAccessRestrictedPages', 'submenuObjSuffixes'\n            ),\n\n        // MENU item states: http://documentation.typo3.org/documentation/tsref/menu/item-states/\n        9 => array(\n            'ACT', 'ACTIFSUB', 'ACTIFSUBRO', 'ACTRO', 'CUR', 'CURIFSUB',\n            'CURIFSUBRO', 'CURRO', 'IFSUB', 'IFSUBRO', 'NO',\n            'SPC', 'USERDEF1', 'USERDEF1RO', 'USERDEF2',\n            'USERDEF2RO', 'USR', 'USRRO'\n            ),\n        ),\n\n    // Does not include '-' because of stuff like htmlTag_langKey = en-GB and\n    // lib.nav-sub\n    'SYMBOLS' => array(\n        0 => array(\n            '|',\n            '+', '*', '/', '%',\n            '!', '&&', '^',\n            '<', '>', '=',\n            '?', ':',\n            '.'\n            ),\n        1 => array(\n            '(', ')', '{', '}', '[', ']'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true,\n        9 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #ed7d14;',\n            2 => 'font-weight: bold;',\n            3 => 'color: #990000; font-weight: bold;',\n            4 => 'color: #990000; font-weight: bold;',\n            5 => 'color: #990000; font-weight: bold;',\n            6 => 'color: #990000; font-weight: bold;',\n            7 => 'color: #990000; font-weight: bold;',\n            8 => 'font-weight: bold;',\n            9 => 'color: #990000; font-weight: bold;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #aaa; font-style: italic;',\n            2 => 'color: #aaa; font-style: italic;',\n            'MULTI' => 'color: #aaa; font-style: italic;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ac14aa;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc0000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #0000e0; font-weight: bold;',\n            2 => 'color: #0000e0; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933; font-weight: bold;',\n                // Set this to the same value as brackets above\n            1 => 'color: #009900; font-weight: bold;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #009900;',\n            1 => 'color: #009900; font-weight: bold;',\n            2 => 'color: #3366CC;',\n            3 => 'color: #000066; font-weight: bold;',\n            4 => 'color: #ed7d14;',\n            5 => 'color: #000066; font-weight: bold;',\n            6 => 'color: #009900;',\n            7 => 'color: #3366CC;'\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => 'http://documentation.typo3.org/documentation/tsref/conditions/{FNAME}/',\n        2 => 'http://documentation.typo3.org/documentation/tsref/functions/{FNAME}/',\n        3 => 'http://documentation.typo3.org/documentation/tsref/tlo-objects/{FNAME}/',\n        4 => 'http://documentation.typo3.org/documentation/tsref/cobjects/{FNAME}/',\n        5 => 'http://documentation.typo3.org/documentation/tsref/gifbuilder/',\n        6 => 'http://documentation.typo3.org/documentation/tsref/gifbuilder/{FNAME}/',\n        7 => 'http://documentation.typo3.org/documentation/tsref/menu/{FNAME}/',\n        8 => 'http://documentation.typo3.org/documentation/tsref/menu/common-properties/',\n        9 => 'http://documentation.typo3.org/documentation/tsref/menu/item-states/'\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n            // xhtml tag\n        2 => array(\n            GESHI_SEARCH => '(&lt;)([a-zA-Z\\\\/][^\\\\/\\\\\\x7C]*?)(&gt;)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 's',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3'\n            ),\n\n            // Constant\n        0 => array(\n            GESHI_SEARCH => '(\\{)(\\$[a-zA-Z_\\.]+[a-zA-Z0-9_\\.]*)(\\})',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => '\\\\3'\n            ),\n\n            // Constant dollar sign\n        1 => array(\n            GESHI_SEARCH => '(\\$)([a-zA-Z_\\.]+[a-zA-Z0-9_\\.]*)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '\\\\2'\n            ),\n\n            // extension keys / tables: (static|user|ttx|tx|tt|fe)_something[_something]\n        3 => array(\n            GESHI_SEARCH => '(plugin\\.|[^\\.]\\b)((?:static|user|ttx|tx|tt|fe)(?:_[0-9A-Za-z_]+?)\\b)',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n\n            // conditions and controls\n        4 => array(\n            GESHI_SEARCH => '(\\[)(globalVar|global|end)\\b',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => 'i',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n\n            // lowlevel setup and constant objects\n        5 => array(\n            GESHI_SEARCH => '([^\\.\\$-\\{]\\b)(cObj|field|config|content|file|frameset|includeLibs|lib|page|plugin|register|resources|sitemap|sitetitle|styles|temp|tt_content|tt_news|types|xmlnews)\\b',\n            GESHI_REPLACE => '\\\\2',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '\\\\1',\n            GESHI_AFTER => ''\n            ),\n\n            // markers\n        6 => array(\n            GESHI_SEARCH => '(###[^#]+###)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n\n            // hex color codes\n        7 => array(\n            GESHI_SEARCH => '(#[a-fA-F0-9]{6}\\b|#[a-fA-F0-9]{3}\\b)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/unicon.php",
    "content": "<?php\n/*************************************************************************************\n * unicon.php\n * --------\n * Author: Matt Oates (mattoates@gmail.com)\n * Copyright: (c) 2010 Matt Oates (http://mattoates.co.uk)\n * Release Version: 1.0.9.1\n * Date Started: 2010/04/20\n *\n * Unicon the Unified Extended Dialect of Icon language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2010/04/24 (0.0.0.2)\n *  -  Validated with Geshi langcheck.php FAILED due to preprocessor keywords looking like symbols\n *  -  Hard wrapped to improve readability\n * 2010/04/20 (0.0.0.1)\n *  -  First Release\n *\n * TODO (updated 2010/04/20)\n * -------------------------\n * - Do the &amp; need replacing with &?\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Unicon (Unified Extended Dialect of Icon)',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', '\\''),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'break', 'case', 'class', 'continue', 'create', 'default', 'do',\n            'else', 'end', 'every', 'fail', 'for', 'if', 'import', 'initial', 'initially',\n            'invocable', 'link', 'method', 'next', 'not', 'of', 'package', 'procedure', 'record',\n            'repeat', 'return', 'switch', 'suspend', 'then', 'to', 'until', 'while'\n            ),\n        2 => array(\n            'global', 'local', 'static'\n            ),\n        3 => array(\n            'allocated', 'ascii', 'clock', 'collections',\n            'column', 'cset', 'current', 'date', 'dateline', 'digits',\n            'dump', 'e', 'error', 'errornumber', 'errortext',\n            'errorvalue', 'errout', 'eventcode', 'eventsource', 'eventvalue',\n            'fail', 'features', 'file', 'host', 'input', 'lcase',\n            'letters', 'level', 'line', 'main', 'now', 'null',\n            'output', 'phi', 'pi', 'pos', 'progname', 'random',\n            'regions', 'source', 'storage', 'subject', 'syserr', 'time',\n            'trace', 'ucase', 'version', 'col', 'control', 'interval',\n            'ldrag', 'lpress', 'lrelease', 'mdrag', 'meta', 'mpress',\n            'mrelease', 'rdrag', 'resize', 'row', 'rpress', 'rrelease',\n            'shift', 'window', 'x', 'y'\n            ),\n        4 => array(\n            'abs', 'acos', 'any', 'args', 'asin', 'atan', 'bal', 'center', 'char',\n            'chmod', 'close', 'cofail', 'collect', 'copy', 'cos', 'cset', 'ctime', 'dbcolumns',\n            'dbdriver', 'dbkeys', 'dblimits', 'dbproduction', 'dbtables', 'delay', 'delete', 'detab',\n            'display', 'dtor', 'entab', 'errorclear', 'event', 'eventmask', 'EvGet', 'exit', 'exp',\n            'fetch', 'fieldnames', 'find', 'flock', 'flush', 'function', 'get', 'getch', 'getche',\n            'getenv', 'gettimeofday', 'globalnames', 'gtime', 'iand', 'icom', 'image', 'insert',\n            'integer', 'ior', 'ishift', 'ixor', 'key', 'left', 'list', 'load', 'loadfunc',\n            'localnames', 'log', 'many', 'map', 'match', 'member', 'mkdir', 'move', 'name', 'numeric',\n            'open', 'opmask', 'ord', 'paramnames', 'parent', 'pipe', 'pop', 'pos', 'proc', 'pull',\n            'push', 'put', 'read', 'reads', 'real', 'receive', 'remove', 'rename', 'repl', 'reverse',\n            'right', 'rmdir', 'rtod', 'runerr', 'seek', 'select', 'send', 'seq', 'serial', 'set',\n            'setenv', 'sort', 'sortf', 'sql', 'sqrt', 'stat', 'staticnames', 'stop', 'string', 'system', 'tab',\n            'table', 'tan', 'trap', 'trim', 'truncate', 'type', 'upto', 'utime', 'variable', 'where',\n            'write', 'writes'\n            ),\n        5 => array(\n            'Active', 'Alert', 'Bg', 'Clip', 'Clone', 'Color', 'ColorValue',\n            'CopyArea', 'Couple', 'DrawArc', 'DrawCircle', 'DrawCurve', 'DrawCylinder', 'DrawDisk',\n            'DrawImage', 'DrawLine', 'DrawPoint', 'DrawPolygon', 'DrawRectangle', 'DrawSegment',\n            'DrawSphere', 'DrawString', 'DrawTorus', 'EraseArea', 'Event', 'Fg', 'FillArc',\n            'FillCircle', 'FillPolygon', 'FillRectangle', 'Font', 'FreeColor', 'GotoRC', 'GotoXY',\n            'IdentifyMatrix', 'Lower', 'MatrixMode', 'NewColor', 'PaletteChars', 'PaletteColor',\n            'PaletteKey', 'Pattern', 'Pending', 'Pixel', 'PopMatrix', 'PushMatrix', 'PushRotate',\n            'PushScale', 'PushTranslate', 'QueryPointer', 'Raise', 'ReadImage', 'Refresh', 'Rotate',\n            'Scale', 'Texcoord', 'TextWidth', 'Texture', 'Translate', 'Uncouple', 'WAttrib',\n            'WDefault', 'WFlush', 'WindowContents', 'WriteImage', 'WSync'\n            ),\n        6 => array(\n            'define', 'include', 'ifdef', 'ifndef', 'else', 'endif', 'error',\n            'line', 'undef'\n            ),\n        7 => array(\n            '_V9', '_AMIGA', '_ACORN', '_CMS', '_MACINTOSH', '_MSDOS_386',\n            '_MS_WINDOWS_NT', '_MSDOS', '_MVS', '_OS2', '_POR', 'T', '_UNIX', '_POSIX', '_DBM',\n            '_VMS', '_ASCII', '_EBCDIC', '_CO_EXPRESSIONS', '_CONSOLE_WINDOW', '_DYNAMIC_LOADING',\n            '_EVENT_MONITOR', '_EXTERNAL_FUNCTIONS', '_KEYBOARD_FUNCTIONS', '_LARGE_INTEGERS',\n            '_MULTITASKING', '_PIPES', '_RECORD_IO', '_SYSTEM_FUNCTION', '_MESSAGING', '_GRAPHICS',\n            '_X_WINDOW_SYSTEM', '_MS_WINDOWS', '_WIN32', '_PRESENTATION_MGR', '_ARM_FUNCTIONS',\n            '_DOS_FUNCTIONS'\n            ),\n        8 => array(\n            'line')\n        ),\n    'SYMBOLS' => array(\n        1 => array(\n            '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '\\\\', '%', '=', '<', '>', '!', '^',\n            '&', '|', '?', ':', ';', ',', '.', '~', '@'\n            ),\n        2 => array(\n            '$(', '$)', '$<', '$>'\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        5 => true,\n        6 => true,\n        7 => true,\n        8 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #b1b100;',\n            3 => 'color: #b1b100;',\n            4 => 'color: #b1b100;',\n            5 => 'color: #b1b100;',\n            6 => 'color: #b1b100;',\n            7 => 'color: #b1b100;',\n            8 => 'color: #b1b100;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;',\n            ),\n        'METHODS' => array(\n            0 => 'color: #004000;'\n            ),\n        'SYMBOLS' => array(\n            1 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(),\n        'SCRIPT' => array()\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(1 => '.'),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array(),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            3 => array(\n                'DISALLOWED_BEFORE' => '(?<=&amp;)'\n                ),\n            4 => array(\n                'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9_\\\"\\'])\",\n                'DISALLOWED_AFTER' => \"(?![a-zA-Z0-9_\\\"\\'])\"\n                ),\n            6 => array(\n                'DISALLOWED_BEFORE' => '(?<=\\$)'\n                ),\n            8 => array(\n                'DISALLOWED_BEFORE' => '(?<=#)'\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/upc.php",
    "content": "<?php\n/*************************************************************************************\n * upc.php\n * -----\n * Author: Viraj Sinha (viraj@indent.com)\n * Contributors:\n *  - Nigel McNie (nigel@geshi.org)\n *  - Jack Lloyd (lloyd@randombit.net)\n *  - Michael Mol (mikemol@gmail.com)\n * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/06/04\n *\n * UPC language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2011/06/14 (1.0.8.11)\n *   -  This file is a revision of c.php with UPC keywords added\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'UPC',\n    'COMMENT_SINGLE' => array(1 => '//', 2 => '#'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Multiline-continued single-line comments\n        1 => '/\\/\\/(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //Multiline-continued preprocessor define\n        2 => '/#(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m'\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[\\\\\\\\abfnrtv\\'\\\"?\\n]#i\",\n        //Hexadecimal Char Specs\n        2 => \"#\\\\\\\\x[\\da-fA-F]{2}#\",\n        //Hexadecimal Char Specs\n        3 => \"#\\\\\\\\u[\\da-fA-F]{4}#\",\n        //Hexadecimal Char Specs\n        4 => \"#\\\\\\\\U[\\da-fA-F]{8}#\",\n        //Octal Char Specs\n        5 => \"#\\\\\\\\[0-7]{1,3}#\"\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        1 => array(\n            'if', 'return', 'while', 'case', 'continue', 'default',\n            'do', 'else', 'for', 'switch', 'goto',\n\n            'upc_forall', 'upc_barrier', 'upc_notify', 'upc_wait', 'upc_fence'\n            ),\n        2 => array(\n            'null', 'false', 'break', 'true', 'function', 'enum', 'extern', 'inline'\n            ),\n        3 => array(\n            // assert.h\n            'assert',\n\n            //complex.h\n            'cabs', 'cacos', 'cacosh', 'carg', 'casin', 'casinh', 'catan',\n            'catanh', 'ccos', 'ccosh', 'cexp', 'cimag', 'cis', 'clog', 'conj',\n            'cpow', 'cproj', 'creal', 'csin', 'csinh', 'csqrt', 'ctan', 'ctanh',\n\n            //ctype.h\n            'digittoint', 'isalnum', 'isalpha', 'isascii', 'isblank', 'iscntrl',\n            'isdigit', 'isgraph', 'islower', 'isprint', 'ispunct', 'isspace',\n            'isupper', 'isxdigit', 'toascii', 'tolower', 'toupper',\n\n            //inttypes.h\n            'imaxabs', 'imaxdiv', 'strtoimax', 'strtoumax', 'wcstoimax',\n            'wcstoumax',\n\n            //locale.h\n            'localeconv', 'setlocale',\n\n            //math.h\n            'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'exp',\n            'fabs', 'floor', 'frexp', 'ldexp', 'log', 'log10', 'modf', 'pow',\n            'sin', 'sinh', 'sqrt', 'tan', 'tanh',\n\n            //setjmp.h\n            'longjmp', 'setjmp',\n\n            //signal.h\n            'raise',\n\n            //stdarg.h\n            'va_arg', 'va_copy', 'va_end', 'va_start',\n\n            //stddef.h\n            'offsetof',\n\n            //stdio.h\n            'clearerr', 'fclose', 'fdopen', 'feof', 'ferror', 'fflush', 'fgetc',\n            'fgetpos', 'fgets', 'fopen', 'fprintf', 'fputc', 'fputchar',\n            'fputs', 'fread', 'freopen', 'fscanf', 'fseek', 'fsetpos', 'ftell',\n            'fwrite', 'getc', 'getch', 'getchar', 'gets', 'perror', 'printf',\n            'putc', 'putchar', 'puts', 'remove', 'rename', 'rewind', 'scanf',\n            'setbuf', 'setvbuf', 'snprintf', 'sprintf', 'sscanf', 'tmpfile',\n            'tmpnam', 'ungetc', 'vfprintf', 'vfscanf', 'vprintf', 'vscanf',\n            'vsprintf', 'vsscanf',\n\n            //stdlib.h\n            'abort', 'abs', 'atexit', 'atof', 'atoi', 'atol', 'bsearch',\n            'calloc', 'div', 'exit', 'free', 'getenv', 'itoa', 'labs', 'ldiv',\n            'ltoa', 'malloc', 'qsort', 'rand', 'realloc', 'srand', 'strtod',\n            'strtol', 'strtoul', 'system',\n\n            //string.h\n            'memchr', 'memcmp', 'memcpy', 'memmove', 'memset', 'strcat',\n            'strchr', 'strcmp', 'strcoll', 'strcpy', 'strcspn', 'strerror',\n            'strlen', 'strncat', 'strncmp', 'strncpy', 'strpbrk', 'strrchr',\n            'strspn', 'strstr', 'strtok', 'strxfrm',\n\n            //time.h\n            'asctime', 'clock', 'ctime', 'difftime', 'gmtime', 'localtime',\n            'mktime', 'strftime', 'time',\n\n            //wchar.h\n            'btowc', 'fgetwc', 'fgetws', 'fputwc', 'fputws', 'fwide',\n            'fwprintf', 'fwscanf', 'getwc', 'getwchar', 'mbrlen', 'mbrtowc',\n            'mbsinit', 'mbsrtowcs', 'putwc', 'putwchar', 'swprintf', 'swscanf',\n            'ungetwc', 'vfwprintf', 'vswprintf', 'vwprintf', 'wcrtomb',\n            'wcscat', 'wcschr', 'wcscmp', 'wcscoll', 'wcscpy', 'wcscspn',\n            'wcsftime', 'wcslen', 'wcsncat', 'wcsncmp', 'wcsncpy', 'wcspbrk',\n            'wcsrchr', 'wcsrtombs', 'wcsspn', 'wcsstr', 'wcstod', 'wcstok',\n            'wcstol', 'wcstoul', 'wcsxfrm', 'wctob', 'wmemchr', 'wmemcmp',\n            'wmemcpy', 'wmemmove', 'wmemset', 'wprintf', 'wscanf',\n\n            //wctype.h\n            'iswalnum', 'iswalpha', 'iswcntrl', 'iswctype', 'iswdigit',\n            'iswgraph', 'iswlower', 'iswprint', 'iswpunct', 'iswspace',\n            'iswupper', 'iswxdigit', 'towctrans', 'towlower', 'towupper',\n            'wctrans', 'wctype'\n            ),\n        4 => array(\n            'auto', 'char', 'const', 'double',  'float', 'int', 'long',\n            'register', 'short', 'signed', 'sizeof', 'static', 'struct',\n            'typedef', 'union', 'unsigned', 'void', 'volatile', 'wchar_t',\n\n            'int8', 'int16', 'int32', 'int64',\n            'uint8', 'uint16', 'uint32', 'uint64',\n\n            'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t',\n            'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t',\n\n            'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t',\n            'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t',\n\n            'int8_t', 'int16_t', 'int32_t', 'int64_t',\n            'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t',\n\n            'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t',\n            'size_t', 'off_t',\n\n            'upc_lock_t', 'shared', 'strict', 'relaxed', 'upc_blocksizeof',\n            'upc_localsizeof', 'upc_elemsizeof'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']',\n        '+', '-', '*', '/', '%',\n        '=', '<', '>',\n        '!', '^', '&', '|',\n        '?', ':',\n        ';', ','\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #000000; font-weight: bold;',\n            3 => 'color: #000066;',\n            4 => 'color: #993333;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #339933;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            1 => 'color: #000099; font-weight: bold;',\n            2 => 'color: #660099; font-weight: bold;',\n            3 => 'color: #660099; font-weight: bold;',\n            4 => 'color: #660099; font-weight: bold;',\n            5 => 'color: #006699; font-weight: bold;',\n            'HARD' => '',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000dd;',\n            GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;',\n            GESHI_NUMBER_OCT_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_HEX_PREFIX => 'color: #208080;',\n            GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;',\n            GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;',\n            GESHI_NUMBER_FLT_NONSCI => 'color:#800080;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;',\n            2 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://www.opengroup.org/onlinepubs/009695399/functions/{FNAMEL}.html',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/urbi.php",
    "content": "<?php\n/*************************************************************************************\n * urbi.php\n * -------\n * Author: Alexandre Morgand (morgand.alexandre@gmail.com)\n * Copyright: (c) 2011 Morgand (http://gostai.com)\n * Release Version: 1.0.9.1\n * Date Started: 2011/09/10\n *\n * Urbi language file for GeSHi.\n *\n * CHANGES\n * -------\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Urbi',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Multiline-continued single-line comments\n        1 => '/\\/\\/(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        //Multiline-continued preprocessor define\n        2 => '/#(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        // Urbi warning.\n        3 => \"#\\[[0-9a-f]{8}:warning\\].*#\",\n        // Urbi message from echo.\n        4 => '#\\[[0-9a-f]{8}\\] \\*\\*\\*.*#',\n        // Urbi error message.\n        6 => '#\\[[0-9a-f]{8}:error\\].*#',\n        // Urbi system message.\n        5 => '#\\[00.*\\].*#',\n        // Nested comment. Max depth 4.\n        7 => '#\\/\\*(.|\\n)*\\/\\*(.|\\n)*\\*\\/(.|\\n)*\\*\\/#',\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\n        0 => '\"',\n        1 => '\\'',\n        ),\n    // For Urbi, disable escape char is better.\n    'ESCAPE_CHAR' => '\\\\',\n    'ESCAPE_REGEXP' => array(\n        //Simple Single Char Escapes\n        1 => \"#\\\\\\\\[abfnrtv\\\\\\'\\\"?\\n]#\",\n        //Hexadecimal Char Specs\n        2 => \"#\\\\\\\\x[\\da-fA-F]{2}#\",\n        //Hexadecimal Char Specs\n        3 => \"#\\\\\\\\u[\\da-fA-F]{4}#\",\n        //Hexadecimal Char Specs\n        4 => \"#\\\\\\\\U[\\da-fA-F]{8}#\",\n        //Octal Char Specs\n        5 => \"#\\\\\\\\[0-7]{1,3}#\",\n        ),\n    'NUMBERS' =>\n        GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B |\n        GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI |\n        GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO,\n    'KEYWORDS' => array(\n        // Condition keywords.\n        1 => array(\n            'at', 'at;', 'at|', 'at&', 'at,', 'break', 'call', 'case', 'catch', 'continue',\n            'do', 'else', 'every', 'every&', 'every,', 'every;', 'every|', 'for', 'for&',\n            'for,', 'for;', 'foreach', 'for|', 'freezeif', 'goto', 'if', 'in', 'loop',\n            'loop&', 'loop,', 'loop;', 'loop|', 'or_eq', 'stopif', 'switch', 'try',\n            'waituntil', 'when', 'whenever', 'while', 'while&', 'while,', 'while;',\n            'while|', 'throw', 'onleave', 'watch', 'return', 'and_eq', 'default', 'finally',\n            'timeout', 'xor_eq'\n            ),\n        // Type.\n        2 => array(\n            'virtual', 'using', 'namespace', 'inline', 'protected', 'private', 'public',\n            'typename', 'typeid', 'class', 'const_cast', 'dynamic_cast', 'friend',\n            'template', 'enum', 'static_cast', 'reinterpret_cast', 'mutable', 'explicit'\n            ),\n        // Standard function.\n        3 => array(\n            'this', 'sizeof', 'delete', 'assert', 'isdef', 'compl', 'detach',\n            'disown', '__HERE__', 'asm'\n            ),\n        // Type.\n        4 => array(\n            'char', 'const', 'double', 'int', 'long', 'typedef', 'union',\n            'unsigned', 'var', 'short', 'wchar_t', 'volatile', 'signed', 'bool',\n            'float', 'struct', 'auto', 'register', 'static', 'extern', 'function',\n            'export', 'external', 'internal', 'closure', 'BIN'\n            ),\n        ),\n    'SYMBOLS' => array(\n        0 => array('(', ')', '{', '}', '[', ']'),\n        1 => array('<', '>','=', '!=', '==', '==='),\n        2 => array('+', '-', '*', '/', '%', 'bitand', 'bitor', 'xor'),\n        3 => array('!', '^', '&', '|'),\n        4 => array('?', ':', ';')\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000ff;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #0000dd;',\n            4 => 'color: #0000ff;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666;',\n            2 => 'color: #339900;',\n            3 => 'color: #d46b0f;',\n            4 => 'color: #20b537;',\n            5 => 'color: #73776f;',\n            6 => 'color: #a71616;',\n            7 => 'color: #666666;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #ff0000;',\n            1 => 'color: #ff0000;',\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #7a0874; font-weight: bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;',\n            1 => 'color: #007788;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000dd;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #007788;',\n            2 => 'color: #007788;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #008000;',\n            1 => 'color: #0000f8;',\n            2 => 'color: #000040;',\n            3 => 'color: #000040; font-weight: bold;',\n            4 => 'color: #008080;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #0000dd',\n            1 => 'color: #0000dd;',\n            2 => 'color: #0000dd;',\n            3 => 'color: #0000dd;',\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        2 => '::',\n        // FIXME: add -> splitter.\n        ),\n    'REGEXPS' => array(\n        0 => '0x[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])*',\n        1 => '[0-9]([0-9_]*[0-9])*(e|E)(-|\\+)?[0-9]([0-9_]*[0-9])*',\n        2 => '[0-9]([0-9_]*[0-9])*(min|s|ms|h|d)',\n        3 => '[0-9]+_([0-9_])*[0-9]',\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n);\n"
  },
  {
    "path": "includes/geshi/uscript.php",
    "content": "<?php\n/*************************************************************************************\n * uscript.php\n * ---------------------------------\n * Author: pospi (pospi@spadgos.com)\n * Copyright: (c) 2007 pospi (http://pospi.spadgos.com)\n * Release Version: 1.0.9.1\n * Date Started: 2007/05/21\n *\n * UnrealScript language file for GeSHi.\n *\n * Comments:\n * * Main purpose at this time is for Unreal Engine 2 / 2.5\n * * Mostly taken from UltraEdit unrealScript wordfile.\n *\n * CHANGES\n * -------\n * 2007/05/21 (1.0.8.10)\n *  -  First Release\n *\n * TODO (updated 2007/05/21)\n * -------------------------\n * * Update to feature any UE3 classes / keywords when UT3 comes out\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Unreal Script',\n    'COMMENT_SINGLE' => array(\n            1 => '//',\n            2 => '#'\n            ),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(        //declaration keywords\n            'simulated', 'state', 'class', 'function', 'event', 'var', 'local',\n            'ignores', 'globalconfig', 'config', 'abstract', 'nativereplication', 'native',\n            'auto', 'coerce', 'const', 'default',\n            'defaultproperties',\n            'enum', 'extends', 'expands', 'final', 'guid', 'latent', 'localized',\n            'new', 'noexport', 'operator', 'preoperator', 'optional', 'out',\n            'private', 'public', 'protected', 'reliable', 'replication',\n            'singular', 'static', 'struct', 'transient', 'unreliable',\n            'hidedropdown', 'cacheexempt', 'exec', 'delegate', 'import', 'placeable', 'exportstructs'\n            ),\n        2 => array(        //control flow keywords\n            'for', 'while', 'do', 'if', 'else', 'switch', 'case', 'return', 'break', 'continue',\n            'begin', 'loop', 'assert',\n            'foreach', 'AllActors', 'DynamicActors', 'ChildActors', 'BasedActors', 'TouchingActors',\n            'TraceActors', 'RadiusActors', 'VisibleActors', 'CollidingActors', 'VisibleCollidingActors'\n            ),\n        3 => array(        //global (object) functions\n            'log', 'warn', 'rot', 'vect', 'Rand', 'Min', 'Max', 'Clamp', 'Abs', 'Sin', 'ASin',\n            'Cos', 'ACos', 'Tan', 'ATan', 'Exp', 'Loge', 'Sqrt', 'Square', 'FRand', 'FMin', 'FMax', 'FClamp',\n            'Lerp', 'Smerp', 'Ceil', 'Round', 'VSize', 'Normal', 'Invert', 'VRand', 'MirrorVectorByNormal',\n            'GetAxes', 'GetUnAxes', 'RotRand', 'OrthoRotation', 'Normalize', 'ClockwiseFrom',\n            'Len', 'InStr', 'Mid', 'Left', 'Right', 'Caps', 'Chr', 'Asc', 'Locs',\n            'Divide', 'Split', 'StrCmp', 'Repl', 'Eval',\n            'InterpCurveEval', 'InterpCurveGetOutputRange', 'InterpCurveGetInputDomain',\n            'QuatProduct', 'QuatInvert', 'QuatRotateVector', 'QuatFindBetween', 'QuatFromAxisAndAngle',\n            'QuatFromRotator', 'QuatToRotator', 'QuatSlerp',\n            'Localize', 'GotoState', 'IsInState', 'GetStateName',\n            'ClassIsChildOf', 'IsA', 'Enable', 'Disable',\n            'GetPropertyText', 'SetPropertyText', 'GetEnum', 'DynamicLoadObject', 'FindObject',\n            'SaveConfig', 'ClearConfig', 'StaticSaveConfig', 'ResetConfig', 'StaticClearConfig',\n            'GetPerObjectNames', 'RandRange', 'StopWatch', 'IsOnConsole', 'IsSoaking',\n            'PlatformIsMacOS', 'PlatformIsUnix', 'PlatformIsWindows', 'PlatformIs64Bit',\n            'BeginState', 'EndState', 'Created', 'AllObjects', 'GetReferencers', 'GetItemName',\n            'ReplaceText', 'EatStr'\n            ),\n        4 => array(        //common almost-global (actor) functions\n            'ClientMessage', 'ConsoleCommand', 'CopyObjectToClipboard', 'TextToSpeech',\n            'Error', 'Sleep', 'SetCollision', 'SetCollisionSize', 'SetDrawScale', 'SetDrawScale3D',\n            'SetStaticMesh', 'SetDrawType', 'Move', 'SetLocation', 'SetRotation',\n            'SetRelativeLocation', 'SetRelativeRotation', 'MoveSmooth', 'AutonomousPhysics',\n            'SetBase', 'SetOwner', 'IsJoinedTo', 'GetMeshName', 'PlayAnim', 'LoopAnim', 'TweenAnim',\n            'IsAnimating', 'FinishAnim', 'HasAnim', 'StopAnimating', 'FreezeFrameAt', 'SetAnimFrame',\n            'IsTweening', 'AnimStopLooping', 'AnimEnd', 'LinkSkelAnim', 'LinkMesh', 'BoneRefresh',\n            'GetBoneCoords', 'GetBoneRotation', 'GetRootLocation', 'GetRootRotation', 'AttachToBone',\n            'DetachFromBone', 'SetBoneScale', 'UpdateURL', 'GetURLOption', 'SetPhysics', 'KAddImpulse',\n            'KImpact', 'KApplyForce', 'Clock', 'UnClock', 'Destroyed', 'GainedChild', 'LostChild',\n            'Tick', 'PostNetReceive', 'ClientTrigger', 'Trigger', 'UnTrigger', 'BeginEvent', 'EndEvent',\n            'Timer', 'HitWall', 'Falling', 'Landed', 'ZoneChange', 'PhysicsVolumeChange', 'Touch',\n            'PostTouch', 'UnTouch', 'Bump', 'BaseChange', 'Attach', 'Detach', 'SpecialHandling',\n            'EncroachingOn', 'EncroachedBy', 'RanInto', 'FinishedInterpolation', 'EndedRotation',\n            'UsedBy', 'FellOutOfWorld', 'KilledBy', 'TakeDamage', 'HealDamage', 'Trace', 'FastTrace',\n            'TraceThisActor', 'spawn', 'Destroy', 'TornOff', 'SetTimer', 'PlaySound', 'PlayOwnedSound',\n            'GetSoundDuration', 'MakeNoise', 'BeginPlay', 'GetAllInt', 'RenderOverlays', 'RenderTexture',\n            'PreBeginPlay', 'PostBeginPlay', 'PostNetBeginPlay', 'HurtRadius', 'Reset', 'Crash'\n            ),\n        5 => array(        //data types\n            'none', 'null',\n            'float', 'int', 'bool', 'byte', 'char', 'double', 'iterator', 'name', 'string',    //primitive\n            'plane', 'rotator', 'vector', 'spline',    'coords', 'Quat', 'Range', 'RangeVector', //structs\n            'Scale', 'Color', 'Box', 'IntBox', 'FloatBox', 'BoundingVolume', 'Matrix', 'InterpCurvePoint',\n            'InterpCurve', 'CompressedPosition', 'TMultiMap', 'PointRegion',\n            'KRigidBodyState', 'KSimParams', 'AnimRep', 'FireProperties',\n            'lodmesh', 'skeletalmesh', 'mesh', 'StaticMesh', 'MeshInstance',    //3d resources\n            'sound',    //sound resources\n            'material', 'texture', 'combiner', 'modifier', 'ColorModifier', 'FinalBlend',    //2d resources\n            'MaterialSequence', 'MaterialSwitch', 'OpacityModifier', 'TexModifier', 'TexEnvMap',\n            'TexCoordSource', 'TexMatrix', 'TexOscillator', 'TexPanner', 'TexRotator', 'TexScaler',\n            'RenderedMaterial', 'BitmapMaterial', 'ScriptedTexture', 'ShadowBitmapMaterial', 'Cubemap',\n            'FractalTexture', 'FireTexture', 'IceTexture', 'WaterTexture', 'FluidTexture', 'WaveTexture',\n            'WetTexture', 'ConstantMaterial', 'ConstantColor', 'FadeColor', 'ParticleMaterial',\n            'ProjectorMaterial', 'Shader', 'TerrainMaterial', 'VertexColor'\n            ),\n        6 => array(        //misc keywords\n            'false', 'true', 'self', 'super', 'MaxInt', 'Pi'\n            ),\n        7 => array(        //common actor enums & variables\n            'DT_None', 'DT_Sprite', 'DT_Mesh', 'DT_Brush', 'DT_RopeSprite',\n            'DT_VerticalSprite', 'DT_TerraForm', 'DT_SpriteAnimOnce', 'DT_StaticMesh', 'DT_DrawType',\n            'DT_Particle', 'DT_AntiPortal', 'DT_FluidSurface',\n            'PHYS_None', 'PHYS_Walking', 'PHYS_Falling', 'PHYS_Swimming', 'PHYS_Flying',\n            'PHYS_Rotating', 'PHYS_Projectile', 'PHYS_Interpolating', 'PHYS_MovingBrush', 'PHYS_Spider',\n            'PHYS_Trailer', 'PHYS_Ladder', 'PHYS_RootMotion', 'PHYS_Karma', 'PHYS_KarmaRagDoll',\n            'PHYS_Hovering', 'PHYS_CinMotion',\n            'ROLE_None', 'ROLE_DumbProxy', 'ROLE_SimulatedProxy',\n            'ROLE_AutonomousProxy', 'ROLE_Authority',\n            'STY_None', 'STY_Normal', 'STY_Masked', 'STY_Translucent', 'STY_Modulated', 'STY_Alpha',\n            'STY_Additive', 'STY_Subtractive', 'STY_Particle', 'STY_AlphaZ',\n            'OCCLUSION_None', 'OCCLUSION_BSP', 'OCCLUSION_Default', 'OCCLUSION_StaticMeshes',\n            'SLOT_None', 'SLOT_Misc', 'SLOT_Pain', 'SLOT_Interact', 'SLOT_Ambient', 'SLOT_Talk',\n            'SLOT_Interface', 'MTRAN_None', 'MTRAN_Instant', 'MTRAN_Segue', 'MTRAN_Fade',\n            'MTRAN_FastFade', 'MTRAN_SlowFade',\n\n            'DrawType', 'Physics', 'Owner', 'Base', 'Level', 'Game', 'Instigator', 'RemoteRole', 'Role',\n            'LifeSpan', 'Tag', 'Event', 'Location', 'Rotation', 'Velocity', 'Acceleration',\n            'RelativeLocation', 'RelativeRotation', 'DrawScale', 'DrawScale3D', 'Skins', 'Style',\n            'SoundVolume', 'SoundPitch', 'SoundRadius', 'TransientSoundVolume', 'TransientSoundRadius',\n            'CollisionRadius', 'CollisionHeight', 'Mass', 'Buoyancy', 'RotationRate', 'DesiredRotation'\n            ),\n        8 => array(        //common non-actor uscript classes\n            'Object',\n            'CacheManager', 'CameraEffect', 'Canvas', 'CheatManager', 'Commandlet', 'DecoText', 'GUI',\n            'InteractionMaster', 'Interactions', 'Interaction', 'KarmaParamsCollision', 'KarmaParamsRBFull',\n            'KarmaParamsSkel', 'KarmaParams', 'LevelSummary', 'Locale', 'Manifest', 'MaterialFactory',\n            'MeshObject', 'ObjectPool', 'Pallete',\n            'ParticleEmitter', 'MeshEmitter', 'BeamEmitter', 'SpriteEmitter', 'SparkEmitter', 'TrailEmitter',\n            'Player', 'PlayerInput', 'PlayInfo', 'ReachSpec', 'Resource', 'LatentScriptedAction', 'ScriptedAction',\n            'speciesType', 'StreamBase', 'Stream', 'EditorEngine', 'Engine', 'Time', 'WeaponFire',\n            'WebApplication', 'WebRequest', 'WebResponse', 'WebSkin', 'xPawnGibGroup', 'xPawnSoundGroup',\n            'xUtil'\n            ),\n        9 => array(        //common actor-based uscript classes\n            'Actor',\n            'Controller', 'AIController', 'ScriptedController', 'Bot', 'xBot',\n            'PlayerController', 'UnrealPlayer', 'xPlayer',\n            'DamageType', 'WeaponDamageType', 'Effects', 'Emitter', 'NetworkEmitter',\n            'Gib', 'HUD', 'HudBase', 'Info', 'FluidSurfaceInfo', 'Combo',\n            'GameInfo', 'UnrealMPGameInfo', 'DeathMatch', 'TeamGame', 'CTFGame',\n            'xCTFGame', 'xBombingRun', 'xDoubleDom', 'xTeamGame',\n            'ASGameInfo', 'Invasion', 'ONSOnslaughtGame', 'xDeathmatch',\n            'Mutator', 'Inventory', 'Ammunition', 'KeyInventory', 'Powerups', 'Armor', 'Weapon',\n            'InventoryAttachment', 'WeaponAttachment',\n            'KActor', 'KConstraint', 'KBSJoint', 'KCarWheelJoint', 'KConeLimit', 'KHinge', 'KTire',\n            'KVehicleFactory', 'Keypoint', 'AIScript', 'ScriptedSequence', 'ScriptedTrigger',\n            'AmbientSound', 'Light', 'SpotLight', 'SunLight', 'TriggerLight',\n            'MeshEffect', 'NavigationPoint', 'GameObjective', 'DestroyableObjective',\n            'PathNode', 'FlyingPathNode', 'RoadPathNode', 'InventorySpot', 'PlayerStart',\n            'Pawn', 'Vehicle', 'UnrealPawn', 'xPawn', 'Monster', 'ASVehicle', 'KVehicle', 'KCar',\n            'ONSWeaponPawn', 'SVehicle', 'ONSVehicle', 'ONSChopperCraft', 'ONSHoverCraft',\n            'ONSPlaneCraft', 'ONSTreadCraft', 'ONSWheeledCraft',\n            'Pickup', 'Ammo', 'UTAmmoPickup', 'ArmorPickup', 'KeyPickup', 'TournamentPickup',\n            'Projectile', 'Projector', 'DynamicProjector', 'ShadowProjector', 'xScorch',\n            'xEmitter', 'xPickupBase', 'xProcMesh', 'xWeatherEffect', 'PhysicsVolume', 'Volume'\n            ),\n        10 => array(    //symbol-like operators\n            'dot','cross'\n            )\n        ),\n    'SYMBOLS' => array(\n        '+','-','=','/','*','-','%','>','<','&','^','!','|','`','(',')','[',']','{','}',\n        '<<','>>','$','@'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false,\n        7 => false,\n        8 => false,\n        9 => false,\n        10 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000FF;',\n            2 => 'color: #0000FF;',\n            3 => 'color: #0066AA;',\n            4 => 'color: #0088FF;',\n            5 => 'color: #E000E0;',\n            6 => 'color: #900000;',\n            7 => 'color: #888800;',\n            8 => 'color: #AA6600;',\n            9 => 'color: #FF8800;',\n            10 => 'color: #0000FF;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008080; font-style: italic;',\n            2 => 'color: #000000; font-weight: bold;',\n            'MULTI' => 'color: #008080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #999999;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #FF0000;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #669966;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #E000E0;',\n            1 => 'color: #E000E0;'\n            ),\n        'SCRIPT' => array(\n            0 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => '',\n        7 => '',\n        8 => 'http://wiki.beyondunreal.com/wiki?search={FNAME}',\n        9 => 'http://wiki.beyondunreal.com/wiki?search={FNAME}',\n        10 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array('.'),\n    'REGEXPS' => array(            //handle template-style variable definitions\n        0 => array(\n            GESHI_SEARCH => '(class\\s*)<(\\s*(\\w+)\\s*)>',\n            GESHI_REPLACE => \"\\${1}\",\n            GESHI_MODIFIERS => 'i',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => \"< \\${3} >\"\n            ),\n        1 => array(\n            GESHI_SEARCH => '(array\\s*)<(\\s*(\\w+)\\s*)>',\n            GESHI_REPLACE => \"\\${1}\",\n            GESHI_MODIFIERS => 'i',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => \"< \\${3} >\"\n            )\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            10 => array(\n                'DISALLOWED_BEFORE' => '(?<!<)(?=DOT>)'\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/vala.php",
    "content": "<?php\n/*************************************************************************************\n * vala.php\n * ----------\n * Author: Nicolas Joseph (nicolas.joseph@valaide.org)\n * Copyright: (c) 2009 Nicolas Joseph\n * Release Version: 1.0.9.1\n * Date Started: 2009/04/29\n *\n * Vala language file for GeSHi.\n *\n * CHANGES\n * -------\n *\n * TODO\n * ----\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Vala',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        //Using and Namespace directives (basic support)\n        //Please note that the alias syntax for using is not supported\n        3 => '/(?:(?<=using[\\\\n\\\\s])|(?<=namespace[\\\\n\\\\s]))[\\\\n\\\\s]*([a-zA-Z0-9_]+\\\\.)*[a-zA-Z0-9_]+[\\n\\s]*(?=[;=])/i'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'HARDQUOTE' => array('\"\"\"'),\n    'HARDESCAPE' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'as', 'abstract', 'base', 'break', 'case', 'catch', 'const',\n            'construct', 'continue', 'default', 'delete', 'dynamic', 'do',\n            'else', 'ensures', 'extern', 'false', 'finally', 'for', 'foreach',\n            'get', 'if', 'in', 'inline', 'internal', 'lock', 'namespace',\n            'null', 'out', 'override', 'private', 'protected', 'public', 'ref',\n            'requires', 'return', 'set', 'static', 'switch', 'this', 'throw',\n            'throws', 'true', 'try', 'using', 'value', 'var', 'virtual',\n            'volatile', 'void', 'yield', 'yields', 'while'\n            ),\n        2 => array(\n            '#elif', '#endif', '#else', '#if'\n            ),\n        3 => array(\n            'is', 'new', 'owned', 'sizeof', 'typeof', 'unchecked', 'unowned', 'weak'\n            ),\n        4 => array(\n            'bool', 'char', 'class', 'delegate', 'double', 'enum',\n            'errordomain', 'float', 'int', 'int8', 'int16', 'int32', 'int64',\n            'interface', 'long', 'short', 'signal', 'size_t', 'ssize_t',\n            'string', 'struct', 'uchar', 'uint', 'uint8', 'uint16', 'uint32',\n            'ulong', 'unichar', 'ushort'\n            )\n        ),\n    'SYMBOLS' => array(\n        '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', ':', ';',\n        '(', ')', '{', '}', '[', ']', '|'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true,\n        4 => true,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0600FF;',\n            2 => 'color: #FF8000; font-weight: bold;',\n            3 => 'color: #008000;',\n            4 => 'color: #FF0000;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008080; font-style: italic;',\n            3 => 'color: #008080;',\n            'MULTI' => 'color: #008080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #008080; font-weight: bold;',\n            'HARD' => 'color: #008080; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #666666;',\n            'HARD' => 'color: #666666;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #FF0000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #0000FF;',\n            2 => 'color: #0000FF;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #008000;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'DISALLOWED_BEFORE' => \"(?<![a-zA-Z0-9\\$_\\|\\#>|^])\",\n            'DISALLOWED_AFTER' => \"(?![a-zA-Z0-9_<\\|%\\\\-])\"\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/vb.php",
    "content": "<?php\n/*************************************************************************************\n * vb.php\n * ------\n * Author: Roberto Rossi (rsoftware@altervista.org)\n * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org),\n *                     Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/08/30\n *\n * Visual Basic language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/08/27 (1.0.8.1)\n *  -  changed keyword list for better Visual Studio compliance\n * 2008/08/26 (1.0.8.1)\n *  -  Fixed multiline comments\n * 2004/11/27 (1.0.1)\n *  -  Added support for multiple object splitters\n * 2004/08/30 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Visual Basic',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        // Comments (either single or multiline with _\n        1 => '/\\'.*(?<! _)$/sUm',\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'Binary', 'Boolean', 'Byte', 'Currency', 'Date', 'Decimal', 'Double',\n            'String', 'Enum', 'Integer', 'Long', 'Object', 'Single', 'Variant'\n            ),\n        2 => array(\n            'CreateObject', 'GetObject', 'New', 'Option', 'Function',\n            'Call', 'Private', 'Public', 'Sub', 'Explicit', 'Compare', 'Exit'\n            ),\n        3 => array(\n            'And', 'Case', 'Do', 'Each', 'Else', 'ElseIf', 'End', 'For', 'GoSub',\n            'Goto', 'If', 'Is', 'Loop', 'Next', 'Not', 'Or', 'Resume', 'Select',\n            'Step', 'Then', 'To', 'Until', 'While', 'With', 'Xor', 'WithEvents',\n            'DoEvents', 'Close', 'Like', 'In'\n            ),\n        4 => array(\n            'As', 'Dim', 'Get', 'Set', 'ReDim', 'Error',\n            'Declare', 'Let', 'ByRef', 'ByVal',\n            'Optional', 'Property', 'Control', 'UBound', 'Mod',\n            'Implements', 'Input', 'LBound', 'Static', 'Stop',\n            'Type', 'TypeOf', 'On', 'Open', 'Output', 'ParamArray',\n            'Preserve', 'Print', 'RaiseEvent', 'Random', 'Line'\n            ),\n        5 => array(\n            'Nothing', 'False', 'True', 'Null', 'Empty'\n            ),\n        6 => array(\n            'ErrorHandler','ExitProc', 'PublishReport'\n            ),\n        ),\n    'SYMBOLS' => array(\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        6 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #F660AB; font-weight: bold;',\n            2 => 'color: #E56717; font-weight: bold;',\n            3 => 'color: #8D38C9; font-weight: bold;',\n            4 => 'color: #151B8D; font-weight: bold;',\n            5 => 'color: #00C2FF; font-weight: bold;',\n            6 => 'color: #3EA99F; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000;'\n            ),\n        'BRACKETS' => array(\n            ),\n        'STRINGS' => array(\n            0 => 'color: #800000;'\n            ),\n        'NUMBERS' => array(\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #800000; font-weight: bold;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => '',\n        6 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'BRACKETS' => GESHI_NEVER,\n            'SYMBOLS' => GESHI_NEVER,\n            'NUMBERS' => GESHI_NEVER\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/vbnet.php",
    "content": "<?php\n/*************************************************************************************\n * vbnet.php\n * ---------\n * Author: Alan Juden (alan@judenware.org)\n * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter)\n * Release Version: 1.0.9.1\n * Date Started: 2004/06/04\n *\n * VB.NET language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2004/11/27 (1.0.0)\n *  -  Initial release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'vb.net',\n    'COMMENT_SINGLE' => array(1 => \"'\"),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        //Keywords\n        1 => array(\n            'AddHandler', 'AddressOf', 'Alias', 'And', 'AndAlso', 'As', 'ByRef', 'ByVal',\n            'Call', 'Case', 'Catch', 'Char', 'Class', 'Const', 'Continue',\n            'Declare', 'Default',\n            'Delegate', 'Dim', 'DirectCast', 'Do', 'Each', 'Else', 'ElseIf', 'End', 'EndIf',\n            'Enum', 'Erase', 'Error', 'Event', 'Exit', 'False', 'Finally', 'For', 'Friend', 'Function',\n            'Get', 'GetType', 'GetXMLNamespace', 'Global', 'GoSub', 'GoTo', 'Handles', 'If', 'Implements',\n            'Imports', 'In', 'Inherits', 'Interface', 'Is', 'IsNot', 'Let', 'Lib', 'Like', 'Loop', 'Me',\n            'Mod', 'Module', 'Module Statement', 'MustInherit', 'MustOverride', 'MyBase', 'MyClass', 'Namespace',\n            'Narrowing', 'New', 'Next', 'Not', 'Nothing', 'NotInheritable', 'NotOverridable', 'Of', 'On',\n            'Operator', 'Option', 'Optional', 'Or', 'OrElse', 'Out', 'Overloads', 'Overridable', 'Overrides',\n            'ParamArray', 'Partial', 'Private', 'Property', 'Protected', 'Public', 'RaiseEvent', 'ReadOnly', 'ReDim',\n            'REM', 'RemoveHandler', 'Resume', 'Return', 'Select','Set', 'Shadows', 'Shared', 'Static', 'Step',\n            'Stop', 'Structure', 'Sub', 'SyncLock', 'Then', 'Throw', 'To', 'True', 'Try', 'TryCast', 'TypeOf',\n            'Using', 'Wend', 'When', 'While', 'Widening', 'With', 'WithEvents', 'WriteOnly', 'Xor'\n            ),\n        //Data Types\n        2 => array(\n            'Boolean', 'Byte', 'Date', 'Decimal', 'Double', 'Integer', 'Long', 'Object',\n            'SByte', 'Short', 'Single', 'String', 'UInteger', 'ULong', 'UShort'\n            ),\n        //Compiler Directives\n        3 => array(\n            '#Const', '#Else', '#ElseIf', '#End', '#If'\n            ),\n        //Constants\n        4 => array(\n            'CBool', 'CByte', 'CChar', 'CChr', 'CDate', 'CDbl', 'CDec','CInt', 'CLng', 'CLng8', 'CObj', 'CSByte', 'CShort',\n            'CSng', 'CStr', 'CType', 'CUInt', 'CULng', 'CUShort'\n            ),\n        //Linq\n        5 => array(\n            'By','From','Group','Where'\n            ),\n        //Built-in functions\n        7 => array(\n            'ABS', 'ARRAY', 'ASC', 'ASCB', 'ASCW', 'CALLBYNAME', 'CHOOSE', 'CHR', 'CHR$', 'CHRB', 'CHRB$', 'CHRW',\n            'CLOSE', 'COMMAND', 'COMMAND$', 'CONVERSION',\n            'COS', 'CREATEOBJECT', 'CURDIR', 'CVDATE', 'DATEADD',\n            'DATEDIFF', 'DATEPART', 'DATESERIAL', 'DATEVALUE', 'DAY', 'DDB', 'DIR', 'DIR$',\n            'EOF', 'ERROR$', 'EXP', 'FILEATTR', 'FILECOPY', 'FILEDATATIME', 'FILELEN', 'FILTER',\n            'FIX', 'FORMAT', 'FORMAT$', 'FORMATCURRENCY', 'FORMATDATETIME', 'FORMATNUMBER',\n            'FORMATPERCENT', 'FREEFILE', 'FV', 'GETALLSETTINGS', 'GETATTRGETOBJECT', 'GETSETTING',\n            'HEX', 'HEX$', 'HOUR', 'IIF', 'IMESTATUS', 'INPUT$', 'INPUTB', 'INPUTB$', 'INPUTBOX',\n            'INSTR', 'INSTRB', 'INSTRREV', 'INT', 'IPMT', 'IRR', 'ISARRAY', 'ISDATE', 'ISEMPTY',\n            'ISERROR', 'ISNULL', 'ISNUMERIC', 'ISOBJECT', 'JOIN', 'LBOUND', 'LCASE', 'LCASE$',\n            'LEFT', 'LEFT$', 'LEFTB', 'LEFTB$', 'LENB', 'LINEINPUT', 'LOC', 'LOF', 'LOG', 'LTRIM',\n            'LTRIM$', 'MID$', 'MIDB', 'MIDB$', 'MINUTE', 'MIRR', 'MKDIR', 'MONTH', 'MONTHNAME',\n            'MSGBOX', 'NOW', 'NPER', 'NPV', 'OCT', 'OCT$', 'PARTITION', 'PMT', 'PPMT', 'PV',\n            'RATE', 'REPLACE', 'RIGHT', 'RIGHT$', 'RIGHTB', 'RIGHTB$', 'RMDIR', 'RND', 'RTRIM',\n            'RTRIM$', 'SECOND', 'SIN', 'SLN', 'SPACE', 'SPACE$', 'SPC', 'SPLIT', 'SQRT', 'STR', 'STR$',\n            'STRCOMP', 'STRCONV', 'STRING$', 'STRREVERSE', 'SYD', 'TAB', 'TAN', 'TIMEOFDAY',\n            'TIMER', 'TIMESERIAL', 'TIMEVALUE', 'TODAY', 'TRIM', 'TRIM$', 'TYPENAME', 'UBOUND',\n            'UCASE', 'UCASE$', 'VAL', 'WEEKDAY', 'WEEKDAYNAME', 'YEAR'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!',\n        '(', ')', '{', '}', '.'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false,\n        7 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000FF; font-weight: bold;',  //Keywords\n            2 => 'color: #6a5acd;',                     //primitive Data Types\n            3 => 'color: #6a5acd; font-weight: bold;',  //preprocessor-commands\n            4 => 'color: #cd6a5a;',                     //Constants\n            5 => 'color: #cd6a5a; font-weight: bold;',  //LinQ\n            7 => 'color: #000066;',                     //Built-in functions\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000; font-style: italic;',\n            'MULTI' => 'color: #008000; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #008080; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #a52a2a; back-color: #fffacd;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #a52a2a; back-color: #fffacd;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #000000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://www.google.com/search?q={FNAMEU}+site:msdn.microsoft.com',\n        4 => '',\n        5 => '',\n        7 => 'http://www.google.com/search?q={FNAMEU}+site:msdn.microsoft.com'\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 =>'.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            7 => array(\n                'DISALLOWED_AFTER' => '(?!\\w)(?=\\s*\\()'\n                )\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/vbscript.php",
    "content": "<?php\n/*************************************************************************************\n * vbscript.php\n * ------\n * Author: Roberto Rossi (rsoftware@altervista.org)\n * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org),\n *                     Nigel McNie (http://qbnz.com/highlighter),\n *                     Rory Prendergast (http://www.tanium.com)\n * Release Version: 1.0.9.1\n * Date Started: 2012/08/20\n *\n * VBScript language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2012/08/20 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'VBScript',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        // Comments (either single or multiline with _\n        1 => '/\\'.*(?<! _)\\n/sU',\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'Empty', 'Nothing', 'Null', 'vbArray', 'vbBoolean', 'vbByte',\n            'vbCr', 'vbCrLf', 'vbCurrency', 'vbDate', 'vbDouble', 'vbEmpty',\n            'vbError', 'vbFirstFourDays', 'vbFirstFullWeek', 'vbFirstJan1',\n            'vbFormFeed', 'vbFriday', 'vbInteger', 'vbLf', 'vbLong', 'vbMonday',\n            'vbNewLine', 'vbNull', 'vbNullChar', 'vbNullString', 'vbObject',\n            'vbSaturday', 'vbSingle', 'vbString', 'vbSunday', 'vbTab',\n            'vbThursday', 'vbTuesday', 'vbUseSystem', 'vbUseSystemDayOfWeek',\n            'vbVariant', 'vbWednesday', 'FALSE', 'TRUE'\n            ),\n        2 => array(\n            'bs', 'Array', 'Asc', 'Atn', 'CBool', 'CByte', 'CDate', 'CDbl', 'Chr',\n            'CInt', 'CLng', 'Cos', 'CreateObject', 'CSng', 'CStr', 'Date', 'DateAdd',\n            'DateDiff', 'DatePart', 'DateSerial', 'DateValue', 'Day', 'Eval', 'Exp',\n            'Filter', 'Fix', 'FormatDateTime', 'FormatNumber', 'FormatPercent',\n            'GetObject', 'Hex', 'Hour', 'InputBox', 'InStr', 'InstrRev', 'Int',\n            'IsArray', 'IsDate', 'IsEmpty', 'IsNull', 'IsNumeric', 'IsObject', 'Join',\n            'LBound', 'LCase', 'Left', 'Len', 'Log', 'LTrim', 'Mid', 'Minute', 'Month',\n            'MonthName', 'MsgBox', 'Now', 'Oct', 'Replace', 'RGB', 'Right', 'Rnd',\n            'Round', 'RTrim', 'ScriptEngine', 'ScriptEngineBuildVersion',\n            'ScriptEngineMajorVersion', 'ScriptEngineMinorVersion', 'Second',\n            'Sgn', 'Sin', 'Space', 'Split', 'Sqr', 'StrComp', 'String', 'StrReverse',\n            'Tan', 'Time', 'TimeSerial', 'TimeValue', 'Trim', 'TypeName', 'UBound',\n            'UCase', 'VarType', 'Weekday', 'WeekdayName', 'Year'\n            ),\n        3 => array(\n            'Call', 'Case', 'Const', 'Dim', 'Do', 'Each', 'Else', 'End', 'Erase',\n            'Execute', 'Exit', 'For', 'Function', 'Gosub', 'Goto', 'If', 'Loop',\n            'Next', 'On Error', 'Option Explicit', 'Private', 'Public',\n            'Randomize', 'ReDim', 'Rem', 'Resume', 'Select', 'Set', 'Sub', 'Then',\n            'Wend', 'While', 'With', 'In', 'To', 'Step'\n            ),\n        4 => array(\n            'And', 'Eqv', 'Imp', 'Is', 'Mod', 'Not', 'Or', 'Xor'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '-', '&', '*', '/', '\\\\', '^', '+', '<', '<=', '<>', '=', '>', '>='\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #F660AB; font-weight: bold;',\n            2 => 'color: #E56717; font-weight: bold;',\n            3 => 'color: #8D38C9; font-weight: bold;',\n            4 => 'color: #151B8D; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000;'\n            ),\n        'BRACKETS' => array(\n            ),\n        'STRINGS' => array(\n            0 => 'color: #800000;'\n            ),\n        'NUMBERS' => array(\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #800000; font-weight: bold;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            'SPACE_AS_WHITESPACE' => true\n            ),\n        'ENABLE_FLAGS' => array(\n            'BRACKETS' => GESHI_NEVER\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/vedit.php",
    "content": "<?php\n/*************************************************************************************\n * vedit.php\n * --------\n * Author: Pauli Lindgren (pauli0212@yahoo.com)\n * Copyright: (c) 2009 Pauli Lindgren (http://koti.mbnet.fi/pkl/)\n * Release Version: 1.0.9.1\n * Date Started: 2009/12/16\n *\n * Vedit macro language language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2009/12/16 (1.0.8.11)\n *  -  First Release\n *\n * TODO (updated 2009/12/16)\n * -------------------------\n * - Add keyword groups 2, 3 and 4.\n *\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Vedit macro language',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"', '\\''),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'break', 'breakout', 'break_out', 'continue', 'do', 'else', 'for',\n            'goto', 'if', 'repeat', 'return', 'while'\n            )\n        ),\n    'SYMBOLS' => array(\n        1 => array(\n            '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '%',\n            '=', '<', '>', '!', '^', '&', '|', '?', ':', ';', ','\n            )\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;',\n            ),\n        'METHODS' => array(\n            0 => 'color: #004000;'\n            ),\n        'SYMBOLS' => array(\n            1 => 'color: #339933;'\n            ),\n        'REGEXPS' => array(),\n        'SCRIPT' => array()\n        ),\n    'URLS' => array(1 => ''),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/verilog.php",
    "content": "<?php\n/**\n * verilog.php\n * -----------\n * Author: Günter Dannoritzer <dannoritzer@web.de>\n * Copyright: (C) 2008 Günter Dannoritzer\n * Release Version: 1.0.9.1\n * Date Started: 2008/05/28\n *\n * Verilog language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/29\n *   -  added regular expression to find numbers of the form 4'b001xz\n *   -  added regular expression to find values for `timescale command\n *   -  extended macro keywords\n *\n * TODO (updated 2008/05/29)\n * -------------------------\n *\n * 2013/01/08\n *   -  extended keywords to include system keywords\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Verilog',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(1 => '/\\/\\/(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        // keywords\n        1 => array(\n            'accept_on','alias',\n            'always','always_comb','always_ff','always_latch','and','assert',\n            'assign','assume','automatic','before','begin','bind','bins','binsof',\n            'bit','break','buf','bufif0','bufif1','byte','case','casex','casez',\n            'cell','chandle','checker','class','clocking','cmos','config','const',\n            'constraint','context','continue','cover','covergroup','coverpoint','cross',\n            'deassign','default','defparam','design','disable','dist','do','edge','else',\n            'end','endcase','endchecker','endclass','endclocking','endconfig',\n            'endfunction','endgenerate','endgroup','endinterface','endmodule',\n            'endpackage','endprimitive','endprogram','endproperty','endspecify',\n            'endsequence','endtable','endtask','enum','event','eventually','expect',\n            'export','extends','extern','final','first_match','for','force','foreach',\n            'forever','fork','forkjoin','function','generate','genvar','global',\n            'highz0','highz1','if','iff','ifnone','ignore_bins','illegal_bins',\n            'implies','import','incdir','include','initial','inout','input','inside',\n            'instance','int','integer','interface','intersect','join','join_any',\n            'join_none','large','let','liblist','library','local','localparam',\n            'logic','longint','macromodule','matches','medium','modport','module','nand',\n            'negedge','new','nexttime','nmos','nor','noshowcancelled','not','notif0',\n            'notif1','null','or','output','package','packed','parameter','pmos','posedge',\n            'primitive','priority','program','property','protected','pull0','pull1',\n            'pulldown','pullup','pulsestyle_ondetect','pulsestyle_onevent','pure',\n            'rand','randc','randcase','randsequence','rcmos','real','realtime','ref',\n            'reg','reject_on','release','repeat','restrict','return','rnmos','rpmos',\n            'rtran','rtranif0','rtranif1','s_always','s_eventually','s_nexttime',\n            's_until','s_until_with','scalared','sequence','shortint','shortreal',\n            'showcancelled','signed','small','solve','specify','specparam','static',\n            'string','strong','strong0','strong1','struct','super','supply0','supply1',\n            'sync_accept_on','sync_reject_on','table','tagged','task','this','throughout',\n            'time','timeprecision','timeunit','tran','tranif0','tranif1','tri','tri0',\n            'tri1','triand','trior','trireg','type','typedef','union','unique','unique0',\n            'unsigned','until','until_with','untyped','use','uwire','var','vectored',\n            'virtual','void','wait','wait_order','wand','weak','weak0','weak1','while',\n            'wildcard','wire','with','within','wor','xnor','xor'\n            ),\n        // system tasks\n        2 => array(\n            '$display', '$monitor',\n            '$dumpall', '$dumpfile', '$dumpflush', '$dumplimit', '$dumpoff',\n            '$dumpon', '$dumpvars',\n            '$fclose', '$fdisplay', '$fopen',\n            '$finish', '$fmonitor', '$fstrobe', '$fwrite',\n            '$fgetc', '$ungetc', '$fgets', '$fscanf', '$fread', '$ftell',\n            '$fseek', '$frewind', '$ferror', '$fflush', '$feof',\n            '$random',\n            '$readmemb', '$readmemh', '$readmemx',\n            '$signed', '$stime', '$stop',\n            '$strobe', '$time', '$unsigned', '$write'\n            ),\n        // macros\n        3 => array(\n            '`default-net', '`define',\n            '`celldefine', '`default_nettype', '`else', '`elsif', '`endcelldefine',\n            '`endif', '`ifdef', '`ifndef', '`include', '`line', '`nounconnected_drive',\n            '`resetall', '`timescale', '`unconnected_drive', '`undef'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%',\n        '^', '&', '|', '~',\n        '?', ':',\n        '#', '<<', '<<<',\n        '>', '<', '>=', '<=',\n        '@', ';', ','\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #A52A2A; font-weight: bold;',\n            2 => 'color: #9932CC;',\n            3 => 'color: #008800;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #00008B; font-style: italic;',\n            'MULTI' => 'color: #00008B; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #9F79EE'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #9F79EE;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #FF00FF;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff0055;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #202020;',\n            2 => 'color: #202020;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #5D478B;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #ff0055;',\n            1 => 'color: #ff0055;',\n            ),\n        'SCRIPT' => array(\n            0 => '',\n            1 => '',\n            2 => '',\n            3 => ''\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        1 => ''\n        ),\n    'REGEXPS' => array(\n        // numbers\n        0 => \"\\d'[bdh][0-9_a-fA-FxXzZ]+\",\n        // time -> 1, 10, or 100; s, ms, us, ns, ps, of fs\n        1 => \"1[0]{0,2}[munpf]?s\"\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        1 => ''\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        0 => true,\n        1 => true,\n        2 => true,\n        3 => true\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/vhdl.php",
    "content": "<?php\n/*************************************************************************************\n * vhdl.php\n * --------\n * Author: Alexander 'E-Razor' Krause (admin@erazor-zone.de)\n * Contributors:\n *  - Kevin Thibedeau (kevinpt@yahoo.com)\n * Copyright: (c) 2005 Alexander Krause\n * Release Version: 1.0.9.1\n * Date Started: 2005/06/15\n *\n * VHDL (VHSICADL, very high speed integrated circuit HDL) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2012/4/30 (1.0.8.10)\n *  -  Reworked to support new features of VHDL-2008.\n *  -    Changes include: multi-line comments, all new keywords, PSL keywords and metacomments,\n *  -    based literals, attribute highlighting, preprocessor macros (from PSL), and other small\n *  -    improvements.\n * 2008/05/23 (1.0.7.22)\n *  -  Added description of extra language features (SF#1970248)\n *  -  Optimized regexp group 0 somewhat\n * 2006/06/15 (1.0.0)\n *  -  First Release\n *\n * TODO\n * ----\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'VHDL',\n    'COMMENT_SINGLE' => array(1 => '--'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'COMMENT_REGEXP' => array(\n        // PSL adds C-preprocessor support\n        1 => '/(?<=\\s)#(?:\\\\\\\\\\\\\\\\|\\\\\\\\\\\\n|.)*$/m',\n        // PSL metacomments (single-line only for now)\n        2 => '/--\\s*@?psl(?:.)*?;$/m',\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        /*keywords*/\n        1 => array(\n            'access','after','alias','all','attribute','architecture','array','begin',\n            'block','body','buffer','bus','case','case?','component','configuration','constant','context',\n            'disconnect','downto','else','elsif','end','entity','exit','file','for','force',\n            'function','generate','generic','group','guarded','if','impure','in',\n            'inertial','inout','is','label','library','linkage','literal','loop',\n            'map','new','next','null','of','on','open','others','out','package',\n            'port','postponed','procedure','process','protected','pure','range','record','register',\n            'reject','release','report','return','select','severity','shared','signal','subtype',\n            'then','to','transport','type','unaffected','units','until','use','variable',\n            'wait','when','while','with'\n            ),\n        /*types and standard libs*/\n        2 => array(\n            'bit','bit_vector','character','boolean','integer','real','time','delay_length','string',\n            'severity_level','positive','natural','signed','unsigned','line','text',\n            'std_logic','std_logic_vector','std_ulogic','std_ulogic_vector',\n            'sfixed','ufixed','float','float32','float64','float128',\n            'work','ieee','std_logic_1164','math_real','math_complex','textio',\n            'numeric_std','numeric_std_signed','numeric_std_unsigned','numeric_bit'\n            ),\n        /*operators*/\n        3 => array(\n            'abs','and','mod','nor','not','or','rem','rol','ror','sla','sll','sra','srl','xnor','xor'\n            ),\n        /*psl*/\n        4 => array(\n            'assert','assume','assume_guarantee','clock','const','countones','cover','default',\n            'endpoint','fairness','fell','forall','inf','inherit','isunknown','onehot','onehot0','property',\n            'prev','restrict','restrict_guarantee','rose','sequence','stable','strong','union','vmode','vprop','vunit'\n            ),\n        /*psl operators*/\n        5 => array(\n            'abort','always','before','before!','before!_','before_','eventually!','never',\n            'next!','next_a','next_a!','next_e','next_e!','next_event','next_event!','next_event_a','next_event_a!',\n            'next_event_e','next_event_e!','until!','until!_','until_','within'\n            )\n        ),\n    'SYMBOLS' => array(\n        '[', ']', '(', ')',\n        ';',':',\n        '<','>','=','+','-','*','/','&','|','?'\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000080; font-weight: bold;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #000066;',\n            4 => 'color: #000080; font-weight: bold;',\n            5 => 'color: #000066;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000; font-style: italic;',\n            2 => 'color: #ff0000; font-weight: bold;',\n            'MULTI' => 'color: #008000; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000066;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #7f007f;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000066;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #ff0000;',\n            //1 => 'color: #ff0000;',\n            2 => 'color: #ee82ee;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        //Based literals, scientific notation, and time units\n        0 => '(\\b\\d+#[[:xdigit:]_]+#)|'.\n            '(\\b[\\d_]+(\\.[\\d_]+)?[eE][+\\-]?[\\d_]+)|'.\n            '(\\b(hr|min|sec|ms|us|ns|ps|fs)\\b)',\n        //Character literals\n        /* GeSHi won't match this pattern for some reason and QUOTEMARKS\n         * can't be used because it interferes with attribute parsing */\n        /*1 => \"\\b'.'\\b\",*/\n        //Attributes\n        2 => \"'\\w+(?!')\"\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/vim.php",
    "content": "<?php\n/*************************************************************************************\n * vim.php\n * ----------------\n * Author: Swaroop C H (swaroop@swaroopch.com)\n * Contributors:\n *  - Laurent Peuch (psycojoker@gmail.com)\n * Copyright: (c) 2008 Swaroop C H (http://www.swaroopch.com)\n * Release Version: 1.0.9.1\n * Date Started: 2008/10/19\n *\n * Vim scripting language file for GeSHi.\n *\n * Reference: http://qbnz.com/highlighter/geshi-doc.html#language-files\n * All keywords scraped from `:help expression-commands`.\n * All method names scraped from `:help function-list`.\n *\n * CHANGES\n * -------\n * 2008/10/19 (1.0.8.2)\n * - Started.\n * 2009/07/05\n * - Fill out list of zillion commands (maybe somes still miss).\n * - fix a part of the regex, now works for comment that have white space before the \"\n *\n * TODO (updated 2009/07/05)\n * -------------------------\n * - Make this damn string with \"\" work correctly. I've just remove it for my wiki.\n * - Make the comment regex able to find comment after some code.\n *   (i.e: let rocks \" unworking comment)\n * - Make <F1> <F2> ... <Esc> <CR> ... works event if they aren't surround by space.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Vim Script',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_REGEXP' => array(\n        1 => \"/\\s*\\\"[^\\\"]*?$/m\",\n        //Regular expressions (Ported from perl.php)\n//        2 => \"/(?<=[\\\\s^])(s|tr|y)\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])*\\\\/[msixpogcde]*(?=[\\\\s$\\\\.\\\\;])|(?<=[\\\\s^(=])(m|q[qrwx]?)?\\\\/(?:\\\\\\\\.|(?!\\n)[^\\\\/\\\\\\\\])+\\\\/[msixpogc]*(?=[\\\\s$\\\\.\\\\,\\\\;\\\\)])/iU\",\n        ),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'au', 'augroup', 'autocmd', 'brea', 'break', 'bufadd',\n            'bufcreate', 'bufdelete', 'bufenter', 'buffilepost',\n            'buffilepre', 'bufleave', 'bufnew', 'bufnewfile',\n            'bufread', 'bufreadcmd', 'bufreadpost', 'bufreadpre',\n            'bufunload', 'bufwinenter', 'bufwinleave', 'bufwipeout',\n            'bufwrite', 'bufwritecmd', 'bufwritepost', 'bufwritepre',\n            'call', 'cat', 'catc', 'catch', 'cmd-event', 'cmdwinenter',\n            'cmdwinleave', 'colorscheme', 'con', 'confirm', 'cont', 'conti',\n            'contin', 'continu', 'continue', 'cursorhold', 'cursorholdi',\n            'cursormoved', 'cursormovedi', 'ec', 'echo', 'echoe',\n            'echoer', 'echoerr', 'echoh', 'echohl', 'echom', 'echoms',\n            'echomsg', 'echon', 'el', 'els', 'else', 'elsei', 'elseif',\n            'en', 'encodingchanged', 'end', 'endfo', 'endfor', 'endi',\n            'endif', 'endt', 'endtr', 'endtry', 'endw', 'endwh', 'endwhi',\n            'endwhil', 'endwhile', 'exe', 'exec', 'execu', 'execut',\n            'execute', 'fileappendcmd', 'fileappendpost', 'fileappendpre',\n            'filechangedro', 'filechangedshell', 'filechangedshellpost',\n            'filereadcmd', 'filereadpost', 'filereadpre',\n            'filetype', 'filewritecmd', 'filewritepost', 'filewritepre',\n            'filterreadpost', 'filterreadpre', 'filterwritepost',\n            'filterwritepre', 'fina', 'final', 'finall', 'finally',\n            'finish', 'focusgained', 'focuslost', 'for', 'fun', 'func',\n            'funct', 'functi', 'functio', 'function', 'funcundefined',\n            'guienter', 'guifailed', 'hi', 'highlight', 'if', 'in',\n            'insertchange', 'insertenter', 'insertleave', 'let', 'lockv',\n            'lockva', 'lockvar', 'map', 'match', 'menupopup', 'nnoremap',\n            'quickfixcmdpost', 'quickfixcmdpre', 'remotereply', 'retu',\n            'retur', 'return', 'sessionloadpost', 'set', 'setlocal',\n            'shellcmdpost', 'shellfilterpost', 'sourcecmd', 'sourcepre',\n            'spellfilemissing', 'stdinreadpost', 'stdinreadpre',\n            'swapexists', 'syntax', 'tabenter', 'tableave', 'termchanged',\n            'termresponse', 'th', 'thr', 'thro', 'throw', 'tr', 'try', 'unl',\n            'unle', 'unlet', 'unlo', 'unloc', 'unlock', 'unlockv',\n            'unlockva', 'unlockvar', 'user', 'usergettingbored',\n            'vimenter', 'vimleave', 'vimleavepre', 'vimresized', 'wh',\n            'whi', 'whil', 'while', 'winenter', 'winleave'\n            ),\n        2 => array(\n            '&lt;CR&gt;', '&lt;Esc&gt;', '&lt;F1&gt;', '&lt;F10&gt;',\n            '&lt;F11&gt;', '&lt;F12&gt;', '&lt;F2&gt;', '&lt;F3&gt;',\n            '&lt;F4&gt;', '&lt;F5&gt;', '&lt;F6&gt;', '&lt;F7&gt;',\n            '&lt;F8&gt;', '&lt;F9&gt;', '&lt;cr&gt;', '&lt;silent&gt;',\n            '-nargs', 'acd', 'ai', 'akm', 'al', 'aleph',\n            'allowrevins', 'altkeymap', 'ambiwidth', 'ambw',\n            'anti', 'antialias', 'ar', 'arab', 'arabic',\n            'arabicshape', 'ari', 'arshape', 'autochdir',\n            'autoindent', 'autoread', 'autowrite', 'autowriteall',\n            'aw', 'awa', 'background', 'backspace', 'backup',\n            'backupcopy', 'backupdir', 'backupext',\n            'backupskip', 'balloondelay', 'ballooneval', 'balloonexpr',\n            'bdir', 'bdlay', 'beval', 'bex', 'bexpr', 'bg',\n            'bh', 'bin', 'binary', 'biosk', 'bioskey',\n            'bk', 'bkc', 'bl', 'bomb', 'breakat', 'brk',\n            'bs', 'bsdir', 'bsk', 'bt', 'bufhidden',\n            'buftype', 'casemap', 'cb',\n            'ccv', 'cd', 'cdpath', 'cedit', 'cf', 'cfu', 'ch',\n            'charconvert', 'ci', 'cin', 'cink',\n            'cinkeys', 'cino', 'cinoptions', 'cinw', 'cinwords',\n            'clipboard', 'cmdheight', 'cmdwinheight',\n            'cmp', 'cms', 'co', 'columns', 'com',\n            'comc', 'comcl', 'comcle', 'comclea', 'comclear', 'comm',\n            'comma', 'comman', 'command', 'comments', 'commentstring',\n            'compatible', 'completefunc', 'completeopt',\n            'consk', 'conskey', 'copyindent',\n            'cot', 'cp', 'cpo', 'cpoptions', 'cpt',\n            'cscopepathcomp', 'cscopeprg', 'cscopequickfix', 'cscopetag',\n            'cscopetagorder', 'cscopeverbose',\n            'cspc', 'csprg', 'csqf', 'cst', 'csto', 'csverb', 'cuc',\n            'cul', 'cursorcolumn', 'cursorline', 'cwh', 'debug',\n            'deco', 'def', 'define', 'delc', 'delco', 'delcom',\n            'delcombine', 'delcomm', 'delcomman', 'delcommand', 'dex',\n            'dg', 'dict', 'dictionary', 'diff', 'diffexpr',\n            'diffopt', 'digraph', 'dip', 'dir', 'directory', 'display',\n            'dlcomma', 'dy', 'ea', 'ead', 'eadirection',\n            'eb', 'ed', 'edcompatible', 'ef', 'efm',\n            'ei', 'ek', 'enc', 'encoding', 'endfun', 'endofline',\n            'eol', 'ep', 'equalalways', 'equalprg', 'errorbells',\n            'errorfile', 'errorformat', 'esckeys', 'et',\n            'eventignore', 'ex', 'expandtab', 'exrc', 'fcl',\n            'fcs', 'fdc', 'fde', 'fdi', 'fdl', 'fdls', 'fdm',\n            'fdn', 'fdo', 'fdt', 'fen', 'fenc', 'fencs', 'fex',\n            'ff', 'ffs', 'fileencoding', 'fileencodings', 'fileformat',\n            'fileformats', /*'filetype',*/ 'fillchars', 'fk',\n            'fkmap', 'flp', 'fml', 'fmr', 'fo', 'foldclose',\n            'foldcolumn', 'foldenable', 'foldexpr', 'foldignore',\n            'foldlevelstart', 'foldmarker', 'foldmethod', 'foldminlines',\n            'foldnestmax', 'foldopen', 'formatexpr', 'formatlistpat',\n            'formatoptions', 'formatprg', 'fp', 'fs', 'fsync', 'ft',\n            'gcr', 'gd', 'gdefault', 'gfm', 'gfn', 'gfs', 'gfw',\n            'ghr', 'go', 'gp', 'grepformat', 'grepprg', 'gtl',\n            'gtt', 'guicursor', 'guifont', 'guifontset',\n            'guifontwide', 'guiheadroom', 'guioptions', 'guipty',\n            'guitablabel', 'guitabtooltip', 'helpfile',\n            'helpheight', 'helplang', 'hf', 'hh', 'hid', 'hidden',\n            'history', 'hk', 'hkmap', 'hkmapp', 'hkp', 'hl',\n            'hlg', 'hls', 'hlsearch', 'ic', 'icon', 'iconstring',\n            'ignorecase', 'im', 'imactivatekey', 'imak', 'imc',\n            'imcmdline', 'imd', 'imdisable', 'imi', 'iminsert', 'ims',\n            'imsearch', 'inc', 'include', 'includeexpr',\n            'incsearch', 'inde', 'indentexpr', 'indentkeys',\n            'indk', 'inex', 'inf', 'infercase', 'insertmode', 'is', 'isf',\n            'isfname', 'isi', 'isident', 'isk', 'iskeyword',\n            'isp', 'isprint', 'joinspaces', 'js', 'key',\n            'keymap', 'keymodel', 'keywordprg', 'km', 'kmp', 'kp',\n            'langmap', 'langmenu', 'laststatus', 'lazyredraw', 'lbr',\n            'lcs', 'linebreak', 'lines', 'linespace', 'lisp',\n            'lispwords', 'list', 'listchars', 'lm', 'lmap',\n            'loadplugins', 'lpl', 'ls', 'lsp', 'lw', 'lz', 'ma',\n            'macatsui', 'magic', 'makeef', 'makeprg', 'mat',\n            'matchpairs', 'matchtime', 'maxcombine', 'maxfuncdepth',\n            'maxmapdepth', 'maxmem', 'maxmempattern',\n            'maxmemtot', 'mco', 'mef', 'menuitems', 'mfd', 'mh',\n            'mis', 'mkspellmem', 'ml', 'mls', 'mm', 'mmd', 'mmp',\n            'mmt', 'mod', 'modeline', 'modelines', 'modifiable',\n            'modified', 'more', 'mouse', 'mousef', 'mousefocus',\n            'mousehide', 'mousem', 'mousemodel', 'mouses',\n            'mouseshape', 'mouset', 'mousetime', 'mp', 'mps', 'msm',\n            'mzq', 'mzquantum', 'nf', 'noacd', 'noai', 'noakm',\n            'noallowrevins', 'noaltkeymap', 'noanti', 'noantialias',\n            'noar', 'noarab', 'noarabic', 'noarabicshape', 'noari',\n            'noarshape', 'noautochdir', 'noautoindent', 'noautoread',\n            'noautowrite', 'noautowriteall', 'noaw', 'noawa', 'nobackup',\n            'noballooneval', 'nobeval', 'nobin', 'nobinary', 'nobiosk',\n            'nobioskey', 'nobk', 'nobl', 'nobomb', 'nobuflisted', 'nocf',\n            'noci', 'nocin', 'nocindent', 'nocompatible', 'noconfirm',\n            'noconsk', 'noconskey', 'nocopyindent', 'nocp', 'nocscopetag',\n            'nocscopeverbose', 'nocst', 'nocsverb', 'nocuc', 'nocul',\n            'nocursorcolumn', 'nocursorline', 'nodeco', 'nodelcombine',\n            'nodg', 'nodiff', 'nodigraph', 'nodisable', 'noea', 'noeb',\n            'noed', 'noedcompatible', 'noek', 'noendofline', 'noeol',\n            'noequalalways', 'noerrorbells', 'noesckeys', 'noet',\n            'noex', 'noexpandtab', 'noexrc', 'nofen', 'nofk', 'nofkmap',\n            'nofoldenable', 'nogd', 'nogdefault', 'noguipty', 'nohid',\n            'nohidden', 'nohk', 'nohkmap', 'nohkmapp', 'nohkp', 'nohls',\n            'nohlsearch', 'noic', 'noicon', 'noignorecase', 'noim',\n            'noimc', 'noimcmdline', 'noimd', 'noincsearch', 'noinf',\n            'noinfercase', 'noinsertmode', 'nois', 'nojoinspaces',\n            'nojs', 'nolazyredraw', 'nolbr', 'nolinebreak', 'nolisp',\n            'nolist', 'noloadplugins', 'nolpl', 'nolz', 'noma',\n            'nomacatsui', 'nomagic', 'nomh', 'noml', 'nomod',\n            'nomodeline', 'nomodifiable', 'nomodified', 'nomore',\n            'nomousef', 'nomousefocus', 'nomousehide', 'nonu',\n            'nonumber', 'noodev', 'noopendevice', 'nopaste', 'nopi',\n            'nopreserveindent', 'nopreviewwindow', 'noprompt', 'nopvw',\n            'noreadonly', 'noremap', 'norestorescreen', 'norevins',\n            'nori', 'norightleft', 'norightleftcmd', 'norl', 'norlc',\n            'noro', 'nors', 'noru', 'noruler', 'nosb', 'nosc', 'noscb',\n            'noscrollbind', 'noscs', 'nosecure', 'nosft', 'noshellslash',\n            'noshelltemp', 'noshiftround', 'noshortname', 'noshowcmd',\n            'noshowfulltag', 'noshowmatch', 'noshowmode', 'nosi', 'nosm',\n            'nosmartcase', 'nosmartindent', 'nosmarttab', 'nosmd',\n            'nosn', 'nosol', 'nospell', 'nosplitbelow', 'nosplitright',\n            'nospr', 'nosr', 'nossl', 'nosta', 'nostartofline',\n            'nostmp', 'noswapfile', 'noswf', 'nota', 'notagbsearch',\n            'notagrelative', 'notagstack', 'notbi', 'notbidi', 'notbs',\n            'notermbidi', 'noterse', 'notextauto', 'notextmode',\n            'notf', 'notgst', 'notildeop', 'notimeout', 'notitle',\n            'noto', 'notop', 'notr', 'nottimeout', 'nottybuiltin',\n            'nottyfast', 'notx', 'novb', 'novisualbell', 'nowa',\n            'nowarn', 'nowb', 'noweirdinvert', 'nowfh', 'nowfw',\n            'nowildmenu', 'nowinfixheight', 'nowinfixwidth', 'nowiv',\n            'nowmnu', 'nowrap', 'nowrapscan', 'nowrite', 'nowriteany',\n            'nowritebackup', 'nows', 'nrformats', 'nu', 'number',\n            'numberwidth', 'nuw', 'odev', 'oft', 'ofu',\n            'omnifunc', 'opendevice', 'operatorfunc', 'opfunc',\n            'osfiletype', 'pa', 'para', 'paragraphs',\n            'paste', 'pastetoggle', 'patchexpr',\n            'patchmode', 'path', 'pdev', 'penc', 'pex', 'pexpr',\n            'pfn', 'ph', 'pheader', 'pi', 'pm', 'pmbcs',\n            'pmbfn', 'popt', 'preserveindent', 'previewheight',\n            'previewwindow', 'printdevice', 'printencoding', 'printexpr',\n            'printfont', 'printheader', 'printmbcharset',\n            'printmbfont', 'printoptions', 'prompt', 'pt', 'pumheight',\n            'pvh', 'pvw', 'qe', 'quoteescape', 'rdt',\n            'readonly', 'redrawtime', 'remap', 'report',\n            'restorescreen', 'revins', 'ri', 'rightleft', 'rightleftcmd',\n            'rl', 'rlc', 'ro', 'rs', 'rtp', 'ru',\n            'ruf', 'ruler', 'rulerformat', 'runtimepath', 'sb', 'sbo',\n            'sbr', 'sc', 'scb', 'scr', 'scroll', 'scrollbind',\n            'scrolljump', 'scrolloff', 'scrollopt',\n            'scs', 'sect', 'sections', 'secure', 'sel',\n            'selection', 'selectmode', 'sessionoptions', 'sft',\n            'sh', 'shcf', 'shell', 'shellcmdflag', 'shellpipe',\n            'shellquote', 'shellredir', 'shellslash',\n            'shelltemp', 'shelltype', 'shellxquote', 'shiftround',\n            'shiftwidth', 'shm', 'shortmess', 'shortname',\n            'showbreak', 'showcmd', 'showfulltag', 'showmatch',\n            'showmode', 'showtabline', 'shq', 'si', 'sidescroll',\n            'sidescrolloff', 'siso', 'sj', 'slm', 'sm', 'smartcase',\n            'smartindent', 'smarttab', 'smc', 'smd', 'sn',\n            'so', 'softtabstop', 'sol', 'sp', 'spc', 'spell',\n            'spellcapcheck', 'spellfile', 'spelllang',\n            'spf', 'spl', 'splitbelow', 'splitright', 'spr',\n            'sps', 'sr', 'srr', 'ss', 'ssl', 'ssop', 'st', 'sta',\n            'stal', 'startofline', 'statusline', 'stl', 'stmp',\n            'sts', 'su', 'sua', 'suffixes', 'suffixesadd', 'sw',\n            'swapfile', 'swapsync', 'swb', 'swf', 'switchbuf',\n            'sws', 'sxq', 'syn', 'synmaxcol', 'ta',\n            'tabline', 'tabpagemax', 'tabstop', 'tag',\n            'tagbsearch', 'taglength', 'tagrelative', 'tags', 'tagstack',\n            'tal', 'tb', 'tbi', 'tbidi', 'tbis', 'tbs',\n            'tenc', 'term', 'termbidi', 'termencoding', 'terse',\n            'textauto', 'textmode', 'textwidth', 'tf', 'tgst',\n            'thesaurus', 'tildeop', 'timeout', 'timeoutlen',\n            'title', 'titlelen', 'titleold', 'titlestring',\n            'tl', 'tm', 'to', 'toolbar', 'toolbariconsize', 'top',\n            'tpm', 'ts', 'tsl', 'tsr', 'ttimeout',\n            'ttimeoutlen', 'ttm', 'tty', 'ttybuiltin', 'ttyfast', 'ttym',\n            'ttymouse', 'ttyscroll', 'ttytype', 'tw', 'tx', 'uc',\n            'ul', 'undolevels', 'updatecount', 'updatetime', 'ut',\n            'vb', 'vbs', 'vdir', 've', 'verbose', 'verbosefile',\n            'vfile', 'vi', 'viewdir', 'viewoptions', 'viminfo',\n            'virtualedit', 'visualbell', 'vop', 'wa', 'wak',\n            'warn', 'wb', 'wc', 'wcm', 'wd', 'weirdinvert', 'wfh',\n            'wfw', /*'wh',*/ 'whichwrap', 'wi', 'wig', 'wildchar',\n            'wildcharm', 'wildignore', 'wildmenu',\n            'wildmode', 'wildoptions', 'wim', 'winaltkeys', 'window',\n            'winfixheight', 'winfixwidth', 'winheight',\n            'winminheight', 'winminwidth', 'winwidth', 'wiv',\n            'wiw', 'wm', 'wmh', 'wmnu', 'wmw', 'wop', 'wrap',\n            'wrapmargin', 'wrapscan', 'write', 'writeany',\n            'writebackup', 'writedelay', 'ws', 'ww'\n            ),\n        3 => array(\n            'BufAdd', 'BufCreate', 'BufDelete', 'BufEnter', 'BufFilePost',\n            'BufFilePre', 'BufHidden', 'BufLeave', 'BufNew', 'BufNewFile',\n            'BufRead', 'BufReadCmd', 'BufReadPost', 'BufReadPre',\n            'BufUnload', 'BufWinEnter', 'BufWinLeave', 'BufWipeout',\n            'BufWrite', 'BufWriteCmd', 'BufWritePost', 'BufWritePre',\n            'Cmd-event', 'CmdwinEnter', 'CmdwinLeave', 'ColorScheme',\n            'CursorHold', 'CursorHoldI', 'CursorMoved', 'CursorMovedI',\n            'EncodingChanged', 'FileAppendCmd', 'FileAppendPost',\n            'FileAppendPre', 'FileChangedRO', 'FileChangedShell',\n            'FileChangedShellPost', 'FileEncoding', 'FileReadCmd',\n            'FileReadPost', 'FileReadPre', 'FileType',\n            'FileWriteCmd', 'FileWritePost', 'FileWritePre',\n            'FilterReadPost', 'FilterReadPre', 'FilterWritePost',\n            'FilterWritePre', 'FocusGained', 'FocusLost', 'FuncUndefined',\n            'GUIEnter', 'GUIFailed', 'InsertChange', 'InsertEnter',\n            'InsertLeave', 'MenuPopup', 'QuickFixCmdPost',\n            'QuickFixCmdPre', 'RemoteReply', 'SessionLoadPost',\n            'ShellCmdPost', 'ShellFilterPost', 'SourceCmd',\n            'SourcePre', 'SpellFileMissing', 'StdinReadPost',\n            'StdinReadPre', 'SwapExists', 'Syntax', 'TabEnter',\n            'TabLeave', 'TermChanged', 'TermResponse', 'User',\n            'UserGettingBored', 'VimEnter', 'VimLeave', 'VimLeavePre',\n            'VimResized', 'WinEnter', 'WinLeave', 'abs', 'add', 'append',\n            'argc', 'argidx', 'argv', 'atan', 'browse', 'browsedir',\n            'bufexists', 'buflisted', 'bufloaded', 'bufname', 'bufnr',\n            'bufwinnr', 'byte2line', 'byteidx', 'ceil', 'changenr',\n            'char2nr', 'cindent', 'clearmatches', 'col', 'complete',\n            'complete_add', 'complete_check', 'copy',\n            'cos', 'count', 'cscope_connection', 'cursor', 'deepcopy',\n            'delete', 'did_filetype', 'diff_filler', 'diff_hlID',\n            'empty', 'escape', 'eval', 'eventhandler', 'executable',\n            'exists', 'expand', 'extend', 'feedkeys', 'filereadable',\n            'filewritable', 'filter', 'finddir', 'findfile', 'float2nr',\n            'floor', 'fnameescape', 'fnamemodify', 'foldclosed',\n            'foldclosedend', 'foldlevel', 'foldtext', 'foldtextresult',\n            'foreground', 'garbagecollect', 'get', 'getbufline',\n            'getbufvar', 'getchar', 'getcharmod', 'getcmdline',\n            'getcmdpos', 'getcmdtype', 'getcwd', 'getfontname',\n            'getfperm', 'getfsize', 'getftime', 'getftype', 'getline',\n            'getloclist', 'getmatches', 'getpid', 'getpos', 'getqflist',\n            'getreg', 'getregtype', 'gettabwinvar', 'getwinposx',\n            'getwinposy', 'getwinvar', 'glob', 'globpath', 'has',\n            'has_key', 'haslocaldir', 'hasmapto', 'histadd', 'histdel',\n            'histget', 'histnr', 'hlID', 'hlexists', 'hostname', 'iconv',\n            'indent', 'index', 'input', 'inputdialog', 'inputlist',\n            'inputrestore', 'inputsave', 'inputsecret', 'insert',\n            'isdirectory', 'islocked', 'items', 'join', 'keys', 'len',\n            'libcall', 'libcallnr', 'line', 'line2byte', 'lispindent',\n            'localtime', 'log10', 'maparg', 'mapcheck', 'matchadd',\n            'matcharg', 'matchdelete', 'matchend', 'matchlist',\n            'matchstr', 'max', 'min', 'mkdir', 'mode', 'nextnonblank',\n            'nr2char', 'off', 'on', 'pathshorten', 'plugin', 'pow',\n            'prevnonblank', 'printf', 'pumvisible', 'range', 'readfile',\n            'reltime', 'reltimestr', 'remote_expr', 'remote_foreground',\n            'remote_peek', 'remote_read', 'remote_send', 'remove',\n            'rename', 'repeat', 'resolve', 'reverse', 'round', 'search',\n            'searchdecl', 'searchpair', 'searchpairpos', 'searchpos',\n            'server2client', 'serverlist', 'setbufvar', 'setcmdpos',\n            'setline', 'setloclist', 'setmatches', 'setpos', 'setqflist',\n            'setreg', 'settabwinvar', 'setwinvar', 'shellescape',\n            'simplify', 'sin', 'sort', 'soundfold', 'spellbadword',\n            'spellsuggest', 'split', 'sqrt', 'str2float', 'str2nr',\n            'strftime', 'stridx', 'string', 'strlen', 'strpart',\n            'strridx', 'strtrans', 'submatch', 'substitute',\n            'synID', 'synIDattr', 'synIDtrans', 'synstack', 'system',\n            'tabpagebuflist', 'tabpagenr', 'tabpagewinnr', 'tagfiles',\n            'taglist', 'tempname', 'tolower', 'toupper', 'trunc',\n            'type', 'values', 'virtcol', 'visualmode', 'winbufnr',\n            'wincol', 'winline', 'winnr', 'winrestcmd',\n            'winrestview', 'winsaveview', 'writefile'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '!', '%', '&', '*', '|', '/', '<', '>',\n        '^', '-', '+', '~', '?', ':', '$', '@', '.'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true,\n        2 => true,\n        3 => true\n        ),\n    'STYLES' => array(\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #adadad; font-style: italic;',\n//            2 => 'color: #009966; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => ''\n            ),\n        'KEYWORDS' => array(\n            1 => 'color: #804040;',\n            2 => 'color: #668080;',\n            3 => 'color: #25BB4D;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #000000;',\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #000000; font-weight:bold;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            ),\n        'STRINGS' => array(\n            0 => 'color: #C5A22D;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000;'\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false, //Save some time as OO identifiers aren't used\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/visualfoxpro.php",
    "content": "<?php\n/*************************************************************************************\n * visualfoxpro.php\n * ----------------\n * Author: Roberto Armellin (r.armellin@tin.it)\n * Copyright: (c) 2004 Roberto Armellin, Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/09/17\n *\n * Visual FoxPro language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *  -  Removed tab as a symbol char\n * 2004/11/27 (1.0.1)\n *  -  Added support for multiple object splitters\n * 2004/10/27 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/10/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Visual Fox Pro',\n    'COMMENT_SINGLE' => array(1 => \"//\", 2 => \"\\n*\"),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'Case', 'Else', '#Else', 'Then',\n            'Endcase', 'Enddefine', 'Enddo', 'Endfor', 'Endfunc', 'Endif', 'Endprintjob',\n            'Endproc', 'Endscan', 'Endtext', 'Endwith', '#Endif',\n            '#Elif','#Define','#If','#Include',\n            '#Itsexpression','#Readclauses','#Region','#Section','#Undef','#Wname',\n            'Define','Do',\n            'For','Function','Hidden',\n            'If','Local','Lparameter','Lparameters','Next','Otherwise',\n            'Parameters','Printjob','Procedure','Protected','Public','Scan',\n            'Text','While','With','Abs','Accept','Access','Aclass','Acopy',\n            'Acos','Adatabases','Adbobjects','Addbs','Addrelationtoenv','Addtabletoenv',\n            'Adel','Adir','Aelement','Aerror','Afields','Afont',\n            'Agetclass','Agetfileversion','Ains','Ainstance','Alen','Align',\n            'Alines','Alltrim','Alter','Amembers','Amouseobj','Anetresources',\n            'Ansitooem','Append','Aprinters','Ascan','Aselobj','Asin',\n            'Asort','Assert','Asserts','Assist','Asubscript','Asynchronous',\n            'At_c','Atan','Atc','Atcc','Atcline','Atline',\n            'Atn2','Aused','Autoform','Autoreport','Avcxclasses','Average',\n            'BarCount','BarPrompt','BatchMode','BatchUpdateCount','Begin','BellSound',\n            'BinToC','Bitand','Bitclear','Bitlshift','Bitnot',\n            'Bitor','Bitrshift','Bitset','Bittest','Bitxor','Bof',\n            'Browse','BrowseRefresh','Buffering','BuilderLock','COMArray','COMReturnError',\n            'CToBin','Calculate','Call','Capslock','Cd','Cdow',\n            'Ceiling','Central','Change','Char','Chdir','Chr',\n            'Chrsaw','Chrtran','Chrtranc','Close','Cmonth','Cntbar',\n            'Cntpad','Col','Comclassinfo','CommandTargetQuery','Compile','Completed',\n            'Compobj','Compute','Concat','ConnectBusy','ConnectHandle','ConnectName',\n            'ConnectString','ConnectTimeOut','ContainerReleaseType','Continue','Copy','Cos',\n            'Cot','Count','Coverage','Cpconvert','Cpcurrent','Cpdbf',\n            'Cpnotrans','Create','CreateBinary','Createobject','Createobjectex','Createoffline',\n            'CrsBuffering','CrsFetchMemo','CrsFetchSize','CrsMaxRows','CrsMethodUsed','CrsNumBatch',\n            'CrsShareConnection','CrsUseMemoSize','CrsWhereClause','Ctod','Ctot',\n            'Curdate','Curdir','CurrLeft','CurrSymbol','CursorGetProp','CursorSetProp',\n            'Curtime','Curval','DBGetProp','DBSetProp','DB_BufLockRow','DB_BufLockTable',\n            'DB_BufOff','DB_BufOptRow','DB_BufOptTable','DB_Complette','DB_DeleteInsert','DB_KeyAndModified',\n            'DB_KeyAndTimestamp','DB_KeyAndUpdatable','DB_LocalSQL','DB_NoPrompt','DB_Prompt','DB_RemoteSQL',\n            'DB_TransAuto','DB_TransManual','DB_TransNone','DB_Update','Datetime','Day',\n            'Dayname','Dayofmonth','Dayofweek','Dayofyear','Dbalias','Dbused',\n            'Ddeaborttrans','Ddeadvise','Ddeenabled','Ddeexecute','Ddeinitiate','Ddelasterror',\n            'Ddepoke','Dderequest','Ddesetoption','Ddesetservice','Ddesettopic','Ddeterminate',\n            'Debugout','Declare','DefOLELCid','DefaultValue','Defaultext','Degrees',\n            'DeleteTrigger','Desc','Description','Difference','Dimension','Dir',\n            'Directory','Diskspace','DispLogin','DispWarnings','Display','Dll',\n            'Dmy','DoDefault','DoEvents','Doc','Dow',\n            'Drivetype','Drop','Dropoffline','Dtoc','Dtor','Dtos',\n            'Dtot','DynamicInputMask','Each','Edit','Eject','Elif',\n            'End','Eof','Erase','Evaluate','Event','Eventtracking',\n            'Exclude','Exclusive','Exit','Exp','Export','External',\n            'FDate','FTime','Fchsize','Fclose','Fcount','Fcreate',\n            'Feof','Ferror','FetchMemo','FetchSize','Fflush','Fgets',\n            'Filer','Filetostr','Find','Fklabel','Fkmax','Fldlist',\n            'Flock','Floor','Flush','Fontmetric','Fopen','Forceext',\n            'Forcepath','FormSetClass','FormSetLib','FormsClass','FormsLib','Found',\n            'FoxPro','Foxcode','Foxdoc','Foxgen','Foxgraph','Foxview',\n            'Fputs','Fread','French','Fseek','Fsize','Fv',\n            'Fwrite','Gather','German','GetPem','Getbar','Getcolor',\n            'Getcp','Getdir','Getenv','Getexpr','Getfile','Getfldstate',\n            'Getfont','Gethost','Getnextmodified','Getobject','Getpad','Getpict',\n            'Getprinter','Go','Gomonth','Goto','Graph','GridHorz',\n            'GridShow','GridShowPos','GridSnap','GridVert','Help','HelpOn',\n            'HelpTo','HighLightRow','Home','Hour','IMEStatus','IdleTimeOut',\n            'Idxcollate','Ifdef','Ifndef','Iif','Import','Include',\n            'Indbc','Index','Indexseek','Inkey','Inlist','Input',\n            'Insert','InsertTrigger','Insmode','IsBlank','IsFLocked','IsLeadByte',\n            'IsMouse','IsNull','IsRLocked','Isalpha','Iscolor','Isdigit',\n            'IsExclusive','Ishosted','IsLower','IsReadOnly',\n            'IsUpper','Italian','Japan','Join','Justdrive','Justext',\n            'Justfname','Justpath','Juststem','KeyField','KeyFieldList','Keyboard'\n            ),\n        2 => array('Keymatch','LastProject','Lastkey','Lcase','Leftc','Len',\n            'Lenc','Length','Likec','Lineno','LoadPicture',\n            'Locate','Locfile','Log','Log10','Logout','Lookup',\n            'Loop','Lower','Ltrim','Lupdate','Mail','MaxRecords',\n            'Mcol','Md','Mdown','Mdx','Mdy','Memlines',\n            'Menu','Messagebox','Minute','Mkdir','Mline','Modify',\n            'Month','Monthname','Mouse','Mrkbar','Mrkpad','Mrow',\n            'Mtdll','Mton','Mwindow','Native','Ndx','Network',\n            'NoFilter','Nodefault','Normalize','Note','Now','Ntom',\n            'NullString','Numlock','Nvl','ODBChdbc','ODBChstmt','OLEDropTextInsertion',\n            'OLELCid','Objnum','Objref','Objtoclient','Objvar','Occurs',\n            'Oemtoansi','Oldval','OlePublic','Olereturnerror','On','Open',\n            'Oracle','Order','Os','Outer','PCount','Pack',\n            'PacketSize','Padc','Padl','Padr','Payment','Pcol',\n            'PemStatus','Pi','Pivot','Play','Pop','Popup',\n            'Power','PrimaryKey','Printstatus','Private','Prmbar','Prmpad',\n            'ProjectClick','Proper','Prow','Prtinfo','Push','Putfile',\n            'Pv','Qpr','Quater','QueryTimeOut','Quit','Radians',\n            'Rand','Rat','Ratc','Ratline','Rd','Rdlevel',\n            'Read','Readkey','Recall','Reccount','RecentlyUsedFiles','Recno',\n            'Recsize','Regional','Reindex','RelatedChild','RelatedTable','RelatedTag',\n            'Remove','Rename','Repeat','Replace','Replicate','Report',\n            'ResHeight','ResWidth','ResourceOn','ResourceTo','Resources','Restore',\n            'Resume','Retry','Return','Revertoffline','Rgbscheme','Rightc',\n            'Rlock','Rmdir','Rollback','Round','Rtod','Rtrim',\n            'RuleExpression','RuleText','Run','Runscript','Rview','SQLAsynchronous',\n            'SQLBatchMode','SQLCancel','SQLColumns','SQLConnect','SQLConnectTimeOut','SQLDisconnect',\n            'SQLDispLogin','SQLDispWarnings','SQLExec','SQLGetProp','SQLIdleTimeOut','SQLMoreResults',\n            'SQLPrepare','SQLQueryTimeOut','SQLSetProp','SQLTables','SQLTransactions','SQLWaitTime',\n            'Save','SavePicture','ScaleUnits','Scatter','Scols',\n            'Scroll','Sec','Second','Seek','Select','SendUpdates',\n            'Set','SetDefault','Setfldstate','Setup','ShareConnection','ShowOLEControls',\n            'ShowOLEInsertable','ShowVCXs','Sign','Sin','Size','SizeBox',\n            'Skpbar','Skppad','Sort','Soundex','SourceName','Sqlcommit',\n            'Sqll','Sqlrollback','Sqlstringconnect','Sqrt','Srows','StatusBar',\n            'Store','Str','Strconv','Strtofile','Strtran','Stuff',\n            'Stuffc','Substr','Substrc','Substring','Sum','Suspend',\n            'Sys','Sysmetric','TabOrdering','Table','TableRefresh','Tablerevert',\n            'Tableupdate','TagCount','TagNo','Tan','Target','This',\n            'Thisform','Thisformset','Timestamp','Timestampdiff','Total','Transactions',\n            'Transform','Trim','Truncate','Ttoc','Ttod','Txnlevel',\n            'Txtwidth','Type','Ucase','Undefine','Unlock','Unpack',\n            'Updatable','UpdatableFieldList','Update','UpdateName','UpdateNameList','UpdateTrigger',\n            'UpdateType','Updated','Upper','Upsizing','Usa','Use',\n            'UseMemoSize','Used','Val','Validate','Varread','Vartype',\n            'Version','VersionLanguage','Wait','WaitTime','Wborder','Wchild',\n            'Wcols','Week','Wexist','Wfont','WhereType','Windcmd',\n            'Windhelp','Windmemo','Windmenu','Windmodify','Windquery','Windscreen',\n            'Windsnip','Windstproc','WizardPrompt','Wlast','Wlcol','Wlrow',\n            'Wmaximum','Wminimum','Wontop','Woutput','Wparent','Wread',\n            'Wrows','Wtitle','Wvisible','Year','Zap','_Alignment',\n            '_Asciicols','_Asciirows','_Assist','_Beautify','_Box','_Browser',\n            '_Builder','_Calcmem','_Calcvalue','_Cliptext','_Converter','_Coverage',\n            '_Curobj','_Dblclick','_Diarydate','_Dos','_Foxdoc','_Foxgraph',\n            '_Gallery','_Gengraph','_Genhtml','_Genmenu','_Genpd','_Genscrn',\n            '_Genxtab','_Getexpr','_Include','_Indent','_Lmargin','_Mac',\n            '_Mbr_appnd','_Mbr_cpart','_Mbr_delet','_Mbr_font','_Mbr_goto','_Mbr_grid',\n            '_Mbr_link','_Mbr_mode','_Mbr_mvfld','_Mbr_mvprt','_Mbr_seek','_Mbr_sp100',\n            '_Mbr_sp200','_Mbr_szfld','_Mbrowse','_Mda_appnd','_Mda_avg','_Mda_brow',\n            '_Mda_calc','_Mda_copy','_Mda_count','_Mda_label','_Mda_pack','_Mda_reprt',\n            '_Mda_rindx','_Mda_setup','_Mda_sort','_Mda_sp100','_Mda_sp200','_Mda_sp300',\n            '_Mda_sum','_Mda_total','_Mdata','_Mdiary','_Med_clear','_Med_copy',\n            '_Med_cut','_Med_cvtst','_Med_find','_Med_finda','_Med_goto','_Med_insob',\n            '_Med_link','_Med_obj','_Med_paste','_Med_pref','_Med_pstlk','_Med_redo',\n            '_Med_repl','_Med_repla','_Med_slcta','_Med_sp100','_Med_sp200','_Med_sp300',\n            '_Med_sp400','_Med_sp500','_Med_undo','_Medit','_Mfi_clall','_Mfi_close',\n            '_Mfi_export','_Mfi_import','_Mfi_new','_Mfi_open','_Mfi_pgset','_Mfi_prevu',\n            '_Mfi_print','_Mfi_quit','_Mfi_revrt','_Mfi_savas','_Mfi_save','_Mfi_send',\n            '_Mfi_setup','_Mfi_sp100','_Mfi_sp200','_Mfi_sp300','_Mfi_sp400','_Mfile',\n            '_Mfiler','_Mfirst','_Mlabel','_Mlast','_Mline','_Mmacro',\n            '_Mmbldr','_Mpr_beaut','_Mpr_cancl','_Mpr_compl','_Mpr_do','_Mpr_docum',\n            '_Mpr_formwz','_Mpr_gener','_Mpr_graph','_Mpr_resum','_Mpr_sp100','_Mpr_sp200',\n            '_Mpr_sp300','_Mpr_suspend','_Mprog','_Mproj','_Mrc_appnd','_Mrc_chnge',\n            '_Mrc_cont','_Mrc_delet','_Mrc_goto','_Mrc_locat','_Mrc_recal','_Mrc_repl',\n            '_Mrc_seek','_Mrc_sp100','_Mrc_sp200','_Mrecord','_Mreport','_Mrqbe',\n            '_Mscreen','_Msm_data','_Msm_edit','_Msm_file','_Msm_format','_Msm_prog',\n            '_Msm_recrd','_Msm_systm','_Msm_text','_Msm_tools','_Msm_view','_Msm_windo',\n            '_Mst_about','_Mst_ascii','_Mst_calcu','_Mst_captr','_Mst_dbase','_Mst_diary',\n            '_Mst_filer','_Mst_help','_Mst_hphow','_Mst_hpsch','_Mst_macro','_Mst_office',\n            '_Mst_puzzl','_Mst_sp100','_Mst_sp200','_Mst_sp300','_Mst_specl','_Msysmenu',\n            '_Msystem','_Mtable','_Mtb_appnd','_Mtb_cpart','_Mtb_delet','_Mtb_delrc',\n            '_Mtb_goto','_Mtb_link','_Mtb_mvfld','_Mtb_mvprt','_Mtb_props','_Mtb_recal',\n            '_Mtb_sp100','_Mtb_sp200','_Mtb_sp300','_Mtb_sp400','_Mtb_szfld','_Mwi_arran',\n            '_Mwi_clear','_Mwi_cmd','_Mwi_color','_Mwi_debug','_Mwi_hide','_Mwi_hidea',\n            '_Mwi_min','_Mwi_move','_Mwi_rotat','_Mwi_showa','_Mwi_size','_Mwi_sp100',\n            '_Mwi_sp200','_Mwi_toolb','_Mwi_trace','_Mwi_view','_Mwi_zoom','_Mwindow',\n            '_Mwizards','_Mwz_all','_Mwz_form','_Mwz_foxdoc','_Mwz_import','_Mwz_label',\n            '_Mwz_mail','_Mwz_pivot','_Mwz_query','_Mwz_reprt','_Mwz_setup','_Mwz_table',\n            '_Mwz_upsizing','_Netware','_Oracle','_Padvance','_Pageno','_Pbpage',\n            '_Pcolno','_Pcopies','_Pdparms','_Pdriver','_Pdsetup','_Pecode',\n            '_Peject','_Pepage','_Pform','_Plength','_Plineno','_Ploffset',\n            '_Ppitch','_Pquality','_Pretext','_Pscode','_Pspacing','_Pwait',\n            '_Rmargin','_Runactivedoc','_Samples','_Screen','_Shell','_Spellchk',\n            '_Sqlserver','_Startup','_Tabs','_Tally','_Text','_Throttle',\n            '_Transport','_Triggerlevel','_Unix','_WebDevOnly','_WebMenu','_WebMsftHomePage',\n            '_WebVFPHomePage','_WebVfpOnlineSupport','_Windows','_Wizard','_Wrap','_scctext',\n            '_vfp','Additive','After','Again','Aindent','Alignright',\n            'All','Alt','Alternate','And','Ansi','Any',\n            'Aplabout','App','Array','As','Asc','Ascending',\n            'Ascii','At','Attributes','Automatic','Autosave','Avg',\n            'Bar','Before','Bell','Between','Bitmap','Blank',\n            'Blink','Blocksize','Border','Bottom','Brstatus','Bucket',\n            'Buffers','By','Candidate','Carry','Cascade','Catalog',\n            'Cdx','Center','Century','Cga','Character','Check',\n            'Classlib','Clock','Cnt','Codepage','Collate','Color',\n            'Com1','Com2','Command','Compact','Compatible','Compress',\n            'Confirm','Connection','Connections','Connstring','Console','Copies',\n            'Cpcompile','Cpdialog','Csv','Currency','Cycle','Databases',\n            'Datasource','Date','Db4','Dbc','Dbf','Dbmemo3',\n            'Debug','Decimals','Defaultsource','Deletetables','Delimited','Delimiters',\n            'Descending','Design','Development','Device','Dif','Disabled',\n            'Distinct','Dlls','Dohistory','Dos','Dosmem','Double',\n            'Driver','Duplex','Echo','Editwork','Ega25','Ega43',\n            'Ems','Ems64','Encrypt','Encryption','Environment','Escape',\n            'Events','Exact','Except','Exe','Exists','Expression',\n            'Extended','F','Fdow','Fetch','Field','Fields',\n            'File','Files','Fill','Fixed','Float','Foldconst',\n            'Font','Footer','Force','Foreign','Fox2x','Foxplus',\n            'Free','Freeze','From','Fullpath','Fw2','Fweek',\n            'Get','Gets','Global','Group','Grow','Halfheight',\n            'Having','Heading','Headings','Helpfilter','History','Hmemory',\n            'Hours','Id','In','Indexes','Information','Instruct',\n            'Int','Integer','Intensity','Intersect','Into','Is',\n            'Isometric','Key','Keycolumns','Keycomp','Keyset','Last',\n            'Ledit','Level','Library','Like','Linked','Lock',\n            'Logerrors','Long','Lpartition','Mac','Macdesktop','Machelp',\n            'Mackey','Macros','Mark','Master','Max','Maxmem',\n            'Mdi','Memlimit','Memory','Memos','Memowidth','Memvar',\n            'Menus','Messages','Middle','Min','Minimize','Minus',\n            'Mod','Modal','Module','Mono43','Movers','Multilocks',\n            'Mvarsiz','Mvcount','N','Near','Negotiate','Noalias',\n            'Noappend','Noclear','Noclose','Noconsole','Nocptrans','Nodata',\n            'Nodebug','Nodelete','Nodup','Noedit','Noeject','Noenvironment',\n            'Nofloat','Nofollow','Nogrow','Noinit','Nolgrid','Nolink',\n            'Nolock','Nomargin','Nomdi','Nomenu','Nominimize','Nomodify'\n            ),\n        3 => array('Nomouse','None','Nooptimize','Nooverwrite','Noprojecthook','Noprompt',\n            'Noread','Norefresh','Norequery','Norgrid','Norm','Normal',\n            'Nosave','Noshadow','Noshow','Nospace','Not','Notab',\n            'Notify','Noupdate','Novalidate','Noverify','Nowait','Nowindow',\n            'Nowrap','Nozoom','Npv','Null','Number','Objects',\n            'Odometer','Of','Off','Oleobjects','Only','Optimize',\n            'Or','Orientation','Output','Outshow','Overlay','Overwrite',\n            'Pad','Palette','Paperlength','Papersize','Paperwidth','Password',\n            'Path','Pattern','Pause','Pdox','Pdsetup','Pen',\n            'Pfs','Pixels','Plain','Popups','Precision','Preference',\n            'Preview','Primary','Printer','Printquality','Procedures','Production',\n            'Program','Progwork','Project','Prompt','Query','Random',\n            'Range','Readborder','Readerror','Record','Recover','Redit',\n            'Reference','References','Relative','Remote','Reprocess','Resource',\n            'Rest','Restrict','Rgb','Right','Row','Rowset',\n            'Rpd','Runtime','Safety','Same','Sample','Say',\n            'Scale','Scheme','Scoreboard','Screen','Sdf','Seconds',\n            'Selection','Shadows','Shared','Sheet','Shell','Shift',\n            'Shutdown','Single','Some','Sortwork','Space','Sql',\n            'Standalone','Status','Std','Step','Sticky','String',\n            'Structure','Subclass','Summary','Sylk','Sysformats','Sysmenus',\n            'System','T','Tab','Tables','Talk','Tedit',\n            'Textmerge','Time','Timeout','Titles','Tmpfiles','To',\n            'Topic','Transaction','Trap','Trbetween','Trigger','Ttoption',\n            'Typeahead','Udfparms','Union','Unique','Userid','Users',\n            'Values','Var','Verb','Vga25','Vga50','Views',\n            'Volume','Where','Windows','Wk1','Wk3','Wks',\n            'Workarea','Wp','Wr1','Wrap','Wrk','Xcmdfile',\n            'Xl5','Xl8','Xls','Y','Yresolution','Zoom',\n            'Activate','ActivateCell','Add','AddColumn','AddItem','AddListItem',\n            'AddObject','AddProperty','AddToSCC','AfterBuild','AfterCloseTables','AfterDock',\n            'AfterRowColChange','BeforeBuild','BeforeDock','BeforeOpenTables','BeforeRowColChange','Box',\n            'Build','CheckIn','CheckOut','Circle','Clear','ClearData',\n            'Cleanup','Click','CloneObject','CloseEditor','CloseTables','Cls',\n            'CommandTargetExec','CommandTargetQueryStas','ContainerRelease','DataToClip','DblClick','Deactivate',\n            'Delete','DeleteColumn','Deleted','Destroy','DoCmd','Dock',\n            'DoScroll','DoVerb','DownClick','Drag','DragDrop','DragOver',\n            'DropDown','Draw','EnterFocus','Error','ErrorMessage','Eval',\n            'ExitFocus','FormatChange','GetData','GetFormat','GetLatestVersion','GoBack',\n            'GotFocus','GoForward','GridHitTest','Hide','HideDoc','IndexToItemId',\n            'Init','InteractiveChange','Item','ItemIdToIndex','KeyPress','Line',\n            'Load','LostFocus','Message','MiddleClick','MouseDown','MouseMove',\n            'MouseUp','MouseWheel','Move','Moved','NavigateTo','Newobject',\n            'OLECompleteDrag','OLEDrag','OLEDragDrop','OLEDragOver','OLEGiveFeedback','OLESetData',\n            'OLEStartDrag','OpenEditor','OpenTables','Paint','Point','Print',\n            'ProgrammaticChange','PSet','QueryAddFile','QueryModifyFile','QueryRemoveFile','QueryRunFile',\n            'QueryUnload','RangeHigh','RangeLow','ReadActivate','ReadExpression','ReadDeactivate',\n            'ReadMethod','ReadShow','ReadValid','ReadWhen','Refresh','Release',\n            'RemoveFromSCC','RemoveItem','RemoveListItem','RemoveObject','Requery','RequestData',\n            'Reset','ResetToDefault','Resize','RightClick','SaveAs','SaveAsClass',\n            'Scrolled','SetAll','SetData','SetFocus','SetFormat','SetMain',\n            'SetVar','SetViewPort','ShowDoc','ShowWhatsThis','TextHeight','TextWidth',\n            'Timer','UIEnable','UnDock','UndoCheckOut','Unload','UpClick',\n            'Valid','WhatsThisMode','When','WriteExpression','WriteMethod','ZOrder',\n            'ATGetColors','ATListColors','Accelerate','ActiveColumn','ActiveControl','ActiveForm',\n            'ActiveObjectId','ActivePage','ActiveProject','ActiveRow','AddLineFeeds','Alias',\n            'Alignment','AllowAddNew','AllowHeaderSizing','AllowResize','AllowRowSizing','AllowTabs',\n            'AlwaysOnTop','Application','AutoActivate','AutoCenter','AutoCloseTables','AutoIncrement',\n            'AutoOpenTables','AutoRelease','AutoSize','AutoVerbMenu','AutoYield','AvailNum',\n            'BackColor','BackStyle','BaseClass','BorderColor','BorderStyle','BorderWidth',\n            'Bound','BoundColumn','BoundTo','BrowseAlignment','BrowseCellMarg','BrowseDestWidth',\n            'BufferMode','BufferModeOverride','BuildDateTime','ButtonCount','ButtonIndex','Buttons',\n            'CLSID','CanAccelerate','CanGetFocus','CanLoseFocus','Cancel','Caption',\n            'ChildAlias','ChildOrder','Class','ClassLibrary','ClipControls','ClipRect',\n            'Closable','ColorScheme','ColorSource','ColumnCount','ColumnHeaders','ColumnLines',\n            'ColumnOrder','ColumnWidths','Columns','Comment','ContinuousScroll','ControlBox',\n            'ControlCount','ControlIndex','ControlSource','Controls','CurrentControl','CurrentX',\n            'CurrentY','CursorSource','Curvature','DataSession','DataSessionId','DataSourceObj',\n            'DataType','Database','DateFormat','DateMark','DefButton','DefButtonOrig',\n            'DefHeight','DefLeft','DefTop','DefWidth','Default','DefaultFilePath',\n            'DefineWindows','DeleteMark','Desktop','Dirty','DisabledBackColor','DisabledByEOF',\n            'DisabledForeColor','DisabledItemBackColor','DisabledItemForeColor','DisabledPicture','DispPageHeight','DispPageWidth',\n            'DisplayCount','DisplayValue','DoCreate','DockPosition','Docked','DocumentFile',\n            'DownPicture','DragIcon','DragMode','DragState','DrawMode','DrawStyle',\n            'DrawWidth','DynamicAlignment','DynamicBackColor','DynamicCurrentControl','DynamicFontBold','DynamicFontItalic',\n            'DynamicFontName','DynamicFontOutline','DynamicFontShadow','DynamicFontSize','DynamicFontStrikethru','DynamicFontUnderline',\n            'DynamicForeColor','EditFlags','Enabled','EnabledByReadLock','Encrypted','EnvLevel',\n            'ErasePage','FileClass','FileClassLibrary','FillColor','FillStyle','Filter',\n            'FirstElement','FontBold','FontItalic','FontName','FontOutline','FontShadow',\n            'FontSize','FontStrikethru','FontUnderline','ForceFocus','ForeColor','FormCount',\n            'FormIndex','FormPageCount','FormPageIndex','Format','Forms','FoxFont',\n            'FullName','GoFirst','GoLast','GridLineColor','GridLineWidth','GridLines'\n            ),\n        4 => array('HPROJ','HWnd','HalfHeightCaption','HasClip','HeaderGap','HeaderHeight',\n            'Height','HelpContextID','HideSelection','Highlight','HomeDir','HostName',\n            'HotKey','HscrollSmallChange','IMEMode','Icon','IgnoreInsert','InResize',\n            'Increment','IncrementalSearch','InitialSelectedAlias','InputMask','Instancing','IntegralHeight',\n            'Interval','ItemBackColor','ItemData','ItemForeColor','ItemIDData','ItemTips',\n            'JustReadLocked','KeyPreview','KeyboardHighValue','KeyboardLowValue','LastModified','Left',\n            'LeftColumn','LineSlant','LinkMaster','List','ListCount','ListIndex',\n            'ListItem','ListItemId','LockDataSource','LockScreen','MDIForm','MainClass',\n            'MainFile','Margin','MaxButton','MaxHeight','MaxLeft','MaxLength',\n            'MaxTop','MaxWidth','MemoWindow','MinButton','MinHeight','MinWidth',\n            'MouseIcon','MousePointer','Movable','MoverBars','MultiSelect','Name',\n            'NapTime','NewIndex','NewItemId','NoDataOnLoad','NoDefine','NotifyContainer',\n            'NullDisplay','NumberOfElements','OLEDragMode','OLEDragPicture','OLEDropEffects','OLEDropHasData',\n            'OLEDropMode','OLERequestPendingTimeOut','OLEServerBusyRaiseError','OLEServerBusyTimeOut','OLETypeAllowed','OleClass',\n            'OleClassId','OleControlContainer','OleIDispInValue','OleIDispOutValue','OleIDispatchIncoming','OleIDispatchOutgoing',\n            'OnResize','OneToMany','OpenViews','OpenWindow','PageCount','PageHeight',\n            'PageOrder','PageWidth','Pages','Panel','PanelLink','Parent',\n            'ParentAlias','ParentClass','Partition','PasswordChar','Picture','ProcessID',\n            'ProgID','ProjectHookClass','ProjectHookLibrary','Projects','ReadColors','ReadCycle',\n            'ReadFiller','ReadLock','ReadMouse','ReadOnly','ReadSave','ReadSize',\n            'ReadTimeout','RecordMark','RecordSource','RecordSourceType','Rect','RelationalExpr',\n            'RelativeColumn','RelativeRow','ReleaseErase','ReleaseType','ReleaseWindows','Resizable',\n            'RightToLeft','RowHeight','RowSource','RowSourceType','SCCProvider','SCCStatus',\n            'SDIForm','ScaleMode','ScrollBars','SelLength','SelStart','SelText',\n            'SelectOnEntry','Selected','SelectedBackColor','SelectedForeColor','SelectedID','SelectedItemBackColor',\n            'SelectedItemForeColor','SelfEdit','ServerClass','ServerClassLibrary','ServerHelpFile','ServerName',\n            'ServerProject','ShowTips','ShowWindow','Sizable','Size<height>','Size<maxlength>',\n            'Size<width>','Skip','SkipForm','Sorted','SourceType','Sparse',\n            'SpecialEffect','SpinnerHighValue','SpinnerLowValue','SplitBar','StartMode','StatusBarText',\n            'Stretch','StrictDateEntry','Style','SystemRefCount','TabIndex','TabStop',\n            'TabStretch','TabStyle','Tabhit','Tabs','Tag','TerminateRead',\n            'ThreadID','TitleBar','ToolTipText','Top','TopIndex','TopItemId',\n            'TypeLibCLSID','TypeLibDesc','TypeLibName','UnlockDataSource','Value','ValueDirty',\n            'VersionComments','VersionCompany','VersionCopyright','VersionDescription','VersionNumber','VersionProduct',\n            'VersionTrademarks','View','ViewPortHeight','ViewPortLeft','ViewPortTop','ViewPortWidth',\n            'Visible','VscrollSmallChange','WasActive','WasOpen','WhatsThisButton','WhatsThisHelp',\n            'WhatsThisHelpID','Width','WindowList','WindowNTIList','WindowState','WindowType',\n            'WordWrap','ZOrderSet','ActiveDoc','Checkbox','Column','ComboBox',\n            'CommandButton','CommandGroup','Container','Control','Cursor','Custom',\n            'DataEnvironment','EditBox','Empty','FontClass','Form','Formset',\n            'General','Grid','Header','HyperLink','Image','Label',\n            'ListBox','Memo','OleBaseControl','OleBoundControl','OleClassIDispOut','OleControl',\n            'OptionButton','OptionGroup','Page','PageFrame','ProjectHook','RectClass',\n            'Relation','Session','Shape','Spinner','TextBox' ,'Toolbar'\n            ),\n        ),\n    'SYMBOLS' => array(\n        \"!\", \"@\", \"$\", \"%\",\n        \"(\", \")\", \"{\", \"}\", \"[\", \"]\",\n        \"-\", \"+\", \"*\", \"/\",\n        \"=\", \"<\", \">\",\n        \":\", \";\", \",\", \".\", \"&\",\n        \"?\", \"??\", \"???\"\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: blue;',\n            2 => 'color: blue;',\n            3 => 'color: blue;',\n            4 => 'color: blue;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: green; font-style: italic;',\n            2 => 'color: green; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: blue;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: blue;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/visualprolog.php",
    "content": "<?php\n/*************************************************************************************\n * visualprolog.php\n * ----------\n * Author: Thomas Linder Puls (puls@pdc.dk)\n * Copyright: (c) 2008 Thomas Linder Puls (puls@pdc.dk)\n * Release Version: 1.0.9.1\n * Date Started: 2008/11/20\n *\n * Visual Prolog language file for GeSHi.\n *\n * CHANGES\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Visual Prolog',\n    'COMMENT_SINGLE' => array(1 => '%'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'HARDQUOTE' => array('@\"', '\"'),\n    'HARDESCAPE' => array('\"\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            'clauses','constants','constructors','delegate','domains','facts',\n            'goal','guards','inherits','monitor','namespace','open',\n            'predicates','properties','resolve','supports'\n            ),\n        2 => array(\n            'align','and','anyflow','as','bitsize','catch','determ','digits',\n            'div','do','else','elseif','erroneous','externally','failure',\n            'finally','from','language','mod','multi','nondeterm','or',\n            'procedure','quot','rem','single','then','to'\n            ),\n        3 => array(\n            '#bininclude','#else','#elseif','#endif','#error','#export',\n            '#externally','#if','#import','#include','#message','#options',\n            '#orrequires','#requires','#then','#warning'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '+', '-', '*', '?', '=', '/', '>', '<', '^', '!', ':', '(', ')', '{', '}', '[', ']'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => true,\n        1 => true,\n        2 => true,\n        3 => true\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #808000;',\n            2 => 'color: #333399;',\n            3 => 'color: #800080;',\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #AA77BD',\n            'MULTI' => 'color: #AA77BD'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #008080;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #00B7B7;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #0000FF;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #008000;',\n            1 => 'color: #808000;',\n            2 => 'color: #333399;',\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => ':',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        0 => \"(?<![a-zA-Z0-9_])(?!(?:PIPE|SEMI)>)[A-Z_]\\w*(?!\\w)\",\n        1 => \"\\\\b(end\\\\s+)?(implement|class|interface)\\\\b\",\n        2 => \"\\\\b(end\\\\s+)?(foreach|if|try)\\\\b\",\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/whitespace.php",
    "content": "<?php\n/*************************************************************************************\n * whitespace.php\n * ----------\n * Author: Benny Baumann (BenBE@geshi.org)\n * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2009/10/31\n *\n * Whitespace language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/10/31 (1.0.8.1)\n *   -  First Release\n *\n * TODO\n * ----\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n$language_data = array (\n    'LANG_NAME' => 'Whitespace',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        3 => \"/[^\\n\\x20\\x09]+/s\"\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        ),\n    'SYMBOLS' => array(\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            ),\n        'COMMENTS' => array(\n            3 => 'color: #666666; font-style: italic;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            2 => 'background-color: #FF9999;',\n            3 => 'background-color: #9999FF;'\n            )\n        ),\n    'URLS' => array(\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        2 => array(\n            GESHI_SEARCH => \"(?<!\\\\A)\\x20\",\n            GESHI_REPLACE => \"&#32;\",\n            GESHI_MODIFIERS => 's',\n            GESHI_BEFORE => \"\",\n            GESHI_AFTER => \"\"\n            ),\n        3 => array(\n            GESHI_SEARCH => \"\\x09\",\n            GESHI_REPLACE => \"&#9;\",\n            GESHI_MODIFIERS => 's',\n            GESHI_BEFORE => \"\",\n            GESHI_AFTER => \"\"\n            ),\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'KEYWORDS' => GESHI_NEVER,\n            'SYMBOLS' => GESHI_NEVER,\n            'STRINGS' => GESHI_NEVER,\n//            'REGEXPS' => GESHI_NEVER,\n            'NUMBERS' => GESHI_NEVER\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/whois.php",
    "content": "<?php\n/*************************************************************************************\n * whois.php\n * --------\n * Author: Benny Baumann (BenBE@geshi.org)\n * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2008/09/14\n *\n * Whois response (RPSL format) language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/09/14 (1.0.0)\n *  -  First Release\n *\n * TODO\n * ----\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Whois (RPSL format)',\n    'COMMENT_SINGLE' => array(1 => '% ', 2 => '%ERROR:'),\n    'COMMENT_MULTI' => array(),\n    'COMMENT_REGEXP' => array(\n        //Description\n        3 => '/(?:(?<=^remarks:)|(?<=^descr:))(.|\\n\\s)*$/mi',\n\n        //Contact Details\n        4 => '/(?<=^address:)(.|\\n\\s)*$/mi',\n        5 => '/\\+\\d+(?:(?:\\s\\(\\d+(\\s\\d+)*\\))?(?:\\s\\d+)+|-\\d+-\\d+)/',\n        6 => '/\\b(?!-|\\.)[\\w\\-\\.]+(?!-|\\.)@((?!-)[\\w\\-]+\\.)+\\w+\\b/',\n\n        //IP, Networks and AS information\\links\n        7 => '/\\b(?<!\\.|\\-)(?:[\\da-f:]+(?!\\.)|\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})(?:\\/1?\\d\\d?)?(?<!\\.|\\-)\\b/',\n        8 => '/\\bAS\\d+\\b/'\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array( //Object Types\n            'as-block','as-set','aut-num','domain','filter-set','inet-rtr',\n            'inet6num','inetnum','irt','key-cert','limerick','mntner',\n            'organisation','peering-set','person','poem','role','route-set',\n            'route','route6','rtr-set'\n            ),\n        2 => array( //Field Types\n            'abuse-mailbox','address','admin-c','aggr-bndry','aggr-mtd','alias',\n            'as-block','as-name','as-set','aut-num','auth','author','certif',\n            'changed','components','country','default','descr','dom-net',\n            'domain','ds-rdata','e-mail','encryption','export','export-comps',\n            'fax-no','filter','filter-set','fingerpr','form','holes','ifaddr',\n            'import','inet-rtr','inet6num','inetnum','inject','interface','irt',\n            'irt-nfy','key-cert','limerick','local-as','mbrs-by-ref',\n            'member-of','members','method','mnt-by','mnt-domains','mnt-irt',\n            'mnt-lower','mnt-nfy','mnt-ref','mnt-routes','mntner','mp-default',\n            'mp-export','mp-filter','mp-import','mp-members','mp-peer',\n            'mp-peering','netname','nic-hdl','notify','nserver','org',\n            'org-name','org-type','organisation','origin','owner','peer',\n            'peering','peering-set','person','phone','poem','ref-nfy','refer',\n            'referral-by','remarks','rev-srv','role','route','route-set',\n            'route6','rtr-set','signature','source','status','sub-dom','tech-c',\n            'text','upd-to','zone-c'\n            ),\n        3 => array( //RPSL reserved\n            'accept','action','and','announce','any','as-any','at','atomic',\n            'except','from','inbound','into','networks','not','or','outbound',\n            'peeras','refine','rs-any','to'\n            )\n        ),\n    'SYMBOLS' => array(\n        ':'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000FF; font-weight: bold;',\n            2 => 'color: #000080; font-weight: bold;',\n            3 => 'color: #990000; font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #666666; font-style: italic;',\n            2 => 'color: #666666; font-style: italic;',\n            3 => 'color: #404080;',\n            4 => 'color: #408040;',\n            5 => 'color: #408040;',\n            6 => 'color: #408040;',\n            7 => 'color: #804040;',\n            8 => 'color: #804040;',\n            'MULTI' => 'color: #666666; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;',\n            'HARD' => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #009900;'\n            ),\n        'STRINGS' => array(\n            0 => '',\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #000080;',\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #0000FF;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #000088;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://www.irr.net/docs/rpsl.html'\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        //Variables\n        0 => \"[\\\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*\"\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4,\n    'PARSER_CONTROL' => array(\n        'KEYWORDS' => array(\n            1 => array(\n                'DISALLOWED_BEFORE' => '(?<=\\A |\\A \\n(?m:^)|\\n\\n(?m:^))'\n                ),\n            2 => array(\n                'DISALLOWED_BEFORE' => '(?m:^)'\n                )\n            ),\n        'ENABLE_FLAGS' => array(\n            'BRACKETS' => GESHI_NEVER,\n            'SYMBOLS' => GESHI_NEVER,\n            'STRINGS' => GESHI_NEVER,\n            'ESCAPE_CHAR' => GESHI_NEVER,\n            'NUMBERS' => GESHI_NEVER,\n            'METHODS' => GESHI_NEVER,\n            'SCRIPT' => GESHI_NEVER\n            )\n        )\n);\n"
  },
  {
    "path": "includes/geshi/winbatch.php",
    "content": "<?php\n/*************************************************************************************\n * winbatch.php\n * ------------\n * Author: Craig Storey (storey.craig@gmail.com)\n * Copyright: (c) 2004 Craig Storey (craig.xcottawa.ca)\n * Release Version: 1.0.9.1\n * Date Started: 2006/05/19\n *\n * WinBatch language file for GeSHi.\n *\n * WinBatch is a Windows scripting language - www.winbatch.com.\n * The keywords were pulled from the winbatch/system/WIL.clr file for v2005G.\n * Not all extender functions are added, but a very large set of the most common.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n * 2006/05/05 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2004/07/14)\n * -------------------------\n * - Right now any ':Subroutine' is treated as a comment. This highlights the\n *   Subroutine's name, but it's not a perfect fix. I should use a RegEx in\n *   GeSHI_Search&Replace features..\n * - Update the list of extender functions.\n * - Use a regular expression to comment UDFs that start with 'udf_'.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Winbatch',\n    'COMMENT_SINGLE' => array(1 => ';', 2 => ':'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"', '`'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'While', 'To', 'Then', 'Switch', 'Select', 'Return', 'Next', 'IntControl', 'Include', 'In', 'If',\n            'Goto', 'GoSub', 'ForEach', 'For', 'Exit', 'Execute', 'ErrorMode', 'EndWhile', 'EndSwitch', '#EndSubRoutine',\n            'EndSelect', 'EndIf', '#EEndFunction', 'EndFor', 'End', 'Else', 'DropWild', 'Drop', '#DefineSubRoutine',\n            '#DefineFunction', 'Debug', 'Continue', 'Case', 'CallExt', 'Call', 'By', 'BreakPoint', 'Break'\n            ),\n        2 => array(\n            'ZOOMED', 'YES', 'WORD4', 'WORD2', 'WORD1', 'WHOLESECTION', 'WAIT', 'UNSORTED', 'UNCHECK', 'TRUE', 'TILE',\n            'TAB', 'STRING', 'STACK', 'SPC2NET', 'SORTED', 'SOK', 'SNET2PC', 'SINGLE', 'SHIFT', 'SERVER', 'SERRWINSOCK',\n            'SERRVOICE', 'SERRSOCKET', 'SERRSERVICE', 'SERRSELECT', 'SERRPARAM', 'SERROUTOFMEM', 'SERRNOTFOUND', 'SERRNOCONN',\n            'SERRNOANSWER', 'SERRMUSTWAIT', 'SERRIPADDR', 'SERRHOSTNAME', 'SERRFAILURE', 'SERRBUSY', 'SCROLLLOCK', 'SCANCEL',\n            'SAVE', 'SALREADY', 'ROWS', 'REGUSERS', 'REGROOT', 'REGMACHINE', 'REGCURRENT', 'REGCLASSES', 'RDBLCLICK', 'RCLICK',\n            'RBUTTON', 'RAD2DEG', 'QSUCCESSINFO', 'QSUCCESS', 'QSTILLEX', 'QROLLBACK', 'QNULL', 'QNODATA', 'QNEXT', 'QNEEDDATA',\n            'QFIRST', 'QCOMMIT', 'QBADHANDLE', 'PRINTER', 'PLANCKJOULES', 'PLANCKERGS', 'PI', 'PARSEONLY', 'PARSEC', 'P3ERRREPLY',\n            'OPEN', 'ON', 'OFF', 'NUMLOCK', 'NOWAIT', 'NOTIFY', 'NORMAL', 'NORESIZE', 'NONE', 'NO', 'NCSAFORMAT', 'MULTIPLE',\n            'MSFORMAT', 'MPLAYRDBLCK', 'MPLAYRCLK', 'MPLAYRBUTTON', 'MPLAYMDBLCK', 'MPLAYMCLK', 'MPLAYMBUTTON', 'MPLAYLDBLCK',\n            'MPLAYLCLK', 'MPLAYLBUTTON', 'MINOR', 'MDBLCLICK', 'MCLICK', 'MBYESNO', 'MBUTTON', 'MBOKCANCEL', 'MAJOR', 'MAGFIELD',\n            'LOCALGROUP', 'LIGHTMTPS', 'LIGHTMPS', 'LF', 'LDBLCLICK', 'LCLICK', 'LBUTTON', 'LAFFDBERROR', 'ICON', 'HTTPS', 'HTTP',\n            'HNOHEADER', 'HMETHODPOST', 'HMETHODGET', 'HIDDEN', 'HHEADERONLY', 'HHEADER', 'GRAVITATION', 'GOPHER', 'GOLDENRATIO',\n            'GMTSEC', 'GLOBALGROUP', 'GFTSEC', 'GETPROCID', 'GETEXITCODE', 'FWDSCAN', 'FTPPASSIVE', 'FTP', 'FLOAT8', 'FARADAY',\n            'FALSE', 'EXTENDED', 'EULERS', 'ENABLE', 'ELECTRIC', 'DRIVE', 'DISABLE', 'DESCENDING', 'DEG2RAD', 'DEFAULT', 'CTRL',\n            'CRLF', 'CR', 'COMMONFORMAT', 'COLUMNS', 'CHECK', 'CAPSLOCK', 'CANCEL', 'BOLTZMANN', 'BACKSCAN', 'AVOGADRO', 'ATTR_X',\n            'ATTR_T', 'ATTR_SY', 'ATTR_SH', 'ATTR_RO', 'ATTR_RI', 'ATTR_P', 'ATTR_IC', 'ATTR_H', 'ATTR_DM', 'ATTR_DI', 'ATTR_DC',\n            'ATTR_CI', 'ATTR_A', 'ASCENDING', 'ARRANGE', 'AMC', 'ACC_WRITE', 'ACC_READ_NT', 'ACC_READ_95', 'ACC_READ', 'ACC_PRINT_NT',\n            'ACC_PMANG_NT', 'ACC_PFULL_NT', 'ACC_LIST', 'ACC_FULL_NT', 'ACC_FULL_95', 'ACC_DELETE', 'ACC_CREATE', 'ACC_CONTROL',\n            'ACC_CHNG_NT', 'ACC_ATTRIB', 'ABOVEICONS'\n            ),\n        3 => array(\n            'Yields', 'Yield', 'WinZoom', 'WinWaitExist', 'WinWaitClose', 'WinWaitChild', 'WinVersion', 'WinTitle', 'WinSysInfo',\n            'WinState', 'WinShow', 'WinResources', 'WinPositionChild', 'WinPosition', 'WinPlaceSet', 'WinPlaceGet', 'WinPlaceChild',\n            'WinPlace', 'WinParmSet', 'WinParmGet', 'WinName', 'WinMetrics', 'WinItemProcId', 'WinItemNameId', 'WinItemizeEx',\n            'WinItemize', 'WinItemChild', 'WinIsDos', 'WinIdGet', 'WinIconize', 'WinHide', 'WinHelp', 'WinGetactive', 'WinExistchild',\n            'WinExist', 'WinExename', 'WinConfig', 'WinClosenot', 'WinClose', 'WinArrange', 'WinActivechild', 'WinActivchild',\n            'WinActivate', 'WebVerifyCard', 'WebSetTimeout', 'WebParamSize', 'WebParamNames', 'WebParamFile', 'WebParamData',\n            'WebParamBuf', 'WebOutFile', 'WebOutBinary', 'WebOut', 'WebDumpError', 'WebDatData', 'WebCounter', 'WebConSize', 'WebConData',\n            'WebConBuf', 'WebCmdData', 'WebBaseConv', 'Wallpaper', 'WaitForKeyEX', 'WaitForKey', 'VersionDLL', 'Version', 'VarType',\n            'TimeYmdHms', 'TimeWait', 'TimeSubtract', 'TimeJulToYmd', 'TimeJulianDay', 'TimeDiffSecs', 'TimeDiffDays', 'TimeDiff', 'TimeDelay',\n            'TimeDate', 'TimeAdd', 'TextSelect', 'TextBoxSort', 'TextBox', 'Terminate', 'Tanh', 'Tan', 'SysParamInfo', 'SvcWaitForCmd',\n            'SvcSetState', 'SvcSetAccept', 'StrUpper', 'StrTrim', 'StrSubWild', 'StrSub', 'StrScan', 'StrReplace', 'StrLower', 'StrLenWild',\n            'StrLen', 'StrIndexWild', 'StrIndexNC', 'StrIndex', 'StriCmp', 'StrFixLeft', 'StrFixCharsL', 'StrFixChars', 'StrFix', 'StrFill',\n            'StrCnt', 'StrCmp', 'StrClean', 'StrCharCount', 'StrCat', 'StrByteCount', 'Sqrt', 'SoundVolume', 'Sounds', 'Snapshot', 'Sinh', 'Sin',\n            'ShortCutMake', 'ShortCutInfo', 'ShortCutExtra', 'ShortCutEdit', 'ShortCutDir', 'ShellExecute', 'SendMenusToEx', 'SendMenusTo',\n            'SendKeysTo', 'SendKeysChild', 'SendKey', 'RunZoomWait', 'RunZoom', 'RunWithLogon', 'RunWait', 'RunShell', 'RunIconWait',\n            'RunIcon', 'RunHideWait', 'RunHide', 'RunExit', 'RunEnviron', 'Run', 'RtStatus', 'Reload', 'RegUnloadHive', 'RegSetValue',\n            'RegSetQword', 'RegSetMulSz', 'RegSetExpSz', 'RegSetEx', 'RegSetDword', 'RegSetBin', 'RegQueryValue', 'RegQueryStr',\n            'RegQueryQword', 'RegQueryMulSz', 'RegQueryKeys', 'RegQueryKeyLastWriteTime', 'RegQueryKey', 'RegQueryItem', 'RegQueryExpSz',\n            'RegQueryEx', 'RegQueryDword', 'RegQueryBin', 'RegOpenKeyEx', 'RegOpenKey', 'RegOpenFlags', 'RegLoadHive', 'RegExistValue',\n            'RegExistKey', 'RegEntryType', 'RegDelValue', 'RegDeleteKey', 'RegCreateKey', 'RegConnect', 'RegCloseKey', 'RegApp', 'Random',\n            'PtrPersistent', 'PtrGlobalDefine', 'PtrGlobal', 'Print', 'PlayWaveform', 'PlayMidi', 'PlayMedia', 'PipeServerWrite', 'PipeServerRead',\n            'PipeServerCreate', 'PipeServerClose', 'PipeInfo', 'PipeClientSendRecvData', 'PipeClientOpen', 'PipeClientClose', 'Pause',\n            'ParseData', 'ObjectTypeGet', 'ObjectType', 'ObjectOpen', 'ObjectGet', 'ObjectEventRemove', 'ObjectEventAdd',\n            'ObjectCreate', 'ObjectConstToArray', 'ObjectConstantsGet', 'ObjectCollectionOpen', 'ObjectCollectionNext',\n            'ObjectCollectionClose', 'ObjectClose', 'ObjectAccess', 'Num2Char', 'NetInfo', 'MsgTextGet', 'MousePlay', 'MouseMove', 'MouseInfo',\n            'MouseDrag', 'MouseCoords', 'MouseClickBtn', 'MouseClick', 'mod', 'Min', 'Message', 'Max', 'Loge', 'LogDisk', 'Log10', 'LastError',\n            'KeyToggleSet', 'KeyToggleGet', 'ItemSortNc', 'ItemSort', 'ItemSelect', 'ItemReplace', 'ItemRemove', 'ItemLocate', 'ItemInsert',\n            'ItemExtractCSV', 'ItemExtract', 'ItemCountCSV', 'ItemCount', 'IsNumber', 'IsLicensed', 'IsKeyDown', 'IsInt', 'IsFloat', 'IsDefined',\n            'Int', 'InstallFile', 'IniWritePvt', 'IniWrite', 'IniReadPvt', 'IniRead', 'IniItemizePvt', 'IniItemize', 'IniDeletePvt', 'IniDelete',\n            'IgnoreInput', 'IconReplace', 'IconInfo', 'IconExtract', 'IconArrange', 'GetTickCount', 'GetObject', 'GetExactTime', 'Floor',\n            'FindWindow', 'FileYmdHms', 'FileWrite', 'FileVerInfo', 'FileTimeTouch', 'FileTimeSetEx', 'FileTimeSet', 'FileTimeGetEx',\n            'FileTimeGet', 'FileTimeCode', 'FileSizeEx', 'FileSize', 'FileRoot', 'FileRename', 'FileRead', 'FilePutW', 'FilePut', 'FilePath',\n            'FileOpen', 'FileNameShort', 'FileNameLong', 'FileNameEval2', 'FileNameEval1', 'FileMoveAttr', 'FileMove', 'FileMapName',\n            'FileLocate', 'FileItemPath', 'FileItemize', 'FileInfoToArray', 'FileGetW', 'FileGet', 'FileFullname', 'FileExtension', 'FileExist',\n            'FileDelete', 'FileCreateTemp', 'FileCopyAttr', 'FileCopy', 'FileCompare', 'FileClose', 'FileBaseName', 'FileAttrSetEx',\n            'FileAttrSet', 'FileAttrGetEx', 'FileAttrGet', 'FileAppend', 'Fabs', 'ExtractAttachedFile', 'Exp', 'ExeTypeInfo', 'Exclusive',\n            'EnvItemize', 'EnvironSet', 'Environment', 'EndSession', 'DosVersion', 'DllLoad', 'DllLastError', 'DllHwnd', 'DllHinst',\n            'DllFree', 'DllCallCDecl', 'DllCall', 'Display', 'DiskVolinfo', 'DiskSize', 'DiskScan', 'DiskInfo', 'DiskFree', 'DiskExist',\n            'DirWindows', 'DirSize', 'DirScript', 'DirRename', 'DirRemove', 'DirMake', 'DirItemize', 'DirInfoToArray', 'DirHome', 'DirGet',\n            'DirExist', 'DirChange', 'DirAttrSetEx', 'DirAttrSet', 'DirAttrGetEx', 'DirAttrGet', 'DialogProcOptions', 'DialogObject',\n            'DialogControlState', 'DialogControlSet', 'DialogControlGet', 'DialogBox', 'Dialog', 'Delay', 'Decimals', 'DebugTrace',\n            'DebugData', 'DDETimeout', 'DDETerminate', 'DDERequest', 'DDEPoke', 'DDEInitiate', 'DDEExecute', 'DateTime', 'CurrFilepath',\n            'CurrentPath', 'CurrentFile', 'CreateObject', 'Cosh', 'Cos', 'ClipPut', 'ClipHasFormat', 'ClipGetEx', 'ClipGet', 'ClipAppend',\n            'ChrUnicodeToString', 'ChrUnicodeToHex', 'ChrStringToUnicode', 'ChrSetCodepage', 'ChrHexToUnicode', 'ChrGetCodepage',\n            'Char2Num', 'Ceiling', 'ButtonNames', 'BoxUpdates', 'BoxTitle', 'BoxTextFont', 'BoxTextColor', 'BoxText', 'BoxShut', 'BoxPen',\n            'BoxOpen', 'BoxNew', 'BoxMapmode', 'BoxesUp', 'BoxDrawText', 'BoxDrawRect', 'BoxDrawLine', 'BoxDrawCircle', 'BoxDestroy',\n            'BoxDataTag', 'BoxDataClear', 'BoxColor', 'BoxCaption', 'BoxButtonWait', 'BoxButtonStat', 'BoxButtonKill', 'BoxButtonDraw',\n            'BoxBitMap', 'BinaryXor', 'BinaryXlate', 'BinaryWriteEx', 'BinaryWrite', 'BinaryTagRepl', 'BinaryTagLen', 'BinaryTagInit',\n            'BinaryTagIndex', 'BinaryTagFind', 'BinaryTagExtr', 'BinaryStrCnt', 'BinarySort', 'BinaryReplace', 'BinaryReadEx',\n            'BinaryRead', 'BinaryPokeStrW', 'BinaryPokeStr', 'BinaryPokeHex', 'BinaryPokeFlt', 'BinaryPoke4', 'BinaryPoke2', 'BinaryPoke',\n            'BinaryPeekStrW', 'BinaryPeekStr', 'BinaryPeekHex', 'BinaryPeekFlt', 'BinaryPeek4', 'BinaryPeek2', 'BinaryPeek', 'BinaryOr',\n            'BinaryOleType', 'BinaryIndexNc', 'BinaryIndexEx', 'BinaryIndexBin', 'BinaryIndex', 'BinaryIncrFlt', 'BinaryIncr4',\n            'BinaryIncr2', 'BinaryIncr', 'BinaryHashRec', 'BinaryFree', 'BinaryEodSet', 'BinaryEodGet', 'BinaryCopy', 'BinaryConvert',\n            'BinaryCompare', 'BinaryClipPut', 'BinaryClipGet', 'BinaryChecksum', 'BinaryBufInfo', 'BinaryAnd', 'BinaryAllocArray',\n            'BinaryAlloc', 'Beep', 'Average', 'Atan', 'AskYesNo', 'AskTextbox', 'AskPassword', 'AskLine', 'AskItemlist', 'AskFont',\n            'AskFiletext', 'AskFilename', 'AskDirectory', 'AskColor', 'Asin', 'ArrInitialize', 'ArrInfo', 'ArrDimension',\n            'Arrayize', 'ArrayFilePutCSV', 'ArrayFilePut', 'ArrayFileGetCSV', 'ArrayFileGet', 'AppWaitClose', 'AppExist', 'AddExtender',\n            'Acos', 'Abs', 'About'\n            ),\n        4 => array(\n            'zZipFiles', 'zVersionInfo', 'zVersion', 'zUnZipFiles', 'zSetPortBit', 'zRPortShift', 'zPortOut', 'zPortIn', 'zNotPortBit',\n            'zLPortShift', 'zGetPortBit', 'zClrPortBit', 'xVerifyCCard', 'xSendMessage', 'xMessageBox', 'xMemCompact', 'xHex', 'xGetElapsed',\n            'xGetChildHwnd', 'xExtenderInfo', 'xEnumStreams', 'xEjectMedia', 'xDriveReady', 'xDiskLabelGet', 'xCursorSet', 'xBaseConvert',\n            'wxPing', 'wxParmSet', 'wxParmGet', 'wxMsgSetHdr', 'wxMsgGetHdr', 'wxMsgGetBody', 'wxHost2Addr', 'wxGetLastErr', 'wxGetInfo',\n            'wxGetErrDesc', 'wxAddr2Host', 'wtsWaitSystemEvent', 'wtsVersion', 'wtsTerminateProcess', 'wtsShutdownSystem', 'wtsSendMessage',\n            'wtsQuerySessionInfo', 'wtsProcIdToSessId', 'wtsLogoffSession', 'wtsLastErrMsg', 'wtsIsTSEnabled', 'wtsIsCitrixEnabled',\n            'wtsGetActiveConsoleSessId', 'wtsEnumSessions', 'wtsEnumProcesses', 'wtsDisconnectSession', 'wnWrkGroups', 'wnVersion', 'wntWtsUserSet',\n            'wntWtsUserGet', 'wntVersion', 'wntUserSidChk', 'wntUserSetDat', 'wntUserRename', 'wntUserProps', 'wntUserList', 'wntUserInfo',\n            'wntUserGetDat', 'wntUserFiles', 'wntUserExist', 'wntUserDel', 'wntUserAddDat', 'wntUserAdd', 'wntSvcStatus', 'wntSvcStart',\n            'wntSvcList', 'wntSvcDelete', 'wntSvcCreate', 'wntSvcControl', 'wntSvcCfgSet', 'wntSvcCfgGet', 'wntShutdown', 'wntShareUsers',\n            'wntShareSet', 'wntShareList', 'wntShareInfo', 'wntShareDel', 'wntShareAdd', 'wntServiceInf', 'wntServiceAt', 'wntServerType',\n            'wntServerList', 'wntServerInfo', 'wntSecurityGet', 'wntRunAsUser', 'wntResources2', 'wntResources', 'wntRemoteTime', 'wntRasUserSet',\n            'wntRasUserGet', 'wntProfileInfo', 'wntProfileDel', 'wntPrivUsers', 'wntPrivList', 'wntPrivGet', 'wntPrivDel', 'wntPrivAdd',\n            'wntOwnerSet', 'wntOwnerGet', 'wntMemberSet', 'wntMemberLst2', 'wntMemberList', 'wntMemberGrps', 'wntMemberGet', 'wntMemberDel',\n            'wntLsaPolSet', 'wntLsaPolGet', 'wntListGroups', 'wntLastErrMsg', 'wntGroupRen', 'wntGroupInfo', 'wntGroupEdit', 'wntGroupDel',\n            'wntGroupAdd', 'wntGetUser', 'wntGetDrive', 'wntGetDc', 'wntGetCon', 'wntFileUsers', 'wntFilesOpen', 'wntFileClose', 'wntEventWrite',\n            'wntEventLog', 'wntDomainSync', 'wntDirDialog', 'wntDfsList', 'wntDfsGetInfo', 'wntCurrUsers', 'wntChgPswd', 'wntCancelCon',\n            'wntAuditMod', 'wntAuditList', 'wntAuditGet', 'wntAuditDel', 'wntAuditAdd2', 'wntAuditAdd', 'wntAddPrinter', 'wntAddDrive',\n            'wntAcctPolSet', 'wntAcctPolGet', 'wntAcctList', 'wntAcctInfo', 'wntAccessMod', 'wntAccessList', 'wntAccessGet', 'wntAccessDel',\n            'wntaccessadd2', 'wntAccessAdd', 'wnShares', 'wnSharePath', 'wnShareName', 'wnShareCnt', 'wnServers', 'wnRestore', 'wnNetNames',\n            'wnGetUser', 'wnGetCon', 'wnGetCaps', 'wnDlgShare', 'wnDlgNoShare', 'wnDlgDiscon', 'wnDlgCon4', 'wnDlgCon3', 'wnDlgCon2', 'wnDlgCon',\n            'wnDlgBrowse', 'wnDialog', 'wnCmptrInfo', 'wnCancelCon', 'wnAddCon', 'WaitSRQ', 'w9xVersion', 'w9xUserSetDat', 'w9xUserRename',\n            'w9xUserprops', 'w9xUserList', 'w9xUserinfo', 'w9xUserGetDat', 'w9xUserExist', 'w9xUserDel', 'w9xUserAddDat', 'w9xUserAdd', 'w9xShareSet',\n            'w9xShareInfo', 'w9xShareDel', 'w9xShareAdd', 'w9xServiceAt', 'w9xServerList', 'w9xRemoteTime', 'w9xOwnerGet', 'w9xMemberSet',\n            'w9xMemberList', 'w9xMemberGrps', 'w9xMemberGet', 'w9xMemberDel', 'w9xListGroups', 'w9xGroupInfo', 'w9xGroupDel', 'w9xGroupAdd',\n            'w9xGetDC', 'w9xFileUsers', 'w9xAccessList', 'w9xAccessGet', 'w9xAccessDel', 'w9xAccessAdd', 'w95Version', 'w95ShareUsers',\n            'w95ShareSet', 'w95ShareList', 'w95ShareInfo', 'w95ShareDel', 'w95ShareAdd', 'w95ServiceInf', 'w95ServiceAt', 'w95ServerType',\n            'w95ServerInfo', 'w95Resources', 'w95GetUser', 'w95GetDrive', 'w95GetCon', 'w95FileUsers', 'w95FileClose', 'w95DirDialog',\n            'w95CancelCon', 'w95AddPrinter', 'w95AddDrive', 'w95AccessDel', 'w95AccessAdd', 'w3Version', 'w3PrtBrowse', 'w3NetGetUser',\n            'w3NetDialog', 'w3GetCon', 'w3GetCaps', 'w3DirBrowse', 'w3CancelCon', 'w3AddCon', 'urlGetScheme', 'urlEncode', 'urlDecode',\n            'tVersion', 'tSetPriority', 'TriggerList', 'Trigger', 'tRemoteConn', 'tOpenProc', 'tListProc', 'tListMod', 'tKillProc', 'tGetProcInfo',\n            'tGetPriority', 'tGetModInfo', 'tGetLastError', 'tGetData', 'TestSys', 'TestSRQ', 'tCountProc', 'tCompatible', 'tCloseProc',\n            'tBrowseCntrs', 'sSendString', 'sSendNum', 'sSendLine', 'sSendBinary', 'sRecvNum', 'sRecvLine', 'sRecvBinary', 'SrchVersion',\n            'SrchNext', 'SrchInit', 'SrchFree', 'sOpen', 'sOK2Send', 'sOK2Recv', 'smtpSendText', 'smtpSendFile', 'sListen', 'SetRWLS',\n            'SendSetup', 'SendLLO', 'SendList', 'SendIFC', 'SendDataBytes', 'SendCmds', 'Send', 'sConnect', 'sClose', 'SByteOrder32',\n            'sByteOrder16', 'sAccept', 'rRegVersion', 'rRegSearch', 'ResetSys', 'ReceiveSetup', 'Receive', 'ReadStsByte', 'RcvRespMsg',\n            'RasVersion', 'RasTypeSize', 'RasRename', 'RasNumCons', 'RasNameValid', 'RasListActCon', 'RasItemize', 'RasHangUp', 'RasGetLastErr',\n            'RasGetConStat', 'RasEntrySet', 'RasEntryInfo', 'RasEntryExist', 'RasEntryDel', 'RasEntryAdd', 'RasDialInfo', 'RasDial',\n            'RasCopy', 'RasConStatus', 'qVersionInfo', 'qTransact', 'qTables', 'qSpecial', 'qSetConnOpt', 'qNumRsltCol', 'qNativeSql', 'qLastCode',\n            'qGetData', 'qFreeStmt', 'qFreeEnv', 'qFreeConnect', 'qFetch', 'qExecDirect', 'qError', 'qDriverList', 'qDriverCon', 'qDisconnect',\n            'qDataSources', 'qConnect', 'qConfigError', 'qConfigData', 'qColumns', 'qBindCol', 'qAllocStmt', 'qAllocEnv', 'qAllocConnect',\n            'pWaitFor', 'pVersionInfo', 'pTimeout', 'pSetPublish', 'pSetPrtInfo', 'pSetPrtAttrib', 'pSetDefPrtEx', 'pSetDefPrt', 'pSendFile',\n            'pRecvFile', 'pPutString', 'pPutLine', 'pPutChar', 'pPutByte', 'pPutBinary', 'PPollUnconfig', 'PPollConfig', 'PPoll', 'pPeekChar',\n            'pPeekByte', 'pPaperSizes', 'pPaperBins', 'pModemSReg', 'pModemParams', 'pModemInit', 'pModemHangUp', 'pModemDial', 'pModemControl',\n            'pModemConnect', 'pModemCommand', 'pModemAnsRing', 'pModemAnsCall', 'pMediaTypes', 'pGetString', 'pGetPublish', 'pGetPrtList',\n            'pGetPrtInfo', 'pGetPrtAttrib', 'pGetLine', 'pGetLastError', 'pGetErrorMsg', 'pGetErrorCode', 'pGetDefPrtInf', 'pGetChar',\n            'pGetByte', 'pGetBinary', 'pDelPrtConn', 'pDelPrinter', 'pComOpen', 'pComModify', 'pComInfo', 'pComControl', 'pComClose',\n            'pCheckSum', 'pCheckBinary', 'pCaptureOn', 'pCaptureOff', 'pCaptureLog', 'PassControl', 'pAddPrtConn', 'pAddPrinter', 'p3RecvText',\n            'p3RecvFile', 'p3Peek', 'p3Open', 'p3GetReply', 'p3Delete', 'p3Count', 'p3Close', 'nwWhoAmI', 'nwVfyPassword', 'nwVersion',\n            'nwSrvShutdown', 'nwSrvNLMMgr', 'nwSrvGenGUID', 'nwSrvExecNCF', 'nwSetVolLimit', 'nwSetSrvParam', 'nwSetSrvInfo', 'nwSetPrimServ',\n            'nwSetPassword', 'nwSetOptions', 'nwSetFileInfo', 'nwSetDirLimit', 'nwSetDirInfo', 'nwSetContext', 'nwSetBcastMode', 'nwServerList',\n            'nwSendBcastMsg', 'nwSearchObjects', 'nwSearchFilter', 'nwRenameObject', 'nwRemoveObject', 'nwReceiveBcastMsg', 'nwNameConvert',\n            'nwMutateObject', 'nwMoveObject', 'nwModifyObject', 'nwMapDelete', 'nwMap', 'nwLogout', 'nwLogin', 'nwListUserGroups',\n            'nwListObjects', 'nwListGroupMembers', 'nwLastErrMsg', 'nwIsUserInGroup', 'nwGetVolLimit', 'nwGetSrvStats', 'nwGetSrvParam',\n            'nwGetSrvInfo', 'nwGetSrvCfg', 'nwGetOptions', 'nwGetObjValue', 'nwGetObjInfo', 'nwGetNLMInfo', 'nwGetMapped', 'nwGetFileInfo',\n            'nwGetDirLimit', 'nwGetDirInfo', 'nwGetContext', 'nwGetConnInfo', 'nwGetCapture', 'nwGetBcastMode', 'nwGetAttrInfo',\n            'nwDriveStatus', 'nwDrivePath', 'nwDetachFromServer', 'nwDelUserFromGroup', 'nwDelConnNum', 'nwCompareObject', 'nwClientInfo',\n            'nwChgPassword', 'nwAttachToServer', 'nwAddUserToGroup', 'nwAddObject', 'netVersion', 'netResources', 'netGetUser', 'netGetCon',\n            'netDirDialog', 'netCancelCon', 'netAddPrinter', 'netAddDrive', 'n4Version', 'n4UserGroups', 'n4UserGroupEx', 'n4SetPrimServ',\n            'n4SetOptions', 'n4SetContextG', 'n4SetContext', 'n4ServerList', 'n4ServerInfo', 'n4ObjSearch', 'n4ObjRename', 'n4ObjOptions',\n            'n4ObjMove', 'n4ObjGetVal', 'n4ObjectProps', 'n4ObjectList', 'n4ObjectInfo', 'n4ObjDelete', 'n4NameConvert', 'n4MsgsEndAll',\n            'n4MsgsEnd', 'n4MemberSet', 'n4MemberGet', 'n4MemberDel', 'n4MapRoot', 'n4MapDir', 'n4MapDelete', 'n4Map', 'n4LogoutTree',\n            'n4Logout', 'n4Login', 'n4GetUserName', 'n4GetUserId', 'n4GetUser', 'n4GetNetAddr', 'n4GetMapped', 'n4GetContext',\n            'n4GetConnNum', 'n4FileUsers', 'n4FileTimeGet', 'n4FileAttrSet', 'n4FileAttrGet', 'n4DriveStatus', 'n4DrivePath', 'n4DirTimeGet',\n            'n4DirAttrSet', 'n4DirAttrGet', 'n4Detach', 'n4ChgPassword', 'n4CapturePrt', 'n4CaptureGet', 'n4CaptureEnd', 'n4Attach',\n            'n3Version', 'n3UserGroups', 'n3ServerList', 'n3ServerInfo', 'n3MsgsEndAll', 'n3MsgsEnd', 'n3MemberSet', 'n3MemberGet',\n            'n3MemberDel', 'n3Maproot', 'n3Mapdir', 'n3Mapdelete', 'n3Map', 'n3Logout', 'n3GetUserId', 'n3GetUser', 'n3GetNetAddr',\n            'n3GetMapped', 'n3GetConnNum', 'n3FileTimeGet', 'n3FileAttrSet', 'n3FileAttrGet', 'n3DriveStatus', 'n3DrivePath',\n            'n3DirTimeGet', 'n3DirAttrSet', 'n3DirAttrGet', 'n3Detach', 'n3ChgPassword', 'n3CapturePrt', 'n3CaptureGet',\n            'n3CaptureEnd', 'n3Attach', 'mVersion', 'mSyncMail', 'mSendMailEx', 'mSendMail', 'mrecvmail', 'mReadNextMsg', 'mLogOn',\n            'mLogOff', 'mFindNext', 'mError', 'mCompatible', 'kVerInfo', 'kStatusInfo', 'kSendText', 'kSendFile', 'kManageImap4',\n            'kInit', 'kGetMail', 'kExtra', 'kDest', 'kDeletePop3', 'iWriteDataBuf', 'iWriteData', 'iVersion', 'IUrlOpen', 'iUrlEncode',\n            'iUrlDecode', 'iReadDataBuf', 'iReadData', 'ipVersion', 'ipPing', 'iPing', 'ipHost2Addr', 'ipGetLastErr', 'ipGetAddress',\n            'iParseURL', 'ipAddr2Host', 'iOptionSet', 'iOptionGet', 'ImgWave', 'ImgVersion', 'ImgUnsharpMask', 'ImgThreshold', 'ImgSwirl',\n            'ImgSpread', 'ImgSolarize', 'ImgShear', 'ImgSharpen', 'ImgShade', 'ImgScale', 'ImgSample', 'ImgRotate', 'ImgResize',\n            'ImgReduceNoise', 'ImgRaise', 'ImgOilPaint', 'ImgNormalize', 'ImgNegate', 'ImgMotionBlur', 'ImgModulate', 'ImgMinify',\n            'ImgMedianFilter', 'ImgMagnify', 'ImgLevel', 'ImgIsValid', 'ImgIsPalette', 'ImgIsMono', 'ImgIsGray', 'ImgInfo', 'ImgImplode',\n            'ImgGetImageType', 'ImgGetColorCount', 'ImgGaussianBlur', 'ImgGamma', 'ImgFrame', 'ImgFlop', 'ImgFlip', 'ImgEqualize',\n            'ImgEnhance', 'ImgEmboss', 'ImgCrop', 'ImgConvert', 'ImgContrast', 'ImgCompare', 'ImgColorize', 'ImgChop', 'ImgCharcoal',\n            'ImgBorder', 'ImgBlur', 'ImgAddNoise', 'iLocFindNext', 'iLocFindInit', 'iHttpOpen', 'iHttpInit', 'iHttpHeaders', 'iHttpAccept',\n            'iHostConnect', 'iHost2Addr', 'iGetResponse', 'iGetLastError', 'iGetIEVer', 'iGetConStatEx', 'iGetConState', 'iFtpRename',\n            'iFtpPut', 'iFtpOpen', 'iFtpGet', 'iFtpFindNext', 'iFtpFindInit', 'iFtpDirRemove', 'iFtpDirMake', 'iFtpDirGet', 'iFtpDirChange',\n            'iFtpDialog', 'iFtpDelete', 'iFtpCmd', 'iErrorDialog', 'iDialItemize', 'iDialHangUp', 'iDial', 'iCookieSet', 'iCookieGet',\n            'iContentURL', 'iContentFile', 'iContentData', 'iClose', 'ibWrtf', 'ibWrt', 'ibWait', 'ibVersion', 'ibUnlock', 'ibTrg',\n            'ibTmo', 'ibStop', 'ibStatus', 'ibSta', 'ibSre', 'ibSic', 'ibSad', 'ibRsv', 'ibRsp', 'ibRsc', 'ibRpp', 'ibRdf', 'ibRd',\n            'ibPpc', 'ibPoke', 'ibPct', 'ibPad', 'ibOnl', 'ibMakeAddr', 'ibLock', 'ibLoc', 'ibLn', 'ibLines', 'ibIst', 'ibInit',\n            'ibGts', 'ibGetSad', 'ibGetPad', 'ibFind', 'ibEvent', 'ibErr', 'ibEot', 'ibEos', 'iBegin', 'ibDma', 'ibDev', 'ibConfig',\n            'ibCntl', 'ibCnt', 'ibCmda', 'ibCmd', 'ibClr', 'ibCac', 'ibBna', 'ibAsk', 'iAddr2Host', 'huge_Thousands', 'huge_Subtract',\n            'huge_SetOptions', 'huge_Multiply', 'huge_GetLastError', 'huge_ExtenderInfo', 'huge_Divide', 'huge_Decimal', 'huge_Add',\n            'httpStripHTML', 'httpRecvTextF', 'httpRecvText', 'httpRecvQuery', 'httpRecvQryF', 'httpRecvFile', 'httpGetServer',\n            'httpGetQuery', 'httpGetPath', 'httpGetFile', 'httpGetDir', 'httpGetAnchor', 'httpFullPath', 'httpFirewall', 'httpAuth',\n            'ftpRename', 'ftpQuote', 'ftpPut', 'ftpOpen', 'ftpList', 'ftpGet', 'ftpFirewall', 'ftpDelete', 'ftpClose', 'ftpChDir',\n            'FindRQS', 'FindLstn', 'EnvSetVar', 'EnvPathDel', 'EnvPathChk', 'EnvPathAdd', 'EnvListVars', 'EnvGetVar', 'EnvGetInfo',\n            'EnableRemote', 'EnableLocal', 'ehllapiWait', 'ehllapiVersion', 'ehllapiUninit', 'ehllapiStopKeyIntercept', 'ehllapiStopHostNotify',\n            'ehllapiStopCloseIntercept', 'ehllapiStartKeyIntercept', 'ehllapiStartHostNotify', 'ehllapiStartCloseIntercept',\n            'ehllapiSetWindowStatus', 'ehllapiSetSessionParams', 'ehllapiSetPSWindowName', 'ehllapiSetCursorLoc', 'ehllapiSendKey',\n            'ehllapiSendFile', 'ehllapiSearchPS', 'ehllapiSearchField', 'ehllapiRunProfile', 'ehllapiResetSystem', 'ehllapiReserve',\n            'ehllapiRelease', 'ehllapiReceiveFile', 'ehllapiQuerySystem', 'ehllapiQueryPSStatus', 'ehllapiQueryHostNotify',\n            'ehllapiQueryFieldAttr', 'ehllapiQueryCursorLoc', 'ehllapiQueryCloseIntercept', 'ehllapiPostInterceptStatus',\n            'ehllapiPause', 'ehllapiLastErrMsg', 'ehllapiInit', 'ehllapiGetWindowStatus', 'ehllapiGetPSHWND', 'ehllapiGetKey',\n            'ehllapiFindFieldPos', 'ehllapiFindFieldLen', 'ehllapiDisconnectPS', 'ehllapiCvtRCToPos', 'ehllapiCvtPosToRC',\n            'ehllapiCopyTextToPS', 'ehllapiCopyTextToField', 'ehllapiCopyTextFromPS', 'ehllapiCopyTextFromField', 'ehllapiCopyOIA',\n            'ehllapiConnectPS', 'dunItemize', 'dunDisconnect', 'dunConnectEx', 'dunConnect', 'dsTestParam', 'dsSIDtoHexStr', 'dsSetSecProp',\n            'dsSetProperty', 'dsSetPassword', 'dsSetObj', 'dsSetCredentX', 'dsSetCredent', 'dsRemFromGrp', 'dsRelSecObj', 'dsMoveObj',\n            'dsIsObject', 'dsIsMemberGrp', 'dsIsContainer', 'dsGetUsersGrps', 'dsGetSecProp', 'dsGetPropName', 'dsGetProperty',\n            'dsGetPrntPath', 'dsGetPrimGrp', 'dsGetMemGrp', 'dsGetInfo', 'dsGetClass', 'dsGetChldPath', 'dsFindPath', 'dsDeleteObj',\n            'dsCreatSecObj', 'dsCreateObj', 'dsCopySecObj', 'dsAddToGrp', 'dsAclRemAce', 'dsAclOrderAce', 'dsAclGetAces', 'dsAclAddAce',\n            'DevClearList', 'DevClear', 'dbTest', 'dbSwapColumns', 'dbSort', 'dbSetRecordField', 'dbSetOptions', 'dbSetErrorReporting',\n            'dbSetEntireRecord', 'dbSetDelimiter', 'dbSave', 'dbOpen', 'dbNameColumn', 'dbMakeNewItem', 'dbInsertColumn', 'dbGetVersion',\n            'dbGetSaveStatus', 'dbGetRecordField', 'dbGetRecordCount', 'dbGetNextItem', 'dbGetLastError', 'dbGetEntireRecord',\n            'dbGetColumnType', 'dbGetColumnNumber', 'dbGetColumnName', 'dbGetColumnCount', 'dbFindRecord', 'dbExist', 'dbEasterEgg',\n            'dbDeleteRecord', 'dbDeleteColumn', 'dbDebug', 'dbCookDatabases', 'dbClose', 'dbCloneRecord', 'dbBindCol', 'cWndState',\n            'cWndinfo', 'cWndGetWndSpecName', 'cWndGetWndSpec', 'cWndexist', 'cWndByWndSpecName', 'cWndByWndSpec', 'cWndbyseq',\n            'cWndbyname', 'cWndbyid', 'cWndbyclass', 'cWinIDConvert', 'cVersionInfo', 'cVendorId', 'cSetWndText', 'cSetUpDownPos',\n            'cSetTvItem', 'cSetTrackPos', 'cSetTabItem', 'cSetLvItem', 'cSetLbItemEx', 'cSetLbItem', 'cSetIpAddr', 'cSetFocus',\n            'cSetEditText', 'cSetDtpDate', 'cSetCbItem', 'cSetCalDate', 'cSendMessage', 'cRadioButton', 'cPostMessage', 'cPostButton',\n            'cMemStat', 'cGetWndCursor', 'cGetUpDownPos', 'cGetUpDownMin', 'cGetUpDownMax', 'cGetTVItem', 'cGetTrackPos', 'cGetTrackMin',\n            'cGetTrackMax', 'cGetTbText', 'cGetSbText', 'cGetLvText', 'cGetLvSelText', 'cGetLvFocText', 'cGetLvDdtText', 'cGetLvColText',\n            'cGetLbText', 'cGetLbSelText', 'cGetLbCount', 'cGetIpAddr', 'cGetInfo', 'cGetHrText', 'cGetFocus', 'cGetEditText', 'cGetDtpDate',\n            'cGetControlImageCRC', 'cGetCBText', 'cGetCbCount', 'cGetCalDate', 'cFindByName', 'cFindByClass', 'cEnablestate', 'cDblClickItem',\n            'cCpuSupt', 'cCpuSpeed', 'cCpuIdExt', 'cCpuId', 'cCpuFeat', 'cCpuBenchmark', 'cCloneCheck', 'cClickToolbar', 'cClickButton',\n            'cClearTvItem', 'cClearLvItem', 'cClearLbAll', 'cCheckbox', 'aVersion', 'aStatusbar', 'aShellFolder', 'aMsgTimeout', 'AllSPoll',\n            'aGetLastError', 'aFileRename', 'aFileMove', 'aFileDelete', 'aFileCopy'\n            ),\n        5 => array(\n            'wWordRight', 'wWordLeft', 'wWinTile', 'wWinRestore', 'wWinNext', 'wWinMinimize', 'wWinMaximize', 'wWinCloseAll', 'wWinClose',\n            'wWinCascade', 'wWinArricons', 'wViewOutput', 'wViewOptions', 'wViewHtml', 'wUpperCase', 'wUpline', 'wUndo', 'wTopOfFile', 'wToggleIns',\n            'wTab', 'wStatusMsg', 'wStartSel', 'wSpellcheck', 'wSetProject', 'wSetPrefs', 'wSetColblk', 'wSetBookmark', 'wSelWordRight',\n            'wSelWordLeft', 'wSelUp', 'wSelTop', 'wSelRight', 'wSelPgUp', 'wSelPgDn', 'wSelLeft', 'wSelInfo', 'wSelHome', 'wSelEnd', 'wSelectAll',\n            'wSelDown', 'wSelBottom', 'wRunRebuild', 'wRunMake', 'wRunExecute', 'wRunDebug', 'wRunConfig', 'wRunCompile', 'wRunCommand', 'wRight',\n            'wRepeat', 'wRedo', 'wRecord', 'wProperties', 'wPrintDirect', 'wPrinSetup', 'wPrevError', 'wPaste', 'wPageUp', 'wPageDown', 'wNextError',\n            'wNewLine', 'wLowerCase', 'wLineCount', 'wLeft', 'wInvertCase', 'wInsString', 'wInsLine', 'wHome', 'wHelpKeyword', 'wHelpKeybrd',\n            'wHelpIndex', 'wHelpHelp', 'wHelpCmds', 'wHelpAbout', 'wGotoLine', 'wGotoCol', 'wGetWrap', 'wGetWord', 'wGetUndo', 'wGetSelstate',\n            'wGetRedo', 'wGetOutput', 'wGetModified', 'wGetLineNo', 'wGetIns', 'wGetFilename', 'wGetColNo', 'wGetChar', 'wFtpOpen', 'wFindNext',\n            'wFindInFiles', 'wFind', 'wFileSaveAs', 'wFileSave', 'wFileRevert', 'wFilePrint', 'wFilePgSetup', 'wFileOpen', 'wFileNew', 'wFileMerge',\n            'wFileList', 'wFileExit', 'wEndSel', 'wEndOfFile', 'wEnd', 'wEdWrap', 'wEdWordRight', 'wEdWordLeft', 'wEdUpLine', 'wEdUndo', 'wEdTopOfFile',\n            'wEdToggleIns', 'wEdTab', 'wEdStartSel', 'wEdSetColBlk', 'wEdSelectAll', 'wEdRight', 'wEdRedo', 'wEdPaste', 'wEdPageUp', 'wEdPageDown',\n            'wEdNewLine', 'wEdLeft', 'wEdInsString', 'wEdHome', 'wEdGoToLine', 'wEdGoToCol', 'wEdGetWord', 'wEdEndSel', 'wEdEndOfFile', 'wEdEnd',\n            'wEdDownLine', 'wEdDelete', 'wEdCutLine', 'wEdCut', 'wEdCopyLine', 'wEdCopy', 'wEdClearSel', 'wEdBackTab', 'wEdBackspace', 'wDownLine',\n            'wDelete', 'wDelButton', 'wCutMarked', 'wCutLine', 'wCutAppend', 'wCut', 'wCopyMarked', 'wCopyLine', 'wCopyAppend', 'wCopy', 'wCompile',\n            'wClearSel', 'wChange', 'wCallMacro', 'wBackTab', 'wBackspace', 'wAutoIndent', 'wAddButton', 'edWindowTile', 'edWindowRestore',\n            'edWindowNext', 'edWindowMinimize', 'edWindowMaximize', 'edWindowCloseall', 'edWindowClose', 'edWindowCascade', 'edWindowArrangeIcons',\n            'edStatusMsg', 'edSearchViewOutput', 'edSearchRepeat', 'edSearchPrevError', 'edSearchNextError', 'edSearchFind', 'edSearchChange',\n            'edRunRebuild', 'edRunMake', 'edRunExecute', 'edRunDebug', 'edRunConfigure', 'edRunCompile', 'edRunCommand', 'edRecord', 'edHelpProcedures',\n            'edHelpKeyword', 'edHelpKeyboard', 'edHelpIndex', 'edHelpHelp', 'edHelpCommands', 'edHelpAbout', 'edGetWordWrapState', 'edGetWindowName',\n            'edGetUndoState', 'edGetSelectionState', 'edGetRedoState', 'edGetModifiedStatus', 'edGetLineNumber', 'edGetInsertState', 'edGetColumnNumber',\n            'edGetChar', 'edFileSetPreferences', 'edFileSaveAs', 'edFileSave', 'edFilePrinterSetup', 'edFilePrint', 'edFilePageSetup', 'edFileOpen',\n            'edFileNew', 'edFileMerge', 'edFileList', 'edFileExit', 'edEditWrap', 'edEditWordRight', 'edEditWordLeft', 'edEditUpLine', 'edEditUndo',\n            'edEditToggleIns', 'edEditTab', 'edEditStartSelection', 'edEditSetColumnBlock', 'edEditSetBookmark', 'edEditSelectAll', 'edEditRight',\n            'edEditRedo', 'edEditPaste', 'edEditPageUp', 'edEditPageDown', 'edEditLeft', 'edEditInsertString', 'edEditGoToLine', 'edEditGoToColumn',\n            'edEditGoToBookmark', 'edEditGetCurrentWord', 'edEditEndSelection', 'edEditEndOfLine', 'edEditEndOfFile', 'edEditDownline', 'edEditDelete',\n            'edEditCutline', 'edEditCut', 'edEditCopyline', 'edEditCopy', 'edEditClearSelection', 'edEditBeginningOfLine', 'edEditBeginningOfFile',\n            'edEditBackTab', 'edEditBackspace', 'edDeleteButton', 'edAddButton'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '{', '}', '!', '+', '-', '~', '$', '^', '?', '@', '%', '#', '&', '*', '|', '/', '<', '>'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false,\n        5 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #800080;',\n            2 => 'color: #0080FF; font-weight: bold;',\n            3 => 'color: #0000FF;',\n            4 => 'color: #FF00FF;',\n            5 => 'color: #008000;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #008000; font-style: italic;',\n            2 => 'color: #FF1010; font-weight: bold;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #006600;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => '',\n        5 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(//Variable names\n        0 => \"[\\\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*\"\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_MAYBE,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/wolfram.php",
    "content": "<?php\n/******************************************************************************\n * wolfram.php\n * ----------\n * Author: Mysterious Light (youngmysteriouslight@gmail.com)\n * Copyright: (c) 2018 Mysterious Light (youngmysteriouslight@gmail.com)\n * Release Version: 1.0.9.1\n * Date Started: 2018/01/12\n *\n * Wolfram language file for GeSHi.\n *\n ******************************************************************************\n *\n *   This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n *****************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Wolfram',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array('(*' => '*)'),\n    'COMMENT_REGEXP' => array(\n        2 => '/\\\\(\\\\*.*\\\\*\\\\)/',\n        3 => '/\\\\\\\\\\\\[\\\\w+]/'\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        /* main wolfram keywords */\n        1 => array(\n            'AbelianGroup', '$Aborted', 'AbortKernels', 'Abort', 'Abs', 'All',\n            'AbortProtect', 'AbsoluteCurrentValue', 'AbsoluteDashing', 'AddTo',\n            'AbsoluteFileName', 'AbsoluteOptions', 'AbsolutePointSize', 'And',\n            'AbsoluteThickness', 'AbsoluteTime', 'AbsoluteTiming', 'Accuracy',\n            'AccountingForm', 'Accumulate', 'AccuracyGoal', 'ActionMenu', 'C',\n            'Active', 'ActiveStyle', 'AcyclicGraphQ', 'AddOnHelpPath', 'Alias',\n            'AdjacencyGraph', 'AdjacencyMatrix', 'AdjustmentBox', 'AiryAi',\n            'AffineTransform', 'AiryAiPrime', 'AiryAiZero', 'AiryBi', 'AngerJ',\n            'AiryBiPrime', 'AiryBiZero', 'AlgebraicIntegerQ', 'AlgebraicRules',\n            'AlgebraicNumberDenominator', 'AlgebraicNumber', 'Algebraics', 'D',\n            'AlgebraicNumberNorm', 'AlgebraicNumberPolynomial', 'Alignment',\n            'AlgebraicNumberTrace', 'AlgebraicUnitQ', 'AlignmentPoint', 'Arg',\n            'AllowGroupClose', 'AllowInlineCells', 'AllowReverseGroupClose',\n            'AllowScriptLevelChange', 'AlphaChannel', 'AlternatingGroup', 'Do',\n            'AlternativeHypothesis', 'Alternatives', 'AmbientLight', 'Animate',\n            'AnchoredSearch', 'AndersonDarlingTest', 'AngleBracket', 'Annuity',\n            'AnimationCycleOffset', 'AnimationCycleRepetitions', 'Animator',\n            'AnimationDirection', 'AnimationDisplayTime', 'AnimationRate', 'E',\n            'AnimationRepetitions', 'AnimationRunning', 'Annotation', 'Apart',\n            'AnnuityDue', 'Antialiasing', 'ApartSquareFree', 'Appearance', 'I',\n            'AppearanceElements', 'AppellF1', 'Append', 'AppendTo', 'Apply',\n            'ArcCosh', 'ArcCos', 'ArcCoth', 'ArcCot', 'ArcCsch', 'ArcCsc', 'N',\n            'ArcSech', 'ArcSec', 'ArcSinDistribution', 'ArcSinh', 'ArcSin',\n            'ArcTanh', 'ArcTan', 'ArgMax', 'ArgMin', 'ArithmeticGeometricMean',\n            'ArrayComponents', 'ArrayDepth', 'ArrayFlatten', 'Array', 'ArrayQ',\n            'ArrayPad', 'ArrayPlot', 'ArrayRules', 'Arrowheads', 'Arrow', 'Dt',\n            'AspectRatioFixed', 'AspectRatio', '$AssertFunction', 'Assert',\n            'Assuming', '$Assumptions', 'Assumptions', 'AstronomicalData', 'O',\n            'Asynchronous', 'AtomQ', 'Attributes', 'AutoAction', 'AutoDelete',\n            'AugmentedSymmetricPolynomial', 'AutoGeneratedPackage', 'AxesEdge',\n            'AutoIndent', 'AutoItalicWords', 'AutoloadPath', 'Automatic', 'If',\n            'AutoMultiplicationSymbol', 'AutoOpenNotebooks', 'AutoScroll',\n            'AutoOpenPalettes', 'AutorunSequencing', 'AutoSpacing', 'Axes',\n            'AxesLabel', 'AxesOrigin', 'AxesStyle', 'Axis', 'Background', 'Im',\n            'BabyMonsterGroupB', 'Back', 'Backslash', 'Backward', 'Band', 'In',\n            'BarabasiAlbertGraphDistribution', 'BarChart3D', 'BarChart', 'Cap',\n            'BarnesG', 'BarOrigin', 'BarSpacing', '$BaseDirectory', 'BaseForm',\n            'Baseline', 'BaselinePosition', 'BaseStyle', '$BatchInput', 'Beep',\n            '$BatchOutput', 'BatesDistribution', 'BattleLemarieWavelet', 'CDF',\n            'Because', 'BeckmannDistribution', 'BeginDialogPacket', 'Begin',\n            'BeginPackage', 'BellB', 'BellY', 'BenfordDistribution', 'BesselI',\n            'BeniniDistribution', 'BenktanderGibratDistribution', 'BernoulliB',\n            'BenktanderWeibullDistribution', 'BernoulliDistribution', 'Beta',\n            'BernoulliGraphDistribution', 'BernsteinBasis', 'BesselJ', 'BitOr',\n            'BesselJZero', 'BesselK', 'BesselY', 'BesselYZero', 'BezierCurve',\n            'BetaBinomialDistribution', 'BetaDistribution', 'BetaRegularized',\n            'BetaNegativeBinomialDistribution', 'BetaPrimeDistribution', 'Cos',\n            'BetweennessCentrality', 'BezierFunction', 'BilateralFilter', 'On',\n            'Binarize', 'BinaryFormat', 'BinaryImageQ', 'BinaryReadList', 'Or',\n            'BinaryRead', 'BinaryWrite', 'BinCounts', 'BinLists', 'Binomial',\n            'BinomialDistribution', 'BinormalDistribution', 'BipartiteGraphQ',\n            'BiorthogonalSplineWavelet', 'BirnbaumSaundersDistribution', 'Cot',\n            'BitAnd', 'BitClear', 'BitGet', 'BitLength', 'BitNot', 'BitSet',\n            'BitShiftLeft', 'BitShiftRight', 'BitXor', 'Black', 'Blank', 'Csc',\n            'BlankNullSequence', 'BlankSequence', 'Blend', 'Block', 'Blue',\n            'BlockRandom', 'Blur', 'BodePlot', 'Bold', 'Bookmarks', 'Booleans',\n            'BooleanConvert', 'BooleanCountingFunction', 'BooleanFunction',\n            'BooleanGraph', 'BooleanMaxterms', 'BooleanMinimize', 'Boole',\n            'BooleanMinterms', 'BooleanTable', 'BooleanVariables', 'Bottom',\n            'BorderDimensions', 'BorelTannerDistribution', 'BoundaryStyle',\n            'BottomHatTransform', 'BoxBaselineShift', 'BoxData', 'Boxed', 'Pi',\n            'BoxFormFormatTypes', 'BoxFrame', 'BoxMargins', 'BoxMatrix', 'Cup',\n            'BoxRatios', 'BoxStyle', 'BoxWhiskerChart', 'BracketingBar', 'Del',\n            'BrayCurtisDistance', 'BreadthFirstScan', 'Break', 'Brown', 'Byte',\n            'BrownForsytheTest', 'BSplineBasis', 'BSplineCurve', 'BubbleChart',\n            'BSplineFunction', 'BSplineSurface', 'BubbleChart3D', 'ButtonBar',\n            'BubbleScale', 'BubbleSizes', 'ButterflyGraph', 'ButtonBox', 'Det',\n            'ButtonBoxOptions', 'ButtonData', 'ButtonEvaluator', 'ButtonFrame',\n            'ButtonExpandable', 'ButtonFunction', 'ButtonMargins', 'Button',\n            'ButtonMinHeight', 'ButtonNotebook', 'ButtonNote', 'ButtonSource',\n            'ButtonStyle', 'ByteCount', '$ByteOrdering', 'ByteOrdering', 'Dot',\n            'CallPacket', 'CanberraDistance', 'CancelButton', '$Canceled',\n            'Cancel', 'CandlestickChart', 'CapForm', 'CapitalDifferentialD',\n            'CarmichaelLambda', 'Cases', 'Cashflow', 'Casoratian', 'Catalan',\n            'CatalanNumber', 'Catch', 'CauchyDistribution', 'CayleyGraph',\n            'CDFWavelet', 'Ceiling', 'CellArray', 'CellAutoOverwrite', 'Cell',\n            'CellBaseline', 'CellBracketOptions', 'CellChangeTimes', 'Center',\n            'CellContext', 'CellDingbat', 'CellDynamicExpression', 'CellFrame',\n            'CellEditDuplicate', 'CellEpilog', 'CellEvaluationDuplicate', 'Re',\n            'CellEvaluationFunction', 'CellEventActions', 'CellFrameColor',\n            'CellFrameLabelMargins', 'CellFrameLabels', 'CellFrameMargins',\n            'CellGroupData', 'CellGrouping', 'CellGroupingRules', 'CellGroup',\n            'CellHorizontalScrolling', 'CellLabelAutoDelete', 'CellLabel',\n            'CellLabelMargins', 'CellLabelPositioning', 'CellMargins', 'CForm',\n            'CellOpen', 'CellPrint', 'CellProlog', 'CellSize', 'CellTags',\n            'CellularAutomaton', 'CensoredDistribution', 'Censoring', 'Check',\n            'CenterDot', 'CentralMomentGeneratingFunction', 'CentralMoment',\n            'ChampernowneNumber', 'ChanVeseBinarize', '$CharacterEncoding',\n            'CharacterEncoding', '$CharacterEncodings', 'Character', 'Chop',\n            'CharacterEncodingsPath', 'CharacteristicFunction', 'Characters',\n            'CharacteristicPolynomial', 'CharacterRange', 'ChartBaseStyle',\n            'ChartElementFunction', 'ChartElements', 'ChartLabels', 'Checkbox',\n            'ChartLayout', 'ChartLegends', 'ChartStyle', 'ChebyshevDistance',\n            'ChebyshevT', 'ChebyshevU', 'CheckAbort', 'CheckboxBar', 'Circle',\n            'ChemicalData', 'ChessboardDistance', 'ChiDistribution', 'Clear',\n            'ChineseRemainder', 'ChiSquareDistribution', 'ChoiceButtons', 'Tr',\n            'ChoiceDialog', 'CholeskyDecomposition', 'CircleDot', 'CirclePlus',\n            'CircleMinus', 'CircleTimes', 'CirculantGraph', 'CityData', 'Clip',\n            'ClearAll', 'ClearAttributes', 'ClearSystemCache', 'ClebschGordan',\n            'ClickPane', 'ClipFill', 'ClippingStyle', 'Clock', 'CloseKernels',\n            'Close', 'ClosenessCentrality', 'ClosingAutoSave', 'Closing',\n            'ClusteringComponents', 'CMYKColor', 'CoefficientArrays', 'Colon',\n            'CoefficientList', 'Coefficient', 'CoefficientRules', 'Collect',\n            'CoifletWavelet', 'ColorCombine', 'ColorConvert', 'ColorData',\n            'ColorDataFunction', 'ColorFunction', 'ColorFunctionScaling',\n            'Colorize', 'ColorNegate', 'ColorOutput', 'ColorQuantize', 'Cone',\n            'ColorRules', 'ColorSelectorSettings', 'ColorSeparate', 'Column',\n            'ColorSetter', 'ColorSlider', 'ColorSpace', 'ColumnAlignments',\n            'ColumnForm', 'ColumnLines', 'ColumnsEqual', 'ColumnSpacings',\n            'ColumnWidths', '$CommandLine', 'CommonDefaultFormatTypes', 'Cosh',\n            'CommonestFilter', 'Commonest', 'CompilationOptions', 'Compiled',\n            '$CompilationTarget', 'CompilationTarget', 'CompiledFunction',\n            'Compile', 'Complement', 'CompleteGraph', 'CompleteGraphQ', 'Coth',\n            'CompleteKaryTree', 'Complexes', 'ComplexExpand', 'Complex', 'End',\n            'ComplexInfinity', 'ComplexityFunction', 'ComponentMeasurements',\n            'ComposeList', 'Compose', 'ComposeSeries', 'Composition', 'Count',\n            'CompoundExpression', 'Compress', 'ConditionalExpression', 'Cross',\n            'Conditioned', 'Condition', 'ConfidenceLevel', 'ConfigurationPath',\n            '$ConfiguredKernels', 'Congruent', 'Conjugate', 'Conjunction',\n            'ConjugateTranspose', 'ConnectedComponents', 'ConnectedGraphQ',\n            'ConoverTest', 'ConstantArray', 'Constant', 'Constants', 'Context',\n            'ConstrainedMax', 'ConstrainedMin', 'ContentPadding', '$Context',\n            'ContentSelectable', 'ContentSize', '$ContextPath', 'Contexts',\n            'ContextToFileName', 'ContinuedFractionK', 'ContinuedFraction',\n            'Continue', 'ContinuousAction', 'ContinuousTimeModelQ', 'Contours',\n            'ContinuousWaveletData', 'ContinuousWaveletTransform', 'Control',\n            'ContourDetect', 'ContourGraphics', 'ContourLabels', 'ContourPlot',\n            'ContourLevels', 'ContourLines', 'ContourPlot3D', 'ContourShading',\n            'ContourSpacing', 'ContourStyle', 'ContraharmonicMean', 'Convolve',\n            'ControlActive', '$ControlActiveSetting', 'ControllabilityGramian',\n            'ControllabilityMatrix', 'ControllableDecomposition', 'CoprimeQ',\n            'ControllableModelQ', 'ControllerInformation', 'ControllerLinking',\n            'ControllerManipulate', 'ControllerMethod', 'ControllerPath',\n            'ControllerState', 'ControlPlacement', 'ControlsRendering', 'Csch',\n            'ControlType', 'Convergents', 'ConversionOptions', 'Coproduct',\n            'ConversionRules', 'ConwayGroupCo1', 'ConwayGroupCo2', 'Copyable',\n            'ConwayGroupCo3', 'CoordinatesToolOptions', 'CopulaDistribution',\n            'CopyDirectory', 'CopyFile', 'CopyToClipboard', 'CornerFilter',\n            'CornerNeighbors', 'CorrelationDistance', 'Correlation', 'Cubics',\n            'CoshIntegral', 'CosineDistance', 'CosIntegral', 'CounterFunction',\n            'CounterAssignments', 'CounterIncrements', 'CountRoots', 'Cuboid',\n            'CounterStyleMenuListing', 'CountryData', 'Covariance', 'Cumulant',\n            'CovarianceEstimatorFunction', 'CramerVonMisesTest', 'CrossMatrix',\n            'CreateArchive', 'CreateDialog', 'CreateDirectory', 'CreateWindow',\n            'CreateDocument', 'CreateIntermediateDirectories', 'CreatePalette',\n            'CreateScheduledTask', '$CreationDate', 'CriticalSection', 'Cyan',\n            'CrossingDetect', 'CumulantGeneratingFunction', 'CupCap', 'Cycles',\n            'CurrentImage', '$CurrentLink', 'CurrentValue', 'CurveClosed',\n            'CurvatureFlowFilter', 'CycleGraph', 'CyclicGroup', 'Cyclotomic',\n            'Cylinder', 'CylindricalDecomposition', 'DagumDistribution', 'Erf',\n            'DamerauLevenshteinDistance', 'Darker', 'Dashed', 'Dashing', 'Exp',\n            'DataDistribution', 'DataRange', 'DataReversed', 'DateDifference',\n            'DateFunction', 'DateListLogPlot', 'DateList', 'DateListPlot',\n            'Date', 'DatePattern', 'DatePlus', '$DateStringFormat', 'DawsonF',\n            'DateString', 'DateTicksFormat', 'DaubechiesWavelet', 'Debug',\n            'DavisDistribution', 'DeBruijnGraph', 'DeclarePackage', 'Default',\n            'Decompose', 'Decrement', 'DedekindEta', 'DefaultAxesStyle', 'Fit',\n            'DefaultBaseStyle', 'DefaultBoxStyle', 'DefaultButton', 'Defer',\n            'DefaultColor', 'DefaultDuplicateCellStyle', 'DefaultDuration',\n            'DefaultElement', 'DefaultFaceGridsStyle', 'DefaultFieldHintStyle',\n            '$DefaultFont', 'DefaultFont', 'DefaultFontProperties', 'Degree',\n            'DefaultFormatType', 'DefaultFrameStyle', 'DefaultFrameTicksStyle',\n            'DefaultGridLinesStyle', '$DefaultImagingDevice', 'DefaultOptions',\n            'DefaultInlineFormatType', 'DefaultLabelStyle', 'DefaultMenuStyle',\n            'DefaultNaturalLanguage', 'DefaultNewCellStyle', 'DefaultNotebook',\n            'DefaultNewInlineCellStyle', 'DefaultStyleDefinitions', 'Delete',\n            'DefaultTicksStyle', 'Definition', 'DegreeCentrality', 'Deletable',\n            'DegreeGraphDistribution', 'Deinitialization', 'DeleteCases',\n            'DeleteBorderComponents', 'DeleteContents', 'DeleteDirectory',\n            'DeleteDuplicates', 'DeleteFile', 'DeleteSmallComponents', 'Depth',\n            'DeletionWarning', 'DelimiterFlashTime', 'DelimiterMatching',\n            'Delimiter', 'Denominator', 'DensityGraphics', 'DensityHistogram',\n            'DensityPlot', 'DependentVariables', 'Deployed', 'Deploy', 'Disk',\n            'DepthFirstScan', 'DerivativeFilter', 'Derivative', 'DesignMatrix',\n            'DGaussianWavelet', 'DiacriticalPositioning', 'DiagonalMatrix',\n            'Diagonal', 'DialogInput', 'Dialog', 'DialogNotebook', 'Diamond',\n            'DialogProlog', 'DialogReturn', 'DialogSymbols', 'DiamondMatrix',\n            'DiceDissimilarity', 'DictionaryLookup', 'DifferenceDelta', 'Drop',\n            'DifferenceRoot', 'DifferenceRootReduce', 'Differences', 'DigitQ',\n            'DifferentialD', 'DifferentialRoot', 'DifferentialRootReduce',\n            'DigitBlock', 'DigitCharacter', 'DigitCount', 'DihedralGroup',\n            'Dilation', 'Dimensions', 'DiracComb', 'DiracDelta', 'Direction',\n            'DirectedEdge', 'DirectedEdges', 'DirectedGraph', 'DirectedGraphQ',\n            'DirectedInfinity', 'Directive', 'DirectoryName', 'Directory',\n            'DirectoryQ', 'DirectoryStack', 'DirichletCharacter', 'DirichletL',\n            'DirichletConvolve', 'DirichletDistribution', 'DirichletTransform',\n            'DiscreteConvolve', 'DiscreteDelta', 'DiscreteIndicator', 'Divide',\n            'DiscreteLQEstimatorGains', 'DiscreteLQRegulatorGains', 'Dispatch',\n            'DiscreteLyapunovSolve', 'DiscretePlot3D', 'DiscretePlot', 'Dump',\n            'DiscreteRatio', 'DiscreteRiccatiSolve', 'DiscreteShift', 'Dotted',\n            'DiscreteTimeModelQ', 'DiscreteUniformDistribution', 'Disjunction',\n            'DiscreteWaveletData', 'DiscreteWaveletPacketTransform', 'Display',\n            'DiscreteWaveletTransform', 'Discriminant', 'DiskMatrix', 'DSolve',\n            'DispersionEstimatorFunction', 'DisplayAllSteps', 'DisplayForm',\n            'DisplayEndPacket', '$DisplayFunction', 'DisplayFunction', '$Echo',\n            '$Display', 'DisplayPacket', 'DisplayString', 'DistanceFunction',\n            'DistanceTransform', '$DistributedContexts', 'DistributedContexts',\n            'DistributeDefinitions', 'Distributed', 'Distribute', 'Dithering',\n            'DistributionChart', 'DistributionFitTest', 'DivideBy', 'Dividers',\n            'DistributionParameterAssumptions', 'DistributionParameterQ',\n            'Divisible', 'DivisorSigma', 'Divisors', 'DivisorSum', 'DMSList',\n            'DMSString', 'DockedCells', 'DocumentNotebook', 'DotDashed', 'For',\n            'DotEqual', 'DoubleBracketingBar', 'DoubleDownArrow', 'DownArrow',\n            'DoubleLeftArrow', 'DoubleLeftRightArrow', 'DoubleLongLeftArrow',\n            'DoubleLongLeftRightArrow', 'DoubleLongRightArrow', 'DownArrowBar',\n            'DoubleRightArrow', 'DoubleUpArrow', 'DoubleUpDownArrow', 'EdgeQ',\n            'DoubleVerticalBar', 'DownArrowUpArrow', 'DownLeftRightVector',\n            'DownLeftTeeVector', 'DownLeftVectorBar', 'DownLeftVector', 'Erfc',\n            'DownRightTeeVector', 'DownRightVectorBar', 'DownRightVector',\n            'DownTeeArrow', 'DownValues', 'DragAndDrop', 'DSolveConstants',\n            'DualSystemsModel', 'DumpSave', '$DynamicEvaluation', 'Dynamic',\n            'DynamicEvaluationTimeout', 'DynamicModule', 'DynamicModuleValues',\n            'DynamicSetting', 'DynamicWrapper', 'EdgeAdd', 'EdgeCount', 'Erfi',\n            'EdgeCoverQ', 'EdgeDelete', 'EdgeDetect', 'EdgeForm', 'EdgeIndex',\n            'EdgeLabeling', 'EdgeLabels', 'EdgeLabelStyle', 'EdgeList', 'Exit',\n            'EdgeRenderingFunction', 'EdgeRules', 'EdgeShapeFunction', 'Equal',\n            'EdgeStyle', 'EdgeWeight', 'Editable', 'EditCellTagsSettings',\n            'EditDistance', 'EffectiveInterest', 'Eigensystem', 'Eigenvalues',\n            'EigenvectorCentrality', 'Eigenvectors', 'ElementData', 'Element',\n            'Eliminate', 'EllipticE', 'EllipticExp', 'EllipticExpPrime', 'GCD',\n            'EllipticF', 'EllipticK', 'EllipticLog', 'EllipticNomeQ', 'Encode',\n            'EllipticPi', 'EllipticTheta', 'EllipticThetaPrime', 'EmitSound',\n            'EmpiricalDistribution', 'EmptyGraphQ', 'Enabled', 'EndOfFile',\n            'EndDialogPacket', 'EndOfLine', 'EndOfString', 'EndPackage', 'Get',\n            'EngineeringForm', 'EnterExpressionPacket', 'EnterTextPacket',\n            'EntropyFilter', 'Entropy', 'Environment', '$Epilog', 'Epilog',\n            'EqualTilde', 'Equilibrium', 'Equivalent', 'ErlangDistribution',\n            'Erosion', 'ErrorBox', 'ErrorBoxOptions', 'EstimatedDistribution',\n            'EstimatorGains', 'EstimatorRegulator', 'EuclideanDistance', 'Hue',\n            'EulerE', 'EulerGamma', 'EulerianGraphQ', 'EulerPhi', 'Evaluate',\n            'Evaluatable', 'EvaluatePacket', 'EvaluationCompletionAction',\n            'EvaluationElements', 'EvaluationMonitor', 'EvaluationNotebook',\n            'EvaluationObject', 'EvaluatorNames', 'Evaluator', 'EvenQ', 'Find',\n            'EventHandler', 'EventLabels', 'ExactNumberQ', 'ExampleData',\n            'Except', 'ExcludedForms', 'ExcludePods', 'Exclusions', 'Exists',\n            'ExclusionsStyle', 'ExpandAll', 'ExpandDenominator', 'Expand',\n            'ExpandFileName', 'ExpandNumerator', 'Expectation', 'ExpIntegralE',\n            'ExpectedValue', 'ExpGammaDistribution', 'ExpIntegralEi', 'Export',\n            'ExponentFunction', 'ExponentialDistribution', 'ExponentialFamily',\n            'ExponentialGeneratingFunction', 'ExponentialMovingAverage', 'LCM',\n            'ExponentialPowerDistribution', 'Exponent', 'ExponentPosition',\n            'ExponentStep', 'ExportAutoReplacements', '$ExportFormats', 'Flat',\n            'ExportString', 'ExpressionCell', 'Expression', 'ExpToTrig', 'Log',\n            'ExtendedGCD', 'Extension', 'ExtentElementFunction', 'ExtentSize',\n            'ExtentMarkers', 'ExternalDataCharacterEncoding', 'ExtractArchive',\n            'Extract', 'ExtremeValueDistribution', 'FaceForm', 'FaceGrids',\n            'FaceGridsStyle', 'FactorComplete', 'Factorial2', 'Factorial',\n            'FactorialMomentGeneratingFunction', 'FactorialMoment', 'Factor',\n            'FactorialPower', 'FactorInteger', 'FactorList', 'FactorTermsList',\n            'FactorSquareFreeList', 'FactorSquareFree', 'FactorTerms', 'False',\n            '$Failed', 'FeedbackType', 'Fibonacci', 'FieldHint', 'FieldMasked',\n            'FieldHintStyle', 'FieldSize', 'FileBaseName', 'FileByteCount',\n            'FileDate', 'FileExistsQ', 'FileExtension', 'FileFormat', 'First',\n            'FileHash', 'FileNameDepth', 'FileNameDialogSettings', 'FileNames',\n            'FileNameDrop', 'FileNameJoin', 'FileNameSetter', 'FileNameSplit',\n            'FileNameTake', 'FilePrint', 'FileType', 'FilledCurve', 'Filling',\n            'FillingStyle', 'FillingTransform', 'FilterRules', 'FinancialBond',\n            'FinancialData', 'FinancialDerivative', 'FinancialIndicator',\n            'FindArgMax', 'FindArgMin', 'FindClique', 'FindClusters', 'Floor',\n            'FindCurvePath', 'FindDistributionParameters', 'FindDivisions',\n            'FindEdgeCover', 'FindEulerianCycle', 'FindFile', 'FindFit', 'Map',\n            'FindGeneratingFunction', 'FindGeoLocation', 'FindInstance', 'Max',\n            'FindGeometricTransform', 'FindGraphIsomorphism', 'FindLibrary',\n            'FindHamiltonianCycle', 'FindIndependentEdgeSet', 'FindList',\n            'FindIndependentVertexSet', 'FindIntegerNullVector', 'FindMaximum',\n            'FindLinearRecurrence', 'FindMaxValue', 'FindMinimum', 'FindRoot',\n            'FindMinValue', 'FindPermutation', 'FindSequenceFunction', 'Fold',\n            'FindSettings', 'FindShortestPath', 'FindShortestTour', 'Flatten',\n            'FindThreshold', 'FindVertexCover', 'FinishDynamic', 'FittedModel',\n            'FiniteAbelianGroupCount', 'FiniteGroupCount', 'FiniteGroupData',\n            'FischerGroupFi22', 'FischerGroupFi23', 'FischerGroupFi24Prime',\n            'FisherHypergeometricDistribution', 'FisherRatioTest', 'FlattenAt',\n            'FisherZDistribution', 'FixedPointList', 'FixedPoint', 'FlipView',\n            'FoldList', 'FontColor', 'FontFamily', 'FontForm', 'FontSize',\n            'FontProperties', 'FontSlant', 'FontSubstitutions', 'FontTracking',\n            'FontVariations', 'FontWeight', 'ForAll', 'Format', '$FormatType',\n            'FormatTypeAutoConvert', 'FormatType', 'FormBox', 'FormBoxOptions',\n            'FortranForm', 'ForwardBackward', 'Forward', 'FourierCoefficient',\n            'FourierCosCoefficient', 'FourierCosSeries', 'FourierCosTransform',\n            'FourierDCT', 'FourierDST', 'Fourier', 'FourierParameters', 'Full',\n            'FourierSequenceTransform', 'FourierSeries', 'FourierSinSeries',\n            'FourierSinCoefficient', 'FourierSinTransform', 'FourierTransform',\n            'FourierTrigSeries', 'FractionalPart', 'FractionBox', 'FrameBox',\n            'FractionBoxOptions', 'FractionLine', 'FrameBoxOptions', 'Framed',\n            'FrameLabel', 'FrameMargins', 'Frame', 'FrameStyle', 'FrameTicks',\n            'FrameTicksStyle', 'FRatioDistribution', 'FrechetDistribution',\n            'FreeQ', 'FresnelC', 'FresnelS', 'FrobeniusNumber', 'FromASCII',\n            'FrobeniusSolve', 'FromCharacterCode', 'FromCoefficientRules',\n            'FromContinuedFraction', 'FromDate', 'FromDigits', 'FromDMS',\n            'FrontEndDynamicExpression', 'FrontEndEventActions', '$FrontEnd',\n            'FrontEndExecute', '$FrontEndSession', 'FrontEndStackSize', 'Glow',\n            'FrontEndTokenExecute', 'FrontEndToken', 'Front', 'FullDefinition',\n            'FullForm', 'FullGraphics', 'FullOptions', 'FullSimplify', 'Gamma',\n            'FunctionExpand', 'FunctionInterpolation', 'Function', 'GatherBy',\n            'FunctionSpace', 'GaborWavelet', 'GainMargins', 'GainPhaseMargins',\n            'GammaDistribution', 'GammaRegularized', 'GapPenalty', 'Gather',\n            'GaussianFilter', 'GaussianIntegers', 'GaussianMatrix', 'General',\n            'GegenbauerC', 'GeneralizedLinearModelFit', 'GenerateConditions',\n            'GeneratedCell', 'GeneratedParameters', 'GeneratingFunction',\n            'GenericCylindricalDecomposition', 'GenomeData', 'GenomeLookup',\n            'GeodesicDilation', 'GeodesicErosion', 'GeoDestination', 'Goto',\n            'GeodesyData', 'GeoDirection', 'GeoDistance', 'GeoGridPosition',\n            '$GeoLocation', 'GeometricDistribution', 'GeometricMeanFilter',\n            'GeometricMean', 'GeometricTransformation', 'GeoPositionENU',\n            'GeoPosition', 'GeoPositionXYZ', 'GeoProjectionData', 'Glaisher',\n            'GoldenRatio', 'GompertzMakehamDistribution', 'GradientFilter',\n            'Gradient', 'GraphCenter', 'GraphComplement', 'GraphData', 'Graph',\n            'GraphDiameter', 'GraphDifference', 'GraphDisjointUnion', 'GraphQ',\n            'GraphDistanceMatrix', 'GraphDistance', 'GraphHighlight', 'Gray',\n            'GraphHighlightStyle', 'Graphics3D', 'GraphicsArray', 'Graphics',\n            'GraphicsColumn', 'GraphicsComplex', 'GraphicsGrid', 'GraphicsRow',\n            'GraphicsGroup', 'GraphicsSpacing', 'GraphIntersection', 'Greater',\n            'GraphLayout', 'GraphPeriphery', 'GraphPlot3D', 'GraphPlot', 'Min',\n            'GraphPower', 'GraphRadius', 'GraphStyle', 'GraphUnion', 'Green',\n            'GrayLevel', 'GreaterEqualLess', 'GreaterEqual', 'GreaterGreater',\n            'GreaterFullEqual', 'GreaterLess', 'GreaterSlantEqual', 'GridBox',\n            'GreaterTilde', 'GridBaseline', 'GridCreationSettings', 'Grid',\n            'GridDefaultElement', 'GridFrameMargins', 'GridFrame', 'GridGraph',\n            'GridLines', 'GridLinesStyle', 'GroebnerBasis', 'GroupActionBase',\n            'GroupCentralizer', 'GroupElementPosition', 'GroupElementQ', 'Mod',\n            'GroupElements', 'GroupGenerators', 'GroupMultiplicationTable',\n            'GroupOrbits', 'GroupOrder', 'GroupPageBreakWithin', 'HaarWavelet',\n            'GroupSetwiseStabilizer', 'GroupStabilizerChain', 'Gudermannian',\n            'GroupStabilizer', 'GumbelDistribution', 'HalfNormalDistribution',\n            'HamiltonianGraphQ', 'HammingDistance', 'HankelH1', 'HankelH2',\n            'HankelMatrix', 'HaradaNortonGroupHN', 'HararyGraph', 'Hash',\n            'HarmonicMeanFilter', 'HarmonicMean', 'HarmonicNumber', 'Head',\n            'Haversine', 'HazardFunction', 'Heads', 'HeavisideLambda', 'Hold',\n            'HeavisidePi', 'HeavisideTheta', 'HeldGroupHe', 'HeldPart', 'Item',\n            'HelpBrowserSettings', 'HermiteDecomposition', 'HermiteH', 'Image',\n            'HermitianMatrixQ', 'HessenbergDecomposition', 'HiddenSurface',\n            'HexadecimalCharacter', 'HighlightGraph', 'HigmanSimsGroupHS',\n            'HilbertMatrix', 'Histogram3D', 'HistogramDistribution', 'HoldAll',\n            'HistogramList', 'Histogram', '$HistoryLength', 'HitMissTransform',\n            'HITSCentrality', 'HoldAllComplete', 'HoldComplete', 'HoldFirst',\n            'HoldForm', 'HoldPattern', 'HoldRest', '$HomeDirectory', 'ImageQ',\n            'HomeDirectory', 'HornerForm', 'HotellingTSquareDistribution',\n            'HoytDistribution', 'HTMLSave', 'HumpDownHump', 'HumpEqual', 'Nor',\n            'HurwitzLerchPhi', 'HurwitzZeta', 'HyperbolicDistribution', 'Join',\n            'HypercubeGraph', 'Hyperfactorial', 'Hypergeometric0F1', 'Implies',\n            'Hypergeometric0F1Regularized', 'Hypergeometric1F1', 'Hyperlink',\n            'Hypergeometric1F1Regularized', 'Hypergeometric2F1', 'Hyphenation',\n            'Hypergeometric2F1Regularized', 'HypergeometricDistribution',\n            'HypergeometricPFQ', 'HypergeometricPFQRegularized', 'Identity',\n            'HypergeometricU', 'HypothesisTestData', 'IdentityMatrix', 'Infix',\n            'IgnoreCase', '$IgnoreEOF', 'ImageAdd', 'ImageAdjust', 'ImageClip',\n            'ImageAlign', 'ImageApply', 'ImageAspectRatio', 'ImageAssemble',\n            'ImageCapture', 'ImageChannels', 'ImageColorSpace', 'ImageCompose',\n            'ImageConvolve', 'ImageCooccurrence', 'ImageCorrelate', 'ImagePad',\n            'ImageCorrespondingPoints', 'ImageCrop', 'ImageData', 'ImageLines',\n            'ImageDeconvolve', 'ImageDifference', 'ImageDimensions', 'Import',\n            'ImageEffect', 'ImageFilter', 'ImageForestingComponents', 'Inner',\n            'ImageForwardTransformation', 'ImageHistogram', 'ImageKeypoints',\n            'ImageLevels', 'ImageMargins', 'ImageMultiply', 'ImagePadding',\n            'ImagePartition', 'ImagePerspectiveTransformation', 'ImageReflect',\n            'ImageRegion', 'ImageResize', 'ImageResolution', 'ImageRotated',\n            'ImageRotate', 'ImageScaled', 'ImageSizeAction', 'ImageSize',\n            'ImageSizeMultipliers', 'ImageSubtract', 'ImageTake', 'ImageTrim',\n            'ImageTransformation', 'ImageType', 'ImageValue', '$ImportFormats',\n            '$ImagingDevices', 'ImportAutoReplacements', 'ImportString', 'Not',\n            'IncidenceGraph', 'IncidenceMatrix', 'IncludeConstantBasis', 'Off',\n            'IncludeFileExtension', 'IncludePods', 'Increment', 'IndexGraph',\n            'IndependentEdgeSetQ', 'IndependentVertexSetQ', 'Indeterminate',\n            'InexactNumberQ', 'Infinity', 'Information', 'Inherited', '$Input',\n            '$InitialDirectory', 'InitializationCellEvaluation', 'Inpaint',\n            'InitializationCell', 'InitializationCellWarning', 'InputAliases',\n            'InitializationGroup', 'Initialization', 'InputAssumptions', 'Out',\n            'InputAutoReplacements', 'InputField', '$InputFileName', 'Input',\n            'InputForm', 'InputNamePacket', 'InputNotebook', 'InputPacket',\n            'InputStream', 'InputString', 'InputStringPacket', 'Insert', 'PDF',\n            'InsertResults', 'Inset', '$Inspector', '$InstallationDate', 'Put',\n            '$InstallationDirectory', 'Install', 'InstallService', 'InString',\n            'IntegerDigits', 'IntegerExponent', 'IntegerLength', 'Integer',\n            'IntegerPartitions', 'IntegerPart', 'IntegerQ', 'Integers', 'Last',\n            'IntegerString', 'Integrate', 'InteractiveTradingChart', 'Inverse',\n            'Interleaving', 'InternallyBalancedDecomposition', 'Interpolation',\n            'InterpolatingFunction', 'InterpolatingPolynomial', 'Interrupt',\n            'InterpolationOrder', 'InterpolationPoints', 'InterpretationBox',\n            'InterpretationBoxOptions', 'Interpretation', 'InterquartileRange',\n            'Intersection', 'IntervalIntersection', 'IntervalMemberQ', 'Label',\n            'Interval', 'IntervalUnion', 'InverseBetaRegularized', 'Invisible',\n            'InverseCDF', 'InverseChiSquareDistribution', 'InverseErfc', 'Raw',\n            'InverseContinuousWaveletTransform', 'InverseDistanceTransform',\n            'InverseEllipticNomeQ', 'InverseErf', 'InverseFourierCosTransform',\n            'InverseFourier', 'InverseFourierSequenceTransform', 'IsotopeData',\n            'InverseFourierSinTransform', 'InverseFourierTransform', 'Italic',\n            'InverseFunction', 'InverseFunctions', 'InverseGammaDistribution',\n            'InverseGammaRegularized', 'InverseGaussianDistribution', 'Joined',\n            'InverseGudermannian', 'InverseHaversine', 'InverseJacobiCD',\n            'InverseJacobiCN', 'InverseJacobiCS', 'InverseJacobiDC', 'JacobiP',\n            'InverseJacobiDN', 'InverseJacobiDS', 'InverseJacobiNC', 'Kernels',\n            'InverseJacobiND', 'InverseJacobiNS', 'InverseJacobiSC', 'Labeled',\n            'InverseJacobiSD', 'InverseJacobiSN', 'InverseLaplaceTransform',\n            'InversePermutation', 'InverseRadon', 'InverseSeries', 'ItemSize',\n            'InverseSurvivalFunction', 'InverseWaveletTransform', 'ItemStyle',\n            'InverseWeierstrassP', 'InverseZTransform', 'IsolatingInterval',\n            'IrreduciblePolynomialQ', 'IsomorphicGraphQ', 'ItemAspectRatio',\n            '$IterationLimit', 'JaccardDissimilarity', 'JacobiAmplitude',\n            'JacobiCD', 'JacobiCN', 'JacobiCS', 'JacobiDC', 'JacobiDN', 'Left',\n            'JacobiDS', 'JacobiNC', 'JacobiND', 'JacobiNS', 'JacobiSC', 'Less',\n            'JacobiSD', 'JacobiSN', 'JacobiSymbol', 'JacobiZeta', 'JoinForm',\n            'JankoGroupJ1', 'JankoGroupJ2', 'JankoGroupJ3', 'JankoGroupJ4',\n            'JarqueBeraALMTest', 'JohnsonDistribution', 'JoinedCurve', 'Large',\n            'JordanDecomposition', 'JordanModelDecomposition', 'KagiChart',\n            'KalmanEstimator', 'KarhunenLoeveDecomposition', 'KaryTree', 'Red',\n            'KatzCentrality', 'KCoreComponents', 'KDistribution', 'KelvinBei',\n            'KelvinBer', 'KelvinKei', 'KelvinKer', '$KernelCount', '$KernelID',\n            'KernelMixtureDistribution', 'KernelObject', 'Khinchin', 'Larger',\n            'KirchhoffGraph', 'KirchhoffMatrix', 'KleinInvariantJ', 'KnotData',\n            'KnightTourGraph', 'KolmogorovSmirnovTest', 'KroneckerDelta',\n            'KroneckerProduct', 'KroneckerSymbol', 'KuiperTest', 'Kurtosis',\n            'KumaraswamyDistribution', 'KuwaharaFilter', 'LabelingFunction',\n            'LabelStyle', 'LaguerreL', 'LandauDistribution', '$Language',\n            'LanguageCategory', 'Language', 'LaplaceDistribution', 'Latitude',\n            'LaplaceTransform', 'LaplacianFilter', 'LaplacianGaussianFilter',\n            'LatitudeLongitude', 'LatticeData', 'LatticeReduce', 'LeafCount',\n            'LaunchKernels', 'LayeredGraphPlot', 'LayerSizeFunction', 'Length',\n            'LeastSquares', 'LeftArrowBar', 'LeftArrow', 'LeftArrowRightArrow',\n            'LeftDownTeeVector', 'LeftDownVectorBar', 'LeftDownVector', 'Line',\n            'LeftRightArrow', 'LeftRightVector', 'LeftTeeArrow', 'LeftVector',\n            'LeftTeeVector', 'LeftTriangleBar', 'LeftTriangleEqual', 'LetterQ',\n            'LeftTriangle', 'LeftUpDownVector', 'LeftUpTeeVector', 'Legended',\n            'LeftUpVectorBar', 'LeftUpVector', 'LeftVectorBar', 'LegendreP',\n            'LegendAppearance', 'LegendreQ', 'LegendreType', 'LengthWhile',\n            'LerchPhi', 'LessEqualGreater', 'LessEqual', 'LessFullEqual',\n            'LessGreater', 'LessLess', 'LessSlantEqual', 'LessTilde', 'Level',\n            'LetterCharacter', 'LeveneTest', 'LeviCivitaTensor', 'LibraryLoad',\n            'LevyDistribution', 'LibraryFunctionError', 'LibraryFunctionLoad',\n            'LibraryFunctionInformation', 'LibraryFunction', '$LibraryPath',\n            'LibraryFunctionUnload', 'LibraryUnload', '$LicenseExpirationDate',\n            '$LicenseID', '$LicenseServer', 'LiftingFilterData', 'LightBlue',\n            'LiftingWaveletTransform', 'LightBrown', 'LightCyan', 'Lighter',\n            'LightGray', 'LightGreen', 'LightingAngle', 'Lighting', 'LightRed',\n            'LightMagenta', 'LightOrange', 'LightPink', 'LightPurple', 'Limit',\n            'LightSources', 'LightYellow', 'Likelihood', 'LimitsPositioning',\n            'LimitsPositioningTokens', 'LindleyDistribution', 'LinearModelFit',\n            'LinearFractionalTransform', 'LinearOffsetFunction', 'LinearSolve',\n            'LinearProgramming', 'LinearRecurrence', 'LinearSolveFunction',\n            'LinebreakAdjustments', 'LineBreakChart', 'LineBreakWithin', 'Row',\n            'LineGraph', 'LineIndentMaxFraction', 'LineIndent', '$Line', 'Run',\n            'LineIntegralConvolutionPlot', 'LineIntegralConvolutionScale',\n            'LineSpacing', 'LinkClose', 'LinkConnect', 'LinkCreate', '$Linked',\n            'LinkFunction', 'LinkInterrupt', 'LinkLaunch', 'LinkObject', 'Sec',\n            'LinkOpen', 'LinkPatterns', 'LinkProtocol', 'LinkRead', 'Links',\n            'LinkReadyQ', 'LinkWrite', 'LiouvilleLambda', 'Listable', 'List',\n            'ListAnimate', 'ListContourPlot3D', 'ListContourPlot', 'ListPlay',\n            'ListConvolve', 'ListCorrelate', 'ListCurvePathPlot', 'ListPlot3D',\n            'ListDeconvolve', 'ListDensityPlot', 'ListInterpolation', 'Locked',\n            'ListLineIntegralConvolutionPlot', 'ListLinePlot', 'ListLogPlot',\n            'ListLogLinearPlot', 'ListLogLogPlot', 'ListPlot', 'ListPolarPlot',\n            'ListPointPlot3D', 'ListStreamDensityPlot', 'ListStreamPlot',\n            'ListSurfacePlot3D', 'ListVectorDensityPlot', 'ListVectorPlot3D',\n            'ListVectorPlot', 'Literal', 'LocalizeVariables', 'LocationTest',\n            'LocationEquivalenceTest', 'LocatorAutoCreate', 'Locator', 'Log10',\n            'LocatorPane', 'LocatorRegion', 'Log2', 'LogBarnesG', 'LogGamma',\n            'LogGammaDistribution', 'LogicalExpand', 'LogIntegral', 'LogPlot',\n            'LogisticDistribution', 'LogitModelFit', 'LogLikelihood', 'LucasL',\n            'LogLinearPlot', 'LogLogisticDistribution', 'LogLogPlot', 'Manual',\n            'LogNormalDistribution', 'LogSeriesDistribution', 'LongestMatch',\n            'LongestCommonSequence', 'LongestCommonSubsequence', 'Longest',\n            'Longitude', 'LongLeftArrow', 'LongLeftRightArrow', 'LowerCaseQ',\n            'LongRightArrow', 'LoopFreeGraphQ', 'LowerLeftArrow', '$MachineID',\n            'LowerRightArrow', 'LowerTriangularize', 'LQEstimatorGains', 'Set',\n            'LQGRegulator', 'LQOutputRegulatorGains', 'LQRegulatorGains',\n            'LUBackSubstitution', 'LUDecomposition', 'LyapunovSolve', 'MapAll',\n            'LyonsGroupLy', '$MachineAddresses', '$MachineDomain', 'Magenta',\n            '$MachineDomains', '$MachineEpsilon', '$MachineName', 'Magnify',\n            'MachineNumberQ', '$MachinePrecision', 'MachinePrecision', 'MapAt',\n            '$MachineType', 'Magnification', 'Majority', 'MakeBoxes', 'MatchQ',\n            'MakeExpression', 'MangoldtLambda', 'ManhattanDistance', 'MarcumQ',\n            'Manipulate', 'Manipulator', 'MannWhitneyTest', 'MantissaExponent',\n            'MapIndexed', 'MapThread', 'MardiaCombinedTest', 'Masking', 'Mean',\n            'MardiaKurtosisTest', 'MardiaSkewnessTest', 'MarginalDistribution',\n            'MatchingDissimilarity', 'MatchLocalNames', 'MathieuC', 'MathieuS',\n            'MathieuCharacteristicA', 'MathieuCharacteristicB', 'MathMLForm',\n            'MathieuCharacteristicExponent', 'MathieuCPrime', 'MathieuSPrime',\n            'MathieuGroupM11', 'MathieuGroupM12', 'MathieuGroupM22', 'MatrixQ',\n            'MathieuGroupM23', 'MathieuGroupM24', 'MatrixExp', 'MatrixForm',\n            'MatrixPlot', 'MatrixPower', 'MatrixRank', 'MaxDetect', 'Maximize',\n            'MaxExtraBandwidths', 'MaxExtraConditions', '$MaxExtraPrecision',\n            'MaxFilter', 'MaxIterations', '$MaxMachineNumber', 'MaxMemoryUsed',\n            'MaxMixtureKernels', '$MaxNumber', '$MaxPiecewiseCases', '$$Media',\n            'MaxPlotPoints', '$MaxPrecision', 'MaxRecursion', '$MaxRootDegree',\n            'MaxStableDistribution', 'MaxStepFraction', 'MaxStepSize', 'Mesh',\n            'MaxSteps', 'MaxValue', 'MaxwellDistribution', 'MeanDeviation',\n            'McLaughlinGroupMcL', 'MeanFilter', 'MeanShiftFilter', 'MeanShift',\n            'MedianDeviation', 'MedianFilter', 'Median', 'Medium', 'MeijerG',\n            'MemberQ', 'MemoryConstrained', 'MemoryInUse', 'MenuCommandKey',\n            'MenuPacket', 'MenuSortingValue', 'MenuStyle', 'MenuView', 'Minus',\n            'MeshFunctions', 'MeshRange', 'MeshShading', 'MeshStyle', 'Method',\n            'MessageDialog', '$MessageGroups', '$MessageList', 'MessageList',\n            'MessageName', 'Message', 'MessagePacket', '$MessagePrePrint',\n            '$Messages', 'Messages', 'MexicanHatWavelet', 'MeyerWavelet',\n            'MinDetect', 'MinFilter', 'MinimalPolynomial', 'Minimize', 'Modal',\n            'MinimalStateSpaceModel', '$MinMachineNumber', '$MinNumber', 'Sin',\n            'Minors', '$MinPrecision', 'MinStableDistribution', 'MinusPlus',\n            'MinValue', 'Missing', 'MixtureDistribution', 'ModularLambda',\n            'Module', '$ModuleNumber', 'Modulus', 'MoebiusMu', 'MomentConvert',\n            'MomentEvaluate', 'MomentGeneratingFunction', 'Moment', 'Monitor',\n            'MonomialList', 'MonsterGroupM', 'MorletWavelet', 'Most', 'NameQ',\n            'MorphologicalBinarize', 'MorphologicalBranchPoints', 'Mouseover',\n            'MorphologicalComponents', 'MorphologicalEulerNumber', 'Names',\n            'MorphologicalGraph', 'MorphologicalPerimeter', 'MouseAnnotation',\n            'MorphologicalTransform', 'MouseAppearance', 'MousePosition',\n            'MovingAverage', 'MovingMedian', 'MoyalDistribution', 'Nand',\n            'MultiedgeStyle', 'MultilaunchWarning', 'MultilineFunction', 'Sow',\n            'MultinomialDistribution', 'Multinomial', 'MultiplicativeOrder',\n            'MultinormalDistribution', 'MultivariatePoissonDistribution',\n            'MultivariateHypergeometricDistribution', 'NakagamiDistribution',\n            'MultivariateTDistribution', 'NArgMax', 'NArgMin', 'NCache', 'Sum',\n            'NDSolve', 'NearestFunction', 'Nearest', 'Needs', 'Negative',\n            'NeedlemanWunschSimilarity', 'NegativeBinomialDistribution', 'Tan',\n            'NegativeMultinomialDistribution', 'NeighborhoodGraph', 'NestList',\n            'NestedGreaterGreater', 'NestedLessLess', 'Nest', 'NestWhileList',\n            'NestWhile', 'NevilleThetaC', 'NevilleThetaD', 'NevilleThetaN',\n            'NevilleThetaS', '$NewMessage', '$NewSymbol', 'NExpectation',\n            'NextPrime', 'NHoldAll', 'NHoldFirst', 'NHoldRest', 'NicholsPlot',\n            'NicholsGridLines', 'NIntegrate', 'NMaximize', 'NMaxValue', 'None',\n            'NMinimize', 'NMinValue', 'NominalVariables', 'NonConstants',\n            'NoncentralBetaDistribution', 'NoncentralChiSquareDistribution',\n            'NoncentralFRatioDistribution', 'NoncentralStudentTDistribution',\n            'NonCommutativeMultiply', 'NonlinearModelFit', 'NonNegative',\n            'NonPositive', 'NorlundB', 'NormalDistribution', 'Normalize',\n            'NormalizedSquaredEuclideanDistance', 'Normal', 'NormalsFunction',\n            'NormFunction', 'Norm', 'NotCongruent', 'NotCupCap', 'NotebookGet',\n            'NotDoubleVerticalBar', 'NotebookApply', 'NotebookAutoSave', 'Top',\n            'NotebookBrowseDirectory', 'NotebookClose', 'NotebookCreate',\n            'NotebookConvertSettings', 'NotebookDelete', 'NotebookDirectory',\n            'NotebookDynamicExpression', 'NotebookEvaluate', 'NotebookFind',\n            'NotebookEventActions', 'NotebookFileName', 'NotebookInformation',\n            'NotebookLocate', 'Notebook', 'NotebookObject', 'NotebookOpen',\n            'NotebookPath', 'NotebookPrint', 'NotebookPut', 'NotebookRead',\n            'NotebookSave', 'NotebookSelection', 'NotebooksMenu', '$Notebooks',\n            'Notebooks', 'NotebookWrite', 'NotElement', 'NotEqualTilde', 'Vee',\n            'NotExists', 'NotGreaterEqual', 'NotGreaterFullEqual', 'NotLess',\n            'NotGreaterGreater', 'NotGreaterLess', 'NotGreater', 'NotLessLess',\n            'NotGreaterSlantEqual', 'NotGreaterTilde', 'NotHumpDownHump',\n            'NotHumpEqual', 'NotLeftTriangleBar', 'NotLeftTriangleEqual',\n            'NotLeftTriangle', 'NotLessEqual', 'NotLessFullEqual', 'NotSubset',\n            'NotLessGreater', 'NotLessSlantEqual', 'NotLessTilde', 'NotTilde',\n            'NotNestedGreaterGreater', 'NotNestedLessLess', 'NotPrecedesEqual',\n            'NotPrecedes', 'NotPrecedesSlantEqual', 'NotPrecedesTilde', 'NSum',\n            'NotReverseElement', 'NotRightTriangleBar', 'NotRightTriangle',\n            'NotRightTriangleEqual', 'NotSquareSubsetEqual', 'NotSquareSubset',\n            'NotSquareSupersetEqual', 'NotSquareSuperset', 'NotSubsetEqual',\n            'NotSucceedsEqual', 'NotSucceeds', 'NotSucceedsSlantEqual', 'Null',\n            'NotSucceedsTilde', 'NotSupersetEqual', 'NotSuperset', 'NProduct',\n            'NotTildeEqual', 'NotTildeFullEqual', 'NotTildeTilde', 'NRoots',\n            'NotVerticalBar', 'NProbability', 'NSolve', 'NullRecords', 'OddQ',\n            'NullSpace', 'NullWords', 'NumberFieldClassNumber', 'NumberFormat',\n            'NumberFieldDiscriminant', 'NumberFieldFundamentalUnits', 'Number',\n            'NumberFieldIntegralBasis', 'NumberFieldNormRepresentatives',\n            'NumberFieldRegulator', 'NumberFieldRootsOfUnity', 'NumberForm',\n            'NumberFieldSignature', '$NumberMarks', 'NumberMarks', 'NumberQ',\n            'NumberMultiplier', 'NumberPadding', 'NumberPoint', 'NumberSigns',\n            'NumberSeparator', 'NumberString', 'Numerator', 'NumericFunction',\n            'NumericQ', 'NyquistGridLines', 'NyquistPlot', 'ObservableModelQ',\n            'ObservabilityGramian', 'ObservabilityMatrix', 'Offset', 'Opacity',\n            'ObservableDecomposition', 'ONanGroupON', 'OneIdentity', 'Opener',\n            'OpenAppend', 'OpenerView', 'Opening', 'OpenRead', 'OpenTemporary',\n            'OpenWrite', 'Operate', '$OperatingSystem', 'OperatingSystem',\n            'Optional', 'OptionInspectorSettings', 'Options', 'OptionsPattern',\n            'OptionValue', 'Orange', 'OrderDistribution', 'OrderedQ', 'Order',\n            'Ordering', 'Orderless', 'Orthogonalize', 'Outer', 'OutputForm',\n            'OutputAutoOverwrite', 'OutputControllabilityMatrix', '$Output',\n            'OutputControllableModelQ', 'OutputNamePacket', 'OutputResponse',\n            '$OutputSizeLimit', 'OutputSizeLimit', 'OutputStream', 'OverBar',\n            'OverDot', 'Overflow', 'OverHat', 'Overlaps', 'Overlay', 'OwenT',\n            'OverscriptBox', 'OverscriptBoxOptions', 'Overscript', 'OverTilde',\n            'OverVector', 'OwnValues', '$Packages', 'PackingMethod', 'Padding',\n            'PaddedForm', 'PadeApproximant', 'PadLeft', 'PadRight', 'Paneled',\n            'PageBreakAbove', 'PageBreakBelow', 'PageBreakWithin', 'PageWidth',\n            'PageFooterLines', 'PageFooters', 'PageHeaderLines', 'PageHeaders',\n            'PageRankCentrality', 'PairedBarChart', 'PairedHistogram', 'Panel',\n            'PairedTTest', 'PairedZTest', 'PaletteNotebook', 'PalettePath',\n            'Pane', 'PaneSelector', 'ParabolicCylinderD', 'ParagraphIndent',\n            'ParagraphSpacing', 'ParallelArray', 'ParallelCombine', 'Part',\n            'ParallelDo', 'ParallelEvaluate', 'Parallelization', 'Parallelize',\n            'ParallelMap', 'ParallelNeeds', 'ParallelProduct', 'ParallelSum',\n            'ParallelSubmit', 'ParallelTable', 'ParallelTry', 'ParametricPlot',\n            'ParameterEstimator', 'ParameterMixtureDistribution', 'Partition',\n            'ParametricPlot3D', 'ParentDirectory', '$ParentLink', 'Paste',\n            '$ParentProcessID', 'ParetoDistribution', 'ParticleData', '$Path',\n            'PartitionsP', 'PartitionsQ', 'PascalDistribution', 'PassEventsUp',\n            'PassEventsDown', 'PasteBoxFormInlineCells', 'PasteButton', 'Path',\n            'PathGraph', 'PathGraphQ', '$PathnameSeparator', 'Pattern', 'Pick',\n            'PatternSequence', 'PatternTest', 'PauliMatrix', 'PaulWavelet',\n            'Pause', 'PearsonChiSquareTest', 'PearsonDistribution', 'Permute',\n            '$PerformanceGoal', 'PerformanceGoal', 'PermutationCycles', 'Pink',\n            'PermutationCyclesQ', 'PermutationGroup', 'PermutationLength',\n            'PermutationList', 'PermutationListQ', 'PermutationMax', 'Placed',\n            'PermutationMin', 'PermutationOrder', 'PermutationPower', 'Plain',\n            'PermutationProduct', 'PermutationReplace', 'Permutations', 'Play',\n            'PermutationSupport', 'PeronaMalikFilter', 'PERTDistribution',\n            'PetersenGraph', 'PhaseMargins', 'PiecewiseExpand', 'Piecewise',\n            'PieChart3D', 'PieChart', 'PixelConstrained', 'PixelValue', 'Plot',\n            'Placeholder', 'PlaceholderReplace', 'PlayRange', 'Plot3D', 'Plus',\n            'Plot3Matrix', 'PlotDivision', 'PlotJoined', 'PlotLabel', 'Point',\n            'PlotLayout', 'PlotMarkers', 'PlotPoints', 'PlotRangeClipping',\n            'PlotRange', 'PlotRangePadding', 'PlotRegion', 'PlotStyle', '$Pre',\n            'PlusMinus', 'Pochhammer', 'PodStates', 'PodWidth', 'PointSize',\n            'PointFigureChart', 'PoissonConsulDistribution', 'PolarAxes',\n            'PoissonDistribution', 'PolarAxesOrigin', 'PolarGridLines', 'Quit',\n            'PolarPlot', 'PolarTicks', 'PoleZeroMarkers', 'PolyGamma', '$Post',\n            'PolyaAeppliDistribution', 'PolygonIntersections', 'Polygon',\n            'PolyhedronData', 'PolyLog', 'PolynomialExtendedGCD', 'PopupMenu',\n            'PolynomialGCD', 'PolynomialLCM', 'PolynomialMod', 'PolynomialQ',\n            'PolynomialQuotient', 'PolynomialQuotientRemainder', 'PopupView',\n            'PolynomialReduce', 'PolynomialRemainder', 'PopupWindow', 'Power',\n            'Position', 'PositiveDefiniteMatrixQ', 'Positive', 'PossibleZeroQ',\n            'Postfix', 'PowerDistribution', 'PowerExpand', 'PowerModList',\n            'PowerMod', 'PowersRepresentations', 'PowerSymmetricPolynomial',\n            'PrecedenceForm', 'PrecedesEqual', 'Precedes', 'PrecedesTilde',\n            'PrecedesSlantEqual', 'PrecisionGoal', 'Precision', 'PreDecrement',\n            'PreemptProtect', 'PreferencesPath', 'Prefix', 'PreIncrement',\n            'Prepend', 'PrependTo', '$PrePrint', '$PreRead', 'Prime', 'PrimeQ',\n            'PreserveImageOptions', 'PriceGraphDistribution', 'PrimeNu', 'Xor',\n            'PrimeOmega', 'PrimePi', 'PrimePowerQ', 'Primes', 'PrimeZetaP',\n            'PrimitiveRoot', 'PrincipalComponents', 'PrincipalValue', 'Print',\n            'PrintAction', 'PrintingCopies', 'PrintingOptions', 'PrivatePaths',\n            'PrintingPageRange', 'PrintingStartingPageNumber', 'Probability',\n            'PrintingStyleEnvironment', 'PrintPrecision', 'PrintTemporary',\n            'PrivateEvaluationOptions', 'PrivateFontOptions', 'ProbitModelFit',\n            'PrivateNotebookOptions', 'ProbabilityDistribution', '$ProcessID',\n            'ProbabilityPlot', 'ProbabilityScalePlot', '$ProcessorCount',\n            '$ProcessorType', 'ProductDistribution', '$ProductInformation',\n            'ProductLog', 'Product', 'ProgressIndicator', 'Projection', 'Read',\n            'Prolog', 'Properties', 'PropertyList', 'Property', 'Proportional',\n            'PropertyValue', 'Proportion', 'Protected', 'Protect', 'Pruning',\n            'ProteinData', 'PseudoInverse', 'Purple', 'PutAppend', 'QBinomial',\n            'QFactorial', 'QGamma', 'QHypergeometricPFQ', 'QPochhammer',\n            'QPolyGamma', 'QRDecomposition', 'QuadraticIrrationalQ', 'Quiet',\n            'Quantile', 'QuantilePlot', 'Quartics', 'QuartileDeviation',\n            'QuartileSkewness', 'Quartiles', 'Quotient', 'QuotientRemainder',\n            'RadicalBox', 'RadicalBoxOptions', 'RadioButtonBar', 'RadioButton',\n            'Radon', 'RamanujanTauL', 'RamanujanTau', 'RamanujanTauTheta',\n            'RamanujanTauZ', 'RandomChoice', 'RandomComplex', 'RandomGraph',\n            'RandomImage', 'RandomInteger', 'Random', 'RandomPermutation',\n            'RandomPrime', 'RandomReal', 'RandomSample', '$RandomState',\n            'RandomVariate', 'RangeFilter', 'Range', 'RankedMax', 'RankedMin',\n            'RasterArray', 'Rasterize', 'Raster', 'RasterSize', 'Rationalize',\n            'Rational', 'Rationals', 'Ratios', 'RawBoxes', 'RawData', 'Real',\n            'RayleighDistribution', 'ReadList', 'ReadProtected', 'RealDigits',\n            'RealBlockDiagonalForm', 'RealExponent', 'Reals', 'Reap', 'Record',\n            'RecordLists', 'RecordSeparators', 'RectangleChart3D', 'Rectangle',\n            'RectangleChart', 'RecurrenceTable', '$RecursionLimit', 'Reduce',\n            'ReferenceLineStyle', 'Refine', 'ReflectionMatrix', 'Refresh',\n            'ReflectionTransform', 'RefreshRate', 'RegionBinarize', 'Release',\n            'RegionFunction', 'RegionPlot3D', 'RegionPlot', 'Regularization',\n            'RegularExpression', 'ReleaseHold', '$ReleaseNumber', 'ReliefPlot',\n            'ReliefImage', 'RemoveAlphaChannel', 'Remove', 'RemoveProperty',\n            'RemoveScheduledTask', 'RenameDirectory', 'RenameFile', 'Repeated',\n            'RenderAll', 'RenkoChart', 'RepeatedNull', 'ReplaceAll', 'Replace',\n            'ReplaceHeldPart', 'ReplaceList', 'ReplacePart', 'ReplaceRepeated',\n            'Resampling', 'Rescale', 'RescalingTransform', 'ResetDirectory',\n            'ResetMedium', 'ResetScheduledTask', 'Residue', 'Resolve', 'Rest',\n            'Resultant', 'ResumePacket', 'ReturnExpressionPacket', 'Return',\n            'ReturnPacket', 'ReturnTextPacket', 'ReverseElement', 'Reverse',\n            'ReverseBiorthogonalSplineWavelet', 'ReverseEquilibrium', 'Riffle',\n            'ReverseGraph', 'ReverseUpEquilibrium', 'RevolutionAxis', 'Right',\n            'RevolutionPlot3D', 'RGBColor', 'RiccatiSolve', 'RiceDistribution',\n            'RidgeFilter', 'RiemannR', 'RiemannSiegelTheta', 'RiemannSiegelZ',\n            'RightArrowBar', 'RightArrowLeftArrow', 'RightArrow', 'Root',\n            'RightCosetRepresentative', 'RightDownTeeVector', 'RightTeeArrow',\n            'RightDownVectorBar', 'RightDownVector', 'RightTeeVector', 'Roots',\n            'RightTriangleBar', 'RightTriangleEqual', 'RightTriangle', 'Round',\n            'RightUpDownVector', 'RightUpTeeVector', 'RightUpVectorBar',\n            'RightUpVector', 'RightVectorBar', 'RightVector', '$RootDirectory',\n            'RogersTanimotoDissimilarity', 'RootApproximant', 'RootIntervals',\n            'RootLocusPlot', 'RootMeanSquare', 'RootOfUnityQ', 'RootReduce',\n            'RootSum', 'RotateLabel', 'RotateLeft', 'Rotate', 'RotateRight',\n            'RotationAction', 'RotationMatrix', 'RotationTransform', 'RowBox',\n            'RoundingRadius', 'RowAlignments', 'RowLines', 'RowMinHeight',\n            'RowReduce', 'RowsEqual', 'RowSpacings', 'RSolve', 'RuleDelayed',\n            'RudvalisGroupRu', 'Rule', 'RulerUnits', 'RunScheduledTask',\n            'RunThrough', 'RuntimeAttributes', 'RuntimeOptions', 'SameQ',\n            'RussellRaoDissimilarity', 'SameTest', 'SampleDepth', 'SampleRate',\n            'SampledSoundFunction', 'SampledSoundList', 'SamplingPeriod',\n            'SatisfiabilityCount', 'SatisfiabilityInstances', 'SatisfiableQ',\n            'Saveable', 'SaveAutoDelete', 'SaveDefinitions', 'Save', 'Scaled',\n            'SawtoothWave', 'Scale', 'ScalingFunctions', 'ScalingMatrix',\n            'ScalingTransform', 'Scan', '$ScheduledTask', 'ScheduledTasks',\n            'ScheduledTaskObject', 'SchurDecomposition', 'ScientificForm',\n            'ScreenRectangle', 'ScreenStyleEnvironment', '$ScriptCommandLine',\n            'ScriptBaselineShifts', 'ScriptLevel', 'ScriptMinSize', 'Sech',\n            'ScriptSizeMultipliers', 'Scrollbars', 'ScrollingOptions', 'Share',\n            'ScrollPosition', 'SechDistribution', 'SectorChart3D', 'Select',\n            'SectorChart', 'SectorOrigin', 'SectorSpacing', 'SeedRandom',\n            'Selectable', 'SelectComponents', 'SelectedNotebook', 'SendMail',\n            'SelectionAnimate', 'SelectionCreateCell', 'SelectionEvaluate',\n            'SelectionEvaluateCreateCell', 'SelectionMove', 'SelfLoopStyle',\n            'SemialgebraicComponentInstances', 'SequenceAlignment', 'Sequence',\n            'SequenceForm', 'SequenceHold', 'SeriesCoefficient', 'SeriesData',\n            'Series', '$SessionID', 'SessionTime', 'SetAccuracy', 'SetDelayed',\n            'SetAlphaChannel', 'SetAttributes', 'SetDirectory', 'SetFileDate',\n            'SetOptions', 'SetPrecision', 'SetProperty', 'SetSelectedNotebook',\n            'SetSharedFunction', 'SetSharedVariable', 'SetStreamPosition',\n            'SetSystemOptions', 'SetterBar', 'Setter', 'Setting', 'Shading',\n            'Shallow', 'ShannonWavelet', 'ShapiroWilkTest', '$SharedFunctions',\n            '$SharedVariables', 'Sharpen', 'ShearingMatrix', 'ShortDownArrow',\n            'ShearingTransform', 'ShortestMatch', 'Shortest', 'ShortLeftArrow',\n            'ShortestPathFunction', 'Short', 'ShortRightArrow', 'ShortUpArrow',\n            'ShowAutoStyles', 'ShowCellBracket', 'ShowCellLabel', 'Show',\n            'ShowCellTags', 'ShowClosedCellArea', 'ShowContents', 'Signature',\n            'ShowCursorTracker', 'ShowGroupOpener', 'ShowPageBreaks', 'Sign',\n            'ShowSelection', 'ShowShortBoxForm', 'ShowSpecialCharacters',\n            'ShowStringCharacters', 'ShrinkingDelay', 'SiegelTheta', 'Sinc',\n            'SiegelTukeyTest', 'SignedRankTest', 'SignificanceLevel', 'Sinh',\n            'SignPadding', 'SignTest', 'SimilarityRules', 'SimpleGraph',\n            'SimpleGraphQ', 'Simplify', 'SinghMaddalaDistribution', 'Skeleton',\n            'SingleLetterItalics', 'SingularValueDecomposition', 'SinIntegral',\n            'SingularValueList', 'SingularValuePlot', 'SingularValues', 'Skip',\n            'SinhIntegral', 'SixJSymbol', 'SkeletonTransform', 'Skewness',\n            'SkellamDistribution', 'SkewNormalDistribution', 'Slider2D',\n            'Slider', 'SlideView', 'Slot', 'SlotSequence', 'SmallCircle',\n            'Smaller', 'Small', 'SmithWatermanSimilarity', 'SmoothHistogram3D',\n            'SmoothDensityHistogram', 'SmoothHistogram', 'SolveAlways', 'Sort',\n            'SmoothKernelDistribution', 'SokalSneathDissimilarity', 'Solve',\n            'SortBy', '$SoundDisplayFunction', 'Sound', 'SoundNote', 'Spacer',\n            'SoundVolume', 'Spacings', 'SpanAdjustments', 'SpanFromAbove',\n            'SpanCharacterRounding', 'SpanFromBoth', 'SpanFromLeft', 'Span',\n            'SpanLineThickness', 'SpanMaxSize', 'SpanMinSize', 'SpanSymmetric',\n            'SparseArray', 'Speak', 'Specularity', 'SpellingCorrection',\n            'SpellingDictionaries', 'SpellingDictionariesPath', 'Sphere',\n            'SpellingOptions', 'SphericalBesselJ', 'SphericalBesselY', 'Split',\n            'SphericalHankelH1', 'SphericalHankelH2', 'SphericalHarmonicY',\n            'SphericalPlot3D', 'SphericalRegion', 'SpheroidalEigenvalue',\n            'SpheroidalJoiningFactor', 'SpheroidalPS', 'SpheroidalPSPrime',\n            'SpheroidalQS', 'SpheroidalQSPrime', 'SpheroidalRadialFactor',\n            'SpheroidalS1', 'SpheroidalS1Prime', 'SpheroidalS2', 'Splice',\n            'SpheroidalS2Prime', 'SplineClosed', 'SplineDegree', 'SplineKnots',\n            'SplineWeights', 'SplitBy', 'SpokenString', 'SqrtBox', 'Sqrt',\n            'SquaredEuclideanDistance', 'SquareFreeQ', 'SquareIntersection',\n            'Square', 'SquaresR', 'SquareSubsetEqual', 'SquareSubset', 'Stack',\n            'SquareSupersetEqual', 'SquareSuperset', 'SquareUnion', 'Star',\n            'SquareWave', 'StabilityMargins', 'StabilityMarginsStyle', 'Stub',\n            'StableDistribution', 'StackBegin', 'StackComplete', 'Standardize',\n            'StackInhibit', 'StandardDeviationFilter', 'StandardDeviation',\n            'StandardForm', 'StarGraph', 'StartingStepSize', 'StartOfLine',\n            'StartOfString', 'StartProcess', 'StartScheduledTask', 'Streams',\n            'StartupSound', 'StateFeedbackGains', 'StateOutputEstimator',\n            'StateResponse', 'StateSpaceModel', 'StateSpaceRealization',\n            'StateSpaceTransform', 'StationaryWaveletPacketTransform', 'Style',\n            'StationaryWaveletTransform', 'StatusArea', 'StepMonitor', 'Table',\n            'StieltjesGamma', 'StirlingS1', 'StirlingS2', 'StopScheduledTask',\n            'StreamColorFunction', 'StreamColorFunctionScaling', 'StreamPlot',\n            'StreamDensityPlot', 'StreamPoints', 'StreamPosition', 'String',\n            'StreamScale', 'StreamStyle', 'StringCases', 'StringCount', 'Take',\n            'StringDrop', 'StringExpression', 'StringFormat', 'StringForm',\n            'StringFreeQ', 'StringInsert', 'StringJoin', 'StringLength',\n            'StringMatchQ', 'StringPosition', 'StringQ', 'StringReplaceList',\n            'StringReplace', 'StringReplacePart', 'StringReverse', 'StruveH',\n            'StringSkeleton', 'StringSplit', 'StringTake', 'StringToStream',\n            'StringTrim', 'StructuredSelection', 'StruveL', 'StyleBox', 'Tanh',\n            'StudentTDistribution', 'StyleBoxAutoDelete', 'StyleData', 'Tally',\n            'StyleDefinitions', 'StyleForm', 'StyleMenuListing', 'StylePrint',\n            'StyleNameDialogSettings', 'StyleSheetPath', 'Subfactorial',\n            'Subgraph', 'SubMinus', 'SubPlus', 'Subresultants', 'SubscriptBox',\n            'SubscriptBoxOptions', 'Subscripted', 'Subscript', 'SubsetEqual',\n            'Subset', 'Subsets', 'SubStar', 'SubsuperscriptBox', 'Subtract',\n            'SubsuperscriptBoxOptions', 'Subsuperscript', 'SubtractFrom',\n            'SucceedsEqual', 'Succeeds', 'SucceedsSlantEqual', 'SucceedsTilde',\n            'SuchThat', 'SumConvergence', 'SuperDagger', 'SuperMinus', 'Text',\n            'SuperPlus', 'SuperscriptBox', 'SuperscriptBoxOptions', 'Superset',\n            'Superscript', 'SupersetEqual', 'SuperStar', 'SurfaceColor',\n            'SurfaceGraphics', 'SurvivalDistribution', 'SurvivalFunction',\n            'SuspendPacket', 'SuzukiDistribution', 'SuzukiGroupSuz', 'Switch',\n            'SymbolName', 'Symbol', 'SymletWavelet', 'SymmetricGroup', 'Thick',\n            'SymmetricMatrixQ', 'SymmetricPolynomial', 'SymmetricReduction',\n            'SynchronousInitialization', 'SynchronousUpdating', 'SyntaxForm',\n            '$SyntaxHandler', 'SyntaxInformation', 'SyntaxLength', 'SyntaxQ',\n            'SyntaxPacket', '$SystemCharacterEncoding', 'SystemDialogInput',\n            'SystemHelpPath', '$SystemID', 'SystemInformation', '$System',\n            'SystemOpen', 'SystemOptions', 'SystemsModelDelete', 'TabFilling',\n            'SystemsModelDimensions', 'SystemsModelExtract', 'TableAlignments',\n            'SystemsModelFeedbackConnect', 'SystemsModelLabels', 'TableDepth',\n            'SystemsModelOrder', 'SystemsModelParallelConnect', 'TableForm',\n            'SystemsModelSeriesConnect', 'SystemsModelStateFeedbackConnect',\n            '$SystemWordLength', 'TableDirections', 'TableHeadings', 'TabView',\n            'TableSpacing', 'TabSpacings', 'TagBox', 'TaggingRules', 'TagSet',\n            'TagSetDelayed', 'TagUnset', 'TakeWhile', 'TargetFunctions',\n            'TautologyQ', '$TemporaryDirectory', 'Temporary', 'TensorRank',\n            '$TemporaryPrefix', 'TeXForm', 'TeXSave', 'TextAlignment', 'Thin',\n            'TextCell', 'TextClipboardType', 'TextData', 'TextJustification',\n            'TextPacket', 'TextRecognize', '$TextStyle', 'TextStyle', 'Thread',\n            'TextureCoordinateFunction', 'TextureCoordinateScaling', 'Texture',\n            'Therefore', 'Thickness', 'Thinning', 'ThompsonGroupTh', 'Through',\n            'ThreeJSymbol', 'Threshold', 'Throw', 'Thumbnail', 'Ticks', 'Tiny',\n            'TicksStyle', 'TildeEqual', 'TildeFullEqual', 'Tilde', '$TimedOut',\n            'TildeTilde', 'TimeConstrained', 'TimeConstraint', 'TimesBy',\n            'Times', '$TimeUnit', 'TimeUsed', 'TimeValue', '$TimeZone', 'Trig',\n            'TimeZone', 'Timing', 'TitsGroupT', 'ToASCII', 'ToBoxes', 'ToDate',\n            'ToCharacterCode', 'ToContinuousTimeModel', 'ToDiscreteTimeModel',\n            'ToeplitzMatrix', 'ToExpression', 'ToFileName', 'Together', 'True',\n            'TogglerBar', 'Toggler', 'ToHeldExpression', 'TokenWords', 'Total',\n            'Tolerance', 'ToLowerCase', 'ToNumberField', 'TooltipDelay',\n            'Tooltip', '$TopDirectory', 'TopHatTransform', 'TopologicalSort',\n            'ToRadicals', 'ToRules', 'ToString', 'TotalVariationFilter',\n            'TotalWidth', 'ToUpperCase', 'TraceAbove', 'TraceBackward', 'Tube',\n            'TraceDepth', 'TraceDialog', 'TraceForward', 'Trace', 'TraceOff',\n            'TraceOn', 'TraceOriginal', 'TracePrint', 'TraceScan', 'Translate',\n            'TrackedSymbols', 'TradingChart', 'TraditionalForm', 'Transparent',\n            'TraditionalFunctionNotation', 'TransferFunctionCancel', 'Trigger',\n            'TransferFunctionExpand', 'TransferFunctionFactor', 'Transpose',\n            'TransferFunctionModel', 'TransferFunctionPoles', 'TreeForm',\n            'TransferFunctionZeros', 'TransformationFunction', 'TreeGraph',\n            'TransformationFunctions', 'TransformationMatrix', 'TreeGraphQ',\n            'TransformedDistribution', 'TranslationTransform', 'TreePlot',\n            'TrendStyle', 'TriangleWave', 'TriangularDistribution', 'TrueQ',\n            'TrigExpand', 'TrigFactorList', 'TrigFactor', 'TrigReduce', 'With',\n            'TrigToExp', 'TrimmedMean', 'TruncatedDistribution', 'TTest',\n            'TukeyLambdaDistribution', 'Tuples', 'TuranGraph', 'TuringMachine',\n            'Uncompress', 'Undefined', 'UnderBar', 'Underflow', 'Underlined',\n            'UnderoverscriptBox', 'UnderoverscriptBoxOptions', 'Underscript',\n            'Underoverscript', 'UnderscriptBox', 'UnderscriptBoxOptions',\n            'UndirectedEdge', 'UndirectedGraph', 'UndirectedGraphQ', 'Unequal',\n            'Unevaluated', 'UniformDistribution', 'UniformGraphDistribution',\n            'UniformSumDistribution', 'Uninstall', 'Union', 'UnionPlus',\n            'Unique', 'UnitBox', 'Unitize', 'UnitStep', 'UnitTriangle', 'Word',\n            'UnitVector', 'Unprotect', 'UnsameQ', 'UnsavedVariables', 'Unset',\n            'UnsetShared', 'UpArrowBar', 'UpArrowDownArrow', 'UpArrow', 'Xnor',\n            'UpdateInterval', 'Update', 'UpDownArrow', 'UpEquilibrium', 'Zeta',\n            'UpperCaseQ', 'UpperLeftArrow', 'UpperRightArrow', 'UpSetDelayed',\n            'UpperTriangularize', 'UpSet', 'UpTeeArrow', 'UpValues', '$Urgent',\n            '$UserAddOnsDirectory', '$UserBaseDirectory', '$UserName', 'Wedge',\n            '$UserDocumentsDirectory', 'UsingFrontEnd', 'ValidationLength',\n            'ValueQ', 'Variables', 'VarianceEquivalenceTest', 'Variance',\n            'VarianceEstimatorFunction', 'VarianceTest', 'VectorAngle',\n            'VectorColorFunction', 'VectorColorFunctionScaling', 'VectorPlot',\n            'VectorDensityPlot', 'VectorPlot3D', 'VectorPoints', 'VectorQ',\n            'VectorScale', 'VectorStyle', 'Verbatim', 'VerifyConvergence',\n            'VerifyTestAssumptions', '$Version', '$VersionNumber', 'VertexAdd',\n            'VertexColors', 'VertexComponent', 'VertexCoordinateRules',\n            'VertexCoordinates', 'VertexCount', 'VertexCoverQ', 'VertexDegree',\n            'VertexDelete', 'VertexEccentricity', 'VertexInComponent', 'Which',\n            'VertexInDegree', 'VertexIndex', 'VertexLabeling', 'VertexLabels',\n            'VertexLabelStyle', 'VertexList', 'VertexNormals', 'VertexQ',\n            'VertexOutComponent', 'VertexOutDegree', 'VertexRenderingFunction',\n            'VertexReplace', 'VertexShapeFunction', 'VertexShape', 'ViewAngle',\n            'VertexSize', 'VertexStyle', 'VertexTextureCoordinates', 'Visible',\n            'VertexWeight', 'VerticalBar', 'VerticalSeparator', 'ViewCenter',\n            'VerticalSlider', 'VerticalTilde', 'ViewMatrix', 'ViewPoint',\n            'ViewRange', 'ViewVector', 'ViewVertical', 'VonMisesDistribution',\n            'WaitAll', 'WaitNext', 'WakebyDistribution', 'WatershedComponents',\n            'WalleniusHypergeometricDistribution', 'WaringYuleDistribution',\n            'WatsonUSquareTest', 'WattsStrogatzGraphDistribution', 'WeberE',\n            'WaveletBestBasis', 'WaveletFilterCoefficients', 'WaveletListPlot',\n            'WaveletImagePlot', 'WaveletMapIndexed', 'WaveletMatrixPlot',\n            'WaveletPhi', 'WaveletPsi', 'WaveletScale', 'WaveletScalogram',\n            'WaveletThreshold', 'WeatherData', 'WeibullDistribution', 'While',\n            'WeierstrassHalfPeriods', 'WeierstrassInvariants', 'WeierstrassP',\n            'WeierstrassPPrime', 'WeierstrassSigma', 'WeierstrassZeta',\n            'WeightedAdjacencyGraph', 'WeightedAdjacencyMatrix', 'Weights',\n            'WeightedGraphQ', 'WheelGraph', 'White', 'WhitespaceCharacter',\n            'Whitespace', 'WhittakerM', 'WhittakerW', 'WienerFilter', 'Write',\n            'WignerD', 'WignerSemicircleDistribution', 'WindowClickSelect',\n            'WindowElements', 'WindowFloating', 'WindowFrameElements', 'ZTest',\n            'WindowFrame', 'WindowMargins', 'WindowMovable', 'WindowOpacity',\n            'WindowSize', 'WindowStatusArea', 'WindowTitle', 'WindowToolbars',\n            'WolframAlpha', 'WordBoundary', 'WordCharacter', 'WordData',\n            'WordSearch', 'WordSeparators', 'WorkingPrecision', 'WriteString',\n            'Wronskian', 'XMLElement', 'XMLObject', 'Yellow', 'ZernikeR',\n            'YuleDissimilarity', 'ZeroTest', 'ZeroWidthTimes', 'ZetaZero',\n            'ZipfDistribution', 'ZTransform'\n            )\n        ),\n    /* Most symbol combinations can be valid Wolfram operators */\n    'SYMBOLS' => array(\n        '!', '@', '#', '$', '%', '&', '*', '-', '+', '=',\n        '^', '~', '|', '\\\\', '>', '<', ':', '?', '/'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => true /* Wolfram is a case sensitive language */\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'font-weight: bold;', /* make the system functions bold */\n            ),\n        'COMMENTS' => array(\n            'MULTI' => 'color: grey;',\n            2 => 'color: grey;', /* nested comments are grey as well */\n            3 => 'color: #000aa; font-weight: bold;' /* complex symbols */\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'background-color: #3cb371; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: green; font-weight: bold;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: grey; font-weight: bold;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: red;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #060;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #339933; font-weight: bold;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        /* online documentation for system functions */\n        1 => 'http://reference.wolfram.com/language/ref/{FNAME}.html'\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/xbasic.php",
    "content": "<?php\n/*************************************************************************************\n * xbasic.php\n * ----------\n * Author: Jos Gabriel Moya Yangela (josemoya@gmail.com)\n * Copyright: (c) 2005 Jos Gabriel Moya Yangela (http://aprenderadesaprender.6te.net)\n * Release Version: 1.0.9.1\n * Date Started: 2005/11/23\n *\n * XBasic language file for GeSHi.\n *\n * CHANGES\n * -------\n *  - Removed duplicate keywords\n *  - Tabs converted in spaces.\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'XBasic',\n    'COMMENT_SINGLE' => array(1 => \"'\"),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        1 => array(\n            'WHILE', 'UNTIL', 'TRUE', 'TO', 'THEN', 'SUB', 'STOP', 'STEP',\n            'SELECT', 'RETURN', 'PROGRAM', 'NEXT', 'LOOP', 'IFZ',\n            'IFT', 'IFF', 'IF', 'GOTO', 'GOSUB', 'FOR', 'FALSE', 'EXIT',\n            'ENDIF', 'END', 'ELSE', 'DO', 'CASE', 'ALL'\n            ),\n        2 => array(\n            'XMAKE', 'XLONGAT', 'XLONG', 'WRITE', 'VOID', 'VERSION$', 'VERSION',\n            'USHORTAT', 'USHORT', 'UNION', 'ULONGAT', 'ULONG', 'UCASE$',\n            'UBYTEAT', 'UBYTE', 'UBOUND', 'TYPE','TRIM$', 'TAB', 'SWAP',\n            'SUBADDRESS', 'SUBADDR', 'STUFF$', 'STRING', 'STRING$', 'STR$',\n            'STATIC', 'SSHORTAT', 'SSHORT', 'SPACE$', 'SMAKE', 'SLONGAT', 'SLONG',\n            'SIZE', 'SINGLEAT', 'SINGLE', 'SIGNED$', 'SIGN', 'SHELL', 'SHARED',\n            'SGN', 'SFUNCTION', 'SET', 'SEEK', 'SCOMPLEX', 'SBYTEAT', 'SBYTE',\n            'RTRIM$', 'ROTATER', 'ROTATEL', 'RJUST$', 'RINSTRI', 'RINSTR',\n            'RINCHRI', 'RINCHR', 'RIGHT$', 'REDIM', 'READ', 'RCLIP$', 'QUIT',\n            'PROGRAM$', 'PRINT', 'POF', 'OPEN', 'OCTO$', 'OCT$', 'NULL$', 'MIN',\n            'MID$', 'MAX', 'MAKE', 'LTRIM$', 'LOF', 'LJUST$', 'LIBRARY', 'LEN',\n            'LEFT$', 'LCLIP$', 'LCASE$', 'INTERNAL', 'INT', 'INSTRI', 'INSTR',\n            'INLINE$', 'INFILE$', 'INCHRI', 'INCHR', 'INC', 'IMPORT', 'HIGH1',\n            'HIGH0', 'HEXX$', 'HEX$', 'GOADDRESS', 'GOADDR', 'GMAKE', 'GLOW',\n            'GIANTAT', 'GIANT', 'GHIGH', 'FUNCTION', 'FUNCADDRESS', 'FUNCADDR',\n            'FORMAT$', 'FIX', 'EXTU', 'EXTS', 'EXTERNAL', 'ERROR', 'ERROR$',\n            'EOF', 'DOUBLEAT', 'DOUBLE', 'DMAKE', 'DLOW', 'DIM', 'DHIGH',\n            'DECLARE', 'DEC', 'DCOMPLEX', 'CSTRING$', 'CSIZE', 'CSIZE$', 'CLR',\n            'CLOSE', 'CLEAR', 'CJUST$', 'CHR$', 'CFUNCTION', 'BITFIELD', 'BINB$',\n            'BIN$', 'AUTOX', 'AUTOS', 'AUTO', 'ATTACH', 'ASC', 'ABS'\n            ),\n        3 => array(\n            'XOR', 'OR', 'NOT', 'MOD', 'AND'\n            ),\n        4 => array(\n            'TANH', 'TAN', 'SQRT', 'SINH', 'SIN', 'SECH', 'SEC', 'POWER',\n            'LOG10', 'LOG', 'EXP10', 'EXP', 'CSCH', 'CSC', 'COTH', 'COT', 'COSH',\n            'COS', 'ATANH', 'ATAN', 'ASINH', 'ASIN', 'ASECH', 'ASEC', 'ACSCH',\n            'ACSC', 'ACOSH', 'ACOS'\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>',\n        '=','+','-'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #00a1a1;font-weight: bold',\n            2 => 'color: #000066;font-weight: bold',\n            3 => 'color: #00a166;font-weight: bold',\n            4 => 'color: #0066a1;font-weight: bold'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => 'http://www.xbasic.org',\n        4 => 'http://www.xbasic.org'\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/xml.php",
    "content": "<?php\n/*************************************************************************************\n * xml.php\n * -------\n * Author: Nigel McNie (nigel@geshi.org)\n * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/)\n * Release Version: 1.0.9.1\n * Date Started: 2004/09/01\n *\n * XML language file for GeSHi. Based on the idea/file by Christian Weiske\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n * 2005/12/28 (1.0.2)\n *   -  Removed escape character for strings\n * 2004/11/27 (1.0.1)\n *   -  Added support for multiple object splitters\n * 2004/10/27 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2004/11/27)\n * -------------------------\n * * Check regexps work and correctly highlight XML stuff and nothing else\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'XML',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        ),\n    'SYMBOLS' => array(\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            ),\n        'COMMENTS' => array(\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'SCRIPT' => array(\n            -1 => 'color: #808080; font-style: italic;', // comments\n            0 => 'color: #00bbdd;',\n            1 => 'color: #ddbb00;',\n            2 => 'color: #339933;',\n            3 => 'color: #009900;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #000066;',\n            1 => 'color: #000000; font-weight: bold;',\n            2 => 'color: #000000; font-weight: bold;'\n            )\n        ),\n    'URLS' => array(\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        0 => array(//attribute names\n            GESHI_SEARCH => '([a-z_:][\\w\\-\\.:]*)(=)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'i',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => '\\\\2'\n            ),\n        1 => array(//Initial header line\n            GESHI_SEARCH => '(&lt;[\\/?|(\\?xml)]?[a-z_:][\\w\\-\\.:]*(\\??&gt;)?)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'i',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        2 => array(//Tag end markers\n            GESHI_SEARCH => '(([\\/|\\?])?&gt;)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => 'i',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n            ),\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_ALWAYS,\n    'SCRIPT_DELIMITERS' => array(\n        -1 => array(\n            '<!--' => '-->'\n            ),\n        0 => array(\n            '<!DOCTYPE' => '>'\n            ),\n        1 => array(\n            '&' => ';'\n            ),\n        2 => array(\n            '<![CDATA[' => ']]>'\n            ),\n        3 => array(\n            '<' => '>'\n            )\n    ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        -1 => false,\n        0 => false,\n        1 => false,\n        2 => false,\n        3 => true\n        ),\n    'TAB_WIDTH' => 2,\n    'PARSER_CONTROL' => array(\n        'ENABLE_FLAGS' => array(\n            'NUMBERS' => GESHI_NEVER\n        )\n    )\n);\n"
  },
  {
    "path": "includes/geshi/xojo.php",
    "content": "<?php\n/*************************************************************************************\n * xojo.php\n * --------\n * Author: Dr Garry Pettet (contact@garrypettet.com)\n * Copyright: (c) 2014 Dr Garry Pettet (http://garrypettet.com)\n * Release Version: 1.0.9.1\n * Date Started: 2014/10/19\n *\n * Xojo language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2014/10/19 (1.0.8.13)\n *  -  First Release\n *\n * TODO (updated 2014/10/19)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array(\n    'LANG_NAME' => 'Xojo',\n    'COMMENT_SINGLE' => array(1 => \"'\", 2 => '//', 3 => 'rem'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'NUMBERS' => array(\n        1 => GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE, // integers\n        2 => GESHI_NUMBER_FLT_NONSCI // floating point numbers\n    ),\n    'KEYWORDS' => array(\n        //Keywords\n        1 => array(\n            'AddHandler',\n            'AddressOf',\n            'Aggregates',\n            'And',\n            'Array',\n            'As',\n            'Assigns',\n            'Attributes',\n            'Break',\n            'ByRef',\n            'ByVal',\n            'Call',\n            'Case',\n            'Catch',\n            'Class',\n            'Const',\n            'Continue',\n            'CType',\n            'Declare',\n            'Delegate',\n            'Dim',\n            'Do',\n            'DownTo',\n            'Each',\n            'Else',\n            'Elseif',\n            'End',\n            'Enum',\n            'Event',\n            'Exception',\n            'Exit',\n            'Extends',\n            'False',\n            'Finally',\n            'For',\n            'Function',\n            'Global',\n            'GoTo',\n            'Handles',\n            'If',\n            'Implements',\n            'In',\n            'Inherits',\n            'Inline68K',\n            'Interface',\n            'Is',\n            'IsA',\n            'Lib',\n            'Loop',\n            'Me',\n            'Mod',\n            'Module',\n            'Namespace',\n            'New',\n            'Next',\n            'Nil',\n            'Not',\n            'Object',\n            'Of',\n            'Optional',\n            'Or',\n            'ParamArray',\n            'Private',\n            'Property',\n            'Protected',\n            'Public',\n            'Raise',\n            'RaiseEvent',\n            'Rect',\n            'Redim',\n            'RemoveHandler',\n            'Return',\n            'Select',\n            'Self',\n            'Shared',\n            'Soft',\n            'Static',\n            'Step',\n            'Sub',\n            'Super',\n            'Then',\n            'To',\n            'True',\n            'Try',\n            'Until',\n            'Using',\n            'Wend',\n            'While',\n            'With',\n            'WeakAddressOf',\n            'Xor'\n        ),\n        //Data Types\n        2 => array(\n            'Boolean',\n            'CFStringRef',\n            'CString',\n            'Currency',\n            'Double',\n            'Int8',\n            'Int16',\n            'Int32',\n            'Int64',\n            'Integer',\n            'OSType',\n            'PString',\n            'Ptr',\n            'Short',\n            'Single',\n            'String',\n            'Structure',\n            'UInt8',\n            'UInt16',\n            'UInt32',\n            'UInt64',\n            'UShort',\n            'WindowPtr',\n            'WString',\n            'XMLNodeType'\n        ),\n        //Compiler Directives\n        3 => array(\n            '#Bad',\n            '#Else',\n            '#Endif',\n            '#If',\n            '#Pragma',\n            '#Tag'\n        ),\n    ),\n    'SYMBOLS' => array(\n        '+',\n        '-',\n        '*',\n        '=',\n        '/',\n        '>',\n        '<',\n        '^',\n        '(',\n        ')',\n        '.'\n    ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false\n    ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000FF;',  // keywords\n            2 => 'color: #0000FF;',  // primitive data types\n            3 => 'color: #0000FF;',  // compiler commands\n        ),\n        'COMMENTS' => array(\n            1 => 'color: #7F0000;',\n            2 => 'color: #7F0000;',\n            3 => 'color: #7F0000;',\n            'MULTI' => 'color: #7F0000;'\n        ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #008080;'\n        ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n        ),\n        'STRINGS' => array(\n            0 => 'color: #6500FE;'\n        ),\n        'NUMBERS' => array(\n            1 => 'color: #326598;', // integers\n            2 => 'color: #006532;', // floating point numbers\n        ),\n        'METHODS' => array(\n            1 => 'color: #000000;'\n        ),\n        'SYMBOLS' => array(\n            0 => 'color: #000000;'\n        ),\n        'REGEXPS' => array(\n            1 => 'color: #326598;', // &h hex numbers\n            2 => 'color: #326598;', // &b hex numbers\n            3 => 'color: #326598;', // &o hex numbers\n        ),\n        'SCRIPT' => array()\n    ),\n    'URLS' => array(\n        1 => 'http://docs.xojo.com/index.php/{FNAMEU}',\n        2 => 'http://docs.xojo.com/index.php/{FNAMEU}',\n        3 => ''\n    ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n    ),\n    'REGEXPS' => array(\n        1 => array( // &h numbers\n            // search for &h, then any number of letters a-f or numbers 0-9\n            GESHI_SEARCH => '(&amp;h[0-9a-fA-F]*\\b)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n        ),\n        2 => array( // &b numbers\n            // search for &b, then any number of 0-1 digits\n            GESHI_SEARCH => '(&amp;b[0-1]*\\b)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n        ),\n        3 => array( // &o octal numbers\n            // search for &o, then any number of 0-7 digits\n            GESHI_SEARCH => '(&amp;o[0-7]*\\b)',\n            GESHI_REPLACE => '\\\\1',\n            GESHI_MODIFIERS => '',\n            GESHI_BEFORE => '',\n            GESHI_AFTER => ''\n        )\n    ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/xorg_conf.php",
    "content": "<?php\n/*************************************************************************************\n * xorg_conf.php\n * ----------\n * Author: Milian Wolff (mail@milianw.de)\n * Copyright: (c) 2008 Milian Wolff (http://milianw.de)\n * Release Version: 1.0.9.1\n * Date Started: 2008/06/18\n *\n * xorg.conf language file for GeSHi.\n *\n * CHANGES\n * -------\n * 2008/06/18 (1.0.8)\n *  -  Initial import\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'Xorg configuration',\n    'COMMENT_SINGLE' => array(1 => '#'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        // sections\n        1 => array(\n            'Section', 'EndSection', 'SubSection', 'EndSubSection'\n            ),\n        2 => array(\n            // see http://www.x.org/archive/X11R6.9.0/doc/html/xorg.conf.5.html\n            'BiosBase', 'Black', 'Boardname', 'BusID', 'ChipID', 'ChipRev',\n            'Chipset', 'ClockChip', 'Clocks', 'DacSpeed',\n            'DefaultDepth', 'DefaultFbBpp', 'Depth', 'Device',\n            'DisplaySize', 'Driver', 'FbBpp', 'Gamma',\n            'HorizSync', 'IOBase', 'Identifier', 'InputDevice',\n            'Load', 'MemBase', 'Mode', 'Modeline', 'Modelname',\n            'Modes', 'Monitor', 'Option', 'Ramdac', 'RgbPath',\n            'Screen', 'TextClockFreq', 'UseModes', 'VendorName',\n            'VertRefresh', 'VideoAdaptor', 'VideoRam',\n            'ViewPort', 'Virtual', 'Visual', 'Weight', 'White'\n            ),\n        3 => array(\n            // some sub-keywords\n            // screen position\n            'Above', 'Absolute', 'Below', 'LeftOf', 'Relative', 'RightOf',\n            // modes\n            'DotClock', 'Flags', 'HSkew', 'HTimings', 'VScan', 'VTimings'\n            ),\n        ),\n    'REGEXPS' => array(\n        ),\n    'SYMBOLS' => array(\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #b1b100;',\n            2 => 'color: #990000;',\n            3 => 'color: #550000;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #adadad; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'BRACKETS' => array(\n            ),\n        'STRINGS' => array(\n            0 => 'color: #0000ff;',\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #cc66cc;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 4\n);\n"
  },
  {
    "path": "includes/geshi/xpp.php",
    "content": "<?php\n/*************************************************************************************\n * xpp.php\n * -------\n * Author: Simon Butcher (simon@butcher.name)\n * Copyright: (c) 2007 Simon Butcher (http://simon.butcher.name/)\n * Release Version: 1.0.9.1\n * Date Started: 2007/02/27\n *\n * Axapta/Dynamics Ax X++ language file for GeSHi.\n * For details, see <http://msdn.microsoft.com/en-us/library/aa867122.aspx>\n *\n * CHANGES\n * -------\n * 2007/02/28 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2007/02/27)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'X++',\n    'COMMENT_SINGLE' => array(1 => '//'),\n    'COMMENT_MULTI' => array('/*' => '*/'),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array( // Primitive types\n            'void',\n            'str',\n            'real',\n            'int64',\n            'int',\n            'date',\n            'container',\n            'boolean',\n            'anytype'\n            ),\n        2 => array( // Keywords\n            'window',\n            'while',\n            'try',\n            'true',\n            'throw',\n            'switch',\n            'super',\n            'static',\n            'server',\n            'right',\n            'return',\n            'retry',\n            'public',\n            'protected',\n            'private',\n            'print',\n            'pause',\n            'null',\n            'new',\n            'mod',\n            'left',\n            'interface',\n            'implements',\n            'if',\n            'for',\n            'final',\n            'false',\n            'extends',\n            'else',\n            'edit',\n            'do',\n            'div',\n            'display',\n            'default',\n            'continue',\n            'client',\n            'class',\n            'changeCompany',\n            'case',\n            'breakpoint',\n            'break',\n            'at',\n            'abstract'\n            ),\n        3 => array( // Functions within the Axapta kernel\n            'year',\n            'wkofyr',\n            'webwebpartstr',\n            'webstaticfilestr',\n            'websitetempstr',\n            'websitedefstr',\n            'webreportstr',\n            'webpagedefstr',\n            'weboutputcontentitemstr',\n            'webmenustr',\n            'webletitemstr',\n            'webformstr',\n            'webdisplaycontentitemstr',\n            'webactionitemstr',\n            'varstr',\n            'utilmoyr',\n            'uint2str',\n            'typeof',\n            'typeid',\n            'trunc',\n            'today',\n            'timenow',\n            'time2str',\n            'term',\n            'tanh',\n            'tan',\n            'tablestr',\n            'tablestaticmethodstr',\n            'tablepname',\n            'tablenum',\n            'tablename2id',\n            'tablemethodstr',\n            'tableid2pname',\n            'tableid2name',\n            'tablefieldgroupstr',\n            'tablecollectionstr',\n            'systemdateset',\n            'systemdateget',\n            'syd',\n            'substr',\n            'strupr',\n            'strscan',\n            'strrtrim',\n            'strrep',\n            'strrem',\n            'strprompt',\n            'strpoke',\n            'strnfind',\n            'strlwr',\n            'strltrim',\n            'strline',\n            'strlen',\n            'strkeep',\n            'strins',\n            'strfmt',\n            'strfind',\n            'strdel',\n            'strcolseq',\n            'strcmp',\n            'stralpha',\n            'str2time',\n            'str2num',\n            'str2int64',\n            'str2int',\n            'str2guid',\n            'str2enum',\n            'str2date',\n            'staticmethodstr',\n            'sln',\n            'sleep',\n            'sinh',\n            'sin',\n            'setprefix',\n            'sessionid',\n            'securitykeystr',\n            'securitykeynum',\n            'runbuf',\n            'runas',\n            'round',\n            'resourcestr',\n            'reportstr',\n            'refprintall',\n            'rate',\n            'querystr',\n            'pv',\n            'pt',\n            'prmisdefault',\n            'primoyr',\n            'prevyr',\n            'prevqtr',\n            'prevmth',\n            'power',\n            'pmt',\n            'num2str',\n            'num2date',\n            'num2char',\n            'nextyr',\n            'nextqtr',\n            'nextmth',\n            'newguid',\n            'mthofyr',\n            'mthname',\n            'mkdate',\n            'minint',\n            'min',\n            'methodstr',\n            'menustr',\n            'menuitemoutputstr',\n            'menuitemdisplaystr',\n            'menuitemactionstr',\n            'maxint',\n            'maxdate',\n            'max',\n            'match',\n            'logn',\n            'log10',\n            'literalstr',\n            'licensecodestr',\n            'licensecodenum',\n            'intvnorm',\n            'intvno',\n            'intvname',\n            'intvmax',\n            'int64str',\n            'indexstr',\n            'indexnum',\n            'indexname2id',\n            'indexid2name',\n            'idg',\n            'identifierstr',\n            'helpfilestr',\n            'helpdevstr',\n            'helpapplstr',\n            'guid2str',\n            'getprefix',\n            'getCurrentUTCTime',\n            'fv',\n            'funcname',\n            'frac',\n            'formstr',\n            'fieldstr',\n            'fieldpname',\n            'fieldnum',\n            'fieldname2id',\n            'fieldid2pname',\n            'fieldid2name',\n            'extendedTypeStr',\n            'extendedTypeNum',\n            'exp10',\n            'exp',\n            'evalbuf',\n            'enumstr',\n            'enumnum',\n            'enumcnt',\n            'enum2str',\n            'endmth',\n            'dimof',\n            'dg',\n            'decround',\n            'ddb',\n            'dayofyr',\n            'dayofwk',\n            'dayofmth',\n            'dayname',\n            'date2str',\n            'date2num',\n            'curuserid',\n            'curext',\n            'cterm',\n            'cosh',\n            'cos',\n            'corrflagset',\n            'corrflagget',\n            'convertUTCTimeToLocalTime',\n            'convertUTCDateToLocalDate',\n            'conpoke',\n            'conpeek',\n            'connull',\n            'conlen',\n            'conins',\n            'confind',\n            'configurationkeystr',\n            'configurationkeynum',\n            'condel',\n            'classstr',\n            'classnum',\n            'classidget',\n            'char2num',\n            'beep',\n            'atan',\n            'asin',\n            'ascii2ansi',\n            'any2str',\n            'any2real',\n            'any2int64',\n            'any2int',\n            'any2guid',\n            'any2enum',\n            'any2date',\n            'ansi2ascii',\n            'acos',\n            'abs'\n            ),\n        4 => array( // X++ SQL stuff\n            'where',\n            'update_recordset',\n            'ttsCommit',\n            'ttsBegin',\n            'ttsAbort',\n            'sum',\n            'setting',\n            'select',\n            'reverse',\n            'pessimisticLock',\n            'outer',\n            'order by',\n            'optimisticLock',\n            'notExists',\n            'noFetch',\n            'next',\n            'minof',\n            'maxof',\n            'like',\n            'join',\n            'insert_recordset',\n            'index hint',\n            'index',\n            'group by',\n            'from',\n            'forUpdate',\n            'forceSelectOrder',\n            'forcePlaceholders',\n            'forceNestedLoop',\n            'forceLiterals',\n            'flush',\n            'firstOnly',\n            'firstFast',\n            'exists',\n            'desc',\n            'delete_from',\n            'count',\n            'avg',\n            'asc'\n            )\n        ),\n    'SYMBOLS' => array( // X++ symbols\n        '!',\n        '&',\n        '(',\n        ')',\n        '*',\n        '^',\n        '|',\n        '~',\n        '+',\n        ',',\n        '-',\n        '/',\n        ':',\n        '<',\n        '=',\n        '>',\n        '?',\n        '[',\n        ']',\n        '{',\n        '}'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000ff;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #0000ff;',\n            4 => 'color: #0000ff;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #007f00;',\n            'MULTI' => 'color: #007f00; font-style: italic;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000000;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #000000;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #ff0000;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #000000;'\n            ),\n        'METHODS' => array(\n            1 => 'color: #000000;',\n            2 => 'color: #000000;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #00007f;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.',\n        2 => '::'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi/yaml.php",
    "content": "<?php\n/*************************************************************************************\n * yaml.php\n * --------\n * Author: Josh Ventura (JoshV10@gmail.com)\n * Copyright: (c) 2010 Josh Ventura\n * Release Version: 1.0.9.1\n * Date Started: 2010/12/14\n *\n * YAML language file for GeSHi.\n *\n * YAML gets hairy sometimes. If anything needs fixed, drop me an email and\n *      I'll probably spit up on it. This is, in general, not a long format.\n *\n * CHANGES\n * ---------\n * 2010/12/14\n *  - Started project in rage over GML support but not YAML support. WTFH?\n * 2010/12/15\n *  - Submitted to Ben.\n *\n * TODO (not updated since release)\n * ----------------------------------\n *  -  Field testing and necessary corrections: this grammar file is usable, but not\n *     completely accurate. There are, in fact, multiple cases in which it will mess\n *     up, and some of it may need moved around. It is the most temperamental parser\n *     I have ever associated my name with. Points of interest follow:\n *   *  Improvised support for | and >: since PHP offers no variable-width lookbehind,\n *      these blocks will still be highlighted even when commented out. As it happens,\n *      any line ending with | or > could result in the unintentional highlighting of\n *      all remaining lines in the file, just because I couldn't check for this regex\n *      as a lookbehind:  '/:(\\s+)(!!(\\w+)(\\s+))?/'\n *      If there is a workaround for that, it needs implemented.\n *   *  I may be missing some operators. I deliberately omitted inline array notation\n *      as, in general, it's ugly and tends to conflict with plain-text. Ensuring all\n *      highlighted list delimiters are not plain text would be as simple as checking\n *      that they follow a colon directly. Alas, without variable-length lookbehinds,\n *      if there is a way to do so in GeSHi I am unaware of it.\n *   *  I kind of whored the comment regexp array. It seemed like a safe bet, so it's\n *      where I crammed everything. Some of it may need moved elsewhere for neatness.\n *   *  The !!typename highlight needs not to interfere with \": |\" and \": >\": Pairing\n *      key: !!type | value is perfectly legal, but again due to lookbehind issues, I\n *      can't add a case for that. Also, it is likely that multiple spaces can be put\n *      between the colon and pipe symbol, which would also break it.\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify it\n *   under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'YAML',\n    'COMMENT_SINGLE' => array(),\n    'COMMENT_MULTI' => array(),\n    //Keys\n    'COMMENT_REGEXP' => array( // ENTRY ZERO  SHOULD CHECK FOR (\\n(\\s*)([^#%]+?):(\\s+)(!!(\\w+)(\\s+))?) AS A LOOKBEHIND, BUT IT CAN'T.\n        0 => '/(?<=\\s[\\|>]\\n)(\\s+)(.*)((?=[\\n$])(([\\n^](\\1(.*)|(?=[\\n$])))*)|$)/', // Pipe blocks and > blocks.\n        1 => '/#(.*)/', // Blue # comments\n        2 => '/%(.*)/', // Red % comments\n        3 => '/(^|\\n)([^#%^\\n]+?)(?=: )/',  // Key-value names\n        4 => '/(^|\\n)([^#%^\\n]+?)(?=:\\n)/',// Key-group names\n        5 => '/(?<=^---)(\\s*)!(\\S+)/',    // Comments after ---\n        6 => '/(?<=: )(\\s*)\\&(\\S+)/',    // References\n        7 => '/(?<=: )(\\s*)\\*(\\S+)/',   // Dereferences\n        8 => '/!!(\\w+)/',              // Types\n        //9 => '/(?<=\\n)(\\s*)-(?!-)/',       // List items: This needs to search within comments 3 and 4, but I don't know how.\n        ),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '',\n    'NUMBERS' => array(),\n    'KEYWORDS' => array(\n        1 => array(\n            'all','any','none', \"yes\", \"no\"\n            ),\n        ),\n    'SYMBOLS' => array(\n        1 => array('---', '...'),\n        2 => array(': ', \">\\n\", \"|\\n\", '<<:', \":\\n\") // It'd be nice if I could specify that the colon must\n        //                                              follow comment 3 or 4 to be considered, and the > and |\n        //                                              must follow such a colon.\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'font-weight: bold;'\n            ),\n        'COMMENTS' => array(\n            0 => 'color: #303050;background-color: #F5F5F5',\n            1 => 'color: blue;',\n            2 => 'font-weight: bold; color: red;',\n            3 => 'color: green;',\n            4 => 'color: #007F45;',\n            5 => 'color: #7f7fFF;',\n            6 => 'color: #FF7000;',\n            7 => 'color: #FF45C0;',\n            8 => 'font-weight: bold; color: #005F5F;',\n            //9 => 'font-weight: bold; color: #000000;',\n            ),\n        'ESCAPE_CHAR' => array(\n            ),\n        'BRACKETS' => array(\n            ),\n        'STRINGS' => array(\n            0 => 'color: #CF00CF;'\n            ),\n        'NUMBERS' => array(\n            // 0 => 'color: #33f;' // Don't highlight numbers, really...\n            ),\n        'METHODS' => array(\n            1 => '',\n            2 => ''\n            ),\n        'SYMBOLS' => array(\n            1 => 'color: cyan;',\n            2 => 'font-weight: bold; color: brown;'\n            ),\n        'REGEXPS' => array(\n            ),\n        'SCRIPT' => array(\n            0 => ''\n            )\n        ),\n    'URLS' => array(1 => ''),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(),\n    'REGEXPS' => array(),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(),\n    'HIGHLIGHT_STRICT_BLOCK' => array()\n);\n"
  },
  {
    "path": "includes/geshi/z80.php",
    "content": "<?php\n/*************************************************************************************\n * z80.php\n * -------\n * Author: Benny Baumann (BenBE@omorphia.de)\n * Copyright: (c) 2007-2008 Benny Baumann (http://www.omorphia.de/)\n * Release Version: 1.0.9.1\n * Date Started: 2007/02/06\n *\n * ZiLOG Z80 Assembler language file for GeSHi.\n * Syntax definition as commonly used with table assembler TASM32\n * This file will contain some undocumented opcodes.\n *\n * CHANGES\n * -------\n * 2008/05/23 (1.0.7.22)\n *   -  Added description of extra language features (SF#1970248)\n * 2007/06/03 (1.0.1)\n *   -  Fixed two typos in the language file\n * 2007/02/06 (1.0.0)\n *   -  First Release\n *\n * TODO (updated 2007/02/06)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'ZiLOG Z80 Assembler',\n    'COMMENT_SINGLE' => array(1 => ';'),\n    'COMMENT_MULTI' => array(),\n    'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array(\"'\", '\"'),\n    'ESCAPE_CHAR' => '',\n    'KEYWORDS' => array(\n        /*CPU*/\n        1 => array(\n            'adc','add','and','bit','call','ccf','cp','cpd','cpdr','cpir','cpi',\n            'cpl','daa','dec','di','djnz','ei','ex','exx','halt','im','in',\n            'in0','inc','ind','indr','inir','ini','jp','jr','ld','ldd','lddr',\n            'ldir','ldi','mlt','neg','nop','or','otdm','otdmr','otdr','otim',\n            'otimr','otir','out','out0','outd','outi','pop','push','res','ret',\n            'reti','retn','rl','rla','rlc','rlca','rld','rr','rra','rrc','rrca',\n            'rrd','rst','sbc','scf','set','sla','sl1','sll','slp','sra','srl',\n            'sub','tst','tstio','xor'\n            ),\n        /*registers*/\n        2 => array(\n            'a','b','c','d','e','h','l',\n            'af','bc','de','hl','ix','iy','sp',\n            'af\\'','ixh','ixl','iyh','iyl'\n            ),\n        /*Directive*/\n        3 => array(\n            '#define','#endif','#else','#ifdef','#ifndef','#include','#undef',\n            '.db','.dd','.df','.dq','.dt','.dw','.end','.org','equ'\n            ),\n        ),\n    'SYMBOLS' => array(\n        '[', ']', '(', ')', '?', '+', '-', '*', '/', '%', '$'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #0000ff; font-weight:bold;',\n            2 => 'color: #0000ff;',\n            3 => 'color: #46aa03; font-weight:bold;'\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #adadad; font-style: italic;',\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099; font-weight: bold;'\n            ),\n        'BRACKETS' => array(\n            0 => 'color: #0000ff;'\n            ),\n        'STRINGS' => array(\n            0 => 'color: #7f007f;'\n            ),\n        'NUMBERS' => array(\n            0 => 'color: #dd22dd;'\n            ),\n        'METHODS' => array(\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #008000;'\n            ),\n        'REGEXPS' => array(\n            0 => 'color: #22bbff;',\n            1 => 'color: #22bbff;',\n            2 => 'color: #993333;'\n            ),\n        'SCRIPT' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => ''\n        ),\n    'OOLANG' => false,\n    'OBJECT_SPLITTERS' => array(\n        ),\n    'REGEXPS' => array(\n        //Hex numbers\n        0 => '0[0-9a-fA-F]{1,32}[hH]',\n        //Binary numbers\n        1 => '\\%[01]{1,64}|[01]{1,64}[bB]?(?![^<]*>)',\n        //Labels\n        2 => '^[_a-zA-Z][_a-zA-Z0-9]?\\:'\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        ),\n    'TAB_WIDTH' => 8\n);\n"
  },
  {
    "path": "includes/geshi/zxbasic.php",
    "content": "<?php\n/*************************************************************************************\n * zxbasic.php\n * -------------\n * Author: Jose Rodriguez (a.k.a. Boriel)\n * Based on Copyright: (c) 2005 Roberto Rossi (http://rsoftware.altervista.org) Freebasic template\n * Release Version: 1.0.9.1\n * Date Started: 2010/06/19\n *\n * ZXBasic language file for GeSHi.\n *\n * More details at http://www.zxbasic.net/\n *\n * CHANGES\n * -------\n * 2010/06/19 (1.0.0)\n *  -  First Release\n *\n * TODO (updated 2007/02/06)\n * -------------------------\n *\n *************************************************************************************\n *\n *     This file is part of GeSHi.\n *\n *   GeSHi is free software; you can redistribute it and/or modify\n *   it under the terms of the GNU General Public License as published by\n *   the Free Software Foundation; either version 2 of the License, or\n *   (at your option) any later version.\n *\n *   GeSHi is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU General Public License for more details.\n *\n *   You should have received a copy of the GNU General Public License\n *   along with GeSHi; if not, write to the Free Software\n *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n ************************************************************************************/\n\n$language_data = array (\n    'LANG_NAME' => 'ZXBasic',\n    'COMMENT_SINGLE' => array(\n        1 => \"'\",\n        2 => '#',\n        3 => 'REM'\n        ),\n    'COMMENT_MULTI' => array(\"/'\" => \"'/\"),\n    'CASE_KEYWORDS' => GESHI_CAPS_UPPER, //GESHI_CAPS_NO_CHANGE,\n    'QUOTEMARKS' => array('\"'),\n    'ESCAPE_CHAR' => '\\\\',\n    'KEYWORDS' => array(\n        1 => array(\n            \"ASM\", \"BEEP\", \"BOLD\", \"BORDER\", \"BRIGHT\", \"ByRef\", \"ByVal\", \"CAST\",\n            \"CIRCLE\", \"CLS\", \"CONST\", \"CONTINUE\", \"DECLARE\", \"DIM\", \"DO\",\n            \"DRAW\", \"ELSE\", \"ELSEIF\", \"END\", \"EXIT\", \"FastCall\", \"FLASH\", \"FOR\",\n            \"FUNCTION\", \"GOTO\", \"GOSUB\", \"GO\", \"IF\", \"INK\", \"INVERSE\", \"ITALIC\",\n            \"LET\", \"LOAD\", \"LOOP\", \"NEXT\", \"OVER\", \"PAPER\", \"PAUSE\", \"PI\",\n            \"PLOT\", \"POKE\", \"PRINT\", \"RANDOMIZE\", \"REM\", \"RETURN\", \"SAVE\",\n            \"StdCall\", \"Sub\", \"THEN\", \"TO\", \"UNTIL\", \"VERIFY\", \"WEND\", \"WHILE\",\n            ),\n\n        // types\n        2 => array(\n            'byte', 'ubyte', 'integer', 'uinteger', 'long', 'ulong', 'fixed',\n            'float', 'string'\n            ),\n\n        // Functions\n        3 => array(\n            \"ABS\", \"ACS\", \"ASN\", \"ATN\", \"CHR\", \"CODE\", \"COS\", \"CSRLIN\", \"EXP\",\n            \"HEX\", \"HEX16\", \"INKEY\", \"INT\", \"LEN\", \"LN\", \"PEEK\", \"POS\", \"RND\",\n            \"SCREEN$\", \"SGN\", \"SIN\", \"SQR\", \"STR\", \"TAN\", \"VAL\",\n            ),\n\n        // Operators and modifiers\n        4 => array(\n            \"AT\", \"AS\", \"AND\", \"MOD\", \"NOT\", \"OR\", \"SHL\", \"SHR\", \"STEP\", \"XOR\"\n            )\n        ),\n    'SYMBOLS' => array(\n        '(', ')'\n        ),\n    'CASE_SENSITIVE' => array(\n        GESHI_COMMENTS => false,\n        1 => false,\n        2 => false,\n        3 => false,\n        4 => false\n        ),\n    'STYLES' => array(\n        'KEYWORDS' => array(\n            1 => 'color: #000080; font-weight: bold;', // Commands\n            2 => 'color: #800080; font-weight: bold;', // Types\n            3 => 'color: #006000; font-weight: bold;', // Functions\n            4 => 'color: #801010; font-weight: bold;'  // Operators and Modifiers\n            ),\n        'COMMENTS' => array(\n            1 => 'color: #808080; font-style: italic;',\n            2 => 'color: #339933;',\n            3 => 'color: #808080; font-style: italic;',\n            'MULTI' => 'color: #808080; font-style: italic;'\n            ),\n        'BRACKETS' => array(\n            //0 => 'color: #66cc66;'\n            0 => 'color: #007676;'\n            ),\n        'STRINGS' => array(\n            //0 => 'color: #ff0000;'\n            0 => 'color: #A00000; font-style: italic;'\n            ),\n        'NUMBERS' => array(\n            //0 => 'color: #cc66cc;'\n            0 => 'color: #b05103;'// font-weight: bold;'\n            ),\n        'METHODS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'SYMBOLS' => array(\n            0 => 'color: #66cc66;'\n            ),\n        'ESCAPE_CHAR' => array(\n            0 => 'color: #000099;'\n            ),\n        'SCRIPT' => array(\n            ),\n        'REGEXPS' => array(\n            )\n        ),\n    'URLS' => array(\n        1 => '',\n        2 => '',\n        3 => '',\n        4 => ''\n        ),\n    'OOLANG' => true,\n    'OBJECT_SPLITTERS' => array(\n        1 => '.'\n        ),\n    'REGEXPS' => array(\n        ),\n    'STRICT_MODE_APPLIES' => GESHI_NEVER,\n    'SCRIPT_DELIMITERS' => array(\n        ),\n    'HIGHLIGHT_STRICT_BLOCK' => array(\n        )\n);\n"
  },
  {
    "path": "includes/geshi.php",
    "content": "<?php\n/**\n * GeSHi - Generic Syntax Highlighter\n *\n * The GeSHi class for Generic Syntax Highlighting. Please refer to the\n * documentation at http://qbnz.com/highlighter/documentation.php for more\n * information about how to use this class.\n *\n * For changes, release notes, TODOs etc, see the relevant files in the docs/\n * directory.\n *\n *   This file is part of GeSHi.\n *\n *  GeSHi is free software; you can redistribute it and/or modify\n *  it under the terms of the GNU General Public License as published by\n *  the Free Software Foundation; either version 2 of the License, or\n *  (at your option) any later version.\n *\n *  GeSHi is distributed in the hope that it will be useful,\n *  but WITHOUT ANY WARRANTY; without even the implied warranty of\n *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *  GNU General Public License for more details.\n *\n *  You should have received a copy of the GNU General Public License\n *  along with GeSHi; if not, write to the Free Software\n *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\n *\n * @package    geshi\n * @subpackage core\n * @author     Nigel McNie <nigel@geshi.org>, Benny Baumann <BenBE@omorphia.de>\n * @copyright  (C) 2004 - 2007 Nigel McNie, (C) 2007 - 2014 Benny Baumann\n * @license    http://gnu.org/copyleft/gpl.html GNU GPL\n */\n\n//\n// GeSHi Constants\n// You should use these constant names in your programs instead of\n// their values - you never know when a value may change in a future\n// version\n//\n\n/** The version of this GeSHi file */\ndefine('GESHI_VERSION', '1.0.9.1');\n\n// Define the root directory for the GeSHi code tree\nif (!defined('GESHI_ROOT')) {\n    /** The root directory for GeSHi */\n    define('GESHI_ROOT', dirname(__FILE__) . DIRECTORY_SEPARATOR);\n}\n/** The language file directory for GeSHi\n    @access private */\ndefine('GESHI_LANG_ROOT', GESHI_ROOT . 'geshi' . DIRECTORY_SEPARATOR);\n\n// Define if GeSHi should be paranoid about security\nif (!defined('GESHI_SECURITY_PARANOID')) {\n    /** Tells GeSHi to be paranoid about security settings */\n    define('GESHI_SECURITY_PARANOID', false);\n}\n\n// Line numbers - use with enable_line_numbers()\n/** Use no line numbers when building the result */\ndefine('GESHI_NO_LINE_NUMBERS', 0);\n/** Use normal line numbers when building the result */\ndefine('GESHI_NORMAL_LINE_NUMBERS', 1);\n/** Use fancy line numbers when building the result */\ndefine('GESHI_FANCY_LINE_NUMBERS', 2);\n\n// Container HTML type\n/** Use nothing to surround the source */\ndefine('GESHI_HEADER_NONE', 0);\n/** Use a \"div\" to surround the source */\ndefine('GESHI_HEADER_DIV', 1);\n/** Use a \"pre\" to surround the source */\ndefine('GESHI_HEADER_PRE', 2);\n/** Use a pre to wrap lines when line numbers are enabled or to wrap the whole code. */\ndefine('GESHI_HEADER_PRE_VALID', 3);\n/**\n * Use a \"table\" to surround the source:\n *\n *  <table>\n *    <thead><tr><td colspan=\"2\">$header</td></tr></thead>\n *    <tbody><tr><td><pre>$linenumbers</pre></td><td><pre>$code></pre></td></tr></tbody>\n *    <tfooter><tr><td colspan=\"2\">$footer</td></tr></tfoot>\n *  </table>\n *\n * this is essentially only a workaround for Firefox, see sf#1651996 or take a look at\n * https://bugzilla.mozilla.org/show_bug.cgi?id=365805\n * @note when linenumbers are disabled this is essentially the same as GESHI_HEADER_PRE\n */\ndefine('GESHI_HEADER_PRE_TABLE', 4);\n\n// Capatalisation constants\n/** Lowercase keywords found */\ndefine('GESHI_CAPS_NO_CHANGE', 0);\n/** Uppercase keywords found */\ndefine('GESHI_CAPS_UPPER', 1);\n/** Leave keywords found as the case that they are */\ndefine('GESHI_CAPS_LOWER', 2);\n\n// Link style constants\n/** Links in the source in the :link state */\ndefine('GESHI_LINK', 0);\n/** Links in the source in the :hover state */\ndefine('GESHI_HOVER', 1);\n/** Links in the source in the :active state */\ndefine('GESHI_ACTIVE', 2);\n/** Links in the source in the :visited state */\ndefine('GESHI_VISITED', 3);\n\n// Important string starter/finisher\n// Note that if you change these, they should be as-is: i.e., don't\n// write them as if they had been run through htmlentities()\n/** The starter for important parts of the source */\ndefine('GESHI_START_IMPORTANT', '<BEGIN GeSHi>');\n/** The ender for important parts of the source */\ndefine('GESHI_END_IMPORTANT', '<END GeSHi>');\n\n/**#@+\n *  @access private\n */\n// When strict mode applies for a language\n/** Strict mode never applies (this is the most common) */\ndefine('GESHI_NEVER', 0);\n/** Strict mode *might* apply, and can be enabled or\n    disabled by {@link GeSHi->enable_strict_mode()} */\ndefine('GESHI_MAYBE', 1);\n/** Strict mode always applies */\ndefine('GESHI_ALWAYS', 2);\n\n// Advanced regexp handling constants, used in language files\n/** The key of the regex array defining what to search for */\ndefine('GESHI_SEARCH', 0);\n/** The key of the regex array defining what bracket group in a\n    matched search to use as a replacement */\ndefine('GESHI_REPLACE', 1);\n/** The key of the regex array defining any modifiers to the regular expression */\ndefine('GESHI_MODIFIERS', 2);\n/** The key of the regex array defining what bracket group in a\n    matched search to put before the replacement */\ndefine('GESHI_BEFORE', 3);\n/** The key of the regex array defining what bracket group in a\n    matched search to put after the replacement */\ndefine('GESHI_AFTER', 4);\n/** The key of the regex array defining a custom keyword to use\n    for this regexp's html tag class */\ndefine('GESHI_CLASS', 5);\n\n/** Used in language files to mark comments */\ndefine('GESHI_COMMENTS', 0);\n\n/** some old PHP / PCRE subpatterns only support up to xxx subpatterns in\n    regular expressions. Set this to false if your PCRE lib is up to date\n    @see GeSHi->optimize_regexp_list()\n    **/\ndefine('GESHI_MAX_PCRE_SUBPATTERNS', 500);\n/** it's also important not to generate too long regular expressions\n    be generous here... but keep in mind, that when reaching this limit we\n    still have to close open patterns. 12k should do just fine on a 16k limit.\n    @see GeSHi->optimize_regexp_list()\n    **/\ndefine('GESHI_MAX_PCRE_LENGTH', 12288);\n\n//Number format specification\n/** Basic number format for integers */\ndefine('GESHI_NUMBER_INT_BASIC', 1);        //Default integers \\d+\n/** Enhanced number format for integers like seen in C */\ndefine('GESHI_NUMBER_INT_CSTYLE', 2);       //Default C-Style \\d+[lL]?\n/** Number format to highlight binary numbers with a suffix \"b\" */\ndefine('GESHI_NUMBER_BIN_SUFFIX', 16);           //[01]+[bB]\n/** Number format to highlight binary numbers with a prefix % */\ndefine('GESHI_NUMBER_BIN_PREFIX_PERCENT', 32);   //%[01]+\n/** Number format to highlight binary numbers with a prefix 0b (C) */\ndefine('GESHI_NUMBER_BIN_PREFIX_0B', 64);        //0b[01]+\n/** Number format to highlight octal numbers with a leading zero */\ndefine('GESHI_NUMBER_OCT_PREFIX', 256);           //0[0-7]+\n/** Number format to highlight octal numbers with a prefix 0o (logtalk) */\ndefine('GESHI_NUMBER_OCT_PREFIX_0O', 512);           //0[0-7]+\n/** Number format to highlight octal numbers with a leading @ (Used in HiSofts Devpac series). */\ndefine('GESHI_NUMBER_OCT_PREFIX_AT', 1024);           //@[0-7]+\n/** Number format to highlight octal numbers with a suffix of o */\ndefine('GESHI_NUMBER_OCT_SUFFIX', 2048);           //[0-7]+[oO]\n/** Number format to highlight hex numbers with a prefix 0x */\ndefine('GESHI_NUMBER_HEX_PREFIX', 4096);           //0x[0-9a-fA-F]+\n/** Number format to highlight hex numbers with a prefix $ */\ndefine('GESHI_NUMBER_HEX_PREFIX_DOLLAR', 8192);           //$[0-9a-fA-F]+\n/** Number format to highlight hex numbers with a suffix of h */\ndefine('GESHI_NUMBER_HEX_SUFFIX', 16384);           //[0-9][0-9a-fA-F]*h\n/** Number format to highlight floating-point numbers without support for scientific notation */\ndefine('GESHI_NUMBER_FLT_NONSCI', 65536);          //\\d+\\.\\d+\n/** Number format to highlight floating-point numbers without support for scientific notation */\ndefine('GESHI_NUMBER_FLT_NONSCI_F', 131072);       //\\d+(\\.\\d+)?f\n/** Number format to highlight floating-point numbers with support for scientific notation (E) and optional leading zero */\ndefine('GESHI_NUMBER_FLT_SCI_SHORT', 262144);      //\\.\\d+e\\d+\n/** Number format to highlight floating-point numbers with support for scientific notation (E) and required leading digit */\ndefine('GESHI_NUMBER_FLT_SCI_ZERO', 524288);       //\\d+(\\.\\d+)?e\\d+\n//Custom formats are passed by RX array\n\n// Error detection - use these to analyse faults\n/** No sourcecode to highlight was specified\n * @deprecated\n */\ndefine('GESHI_ERROR_NO_INPUT', 1);\n/** The language specified does not exist */\ndefine('GESHI_ERROR_NO_SUCH_LANG', 2);\n/** GeSHi could not open a file for reading (generally a language file) */\ndefine('GESHI_ERROR_FILE_NOT_READABLE', 3);\n/** The header type passed to {@link GeSHi->set_header_type()} was invalid */\ndefine('GESHI_ERROR_INVALID_HEADER_TYPE', 4);\n/** The line number type passed to {@link GeSHi->enable_line_numbers()} was invalid */\ndefine('GESHI_ERROR_INVALID_LINE_NUMBER_TYPE', 5);\n/**#@-*/\n\n\n/**\n * The GeSHi Class.\n *\n * Please refer to the documentation for GeSHi 1.0.X that is available\n * at http://qbnz.com/highlighter/documentation.php for more information\n * about how to use this class.\n *\n * @package   geshi\n * @author    Nigel McNie <nigel@geshi.org>\n * @author    Benny Baumann <BenBE@omorphia.de>\n * @copyright (C) 2004 - 2007 Nigel McNie, (C) 2007 - 2014 Benny Baumann\n */\nclass GeSHi {\n\n    /**\n     * The source code to highlight\n     * @var string\n     */\n    protected $source = '';\n\n    /**\n     * The language to use when highlighting\n     * @var string\n     */\n    protected $language = '';\n\n    /**\n     * The data for the language used\n     * @var array\n     */\n    protected $language_data = array();\n\n    /**\n     * The path to the language files\n     * @var string\n     */\n    protected $language_path = GESHI_LANG_ROOT;\n\n    /**\n     * The error message associated with an error\n     * @var string\n     * @todo check err reporting works\n     */\n    protected $error = false;\n\n    /**\n     * Possible error messages\n     * @var array\n     */\n    protected $error_messages = array(\n        GESHI_ERROR_NO_SUCH_LANG => 'GeSHi could not find the language {LANGUAGE} (using path {PATH})',\n        GESHI_ERROR_FILE_NOT_READABLE => 'The file specified for load_from_file was not readable',\n        GESHI_ERROR_INVALID_HEADER_TYPE => 'The header type specified is invalid',\n        GESHI_ERROR_INVALID_LINE_NUMBER_TYPE => 'The line number type specified is invalid'\n    );\n\n    /**\n     * Whether highlighting is strict or not\n     * @var boolean\n     */\n    protected $strict_mode = false;\n\n    /**\n     * Whether to use CSS classes in output\n     * @var boolean\n     */\n    protected $use_classes = false;\n\n    /**\n     * The type of header to use. Can be one of the following\n     * values:\n     *\n     * - GESHI_HEADER_PRE: Source is outputted in a \"pre\" HTML element.\n     * - GESHI_HEADER_DIV: Source is outputted in a \"div\" HTML element.\n     * - GESHI_HEADER_NONE: No header is outputted.\n     *\n     * @var int\n     */\n    protected $header_type = GESHI_HEADER_PRE;\n\n    /**\n     * Array of permissions for which lexics should be highlighted\n     * @var array\n     */\n    protected $lexic_permissions = array(\n        'KEYWORDS' =>    array(),\n        'COMMENTS' =>    array('MULTI' => true),\n        'REGEXPS' =>     array(),\n        'ESCAPE_CHAR' => true,\n        'BRACKETS' =>    true,\n        'SYMBOLS' =>     false,\n        'STRINGS' =>     true,\n        'NUMBERS' =>     true,\n        'METHODS' =>     true,\n        'SCRIPT' =>      true\n    );\n\n    /**\n     * The time it took to parse the code\n     * @var double\n     */\n    protected $time = 0;\n\n    /**\n     * The content of the header block\n     * @var string\n     */\n    protected $header_content = '';\n\n    /**\n     * The content of the footer block\n     * @var string\n     */\n    protected $footer_content = '';\n\n    /**\n     * The style of the header block\n     * @var string\n     */\n    protected $header_content_style = '';\n\n    /**\n     * The style of the footer block\n     * @var string\n     */\n    protected $footer_content_style = '';\n\n    /**\n     * Tells if a block around the highlighted source should be forced\n     * if not using line numbering\n     * @var boolean\n     */\n    protected $force_code_block = false;\n\n    /**\n     * The styles for hyperlinks in the code\n     * @var array\n     */\n    protected $link_styles = array();\n\n    /**\n     * Whether important blocks should be recognised or not\n     * @var boolean\n     * @deprecated\n     * @todo REMOVE THIS FUNCTIONALITY!\n     */\n    protected $enable_important_blocks = false;\n\n    /**\n     * Styles for important parts of the code\n     * @var string\n     * @deprecated\n     * @todo As above - rethink the whole idea of important blocks as it is buggy and\n     * will be hard to implement in 1.2\n     */\n    protected $important_styles = 'font-weight: bold; color: red;'; // Styles for important parts of the code\n\n    /**\n     * Whether CSS IDs should be added to the code\n     * @var boolean\n     */\n    protected $add_ids = false;\n\n    /**\n     * Lines that should be highlighted extra\n     * @var array\n     */\n    protected $highlight_extra_lines = array();\n\n    /**\n     * Styles of lines that should be highlighted extra\n     * @var array\n     */\n    protected $highlight_extra_lines_styles = array();\n\n    /**\n     * Styles of extra-highlighted lines\n     * @var string\n     */\n    protected $highlight_extra_lines_style = 'background-color: #ffc;';\n\n    /**\n     * The line ending\n     * If null, nl2br() will be used on the result string.\n     * Otherwise, all instances of \\n will be replaced with $line_ending\n     * @var string\n     */\n    protected $line_ending = null;\n\n    /**\n     * Number at which line numbers should start at\n     * @var int\n     */\n    protected $line_numbers_start = 1;\n\n    /**\n     * The overall style for this code block\n     * @var string\n     */\n    protected $overall_style = 'font-family:monospace;';\n\n    /**\n     *  The style for the actual code\n     * @var string\n     */\n    protected $code_style = 'font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;';\n\n    /**\n     * The overall class for this code block\n     * @var string\n     */\n    protected $overall_class = '';\n\n    /**\n     * The overall ID for this code block\n     * @var string\n     */\n    protected $overall_id = '';\n\n    /**\n     * Line number styles\n     * @var string\n     */\n    protected $line_style1 = 'font-weight: normal; vertical-align:top;';\n\n    /**\n     * Line number styles for fancy lines\n     * @var string\n     */\n    protected $line_style2 = 'font-weight: bold; vertical-align:top;';\n\n    /**\n     * Style for line numbers when GESHI_HEADER_PRE_TABLE is chosen\n     * @var string\n     */\n    protected $table_linenumber_style = 'width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;';\n\n    /**\n     * Flag for how line numbers are displayed\n     * @var boolean\n     */\n    protected $line_numbers = GESHI_NO_LINE_NUMBERS;\n\n    /**\n     * Flag to decide if multi line spans are allowed. Set it to false to make sure\n     * each tag is closed before and reopened after each linefeed.\n     * @var boolean\n     */\n    protected $allow_multiline_span = true;\n\n    /**\n     * The \"nth\" value for fancy line highlighting\n     * @var int\n     */\n    protected $line_nth_row = 0;\n\n    /**\n     * The size of tab stops\n     * @var int\n     */\n    protected $tab_width = 8;\n\n    /**\n     * Should we use language-defined tab stop widths?\n     * @var int\n     */\n    protected $use_language_tab_width = false;\n\n    /**\n     * Default target for keyword links\n     * @var string\n     */\n    protected $link_target = '';\n\n    /**\n     * The encoding to use for entity encoding\n     * NOTE: Used with Escape Char Sequences to fix UTF-8 handling (cf. SF#2037598)\n     * @var string\n     */\n    protected $encoding = 'utf-8';\n\n    /**\n     * Should keywords be linked?\n     * @var boolean\n     */\n    protected $keyword_links = true;\n\n    /**\n     * Currently loaded language file\n     * @var    string\n     * @since 1.0.7.22\n     */\n    protected $loaded_language = '';\n\n    /**\n     * Wether the caches needed for parsing are built or not\n     *\n     * @var   bool\n     * @since 1.0.8\n     */\n    protected $parse_cache_built = false;\n\n    /**\n     * Work around for Suhosin Patch with disabled /e modifier\n     *\n     * Note from suhosins author in config file:\n     * <blockquote>\n     *   The /e modifier inside <code>preg_replace()</code> allows code execution.\n     *   Often it is the cause for remote code execution exploits. It is wise to\n     *   deactivate this feature and test where in the application it is used.\n     *   The developer using the /e modifier should be made aware that he should\n     *   use <code>preg_replace_callback()</code> instead\n     * </blockquote>\n     *\n     * @var   array\n     * @since 1.0.8\n     */\n    protected $_kw_replace_group = 0;\n    protected $_rx_key = 0;\n\n    /**\n     * some \"callback parameters\" for handle_multiline_regexps\n     *\n     * @since  1.0.8\n     * @access private\n     * @var    string\n     */\n    protected $_hmr_before = '';\n    protected $_hmr_replace = '';\n    protected $_hmr_after = '';\n    protected $_hmr_key = 0;\n\n    /**\n     * Creates a new GeSHi object, with source and language\n     *\n     * @param string $source   The source code to highlight\n     * @param string $language The language to highlight the source with\n     * @param string $path     The path to the language file directory. <b>This\n     *               is deprecated!</b> I've backported the auto path\n     *               detection from the 1.1.X dev branch, so now it\n     *               should be automatically set correctly. If you have\n     *               renamed the language directory however, you will\n     *               still need to set the path using this parameter or\n     *               {@link GeSHi->set_language_path()}\n     * @since 1.0.0\n     */\n    public function __construct($source = '', $language = '', $path = '') {\n        if ( is_string($source) && ($source !== '') ) {\n            $this->set_source($source);\n        }\n        if ( is_string($language) && ($language !== '') ) {\n            $this->set_language($language);\n        }\n        $this->set_language_path($path);\n    }\n\n    /**\n     * Returns the version of GeSHi\n     *\n     * @return string\n     * @since  1.0.8.11\n     */\n    public function get_version()\n    {\n        return GESHI_VERSION;\n    }\n\n    /**\n     * Returns an error message associated with the last GeSHi operation,\n     * or false if no error has occurred\n     *\n     * @return string|false An error message if there has been an error, else false\n     * @since  1.0.0\n     */\n    public function error() {\n        if ($this->error) {\n            //Put some template variables for debugging here ...\n            $debug_tpl_vars = array(\n                '{LANGUAGE}' => $this->language,\n                '{PATH}' => $this->language_path\n            );\n            $msg = str_replace(\n                array_keys($debug_tpl_vars),\n                array_values($debug_tpl_vars),\n                $this->error_messages[$this->error]);\n\n            return \"<br /><strong>GeSHi Error:</strong> $msg (code {$this->error})<br />\";\n        }\n        return false;\n    }\n\n    /**\n     * Gets a human-readable language name (thanks to Simon Patterson\n     * for the idea :))\n     *\n     * @return string The name for the current language\n     * @since  1.0.2\n     */\n    public function get_language_name() {\n        if (GESHI_ERROR_NO_SUCH_LANG == $this->error) {\n            return $this->language_data['LANG_NAME'] . ' (Unknown Language)';\n        }\n        return $this->language_data['LANG_NAME'];\n    }\n\n    /**\n     * Sets the source code for this object\n     *\n     * @param string $source The source code to highlight\n     * @since 1.0.0\n     */\n    public function set_source($source) {\n        $this->source = $source;\n        $this->highlight_extra_lines = array();\n    }\n\n    /**\n     * Clean up the language name to prevent malicious code injection\n     *\n     * @param string $language The name of the language to strip\n     * @since 1.0.9.1\n     */\n    public function strip_language_name($language) {\n        $language = preg_replace('#[^a-zA-Z0-9\\-_]#', '', $language);\n        $language = strtolower($language);\n\n        return $language;\n    }\n\n    /**\n     * Sets the language for this object\n     *\n     * @note since 1.0.8 this function won't reset language-settings by default anymore!\n     *       if you need this set $force_reset = true\n     *\n     * @param string $language    The name of the language to use\n     * @param bool   $force_reset\n     * @since 1.0.0\n     */\n    public function set_language($language, $force_reset = false) {\n        $this->error = false;\n        $this->strict_mode = GESHI_NEVER;\n\n        if ($force_reset) {\n            $this->loaded_language = false;\n        }\n\n        //Clean up the language name to prevent malicious code injection\n        $language = $this->strip_language_name($language);\n\n        //Retreive the full filename\n        $file_name = $this->language_path . $language . '.php';\n        if ($file_name == $this->loaded_language) {\n            // this language is already loaded!\n            return;\n        }\n\n        $this->language = $language;\n\n        //Check if we can read the desired file\n        if (!is_readable($file_name)) {\n            $this->error = GESHI_ERROR_NO_SUCH_LANG;\n            return;\n        }\n\n        // Load the language for parsing\n        $this->load_language($file_name);\n    }\n\n    /**\n     * Sets the path to the directory containing the language files. Note\n     * that this path is relative to the directory of the script that included\n     * geshi.php, NOT geshi.php itself.\n     *\n     * @param string $path The path to the language directory\n     * @since 1.0.0\n     * @deprecated The path to the language files should now be automatically\n     *             detected, so this method should no longer be needed. The\n     *             1.1.X branch handles manual setting of the path differently\n     *             so this method will disappear in 1.2.0.\n     */\n    public function set_language_path($path) {\n        if(strpos($path,':')) {\n            //Security Fix to prevent external directories using fopen wrappers.\n            if(DIRECTORY_SEPARATOR == \"\\\\\") {\n                if(!preg_match('#^[a-zA-Z]:#', $path) || false !== strpos($path, ':', 2)) {\n                    return;\n                }\n            } else {\n                return;\n            }\n        }\n        if(preg_match('#[^/a-zA-Z0-9_\\.\\-\\\\\\s:]#', $path)) {\n            //Security Fix to prevent external directories using fopen wrappers.\n            return;\n        }\n        if(GESHI_SECURITY_PARANOID && false !== strpos($path, '/.')) {\n            //Security Fix to prevent external directories using fopen wrappers.\n            return;\n        }\n        if(GESHI_SECURITY_PARANOID && false !== strpos($path, '..')) {\n            //Security Fix to prevent external directories using fopen wrappers.\n            return;\n        }\n        if ($path) {\n            $this->language_path = ('/' == $path[strlen($path) - 1]) ? $path : $path . '/';\n            $this->set_language($this->language); // otherwise set_language_path has no effect\n        }\n    }\n\n    /**\n     * Get supported langs or an associative array lang=>full_name.\n     * @param boolean $full_names\n     * @return array\n     */\n    public function get_supported_languages($full_names=false)\n    {\n        // return array\n        $back = array();\n\n        // we walk the lang root\n        $dir = dir($this->language_path);\n\n        // foreach entry\n        while (false !== ($entry = $dir->read()))\n        {\n            $full_path = $this->language_path.$entry;\n\n            // Skip all dirs\n            if (is_dir($full_path)) {\n                continue;\n            }\n\n            // we only want lang.php files\n            if (!preg_match('/^([^.]+)\\.php$/', $entry, $matches)) {\n                continue;\n            }\n\n            // Raw lang name is here\n            $langname = $matches[1];\n\n            // We want the fullname too?\n            if ($full_names === true)\n            {\n                if (false !== ($fullname = $this->get_language_fullname($langname)))\n                {\n                    $back[$langname] = $fullname; // we go associative\n                }\n            }\n            else\n            {\n                // just store raw langname\n                $back[] = $langname;\n            }\n        }\n\n        $dir->close();\n\n        return $back;\n    }\n\n    /**\n     * Get full_name for a lang or false.\n     * @param string $language short langname (html4strict for example)\n     * @return mixed\n     */\n    public function get_language_fullname($language)\n    {\n        //Clean up the language name to prevent malicious code injection\n        $language = preg_replace('#[^a-zA-Z0-9\\-_]#', '', $language);\n\n        $language = strtolower($language);\n\n        // get fullpath-filename for a langname\n        $fullpath = $this->language_path.$language.'.php';\n\n        // we need to get contents :S\n        if (false === ($data = file_get_contents($fullpath))) {\n            $this->error = sprintf('Geshi::get_lang_fullname() Unknown Language: %s', $language);\n            return false;\n        }\n\n        // match the langname\n        if (!preg_match('/\\'LANG_NAME\\'\\s*=>\\s*\\'((?:[^\\']|\\\\\\')+?)\\'/', $data, $matches)) {\n            $this->error = sprintf('Geshi::get_lang_fullname(%s): Regex can not detect language', $language);\n            return false;\n        }\n\n        // return fullname for langname\n        return stripcslashes($matches[1]);\n    }\n\n    /**\n     * Sets the type of header to be used.\n     *\n     * If GESHI_HEADER_DIV is used, the code is surrounded in a \"div\".This\n     * means more source code but more control over tab width and line-wrapping.\n     * GESHI_HEADER_PRE means that a \"pre\" is used - less source, but less\n     * control. Default is GESHI_HEADER_PRE.\n     *\n     * From 1.0.7.2, you can use GESHI_HEADER_NONE to specify that no header code\n     * should be outputted.\n     *\n     * @param int $type The type of header to be used\n     * @since 1.0.0\n     */\n    public function set_header_type($type) {\n        //Check if we got a valid header type\n        if (!in_array($type, array(GESHI_HEADER_NONE, GESHI_HEADER_DIV,\n            GESHI_HEADER_PRE, GESHI_HEADER_PRE_VALID, GESHI_HEADER_PRE_TABLE))) {\n            $this->error = GESHI_ERROR_INVALID_HEADER_TYPE;\n            return;\n        }\n\n        //Set that new header type\n        $this->header_type = $type;\n    }\n\n    /**\n     * Sets the styles for the code that will be outputted\n     * when this object is parsed. The style should be a\n     * string of valid stylesheet declarations\n     *\n     * @param string  $style             The overall style for the outputted code block\n     * @param boolean $preserve_defaults Whether to merge the styles with the current styles or not\n     * @since 1.0.0\n     */\n    public function set_overall_style($style, $preserve_defaults = false) {\n        if (!$preserve_defaults) {\n            $this->overall_style = $style;\n        } else {\n            $this->overall_style .= $style;\n        }\n    }\n\n    /**\n     * Sets the overall classname for this block of code. This\n     * class can then be used in a stylesheet to style this object's\n     * output\n     *\n     * @param string $class The class name to use for this block of code\n     * @since 1.0.0\n     */\n    public function set_overall_class($class) {\n        $this->overall_class = $class;\n    }\n\n    /**\n     * Sets the overall id for this block of code. This id can then\n     * be used in a stylesheet to style this object's output\n     *\n     * @param string $id The ID to use for this block of code\n     * @since 1.0.0\n     */\n    public function set_overall_id($id) {\n        $this->overall_id = $id;\n    }\n\n    /**\n     * Sets whether CSS classes should be used to highlight the source. Default\n     * is off, calling this method with no arguments will turn it on\n     *\n     * @param boolean $flag Whether to turn classes on or not\n     * @since 1.0.0\n     */\n    public function enable_classes($flag = true) {\n        $this->use_classes = ($flag) ? true : false;\n    }\n\n    /**\n     * Sets the style for the actual code. This should be a string\n     * containing valid stylesheet declarations. If $preserve_defaults is\n     * true, then styles are merged with the default styles, with the\n     * user defined styles having priority\n     *\n     * Note: Use this method to override any style changes you made to\n     * the line numbers if you are using line numbers, else the line of\n     * code will have the same style as the line number! Consult the\n     * GeSHi documentation for more information about this.\n     *\n     * @param string  $style             The style to use for actual code\n     * @param boolean $preserve_defaults Whether to merge the current styles with the new styles\n     * @since 1.0.2\n     */\n    public function set_code_style($style, $preserve_defaults = false) {\n        if (!$preserve_defaults) {\n            $this->code_style = $style;\n        } else {\n            $this->code_style .= $style;\n        }\n    }\n\n    /**\n     * Sets the styles for the line numbers.\n     *\n     * @param string         $style1 The style for the line numbers that are \"normal\"\n     * @param string|boolean $style2 If a string, this is the style of the line\n     *        numbers that are \"fancy\", otherwise if boolean then this\n     *        defines whether the normal styles should be merged with the\n     *        new normal styles or not\n     * @param boolean        $preserve_defaults If set, is the flag for whether to merge the \"fancy\"\n     *        styles with the current styles or not\n     * @since 1.0.2\n     */\n    public function set_line_style($style1, $style2 = '', $preserve_defaults = false) {\n        //Check if we got 2 or three parameters\n        if (is_bool($style2)) {\n            $preserve_defaults = $style2;\n            $style2 = '';\n        }\n\n        //Actually set the new styles\n        if (!$preserve_defaults) {\n            $this->line_style1 = $style1;\n            $this->line_style2 = $style2;\n        } else {\n            $this->line_style1 .= $style1;\n            $this->line_style2 .= $style2;\n        }\n    }\n\n    /**\n     * Sets whether line numbers should be displayed.\n     *\n     * Valid values for the first parameter are:\n     *\n     *  - GESHI_NO_LINE_NUMBERS: Line numbers will not be displayed\n     *  - GESHI_NORMAL_LINE_NUMBERS: Line numbers will be displayed\n     *  - GESHI_FANCY_LINE_NUMBERS: Fancy line numbers will be displayed\n     *\n     * For fancy line numbers, the second parameter is used to signal which lines\n     * are to be fancy. For example, if the value of this parameter is 5 then every\n     * 5th line will be fancy.\n     *\n     * @param int $flag    How line numbers should be displayed\n     * @param int $nth_row Defines which lines are fancy\n     * @since 1.0.0\n     */\n    public function enable_line_numbers($flag, $nth_row = 5) {\n        if (GESHI_NO_LINE_NUMBERS != $flag && GESHI_NORMAL_LINE_NUMBERS != $flag\n            && GESHI_FANCY_LINE_NUMBERS != $flag) {\n            $this->error = GESHI_ERROR_INVALID_LINE_NUMBER_TYPE;\n        }\n        $this->line_numbers = $flag;\n        $this->line_nth_row = $nth_row;\n    }\n\n    /**\n     * Sets wether spans and other HTML markup generated by GeSHi can\n     * span over multiple lines or not. Defaults to true to reduce overhead.\n     * Set it to false if you want to manipulate the output or manually display\n     * the code in an ordered list.\n     *\n     * @param boolean $flag Wether multiline spans are allowed or not\n     * @since 1.0.7.22\n     */\n    public function enable_multiline_span($flag) {\n        $this->allow_multiline_span = (bool) $flag;\n    }\n\n    /**\n     * Get current setting for multiline spans, see GeSHi->enable_multiline_span().\n     *\n     * @see enable_multiline_span\n     * @return bool\n     */\n    public function get_multiline_span() {\n        return $this->allow_multiline_span;\n    }\n\n    /**\n     * Sets the style for a keyword group. If $preserve_defaults is\n     * true, then styles are merged with the default styles, with the\n     * user defined styles having priority\n     *\n     * @param int     $key               The key of the keyword group to change the styles of\n     * @param string  $style             The style to make the keywords\n     * @param boolean $preserve_defaults Whether to merge the new styles with the old or just\n     *                to overwrite them\n     * @since 1.0.0\n     */\n    public function set_keyword_group_style($key, $style, $preserve_defaults = false) {\n        //Set the style for this keyword group\n        if('*' == $key) {\n            foreach($this->language_data['STYLES']['KEYWORDS'] as $_key => $_value) {\n                if (!$preserve_defaults) {\n                    $this->language_data['STYLES']['KEYWORDS'][$_key] = $style;\n                } else {\n                    $this->language_data['STYLES']['KEYWORDS'][$_key] .= $style;\n                }\n            }\n        } else {\n            if (!$preserve_defaults) {\n                $this->language_data['STYLES']['KEYWORDS'][$key] = $style;\n            } else {\n                $this->language_data['STYLES']['KEYWORDS'][$key] .= $style;\n            }\n        }\n\n        //Update the lexic permissions\n        if (!isset($this->lexic_permissions['KEYWORDS'][$key])) {\n            $this->lexic_permissions['KEYWORDS'][$key] = true;\n        }\n    }\n\n    /**\n     * Turns highlighting on/off for a keyword group\n     *\n     * @param int     $key  The key of the keyword group to turn on or off\n     * @param boolean $flag Whether to turn highlighting for that group on or off\n     * @since 1.0.0\n     */\n    public function set_keyword_group_highlighting($key, $flag = true) {\n        $this->lexic_permissions['KEYWORDS'][$key] = ($flag) ? true : false;\n    }\n\n    /**\n     * Sets the styles for comment groups.  If $preserve_defaults is\n     * true, then styles are merged with the default styles, with the\n     * user defined styles having priority\n     *\n     * @param int     $key               The key of the comment group to change the styles of\n     * @param string  $style             The style to make the comments\n     * @param boolean $preserve_defaults Whether to merge the new styles with the old or just\n     *                to overwrite them\n     * @since 1.0.0\n     */\n    public function set_comments_style($key, $style, $preserve_defaults = false) {\n        if('*' == $key) {\n            foreach($this->language_data['STYLES']['COMMENTS'] as $_key => $_value) {\n                if (!$preserve_defaults) {\n                    $this->language_data['STYLES']['COMMENTS'][$_key] = $style;\n                } else {\n                    $this->language_data['STYLES']['COMMENTS'][$_key] .= $style;\n                }\n            }\n        } else {\n            if (!$preserve_defaults) {\n                $this->language_data['STYLES']['COMMENTS'][$key] = $style;\n            } else {\n                $this->language_data['STYLES']['COMMENTS'][$key] .= $style;\n            }\n        }\n    }\n\n    /**\n     * Turns highlighting on/off for comment groups\n     *\n     * @param int     $key  The key of the comment group to turn on or off\n     * @param boolean $flag Whether to turn highlighting for that group on or off\n     * @since 1.0.0\n     */\n    public function set_comments_highlighting($key, $flag = true) {\n        $this->lexic_permissions['COMMENTS'][$key] = ($flag) ? true : false;\n    }\n\n    /**\n     * Sets the styles for escaped characters. If $preserve_defaults is\n     * true, then styles are merged with the default styles, with the\n     * user defined styles having priority\n     *\n     * @param string  $style             The style to make the escape characters\n     * @param boolean $preserve_defaults Whether to merge the new styles with the old or just\n     *                                   to overwrite them\n     * @param int     $group             Tells the group of symbols for which style should be set.\n     * @since 1.0.0\n     */\n    public function set_escape_characters_style($style, $preserve_defaults = false, $group = 0) {\n        if (!$preserve_defaults) {\n            $this->language_data['STYLES']['ESCAPE_CHAR'][$group] = $style;\n        } else {\n            $this->language_data['STYLES']['ESCAPE_CHAR'][$group] .= $style;\n        }\n    }\n\n    /**\n     * Turns highlighting on/off for escaped characters\n     *\n     * @param boolean $flag Whether to turn highlighting for escape characters on or off\n     * @since 1.0.0\n     */\n    public function set_escape_characters_highlighting($flag = true) {\n        $this->lexic_permissions['ESCAPE_CHAR'] = ($flag) ? true : false;\n    }\n\n    /**\n     * Sets the styles for brackets. If $preserve_defaults is\n     * true, then styles are merged with the default styles, with the\n     * user defined styles having priority\n     *\n     * This method is DEPRECATED: use set_symbols_style instead.\n     * This method will be removed in 1.2.X\n     *\n     * @param string  $style             The style to make the brackets\n     * @param boolean $preserve_defaults Whether to merge the new styles with the old or just\n     *                to overwrite them\n     * @since 1.0.0\n     * @deprecated In favour of set_symbols_style\n     */\n    public function set_brackets_style($style, $preserve_defaults = false) {\n        if (!$preserve_defaults) {\n            $this->language_data['STYLES']['BRACKETS'][0] = $style;\n        } else {\n            $this->language_data['STYLES']['BRACKETS'][0] .= $style;\n        }\n    }\n\n    /**\n     * Turns highlighting on/off for brackets\n     *\n     * This method is DEPRECATED: use set_symbols_highlighting instead.\n     * This method will be remove in 1.2.X\n     *\n     * @param boolean $flag Whether to turn highlighting for brackets on or off\n     * @since 1.0.0\n     * @deprecated In favour of set_symbols_highlighting\n     */\n    public function set_brackets_highlighting($flag) {\n        $this->lexic_permissions['BRACKETS'] = ($flag) ? true : false;\n    }\n\n    /**\n     * Sets the styles for symbols. If $preserve_defaults is\n     * true, then styles are merged with the default styles, with the\n     * user defined styles having priority\n     *\n     * @param string  $style             The style to make the symbols\n     * @param boolean $preserve_defaults Whether to merge the new styles with the old or just\n     *                                   to overwrite them\n     * @param int     $group             Tells the group of symbols for which style should be set.\n     * @since 1.0.1\n     */\n    public function set_symbols_style($style, $preserve_defaults = false, $group = 0) {\n        // Update the style of symbols\n        if (!$preserve_defaults) {\n            $this->language_data['STYLES']['SYMBOLS'][$group] = $style;\n        } else {\n            $this->language_data['STYLES']['SYMBOLS'][$group] .= $style;\n        }\n\n        // For backward compatibility\n        if (0 == $group) {\n            $this->set_brackets_style ($style, $preserve_defaults);\n        }\n    }\n\n    /**\n     * Turns highlighting on/off for symbols\n     *\n     * @param boolean $flag Whether to turn highlighting for symbols on or off\n     * @since 1.0.0\n     */\n    public function set_symbols_highlighting($flag) {\n        // Update lexic permissions for this symbol group\n        $this->lexic_permissions['SYMBOLS'] = ($flag) ? true : false;\n\n        // For backward compatibility\n        $this->set_brackets_highlighting ($flag);\n    }\n\n    /**\n     * Sets the styles for strings. If $preserve_defaults is\n     * true, then styles are merged with the default styles, with the\n     * user defined styles having priority\n     *\n     * @param string  $style             The style to make the escape characters\n     * @param boolean $preserve_defaults Whether to merge the new styles with the old or just\n     *                                   to overwrite them\n     * @param int     $group             Tells the group of strings for which style should be set.\n     * @since 1.0.0\n     */\n    public function set_strings_style($style, $preserve_defaults = false, $group = 0) {\n        if (!$preserve_defaults) {\n            $this->language_data['STYLES']['STRINGS'][$group] = $style;\n        } else {\n            $this->language_data['STYLES']['STRINGS'][$group] .= $style;\n        }\n    }\n\n    /**\n     * Turns highlighting on/off for strings\n     *\n     * @param boolean $flag Whether to turn highlighting for strings on or off\n     * @since 1.0.0\n     */\n    public function set_strings_highlighting($flag) {\n        $this->lexic_permissions['STRINGS'] = ($flag) ? true : false;\n    }\n\n    /**\n     * Sets the styles for strict code blocks. If $preserve_defaults is\n     * true, then styles are merged with the default styles, with the\n     * user defined styles having priority\n     *\n     * @param string  $style             The style to make the script blocks\n     * @param boolean $preserve_defaults Whether to merge the new styles with the old or just\n     *                                   to overwrite them\n     * @param int     $group             Tells the group of script blocks for which style should be set.\n     * @since 1.0.8.4\n     */\n    public function set_script_style($style, $preserve_defaults = false, $group = 0) {\n        // Update the style of symbols\n        if (!$preserve_defaults) {\n            $this->language_data['STYLES']['SCRIPT'][$group] = $style;\n        } else {\n            $this->language_data['STYLES']['SCRIPT'][$group] .= $style;\n        }\n    }\n\n    /**\n     * Sets the styles for numbers. If $preserve_defaults is\n     * true, then styles are merged with the default styles, with the\n     * user defined styles having priority\n     *\n     * @param string  $style             The style to make the numbers\n     * @param boolean $preserve_defaults Whether to merge the new styles with the old or just\n     *                                   to overwrite them\n     * @param int     $group             Tells the group of numbers for which style should be set.\n     * @since 1.0.0\n     */\n    public function set_numbers_style($style, $preserve_defaults = false, $group = 0) {\n        if (!$preserve_defaults) {\n            $this->language_data['STYLES']['NUMBERS'][$group] = $style;\n        } else {\n            $this->language_data['STYLES']['NUMBERS'][$group] .= $style;\n        }\n    }\n\n    /**\n     * Turns highlighting on/off for numbers\n     *\n     * @param boolean $flag Whether to turn highlighting for numbers on or off\n     * @since 1.0.0\n     */\n    public function set_numbers_highlighting($flag) {\n        $this->lexic_permissions['NUMBERS'] = ($flag) ? true : false;\n    }\n\n    /**\n     * Sets the styles for methods. $key is a number that references the\n     * appropriate \"object splitter\" - see the language file for the language\n     * you are highlighting to get this number. If $preserve_defaults is\n     * true, then styles are merged with the default styles, with the\n     * user defined styles having priority\n     *\n     * @param int     $key               The key of the object splitter to change the styles of\n     * @param string  $style             The style to make the methods\n     * @param boolean $preserve_defaults Whether to merge the new styles with the old or just\n     *                                   to overwrite them\n     * @since 1.0.0\n     */\n    public function set_methods_style($key, $style, $preserve_defaults = false) {\n        if (!$preserve_defaults) {\n            $this->language_data['STYLES']['METHODS'][$key] = $style;\n        } else {\n            $this->language_data['STYLES']['METHODS'][$key] .= $style;\n        }\n    }\n\n    /**\n     * Turns highlighting on/off for methods\n     *\n     * @param boolean $flag Whether to turn highlighting for methods on or off\n     * @since 1.0.0\n     */\n    public function set_methods_highlighting($flag) {\n        $this->lexic_permissions['METHODS'] = ($flag) ? true : false;\n    }\n\n    /**\n     * Sets the styles for regexps. If $preserve_defaults is\n     * true, then styles are merged with the default styles, with the\n     * user defined styles having priority\n     *\n     * @param string  $key               The style to make the regular expression matches\n     * @param boolean $style             Whether to merge the new styles with the old or just\n     *                                   to overwrite them\n     * @param bool    $preserve_defaults Whether to merge the new styles with the old or just\n     *                                to overwrite them\n     * @since 1.0.0\n     */\n    public function set_regexps_style($key, $style, $preserve_defaults = false) {\n        if (!$preserve_defaults) {\n            $this->language_data['STYLES']['REGEXPS'][$key] = $style;\n        } else {\n            $this->language_data['STYLES']['REGEXPS'][$key] .= $style;\n        }\n    }\n\n    /**\n     * Turns highlighting on/off for regexps\n     *\n     * @param int     $key  The key of the regular expression group to turn on or off\n     * @param boolean $flag Whether to turn highlighting for the regular expression group on or off\n     * @since 1.0.0\n     */\n    public function set_regexps_highlighting($key, $flag) {\n        $this->lexic_permissions['REGEXPS'][$key] = ($flag) ? true : false;\n    }\n\n    /**\n     * Sets whether a set of keywords are checked for in a case sensitive manner\n     *\n     * @param int     $key  The key of the keyword group to change the case sensitivity of\n     * @param boolean $case Whether to check in a case sensitive manner or not\n     * @since 1.0.0\n     */\n    public function set_case_sensitivity($key, $case) {\n        $this->language_data['CASE_SENSITIVE'][$key] = ($case) ? true : false;\n    }\n\n    /**\n     * Sets the case that keywords should use when found. Use the constants:\n     *\n     *  - GESHI_CAPS_NO_CHANGE: leave keywords as-is\n     *  - GESHI_CAPS_UPPER: convert all keywords to uppercase where found\n     *  - GESHI_CAPS_LOWER: convert all keywords to lowercase where found\n     *\n     * @param int $case A constant specifying what to do with matched keywords\n     * @since 1.0.1\n     */\n    public function set_case_keywords($case) {\n        if (in_array($case, array(\n            GESHI_CAPS_NO_CHANGE, GESHI_CAPS_UPPER, GESHI_CAPS_LOWER))) {\n            $this->language_data['CASE_KEYWORDS'] = $case;\n        }\n    }\n\n    /**\n     * Sets how many spaces a tab is substituted for\n     *\n     * Widths below zero are ignored\n     *\n     * @param int $width The tab width\n     * @since 1.0.0\n     */\n    public function set_tab_width($width) {\n        $this->tab_width = intval($width);\n\n        //Check if it fit's the constraints:\n        if ($this->tab_width < 1) {\n            //Return it to the default\n            $this->tab_width = 8;\n        }\n    }\n\n    /**\n     * Sets whether or not to use tab-stop width specifed by language\n     *\n     * @param boolean $use Whether to use language-specific tab-stop widths\n     * @since 1.0.7.20\n     */\n    public function set_use_language_tab_width($use) {\n        $this->use_language_tab_width = (bool) $use;\n    }\n\n    /**\n     * Returns the tab width to use, based on the current language and user\n     * preference\n     *\n     * @return int Tab width\n     * @since 1.0.7.20\n     */\n    public function get_real_tab_width() {\n        if (!$this->use_language_tab_width ||\n            !isset($this->language_data['TAB_WIDTH'])) {\n            return $this->tab_width;\n        } else {\n            return $this->language_data['TAB_WIDTH'];\n        }\n    }\n\n    /**\n     * Enables/disables strict highlighting. Default is off, calling this\n     * method without parameters will turn it on. See documentation\n     * for more details on strict mode and where to use it.\n     *\n     * @param boolean $mode Whether to enable strict mode or not\n     * @since 1.0.0\n     */\n    public function enable_strict_mode($mode = true) {\n        if (GESHI_MAYBE == $this->language_data['STRICT_MODE_APPLIES']) {\n            $this->strict_mode = ($mode) ? GESHI_ALWAYS : GESHI_NEVER;\n        }\n    }\n\n    /**\n     * Disables all highlighting\n     *\n     * @since 1.0.0\n     * @todo  Rewrite with array traversal\n     * @deprecated In favour of enable_highlighting\n     */\n    public function disable_highlighting() {\n        $this->enable_highlighting(false);\n    }\n\n    /**\n     * Enables all highlighting\n     *\n     * The optional flag parameter was added in version 1.0.7.21 and can be used\n     * to enable (true) or disable (false) all highlighting.\n     *\n     * @since 1.0.0\n     * @param boolean $flag A flag specifying whether to enable or disable all highlighting\n     * @todo  Rewrite with array traversal\n     */\n    public function enable_highlighting($flag = true) {\n        $flag = $flag ? true : false;\n        foreach ($this->lexic_permissions as $key => $value) {\n            if (is_array($value)) {\n                foreach ($value as $k => $v) {\n                    $this->lexic_permissions[$key][$k] = $flag;\n                }\n            } else {\n                $this->lexic_permissions[$key] = $flag;\n            }\n        }\n\n        // Context blocks\n        $this->enable_important_blocks = $flag;\n    }\n\n    /**\n     * Given a file extension, this method returns either a valid geshi language\n     * name, or the empty string if it couldn't be found\n     *\n     * @param string $extension The extension to get a language name for\n     * @param array  $lookup    A lookup array to use instead of the default one\n     * @since 1.0.5\n     * @todo Re-think about how this method works (maybe make it private and/or make it\n     *       a extension->lang lookup?)\n     * @return int|string\n     */\n    public static function get_language_name_from_extension( $extension, $lookup = array() ) {\n        $extension = strtolower($extension);\n\n        if ( !is_array($lookup) || empty($lookup)) {\n            $lookup = array(\n                '6502acme' => array( 'a', 's', 'asm', 'inc' ),\n                '6502tasm' => array( 'a', 's', 'asm', 'inc' ),\n                '6502kickass' => array( 'a', 's', 'asm', 'inc' ),\n                '68000devpac' => array( 'a', 's', 'asm', 'inc' ),\n                'abap' => array('abap'),\n                'actionscript' => array('as'),\n                'ada' => array('a', 'ada', 'adb', 'ads'),\n                'apache' => array('conf'),\n                'asm' => array('ash', 'asm', 'inc'),\n                'asp' => array('asp'),\n                'bash' => array('sh'),\n                'bf' => array('bf'),\n                'c' => array('c', 'h'),\n                'c_mac' => array('c', 'h'),\n                'caddcl' => array(),\n                'cadlisp' => array(),\n                'cdfg' => array('cdfg'),\n                'cobol' => array('cbl'),\n                'cpp' => array('cpp', 'hpp', 'C', 'H', 'CPP', 'HPP'),\n                'csharp' => array('cs'),\n                'css' => array('css'),\n                'd' => array('d'),\n                'delphi' => array('dpk', 'dpr', 'pp', 'pas'),\n                'diff' => array('diff', 'patch'),\n                'dos' => array('bat', 'cmd'),\n                'gdb' => array('kcrash', 'crash', 'bt'),\n                'gettext' => array('po', 'pot'),\n                'gml' => array('gml'),\n                'gnuplot' => array('plt'),\n                'groovy' => array('groovy'),\n                'haskell' => array('hs'),\n                'haxe' => array('hx'),\n                'html4strict' => array('html', 'htm'),\n                'ini' => array('ini', 'desktop', 'vbp'),\n                'java' => array('java'),\n                'javascript' => array('js'),\n                'klonec' => array('kl1'),\n                'klonecpp' => array('klx'),\n                'latex' => array('tex'),\n                'lisp' => array('lisp'),\n                'lua' => array('lua'),\n                'matlab' => array('m'),\n                'mpasm' => array(),\n                'mysql' => array('sql'),\n                'nsis' => array(),\n                'objc' => array(),\n                'oobas' => array(),\n                'oracle8' => array(),\n                'oracle10' => array(),\n                'pascal' => array('pas'),\n                'perl' => array('pl', 'pm'),\n                'php' => array('php', 'php5', 'phtml', 'phps'),\n                'povray' => array('pov'),\n                'providex' => array('pvc', 'pvx'),\n                'prolog' => array('pl'),\n                'python' => array('py'),\n                'qbasic' => array('bi'),\n                'reg' => array('reg'),\n                'ruby' => array('rb'),\n                'sas' => array('sas'),\n                'scala' => array('scala'),\n                'scheme' => array('scm'),\n                'scilab' => array('sci'),\n                'smalltalk' => array('st'),\n                'smarty' => array(),\n                'tcl' => array('tcl'),\n                'text' => array('txt'),\n                'vb' => array('bas', 'ctl', 'frm'),\n                'vbnet' => array('vb', 'sln'),\n                'visualfoxpro' => array(),\n                'whitespace' => array('ws'),\n                'xml' => array('xml', 'svg', 'xrc', 'vbproj', 'csproj', 'userprefs', 'resx', 'stetic', 'settings', 'manifest', 'myapp'),\n                'z80' => array('z80', 'asm', 'inc')\n            );\n        }\n\n        foreach ($lookup as $lang => $extensions) {\n            if (in_array($extension, $extensions)) {\n                return $lang;\n            }\n        }\n\n        return 'text';\n    }\n\n    /**\n     * Given a file name, this method loads its contents in, and attempts\n     * to set the language automatically. An optional lookup table can be\n     * passed for looking up the language name. If not specified a default\n     * table is used\n     *\n     * The language table is in the form\n     * <pre>array(\n     *   'lang_name' => array('extension', 'extension', ...),\n     *   'lang_name' ...\n     * );</pre>\n     *\n     * @param string $file_name The filename to load the source from\n     * @param array  $lookup    A lookup array to use instead of the default one\n     * @todo Complete rethink of this and above method\n     * @since 1.0.5\n     */\n    public function load_from_file($file_name, $lookup = array()) {\n        if (is_readable($file_name)) {\n            $this->set_source(file_get_contents($file_name));\n            $this->set_language(self::get_language_name_from_extension(substr(strrchr($file_name, '.'), 1), $lookup));\n        } else {\n            $this->error = GESHI_ERROR_FILE_NOT_READABLE;\n        }\n    }\n\n    /**\n     * Adds a keyword to a keyword group for highlighting\n     *\n     * @param int    $key  The key of the keyword group to add the keyword to\n     * @param string $word The word to add to the keyword group\n     * @since 1.0.0\n     */\n    public function add_keyword($key, $word) {\n        if (!is_array($this->language_data['KEYWORDS'][$key])) {\n            $this->language_data['KEYWORDS'][$key] = array();\n        }\n        if (!in_array($word, $this->language_data['KEYWORDS'][$key])) {\n            $this->language_data['KEYWORDS'][$key][] = $word;\n\n            //NEW in 1.0.8 don't recompile the whole optimized regexp, simply append it\n            if ($this->parse_cache_built) {\n                $subkey = count($this->language_data['CACHED_KEYWORD_LISTS'][$key]) - 1;\n                $this->language_data['CACHED_KEYWORD_LISTS'][$key][$subkey] .= '|' . preg_quote($word, '/');\n            }\n        }\n    }\n\n    /**\n     * Removes a keyword from a keyword group\n     *\n     * @param int    $key       The key of the keyword group to remove the keyword from\n     * @param string $word      The word to remove from the keyword group\n     * @param bool   $recompile Wether to automatically recompile the optimized regexp list or not.\n     *               Note: if you set this to false and @see GeSHi->parse_code() was already called once,\n     *               for the current language, you have to manually call @see GeSHi->optimize_keyword_group()\n     *               or the removed keyword will stay in cache and still be highlighted! On the other hand\n     *               it might be too expensive to recompile the regexp list for every removal if you want to\n     *               remove a lot of keywords.\n     * @since 1.0.0\n     */\n    public function remove_keyword($key, $word, $recompile = true) {\n        $key_to_remove = array_search($word, $this->language_data['KEYWORDS'][$key]);\n        if ($key_to_remove !== false) {\n            unset($this->language_data['KEYWORDS'][$key][$key_to_remove]);\n\n            //NEW in 1.0.8, optionally recompile keyword group\n            if ($recompile && $this->parse_cache_built) {\n                $this->optimize_keyword_group($key);\n            }\n        }\n    }\n\n    /**\n     * Creates a new keyword group\n     *\n     * @param int     $key            The key of the keyword group to create\n     * @param string  $styles         The styles for the keyword group\n     * @param boolean $case_sensitive Whether the keyword group is case sensitive ornot\n     * @param array   $words          The words to use for the keyword group\n     * @since 1.0.0\n     * @return bool\n     */\n    public function add_keyword_group($key, $styles, $case_sensitive = true, $words = array()) {\n        $words = (array) $words;\n        if  (empty($words)) {\n            // empty word lists mess up highlighting\n            return false;\n        }\n\n        //Add the new keyword group internally\n        $this->language_data['KEYWORDS'][$key] = $words;\n        $this->lexic_permissions['KEYWORDS'][$key] = true;\n        $this->language_data['CASE_SENSITIVE'][$key] = $case_sensitive;\n        $this->language_data['STYLES']['KEYWORDS'][$key] = $styles;\n\n        //NEW in 1.0.8, cache keyword regexp\n        if ($this->parse_cache_built) {\n            $this->optimize_keyword_group($key);\n        }\n        return true;\n    }\n\n    /**\n     * Removes a keyword group\n     *\n     * @param int $key The key of the keyword group to remove\n     * @since 1.0.0\n     */\n    public function remove_keyword_group ($key) {\n        //Remove the keyword group internally\n        unset($this->language_data['KEYWORDS'][$key]);\n        unset($this->lexic_permissions['KEYWORDS'][$key]);\n        unset($this->language_data['CASE_SENSITIVE'][$key]);\n        unset($this->language_data['STYLES']['KEYWORDS'][$key]);\n\n        //NEW in 1.0.8\n        unset($this->language_data['CACHED_KEYWORD_LISTS'][$key]);\n    }\n\n    /**\n     * compile optimized regexp list for keyword group\n     *\n     * @param int $key The key of the keyword group to compile & optimize\n     * @since 1.0.8\n     */\n    public function optimize_keyword_group($key) {\n        $this->language_data['CACHED_KEYWORD_LISTS'][$key] =\n            $this->optimize_regexp_list($this->language_data['KEYWORDS'][$key]);\n        $space_as_whitespace = false;\n        if(isset($this->language_data['PARSER_CONTROL'])) {\n            if(isset($this->language_data['PARSER_CONTROL']['KEYWORDS'])) {\n                if(isset($this->language_data['PARSER_CONTROL']['KEYWORDS']['SPACE_AS_WHITESPACE'])) {\n                    $space_as_whitespace = $this->language_data['PARSER_CONTROL']['KEYWORDS']['SPACE_AS_WHITESPACE'];\n                }\n                if(isset($this->language_data['PARSER_CONTROL']['KEYWORDS'][$key]['SPACE_AS_WHITESPACE'])) {\n                    if(isset($this->language_data['PARSER_CONTROL']['KEYWORDS'][$key]['SPACE_AS_WHITESPACE'])) {\n                        $space_as_whitespace = $this->language_data['PARSER_CONTROL']['KEYWORDS'][$key]['SPACE_AS_WHITESPACE'];\n                    }\n                }\n            }\n        }\n        if($space_as_whitespace) {\n            foreach($this->language_data['CACHED_KEYWORD_LISTS'][$key] as $rxk => $rxv) {\n                $this->language_data['CACHED_KEYWORD_LISTS'][$key][$rxk] =\n                    str_replace(\" \", \"\\\\s+\", $rxv);\n            }\n        }\n    }\n\n    /**\n     * Sets the content of the header block\n     *\n     * @param string $content The content of the header block\n     * @since 1.0.2\n     */\n    public function set_header_content($content) {\n        $this->header_content = $content;\n    }\n\n    /**\n     * Sets the content of the footer block\n     *\n     * @param string $content The content of the footer block\n     * @since 1.0.2\n     */\n    public function set_footer_content($content) {\n        $this->footer_content = $content;\n    }\n\n    /**\n     * Sets the style for the header content\n     *\n     * @param string $style The style for the header content\n     * @since 1.0.2\n     */\n    public function set_header_content_style($style) {\n        $this->header_content_style = $style;\n    }\n\n    /**\n     * Sets the style for the footer content\n     *\n     * @param string $style The style for the footer content\n     * @since 1.0.2\n     */\n    public function set_footer_content_style($style) {\n        $this->footer_content_style = $style;\n    }\n\n    /**\n     * Sets whether to force a surrounding block around\n     * the highlighted code or not\n     *\n     * @param boolean $flag Tells whether to enable or disable this feature\n     * @since 1.0.7.20\n     */\n    public function enable_inner_code_block($flag) {\n        $this->force_code_block = (bool)$flag;\n    }\n\n    /**\n     * Sets the base URL to be used for keywords\n     *\n     * @param int    $group The key of the keyword group to set the URL for\n     * @param string $url   The URL to set for the group. If {FNAME} is in\n     *                      the url somewhere, it is replaced by the keyword\n     *                      that the URL is being made for\n     * @since 1.0.2\n     */\n    public function set_url_for_keyword_group($group, $url) {\n        $this->language_data['URLS'][$group] = $url;\n    }\n\n    /**\n     * Sets styles for links in code\n     *\n     * @param int    $type   A constant that specifies what state the style is being\n     *                       set for - e.g. :hover or :visited\n     * @param string $styles The styles to use for that state\n     * @since 1.0.2\n     */\n    public function set_link_styles($type, $styles) {\n        $this->link_styles[$type] = $styles;\n    }\n\n    /**\n     * Sets the target for links in code\n     *\n     * @param string $target The target for links in the code, e.g. _blank\n     * @since 1.0.3\n     */\n    public function set_link_target($target) {\n        if (!$target) {\n            $this->link_target = '';\n        } else {\n            $this->link_target = ' target=\"' . $target . '\"';\n        }\n    }\n\n    /**\n     * Sets styles for important parts of the code\n     *\n     * @param string $styles The styles to use on important parts of the code\n     * @since 1.0.2\n     */\n    public function set_important_styles($styles) {\n        $this->important_styles = $styles;\n    }\n\n    /**\n     * Sets whether context-important blocks are highlighted\n     *\n     * @param boolean $flag Tells whether to enable or disable highlighting of important blocks\n     * @todo REMOVE THIS SHIZ FROM GESHI!\n     * @deprecated\n     * @since 1.0.2\n     */\n    public function enable_important_blocks($flag) {\n        $this->enable_important_blocks = ( $flag ) ? true : false;\n    }\n\n    /**\n     * Whether CSS IDs should be added to each line\n     *\n     * @param boolean $flag If true, IDs will be added to each line.\n     * @since 1.0.2\n     */\n    public function enable_ids($flag = true) {\n        $this->add_ids = ($flag) ? true : false;\n    }\n\n    /**\n     * Specifies which lines to highlight extra\n     *\n     * The extra style parameter was added in 1.0.7.21.\n     *\n     * @param mixed  $lines An array of line numbers to highlight, or just a line\n     *                      number on its own.\n     * @param string $style A string specifying the style to use for this line.\n     *                      If null is specified, the default style is used.\n     *                      If false is specified, the line will be removed from\n     *                      special highlighting\n     * @since 1.0.2\n     * @todo  Some data replication here that could be cut down on\n     */\n    public function highlight_lines_extra($lines, $style = null) {\n        if (is_array($lines)) {\n            //Split up the job using single lines at a time\n            foreach ($lines as $line) {\n                $this->highlight_lines_extra($line, $style);\n            }\n        } else {\n            //Mark the line as being highlighted specially\n            $lines = intval($lines);\n            $this->highlight_extra_lines[$lines] = $lines;\n\n            //Decide on which style to use\n            if ($style === null) { //Check if we should use default style\n                unset($this->highlight_extra_lines_styles[$lines]);\n            } elseif ($style === false) { //Check if to remove this line\n                unset($this->highlight_extra_lines[$lines]);\n                unset($this->highlight_extra_lines_styles[$lines]);\n            } else {\n                $this->highlight_extra_lines_styles[$lines] = $style;\n            }\n        }\n    }\n\n    /**\n     * Sets the style for extra-highlighted lines\n     *\n     * @param string $styles The style for extra-highlighted lines\n     * @since 1.0.2\n     */\n    public function set_highlight_lines_extra_style($styles) {\n        $this->highlight_extra_lines_style = $styles;\n    }\n\n    /**\n     * Sets the line-ending\n     *\n     * @param string $line_ending The new line-ending\n     * @since 1.0.2\n     */\n    public function set_line_ending($line_ending) {\n        $this->line_ending = (string)$line_ending;\n    }\n\n    /**\n     * Sets what number line numbers should start at. Should\n     * be a positive integer, and will be converted to one.\n     *\n     * <b>Warning:</b> Using this method will add the \"start\"\n     * attribute to the &lt;ol&gt; that is used for line numbering.\n     * This is <b>not</b> valid XHTML strict, so if that's what you\n     * care about then don't use this method. Firefox is getting\n     * support for the CSS method of doing this in 1.1 and Opera\n     * has support for the CSS method, but (of course) IE doesn't\n     * so it's not worth doing it the CSS way yet.\n     *\n     * @param int $number The number to start line numbers at\n     * @since 1.0.2\n     */\n    public function start_line_numbers_at($number) {\n        $this->line_numbers_start = abs(intval($number));\n    }\n\n    /**\n     * Sets the encoding used for htmlspecialchars(), for international\n     * support.\n     *\n     * NOTE: This is not needed for now because htmlspecialchars() is not\n     * being used (it has a security hole in PHP4 that has not been patched).\n     * Maybe in a future version it may make a return for speed reasons, but\n     * I doubt it.\n     *\n     * @param string $encoding The encoding to use for the source\n     * @since 1.0.3\n     */\n    public function set_encoding($encoding) {\n        if ($encoding) {\n          $this->encoding = strtolower($encoding);\n        }\n    }\n\n    /**\n     * Turns linking of keywords on or off.\n     *\n     * @param boolean $enable If true, links will be added to keywords\n     * @since 1.0.2\n     */\n    public function enable_keyword_links($enable = true) {\n        $this->keyword_links = (bool) $enable;\n    }\n\n    /**\n     * Setup caches needed for styling. This is automatically called in\n     * parse_code() and get_stylesheet() when appropriate. This function helps\n     * stylesheet generators as they rely on some style information being\n     * preprocessed\n     *\n     * @since 1.0.8\n     */\n    protected function build_style_cache() {\n        //Build the style cache needed to highlight numbers appropriate\n        if($this->lexic_permissions['NUMBERS']) {\n            //First check what way highlighting information for numbers are given\n            if(!isset($this->language_data['NUMBERS'])) {\n                $this->language_data['NUMBERS'] = 0;\n            }\n\n            if(is_array($this->language_data['NUMBERS'])) {\n                $this->language_data['NUMBERS_CACHE'] = $this->language_data['NUMBERS'];\n            } else {\n                $this->language_data['NUMBERS_CACHE'] = array();\n                if(!$this->language_data['NUMBERS']) {\n                    $this->language_data['NUMBERS'] =\n                        GESHI_NUMBER_INT_BASIC |\n                        GESHI_NUMBER_FLT_NONSCI;\n                }\n\n                for($i = 0, $j = $this->language_data['NUMBERS']; $j > 0; ++$i, $j>>=1) {\n                    //Rearrange style indices if required ...\n                    if(isset($this->language_data['STYLES']['NUMBERS'][1<<$i])) {\n                        $this->language_data['STYLES']['NUMBERS'][$i] =\n                            $this->language_data['STYLES']['NUMBERS'][1<<$i];\n                        unset($this->language_data['STYLES']['NUMBERS'][1<<$i]);\n                    }\n\n                    //Check if this bit is set for highlighting\n                    if($j&1) {\n                        //So this bit is set ...\n                        //Check if it belongs to group 0 or the actual stylegroup\n                        if(isset($this->language_data['STYLES']['NUMBERS'][$i])) {\n                            $this->language_data['NUMBERS_CACHE'][$i] = 1 << $i;\n                        } else {\n                            if(!isset($this->language_data['NUMBERS_CACHE'][0])) {\n                                $this->language_data['NUMBERS_CACHE'][0] = 0;\n                            }\n                            $this->language_data['NUMBERS_CACHE'][0] |= 1 << $i;\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    /**\n     * Setup caches needed for parsing. This is automatically called in parse_code() when appropriate.\n     * This function makes stylesheet generators much faster as they do not need these caches.\n     *\n     * @since 1.0.8\n     */\n    protected function build_parse_cache() {\n        // check whether language_data is available\n        if (empty($this->language_data)) {\n            return false;\n        }\n\n        // cache symbol regexp\n        //As this is a costy operation, we avoid doing it for multiple groups ...\n        //Instead we perform it for all symbols at once.\n        //\n        //For this to work, we need to reorganize the data arrays.\n        if ($this->lexic_permissions['SYMBOLS'] && !empty($this->language_data['SYMBOLS'])) {\n            $this->language_data['MULTIPLE_SYMBOL_GROUPS'] = count($this->language_data['STYLES']['SYMBOLS']) > 1;\n\n            $this->language_data['SYMBOL_DATA'] = array();\n            $symbol_preg_multi = array(); // multi char symbols\n            $symbol_preg_single = array(); // single char symbols\n            foreach ($this->language_data['SYMBOLS'] as $key => $symbols) {\n                if (is_array($symbols)) {\n                    foreach ($symbols as $sym) {\n                        $sym = $this->hsc($sym);\n                        if (!isset($this->language_data['SYMBOL_DATA'][$sym])) {\n                            $this->language_data['SYMBOL_DATA'][$sym] = $key;\n                            if (isset($sym[1])) { // multiple chars\n                                $symbol_preg_multi[] = preg_quote($sym, '/');\n                            } else { // single char\n                                if ($sym == '-') {\n                                    // don't trigger range out of order error\n                                    $symbol_preg_single[] = '\\-';\n                                } else {\n                                    $symbol_preg_single[] = preg_quote($sym, '/');\n                                }\n                            }\n                        }\n                    }\n                } else {\n                    $symbols = $this->hsc($symbols);\n                    if (!isset($this->language_data['SYMBOL_DATA'][$symbols])) {\n                        $this->language_data['SYMBOL_DATA'][$symbols] = 0;\n                        if (isset($symbols[1])) { // multiple chars\n                            $symbol_preg_multi[] = preg_quote($symbols, '/');\n                        } elseif ($symbols == '-') {\n                            // don't trigger range out of order error\n                            $symbol_preg_single[] = '\\-';\n                        } else { // single char\n                            $symbol_preg_single[] = preg_quote($symbols, '/');\n                        }\n                    }\n                }\n            }\n\n            //Now we have an array with each possible symbol as the key and the style as the actual data.\n            //This way we can set the correct style just the moment we highlight ...\n            //\n            //Now we need to rewrite our array to get a search string that\n            $symbol_preg = array();\n            if (!empty($symbol_preg_multi)) {\n                rsort($symbol_preg_multi);\n                $symbol_preg[] = implode('|', $symbol_preg_multi);\n            }\n            if (!empty($symbol_preg_single)) {\n                rsort($symbol_preg_single);\n                $symbol_preg[] = '[' . implode('', $symbol_preg_single) . ']';\n            }\n            $this->language_data['SYMBOL_SEARCH'] = implode(\"|\", $symbol_preg);\n        }\n\n        // cache optimized regexp for keyword matching\n        // remove old cache\n        $this->language_data['CACHED_KEYWORD_LISTS'] = array();\n        foreach (array_keys($this->language_data['KEYWORDS']) as $key) {\n            if (!isset($this->lexic_permissions['KEYWORDS'][$key]) ||\n                    $this->lexic_permissions['KEYWORDS'][$key]) {\n                $this->optimize_keyword_group($key);\n            }\n        }\n\n        // brackets\n        if ($this->lexic_permissions['BRACKETS']) {\n            $this->language_data['CACHE_BRACKET_MATCH'] = array('[', ']', '(', ')', '{', '}');\n            if (!$this->use_classes && isset($this->language_data['STYLES']['BRACKETS'][0])) {\n                $this->language_data['CACHE_BRACKET_REPLACE'] = array(\n                    '<| style=\"' . $this->language_data['STYLES']['BRACKETS'][0] . '\">&#91;|>',\n                    '<| style=\"' . $this->language_data['STYLES']['BRACKETS'][0] . '\">&#93;|>',\n                    '<| style=\"' . $this->language_data['STYLES']['BRACKETS'][0] . '\">&#40;|>',\n                    '<| style=\"' . $this->language_data['STYLES']['BRACKETS'][0] . '\">&#41;|>',\n                    '<| style=\"' . $this->language_data['STYLES']['BRACKETS'][0] . '\">&#123;|>',\n                    '<| style=\"' . $this->language_data['STYLES']['BRACKETS'][0] . '\">&#125;|>',\n                );\n            }\n            else {\n                $this->language_data['CACHE_BRACKET_REPLACE'] = array(\n                    '<| class=\"br0\">&#91;|>',\n                    '<| class=\"br0\">&#93;|>',\n                    '<| class=\"br0\">&#40;|>',\n                    '<| class=\"br0\">&#41;|>',\n                    '<| class=\"br0\">&#123;|>',\n                    '<| class=\"br0\">&#125;|>',\n                );\n            }\n        }\n\n        //Build the parse cache needed to highlight numbers appropriate\n        if($this->lexic_permissions['NUMBERS']) {\n            //Check if the style rearrangements have been processed ...\n            //This also does some preprocessing to check which style groups are useable ...\n            if(!isset($this->language_data['NUMBERS_CACHE'])) {\n                $this->build_style_cache();\n            }\n\n            //Number format specification\n            //All this formats are matched case-insensitively!\n            static $numbers_format = array(\n                GESHI_NUMBER_INT_BASIC =>\n                    '(?:(?<![0-9a-z_\\.%$@])|(?<=\\.\\.))(?<![\\d\\.]e[+\\-])([1-9]\\d*?|0)(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)',\n                GESHI_NUMBER_INT_CSTYLE =>\n                    '(?<![0-9a-z_\\.%])(?<![\\d\\.]e[+\\-])([1-9]\\d*?|0)l(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)',\n                GESHI_NUMBER_BIN_SUFFIX =>\n                    '(?<![0-9a-z_\\.])(?<![\\d\\.]e[+\\-])[01]+?[bB](?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)',\n                GESHI_NUMBER_BIN_PREFIX_PERCENT =>\n                    '(?<![0-9a-z_\\.%])(?<![\\d\\.]e[+\\-])%[01]+?(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)',\n                GESHI_NUMBER_BIN_PREFIX_0B =>\n                    '(?<![0-9a-z_\\.%])(?<![\\d\\.]e[+\\-])0b[01]+?(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)',\n                GESHI_NUMBER_OCT_PREFIX =>\n                    '(?<![0-9a-z_\\.])(?<![\\d\\.]e[+\\-])0[0-7]+?(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)',\n                GESHI_NUMBER_OCT_PREFIX_0O =>\n                    '(?<![0-9a-z_\\.%])(?<![\\d\\.]e[+\\-])0o[0-7]+?(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)',\n                GESHI_NUMBER_OCT_PREFIX_AT =>\n                    '(?<![0-9a-z_\\.%])(?<![\\d\\.]e[+\\-])\\@[0-7]+?(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)',\n                GESHI_NUMBER_OCT_SUFFIX =>\n                    '(?<![0-9a-z_\\.])(?<![\\d\\.]e[+\\-])[0-7]+?o(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)',\n                GESHI_NUMBER_HEX_PREFIX =>\n                    '(?<![0-9a-z_\\.])(?<![\\d\\.]e[+\\-])0x[0-9a-fA-F]+?(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)',\n                GESHI_NUMBER_HEX_PREFIX_DOLLAR =>\n                    '(?<![0-9a-z_\\.])(?<![\\d\\.]e[+\\-])\\$[0-9a-fA-F]+?(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)',\n                GESHI_NUMBER_HEX_SUFFIX =>\n                    '(?<![0-9a-z_\\.])(?<![\\d\\.]e[+\\-])\\d[0-9a-fA-F]*?[hH](?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)',\n                GESHI_NUMBER_FLT_NONSCI =>\n                    '(?<![0-9a-z_\\.])(?<![\\d\\.]e[+\\-])\\d+?\\.\\d+?(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)',\n                GESHI_NUMBER_FLT_NONSCI_F =>\n                    '(?<![0-9a-z_\\.])(?<![\\d\\.]e[+\\-])(?:\\d+?(?:\\.\\d*?)?|\\.\\d+?)f(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)',\n                GESHI_NUMBER_FLT_SCI_SHORT =>\n                    '(?<![0-9a-z_\\.])(?<![\\d\\.]e[+\\-])\\.\\d+?(?:e[+\\-]?\\d+?)?(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)',\n                GESHI_NUMBER_FLT_SCI_ZERO =>\n                    '(?<![0-9a-z_\\.])(?<![\\d\\.]e[+\\-])(?:\\d+?(?:\\.\\d*?)?|\\.\\d+?)(?:e[+\\-]?\\d+?)?(?![0-9a-z]|\\.(?:[eE][+\\-]?)?\\d)'\n                );\n\n            //At this step we have an associative array with flag groups for a\n            //specific style or an string denoting a regexp given its index.\n            $this->language_data['NUMBERS_RXCACHE'] = array();\n            foreach($this->language_data['NUMBERS_CACHE'] as $key => $rxdata) {\n                if(is_string($rxdata)) {\n                    $regexp = $rxdata;\n                } else {\n                    //This is a bitfield of number flags to highlight:\n                    //Build an array, implode them together and make this the actual RX\n                    $rxuse = array();\n                    for($i = 1; $i <= $rxdata; $i<<=1) {\n                        if($rxdata & $i) {\n                            $rxuse[] = $numbers_format[$i];\n                        }\n                    }\n                    $regexp = implode(\"|\", $rxuse);\n                }\n\n                $this->language_data['NUMBERS_RXCACHE'][$key] =\n                    \"/(?<!<\\|\\/)(?<!<\\|!REG3XP)(?<!<\\|\\/NUM!)(?<!\\d\\/>)($regexp)(?!(?:<DOT>|(?>[^\\<]))+>)(?![^<]*>)(?!\\|>)(?!\\/>)/i\";\n            }\n\n            if(!isset($this->language_data['PARSER_CONTROL']['NUMBERS']['PRECHECK_RX'])) {\n                $this->language_data['PARSER_CONTROL']['NUMBERS']['PRECHECK_RX'] = '#\\d#';\n            }\n        }\n\n        $this->parse_cache_built = true;\n    }\n\n    /**\n     * Returns the code in $this->source, highlighted and surrounded by the\n     * nessecary HTML.\n     *\n     * This should only be called ONCE, cos it's SLOW! If you want to highlight\n     * the same source multiple times, you're better off doing a whole lot of\n     * str_replaces to replace the &lt;span&gt;s\n     *\n     * @since 1.0.0\n     */\n    public function parse_code() {\n        // Start the timer\n        $start_time = microtime();\n\n        // Replace all newlines to a common form.\n        $code = str_replace(\"\\r\\n\", \"\\n\", $this->source);\n        $code = str_replace(\"\\r\", \"\\n\", $code);\n\n        // check whether language_data is available\n        if (empty($this->language_data)) {\n            $this->error = GESHI_ERROR_NO_SUCH_LANG;\n        }\n\n        // Firstly, if there is an error, we won't highlight\n        if ($this->error) {\n            //Escape the source for output\n            $result = $this->hsc($this->source);\n\n            //This fix is related to SF#1923020, but has to be applied regardless of\n            //actually highlighting symbols.\n            $result = str_replace(array('<SEMI>', '<PIPE>'), array(';', '|'), $result);\n\n            // Timing is irrelevant\n            $this->set_time($start_time, $start_time);\n            $this->finalise($result);\n            return $result;\n        }\n\n        // make sure the parse cache is up2date\n        if (!$this->parse_cache_built) {\n            $this->build_parse_cache();\n        }\n\n        // Initialise various stuff\n        $length           = strlen($code);\n        $COMMENT_MATCHED  = false;\n        $stuff_to_parse   = '';\n        $endresult        = '';\n\n        // \"Important\" selections are handled like multiline comments\n        // @todo GET RID OF THIS SHIZ\n        if ($this->enable_important_blocks) {\n            $this->language_data['COMMENT_MULTI'][GESHI_START_IMPORTANT] = GESHI_END_IMPORTANT;\n        }\n\n        if ($this->strict_mode) {\n            // Break the source into bits. Each bit will be a portion of the code\n            // within script delimiters - for example, HTML between < and >\n            $k = 0;\n            $parts = array();\n            $matches = array();\n            $next_match_pointer = null;\n            // we use a copy to unset delimiters on demand (when they are not found)\n            $delim_copy = $this->language_data['SCRIPT_DELIMITERS'];\n            $i = 0;\n            while ($i < $length) {\n                $next_match_pos = $length + 1; // never true\n                foreach ($delim_copy as $dk => $delimiters) {\n                    if(is_array($delimiters)) {\n                        foreach ($delimiters as $open => $close) {\n                            // make sure the cache is setup properly\n                            if (!isset($matches[$dk][$open])) {\n                                $matches[$dk][$open] = array(\n                                    'next_match' => -1,\n                                    'dk' => $dk,\n\n                                    'open' => $open, // needed for grouping of adjacent code blocks (see below)\n                                    'open_strlen' => strlen($open),\n\n                                    'close' => $close,\n                                    'close_strlen' => strlen($close),\n                                );\n                            }\n                            // Get the next little bit for this opening string\n                            if ($matches[$dk][$open]['next_match'] < $i) {\n                                // only find the next pos if it was not already cached\n                                $open_pos = strpos($code, $open, $i);\n                                if ($open_pos === false) {\n                                    // no match for this delimiter ever\n                                    unset($delim_copy[$dk][$open]);\n                                    continue;\n                                }\n                                $matches[$dk][$open]['next_match'] = $open_pos;\n                            }\n                            if ($matches[$dk][$open]['next_match'] < $next_match_pos) {\n                                //So we got a new match, update the close_pos\n                                $matches[$dk][$open]['close_pos'] =\n                                    strpos($code, $close, $matches[$dk][$open]['next_match']+1);\n\n                                $next_match_pointer =& $matches[$dk][$open];\n                                $next_match_pos = $matches[$dk][$open]['next_match'];\n                            }\n                        }\n                    } else {\n                        //So we should match an RegExp as Strict Block ...\n                        /**\n                         * The value in $delimiters is expected to be an RegExp\n                         * containing exactly 2 matching groups:\n                         *  - Group 1 is the opener\n                         *  - Group 2 is the closer\n                         */\n                        if(preg_match($delimiters, $code, $matches_rx, PREG_OFFSET_CAPTURE, $i)) {\n                            //We got a match ...\n                            if(isset($matches_rx['start']) && isset($matches_rx['end']))\n                            {\n                                $matches[$dk] = array(\n                                    'next_match' => $matches_rx['start'][1],\n                                    'dk' => $dk,\n\n                                    'close_strlen' => strlen($matches_rx['end'][0]),\n                                    'close_pos' => $matches_rx['end'][1],\n                                    );\n                            } else {\n                                $matches[$dk] = array(\n                                    'next_match' => $matches_rx[1][1],\n                                    'dk' => $dk,\n\n                                    'close_strlen' => strlen($matches_rx[2][0]),\n                                    'close_pos' => $matches_rx[2][1],\n                                    );\n                            }\n                        } else {\n                            // no match for this delimiter ever\n                            unset($delim_copy[$dk]);\n                            continue;\n                        }\n\n                        if ($matches[$dk]['next_match'] <= $next_match_pos) {\n                            $next_match_pointer =& $matches[$dk];\n                            $next_match_pos = $matches[$dk]['next_match'];\n                        }\n                    }\n                }\n\n                // non-highlightable text\n                $parts[$k] = array(\n                    1 => substr($code, $i, $next_match_pos - $i)\n                );\n                ++$k;\n\n                if ($next_match_pos > $length) {\n                    // out of bounds means no next match was found\n                    break;\n                }\n\n                // highlightable code\n                $parts[$k][0] = $next_match_pointer['dk'];\n\n                //Only combine for non-rx script blocks\n                if(is_array($delim_copy[$next_match_pointer['dk']])) {\n                    // group adjacent script blocks, e.g. <foobar><asdf> should be one block, not three!\n                    $i = $next_match_pos + $next_match_pointer['open_strlen'];\n                    while (true) {\n                        $close_pos = strpos($code, $next_match_pointer['close'], $i);\n                        if ($close_pos == false) {\n                            break;\n                        }\n                        $i = $close_pos + $next_match_pointer['close_strlen'];\n                        if ($i == $length) {\n                            break;\n                        }\n                        if ($code[$i] == $next_match_pointer['open'][0] && ($next_match_pointer['open_strlen'] == 1 ||\n                            substr($code, $i, $next_match_pointer['open_strlen']) == $next_match_pointer['open'])) {\n                            // merge adjacent but make sure we don't merge things like <tag><!-- comment -->\n                            foreach ($matches as $submatches) {\n                                foreach ($submatches as $match) {\n                                    if ($match['next_match'] == $i) {\n                                        // a different block already matches here!\n                                        break 3;\n                                    }\n                                }\n                            }\n                        } else {\n                            break;\n                        }\n                    }\n                } else {\n                    $close_pos = $next_match_pointer['close_pos'] + $next_match_pointer['close_strlen'];\n                    $i = $close_pos;\n                }\n\n                if ($close_pos === false) {\n                    // no closing delimiter found!\n                    $parts[$k][1] = substr($code, $next_match_pos);\n                    ++$k;\n                    break;\n                } else {\n                    $parts[$k][1] = substr($code, $next_match_pos, $i - $next_match_pos);\n                    ++$k;\n                }\n            }\n            unset($delim_copy, $next_match_pointer, $next_match_pos, $matches);\n            $num_parts = $k;\n\n            if ($num_parts == 1 && $this->strict_mode == GESHI_MAYBE) {\n                // when we have only one part, we don't have anything to highlight at all.\n                // if we have a \"maybe\" strict language, this should be handled as highlightable code\n                $parts = array(\n                    0 => array(\n                        0 => '',\n                        1 => ''\n                    ),\n                    1 => array(\n                        0 => null,\n                        1 => $parts[0][1]\n                    )\n                );\n                $num_parts = 2;\n            }\n\n        } else {\n            // Not strict mode - simply dump the source into\n            // the array at index 1 (the first highlightable block)\n            $parts = array(\n                0 => array(\n                    0 => '',\n                    1 => ''\n                ),\n                1 => array(\n                    0 => null,\n                    1 => $code\n                )\n            );\n            $num_parts = 2;\n        }\n\n        //Unset variables we won't need any longer\n        unset($code);\n\n        //Preload some repeatedly used values regarding hardquotes ...\n        $hq = isset($this->language_data['HARDQUOTE']) ? $this->language_data['HARDQUOTE'][0] : false;\n        $hq_strlen = strlen($hq);\n\n        //Preload if line numbers are to be generated afterwards\n        //Added a check if line breaks should be forced even without line numbers, fixes SF#1727398\n        $check_linenumbers = $this->line_numbers != GESHI_NO_LINE_NUMBERS ||\n            !empty($this->highlight_extra_lines) || !$this->allow_multiline_span;\n\n        //preload the escape char for faster checking ...\n        $escaped_escape_char = $this->hsc($this->language_data['ESCAPE_CHAR']);\n\n        // this is used for single-line comments\n        $sc_disallowed_before = \"\";\n        $sc_disallowed_after = \"\";\n\n        if (isset($this->language_data['PARSER_CONTROL'])) {\n            if (isset($this->language_data['PARSER_CONTROL']['COMMENTS'])) {\n                if (isset($this->language_data['PARSER_CONTROL']['COMMENTS']['DISALLOWED_BEFORE'])) {\n                    $sc_disallowed_before = $this->language_data['PARSER_CONTROL']['COMMENTS']['DISALLOWED_BEFORE'];\n                }\n                if (isset($this->language_data['PARSER_CONTROL']['COMMENTS']['DISALLOWED_AFTER'])) {\n                    $sc_disallowed_after = $this->language_data['PARSER_CONTROL']['COMMENTS']['DISALLOWED_AFTER'];\n                }\n            }\n        }\n\n        //Fix for SF#1932083: Multichar Quotemarks unsupported\n        $is_string_starter = array();\n        if ($this->lexic_permissions['STRINGS']) {\n            foreach ($this->language_data['QUOTEMARKS'] as $quotemark) {\n                if (!isset($is_string_starter[$quotemark[0]])) {\n                    $is_string_starter[$quotemark[0]] = (string)$quotemark;\n                } elseif (is_string($is_string_starter[$quotemark[0]])) {\n                    $is_string_starter[$quotemark[0]] = array(\n                        $is_string_starter[$quotemark[0]],\n                        $quotemark);\n                } else {\n                    $is_string_starter[$quotemark[0]][] = $quotemark;\n                }\n            }\n        }\n\n        // Now we go through each part. We know that even-indexed parts are\n        // code that shouldn't be highlighted, and odd-indexed parts should\n        // be highlighted\n        for ($key = 0; $key < $num_parts; ++$key) {\n            $STRICTATTRS = '';\n\n            // If this block should be highlighted...\n            if (!($key & 1)) {\n                // Else not a block to highlight\n                $endresult .= $this->hsc($parts[$key][1]);\n                unset($parts[$key]);\n                continue;\n            }\n\n            $result = '';\n            $part = $parts[$key][1];\n\n            $highlight_part = true;\n            if ($this->strict_mode && !is_null($parts[$key][0])) {\n                // get the class key for this block of code\n                $script_key = $parts[$key][0];\n                $highlight_part = $this->language_data['HIGHLIGHT_STRICT_BLOCK'][$script_key];\n                if ($this->language_data['STYLES']['SCRIPT'][$script_key] != '' &&\n                    $this->lexic_permissions['SCRIPT']) {\n                    // Add a span element around the source to\n                    // highlight the overall source block\n                    if (!$this->use_classes &&\n                        $this->language_data['STYLES']['SCRIPT'][$script_key] != '') {\n                        $attributes = ' style=\"' . $this->language_data['STYLES']['SCRIPT'][$script_key] . '\"';\n                    } else {\n                        $attributes = ' class=\"sc' . $script_key . '\"';\n                    }\n                    $result .= \"<span$attributes>\";\n                    $STRICTATTRS = $attributes;\n                }\n            }\n\n            if ($highlight_part) {\n                // Now, highlight the code in this block. This code\n                // is really the engine of GeSHi (along with the method\n                // parse_non_string_part).\n\n                // cache comment regexps incrementally\n                $next_comment_regexp_key = '';\n                $next_comment_regexp_pos = -1;\n                $next_comment_multi_pos = -1;\n                $next_comment_single_pos = -1;\n                $comment_regexp_cache_per_key = array();\n                $comment_multi_cache_per_key = array();\n                $comment_single_cache_per_key = array();\n                $next_open_comment_multi = '';\n                $next_comment_single_key = '';\n                $escape_regexp_cache_per_key = array();\n                $next_escape_regexp_key = '';\n                $next_escape_regexp_pos = -1;\n\n                $length = strlen($part);\n                for ($i = 0; $i < $length; ++$i) {\n                    // Get the next char\n                    $char = $part[$i];\n                    $char_len = 1;\n\n                    // update regexp comment cache if needed\n                    if (isset($this->language_data['COMMENT_REGEXP']) && $next_comment_regexp_pos < $i) {\n                        $next_comment_regexp_pos = $length;\n                        foreach ($this->language_data['COMMENT_REGEXP'] as $comment_key => $regexp) {\n                            $match_i = false;\n                            if (isset($comment_regexp_cache_per_key[$comment_key]) &&\n                                ($comment_regexp_cache_per_key[$comment_key]['pos'] >= $i ||\n                                 $comment_regexp_cache_per_key[$comment_key]['pos'] === false)) {\n                                // we have already matched something\n                                if ($comment_regexp_cache_per_key[$comment_key]['pos'] === false) {\n                                    // this comment is never matched\n                                    continue;\n                                }\n                                $match_i = $comment_regexp_cache_per_key[$comment_key]['pos'];\n                            } elseif (preg_match($regexp, $part, $match, PREG_OFFSET_CAPTURE, $i)) {\n                                $match_i = $match[0][1];\n\n                                $comment_regexp_cache_per_key[$comment_key] = array(\n                                    'key' => $comment_key,\n                                    'length' => strlen($match[0][0]),\n                                    'pos' => $match_i\n                                );\n                            } else {\n                                $comment_regexp_cache_per_key[$comment_key]['pos'] = false;\n                                continue;\n                            }\n\n                            if ($match_i !== false && $match_i < $next_comment_regexp_pos) {\n                                $next_comment_regexp_pos = $match_i;\n                                $next_comment_regexp_key = $comment_key;\n                                if ($match_i === $i) {\n                                    break;\n                                }\n                            }\n                        }\n                    }\n\n                    $string_started = false;\n\n                    if (isset($is_string_starter[$char])) {\n                        // Possibly the start of a new string ...\n\n                        //Check which starter it was ...\n                        //Fix for SF#1932083: Multichar Quotemarks unsupported\n                        if (is_array($is_string_starter[$char])) {\n                            $char_new = '';\n                            foreach ($is_string_starter[$char] as $testchar) {\n                                if ($testchar === substr($part, $i, strlen($testchar)) &&\n                                    strlen($testchar) > strlen($char_new)) {\n                                    $char_new = $testchar;\n                                    $string_started = true;\n                                }\n                            }\n                            if ($string_started) {\n                                $char = $char_new;\n                            }\n                        } else {\n                            $testchar = $is_string_starter[$char];\n                            if ($testchar === substr($part, $i, strlen($testchar))) {\n                                $char = $testchar;\n                                $string_started = true;\n                            }\n                        }\n                        $char_len = strlen($char);\n                    }\n\n                    if ($string_started && ($i != $next_comment_regexp_pos)) {\n                        // Hand out the correct style information for this string\n                        $string_key = array_search($char, $this->language_data['QUOTEMARKS']);\n                        if (!isset($this->language_data['STYLES']['STRINGS'][$string_key]) ||\n                            !isset($this->language_data['STYLES']['ESCAPE_CHAR'][$string_key])) {\n                            $string_key = 0;\n                        }\n\n                        // parse the stuff before this\n                        $result .= $this->parse_non_string_part($stuff_to_parse);\n                        $stuff_to_parse = '';\n\n                        if (!$this->use_classes) {\n                            $string_attributes = ' style=\"' . $this->language_data['STYLES']['STRINGS'][$string_key] . '\"';\n                        } else {\n                            $string_attributes = ' class=\"st'.$string_key.'\"';\n                        }\n\n                        // now handle the string\n                        $string = \"<span$string_attributes>\" . GeSHi::hsc($char);\n                        $start = $i + $char_len;\n                        $string_open = true;\n\n                        if(empty($this->language_data['ESCAPE_REGEXP'])) {\n                            $next_escape_regexp_pos = $length;\n                        }\n\n                        do {\n                            //Get the regular ending pos ...\n                            $close_pos = strpos($part, $char, $start);\n                            if(false === $close_pos) {\n                                $close_pos = $length;\n                            }\n\n                            if($this->lexic_permissions['ESCAPE_CHAR']) {\n                                // update escape regexp cache if needed\n                                if (isset($this->language_data['ESCAPE_REGEXP']) && $next_escape_regexp_pos < $start) {\n                                    $next_escape_regexp_pos = $length;\n                                    foreach ($this->language_data['ESCAPE_REGEXP'] as $escape_key => $regexp) {\n                                        $match_i = false;\n                                        if (isset($escape_regexp_cache_per_key[$escape_key]) &&\n                                            ($escape_regexp_cache_per_key[$escape_key]['pos'] >= $start ||\n                                             $escape_regexp_cache_per_key[$escape_key]['pos'] === false)) {\n                                            // we have already matched something\n                                            if ($escape_regexp_cache_per_key[$escape_key]['pos'] === false) {\n                                                // this comment is never matched\n                                                continue;\n                                            }\n                                            $match_i = $escape_regexp_cache_per_key[$escape_key]['pos'];\n                                        } elseif (preg_match($regexp, $part, $match, PREG_OFFSET_CAPTURE, $start)) {\n                                            $match_i = $match[0][1];\n\n                                            $escape_regexp_cache_per_key[$escape_key] = array(\n                                                'key' => $escape_key,\n                                                'length' => strlen($match[0][0]),\n                                                'pos' => $match_i\n                                            );\n                                        } else {\n                                            $escape_regexp_cache_per_key[$escape_key]['pos'] = false;\n                                            continue;\n                                        }\n\n                                        if ($match_i !== false && $match_i < $next_escape_regexp_pos) {\n                                            $next_escape_regexp_pos = $match_i;\n                                            $next_escape_regexp_key = $escape_key;\n                                            if ($match_i === $start) {\n                                                break;\n                                            }\n                                        }\n                                    }\n                                }\n\n                                //Find the next simple escape position\n                                if('' != $this->language_data['ESCAPE_CHAR']) {\n                                    $simple_escape = strpos($part, $this->language_data['ESCAPE_CHAR'], $start);\n                                    if(false === $simple_escape) {\n                                        $simple_escape = $length;\n                                    }\n                                } else {\n                                    $simple_escape = $length;\n                                }\n                            } else {\n                                $next_escape_regexp_pos = $length;\n                                $simple_escape = $length;\n                            }\n\n                            if($simple_escape < $next_escape_regexp_pos &&\n                                $simple_escape < $length &&\n                                $simple_escape < $close_pos) {\n                                //The nexxt escape sequence is a simple one ...\n                                $es_pos = $simple_escape;\n\n                                //Add the stuff not in the string yet ...\n                                $string .= $this->hsc(substr($part, $start, $es_pos - $start));\n\n                                //Get the style for this escaped char ...\n                                if (!$this->use_classes) {\n                                    $escape_char_attributes = ' style=\"' . $this->language_data['STYLES']['ESCAPE_CHAR'][0] . '\"';\n                                } else {\n                                    $escape_char_attributes = ' class=\"es0\"';\n                                }\n\n                                //Add the style for the escape char ...\n                                $string .= \"<span$escape_char_attributes>\" .\n                                    $this->hsc($this->language_data['ESCAPE_CHAR']);\n\n                                //Get the byte AFTER the ESCAPE_CHAR we just found\n                                $es_char = $part[$es_pos + 1];\n                                if ($es_char == \"\\n\") {\n                                    // don't put a newline around newlines\n                                    $string .= \"</span>\\n\";\n                                    $start = $es_pos + 2;\n                                } elseif (ord($es_char) >= 128) {\n                                    //This is an non-ASCII char (UTF8 or single byte)\n                                    //This code tries to work around SF#2037598 ...\n                                    if(function_exists('mb_substr')) {\n                                        $es_char_m = mb_substr(substr($part, $es_pos+1, 16), 0, 1, $this->encoding);\n                                        $string .= $es_char_m . '</span>';\n                                    } elseif ('utf-8' == $this->encoding) {\n                                        if(preg_match(\"/[\\xC2-\\xDF][\\x80-\\xBF]\".\n                                            \"|\\xE0[\\xA0-\\xBF][\\x80-\\xBF]\".\n                                            \"|[\\xE1-\\xEC\\xEE\\xEF][\\x80-\\xBF]{2}\".\n                                            \"|\\xED[\\x80-\\x9F][\\x80-\\xBF]\".\n                                            \"|\\xF0[\\x90-\\xBF][\\x80-\\xBF]{2}\".\n                                            \"|[\\xF1-\\xF3][\\x80-\\xBF]{3}\".\n                                            \"|\\xF4[\\x80-\\x8F][\\x80-\\xBF]{2}/s\",\n                                            $part, $es_char_m, 0, $es_pos + 1)) {\n                                            $es_char_m = $es_char_m[0];\n                                        } else {\n                                            $es_char_m = $es_char;\n                                        }\n                                        $string .= $this->hsc($es_char_m) . '</span>';\n                                    } else {\n                                        $es_char_m = $this->hsc($es_char);\n                                    }\n                                    $start = $es_pos + strlen($es_char_m) + 1;\n                                } else {\n                                    $string .= $this->hsc($es_char) . '</span>';\n                                    $start = $es_pos + 2;\n                                }\n                            } elseif ($next_escape_regexp_pos < $length &&\n                                $next_escape_regexp_pos < $close_pos) {\n                                $es_pos = $next_escape_regexp_pos;\n                                //Add the stuff not in the string yet ...\n                                $string .= $this->hsc(substr($part, $start, $es_pos - $start));\n\n                                //Get the key and length of this match ...\n                                $escape = $escape_regexp_cache_per_key[$next_escape_regexp_key];\n                                $escape_str = substr($part, $es_pos, $escape['length']);\n                                $escape_key = $escape['key'];\n\n                                //Get the style for this escaped char ...\n                                if (!$this->use_classes) {\n                                    $escape_char_attributes = ' style=\"' . $this->language_data['STYLES']['ESCAPE_CHAR'][$escape_key] . '\"';\n                                } else {\n                                    $escape_char_attributes = ' class=\"es' . $escape_key . '\"';\n                                }\n\n                                //Add the style for the escape char ...\n                                $string .= \"<span$escape_char_attributes>\" .\n                                    $this->hsc($escape_str) . '</span>';\n\n                                $start = $es_pos + $escape['length'];\n                            } else {\n                                //Copy the remainder of the string ...\n                                $string .= $this->hsc(substr($part, $start, $close_pos - $start + $char_len)) . '</span>';\n                                $start = $close_pos + $char_len;\n                                $string_open = false;\n                            }\n                        } while($string_open);\n\n                        if ($check_linenumbers) {\n                            // Are line numbers used? If, we should end the string before\n                            // the newline and begin it again (so when <li>s are put in the source\n                            // remains XHTML compliant)\n                            // note to self: This opens up possibility of config files specifying\n                            // that languages can/cannot have multiline strings???\n                            $string = str_replace(\"\\n\", \"</span>\\n<span$string_attributes>\", $string);\n                        }\n\n                        $result .= $string;\n                        $string = '';\n                        $i = $start - 1;\n                        continue;\n                    } elseif ($this->lexic_permissions['STRINGS'] && $hq && $hq[0] == $char &&\n                        substr($part, $i, $hq_strlen) == $hq && ($i != $next_comment_regexp_pos)) {\n                        // The start of a hard quoted string\n                        if (!$this->use_classes) {\n                            $string_attributes = ' style=\"' . $this->language_data['STYLES']['STRINGS']['HARD'] . '\"';\n                            $escape_char_attributes = ' style=\"' . $this->language_data['STYLES']['ESCAPE_CHAR']['HARD'] . '\"';\n                        } else {\n                            $string_attributes = ' class=\"st_h\"';\n                            $escape_char_attributes = ' class=\"es_h\"';\n                        }\n                        // parse the stuff before this\n                        $result .= $this->parse_non_string_part($stuff_to_parse);\n                        $stuff_to_parse = '';\n\n                        // now handle the string\n                        $string = '';\n\n                        // look for closing quote\n                        $start = $i + $hq_strlen;\n                        while ($close_pos = strpos($part, $this->language_data['HARDQUOTE'][1], $start)) {\n                            $start = $close_pos + 1;\n                            if ($this->lexic_permissions['ESCAPE_CHAR'] && $part[$close_pos - 1] == $this->language_data['HARDCHAR'] &&\n                                (($i + $hq_strlen) != ($close_pos))) { //Support empty string for HQ escapes if Starter = Escape\n                                // make sure this quote is not escaped\n                                foreach ($this->language_data['HARDESCAPE'] as $hardescape) {\n                                    if (substr($part, $close_pos - 1, strlen($hardescape)) == $hardescape) {\n                                        // check wether this quote is escaped or if it is something like '\\\\'\n                                        $escape_char_pos = $close_pos - 1;\n                                        while ($escape_char_pos > 0\n                                                && $part[$escape_char_pos - 1] == $this->language_data['HARDCHAR']) {\n                                            --$escape_char_pos;\n                                        }\n                                        if (($close_pos - $escape_char_pos) & 1) {\n                                            // uneven number of escape chars => this quote is escaped\n                                            continue 2;\n                                        }\n                                    }\n                                }\n                            }\n\n                            // found closing quote\n                            break;\n                        }\n\n                        //Found the closing delimiter?\n                        if (!$close_pos) {\n                            // span till the end of this $part when no closing delimiter is found\n                            $close_pos = $length;\n                        }\n\n                        //Get the actual string\n                        $string = substr($part, $i, $close_pos - $i + 1);\n                        $i = $close_pos;\n\n                        // handle escape chars and encode html chars\n                        // (special because when we have escape chars within our string they may not be escaped)\n                        if ($this->lexic_permissions['ESCAPE_CHAR'] && $this->language_data['ESCAPE_CHAR']) {\n                            $start = 0;\n                            $new_string = '';\n                            while ($es_pos = strpos($string, $this->language_data['ESCAPE_CHAR'], $start)) {\n                                // hmtl escape stuff before\n                                $new_string .= $this->hsc(substr($string, $start, $es_pos - $start));\n                                // check if this is a hard escape\n                                foreach ($this->language_data['HARDESCAPE'] as $hardescape) {\n                                    if (substr($string, $es_pos, strlen($hardescape)) == $hardescape) {\n                                        // indeed, this is a hardescape\n                                        $new_string .= \"<span$escape_char_attributes>\" .\n                                            $this->hsc($hardescape) . '</span>';\n                                        $start = $es_pos + strlen($hardescape);\n                                        continue 2;\n                                    }\n                                }\n                                // not a hard escape, but a normal escape\n                                // they come in pairs of two\n                                $c = 0;\n                                while (isset($string[$es_pos + $c]) && isset($string[$es_pos + $c + 1])\n                                    && $string[$es_pos + $c] == $this->language_data['ESCAPE_CHAR']\n                                    && $string[$es_pos + $c + 1] == $this->language_data['ESCAPE_CHAR']) {\n                                    $c += 2;\n                                }\n                                if ($c) {\n                                    $new_string .= \"<span$escape_char_attributes>\" .\n                                        str_repeat($escaped_escape_char, $c) .\n                                        '</span>';\n                                    $start = $es_pos + $c;\n                                } else {\n                                    // this is just a single lonely escape char...\n                                    $new_string .= $escaped_escape_char;\n                                    $start = $es_pos + 1;\n                                }\n                            }\n                            $string = $new_string . $this->hsc(substr($string, $start));\n                        } else {\n                            $string = $this->hsc($string);\n                        }\n\n                        if ($check_linenumbers) {\n                            // Are line numbers used? If, we should end the string before\n                            // the newline and begin it again (so when <li>s are put in the source\n                            // remains XHTML compliant)\n                            // note to self: This opens up possibility of config files specifying\n                            // that languages can/cannot have multiline strings???\n                            $string = str_replace(\"\\n\", \"</span>\\n<span$string_attributes>\", $string);\n                        }\n\n                        $result .= \"<span$string_attributes>\" . $string . '</span>';\n                        $string = '';\n                        continue;\n                    } else {\n                        //Have a look for regexp comments\n                        if ($i == $next_comment_regexp_pos) {\n                            $COMMENT_MATCHED = true;\n                            $comment = $comment_regexp_cache_per_key[$next_comment_regexp_key];\n                            $test_str = $this->hsc(substr($part, $i, $comment['length']));\n\n                            //@todo If remove important do remove here\n                            if ($this->lexic_permissions['COMMENTS']['MULTI']) {\n                                if (!$this->use_classes) {\n                                    $attributes = ' style=\"' . $this->language_data['STYLES']['COMMENTS'][$comment['key']] . '\"';\n                                } else {\n                                    $attributes = ' class=\"co' . $comment['key'] . '\"';\n                                }\n\n                                $test_str = \"<span$attributes>\" . $test_str . \"</span>\";\n\n                                // Short-cut through all the multiline code\n                                if ($check_linenumbers) {\n                                    // strreplace to put close span and open span around multiline newlines\n                                    $test_str = str_replace(\n                                        \"\\n\", \"</span>\\n<span$attributes>\",\n                                        str_replace(\"\\n \", \"\\n&nbsp;\", $test_str)\n                                    );\n                                }\n                            }\n\n                            $i += $comment['length'] - 1;\n\n                            // parse the rest\n                            $result .= $this->parse_non_string_part($stuff_to_parse);\n                            $stuff_to_parse = '';\n                        }\n\n                        // If we haven't matched a regexp comment, try multi-line comments\n                        if (!$COMMENT_MATCHED) {\n                            // Is this a multiline comment?\n                            if (!empty($this->language_data['COMMENT_MULTI']) && $next_comment_multi_pos < $i) {\n                                $next_comment_multi_pos = $length;\n                                foreach ($this->language_data['COMMENT_MULTI'] as $open => $close) {\n                                    $match_i = false;\n                                    if (isset($comment_multi_cache_per_key[$open]) &&\n                                        ($comment_multi_cache_per_key[$open] >= $i ||\n                                         $comment_multi_cache_per_key[$open] === false)) {\n                                        // we have already matched something\n                                        if ($comment_multi_cache_per_key[$open] === false) {\n                                            // this comment is never matched\n                                            continue;\n                                        }\n                                        $match_i = $comment_multi_cache_per_key[$open];\n                                    } elseif (($match_i = stripos($part, $open, $i)) !== false) {\n                                        $comment_multi_cache_per_key[$open] = $match_i;\n                                    } else {\n                                        $comment_multi_cache_per_key[$open] = false;\n                                        continue;\n                                    }\n                                    if ($match_i !== false && $match_i < $next_comment_multi_pos) {\n                                        $next_comment_multi_pos = $match_i;\n                                        $next_open_comment_multi = $open;\n                                        if ($match_i === $i) {\n                                            break;\n                                        }\n                                    }\n                                }\n                            }\n                            if ($i == $next_comment_multi_pos) {\n                                $open = $next_open_comment_multi;\n                                $close = $this->language_data['COMMENT_MULTI'][$open];\n                                $open_strlen = strlen($open);\n                                $close_strlen = strlen($close);\n                                $COMMENT_MATCHED = true;\n                                $test_str_match = $open;\n                                //@todo If remove important do remove here\n                                if ($this->lexic_permissions['COMMENTS']['MULTI'] ||\n                                    $open == GESHI_START_IMPORTANT) {\n                                    if ($open != GESHI_START_IMPORTANT) {\n                                        if (!$this->use_classes) {\n                                            $attributes = ' style=\"' . $this->language_data['STYLES']['COMMENTS']['MULTI'] . '\"';\n                                        } else {\n                                            $attributes = ' class=\"coMULTI\"';\n                                        }\n                                        $test_str = \"<span$attributes>\" . $this->hsc($open);\n                                    } else {\n                                        if (!$this->use_classes) {\n                                            $attributes = ' style=\"' . $this->important_styles . '\"';\n                                        } else {\n                                            $attributes = ' class=\"imp\"';\n                                        }\n\n                                        // We don't include the start of the comment if it's an\n                                        // \"important\" part\n                                        $test_str = \"<span$attributes>\";\n                                    }\n                                } else {\n                                    $test_str = $this->hsc($open);\n                                }\n\n                                $close_pos = strpos( $part, $close, $i + $open_strlen );\n\n                                if ($close_pos === false) {\n                                    $close_pos = $length;\n                                }\n\n                                // Short-cut through all the multiline code\n                                $rest_of_comment = $this->hsc(substr($part, $i + $open_strlen, $close_pos - $i - $open_strlen + $close_strlen));\n                                if (($this->lexic_permissions['COMMENTS']['MULTI'] ||\n                                    $test_str_match == GESHI_START_IMPORTANT) &&\n                                    $check_linenumbers) {\n\n                                    // strreplace to put close span and open span around multiline newlines\n                                    $test_str .= str_replace(\n                                        \"\\n\", \"</span>\\n<span$attributes>\",\n                                        str_replace(\"\\n \", \"\\n&nbsp;\", $rest_of_comment)\n                                    );\n                                } else {\n                                    $test_str .= $rest_of_comment;\n                                }\n\n                                if ($this->lexic_permissions['COMMENTS']['MULTI'] ||\n                                    $test_str_match == GESHI_START_IMPORTANT) {\n                                    $test_str .= '</span>';\n                                }\n\n                                $i = $close_pos + $close_strlen - 1;\n\n                                // parse the rest\n                                $result .= $this->parse_non_string_part($stuff_to_parse);\n                                $stuff_to_parse = '';\n                            }\n                        }\n\n                        // If we haven't matched a multiline comment, try single-line comments\n                        if (!$COMMENT_MATCHED) {\n                            // cache potential single line comment occurances\n                            if (!empty($this->language_data['COMMENT_SINGLE']) && $next_comment_single_pos < $i) {\n                                $next_comment_single_pos = $length;\n                                foreach ($this->language_data['COMMENT_SINGLE'] as $comment_key => $comment_mark) {\n                                    $match_i = false;\n                                    if (isset($comment_single_cache_per_key[$comment_key]) &&\n                                        ($comment_single_cache_per_key[$comment_key] >= $i ||\n                                         $comment_single_cache_per_key[$comment_key] === false)) {\n                                        // we have already matched something\n                                        if ($comment_single_cache_per_key[$comment_key] === false) {\n                                            // this comment is never matched\n                                            continue;\n                                        }\n                                        $match_i = $comment_single_cache_per_key[$comment_key];\n                                    } elseif (\n                                        // case sensitive comments\n                                        ($this->language_data['CASE_SENSITIVE'][GESHI_COMMENTS] &&\n                                        ($match_i = stripos($part, $comment_mark, $i)) !== false) ||\n                                        // non case sensitive\n                                        (!$this->language_data['CASE_SENSITIVE'][GESHI_COMMENTS] &&\n                                          (($match_i = strpos($part, $comment_mark, $i)) !== false))) {\n                                        $comment_single_cache_per_key[$comment_key] = $match_i;\n                                    } else {\n                                        $comment_single_cache_per_key[$comment_key] = false;\n                                        continue;\n                                    }\n                                    if ($match_i !== false && $match_i < $next_comment_single_pos) {\n                                        $next_comment_single_pos = $match_i;\n                                        $next_comment_single_key = $comment_key;\n                                        if ($match_i === $i) {\n                                            break;\n                                        }\n                                    }\n                                }\n                            }\n                            if ($next_comment_single_pos == $i) {\n                                $comment_key = $next_comment_single_key;\n                                $comment_mark = $this->language_data['COMMENT_SINGLE'][$comment_key];\n                                $com_len = strlen($comment_mark);\n\n                                // This check will find special variables like $# in bash\n                                // or compiler directives of Delphi beginning {$\n                                if ((empty($sc_disallowed_before) || ($i == 0) ||\n                                    (false === strpos($sc_disallowed_before, $part[$i-1]))) &&\n                                    (empty($sc_disallowed_after) || ($length <= $i + $com_len) ||\n                                    (false === strpos($sc_disallowed_after, $part[$i + $com_len]))))\n                                {\n                                    // this is a valid comment\n                                    $COMMENT_MATCHED = true;\n                                    if ($this->lexic_permissions['COMMENTS'][$comment_key]) {\n                                        if (!$this->use_classes) {\n                                            $attributes = ' style=\"' . $this->language_data['STYLES']['COMMENTS'][$comment_key] . '\"';\n                                        } else {\n                                            $attributes = ' class=\"co' . $comment_key . '\"';\n                                        }\n                                        $test_str = \"<span$attributes>\" . $this->hsc($this->change_case($comment_mark));\n                                    } else {\n                                        $test_str = $this->hsc($comment_mark);\n                                    }\n\n                                    //Check if this comment is the last in the source\n                                    $close_pos = strpos($part, \"\\n\", $i);\n                                    $oops = false;\n                                    if ($close_pos === false) {\n                                        $close_pos = $length;\n                                        $oops = true;\n                                    }\n                                    $test_str .= $this->hsc(substr($part, $i + $com_len, $close_pos - $i - $com_len));\n                                    if ($this->lexic_permissions['COMMENTS'][$comment_key]) {\n                                        $test_str .= \"</span>\";\n                                    }\n\n                                    // Take into account that the comment might be the last in the source\n                                    if (!$oops) {\n                                      $test_str .= \"\\n\";\n                                    }\n\n                                    $i = $close_pos;\n\n                                    // parse the rest\n                                    $result .= $this->parse_non_string_part($stuff_to_parse);\n                                    $stuff_to_parse = '';\n                                }\n                            }\n                        }\n                    }\n\n                    // Where are we adding this char?\n                    if (!$COMMENT_MATCHED) {\n                        $stuff_to_parse .= $char;\n                    } else {\n                        $result .= $test_str;\n                        unset($test_str);\n                        $COMMENT_MATCHED = false;\n                    }\n                }\n                // Parse the last bit\n                $result .= $this->parse_non_string_part($stuff_to_parse);\n                $stuff_to_parse = '';\n            } else {\n                $result .= $this->hsc($part);\n            }\n            // Close the <span> that surrounds the block\n            if ($STRICTATTRS != '') {\n                $result = str_replace(\"\\n\", \"</span>\\n<span$STRICTATTRS>\", $result);\n                $result .= '</span>';\n            }\n\n            $endresult .= $result;\n            unset($part, $parts[$key], $result);\n        }\n\n        //This fix is related to SF#1923020, but has to be applied regardless of\n        //actually highlighting symbols.\n        /** NOTE: memorypeak #3 */\n        $endresult = str_replace(array('<SEMI>', '<PIPE>'), array(';', '|'), $endresult);\n\n//        // Parse the last stuff (redundant?)\n//        $result .= $this->parse_non_string_part($stuff_to_parse);\n\n        // Lop off the very first and last spaces\n//        $result = substr($result, 1, -1);\n\n        // We're finished: stop timing\n        $this->set_time($start_time, microtime());\n\n        $this->finalise($endresult);\n        return $endresult;\n    }\n\n    /**\n     * Swaps out spaces and tabs for HTML indentation. Not needed if\n     * the code is in a pre block...\n     *\n     * @param  string $result The source to indent (reference!)\n     * @since  1.0.0\n     */\n    protected function indent(&$result) {\n        /// Replace tabs with the correct number of spaces\n        if (false !== strpos($result, \"\\t\")) {\n            $lines = explode(\"\\n\", $result);\n            $result = null;//Save memory while we process the lines individually\n            $tab_width = $this->get_real_tab_width();\n            $tab_string = '&nbsp;' . str_repeat(' ', $tab_width);\n\n            for ($key = 0, $n = count($lines); $key < $n; $key++) {\n                $line = $lines[$key];\n                if (false === strpos($line, \"\\t\")) {\n                    continue;\n                }\n\n                $pos = 0;\n                $length = strlen($line);\n                $lines[$key] = ''; // reduce memory\n\n                $IN_TAG = false;\n                for ($i = 0; $i < $length; ++$i) {\n                    $char = $line[$i];\n                    // Simple engine to work out whether we're in a tag.\n                    // If we are we modify $pos. This is so we ignore HTML\n                    // in the line and only workout the tab replacement\n                    // via the actual content of the string\n                    // This test could be improved to include strings in the\n                    // html so that < or > would be allowed in user's styles\n                    // (e.g. quotes: '<' '>'; or similar)\n                    if ($IN_TAG) {\n                        if ('>' == $char) {\n                            $IN_TAG = false;\n                        }\n                        $lines[$key] .= $char;\n                    } elseif ('<' == $char) {\n                        $IN_TAG = true;\n                        $lines[$key] .= '<';\n                    } elseif ('&' == $char) {\n                        $substr = substr($line, $i + 3, 5);\n                        $posi = strpos($substr, ';');\n                        if (false === $posi) {\n                            ++$pos;\n                        } else {\n                            $pos -= $posi+2;\n                        }\n                        $lines[$key] .= $char;\n                    } elseif (\"\\t\" == $char) {\n                        $str = '';\n                        // OPTIMISE - move $strs out. Make an array:\n                        // $tabs = array(\n                        //  1 => '&nbsp;',\n                        //  2 => '&nbsp; ',\n                        //  3 => '&nbsp; &nbsp;' etc etc\n                        // to use instead of building a string every time\n                        $tab_end_width = $tab_width - ($pos % $tab_width); //Moved out of the look as it doesn't change within the loop\n                        if (($pos & 1) || 1 == $tab_end_width) {\n                            $str .= substr($tab_string, 6, $tab_end_width);\n                        } else {\n                            $str .= substr($tab_string, 0, $tab_end_width+5);\n                        }\n                        $lines[$key] .= $str;\n                        $pos += $tab_end_width;\n\n                        if (false === strpos($line, \"\\t\", $i + 1)) {\n                            $lines[$key] .= substr($line, $i + 1);\n                            break;\n                        }\n                    } elseif (0 == $pos && ' ' == $char) {\n                        $lines[$key] .= '&nbsp;';\n                        ++$pos;\n                    } else {\n                        $lines[$key] .= $char;\n                        ++$pos;\n                    }\n                }\n            }\n            $result = implode(\"\\n\", $lines);\n            unset($lines);//We don't need the lines separated beyond this --- free them!\n        }\n        // Other whitespace\n        // BenBE: Fix to reduce the number of replacements to be done\n        $result = preg_replace('/^ /m', '&nbsp;', $result);\n        $result = str_replace('  ', ' &nbsp;', $result);\n\n        if ($this->line_numbers == GESHI_NO_LINE_NUMBERS && $this->header_type != GESHI_HEADER_PRE_TABLE) {\n            if ($this->line_ending === null) {\n                $result = nl2br($result);\n            } else {\n                $result = str_replace(\"\\n\", $this->line_ending, $result);\n            }\n        }\n    }\n\n    /**\n     * Changes the case of a keyword for those languages where a change is asked for\n     *\n     * @param  string $instr The keyword to change the case of\n     * @return string The keyword with its case changed\n     * @since  1.0.0\n     */\n    protected function change_case($instr) {\n        switch ($this->language_data['CASE_KEYWORDS']) {\n            case GESHI_CAPS_UPPER:\n                return strtoupper($instr);\n            case GESHI_CAPS_LOWER:\n                return strtolower($instr);\n            default:\n                return $instr;\n        }\n    }\n\n    /**\n     * Handles replacements of keywords to include markup and links if requested\n     *\n     * @param  string $match The keyword to add the Markup to\n     * @return string The HTML for the match found\n     * @since  1.0.8\n     *\n     * @todo   Get rid of ender in keyword links\n     */\n    protected function handle_keyword_replace($match) {\n        $k = $this->_kw_replace_group;\n        $keyword = $match[0];\n        $keyword_match = $match[1];\n\n        $before = '';\n        $after = '';\n\n        if ($this->keyword_links) {\n            // Keyword links have been ebabled\n\n            if (isset($this->language_data['URLS'][$k]) &&\n                $this->language_data['URLS'][$k] != '') {\n                // There is a base group for this keyword\n\n                // Old system: strtolower\n                //$keyword = ( $this->language_data['CASE_SENSITIVE'][$group] ) ? $keyword : strtolower($keyword);\n                // New system: get keyword from language file to get correct case\n                if (!$this->language_data['CASE_SENSITIVE'][$k] &&\n                    strpos($this->language_data['URLS'][$k], '{FNAME}') !== false) {\n                    foreach ($this->language_data['KEYWORDS'][$k] as $word) {\n                        if (strcasecmp($word, $keyword_match) == 0) {\n                            break;\n                        }\n                    }\n                } else {\n                    $word = $keyword_match;\n                }\n\n                $before = '<|UR1|\"' .\n                    str_replace(\n                        array(\n                            '{FNAME}',\n                            '{FNAMEL}',\n                            '{FNAMEU}',\n                            '{FNAMEUF}',\n                            '.'),\n                        array(\n                            str_replace('+', '%20', urlencode($this->hsc($word))),\n                            str_replace('+', '%20', urlencode($this->hsc(strtolower($word)))),\n                            str_replace('+', '%20', urlencode($this->hsc(strtoupper($word)))),\n                            str_replace('+', '%20', urlencode($this->hsc(ucfirst($word)))),\n                            '<DOT>'),\n                        $this->language_data['URLS'][$k]\n                    ) . '\">';\n                $after = '</a>';\n            }\n        }\n\n        return $before . '<|/'. $k .'/>' . $this->change_case($keyword) . '|>' . $after;\n    }\n\n    /**\n     * handles regular expressions highlighting-definitions with callback functions\n     *\n     * @note this is a callback, don't use it directly\n     *\n     * @param array $matches the matches array\n     * @return string The highlighted string\n     * @since 1.0.8\n     */\n    protected function handle_regexps_callback($matches) {\n        // before: \"' style=\\\"' . call_user_func(\\\"$func\\\", '\\\\1') . '\\\"\\\\1|>'\",\n        return  ' style=\"' . call_user_func($this->language_data['STYLES']['REGEXPS'][$this->_rx_key], $matches[1]) . '\"'. $matches[1] . '|>';\n    }\n\n    /**\n     * handles newlines in REGEXPS matches. Set the _hmr_* vars before calling this\n     *\n     * @note this is a callback, don't use it directly\n     *\n     * @param array $matches the matches array\n     * @return string\n     * @since 1.0.8\n     */\n    protected function handle_multiline_regexps($matches) {\n        $before = $this->_hmr_before;\n        $after = $this->_hmr_after;\n        if ($this->_hmr_replace) {\n            $replace = $this->_hmr_replace;\n            $search = array();\n\n            foreach (array_keys($matches) as $k) {\n                $search[] = '\\\\' . $k;\n            }\n\n            $before = str_replace($search, $matches, $before);\n            $after = str_replace($search, $matches, $after);\n            $replace = str_replace($search, $matches, $replace);\n        } else {\n            $replace = $matches[0];\n        }\n        return $before\n                    . '<|!REG3XP' . $this->_hmr_key .'!>'\n                        . str_replace(\"\\n\", \"|>\\n<|!REG3XP\" . $this->_hmr_key . '!>', $replace)\n                    . '|>'\n              . $after;\n    }\n\n    /**\n     * Takes a string that has no strings or comments in it, and highlights\n     * stuff like keywords, numbers and methods.\n     *\n     * @param string $stuff_to_parse The string to parse for keyword, numbers etc.\n     * @since 1.0.0\n     * @todo BUGGY! Why? Why not build string and return?\n     * @return string\n     */\n    protected function parse_non_string_part($stuff_to_parse) {\n        $stuff_to_parse = ' ' . $this->hsc($stuff_to_parse);\n\n        // Highlight keywords\n        $disallowed_before = \"(?<![a-zA-Z0-9\\$_\\|\\#|^&\";\n        $disallowed_after = \"(?![a-zA-Z0-9_\\|%\\\\-&;\";\n        if ($this->lexic_permissions['STRINGS']) {\n            $quotemarks = preg_quote(implode($this->language_data['QUOTEMARKS']), '/');\n            $disallowed_before .= $quotemarks;\n            $disallowed_after .= $quotemarks;\n        }\n        $disallowed_before .= \"])\";\n        $disallowed_after .= \"])\";\n\n        $parser_control_pergroup = false;\n        if (isset($this->language_data['PARSER_CONTROL'])) {\n            if (isset($this->language_data['PARSER_CONTROL']['KEYWORDS'])) {\n                $x = 0; // check wether per-keyword-group parser_control is enabled\n                if (isset($this->language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_BEFORE'])) {\n                    $disallowed_before = $this->language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_BEFORE'];\n                    ++$x;\n                }\n                if (isset($this->language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_AFTER'])) {\n                    $disallowed_after = $this->language_data['PARSER_CONTROL']['KEYWORDS']['DISALLOWED_AFTER'];\n                    ++$x;\n                }\n                $parser_control_pergroup = (count($this->language_data['PARSER_CONTROL']['KEYWORDS']) - $x) > 0;\n            }\n        }\n\n        foreach (array_keys($this->language_data['KEYWORDS']) as $k) {\n            if (!isset($this->lexic_permissions['KEYWORDS'][$k]) ||\n                $this->lexic_permissions['KEYWORDS'][$k]) {\n\n                $case_sensitive = $this->language_data['CASE_SENSITIVE'][$k];\n                $modifiers = $case_sensitive ? '' : 'i';\n\n                // NEW in 1.0.8 - per-keyword-group parser control\n                $disallowed_before_local = $disallowed_before;\n                $disallowed_after_local = $disallowed_after;\n                if ($parser_control_pergroup && isset($this->language_data['PARSER_CONTROL']['KEYWORDS'][$k])) {\n                    if (isset($this->language_data['PARSER_CONTROL']['KEYWORDS'][$k]['DISALLOWED_BEFORE'])) {\n                        $disallowed_before_local =\n                            $this->language_data['PARSER_CONTROL']['KEYWORDS'][$k]['DISALLOWED_BEFORE'];\n                    }\n\n                    if (isset($this->language_data['PARSER_CONTROL']['KEYWORDS'][$k]['DISALLOWED_AFTER'])) {\n                        $disallowed_after_local =\n                            $this->language_data['PARSER_CONTROL']['KEYWORDS'][$k]['DISALLOWED_AFTER'];\n                    }\n                }\n\n                $this->_kw_replace_group = $k;\n\n                //NEW in 1.0.8, the cached regexp list\n                // since we don't want PHP / PCRE to crash due to too large patterns we split them into smaller chunks\n                for ($set = 0, $set_length = count($this->language_data['CACHED_KEYWORD_LISTS'][$k]); $set <  $set_length; ++$set) {\n                    $keywordset =& $this->language_data['CACHED_KEYWORD_LISTS'][$k][$set];\n                    // Might make a more unique string for putting the number in soon\n                    // Basically, we don't put the styles in yet because then the styles themselves will\n                    // get highlighted if the language has a CSS keyword in it (like CSS, for example ;))\n                    $stuff_to_parse = preg_replace_callback(\n                        \"/$disallowed_before_local({$keywordset})(?!\\<DOT\\>(?:htm|php|aspx?))$disallowed_after_local/$modifiers\",\n                        array($this, 'handle_keyword_replace'),\n                        $stuff_to_parse\n                        );\n                }\n            }\n        }\n\n        // Regular expressions\n        foreach ($this->language_data['REGEXPS'] as $key => $regexp) {\n            if ($this->lexic_permissions['REGEXPS'][$key]) {\n                if (is_array($regexp)) {\n                    if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {\n                        // produce valid HTML when we match multiple lines\n                        $this->_hmr_replace = $regexp[GESHI_REPLACE];\n                        $this->_hmr_before = $regexp[GESHI_BEFORE];\n                        $this->_hmr_key = $key;\n                        $this->_hmr_after = $regexp[GESHI_AFTER];\n                        $stuff_to_parse = preg_replace_callback(\n                            \"/\" . $regexp[GESHI_SEARCH] . \"/{$regexp[GESHI_MODIFIERS]}\",\n                            array($this, 'handle_multiline_regexps'),\n                            $stuff_to_parse);\n                        $this->_hmr_replace = false;\n                        $this->_hmr_before = '';\n                        $this->_hmr_after = '';\n                    } else {\n                        $stuff_to_parse = preg_replace(\n                            '/' . $regexp[GESHI_SEARCH] . '/' . $regexp[GESHI_MODIFIERS],\n                            $regexp[GESHI_BEFORE] . '<|!REG3XP'. $key .'!>' . $regexp[GESHI_REPLACE] . '|>' . $regexp[GESHI_AFTER],\n                            $stuff_to_parse);\n                    }\n                } else {\n                    if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {\n                        // produce valid HTML when we match multiple lines\n                        $this->_hmr_key = $key;\n                        $stuff_to_parse = preg_replace_callback( \"/(\" . $regexp . \")/\",\n                                              array($this, 'handle_multiline_regexps'), $stuff_to_parse);\n                        $this->_hmr_key = '';\n                    } else {\n                        $stuff_to_parse = preg_replace( \"/(\" . $regexp . \")/\", \"<|!REG3XP$key!>\\\\1|>\", $stuff_to_parse);\n                    }\n                }\n            }\n        }\n\n        // Highlight numbers. As of 1.0.8 we support different types of numbers\n        $numbers_found = false;\n\n        if ($this->lexic_permissions['NUMBERS'] && preg_match($this->language_data['PARSER_CONTROL']['NUMBERS']['PRECHECK_RX'], $stuff_to_parse )) {\n            $numbers_found = true;\n\n            //For each of the formats ...\n            foreach($this->language_data['NUMBERS_RXCACHE'] as $id => $regexp) {\n                //Check if it should be highlighted ...\n                $stuff_to_parse = preg_replace($regexp, \"<|/NUM!$id/>\\\\1|>\", $stuff_to_parse);\n            }\n        }\n\n        //\n        // Now that's all done, replace /[number]/ with the correct styles\n        //\n        foreach (array_keys($this->language_data['KEYWORDS']) as $k) {\n            if (!$this->use_classes) {\n                $attributes = ' style=\"' .\n                    (isset($this->language_data['STYLES']['KEYWORDS'][$k]) ?\n                    $this->language_data['STYLES']['KEYWORDS'][$k] : \"\") . '\"';\n            } else {\n                $attributes = ' class=\"kw' . $k . '\"';\n            }\n            $stuff_to_parse = str_replace(\"<|/$k/>\", \"<|$attributes>\", $stuff_to_parse);\n        }\n\n        if ($numbers_found) {\n            // Put number styles in\n            foreach($this->language_data['NUMBERS_RXCACHE'] as $id => $regexp) {\n                //Commented out for now, as this needs some review ...\n                //                if ($numbers_permissions & $id) {\n                //Get the appropriate style ...\n                //Checking for unset styles is done by the style cache builder ...\n                if (!$this->use_classes) {\n                    $attributes = ' style=\"' . $this->language_data['STYLES']['NUMBERS'][$id] . '\"';\n                } else {\n                    $attributes = ' class=\"nu'.$id.'\"';\n                }\n\n                //Set in the correct styles ...\n                $stuff_to_parse = str_replace(\"/NUM!$id/\", $attributes, $stuff_to_parse);\n                //                }\n            }\n        }\n\n        // Highlight methods and fields in objects\n        if ($this->lexic_permissions['METHODS'] && $this->language_data['OOLANG']) {\n            $oolang_spaces = \"[\\s]*\";\n            $oolang_before = \"\";\n            $oolang_after = \"[a-zA-Z][a-zA-Z0-9_]*\";\n            if (isset($this->language_data['PARSER_CONTROL'])) {\n                if (isset($this->language_data['PARSER_CONTROL']['OOLANG'])) {\n                    if (isset($this->language_data['PARSER_CONTROL']['OOLANG']['MATCH_BEFORE'])) {\n                        $oolang_before = $this->language_data['PARSER_CONTROL']['OOLANG']['MATCH_BEFORE'];\n                    }\n                    if (isset($this->language_data['PARSER_CONTROL']['OOLANG']['MATCH_AFTER'])) {\n                        $oolang_after = $this->language_data['PARSER_CONTROL']['OOLANG']['MATCH_AFTER'];\n                    }\n                    if (isset($this->language_data['PARSER_CONTROL']['OOLANG']['MATCH_SPACES'])) {\n                        $oolang_spaces = $this->language_data['PARSER_CONTROL']['OOLANG']['MATCH_SPACES'];\n                    }\n                }\n            }\n\n            foreach ($this->language_data['OBJECT_SPLITTERS'] as $key => $splitter) {\n                if (false !== strpos($stuff_to_parse, $splitter)) {\n                    if (!$this->use_classes) {\n                        $attributes = ' style=\"' . $this->language_data['STYLES']['METHODS'][$key] . '\"';\n                    } else {\n                        $attributes = ' class=\"me' . $key . '\"';\n                    }\n                    $stuff_to_parse = preg_replace(\"/($oolang_before)(\" . preg_quote($this->language_data['OBJECT_SPLITTERS'][$key], '/') . \")($oolang_spaces)($oolang_after)/\", \"\\\\1\\\\2\\\\3<|$attributes>\\\\4|>\", $stuff_to_parse);\n                }\n            }\n        }\n\n        //\n        // Highlight brackets. Yes, I've tried adding a semi-colon to this list.\n        // You try it, and see what happens ;)\n        // TODO: Fix lexic permissions not converting entities if shouldn't\n        // be highlighting regardless\n        //\n        if ($this->lexic_permissions['BRACKETS']) {\n            $stuff_to_parse = str_replace( $this->language_data['CACHE_BRACKET_MATCH'],\n                              $this->language_data['CACHE_BRACKET_REPLACE'], $stuff_to_parse );\n        }\n\n\n        //FIX for symbol highlighting ...\n        if ($this->lexic_permissions['SYMBOLS'] && !empty($this->language_data['SYMBOLS'])) {\n            //Get all matches and throw away those witin a block that is already highlighted... (i.e. matched by a regexp)\n            $n_symbols = preg_match_all(\"/<\\|(?:<DOT>|[^>])+>(?:(?!\\|>).*?)\\|>|<\\/a>|(?:\" . $this->language_data['SYMBOL_SEARCH'] . \")+(?![^<]+?>)/\", $stuff_to_parse, $pot_symbols, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);\n            $global_offset = 0;\n            for ($s_id = 0; $s_id < $n_symbols; ++$s_id) {\n                $symbol_match = $pot_symbols[$s_id][0][0];\n                if (strpos($symbol_match, '<') !== false || strpos($symbol_match, '>') !== false) {\n                    // already highlighted blocks _must_ include either < or >\n                    // so if this conditional applies, we have to skip this match\n                    // BenBE: UNLESS the block contains <SEMI> or <PIPE>\n                    if(strpos($symbol_match, '<SEMI>') === false &&\n                        strpos($symbol_match, '<PIPE>') === false) {\n                        continue;\n                    }\n                }\n\n                // if we reach this point, we have a valid match which needs to be highlighted\n\n                $symbol_length = strlen($symbol_match);\n                $symbol_offset = $pot_symbols[$s_id][0][1];\n                unset($pot_symbols[$s_id]);\n                $symbol_hl = \"\";\n\n                // if we have multiple styles, we have to handle them properly\n                if ($this->language_data['MULTIPLE_SYMBOL_GROUPS']) {\n                    $old_sym = -1;\n                    // Split the current stuff to replace into its atomic symbols ...\n                    preg_match_all(\"/\" . $this->language_data['SYMBOL_SEARCH'] . \"/\", $symbol_match, $sym_match_syms, PREG_PATTERN_ORDER);\n                    foreach ($sym_match_syms[0] as $sym_ms) {\n                        //Check if consequtive symbols belong to the same group to save output ...\n                        if (isset($this->language_data['SYMBOL_DATA'][$sym_ms])\n                            && ($this->language_data['SYMBOL_DATA'][$sym_ms] != $old_sym)) {\n                            if (-1 != $old_sym) {\n                                $symbol_hl .= \"|>\";\n                            }\n                            $old_sym = $this->language_data['SYMBOL_DATA'][$sym_ms];\n                            if (!$this->use_classes) {\n                                $symbol_hl .= '<| style=\"' . $this->language_data['STYLES']['SYMBOLS'][$old_sym] . '\">';\n                            } else {\n                                $symbol_hl .= '<| class=\"sy' . $old_sym . '\">';\n                            }\n                        }\n                        $symbol_hl .= $sym_ms;\n                    }\n                    unset($sym_match_syms);\n\n                    //Close remaining tags and insert the replacement at the right position ...\n                    //Take caution if symbol_hl is empty to avoid doubled closing spans.\n                    if (-1 != $old_sym) {\n                        $symbol_hl .= \"|>\";\n                    }\n                } else {\n                    if (!$this->use_classes) {\n                        $symbol_hl = '<| style=\"' . $this->language_data['STYLES']['SYMBOLS'][0] . '\">';\n                    } else {\n                        $symbol_hl = '<| class=\"sy0\">';\n                    }\n                    $symbol_hl .= $symbol_match . '|>';\n                }\n\n                $stuff_to_parse = substr_replace($stuff_to_parse, $symbol_hl, $symbol_offset + $global_offset, $symbol_length);\n\n                // since we replace old text with something of different size,\n                // we'll have to keep track of the differences\n                $global_offset += strlen($symbol_hl) - $symbol_length;\n            }\n        }\n        //FIX for symbol highlighting ...\n\n        // Add class/style for regexps\n        foreach (array_keys($this->language_data['REGEXPS']) as $key) {\n            if ($this->lexic_permissions['REGEXPS'][$key]) {\n                if (is_callable($this->language_data['STYLES']['REGEXPS'][$key])) {\n                    $this->_rx_key = $key;\n                    $stuff_to_parse = preg_replace_callback(\"/!REG3XP$key!(.*)\\|>/U\",\n                        array($this, 'handle_regexps_callback'),\n                        $stuff_to_parse);\n                } else {\n                    if (!$this->use_classes) {\n                        $attributes = ' style=\"' . $this->language_data['STYLES']['REGEXPS'][$key] . '\"';\n                    } else {\n                        if (is_array($this->language_data['REGEXPS'][$key]) &&\n                            array_key_exists(GESHI_CLASS, $this->language_data['REGEXPS'][$key])) {\n                            $attributes = ' class=\"' .\n                                $this->language_data['REGEXPS'][$key][GESHI_CLASS] . '\"';\n                        } else {\n                           $attributes = ' class=\"re' . $key . '\"';\n                        }\n                    }\n                    $stuff_to_parse = str_replace(\"!REG3XP$key!\", \"$attributes\", $stuff_to_parse);\n                }\n            }\n        }\n\n        // Replace <DOT> with . for urls\n        $stuff_to_parse = str_replace('<DOT>', '.', $stuff_to_parse);\n        // Replace <|UR1| with <a href= for urls also\n        if (isset($this->link_styles[GESHI_LINK])) {\n            if ($this->use_classes) {\n                $stuff_to_parse = str_replace('<|UR1|', '<a' . $this->link_target . ' href=', $stuff_to_parse);\n            } else {\n                $stuff_to_parse = str_replace('<|UR1|', '<a' . $this->link_target . ' style=\"' . $this->link_styles[GESHI_LINK] . '\" href=', $stuff_to_parse);\n            }\n        } else {\n            $stuff_to_parse = str_replace('<|UR1|', '<a' . $this->link_target . ' href=', $stuff_to_parse);\n        }\n\n        //\n        // NOW we add the span thingy ;)\n        //\n\n        $stuff_to_parse = str_replace('<|', '<span', $stuff_to_parse);\n        $stuff_to_parse = str_replace ( '|>', '</span>', $stuff_to_parse );\n        return substr($stuff_to_parse, 1);\n    }\n\n    /**\n     * Sets the time taken to parse the code\n     *\n     * @param string $start_time The time when parsing started as returned by @see microtime()\n     * @param string $end_time   The time when parsing ended as returned by @see microtime()\n     * @since 1.0.2\n     */\n    protected function set_time($start_time, $end_time) {\n        $start = explode(' ', $start_time);\n        $end = explode(' ', $end_time);\n        $this->time = $end[0] + $end[1] - $start[0] - $start[1];\n    }\n\n    /**\n     * Gets the time taken to parse the code\n     *\n     * @return double The time taken to parse the code\n     * @since  1.0.2\n     */\n    public function get_time() {\n        return $this->time;\n    }\n\n    /**\n     * Merges arrays recursively, overwriting values of the first array with values of later arrays\n     *\n     * @since 1.0.8\n     */\n    protected function merge_arrays() {\n        $arrays = func_get_args();\n        $narrays = count($arrays);\n\n        // check arguments\n        // comment out if more performance is necessary (in this case the foreach loop will trigger a warning if the argument is not an array)\n        for ($i = 0; $i < $narrays; $i ++) {\n            if (!is_array($arrays[$i])) {\n                // also array_merge_recursive returns nothing in this case\n                trigger_error('Argument #' . ($i+1) . ' is not an array - trying to merge array with scalar! Returning false!', E_USER_WARNING);\n                return false;\n            }\n        }\n\n        // the first array is in the output set in every case\n        $ret = $arrays[0];\n\n        // merege $ret with the remaining arrays\n        for ($i = 1; $i < $narrays; $i ++) {\n            foreach ($arrays[$i] as $key => $value) {\n                if (is_array($value) && isset($ret[$key])) {\n                    // if $ret[$key] is not an array you try to merge an scalar value with an array - the result is not defined (incompatible arrays)\n                    // in this case the call will trigger an E_USER_WARNING and the $ret[$key] will be false.\n                    $ret[$key] = $this->merge_arrays($ret[$key], $value);\n                } else {\n                    $ret[$key] = $value;\n                }\n            }\n        }\n\n        return $ret;\n    }\n\n    /**\n     * Gets language information and stores it for later use\n     *\n     * @param string $file_name The filename of the language file you want to load\n     * @since 1.0.0\n     * @todo Needs to load keys for lexic permissions for keywords, regexps etc\n     */\n    protected function load_language($file_name) {\n        if ($file_name == $this->loaded_language) {\n            // this file is already loaded!\n            return;\n        }\n\n        //Prepare some stuff before actually loading the language file\n        $this->loaded_language = $file_name;\n        $this->parse_cache_built = false;\n        $this->enable_highlighting();\n        $language_data = array();\n\n        //Load the language file\n        require $file_name;\n\n        // Perhaps some checking might be added here later to check that\n        // $language data is a valid thing but maybe not\n        $this->language_data = $language_data;\n\n        // Set strict mode if should be set\n        $this->strict_mode = $this->language_data['STRICT_MODE_APPLIES'];\n\n        // Set permissions for all lexics to true\n        // so they'll be highlighted by default\n        foreach (array_keys($this->language_data['KEYWORDS']) as $key) {\n            if (!empty($this->language_data['KEYWORDS'][$key])) {\n                $this->lexic_permissions['KEYWORDS'][$key] = true;\n            } else {\n                $this->lexic_permissions['KEYWORDS'][$key] = false;\n            }\n        }\n\n        foreach (array_keys($this->language_data['COMMENT_SINGLE']) as $key) {\n            $this->lexic_permissions['COMMENTS'][$key] = true;\n        }\n        foreach (array_keys($this->language_data['REGEXPS']) as $key) {\n            $this->lexic_permissions['REGEXPS'][$key] = true;\n        }\n\n        // for BenBE and future code reviews:\n        // we can use empty here since we only check for existance and emptiness of an array\n        // if it is not an array at all but rather false or null this will work as intended as well\n        // even if $this->language_data['PARSER_CONTROL'] is undefined this won't trigger a notice\n        if (!empty($this->language_data['PARSER_CONTROL']['ENABLE_FLAGS'])) {\n            foreach ($this->language_data['PARSER_CONTROL']['ENABLE_FLAGS'] as $flag => $value) {\n                // it's either true or false and maybe is true as well\n                $perm = $value !== GESHI_NEVER;\n                if ($flag == 'ALL') {\n                    $this->enable_highlighting($perm);\n                    continue;\n                }\n                if (!isset($this->lexic_permissions[$flag])) {\n                    // unknown lexic permission\n                    continue;\n                }\n                if (is_array($this->lexic_permissions[$flag])) {\n                    foreach ($this->lexic_permissions[$flag] as $key => $val) {\n                        $this->lexic_permissions[$flag][$key] = $perm;\n                    }\n                } else {\n                    $this->lexic_permissions[$flag] = $perm;\n                }\n            }\n            unset($this->language_data['PARSER_CONTROL']['ENABLE_FLAGS']);\n        }\n\n        //Fix: Problem where hardescapes weren't handled if no ESCAPE_CHAR was given\n        //You need to set one for HARDESCAPES only in this case.\n        if(!isset($this->language_data['HARDCHAR'])) {\n            $this->language_data['HARDCHAR'] = $this->language_data['ESCAPE_CHAR'];\n        }\n\n        //NEW in 1.0.8: Allow styles to be loaded from a separate file to override defaults\n        $style_filename = substr($file_name, 0, -4) . '.style.php';\n        if (is_readable($style_filename)) {\n            //Clear any style_data that could have been set before ...\n            if (isset($style_data)) {\n                unset($style_data);\n            }\n\n            //Read the Style Information from the style file\n            include $style_filename;\n\n            //Apply the new styles to our current language styles\n            if (isset($style_data) && is_array($style_data)) {\n                $this->language_data['STYLES'] =\n                    $this->merge_arrays($this->language_data['STYLES'], $style_data);\n            }\n        }\n    }\n\n    /**\n     * Takes the parsed code and various options, and creates the HTML\n     * surrounding it to make it look nice.\n     *\n     * @param  string $parsed_code The code already parsed (reference!)\n     * @since  1.0.0\n     */\n    protected function finalise(&$parsed_code) {\n        // Remove end parts of important declarations\n        // This is BUGGY!! My fault for bad code: fix coming in 1.2\n        // @todo Remove this crap\n        if ($this->enable_important_blocks &&\n            (strpos($parsed_code, $this->hsc(GESHI_START_IMPORTANT)) === false)) {\n            $parsed_code = str_replace($this->hsc(GESHI_END_IMPORTANT), '', $parsed_code);\n        }\n\n        // Add HTML whitespace stuff if we're using the <div> header\n        if ($this->header_type != GESHI_HEADER_PRE && $this->header_type != GESHI_HEADER_PRE_VALID) {\n            $this->indent($parsed_code);\n        }\n\n        // purge some unnecessary stuff\n        /** NOTE: memorypeak #1 */\n        $parsed_code = preg_replace('#<span[^>]+>(\\s*)</span>#', '\\\\1', $parsed_code);\n\n        // If we are using IDs for line numbers, there needs to be an overall\n        // ID set to prevent collisions.\n        if ($this->add_ids && !$this->overall_id) {\n            $this->overall_id = 'geshi-' . substr(md5(microtime()), 0, 4);\n        }\n\n        // Get code into lines\n        /** NOTE: memorypeak #2 */\n        $code = explode(\"\\n\", $parsed_code);\n        $parsed_code = $this->header();\n\n        // If we're using line numbers, we insert <li>s and appropriate\n        // markup to style them (otherwise we don't need to do anything)\n        if ($this->line_numbers != GESHI_NO_LINE_NUMBERS && $this->header_type != GESHI_HEADER_PRE_TABLE) {\n            // If we're using the <pre> header, we shouldn't add newlines because\n            // the <pre> will line-break them (and the <li>s already do this for us)\n            $ls = ($this->header_type != GESHI_HEADER_PRE && $this->header_type != GESHI_HEADER_PRE_VALID) ? \"\\n\" : '';\n\n            // Foreach line...\n            for ($i = 0, $n = count($code); $i < $n;) {\n                //Reset the attributes for a new line ...\n                $attrs = array();\n\n                // Make lines have at least one space in them if they're empty\n                // BenBE: Checking emptiness using trim instead of relying on blanks\n                if ('' == trim($code[$i])) {\n                    $code[$i] = '&nbsp;';\n                }\n\n                // If this is a \"special line\"...\n                if ($this->line_numbers == GESHI_FANCY_LINE_NUMBERS &&\n                    $i % $this->line_nth_row == ($this->line_nth_row - 1)) {\n                    // Set the attributes to style the line\n                    if ($this->use_classes) {\n                        //$attr = ' class=\"li2\"';\n                        $attrs['class'][] = 'li2';\n                        $def_attr = ' class=\"de2\"';\n                    } else {\n                        //$attr = ' style=\"' . $this->line_style2 . '\"';\n                        $attrs['style'][] = $this->line_style2;\n                        // This style \"covers up\" the special styles set for special lines\n                        // so that styles applied to special lines don't apply to the actual\n                        // code on that line\n                        $def_attr = ' style=\"' . $this->code_style . '\"';\n                    }\n                } else {\n                    if ($this->use_classes) {\n                        //$attr = ' class=\"li1\"';\n                        $attrs['class'][] = 'li1';\n                        $def_attr = ' class=\"de1\"';\n                    } else {\n                        //$attr = ' style=\"' . $this->line_style1 . '\"';\n                        $attrs['style'][] = $this->line_style1;\n                        $def_attr = ' style=\"' . $this->code_style . '\"';\n                    }\n                }\n\n                //Check which type of tag to insert for this line\n                if ($this->header_type == GESHI_HEADER_PRE_VALID) {\n                    $start = \"<pre$def_attr>\";\n                    $end = '</pre>';\n                } else {\n                    // Span or div?\n                    $start = \"<div$def_attr>\";\n                    $end = '</div>';\n                }\n\n                ++$i;\n\n                // Are we supposed to use ids? If so, add them\n                if ($this->add_ids) {\n                    $attrs['id'][] = \"$this->overall_id-$i\";\n                }\n\n                //Is this some line with extra styles???\n                if (in_array($i, $this->highlight_extra_lines)) {\n                    if ($this->use_classes) {\n                        if (isset($this->highlight_extra_lines_styles[$i])) {\n                            $attrs['class'][] = \"lx$i\";\n                        } else {\n                            $attrs['class'][] = \"ln-xtra\";\n                        }\n                    } else {\n                        array_push($attrs['style'], $this->get_line_style($i));\n                    }\n                }\n\n                // Add in the line surrounded by appropriate list HTML\n                $attr_string = '';\n                foreach ($attrs as $key => $attr) {\n                    $attr_string .= ' ' . $key . '=\"' . implode(' ', $attr) . '\"';\n                }\n\n                $parsed_code .= \"<li$attr_string>$start{$code[$i-1]}$end</li>$ls\";\n                unset($code[$i - 1]);\n            }\n        } else {\n            $n = count($code);\n            if ($this->use_classes) {\n                $attributes = ' class=\"de1\"';\n            } else {\n                $attributes = ' style=\"'. $this->code_style .'\"';\n            }\n            if ($this->header_type == GESHI_HEADER_PRE_VALID) {\n                $parsed_code .= '<pre'. $attributes .'>';\n            } elseif ($this->header_type == GESHI_HEADER_PRE_TABLE) {\n                if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {\n                    if ($this->use_classes) {\n                        $attrs = ' class=\"ln\"';\n                    } else {\n                        $attrs = ' style=\"'. $this->table_linenumber_style .'\"';\n                    }\n                    $parsed_code .= '<td'.$attrs.'><pre'.$attributes.'>';\n                    // get linenumbers\n                    // we don't merge it with the for below, since it should be better for\n                    // memory consumption this way\n                    // @todo: but... actually it would still be somewhat nice to merge the two loops\n                    //        the mem peaks are at different positions\n                    for ($i = 0; $i < $n; ++$i) {\n                        $close = 0;\n                        // fancy lines\n                        if ($this->line_numbers == GESHI_FANCY_LINE_NUMBERS &&\n                            $i % $this->line_nth_row == ($this->line_nth_row - 1)) {\n                            // Set the attributes to style the line\n                            if ($this->use_classes) {\n                                $parsed_code .= '<span class=\"xtra li2\"><span class=\"de2\">';\n                            } else {\n                                // This style \"covers up\" the special styles set for special lines\n                                // so that styles applied to special lines don't apply to the actual\n                                // code on that line\n                                $parsed_code .= '<span style=\"display:block;' . $this->line_style2 . '\">'\n                                                  .'<span style=\"' . $this->code_style .'\">';\n                            }\n                            $close += 2;\n                        }\n                        //Is this some line with extra styles???\n                        if (in_array($i + 1, $this->highlight_extra_lines)) {\n                            if ($this->use_classes) {\n                                if (isset($this->highlight_extra_lines_styles[$i])) {\n                                    $parsed_code .= \"<span class=\\\"xtra lx$i\\\">\";\n                                } else {\n                                    $parsed_code .= \"<span class=\\\"xtra ln-xtra\\\">\";\n                                }\n                            } else {\n                                $parsed_code .= \"<span style=\\\"display:block;\" . $this->get_line_style($i) . \"\\\">\";\n                            }\n                            ++$close;\n                        }\n                        $parsed_code .= $this->line_numbers_start + $i;\n                        if ($close) {\n                            $parsed_code .= str_repeat('</span>', $close);\n                        } elseif ($i != $n) {\n                            $parsed_code .= \"\\n\";\n                        }\n                    }\n                    $parsed_code .= '</pre></td><td'.$attributes.'>';\n                }\n                $parsed_code .= '<pre'. $attributes .'>';\n            }\n            // No line numbers, but still need to handle highlighting lines extra.\n            // Have to use divs so the full width of the code is highlighted\n            $close = 0;\n            for ($i = 0; $i < $n; ++$i) {\n                // Make lines have at least one space in them if they're empty\n                // BenBE: Checking emptiness using trim instead of relying on blanks\n                if ('' == trim($code[$i])) {\n                    $code[$i] = '&nbsp;';\n                }\n                // fancy lines\n                if ($this->line_numbers == GESHI_FANCY_LINE_NUMBERS &&\n                    $i % $this->line_nth_row == ($this->line_nth_row - 1)) {\n                    // Set the attributes to style the line\n                    if ($this->use_classes) {\n                        $parsed_code .= '<span class=\"xtra li2\"><span class=\"de2\">';\n                    } else {\n                        // This style \"covers up\" the special styles set for special lines\n                        // so that styles applied to special lines don't apply to the actual\n                        // code on that line\n                        $parsed_code .= '<span style=\"display:block;' . $this->line_style2 . '\">'\n                                          .'<span style=\"' . $this->code_style .'\">';\n                    }\n                    $close += 2;\n                }\n                //Is this some line with extra styles???\n                if (in_array($i + 1, $this->highlight_extra_lines)) {\n                    if ($this->use_classes) {\n                        if (isset($this->highlight_extra_lines_styles[$i])) {\n                            $parsed_code .= \"<span class=\\\"xtra lx$i\\\">\";\n                        } else {\n                            $parsed_code .= \"<span class=\\\"xtra ln-xtra\\\">\";\n                        }\n                    } else {\n                        $parsed_code .= \"<span style=\\\"display:block;\" . $this->get_line_style($i) . \"\\\">\";\n                    }\n                    ++$close;\n                }\n\n                $parsed_code .= $code[$i];\n\n                if ($close) {\n                  $parsed_code .= str_repeat('</span>', $close);\n                  $close = 0;\n                }\n                elseif ($i + 1 < $n) {\n                    $parsed_code .= \"\\n\";\n                }\n                unset($code[$i]);\n            }\n\n            if ($this->header_type == GESHI_HEADER_PRE_VALID || $this->header_type == GESHI_HEADER_PRE_TABLE) {\n                $parsed_code .= '</pre>';\n            }\n            if ($this->header_type == GESHI_HEADER_PRE_TABLE && $this->line_numbers != GESHI_NO_LINE_NUMBERS) {\n                $parsed_code .= '</td>';\n            }\n        }\n\n        $parsed_code .= $this->footer();\n    }\n\n    /**\n     * Creates the header for the code block (with correct attributes)\n     *\n     * @return string The header for the code block\n     * @since  1.0.0\n     */\n    protected function header() {\n        // Get attributes needed\n        /**\n         * @todo   Document behaviour change - class is outputted regardless of whether\n         *         we're using classes or not. Same with style\n         */\n        $attributes = ' class=\"' . $this->_genCSSName($this->language);\n        if ($this->overall_class != '') {\n            $attributes .= \" \".$this->_genCSSName($this->overall_class);\n        }\n        $attributes .= '\"';\n\n        if ($this->overall_id != '') {\n            $attributes .= \" id=\\\"{$this->overall_id}\\\"\";\n        }\n        if ($this->overall_style != '' && !$this->use_classes) {\n            $attributes .= ' style=\"' . $this->overall_style . '\"';\n        }\n\n        $ol_attributes = '';\n\n        if ($this->line_numbers_start != 1) {\n            $ol_attributes .= ' start=\"' . $this->line_numbers_start . '\"';\n        }\n\n        // Get the header HTML\n        $header = $this->header_content;\n        if ($header) {\n            if ($this->header_type == GESHI_HEADER_PRE || $this->header_type == GESHI_HEADER_PRE_VALID) {\n                $header = str_replace(\"\\n\", '', $header);\n            }\n            $header = $this->replace_keywords($header);\n\n            if ($this->use_classes) {\n                $attr = ' class=\"head\"';\n            } else {\n                $attr = \" style=\\\"{$this->header_content_style}\\\"\";\n            }\n            if ($this->header_type == GESHI_HEADER_PRE_TABLE && $this->line_numbers != GESHI_NO_LINE_NUMBERS) {\n                $header = \"<thead><tr><td colspan=\\\"2\\\" $attr>$header</td></tr></thead>\";\n            } else {\n                $header = \"<div$attr>$header</div>\";\n            }\n        }\n\n        if (GESHI_HEADER_NONE == $this->header_type) {\n            if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {\n                return \"$header<ol$attributes$ol_attributes>\";\n            }\n            return $header . ($this->force_code_block ? '<div>' : '');\n        }\n\n        // Work out what to return and do it\n        if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {\n            if ($this->header_type == GESHI_HEADER_PRE) {\n                return \"<pre$attributes>$header<ol$ol_attributes>\";\n            } elseif ($this->header_type == GESHI_HEADER_DIV ||\n                $this->header_type == GESHI_HEADER_PRE_VALID) {\n                return \"<div$attributes>$header<ol$ol_attributes>\";\n            } elseif ($this->header_type == GESHI_HEADER_PRE_TABLE) {\n                return \"<table$attributes>$header<tbody><tr class=\\\"li1\\\">\";\n            }\n        } else {\n            if ($this->header_type == GESHI_HEADER_PRE) {\n                return \"<pre$attributes>$header\"  .\n                    ($this->force_code_block ? '<div>' : '');\n            } else {\n                return \"<div$attributes>$header\" .\n                    ($this->force_code_block ? '<div>' : '');\n            }\n        }\n    }\n\n    /**\n     * Returns the footer for the code block.\n     *\n     * @return string The footer for the code block\n     * @since  1.0.0\n     */\n    protected function footer() {\n        $footer = $this->footer_content;\n        if ($footer) {\n            if ($this->header_type == GESHI_HEADER_PRE) {\n                $footer = str_replace(\"\\n\", '', $footer);;\n            }\n            $footer = $this->replace_keywords($footer);\n\n            if ($this->use_classes) {\n                $attr = ' class=\"foot\"';\n            } else {\n                $attr = \" style=\\\"{$this->footer_content_style}\\\"\";\n            }\n            if ($this->header_type == GESHI_HEADER_PRE_TABLE && $this->line_numbers != GESHI_NO_LINE_NUMBERS) {\n                $footer = \"<tfoot><tr><td colspan=\\\"2\\\">$footer</td></tr></tfoot>\";\n            } else {\n                $footer = \"<div$attr>$footer</div>\";\n            }\n        }\n\n        if (GESHI_HEADER_NONE == $this->header_type) {\n            return ($this->line_numbers != GESHI_NO_LINE_NUMBERS) ? '</ol>' . $footer : $footer;\n        }\n\n        if ($this->header_type == GESHI_HEADER_DIV || $this->header_type == GESHI_HEADER_PRE_VALID) {\n            if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {\n                return \"</ol>$footer</div>\";\n            }\n            return ($this->force_code_block ? '</div>' : '') .\n                \"$footer</div>\";\n        }\n        elseif ($this->header_type == GESHI_HEADER_PRE_TABLE) {\n            if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {\n                return \"</tr></tbody>$footer</table>\";\n            }\n            return ($this->force_code_block ? '</div>' : '') .\n                \"$footer</div>\";\n        }\n        else {\n            if ($this->line_numbers != GESHI_NO_LINE_NUMBERS) {\n                return \"</ol>$footer</pre>\";\n            }\n            return ($this->force_code_block ? '</div>' : '') .\n                \"$footer</pre>\";\n        }\n    }\n\n    /**\n     * Replaces certain keywords in the header and footer with\n     * certain configuration values\n     *\n     * @param  string $instr The header or footer content to do replacement on\n     * @return string The header or footer with replaced keywords\n     * @since  1.0.2\n     */\n    protected function replace_keywords($instr) {\n        $keywords = $replacements = array();\n\n        $keywords[] = '<TIME>';\n        $keywords[] = '{TIME}';\n        $replacements[] = $replacements[] = number_format($time = $this->get_time(), 3);\n\n        $keywords[] = '<LANGUAGE>';\n        $keywords[] = '{LANGUAGE}';\n        $replacements[] = $replacements[] = $this->language_data['LANG_NAME'];\n\n        $keywords[] = '<VERSION>';\n        $keywords[] = '{VERSION}';\n        $replacements[] = $replacements[] = GESHI_VERSION;\n\n        $keywords[] = '<SPEED>';\n        $keywords[] = '{SPEED}';\n        if ($time <= 0) {\n            $speed = 'N/A';\n        } else {\n            $speed = strlen($this->source) / $time;\n            if ($speed >= 1024) {\n                $speed = sprintf(\"%.2f KB/s\", $speed / 1024.0);\n            } else {\n                $speed = sprintf(\"%.0f B/s\", $speed);\n            }\n        }\n        $replacements[] = $replacements[] = $speed;\n\n        return str_replace($keywords, $replacements, $instr);\n    }\n\n    /**\n     * Secure replacement for PHP built-in function htmlspecialchars().\n     *\n     * See ticket #427 (http://wush.net/trac/wikka/ticket/427) for the rationale\n     * for this replacement function.\n     *\n     * The INTERFACE for this function is almost the same as that for\n     * htmlspecialchars(), with the same default for quote style; however, there\n     * is no 'charset' parameter. The reason for this is as follows:\n     *\n     * The PHP docs say:\n     *      \"The third argument charset defines character set used in conversion.\"\n     *\n     * I suspect PHP's htmlspecialchars() is working at the byte-value level and\n     * thus _needs_ to know (or asssume) a character set because the special\n     * characters to be replaced could exist at different code points in\n     * different character sets. (If indeed htmlspecialchars() works at\n     * byte-value level that goes some  way towards explaining why the\n     * vulnerability would exist in this function, too, and not only in\n     * htmlentities() which certainly is working at byte-value level.)\n     *\n     * This replacement function however works at character level and should\n     * therefore be \"immune\" to character set differences - so no charset\n     * parameter is needed or provided. If a third parameter is passed, it will\n     * be silently ignored.\n     *\n     * In the OUTPUT there is a minor difference in that we use '&#39;' instead\n     * of PHP's '&#039;' for a single quote: this provides compatibility with\n     *      get_html_translation_table(HTML_SPECIALCHARS, ENT_QUOTES)\n     * (see comment by mikiwoz at yahoo dot co dot uk on\n     * http://php.net/htmlspecialchars); it also matches the entity definition\n     * for XML 1.0\n     * (http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_Special_characters).\n     * Like PHP we use a numeric character reference instead of '&apos;' for the\n     * single quote. For the other special characters we use the named entity\n     * references, as PHP is doing.\n     *\n     * @author      {@link http://wikkawiki.org/JavaWoman Marjolein Katsma}\n     *\n     * @license     http://www.gnu.org/copyleft/lgpl.html\n     *              GNU Lesser General Public License\n     * @copyright   Copyright 2007, {@link http://wikkawiki.org/CreditsPage\n     *              Wikka Development Team}\n     *\n     * @param       string  $string string to be converted\n     * @param       integer $quote_style\n     *                      - ENT_COMPAT:   escapes &, <, > and double quote (default)\n     *                      - ENT_NOQUOTES: escapes only &, < and >\n     *                      - ENT_QUOTES:   escapes &, <, >, double and single quotes\n     * @return      string  converted string\n     * @since       1.0.7.18\n     */\n    protected function hsc($string, $quote_style = ENT_COMPAT) {\n        // init\n        static $aTransSpecchar = array(\n            '&' => '&amp;',\n            '\"' => '&quot;',\n            '<' => '&lt;',\n            '>' => '&gt;',\n\n            //This fix is related to SF#1923020, but has to be applied\n            //regardless of actually highlighting symbols.\n\n            //Circumvent a bug with symbol highlighting\n            //This is required as ; would produce undesirable side-effects if it\n            //was not to be processed as an entity.\n            ';' => '<SEMI>', // Force ; to be processed as entity\n            '|' => '<PIPE>' // Force | to be processed as entity\n            );                      // ENT_COMPAT set\n\n        switch ($quote_style) {\n            case ENT_NOQUOTES: // don't convert double quotes\n                unset($aTransSpecchar['\"']);\n                break;\n            case ENT_QUOTES: // convert single quotes as well\n                $aTransSpecchar[\"'\"] = '&#39;'; // (apos) htmlspecialchars() uses '&#039;'\n                break;\n        }\n\n        // return translated string\n        return strtr($string, $aTransSpecchar);\n    }\n\n    /**\n     * Generate a CSS class name from a given string.\n     * Prevents invalid CSS classes.\n     *\n     * @param string $name Proposed class name\n     *\n     * @return string Safe CSS class name\n     */\n    protected function _genCSSName($name) {\n        return (is_numeric($name[0]) ? '_' : '') . $name;\n    }\n\n    /**\n     * Returns a stylesheet for the highlighted code. If $economy mode\n     * is true, we only return the stylesheet declarations that matter for\n     * this code block instead of the whole thing\n     *\n     * @param  boolean $economy_mode Whether to use economy mode or not\n     * @return string A stylesheet built on the data for the current language\n     * @since  1.0.0\n     */\n    public function get_stylesheet($economy_mode = true) {\n        // If there's an error, chances are that the language file\n        // won't have populated the language data file, so we can't\n        // risk getting a stylesheet...\n        if ($this->error) {\n            return '';\n        }\n\n        //Check if the style rearrangements have been processed ...\n        //This also does some preprocessing to check which style groups are useable ...\n        if(!isset($this->language_data['NUMBERS_CACHE'])) {\n            $this->build_style_cache();\n        }\n\n        // First, work out what the selector should be. If there's an ID,\n        // that should be used, the same for a class. Otherwise, a selector\n        // of '' means that these styles will be applied anywhere\n        if ($this->overall_id) {\n            $selector = '#' . $this->_genCSSName($this->overall_id);\n        } else {\n            $selector = '.' . $this->_genCSSName($this->language);\n            if ($this->overall_class) {\n                $selector .= '.' . $this->_genCSSName($this->overall_class);\n            }\n        }\n        $selector .= ' ';\n\n        // Header of the stylesheet\n        if (!$economy_mode) {\n            $stylesheet = \"/**\\n\".\n                \" * GeSHi Dynamically Generated Stylesheet\\n\".\n                \" * --------------------------------------\\n\".\n                \" * Dynamically generated stylesheet for {$this->language}\\n\".\n                \" * CSS class: {$this->overall_class}, CSS id: {$this->overall_id}\\n\".\n                \" * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2014 Benny Baumann\\n\" .\n                \" * (http://qbnz.com/highlighter/ and http://geshi.org/)\\n\".\n                \" * --------------------------------------\\n\".\n                \" */\\n\";\n        } else {\n            $stylesheet = \"/**\\n\".\n                \" * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2014 Benny Baumann\\n\" .\n                \" * (http://qbnz.com/highlighter/ and http://geshi.org/)\\n\".\n                \" */\\n\";\n        }\n\n        // Set the <ol> to have no effect at all if there are line numbers\n        // (<ol>s have margins that should be destroyed so all layout is\n        // controlled by the set_overall_style method, which works on the\n        // <pre> or <div> container). Additionally, set default styles for lines\n        if (!$economy_mode || $this->line_numbers != GESHI_NO_LINE_NUMBERS) {\n            //$stylesheet .= \"$selector, {$selector}ol, {$selector}ol li {margin: 0;}\\n\";\n            $stylesheet .= \"$selector.de1, $selector.de2 {{$this->code_style}}\\n\";\n        }\n\n        // Add overall styles\n        // note: neglect economy_mode, empty styles are meaningless\n        if ($this->overall_style != '') {\n            $stylesheet .= \"$selector {{$this->overall_style}}\\n\";\n        }\n\n        // Add styles for links\n        // note: economy mode does not make _any_ sense here\n        //       either the style is empty and thus no selector is needed\n        //       or the appropriate key is given.\n        foreach ($this->link_styles as $key => $style) {\n            if ($style != '') {\n                switch ($key) {\n                    case GESHI_LINK:\n                        $stylesheet .= \"{$selector}a:link {{$style}}\\n\";\n                        break;\n                    case GESHI_HOVER:\n                        $stylesheet .= \"{$selector}a:hover {{$style}}\\n\";\n                        break;\n                    case GESHI_ACTIVE:\n                        $stylesheet .= \"{$selector}a:active {{$style}}\\n\";\n                        break;\n                    case GESHI_VISITED:\n                        $stylesheet .= \"{$selector}a:visited {{$style}}\\n\";\n                        break;\n                }\n            }\n        }\n\n        // Header and footer\n        // note: neglect economy_mode, empty styles are meaningless\n        if ($this->header_content_style != '') {\n            $stylesheet .= \"$selector.head {{$this->header_content_style}}\\n\";\n        }\n        if ($this->footer_content_style != '') {\n            $stylesheet .= \"$selector.foot {{$this->footer_content_style}}\\n\";\n        }\n\n        // Styles for important stuff\n        // note: neglect economy_mode, empty styles are meaningless\n        if ($this->important_styles != '') {\n            $stylesheet .= \"$selector.imp {{$this->important_styles}}\\n\";\n        }\n\n        // Simple line number styles\n        if ((!$economy_mode || $this->line_numbers != GESHI_NO_LINE_NUMBERS) && $this->line_style1 != '') {\n            $stylesheet .= \"{$selector}li, {$selector}.li1 {{$this->line_style1}}\\n\";\n        }\n        if ((!$economy_mode || $this->line_numbers != GESHI_NO_LINE_NUMBERS) && $this->table_linenumber_style != '') {\n            $stylesheet .= \"{$selector}.ln {{$this->table_linenumber_style}}\\n\";\n        }\n        // If there is a style set for fancy line numbers, echo it out\n        if ((!$economy_mode || $this->line_numbers == GESHI_FANCY_LINE_NUMBERS) && $this->line_style2 != '') {\n            $stylesheet .= \"{$selector}.li2 {{$this->line_style2}}\\n\";\n        }\n\n        // note: empty styles are meaningless\n        foreach ($this->language_data['STYLES']['KEYWORDS'] as $group => $styles) {\n            if ($styles != '' && (!$economy_mode ||\n                (isset($this->lexic_permissions['KEYWORDS'][$group]) &&\n                $this->lexic_permissions['KEYWORDS'][$group]))) {\n                $stylesheet .= \"$selector.kw$group {{$styles}}\\n\";\n            }\n        }\n        foreach ($this->language_data['STYLES']['COMMENTS'] as $group => $styles) {\n            if ($styles != '' && (!$economy_mode ||\n                (isset($this->lexic_permissions['COMMENTS'][$group]) &&\n                $this->lexic_permissions['COMMENTS'][$group]) ||\n                (!empty($this->language_data['COMMENT_REGEXP']) &&\n                !empty($this->language_data['COMMENT_REGEXP'][$group])))) {\n                $stylesheet .= \"$selector.co$group {{$styles}}\\n\";\n            }\n        }\n        foreach ($this->language_data['STYLES']['ESCAPE_CHAR'] as $group => $styles) {\n            if ($styles != '' && (!$economy_mode || $this->lexic_permissions['ESCAPE_CHAR'])) {\n                // NEW: since 1.0.8 we have to handle hardescapes\n                if ($group === 'HARD') {\n                    $group = '_h';\n                }\n                $stylesheet .= \"$selector.es$group {{$styles}}\\n\";\n            }\n        }\n        foreach ($this->language_data['STYLES']['BRACKETS'] as $group => $styles) {\n            if ($styles != '' && (!$economy_mode || $this->lexic_permissions['BRACKETS'])) {\n                $stylesheet .= \"$selector.br$group {{$styles}}\\n\";\n            }\n        }\n        foreach ($this->language_data['STYLES']['SYMBOLS'] as $group => $styles) {\n            if ($styles != '' && (!$economy_mode || $this->lexic_permissions['SYMBOLS'])) {\n                $stylesheet .= \"$selector.sy$group {{$styles}}\\n\";\n            }\n        }\n        foreach ($this->language_data['STYLES']['STRINGS'] as $group => $styles) {\n            if ($styles != '' && (!$economy_mode || $this->lexic_permissions['STRINGS'])) {\n                // NEW: since 1.0.8 we have to handle hardquotes\n                if ($group === 'HARD') {\n                    $group = '_h';\n                }\n                $stylesheet .= \"$selector.st$group {{$styles}}\\n\";\n            }\n        }\n        foreach ($this->language_data['STYLES']['NUMBERS'] as $group => $styles) {\n            if ($styles != '' && (!$economy_mode || $this->lexic_permissions['NUMBERS'])) {\n                $stylesheet .= \"$selector.nu$group {{$styles}}\\n\";\n            }\n        }\n        foreach ($this->language_data['STYLES']['METHODS'] as $group => $styles) {\n            if ($styles != '' && (!$economy_mode || $this->lexic_permissions['METHODS'])) {\n                $stylesheet .= \"$selector.me$group {{$styles}}\\n\";\n            }\n        }\n        // note: neglect economy_mode, empty styles are meaningless\n        foreach ($this->language_data['STYLES']['SCRIPT'] as $group => $styles) {\n            if ($styles != '') {\n                $stylesheet .= \"$selector.sc$group {{$styles}}\\n\";\n            }\n        }\n        foreach ($this->language_data['STYLES']['REGEXPS'] as $group => $styles) {\n            if ($styles != '' && (!$economy_mode ||\n                (isset($this->lexic_permissions['REGEXPS'][$group]) &&\n                $this->lexic_permissions['REGEXPS'][$group]))) {\n                if (is_array($this->language_data['REGEXPS'][$group]) &&\n                    array_key_exists(GESHI_CLASS, $this->language_data['REGEXPS'][$group])) {\n                    $stylesheet .= \"$selector.\";\n                    $stylesheet .= $this->language_data['REGEXPS'][$group][GESHI_CLASS];\n                    $stylesheet .= \" {{$styles}}\\n\";\n                } else {\n                    $stylesheet .= \"$selector.re$group {{$styles}}\\n\";\n                }\n            }\n        }\n        // Styles for lines being highlighted extra\n        if (!$economy_mode || (count($this->highlight_extra_lines)!=count($this->highlight_extra_lines_styles))) {\n            $stylesheet .= \"{$selector}.ln-xtra, {$selector}li.ln-xtra, {$selector}div.ln-xtra {{$this->highlight_extra_lines_style}}\\n\";\n        }\n        $stylesheet .= \"{$selector}span.xtra { display:block; }\\n\";\n        foreach ($this->highlight_extra_lines_styles as $lineid => $linestyle) {\n            $stylesheet .= \"{$selector}.lx$lineid, {$selector}li.lx$lineid, {$selector}div.lx$lineid {{$linestyle}}\\n\";\n        }\n\n        return $stylesheet;\n    }\n\n    /**\n     * Get's the style that is used for the specified line\n     *\n     * @param int $line The line number information is requested for\n     * @since 1.0.7.21\n     */\n    protected function get_line_style($line) {\n        $style = null;\n        if (isset($this->highlight_extra_lines_styles[$line])) {\n            $style = $this->highlight_extra_lines_styles[$line];\n        } else { // if no \"extra\" style assigned\n            $style = $this->highlight_extra_lines_style;\n        }\n\n        return $style;\n    }\n\n    /**\n    * this functions creates an optimized regular expression list\n    * of an array of strings.\n    *\n    * Example:\n    * <code>$list = array('faa', 'foo', 'foobar');\n    *          => string 'f(aa|oo(bar)?)'</code>\n    *\n    * @param array  $list             array of (unquoted) strings\n    * @param string $regexp_delimiter your regular expression delimiter, @see preg_quote()\n    * @return string for regular expression\n    * @author Milian Wolff <mail@milianw.de>\n    * @since 1.0.8\n    */\n    protected function optimize_regexp_list($list, $regexp_delimiter = '/') {\n        $regex_chars = array('.', '\\\\', '+', '-', '*', '?', '[', '^', ']', '$',\n            '(', ')', '{', '}', '=', '!', '<', '>', '|', ':', $regexp_delimiter);\n        sort($list);\n        $regexp_list = array('');\n        $num_subpatterns = 0;\n        $list_key = 0;\n\n        // the tokens which we will use to generate the regexp list\n        $tokens = array();\n        $prev_keys = array();\n        // go through all entries of the list and generate the token list\n        $cur_len = 0;\n        for ($i = 0, $i_max = count($list); $i < $i_max; ++$i) {\n            if ($cur_len > GESHI_MAX_PCRE_LENGTH) {\n                // seems like the length of this pcre is growing exorbitantly\n                $regexp_list[++$list_key] = $this->_optimize_regexp_list_tokens_to_string($tokens);\n                $num_subpatterns = substr_count($regexp_list[$list_key], '(?:');\n                $tokens = array();\n                $cur_len = 0;\n            }\n            $level = 0;\n            $entry = preg_quote((string) $list[$i], $regexp_delimiter);\n            $pointer = &$tokens;\n            // properly assign the new entry to the correct position in the token array\n            // possibly generate smaller common denominator keys\n            while (true) {\n                // get the common denominator\n                if (isset($prev_keys[$level])) {\n                    if ($prev_keys[$level] == $entry) {\n                        // this is a duplicate entry, skip it\n                        continue 2;\n                    }\n                    $char = 0;\n                    while (isset($entry[$char]) && isset($prev_keys[$level][$char])\n                            && $entry[$char] == $prev_keys[$level][$char]) {\n                        ++$char;\n                    }\n                    if ($char > 0) {\n                        // this entry has at least some chars in common with the current key\n                        if ($char == strlen($prev_keys[$level])) {\n                            // current key is totally matched, i.e. this entry has just some bits appended\n                            $pointer = &$pointer[$prev_keys[$level]];\n                        } else {\n                            // only part of the keys match\n                            $new_key_part1 = substr($prev_keys[$level], 0, $char);\n                            $new_key_part2 = substr($prev_keys[$level], $char);\n\n                            if (in_array($new_key_part1[0], $regex_chars)\n                                || in_array($new_key_part2[0], $regex_chars)) {\n                                // this is bad, a regex char as first character\n                                $pointer[$entry] = array('' => true);\n                                array_splice($prev_keys, $level, count($prev_keys), $entry);\n                                $cur_len += strlen($entry);\n                                continue;\n                            } else {\n                                // relocate previous tokens\n                                $pointer[$new_key_part1] = array($new_key_part2 => $pointer[$prev_keys[$level]]);\n                                unset($pointer[$prev_keys[$level]]);\n                                $pointer = &$pointer[$new_key_part1];\n                                // recreate key index\n                                array_splice($prev_keys, $level, count($prev_keys), array($new_key_part1, $new_key_part2));\n                                $cur_len += strlen($new_key_part2);\n                            }\n                        }\n                        ++$level;\n                        $entry = substr($entry, $char);\n                        continue;\n                    }\n                    // else: fall trough, i.e. no common denominator was found\n                }\n                if ($level == 0 && !empty($tokens)) {\n                    // we can dump current tokens into the string and throw them away afterwards\n                    $new_entry = $this->_optimize_regexp_list_tokens_to_string($tokens);\n                    $new_subpatterns = substr_count($new_entry, '(?:');\n                    if (GESHI_MAX_PCRE_SUBPATTERNS && $num_subpatterns + $new_subpatterns > GESHI_MAX_PCRE_SUBPATTERNS) {\n                        $regexp_list[++$list_key] = $new_entry;\n                        $num_subpatterns = $new_subpatterns;\n                    } else {\n                        if (!empty($regexp_list[$list_key])) {\n                            $new_entry = '|' . $new_entry;\n                        }\n                        $regexp_list[$list_key] .= $new_entry;\n                        $num_subpatterns += $new_subpatterns;\n                    }\n                    $tokens = array();\n                    $cur_len = 0;\n                }\n                // no further common denominator found\n                $pointer[$entry] = array('' => true);\n                array_splice($prev_keys, $level, count($prev_keys), $entry);\n\n                $cur_len += strlen($entry);\n                break;\n            }\n            unset($list[$i]);\n        }\n        // make sure the last tokens get converted as well\n        $new_entry = $this->_optimize_regexp_list_tokens_to_string($tokens);\n        if (GESHI_MAX_PCRE_SUBPATTERNS && $num_subpatterns + substr_count($new_entry, '(?:') > GESHI_MAX_PCRE_SUBPATTERNS) {\n            if ( !empty($regexp_list[$list_key]) ) {\n              ++$list_key;\n            }\n            $regexp_list[$list_key] = $new_entry;\n        } else {\n            if (!empty($regexp_list[$list_key])) {\n                $new_entry = '|' . $new_entry;\n            }\n            $regexp_list[$list_key] .= $new_entry;\n        }\n        return $regexp_list;\n    }\n\n    /**\n    * this function creates the appropriate regexp string of an token array\n    * you should not call this function directly, @see $this->optimize_regexp_list().\n    *\n    * @param array $tokens   array of tokens\n    * @param bool  $recursed to know wether we recursed or not\n    * @return string\n    * @author Milian Wolff <mail@milianw.de>\n    * @since 1.0.8\n    */\n    protected function _optimize_regexp_list_tokens_to_string(&$tokens, $recursed = false) {\n        $list = '';\n        foreach ($tokens as $token => $sub_tokens) {\n            $list .= $token;\n            $close_entry = isset($sub_tokens['']);\n            unset($sub_tokens['']);\n            if (!empty($sub_tokens)) {\n                $list .= '(?:' . $this->_optimize_regexp_list_tokens_to_string($sub_tokens, true) . ')';\n                if ($close_entry) {\n                    // make sub_tokens optional\n                    $list .= '?';\n                }\n            }\n            $list .= '|';\n        }\n        if (!$recursed) {\n            // do some optimizations\n            // common trailing strings\n            // BUGGY!\n            //$list = preg_replace_callback('#(?<=^|\\:|\\|)\\w+?(\\w+)(?:\\|.+\\1)+(?=\\|)#', create_function(\n            //    '$matches', 'return \"(?:\" . preg_replace(\"#\" . preg_quote($matches[1], \"#\") . \"(?=\\||$)#\", \"\", $matches[0]) . \")\" . $matches[1];'), $list);\n            // (?:p)? => p?\n            $list = preg_replace('#\\(\\?\\:(.)\\)\\?#', '\\1?', $list);\n            // (?:a|b|c|d|...)? => [abcd...]?\n            // TODO: a|bb|c => [ac]|bb\n            static $callback_2;\n            if (!isset($callback_2)) {\n                $callback_2 = function($matches) {\n                    return \"[\" . str_replace(\"|\", \"\", $matches[1]) . \"]\";\n                };\n            }\n            $list = preg_replace_callback('#\\(\\?\\:((?:.\\|)+.)\\)#', $callback_2, $list);\n        }\n        // return $list without trailing pipe\n        return substr($list, 0, -1);\n    }\n} // End Class GeSHi\n\n\nif (!function_exists('geshi_highlight')) {\n    /**\n     * Easy way to highlight stuff. Behaves just like highlight_string\n     *\n     * @param string $string   The code to highlight\n     * @param string $language The language to highlight the code in\n     * @param string $path     The path to the language files. You can leave this blank if you need\n     *                         as from version 1.0.7 the path should be automatically detected\n     * @param boolean $return  Whether to return the result or to echo\n     * @return string The code highlighted (if $return is true)\n     * @since 1.0.2\n     */\n    function geshi_highlight($string, $language, $path = null, $return = false) {\n        $geshi = new GeSHi($string, $language, $path);\n        $geshi->set_header_type(GESHI_HEADER_NONE);\n\n        if ($return) {\n            return '<code>' . $geshi->parse_code() . '</code>';\n        }\n\n        echo '<code>' . $geshi->parse_code() . '</code>';\n\n        if ($geshi->error()) {\n            return false;\n        }\n        return true;\n    }\n}\n"
  },
  {
    "path": "includes/index.php",
    "content": ""
  },
  {
    "path": "includes/password.php",
    "content": "<?php\n/**\n * A Compatibility library with PHP 5.5's simplified password hashing API.\n *\n * @author Anthony Ferrara <ircmaxell@php.net>\n * @license http://www.opensource.org/licenses/mit-license.html MIT License\n * @copyright 2012 The Authors\n */\n\nnamespace {\n\n    if (!defined('PASSWORD_BCRYPT')) {\n        /**\n         * PHPUnit Process isolation caches constants, but not function declarations.\n         * So we need to check if the constants are defined separately from \n         * the functions to enable supporting process isolation in userland\n         * code.\n         */\n        define('PASSWORD_BCRYPT', 1);\n        define('PASSWORD_DEFAULT', PASSWORD_BCRYPT);\n        define('PASSWORD_BCRYPT_DEFAULT_COST', 10);\n    }\n\n    if (!function_exists('password_hash')) {\n\n        /**\n         * Hash the password using the specified algorithm\n         *\n         * @param string $password The password to hash\n         * @param int    $algo     The algorithm to use (Defined by PASSWORD_* constants)\n         * @param array  $options  The options for the algorithm to use\n         *\n         * @return string|false The hashed password, or false on error.\n         */\n        function password_hash($password, $algo, array $options = array()) {\n            if (!function_exists('crypt')) {\n                trigger_error(\"Crypt must be loaded for password_hash to function\", E_USER_WARNING);\n                return null;\n            }\n            if (is_null($password) || is_int($password)) {\n                $password = (string) $password;\n            }\n            if (!is_string($password)) {\n                trigger_error(\"password_hash(): Password must be a string\", E_USER_WARNING);\n                return null;\n            }\n            if (!is_int($algo)) {\n                trigger_error(\"password_hash() expects parameter 2 to be long, \" . gettype($algo) . \" given\", E_USER_WARNING);\n                return null;\n            }\n            $resultLength = 0;\n            switch ($algo) {\n                case PASSWORD_BCRYPT:\n                    $cost = PASSWORD_BCRYPT_DEFAULT_COST;\n                    if (isset($options['cost'])) {\n                        $cost = (int) $options['cost'];\n                        if ($cost < 4 || $cost > 31) {\n                            trigger_error(sprintf(\"password_hash(): Invalid bcrypt cost parameter specified: %d\", $cost), E_USER_WARNING);\n                            return null;\n                        }\n                    }\n                    // The length of salt to generate\n                    $raw_salt_len = 16;\n                    // The length required in the final serialization\n                    $required_salt_len = 22;\n                    $hash_format = sprintf(\"$2y$%02d$\", $cost);\n                    // The expected length of the final crypt() output\n                    $resultLength = 60;\n                    break;\n                default:\n                    trigger_error(sprintf(\"password_hash(): Unknown password hashing algorithm: %s\", $algo), E_USER_WARNING);\n                    return null;\n            }\n            $salt_req_encoding = false;\n            if (isset($options['salt'])) {\n                switch (gettype($options['salt'])) {\n                    case 'NULL':\n                    case 'boolean':\n                    case 'integer':\n                    case 'double':\n                    case 'string':\n                        $salt = (string) $options['salt'];\n                        break;\n                    case 'object':\n                        if (method_exists($options['salt'], '__tostring')) {\n                            $salt = (string) $options['salt'];\n                            break;\n                        }\n                    case 'array':\n                    case 'resource':\n                    default:\n                        trigger_error('password_hash(): Non-string salt parameter supplied', E_USER_WARNING);\n                        return null;\n                }\n                if (PasswordCompat\\binary\\_strlen($salt) < $required_salt_len) {\n                    trigger_error(sprintf(\"password_hash(): Provided salt is too short: %d expecting %d\", PasswordCompat\\binary\\_strlen($salt), $required_salt_len), E_USER_WARNING);\n                    return null;\n                } elseif (0 == preg_match('#^[a-zA-Z0-9./]+$#D', $salt)) {\n                    $salt_req_encoding = true;\n                }\n            } else {\n                $buffer = '';\n                $buffer_valid = false;\n                if (function_exists('mcrypt_create_iv') && !defined('PHALANGER')) {\n                    $buffer = mcrypt_create_iv($raw_salt_len, MCRYPT_DEV_URANDOM);\n                    if ($buffer) {\n                        $buffer_valid = true;\n                    }\n                }\n                if (!$buffer_valid && function_exists('openssl_random_pseudo_bytes')) {\n                    $strong = false;\n                    $buffer = openssl_random_pseudo_bytes($raw_salt_len, $strong);\n                    if ($buffer && $strong) {\n                        $buffer_valid = true;\n                    }\n                }\n                if (!$buffer_valid && @is_readable('/dev/urandom')) {\n                    $file = fopen('/dev/urandom', 'r');\n                    $read = 0;\n                    $local_buffer = '';\n                    while ($read < $raw_salt_len) {\n                        $local_buffer .= fread($file, $raw_salt_len - $read);\n                        $read = PasswordCompat\\binary\\_strlen($local_buffer);\n                    }\n                    fclose($file);\n                    if ($read >= $raw_salt_len) {\n                        $buffer_valid = true;\n                    }\n                    $buffer = str_pad($buffer, $raw_salt_len, \"\\0\") ^ str_pad($local_buffer, $raw_salt_len, \"\\0\");\n                }\n                if (!$buffer_valid || PasswordCompat\\binary\\_strlen($buffer) < $raw_salt_len) {\n                    $buffer_length = PasswordCompat\\binary\\_strlen($buffer);\n                    for ($i = 0; $i < $raw_salt_len; $i++) {\n                        if ($i < $buffer_length) {\n                            $buffer[$i] = $buffer[$i] ^ chr(mt_rand(0, 255));\n                        } else {\n                            $buffer .= chr(mt_rand(0, 255));\n                        }\n                    }\n                }\n                $salt = $buffer;\n                $salt_req_encoding = true;\n            }\n            if ($salt_req_encoding) {\n                // encode string with the Base64 variant used by crypt\n                $base64_digits =\n                    'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n                $bcrypt64_digits =\n                    './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n\n                $base64_string = base64_encode($salt);\n                $salt = strtr(rtrim($base64_string, '='), $base64_digits, $bcrypt64_digits);\n            }\n            $salt = PasswordCompat\\binary\\_substr($salt, 0, $required_salt_len);\n\n            $hash = $hash_format . $salt;\n\n            $ret = crypt($password, $hash);\n\n            if (!is_string($ret) || PasswordCompat\\binary\\_strlen($ret) != $resultLength) {\n                return false;\n            }\n\n            return $ret;\n        }\n\n        /**\n         * Get information about the password hash. Returns an array of the information\n         * that was used to generate the password hash.\n         *\n         * array(\n         *    'algo' => 1,\n         *    'algoName' => 'bcrypt',\n         *    'options' => array(\n         *        'cost' => PASSWORD_BCRYPT_DEFAULT_COST,\n         *    ),\n         * )\n         *\n         * @param string $hash The password hash to extract info from\n         *\n         * @return array The array of information about the hash.\n         */\n        function password_get_info($hash) {\n            $return = array(\n                'algo' => 0,\n                'algoName' => 'unknown',\n                'options' => array(),\n            );\n            if (PasswordCompat\\binary\\_substr($hash, 0, 4) == '$2y$' && PasswordCompat\\binary\\_strlen($hash) == 60) {\n                $return['algo'] = PASSWORD_BCRYPT;\n                $return['algoName'] = 'bcrypt';\n                list($cost) = sscanf($hash, \"$2y$%d$\");\n                $return['options']['cost'] = $cost;\n            }\n            return $return;\n        }\n\n        /**\n         * Determine if the password hash needs to be rehashed according to the options provided\n         *\n         * If the answer is true, after validating the password using password_verify, rehash it.\n         *\n         * @param string $hash    The hash to test\n         * @param int    $algo    The algorithm used for new password hashes\n         * @param array  $options The options array passed to password_hash\n         *\n         * @return boolean True if the password needs to be rehashed.\n         */\n        function password_needs_rehash($hash, $algo, array $options = array()) {\n            $info = password_get_info($hash);\n            if ($info['algo'] !== (int) $algo) {\n                return true;\n            }\n            switch ($algo) {\n                case PASSWORD_BCRYPT:\n                    $cost = isset($options['cost']) ? (int) $options['cost'] : PASSWORD_BCRYPT_DEFAULT_COST;\n                    if ($cost !== $info['options']['cost']) {\n                        return true;\n                    }\n                    break;\n            }\n            return false;\n        }\n\n        /**\n         * Verify a password against a hash using a timing attack resistant approach\n         *\n         * @param string $password The password to verify\n         * @param string $hash     The hash to verify against\n         *\n         * @return boolean If the password matches the hash\n         */\n        function password_verify($password, $hash) {\n            if (!function_exists('crypt')) {\n                trigger_error(\"Crypt must be loaded for password_verify to function\", E_USER_WARNING);\n                return false;\n            }\n            $ret = crypt($password, $hash);\n            if (!is_string($ret) || PasswordCompat\\binary\\_strlen($ret) != PasswordCompat\\binary\\_strlen($hash) || PasswordCompat\\binary\\_strlen($ret) <= 13) {\n                return false;\n            }\n\n            $status = 0;\n            for ($i = 0; $i < PasswordCompat\\binary\\_strlen($ret); $i++) {\n                $status |= (ord($ret[$i]) ^ ord($hash[$i]));\n            }\n\n            return $status === 0;\n        }\n    }\n\n}\n\nnamespace PasswordCompat\\binary {\n\n    if (!function_exists('PasswordCompat\\\\binary\\\\_strlen')) {\n\n        /**\n         * Count the number of bytes in a string\n         *\n         * We cannot simply use strlen() for this, because it might be overwritten by the mbstring extension.\n         * In this case, strlen() will count the number of *characters* based on the internal encoding. A\n         * sequence of bytes might be regarded as a single multibyte character.\n         *\n         * @param string $binary_string The input string\n         *\n         * @internal\n         * @return int The number of bytes\n         */\n        function _strlen($binary_string) {\n            if (function_exists('mb_strlen')) {\n                return mb_strlen($binary_string, '8bit');\n            }\n            return strlen($binary_string);\n        }\n\n        /**\n         * Get a substring based on byte limits\n         *\n         * @see _strlen()\n         *\n         * @param string $binary_string The input string\n         * @param int    $start\n         * @param int    $length\n         *\n         * @internal\n         * @return string The substring\n         */\n        function _substr($binary_string, $start, $length) {\n            if (function_exists('mb_substr')) {\n                return mb_substr($binary_string, $start, $length, '8bit');\n            }\n            return substr($binary_string, $start, $length);\n        }\n\n        /**\n         * Check if current PHP version is compatible with the library\n         *\n         * @return boolean the check result\n         */\n        function check() {\n            static $pass = NULL;\n\n            if (is_null($pass)) {\n                if (function_exists('crypt')) {\n                    $hash = '$2y$04$usesomesillystringfore7hnbRJHxXVLeakoG8K30oukPsA.ztMG';\n                    $test = crypt(\"password\", $hash);\n                    $pass = $test == $hash;\n                } else {\n                    $pass = false;\n                }\n            }\n            return $pass;\n        }\n\n    }\n}"
  },
  {
    "path": "includes/recaptcha.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n\ndeclare(strict_types=1);\n\n// Ensure session is started\nif (session_status() !== PHP_SESSION_ACTIVE) {\n    @session_start();\n}\n\n// --- Configurable defaults ---\n$RECAPTCHA_MIN_SCORE = 0.8; // v3 minimum score\n$RECAPTCHA_MAX_AGE   = 120; // seconds\n\n/**\n * Called when verification fails\n * Sets $error and returns to caller for soft handling (no redirect)\n */\nfunction _recaptcha_fail(string $reasonKey = 'recaptcha_failed'): void {\n    global $lang, $error;\n    $error = $lang[$reasonKey] ?? 'reCAPTCHA verification failed.';\n}\n\n// Verify with Google API\nfunction recaptcha_siteverify(array $payload): ?array {\n    $ctx = stream_context_create([\n        'http' => [\n            'method'  => 'POST',\n            'header'  => \"Content-type: application/x-www-form-urlencoded\\r\\n\",\n            'content' => http_build_query($payload),\n            'timeout' => 10,\n        ]\n    ]);\n    $resp = @file_get_contents('https://www.google.com/recaptcha/api/siteverify', false, $ctx);\n    if ($resp === false) return null;\n    $data = json_decode($resp, true);\n    return is_array($data) ? $data : null;\n}\n\n// v3 check\nfunction verify_recaptcha_v3(string $token, string $expectedAction): array {\n    $secret = $_SESSION['recaptcha_secretkey'] ?? '';\n    if ($token === '' || $secret === '') return ['ok' => false, 'why' => 'missing'];\n\n    $data = recaptcha_siteverify([\n        'secret'   => $secret,\n        'response' => $token,\n        'remoteip' => $_SERVER['REMOTE_ADDR'] ?? '',\n    ]);\n    if (!$data || empty($data['success'])) {\n        return ['ok' => false, 'why' => implode(',', (array)($data['error-codes'] ?? ['not_success']))];\n    }\n\n    if (!empty($data['challenge_ts'])) {\n        $age = time() - strtotime($data['challenge_ts']);\n        if ($age > ($GLOBALS['RECAPTCHA_MAX_AGE'] ?? 120)) {\n            return ['ok' => false, 'why' => 'timeout'];\n        }\n    }\n\n    $score = (float)($data['score'] ?? 0.0);\n    if ($score < ($GLOBALS['RECAPTCHA_MIN_SCORE'] ?? 0.8)) {\n        return ['ok' => false, 'why' => 'low_score', 'score' => $score];\n    }\n\n    return ['ok' => true, 'score' => $score, 'action' => ($data['action'] ?? null)];\n}\n\n// v2 check\nfunction verify_recaptcha_v2(string $token): array {\n    $secret = $_SESSION['recaptcha_secretkey'] ?? '';\n    if ($token === '' || $secret === '') return ['ok' => false, 'why' => 'missing'];\n\n    $data = recaptcha_siteverify([\n        'secret'   => $secret,\n        'response' => $token,\n        'remoteip' => $_SERVER['REMOTE_ADDR'] ?? '',\n    ]);\n    if (!$data || empty($data['success'])) {\n        return ['ok' => false, 'why' => implode(',', (array)($data['error-codes'] ?? ['not_success']))];\n    }\n    return ['ok' => true];\n}\n\n/**\n * Main gate\n * - Call from controllers like: require_human('create_paste');\n * - Sets $error for soft handling on fail\n */\nfunction require_human(string $expectedAction): void {\n    global $error;\n\n    // Debug overrides\n    if (isset($_GET['forcefail'])) $_SESSION['forcefail'] = 1;\n    if (isset($_GET['forcepass'])) $_SESSION['forcepass'] = 1;\n\n    $consume = function(string $k): bool {\n        $v = !empty($_SESSION[$k]);\n        if ($v) unset($_SESSION[$k]);\n        return $v;\n    };\n\n    if ($consume('forcepass')) {\n        error_log(\"reCAPTCHA DEBUG: forced PASS for action={$expectedAction}\");\n        return;\n    }\n    if ($consume('forcefail')) {\n        error_log(\"reCAPTCHA DEBUG: forced FAIL for action={$expectedAction}\");\n        _recaptcha_fail('recaptcha_failed');\n        return;\n    }\n\n    $cap_e = $_SESSION['cap_e'] ?? 'off';\n    $mode  = $_SESSION['mode'] ?? 'Normal';\n    $ver   = $_SESSION['recaptcha_version'] ?? 'v2';\n\n    if ($cap_e !== 'on' || $mode !== 'reCAPTCHA') {\n        return;\n    }\n\n    $token = trim((string)(\n        $_POST['g-recaptcha-response'] ??\n        $_POST['recaptcha_token']      ?? ''\n    ));\n\n    if ($token === '') {\n        _recaptcha_fail('recaptcha_missing');\n        return;\n    }\n\n    if ($ver === 'v3') {\n        $res = verify_recaptcha_v3($token, $expectedAction);\n        if (empty($res['ok'])) {\n            $reasonKey = match ($res['why'] ?? '') {\n                'missing' => 'recaptcha_missing',\n                'timeout', 'stale' => 'recaptcha_timeout',\n                default => 'recaptcha_failed'\n            };\n            _recaptcha_fail($reasonKey);\n        }\n        return;\n    }\n\n    // v2\n    $res = verify_recaptcha_v2($token);\n    if (empty($res['ok'])) {\n        $reasonKey = match ($res['why'] ?? '') {\n            'missing' => 'recaptcha_missing',\n            default   => 'recaptcha_failed'\n        };\n        _recaptcha_fail($reasonKey);\n    }\n}\n"
  },
  {
    "path": "includes/session.php",
    "content": "<?php\r\n/* \r\n * session variables\r\n *\r\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\r\n * demo: https://paste.boxlabs.uk/\r\n *\r\n * https://phpaste.sourceforge.io/\r\n *\r\n * This program is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 3\r\n * of the License, or (at your option) any later version.\r\n * \r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License in LICENCE for more details.\r\n */\r\ndeclare(strict_types=1);\r\n\r\nsession_start([\r\n    'cookie_secure' => isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on',\r\n    'cookie_httponly' => true,\r\n    'use_strict_mode' => true,\r\n]);\r\n\r\n// Initialize CSRF token\r\nif (!isset($_SESSION['csrf_token'])) {\r\n    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));\r\n}\r\n\r\n// Initialize OAuth2 state for Google and other platforms\r\nif (isset($_GET['login']) && in_array($_GET['login'], ['google', 'facebook']) && !isset($_SESSION['oauth2_state'])) {\r\n    $_SESSION['oauth2_state'] = bin2hex(random_bytes(16));\r\n}\r\n\r\n// Initialize reCAPTCHA settings\r\nrequire_once 'config.php';\r\ntry {\r\n    $pdo = new PDO(\"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\", $dbuser, $dbpassword, [\r\n        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,\r\n        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\r\n        PDO::ATTR_EMULATE_PREPARES => false,\r\n    ]);\r\n    $stmt = $pdo->query(\"SELECT cap_e, mode, recaptcha_version, recaptcha_sitekey, recaptcha_secretkey FROM captcha WHERE id = 1\");\r\n    $captcha_settings = $stmt->fetch() ?: [];\r\n    $_SESSION['cap_e'] = $captcha_settings['cap_e'] ?? 'off';\r\n    $_SESSION['mode'] = $captcha_settings['mode'] ?? 'normal';\r\n    $_SESSION['recaptcha_version'] = $captcha_settings['recaptcha_version'] ?? 'v2';\r\n    $_SESSION['recaptcha_sitekey'] = $captcha_settings['recaptcha_sitekey'] ?? '';\r\n    $_SESSION['recaptcha_secretkey'] = $captcha_settings['recaptcha_secretkey'] ?? '';\r\n    $_SESSION['captcha_settings_timestamp'] = time();\r\n\r\n    /*\r\n     * Determine the unified captcha mode and value.\r\n     *\r\n     * The rest of the application (e.g. footer.php, main.php) relies on the\r\n     * `captcha_mode` session variable to decide how to render and validate\r\n     * CAPTCHA challenges. Historically, index.php sets this value for the paste\r\n     * submission page, but other entry points such as login.php never call\r\n     * index.php and therefore never populate `captcha_mode`. Without this\r\n     * variable set, pages that include footer.php will believe that reCAPTCHA\r\n     * is disabled and will skip loading the necessary scripts. To ensure\r\n     * consistent behaviour across the site, initialise `captcha_mode` here\r\n     * based on the admin-configured captcha settings. When reCAPTCHA is\r\n     * enabled (cap_e == 'on' and mode == 'reCAPTCHA'), pick the appropriate\r\n     * variant (v2 or v3). Otherwise fall back to the legacy internal CAPTCHA\r\n     * when cap_e == 'on', or disable CAPTCHA entirely when cap_e == 'off'.\r\n     */\r\n    if ($_SESSION['cap_e'] === 'on') {\r\n        if ($_SESSION['mode'] === 'reCAPTCHA') {\r\n            // Use reCAPTCHA (either v2 or v3)\r\n            $_SESSION['captcha_mode'] = ($_SESSION['recaptcha_version'] === 'v3') ? 'recaptcha_v3' : 'recaptcha';\r\n            // Store site key under a common name for convenience in templates\r\n            $_SESSION['captcha'] = $_SESSION['recaptcha_sitekey'];\r\n        } else {\r\n            // Use internal CAPTCHA (text image or math). The actual image and code\r\n            // will be generated later when needed by the page.\r\n            $_SESSION['captcha_mode'] = 'internal';\r\n            $_SESSION['captcha'] = null;\r\n        }\r\n    } else {\r\n        // CAPTCHA disabled entirely\r\n        $_SESSION['captcha_mode'] = 'none';\r\n        $_SESSION['captcha'] = null;\r\n    }\r\n} catch (PDOException $e) {\r\n    error_log(\"session.php: Failed to fetch captcha settings: \" . $e->getMessage());\r\n    $_SESSION['cap_e'] = 'off';\r\n    $_SESSION['mode'] = 'normal';\r\n    $_SESSION['recaptcha_version'] = 'v2';\r\n    $_SESSION['recaptcha_sitekey'] = '';\r\n    $_SESSION['recaptcha_secretkey'] = '';\r\n    $_SESSION['captcha_settings_timestamp'] = time();\r\n} finally {\r\n    $pdo = null;\r\n}"
  },
  {
    "path": "index.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n// If the installer exists, redirect to prevent errors from empty config variables\n$directory = 'install';\n\nif (file_exists($directory)) {\n    header(\"Location: install\");\n    exit();\n}\n\nrequire_once 'includes/session.php';\n// Debugging for reCAPTCHA - /index.php?forcefail=1 - index.php?forcepass=1\n// Only uncomment if you need to test. \n//if (isset($_GET['forcefail'])) { $_SESSION['forcefail'] = (int)$_GET['forcefail']; }\n//if (isset($_GET['forcepass'])) { $_SESSION['forcepass'] = (int)$_GET['forcepass']; }\n\n// production-style error handling\nini_set('display_errors', '0');\nini_set('log_errors', '1');\n\n// timezone\ndate_default_timezone_set('UTC');\n\n// core includes\nrequire_once('config.php');\nrequire_once('includes/captcha.php');\nrequire_once('includes/functions.php');\n\n// ip\n$ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';\n\n// pull config from DB\ntry {\n    // site_info\n    $stmt = $pdo->query(\"SELECT * FROM site_info WHERE id='1'\");\n    $siteinfo = $stmt->fetch() ?: [];\n    $title       = trim($siteinfo['title'] ?? 'Paste');\n    $des         = trim($siteinfo['des'] ?? '');\n    $baseurl     = trim($siteinfo['baseurl'] ?? '');\n    $keyword     = trim($siteinfo['keyword'] ?? '');\n    $site_name   = trim($siteinfo['site_name'] ?? 'Paste');\n    $ga          = trim($siteinfo['ga'] ?? '');\n    $additional_scripts = trim($siteinfo['additional_scripts'] ?? '');\n\n    // interface\n    $stmt = $pdo->query(\"SELECT * FROM interface WHERE id='1'\");\n    $iface = $stmt->fetch() ?: [];\n    $default_lang  = trim($iface['lang'] ?? 'en.php');\n    $default_theme = trim($iface['theme'] ?? 'default');\n    require_once(\"langs/$default_lang\");\n\n    // ads\n    $stmt = $pdo->query(\"SELECT * FROM ads WHERE id='1'\");\n    $ads = $stmt->fetch() ?: [];\n    $text_ads = trim($ads['text_ads'] ?? '');\n    $ads_1    = trim($ads['ads_1'] ?? '');\n    $ads_2    = trim($ads['ads_2'] ?? '');\n\n    // sitemap options\n    $stmt = $pdo->query(\"SELECT * FROM sitemap_options WHERE id='1'\");\n    $sm = $stmt->fetch() ?: [];\n    $priority   = $sm['priority']   ?? '0.8';\n    $changefreq = $sm['changefreq'] ?? 'daily';\n\n    // captcha settings (from admin/configuration.php)\n    $stmt = $pdo->query(\"SELECT * FROM captcha WHERE id='1'\");\n    $cap = $stmt->fetch() ?: [];\n    $color                = trim($cap['color'] ?? '');\n    $mode                 = trim($cap['mode'] ?? 'normal');          // \"normal\" | \"reCAPTCHA\"\n    $mul                  = trim($cap['mul'] ?? '');\n    $allowed              = trim($cap['allowed'] ?? '');\n    $cap_e                = trim($cap['cap_e'] ?? 'off');            // \"on\" | \"off\"\n    $recaptcha_sitekey    = trim($cap['recaptcha_sitekey'] ?? '');\n    $recaptcha_secretkey  = trim($cap['recaptcha_secretkey'] ?? '');\n    $recaptcha_version    = trim($cap['recaptcha_version'] ?? 'v2'); // \"v2\" | \"v3\"\n\n\t// Mirror captcha config into session for recaptcha.php (expects these names)\n\t$_SESSION['cap_e']              = $cap_e;                 // 'on'|'off'\n\t$_SESSION['mode']               = $mode;                  // 'reCAPTCHA'|'normal'\n\t$_SESSION['recaptcha_version']  = $recaptcha_version;     // 'v2'|'v3'\n\t$_SESSION['recaptcha_sitekey']  = $recaptcha_sitekey;     // site key used by client\n\t$_SESSION['recaptcha_secretkey']= $recaptcha_secretkey;   // secret key used by server\n\n    // permissions\n    $stmt = $pdo->query(\"SELECT * FROM site_permissions WHERE id='1'\");\n    $perm = $stmt->fetch() ?: [];\n    $disableguest = trim($perm['disableguest'] ?? 'off');\n    $siteprivate  = trim($perm['siteprivate'] ?? 'off');\n\n    // rewrite flag (from config.php)\n    $mod_rewrite = isset($mod_rewrite) ? $mod_rewrite : '0';\n} catch (PDOException $e) {\n    error_log(\"index.php: DB error \".$e->getMessage());\n    $error = $lang['db_error'] ?? 'Database error.';\n    goto OutPut;\n}\n\n// set session flags for captcha on initial GET\nif ($_SERVER['REQUEST_METHOD'] !== 'POST') {\n    if ($cap_e === \"on\") {\n        if ($mode === \"reCAPTCHA\") {\n            $_SESSION['captcha_mode'] = ($recaptcha_version === 'v3') ? \"recaptcha_v3\" : \"recaptcha\";\n            $_SESSION['captcha']      = $recaptcha_sitekey;\n        } else {\n            $_SESSION['captcha_mode'] = \"internal\";\n            $_SESSION['captcha']      = captcha($color, $mode, $mul, $allowed);\n        }\n    } else {\n        $_SESSION['captcha_mode'] = \"none\";\n    }\n}\n\n// ban check\nif (is_banned($pdo, $ip)) {\n    $error = $lang['banned'] ?? 'You are banned from this site.';\n    goto OutPut;\n}\n\n// guest/private flags for theme\nif ($_SERVER['REQUEST_METHOD'] !== 'POST') {\n    if ($disableguest === \"on\") {\n        $noguests = \"on\";\n    }\n    if ($siteprivate === \"on\") {\n        $privatesite = \"on\";\n    }\n    if (isset($_SESSION['username'])) {\n        $noguests = \"off\";\n    }\n}\n\n// logout passthrough\nif (isset($_GET['logout'])) {\n    header('Location: ' . ($_SERVER['HTTP_REFERER'] ?? $baseurl));\n    unset($_SESSION['token'], $_SESSION['oauth_uid'], $_SESSION['username'], $_SESSION['pic']);\n    session_destroy();\n}\n\n// page views\ntry {\n    $date = date('Y-m-d');\n    $stmt = $pdo->prepare(\"SELECT id, tpage, tvisit FROM page_view WHERE date = ?\");\n    $stmt->execute([$date]);\n    $pv = $stmt->fetch();\n    if ($pv) {\n        $page_view_id = (int)$pv['id'];\n        $tpage  = (int)$pv['tpage'] + 1;\n        $tvisit = (int)$pv['tvisit'];\n        $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM visitor_ips WHERE ip = ? AND visit_date = ?\");\n        $stmt->execute([$ip, $date]);\n        if ((int)$stmt->fetchColumn() === 0) {\n            $tvisit += 1;\n            $stmt = $pdo->prepare(\"INSERT INTO visitor_ips (ip, visit_date) VALUES (?, ?)\");\n            $stmt->execute([$ip, $date]);\n        }\n        $stmt = $pdo->prepare(\"UPDATE page_view SET tpage = ?, tvisit = ? WHERE id = ?\");\n        $stmt->execute([$tpage, $tvisit, $page_view_id]);\n    } else {\n        $stmt = $pdo->prepare(\"INSERT INTO page_view (date, tpage, tvisit) VALUES (?, ?, ?)\");\n        $stmt->execute([$date, 1, 1]);\n        $stmt = $pdo->prepare(\"INSERT INTO visitor_ips (ip, visit_date) VALUES (?, ?)\");\n        $stmt->execute([$ip, $date]);\n    }\n} catch (PDOException $e) {\n    error_log(\"index.php: page view err \".$e->getMessage());\n}\n\n// POST: create paste\nif ($_SERVER['REQUEST_METHOD'] == 'POST') {\n\n    // empty content\n    if (empty($_POST[\"paste_data\"]) || trim($_POST[\"paste_data\"]) === '') {\n        $error = $lang['empty_paste'] ?? 'Paste content cannot be empty.';\n        goto OutPut;\n    }\n\n    // size check\n    if (mb_strlen($_POST[\"paste_data\"], '8bit') > 1024 * 1024 * ($pastelimit ?? 10)) {\n        $error = $lang['large_paste'] ?? 'Paste is too large.';\n        goto OutPut;\n    }\n\n    // require fields\n    if (!isset($_POST['title']) || !isset($_POST['paste_data'])) {\n        $error = $lang['error'] ?? 'Invalid form submission.';\n        goto OutPut;\n    }\n\t\n\t// --- debug overrides (forcefail/forcepass) ---\n\t// Persisted earlier via GET -> session. Handle them here to bypass ALL captcha paths.\n\t$captchaOverridePass = !empty($_SESSION['forcepass']);\n\t$captchaOverrideFail = !empty($_SESSION['forcefail']);\n\n\t// consume them so they only affect one submit\n\tif ($captchaOverridePass) unset($_SESSION['forcepass']);\n\tif ($captchaOverrideFail) unset($_SESSION['forcefail']);\n\n\t// captcha checks for guests (respect admin config)\n\tif (!isset($_SESSION['username']) && ($disableguest !== \"on\")) {\n\n\t\t// 1) debug overrides first\n\t\tif ($captchaOverridePass) {\n\t\t\t// Skip ALL captcha checks\n\t\t\t// (do nothing)\n\t\t} elseif ($captchaOverrideFail) {\n\t\t\t// Force a visible, soft error like the internal captcha branch does\n\t\t\t$error = $lang['recaptcha_failed'] ?? 'reCAPTCHA verification failed.';\n\t\t\tgoto OutPut;\n\t\t} else {\n\t\t\t// 2) normal behaviour\n\t\t\tif ($cap_e === \"on\") {\n\t\t\t\tif ($mode === \"reCAPTCHA\") {\n\t\t\t\t\trequire_once __DIR__ . '/includes/recaptcha.php';\n\t\t\t\t\trequire_human('create_paste'); // may set $GLOBALS['error']\n\t\t\t\t\tif (!empty($error)) { \n\t\t\t\t\t\t// Map to language string used in main.php alert (soft error)\n\t\t\t\t\t\t$error = $lang['recaptcha_failed'] ?? 'reCAPTCHA failed to verify you\\'re not a bot. Refresh and try again.';\n\t\t\t\t\t\tgoto OutPut; \n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// internal captcha (image)\n\t\t\t\t\t$scode    = strtolower(htmlentities(trim($_POST['scode'] ?? '')));\n\t\t\t\t\t$cap_code = strtolower($_SESSION['captcha']['code'] ?? '');\n\t\t\t\t\tif ($cap_code !== $scode) {\n\t\t\t\t\t\t$error = $lang['image_wrong'] ?? 'Incorrect CAPTCHA code.';\n\t\t\t\t\t\tgoto OutPut;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n    // sanitize inputs\n    $p_title   = trim(htmlspecialchars($_POST['title'] ?? '', ENT_QUOTES, 'UTF-8')) ?: 'Untitled';\n    $p_content = htmlspecialchars($_POST['paste_data'], ENT_QUOTES, 'UTF-8');\n    $p_visible = trim(htmlspecialchars($_POST['visibility'] ?? '0', ENT_QUOTES, 'UTF-8'));\n    $p_code    = trim(htmlspecialchars($_POST['format'] ?? 'text', ENT_QUOTES, 'UTF-8'));\n    $p_expiry  = trim(htmlspecialchars($_POST['paste_expire_date'] ?? 'N', ENT_QUOTES, 'UTF-8'));\n    $p_password = trim($_POST['pass'] ?? '') === '' ? 'NONE' : trim($_POST['pass']);\n    $p_encrypt = '1';\n    $p_member  = (string)($_SESSION['username'] ?? 'Guest');\n    $p_date    = date('Y-m-d H:i:s');\n    $now_time  = mktime(date(\"H\"), date(\"i\"), date(\"s\"), date(\"n\"), date(\"j\"), date(\"Y\"));\n    $s_date    = date('Y-m-d');\n\n    // encrypt content\n    try {\n        if (!defined('SECRET')) {\n            error_log(\"index.php: SECRET undefined\");\n            $error = $lang['error'] ?? 'Server configuration error.';\n            goto OutPut;\n        }\n        $p_content = encrypt($p_content, hex2bin(SECRET));\n        if ($p_content === null) {\n            $error = $lang['error'] ?? 'Encryption failed.';\n            goto OutPut;\n        }\n    } catch (RuntimeException $e) {\n        $error = ($lang['error'] ?? 'Error') . ': ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n        goto OutPut;\n    }\n\n    // hash password if provided\n    if ($p_password !== \"NONE\") {\n        $p_password = password_hash($p_password, PASSWORD_DEFAULT);\n        if ($p_password === false) {\n            $error = $lang['error'] ?? 'Password hashing failed.';\n            goto OutPut;\n        }\n    }\n\n    // expiry\n    $expires = match ($p_expiry) {\n        '10M' => mktime(date(\"H\"), date(\"i\") + 10, date(\"s\"), date(\"n\"), date(\"j\"), date(\"Y\")),\n        '1H'  => mktime(date(\"H\") + 1, date(\"i\"), date(\"s\"), date(\"n\"), date(\"j\"), date(\"Y\")),\n        '1D'  => mktime(date(\"H\"), date(\"i\"), date(\"s\"), date(\"n\"), date(\"j\") + 1, date(\"Y\")),\n        '1W'  => mktime(date(\"H\"), date(\"i\"), date(\"s\"), date(\"n\"), date(\"j\") + 7, date(\"Y\")),\n        '2W'  => mktime(date(\"H\"), date(\"i\"), date(\"s\"), date(\"n\"), date(\"j\") + 14, date(\"Y\")),\n        '1M'  => mktime(date(\"H\"), date(\"i\"), date(\"s\"), date(\"n\") + 1, date(\"j\"), date(\"Y\")),\n        'self'=> \"SELF\",\n        default => \"NULL\",\n    };\n\n    // insert\n    try {\n        $stmt = $pdo->prepare(\"INSERT INTO pastes (title, content, visible, code, expiry, password, encrypt, member, date, ip, now_time, s_date) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\");\n        $stmt->execute([$p_title, $p_content, $p_visible, $p_code, $expires, $p_password, $p_encrypt, $p_member, $p_date, $ip, $now_time, $s_date]);\n        $paste_id = $pdo->lastInsertId();\n\n        // sitemap for public\n        if ($p_visible === '0') {\n            addToSitemap($pdo, (int)$paste_id, $priority, $changefreq, $mod_rewrite == '1');\n        }\n\n        // redirect to paste\n        $paste_url = ($mod_rewrite == '1') ? ($baseurl . $paste_id) : ($baseurl . 'paste.php?id=' . $paste_id);\n        header(\"Location: \" . $paste_url);\n        exit;\n    } catch (PDOException $e) {\n        error_log(\"index.php: insert err \".$e->getMessage());\n        $error = ($lang['paste_db_error'] ?? 'Database error.') . ': ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n        goto OutPut;\n    }\n}\n\n// output: render theme\nOutPut:\n$themeDir = 'theme/' . htmlspecialchars($default_theme, ENT_QUOTES, 'UTF-8');\n\nrequire_once $themeDir . '/header.php';\n\n/**\n * Decide which view to render.\n * Hard errors -> errors.php\n * Soft form errors -> $error\n */\n$error_text = $error ?? '';\n$notfound   = $notfound ?? '';\n$needs_pw   = !empty($require_password);\n\n// classify hard vs soft\n$error_hard = false;\nif ($notfound !== '' || $needs_pw) {\n    $error_hard = true; // 404 / password\n} elseif ($error_text !== '') {\n    $hard_markers = [\n        'banned', 'Database error', 'Encryption failed',\n        'Password hashing failed', 'Server configuration error',\n    ];\n    foreach ($hard_markers as $m) {\n        if (stripos($error_text, $m) !== false) { $error_hard = true; break; }\n    }\n}\n\nif ($error_hard) {\n    // HARD: render errors.php between header & footer\n    $err = $themeDir . '/errors.php';\n    if (is_file($err)) {\n        $error_msg = $error_text;   // expose to partial\n        require $err;\n    } else {\n        echo '<main class=\"container py-4\"><div class=\"alert alert-danger\" role=\"alert\">'\n            . htmlspecialchars($error_text ?: ($notfound ?: ($lang['error'] ?? 'An error occurred.')), ENT_QUOTES, 'UTF-8')\n            . '</div></main>';\n    }\n} else {\n    // SOFT: show form with inline alert\n    if ($error_text !== '') { $flash_error = $error_text; }\n    require_once $themeDir . '/main.php';\n}\n\nrequire_once $themeDir . '/footer.php';"
  },
  {
    "path": "install/configure.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See LICENCE for details.\n */\n\n// Start output buffering\nob_start();\n\n// Ensure JSON content type\nheader('Content-Type: application/json; charset=utf-8');\n\n// Disable display errors\nini_set('display_errors', '0');\nini_set('log_errors', '1');\n\n// --- PHP Version Check (require 8.1+) ---\nif (version_compare(PHP_VERSION, '8.1', '<')) {\n    ob_end_clean();\n    echo json_encode([\n        'status'  => 'error',\n        'message' => 'PHP 8.1 or higher is required. Current version: ' . PHP_VERSION\n    ]);\n    exit;\n}\n\n// Check required PHP extensions\n$required_extensions = ['pdo_mysql', 'openssl', 'curl'];\n$missing_required = array_filter($required_extensions, static fn($ext) => !extension_loaded($ext));\nif (!empty($missing_required)) {\n    ob_end_clean();\n    error_log(\"configure.php: Missing required PHP extensions: \" . implode(', ', $missing_required));\n    echo json_encode([\n        'status'  => 'error',\n        'message' => 'Missing required PHP extensions: ' . implode(', ', $missing_required) . '. Enable them in php.ini.'\n    ]);\n    exit;\n}\n\n// Sanitize and validate POST data\n$dbhost     = isset($_POST['data_host']) ? filter_var(trim($_POST['data_host']), FILTER_SANITIZE_SPECIAL_CHARS) : '';\n$dbname     = isset($_POST['data_name']) ? filter_var(trim($_POST['data_name']), FILTER_SANITIZE_SPECIAL_CHARS) : '';\n$dbuser     = isset($_POST['data_user']) ? filter_var(trim($_POST['data_user']), FILTER_SANITIZE_SPECIAL_CHARS) : '';\n$dbpassword = isset($_POST['data_pass']) ? (string)$_POST['data_pass'] : ''; // Password may contain special chars\n\n$enablegoog = (isset($_POST['enablegoog']) && $_POST['enablegoog'] === 'yes') ? 'yes' : 'no';\n$enablefb   = (isset($_POST['enablefb'])   && $_POST['enablefb']   === 'yes') ? 'yes' : 'no';\n$enablesmtp = (isset($_POST['enablesmtp']) && $_POST['enablesmtp'] === 'yes') ? 'yes' : 'no';\n\n// Validate database name (alphanumeric and underscore only)\nif (!preg_match('/^[a-zA-Z0-9_]+$/', $dbname)) {\n    ob_end_clean();\n    error_log(\"configure.php: Invalid database name: $dbname\");\n    echo json_encode(['status' => 'error', 'message' => 'Database name must be alphanumeric with underscores only.']);\n    exit;\n}\n\nif (empty($dbhost) || empty($dbname) || empty($dbuser)) {\n    ob_end_clean();\n    error_log(\"configure.php: Missing required database parameters\");\n    echo json_encode(['status' => 'error', 'message' => 'Please provide all required database information (host, database name, user).']);\n    exit;\n}\n\n// Test database connection\ntry {\n    $dsn = \"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\";\n    $pdo = new PDO($dsn, $dbuser, $dbpassword, [\n        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,\n        PDO::ATTR_EMULATE_PREPARES   => false,\n        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\n    ]);\n    error_log(\"configure.php: Database connection successful\");\n} catch (PDOException $e) {\n    ob_end_clean();\n    error_log(\"configure.php: Database connection failed: \" . $e->getMessage());\n    echo json_encode(['status' => 'error', 'message' => 'Database connection failed: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8')]);\n    exit;\n}\n\n// Generate random key\ntry {\n    $sec_key = bin2hex(random_bytes(32));\n    error_log(\"configure.php: Generated random key\");\n} catch (Exception $e) {\n    ob_end_clean();\n    error_log(\"configure.php: Failed to generate random key: \" . $e->getMessage());\n    echo json_encode(['status' => 'error', 'message' => 'Failed to generate random key: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8')]);\n    exit;\n}\n\n// Calculate redirect URI for OAuth\n$protocol  = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? \"https://\" : \"http://\";\n$base_path = rtrim(dirname($_SERVER['SCRIPT_NAME'], 2), '/\\\\'); // Adjust for /install directory\n$baseurl   = $protocol . $_SERVER['SERVER_NAME'] . $base_path . '/';\n$redirect_uri  = $baseurl . 'oauth/google.php';\n$https_warning = ($enablegoog === 'yes' || $enablefb === 'yes') && $protocol === 'http://' ? 'Warning: OAuth is enabled without HTTPS. This is insecure and may cause issues with OAuth providers.' : '';\n\n// --- File Permission Check for config.php and its directory ---\n$config_file = '../config.php';\n$parent_dir  = dirname($config_file);\n\n// Try to guess web server user for help text only\n$web_user = $_SERVER['USER']\n    ?? getenv('APACHE_RUN_USER')\n    ?? getenv('USER')\n    ?? 'www-data';\n\n// Helpers for POSIX info if available\n$fmt_perms = static function (string $path): string {\n    $st = @stat($path);\n    return $st ? sprintf(\"%o\", $st['mode'] & 0777) : '???';\n};\n$owner_name = static function (string $path): string {\n    $st = @stat($path);\n    if (!$st) return 'unknown';\n    if (function_exists('posix_getpwuid')) {\n        $pw = @posix_getpwuid($st['uid']);\n        return $pw['name'] ?? (string)$st['uid'];\n    }\n    return (string)$st['uid'];\n};\n$group_name = static function (string $path): string {\n    $st = @stat($path);\n    if (!$st) return 'unknown';\n    if (function_exists('posix_getgrgid')) {\n        $gr = @posix_getgrgid($st['gid']);\n        return $gr['name'] ?? (string)$st['gid'];\n    }\n    return (string)$st['gid'];\n};\n\n// If config.php exists, require it to be writable; else require its directory be writable\nif (file_exists($config_file)) {\n    if (!is_writable($config_file)) {\n        ob_end_clean();\n        error_log(\"configure.php: config.php exists but is not writable (owner: {$owner_name($config_file)}, group: {$group_name($config_file)}, perms: {$fmt_perms($config_file)})\");\n        echo json_encode([\n            'status'  => 'error',\n            'message' => \"config.php exists but is not writable.<br>Run: <code>chmod 664 \" .\n                htmlspecialchars($config_file, ENT_QUOTES, 'UTF-8') .\n                \"</code> or adjust ownership: <code>chown $web_user \" .\n                htmlspecialchars($config_file, ENT_QUOTES, 'UTF-8') . \"</code>\"\n        ]);\n        exit;\n    }\n} else {\n    if (!is_dir($parent_dir) || !is_writable($parent_dir)) {\n        ob_end_clean();\n        error_log(\"configure.php: Parent directory not writable: $parent_dir (owner: {$owner_name($parent_dir)}, group: {$group_name($parent_dir)}, perms: {$fmt_perms($parent_dir)})\");\n        echo json_encode([\n            'status'  => 'error',\n            'message' => \"Cannot create <code>config.php</code> in <code>\" .\n                htmlspecialchars($parent_dir, ENT_QUOTES, 'UTF-8') .\n                \"</code>. Grant the web server write access to the directory.<br>\" .\n                \"Example:<br><code>chmod 775 \" . htmlspecialchars($parent_dir, ENT_QUOTES, 'UTF-8') .\n                \"</code><br><code>chown $web_user \" . htmlspecialchars($parent_dir, ENT_QUOTES, 'UTF-8') . \"</code>\"\n        ]);\n        exit;\n    }\n}\n\n// Build config.php content\n$config_content = <<<EOD\n<?php\n/*\n * Paste \\$v3.2 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n\n\\$currentversion = 3.1;\n\\$pastelimit = \"10\"; // 10 MB\n\n// OAuth settings (for signups)\n\\$enablefb = \"$enablefb\";\n\\$enablegoog = \"$enablegoog\";\n\\$enablesmtp = \"$enablesmtp\";\n\ndefine('G_CLIENT_ID', '');\ndefine('G_CLIENT_SECRET', '');\ndefine('G_REDIRECT_URI', '$redirect_uri');\ndefine('G_APPLICATION_NAME', 'Paste');\ndefine('G_SCOPES', [\n    'https://www.googleapis.com/auth/userinfo.profile',\n    'https://www.googleapis.com/auth/userinfo.email'\n]);\n\n// Database information\n\\$dbhost = \"$dbhost\";\n\\$dbuser = \"$dbuser\";\n\\$dbpassword = \"$dbpassword\";\n\\$dbname = \"$dbname\";\n\n// Secret key for encryption\n\\$sec_key = \"$sec_key\";\ndefine('SECRET', \\$sec_key);\n\n// set to 1 to enable tidy urls\n// see docs for an example nginx conf, or .htaccess\n\\$mod_rewrite = \"0\";\n\n// Enable SMTP debug logging (uncomment)\n// define('SMTP_DEBUG', true);\n\n// Code highlighting engine for non-Markdown pastes: 'highlight' (default) or 'geshi'\n\\$highlighter = \\$highlighter ?? 'highlight';\n\n// Style theme for highlighter.php (see includes/Highlight/styles)\n\\$hl_style = 'hybrid.css';\n\n/**\n * Build the list of selectable formats\n * - When using highlight.php, we get the json language files from includes/Highlight/languages\n * - When using GeSHi, we fall back to the classic list.\n */\n\\$popular_formats = []; // will be set below\n\nif (\\$highlighter === 'highlight') {\n    require_once __DIR__ . '/includes/Highlight/list_languages.php';\n    \\$langs = highlight_supported_languages();\n\n    // Friendly display labels\n    \\$label_map = [\n        'cpp'        => 'C++',\n        'csharp'     => 'C#',\n        'fsharp'     => 'F#',\n        'objectivec' => 'Objective-C',\n        'plaintext'  => 'Plain Text',\n        'xml'        => 'HTML/XML',\n        'ini'        => 'INI',\n        'dos'        => 'DOS/Batch',\n        'pgsql'      => 'PostgreSQL',\n    ];\n\n    \\$build_label = static function(string \\$id) use (\\$label_map): string {\n        if (isset(\\$label_map[\\$id])) return \\$label_map[\\$id];\n        \\$t = str_replace(['-','_'], ' ', \\$id);\n        \\$t = ucwords(\\$t);\n        \\$t = preg_replace('/\\bSql\\b/i','SQL',\\$t);\n        \\$t = preg_replace('/\\bJson\\b/i','JSON',\\$t);\n        \\$t = preg_replace('/\\bYaml\\b/i','YAML',\\$t);\n        \\$t = preg_replace('/\\bXml\\b/i','XML',\\$t);\n        return \\$t;\n    };\n\n    // Build formats from highlight.php languages\n    \\$geshiformats = ['markdown' => 'Markdown', 'text' => 'Plain Text'];\n    foreach (\\$langs as \\$L) {\n        \\$id = \\$L['id'];\n        if (\\$id === 'plaintext') continue; // we already provide 'text'\n        \\$geshiformats[\\$id] = \\$build_label(\\$id);\n    }\n\n    // Popular band for the top of the select (tweak freely)\n    \\$popular_formats = [\n        'text','xml','css','javascript','json','yaml','php','python','sql','pgsql',\n        'java','c','csharp','cpp','bash','markdown','go','ruby','rust','typescript','kotlin'\n    ];\n\n} else {\n    // ---------- GeSHi formats (classic) ----------\n    \\$geshiformats = [\n        '4cs' => 'GADV 4CS',\n        '6502acme' => 'ACME Cross Assembler',\n        '6502kickass' => 'Kick Assembler',\n        '6502tasm' => 'TASM/64TASS 1.46',\n        '68000devpac' => 'HiSoft Devpac ST 2',\n        'abap' => 'ABAP',\n        'actionscript' => 'ActionScript',\n        'actionscript3' => 'ActionScript 3',\n        'ada' => 'Ada',\n        'aimms' => 'AIMMS3',\n        'algol68' => 'ALGOL 68',\n        'apache' => 'Apache',\n        'applescript' => 'AppleScript',\n        'arm' => 'ARM Assembler',\n        'asm' => 'ASM',\n        'asp' => 'ASP',\n        'asymptote' => 'Asymptote',\n        'autoconf' => 'Autoconf',\n        'autohotkey' => 'Autohotkey',\n        'autoit' => 'AutoIt',\n        'avisynth' => 'AviSynth',\n        'awk' => 'Awk',\n        'bascomavr' => 'BASCOM AVR',\n        'bash' => 'BASH',\n        'basic4gl' => 'Basic4GL',\n        'bf' => 'Brainfuck',\n        'bibtex' => 'BibTeX',\n        'blitzbasic' => 'BlitzBasic',\n        'bnf' => 'BNF',\n        'boo' => 'Boo',\n        'c' => 'C',\n        'c_loadrunner' => 'C (LoadRunner)',\n        'c_mac' => 'C for Macs',\n        'c_winapi' => 'C (WinAPI)',\n        'caddcl' => 'CAD DCL',\n        'cadlisp' => 'CAD Lisp',\n        'cfdg' => 'CFDG',\n        'cfm' => 'ColdFusion',\n        'chaiscript' => 'ChaiScript',\n        'chapel' => 'Chapel',\n        'cil' => 'CIL',\n        'clojure' => 'Clojure',\n        'cmake' => 'CMake',\n        'cobol' => 'COBOL',\n        'coffeescript' => 'CoffeeScript',\n        'cpp' => 'C++',\n        'cpp-qt' => 'C++ (with QT extensions)',\n        'cpp-winapi' => 'C++ (WinAPI)',\n        'csharp' => 'C#',\n        'css' => 'CSS',\n        'cuesheet' => 'Cuesheet',\n        'd' => 'D',\n        'dcl' => 'DCL',\n        'dcpu16' => 'DCPU-16 Assembly',\n        'dcs' => 'DCS',\n        'delphi' => 'Delphi',\n        'diff' => 'Diff-output',\n        'div' => 'DIV',\n        'dos' => 'DOS',\n        'dot' => 'dot',\n        'e' => 'E',\n        'ecmascript' => 'ECMAScript',\n        'eiffel' => 'Eiffel',\n        'email' => 'eMail (mbox)',\n        'epc' => 'EPC',\n        'erlang' => 'Erlang',\n        'euphoria' => 'Euphoria',\n        'ezt' => 'EZT',\n        'f1' => 'Formula One',\n        'falcon' => 'Falcon',\n        'fo' => 'FO (abas-ERP)',\n        'fortran' => 'Fortran',\n        'freebasic' => 'FreeBasic',\n        'fsharp' => 'F#',\n        'gambas' => 'GAMBAS',\n        'gdb' => 'GDB',\n        'genero' => 'Genero',\n        'genie' => 'Genie',\n        'gettext' => 'GNU Gettext',\n        'glsl' => 'glSlang',\n        'gml' => 'GML',\n        'gnuplot' => 'GNUPlot',\n        'go' => 'Go',\n        'groovy' => 'Groovy',\n        'gwbasic' => 'GwBasic',\n        'haskell' => 'Haskell',\n        'haxe' => 'Haxe',\n        'hicest' => 'HicEst',\n        'hq9plus' => 'HQ9+',\n        'html4strict' => 'HTML 4.01',\n        'html5' => 'HTML 5',\n        'icon' => 'Icon',\n        'idl' => 'Uno Idl',\n        'ini' => 'INI',\n        'inno' => 'Inno Script',\n        'intercal' => 'INTERCAL',\n        'io' => 'IO',\n        'ispfpanel' => 'ISPF Panel',\n        'j' => 'J',\n        'java' => 'Java',\n        'java5' => 'Java 5',\n        'javascript' => 'JavaScript',\n        'jcl' => 'JCL',\n        'jquery' => 'jQuery',\n        'kixtart' => 'KiXtart',\n        'klonec' => 'KLone C',\n        'klonecpp' => 'KLone C++',\n        'latex' => 'LaTeX',\n        'lb' => 'Liberty BASIC',\n        'ldif' => 'LDIF',\n        'lisp' => 'Lisp',\n        'llvm' => 'LLVM',\n        'locobasic' => 'Locomotive Basic',\n        'logtalk' => 'Logtalk',\n        'lolcode' => 'LOLcode',\n        'lotusformulas' => 'Lotus Notes @Formulas',\n        'lotusscript' => 'LotusScript',\n        'lscript' => 'Lightwave Script',\n        'lsl2' => 'Linden Script',\n        'lua' => 'LUA',\n        'm68k' => 'Motorola 68000 Assembler',\n        'magiksf' => 'MagikSF',\n        'make' => 'GNU make',\n        'mapbasic' => 'MapBasic',\n        'markdown' => 'Markdown',\n        'matlab' => 'Matlab M',\n        'mirc' => 'mIRC Scripting',\n        'mmix' => 'MMIX',\n        'modula2' => 'Modula-2',\n        'modula3' => 'Modula-3',\n        'mpasm' => 'Microchip Assembler',\n        'mxml' => 'MXML',\n        'mysql' => 'MySQL',\n        'nagios' => 'Nagios',\n        'netrexx' => 'NetRexx',\n        'newlisp' => 'NewLisp',\n        'nginx' => 'Nginx',\n        'nsis' => 'NSIS',\n        'oberon2' => 'Oberon-2',\n        'objc' => 'Objective-C',\n        'objeck' => 'Objeck',\n        'ocaml' => 'Ocaml',\n        'ocaml-brief' => 'OCaml (Brief)',\n        'octave' => 'GNU/Octave',\n        'oobas' => 'OpenOffice.org Basic',\n        'oorexx' => 'ooRexx',\n        'oracle11' => 'Oracle 11 SQL',\n        'oracle8' => 'Oracle 8 SQL',\n        'oxygene' => 'Oxygene (Delphi Prism)',\n        'oz' => 'OZ',\n        'parasail' => 'ParaSail',\n        'parigp' => 'PARI/GP',\n        'pascal' => 'Pascal',\n        'pcre' => 'PCRE',\n        'per' => 'Per (forms)',\n        'perl' => 'Perl',\n        'perl6' => 'Perl 6',\n        'pf' => 'OpenBSD Packet Filter',\n        'php' => 'PHP',\n        'php-brief' => 'PHP (Brief)',\n        'pic16' => 'PIC16 Assembler',\n        'pike' => 'Pike',\n        'pixelbender' => 'Pixel Bender',\n        'pli' => 'PL/I',\n        'plsql' => 'PL/SQL',\n        'postgresql' => 'PostgreSQL',\n        'povray' => 'POVRAY',\n        'powerbuilder' => 'PowerBuilder',\n        'powershell' => 'PowerShell',\n        'proftpd' => 'ProFTPd config',\n        'progress' => 'Progress',\n        'prolog' => 'Prolog',\n        'properties' => 'Properties',\n        'providex' => 'ProvideX',\n        'purebasic' => 'PureBasic',\n        'pycon' => 'Python (console mode)',\n        'pys60' => 'Python for S60',\n        'python' => 'Python',\n        'qbasic' => 'QuickBASIC',\n        'racket' => 'Racket',\n        'rails' => 'Ruby on Rails',\n        'rbs' => 'RBScript',\n        'rebol' => 'REBOL',\n        'reg' => 'Microsoft REGEDIT',\n        'rexx' => 'Rexx',\n        'robots' => 'robots.txt',\n        'rpmspec' => 'RPM Specification File',\n        'rsplus' => 'R / S+',\n        'ruby' => 'Ruby',\n        'sas' => 'SAS',\n        'scala' => 'Scala',\n        'scheme' => 'Scheme',\n        'scilab' => 'SciLab',\n        'scl' => 'SCL',\n        'sdlbasic' => 'sdlBasic',\n        'smalltalk' => 'Smalltalk',\n        'smarty' => 'Smarty',\n        'spark' => 'SPARK',\n        'sparql' => 'SPARQL',\n        'sql' => 'SQL',\n        'stonescript' => 'StoneScript',\n        'systemverilog' => 'SystemVerilog',\n        'tcl' => 'TCL',\n        'teraterm' => 'Tera Term Macro',\n        'text' => 'Plain Text',\n        'thinbasic' => 'thinBasic',\n        'tsql' => 'T-SQL',\n        'typoscript' => 'TypoScript',\n        'unicon' => 'Unicon',\n        'upc' => 'UPC',\n        'urbi' => 'Urbi',\n        'unrealscript' => 'Unreal Script',\n        'vala' => 'Vala',\n        'vb' => 'Visual Basic',\n        'vbnet' => 'VB.NET',\n        'vbscript' => 'VB Script',\n        'vedit' => 'Vedit Macro',\n        'verilog' => 'Verilog',\n        'vhdl' => 'VHDL',\n        'vim' => 'Vim',\n        'visualfoxpro' => 'Visual FoxPro',\n        'visualprolog' => 'Visual Prolog',\n        'whitespace' => 'Whitespace',\n        'whois' => 'WHOIS (RPSL format)',\n        'winbatch' => 'WinBatch',\n        'xbasic' => 'XBasic',\n        'xml' => 'XML',\n        'xorg_conf' => 'Xorg Config',\n        'xpp' => 'X++',\n        'yaml' => 'YAML',\n        'z80' => 'ZiLOG Z80 Assembler',\n        'zxbasic' => 'ZXBasic'\n    ];\n\n    \\$popular_formats = [\n        'text', 'html4strict', 'html5', 'css', 'javascript', 'php', 'perl',\n        'python', 'postgresql', 'sql', 'xml', 'java', 'c', 'csharp', 'cpp', 'markdown'\n    ];\n}\n\n?>\nEOD;\n\n// Write config.php\nif (file_put_contents($config_file, $config_content, LOCK_EX) === false) {\n    ob_end_clean();\n    error_log(\"configure.php: Failed to write config.php\");\n    echo json_encode([\n        'status'  => 'error',\n        'message' => \"Failed to write config.php.<br>Ensure the directory is writable.<br>Example:<br><code>chmod 775 \" .\n            htmlspecialchars($parent_dir, ENT_QUOTES, 'UTF-8') . \"</code><br><code>chown $web_user \" .\n            htmlspecialchars($parent_dir, ENT_QUOTES, 'UTF-8') . \"</code>\"\n    ]);\n    exit;\n}\n\n// Set config.php permissions (owner read/write only)\n@chmod($config_file, 0600);\nerror_log(\"configure.php: Successfully wrote config.php\");\n\n// Prepare success message\n$success_message = 'Configuration saved successfully. Proceed above with your admin account and click submit to install the database.<br>';\nif ($enablegoog === 'yes' || $enablefb === 'yes') {\n    $success_message .= 'Install OAuth dependencies: <code>cd oauth && composer require google/apiclient:^2.12 league/oauth2-client</code><br>Ensure HTTPS is enabled for secure OAuth redirects.';\n}\nif ($enablesmtp === 'yes') {\n    $success_message .= 'SMTP enabled. Install SMTP dependencies: <code>cd mail && composer require phpmailer/phpmailer</code><br>Configure SMTP settings in admin panel after installation.<br>';\n}\nif ($https_warning) {\n    $success_message .= $https_warning . '<br>';\n}\n$success_message .= 'Ensure HTTPS is enabled for secure OAuth redirects.';\n\n// Clean output buffer and send success response\nob_end_clean();\necho json_encode([\n    'status'  => 'success',\n    'message' => $success_message\n]);"
  },
  {
    "path": "install/index.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See LICENCE for more details.\n */\n\n$date = date('jS F Y');\n$ip   = $_SERVER['REMOTE_ADDR'] ?? '';\n\n// Security headers\nheader(\"Content-Security-Policy: default-src 'self'; script-src 'self' https://code.jquery.com https://cdn.jsdelivr.net; style-src 'self' https://cdn.jsdelivr.net; img-src 'self' data:; connect-src 'self'\");\nheader(\"X-Frame-Options: DENY\");\nheader(\"X-XSS-Protection: 1; mode=block\");\n\n// PHP version check (require 8.1+)\n$php_version = phpversion();\n$php_ok      = version_compare($php_version, '8.1', '>=');\n\n// Extension checks\n$required_extensions = ['pdo_mysql'];\n$optional_extensions = ['openssl', 'curl'];\n$extension_status    = [];\nforeach ($required_extensions as $ext) {\n    $extension_status[$ext] = extension_loaded($ext) ? 'Enabled' : 'Missing';\n}\nforeach ($optional_extensions as $ext) {\n    $extension_status[$ext] = extension_loaded($ext) ? 'Enabled' : 'Missing (required for OAuth/SMTP)';\n}\n\n// Guess web user (for help text)\n$web_user = $_SERVER['USER']\n    ?? getenv('APACHE_RUN_USER')\n    ?? getenv('USER')\n    ?? 'www-data';\n?>\n\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <title>Paste 3 - Install</title>\n    <link href=\"//cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM\" crossorigin=\"anonymous\">\n    <link href=\"install.css\" rel=\"stylesheet\">\n</head>\n<body>\n<div id=\"top\" class=\"clearfix\">\n    <div class=\"applogo\">\n        <a href=\"#\" class=\"logo\">Paste</a>\n    </div>\n</div>\n\n<div class=\"content container\">\n    <div class=\"row\">\n        <!-- INSTALL PANEL -->\n        <div id=\"install\">\n            <div class=\"col-md-4\">\n                <div class=\"card mb-4\">\n                    <div class=\"card-body\">\n                        <h5 class=\"card-title\">Pre-installation Checks</h5>\n                        <table class=\"table table-hover\">\n                            <tbody>\n                                <tr>\n                                    <th>PHP Version</th>\n                                    <td>\n                                        <span class=\"badge <?php echo $php_ok ? 'bg-success' : 'bg-danger'; ?>\">\n                                            <?php echo htmlspecialchars($php_version); ?>\n                                        </span>\n                                        <?php if (!$php_ok): ?>\n                                            <br><small class=\"text-danger\">PHP 8.1 or higher is required. Please upgrade your PHP version.</small>\n                                        <?php endif; ?>\n                                    </td>\n                                </tr>\n                                <?php foreach ($extension_status as $ext => $status): ?>\n                                    <tr>\n                                        <th><?php echo htmlspecialchars($ext); ?></th>\n                                        <td>\n                                            <span class=\"badge <?php echo (strpos($status, 'Enabled') !== false) ? 'bg-success' : 'bg-danger'; ?>\">\n                                                <?php echo htmlspecialchars($status); ?>\n                                            </span>\n                                        </td>\n                                    </tr>\n                                <?php endforeach; ?>\n                                <tr>\n                                    <th>File/Directory</th>\n                                    <th>Status</th>\n                                </tr>\n                                <?php\n                                // Only check config.php and sitemap.xml (no tmp)\n                                $files = ['../config.php', '../sitemap.xml'];\n                                foreach ($files as $filename) {\n                                    echo \"<tr><td>\" . htmlspecialchars(basename($filename)) . \"</td>\";\n                                    $dir = dirname($filename);\n                                    if (!is_dir($dir)) {\n                                        echo '<td><span class=\"badge bg-danger\">Directory Missing</span> Run: <code>mkdir -p ' . htmlspecialchars($dir, ENT_QUOTES, 'UTF-8') . ' && chmod 775 ' . htmlspecialchars($dir, ENT_QUOTES, 'UTF-8') . ' && chown ' . htmlspecialchars($web_user, ENT_QUOTES, 'UTF-8') . ' ' . htmlspecialchars($dir, ENT_QUOTES, 'UTF-8') . '</code></td>';\n                                    } elseif (is_writable($filename) || (!file_exists($filename) && is_writable($dir))) {\n                                        echo '<td><span class=\"badge bg-success\">Writable</span></td>';\n                                    } else {\n                                        echo '<td><span class=\"badge bg-danger\">Not Writable</span> Run: <code>chmod 664 ' . htmlspecialchars($filename, ENT_QUOTES, 'UTF-8') . '</code> or <code>chown ' . htmlspecialchars($web_user, ENT_QUOTES, 'UTF-8') . ' ' . htmlspecialchars($filename, ENT_QUOTES, 'UTF-8') . '</code></td>';\n                                    }\n                                    echo \"</tr>\";\n                                }\n                                ?>\n                            </tbody>\n                        </table>\n                    </div>\n                </div>\n            </div>\n\n            <div class=\"col-md-8\">\n                <div class=\"card mb-4\">\n                    <div class=\"card-body\">\n                        <h5 class=\"card-title\">Database and Configuration</h5>\n                        <div class=\"alert alert-danger\" id=\"alertfailed\" role=\"alert\" style=\"display: none;\">\n                            Configuration failed. <span id=\"error-details\"></span>\n                            <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\n                        </div>\n                        <form id=\"db-form\" class=\"row g-3\" <?php echo !$php_ok ? 'style=\"display: none;\"' : ''; ?>>\n                            <div class=\"col-md-6\">\n                                <label for=\"data_host\" class=\"form-label\">Database Host</label>\n                                <input type=\"text\" class=\"form-control\" id=\"data_host\" name=\"data_host\" value=\"localhost\" required>\n                            </div>\n                            <div class=\"col-md-6\">\n                                <label for=\"data_name\" class=\"form-label\">Database Name</label>\n                                <input type=\"text\" class=\"form-control\" id=\"data_name\" name=\"data_name\" required>\n                            </div>\n                            <div class=\"col-md-6\">\n                                <label for=\"data_user\" class=\"form-label\">Database Username</label>\n                                <input type=\"text\" class=\"form-control\" id=\"data_user\" name=\"data_user\" required>\n                            </div>\n                            <div class=\"col-md-6\">\n                                <label for=\"data_pass\" class=\"form-label\">Database Password</label>\n                                <input type=\"password\" class=\"form-control\" id=\"data_pass\" name=\"data_pass\">\n                            </div>\n                            <div class=\"col-md-6\">\n                                <label for=\"enablegoog\" class=\"form-label\">Enable Google OAuth User Logins</label>\n                                <select class=\"form-select\" id=\"enablegoog\" name=\"enablegoog\">\n                                    <option value=\"no\" selected>No</option>\n                                    <option value=\"yes\">Yes</option>\n                                </select>\n                                <small class=\"form-text text-muted\">Enabling Google OAuth requires Google Cloud Console setup. HTTPS is recommended for security.</small>\n                            </div>\n                            <div class=\"col-md-6\">\n                                <label for=\"enablefb\" class=\"form-label\">Enable Facebook OAuth User Logins</label>\n                                <select class=\"form-select\" id=\"enablefb\" name=\"enablefb\">\n                                    <option value=\"no\" selected>No</option>\n                                    <option value=\"yes\">Yes</option>\n                                </select>\n                                <small class=\"form-text text-muted\">Enabling Facebook OAuth requires Facebook Developer Portal setup. HTTPS is recommended for security.</small>\n                            </div>\n                            <div class=\"col-md-6\">\n                                <label for=\"enablesmtp\" class=\"form-label\">Enable SMTP Email (Gmail)</label>\n                                <select class=\"form-select\" id=\"enablesmtp\" name=\"enablesmtp\">\n                                    <option value=\"no\" selected>No</option>\n                                    <option value=\"yes\">Yes</option>\n                                </select>\n                                <small class=\"form-text text-muted\">Enabling SMTP requires Gmail API setup or SMTP credentials. Configure in admin panel after installation.</small>\n                            </div>\n                            <div class=\"col-12\">\n                                <button type=\"submit\" class=\"btn btn-primary w-100\">Configure</button>\n                            </div>\n                        </form>\n                        <?php if (!$php_ok): ?>\n                            <div class=\"alert alert-warning mt-3\">\n                                Installation is disabled because your PHP version (<?php echo htmlspecialchars($php_version); ?>) is too low. Please upgrade to PHP 8.1 or higher.\n                            </div>\n                        <?php endif; ?>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <!-- END INSTALL PANEL -->\n\n        <!-- CONFIGURATION PANEL -->\n        <div id=\"configure\" style=\"display: none;\">\n            <div class=\"col-md-12\">\n                <div class=\"card mb-4\">\n                    <div class=\"card-body\">\n                        <h5 class=\"card-title\">Configure Admin Account</h5>\n                        <div class=\"alert alert-danger\" id=\"admin-alertfailed\" role=\"alert\" style=\"display: none;\">\n                            Error admin setup failed. <span id=\"admin-error-details\"></span>\n                            <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\n                        </div>\n                        <form id=\"admin-form\" class=\"row g-3\">\n                            <div class=\"col-md-6\">\n                                <label for=\"admin_user\" class=\"form-label\">Username</label>\n                                <input type=\"text\" class=\"form-control\" id=\"admin_user\" name=\"admin_user\" required>\n                            </div>\n                            <div class=\"col-md-6\">\n                                <label for=\"admin_pass\" class=\"form-label\">Password</label>\n                                <input type=\"password\" class=\"form-control\" id=\"admin_pass\" name=\"admin_pass\" required>\n                            </div>\n                            <div class=\"col-12\">\n                                <button type=\"submit\" class=\"btn btn-primary\">Submit</button>\n                            </div>\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <!-- END CONFIGURATION PANEL -->\n\n        <div id=\"pre_load\" style=\"display: none;\">\n            <div class=\"col-md-12\">\n                <div class=\"card mb-4\">\n                    <div class=\"card-body\">\n                        <h5 class=\"card-title\">Installing database schema for Paste. Please wait...</h5>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div id=\"logpanel\" class=\"col-md-12\" style=\"display: none;\">\n            <div class=\"card mb-4\">\n                <div class=\"card-body\">\n                    <div id=\"log\"></div>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"row footer\">\n        <div class=\"col-md-6 text-start\">\n            <a href=\"https://github.com/boxlabss/PASTE\">Updates</a> &mdash; <a href=\"https://github.com/boxlabss/PASTE/issues\">Bugs</a>\n        </div>\n        <div class=\"col-md-6 text-end\">\n            Powered by <a href=\"https://phpaste.sourceforge.io/\" target=\"_blank\">Paste 3</a>\n        </div>\n    </div>\n</div>\n\n<script src=\"//code.jquery.com/jquery-3.6.0.min.js\" integrity=\"sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=\" crossorigin=\"anonymous\"></script>\n<script src=\"//cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js\" integrity=\"sha384-geWF76RCwLtnZ8qwWowPQNguL3RmwHVBC9FhGdlKrxdiJJigb/j/68SIy3Te4Bkz\" crossorigin=\"anonymous\"></script>\n<script src=\"install.js\"></script>\n</body>\n</html>\n"
  },
  {
    "path": "install/install.css",
    "content": "#alertfailed, #configure, #logpanel, #pre_load { display: none; }\r\n.applogo { text-align: center; padding: 20px; }\r\n.logo { font-size: 24px; font-weight: bold; color: #333; text-decoration: none; }\r\n.footer { margin-top: 20px; padding: 10px; background: #f8f9fa; }"
  },
  {
    "path": "install/install.js",
    "content": "//\r\n// Paste 3 <old repo: https://github.com/jordansamuel/PASTE>  new: https://github.com/boxlabss/PASTE\r\n// demo: https://paste.boxlabs.uk/\r\n// https://phpaste.sourceforge.io/  -  https://sourceforge.net/projects/phpaste/\r\n//\r\n// Licensed under GNU General Public License, version 3 or later.\r\n// See LICENCE for details.\r\n\r\nif (typeof jQuery === 'undefined') {\r\n    console.error('jQuery failed to load from CDN. Please check your network or ad blocker.');\r\n} else {\r\n    console.log('jQuery loaded successfully.');\r\n}\r\n\r\n$(document).ready(function() {\r\n    console.log('Document ready. Binding form handlers.');\r\n\r\n    // Handle database configuration form submission\r\n    $('#db-form').on('submit', function(e) {\r\n        e.preventDefault();\r\n        console.log('Database form submitted:', $(this).serialize());\r\n        $('#install').hide();\r\n        $('#configure').hide();\r\n        $('#pre_load').show();\r\n        $('#alertfailed').hide();\r\n        $('#admin-alertfailed').hide(); // Explicitly hide admin error\r\n\r\n        $.ajax({\r\n            url: 'configure.php',\r\n            method: 'POST',\r\n            data: $(this).serialize(),\r\n            dataType: 'json',\r\n            success: function(response) {\r\n                console.log('configure.php response:', response);\r\n                $('#pre_load').hide();\r\n                if (response.status === 'success') {\r\n                    $('#configure').show();\r\n                    $('#logpanel').show();\r\n                    $('#log').html(response.message);\r\n                } else {\r\n                    $('#install').show();\r\n                    $('#alertfailed').show();\r\n                    $('#error-details').text(response.message || 'Unknown error occurred.');\r\n                }\r\n            },\r\n            error: function(xhr, status, error) {\r\n                console.error('configure.php AJAX error:', status, error, xhr.responseText);\r\n                $('#pre_load').hide();\r\n                $('#install').show();\r\n                $('#alertfailed').show();\r\n                $('#error-details').text('Configuration failed: ' + (xhr.responseJSON && xhr.responseJSON.message ? xhr.responseJSON.message : status + ' - ' + error));\r\n            }\r\n        });\r\n    });\r\n\r\n    // Handle admin configuration form submission\r\n    $('#admin-form').on('submit', function(e) {\r\n        e.preventDefault();\r\n        console.log('Admin form submitted:', $(this).serialize());\r\n        $('#configure').hide();\r\n        $('#pre_load').show();\r\n        $('#alertfailed').hide();\r\n        $('#admin-alertfailed').hide();\r\n\r\n        $.ajax({\r\n            url: 'install.php',\r\n            method: 'POST',\r\n            data: $(this).serialize(),\r\n            dataType: 'json',\r\n            success: function(response) {\r\n                console.log('install.php response:', response);\r\n                $('#pre_load').hide();\r\n                $('#logpanel').show();\r\n                $('#log').html(response.message);\r\n            },\r\n            error: function(xhr, status, error) {\r\n                console.error('install.php AJAX error:', status, error, xhr.responseText);\r\n                $('#pre_load').hide();\r\n                $('#configure').show();\r\n                $('#admin-alertfailed').show();\r\n                $('#admin-error-details').text('Error admin setup failed: ' + (xhr.responseJSON && xhr.responseJSON.message ? xhr.responseJSON.message : status + ' - ' + error));\r\n            }\r\n        });\r\n    });\r\n\r\n    // Warn about OAuth without HTTPS\r\n    $('#enablegoog, #enablefb').on('change', function() {\r\n        if (($(this).attr('id') === 'enablegoog' && $(this).val() === 'yes') || \r\n            ($(this).attr('id') === 'enablefb' && $(this).val() === 'yes')) {\r\n            if (window.location.protocol !== 'https:') {\r\n                alert('Warning: Enabling OAuth without HTTPS is insecure and may cause issues with OAuth providers. Consider enabling SSL/TLS.');\r\n            }\r\n        }\r\n    });\r\n});"
  },
  {
    "path": "install/install.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n\n// Set default timezone\ndate_default_timezone_set('UTC');\n\n// Start output buffering\nob_start();\n\n// Ensure JSON content type\nheader('Content-Type: application/json; charset=utf-8');\n\n// Disable display errors\nini_set('display_errors', '0');\nini_set('log_errors', '1');\n\n// Check required files\n$config_file = '../config.php';\nif (!file_exists($config_file)) {\n    ob_end_clean();\n    error_log(\"install.php: config.php not found\");\n    echo json_encode(['status' => 'error', 'message' => 'config.php not found. Run configure.php first.']);\n    exit;\n}\n\ntry {\n    require_once $config_file;\n} catch (Exception $e) {\n    ob_end_clean();\n    error_log(\"install.php: Error including config.php: \" . $e->getMessage());\n    echo json_encode(['status' => 'error', 'message' => 'Failed to include config.php: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8')]);\n    exit;\n}\n\n// Check critical files\n$required_files = [\n    '../oauth/vendor/autoload.php',\n    '../mail/vendor/autoload.php',\n    '../theme/default/login.php',\n    '../oauth/google.php',\n    '../oauth/google_smtp.php',\n    '../mail/mail.php'\n];\nforeach ($required_files as $file) {\n    if (!file_exists($file)) {\n        ob_end_clean();\n        $message = \"Missing required file: $file\";\n        error_log(\"install.php: $message\");\n        echo json_encode(['status' => 'error', 'message' => $message]);\n        exit;\n    }\n}\n\n//\n// Check critical files and Composer autoload\n//$required_files = [\n//    '../oauth/vendor/autoload.php' => ['google/apiclient:^2.12', 'league/oauth2-client:^2.6'],\n//    '../mail/vendor/autoload.php'  => ['phpmailer/phpmailer:^6.9'],\n//    '../theme/default/login.php'   => [],\n//    '../oauth/google.php'          => [],\n//    '../oauth/google_smtp.php'     => [],\n//    '../mail/mail.php'             => []\n//];\n//foreach ($required_files as $file => $packages) {\n//    if (!file_exists($file)) {\n//        ob_end_clean();\n//        $message = empty($packages)\n//            ? \"Missing required file: $file\"\n//            : \"Missing Composer dependencies in \" . dirname($file) . \". Run: <code>cd \" . dirname($file) . \" && composer require \" . implode(' ', $packages) . \"</code>\";\n//        error_log(\"install.php: $message\");\n//        echo json_encode(['status' => 'error', 'message' => $message]);\n//        exit;\n//    }\n//}\n\n// Sanitize input\n$admin_user = isset($_POST['admin_user']) ? filter_var(trim($_POST['admin_user']), FILTER_SANITIZE_STRING) : '';\n$admin_pass = isset($_POST['admin_pass']) ? password_hash($_POST['admin_pass'], PASSWORD_DEFAULT) : '';\n$date       = date('Y-m-d H:i:s');\n\n// Validate admin credentials\nif (empty($admin_user) || empty($_POST['admin_pass'])) {\n    ob_end_clean();\n    error_log(\"install.php: Missing admin user or password\");\n    echo json_encode(['status' => 'error', 'message' => 'Please provide both admin username and password.']);\n    exit;\n}\n\n// Connect to database using PDO\ntry {\n    $pdo = new PDO(\"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\", $dbuser, $dbpassword);\n    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);\n    $pdo->exec(\"SET time_zone = '+00:00'\");\n} catch (PDOException $e) {\n    ob_end_clean();\n    error_log(\"install.php: Database connection failed: \" . $e->getMessage());\n    echo json_encode(['status' => 'error', 'message' => 'Database connection failed: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8')]);\n    exit;\n}\n\n// Calculate base URL with trailing slash\n$base_path = rtrim(dirname($_SERVER['PHP_SELF'], 2), '/') . '/';\n$baseurl   = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://') . $_SERVER['SERVER_NAME'] . $base_path;\n\n// Helpers\nfunction tableExists($pdo, $table) {\n    try {\n        $stmt = $pdo->query(\"SHOW TABLES LIKE \" . $pdo->quote($table));\n        return $stmt && $stmt->rowCount() > 0;\n    } catch (PDOException $e) {\n        error_log(\"install.php: Error checking table $table: \" . $e->getMessage());\n        return false;\n    }\n}\nfunction getColumnDefinition($pdo, $table, $column) {\n    try {\n        $stmt = $pdo->query(\"SHOW COLUMNS FROM `$table` LIKE \" . $pdo->quote($column));\n        return $stmt ? $stmt->fetch(PDO::FETCH_ASSOC) : false;\n    } catch (PDOException $e) {\n        error_log(\"install.php: Error checking column $column in $table: \" . $e->getMessage());\n        return false;\n    }\n}\n/**\n * Very lightweight column ensure:\n * - Adds column if missing.\n * - If present, tries MODIFY to expected definition (best-effort).\n */\nfunction ensureColumn($pdo, $table, $column, $expected_def, &$output, &$errors) {\n    $current = getColumnDefinition($pdo, $table, $column);\n    if (!$current) {\n        try {\n            $pdo->exec(\"ALTER TABLE `$table` ADD `$column` $expected_def\");\n            $output[] = \"Added column $table.$column.\";\n        } catch (PDOException $e) {\n            $errors[] = \"Failed to add $table.$column: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n            error_log(\"install.php: Failed to add $table.$column: \" . $e->getMessage());\n        }\n        return;\n    }\n    // Best-effort modify (skip AUTO_INCREMENT & KEY nuances)\n    try {\n        $pdo->exec(\"ALTER TABLE `$table` MODIFY `$column` $expected_def\");\n        $output[] = \"Aligned column $table.$column.\";\n    } catch (PDOException $e) {\n        // Not fatal—types (ENUM sizes etc.) may differ; log only.\n        error_log(\"install.php: Skipped modify for $table.$column: \" . $e->getMessage());\n    }\n}\nfunction indexExists(PDO $pdo, string $table, string $index): bool {\n    try {\n        $q = $pdo->prepare(\"SHOW INDEX FROM `$table` WHERE Key_name = :k\");\n        $q->execute([':k' => $index]);\n        return (bool)$q->fetch(PDO::FETCH_ASSOC);\n    } catch (PDOException $e) {\n        error_log(\"install.php: indexExists($table,$index): \" . $e->getMessage());\n        return false;\n    }\n}\nfunction fkExists(PDO $pdo, string $table, string $fk): bool {\n    try {\n        $db = $pdo->query(\"SELECT DATABASE()\")->fetchColumn();\n        $sql = \"SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS\n                WHERE CONSTRAINT_SCHEMA = :db AND CONSTRAINT_NAME = :fk AND TABLE_NAME = :tbl\";\n        $q = $pdo->prepare($sql);\n        $q->execute([':db'=>$db, ':fk'=>$fk, ':tbl'=>$table]);\n        return (bool)$q->fetch(PDO::FETCH_ASSOC);\n    } catch (PDOException $e) {\n        error_log(\"install.php: fkExists($table,$fk): \" . $e->getMessage());\n        return false;\n    }\n}\n\n// Initialize output array\n$output = [];\n$errors = [];\n\ntry {\n    // --- admin ---\n    if (!tableExists($pdo, 'admin')) {\n        $pdo->exec(\"CREATE TABLE admin (\n            id INT NOT NULL AUTO_INCREMENT,\n            user VARCHAR(250) NOT NULL UNIQUE,\n            pass VARCHAR(250) NOT NULL,\n            PRIMARY KEY(id)\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci\");\n        $output[] = \"admin table created.\";\n    } else {\n        ensureColumn($pdo, 'admin', 'id',   \"INT NOT NULL AUTO_INCREMENT\", $output, $errors);\n        ensureColumn($pdo, 'admin', 'user', \"VARCHAR(250) NOT NULL\",       $output, $errors);\n        ensureColumn($pdo, 'admin', 'pass', \"VARCHAR(250) NOT NULL\",       $output, $errors);\n        if (!indexExists($pdo, 'admin', 'user')) {\n            try { $pdo->exec(\"ALTER TABLE admin ADD UNIQUE KEY `user` (user)\"); } catch (PDOException $e) { error_log($e->getMessage()); }\n        }\n    }\n    // Admin user\n    try {\n        $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM admin WHERE user = :u\");\n        $stmt->execute([':u' => $admin_user]);\n        if ((int)$stmt->fetchColumn() === 0) {\n            $ins = $pdo->prepare(\"INSERT INTO admin (user, pass) VALUES (:u,:p)\");\n            $ins->execute([':u'=>$admin_user, ':p'=>$admin_pass]);\n            $output[] = \"Admin user inserted.\";\n        } else {\n            $output[] = \"Admin user already exists, skipping insertion.\";\n        }\n    } catch (PDOException $e) {\n        $errors[] = \"Failed to insert admin user: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n        error_log(\"install.php: Admin user insertion failed: \" . $e->getMessage());\n    }\n\n    // --- admin_history ---\n    if (!tableExists($pdo, 'admin_history')) {\n        $pdo->exec(\"CREATE TABLE admin_history (\n            id INT NOT NULL AUTO_INCREMENT,\n            last_date DATETIME NOT NULL,\n            ip VARCHAR(45) NOT NULL,\n            PRIMARY KEY(id)\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci\");\n        $output[] = \"admin_history table created.\";\n    } else {\n        ensureColumn($pdo, 'admin_history', 'id',        \"INT NOT NULL AUTO_INCREMENT\", $output, $errors);\n        ensureColumn($pdo, 'admin_history', 'last_date', \"DATETIME NOT NULL\",           $output, $errors);\n        ensureColumn($pdo, 'admin_history', 'ip',        \"VARCHAR(45) NOT NULL\",        $output, $errors);\n    }\n\n    // --- site_info ---\n    if (!tableExists($pdo, 'site_info')) {\n        $pdo->exec(\"CREATE TABLE site_info (\n            id INT NOT NULL AUTO_INCREMENT,\n            title VARCHAR(255) NOT NULL,\n            des MEDIUMTEXT,\n            keyword MEDIUMTEXT,\n            site_name VARCHAR(255) NOT NULL,\n            email VARCHAR(255) DEFAULT NULL,\n            twit VARCHAR(255) DEFAULT NULL,\n            face VARCHAR(255) DEFAULT NULL,\n            gplus VARCHAR(255) DEFAULT NULL,\n            ga VARCHAR(255) DEFAULT NULL,\n            additional_scripts TEXT,\n            baseurl TEXT NOT NULL,\n            PRIMARY KEY(id)\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci\");\n        $output[] = \"site_info table created.\";\n        $stmt = $pdo->prepare(\"INSERT INTO site_info\n            (title, des, keyword, site_name, email, twit, face, gplus, ga, additional_scripts, baseurl)\n            VALUES (:title,:des,:keyword,:site_name,:email,:twit,:face,:gplus,:ga,:scripts,:baseurl)\");\n        $stmt->execute([\n            ':title'   => 'Paste',\n            ':des'     => 'Paste can store text, source code, or sensitive data for a set period of time.',\n            ':keyword' => 'paste,pastebin.com,pastebin,text,paste,online paste',\n            ':site_name'=> 'Paste',\n            ':email'   => 'admin@yourdomain.com',\n            ':twit'    => 'https://x.com/',\n            ':face'    => 'https://www.facebook.com/',\n            ':gplus'   => '',\n            ':ga'      => '',\n            ':scripts' => '',\n            ':baseurl' => $baseurl\n        ]);\n        $output[] = \"Site info inserted.\";\n    } else {\n        ensureColumn($pdo, 'site_info', 'id',                 \"INT NOT NULL AUTO_INCREMENT\", $output, $errors);\n        ensureColumn($pdo, 'site_info', 'title',              \"VARCHAR(255) NOT NULL\",       $output, $errors);\n        ensureColumn($pdo, 'site_info', 'des',                \"MEDIUMTEXT\",                  $output, $errors);\n        ensureColumn($pdo, 'site_info', 'keyword',            \"MEDIUMTEXT\",                  $output, $errors);\n        ensureColumn($pdo, 'site_info', 'site_name',          \"VARCHAR(255) NOT NULL\",       $output, $errors);\n        ensureColumn($pdo, 'site_info', 'email',              \"VARCHAR(255)\",                $output, $errors);\n        ensureColumn($pdo, 'site_info', 'twit',               \"VARCHAR(255)\",                $output, $errors);\n        ensureColumn($pdo, 'site_info', 'face',               \"VARCHAR(255)\",                $output, $errors);\n        ensureColumn($pdo, 'site_info', 'gplus',              \"VARCHAR(255)\",                $output, $errors);\n        ensureColumn($pdo, 'site_info', 'ga',                 \"VARCHAR(255)\",                $output, $errors);\n        ensureColumn($pdo, 'site_info', 'additional_scripts', \"TEXT\",                        $output, $errors);\n        ensureColumn($pdo, 'site_info', 'baseurl',            \"TEXT NOT NULL\",               $output, $errors);\n        try {\n            $stmt = $pdo->prepare(\"UPDATE site_info SET baseurl=:b WHERE id=1\");\n            $stmt->execute([':b'=>$baseurl]);\n            $output[] = \"Updated baseurl in site_info.\";\n        } catch (PDOException $e) {\n            $errors[] = \"Failed to update baseurl in site_info: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n            error_log(\"install.php: Failed to update baseurl in site_info: \" . $e->getMessage());\n        }\n    }\n\n    // --- site_permissions ---\n    if (!tableExists($pdo, 'site_permissions')) {\n        $pdo->exec(\"CREATE TABLE site_permissions (\n            id INT NOT NULL AUTO_INCREMENT,\n            disableguest VARCHAR(10) NOT NULL DEFAULT 'off',\n            siteprivate  VARCHAR(10) NOT NULL DEFAULT 'off',\n            PRIMARY KEY(id)\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci\");\n        $pdo->exec(\"INSERT INTO site_permissions (disableguest, siteprivate) VALUES ('off','off')\");\n        $output[] = \"site_permissions table created and seeded.\";\n    } else {\n        ensureColumn($pdo, 'site_permissions', 'id',           \"INT NOT NULL AUTO_INCREMENT\",         $output, $errors);\n        ensureColumn($pdo, 'site_permissions', 'disableguest', \"VARCHAR(10) NOT NULL DEFAULT 'off'\",  $output, $errors);\n        ensureColumn($pdo, 'site_permissions', 'siteprivate',  \"VARCHAR(10) NOT NULL DEFAULT 'off'\",  $output, $errors);\n    }\n\n    // --- interface ---\n    if (!tableExists($pdo, 'interface')) {\n        $pdo->exec(\"CREATE TABLE interface (\n            id INT NOT NULL AUTO_INCREMENT,\n            theme VARCHAR(50) NOT NULL DEFAULT 'default',\n            lang  VARCHAR(50) NOT NULL DEFAULT 'en.php',\n            PRIMARY KEY(id)\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci\");\n        $pdo->exec(\"INSERT INTO interface (theme, lang) VALUES ('default','en.php')\");\n        $output[] = \"interface table created and seeded.\";\n    } else {\n        ensureColumn($pdo, 'interface', 'id',    \"INT NOT NULL AUTO_INCREMENT\",     $output, $errors);\n        ensureColumn($pdo, 'interface', 'theme', \"VARCHAR(50) NOT NULL DEFAULT 'default'\", $output, $errors);\n        ensureColumn($pdo, 'interface', 'lang',  \"VARCHAR(50) NOT NULL DEFAULT 'en.php'\",  $output, $errors);\n    }\n\n    // --- pastes ---\n    if (!tableExists($pdo, 'pastes')) {\n        $pdo->exec(\"CREATE TABLE pastes (\n            id INT NOT NULL AUTO_INCREMENT,\n            title   VARCHAR(255) NOT NULL DEFAULT 'Untitled',\n            content LONGTEXT NOT NULL,\n            visible VARCHAR(10) NOT NULL DEFAULT '0',\n            code    VARCHAR(50) NOT NULL DEFAULT 'text',\n            expiry  VARCHAR(50) DEFAULT NULL,\n            password VARCHAR(255) NOT NULL DEFAULT 'NONE',\n            encrypt  VARCHAR(1)   NOT NULL DEFAULT '0',\n            member   VARCHAR(255) NOT NULL DEFAULT 'Guest',\n            date DATETIME NOT NULL,\n            ip   VARCHAR(45) NOT NULL,\n            now_time VARCHAR(50) DEFAULT NULL,\n            s_date   DATE DEFAULT NULL,\n            PRIMARY KEY(id)\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci\");\n        $output[] = \"pastes table created.\";\n    } else {\n        ensureColumn($pdo, 'pastes', 'id',       \"INT NOT NULL AUTO_INCREMENT\",                 $output, $errors);\n        ensureColumn($pdo, 'pastes', 'title',    \"VARCHAR(255) NOT NULL DEFAULT 'Untitled'\",    $output, $errors);\n        ensureColumn($pdo, 'pastes', 'content',  \"LONGTEXT NOT NULL\",                           $output, $errors);\n        ensureColumn($pdo, 'pastes', 'visible',  \"VARCHAR(10) NOT NULL DEFAULT '0'\",            $output, $errors);\n        ensureColumn($pdo, 'pastes', 'code',     \"VARCHAR(50) NOT NULL DEFAULT 'text'\",         $output, $errors);\n        ensureColumn($pdo, 'pastes', 'expiry',   \"VARCHAR(50)\",                                  $output, $errors);\n        ensureColumn($pdo, 'pastes', 'password', \"VARCHAR(255) NOT NULL DEFAULT 'NONE'\",        $output, $errors);\n        ensureColumn($pdo, 'pastes', 'encrypt',  \"VARCHAR(1) NOT NULL DEFAULT '0'\",             $output, $errors);\n        ensureColumn($pdo, 'pastes', 'member',   \"VARCHAR(255) NOT NULL DEFAULT 'Guest'\",       $output, $errors);\n        ensureColumn($pdo, 'pastes', 'date',     \"DATETIME NOT NULL\",                           $output, $errors);\n        ensureColumn($pdo, 'pastes', 'ip',       \"VARCHAR(45) NOT NULL\",                        $output, $errors);\n        ensureColumn($pdo, 'pastes', 'now_time', \"VARCHAR(50)\",                                  $output, $errors);\n        ensureColumn($pdo, 'pastes', 's_date',   \"DATE\",                                         $output, $errors);\n        if (getColumnDefinition($pdo, 'pastes', 'views')) {\n            $output[] = \"Note: 'views' column in pastes is deprecated. Using paste_views table.\";\n        }\n    }\n\n    // --- paste_views ---\n    if (!tableExists($pdo, 'paste_views')) {\n        $pdo->exec(\"CREATE TABLE paste_views (\n            id INT NOT NULL AUTO_INCREMENT,\n            paste_id INT NOT NULL,\n            ip VARCHAR(45) NOT NULL,\n            view_date DATE NOT NULL,\n            PRIMARY KEY(id),\n            UNIQUE KEY unique_paste_ip_date (paste_id, ip, view_date),\n            KEY idx_paste_id (paste_id),\n            KEY idx_view_date (view_date),\n            CONSTRAINT paste_views_ibfk_1 FOREIGN KEY (paste_id) REFERENCES pastes(id) ON DELETE CASCADE\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci\");\n        $output[] = \"paste_views table created.\";\n    } else {\n        ensureColumn($pdo, 'paste_views', 'id',        \"INT NOT NULL AUTO_INCREMENT\", $output, $errors);\n        ensureColumn($pdo, 'paste_views', 'paste_id',  \"INT NOT NULL\",                $output, $errors);\n        ensureColumn($pdo, 'paste_views', 'ip',        \"VARCHAR(45) NOT NULL\",        $output, $errors);\n        ensureColumn($pdo, 'paste_views', 'view_date', \"DATE NOT NULL\",               $output, $errors);\n        if (!indexExists($pdo, 'paste_views', 'unique_paste_ip_date')) {\n            try { $pdo->exec(\"ALTER TABLE paste_views ADD UNIQUE KEY unique_paste_ip_date (paste_id, ip, view_date)\"); } catch (PDOException $e) { error_log($e->getMessage()); }\n        }\n        if (!indexExists($pdo, 'paste_views', 'idx_paste_id')) {\n            try { $pdo->exec(\"ALTER TABLE paste_views ADD KEY idx_paste_id (paste_id)\"); } catch (PDOException $e) { error_log($e->getMessage()); }\n        }\n        if (!indexExists($pdo, 'paste_views', 'idx_view_date')) {\n            try { $pdo->exec(\"ALTER TABLE paste_views ADD KEY idx_view_date (view_date)\"); } catch (PDOException $e) { error_log($e->getMessage()); }\n        }\n        if (!fkExists($pdo, 'paste_views', 'paste_views_ibfk_1')) {\n            try { $pdo->exec(\"ALTER TABLE paste_views ADD CONSTRAINT paste_views_ibfk_1 FOREIGN KEY (paste_id) REFERENCES pastes(id) ON DELETE CASCADE\"); } catch (PDOException $e) { error_log($e->getMessage()); }\n        }\n    }\n\n    // --- visitor_ips ---\n    if (!tableExists($pdo, 'visitor_ips')) {\n        $pdo->exec(\"CREATE TABLE visitor_ips (\n            id INT NOT NULL AUTO_INCREMENT,\n            ip VARCHAR(45) NOT NULL,\n            visit_date DATE NOT NULL,\n            PRIMARY KEY(id),\n            UNIQUE KEY idx_ip_date (ip, visit_date)\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci\");\n        $output[] = \"visitor_ips table created.\";\n    } else {\n        ensureColumn($pdo, 'visitor_ips', 'id',         \"INT NOT NULL AUTO_INCREMENT\", $output, $errors);\n        ensureColumn($pdo, 'visitor_ips', 'ip',         \"VARCHAR(45) NOT NULL\",        $output, $errors);\n        ensureColumn($pdo, 'visitor_ips', 'visit_date', \"DATE NOT NULL\",               $output, $errors);\n        if (!indexExists($pdo, 'visitor_ips', 'idx_ip_date')) {\n            try { $pdo->exec(\"ALTER TABLE visitor_ips ADD UNIQUE KEY idx_ip_date (ip, visit_date)\"); } catch (PDOException $e) { error_log($e->getMessage()); }\n        }\n    }\n\n    // --- users ---\n    if (!tableExists($pdo, 'users')) {\n        $pdo->exec(\"CREATE TABLE users (\n            id INT NOT NULL AUTO_INCREMENT,\n            oauth_uid VARCHAR(255) DEFAULT NULL,\n            username VARCHAR(50) NOT NULL UNIQUE,\n            username_locked TINYINT(1) NOT NULL DEFAULT '1',\n            email_id VARCHAR(255) NOT NULL,\n            full_name VARCHAR(255) NOT NULL,\n            platform VARCHAR(50) NOT NULL,\n            password VARCHAR(255) DEFAULT '',\n            verified ENUM('0','1','2') NOT NULL DEFAULT '0',\n            picture VARCHAR(255) DEFAULT 'NONE',\n            date DATETIME NOT NULL,\n            ip VARCHAR(45) NOT NULL,\n            last_ip VARCHAR(45) DEFAULT NULL,\n            refresh_token VARCHAR(255) DEFAULT NULL,\n            token VARCHAR(512) DEFAULT NULL,\n            verification_code VARCHAR(32) DEFAULT NULL,\n            reset_code VARCHAR(32) DEFAULT NULL,\n            reset_expiry DATETIME DEFAULT NULL,\n            remember_token VARCHAR(64) DEFAULT NULL,\n            PRIMARY KEY(id)\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci\");\n        $output[] = \"users table created.\";\n    } else {\n        ensureColumn($pdo, 'users', 'id',               \"INT NOT NULL AUTO_INCREMENT\",                 $output, $errors);\n        ensureColumn($pdo, 'users', 'oauth_uid',        \"VARCHAR(255) DEFAULT NULL\",                   $output, $errors);\n        ensureColumn($pdo, 'users', 'username',         \"VARCHAR(50) NOT NULL\",                        $output, $errors);\n        ensureColumn($pdo, 'users', 'username_locked',  \"TINYINT(1) NOT NULL DEFAULT '1'\",             $output, $errors);\n        ensureColumn($pdo, 'users', 'email_id',         \"VARCHAR(255) NOT NULL\",                       $output, $errors);\n        ensureColumn($pdo, 'users', 'full_name',        \"VARCHAR(255) NOT NULL\",                       $output, $errors);\n        ensureColumn($pdo, 'users', 'platform',         \"VARCHAR(50) NOT NULL\",                        $output, $errors);\n        ensureColumn($pdo, 'users', 'password',         \"VARCHAR(255) DEFAULT ''\",                     $output, $errors);\n        ensureColumn($pdo, 'users', 'verified',         \"ENUM('0','1','2') NOT NULL DEFAULT '0'\",      $output, $errors);\n        ensureColumn($pdo, 'users', 'picture',          \"VARCHAR(255) DEFAULT 'NONE'\",                 $output, $errors);\n        ensureColumn($pdo, 'users', 'date',             \"DATETIME NOT NULL\",                           $output, $errors);\n        ensureColumn($pdo, 'users', 'ip',               \"VARCHAR(45) NOT NULL\",                        $output, $errors);\n        ensureColumn($pdo, 'users', 'last_ip',          \"VARCHAR(45) DEFAULT NULL\",                    $output, $errors);\n        ensureColumn($pdo, 'users', 'refresh_token',    \"VARCHAR(255) DEFAULT NULL\",                   $output, $errors);\n        ensureColumn($pdo, 'users', 'token',            \"VARCHAR(512) DEFAULT NULL\",                   $output, $errors);\n        ensureColumn($pdo, 'users', 'verification_code',\"VARCHAR(32) DEFAULT NULL\",                    $output, $errors);\n        ensureColumn($pdo, 'users', 'reset_code',       \"VARCHAR(32) DEFAULT NULL\",                    $output, $errors);\n        ensureColumn($pdo, 'users', 'reset_expiry',     \"DATETIME DEFAULT NULL\",                       $output, $errors);\n        ensureColumn($pdo, 'users', 'remember_token',   \"VARCHAR(64) DEFAULT NULL\",                    $output, $errors);\n        if (!indexExists($pdo, 'users', 'username')) {\n            try { $pdo->exec(\"ALTER TABLE users ADD UNIQUE KEY `username` (username)\"); } catch (PDOException $e) { error_log($e->getMessage()); }\n        }\n    }\n\n    // --- ban_user ---\n    if (!tableExists($pdo, 'ban_user')) {\n        $pdo->exec(\"CREATE TABLE ban_user (\n            id INT NOT NULL AUTO_INCREMENT,\n            ip VARCHAR(45) NOT NULL,\n            last_date DATETIME NOT NULL,\n            PRIMARY KEY(id)\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci\");\n        $output[] = \"ban_user table created.\";\n    } else {\n        ensureColumn($pdo, 'ban_user', 'id',        \"INT NOT NULL AUTO_INCREMENT\", $output, $errors);\n        ensureColumn($pdo, 'ban_user', 'ip',        \"VARCHAR(45) NOT NULL\",        $output, $errors);\n        ensureColumn($pdo, 'ban_user', 'last_date', \"DATETIME NOT NULL\",           $output, $errors);\n    }\n\n    // --- mail ---\n    if (!tableExists($pdo, 'mail')) {\n        $pdo->exec(\"CREATE TABLE mail (\n            id INT NOT NULL AUTO_INCREMENT,\n            verification VARCHAR(20) NOT NULL DEFAULT 'enabled',\n            smtp_host VARCHAR(255) DEFAULT '',\n            smtp_username VARCHAR(255) DEFAULT '',\n            smtp_password VARCHAR(255) DEFAULT '',\n            smtp_port VARCHAR(10) DEFAULT '',\n            protocol VARCHAR(20) NOT NULL DEFAULT '2',\n            auth VARCHAR(20) NOT NULL DEFAULT 'true',\n            socket VARCHAR(20) NOT NULL DEFAULT 'tls',\n            oauth_client_id VARCHAR(255) DEFAULT NULL,\n            oauth_client_secret VARCHAR(255) DEFAULT NULL,\n            oauth_refresh_token VARCHAR(255) DEFAULT NULL,\n            PRIMARY KEY(id)\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci\");\n        $pdo->exec(\"INSERT INTO mail (verification, smtp_host, smtp_username, smtp_password, smtp_port, protocol, auth, socket, oauth_client_id, oauth_client_secret, oauth_refresh_token)\n            VALUES ('enabled','smtp.gmail.com','','','587','2','true','tls',NULL,NULL,NULL)\");\n        $output[] = \"mail table created and seeded.\";\n    } else {\n        ensureColumn($pdo, 'mail', 'id',                 \"INT NOT NULL AUTO_INCREMENT\",         $output, $errors);\n        ensureColumn($pdo, 'mail', 'verification',       \"VARCHAR(20) NOT NULL DEFAULT 'enabled'\", $output, $errors);\n        ensureColumn($pdo, 'mail', 'smtp_host',          \"VARCHAR(255) DEFAULT ''\",             $output, $errors);\n        ensureColumn($pdo, 'mail', 'smtp_username',      \"VARCHAR(255) DEFAULT ''\",             $output, $errors);\n        ensureColumn($pdo, 'mail', 'smtp_password',      \"VARCHAR(255) DEFAULT ''\",             $output, $errors);\n        ensureColumn($pdo, 'mail', 'smtp_port',          \"VARCHAR(10) DEFAULT ''\",              $output, $errors);\n        ensureColumn($pdo, 'mail', 'protocol',           \"VARCHAR(20) NOT NULL DEFAULT '2'\",    $output, $errors);\n        ensureColumn($pdo, 'mail', 'auth',               \"VARCHAR(20) NOT NULL DEFAULT 'true'\", $output, $errors);\n        ensureColumn($pdo, 'mail', 'socket',             \"VARCHAR(20) NOT NULL DEFAULT 'tls'\",  $output, $errors);\n        ensureColumn($pdo, 'mail', 'oauth_client_id',    \"VARCHAR(255) DEFAULT NULL\",           $output, $errors);\n        ensureColumn($pdo, 'mail', 'oauth_client_secret',\"VARCHAR(255) DEFAULT NULL\",           $output, $errors);\n        ensureColumn($pdo, 'mail', 'oauth_refresh_token',\"VARCHAR(255) DEFAULT NULL\",           $output, $errors);\n    }\n\n    // --- mail_log ---\n    if (!tableExists($pdo, 'mail_log')) {\n        $pdo->exec(\"CREATE TABLE mail_log (\n            id INT NOT NULL AUTO_INCREMENT,\n            email VARCHAR(255) NOT NULL,\n            sent_at DATETIME NOT NULL,\n            type ENUM('verification','reset','test') NOT NULL,\n            PRIMARY KEY(id)\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci\");\n        $output[] = \"mail_log table created.\";\n    } else {\n        ensureColumn($pdo, 'mail_log', 'id',      \"INT NOT NULL AUTO_INCREMENT\",      $output, $errors);\n        ensureColumn($pdo, 'mail_log', 'email',   \"VARCHAR(255) NOT NULL\",            $output, $errors);\n        ensureColumn($pdo, 'mail_log', 'sent_at', \"DATETIME NOT NULL\",                $output, $errors);\n        ensureColumn($pdo, 'mail_log', 'type',    \"ENUM('verification','reset','test') NOT NULL\", $output, $errors);\n    }\n\n    // --- pages (new schema: location/nav_parent/sort_order/is_active) ---\n    if (!tableExists($pdo, 'pages')) {\n        $pdo->exec(\"CREATE TABLE pages (\n            id INT NOT NULL AUTO_INCREMENT,\n            last_date DATETIME NOT NULL,\n            page_name VARCHAR(255) NOT NULL,\n            page_title MEDIUMTEXT NOT NULL,\n            page_content LONGTEXT,\n            location ENUM('','header','footer','both') NOT NULL DEFAULT '',\n            nav_parent INT DEFAULT NULL,\n            sort_order INT NOT NULL DEFAULT 0,\n            is_active TINYINT(1) NOT NULL DEFAULT 1,\n            PRIMARY KEY(id),\n            KEY idx_pages_location (location),\n            KEY idx_pages_navparent (nav_parent),\n            KEY idx_pages_active (is_active),\n            CONSTRAINT fk_pages_navparent FOREIGN KEY (nav_parent) REFERENCES pages(id) ON DELETE SET NULL\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci\");\n        $output[] = \"pages table created.\";\n\n        // Seed default pages (footer)\n        $ins = $pdo->prepare(\"INSERT INTO pages (last_date, page_name, page_title, page_content, location, nav_parent, sort_order, is_active)\n            VALUES \n            (:d1, 'contact', 'Contact', :c1, 'footer', NULL, 0, 1),\n            (:d2, 'terms',   'Terms of Service', :c2, 'footer', NULL, 1, 1)\");\n        $ins->execute([\n            ':d1' => $date,\n            ':d2' => $date,\n            ':c1' => '<h1>Contact Us</h1><p>Email: <a href=\"mailto:admin@example.com\">admin@example.com</a></p>',\n            ':c2' => '<h1>Terms of Service</h1><p>Replace this with your actual terms.</p>'\n        ]);\n        $output[] = \"Default Contact and Terms of Service pages inserted.\";\n    } else {\n        ensureColumn($pdo, 'pages', 'id',           \"INT NOT NULL AUTO_INCREMENT\",                                $output, $errors);\n        ensureColumn($pdo, 'pages', 'last_date',    \"DATETIME NOT NULL\",                                           $output, $errors);\n        ensureColumn($pdo, 'pages', 'page_name',    \"VARCHAR(255) NOT NULL\",                                       $output, $errors);\n        ensureColumn($pdo, 'pages', 'page_title',   \"MEDIUMTEXT NOT NULL\",                                         $output, $errors);\n        ensureColumn($pdo, 'pages', 'page_content', \"LONGTEXT\",                                                    $output, $errors);\n        ensureColumn($pdo, 'pages', 'location',     \"ENUM('','header','footer','both') NOT NULL DEFAULT ''\",       $output, $errors);\n        ensureColumn($pdo, 'pages', 'nav_parent',   \"INT DEFAULT NULL\",                                            $output, $errors);\n        ensureColumn($pdo, 'pages', 'sort_order',   \"INT NOT NULL DEFAULT 0\",                                      $output, $errors);\n        ensureColumn($pdo, 'pages', 'is_active',    \"TINYINT(1) NOT NULL DEFAULT 1\",                               $output, $errors);\n\n        if (!indexExists($pdo, 'pages', 'idx_pages_location')) {\n            try { $pdo->exec(\"ALTER TABLE pages ADD KEY idx_pages_location (location)\"); } catch (PDOException $e) { error_log($e->getMessage()); }\n        }\n        if (!indexExists($pdo, 'pages', 'idx_pages_navparent')) {\n            try { $pdo->exec(\"ALTER TABLE pages ADD KEY idx_pages_navparent (nav_parent)\"); } catch (PDOException $e) { error_log($e->getMessage()); }\n        }\n        if (!indexExists($pdo, 'pages', 'idx_pages_active')) {\n            try { $pdo->exec(\"ALTER TABLE pages ADD KEY idx_pages_active (is_active)\"); } catch (PDOException $e) { error_log($e->getMessage()); }\n        }\n        if (!fkExists($pdo, 'pages', 'fk_pages_navparent')) {\n            try { $pdo->exec(\"ALTER TABLE pages ADD CONSTRAINT fk_pages_navparent FOREIGN KEY (nav_parent) REFERENCES pages(id) ON DELETE SET NULL\"); } catch (PDOException $e) { error_log($e->getMessage()); }\n        }\n\n        // Seed defaults if missing\n        $needSeed = false;\n        $chk = $pdo->query(\"SELECT COUNT(*) FROM pages WHERE page_name IN ('contact','terms')\");\n        if ($chk && (int)$chk->fetchColumn() < 2) $needSeed = true;\n        if ($needSeed) {\n            $ins = $pdo->prepare(\"INSERT IGNORE INTO pages (last_date, page_name, page_title, page_content, location, nav_parent, sort_order, is_active)\n                VALUES \n                (:d1, 'contact', 'Contact', :c1, 'footer', NULL, 0, 1),\n                (:d2, 'terms',   'Terms of Service', :c2, 'footer', NULL, 1, 1)\");\n            $ins->execute([\n                ':d1' => $date,\n                ':d2' => $date,\n                ':c1' => '<h1>Contact Us</h1><p>Email: <a href=\"mailto:admin@example.com\">admin@example.com</a></p>',\n                ':c2' => '<h1>Terms of Service</h1><p>Replace this with your actual terms.</p>'\n            ]);\n            $output[] = \"Default Contact/Terms pages ensured.\";\n        }\n    }\n\n    // --- page_view ---\n    if (!tableExists($pdo, 'page_view')) {\n        $pdo->exec(\"CREATE TABLE page_view (\n            id INT NOT NULL AUTO_INCREMENT,\n            date DATE NOT NULL,\n            tpage INT UNSIGNED NOT NULL DEFAULT 0,\n            tvisit INT UNSIGNED NOT NULL DEFAULT 0,\n            PRIMARY KEY(id)\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci\");\n        $output[] = \"page_view table created.\";\n    } else {\n        ensureColumn($pdo, 'page_view', 'id',     \"INT NOT NULL AUTO_INCREMENT\", $output, $errors);\n        ensureColumn($pdo, 'page_view', 'date',   \"DATE NOT NULL\",               $output, $errors);\n        ensureColumn($pdo, 'page_view', 'tpage',  \"INT UNSIGNED NOT NULL DEFAULT 0\", $output, $errors);\n        ensureColumn($pdo, 'page_view', 'tvisit', \"INT UNSIGNED NOT NULL DEFAULT 0\", $output, $errors);\n    }\n\n    // --- ads ---\n    if (!tableExists($pdo, 'ads')) {\n        $pdo->exec(\"CREATE TABLE ads (\n            id INT NOT NULL AUTO_INCREMENT,\n            text_ads TEXT,\n            ads_1 TEXT,\n            ads_2 TEXT,\n            PRIMARY KEY(id)\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci\");\n        $pdo->exec(\"INSERT INTO ads (text_ads, ads_1, ads_2) VALUES ('','','')\");\n        $output[] = \"ads table created and seeded.\";\n    } else {\n        ensureColumn($pdo, 'ads', 'id',       \"INT NOT NULL AUTO_INCREMENT\", $output, $errors);\n        ensureColumn($pdo, 'ads', 'text_ads', \"TEXT\",                        $output, $errors);\n        ensureColumn($pdo, 'ads', 'ads_1',    \"TEXT\",                        $output, $errors);\n        ensureColumn($pdo, 'ads', 'ads_2',    \"TEXT\",                        $output, $errors);\n    }\n\n    // --- sitemap_options ---\n    if (!tableExists($pdo, 'sitemap_options')) {\n        $pdo->exec(\"CREATE TABLE sitemap_options (\n            id INT NOT NULL AUTO_INCREMENT,\n            priority  VARCHAR(10) NOT NULL DEFAULT '0.9',\n            changefreq VARCHAR(20) NOT NULL DEFAULT 'daily',\n            PRIMARY KEY(id)\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci\");\n        $pdo->exec(\"INSERT INTO sitemap_options (priority, changefreq) VALUES ('0.9','daily')\");\n        $output[] = \"sitemap_options table created and seeded.\";\n    } else {\n        ensureColumn($pdo, 'sitemap_options', 'id',        \"INT NOT NULL AUTO_INCREMENT\",     $output, $errors);\n        ensureColumn($pdo, 'sitemap_options', 'priority',  \"VARCHAR(10) NOT NULL DEFAULT '0.9'\", $output, $errors);\n        ensureColumn($pdo, 'sitemap_options', 'changefreq',\"VARCHAR(20) NOT NULL DEFAULT 'daily'\", $output, $errors);\n    }\n\n    // --- captcha (add recaptcha_version enum) ---\n    if (!tableExists($pdo, 'captcha')) {\n        $pdo->exec(\"CREATE TABLE captcha (\n            id INT NOT NULL AUTO_INCREMENT,\n            cap_e VARCHAR(10) NOT NULL DEFAULT 'off',\n            mode VARCHAR(50) NOT NULL DEFAULT 'Normal',\n            recaptcha_version ENUM('v2','v3') DEFAULT 'v2',\n            mul VARCHAR(10) NOT NULL DEFAULT 'off',\n            allowed TEXT NOT NULL,\n            color VARCHAR(7) NOT NULL DEFAULT '#000000',\n            recaptcha_sitekey TEXT,\n            recaptcha_secretkey TEXT,\n            PRIMARY KEY(id)\n        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci\");\n        $pdo->exec(\"INSERT INTO captcha (cap_e, mode, recaptcha_version, mul, allowed, color, recaptcha_sitekey, recaptcha_secretkey)\n            VALUES ('off','Normal','v2','off','ABCDEFGHIJKLMNOPQRSTUVYXYZabcdefghijklmnopqrstuvwxyz0123456789','#000000','','')\");\n        $output[] = \"captcha table created and seeded.\";\n    } else {\n        ensureColumn($pdo, 'captcha', 'id',                 \"INT NOT NULL AUTO_INCREMENT\",          $output, $errors);\n        ensureColumn($pdo, 'captcha', 'cap_e',              \"VARCHAR(10) NOT NULL DEFAULT 'off'\",   $output, $errors);\n        ensureColumn($pdo, 'captcha', 'mode',               \"VARCHAR(50) NOT NULL DEFAULT 'Normal'\",$output, $errors);\n        ensureColumn($pdo, 'captcha', 'recaptcha_version',  \"ENUM('v2','v3') DEFAULT 'v2'\",         $output, $errors);\n        ensureColumn($pdo, 'captcha', 'mul',                \"VARCHAR(10) NOT NULL DEFAULT 'off'\",   $output, $errors);\n        ensureColumn($pdo, 'captcha', 'allowed',            \"TEXT NOT NULL\",                         $output, $errors);\n        ensureColumn($pdo, 'captcha', 'color',              \"VARCHAR(7) NOT NULL DEFAULT '#000000'\", $output, $errors);\n        ensureColumn($pdo, 'captcha', 'recaptcha_sitekey',  \"TEXT\",                                   $output, $errors);\n        ensureColumn($pdo, 'captcha', 'recaptcha_secretkey',\"TEXT\",                                   $output, $errors);\n    }\n\n    // Post-install message\n    $post_install_message = 'Installation and schema update completed successfully. ';\n    if (isset($enablegoog) && $enablegoog === 'yes') {\n        $post_install_message .= \"Configure Google OAuth at <a href=\\\"https://console.developers.google.com\\\" target=\\\"_blank\\\">Google Cloud Console</a> with redirect URI: {$baseurl}oauth/google.php and scopes: openid, userinfo.profile, userinfo.email. Update G_CLIENT_ID and G_CLIENT_SECRET in config.php. \";\n    }\n    if (isset($enablefb) && $enablefb === 'yes') {\n        $post_install_message .= \"Configure Facebook OAuth at <a href=\\\"https://developers.facebook.com\\\" target=\\\"_blank\\\">Facebook Developer Portal</a> with redirect URI: {$baseurl}oauth/facebook.php. Update FB_APP_ID and FB_APP_SECRET in config.php. \";\n    }\n    if (isset($enablesmtp) && $enablesmtp === 'yes') {\n        $post_install_message .= \"Configure Gmail SMTP OAuth at <a href=\\\"https://console.developers.google.com\\\" target=\\\"_blank\\\">Google Cloud Console</a> with redirect URI: {$baseurl}oauth/google_smtp.php and scope: gmail.send. Set credentials in admin/configuration.php. \";\n    }\n    $post_install_message .= 'Remove the /install directory and set secure permissions on config.php (chmod 600). Proceed to the <a href=\"../\" class=\"btn btn-primary\">main site</a> or your <a href=\"../admin\" class=\"btn btn-primary\">dashboard</a>.';\n\n    if (!empty($errors)) {\n        $post_install_message .= '<br>Warnings: ' . implode('<br>', $errors);\n    }\n\n    ob_end_clean();\n    echo json_encode([\n        'status'  => 'success',\n        'message' => implode('<br>', $output) . '<br>' . $post_install_message\n    ]);\n} catch (PDOException $e) {\n    ob_end_clean();\n    error_log(\"install.php: Installation error: \" . $e->getMessage());\n    echo json_encode(['status' => 'error', 'message' => 'Installation failed: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8')]);\n} catch (Exception $e) {\n    ob_end_clean();\n    error_log(\"install.php: Unexpected error: \" . $e->getMessage());\n    echo json_encode(['status' => 'error', 'message' => 'Unexpected error: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8')]);\n} finally {\n    $pdo = null;\n}\n?>\n"
  },
  {
    "path": "install/test.php",
    "content": "<?php\r\n/*\r\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\r\n * demo: https://paste.boxlabs.uk/\r\n *\r\n * https://phpaste.sourceforge.io/\r\n *\r\n * This program is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 3\r\n * of the License, or (at your option) any later version.\r\n * \r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License in LICENCE for more details.\r\n */\r\n$host = 'localhost'; // Replace with your hostname\r\n$dbname = 'database_name'; // Replace with your database name\r\n$user = 'user_name'; // Replace with your username\r\n$pass = 'password'; // Replace with your password\r\n\r\ntry {\r\n    $dsn = \"mysql:host=$host;dbname=$dbname;charset=utf8mb4\";\r\n    $pdo = new PDO($dsn, $user, $pass);\r\n    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\r\n    echo \"Connection successful!\";\r\n} catch (PDOException $e) {\r\n    echo \"Connection failed: \" . $e->getMessage();\r\n}\r\n?>"
  },
  {
    "path": "install/test_configure.php",
    "content": "<?php\r\n/*\r\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\r\n * demo: https://paste.boxlabs.uk/\r\n *\r\n * https://phpaste.sourceforge.io/\r\n *\r\n * This program is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 3\r\n * of the License, or (at your option) any later version.\r\n * \r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License in LICENCE for more details.\r\n */\r\n  $_POST['data_host'] = 'localhost';\r\n  $_POST['data_name'] = 'database_name';\r\n  $_POST['data_user'] = 'user_name';\r\n  $_POST['data_pass'] = 'password';\r\n  $_POST['data_sec'] = bin2hex(random_bytes(16));\r\n  require_once 'configure.php';\r\n  ?>"
  },
  {
    "path": "langs/bg.php",
    "content": "<?php\n/*\n * Language File: Bulgarian\n * Translated by Plamen Vasilev <p.vasileff@gmail.com> (Oct, 2017)\n */\n$lang = array();\n$lang['banned']         = \"Достъпа ви до \" . $site_name . \"е ограничен\";\n$lang['expired']\t\t= \"Документа, който се опитваш да достъпиш е изтекъл.\";\n$lang['guestwelcome']\t= $site_name . \" ти позволява да публикуваш текст &amp; код.\";\n$lang['pleaseregister'] = \"<br /><br /> <a class=\\\"btn btn-default\\\" data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Влез</a> или се <a class=\\\"btn btn-default\\\" data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Регистрирай</a> за да публикуваш съдържание. Безплатно е.\";\n$lang['registertoedit'] = \"<a class=\\\"btn btn-default\\\" data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Влез</a> или се <a class=\\\"btn btn-default\\\" data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Регистрирай</a> за да редактираш или задържиш това съдържание.\";\n$lang['editpaste']\t\t= \"Редактирай\";\n$lang['forkpaste']\t\t= \"Задръж\";\n$lang['guestmsgtitle']\t= $site_name . \" е място за публикуване на код или текст за по-лесно отстраняване на грешки.\";\n$lang['guestmsgbody']\t= \"<a data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Влез</a> или се <a data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Регистрай</a> за да редактираш, изтриваш или преглеждаш хронология на твоето публикувано съдържание\";\n$lang['emptypastebin']\t= \"Няма публикувано съдържание\";\n$lang['siteprivate']\t= \"Този документ е частен.\";\n$lang['image_wrong']    = \"Wrong captcha.\";\n$lang['missing-input-response']   = \"The reCAPTCHA response parameter is missing. Please verify your PASTE settings.\";\n$lang['missing-input-secret']     = \"The reCAPTCHA secret parameter is missing. Please add it to your PASTE settings.\";\n$lang['missing-input-response']   = \"The reCAPTCHA response parameter is invalid. Please try to complete the reCAPTCHA again.\";\n$lang['invalid-input-secret']     = \"The reCAPTCHA secret parameter is invalid or malformed. Please double check your PASTE settings.\";\n$lang['empty_paste']\t= \"Не може да добавите публикацията без съдържание\";\n$lang['large_paste']\t= \"Вашата публикация е прекалено голяма. Максималния размер е \" . $pastelimit . \"MB\";\n$lang['paste_db_error'] = \"Unable to post to database.\";\n$lang['error']          = \"Something went wrong.\";\n$lang['archive']        = \"Pastes Archive\";\n$lang['contact']        = \"Contact Us\";\n$lang['full_name']      = \"Your full name is required.\";\n$lang['email']          = \"Your email address is required.\";\n$lang['email_invalid']  = \"Your email address seems to be invalid.\";\n$lang['message']        = \"Your message is required.\";\n$lang['login/register'] = \"Вход/Регистрация\";\n$lang['rememberme']\t\t= \"Keep me signed in.\";\n$lang['mail_acc_con']   = \"$site_name Account Confirmation\";\n$lang['mail_suc']       = \"На имейла адреса ти е изпратен код за верификация.\";\n$lang['email_ver']      = \"Имейла вече е бил потвърден.\";\n$lang['email_not']      = \"Имейла не е намерен.\";\n$lang['pass_change']    = \"Паролата е променена успешно и е изпратена на имейла ти.\";\n$lang['notverified']\t= \"Акаунта не е верифициран.\";\n$lang['incorrect']\t\t= \"Невалидни Потребител/Парола\";\n$lang['missingfields']\t= \"All fields must be filled out.\";\n$lang['userexists']     = \"Това потребителско име вече се използва\";\n$lang['emailexists']\t= \"Този имейл адрес вече съществува в системата\";\n$lang['registered']\t\t= \"Акаунтът ти беше регистриран успешно\";\n$lang['usrinvalid']\t\t= \"Your username can only contain letters or numbers.\";\n$lang['mypastes']\t\t= \"My Pastes\";\n$lang['pastedeleted']\t= \"Paste deleted.\";\n$lang['databaseerror']\t= \"Unable to post to database.\";\n$lang['userchanged']\t= \"Username changed successfully.\";\n$lang['usernotvalid']\t= \"Username not vaild.\";\n$lang['privatepaste']\t= \"This is a private paste.\";\n$lang['wrongpassword']\t= 'Грешна парола.';\n$lang['pwdprotected']\t= 'Съдържание с парола';\n$lang['notfound']\t\t= \"Not found\";\n$lang['wrongpwd']\t\t= \"Въведената парола е грешна. Опитай отново.\";\n$lang['myprofile']\t\t= \"My Profile\";\n$lang['profileerror']\t= \"Unable to update the profile information \";\n$lang['profileupdated']\t= \"Your profile information is updated \";\n$lang['oldpasswrong']\t= \"Your old password is wrong.\";\n$lang['archives']\t\t= \"Pastes Archive\";\n$lang['archivestitle']  = \"This page contains the most recently created 100 public pastes.\";\n$lang['pastetitle']\t\t= \"Paste Title\";\n$lang['pastetime']\t\t= \"Paste Time\";\n$lang['pastesyntax']\t= \"Paste Syntax\";\n$lang['pasteviews']\t\t= \"Paste Views\";\n$lang['wentwrong']\t\t= \"Something went wrong.\";\n$lang['versent']\t\t= \"A verification email has been sent to your email address.\";\n$lang['modpaste']\t\t= \"Modify Paste\";\n$lang['newpaste']\t\t= \"New Paste\";\n$lang['highlighting']\t= \"Syntax Highlighting\";\n$lang['expiration']\t\t= \"Paste Expiration\";\n$lang['visibility']\t\t= \"Paste Visibility\";\n$lang['pwopt']\t\t\t= \"Password (Optional)\";\n$lang['encrypt']\t\t= \"Encrypt in database\";\n$lang['entercode']\t\t= \"Enter Code\";\n$lang['almostthere']\t= \"Almost there. One more step to go.\";\n$lang['username']\t\t= \"Username\";\n$lang['autogen']\t\t= \"Auto generated name\";\n$lang['setuser']\t\t= \"Set your Username\";\n$lang['keepuser']\t\t= \"Keep autogenerated name\";\n$lang['enterpwd']\t\t= \"Enter the password\";\n$lang['totalpastes']\t= \"Total Pastes:\";\n$lang['membtype']\t\t= \"Membership Type:\";\n$lang['email']\t\t\t= \"Email\";\n$lang['fullname']\t\t= \"Full Name\";\n$lang['chgpwd']\t\t\t= \"Change Password\";\n$lang['curpwd']\t\t\t= \"Current Password\";\n$lang['newpwd']\t\t\t= \"New Password\";\n$lang['confpwd']\t\t= \"Confirm Password\";\n$lang['mypastes']\t\t= \"My Pastes\";\n$lang['viewpastes']\t\t= \"View all my pastes\";\n$lang['recentpastes']\t= \"Recent Pastes\";\n$lang['user_public_pastes'] = \"'s Pastes\";\n$lang['yourpastes']\t\t= \"Your Pastes\";\n$lang['mypastestitle']\t= \"All of your pastes, in one place.\";\n$lang['delete']\t\t\t= \"Delete\";\n$lang['highlighted']\t= \"The text below is selected, press Ctrl+C to copy to your clipboard. (&#8984;+C on Mac)\";\n$lang['newpaste']\t\t= \"New Paste\";\n$lang['download']\t\t= \"Download\";\n$lang['showlineno']\t\t= \"Покажи/Скрий номерата на редовете\";\n$lang['copyto']\t\t\t= \"Копирай съдържанието в клипборда\";\n$lang['rawpaste']\t\t= \"Raw Paste\";\n$lang['membersince']    = \"Joined: \";\n$lang['delete_error_invalid'] = \"Error: Paste not deleted because it does not exist or you do not own the paste.\";\n$lang['not_logged_in']  = \"Грешка: Нужно е да си логнат в системата, за да направиш това.\";\n$lang['public']         = \"Public\";\n$lang['unlisted']       = \"Unlisted\";\n$lang['private']        = \"Private\";\n$lang['hello']\t\t\t= \"Hello\";\n$lang['profile-message'] = \"This is your profile page where you can manage your pastes.<br /> All of your public, private and unlisted pastes will be shown here. You can also delete your pastes from this page. If other users visit your page they will only see pastes you have set public.\";\n$lang['profile-stats']\t= \"Some of your statistics:\";\n$lang['profile-total-pastes'] = \"Total Pastes:\";\n$lang['profile-total-pub']\t= \"Total public pastes:\";\n$lang['profile-total-unl']\t= \"Total unlisted pastes:\";\n$lang['profile-total-pri']\t= \"Total private pastes:\";\n$lang['profile-total-views'] = \"Total views of all your pastes:\";\n$lang['embed-hosted-by'] = \"hosted by\";\n$lang['view-raw']\t\t= \"Покажи в необработен текст\";\n?>\n"
  },
  {
    "path": "langs/br.php",
    "content": "<?php\n/*\n * Language File: Portuguese\n */\n\n$lang = array();\n\n$lang['banned']         = \"Você foi banido do \" . $site_name;\n$lang['expired']\t\t= \"O paste que você procura não existe mais.\";\n$lang['guestwelcome']\t= $site_name . \" é um lugar para guardar e compartilhar seus pastes e codigos.\";\n$lang['pleaseregister'] = \"<br /><br /> <a class=\\\"btn btn-default\\\" data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Entrar</a> ou <a class=\\\"btn btn-default\\\" data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Cadastre-se</a> para criar um novo paste.\";\n$lang['registertoedit'] = \"<a class=\\\"btn btn-default\\\" data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Entrre</a> ou <a class=\\\"btn btn-default\\\" data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Cadastre-se</a> para editar ou duplicar este paste.\";\n$lang['editpaste']\t\t= \"Editar\";\n$lang['forkpaste']\t\t= \"Duplicar\";\n$lang['guestmsgtitle']\t= $site_name . \", um lugar para salvar e compartilhar textos e codigos.\";\n$lang['guestmsgbody']\t= \"<a data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Entrar</a> ou <a data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Cadastre-se</a> para editar e acomparnhar os seus pastes.\";\n$lang['emptypastebin']\t= \"Este pastebin está vazio\";\n$lang['siteprivate']\t= \"Este é um paste privado.\";\n$lang['image_wrong']    = \"Captha invalido.\";\n$lang['missing-input-response']   = \"O parametro de resposta do reCapcha está faltando. Por favor verifique as configurações do seu paste.\";\n$lang['missing-input-secret']     = \"O parametro de seguredo do reCapcha está faltando. Por favor verifique as configurações do seu paste.\";\n$lang['missing-input-response']   = \"O parametro de resposta do reCapcha é inválido. Por favor tente novamente.\";\n$lang['invalid-input-secret']     = \"O parametro de seguredo do reCapcha está faltando ou é inválido. Please double check your PASTE settings.\";\n$lang['empty_paste']\t= \"Você não pode publicar um paste vazio.\";\n$lang['large_paste']\t= \"O seu paste é muito grande. O tamanho maximo é: \" . $pastelimit . \"MB\";\n$lang['paste_db_error'] = \"Não conseguimos eviar seu paste para o banco de dados.\";\n$lang['error']          = \"Algo deu errado.\";\n$lang['archive']        = \"Arquivo de pastes\";\n$lang['contact']        = \"Entre em contato\";\n$lang['full_name']      = \"É nescessario inserir o seu nome completo.\";\n$lang['email']          = \"É nescessario inserir o seu email.\";\n$lang['email_invalid']  = \"O seu endereçõ de email não parece ser válido.\";\n$lang['message']        = \"É nescessario inserir uma mensagem válida.\";\n$lang['login/register'] = \"Entrar/Cadastro\";\n$lang['rememberme']\t\t= \"Manter me logado.\";\n$lang['mail_acc_con']   = \"Informações da conta em $site_name\";\n$lang['mail_suc']       = \"O seu codigo de verificção foi enviado ao email preenchido.\";\n$lang['email_ver']      = \"Email já verificado.\";\n$lang['email_not']      = \"Email não encontrado, já fez o seu cadastro?.\";\n$lang['pass_change']    = \"Senha alterada com sucesso, a enviamos para o seu email.\";\n$lang['notverified']\t= \"Conta não verificada.\";\n$lang['incorrect']\t\t= \"Senha ou usuario incorretos\";\n$lang['missingfields']\t= \"Todos os campos devem ser preenchidos.\";\n$lang['userexists']     = \"Nome de usuario já em uso.\";\n$lang['emailexists']\t= \"Email já em uso.\";\n$lang['registered']\t\t= \"Conta cadastrada com sucesso.\";\n$lang['usrinvalid']\t\t= \"Seu nome de usuario deve conter apenas letras e numeros.\";\n$lang['mypastes']\t\t= \"Meus pastes\";\n$lang['pastedeleted']\t= \"Paste apagado.\";\n$lang['databaseerror']\t= \"Incapaz de enviar para o banco de dados.\";\n$lang['userchanged']\t= \"Nome de usuario alterado com sucesso.\";\n$lang['usernotvalid']\t= \"Nome de usuario inválido.\";\n$lang['privatepaste']\t= \"Este paste é privado.\";\n$lang['wrongpassword']\t= 'Senha incorreta.';\n$lang['pwdprotected']\t= 'Testo protegido por senha';\n$lang['notfound']\t\t= \"Não encontrado\";\n$lang['wrongpwd']\t\t= \"Senha inválida, tente novamente.\";\n$lang['myprofile']\t\t= \"Meu perfil\";\n$lang['profileerror']\t= \"Incapaz de atualizar as informações do perfil.\";\n$lang['profileupdated']\t= \"Informações do perfil atualizadas.\";\n$lang['oldpasswrong']\t= \"Senha antiga incorreta.\";\n$lang['archives']\t\t= \"Arquivo de pastes\";\n$lang['archivestitle']  = \"Esta pagina contém os 100 pastes mais recentes.\";\n$lang['pastetitle']\t\t= \"Nome do paste\";\n$lang['pastetime']\t\t= \"Momento de publicação do paste\";\n$lang['pastesyntax']\t= \"Sintaxe do paste\";\n$lang['pasteviews']\t\t= \"Visualizações do paste\";\n$lang['wentwrong']\t\t= \"Algo deu errado.\";\n$lang['versent']\t\t= \"Um email de verificação foi enviado ao seu endereço de email.\";\n$lang['modpaste']\t\t= \"Modificar paste\";\n$lang['newpaste']\t\t= \"Novo paste\";\n$lang['highlighting']\t= \"Destaque de síntaxe\";\n$lang['expiration']\t\t= \"Expiraçaão do paste\";\n$lang['visibility']\t\t= \"Visibilidade do paste\";\n$lang['pwopt']\t\t\t= \"Senha (Opcional)\";\n$lang['encrypt']\t\t= \"Encriptar no banco de dados\";\n$lang['entercode']\t\t= \"Entre o codigo\";\n$lang['almostthere']\t= \"Quase lá, apenas mais um passo.\";\n$lang['username']\t\t= \"Nome de usuario\";\n$lang['autogen']\t\t= \"Nome Gerado automaticamente\";\n$lang['setuser']\t\t= \"Defina o seu nome de usuario\";\n$lang['keepuser']\t\t= \"Manter nome gerado automaticamente\";\n$lang['enterpwd']\t\t= \"Entre sua senha\";\n$lang['totalpastes']\t= \"Total de pastes:\";\n$lang['membtype']\t\t= \"Tipo de Membro:\";\n$lang['email']\t\t\t= \"Email\";\n$lang['fullname']\t\t= \"Nome completo\";\n$lang['chgpwd']\t\t\t= \"Mudar senha\";\n$lang['curpwd']\t\t\t= \"Senha atual\";\n$lang['newpwd']\t\t\t= \"Nova senha\";\n$lang['confpwd']\t\t= \"Confirmar senha\";\n$lang['mypastes']\t\t= \"Meus pastes\";\n$lang['viewpastes']\t\t= \"Ver todos os meus pastes\";\n$lang['recentpastes']\t= \"pastes recentes\";\n$lang['user_public_pastes'] = \" publicou:\";\n$lang['yourpastes']\t\t= \"Seus pastes\";\n$lang['mypastestitle']\t= \"Todos os seus pastes, em um só lugar.\";\n$lang['delete']\t\t\t= \"Apagar\";\n$lang['highlighted']\t= \"O paste abaixo está selecionado, pressione Ctrl+C Para copiar para a area de transferencia. (&#8984;+C no mac)\";\n$lang['newpaste']\t\t= \"Novo paste\";\n$lang['download']\t\t= \"Baixar\";\n$lang['showlineno']\t\t= \"Mostrar/Esconder numero da linha\";\n$lang['copyto']\t\t\t= \"Copiar paste para a area de transferência\";\n$lang['rawpaste']\t\t= \"Novo texto bruto\";\n$lang['membersince']    = \"Se cadastrou em: \";\n$lang['delete_error_invalid'] = \"Erro: paste não foi apagado por que você não é dono dele ou ele nao existe mais.\";\n$lang['not_logged_in']  = \"Erro: Você deve estar logado para poder fazer isso.\";\n$lang['public']         = \"Publico\";\n$lang['unlisted']       = \"Não listado\";\n$lang['private']        = \"Privado\";\n$lang['hello']\t\t\t= \"Olá\";\n$lang['profile-message'] = \"Esta é a pagina do seu perfil, onde você pode ver e adminnistrar todos os seus pastes.<br /> Todos os seus pastes, publicos, privados e não listados serão mostrados aqui. Você também pode deletar os seus pastes nesta pagina. Se outros usuários acessarem esta pagina eles verão apenas seus pastes públicos.\";\n$lang['profile-stats']\t= \"Algumas de suas estatísticas:\";\n$lang['profile-total-pastes'] = \"Numero de pastes:\";\n$lang['profile-total-pub']\t= \"Numero de pastes públicos:\";\n$lang['profile-total-unl']\t= \"Numero de pastes não listados:\";\n$lang['profile-total-pri']\t= \"Numero de pastes privados:\";\n$lang['profile-total-views'] = \"Numero de visualizações nos seus pastes:\";\n$lang['embed-hosted-by'] = \"hospedado por\";\n$lang['view-raw']\t\t= \"Ver texto bruto\";\n?>\n"
  },
  {
    "path": "langs/de.php",
    "content": "<?php\n/*\n * German (de) translation generated from English base.\n * NOTE: Review and adjust wording/grammar where appropriate.\n */\n$lang = array();\n$lang['banned'] = \"You have been banned from \\\" . $site_name;\n$lang['expired']        = \\\"The paste you're looking for has expired.\";\n$lang['pleaseregister'] = \"<br><br> <a class=\\\\\\\"btn btn-default\\\\\\\" href=\\\\\\\"login.php\\\\\\\">Login</a> or <a class=\\\\\\\"btn btn-default\\\\\\\" href=\\\\\\\"login.php?action=signup\\\\\\\">Register</a> to submit a new paste. It's free.\";\n$lang['registertoedit'] = \"<a class=\\\\\\\"btn btn-default\\\\\\\" href=\\\\\\\"login.php\\\\\\\">Login</a> or <a class=\\\\\\\"btn btn-default\\\\\\\" href=\\\\\\\"login.php?action=signup\\\\\\\">Register</a> to edit or fork this paste. It's free.\";\n$lang['editpaste'] = \"Edit\";\n$lang['forkpaste'] = \"Fork\";\n$lang['guestmsgbody'] = \"<a href=\\\\\\\"login.php\\\\\\\">Login</a> or <a href=\\\\\\\"login.php?action=signup\\\\\\\">Register</a> to edit, delete and keep track of your pastes and more.\";\n$lang['emptypastebin'] = \"There are no pastes to show.\";\n$lang['siteprivate'] = \"This pastebin is private. <a class=\\\\\\\"btn btn-default\\\\\\\" href=\\\\\\\"login.php\\\\\\\">Login</a>\";\n$lang['image_wrong'] = \"Wrong captcha.\";\n$lang['missing-input-response'] = \"The reCAPTCHA response parameter is missing. Please verify your PASTE settings.\";\n$lang['missing-input-secret'] = \"The reCAPTCHA secret parameter is missing. Please add it to your PASTE settings.\";\n$lang['invalid-input-response'] = \"The reCAPTCHA response parameter is invalid. Please try to complete the reCAPTCHA again.\";\n$lang['invalid-input-secret'] = \"The reCAPTCHA secret parameter is invalid or malformed. Please double check your PASTE settings.\";\n$lang['empty_paste'] = \"You cannot post an empty paste.\";\n$lang['large_paste'] = \"Your paste is too large. Max size is \\\" . $pastelimit . \\\"MB\";\n$lang['paste_db_error'] = \"Unable to post to database.\";\n$lang['error'] = \"Something went wrong.\";\n$lang['archive'] = \"Archive\";\n$lang['archives'] = \"Pastes Archive\";\n$lang['archivestitle'] = \"This page contains the most recently created 100 public pastes.\";\n$lang['contact'] = \"Contact Us\";\n$lang['full_name'] = \"Full Name\";\n$lang['email'] = \"Email\";\n$lang['email_invalid'] = \"Your email address seems to be invalid.\";\n$lang['message'] = \"Your message is required.\";\n$lang['login/register'] = \"Login or Register\";\n$lang['rememberme'] = \"Keep me signed in.\";\n$lang['mail_acc_con'] = \"$site_name Account Confirmation\";\n$lang['mail_suc'] = \"Verification code successfully sent to your email address.\";\n$lang['email_ver'] = \"Email already verified.\";\n$lang['email_not'] = \"Email not found.\";\n$lang['pass_change'] = \"Password changed successfully and sent to your email.\";\n$lang['notverified'] = \"Account not verified.\";\n$lang['incorrect'] = \"Incorrect User/Password\";\n$lang['missingfields'] = \"All fields must be filled out.\";\n$lang['userexists'] = \"Username already taken.\";\n$lang['emailexists'] = \"Email already registered.\";\n$lang['registered'] = \"Your account was successfully registered.\";\n$lang['usrinvalid'] = \"Your username can only contain letters or numbers.\";\n$lang['mypastes'] = \"My Pastes\";\n$lang['pastedeleted'] = \"Paste deleted.\";\n$lang['databaseerror'] = \"Unable to post to database.\";\n$lang['userchanged'] = \"Username changed successfully.\";\n$lang['usernotvalid'] = \"Username not valid.\";\n$lang['privatepaste'] = \"This is a private paste.\";\n$lang['wrongpassword'] = \"Wrong password.\";\n$lang['pwdprotected'] = \"Password protected paste\";\n$lang['notfound'] = \"Not found\";\n$lang['wrongpwd'] = \"Wrong password. Try again.\";\n$lang['myprofile'] = \"My Profile\";\n$lang['profileerror'] = \"Unable to update the profile information\";\n$lang['profileupdated'] = \"Your profile information is updated\";\n$lang['oldpasswrong'] = \"Your old password is wrong.\";\n$lang['pastetitle'] = \"Paste Title\";\n$lang['pastetime'] = \"Paste Time\";\n$lang['pastesyntax'] = \"Paste Syntax\";\n$lang['pasteviews'] = \"Paste Views\";\n$lang['wentwrong'] = \"Something went wrong.\";\n$lang['versent'] = \"A verification email has been sent to your email address.\";\n$lang['modpaste'] = \"Modify Paste\";\n$lang['newpaste'] = \"New Paste\";\n$lang['highlighting'] = \"Syntax Highlighting\";\n$lang['expiration'] = \"Paste Expiration\";\n$lang['visibility'] = \"Paste Visibility\";\n$lang['pwopt'] = \"Password (Optional)\";\n$lang['encrypt'] = \"All pastes are automatically encrypted with AES-256\";\n$lang['entercode'] = \"Enter Code\";\n$lang['almostthere'] = \"Almost there. One more step to go.\";\n$lang['username'] = \"Username\";\n$lang['autogen'] = \"Auto generated name\";\n$lang['setuser'] = \"Set your Username\";\n$lang['keepuser'] = \"Keep autogenerated name\";\n$lang['enterpwd'] = \"Enter the password\";\n$lang['totalpastes'] = \"Total Pastes:\";\n$lang['membtype'] = \"Membership Type:\";\n$lang['chgpwd'] = \"Change Password\";\n$lang['curpwd'] = \"Current Password\";\n$lang['newpwd'] = \"New Password\";\n$lang['confpwd'] = \"Confirm Password\";\n$lang['viewpastes'] = \"View all my pastes\";\n$lang['recentpastes'] = \"Recent Pastes\";\n$lang['user_public_pastes'] = \"'s Pastes\";\n$lang['yourpastes'] = \"Your Pastes\";\n$lang['mypastestitle'] = \"All of your pastes, in one place.\";\n$lang['delete'] = \"Delete\";\n$lang['highlighted'] = \"The text below is selected, press Ctrl+C to copy to your clipboard. (&#8984;+C on Mac)\";\n$lang['download'] = \"Download\";\n$lang['showlineno'] = \"Show/Hide line no.\";\n$lang['copyto'] = \"Copy text to clipboard\";\n$lang['rawpaste'] = \"Raw Paste\";\n$lang['membersince'] = \"Joined: \";\n$lang['delete_error_invalid'] = \"Error: Paste not deleted because it does not exist or you do not own the paste.\";\n$lang['not_logged_in'] = \"Error: You must be logged in to do that.\";\n$lang['public'] = \"Public\";\n$lang['unlisted'] = \"Unlisted\";\n$lang['private'] = \"Private\";\n$lang['hello'] = \"Hello\";\n$lang['profile-message'] = \"This is your profile page where you can manage your pastes. All of your public, private and unlisted pastes will be shown here. You can also delete your pastes from this page. If other users visit your page they will only see pastes you have set public.\";\n$lang['profile-stats'] = \"Some of your statistics:\";\n$lang['profile-total-pastes'] = \"Total Pastes:\";\n$lang['profile-total-pub'] = \"Total public pastes:\";\n$lang['profile-total-unl'] = \"Total unlisted pastes:\";\n$lang['profile-total-pri'] = \"Total private pastes:\";\n$lang['profile-total-views'] = \"Total views of all your pastes:\";\n$lang['embed-hosted-by'] = \"hosted by\";\n$lang['view-raw'] = \"View Raw\";\n$lang['my_account'] = \"My Account\";\n$lang['guest'] = \"Guest\";\n$lang['login'] = \"Login\";\n$lang['signup'] = \"Register\";\n$lang['forgot_password'] = \"Forgot Password\";\n$lang['resend_verification'] = \"Resend Verification Email\";\n$lang['or_login_with'] = \"Or login with\";\n$lang['login_with_google'] = \"Google\";\n$lang['login_with_facebook'] = \"Facebook\";\n$lang['already_have_account'] = \"Already have an account?\";\n$lang['reset_password'] = \"Reset Password\";\n$lang['new_password'] = \"New Password\";\n$lang['send_reset_link'] = \"Send Reset Link\";\n$lang['email_verified'] = \"Email verified successfully. You can now log in.\";\n$lang['invalid_code'] = \"Invalid or expired code.\";\n$lang['pass_reset'] = \"Password reset successful. You can now log in.\";\n$lang['mail_error'] = \"Failed to send email.\";\n$lang['settings'] = \"Settings\";\n$lang['logout'] = \"Logout\";\n$lang['49'] = \"49\";\n$lang['50'] = \"50\";\n$lang['account_suspended'] = \"Konto gesperrt\";\n$lang['ajax_error'] = \"Ajax-Fehler\";\n$lang['createpaste'] = \"Erstellen Paste\";\n$lang['email_not_verified'] = \"E-Mail Not Verified\";\n$lang['expired'] = \"Expired\";\n$lang['forgot'] = \"Forgot\";\n$lang['fullname'] = \"Fullname\";\n$lang['guestmsgtitle'] = \"Guestmsgtitle\";\n$lang['guestwelcome'] = \"Guestwelcome\";\n$lang['invalid_credentials'] = \"Ungültige Anmeldedaten\";\n$lang['invalid_email'] = \"Ungültige E-Mail\";\n$lang['invalid_reset_code'] = \"Ungültiger Zurücksetzungscode\";\n$lang['invalid_state'] = \"Ungültiger Status\";\n$lang['invalid_username'] = \"Invalid Username\";\n$lang['login_required'] = \"Login Required\";\n$lang['login_success'] = \"Login Success\";\n$lang['low_score'] = \"Low Score\";\n$lang['my-pastes'] = \"Mein Pastes\";\n$lang['no_results'] = \"No Results\";\n$lang['password'] = \"Password\";\n$lang['password_reset_success'] = \"Password Reset Success\";\n$lang['password_too_short'] = \"Password Too Short\";\n$lang['pastemember'] = \"Pastemember\";\n$lang['pastes'] = \"Pastes\";\n$lang['recaptcha_error'] = \"Recaptcha Error\";\n$lang['recaptcha_failed'] = \"Recaptcha Failed\";\n$lang['recaptcha_missing'] = \"Recaptcha Missing\";\n$lang['recaptcha_timeout'] = \"Recaptcha Timeout\";\n$lang['resend'] = \"Resend\";\n$lang['search'] = \"Suche\";\n$lang['search_results_for'] = \"Suche Results for\";\n$lang['signup_success'] = \"Signup Success\";\n$lang['sort'] = \"Sort\";\n$lang['sort_code_asc'] = \"Sort Code Asc\";\n$lang['sort_code_desc'] = \"Sort Code Desc\";\n$lang['sort_date_asc'] = \"Sort Datum Asc\";\n$lang['sort_date_desc'] = \"Sort Datum Desc\";\n$lang['sort_title_asc'] = \"Sort Titel Asc\";\n$lang['sort_title_desc'] = \"Sort Titel Desc\";\n$lang['sort_views_asc'] = \"Sort Aufrufe Asc\";\n$lang['sort_views_desc'] = \"Sort Aufrufe Desc\";\n$lang['submit_error'] = \"Submit Error\";\n$lang['user_exists'] = \"User Exists\";\n$lang['views'] = \"Aufrufe\";\n?>\n"
  },
  {
    "path": "langs/en.php",
    "content": "<?php\n/*\n * Language File: English\n *\n * Paste https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n\n$lang = array();\n\n$lang['banned'] = \"You have been banned from \" . $site_name;\n$lang['expired']        = \"The paste you're looking for has expired.\";\n$lang['pleaseregister'] = \"<br><br> <a class=\\\"btn btn-default\\\" href=\\\"login.php\\\">Login</a> or <a class=\\\"btn btn-default\\\" href=\\\"login.php?action=signup\\\">Register</a> to submit a new paste. It's free.\";\n$lang['registertoedit'] = \"<a class=\\\"btn btn-default\\\" href=\\\"login.php\\\">Login</a> or <a class=\\\"btn btn-default\\\" href=\\\"login.php?action=signup\\\">Register</a> to edit or fork this paste. It's free.\";\n$lang['editpaste'] = \"Edit\";\n$lang['forkpaste'] = \"Fork\";\n$lang['guestmsgbody'] = \"<a href=\\\"login.php\\\">Login</a> or <a href=\\\"login.php?action=signup\\\">Register</a> to edit, delete and keep track of your pastes and more.\";\n$lang['emptypastebin'] = \"There are no pastes to show.\";\n$lang['siteprivate'] = \"This pastebin is private. <a class=\\\"btn btn-default\\\" href=\\\"login.php\\\">Login</a>\";\n$lang['image_wrong'] = \"Wrong captcha.\";\n$lang['missing-input-response'] = \"The reCAPTCHA response parameter is missing. Please verify your PASTE settings.\";\n$lang['missing-input-secret'] = \"The reCAPTCHA secret parameter is missing. Please add it to your PASTE settings.\";\n$lang['invalid-input-response'] = \"The reCAPTCHA response parameter is invalid. Please try to complete the reCAPTCHA again.\";\n$lang['invalid-input-secret'] = \"The reCAPTCHA secret parameter is invalid or malformed. Please double check your PASTE settings.\";\n$lang['empty_paste'] = \"You cannot post an empty paste.\";\n$lang['large_paste'] = \"Your paste is too large. Max size is \" . $pastelimit . \"MB\";\n$lang['paste_db_error'] = \"Unable to post to database.\";\n$lang['error'] = \"Something went wrong.\";\n$lang['archive'] = \"Archive\";\n$lang['archives'] = \"Pastes Archive\";\n$lang['archivestitle'] = \"This page contains the most recently created 100 public pastes.\";\n$lang['contact'] = \"Contact Us\";\n$lang['full_name'] = \"Full Name\";\n$lang['email'] = \"Email\";\n$lang['email_invalid'] = \"Your email address seems to be invalid.\";\n$lang['message'] = \"Your message is required.\";\n$lang['login/register'] = \"Login or Register\";\n$lang['rememberme'] = \"Keep me signed in.\";\n$lang['mail_acc_con'] = \"$site_name Account Confirmation\";\n$lang['mail_suc'] = \"Verification code successfully sent to your email address.\";\n$lang['email_ver'] = \"Email already verified.\";\n$lang['email_not'] = \"Email not found.\";\n$lang['pass_change'] = \"Password changed successfully and sent to your email.\";\n$lang['notverified'] = \"Account not verified.\";\n$lang['incorrect'] = \"Incorrect User/Password\";\n$lang['missingfields'] = \"All fields must be filled out.\";\n$lang['userexists'] = \"Username already taken.\";\n$lang['emailexists'] = \"Email already registered.\";\n$lang['registered'] = \"Your account was successfully registered.\";\n$lang['usrinvalid'] = \"Your username can only contain letters or numbers.\";\n$lang['mypastes'] = \"My Pastes\";\n$lang['pastedeleted'] = \"Paste deleted.\";\n$lang['databaseerror'] = \"Unable to post to database.\";\n$lang['userchanged'] = \"Username changed successfully.\";\n$lang['usernotvalid'] = \"Username not valid.\";\n$lang['privatepaste'] = \"This is a private paste.\";\n$lang['wrongpassword'] = \"Wrong password.\";\n$lang['pwdprotected'] = \"Password protected paste\";\n$lang['notfound'] = \"404 Not Found\";\n$lang['wrongpwd'] = \"Wrong password. Try again.\";\n$lang['myprofile'] = \"My Profile\";\n$lang['profileerror'] = \"Unable to update the profile information\";\n$lang['profileupdated'] = \"Your profile information is updated\";\n$lang['oldpasswrong'] = \"Your old password is wrong.\";\n$lang['pastetitle'] = \"Paste Title\";\n$lang['pastetime'] = \"Paste Time\";\n$lang['pastesyntax'] = \"Paste Syntax\";\n$lang['pasteviews'] = \"Paste Views\";\n$lang['wentwrong'] = \"Something went wrong.\";\n$lang['versent'] = \"A verification email has been sent to your email address.\";\n$lang['modpaste'] = \"Modify or Fork\";\n$lang['newpaste'] = \"New Paste\";\n$lang['highlighting'] = \"Syntax Highlighting\";\n$lang['expiration'] = \"Paste Expiration\";\n$lang['visibility'] = \"Paste Visibility\";\n$lang['pwopt'] = \"Password (Optional)\";\n$lang['encrypt'] = \"All pastes are automatically encrypted with AES-256\";\n$lang['entercode'] = \"Enter Code\";\n$lang['almostthere'] = \"Almost there. One more step to go.\";\n$lang['username'] = \"Username\";\n$lang['autogen'] = \"Auto generated name\";\n$lang['setuser'] = \"Set your Username\";\n$lang['keepuser'] = \"Keep autogenerated name? You can change it once.\";\n$lang['enterpwd'] = \"Enter the password\";\n$lang['totalpastes'] = \"Total Pastes:\";\n$lang['membtype'] = \"Membership Type:\";\n$lang['chgpwd'] = \"Change Password\";\n$lang['curpwd'] = \"Current Password\";\n$lang['newpwd'] = \"New Password\";\n$lang['confpwd'] = \"Confirm Password\";\n$lang['viewpastes'] = \"View all my pastes\";\n$lang['recentpastes'] = \"Recent Pastes\";\n$lang['user_public_pastes'] = \"'s pastes\";\n$lang['yourpastes'] = \"Your Pastes\";\n$lang['mypastestitle'] = \"All of your pastes, in one place.\";\n$lang['delete'] = \"Delete\";\n$lang['highlighted'] = \"The text below is selected, press Ctrl+C to copy to your clipboard. (&#8984;+C on Mac)\";\n$lang['download'] = \"Download\";\n$lang['showlineno'] = \"Show/Hide line no.\";\n$lang['copyto'] = \"Copy text to clipboard\";\n$lang['rawpaste'] = \"Raw Paste\";\n$lang['membersince'] = \"Joined: \";\n$lang['delete_error_invalid'] = \"Error: Paste not deleted because it does not exist or you do not own the paste.\";\n$lang['deleteaccount'] = 'Delete My Account';\n$lang['deletewarn'] = 'This will permanently remove your account and all your pastes. This action cannot be undone.';\n$lang['typedelete'] = 'Type DELETE to confirm.';\n$lang['confirmdeletehint'] = 'You must type DELETE (all caps).';\n$lang['cancel'] = 'Cancel';\n$lang['confirmdelete'] = 'Confirm Delete';\n$lang['wentwrong'] = 'Something went wrong.';\n$lang['invalidtoken'] = 'Invalid CSRF token.';\n$lang['not_logged_in'] = \"Error: You must be logged in to do that.\";\n$lang['public'] = \"Public\";\n$lang['unlisted'] = \"Unlisted\";\n$lang['private'] = \"Private\";\n$lang['hello'] = \"Hello\";\n$lang['profile-message'] = \"This is your profile page where you can manage your pastes. All of your public, private and unlisted pastes will be shown here. You can also delete your pastes from this page. If other users visit your page they will only see pastes you have set public.\";\n$lang['profile-stats'] = \"Some of your statistics:\";\n$lang['profile-total-pastes'] = \"Total Pastes:\";\n$lang['profile-total-pub'] = \"Total public pastes:\";\n$lang['profile-total-unl'] = \"Total unlisted pastes:\";\n$lang['profile-total-pri'] = \"Total private pastes:\";\n$lang['profile-total-views'] = \"Total views of all your pastes:\";\n$lang['embed-hosted-by'] = \"hosted by\";\n$lang['view-raw'] = \"View Raw\";\n$lang['my_account'] = \"My Account\";\n$lang['guest'] = \"Guest\";\n$lang['login'] = \"Login\";\n$lang['signup'] = \"Register\";\n$lang['forgot_password'] = \"Forgot Password\";\n$lang['resend_verification'] = \"Resend Verification Email\";\n$lang['or_login_with'] = \"Or login with\";\n$lang['login_with_google'] = \"Google\";\n$lang['login_with_facebook'] = \"Facebook\";\n$lang['already_have_account'] = \"Already have an account?\";\n$lang['reset_password'] = \"Reset Password\";\n$lang['new_password'] = \"New Password\";\n$lang['send_reset_link'] = \"Send Reset Link\";\n$lang['email_verified'] = \"Email verified successfully. You can now log in.\";\n$lang['invalid_code'] = \"Invalid or expired code.\";\n$lang['pass_reset'] = \"Password reset successful. You can now log in.\";\n$lang['mail_error'] = \"Failed to send email.\";\n$lang['settings'] = \"Settings\";\n$lang['logout'] = \"Logout\";\n$lang['49'] = \"49\";\n$lang['50'] = \"50\";\n$lang['account_suspended'] = \"Account Suspended\";\n$lang['ajax_error'] = \"Ajax Error\";\n$lang['createpaste'] = \"Create Paste\";\n$lang['email_not_verified'] = \"Email Not Verified\";\n$lang['expired'] = \"Expired\";\n$lang['forgot'] = \"Forgot\";\n$lang['fullname'] = \"Full name\";\n$lang['guestmsgtitle'] = \"Hello Guest! Paste is for source code and general debugging text.\";\n$lang['guestwelcome'] = \"Guestwelcome\";\n$lang['invalid_credentials'] = \"Invalid Credentials\";\n$lang['invalid_email'] = \"Invalid Email\";\n$lang['invalid_reset_code'] = \"Invalid Reset Code\";\n$lang['invalid_state'] = \"Invalid State\";\n$lang['invalid_username'] = \"Invalid Username\";\n$lang['login_required'] = \"Login Required\";\n$lang['login_success'] = \"Login Success\";\n$lang['low_score'] = \"Low Score\";\n$lang['my-pastes'] = \"My Pastes\";\n$lang['no_results'] = \"No Results\";\n$lang['password'] = \"Password\";\n$lang['password_reset_success'] = \"Password Reset Success\";\n$lang['password_too_short'] = \"Password Too Short\";\n$lang['pastemember'] = \"Pastemember\";\n$lang['pastes'] = \"Pastes\";\n$lang['recaptcha_error'] = \"Recaptcha Error\";\n$lang['recaptcha_failed'] = \"reCAPTCHA failed to verify you're not a bot. Refresh and try again.\";\n$lang['recaptcha_missing'] = \"Recaptcha Missing\";\n$lang['recaptcha_timeout'] = \"Recaptcha Timeout\";\n$lang['resend'] = \"Resend\";\n$lang['search'] = \"Search\";\n$lang['search_results_for'] = \"Search Results for\";\n$lang['signup_success'] = \"Signup Success\";\n$lang['sort'] = \"Sort\";\n$lang['sort_code_asc'] = \"Sort Code Asc\";\n$lang['sort_code_desc'] = \"Sort Code Desc\";\n$lang['sort_date_asc'] = \"Sort Date Asc\";\n$lang['sort_date_desc'] = \"Sort Date Desc\";\n$lang['sort_title_asc'] = \"Sort Title Asc\";\n$lang['sort_title_desc'] = \"Sort Title Desc\";\n$lang['sort_views_asc'] = \"Sort Views Asc\";\n$lang['sort_views_desc'] = \"Sort Views Desc\";\n$lang['submit_error'] = \"Submit Error\";\n$lang['user_exists'] = \"User Exists\";\n$lang['views'] = \"Views\";\n?>\n"
  },
  {
    "path": "langs/es.php",
    "content": "<?php\n/*\n * Language File: Spanish\n * Author: S. Jorge\n */\n$lang = array();\n$lang['banned']         = \"Estas barneado en \" . $site_name;\n$lang['expired']\t\t= \"El pegado que estás buscando ha caducado.\";\n$lang['guestwelcome']\t= $site_name . \" te permite enviar texto &amp; código.\";\n$lang['pleaseregister'] = \"<br /><br /> <a class=\\\"btn btn-default\\\" data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Iniciar sesión</a> o <a class=\\\"btn btn-default\\\" data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Registrarse</a> para enviar un pegado. Es gratis.\";\n$lang['registertoedit'] = \"<a class=\\\"btn btn-default\\\" data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Iniciar sesión</a> o <a class=\\\"btn btn-default\\\" data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Registrarse</a> para editar o bifurcar este pegado. Es gratis.\";\n$lang['editpaste']\t\t= \"Editar\";\n$lang['forkpaste']\t\t= \"Bifurcar\";\n$lang['guestmsgtitle']\t= $site_name . \" es para el código fuente y el texto de depuración general.\";\n$lang['guestmsgbody']\t= \"<a data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Iniciar sesión</a> o <a data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Registrarse</a> para editar, eliminar y mantener un seguimiento de sus pegados y mucho más.\";\n$lang['emptypastebin']\t= \"No hay pegado para mostrar.\";\n$lang['siteprivate']\t= \"Este pegado es privado\";\n$lang['image_wrong']    = \"Captcha incorrecto.\";\n$lang['missing-input-response']   = \"Falta el parámetro de respuesta reCAPTCHA. Verifique la configuración de PASTE.\";\n$lang['missing-input-secret']     = \"Falta el parámetro secreto reCAPTCHA. Añádala a su configuración de PASTE.\";\n$lang['missing-input-response']   = \"El parámetro de respuesta reCAPTCHA no es válido. Por favor, intenta completar el reCAPTCHA de nuevo.\";\n$lang['invalid-input-secret']     = \"El parámetro secreto reCAPTCHA no es válido o está mal formado. Por favor revise su configuración de PASTE.\";\n$lang['empty_paste']\t= \"No puede publicar un pegado vacío.\";\n$lang['large_paste']\t= \"El pegado es demasiado grande. El tamaño máximo es \" . $pastelimit . \"MB\";\n$lang['paste_db_error'] = \"No se puede publicar en la base de datos.\";\n$lang['error']          = \"Algo salió mal.\";\n$lang['archive']        = \"Archivo de pegado\";\n$lang['contact']        = \"Contactenos\";\n$lang['full_name']      = \"Su nombre completo es obligatorio.\";\n$lang['email']          = \"Se requiere tu dirección de correo electrónico.\";\n$lang['email_invalid']  = \"Su dirección de correo electrónico parece no ser válida.\";\n$lang['message']        = \"Su mensaje es obligatorio.\";\n$lang['login/register'] = \"Iniciar sesión/Registro\";\n$lang['rememberme']\t\t= \"Manténgame conectado.\";\n$lang['mail_acc_con']   = \"$site_name Cuenta confirmada\";\n$lang['mail_suc']       = \"El código de verificación se envió correctamente a su dirección de correo electrónico.\";\n$lang['email_ver']      = \"Correo electrónico ya verificado.\";\n$lang['email_not']      = \"Correo electrónico no encontrado.\";\n$lang['pass_change']    = \"La contraseña se ha cambiado correctamente y se ha enviado a tu correo electrónico.\";\n$lang['notverified']\t= \"Cuenta no verificada.\";\n$lang['incorrect']\t\t= \"Incorrecto usuario/contraseña\";\n$lang['missingfields']\t= \"Todos los campos deben ser llenados.\";\n$lang['userexists']     = \"Nombre de usuario ya tomado.\";\n$lang['emailexists']\t= \"Correo electrónico ya registrado.\";\n$lang ['registered'] \t= \"Tu cuenta se ha registrado correctamente.\";\n$lang ['usrinvalid'] \t= \"Tu nombre de usuario solo puede contener letras o números.\";\n$lang ['mypastes'] \t\t= \"Mis pegados\";\n$lang ['pastedeleted'] \t= \"Pegado borrado.\";\n$lang ['databaseerror'] = \"No se puede publicar en la base de datos.\";\n$lang ['userchanged'] \t= \"El nombre de usuario ha cambiado correctamente.\";\n$lang ['usernotvalid'] \t= \"Nombre de usuario no válido.\";\n$lang ['privatepaste'] \t= \"Este es un pegado privada.\";\n$lang ['wrongpassword'] = \"Contraseña incorrecta.\";\n$lang ['pwdprotected'] \t= \"Pegar con contraseña protegida\";\n$lang ['notfound'] \t\t= \"No encontrado\";\n$lang ['wrongpwd'] \t\t= \"Contraseña incorrecta. Vuelva a intentarlo.\";\n$lang ['myprofile'] \t= \"Mi perfil\";\n$lang ['profileerror'] \t= \"No se puede actualizar la información del perfil\";\n$lang ['profileupdated']= \"Se ha actualizado la información de tu perfil\";\n$lang ['oldpasswrong'] \t= \"Su contraseña antigua es incorrecta.\";\n$lang ['archives'] \t\t= \"Archivos de pegado\";\n$lang ['archivestitle'] = \"Esta página contiene los 100 pegados publicados más recientemente.\";\n$lang ['pastetitle'] \t= \"Pegar título\";\n$lang ['pastetime'] \t= \"Tiempo de pegado\";\n$lang ['pastesyntax'] \t= \"Pegar Sintaxis\";\n$lang ['pasteviews'] \t= \"Pegar vistas\";\n$lang ['wentwrong'] \t= \"Algo salió mal.\";\n$lang ['versent'] \t\t= \"Se ha enviado un correo electrónico de verificación a su dirección de correo electrónico.\";\n$lang ['modpaste']\t\t= \"Modificar Pegado\";\n$lang ['newpaste'] \t\t= \"Nueva Pega\";\n$lang ['highlighting'] \t= \"Resaltado de sintaxis\";\n$lang ['expiration'] \t= \"Pegar Expiración\";\n$lang ['visibility'] \t= \"Pegar Visibilidad\";\n$lang ['pwopt'] \t\t= \"Contraseña (Opcional)\";\n$lang ['encrypt'] \t\t= \"Cifrar en la base de datos\";\n$lang ['entercode'] \t= \"Introducir código\";\n$lang ['almostthere'] \t= \"Casi allí, un paso más.\";\n$lang ['username'] \t\t= \"Nombre de usuario\";\n$lang ['autogen'] \t\t= \"Nombre generado automáticamente\";\n$lang ['setuser'] \t\t= \"Establecer su nombre de usuario\";\n$lang ['keepuser'] \t\t= \"Mantener el nombre autogenerado\";\n$lang ['enterpwd'] \t\t= \"Introduzca la contraseña\";\n$lang ['totalpastes'] \t= \"Total pegado:\";\n$lang ['membtype'] \t\t= \"Tipo de membresía:\";\n$lang ['email'] \t\t= \"Correo electrónico\";\n$lang ['fullname'] \t\t= \"Nombre completo\";\n$lang ['chgpwd'] \t\t= \"Cambiar contraseña\";\n$lang ['curpwd'] \t\t= \"Contraseña actual\";\n$lang ['newpwd'] \t\t= \"Nueva contraseña\";\n$lang ['confpwd'] \t\t= \"Confirmar contraseña\";\n$lang ['mypastes']\t\t= \"Mis pegados\";\n$lang ['viewpastes'] \t= \"Ver todos mis pegados\";\n$lang ['recentpastes'] \t= \"Pegados recientes\";\n$lang ['user_public_pastes'] = \"'s pegados\";\n$lang ['yourpastes'] \t= \"Sus pegados\";\n$lang ['mypastestitle'] = \"Todos tus pegados, en un solo lugar.\";\n$lang ['delete'] \t\t= \"Eliminar\";\n$lang['highlighted']\t= \"El texto siguiente está seleccionado, presione Ctrl+C para copiar en su portapapeles. (&#8984;+C en Mac)\";\n$lang ['newpaste'] \t\t= \"Nueva Pega\";\n$lang ['download'] \t\t= \"Descargar\";\n$lang ['showlineno'] \t= \"Mostrar / Ocultar línea no\";\n$lang ['copyto'] \t\t= \"Copiar texto al portapapeles\";\n$lang ['rawpaste'] \t\t= \"Pasta cruda\";\n$lang ['membersince'] \t= \"Registrado:\";\n$lang ['delete_error_invalid'] = \"Error: Pegado no borrado porque no existe o no posee el pegado.\";\n$lang ['not_logged_in'] = \"Error: Debes haber iniciado sesión para hacer eso.\";\n$lang ['public'] \t\t= \"Público\";\n$lang ['unlisted'] \t\t= \"No listado\";\n$lang ['private'] \t\t= \"Privado\";\n$lang ['hello'] \t\t= \"Hola\";\n$lang['profile-message'] = \"Esta es su página de perfil donde puede administrar sus pegados.<br /> Todos sus pegados públicos, privados y no listados se mostrarán aquí. También puede eliminar sus pegados de esta página. Si otros usuarios visitan tu página, solo verán las pastas que hayas puesto público.\";\n$lang ['profile-stats'] = \"Algunas de sus estadísticas:\";\n$lang ['profile-total-pastes'] = \"Pegados totales:\";\n$lang ['profile-total-pub'] = \"Pegados públicos totales:\";\n$lang ['profile-total-unl'] = \"Total de pegados no listados:\";\n$lang ['perfil-total-pri'] = \"Total de pegados privados:\";\n$lang ['profile-total-views'] = \"Total de vistas de todos sus pegados:\";\n$lang ['embed-hosted-by'] = \"alojado por\";\n$lang ['view-raw'] \t\t= \"Ver crudo\";\n?>\n"
  },
  {
    "path": "langs/fr.php",
    "content": "<?php\n/*\n * Language File: French\n */\n\n$lang = array();\n\n$lang['banned']         = \"Vous avez été banni de \" . $site_name;\n$lang['expired']\t\t= \"Le paste que vous recherchez est expiré.\";\n$lang['guestwelcome']\t= $site_name . \" vous permet de partager du texte et du code.\";\n$lang['pleaseregister'] = \"<br /><br /> <a class=\\\"btn btn-default\\\" data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Connectez-vous</a> ou <a class=\\\"btn btn-default\\\" data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Enregistrez-vous</a> pour soumettre un nouveau paste. C'est gratuit !\";\n$lang['registertoedit'] = \"<a class=\\\"btn btn-default\\\" data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Connectez-vous</a> ou <a class=\\\"btn btn-default\\\" data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Enregistrez-vous</a> pour éditer ou dupliquer ce paste. C'est gratuit !\";\n$lang['editpaste']\t\t= \"Éditer\";\n$lang['forkpaste']\t\t= \"Dupliquer\";\n$lang['guestmsgtitle']\t= $site_name . \" est fait pour le code source et le texte général de débogage.\";\n$lang['guestmsgbody']\t= \"<a data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Connectez-vous</a> ou <a data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Enregistrez-vous</a> pour éditer, supprimer et suivre vos pastes et bien plus.\";\n$lang['emptypastebin']\t= \"Pas de pastes.\";\n$lang['siteprivate']\t= \"Ce pastebin est privé.\";\n$lang['image_wrong']    = \"Erreur de captcha.\";\n$lang['missing-input-response']   = \"Il manque le paramètre réponse de reCAPTCHA. Vérifier la configuration de PASTE.\";\n$lang['missing-input-secret']     = \"Il manque le paramètre secret de reCAPTCHA. Merci de l'ajouter à la configuration de PASTE.\";\n$lang['missing-input-response']   = \"Le paramètre réponse de reCAPTCHA est invalide. Recommencez.\";\n$lang['invalid-input-secret']     = \"Le paramètre secret de reCAPTCHA est invalide ou incorrect. Vérifiez la configuration de PASTE.\";\n$lang['empty_paste']\t= \"Vous ne pouvez pas publier un paste vide.\";\n$lang['large_paste']\t= \"Le paste est trop volumineux. La taille maximale est \" . $pastelimit . \"MB\";\n$lang['paste_db_error'] = \"Impossible de publier dans la base de données.\";\n$lang['error']          = \"Erreur fatale.\";\n$lang['archive']        = \"Archives\";\n$lang['contact']        = \"Nous contacter\";\n$lang['full_name']      = \"Le champ nom doit être renseigné.\";\n$lang['email']          = \"Le champ email doit être renseigné.\";\n$lang['email_invalid']  = \"Adresse email invalide.\";\n$lang['message']        = \"Le champ message doit être renseigné.\";\n$lang['login/register'] = \"Se connecter/S'enregistrer\";\n$lang['rememberme']\t\t= \"Rester connecter.\";\n$lang['mail_acc_con']   = \"Confirmation de votre compte pour $site_name\";\n$lang['mail_suc']       = \"Le code de vérification a été transmis à votre adresse email.\";\n$lang['email_ver']      = \"Adresse email déjà vérifiée.\";\n$lang['email_not']      = \"Adresse email non trouvée.\";\n$lang['pass_change']    = \"Le mot de passe a été changé et transmis à votre adresse email.\";\n$lang['notverified']\t= \"Compte non vérifié.\";\n$lang['incorrect']\t\t= \"Nom d'utilisateur ou mot de passe incorrect.\";\n$lang['missingfields']\t= \"Tous les champs doivent être renseignés\";\n$lang['userexists']     = \"Le nom d'utilisateur existe déjà.\";\n$lang['emailexists']\t= \"Adresse email déjà enregistrée.\";\n$lang['registered']\t\t= \"Votre compte a été enregistré.\";\n$lang['usrinvalid']\t\t= \"Votre nom d'utilisateur ne doit contenir que des lettres ou des chiffres.\";\n$lang['mypastes']\t\t= \"Mes Pastes\";\n$lang['pastedeleted']\t= \"Paste supprimé.\";\n$lang['databaseerror']\t= \"Impossible d'enregistrer dans la base de données.\";\n$lang['userchanged']\t= \"Nom d'utilisateur changé.\";\n$lang['usernotvalid']\t= \"Nom d'utilisateur non valide.\";\n$lang['privatepaste']\t= \"Ce paste est privé.\";\n$lang['wrongpassword']\t= 'Erreur mot de passe.';\n$lang['pwdprotected']\t= 'Ce paste est protégé par mot de passe.';\n$lang['notfound']\t\t= \"Non trouvé\";\n$lang['wrongpwd']\t\t= \"Erreur mot de passe, re-essayez.\";\n$lang['myprofile']\t\t= \"Mon profil\";\n$lang['profileerror']\t= \"Impossible de mettre à jour vos informations de profil.\";\n$lang['profileupdated']\t= \"Vos informations de profil ont été mises à jour\";\n$lang['oldpasswrong']\t= \"Erreur ancien mot de passe\";\n$lang['archives']\t\t= \"Archives\";\n$lang['archivestitle']  = \"Cet écran réuni les 100 derniers paste enregistrés.\";\n$lang['pastetitle']\t\t= \"Titre du paste\";\n$lang['pastetime']\t\t= \"Durée de vie du paste\";\n$lang['pastesyntax']\t= \"Syntaxe du paste\";\n$lang['pasteviews']\t\t= \"Nombre de vues du paste\";\n$lang['wentwrong']\t\t= \"Erreur fatale.\";\n$lang['versent']\t\t= \"Un email de vérification a été transmis à votre adresse email.\";\n$lang['modpaste']\t\t= \"Modifier le paste\";\n$lang['newpaste']\t\t= \"Nouveau paste\";\n$lang['highlighting']\t= \"Mise en évidence de la syntaxe.\";\n$lang['expiration']\t\t= \"Durée de vie du paste\";\n$lang['visibility']\t\t= \"Portée du paste\";\n$lang['pwopt']\t\t\t= \"Mot de passe (Optionnel)\";\n$lang['encrypt']\t\t= \"Crypter dans la base de données\";\n$lang['entercode']\t\t= \"Entrez le code\";\n$lang['almostthere']\t= \"Vous avez presque terminé, il ne reste qu'une étape\";\n$lang['username']\t\t= \"Nom d'utilisateur\";\n$lang['autogen']\t\t= \"Nom généré automatiquement\";\n$lang['setuser']\t\t= \"Saisir votre nom d'utilisateur\";\n$lang['keepuser']\t\t= \"Garder le nom généré automatiquement\";\n$lang['enterpwd']\t\t= \"Saisir le mot de passe\";\n$lang['totalpastes']\t= \"Total pastes:\";\n$lang['membtype']\t\t= \"Type de compte:\";\n$lang['email']\t\t\t= \"Email\";\n$lang['fullname']\t\t= \"Nom complet\";\n$lang['chgpwd']\t\t\t= \"Changer le mot de passe\";\n$lang['curpwd']\t\t\t= \"Mot de passe actuel\";\n$lang['newpwd']\t\t\t= \"Nouveau mot de passe\";\n$lang['confpwd']\t\t= \"Confirmez le nouveau mot de passe\";\n$lang['mypastes']\t\t= \"Mes pastes\";\n$lang['viewpastes']\t\t= \"Voir tous mes pastes\";\n$lang['recentpastes']\t= \"Pastes récents\";\n$lang['user_public_pastes'] = \"'s Pastes\";\n$lang['yourpastes']\t\t= \"Vos pastes\";\n$lang['mypastestitle']\t= \"Tous vos pastes au même endroit.\";\n$lang['delete']\t\t\t= \"Supprimer\";\n$lang['highlighted']\t= \"Le texte ci-dessus est sélectionné, presser Ctrl+C pour le copier dans votre presse-papier. (&#8984;+C sur Mac)\";\n$lang['newpaste']\t\t= \"Nouveau paste\";\n$lang['download']\t\t= \"Télécharger\";\n$lang['showlineno']\t\t= \"Afficher/Cacher les numéros de ligne.\";\n$lang['copyto']\t\t\t= \"Copier le texte dans le presse-papier.\";\n$lang['rawpaste']\t\t= \"Paste brut\";\n$lang['membersince']    = \"Enregistré depuis : \";\n$lang['delete_error_invalid'] = \"Erreur : le paste n'a pas été supprimé car il n'existe pas ou vous n'êtes pas son propriétaire.\";\n$lang['not_logged_in']  = \"Erreur : vous devez être connecté.\";\n$lang['public']         = \"Public\";\n$lang['unlisted']       = \"Fantôme\";\n$lang['private']        = \"Privé\";\n$lang['hello']\t\t\t= \"Bonjour\";\n$lang['profile-message'] = \"Vous pouvez gérer vos pastes sur cet écran de profil.<br /> Tous vos pastes publics, privés et fantômes sont listés ici. Vous pouvez également supprimer vos pastes depuis cet écran. Si un autre utilisateur visite votre profil, il ne verra que vos pastes publics.\";\n$lang['profile-stats']\t= \"Quelques statistiques :\";\n$lang['profile-total-pastes'] = \"Nombre total de pastes :\";\n$lang['profile-total-pub']\t= \"Nombre de pastes publics :\";\n$lang['profile-total-unl']\t= \"Nombre de pastes fantômes :\";\n$lang['profile-total-pri']\t= \"Nombre de pastes privés :\";\n$lang['profile-total-views'] = \"Nombre total de vues :\";\n$lang['embed-hosted-by'] = \"hébergé par\";\n$lang['view-raw']\t\t= \"Voir les données brutes\";\n\n?>"
  },
  {
    "path": "langs/index.php",
    "content": " "
  },
  {
    "path": "langs/pl.php",
    "content": "<?php\n/*\n * Language File: Polish\n * Translated by m4sk1n <me@m4sk.in> (June, 2017)\n */\n\n$lang = array();\n\n$lang['banned']         = \"Zostałeś zablokowany na \" . $site_name;\n$lang['expired']\t\t= \"Wklejka, którą próbujesz odwiedzić, utraciła ważność.\";\n$lang['guestwelcome']\t= $site_name . \" pozwala przechowywać tekst i kod.\";\n$lang['pleaseregister'] = \"<br /><br /> <a class=\\\"btn btn-default\\\" data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Zaloguj się</a> lub <a class=\\\"btn btn-default\\\" data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">zarejestruj</a>, aby wysłać nową wklejkę. To nic nie kosztuje.\";\n$lang['registertoedit'] = \"<a class=\\\"btn btn-default\\\" data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Zaloguj się</a> lub <a class=\\\"btn btn-default\\\" data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">zarejestruj</a>, aby edytować lub powielić tą wklejkę. To nic nie kosztuje.\";\n$lang['editpaste']\t\t= \"Edytuj\";\n$lang['forkpaste']\t\t= \"Powiel\";\n$lang['guestmsgtitle']\t= $site_name . \" pozwala na przechowywanie kodu źródłowego i tekstu.\";\n$lang['guestmsgbody']\t= \"<a data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">Zaloguj się</a> lub <a data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">zarejestruj</a> aby edytować, usuwać i mieć kontrolę nad swoimi wklejkami.\";\n$lang['emptypastebin']\t= \"Brak wklejek do pokazania.\";\n$lang['siteprivate']\t= \"Ta strona jest prywatna.\";\n$lang['image_wrong']    = \"Nieprawidłowy kod.\";\n$lang['missing-input-response']   = \"Parametr odpowiedzi reCAPTCHA nie jest prawidłowy. Zweryfikuj ustawienia PASTE.\";\n$lang['missing-input-secret']     = \"Brak tajnego parametru reCAPTCHA. Dodaj go do ustawień reCAPTCHA.\";\n$lang['missing-input-response']   = \"Parametr odpowiedzi reCAPTCHA jest nieprawidłowy. Spróbuj wykonać reCAPTCHA ponownie.\";\n$lang['invalid-input-secret']     = \"Patametr odpowiedzi reCAPTCHA jest nieprawidłowy. Sprawdź poprawność ustawień PASTE.\";\n$lang['empty_paste']\t= \"Nie możesz umieścić pustej wklejki.\";\n$lang['large_paste']\t= \"Wysłana wklejka jest zbyt duża. Maksymalny rozmiar wynosi \" . $pastelimit . \"MB.\";\n$lang['paste_db_error'] = \"Nie udało się umieścić w bazie danych.\";\n$lang['error']          = \"Coś poszło nie tak.\";\n$lang['archive']        = \"Archiwum wklejek\";\n$lang['contact']        = \"Kontakt\";\n$lang['full_name']      = \"Musisz wprowadzić imię i nazwisko.\";\n$lang['email']          = \"Musisz wprowadzić adres e-mail.\";\n$lang['email_invalid']  = \"Wprowadzony adres e-mail jest nieprawidłowy.\";\n$lang['message']        = \"Musisz wprowadzić wiadomość.\";\n$lang['login/register'] = \"Zaloguj się/Zarejestruj\";\n$lang['rememberme']\t\t= \"Nie wylogowywuj mnie.\";\n$lang['mail_acc_con']   = \"Potwierdzenie konta na $site_name\";\n$lang['mail_suc']       = \"Pomyślnie przesłano kod weryfikacyjny na podany e-mail.\";\n$lang['email_ver']      = \"Już zweryfikowano adres e-mail.\";\n$lang['email_not']      = \"Nie znaleziono adresu e-mail.\";\n$lang['pass_change']    = \"Pomyślnie zmieniono hasło i przesłano na adres e-mail.\";\n$lang['notverified']\t= \"Nie zweryfikowano konto.\";\n$lang['incorrect']\t\t= \"Nieprawidłowa nazwa użytkownika/hasło\";\n$lang['missingfields']\t= \"Wszystkie pola muszą być wypełnione.\";\n$lang['userexists']     = \"Nazwa użytkownika jest zajęta.\";\n$lang['emailexists']\t= \"Istnieje konto przypisane do tego adresu e-mail.\";\n$lang['registered']\t\t= \"Pomyślnie zarejestrowano konto.\";\n$lang['usrinvalid']\t\t= \"Nazwa użytkownika może zawierać wyłącznie litery i cyfry.\";\n$lang['mypastes']\t\t= \"Moje wklejki\";\n$lang['pastedeleted']\t= \"Usunięto wklejkę.\";\n$lang['databaseerror']\t= \"Nie udało się umieścić w bazie danych.\";\n$lang['userchanged']\t= \"Pomyślnie zmieniono nazwę użytkownika.\";\n$lang['usernotvalid']\t= \"Nieprawidłowa nazwa użytkownika.\";\n$lang['privatepaste']\t= \"To jest prywatna wklejka.\";\n$lang['wrongpassword']\t= 'Nieprawidłowe hasło.';\n$lang['pwdprotected']\t= 'Wklejka chroniona hasłem';\n$lang['notfound']\t\t= \"Nie znaleziono\";\n$lang['wrongpwd']\t\t= \"Nieprawidłowe hasło. Spróbuj ponownie.\";\n$lang['myprofile']\t\t= \"Moje konto\";\n$lang['profileerror']\t= \"Nie udało się zaktualizować informacje o koncie \";\n$lang['profileupdated']\t= \"Pomyślnie zaktualizowano informacje o koncie \";\n$lang['oldpasswrong']\t= \"Nieprawidłowe aktualne hasło.\";\n$lang['archives']\t\t= \"Archiwum wklejek\";\n$lang['archivestitle']  = \"Ta strona zawiera 100 najnowszych publicznych wklejek.\";\n$lang['pastetitle']\t\t= \"Tytuł wklejki\";\n$lang['pastetime']\t\t= \"Czas dodania wklejki\";\n$lang['pastesyntax']\t= \"Składnia wklejki\";\n$lang['pasteviews']\t\t= \"Wyświetlenia wklejki\";\n$lang['wentwrong']\t\t= \"Coś poszło nie tak.\";\n$lang['versent']\t\t= \"Link weryfikacyjny został wysłany na podany adres e-mail.\";\n$lang['modpaste']\t\t= \"Modyfikuj wklejkę\";\n$lang['newpaste']\t\t= \"Nowa wklejka\";\n$lang['highlighting']\t= \"Podświetlanie składni\";\n$lang['expiration']\t\t= \"Data ważności wklejki\";\n$lang['visibility']\t\t= \"Widoczność wklejki\";\n$lang['pwopt']\t\t\t= \"Hasło (opcjonalne)\";\n$lang['encrypt']\t\t= \"Zaszyfruj w bazie danych\";\n$lang['entercode']\t\t= \"Wprowadź kod\";\n$lang['almostthere']\t= \"Już prawie. Pozostał jeden krok.\";\n$lang['username']\t\t= \"Nazwa użytkownika\";\n$lang['autogen']\t\t= \"Wygenerowana nazwa\";\n$lang['setuser']\t\t= \"Ustaw swoją nazwę\";\n$lang['keepuser']\t\t= \"Pozostaw wygenerowaną nazwę\";\n$lang['enterpwd']\t\t= \"Wprowadź hasło\";\n$lang['totalpastes']\t= \"Wklejki łącznie:\";\n$lang['membtype']\t\t= \"Rodzaj konta:\";\n$lang['email']\t\t\t= \"E-mail\";\n$lang['fullname']\t\t= \"Nazwa\";\n$lang['chgpwd']\t\t\t= \"Zmień hasło\";\n$lang['curpwd']\t\t\t= \"Obecne hasło\";\n$lang['newpwd']\t\t\t= \"Nowe hasło\";\n$lang['confpwd']\t\t= \"Potwierdź hasło\";\n$lang['mypastes']\t\t= \"Moje wklejki\";\n$lang['viewpastes']\t\t= \"Pokaż wszystkie moje wklejki\";\n$lang['recentpastes']\t= \"Najnowsze wklejki\";\n$lang['user_public_pastes'] = \"Wklejki użytkownika\";\n$lang['yourpastes']\t\t= \"Twoje wklejki\";\n$lang['mypastestitle']\t= \"Wszystkie twoje wklejki w jednym miejscu.\";\n$lang['delete']\t\t\t= \"Usuń\";\n$lang['highlighted']\t= \"Tekst jest zaznaczony, naciśnij Ctrl+C aby skopiować. (&#8984;+C na Macu)\";\n$lang['newpaste']\t\t= \"Nowa wklejka\";\n$lang['download']\t\t= \"Pobierz\";\n$lang['showlineno']\t\t= \"Pokaż/ukryj wiersz nr.\";\n$lang['copyto']\t\t\t= \"Kopiuj tekst do schowka\";\n$lang['rawpaste']\t\t= \"Surowy plik wklejki\";\n$lang['membersince']    = \"Data dołączenia: \";\n$lang['delete_error_invalid'] = \"Błąd: Nie usunięto wklejki. Wklejka nie istnieje lub nie jesteś jej autorem.\";\n$lang['not_logged_in']  = \"Błąd: Musisz zalogować się, aby to zrobić.\";\n$lang['public']         = \"Publiczna\";\n$lang['unlisted']       = \"Niewidoczna\";\n$lang['private']        = \"Prywatna\";\n$lang['hello']\t\t\t= \"Witaj\";\n$lang['profile-message'] = \"To jest strona twojego konta, na której możesz zarządzać wklejkami.<br /> Znajdują się tu twoje wszystkie – prywatne, publiczne i niewidoczne wklejki. Możesz je tutaj usunąć. Inni użytkownicy mogą zobaczyć tu tylko twoje publiczne wklejki.\";\n$lang['profile-stats']\t= \"Twoje statystyki:\";\n$lang['profile-total-pastes'] = \"Wklejki łącznie:\";\n$lang['profile-total-pub']\t= \"Publiczne wklejki:\";\n$lang['profile-total-unl']\t= \"Niewidoczne wklejki:\";\n$lang['profile-total-pri']\t= \"Prywatne wklejki:\";\n$lang['profile-total-views'] = \"Wyświetlenia wszystkich wklejek:\";\n$lang['embed-hosted-by'] = \"przechowywane na\";\n$lang['view-raw']\t\t= \"Surowy plik\";\n?>\n"
  },
  {
    "path": "langs/ru.php",
    "content": "<?php\n/*\n * Language File: Russian\n *\n * Paste https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n$lang = array();\n$lang['banned'] = \"You have been banned from \\\" . $site_name;\n$lang['expired']        = \\\"The paste you're looking for has expired.\";\n$lang['pleaseregister'] = \"<br><br> <a class=\\\\\\\"btn btn-default\\\\\\\" href=\\\\\\\"login.php\\\\\\\">Login</a> or <a class=\\\\\\\"btn btn-default\\\\\\\" href=\\\\\\\"login.php?action=signup\\\\\\\">Register</a> to submit a new paste. It's free.\";\n$lang['registertoedit'] = \"<a class=\\\\\\\"btn btn-default\\\\\\\" href=\\\\\\\"login.php\\\\\\\">Login</a> or <a class=\\\\\\\"btn btn-default\\\\\\\" href=\\\\\\\"login.php?action=signup\\\\\\\">Register</a> to edit or fork this paste. It's free.\";\n$lang['editpaste'] = \"Edit\";\n$lang['forkpaste'] = \"Fork\";\n$lang['guestmsgbody'] = \"<a href=\\\\\\\"login.php\\\\\\\">Login</a> or <a href=\\\\\\\"login.php?action=signup\\\\\\\">Register</a> to edit, delete and keep track of your pastes and more.\";\n$lang['emptypastebin'] = \"There are no pastes to show.\";\n$lang['siteprivate'] = \"This pastebin is private. <a class=\\\\\\\"btn btn-default\\\\\\\" href=\\\\\\\"login.php\\\\\\\">Login</a>\";\n$lang['image_wrong'] = \"Wrong captcha.\";\n$lang['missing-input-response'] = \"The reCAPTCHA response parameter is missing. Please verify your PASTE settings.\";\n$lang['missing-input-secret'] = \"The reCAPTCHA secret parameter is missing. Please add it to your PASTE settings.\";\n$lang['invalid-input-response'] = \"The reCAPTCHA response parameter is invalid. Please try to complete the reCAPTCHA again.\";\n$lang['invalid-input-secret'] = \"The reCAPTCHA secret parameter is invalid or malformed. Please double check your PASTE settings.\";\n$lang['empty_paste'] = \"You cannot post an empty paste.\";\n$lang['large_paste'] = \"Your paste is too large. Max size is \\\" . $pastelimit . \\\"MB\";\n$lang['paste_db_error'] = \"Unable to post to database.\";\n$lang['error'] = \"Something went wrong.\";\n$lang['archive'] = \"Archive\";\n$lang['archives'] = \"Pastes Archive\";\n$lang['archivestitle'] = \"This page contains the most recently created 100 public pastes.\";\n$lang['contact'] = \"Contact Us\";\n$lang['full_name'] = \"Full Name\";\n$lang['email'] = \"Email\";\n$lang['email_invalid'] = \"Your email address seems to be invalid.\";\n$lang['message'] = \"Your message is required.\";\n$lang['login/register'] = \"Login or Register\";\n$lang['rememberme'] = \"Keep me signed in.\";\n$lang['mail_acc_con'] = \"$site_name Account Confirmation\";\n$lang['mail_suc'] = \"Verification code successfully sent to your email address.\";\n$lang['email_ver'] = \"Email already verified.\";\n$lang['email_not'] = \"Email not found.\";\n$lang['pass_change'] = \"Password changed successfully and sent to your email.\";\n$lang['notverified'] = \"Account not verified.\";\n$lang['incorrect'] = \"Incorrect User/Password\";\n$lang['missingfields'] = \"All fields must be filled out.\";\n$lang['userexists'] = \"Username already taken.\";\n$lang['emailexists'] = \"Email already registered.\";\n$lang['registered'] = \"Your account was successfully registered.\";\n$lang['usrinvalid'] = \"Your username can only contain letters or numbers.\";\n$lang['mypastes'] = \"My Pastes\";\n$lang['pastedeleted'] = \"Paste deleted.\";\n$lang['databaseerror'] = \"Unable to post to database.\";\n$lang['userchanged'] = \"Username changed successfully.\";\n$lang['usernotvalid'] = \"Username not valid.\";\n$lang['privatepaste'] = \"This is a private paste.\";\n$lang['wrongpassword'] = \"Wrong password.\";\n$lang['pwdprotected'] = \"Password protected paste\";\n$lang['notfound'] = \"Not found\";\n$lang['wrongpwd'] = \"Wrong password. Try again.\";\n$lang['myprofile'] = \"My Profile\";\n$lang['profileerror'] = \"Unable to update the profile information\";\n$lang['profileupdated'] = \"Your profile information is updated\";\n$lang['oldpasswrong'] = \"Your old password is wrong.\";\n$lang['pastetitle'] = \"Paste Title\";\n$lang['pastetime'] = \"Paste Time\";\n$lang['pastesyntax'] = \"Paste Syntax\";\n$lang['pasteviews'] = \"Paste Views\";\n$lang['wentwrong'] = \"Something went wrong.\";\n$lang['versent'] = \"A verification email has been sent to your email address.\";\n$lang['modpaste'] = \"Modify Paste\";\n$lang['newpaste'] = \"New Paste\";\n$lang['highlighting'] = \"Syntax Highlighting\";\n$lang['expiration'] = \"Paste Expiration\";\n$lang['visibility'] = \"Paste Visibility\";\n$lang['pwopt'] = \"Password (Optional)\";\n$lang['encrypt'] = \"All pastes are automatically encrypted with AES-256\";\n$lang['entercode'] = \"Enter Code\";\n$lang['almostthere'] = \"Almost there. One more step to go.\";\n$lang['username'] = \"Username\";\n$lang['autogen'] = \"Auto generated name\";\n$lang['setuser'] = \"Set your Username\";\n$lang['keepuser'] = \"Keep autogenerated name\";\n$lang['enterpwd'] = \"Enter the password\";\n$lang['totalpastes'] = \"Total Pastes:\";\n$lang['membtype'] = \"Membership Type:\";\n$lang['chgpwd'] = \"Change Password\";\n$lang['curpwd'] = \"Current Password\";\n$lang['newpwd'] = \"New Password\";\n$lang['confpwd'] = \"Confirm Password\";\n$lang['viewpastes'] = \"View all my pastes\";\n$lang['recentpastes'] = \"Recent Pastes\";\n$lang['user_public_pastes'] = \"'s Pastes\";\n$lang['yourpastes'] = \"Your Pastes\";\n$lang['mypastestitle'] = \"All of your pastes, in one place.\";\n$lang['delete'] = \"Delete\";\n$lang['highlighted'] = \"The text below is selected, press Ctrl+C to copy to your clipboard. (&#8984;+C on Mac)\";\n$lang['download'] = \"Download\";\n$lang['showlineno'] = \"Show/Hide line no.\";\n$lang['copyto'] = \"Copy text to clipboard\";\n$lang['rawpaste'] = \"Raw Paste\";\n$lang['membersince'] = \"Joined: \";\n$lang['delete_error_invalid'] = \"Error: Paste not deleted because it does not exist or you do not own the paste.\";\n$lang['not_logged_in'] = \"Error: You must be logged in to do that.\";\n$lang['public'] = \"Public\";\n$lang['unlisted'] = \"Unlisted\";\n$lang['private'] = \"Private\";\n$lang['hello'] = \"Hello\";\n$lang['profile-message'] = \"This is your profile page where you can manage your pastes. All of your public, private and unlisted pastes will be shown here. You can also delete your pastes from this page. If other users visit your page they will only see pastes you have set public.\";\n$lang['profile-stats'] = \"Some of your statistics:\";\n$lang['profile-total-pastes'] = \"Total Pastes:\";\n$lang['profile-total-pub'] = \"Total public pastes:\";\n$lang['profile-total-unl'] = \"Total unlisted pastes:\";\n$lang['profile-total-pri'] = \"Total private pastes:\";\n$lang['profile-total-views'] = \"Total views of all your pastes:\";\n$lang['embed-hosted-by'] = \"hosted by\";\n$lang['view-raw'] = \"View Raw\";\n$lang['my_account'] = \"My Account\";\n$lang['guest'] = \"Guest\";\n$lang['login'] = \"Login\";\n$lang['signup'] = \"Register\";\n$lang['forgot_password'] = \"Forgot Password\";\n$lang['resend_verification'] = \"Resend Verification Email\";\n$lang['or_login_with'] = \"Or login with\";\n$lang['login_with_google'] = \"Google\";\n$lang['login_with_facebook'] = \"Facebook\";\n$lang['already_have_account'] = \"Already have an account?\";\n$lang['reset_password'] = \"Reset Password\";\n$lang['new_password'] = \"New Password\";\n$lang['send_reset_link'] = \"Send Reset Link\";\n$lang['email_verified'] = \"Email verified successfully. You can now log in.\";\n$lang['invalid_code'] = \"Invalid or expired code.\";\n$lang['pass_reset'] = \"Password reset successful. You can now log in.\";\n$lang['mail_error'] = \"Failed to send email.\";\n$lang['settings'] = \"Settings\";\n$lang['logout'] = \"Logout\";\n$lang['49'] = \"49\";\n$lang['50'] = \"50\";\n$lang['account_suspended'] = \"Аккаунт заблокирован\";\n$lang['ajax_error'] = \"Ошибка Ajax\";\n$lang['createpaste'] = \"Создать Пасту\";\n$lang['email_not_verified'] = \"Email Not Verified\";\n$lang['expired'] = \"Expired\";\n$lang['forgot'] = \"Forgot\";\n$lang['fullname'] = \"Fullname\";\n$lang['guestmsgtitle'] = \"Guestmsgtitle\";\n$lang['guestwelcome'] = \"Guestwelcome\";\n$lang['invalid_credentials'] = \"Неверные учетные данные\";\n$lang['invalid_email'] = \"Неверный email\";\n$lang['invalid_reset_code'] = \"Недействительный код сброса\";\n$lang['invalid_state'] = \"Неверное состояние\";\n$lang['invalid_username'] = \"Invalid Username\";\n$lang['login_required'] = \"Login Required\";\n$lang['login_success'] = \"Login Success\";\n$lang['low_score'] = \"Low Score\";\n$lang['my-pastes'] = \"Мой Пасты\";\n$lang['no_results'] = \"No Results\";\n$lang['password'] = \"Password\";\n$lang['password_reset_success'] = \"Password Reset Success\";\n$lang['password_too_short'] = \"Password Too Short\";\n$lang['pastemember'] = \"Пастуmember\";\n$lang['pastes'] = \"Пасты\";\n$lang['recaptcha_error'] = \"Recaptcha Error\";\n$lang['recaptcha_failed'] = \"Recaptcha Failed\";\n$lang['recaptcha_missing'] = \"Recaptcha Missing\";\n$lang['recaptcha_timeout'] = \"Recaptcha Timeout\";\n$lang['resend'] = \"Resend\";\n$lang['search'] = \"Поиск\";\n$lang['search_results_for'] = \"Поиск Results for\";\n$lang['signup_success'] = \"Signup Success\";\n$lang['sort'] = \"Sort\";\n$lang['sort_code_asc'] = \"Sort Code Asc\";\n$lang['sort_code_desc'] = \"Sort Code Desc\";\n$lang['sort_date_asc'] = \"Sort Дата Asc\";\n$lang['sort_date_desc'] = \"Sort Дата Desc\";\n$lang['sort_title_asc'] = \"Sort Заголовок Asc\";\n$lang['sort_title_desc'] = \"Sort Заголовок Desc\";\n$lang['sort_views_asc'] = \"Sort Просмотры Asc\";\n$lang['sort_views_desc'] = \"Sort Просмотры Desc\";\n$lang['submit_error'] = \"Submit Error\";\n$lang['user_exists'] = \"User Exists\";\n$lang['views'] = \"Просмотры\";\n?>\n"
  },
  {
    "path": "langs/zh_SC.php",
    "content": "<?php\n/*\n * Language File: zh_SC, 简体中文\n * translate by bobwxc (bobwxc@yeah.net) 2020\n */\n\n$lang = array();\n\n$lang['banned']         = \"你已经被屏蔽 \" . $site_name;\n$lang['expired']\t\t= \"您要查找的粘贴已过期\";\n$lang['guestwelcome']\t= $site_name . \" 允许您提交文本和代码。\";\n$lang['pleaseregister'] = \"<br /><br /> <a class=\\\"btn btn-default\\\" data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">登录</a> 或 <a class=\\\"btn btn-default\\\" data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">注册</a> 来提交新粘贴。此乃免费！\";\n$lang['registertoedit'] = \"<a class=\\\"btn btn-default\\\" data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">登录</a> 或 <a class=\\\"btn btn-default\\\" data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">注册</a> 以编辑粘贴或创建分叉。皆为免费！\";\n$lang['editpaste']\t\t= \"编辑\";\n$lang['forkpaste']\t\t= \"创建分叉\";\n$lang['guestmsgtitle']\t= $site_name . \" 用于源代码或Debug调试文本等。\";\n$lang['guestmsgbody']\t= \"<a data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">登录</a> 或 <a data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">注册</a> 以编辑、删除和跟踪您的粘贴。\";\n$lang['emptypastebin']\t= \"没有要显示的粘贴。\";\n$lang['siteprivate']\t= \"此粘贴为私有。\";\n$lang['image_wrong']    = \"验证码错误！\";\n$lang['missing-input-response']   = \"缺少reCAPTCHA response参数，请验证设置。\";\n$lang['missing-input-secret']     = \"reCAPTCHA secret参数丢失，请将其添加到设置中。\";\n$lang['missing-input-response']   = \"reCAPTCHA response参数无效，请重新填写。\";\n$lang['invalid-input-secret']     = \"reCAPTCHA secret参数无效或格式错误，请复查检查粘贴设置。\";\n$lang['empty_paste']\t= \"您不能提交空的粘贴。\";\n$lang['large_paste']\t= \"您的粘贴超过容量限制，最大容量为 \" . $pastelimit . \"MB\";\n$lang['paste_db_error'] = \"无法提交到数据库。\";\n$lang['error']          = \"出现了一些问题:(\";\n$lang['archive']        = \"存档粘贴\";\n$lang['contact']        = \"联系我们\";\n$lang['full_name']      = \"请填写您的全名。\";\n$lang['email']          = \"请填写有效的电子邮件地址。\";\n$lang['email_invalid']  = \"电子邮件地址无效！\";\n$lang['message']        = \"请填写您的信息。\";\n$lang['login/register'] = \"登录/注册\";\n$lang['rememberme']\t\t= \"记住登录\";\n$lang['mail_acc_con']   = \"$site_name 账户认证\";\n$lang['mail_suc']       = \"验证码已成功发送到您的电子邮箱。\";\n$lang['email_ver']      = \"电子邮箱已验证。\";\n$lang['email_not']      = \"找不到电子邮件地址。\";\n$lang['pass_change']    = \"密码更改成功并发送到您的电子邮箱。\";\n$lang['notverified']\t= \"账户未验证。\";\n$lang['incorrect']\t\t= \"用户名/密码错误！\";\n$lang['missingfields']\t= \"必须填写所有字段。\";\n$lang['userexists']     = \"用户名已被占用！\";\n$lang['emailexists']\t= \"电子邮件已注册！\";\n$lang['registered']\t\t= \"帐户注册成功。\";\n$lang['usrinvalid']\t\t= \"您的用户名只能包含字母和数字。\";\n$lang['mypastes']\t\t= \"我的粘贴\";\n$lang['pastedeleted']\t= \"粘贴已删除。\";\n$lang['databaseerror']\t= \"无法提交到数据库。\";\n$lang['userchanged']\t= \"用户名已更改。\";\n$lang['usernotvalid']\t= \"用户名不可用。\";\n$lang['privatepaste']\t= \"这是私有粘贴。\";\n$lang['wrongpassword']\t= '密码错误！';\n$lang['pwdprotected']\t= '密码保护的粘贴';\n$lang['notfound']\t\t= \"未找到\";\n$lang['wrongpwd']\t\t= \"密码错误，请重试！\";\n$lang['myprofile']\t\t= \"个人信息\";\n$lang['profileerror']\t= \"无法更新配置信息 \";\n$lang['profileupdated']\t= \"您的个人信息已更新 \";\n$lang['oldpasswrong']\t= \"原密码错误！\";\n$lang['archives']\t\t= \"粘贴存档\";\n$lang['archivestitle']  = \"此页包含最新创建的100个公开粘贴。\";\n$lang['pastetitle']\t\t= \"粘贴标题\";\n$lang['pastetime']\t\t= \"时间\";\n$lang['pastesyntax']\t= \"高亮语法\";\n$lang['pasteviews']\t\t= \"粘贴视图\";\n$lang['wentwrong']\t\t= \"出现了一些问题:(\";\n$lang['versent']\t\t= \"验证电子邮件已发送到您的电子邮箱。\";\n$lang['modpaste']\t\t= \"修改粘贴\";\n$lang['newpaste']\t\t= \"新建粘贴\";\n$lang['highlighting']\t= \"语法高亮\";\n$lang['expiration']\t\t= \"粘贴有效期\";\n$lang['visibility']\t\t= \"粘贴可见性\";\n$lang['pwopt']\t\t\t= \"查看密码（可选）\";\n$lang['encrypt']\t\t= \"在数据库中加密\";\n$lang['entercode']\t\t= \"输入验证码\";\n$lang['almostthere']\t= \"即将成功，一步之遥。\";\n$lang['username']\t\t= \"用户名\";\n$lang['autogen']\t\t= \"自动生成的用户名\";\n$lang['setuser']\t\t= \"设置您的用户名\";\n$lang['keepuser']\t\t= \"保留自动生成的用户名\";\n$lang['enterpwd']\t\t= \"输入密码\";\n$lang['totalpastes']\t= \"所有粘贴：\";\n$lang['membtype']\t\t= \"会员资格类型：\";\n$lang['email']\t\t\t= \"电子邮件\";\n$lang['fullname']\t\t= \"全名\";\n$lang['chgpwd']\t\t\t= \"修改密码\";\n$lang['curpwd']\t\t\t= \"当前密码\";\n$lang['newpwd']\t\t\t= \"新密码\";\n$lang['confpwd']\t\t= \"确认新密码\";\n$lang['mypastes']\t\t= \"我的粘贴\";\n$lang['viewpastes']\t\t= \"查看我的所有粘贴\";\n$lang['recentpastes']\t= \"近期粘贴\";\n$lang['user_public_pastes'] = \"的粘贴\";\n$lang['yourpastes']\t\t= \"您的粘贴\";\n$lang['mypastestitle']\t= \"所有粘贴，一处呈现。\";\n$lang['delete']\t\t\t= \"删除\";\n$lang['highlighted']\t= \"文本已选择, 用 Ctrl+C 快捷键来复制到您的剪贴板。(苹果Mac OS使用 &#8984;+C )\";\n$lang['newpaste']\t\t= \"新建粘贴\";\n$lang['download']\t\t= \"下载\";\n$lang['showlineno']\t\t= \"显示/隐藏行号\";\n$lang['copyto']\t\t\t= \"复制到剪贴板\";\n$lang['rawpaste']\t\t= \"原始文本\";\n$lang['membersince']    = \"加入：\";\n$lang['delete_error_invalid'] = \"不能删除粘贴，因为它不存在或非您所拥有。\";\n$lang['not_logged_in']  = \"您必须登录才能执行此操作。\";\n$lang['public']         = \"公开\";\n$lang['unlisted']       = \"不列出\";\n$lang['private']        = \"私有\";\n$lang['hello']\t\t\t= \"您好\";\n$lang['profile-message'] = \"这是您的个人资料页，您可以在这里管理您的粘贴。<br /> 您的所有公开、私有和不列出的粘贴都将显示在这里。您也可以从此页中删除粘贴。如果其他用户访问您的页面，他们只能看到您的公开粘贴。\";\n$lang['profile-stats']\t= \"您的一些统计信息：\";\n$lang['profile-total-pastes'] = \"所有粘贴：\";\n$lang['profile-total-pub']\t= \"所有公开粘贴：\";\n$lang['profile-total-unl']\t= \"所有不列出粘贴：\";\n$lang['profile-total-pri']\t= \"所有私有粘贴：\";\n$lang['profile-total-views'] = \"您的粘贴总览：\";\n$lang['embed-hosted-by'] = \"持有：\";\n$lang['view-raw']\t\t= \"查看原始文本\";\n?>\n"
  },
  {
    "path": "langs/zh_TC.php",
    "content": "<?php\n/*\n * Language File: zh_TC, 繁體中文\n * For Taiwan Province, HongKong Special Administrative Region and Macau Special Administrative Region of People's Republic of China.\n * Also for some overseas regions.\n * Translate by bobwxc (bobwxc@yeah.net) 2020\n */\n\n$lang = array();\n\n$lang['banned']         = \"你已經被 \" . $site_name . \"屏蔽。\";\n$lang['expired']\t\t= \"您要查找的粘貼已過期\";\n$lang['guestwelcome']\t= $site_name . \" 允許您提交文本和代碼。\";\n$lang['pleaseregister'] = \"<br /><br /> <a class=\\\"btn btn-default\\\" data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">登錄</a> 或 <a class=\\\"btn btn-default\\\" data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">註冊</a> 來提交新粘貼。此乃免費！\";\n$lang['registertoedit'] = \"<a class=\\\"btn btn-default\\\" data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">登錄</a> 或 <a class=\\\"btn btn-default\\\" data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">註冊</a> 以編輯粘貼或創建分叉。皆為免費！\";\n$lang['editpaste']\t\t= \"編輯\";\n$lang['forkpaste']\t\t= \"創建分叉\";\n$lang['guestmsgtitle']\t= $site_name . \" 用於源代碼或Debug調試文本等。\";\n$lang['guestmsgbody']\t= \"<a data-target=\\\"#signin\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">登錄</a> 或 <a data-target=\\\"#signup\\\" data-toggle=\\\"modal\\\" href=\\\"#\\\">註冊</a> 以編輯、刪除和跟蹤您的粘貼。\";\n$lang['emptypastebin']\t= \"沒有要顯示的粘貼。\";\n$lang['siteprivate']\t= \"此粘貼為私有。\";\n$lang['image_wrong']    = \"驗證碼錯誤！\";\n$lang['missing-input-response']   = \"缺少reCAPTCHA response參數，請驗證設置。\";\n$lang['missing-input-secret']     = \"reCAPTCHA secret參數丟失，請將其添加到設置中。\";\n$lang['missing-input-response']   = \"reCAPTCHA response參數無效，請重新填寫。\";\n$lang['invalid-input-secret']     = \"reCAPTCHA secret參數無效或格式錯誤，請重新檢查粘貼設置。\";\n$lang['empty_paste']\t= \"您不能提交空的粘貼。\";\n$lang['large_paste']\t= \"您的粘貼超過容量限制，最大容量為 \" . $pastelimit . \"MB\";\n$lang['paste_db_error'] = \"無法提交到數據庫。\";\n$lang['error']          = \"出現了一些問題:(\";\n$lang['archive']        = \"存檔粘貼\";\n$lang['contact']        = \"聯絡我們\";\n$lang['full_name']      = \"請填寫您的全名。\";\n$lang['email']          = \"請填寫有效的電子郵件地址。\";\n$lang['email_invalid']  = \"電子郵件地址無效！\";\n$lang['message']        = \"請填寫您的資料。\";\n$lang['login/register'] = \"登錄/註冊\";\n$lang['rememberme']\t\t= \"記住登錄狀態\";\n$lang['mail_acc_con']   = \"$site_name 帳戶認證\";\n$lang['mail_suc']       = \"驗證碼已成功發送到您的電子郵箱。\";\n$lang['email_ver']      = \"電子郵箱已驗證。\";\n$lang['email_not']      = \"找不到電子郵件地址。\";\n$lang['pass_change']    = \"密碼更改成功併發送到您的電子郵箱。\";\n$lang['notverified']\t= \"帳戶未驗證。\";\n$lang['incorrect']\t\t= \"用戶名/密碼錯誤！\";\n$lang['missingfields']\t= \"必須填寫所有字段。\";\n$lang['userexists']     = \"用戶名已被佔用！\";\n$lang['emailexists']\t= \"電子郵件已註冊！\";\n$lang['registered']\t\t= \"帳戶註冊成功。\";\n$lang['usrinvalid']\t\t= \"您的用戶名只能包含字母和數字。\";\n$lang['mypastes']\t\t= \"我的粘貼\";\n$lang['pastedeleted']\t= \"粘貼已刪除。\";\n$lang['databaseerror']\t= \"無法提交到數據庫。\";\n$lang['userchanged']\t= \"用戶名已更改。\";\n$lang['usernotvalid']\t= \"用戶名不可用。\";\n$lang['privatepaste']\t= \"這是私有粘貼。\";\n$lang['wrongpassword']\t= '密碼錯誤！';\n$lang['pwdprotected']\t= '密碼保護的粘貼';\n$lang['notfound']\t\t= \"未找到\";\n$lang['wrongpwd']\t\t= \"密碼錯誤，請重試！\";\n$lang['myprofile']\t\t= \"個人資料\";\n$lang['profileerror']\t= \"無法更新配置信息 \";\n$lang['profileupdated']\t= \"您的個人資料已更新 \";\n$lang['oldpasswrong']\t= \"原密碼錯誤！\";\n$lang['archives']\t\t= \"粘貼存檔\";\n$lang['archivestitle']  = \"此頁包含最新創建的100個公開粘貼。\";\n$lang['pastetitle']\t\t= \"粘貼標題\";\n$lang['pastetime']\t\t= \"時間\";\n$lang['pastesyntax']\t= \"高亮語法\";\n$lang['pasteviews']\t\t= \"粘貼視圖\";\n$lang['wentwrong']\t\t= \"出現了一些問題:(\";\n$lang['versent']\t\t= \"驗證電子郵件已發送到您的電子郵箱。\";\n$lang['modpaste']\t\t= \"修改粘貼\";\n$lang['newpaste']\t\t= \"新建粘貼\";\n$lang['highlighting']\t= \"語法高亮\";\n$lang['expiration']\t\t= \"粘貼有效期\";\n$lang['visibility']\t\t= \"粘貼可見性\";\n$lang['pwopt']\t\t\t= \"查看密碼（可選）\";\n$lang['encrypt']\t\t= \"在數據庫中加密\";\n$lang['entercode']\t\t= \"輸入驗證碼\";\n$lang['almostthere']\t= \"即將成功，一步之遙。\";\n$lang['username']\t\t= \"用戶名\";\n$lang['autogen']\t\t= \"自動生成的用戶名\";\n$lang['setuser']\t\t= \"設置您的用戶名\";\n$lang['keepuser']\t\t= \"保留自動生成的用戶名\";\n$lang['enterpwd']\t\t= \"輸入密碼\";\n$lang['totalpastes']\t= \"所有粘貼：\";\n$lang['membtype']\t\t= \"會員資格類型：\";\n$lang['email']\t\t\t= \"電子郵件\";\n$lang['fullname']\t\t= \"全名\";\n$lang['chgpwd']\t\t\t= \"修改密碼\";\n$lang['curpwd']\t\t\t= \"當前密碼\";\n$lang['newpwd']\t\t\t= \"新密碼\";\n$lang['confpwd']\t\t= \"確認新密碼\";\n$lang['mypastes']\t\t= \"我的粘貼\";\n$lang['viewpastes']\t\t= \"查看我的所有粘貼\";\n$lang['recentpastes']\t= \"近期粘貼\";\n$lang['user_public_pastes'] = \"的粘貼\";\n$lang['yourpastes']\t\t= \"您的粘貼\";\n$lang['mypastestitle']\t= \"所有粘貼，一處呈現。\";\n$lang['delete']\t\t\t= \"刪除\";\n$lang['highlighted']\t= \"文本已選擇, 用 Ctrl+C 快捷鍵來複製到您的剪貼板。(蘋果Mac OS使用 &#8984;+C )\";\n$lang['newpaste']\t\t= \"新建粘貼\";\n$lang['download']\t\t= \"下載\";\n$lang['showlineno']\t\t= \"顯示/隱藏行號\";\n$lang['copyto']\t\t\t= \"複製到剪貼板\";\n$lang['rawpaste']\t\t= \"原始文本\";\n$lang['membersince']    = \"加入：\";\n$lang['delete_error_invalid'] = \"不能刪除粘貼，因為它不存在或非您所擁有。\";\n$lang['not_logged_in']  = \"您必須登錄才能執行此操作。\";\n$lang['public']         = \"公開\";\n$lang['unlisted']       = \"不列出\";\n$lang['private']        = \"私有\";\n$lang['hello']\t\t\t= \"您好\";\n$lang['profile-message'] = \"這是您的個人資料頁，您可以在這裏管理您的粘貼。<br /> 您的所有公開、私有和不列出的粘貼都將顯示在這裏。您也可以從此頁中刪除粘貼。如果其他用戶訪問您的頁面，他們只能看到您的公開粘貼。\";\n$lang['profile-stats']\t= \"您的一些統計資料：\";\n$lang['profile-total-pastes'] = \"所有粘貼：\";\n$lang['profile-total-pub']\t= \"所有公開粘貼：\";\n$lang['profile-total-unl']\t= \"所有不列出粘貼：\";\n$lang['profile-total-pri']\t= \"所有私有粘貼：\";\n$lang['profile-total-views'] = \"您的粘貼總覽：\";\n$lang['embed-hosted-by'] = \"持有：\";\n$lang['view-raw']\t\t= \"查看原始文本\";\n?>"
  },
  {
    "path": "login.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\ndeclare(strict_types=1);\n\nob_start();\n$__clean = function () {\n    if (ob_get_level() > 0 && ob_get_length() !== false) { @ob_clean(); }\n};\n\nrequire_once 'includes/session.php';\nini_set('display_errors', '0');\nini_set('log_errors', '1');\n\nrequire_once 'config.php';\nrequire_once 'includes/password.php';\nrequire_once 'includes/functions.php';\nrequire_once 'mail/mail.php';\nrequire_once 'includes/recaptcha.php';\n\n$error = null;\n$success = null;\n\n// OAuth deps (soft)\n$oauth_ready = true;\n$oauth_autoloader = __DIR__ . '/oauth/vendor/autoload.php';\nif (!file_exists($oauth_autoloader)) {\n    $oauth_ready = false;\n} else {\n    require_once $oauth_autoloader;\n    if (!class_exists('League\\OAuth2\\Client\\Provider\\Google')) $oauth_ready = false;\n}\n// ensure defined for header.php\n$enablegoog = $enablegoog ?? 'no';\n$enablefb   = $enablefb   ?? 'no';\nif (!$oauth_ready) { $enablegoog = 'no'; $enablefb = 'no'; }\n\n// DB (PDO)\ntry {\n    if (!isset($pdo) || !$pdo instanceof PDO) {\n        $pdo = new PDO(\"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\", $dbuser, $dbpassword, [\n            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,\n            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\n            PDO::ATTR_EMULATE_PREPARES => false,\n        ]);\n    }\n} catch (Throwable $e) {\n    error_log(\"login.php: DB connect failed: \" . $e->getMessage());\n    $error = \"Unable to connect to database.\";\n}\n\n// Captcha session bootstrap (reads captcha table into $_SESSION) ---\ntry {\n    if (\n        empty($_SESSION['cap_e']) ||\n        empty($_SESSION['mode']) ||\n        empty($_SESSION['recaptcha_version']) ||\n        empty($_SESSION['recaptcha_sitekey']) ||\n        empty($_SESSION['recaptcha_secretkey'])\n    ) {\n        $row = $pdo->query(\"SELECT cap_e, mode, recaptcha_version, recaptcha_sitekey, recaptcha_secretkey FROM captcha WHERE id = 1\")\n                   ->fetch(PDO::FETCH_ASSOC) ?: [];\n        foreach (['cap_e','mode','recaptcha_version','recaptcha_sitekey','recaptcha_secretkey'] as $k) {\n            if (!isset($_SESSION[$k]) && isset($row[$k])) {\n                $_SESSION[$k] = $row[$k];\n            }\n        }\n    }\n} catch (Throwable $e) {\n    // best-effort; if this fails, require_human() will no-op unless cap_e==='on' and secrets exist\n}\n\n// Site info\ntry {\n    $stmt = $pdo->query(\"SELECT * FROM site_info WHERE id = 1\");\n    $site = $stmt->fetch() ?: [];\n} catch (Throwable $e) { $site = []; }\n$title       = trim($site['title'] ?? 'Paste');\n$des         = trim($site['des'] ?? '');\n$baseurl     = trim($site['baseurl'] ?? '');\n$keyword     = trim($site['keyword'] ?? '');\n$site_name   = trim($site['site_name'] ?? 'Paste');\n$email       = trim($site['email'] ?? '');\n$admin_mail  = $email;\n$admin_name  = $site_name;\n$mod_rewrite = (string)($site['mod_rewrite'] ?? ($mod_rewrite ?? '1')); // avoid undefined in header\n\n// UI: language & theme\ntry {\n    $iface = $pdo->query(\"SELECT * FROM interface WHERE id = 1\")->fetch() ?: [];\n} catch (Throwable $e) { $iface = []; }\n$default_lang  = trim($iface['lang'] ?? 'en.php');\n$default_theme = trim($iface['theme'] ?? 'default');\nrequire_once(\"langs/$default_lang\");\n\n// Page title (avoid undefined in header)\n$p_title = $lang['login/register'] ?? 'Login / Register';\n\n// Ads (optional)\ntry {\n    $ads = $pdo->query(\"SELECT * FROM ads WHERE id = 1\")->fetch() ?: [];\n} catch (Throwable $e) { $ads = []; }\n$text_ads = trim($ads['text_ads'] ?? '');\n$ads_1    = trim($ads['ads_1'] ?? '');\n$ads_2    = trim($ads['ads_2'] ?? '');\n\n// CSRF / basics\n$ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';\nif (empty($_SESSION['csrf_token'])) { $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); }\n$csrf_token = $_SESSION['csrf_token'];\n\n// Ban check\nif (isset($pdo) && is_banned($pdo, $ip)) { $error = $lang['banned'] ?? 'You are banned.'; }\n\n// Logout\nif (isset($_GET['action']) && $_GET['action'] === 'logout') {\n    $_SESSION = [];\n    unset($_SESSION['token'], $_SESSION['oauth_uid'], $_SESSION['username'], $_SESSION['platform'], $_SESSION['id'], $_SESSION['oauth2state']);\n    @session_regenerate_id(true);\n    @session_destroy();\n    $__clean();\n    header('Location: ' . ($baseurl ?: './'));\n    exit;\n}\n\n// Already logged in? \nif (isset($_SESSION['token']) && !(isset($_GET['action']) && $_GET['action'] === 'logout')) {\n    $__clean();\n    header('Location: ./');\n    exit;\n}\n\n// Mail settings (for verify/forgot)\ntry {\n    $mail = $pdo->query(\"SELECT * FROM mail WHERE id = 1\")->fetch() ?: [];\n} catch (Throwable $e) { $mail = []; }\n$verification = trim($mail['verification'] ?? 'disabled');\n\n// Page views (best effort)\ntry {\n    $today = date('Y-m-d');\n    $stmt = $pdo->prepare(\"SELECT id, tpage, tvisit FROM page_view WHERE date = ?\");\n    $stmt->execute([$today]);\n    $row = $stmt->fetch();\n    if ($row) {\n        $tpage = (int)$row['tpage'] + 1; $tvisit = (int)$row['tvisit'];\n        $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM visitor_ips WHERE ip = ? AND visit_date = ?\");\n        $stmt->execute([$ip, $today]);\n        if ((int)$stmt->fetchColumn() === 0) {\n            $tvisit++; $pdo->prepare(\"INSERT INTO visitor_ips (ip, visit_date) VALUES (?, ?)\")->execute([$ip, $today]);\n        }\n        $pdo->prepare(\"UPDATE page_view SET tpage = ?, tvisit = ? WHERE id = ?\")->execute([$tpage, $tvisit, $row['id']]);\n    } else {\n        $pdo->prepare(\"INSERT INTO page_view (date, tpage, tvisit) VALUES (?, 1, 1)\")->execute([$today]);\n        $pdo->prepare(\"INSERT INTO visitor_ips (ip, visit_date) VALUES (?, ?)\")->execute([$ip, $today]);\n    }\n} catch (Throwable $e) { /* ignore */ }\n\n// Actions (verify/resend/forgot/reset)\n$valid_csrf = static fn($token) => hash_equals($_SESSION['csrf_token'] ?? '', (string)$token);\n\n// verify (GET)\nif (isset($_GET['action'], $_GET['code'], $_GET['username']) && $_GET['action'] === 'verify') {\n    $u = filter_var((string)$_GET['username'], FILTER_SANITIZE_SPECIAL_CHARS);\n    $c = filter_var((string)$_GET['code'], FILTER_SANITIZE_SPECIAL_CHARS);\n    try {\n        $stmt = $pdo->prepare(\"SELECT id FROM users WHERE username = ? AND verification_code = ?\");\n        $stmt->execute([$u, $c]);\n        if ($stmt->fetch()) {\n            $pdo->prepare(\"UPDATE users SET verified = '1', verification_code = NULL WHERE username = ?\")->execute([$u]);\n            $success = $lang['email_verified'] ?? 'Email verified successfully. You can now log in.';\n        } else { $error = $lang['invalid_code'] ?? 'Invalid verification code or username.'; }\n    } catch (Throwable $e) { $error = \"Verification error.\"; }\n}\n\n// resend (POST)\nif (isset($_GET['action']) && $_GET['action'] === 'resend'\n    && isset($_POST['email'], $_POST['csrf_token']) && $valid_csrf($_POST['csrf_token'])) {\n    require_human('resend');\n    $email_in = filter_var((string)$_POST['email'], FILTER_SANITIZE_EMAIL);\n    try {\n        $stmt = $pdo->prepare(\"SELECT username, full_name, verified FROM users WHERE email_id = ?\");\n        $stmt->execute([$email_in]);\n        $user = $stmt->fetch();\n        if ($user && (string)$user['verified'] === '0') {\n            $code = bin2hex(random_bytes(16));\n            $pdo->prepare(\"UPDATE users SET verification_code = ? WHERE email_id = ?\")->execute([$code, $email_in]);\n            $verify_url = rtrim($baseurl, '/') . \"/login.php?action=verify&username=\" . urlencode($user['username']) . \"&code=\" . urlencode($code);\n            $subject = $lang['mail_acc_con'] ?? 'Account Confirmation';\n            $body    = \"Hello \" . htmlspecialchars((string)$user['full_name']) . \", please verify your account:<br><br><a href='$verify_url' target='_self'>$verify_url</a>\";\n            send_mail($email_in, $subject, $body, $site_name, $_SESSION['csrf_token']);\n            $success = $lang['mail_suc'] ?? 'Verification email sent.';\n        } else {\n            $success = $lang['mail_suc'] ?? 'Verification email sent.'; // avoid enumeration\n        }\n    } catch (Throwable $e) { $error = \"Could not resend verification.\"; }\n}\n\n// forgot (POST)\nif (isset($_GET['action']) && $_GET['action'] === 'forgot'\n    && isset($_POST['email'], $_POST['csrf_token']) && $valid_csrf($_POST['csrf_token'])) {\n    require_human('forgot');\n    $email_in = filter_var((string)$_POST['email'], FILTER_SANITIZE_EMAIL);\n    try {\n        $stmt = $pdo->prepare(\"SELECT username FROM users WHERE email_id = ?\");\n        $stmt->execute([$email_in]);\n        $user = $stmt->fetch();\n        if ($user) {\n            $code = bin2hex(random_bytes(16));\n            $exp  = date('Y-m-d H:i:s', strtotime('+1 hour'));\n            $pdo->prepare(\"UPDATE users SET reset_code = ?, reset_expiry = ? WHERE email_id = ?\")->execute([$code, $exp, $email_in]);\n            $reset_url = rtrim($baseurl, '/') . \"/login.php?action=reset&username=\" . urlencode($user['username']) . \"&code=\" . urlencode($code);\n            $subject = \"$site_name Password Reset\";\n            $body    = \"To reset your password, click:<br><br><a href='$reset_url' target='_self'>$reset_url</a><br><br>This link expires in 1 hour.\";\n            send_mail($email_in, $subject, $body, $site_name, $_SESSION['csrf_token']);\n        }\n        $success = $lang['pass_change'] ?? 'Password reset link sent. Check your email.';\n    } catch (Throwable $e) { $error = \"Could not start reset process.\"; }\n}\n\n// reset (POST)\nif (isset($_GET['action'], $_GET['username'], $_GET['code']) && $_GET['action'] === 'reset'\n    && isset($_POST['password'], $_POST['csrf_token']) && $valid_csrf($_POST['csrf_token'])) {\n    require_human('reset');\n    $u = filter_var((string)$_GET['username'], FILTER_SANITIZE_SPECIAL_CHARS);\n    $c = filter_var((string)$_GET['code'], FILTER_SANITIZE_SPECIAL_CHARS);\n    $pw = (string)$_POST['password'];\n    try {\n        $stmt = $pdo->prepare(\"SELECT id FROM users WHERE username = ? AND reset_code = ? AND reset_expiry > ?\");\n        $stmt->execute([$u, $c, date('Y-m-d H:i:s')]);\n        if ($stmt->fetch()) {\n            $hash = password_hash($pw, PASSWORD_DEFAULT);\n            $pdo->prepare(\"UPDATE users SET password = ?, reset_code = NULL, reset_expiry = NULL WHERE username = ?\")->execute([$hash, $u]);\n            $success = $lang['pass_reset'] ?? 'Password reset successful. You can now log in.';\n        } else { $error = $lang['invalid_code'] ?? 'Invalid or expired reset code.'; }\n    } catch (Throwable $e) { $error = \"Could not reset password.\"; }\n}\n\n// Login / Signup (POST) — hard gate with reCAPTCHA\n$valid_post = (($_SERVER['REQUEST_METHOD'] ?? 'GET') === 'POST'\n    && isset($_POST['csrf_token']) && $valid_csrf($_POST['csrf_token']));\n\nif ($valid_post) {\n    // LOGIN\n    if (isset($_POST['signin'])) {\n        require_human('login');\n        $u = filter_var((string)($_POST['username'] ?? ''), FILTER_SANITIZE_SPECIAL_CHARS);\n        $p = (string)($_POST['password'] ?? '');\n        if ($u !== '' && $p !== '') {\n            try {\n                $stmt = $pdo->prepare(\"SELECT * FROM users WHERE username = ?\");\n                $stmt->execute([$u]);\n                $user = $stmt->fetch();\n                if ($user && password_verify($p, (string)$user['password'])) {\n                    if ((string)$user['verified'] === '1') {\n                        $new_token = bin2hex(random_bytes(32));\n                        $pdo->prepare(\"UPDATE users SET token = ? WHERE username = ?\")->execute([$new_token, $u]);\n                        $_SESSION['token']     = $new_token;\n                        $_SESSION['oauth_uid'] = $user['oauth_uid'];\n                        $_SESSION['username']  = $u;\n                        $__clean();\n                        header('Location: ' . ($_SERVER['HTTP_REFERER'] ?? $baseurl ?: './'));\n                        exit;\n                    }\n                    $error = ((string)$user['verified'] === '2')\n                        ? ($lang['banned'] ?? 'Your account is banned.')\n                        : ($lang['notverified'] ?? 'Account not verified.');\n                } else { $error = $lang['incorrect'] ?? 'Incorrect username or password.'; }\n            } catch (Throwable $e) { $error = \"Login failed due to a server error.\"; }\n        } else { $error = $lang['missingfields'] ?? 'Please fill in all fields.'; }\n    }\n\n    // SIGNUP\n    if (isset($_POST['signup'])) {\n        require_human('signup');\n        $u  = filter_var((string)($_POST['username'] ?? ''), FILTER_SANITIZE_SPECIAL_CHARS);\n        $p  = (string)($_POST['password'] ?? '');\n        $em = filter_var((string)($_POST['email'] ?? ''), FILTER_SANITIZE_EMAIL);\n        $fn = filter_var((string)($_POST['full'] ?? ''), FILTER_SANITIZE_SPECIAL_CHARS);\n\n        if ($u && $p && $em && $fn) {\n            if (isValidUsername($u)) {\n                try {\n                    // username unique\n                    $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM users WHERE username = ?\");\n                    $stmt->execute([$u]);\n                    if ((int)$stmt->fetchColumn() > 0) {\n                        $error = $lang['userexists'] ?? 'Username already exists.';\n                    } else {\n                        // email unique\n                        $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM users WHERE email_id = ?\");\n                        $stmt->execute([$em]);\n                        if ((int)$stmt->fetchColumn() > 0) {\n                            $error = $lang['emailexists'] ?? 'Email already exists.';\n                        } else {\n                            $hash     = password_hash($p, PASSWORD_DEFAULT);\n                            $verified = ($verification === 'disabled') ? '1' : '0';\n                            $vcode    = ($verification === 'disabled') ? null : bin2hex(random_bytes(16));\n                            $pdo->prepare(\"\n                                INSERT INTO users (oauth_uid, username, email_id, full_name, platform, password, verified, picture, date, ip, verification_code)\n                                VALUES ('0', ?, ?, ?, 'Direct', ?, ?, 'NONE', ?, ?, ?)\n                            \")->execute([$u, $em, $fn, $hash, $verified, date('Y-m-d H:i:s'), $ip, $vcode]);\n\n                            if ($verification !== 'disabled') {\n                                $verify_url = rtrim($baseurl, '/') . \"/login.php?action=verify&username=\" . urlencode($u) . \"&code=\" . urlencode($vcode);\n                                $subject = $lang['mail_acc_con'] ?? 'Account Confirmation';\n                                $body    = \"Hello $fn, verify your $site_name account:<br><br><a href='$verify_url' target='_self'>$verify_url</a>\";\n                                $res = send_mail($em, $subject, $body, $site_name, $_SESSION['csrf_token']);\n                                if (($res['status'] ?? 'error') !== 'success') {\n                                    $error = ($lang['mail_error'] ?? 'Failed to send verification email.');\n                                }\n                            }\n                            if (!$error) {\n                                $success = ($lang['registered'] ?? 'Registration successful.')\n                                    . ($verification !== 'disabled' ? ' Please check your email to verify your account.' : '');\n                            }\n                        }\n                    }\n                } catch (Throwable $e) { $error = \"Registration failed due to a server error.\"; }\n            } else { $error = $lang['usrinvalid'] ?? 'Invalid username. Use only letters, numbers, .#$'; }\n        } else { $error = $lang['missingfields'] ?? 'Please fill in all fields.'; }\n    }\n}\n\n// Mirror messages for theme (which reads $_GET) \nif (!empty($error))   { $_GET['error']   = $error; }\nif (!empty($success)) { $_GET['success'] = $success; }\n\n// OAuth launch (only if enabled & deps ok) -----\nif ($oauth_ready && isset($_GET['login']) && ($enablegoog === 'yes' || $enablefb === 'yes')) {\n    if ($_GET['login'] === 'google' && $enablegoog === 'yes') {\n        $__clean(); header(\"Location: oauth/google.php?login=1\"); exit;\n    }\n    if ($_GET['login'] === 'facebook' && $enablefb === 'yes') {\n        $__clean(); header(\"Location: oauth/facebook.php?login=1\"); exit;\n    }\n    $_GET['error'] = \"Invalid OAuth provider or disabled in config.\";\n}\n\n// Render--\n$__clean();\nheader('Content-Type: text/html; charset=utf-8');\nrequire_once(\"theme/$default_theme/header.php\");\nrequire_once(\"theme/$default_theme/login.php\");\nrequire_once(\"theme/$default_theme/footer.php\");\n"
  },
  {
    "path": "mail/composer.json",
    "content": "{\n    \"require\": {\n        \"phpmailer/phpmailer\": \"^6.10\",\n        \"google/apiclient\": \"^2.18\",\n        \"league/oauth2-google\": \"^4.0\"\n    }\n}\n"
  },
  {
    "path": "mail/index.php",
    "content": ""
  },
  {
    "path": "mail/mail.php",
    "content": "<?php\r\ndeclare(strict_types=1);\r\n/*\r\n * Paste <https://github.com/boxlabss/PASTE>\r\n * Email sending utility using PHPMailer with Gmail OAuth 2.0\r\n */\r\nif (session_status() === PHP_SESSION_NONE) {\r\n    session_start([\r\n        'cookie_secure' => isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on',\r\n        'cookie_httponly' => true,\r\n        'use_strict_mode' => true,\r\n    ]);\r\n}\r\n\r\n// Start output buffering\r\nob_start();\r\n\r\n// Disable display errors\r\nini_set('display_errors', '0');\r\nini_set('log_errors', '1');\r\n\r\n// Check if config.php is included\r\nif (!defined('SECRET')) {\r\n    error_log(\"mail.php: config.php not included or SECRET not defined\");\r\n    ob_end_clean();\r\n    return ['status' => 'error', 'message' => 'Configuration error: config.php not included.'];\r\n}\r\n\r\n// Check required files\r\n$required_files = [\r\n    __DIR__ . '/vendor/autoload.php' => ['phpmailer/phpmailer:^6.9'],\r\n    __DIR__ . '/../oauth/vendor/autoload.php' => ['league/oauth2-client:^2.7', 'league/oauth2-google:^4.0'],\r\n];\r\nforeach ($required_files as $file => $packages) {\r\n    if (!file_exists($file)) {\r\n        $message = empty($packages) ? \"Missing file: $file\" : \"Missing dependency in \" . dirname($file) . \". Run: <code>cd \" . dirname($file) . \" && composer require \" . implode(' ', $packages) . \"</code>\";\r\n        error_log(\"mail.php: $message\");\r\n        ob_end_clean();\r\n        return ['status' => 'error', 'message' => $message];\r\n    }\r\n}\r\n\r\n// Include Composer autoloaders\r\nrequire_once __DIR__ . '/vendor/autoload.php'; // PHPMailer\r\nrequire_once __DIR__ . '/../oauth/vendor/autoload.php'; // OAuth dependencies\r\n\r\nuse PHPMailer\\PHPMailer\\PHPMailer;\r\nuse PHPMailer\\PHPMailer\\Exception;\r\nuse PHPMailer\\PHPMailer\\OAuth;\r\nuse League\\OAuth2\\Client\\Provider\\Google;\r\n\r\nfunction send_mail(string $to, string $subject, string $message, string $name, string $csrf_token): array\r\n{\r\n    global $dbhost, $dbuser, $dbpassword, $dbname;\r\n\r\n    error_log(\"mail.php: send_mail called - To: $to, Subject: $subject, Name: $name, CSRF Token: $csrf_token\");\r\n\r\n\r\n    // Validate CSRF token (bypass for installer if site_info is empty)\r\n    try {\r\n        $pdo_temp = new PDO(\"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\", $dbuser, $dbpassword);\r\n        $pdo_temp->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\r\n        $stmt = $pdo_temp->query(\"SELECT COUNT(*) FROM site_info\");\r\n        $site_info_exists = $stmt->fetchColumn() > 0;\r\n        $pdo_temp = null;\r\n    } catch (PDOException $e) {\r\n        $site_info_exists = false;\r\n    }\r\n    if (!$is_installer && $site_info_exists && (empty($csrf_token) || $csrf_token !== $_SESSION['csrf_token'])) {\r\n        error_log(\"mail.php: CSRF validation failed for email to $to\");\r\n        ob_end_clean();\r\n        return ['status' => 'error', 'message' => 'CSRF validation failed. Please try again.'];\r\n    }\r\n\r\n    // Validate input\r\n    if (empty($to) || !filter_var($to, FILTER_VALIDATE_EMAIL)) {\r\n        error_log(\"mail.php: Invalid or missing recipient email: \" . ($to ?? 'null'));\r\n        ob_end_clean();\r\n        return ['status' => 'error', 'message' => 'Invalid or missing recipient email address.'];\r\n    }\r\n    if (empty($subject)) {\r\n        error_log(\"mail.php: Invalid or missing subject\");\r\n        ob_end_clean();\r\n        return ['status' => 'error', 'message' => 'Invalid or missing email subject.'];\r\n    }\r\n    if (empty($message)) {\r\n        error_log(\"mail.php: Invalid or missing message body\");\r\n        ob_end_clean();\r\n        return ['status' => 'error', 'message' => 'Invalid or missing email message body.'];\r\n    }\r\n    $name = filter_var(trim($name), FILTER_SANITIZE_SPECIAL_CHARS);\r\n\r\n    try {\r\n        // Connect to database\r\n        $pdo = new PDO(\"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\", $dbuser, $dbpassword, [\r\n            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,\r\n            PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\r\n            PDO::ATTR_EMULATE_PREPARES => false,\r\n        ]);\r\n        error_log(\"mail.php: Database connection established\");\r\n\r\n        // Check rate limit\r\n        $email_type = str_contains($subject, 'Account Confirmation') ? 'verification' : (str_contains($subject, 'Password Reset') ? 'reset' : 'test');\r\n        $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM mail_log WHERE email = ? AND sent_at > ? AND type = ?\");\r\n        $stmt->execute([$to, date('Y-m-d H:i:s', strtotime('-1 hour')), $email_type]);\r\n        if ($stmt->fetchColumn() >= 5) {\r\n            error_log(\"mail.php: Rate limit exceeded for $email_type email to $to\");\r\n            return ['status' => 'error', 'message' => 'Too many email requests. Please try again later.'];\r\n        }\r\n\r\n        // Fetch baseurl and site info\r\n        $stmt = $pdo->query(\"SELECT baseurl, site_name, email FROM site_info WHERE id = 1\");\r\n        $site_info = $stmt->fetch();\r\n        if (!$site_info || empty($site_info['baseurl'])) {\r\n            error_log(\"mail.php: Base URL not found in site_info\");\r\n            ob_end_clean();\r\n            return ['status' => 'error', 'message' => 'Base URL not configured in Site Info. Run install.php to set it.'];\r\n        }\r\n        $baseurl = rtrim($site_info['baseurl'], '/') . '/';\r\n        $site_name = trim($site_info['site_name'] ?? 'Paste');\r\n        $from_email = trim($site_info['email'] ?? '');\r\n\r\n        // Fetch mail settings\r\n        $stmt = $pdo->query(\"SELECT verification, smtp_host, smtp_username, smtp_password, smtp_port, protocol, auth, socket, oauth_client_id, oauth_client_secret, oauth_refresh_token FROM mail WHERE id = 1\");\r\n        $mail_settings = $stmt->fetch();\r\n        if (!$mail_settings) {\r\n            error_log(\"mail.php: Mail settings not found in database\");\r\n            ob_end_clean();\r\n            return ['status' => 'error', 'message' => 'Mail settings not found. Configure in Admin Settings.'];\r\n        }\r\n\r\n        $smtp_host = trim($mail_settings['smtp_host'] ?? '');\r\n        $smtp_username = trim($mail_settings['smtp_username'] ?? '');\r\n        $smtp_password = trim($mail_settings['smtp_password'] ?? '');\r\n        $smtp_port = trim($mail_settings['smtp_port'] ?? '');\r\n        $protocol = trim($mail_settings['protocol'] ?? '');\r\n        $auth = trim($mail_settings['auth'] ?? '');\r\n        $socket = trim($mail_settings['socket'] ?? '');\r\n        $oauth_client_id = trim($mail_settings['oauth_client_id'] ?? '');\r\n        $oauth_client_secret = trim($mail_settings['oauth_client_secret'] ?? '');\r\n        $oauth_refresh_token = trim($mail_settings['oauth_refresh_token'] ?? '');\r\n        error_log(\"mail.php: Mail settings - Host: $smtp_host, Username: $smtp_username, Port: $smtp_port, Protocol: $protocol, Auth: $auth, Socket: $socket, Refresh Token: \" . ($oauth_refresh_token ? substr($oauth_refresh_token, 0, 10) . '...' : 'none'));\r\n\r\n        // Log email attempt\r\n        $stmt = $pdo->prepare(\"INSERT INTO mail_log (email, sent_at, type) VALUES (?, ?, ?)\");\r\n        $stmt->execute([$to, date('Y-m-d H:i:s'), $email_type]);\r\n        error_log(\"mail.php: Email attempt logged for $to, type: $email_type\");\r\n\t\t\r\n        // Validate SMTP settings\r\n        if ($protocol !== '2') {\r\n            error_log(\"mail.php: Invalid mail protocol: expected SMTP (2), got $protocol\");\r\n            ob_end_clean();\r\n            return ['status' => 'error', 'message' => 'Mail protocol must be set to SMTP in Admin Settings.'];\r\n        }\r\n        if (empty($smtp_host) || !preg_match('/^[0-9]+$/', $smtp_port) || !in_array($socket, ['tls', 'ssl', ''], true)) {\r\n            error_log(\"mail.php: Invalid SMTP settings - host=$smtp_host, port=$smtp_port, socket=$socket\");\r\n            ob_end_clean();\r\n            return ['status' => 'error', 'message' => 'Invalid SMTP host, port, or security protocol in Mail Settings.'];\r\n        }\r\n        if ($smtp_host === 'smtp.gmail.com' && $auth === 'true' && (empty($oauth_client_id) || empty($oauth_client_secret) || empty($oauth_refresh_token))) {\r\n            error_log(\"mail.php: Missing OAuth credentials for Gmail SMTP\");\r\n            ob_end_clean();\r\n            return ['status' => 'error', 'message' => 'Missing OAuth credentials for Gmail SMTP. Complete OAuth authorization in Admin Settings.'];\r\n        }\r\n\r\n        // Validate from email\r\n        if (empty($from_email) || !filter_var($from_email, FILTER_VALIDATE_EMAIL)) {\r\n            $from_email = $smtp_username;\r\n            if (empty($from_email) || !filter_var($from_email, FILTER_VALIDATE_EMAIL)) {\r\n                error_log(\"mail.php: Invalid or empty from_email, smtp_username: \" . (empty($smtp_username) ? 'Not set' : 'Set'));\r\n                ob_end_clean();\r\n                return ['status' => 'error', 'message' => 'Invalid or missing sender email address. Check Admin Email in Site Info or SMTP User in Mail Settings.'];\r\n            }\r\n        }\r\n\r\n        // Initialize PHPMailer\r\n        $mailer = new PHPMailer(true);\r\n        $mailer->CharSet = 'UTF-8';\r\n        $mailer->Encoding = 'base64';\r\n        $mailer->SMTPDebug = defined('SMTP_DEBUG') && SMTP_DEBUG ? 2 : 0;\r\n        $mailer->Debugoutput = function($str, $level) { error_log(\"mail.php: SMTP Debug [$level]: $str\"); };\r\n        $mailer->isSMTP();\r\n        $mailer->Host = $smtp_host;\r\n        $mailer->SMTPAuth = ($auth === 'true');\r\n        $mailer->SMTPSecure = $socket;\r\n        $mailer->Port = (int) $smtp_port;\r\n\r\n        // Configure OAuth for Gmail\r\n        if ($mailer->SMTPAuth && $smtp_host === 'smtp.gmail.com') {\r\n            $provider = new Google([\r\n                'clientId' => $oauth_client_id,\r\n                'clientSecret' => $oauth_client_secret,\r\n                'redirectUri' => $baseurl . 'oauth/google_smtp.php',\r\n            ]);\r\n            try {\r\n                $accessToken = $provider->getAccessToken('refresh_token', ['refresh_token' => $oauth_refresh_token]);\r\n                if (!$accessToken) {\r\n                    error_log(\"mail.php: Failed to obtain OAuth access token for $from_email\");\r\n                    ob_end_clean();\r\n                    return ['status' => 'error', 'message' => 'Failed to obtain OAuth access token.'];\r\n                }\r\n                $mailer->AuthType = 'XOAUTH2';\r\n                $mailer->setOAuth(new OAuth([\r\n                    'provider' => $provider,\r\n                    'clientId' => $oauth_client_id,\r\n                    'clientSecret' => $oauth_client_secret,\r\n                    'refreshToken' => $oauth_refresh_token,\r\n                    'userName' => $from_email, // Use admin email\r\n                ]));\r\n            } catch (\\League\\OAuth2\\Client\\Provider\\Exception\\IdentityProviderException $e) {\r\n                error_log(\"mail.php: OAuth error for $from_email: \" . $e->getMessage());\r\n                ob_end_clean();\r\n                return ['status' => 'error', 'message' => 'OAuth error: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8')];\r\n            }\r\n        } else {\r\n            $mailer->Username = $smtp_username;\r\n            $mailer->Password = $smtp_password;\r\n        }\r\n\r\n        // Set email details\r\n        $mailer->setFrom($from_email, $site_name);\r\n        $mailer->addAddress($to, $name);\r\n        $mailer->isHTML(true);\r\n        $mailer->Subject = $subject;\r\n        $mailer->Body = $message;\r\n        $mailer->AltBody = strip_tags($message);\r\n\r\n        // Send email\r\n        $mailer->send();\r\n        error_log(\"mail.php: Email sent successfully to $to\");\r\n        ob_end_clean();\r\n        return ['status' => 'success', 'message' => 'Email sent successfully'];\r\n    } catch (Exception $e) {\r\n        error_log(\"mail.php: SMTP error sending to $to: \" . $e->getMessage());\r\n        ob_end_clean();\r\n        return ['status' => 'error', 'message' => 'Failed to send email: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8')];\r\n    } catch (PDOException $e) {\r\n        error_log(\"mail.php: Database error: \" . $e->getMessage());\r\n        ob_end_clean();\r\n        return ['status' => 'error', 'message' => 'Database error: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8')];\r\n    } finally {\r\n        $pdo = null;\r\n    }\r\n}\r\n?>"
  },
  {
    "path": "oauth/composer.json",
    "content": "{\n    \"require\": {\n        \"google/apiclient\": \"^2.12\",\n        \"league/oauth2-client\": \"^2.8\",\n        \"league/oauth2-google\": \"^4.0\"\n    }\n}\n"
  },
  {
    "path": "oauth/facebook.php",
    "content": "<?php\n/*\n * Paste <https://github.com/jordansamuel/PASTE>\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in GPL.txt for more details.\n */\nsession_start();\n\nrequire_once('facebook/facebook.php');\nrequire_once('../config.php');\n\n// Current Date & User IP\n$date = date('jS F Y');\n$ip   = $_SERVER['REMOTE_ADDR'];\n\n// Database Connection\n$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname);\nif (mysqli_connect_errno()) {\n    die(\"Unable connect to database\");\n}\n\n$facebook = new Facebook(array(\n    'appId' => FB_APP_ID,\n    'secret' => FB_APP_SECRET\n));\n\n$user = $facebook->getUser();\n\nif ($user) {\n    try {\n        // Proceed knowing you have a logged in user who's authenticated.\n        $user_profile = $facebook->api('/me');\n    }\n    catch (FacebookApiException $e) {\n        \n        $user = null;\n    }\n    \n    if (!empty($user_profile)) {\n        # User info ok? Let's print it (Here we will be adding the login and registering routines)\n        \n        $client_name  = $user_profile['name'];\n        $client_id    = $user_profile['id'];\n        $client_email = $user_profile['email'];\n        $client_pic   = $user_profile['picture'];\n        $client_plat  = 'Facebook';\n        \n        \n        if (!empty($user_profile)) {\n            $query = mysqli_query($con, \"SELECT * FROM users WHERE oauth_uid='$client_id'\");\n            if (mysqli_num_rows($query) > 0) {\n                $query  = \"SELECT * FROM users WHERE oauth_uid='$client_id'\";\n                $result = mysqli_query($con, $query);\n                while ($row = mysqli_fetch_array($result)) {\n                    $user_username = $row['username'];\n                    $db_verified   = $row['verified'];\n                }\n                if ($db_verified == \"2\") {\n                    die(\"Your account has been banned.\");\n                } else {\n                    \n                    $_SESSION['username']  = $user_username;\n                    $_SESSION['token']     = Md5($db_id . $username);\n                    $_SESSION['oauth_uid'] = $client_id;\n                    $_SESSION['pic']       = $client_pic;\n                    \n                    $old_user = 1;\n                    header(\"Location: .\");\n                    exit();\n                }\n            } else {\n                $new_user = 1;\n                #user not present.\n                $query    = \"SELECT @last_id := MAX(id) FROM users\";\n                $result   = mysqli_query($con, $query);\n                while ($row = mysqli_fetch_array($result)) {\n                    $last_id = $row['@last_id := MAX(id)'];\n                }\n                if ($last_id == \"\" || $last_id == null) {\n                    $username = \"User1\";\n                } else {\n                    $last_id  = $last_id + 1;\n                    $username = \"User$last_id\";\n                }\n                $_SESSION['username']  = $username;\n                $_SESSION['oauth_uid'] = $client_id;\n                $_SESSION['token']     = Md5($db_id . $username);\n                $query                 = \"INSERT INTO users (oauth_uid,username,email_id,full_name,platform,password,verified,picture,date,ip) VALUES ('$client_id','$username','$client_email','$client_name','$client_plat','$password','1','$client_pic','$date','$ip')\";\n                mysqli_query($con, $query);\n                header(\"Location: oauth.php?new_user\");\n                exit();\n            }\n            \n        }\n    } else {\n        # For testing purposes, if there was an error, let's kill the script\n        die(\"There was an error.\");\n    }\n} else {\n    if (isset($_GET['login'])) {\n        # There's no active session, let's generate one\n        $login_url = $facebook->getLoginUrl(array(\n            'scope' => 'email'\n        ));\n        header(\"Location: \" . $login_url);\n        exit();\n    }\n}\n?>\n"
  },
  {
    "path": "oauth/google.php",
    "content": "<?php\n/*\n * OAuth2 user integration for Google\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\nob_start(); // start output buffering to avoid header issues\nsession_start();\n\n// include config (DB creds, OAuth constants)\nrequire_once '../config.php';\n\n// fetch $baseurl from DB (site_info)\ntry {\n    $pdo = new PDO(\"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\", $dbuser, $dbpassword);\n    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);\n    $stmt = $pdo->prepare(\"SELECT baseurl FROM site_info WHERE id = 1\");\n    $stmt->execute();\n    $result = $stmt->fetch(PDO::FETCH_ASSOC);\n    $baseurl = $result['baseurl'] ?? '';\n} catch (PDOException $e) {\n    error_log(\"google.php: Failed to fetch baseurl from site_info: \" . $e->getMessage());\n    // fallback: build baseurl manually\n    $base_path = rtrim(dirname($_SERVER['PHP_SELF'], 2), '/') . '/';\n    $baseurl = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https://' : 'http://') . $_SERVER['SERVER_NAME'] . $base_path;\n}\n\n// force trailing slash on baseurl\n$baseurl = rtrim($baseurl, '/') . '/';\n\n// load composer autoload for OAuth lib\nrequire_once '../oauth/vendor/autoload.php';\n\nuse League\\OAuth2\\Client\\Provider\\Google;\n\n// check required OAuth constants exist\nif (!defined('G_CLIENT_ID') || !defined('G_CLIENT_SECRET') || !defined('G_REDIRECT_URI')) {\n    error_log(\"google.php: Google OAuth constants not defined in config.php\");\n    header('Location: ' . $baseurl . 'login.php?error=' . urlencode('OAuth configuration error'));\n    exit;\n}\n\n// init Google OAuth provider\n$provider = new Google([\n    'clientId'     => G_CLIENT_ID,\n    'clientSecret' => G_CLIENT_SECRET,\n    'redirectUri'  => G_REDIRECT_URI,\n    'accessType'   => 'offline',\n    'scopes'       => G_SCOPES,\n]);\n\n// start OAuth login\nif (isset($_GET['login']) && $_GET['login'] === '1') {\n    $authUrl = $provider->getAuthorizationUrl(['prompt' => 'select_account']);\n    $_SESSION['oauth2state'] = $provider->getState(); // CSRF protection\n    if (ob_get_length()) { ob_end_clean(); }\n    header('Location: ' . $authUrl);\n    exit;\n}\n\n// handle OAuth callback\nif (isset($_GET['code']) && isset($_GET['state']) && isset($_SESSION['oauth2state']) && $_GET['state'] === $_SESSION['oauth2state']) {\n    try {\n        // exchange code for token\n        $accessToken = $provider->getAccessToken('authorization_code', ['code' => $_GET['code']]);\n        $resourceOwner = $provider->getResourceOwner($accessToken);\n        $user = $resourceOwner->toArray();\n\n        // extract user data\n        $email = $user['email'] ?? '';\n        $name = $user['name'] ?? strstr($email, '@', true);\n        $oauth_uid = $user['id'] ?? ''; // google user id\n\n        // check if user already exists by email\n        $stmt = $pdo->prepare(\"SELECT id, username FROM users WHERE email_id = ?\");\n        $stmt->execute([$email]);\n        $existingUser = $stmt->fetch(PDO::FETCH_ASSOC);\n\n        if ($existingUser) {\n            // update session + token\n            $_SESSION['token'] = bin2hex(random_bytes(32));\n            $_SESSION['username'] = $existingUser['username'];\n            $_SESSION['id'] = $existingUser['id'];\n            $_SESSION['platform'] = 'Google';\n            $stmt = $pdo->prepare(\"UPDATE users SET token = ?, oauth_uid = ?, platform = ? WHERE id = ?\");\n            $stmt->execute([$_SESSION['token'], $oauth_uid, 'Google', $existingUser['id']]);\n        } else {\n            // create new OAuth user with randomised username\n            $username = strstr($email, '@', true) . '_' . substr(md5(uniqid()), 0, 4);\n            $token = bin2hex(random_bytes(32));\n            $stmt = $pdo->prepare(\"INSERT INTO users (oauth_uid, username, email_id, full_name, platform, token, verified, username_locked, date, ip) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\");\n            $stmt->execute([\n                $oauth_uid,\n                $username,\n                $email,\n                $name,\n                'Google',\n                $token,\n                '1',       // email verified\n                '0',       // username_locked = false so user can change it once\n                date('Y-m-d H:i:s'),\n                $_SERVER['REMOTE_ADDR']\n            ]);\n            $_SESSION['token'] = $token;\n            $_SESSION['username'] = $username;\n            $_SESSION['id'] = $pdo->lastInsertId();\n            $_SESSION['platform'] = 'Google';\n        }\n\n        // clear oauth state + redirect\n        unset($_SESSION['oauth2state']);\n        header('Location: ' . $baseurl);\n        exit;\n\n    } catch (Exception $e) {\n        error_log(\"google.php: OAuth error: \" . $e->getMessage());\n        header('Location: ' . $baseurl . 'login.php?error=' . urlencode('OAuth error'));\n        exit;\n    }\n}\n// if Google returned error\nelseif (isset($_GET['error'])) {\n    error_log(\"google.php: OAuth error from Google: \" . $_GET['error']);\n    header('Location: ' . $baseurl . 'login.php?error=' . urlencode('OAuth error'));\n    exit;\n}\n\n// default redirect back to login\nheader('Location: ' . $baseurl . 'login.php');\nexit;\n\nob_end_flush(); // flush output buffer\n"
  },
  {
    "path": "oauth/google_smtp.php",
    "content": "<?php\r\n/*\r\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\r\n * demo: https://paste.boxlabs.uk/\r\n *\r\n * https://phpaste.sourceforge.io/\r\n *\r\n * This program is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 3\r\n * of the License, or (at your option) any later version.\r\n * \r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r\n * GNU General Public License in LICENCE for more details.\r\n */\r\ndeclare(strict_types=1);\r\nsession_start([\r\n    'cookie_secure' => isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on',\r\n    'cookie_httponly' => true,\r\n    'use_strict_mode' => true,\r\n]);\r\n\r\nob_start();\r\nini_set('display_errors', '0');\r\nini_set('log_errors', '1');\r\n\r\nrequire_once __DIR__ . '/vendor/autoload.php';\r\n\r\nuse Google\\Client as Google_Client;\r\n\r\ntry {\r\n    // Restrict to admins\r\n    if (!isset($_SESSION['admin_login']) || !isset($_SESSION['admin_id'])) {\r\n        error_log(\"oauth/google_smtp.php: Unauthorized access attempt from {$_SERVER['REMOTE_ADDR']}\");\r\n        header('Content-Type: application/json; charset=utf-8');\r\n        ob_end_clean();\r\n        echo json_encode([\r\n            'status' => 'error',\r\n            'message' => 'Admin authentication required.',\r\n            'redirect' => '../admin/configuration.php'\r\n        ]);\r\n        exit;\r\n    }\r\n\r\n    // CSRF token generation\r\n    if (!isset($_SESSION['csrf_token'])) {\r\n        $_SESSION['csrf_token'] = bin2hex(random_bytes(32));\r\n    }\r\n\r\n    // Ensure config.php exists\r\n    if (!file_exists(__DIR__ . '/../config.php')) {\r\n        throw new Exception(\"Missing config.php at ../config.php\");\r\n    }\r\n    require_once __DIR__ . '/../config.php';\r\n\r\n    // Connect to DB\r\n    if (!isset($dbhost, $dbuser, $dbpassword, $dbname)) {\r\n        throw new Exception(\"Database configuration missing in config.php.\");\r\n    }\r\n    $pdo = new PDO(\"mysql:host=$dbhost;dbname=$dbname;charset=utf8mb4\", $dbuser, $dbpassword, [\r\n        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,\r\n        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,\r\n        PDO::ATTR_EMULATE_PREPARES => false,\r\n    ]);\r\n\r\n    // Fetch baseurl for redirect URI\r\n    $stmt = $pdo->query(\"SELECT baseurl FROM site_info WHERE id = 1\");\r\n    $site_info = $stmt->fetch();\r\n    if (!$site_info || empty($site_info['baseurl'])) {\r\n        throw new Exception(\"Base URL not found in site_info. Go to /admin/configuration.php\");\r\n    }\r\n    $baseurl = rtrim($site_info['baseurl'], '/') . '/';\r\n    $redirect_uri = $baseurl . 'oauth/google_smtp.php';\r\n\r\n    // Fetch existing mail settings\r\n    $stmt = $pdo->query(\"SELECT oauth_client_id, oauth_client_secret, oauth_refresh_token FROM mail WHERE id = 1\");\r\n    $mail_settings = $stmt->fetch();\r\n    $client_id = trim($mail_settings['oauth_client_id'] ?? '');\r\n    $client_secret = trim($mail_settings['oauth_client_secret'] ?? '');\r\n    $refresh_token = trim($mail_settings['oauth_refresh_token'] ?? '');\r\n\r\n    // Handle saving client credentials via AJAX POST\r\n    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['save_credentials'])) {\r\n        if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {\r\n            throw new Exception(\"CSRF validation failed for POST request.\");\r\n        }\r\n        $client_id = trim($_POST['client_id'] ?? '');\r\n        $client_secret = trim($_POST['client_secret'] ?? '');\r\n        if (empty($client_id) || empty($client_secret)) {\r\n            throw new Exception(\"Please fill in both Client ID and Client Secret.\");\r\n        }\r\n        $stmt = $pdo->prepare(\"UPDATE mail SET oauth_client_id = ?, oauth_client_secret = ? WHERE id = 1\");\r\n        $stmt->execute([$client_id, $client_secret]);\r\n        error_log(\"oauth/google_smtp.php: OAuth credentials saved for client_id={$client_id}\");\r\n        header('Content-Type: application/json; charset=utf-8');\r\n        ob_end_clean();\r\n        echo json_encode(['status' => 'success', 'message' => 'OAuth credentials saved. Click \"Authorize Gmail SMTP\" to proceed.', 'reload' => true]);\r\n        exit;\r\n    }\r\n\r\n    // Initialize Google client when needed\r\n    if ((isset($_GET['start']) && !empty($client_id) && !empty($client_secret)) || isset($_GET['code'])) {\r\n        $gclient = new Google_Client();\r\n        $gclient->setClientId($client_id);\r\n        $gclient->setClientSecret($client_secret);\r\n        $gclient->setRedirectUri($redirect_uri);\r\n\r\n        // IMPORTANT: use full Gmail scope for SMTP access\r\n        $gclient->setScopes(['https://mail.google.com/']);\r\n        $gclient->setAccessType('offline'); // request refresh token\r\n        $gclient->setPrompt('consent');     // ensure refresh token is returned\r\n        $gclient->setState($_SESSION['csrf_token']);\r\n    }\r\n\r\n    // Start OAuth flow: redirect to Google consent screen\r\n    if (isset($_GET['start'])) {\r\n        if (empty($client_id) || empty($client_secret)) {\r\n            throw new Exception(\"Please save OAuth Client ID and Secret first.\");\r\n        }\r\n        $authUrl = $gclient->createAuthUrl();\r\n        error_log(\"oauth/google_smtp.php: Redirecting to Google OAuth: $authUrl\");\r\n        ob_end_clean();\r\n        header('Location: ' . $authUrl);\r\n        exit;\r\n    }\r\n\r\n    // OAuth callback: exchange code for tokens\r\n    if (isset($_GET['code'])) {\r\n        if (!isset($_GET['state']) || $_GET['state'] !== $_SESSION['csrf_token']) {\r\n            throw new Exception(\"CSRF validation failed for OAuth callback.\");\r\n        }\r\n        if (empty($client_id) || empty($client_secret)) {\r\n            throw new Exception(\"OAuth Client ID or Secret not set in mail settings.\");\r\n        }\r\n\r\n        $token = $gclient->fetchAccessTokenWithAuthCode($_GET['code']);\r\n        if (isset($token['error'])) {\r\n            // Provide a safe message for admin and log details\r\n            error_log(\"oauth/google_smtp.php: Token error: \" . json_encode($token));\r\n            throw new Exception(\"Failed to obtain access token: \" . htmlspecialchars($token['error_description'] ?? $token['error']));\r\n        }\r\n\r\n        $new_refresh = $token['refresh_token'] ?? null;\r\n        if (!$new_refresh) {\r\n            // If Google didn't return a refresh token, likely user previously authorized without 'prompt=consent'\r\n            throw new Exception(\"No refresh token received. Ensure you've used the provided 'Authorize Gmail SMTP' button which forces a fresh consent screen.\");\r\n        }\r\n\r\n        // Save refresh token to DB\r\n        $stmt = $pdo->prepare(\"UPDATE mail SET oauth_refresh_token = ? WHERE id = 1\");\r\n        $stmt->execute([$new_refresh]);\r\n        error_log(\"oauth/google_smtp.php: OAuth refresh token saved to DB.\");\r\n        ob_end_clean();\r\n        header('Location: ../admin/configuration.php');\r\n        exit;\r\n    }\r\n\r\n    // Render HTML\r\n    header('Content-Type: text/html; charset=UTF-8');\r\n    ob_end_flush();\r\n\r\n} catch (Exception $e) {\r\n    error_log(\"oauth/google_smtp.php: Error: \" . $e->getMessage());\r\n    header('Content-Type: application/json; charset=utf-8');\r\n    ob_end_clean();\r\n    echo json_encode([\r\n        'status' => 'error',\r\n        'message' => 'OAuth error: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'),\r\n        'reload' => true\r\n    ]);\r\n    exit;\r\n}\r\n?>\r\n<!doctype html>\r\n<html lang=\"en\">\r\n<head>\r\n    <meta charset=\"utf-8\">\r\n    <title>Paste - Google OAuth Setup for Gmail SMTP</title>\r\n    <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\r\n    <link rel=\"shortcut icon\" href=\"../admin/favicon.ico\">\r\n    <link href=\"../admin/css/paste.css\" rel=\"stylesheet\" type=\"text/css\" />\r\n</head>\r\n<body>\r\n    <div id=\"top\" class=\"clearfix\">\r\n        <div class=\"applogo\"><a href=\"../\" class=\"logo\">Paste</a></div>\r\n        <ul class=\"top-right\">\r\n            <li class=\"dropdown link\">\r\n                <a href=\"#\" class=\"profilebox\"><b><?php echo htmlspecialchars($_SESSION['admin_login']); ?></b></a>\r\n            </li>\r\n        </ul>\r\n    </div>\r\n\r\n    <div class=\"content\">\r\n        <div class=\"container-widget\">\r\n            <div class=\"panel panel-widget\">\r\n                <div class=\"panel-body\">\r\n                    <h2>Google OAuth 2.0 Setup for Gmail SMTP</h2>\r\n\r\n                    <form class=\"form-horizontal\" method=\"POST\" action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>\">\r\n                        <input type=\"hidden\" name=\"csrf_token\" value=\"<?php echo htmlspecialchars($_SESSION['csrf_token']); ?>\">\r\n                        <div class=\"form-group\">\r\n                            <label class=\"col-sm-2 control-label\">Client ID</label>\r\n                            <div class=\"col-sm-10\">\r\n                                <input type=\"text\" class=\"form-control\" name=\"client_id\" placeholder=\"Google OAuth Client ID\" value=\"<?php echo htmlspecialchars($client_id); ?>\">\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"form-group\">\r\n                            <label class=\"col-sm-2 control-label\">Client Secret</label>\r\n                            <div class=\"col-sm-10\">\r\n                                <input type=\"text\" class=\"form-control\" name=\"client_secret\" placeholder=\"Google OAuth Client Secret\" value=\"<?php echo htmlspecialchars($client_secret); ?>\">\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"form-group\">\r\n                            <div class=\"col-sm-offset-2 col-sm-10\">\r\n                                <button type=\"submit\" name=\"save_credentials\" class=\"btn btn-default\">Save Credentials</button>\r\n                                <?php if (!empty($client_id) && !empty($client_secret)): ?>\r\n                                    <a href=\"?start=1\" class=\"btn btn-info\">Authorize Gmail SMTP</a>\r\n                                <?php else: ?>\r\n                                    <button type=\"button\" class=\"btn btn-info\" disabled>Authorize Gmail SMTP (save creds first)</button>\r\n                                <?php endif; ?>\r\n                            </div>\r\n                        </div>\r\n                    </form>\r\n\r\n                    <p><a href=\"https://console.developers.google.com\" target=\"_blank\" rel=\"noreferrer\">Create or manage your Google OAuth credentials</a></p>\r\n                    <p>Redirect URI for Google Cloud Console: <code><?php echo htmlspecialchars($redirect_uri); ?></code></p>\r\n\r\n                    <?php if (!empty($refresh_token)): ?>\r\n                        <p><strong>Refresh Token Status:</strong> A refresh token is saved in the database.</p>\r\n                    <?php else: ?>\r\n                        <p><strong>Refresh Token Status:</strong> No refresh token saved. Click \"Authorize Gmail SMTP\" to obtain one (you'll be redirected to Google).</p>\r\n                    <?php endif; ?>\r\n\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <div class=\"row footer\">\r\n            <div class=\"col-md-6 text-left\">\r\n                <a href=\"https://github.com/boxlabss/PASTE\" target=\"_blank\" rel=\"noreferrer\">Updates</a> &mdash; <a href=\"https://github.com/boxlabss/PASTE/issues\" target=\"_blank\" rel=\"noreferrer\">Bugs</a>\r\n            </div>\r\n            <div class=\"col-md-6 text-right\">\r\n                Powered by <a href=\"https://phpaste.sourceforge.io\" target=\"_blank\" rel=\"noreferrer\">Paste</a>\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <script src=\"../admin/js/jquery.min.js\"></script>\r\n    <script src=\"../admin/js/bootstrap.min.js\"></script>\r\n    <script>\r\n    document.addEventListener('DOMContentLoaded', function() {\r\n        // AJAX form submit\r\n        document.querySelector('form').addEventListener('submit', function(e) {\r\n            e.preventDefault();\r\n            const btn = this.querySelector('button[name=\"save_credentials\"]');\r\n            btn.disabled = true;\r\n            const formData = new FormData(this);\r\n            fetch(this.action, { method: 'POST', body: formData })\r\n                .then(r => r.json())\r\n                .then(data => {\r\n                    btn.disabled = false;\r\n                    if (data.status === 'success') {\r\n                        if (data.reload) window.location.reload();\r\n                    } else {\r\n                        alert('Error: ' + data.message);\r\n                        if (data.reload) window.location.reload();\r\n                    }\r\n                })\r\n                .catch(err => {\r\n                    btn.disabled = false;\r\n                    alert('Request failed: ' + err.message);\r\n                });\r\n        });\r\n    });\r\n    </script>\r\n</body>\r\n</html>\r\n<?php $pdo = null; ?>\r\n"
  },
  {
    "path": "oauth/index.php",
    "content": ""
  },
  {
    "path": "pages.php",
    "content": "<?php\n/*\n * Paste 3 <old repo: https://github.com/jordansamuel/PASTE>  new: https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n * https://phpaste.sourceforge.io/  -  https://sourceforge.net/projects/phpaste/\n *\n * Licensed under GNU General Public License, version 3 or later.\n * See LICENCE for details.\n */\nrequire_once 'includes/session.php';\nrequire_once 'config.php';\nrequire_once 'includes/functions.php';\n\n// UTF-8\nheader('Content-Type: text/html; charset=utf-8');\n\n$date = date('Y-m-d');\n$ip = $_SERVER['REMOTE_ADDR'];\n$data_ip = @file_get_contents('tmp/temp.tdata') ?: '';\n\n// Database Connection (PDO from config.php)\nglobal $pdo;\n\ntry {\n    // Get site info\n    $stmt = $pdo->query(\"SELECT * FROM site_info WHERE id = '1'\");\n    $row = $stmt->fetch();\n    if (!$row) {\n        throw new Exception(\"Site configuration not found.\");\n    }\n    $title = trim($row['title']);\n    $des = trim($row['des']);\n    $baseurl = rtrim(trim($row['baseurl']));\n    $keyword = trim($row['keyword']);\n    $site_name = trim($row['site_name']);\n    $email = trim($row['email']);\n    $twit = trim($row['twit']);\n    $face = trim($row['face']);\n    $gplus = trim($row['gplus']);\n    $ga = trim($row['ga']);\n    $additional_scripts = trim($row['additional_scripts']);\n\n    // Set theme and language\n    $stmt = $pdo->query(\"SELECT * FROM interface WHERE id = '1'\");\n    $row = $stmt->fetch();\n    if (!$row) {\n        throw new Exception(\"Interface configuration not found.\");\n    }\n    $default_lang = trim($row['lang']);\n    $default_theme = trim($row['theme']);\n    require_once(\"langs/$default_lang\");\n\n    // Check if IP is banned\n    if (is_banned($pdo, $ip)) die($lang['banned']);\n\n    // Logout\n    if (isset($_GET['logout'])) {\n        header('Location: ' . ($_SERVER['HTTP_REFERER'] ?? $baseurl));\n        unset($_SESSION['token']);\n        unset($_SESSION['oauth_uid']);\n        unset($_SESSION['username']);\n        session_destroy();\n        exit;\n    }\n\n\t// Page views\n\t$date = date('Y-m-d');\n\t$ip = $_SERVER['REMOTE_ADDR'];\n\n\ttry {\n\t\t// Fetch or create the page_view record for today\n\t\t$stmt = $pdo->prepare(\"SELECT id, tpage, tvisit FROM page_view WHERE date = ?\");\n\t\t$stmt->execute([$date]);\n\t\t$row = $stmt->fetch();\n\n\t\tif ($row) {\n\t\t\t// Record exists for today\n\t\t\t$page_view_id = $row['id'];\n\t\t\t$tpage = (int)$row['tpage'] + 1; // Increment total page views\n\t\t\t$tvisit = (int)$row['tvisit'];\n\n\t\t\t// Check if this IP has visited today\n\t\t\t$stmt = $pdo->prepare(\"SELECT COUNT(*) FROM visitor_ips WHERE ip = ? AND visit_date = ?\");\n\t\t\t$stmt->execute([$ip, $date]);\n\t\t\tif ($stmt->fetchColumn() == 0) {\n\t\t\t\t// New unique visitor\n\t\t\t\t$tvisit += 1;\n\t\t\t\t$stmt = $pdo->prepare(\"INSERT INTO visitor_ips (ip, visit_date) VALUES (?, ?)\");\n\t\t\t\t$stmt->execute([$ip, $date]);\n\t\t\t}\n\n\t\t\t// Update page_view with new counts\n\t\t\t$stmt = $pdo->prepare(\"UPDATE page_view SET tpage = ?, tvisit = ? WHERE id = ?\");\n\t\t\t$stmt->execute([$tpage, $tvisit, $page_view_id]);\n\t\t} else {\n\t\t\t// No record for today: create one\n\t\t\t$tpage = 1;\n\t\t\t$tvisit = 1;\n\t\t\t$stmt = $pdo->prepare(\"INSERT INTO page_view (date, tpage, tvisit) VALUES (?, ?, ?)\");\n\t\t\t$stmt->execute([$date, $tpage, $tvisit]);\n\n\t\t\t// Log the visitor's IP\n\t\t\t$stmt = $pdo->prepare(\"INSERT INTO visitor_ips (ip, visit_date) VALUES (?, ?)\");\n\t\t\t$stmt->execute([$ip, $date]);\n\t\t}\n\t} catch (PDOException $e) {\n\t\terror_log(\"Page view tracking error: \" . $e->getMessage());\n\t}\n\n    // Ads\n    $stmt = $pdo->query(\"SELECT * FROM ads WHERE id = '1'\");\n    $row = $stmt->fetch();\n    if (!$row) {\n        $text_ads = $ads_1 = $ads_2 = '';\n    } else {\n        $text_ads = trim($row['text_ads']);\n        $ads_1 = trim($row['ads_1']);\n        $ads_2 = trim($row['ads_2']);\n    }\n\n\t// Accept both ?p=slug and ?page=slug (mod_rewrite typically maps to ?p=)\n\t$page_name = isset($_GET['p']) ? trim($_GET['p']) : (isset($_GET['page']) ? trim($_GET['page']) : '');\n\tif ($page_name !== '') {\n\t\t$stmt = $pdo->prepare(\"\n\t\t\tSELECT page_title, page_content, last_date\n\t\t\tFROM pages\n\t\t\tWHERE page_name = ? AND is_active = 1\n\t\t\tLIMIT 1\n\t\t\");\n\t\t$stmt->execute([$page_name]);\n\t\t$row = $stmt->fetch();\n\t\tif ($row) {\n\t\t\t$page_title   = $row['page_title'];\n\t\t\t$page_content = $row['page_content'];\n\t\t\t$last_date    = $row['last_date'];\n\t\t\t$stats        = \"OK\";\n\t\t\t$p_title      = $page_title;\n\t\t} else {\n\t\t\t$page_title   = \"Error\";\n\t\t\t$page_content = \"<div class='alert alert-danger text-center'>Page not found or inactive.</div>\";\n\t\t\t$last_date    = $date;\n\t\t\t$stats        = null;\n\t\t\t$p_title      = \"Error\";\n\t\t}\n\t}\n\n    // Theme\n    require_once('theme/' . $default_theme . '/header.php');\n    require_once('theme/' . $default_theme . '/pages.php');\n    require_once('theme/' . $default_theme . '/footer.php');\n} catch (PDOException $e) {\n    die(\"Database error: \" . $e->getMessage());\n}\n?>"
  },
  {
    "path": "paste.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/21 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\ndeclare(strict_types=1);\n\nrequire_once 'includes/session.php';\nrequire_once 'config.php';\n\n// Load highlighter engine libs conditionally\nif (($highlighter ?? 'geshi') === 'geshi') {\n    require_once 'includes/geshi.php';\n} else {\n    require_once __DIR__ . '/includes/Highlight/bootstrap.php';\n}\n\nrequire_once 'includes/functions.php';\n\n// ensure these are visible to all included templates (header/footer/sidebar)\nglobal $pdo, $mod_rewrite;\n\n// default to avoid notices if config hasn't set it (DB can override later)\nif (!isset($mod_rewrite)) {\n    $mod_rewrite = '0';\n}\n\n$path             = 'includes/geshi/';                        // GeSHi language files\n$parsedown_path   = 'includes/Parsedown/Parsedown.php';       // Markdown\n$ges_style        = '';                                       // no inline CSS injection\n$require_password = false; // errors.php shows password box when true\n\n// ---------------- Helpers ----------------\n\n// --- highlight theme override (?theme= or ?highlight=) ---\nif (($highlighter ?? 'geshi') === 'highlight') {\n    $param = $_GET['theme'] ?? $_GET['highlight'] ?? null;\n    if ($param !== null) {\n        // normalize: accept \"dracula\", \"dracula.css\", or \"atelier estuary dark\"\n        $t = strtolower((string)$param);\n        $t = str_replace(['+', ' ', '_'], '-', $t);\n        $t = preg_replace('~\\.css$~', '', $t);\n        $t = preg_replace('~[^a-z0-9.-]~', '', $t);\n\n        $stylesRel = 'includes/Highlight/styles';\n        $fs = __DIR__ . '/' . $stylesRel . '/' . $t . '.css';\n        if (is_file($fs)) {\n            // header.php will read this to seed the initial <link>\n            $hl_style = $t . '.css';\n        }\n    }\n}\n\n// Map some legacy/GeSHi-style names to highlight.js ids\nfunction map_to_hl_lang(string $code): string {\n    static $map = [\n        'text'        => 'plaintext',\n        'html5'       => 'xml',\n        'html4strict' => 'xml',\n        'php-brief'   => 'php',\n        'pycon'       => 'python',\n        'postgresql'  => 'pgsql',   // fallback to sql below if missing\n        'dos'         => 'dos',\n        'vb'          => 'vbnet',\n    ];\n    $code = strtolower($code);\n    return $map[$code] ?? $code;\n}\n\n// Wrap hljs tokens in a line-numbered <ol> so togglev() works\nfunction hl_wrap_with_lines(string $value, string $hlLang, array $highlight_lines): string {\n    $lines  = explode(\"\\n\", $value);\n    $digits = max(2, strlen((string) count($lines))); // how many digits do we need?\n    $hlset  = $highlight_lines ? array_flip($highlight_lines) : [];\n\n    $out   = [];\n    $out[] = '<pre class=\"hljs\"><code class=\"hljs language-' . htmlspecialchars($hlLang, ENT_QUOTES, 'UTF-8') . '\">';\n    // expose digits to CSS so gutter is fixed (no JS needed)\n    $out[] = '<ol class=\"hljs-ln\" style=\"--ln-digits:' . (int)$digits . '\">';\n    foreach ($lines as $i => $lineHtml) {\n        $ln  = $i + 1;\n        $cls = isset($hlset[$ln]) ? ' class=\"hljs-ln-line hljs-hl\"' : ' class=\"hljs-ln-line\"';\n        $out[] = '<li' . $cls . '><span class=\"hljs-ln-n\">' . $ln . '</span><span class=\"hljs-ln-c\">' . $lineHtml . '</span></li>';\n    }\n    $out[] = '</ol></code></pre>';\n    return implode('', $out);\n}\n\n// Add a class to specific <li> lines in GeSHi output (no inline styles)\nfunction geshi_add_line_highlight_class(string $html, array $highlight_lines, string $class = 'hljs-hl'): string {\n    if (!$highlight_lines) return $html;\n    $targets = array_flip($highlight_lines);\n    $i = 0;\n    return preg_replace_callback('/<li\\b([^>]*)>/', static function($m) use (&$i, $targets, $class) {\n        $i++;\n        $attrs = $m[1];\n        if (!isset($targets[$i])) return '<li' . $attrs . '>';\n        if (preg_match('/\\bclass=\"([^\"]*)\"/i', $attrs, $cm)) {\n            $new = trim($cm[1] . ' ' . $class);\n            $attrs = preg_replace('/\\bclass=\"[^\"]*\"/i', 'class=\"' . htmlspecialchars($new, ENT_QUOTES, 'UTF-8') . '\"', $attrs, 1);\n        } else {\n            $attrs .= ' class=\"' . htmlspecialchars($class, ENT_QUOTES, 'UTF-8') . '\"';\n        }\n        return '<li' . $attrs . '>';\n    }, $html) ?? $html;\n}\n\n// --- Safe themed error renderers (header -> errors -> footer) ---\nfunction themed_error_render(string $msg, int $http_code = 404, bool $show_password_form = false): void {\n    global $default_theme, $lang, $baseurl, $site_name, $pdo, $mod_rewrite, $require_password, $paste_id;\n\n    $site_name   = $site_name   ?? '';\n    $p_title     = $lang['error'] ?? 'Error';\n    $enablegoog  = 'no';\n    $enablefb    = 'no';\n\n    if (!headers_sent()) {\n        http_response_code($http_code);\n        header('Content-Type: text/html; charset=utf-8');\n    }\n\n    $require_password = $show_password_form;\n    $error = $msg;\n\n    $theme = 'theme/' . htmlspecialchars($default_theme ?? 'default', ENT_QUOTES, 'UTF-8');\n    require_once $theme . '/header.php';\n    require_once $theme . '/errors.php';\n    require_once $theme . '/footer.php';\n    exit;\n}\n\nfunction render_error_and_exit(string $msg, string $http = '404'): void {\n    $code = ($http === '403') ? 403 : 404;\n    themed_error_render($msg, $code, false);\n}\n\nfunction render_password_required_and_exit(string $msg): void {\n    themed_error_render($msg, 403, true); // 401 invites browser auth dialogs\n}\n\n// --- Inputs ---\n$p_password = '';\n$paste_id   = null;\nif (isset($_GET['id']) && $_GET['id'] !== '') {\n    $paste_id = (int) trim((string) $_GET['id']);\n} elseif (isset($_POST['id']) && $_POST['id'] !== '') {\n    $paste_id = (int) trim((string) $_POST['id']);\n}\n\ntry {\n    // site_info\n    $stmt = $pdo->query(\"SELECT * FROM site_info WHERE id='1'\");\n    $si   = $stmt->fetch() ?: [];\n    $title       = trim($si['title'] ?? '');\n    $des         = trim($si['des'] ?? '');\n    $baseurl     = rtrim(trim($si['baseurl'] ?? ''), '/') . '/';\n    $keyword     = trim($si['keyword'] ?? '');\n    $site_name   = trim($si['site_name'] ?? '');\n    $email       = trim($si['email'] ?? '');\n    $twit        = trim($si['twit'] ?? '');\n    $face        = trim($si['face'] ?? '');\n    $gplus       = trim($si['gplus'] ?? '');\n    $ga          = trim($si['ga'] ?? '');\n    $additional_scripts = trim($si['additional_scripts'] ?? '');\n\n    // Optional: allow DB to define mod_rewrite\n    if (isset($si['mod_rewrite']) && $si['mod_rewrite'] !== '') {\n        $mod_rewrite = (string) $si['mod_rewrite'];\n    }\n\n    // interface\n    $stmt = $pdo->query(\"SELECT * FROM interface WHERE id='1'\");\n    $iface = $stmt->fetch() ?: [];\n    $default_lang  = trim($iface['lang'] ?? 'en.php');\n    $default_theme = trim($iface['theme'] ?? 'default');\n    require_once(\"langs/$default_lang\");\n\n    // ban check\n    $ip = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';\n    if (is_banned($pdo, $ip)) {\n        render_error_and_exit($lang['banned'] ?? 'You are banned from this site.', '403');\n    }\n\n    // site permissions\n    $stmt = $pdo->query(\"SELECT * FROM site_permissions WHERE id='1'\");\n    $perm = $stmt->fetch() ?: [];\n    $disableguest = trim($perm['disableguest'] ?? 'off');\n    $siteprivate  = trim($perm['siteprivate'] ?? 'off');\n    if ($_SERVER['REQUEST_METHOD'] !== 'POST' && $siteprivate === \"on\") {\n        $privatesite = \"on\";\n    }\n\n    // page views (best effort)\n    $date = date('Y-m-d');\n    try {\n        $stmt = $pdo->prepare(\"SELECT id, tpage, tvisit FROM page_view WHERE date = ?\");\n        $stmt->execute([$date]);\n        $pv = $stmt->fetch();\n        if ($pv) {\n            $page_view_id = (int) $pv['id'];\n            $tpage  = (int) $pv['tpage'] + 1;\n            $tvisit = (int) $pv['tvisit'];\n\n            $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM visitor_ips WHERE ip = ? AND visit_date = ?\");\n            $stmt->execute([$ip, $date]);\n            if ((int) $stmt->fetchColumn() === 0) {\n                $tvisit++;\n                $stmt = $pdo->prepare(\"INSERT INTO visitor_ips (ip, visit_date) VALUES (?, ?)\");\n                $stmt->execute([$ip, $date]);\n            }\n            $stmt = $pdo->prepare(\"UPDATE page_view SET tpage = ?, tvisit = ? WHERE id = ?\");\n            $stmt->execute([$tpage, $tvisit, $page_view_id]);\n        } else {\n            $stmt = $pdo->prepare(\"INSERT INTO page_view (date, tpage, tvisit) VALUES (?, ?, ?)\");\n            $stmt->execute([$date, 1, 1]);\n            $stmt = $pdo->prepare(\"INSERT INTO visitor_ips (ip, visit_date) VALUES (?, ?)\");\n            $stmt->execute([$ip, $date]);\n        }\n    } catch (PDOException $e) {\n        error_log(\"Page view tracking error: \" . $e->getMessage());\n    }\n\n    // ads\n    $stmt = $pdo->query(\"SELECT * FROM ads WHERE id='1'\");\n    $ads  = $stmt->fetch() ?: [];\n    $text_ads = trim($ads['text_ads'] ?? '');\n    $ads_1    = trim($ads['ads_1'] ?? '');\n    $ads_2    = trim($ads['ads_2'] ?? '');\n\n    // Guard ID\n    if (!$paste_id) {\n        render_error_and_exit($lang['notfound'] ?? 'Paste not found.');\n    }\n\n    // load paste\n    $stmt = $pdo->prepare(\"SELECT * FROM pastes WHERE id = ?\");\n    $stmt->execute([$paste_id]);\n    if ($stmt->rowCount() === 0) {\n        render_error_and_exit($lang['notfound'] ?? 'Paste not found.');\n    }\n    $row = $stmt->fetch();\n\n    // paste fields\n    $p_title    = (string) ($row['title'] ?? '');\n    $p_content  = (string) ($row['content'] ?? '');\n    $p_visible  = (string) ($row['visible'] ?? '0');\n    $p_code     = (string) ($row['code'] ?? 'text');\n    $p_expiry   = trim((string) ($row['expiry'] ?? 'NULL'));\n    $p_password = (string) ($row['password'] ?? 'NONE');\n    $p_member   = (string) ($row['member'] ?? '');\n    $p_date     = (string) ($row['date'] ?? '');\n    $p_encrypt  = (string) ($row['encrypt'] ?? '0');\n    $p_views    = getPasteViewCount($pdo, (int) $paste_id);\n\n    // private?\n    if ($p_visible === \"2\") {\n        if (!isset($_SESSION['username']) || $p_member !== (string) ($_SESSION['username'] ?? '')) {\n            render_error_and_exit($lang['privatepaste'] ?? 'This is a private paste.', '403');\n        }\n    }\n\n    // expiry\n    if ($p_expiry !== \"NULL\" && $p_expiry !== \"SELF\") {\n        $input_time = (int) $p_expiry;\n        if ($input_time > 0 && $input_time < time()) {\n            render_error_and_exit($lang['expired'] ?? 'This paste has expired.');\n        }\n    }\n\n    // decrypt if needed\n    if ($p_encrypt === \"1\") {\n        if (!defined('SECRET')) {\n            render_error_and_exit(($lang['error'] ?? 'Error') . ': Missing SECRET.', '403');\n        }\n        $dec = decrypt($p_content, hex2bin(SECRET));\n        if ($dec === null || $dec === '') {\n            render_error_and_exit(($lang['error'] ?? 'Error') . ': Decryption failed.', '403');\n        }\n        $p_content = $dec;\n    }\n    $op_content = trim(htmlspecialchars_decode($p_content));\n\n    // download/raw/embed\n    if (isset($_GET['download'])) {\n        if ($p_password === \"NONE\" || (isset($_GET['password']) && password_verify((string) $_GET['password'], $p_password))) {\n            doDownload((int) $paste_id, $p_title, $op_content, $p_code);\n            exit;\n        }\n        render_password_required_and_exit(\n            isset($_GET['password'])\n                ? ($lang['wrongpassword'] ?? 'Incorrect password.')\n                : ($lang['pwdprotected'] ?? 'This paste is password-protected.')\n        );\n    }\n\n    if (isset($_GET['raw'])) {\n        if ($p_password === \"NONE\" || (isset($_GET['password']) && password_verify((string) $_GET['password'], $p_password))) {\n            rawView((int) $paste_id, $p_title, $op_content, $p_code);\n            exit;\n        }\n        render_password_required_and_exit(\n            isset($_GET['password'])\n                ? ($lang['wrongpassword'] ?? 'Incorrect password.')\n                : ($lang['pwdprotected'] ?? 'This paste is password-protected.')\n        );\n    }\n\n    if (isset($_GET['embed'])) {\n        if ($p_password === \"NONE\" || (isset($_GET['password']) && password_verify((string) $_GET['password'], $p_password))) {\n            // Embed view is standalone; we pass empty $ges_style as we don't inject CSS here.\n            embedView((int) $paste_id, $p_title, $p_content, $p_code, $title, $baseurl, $ges_style, $lang);\n            exit;\n        }\n        render_password_required_and_exit(\n            isset($_GET['password'])\n                ? ($lang['wrongpassword'] ?? 'Incorrect password.')\n                : ($lang['pwdprotected'] ?? 'This paste is password-protected.')\n        );\n    }\n\n    // highlight extraction\n    $highlight = [];\n    $prefix = '!highlight!';\n    if ($prefix !== '') {\n        $lines = explode(\"\\n\", $p_content);\n        $p_content = '';\n        foreach ($lines as $idx => $line) {\n            if (strncmp($line, $prefix, strlen($prefix)) === 0) {\n                $highlight[] = $idx + 1;\n                $line = substr($line, strlen($prefix));\n            }\n            $p_content .= $line . \"\\n\";\n        }\n        $p_content = rtrim($p_content);\n    }\n\n    // transform content \n    if ($p_code === \"markdown\") {\n        // ---------- Markdown (keep using Parsedown, safe) ----------\n        require_once $parsedown_path;\n        $Parsedown = new Parsedown();\n\n        $md_input = htmlspecialchars_decode($p_content);\n\n        // Disable raw HTML and sanitize URLs during Markdown rendering\n        if (method_exists($Parsedown, 'setSafeMode')) {\n            $Parsedown->setSafeMode(true);\n            if (method_exists($Parsedown, 'setMarkupEscaped')) {\n                $Parsedown->setMarkupEscaped(true);\n            }\n        } else {\n            // Fallback for very old Parsedown: escape raw HTML tags BEFORE parsing\n            $md_input = preg_replace_callback('/<[^>]*>/', static function($m){\n                return htmlspecialchars($m[0], ENT_QUOTES, 'UTF-8');\n            }, $md_input);\n        }\n\n        $rendered  = $Parsedown->text($md_input);\n        $p_content = '<div class=\"md-body\">'.sanitize_allowlist_html($rendered).'</div>';\n\n    } else {\n        // ---------- Code (choose engine) ----------\n        $code_input = htmlspecialchars_decode($p_content);\n\n        if (($highlighter ?? 'geshi') === 'highlight') {\n            // ---- Highlight.php (no Composer) ----\n            $hlLang = map_to_hl_lang($p_code);\n            try {\n                $hl = function_exists('make_highlighter') ? make_highlighter() : null;\n                if (!$hl) { throw new \\RuntimeException('Highlighter not available'); }\n\n                try {\n                    $res = $hl->highlight($hlLang, $code_input);\n                } catch (\\Throwable $e) {\n                    // Fallback: autodetect + generic SQL if pgsql missing, etc.\n                    if ($hlLang === 'pgsql') {\n                        $res = $hl->highlight('sql', $code_input);\n                    } else {\n                        $res = $hl->highlightAuto($code_input);\n                    }\n                }\n                $inner = $res->value;                 // HTML with <span> tokens, content escaped\n                $detectedLang = $res->language ?? $hlLang;     // whatever highlight chose\n                $p_content = hl_wrap_with_lines($inner, $detectedLang, $highlight);\n            } catch (\\Throwable $t) {\n                // Last resort: plain escaped\n                $esc = htmlspecialchars($code_input, ENT_QUOTES, 'UTF-8');\n                $p_content = hl_wrap_with_lines($esc, 'plaintext', $highlight);\n            }\n\n        } else {\n            // ---- GeSHi (legacy) ----\n            $geshi = new GeSHi($code_input, $p_code, $path);\n\n            // Use classes, not inline CSS; let theme CSS style everything\n            if (method_exists($geshi, 'enable_classes')) $geshi->enable_classes();\n            if (method_exists($geshi, 'set_header_type')) $geshi->set_header_type(GESHI_HEADER_DIV);\n\n            // Line numbers (NORMAL to avoid rollovers). No inline style.\n            if (method_exists($geshi, 'enable_line_numbers')) $geshi->enable_line_numbers(GESHI_NORMAL_LINE_NUMBERS);\n            if (!empty($highlight) && method_exists($geshi, 'highlight_lines_extra')) {\n                // We only mark lines via an extra pass to add a class; no inline style.\n                $geshi->highlight_lines_extra($highlight);\n            }\n\n            // force plain integer formatting\n            if (method_exists($geshi, 'set_line_number_format')) {\n                $geshi->set_line_number_format('%d', 0);\n            }\n\n            // Parse HTML (class-based markup)\n            $p_content = $geshi->parse_code();\n\n            // Add a class to the requested lines so theme CSS can style them\n            if (!empty($highlight)) {\n                $p_content = geshi_add_line_highlight_class($p_content, $highlight, 'hljs-hl');\n            }\n\n            // No stylesheet injection here; theme CSS handles it.\n            $ges_style = '';\n        }\n    }\n\n    // header\n    $theme = 'theme/' . htmlspecialchars($default_theme, ENT_QUOTES, 'UTF-8');\n    require_once $theme . '/header.php';\n\n    // view OR password prompt\n    if ($p_password === \"NONE\") {\n        updateMyView($pdo, (int) $paste_id);\n\n        $p_download = $mod_rewrite == '1' ? $baseurl . \"download/$paste_id\" : $baseurl . \"paste.php?download&id=$paste_id\";\n        $p_raw      = $mod_rewrite == '1' ? $baseurl . \"raw/$paste_id\"      : $baseurl . \"paste.php?raw&id=$paste_id\";\n        $p_embed    = $mod_rewrite == '1' ? $baseurl . \"embed/$paste_id\"    : $baseurl . \"paste.php?embed&id=$paste_id\";\n\n        require_once $theme . '/view.php';\n\n        // View-once (SELF) cleanup after increment\n        $current_views = getPasteViewCount($pdo, (int) $paste_id);\n        if ($p_expiry === \"SELF\" && $current_views >= 2) {\n            deleteMyPaste($pdo, (int) $paste_id);\n        }\n    } else {\n        // Password-protected flow shows the prompt via errors.php (partial)\n        $require_password = true;\n\n        $p_password_input = isset($_POST['mypass'])\n            ? trim((string) $_POST['mypass'])\n            : (string) ($_SESSION['p_password'] ?? '');\n\n        // Prebuild convenience links that carry the typed password\n        $p_download = $mod_rewrite == '1'\n            ? $baseurl . \"download/$paste_id?password=\" . rawurlencode($p_password_input)\n            : $baseurl . \"paste.php?download&id=$paste_id&password=\" . rawurlencode($p_password_input);\n        $p_raw = $mod_rewrite == '1'\n            ? $baseurl . \"raw/$paste_id?password=\" . rawurlencode($p_password_input)\n            : $baseurl . \"paste.php?raw&id=$paste_id&password=\" . rawurlencode($p_password_input);\n        $p_embed = $mod_rewrite == '1'\n            ? $baseurl . \"embed/$paste_id?password=\" . rawurlencode($p_password_input)\n            : $baseurl . \"paste.php?embed&id=$paste_id&password=\" . rawurlencode($p_password_input);\n\n        if ($p_password_input !== '' && password_verify($p_password_input, $p_password)) {\n            updateMyView($pdo, (int) $paste_id);\n            require_once $theme . '/view.php';\n\n            $current_views = getPasteViewCount($pdo, (int) $paste_id);\n            if ($p_expiry === \"SELF\" && $current_views >= 2) {\n                deleteMyPaste($pdo, (int) $paste_id);\n            }\n        } else {\n            $error = $p_password_input !== ''\n                ? ($lang['wrongpwd'] ?? 'Incorrect password.')\n                : ($lang['pwdprotected'] ?? 'This paste is password-protected.');\n            $_SESSION['p_password'] = $p_password_input;\n\n            require_once $theme . '/errors.php'; // partial renders password prompt\n        }\n    }\n\n    // footer\n    require_once $theme . '/footer.php';\n\n} catch (PDOException $e) {\n    error_log(\"paste.php: Database error: \" . $e->getMessage());\n\n    // Still render a readable error page (no password box)\n    $error = ($lang['error'] ?? 'Database error.') . ': ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8');\n\n    global $default_theme, $baseurl, $mod_rewrite, $pdo, $require_password;\n    $require_password = false;\n\n    $theme = 'theme/' . htmlspecialchars($default_theme ?? 'default', ENT_QUOTES, 'UTF-8');\n    require_once $theme . '/header.php';\n    require_once $theme . '/errors.php';\n    require_once $theme . '/footer.php';\n}\n"
  },
  {
    "path": "profile.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n\nrequire_once 'includes/session.php';\nrequire_once 'config.php';\nrequire_once 'includes/functions.php';\n\n// UTF-8\nheader('Content-Type: text/html; charset=utf-8');\n\n$date = date('Y-m-d H:i:s');\n$ip   = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';\n\nglobal $pdo;\n\ntry {\n    // Site info\n    $stmt = $pdo->query(\"SELECT * FROM site_info WHERE id = '1'\");\n    $row = $stmt->fetch() ?: [];\n    $title      = trim((string)($row['title'] ?? 'Paste'));\n    $des        = trim((string)($row['des'] ?? ''));\n    $baseurl    = trim((string)($row['baseurl'] ?? ''));\n    $keyword    = trim((string)($row['keyword'] ?? ''));\n    $site_name  = trim((string)($row['site_name'] ?? 'Paste'));\n    $email      = trim((string)($row['email'] ?? ''));\n    $twit       = trim((string)($row['twit'] ?? ''));\n    $face       = trim((string)($row['face'] ?? ''));\n    $gplus      = trim((string)($row['gplus'] ?? ''));\n    $ga         = trim((string)($row['ga'] ?? ''));\n    $additional_scripts = trim((string)($row['additional_scripts'] ?? ''));\n\n    // Theme & language\n    $stmt = $pdo->query(\"SELECT * FROM interface WHERE id = '1'\");\n    $row = $stmt->fetch() ?: [];\n    $default_lang  = trim((string)($row['lang'] ?? 'en.php'));\n    $default_theme = trim((string)($row['theme'] ?? 'default'));\n    require_once(\"langs/$default_lang\");\n\n    $p_title = $lang['myprofile'] ?? 'My Profile';\n\n    // IP ban\n    if (is_banned($pdo, $ip)) {\n        die($lang['banned'] ?? 'You are banned from this site.');\n    }\n\n    // Site permissions\n    $stmt = $pdo->query(\"SELECT * FROM site_permissions WHERE id = '1'\");\n    $row = $stmt->fetch() ?: [];\n    $siteprivate = trim((string)($row['siteprivate'] ?? 'off'));\n    if ($_SERVER['REQUEST_METHOD'] !== 'POST' && $siteprivate === \"on\") {\n        $privatesite = \"on\";\n    }\n\n    // Must be logged in\n    if (!isset($_SESSION['token'])) {\n        header(\"Location: ./login.php\");\n        exit;\n    }\n\n    // Logout\n    if (isset($_GET['logout'])) {\n        header('Location: ' . ($_SERVER['HTTP_REFERER'] ?? $baseurl));\n        unset($_SESSION['token'], $_SESSION['oauth_uid'], $_SESSION['username']);\n        session_destroy();\n        exit;\n    }\n\n    // Load current user record\n    $sessionUsername = trim((string)($_SESSION['username'] ?? ''));\n    $stmt = $pdo->prepare(\"SELECT id, oauth_uid, email_id, full_name, platform, verified, date, ip, password, username_locked FROM users WHERE username = ?\");\n    $stmt->execute([$sessionUsername]);\n    $row = $stmt->fetch();\n\n    if (!$row) {\n        // Session user vanished; log them out\n        header(\"Location: ./login.php?action=logout\");\n        exit;\n    }\n\n    $user_id          = (int)$row['id'];\n    $user_oauth_uid   = $row['oauth_uid'] == '0' ? \"None\" : (string)$row['oauth_uid'];\n    $user_email_id    = (string)$row['email_id'];\n    $user_full_name   = (string)$row['full_name'];\n    $user_platform    = trim((string)$row['platform']);  // 'Direct', 'Google', 'Facebook', ...\n    $user_verified    = (string)$row['verified'];\n    $user_date        = (string)$row['date'];\n    $user_ip          = (string)$row['ip'];\n    $user_password    = (string)$row['password'];\n    $username_locked  = (int)($row['username_locked'] ?? 1);\n\n    // Expose username separately (raw)\n    $user_username = $sessionUsername;\n\n    // OAuth users can change username once\n    $can_edit_username = (strcasecmp($user_platform, 'Direct') !== 0) && ($username_locked === 0);\n\n    // Handle one-time username change\n    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['set_username_once'])) {\n        // CSRF\n        if (!hash_equals($_SESSION['csrf_token'] ?? '', (string)($_POST['csrf_token'] ?? ''))) {\n            $error = $lang['wentwrong'] ?? 'Something went wrong.';\n        } elseif (!$can_edit_username) {\n            $error = $lang['usernotvalid'] ?? 'Username not allowed to change.';\n        } else {\n            $new = trim((string)($_POST['new_username'] ?? ''));\n            if ($new === '' || !isValidUsername($new)) {\n                $error = $lang['usrinvalid'] ?? 'Invalid username.';\n            } else {\n                // unique?\n                $stmt = $pdo->prepare(\"SELECT 1 FROM users WHERE username = ?\");\n                $stmt->execute([$new]);\n                if ($stmt->fetch()) {\n                    $error = $lang['userexists'] ?? 'Username already exists.';\n                } else {\n                    $old = $user_username;\n                    $pdo->beginTransaction();\n                    try {\n                        // Update user + lock username\n                        $stmt = $pdo->prepare(\"UPDATE users SET username = ?, username_locked = 1 WHERE id = ?\");\n                        $stmt->execute([$new, $user_id]);\n\n                        // Reassign pastes to new username\n                        $stmt = $pdo->prepare(\"UPDATE pastes SET member = ? WHERE member = ?\");\n                        $stmt->execute([$new, $old]);\n\n                        // Update session + view vars\n                        $_SESSION['username'] = $new;\n                        $user_username = $new;\n                        $can_edit_username = false;\n\n                        $pdo->commit();\n                        $success = $lang['userchanged'] ?? 'Username changed successfully.';\n                    } catch (Throwable $e) {\n                        $pdo->rollBack();\n                        error_log(\"profile.php: username change failed: \".$e->getMessage());\n                        $error = $lang['wentwrong'] ?? 'Something went wrong.';\n                    }\n                }\n            }\n        }\n    }\n\n    // Handle profile changes (full name + password)\n    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['cpassword']) && empty($_POST['set_username_once'])) {\n        // Keep current full name by default if field not present in form\n        $user_new_full = isset($_POST['full']) ? trim((string)$_POST['full']) : $user_full_name;\n\n        $user_old_pass = (string)($_POST['old_password'] ?? '');\n        $user_new_pass = (string)($_POST['password'] ?? '');\n\n        if ($user_new_pass === '') {\n            // full_name only (no password change)\n            $stmt = $pdo->prepare(\"UPDATE users SET full_name = ? WHERE username = ?\");\n            $stmt->execute([$user_new_full, $user_username]);\n            $user_full_name = $user_new_full;\n            $success = $lang['profileupdated'] ?? 'Profile updated.';\n        } else {\n            if (password_verify($user_old_pass, $user_password)) {\n                $user_new_cpass = password_hash($user_new_pass, PASSWORD_DEFAULT);\n                $stmt = $pdo->prepare(\"UPDATE users SET full_name = ?, password = ? WHERE username = ?\");\n                $stmt->execute([$user_new_full, $user_new_cpass, $user_username]);\n                $user_full_name = $user_new_full;\n                $success = $lang['profileupdated'] ?? 'Profile updated.';\n            } else {\n                $error = $lang['oldpasswrong'] ?? 'Old password is wrong.';\n            }\n        }\n    }\n\n    // Handle account deletion (AJAX or normal POST)\n    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_account']) && $_POST['delete_account'] === '1') {\n        $is_ajax = (isset($_POST['ajax']) && $_POST['ajax'] === '1')\n            || (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest');\n\n        // CSRF\n        if (!isset($_POST['csrf_token']) || !hash_equals($_SESSION['csrf_token'] ?? '', (string)$_POST['csrf_token'])) {\n            if ($is_ajax) {\n                header('Content-Type: application/json');\n                echo json_encode(['ok' => false, 'error' => ($lang['invalidtoken'] ?? 'Invalid CSRF token.')]);\n                exit;\n            }\n            $error = $lang['invalidtoken'] ?? 'Invalid CSRF token.';\n        } else {\n            try {\n                $pdo->beginTransaction();\n\n                // Delete user's pastes\n                $stmt = $pdo->prepare(\"DELETE FROM pastes WHERE member = ?\");\n                $stmt->execute([$user_username]);\n\n                // Delete user\n                $stmt = $pdo->prepare(\"DELETE FROM users WHERE id = ?\");\n                $stmt->execute([$user_id]);\n\n                $pdo->commit();\n\n                // End session\n                session_unset();\n                session_destroy();\n\n                $redirectUrl = rtrim($baseurl, '/') . '/accountdeleted.php';\n\n                if ($is_ajax) {\n                    header('Content-Type: application/json');\n                    echo json_encode(['ok' => true, 'redirect' => $redirectUrl]);\n                    exit;\n                }\n\n                header('Location: ' . $redirectUrl);\n                exit;\n\n            } catch (Throwable $e) {\n                if ($pdo->inTransaction()) { $pdo->rollBack(); }\n                error_log(\"GDPR delete_account failed for {$user_username}: \" . $e->getMessage());\n\n                if ($is_ajax) {\n                    header('Content-Type: application/json');\n                    echo json_encode(['ok' => false, 'error' => ($lang['wentwrong'] ?? 'Something went wrong while deleting your account.')]);\n                    exit;\n                }\n\n                $error = $lang['wentwrong'] ?? 'Something went wrong while deleting your account.';\n            }\n        }\n    }\n\n    // Page views\n    $dateYmd = date('Y-m-d');\n    $ipToday = $_SERVER['REMOTE_ADDR'] ?? '';\n    try {\n        $stmt = $pdo->prepare(\"SELECT id, tpage, tvisit FROM page_view WHERE date = ?\");\n        $stmt->execute([$dateYmd]);\n        $pv = $stmt->fetch();\n\n        if ($pv) {\n            $page_view_id = (int)$pv['id'];\n            $tpage  = (int)$pv['tpage'] + 1;\n            $tvisit = (int)$pv['tvisit'];\n\n            $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM visitor_ips WHERE ip = ? AND visit_date = ?\");\n            $stmt->execute([$ipToday, $dateYmd]);\n            if ((int)$stmt->fetchColumn() === 0) {\n                $tvisit += 1;\n                $stmt = $pdo->prepare(\"INSERT INTO visitor_ips (ip, visit_date) VALUES (?, ?)\");\n                $stmt->execute([$ipToday, $dateYmd]);\n            }\n\n            $stmt = $pdo->prepare(\"UPDATE page_view SET tpage = ?, tvisit = ? WHERE id = ?\");\n            $stmt->execute([$tpage, $tvisit, $page_view_id]);\n        } else {\n            $stmt = $pdo->prepare(\"INSERT INTO page_view (date, tpage, tvisit) VALUES (?, ?, ?)\");\n            $stmt->execute([$dateYmd, 1, 1]);\n            $stmt = $pdo->prepare(\"INSERT INTO visitor_ips (ip, visit_date) VALUES (?, ?)\");\n            $stmt->execute([$ipToday, $dateYmd]);\n        }\n    } catch (PDOException $e) {\n        error_log(\"Page view tracking error: \" . $e->getMessage());\n    }\n\n    $total_pastes = getTotalPastes($pdo, $user_username);\n\n    // Ads\n    $stmt = $pdo->query(\"SELECT * FROM ads WHERE id = '1'\");\n    $row = $stmt->fetch() ?: [];\n    $text_ads = trim((string)($row['text_ads'] ?? ''));\n    $ads_1    = trim((string)($row['ads_1'] ?? ''));\n    $ads_2    = trim((string)($row['ads_2'] ?? ''));\n\n    // Render theme\n    require_once('theme/' . $default_theme . '/header.php');\n    require_once('theme/' . $default_theme . '/profile.php'); // uses $user_* and $can_edit_username\n    require_once('theme/' . $default_theme . '/footer.php');\n\n} catch (PDOException $e) {\n    die(\"Database error: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));\n}\n"
  },
  {
    "path": "robots.txt",
    "content": "User-agent: *\nDisallow: /admin/\nDisallow: /includes/\nDisallow: /theme/\nDisallow: /langs/\nDisallow: /oauth/\nDisallow: /mail/"
  },
  {
    "path": "sitemap.xml",
    "content": ""
  },
  {
    "path": "theme/default/archive.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n?>\n<div class=\"container-xl my-4\">\n    <div class=\"row\">\n        <?php if ($privatesite == \"on\"): ?>\n            <div class=\"col-12\">\n                <div class=\"card text-center shadow-sm border-0\" style=\"background-color: #212529; color: #fff;\">\n                    <div class=\"card-body py-5\">\n                        <i class=\"bi bi-lock\" style=\"font-size: 5rem; color: #dc3545;\"></i>\n                        <h1 class=\"mt-3\"><?php echo htmlspecialchars($lang['siteprivate'] ?? 'This site is private', ENT_QUOTES, 'UTF-8'); ?></h1>\n                    </div>\n                </div>\n            </div>\n        <?php else: ?>\n            <div class=\"col-12\">\n                <div class=\"card shadow-sm border-0\" style=\"background-color: #212529;\">\n                    <div class=\"card-header bg-dark text-white d-flex justify-content-between align-items-center flex-wrap py-3\">\n                        <h1 class=\"h4 mb-0\">\n                            <?php echo htmlspecialchars($lang['archives'] ?? 'Archives', ENT_QUOTES, 'UTF-8'); ?>\n                            <?php if ($search_query && !empty($search_query)): ?> - <?php echo htmlspecialchars($lang['search_results_for'] ?? 'Search Results for', ENT_QUOTES, 'UTF-8'); ?> \"<?php echo htmlspecialchars($search_query, ENT_QUOTES, 'UTF-8'); ?>\"<?php endif; ?>\n                        </h1>\n                        <div class=\"d-flex align-items-center flex-wrap gap-2\">\n                            <form class=\"d-flex align-items-center\" action=\"<?php echo htmlspecialchars($baseurl . ($mod_rewrite == '1' ? 'archive' : 'archive.php'), ENT_QUOTES, 'UTF-8'); ?>\" method=\"get\">\n                                <input type=\"text\" name=\"q\" class=\"form-control me-2\" style=\"background-color: #2a2a2a; border-color: #444; color: #fff;\" placeholder=\"<?php echo htmlspecialchars($lang['search'] ?? 'Search pastes...', ENT_QUOTES, 'UTF-8'); ?>\" value=\"<?php echo htmlspecialchars($search_query ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                                <button type=\"submit\" class=\"btn btn-primary\"><i class=\"bi bi-search\"></i></button>\n                            </form>\n                            <form class=\"d-flex align-items-center\" action=\"<?php echo htmlspecialchars($baseurl . ($mod_rewrite == '1' ? 'archive' : 'archive.php'), ENT_QUOTES, 'UTF-8'); ?>\" method=\"get\">\n                                <?php if ($search_query && !empty($search_query)): ?>\n                                    <input type=\"hidden\" name=\"q\" value=\"<?php echo htmlspecialchars($search_query, ENT_QUOTES, 'UTF-8'); ?>\">\n                                <?php endif; ?>\n                                <select name=\"sort\" class=\"form-select me-2\" style=\"width: auto; background-color: #2a2a2a; border-color: #444; color: #fff;\">\n                                    <option value=\"date_desc\" <?php echo ($sort == 'date_desc') ? 'selected' : ''; ?>><?php echo htmlspecialchars($lang['sort_date_desc'] ?? 'Date (Newest)', ENT_QUOTES, 'UTF-8'); ?></option>\n                                    <option value=\"date_asc\" <?php echo ($sort == 'date_asc') ? 'selected' : ''; ?>><?php echo htmlspecialchars($lang['sort_date_asc'] ?? 'Date (Oldest)', ENT_QUOTES, 'UTF-8'); ?></option>\n                                    <option value=\"title_asc\" <?php echo ($sort == 'title_asc') ? 'selected' : ''; ?>><?php echo htmlspecialchars($lang['sort_title_asc'] ?? 'Title (A-Z)', ENT_QUOTES, 'UTF-8'); ?></option>\n                                    <option value=\"title_desc\" <?php echo ($sort == 'title_desc') ? 'selected' : ''; ?>><?php echo htmlspecialchars($lang['sort_title_desc'] ?? 'Title (Z-A)', ENT_QUOTES, 'UTF-8'); ?></option>\n                                    <option value=\"code_asc\" <?php echo ($sort == 'code_asc') ? 'selected' : ''; ?>><?php echo htmlspecialchars($lang['sort_code_asc'] ?? 'Syntax (A-Z)', ENT_QUOTES, 'UTF-8'); ?></option>\n                                    <option value=\"code_desc\" <?php echo ($sort == 'code_desc') ? 'selected' : ''; ?>><?php echo htmlspecialchars($lang['sort_code_desc'] ?? 'Syntax (Z-A)', ENT_QUOTES, 'UTF-8'); ?></option>\n                                    <option value=\"views_desc\" <?php echo ($sort == 'views_desc') ? 'selected' : ''; ?>><?php echo htmlspecialchars($lang['sort_views_desc'] ?? 'Popularity (Most Views)', ENT_QUOTES, 'UTF-8'); ?></option>\n                                    <option value=\"views_asc\" <?php echo ($sort == 'views_asc') ? 'selected' : ''; ?>><?php echo htmlspecialchars($lang['sort_views_asc'] ?? 'Popularity (Least Views)', ENT_QUOTES, 'UTF-8'); ?></option>\n                                </select>\n                                <button type=\"submit\" class=\"btn btn-outline-light\"><?php echo htmlspecialchars($lang['sort'] ?? 'Sort', ENT_QUOTES, 'UTF-8'); ?></button>\n                            </form>\n                        </div>\n                    </div>\n                    <div class=\"card-body\" style=\"background-color: #2a2a2a; color: #fff;\">\n                        <?php if ($error): ?>\n                            <div class=\"alert alert-warning\"><?php echo htmlspecialchars($error, ENT_QUOTES, 'UTF-8'); ?></div>\n                        <?php elseif ($search_query && !empty($search_query) && empty($pastes)): ?>\n                            <div class=\"alert alert-info\"><?php echo htmlspecialchars($lang['no_results'] ?? 'No results found for your search.', ENT_QUOTES, 'UTF-8'); ?></div>\n                        <?php endif; ?>\n                        <div class=\"table-responsive\">\n                            <table id=\"archive\" class=\"table table-hover table-bordered\" style=\"background-color: #2a2a2a; color: #fff;\">\n                                <thead class=\"table-dark\">\n                                    <tr>\n                                        <th scope=\"col\"><?php echo htmlspecialchars($lang['pastetitle'] ?? 'Title', ENT_QUOTES, 'UTF-8'); ?></th>\n                                        <th scope=\"col\"><?php echo htmlspecialchars($lang['pastetime'] ?? 'Time', ENT_QUOTES, 'UTF-8'); ?></th>\n                                        <th scope=\"col\"><?php echo htmlspecialchars($lang['pastesyntax'] ?? 'Syntax', ENT_QUOTES, 'UTF-8'); ?></th>\n                                        <th scope=\"col\"><?php echo htmlspecialchars($lang['pastemember'] ?? 'Posted By', ENT_QUOTES, 'UTF-8'); ?></th>\n                                        <th scope=\"col\"><?php echo htmlspecialchars($lang['pasteviews'] ?? 'Views', ENT_QUOTES, 'UTF-8'); ?></th>\n                                    </tr>\n                                </thead>\n                                <tbody>\n                                    <?php\n                                    try {\n                                        if (empty($pastes)) {\n                                            echo '<tr><td colspan=\"5\" class=\"text-center\">' . htmlspecialchars($lang['emptypastebin'] ?? 'No pastes found', ENT_QUOTES, 'UTF-8') . '</td></tr>';\n                                        } else {\n                                            foreach ($pastes as $row) {\n                                                $title = trim((string) ($row['title'] ?? 'Untitled'));\n                                                $p_id = trim((string) ($row['id'] ?? ''));\n                                                $p_code = trim((string) ($row['code'] ?? 'text'));\n                                                $p_date = trim((string) ($row['date'] ?? ''));\n                                                $p_time = (int) ($row['now_time'] ?? 0);\n                                                $p_member = trim((string) ($row['member'] ?? 'Guest'));\n                                                $p_views = (int) ($row['views'] ?? 0);\n                                                // Use formatRealTime for absolute date from database date string\n                                                $p_time_display = formatRealTime($p_date);\n                                                $title = truncate($title, 20, 50);\n                                                $url = $mod_rewrite == '1' \n                                                    ? htmlspecialchars($baseurl . '' . $p_id, ENT_QUOTES, 'UTF-8')\n                                                    : htmlspecialchars($baseurl . 'paste.php?id=' . $p_id, ENT_QUOTES, 'UTF-8');\n                                                ?>\n                                                <tr>\n                                                    <td><a href=\"<?php echo $url; ?>\" title=\"<?php echo htmlspecialchars($title, ENT_QUOTES, 'UTF-8'); ?>\" class=\"text-primary\"><?php echo ucfirst(htmlspecialchars($title, ENT_QUOTES, 'UTF-8')); ?></a></td>\n                                                    <td><?php echo htmlspecialchars($p_time_display, ENT_QUOTES, 'UTF-8'); ?></td>\n                                                    <td><span class=\"badge bg-primary\"><?php echo htmlspecialchars(strtoupper($p_code), ENT_QUOTES, 'UTF-8'); ?></span></td>\n                                                    <td><?php echo htmlspecialchars($p_member, ENT_QUOTES, 'UTF-8'); ?></td>\n                                                    <td><?php echo htmlspecialchars($p_views, ENT_QUOTES, 'UTF-8'); ?></td>\n                                                </tr>\n                                                <?php\n                                            }\n                                        }\n                                    } catch (Exception $e) {\n                                        echo '<tr><td colspan=\"5\" class=\"text-center text-danger\">Error fetching pastes: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</td></tr>';\n                                    }\n                                    ?>\n                                </tbody>\n                            </table>\n                        </div>\n                        <?php if ($totalItems > 0 && $totalPages > 1): ?>\n                            <nav aria-label=\"Page navigation\" class=\"mt-4\">\n                                <ul class=\"pagination justify-content-center\">\n                                    <?php\n                                    $range = 2; // Number of pages to show around current page\n                                    $prevPage = $page > 1 ? $page - 1 : 1; // Previous button\n                                    $queryParamsPrev = http_build_query(array_merge($_GET, ['page' => $prevPage]));\n                                    $disabledPrev = $page == 1 ? ' disabled' : '';\n                                    echo '<li class=\"page-item' . $disabledPrev . '\"><a class=\"page-link btn btn-primary btn-sm\" href=\"?' . $queryParamsPrev . '\" aria-label=\"Previous\"><span aria-hidden=\"true\">&laquo;</span></a></li>';\n\n                                    for ($i = 1; $i <= $totalPages; $i++) { // Page numbers\n                                        $isActive = $i === $page ? ' active' : '';\n                                        $queryParams = http_build_query(array_merge($_GET, ['page' => $i]));\n                                        if ($i === 1 || $i === $totalPages || ($i >= $page - $range && $i <= $page + $range)) {\n                                            echo '<li class=\"page-item' . $isActive . '\"><a class=\"page-link\" href=\"?' . $queryParams . '\">' . $i . '</a></li>';\n                                        } elseif ($i === $page - ($range + 1) || $i === $page + ($range + 1)) {\n                                            echo '<li class=\"page-item disabled\"><span class=\"page-link\">...</span></li>';\n                                        }\n                                    }\n\n                                    $nextPage = $page < $totalPages ? $page + 1 : $totalPages; // Next button\n                                    $queryParamsNext = http_build_query(array_merge($_GET, ['page' => $nextPage]));\n                                    $disabledNext = $page == $totalPages ? ' disabled' : '';\n                                    echo '<li class=\"page-item' . $disabledNext . '\"><a class=\"page-link\" href=\"?' . $queryParamsNext . '\" aria-label=\"Next\"><span aria-hidden=\"true\">&raquo;</span></a></li>';\n                                    ?>\n                                </ul>\n                            </nav>\n                        <?php endif; ?>\n                    </div>\n                </div>\n            </div>\n        <?php endif; ?>\n    </div>\n    <?php if ($privatesite != \"on\"): ?>\n        <div class=\"text-center my-4\">\n            <?php echo $ads_2 ?? ''; ?>\n        </div>\n    <?php endif; ?>\n</div>\n<style>\n    .table-hover tbody tr:hover { background-color: #343a40; }\n    .pagination .page-link { background-color: #2a2a2a; border-color: #444; color: #fff; }\n    .pagination .page-link:hover { background-color: #0d6efd; }\n    .pagination .active .page-link { background-color: #0d6efd; border-color: #0d6efd; }\n    .badge.bg-primary { background-color: #0d6efd; }\n</style>\n<?php require_once('theme/' . ($default_theme ?? 'default') . '/footer.php'); ?>"
  },
  {
    "path": "theme/default/css/index.php",
    "content": ""
  },
  {
    "path": "theme/default/css/paste.css",
    "content": "body {\n\tfont-family: \"Open Sans\", sans-serif;\n\tfont-optical-sizing: auto;\n    background-color: #1a1a1a !important; /* Dark base theme */\n    color: #fff;\n    margin: 0 !important;\n    padding: 0 !important;\n    overflow-x: hidden;\n}\n\n.card {\n    background-color: #222;\n    border: none;\n    color: #fff;\n    margin-bottom: 1.5rem;\n}\n\n.container-xl {\n    max-width: 1140px;\n    margin: 0 auto;\n    padding: 0 15px;\n}\n\n/* Nav Area */\n.navbar { border-bottom: 1px solid rgba(255, 255, 255, 0.1); }\n.navbar-brand { /* color: #007bff !important; */ font-weight: 600; font-size: 1.5rem; display: flex; align-items: center; gap: 8px; }\n.nav-link { transition: color 0.2s; }\n.nav-link:hover { color: #0d6efd !important; }\n.search-form { max-width: 400px; width: 100%; display: flex; align-items: center; }\n.search-form .form-control { background-color: #2a2a2a; border-color: #444; color: #fff; }\n.search-form .form-control:focus { background-color: #2a2a2a; border-color: #0d6efd; box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); }\n.search-form .btn { border-color: #444; }\n.dropdown-menu { background-color: #212529; border: 1px solid rgba(255, 255, 255, 0.1); }\n.dropdown-item { color: #fff; }\n.dropdown-item:hover { background-color: #0d6efd; color: #fff; }\n.modal-content { background-color: #212529; }\n.modal-header { border-bottom: 1px solid rgba(255, 255, 255, 0.1); }\n.modal-footer { border-top: 1px solid rgba(255, 255, 255, 0.1); }\n.btn-oauth { display: flex; align-items: center; justify-content: center; gap: 8px; }\n.navbar-center { flex-grow: 1; display: flex; justify-content: center; }\n.navbar-toggler { margin-left: 15px; }\n@media (max-width: 991px) {\n.navbar-center { justify-content: center; }\n.search-form { max-width: 100%; margin: 10px auto; }\n.navbar-nav-guest { margin-top: 10px; }\n.navbar-collapse { justify-content: flex-end; }\n.navbar-toggler { margin-left: 10px; }\n}\n\n/* reCAPTCHA dark mode fix */\n.g-recaptcha {\n    background-color: #222 !important;\n    border: none !important;\n    padding: 0 !important;\n    margin-bottom: 1.5rem !important; /* Consistent spacing below reCAPTCHA */\n    width: 304px !important; /* Default reCAPTCHA width */\n    overflow: hidden !important;\n}\n\n.g-recaptcha > div,\n.g-recaptcha iframe {\n    background-color: #222 !important;\n    border: none !important;\n    box-shadow: none !important;\n    margin: 0 !important;\n    padding: 0 !important;\n}\n\n.g-recaptcha * {\n    background-color: #222 !important;\n    color: #fff !important;\n    border: none !important;\n}\n\n/* Additional rule to target reCAPTCHA wrapper */\n.g-recaptcha > div > div {\n    background-color: #222 !important;\n    border: none !important;\n    box-shadow: none !important;\n}\n\n/* Ensure reCAPTCHA iframe scales correctly */\n.g-recaptcha iframe {\n    transform: scale(1) !important;\n    -webkit-transform: scale(1) !important;\n    transform-origin: 0 0 !important;\n    -webkit-transform-origin: 0 0 !important;\n}\n\n/* Submit button spacing */\n.paste-button {\n    width: 150px;\n    margin-top: 1.5rem !important; /* Space above submit button */\n}\n/* Make the select look/behave like a small outline button inside .btn-group */\n.btn-group .btn-select{\n  width:auto;\n  padding:.25rem .75rem;\n  border:1px solid var(--bs-secondary);\n  color:var(--bs-secondary);\n  border-radius:0;          /* so it fuses between neighbours */\n  appearance:none;\n}\n\n/* Round the outer corners when it's the first/last in the group */\n.btn-group > .btn-select:first-child{\n  border-top-left-radius:var(--bs-border-radius-sm);\n  border-bottom-left-radius:var(--bs-border-radius-sm);\n}\n.btn-group > .btn-select:last-child{\n  border-top-right-radius:var(--bs-border-radius-sm);\n  border-bottom-right-radius:var(--bs-border-radius-sm);\n}\n/* hover & active already handled by your earlier vars;\n   add explicit rules for the toggled/pressed states */\n.btn-outline-secondary:active,\n.btn-outline-secondary.active,\n.btn-check:checked + .btn-outline-secondary,\n.show > .btn-outline-secondary.dropdown-toggle {\n  background-color: rgba(var(--bs-secondary-rgb), .2); /* slightly lighter */\n  color: var(--bs-secondary);\n  border-color: var(--bs-secondary);\n}\n\n/* optional: clearer keyboard focus */\n.btn-outline-secondary:focus-visible {\n  box-shadow: 0 0 0 .2rem rgba(var(--bs-secondary-rgb), .25);\n}\n/* Collapse the shared border between the select and the next .btn */\n.btn-group .btn-select + .btn{ margin-left:-1px; }\n\n/* Form container */\n.form-group, .card-body {\n    background-color: #222 !important;\n    padding: 15px;\n    margin: 0 !important;\n}\n\n/* Other existing styles */\n.list-group-item-dark {\n    background-color: #343a40;\n}\n\n.page-link {\n    background-color: #343a40;\n    border-color: #495057;\n}\n\n.line-number-tooltip {\n    position: absolute;\n    background: #333;\n    color: #fff;\n    padding: 2px 6px;\n    border-radius: 3px;\n    font-size: 12px;\n    z-index: 1000;\n    display: none;\n}\n\n.recent-paste-button {\n    margin-left: auto;\n    min-width: 30px;\n}\n\n.list-group-item {\n    display: flex;\n    align-items: center;\n    padding-right: 10px;\n}\n\n.navbar-nav-guest {\n    margin-left: auto !important;\n}\n\n.navbar-nav.me-auto {\n    margin-right: 1rem !important;\n}\n\n.card-header {\n    overflow-x: auto;\n    max-width: 100%;\n    display: flex;\n    justify-content: space-between;\n    align-items: center;\n    flex-wrap: wrap;\n    gap: 1rem;\n}\n\n.card-header h1 {\n    margin: 0;\n    font-size: 1rem;\n}\n\n.card-header .meta {\n    font-size: 0.9rem;\n    margin: 0;\n}\n\n.card-header .btn-group {\n    flex-shrink: 0;\n}\n\n/* container + defaults */\n.code-content, .paste, .geshi {\n  background: #212529;\n  color: #e6e6e6;\n}\n\n/* GeSHi colours */\n.code-content .de1,\n.paste .de2,\n.paste .li1,\n.paste .li2 { color: #e8e8e8 !important; }                  /* base text */\n.code-content .kw1,\n.paste .sy1 { color: #4aa3ff !important; }                  /* keywords (if sy1 used that way) */\n.code-content .kw2 { color: #2ec4b6 !important; }           /* types / built-ins */\n.code-content .st0 { color: #9fe870 !important; }           /* strings */\n.code-content .co1,\n.paste .coMULTI { color: #7a8597 !important; font-style: italic; }  /* comments */\n.code-content .nu0 { color: #f8d66d !important; }           /* numbers */\n.code-content .me1,\n.code-content .me2 { color: #7dd3fc !important; }           /* methods/functions */\n.code-content .br0 { color: #e5e7eb !important; }           /* brackets/punctuation */\n.code-content .sy0 { color: #f59e0b !important; }           /* symbols/operators */\n.code-content .re0 { color: #ffd166 !important; }           /* regex */\n.code-content .st_h { color: #86efac !important; }          /* here-strings */\n\n/* Mirror for .geshi outputs that don't sit under .code-content */\n.geshi .kw1  { color: #4aa3ff !important; }\n.geshi .kw2  { color: #2ec4b6 !important; }\n.geshi .st0  { color: #9fe870 !important; }\n.geshi .co1  { color: #7a8597 !important; font-style: italic; }\n.geshi .nu0  { color: #f8d66d !important; }\n.geshi .sy0  { color: #f59e0b !important; }\n.geshi .br0  { color: #e5e7eb !important; }\n.geshi .re0  { color: #ffd166 !important; }\n.geshi .me1,\n.geshi .me2  { color: #7dd3fc !important; }\n\n/* Line numbers */\n.geshi ol.geshi-ln { color: #5a6073; }\n.geshi.geshi-fancy ol.geshi-ln > li { border-left-color: #2a2f3d; }\n\n\n.code-content {\n    overflow-x: auto;\n    max-width: 100%;\n    border-radius: 4px;\n    margin-bottom: 1rem;\n    font-family: 'Fira Code', monospace;\n    font-size: 0.9rem; /* geshi */\n}\n.code-content.no-line-numbers ol, .code-content.no-line-numbers pre, .code-content.no-line-numbers ol li, .code-content.no-line-numbers pre span {\n    list-style: none !important;\n    margin-left: 0 !important;\n    padding-left: 0 !important;\n}\n\n.code-content.no-line-numbers ol li::before, .code-content.no-line-numbers pre::before, .code-content.no-line-numbers pre span::before {\n    content: none !important;\n}\n\n.code-content-fullscreen {\n    position: fixed;\n    top: 0;\n    left: 0;\n    width: 100vw;\n    height: 100vh;\n    z-index: 1050;\n    margin: 0;\n    padding: 1rem;\n    background-color: #222;\n}\n\n.syntax-select {\n    width: 200px;\n}\n\n.input-group-text {\n    background-color: #333;\n    border-color: #444;\n}\n\n.guest-welcome {\n    padding: 2rem;\n}\n\n.guest-welcome i {\n    font-size: 5rem;\n    margin-bottom: 1rem;\n}\n\n.no-line-numbers ol, .no-line-numbers ol li.marker {\n    list-style: none !important;\n}\n.close-btn {\n    position: absolute;\n    top: 5px;\n    right: 10px;\n    background: none;\n    border: none;\n    font-size: 1.5em;\n    cursor: pointer;\n    color: #FFF;\n}\n.notification {\n    position: relative;\n\toverflow: auto;\n    padding: 10px;\n    margin-bottom: 10px;\n    border: 1px solid #ccc;\n    display: none;\n}\n.notification.error {\n    border-color: #dc3545;\n    color: #dc3545;\n}\n.notification.fade-out {\n    opacity: 0;\n    transition: opacity 0.5s;\n}\n\n/* GDPR banner */\n#cookieBanner{\n\tfont-size: 0.9em;\n\tz-index:1080;\n\tdisplay:none;\n\tbackground: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important;\n    backdrop-filter: blur(3px);\n}\n\n/* === Editor (gutter + textarea) ======================================= */\n.editor-wrap{\n  position: relative;\n  display: grid;\n  grid-template-columns: max-content 1fr; /* gutter auto-width + textarea */\n  align-items: stretch;                   /* <- same height for both columns */\n  gap: 0;\n  overflow: hidden;                       /* clip both sides together */\n    box-shadow: none !important;\n\n}\n\n/* Gutter (left) */\n.editor-gutter{\n  display: flex;                          /* let inner rail fill height */\n  overflow: hidden;                       /* no own scrollbar */\n  text-align: right;\n  user-select: none;\n  white-space: pre;\n  color: #8a8f98;\n  background: #111418;\n  border: 1px solid #2a2f36;\n  border-right: none;\n  border-radius: 0.5rem 0 0 0.5rem;       /* rounded left corners */\n  box-sizing: border-box;\n  line-height: 1.5;\n  font-size: 14px;\n  padding: 8px 6px;                       /* match textarea vertical padding */\n  min-width: 2rem;                     /* base width; grows if digits need */\n}\n\n.editor-gutter { font-variant-numeric: tabular-nums; font-feature-settings: \"tnum\"; }\n\n/* Numbers rail (scrolls via JS transform; no absolute needed here) */\n.editor-gutter-inner{\n  white-space: pre;\n  padding: 0 6px 0 4px;\n  padding-top: 0;\n  align-self: flex-start;\n}\n\n/* Textarea (right) */\n.editor-ta{\n  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  line-height: 1.5;\n  font-size: 14px;\n  color: #e6edf3;\n  background: #0d1117;\n  border: 1px solid #2a2f36;\n  border-left: none;\n  border-radius: 0 0.5rem 0.5rem 0;       /* rounded right corners only */\n  outline: none !important;\n  box-shadow: none !important;\n  resize: vertical;                       /* user can drag; grid keeps heights equal */\n  padding: 8px 10px;\n  width: 100%;\n  caret-color: #e6edf3;\n}\n\n/* subtle dark scrollbar */\n.editor-ta::-webkit-scrollbar { width: 12px; }\n.editor-ta::-webkit-scrollbar-track { background: #0d1117; }\n.editor-ta::-webkit-scrollbar-thumb {\n  background-color: #2b3037;\n  border-radius: 6px;\n  border: 3px solid #0d1117;\n}\n\n/* no bootstrap ring */\n.editor-ta:focus,\n.search-form .form-control:focus {\n  box-shadow: none !important;\n  border-color: #2a2f36 !important;\n  outline: 0 !important;\n}\n\n/* Outline buttons: keep borders + subtle bg on hover/active */\n.btn-outline-secondary {\n  --btn-border: rgba(var(--bs-secondary-rgb), .8);\n  border-color: var(--btn-border);\n}\n\n.btn-outline-secondary:hover,\n.btn-outline-secondary:focus {\n  border-color: var(--btn-border);\n  background-color: rgba(var(--bs-secondary-rgb), .08);\n}\n\n.btn-outline-secondary:active,\n.btn-outline-secondary.active,\n.btn-check:checked + .btn-outline-secondary,\n.show > .btn-outline-secondary.dropdown-toggle {\n  border-color: var(--btn-border);\n  background-color: rgba(var(--bs-secondary-rgb), .16);\n}\n\n/* Accessible focus ring for keyboard nav */\n.btn-outline-secondary:focus-visible {\n  outline: 0;\n  box-shadow: 0 0 0 .2rem rgba(var(--bs-secondary-rgb), .25);\n}\n\n/* Keep active button border from being eaten */\n.btn-group .btn { position: relative; z-index: 1; }\n.btn-group .btn:focus,\n.btn-group .btn:active,\n.btn-group .btn.active { z-index: 2; }\n\n/* select disguised as a button: match behavior */\n.btn-group .btn-select {\n  border-color: var(--btn-border);\n}\n.btn-group .btn-select:focus {\n  box-shadow: none;\n}\n\n/* Force GeSHi line numbers to render and be visible */\n.code-content ol {\n  list-style-type: decimal !important;   /* make sure markers exist */\n  list-style-position: outside !important;\n  padding-left: 3.5em !important;        /* space for the numbers */\n  margin-left: 0 !important;\n}\n\n.code-content ol li {\n  list-style-type: decimal !important;   /* some resets target <li> */\n  padding-left: .5em;                    /* a little gap after the marker */\n}\n\n.code-content:not(.no-line-numbers) ol,\n.code-content:not(.no-line-numbers) ol li {\n  list-style: decimal !important;\n}\n\n/* Hide GeSHi line numbers cleanly when toggled */\n.no-line-numbers ol,\n.no-line-numbers ol li,\n.no-line-numbers ol li::before {\n    list-style: none !important;\n    counter-increment: none !important;\n    content: '' !important;\n    padding-left: 0 !important;\n    margin-left: 0 !important;\n}\n\n/* Prevent gutter width reserve */\n.no-line-numbers ol {\n    padding-left: 0 !important;\n}\n\n/* === highlight.php line numbers (no extra left padding) ================== */\n.code-content pre.hljs {\n  margin: 0;\n}\n.editor-wrap{ display:grid; grid-template-columns:max-content 1fr; align-items:stretch; }\n.editor-gutter{ overflow:hidden; }\n.editor-gutter-inner{ will-change: transform; }\n.editor-ta{ line-height:1.5; resize:vertical; }\n/* Kill default OL indent and decimal bullets some global rules add */\n.code-content .hljs-ln,\n.code-content .hljs-ln li {\n  list-style: none !important;\n  margin-left: 0 !important;\n  padding-left: 0 !important;\n}\n\n/* Make the whole list one two-column table */\n.code-content .hljs-ln {\n  display: table;\n  width: 100%;\n  border-collapse: separate;\n  border-spacing: 0;\n}\n\n/* Each line is a table row */\n.code-content .hljs-ln-line {\n  display: table-row;\n}\n\n/* Cells: [gutter | code] */\n.code-content .hljs-ln-n,\n.code-content .hljs-ln-c {\n  display: table-cell;\n  vertical-align: top;\n  background: inherit;              /* match theme background */\n}\n\n/* Gutter cell */\n.code-content .hljs-ln-n {\n  user-select: none;\n  text-align: right;\n  padding: 0 .50rem 0 0;\n  white-space: pre;\n  opacity: .6;\n  font-variant-numeric: tabular-nums;\n  font-feature-settings: \"tnum\";\n  width: 1px;                       /* lets the table auto-size to content */\n}\n\n/* Code cell owns the vertical separator */\n.code-content .hljs-ln-c {\n  border-left: 1px solid rgba(255,255,255,.12);\n  padding-left: .75rem;\n  white-space: pre;\n  width: 100%;\n}\n\n/* When numbers are hidden, reclaim space cleanly */\n.code-content.no-line-numbers .hljs-ln-n { display: none; }\n.code-content.no-line-numbers .hljs-ln-c { border-left: 0; padding-left: 0; }\n"
  },
  {
    "path": "theme/default/errors.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n *\n * ----------------------------------------------------------------------\n * Expected context variables\n * $error (string)            - optional human message\n * $notfound (string)         - optional message for 404/expired/private\n * $require_password (bool)   - when TRUE, show the password form\n * $paste_id (int)            - used by the password form\n * $baseurl (string), $default_theme (string), $lang (array)\n * $privatesite (optional: \"on\"), $mod_rewrite (string \"1\"/\"0\")\n */\n$show_pw = isset($require_password) && $require_password === true;\n\n// Build rewrite-aware action for the password form\n$pw_action_url = '';\nif ($show_pw && isset($paste_id) && $paste_id !== '') {\n    if (isset($mod_rewrite) && $mod_rewrite == '1') {\n        $pw_action_url = rtrim((string)$baseurl, '/') . '/' . rawurlencode((string)$paste_id);\n    } else {\n        $pw_action_url = rtrim((string)$baseurl, '/') . '/paste.php?id=' . rawurlencode((string)$paste_id);\n    }\n}\n\n// Resolve message to show\n$generic_msg = $notfound ?? ($error ?? ($error_msg ?? ($lang['error'] ?? 'An error occurred.')));\n?>\n<style>\n<?php if (isset($privatesite) && $privatesite === \"on\"): ?>\n.sidebar-below { margin-top: 1.5rem; }\n<?php endif; ?>\n</style>\n\n<div class=\"content\">\n  <div class=\"container-xl my-4\">\n    <div class=\"row\">\n\n      <?php if (isset($privatesite) && $privatesite === \"on\"): ?>\n\n        <div class=\"col-lg-12\">\n          <div class=\"card\">\n            <?php if (!$show_pw): ?>\n              <div class=\"card-body text-center\">\n                <i class=\"bi bi-exclamation-circle\" style=\"font-size: 5rem; color: #0d6efd;\"></i>\n                <h1 class=\"mt-3\"><?php echo htmlspecialchars($generic_msg, ENT_QUOTES, 'UTF-8'); ?></h1>\n                <div class=\"mt-4\">\n                  <a href=\"<?php echo htmlspecialchars($baseurl, ENT_QUOTES, 'UTF-8'); ?>\" class=\"btn btn-primary\">\n                    <?php echo htmlspecialchars($lang['newpaste'] ?? 'New Paste', ENT_QUOTES, 'UTF-8'); ?>\n                  </a>\n                </div>\n              </div>\n            <?php else: ?>\n              <div class=\"card-header text-center\">\n                <h6><?php echo htmlspecialchars($lang['pwdprotected'] ?? 'Password Protected', ENT_QUOTES, 'UTF-8'); ?></h6>\n              </div>\n              <?php if (!empty($error)): ?>\n                <div class=\"alert alert-dark text-center mb-0 rounded-0\">\n                  <?php echo htmlspecialchars($error, ENT_QUOTES, 'UTF-8'); ?>\n                </div>\n              <?php endif; ?>\n              <div class=\"card-body\">\n                <form action=\"<?php echo htmlspecialchars($pw_action_url ?: $_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'); ?>\" method=\"post\" class=\"text-center\">\n                  <input type=\"hidden\" name=\"id\" value=\"<?php echo isset($paste_id) ? htmlspecialchars((string)$paste_id, ENT_QUOTES, 'UTF-8') : ''; ?>\">\n                  <div class=\"input-group w-50 mx-auto mb-3\">\n                    <span class=\"input-group-text\"><i class=\"bi bi-unlock\"></i></span>\n                    <input type=\"text\" class=\"form-control\" name=\"mypass\" placeholder=\"<?php echo htmlspecialchars($lang['enterpwd'] ?? 'Enter Password', ENT_QUOTES, 'UTF-8'); ?>\">\n                  </div>\n                  <button type=\"submit\" name=\"submit\" class=\"btn btn-primary\">\n                    <?php echo htmlspecialchars($lang['submit'] ?? 'Submit', ENT_QUOTES, 'UTF-8'); ?>\n                  </button>\n                </form>\n              </div>\n            <?php endif; ?>\n          </div>\n        </div>\n\n        <div class=\"sidebar-below\">\n          <?php\n          $__sidebar = __DIR__ . '/sidebar.php';\n          if (is_file($__sidebar)) { include $__sidebar; }\n          ?>\n        </div>\n\n      <?php else: ?>\n\n        <div class=\"col-lg-12\">\n          <div class=\"card\">\n            <?php if (!$show_pw): ?>\n              <div class=\"card-body text-center\">\n                <i class=\"bi bi-exclamation-circle\" style=\"font-size: 5rem; color: #0d6efd;\"></i>\n                <p class=\"mt-3\"><?php echo htmlspecialchars($generic_msg, ENT_QUOTES, 'UTF-8'); ?></p>\n                <div class=\"mt-4\">\n                  <a href=\"<?php echo htmlspecialchars($baseurl, ENT_QUOTES, 'UTF-8'); ?>\" class=\"btn btn-primary\">\n                    <?php echo htmlspecialchars($lang['newpaste'] ?? 'New Paste', ENT_QUOTES, 'UTF-8'); ?>\n                  </a>\n                </div>\n              </div>\n            <?php else: ?>\n              <div class=\"card-header text-center\">\n                <h6><?php echo htmlspecialchars($lang['pwdprotected'] ?? 'Password Protected', ENT_QUOTES, 'UTF-8'); ?></h6>\n              </div>\n              <?php if (!empty($error)): ?>\n                <div class=\"card-body text-center\">\n                  <div class=\"alert alert-dark text-center mb-0 rounded-0\">\n                    <?php echo htmlspecialchars($error, ENT_QUOTES, 'UTF-8'); ?>\n                  </div>\n                </div>\n              <?php endif; ?>\n              <div class=\"card-body\">\n                <form action=\"<?php echo htmlspecialchars($pw_action_url ?: $_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'); ?>\" method=\"post\" class=\"text-center\">\n                  <input type=\"hidden\" name=\"id\" value=\"<?php echo isset($paste_id) ? htmlspecialchars((string)$paste_id, ENT_QUOTES, 'UTF-8') : ''; ?>\">\n                  <div class=\"input-group w-50 mx-auto mb-3\">\n                    <span class=\"input-group-text\"><i class=\"bi bi-unlock\"></i></span>\n                    <input type=\"text\" class=\"form-control\" name=\"mypass\" placeholder=\"<?php echo htmlspecialchars($lang['enterpwd'] ?? 'Enter Password', ENT_QUOTES, 'UTF-8'); ?>\">\n                  </div>\n                  <button type=\"submit\" name=\"submit\" class=\"btn btn-primary\">\n                    <?php echo htmlspecialchars($lang['submit'] ?? 'Submit', ENT_QUOTES, 'UTF-8'); ?>\n                  </button>\n                </form>\n              </div>\n            <?php endif; ?>\n          </div>\n        </div>\n\n      <?php endif; ?>\n\n    </div>\n  </div>\n</div>"
  },
  {
    "path": "theme/default/footer.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n\n// reCAPTCHA config\n$cap_e              = $cap_e              ?? ($_SESSION['cap_e']             ?? 'off');      // 'on'|'off'\n$mode               = $mode               ?? ($_SESSION['mode']              ?? 'normal');   // 'reCAPTCHA'|'normal'\n$recaptcha_version  = $recaptcha_version  ?? ($_SESSION['recaptcha_version'] ?? 'v2');       // 'v2'|'v3'\n$site_key           = $site_key           ?? ($_SESSION['recaptcha_sitekey'] ?? '');         // site key string\n$captcha_enabled    = ($cap_e === 'on' && $mode === 'reCAPTCHA' && !empty($site_key));\n?>\n\n<!-- Footer -->\n<footer class=\"container-xl py-3 my-4 border-top\">\n  <div class=\"row align-items-center gy-2\">\n    <div class=\"col-md-4 mb-0 text-muted\">\n      Copyright &copy; <?php echo date(\"Y\"); ?>\n      <a href=\"<?php echo htmlspecialchars($baseurl, ENT_QUOTES, 'UTF-8'); ?>\" class=\"text-decoration-none\">\n        <?php echo htmlspecialchars($site_name ?? 'Paste', ENT_QUOTES, 'UTF-8'); ?>\n      </a>. All rights reserved.\n    </div>\n\n    <div class=\"col-md-4 text-center\">\n      <a href=\"<?php echo htmlspecialchars($baseurl, ENT_QUOTES, 'UTF-8'); ?>\" class=\"d-inline-flex align-items-center text-decoration-none\" aria-label=\"Paste Home\">\n        <i class=\"bi bi-clipboard me-2\" style=\"font-size: 1.5rem;\"></i>\n      </a>\n      <?php\n      // Footer inline links:\n      $footerLinks = getNavLinks($pdo, 'footer');\n      echo renderNavListSimple($footerLinks, ' &middot; ');\n      ?>\n    </div>\n\n    <div class=\"col-md-4 text-md-end text-muted\">\n      <button type=\"button\" class=\"btn btn-link p-0 me-3\" data-bs-toggle=\"modal\" data-bs-target=\"#cookieSettingsModal\" aria-label=\"Cookie Settings\">Cookie Settings</button>\n      <a href=\"https://phpaste.sourceforge.io/\" target=\"_blank\" class=\"text-decoration-none\">Powered by Paste</a>\n    </div>\n  </div>\n</footer>\n\n<?php if (!isset($_SESSION['username'])): ?>\n  <div class=\"text-center mb-4\">\n    <?php echo $ads_2 ?? ''; ?>\n  </div>\n<?php endif; ?>\n\n<!-- GDPR stuff -->\n<div id=\"cookieBanner\" class=\"position-fixed bottom-0 start-0 end-0 border-top shadow-sm\">\n  <div class=\"container-xl py-1 d-flex flex-column flex-lg-row align-items-start align-items-lg-center justify-content-between gap-3\">\n    <div class=\"me-lg-2\">\n      <h6 class=\"mb-1\">We use cookies. To comply with GDPR in the EU and the UK we have to show you these.</h6>\n      <p class=\"mb-0 text-muted small\">\n        We use cookies and similar technologies to keep this website functional (including spam protection via Google reCAPTCHA), and — with your consent — to measure usage and show ads. \n        See <a href=\"<?php echo htmlspecialchars(($baseurl ?? '/') . 'page/privacy', ENT_QUOTES, 'UTF-8'); ?>\">Privacy</a>.\n      </p>\n    </div>\n    <div class=\"ms-lg-auto d-flex gap-3\">\n      <button id=\"cookieReject\" type=\"button\" class=\"btn btn-outline-secondary\">Reject non-essential</button>\n      <button id=\"cookieSettings\" type=\"button\" class=\"btn btn-outline-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#cookieSettingsModal\">Settings</button>\n      <button id=\"cookieAcceptAll\" type=\"button\" class=\"btn btn-primary\">Accept all</button>\n    </div>\n  </div>\n</div>\n\n<!-- Cookie Settings Modal -->\n<div class=\"modal fade\" id=\"cookieSettingsModal\" tabindex=\"-1\" aria-labelledby=\"cookieSettingsLabel\" aria-hidden=\"true\">\n  <div class=\"modal-dialog modal-dialog-scrollable\">\n    <div class=\"modal-content\">\n      <div class=\"modal-header\">\n        <h5 class=\"modal-title\" id=\"cookieSettingsLabel\">Cookie Settings</h5>\n        <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n      </div>\n      <div class=\"modal-body\">\n        <p class=\"text-muted small\">\n          We use cookies to make our site work and keep it safe and secure (e.g., reCAPTCHA). You can choose to enable additional categories.\n        </p>\n\n        <div class=\"list-group\">\n\n          <label class=\"list-group-item d-flex align-items-start\">\n            <div class=\"form-check form-switch me-3 mt-1\">\n              <input class=\"form-check-input\" type=\"checkbox\" role=\"switch\" checked disabled>\n            </div>\n            <div>\n              <div class=\"fw-semibold\">Strictly necessary</div>\n              <div class=\"small text-muted\">\n                Required for security and core features (sessions, preferences, rate-limiting, and Google reCAPTCHA). These are always on.\n              </div>\n            </div>\n          </label>\n\n          <label class=\"list-group-item d-flex align-items-start\">\n            <div class=\"form-check form-switch me-3 mt-1\">\n              <input id=\"consentAnalytics\" class=\"form-check-input\" type=\"checkbox\" role=\"switch\">\n            </div>\n            <div>\n              <div class=\"fw-semibold\">Analytics</div>\n              <div class=\"small text-muted\">\n                Helps us understand usage and improve the site (Google Analytics).\n              </div>\n            </div>\n          </label>\n\n          <label class=\"list-group-item d-flex align-items-start\">\n            <div class=\"form-check form-switch me-3 mt-1\">\n              <input id=\"consentAds\" class=\"form-check-input\" type=\"checkbox\" role=\"switch\">\n            </div>\n            <div>\n              <div class=\"fw-semibold\">Advertising</div>\n              <div class=\"small text-muted\">\n                Enables ad networks like Google AdSense. Ads may use cookies to personalize/measure performance.\n              </div>\n            </div>\n          </label>\n\n        </div>\n      </div>\n      <div class=\"modal-footer\">\n        <button id=\"cookieSave\" type=\"button\" class=\"btn btn-primary\" data-bs-dismiss=\"modal\">Save preferences</button>\n      </div>\n    </div>\n  </div>\n</div>\n\n<!-- Scripts -->\n<script src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js\" integrity=\"sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz\" crossorigin=\"anonymous\"></script>\n<script src=\"<?php echo htmlspecialchars($baseurl . 'theme/' . $default_theme . '/js/paste.js', ENT_QUOTES, 'UTF-8'); ?>\"></script>\n<?php if (!empty($showThemeSwitcher) && !empty($hl_theme_options)): ?>\n  <script>\n\t// Highlight.php theme picker\n    // Pass config to the external script\n    window.__HL_THEMES  = <?php echo json_encode($hl_theme_options, JSON_UNESCAPED_SLASHES); ?>;\n    window.__HL_INITIAL = <?php echo isset($initialTheme) ? json_encode($initialTheme) : 'null'; ?>;\n  </script>\n  <script src=\"<?php echo htmlspecialchars($baseurl . 'theme/' . $default_theme . '/js/highlightTheme.js', ENT_QUOTES, 'UTF-8'); ?>\"></script>\n<?php endif; ?>\n<script>\n(function () {\n  // --- Simple consent storage in a cookie (JSON payload) ---\n  var CONSENT_COOKIE = 'paste_consent';\n  var CONSENT_MAX_DAYS = 365;\n\n  function setCookie(name, value, days) {\n    var expires = '';\n    if (days) {\n      var d = new Date();\n      d.setTime(d.getTime() + (days*24*60*60*1000));\n      expires = '; expires=' + d.toUTCString();\n    }\n    var secure = location.protocol === 'https:' ? '; Secure' : '';\n    document.cookie = name + '=' + encodeURIComponent(value) + expires + '; Path=/' + secure + '; SameSite=Lax';\n  }\n\n  function getCookie(name) {\n    var cname = name + '=';\n    var ca = document.cookie.split(';');\n    for (var i = 0; i < ca.length; i++) {\n      var c = ca[i].trim();\n      if (c.indexOf(cname) === 0) return decodeURIComponent(c.substring(cname.length, c.length));\n    }\n    return null;\n  }\n\n  function getDefaultConsent() {\n    return { decided:false, analytics:false, ads:false };\n  }\n\n  function readConsent() {\n    try {\n      var raw = getCookie(CONSENT_COOKIE);\n      return raw ? JSON.parse(raw) : getDefaultConsent();\n    } catch(e) {\n      return getDefaultConsent();\n    }\n  }\n\n  function saveConsent(c) {\n    c.decided = true;\n    setCookie(CONSENT_COOKIE, JSON.stringify(c), CONSENT_MAX_DAYS);\n  }\n\n  function qs(id){ return document.getElementById(id); }\n\n  // --- Script loaders gated by consent ---\n  var hasLoadedGA = false;\n  var hasLoadedAds = false;\n\n  function loadGoogleAnalytics(measurementId) {\n    if (hasLoadedGA || !measurementId) return;\n    hasLoadedGA = true;\n\n    var s = document.createElement('script');\n    s.async = true;\n    s.src = 'https://www.googletagmanager.com/gtag/js?id=' + encodeURIComponent(measurementId);\n    s.onload = function () {\n      window.dataLayer = window.dataLayer || [];\n      function gtag(){ dataLayer.push(arguments); }\n      window.gtag = gtag;\n      gtag('js', new Date());\n      gtag('config', measurementId);\n    };\n    document.head.appendChild(s);\n  }\n\n  function loadAdSense(clientId) {\n    if (hasLoadedAds || !clientId) return;\n    hasLoadedAds = true;\n\n    var s = document.createElement('script');\n    s.async = true;\n    s.src = 'https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=' + encodeURIComponent(clientId);\n    s.setAttribute('crossorigin', 'anonymous');\n    document.head.appendChild(s);\n  }\n\n  // Apply consent now\n  function applyConsent(consent) {\n    // Analytics (Google Analytics)\n    <?php if (!empty($ga)): ?>\n      if (consent.analytics) { loadGoogleAnalytics(<?php echo json_encode($ga); ?>); }\n    <?php endif; ?>\n\n    // Advertising (Google AdSense)\n    // If you’re using AdSense, put your pub id below; otherwise leave blank.\n    var adsClient = '';\n    if (adsClient && consent.ads) { loadAdSense(adsClient); }\n  }\n\n  // --- UI wiring ---\n  var banner = qs('cookieBanner');\n  var btnAcceptAll = qs('cookieAcceptAll');\n  var btnReject = qs('cookieReject');\n  var btnSettings = qs('cookieSettings');\n  var btnSave = qs('cookieSave');\n  var chkAnalytics = qs('consentAnalytics');\n  var chkAds = qs('consentAds');\n\n  var consent = readConsent();\n\n  // Initialize toggles from stored consent\n  if (chkAnalytics) chkAnalytics.checked = !!consent.analytics;\n  if (chkAds) chkAds.checked = !!consent.ads;\n\n  // Show banner if user hasn’t decided yet\n  if (!consent.decided && banner) {\n    banner.style.display = 'block';\n  }\n\n  // Apply consent for this page load if already decided\n  applyConsent(consent);\n\n  // Handlers\n  if (btnAcceptAll) {\n    btnAcceptAll.addEventListener('click', function () {\n      consent.analytics = true;\n      consent.ads = true;\n      saveConsent(consent);\n      if (banner) banner.style.display = 'none';\n      applyConsent(consent);\n    });\n  }\n\n  if (btnReject) {\n    btnReject.addEventListener('click', function () {\n      consent.analytics = false;\n      consent.ads = false;\n      saveConsent(consent);\n      if (banner) banner.style.display = 'none';\n      // No need to unload anything; we simply don’t load.\n    });\n  }\n\n  if (btnSave) {\n    btnSave.addEventListener('click', function () {\n      consent.analytics = !!(chkAnalytics && chkAnalytics.checked);\n      consent.ads = !!(chkAds && chkAds.checked);\n      saveConsent(consent);\n      if (banner) banner.style.display = 'none';\n      applyConsent(consent);\n    });\n  }\n})();\n</script>\n\n<?php if ($captcha_enabled && strtolower($recaptcha_version) === 'v3'): ?>\n<!-- reCAPTCHA v3 (strictly necessary: loaded regardless of analytics/ads consent) -->\n<script>\n  window.pasteConfig = {\n    enabled: true,\n    mode: 'reCAPTCHA',\n    version: 'v3',\n    siteKey: <?php echo json_encode($site_key); ?>\n  };\n\n  (function () {\n    function ok(m){ console.log('%c'+m,'color:#16a34a;font-weight:600'); }\n    function err(m){ console.log('%c'+m,'color:#ef4444;font-weight:700'); }\n    function warn(m){ console.log('%c'+m,'color:#f59e0b;font-weight:600'); }\n\n    ok('[reCAPTCHA] v3 enabled; loading api.js…');\n\n    var s = document.createElement('script');\n    s.async = true; s.defer = true;\n    s.src = 'https://www.google.com/recaptcha/api.js?render=' + encodeURIComponent(window.pasteConfig.siteKey);\n\n    s.onload = function () {\n      if (!window.grecaptcha) { err('[reCAPTCHA] api.js loaded but grecaptcha missing'); return; }\n\n      grecaptcha.ready(function () {\n        ok('[reCAPTCHA] grecaptcha ready.');\n\n        var actionMap = {\n          'mainForm': 'create_paste',\n          'signin-form': 'login',\n          'direct-signin-form': 'login',\n          'signup-form': 'signup',\n          'forgot-form': 'forgot',\n          'reset-form': 'reset',\n          'resend-form': 'resend'\n        };\n\n        function ensureHidden(form) {\n          var h = form.querySelector('input[name=\"g-recaptcha-response\"]');\n          if (!h) {\n            h = document.createElement('input');\n            h.type = 'hidden';\n            h.name = 'g-recaptcha-response';\n            form.appendChild(h);\n          }\n          return h;\n        }\n\n        if (!window.__rcBoundSubmit) {\n          document.addEventListener('submit', function (e) {\n            var form = e.target;\n            if (!(form instanceof HTMLFormElement)) return;\n\n            var id = form.id || '';\n            var action = actionMap[id] || 'submit';\n\n            var hidden = form.querySelector('input[name=\"g-recaptcha-response\"]');\n            if (hidden && hidden.value) { warn('[reCAPTCHA] token already present for \"'+action+'\"; allow submit.'); return; }\n\n            e.preventDefault();\n            grecaptcha.execute(window.pasteConfig.siteKey, { action: action }).then(function (token) {\n              console.log('[reCAPTCHA] action=\"%s\" token: %s…', action, token.slice(0, 28));\n              ensureHidden(form).value = token;\n              HTMLFormElement.prototype.submit.call(form);\n            }).catch(function (e2) {\n              err('[reCAPTCHA] execute failed for \"'+action+'\": ' + (e2 && e2.message || e2));\n              HTMLFormElement.prototype.submit.call(form); // let server decide\n            });\n          }, { capture: true });\n\n          window.__rcBoundSubmit = true;\n        }\n\n        grecaptcha.execute(window.pasteConfig.siteKey, { action: 'page_load' })\n          .then(function (t) { console.log('[reCAPTCHA] action=\"page_load\" token: %s…', t.slice(0, 28)); })\n          .catch(function (e3) { err('[reCAPTCHA] page_load token failed: ' + (e3 && e3.message || e3)); });\n      });\n    };\n\n    s.onerror = function(){ err('[reCAPTCHA] failed to load api.js'); };\n    document.head.appendChild(s);\n  })();\n</script>\n<?php endif; ?>\n\n<!-- Additional Script -->\n<?php echo $additional_scripts ?? ''; ?>\n\n</body>\n</html>\n"
  },
  {
    "path": "theme/default/header.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n?>\n<!DOCTYPE html>\n<html lang=\"<?php echo htmlspecialchars(basename($default_lang ?? 'en.php', '.php'), ENT_QUOTES, 'UTF-8'); ?>\" data-bs-theme=\"dark\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <title><?php if (isset($p_title)) { echo htmlspecialchars($p_title ?? '', ENT_QUOTES, 'UTF-8') . ' - '; } echo htmlspecialchars($title ?? '', ENT_QUOTES, 'UTF-8'); ?></title>\n    <meta name=\"description\" content=\"<?php echo htmlspecialchars($des ?? '', ENT_QUOTES, 'UTF-8'); ?>\" />\n    <meta name=\"keywords\" content=\"<?php echo htmlspecialchars($keyword ?? '', ENT_QUOTES, 'UTF-8'); ?>\" />\n    <link rel=\"shortcut icon\" href=\"<?php echo htmlspecialchars($baseurl . 'theme/' . ($default_theme ?? 'default') . '/img/favicon.ico', ENT_QUOTES, 'UTF-8'); ?>\" />\n    <link href=\"//cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH\" crossorigin=\"anonymous\">\n    <link href=\"//cdn.jsdelivr.net/npm/bootstrap-icons@1.13.1/font/bootstrap-icons.min.css\" rel=\"stylesheet\">\n\t<?php if (($highlighter ?? 'geshi') === 'highlight'): ?>\n\t  <?php\n\t\t// Highlight.php theme CSS (only when using highlight.php)\n\t\t$stylesRel = 'includes/Highlight/styles';\n\t\t$styleFile = isset($hl_style) && $hl_style !== '' ? $hl_style : 'hybrid.css';\n\t\t$href = rtrim($baseurl ?? '/', '/') . '/' . $stylesRel . '/' . $styleFile;\n\t  ?>\n\t  <link rel=\"stylesheet\" id=\"hljs-theme-link\" href=\"<?php echo htmlspecialchars($href, ENT_QUOTES, 'UTF-8'); ?>\">\n\t<?php endif; ?>\n\n    <?php if (isset($ges_style)) { echo $ges_style; } ?>\n    <link href=\"<?php echo htmlspecialchars($baseurl . 'theme/' . ($default_theme ?? 'default') . '/css/paste.css', ENT_QUOTES, 'UTF-8'); ?>\" rel=\"stylesheet\" type=\"text/css\" />\n</head>\n<body>\n    <!-- Header -->\n    <nav class=\"navbar navbar-expand-lg bg-dark\">\n        <div class=\"container-xl d-flex align-items-center\">\n            <a class=\"navbar-brand\" href=\"<?php echo htmlspecialchars($baseurl ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                <i class=\"bi bi-clipboard\"></i> <?php echo htmlspecialchars($site_name ?? '', ENT_QUOTES, 'UTF-8'); ?>\n            </a>\n            <?php if (!isset($privatesite) || $privatesite != \"on\") { ?>\n                <div class=\"navbar-center\">\n                    <form class=\"search-form\" action=\"<?php echo htmlspecialchars($baseurl . ($mod_rewrite == '1' ? 'archive' : 'archive.php'), ENT_QUOTES, 'UTF-8'); ?>\" method=\"get\">\n                        <input class=\"form-control me-2\" type=\"search\" name=\"q\" id=\"searchInput\" placeholder=\"<?php echo htmlspecialchars($lang['search'] ?? 'Search pastes...', ENT_QUOTES, 'UTF-8'); ?>\" aria-label=\"Search\" value=\"<?php echo htmlspecialchars($_GET['q'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\" autocomplete=\"off\">\n                        <button class=\"btn btn-outline-light\" type=\"submit\"><i class=\"bi bi-search\"></i></button>\n                    </form>\n                </div>\n            <?php } ?>\n            <button class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNav\" aria-controls=\"navbarNav\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\n                <span class=\"navbar-toggler-icon\"></span>\n            </button>\n            <div class=\"collapse navbar-collapse\" id=\"navbarNav\">\n<ul class=\"navbar-nav ms-auto\">\n    <?php\n    // Archive link\n    if (!isset($privatesite) || $privatesite != \"on\") {\n        if ($mod_rewrite == '1') {\n            echo '<li class=\"nav-item\"><a class=\"nav-link\" href=\"' . htmlspecialchars($baseurl . 'archive', ENT_QUOTES, 'UTF-8') . '\">' . htmlspecialchars($lang['archive'] ?? 'Archive', ENT_QUOTES, 'UTF-8') . '</a></li>';\n        } else {\n            echo '<li class=\"nav-item\"><a class=\"nav-link\" href=\"' . htmlspecialchars($baseurl . 'archive.php', ENT_QUOTES, 'UTF-8') . '\">' . htmlspecialchars($lang['archive'] ?? 'Archive', ENT_QUOTES, 'UTF-8') . '</a></li>';\n        }\n    }\n\n    // Dynamic pages (header/both) from `pages` table\n    $headerLinks = getNavLinks($pdo, 'header');\n    echo renderBootstrapNav($headerLinks);\n    ?>\n\n    <!-- Account / Guest dropdown -->\n    <li class=\"nav-item dropdown navbar-nav-guest\">\n        <?php if (isset($_SESSION['token'])) {\n            echo '<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\"><i class=\"bi bi-person\"></i> ' . htmlspecialchars($_SESSION['username'] ?? '', ENT_QUOTES, 'UTF-8') . '</a>';\n        ?>\n            <ul class=\"dropdown-menu dropdown-menu-end\">\n                <li><h6 class=\"dropdown-header\"><?php echo htmlspecialchars($lang['my_account'] ?? 'My Account', ENT_QUOTES, 'UTF-8'); ?></h6></li>\n                <?php\n                if ($mod_rewrite == '1') {\n                    echo '<li><a class=\"dropdown-item\" href=\"' . htmlspecialchars($baseurl . 'user/' . urlencode($_SESSION['username'] ?? ''), ENT_QUOTES, 'UTF-8') . '\"><i class=\"bi bi-clipboard\"></i> ' . htmlspecialchars($lang['pastes'] ?? 'Pastes', ENT_QUOTES, 'UTF-8') . '</a></li>';\n                    echo '<li><a class=\"dropdown-item\" href=\"' . htmlspecialchars($baseurl . 'profile', ENT_QUOTES, 'UTF-8') . '\"><i class=\"bi bi-person\"></i> ' . htmlspecialchars($lang['settings'] ?? 'Settings', ENT_QUOTES, 'UTF-8') . '</a></li>';\n                    echo '<li><hr class=\"dropdown-divider\"></li>';\n                    echo '<li><a class=\"dropdown-item\" href=\"' . htmlspecialchars($baseurl . 'login.php?action=logout', ENT_QUOTES, 'UTF-8') . '\"><i class=\"bi bi-box-arrow-right\"></i> ' . htmlspecialchars($lang['logout'] ?? 'Logout', ENT_QUOTES, 'UTF-8') . '</a></li>';\n                } else {\n                    echo '<li><a class=\"dropdown-item\" href=\"' . htmlspecialchars($baseurl . 'user.php?user=' . urlencode($_SESSION['username'] ?? ''), ENT_QUOTES, 'UTF-8') . '\"><i class=\"bi bi-clipboard\"></i> ' . htmlspecialchars($lang['pastes'] ?? 'Pastes', ENT_QUOTES, 'UTF-8') . '</a></li>';\n                    echo '<li><a class=\"dropdown-item\" href=\"' . htmlspecialchars($baseurl . 'profile.php', ENT_QUOTES, 'UTF-8') . '\"><i class=\"bi bi-person\"></i> ' . htmlspecialchars($lang['settings'] ?? 'Settings', ENT_QUOTES, 'UTF-8') . '</a></li>';\n                    echo '<li><hr class=\"dropdown-divider\"></li>';\n                    echo '<li><a class=\"dropdown-item\" href=\"' . htmlspecialchars($baseurl . 'login.php?action=logout', ENT_QUOTES, 'UTF-8') . '\"><i class=\"bi bi-box-arrow-right\"></i> ' . htmlspecialchars($lang['logout'] ?? 'Logout', ENT_QUOTES, 'UTF-8') . '</a></li>';\n                }\n                ?>\n            </ul>\n        <?php } else {\n            echo '<a class=\"nav-link dropdown-toggle\" href=\"#\" id=\"navbarDropdown\" role=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\"><i class=\"bi bi-person\"></i> ' . htmlspecialchars($lang['guest'] ?? 'Guest', ENT_QUOTES, 'UTF-8') . '</a>';\n        ?>\n            <ul class=\"dropdown-menu dropdown-menu-end\">\n                <li><a class=\"dropdown-item\" href=\"#\" data-bs-toggle=\"modal\" data-bs-target=\"#signin\"><i class=\"bi bi-box-arrow-in-right\"></i> <?php echo htmlspecialchars($lang['login'] ?? 'Login', ENT_QUOTES, 'UTF-8'); ?></a></li>\n                <li><a class=\"dropdown-item\" href=\"#\" data-bs-toggle=\"modal\" data-bs-target=\"#signup\"><i class=\"bi bi-person-plus\"></i> <?php echo htmlspecialchars($lang['signup'] ?? 'Register', ENT_QUOTES, 'UTF-8'); ?></a></li>\n                <?php\n                if ($enablegoog == 'yes') {\n                    echo '<li><a class=\"dropdown-item btn-oauth\" href=\"' . htmlspecialchars($baseurl . 'login.php?login=google', ENT_QUOTES, 'UTF-8') . '\"><i class=\"bi bi-google oauth-icon\"></i> ' . htmlspecialchars($lang['login_with_google'] ?? 'Google', ENT_QUOTES, 'UTF-8') . '</a></li>';\n                }\n                if ($enablefb == 'yes') {\n                    echo '<li><a class=\"dropdown-item btn-oauth\" href=\"' . htmlspecialchars($baseurl . 'login.php?login=facebook', ENT_QUOTES, 'UTF-8') . '\"><i class=\"bi bi-facebook oauth-icon\"></i> ' . htmlspecialchars($lang['login_with_facebook'] ?? 'Facebook', ENT_QUOTES, 'UTF-8') . '</a></li>';\n                }\n                ?>\n            </ul>\n        <?php } ?>\n    </li>\n</ul>\n\n            </div>\n        </div>\n    </nav>\n\n    <?php if (!isset($privatesite) || $privatesite != \"on\") { ?>\n        <!-- Sign in Modal -->\n        <div class=\"modal fade\" id=\"signin\" tabindex=\"-1\" aria-labelledby=\"signinModalLabel\" aria-hidden=\"true\">\n            <div class=\"modal-dialog modal-dialog-centered modal-sm\">\n                <div class=\"modal-content\">\n                    <div class=\"modal-header\">\n                        <h1 class=\"modal-title fs-5\" id=\"signinModalLabel\"><?php echo htmlspecialchars($lang['login'] ?? 'Login', ENT_QUOTES, 'UTF-8'); ?></h1>\n                        <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n                    </div>\n                    <div class=\"modal-body\">\n                        <div id=\"signin-feedback\" class=\"mb-3\"></div>\n                        <form method=\"POST\" action=\"<?php echo htmlspecialchars($baseurl . 'login.php', ENT_QUOTES, 'UTF-8'); ?>\" id=\"signin-form\">\n                            <input type=\"hidden\" name=\"csrf_token\" value=\"<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                            <input type=\"hidden\" name=\"signin\" value=\"1\">\n                            <input type=\"hidden\" name=\"ajax\" value=\"1\">\n                            <input type=\"hidden\" name=\"redirect\" value=\"<?php echo htmlspecialchars($_SERVER['REQUEST_URI'] ?? $baseurl, ENT_QUOTES, 'UTF-8'); ?>\">\n                            <?php if (isset($_SESSION['cap_e']) && $_SESSION['cap_e'] === 'on' && $_SESSION['mode'] === 'reCAPTCHA'): ?>\n                                <textarea id=\"g-recaptcha-response-signin\" name=\"g-recaptcha-response\" style=\"display: none;\"></textarea>\n                                <?php if ($_SESSION['recaptcha_version'] === 'v2'): ?>\n                                    <div class=\"g-recaptcha mb-3\" data-sitekey=\"<?php echo htmlspecialchars($_SESSION['recaptcha_sitekey'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\" data-callback=\"onRecaptchaSuccessSignin\"></div>\n                                <?php endif; ?>\n                            <?php endif; ?>\n                            <div class=\"mb-3\">\n                                <label for=\"signinUsername\" class=\"form-label\"><?php echo htmlspecialchars($lang['username'] ?? 'Username', ENT_QUOTES, 'UTF-8'); ?></label>\n                                <div class=\"input-group\">\n                                    <span class=\"input-group-text\"><i class=\"bi bi-person\"></i></span>\n                                    <input type=\"text\" name=\"username\" class=\"form-control\" id=\"signinUsername\" placeholder=\"<?php echo htmlspecialchars($lang['username'] ?? 'Username', ENT_QUOTES, 'UTF-8'); ?>\" autocomplete=\"username\" required>\n                                </div>\n                            </div>\n                            <div class=\"mb-3\">\n                                <label for=\"signinPassword\" class=\"form-label\"><?php echo htmlspecialchars($lang['password'] ?? 'Password', ENT_QUOTES, 'UTF-8'); ?></label>\n                                <div class=\"input-group\">\n                                    <span class=\"input-group-text\"><i class=\"bi bi-key\"></i></span>\n                                    <input type=\"password\" name=\"password\" class=\"form-control\" id=\"signinPassword\" placeholder=\"<?php echo htmlspecialchars($lang['password'] ?? 'Password', ENT_QUOTES, 'UTF-8'); ?>\" autocomplete=\"current-password\" required>\n                                </div>\n                            </div>\n                            <div class=\"form-check mb-3\">\n                                <input class=\"form-check-input\" type=\"checkbox\" id=\"signinRememberme\" name=\"rememberme\" checked>\n                                <label class=\"form-check-label\" for=\"signinRememberme\"><?php echo htmlspecialchars($lang['rememberme'] ?? 'Keep me signed in.', ENT_QUOTES, 'UTF-8'); ?></label>\n                            </div>\n                            <button type=\"submit\" class=\"btn btn-primary btn-perky w-100 mt-3\" id=\"signinSubmit\"><?php echo htmlspecialchars($lang['login'] ?? 'Login', ENT_QUOTES, 'UTF-8'); ?></button>\n                            <a class=\"btn btn-outline-light w-100 mt-2\" href=\"<?php echo htmlspecialchars($baseurl . 'login.php?action=forgot', ENT_QUOTES, 'UTF-8'); ?>\"><?php echo htmlspecialchars($lang['forgot_password'] ?? 'Forgot Password', ENT_QUOTES, 'UTF-8'); ?></a>\n                        </form>\n                    </div>\n                    <div class=\"modal-footer\">\n                        <a href=\"<?php echo htmlspecialchars($baseurl . 'login.php?action=signup', ENT_QUOTES, 'UTF-8'); ?>\"><?php echo htmlspecialchars($lang['signup'] ?? 'Register', ENT_QUOTES, 'UTF-8'); ?></a>\n                        <a href=\"<?php echo htmlspecialchars($baseurl . 'login.php?action=resend', ENT_QUOTES, 'UTF-8'); ?>\"><?php echo htmlspecialchars($lang['resend_verification'] ?? 'Resend Verification Email', ENT_QUOTES, 'UTF-8'); ?></a>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <!-- Sign up Modal -->\n        <div class=\"modal fade\" id=\"signup\" tabindex=\"-1\" aria-labelledby=\"signupModalLabel\" aria-hidden=\"true\">\n            <div class=\"modal-dialog modal-dialog-centered\">\n                <div class=\"modal-content\">\n                    <div class=\"modal-header\">\n                        <h1 class=\"modal-title fs-5\" id=\"signupModalLabel\"><?php echo htmlspecialchars($lang['signup'] ?? 'Register', ENT_QUOTES, 'UTF-8'); ?></h1>\n                        <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n                    </div>\n                    <div class=\"modal-body\">\n                        <div id=\"signup-feedback\" class=\"mb-3\"></div>\n                        <form action=\"<?php echo htmlspecialchars($baseurl . 'login.php', ENT_QUOTES, 'UTF-8'); ?>\" method=\"post\" id=\"signup-form\">\n                            <input type=\"hidden\" name=\"csrf_token\" value=\"<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n                            <input type=\"hidden\" name=\"signup\" value=\"1\">\n                            <input type=\"hidden\" name=\"ajax\" value=\"1\">\n                            <input type=\"hidden\" name=\"redirect\" value=\"<?php echo htmlspecialchars($_SERVER['REQUEST_URI'] ?? $baseurl, ENT_QUOTES, 'UTF-8'); ?>\">\n                            <?php if (isset($_SESSION['cap_e']) && $_SESSION['cap_e'] === 'on' && $_SESSION['mode'] === 'reCAPTCHA'): ?>\n                                <textarea id=\"g-recaptcha-response-signup\" name=\"g-recaptcha-response\" style=\"display: none;\"></textarea>\n                                <?php if ($_SESSION['recaptcha_version'] === 'v2'): ?>\n                                    <div class=\"g-recaptcha mb-3\" data-sitekey=\"<?php echo htmlspecialchars($_SESSION['recaptcha_sitekey'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\" data-callback=\"onRecaptchaSuccessSignup\"></div>\n                                <?php endif; ?>\n                            <?php endif; ?>\n                            <div class=\"mb-3\">\n                                <label for=\"signupUsername\" class=\"form-label\"><?php echo htmlspecialchars($lang['username'] ?? 'Username', ENT_QUOTES, 'UTF-8'); ?></label>\n                                <div class=\"input-group\">\n                                    <span class=\"input-group-text\"><i class=\"bi bi-person\"></i></span>\n                                    <input type=\"text\" class=\"form-control\" id=\"signupUsername\" name=\"username\" value=\"<?php echo htmlspecialchars($_POST['username'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\" autocomplete=\"username\" required>\n                                </div>\n                            </div>\n                            <div class=\"mb-3\">\n                                <label for=\"signupEmail\" class=\"form-label\"><?php echo htmlspecialchars($lang['email'] ?? 'Email', ENT_QUOTES, 'UTF-8'); ?></label>\n                                <div class=\"input-group\">\n                                    <span class=\"input-group-text\"><i class=\"bi bi-envelope\"></i></span>\n                                    <input type=\"email\" class=\"form-control\" id=\"signupEmail\" name=\"email\" value=\"<?php echo htmlspecialchars($_POST['email'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\" autocomplete=\"email\" required>\n                                </div>\n                            </div>\n                            <div class=\"mb-3\">\n                                <label for=\"signupFullname\" class=\"form-label\"><?php echo htmlspecialchars($lang['full_name'] ?? 'Full Name', ENT_QUOTES, 'UTF-8'); ?></label>\n                                <div class=\"input-group\">\n                                    <span class=\"input-group-text\"><i class=\"bi bi-person\"></i></span>\n                                    <input type=\"text\" class=\"form-control\" id=\"signupFullname\" name=\"full\" value=\"<?php echo htmlspecialchars($_POST['full'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\" autocomplete=\"name\" required>\n                                </div>\n                            </div>\n                            <div class=\"mb-3\">\n                                <label for=\"signupPassword\" class=\"form-label\"><?php echo htmlspecialchars($lang['password'] ?? 'Password', ENT_QUOTES, 'UTF-8'); ?></label>\n                                <div class=\"input-group\">\n                                    <span class=\"input-group-text\"><i class=\"bi bi-lock\"></i></span>\n                                    <input type=\"password\" class=\"form-control\" id=\"signupPassword\" name=\"password\" autocomplete=\"new-password\" required>\n                                </div>\n                            </div>\n                            <button type=\"submit\" name=\"signup\" id=\"signupSubmit\" class=\"btn btn-primary btn-perky fw-bold w-100\"><?php echo htmlspecialchars($lang['signup'] ?? 'Register', ENT_QUOTES, 'UTF-8'); ?></button>\n                        </form>\n                    </div>\n                    <div class=\"modal-footer\">\n                        <a href=\"<?php echo htmlspecialchars($baseurl . 'login.php', ENT_QUOTES, 'UTF-8'); ?>\"><?php echo htmlspecialchars($lang['already_have_account'] ?? 'Already have an account?', ENT_QUOTES, 'UTF-8'); ?></a>\n                        <a href=\"<?php echo htmlspecialchars($baseurl . 'login.php?action=resend', ENT_QUOTES, 'UTF-8'); ?>\"><?php echo htmlspecialchars($lang['resend_verification'] ?? 'Resend Verification Email', ENT_QUOTES, 'UTF-8'); ?></a>\n                    </div>\n                </div>\n            </div>\n        </div>\n    <?php } ?>\n    <!-- // Header -->"
  },
  {
    "path": "theme/default/img/index.php",
    "content": ""
  },
  {
    "path": "theme/default/index.php",
    "content": ""
  },
  {
    "path": "theme/default/js/highlightTheme.js",
    "content": "// JS for the theme picker for highlight.php if enabled\r\n(function () {\r\n  // Provided by footer.php when the switcher is present\r\n  const THEMES  = Array.isArray(window.__HL_THEMES) ? window.__HL_THEMES : [];\r\n  const INITIAL = window.__HL_INITIAL || null; // (?theme=)\r\n\r\n  if (!THEMES.length) return;\r\n\r\n  // Normalize a theme id or filename to a comparable id (e.g., \"Atelier Estuary Dark.min.css?v=1\" -> \"atelier-estuary-dark\")\r\n  function normId(s) {\r\n    return (s || '')\r\n      .toLowerCase()\r\n      .replace(/[ _]+/g, '-')     // spaces/underscores -> hyphen\r\n      .replace(/\\.min\\.css$/,'')  // drop .min.css\r\n      .replace(/\\.css$/,'')       // drop .css\r\n      .replace(/[?#].*$/,'')      // drop query/hash\r\n      .trim();\r\n  }\r\n\r\n  function findHeaderLink() {\r\n    const links = document.querySelectorAll('link[rel=\"stylesheet\"]');\r\n    for (const l of links) {\r\n      const href = (l.getAttribute('href') || '').toLowerCase();\r\n      if (href.includes('/includes/Highlight/')) return l;\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function ensureLink() {\r\n    let el = document.getElementById('hljs-theme-link') || findHeaderLink();\r\n    if (el) { el.id = 'hljs-theme-link'; return el; }\r\n    el = document.createElement('link');\r\n    el.id = 'hljs-theme-link';\r\n    el.rel = 'stylesheet';\r\n    document.head.appendChild(el);\r\n    return el;\r\n  }\r\n\r\n  function applyTheme(obj) {\r\n    if (!obj) return;\r\n    const link = ensureLink();\r\n    if (link.getAttribute('href') !== obj.href) link.setAttribute('href', obj.href);\r\n    try { localStorage.setItem('hljs_theme', obj.id); } catch (_) {}\r\n  }\r\n\r\n  function choose(initialId) {\r\n    const byId = (id) => THEMES.find(t => normId(t.id) === normId(id));\r\n    if (initialId) {\r\n      const m = byId(initialId);\r\n      if (m) return m;\r\n    }\r\n    try {\r\n      const ls = localStorage.getItem('hljs_theme');\r\n      if (ls) {\r\n        const m = byId(ls);\r\n        if (m) return m;\r\n      }\r\n    } catch (_) {}\r\n    return THEMES.find(t => t.id === 'hybrid')\r\n        || THEMES.find(t => t.id === 'github-dark')\r\n        || THEMES[0];\r\n  }\r\n\r\n  document.addEventListener('DOMContentLoaded', function () {\r\n    // Determine the default theme from the link already present in <head>\r\n    const headerLink = findHeaderLink();\r\n    const DEFAULT_ID = (function () {\r\n      if (!headerLink) return 'hybrid';\r\n      const href = headerLink.getAttribute('href') || '';\r\n      const file = (href.split('?')[0].split('#')[0].split('/').pop()) || '';\r\n      return normId(file);\r\n    })();\r\n\r\n    const byId = (id) => THEMES.find(x => normId(x.id) === normId(id));\r\n\r\n    // Update URL param (?theme=...) remove it entirely when using the default\r\n    function updateThemeQueryParam(id) {\r\n      const isDefault = normId(id) === normId(DEFAULT_ID);\r\n      try {\r\n        const url = new URL(window.location.href);\r\n        const before = url.toString();\r\n        if (isDefault) {\r\n          url.searchParams.delete('theme');\r\n          url.searchParams.delete('highlight');\r\n        } else {\r\n          url.searchParams.set('theme', id);\r\n          url.searchParams.delete('highlight');\r\n        }\r\n        const after = url.toString();\r\n        if (after !== before) window.history.replaceState(null, '', url);\r\n      } catch {\r\n        // Fallback for older browsers\r\n        let href = window.location.href;\r\n        href = href\r\n          .replace(/([?&])(theme|highlight)=[^&]*/gi, '$1')\r\n          .replace(/[?&]$/, '');\r\n        if (!isDefault) {\r\n          href += (href.indexOf('?') === -1 ? '?' : '&') + 'theme=' + encodeURIComponent(id);\r\n        }\r\n        window.history.replaceState(null, '', href);\r\n      }\r\n    }\r\n\r\n    // If URL explicitly set a theme, clear LS so it doesn't override\r\n    if (INITIAL) { try { localStorage.removeItem('hljs_theme'); } catch (_) {} }\r\n\r\n    // There may be 1–2 selects (toolbar + fullscreen)\r\n    function getSelects() { return Array.from(document.querySelectorAll('#hljs-theme-select')); }\r\n    let selects = getSelects();\r\n    if (!selects.length) return;\r\n\r\n    let chosen = choose(INITIAL) || byId(selects[0].value);\r\n    if (chosen) {\r\n      applyTheme(chosen);\r\n      selects.forEach(s => { s.value = chosen.id; });\r\n      updateThemeQueryParam(chosen.id); // removes param if it's the default\r\n    }\r\n\r\n    function onChange(e) {\r\n      const t = byId(e.target.value);\r\n      if (!t) return;\r\n      applyTheme(t);\r\n      updateThemeQueryParam(t.id);       // removes param if default, sets otherwise\r\n      // keep other pickers in sync (e.g., fullscreen modal)\r\n      selects.forEach(s => { if (s !== e.target) s.value = t.id; });\r\n    }\r\n    selects.forEach(s => { s.addEventListener('change', onChange); s.__hlBound = true; });\r\n\r\n    // If a modal injects a new select, bind & sync it\r\n    document.addEventListener('shown.bs.modal', function () {\r\n      const newer = getSelects();\r\n      if (newer.length !== selects.length) {\r\n        selects = newer;\r\n        const currentId = (localStorage.getItem('hljs_theme') || (chosen && chosen.id)) || '';\r\n        selects.forEach(s => {\r\n          if (!s.__hlBound) {\r\n            s.addEventListener('change', onChange);\r\n            s.__hlBound = true;\r\n          }\r\n          if (currentId) s.value = currentId;\r\n        });\r\n      }\r\n    });\r\n  });\r\n})();\r\n"
  },
  {
    "path": "theme/default/js/paste.js",
    "content": "(function () {\n  'use strict';\n\n  // ========= tiny utils =====================================================\n\n  // Start index of the current line (from a caret index)\n  function lineStart(value, i){ while (i > 0 && value.charCodeAt(i - 1) !== 10) i--; return i }\n  // End index of the current line (from a caret index)\n  function lineEnd(value, i){ while (i < value.length && value.charCodeAt(i) !== 10) i++; return i }\n  // Fire an input event after programmatic changes\n  function triggerInput(el){ try { el.dispatchEvent(new Event('input', { bubbles: true })) } catch(_) {} }\n  // Fast newline counter (no regex; walks the string once)\n  function countLinesFast(str){ let n = 1; for (let i=0; i<str.length; i++) if (str.charCodeAt(i) === 10) n++; return n }\n  // Digits in an integer\n  function digitsOf(n){ return Math.max(1, (n|0).toString().length) }\n\n  // ========= lightweight editor (textarea + virtualized line-number gutter) =\n\n  function initLiteEditor(ta, opts){\n    if (!ta || ta.dataset.liteInit === '1') return;\n    const readOnly = !!(opts && opts.readOnly);\n\n    // ---- DOM scaffold -------------------------------------------------------\n    const wrap = document.createElement('div');\n    wrap.className = 'editor-wrap';\n\n    const gutter = document.createElement('div');\n    gutter.className = 'editor-gutter';\n    gutter.setAttribute('aria-hidden','true');\n\n    const rail = document.createElement('div');       // the vertical list of numbers\n    rail.className = 'editor-gutter-inner';\n    gutter.appendChild(rail);\n\n    ta.parentNode.insertBefore(wrap, ta);\n    wrap.appendChild(gutter);\n    wrap.appendChild(ta);\n\n    ta.classList.add('editor-ta', 'form-control');\n    ta.setAttribute('wrap','off');        // no soft wrapping (keeps lines 1:1)\n    ta.style.overflowX = 'auto';\n    ta.style.overflowY = 'auto';\n    ta.dataset.liteInit = '1';\n\n    // ---- metrics: match gutter & textarea ----------------------------------\n    const csTA = getComputedStyle(ta);\n    const fs   = parseFloat(csTA.fontSize) || 14;\n    const lhPx = (csTA.lineHeight && csTA.lineHeight !== 'normal')\n      ? parseFloat(csTA.lineHeight)\n      : Math.round(fs * 1.5);\n\n    ta.style.lineHeight = lhPx + 'px';\n\n    // make gutter use the exact same font + line-height\n    gutter.style.fontFamily = csTA.fontFamily;\n    gutter.style.fontSize   = csTA.fontSize;\n    gutter.style.lineHeight = lhPx + 'px';\n    gutter.style.paddingTop    = csTA.paddingTop;\n    gutter.style.paddingBottom = csTA.paddingBottom;\n\n    // Compute precise vertical delta so numbers & text align pixel-perfect.\n    // This accounts for paddings/borders on both the textarea and gutter/rail.\n    const csG = getComputedStyle(gutter);\n    const csR = getComputedStyle(rail);\n    const padTopTA = parseFloat(csTA.paddingTop)        || 0;\n    const bTopTA   = parseFloat(csTA.borderTopWidth)    || 0;\n    const padTopGU = parseFloat(csG.paddingTop)         || 0;\n    const bTopGU   = parseFloat(csG.borderTopWidth)     || 0;\n    const padTopRL = parseFloat(csR.paddingTop)         || 0;\n    const TOP_DELTA = (padTopTA + bTopTA) - (padTopGU + bTopGU + padTopRL);\n\n    // lock the initial height so huge pastes don't auto-expand the TA\n    // (honors rows=\"\" if present; otherwise uses current rendered height)\n    (function lockHeightOnce(){\n      const rows   = parseInt(ta.getAttribute('rows') || '0', 10);\n      const padTop    = parseFloat(csTA.paddingTop)        || 0;\n      const padBottom = parseFloat(csTA.paddingBottom)     || 0;\n      const bTop      = parseFloat(csTA.borderTopWidth)    || 0;\n      const bBottom   = parseFloat(csTA.borderBottomWidth) || 0;\n      const h = rows > 0\n        ? Math.round(rows * lhPx + padTop + padBottom + bTop + bBottom)\n        : ta.offsetHeight;\n      if (h > 0) { ta.style.height = h + 'px'; ta.style.minHeight = h + 'px'; }\n    })();\n\n    // kill bootstrap ring artifacts\n    ta.style.boxShadow = 'none';\n    ta.style.outline   = '0';\n    ta.addEventListener('focus', function(){\n      ta.style.boxShadow = 'none';\n      ta.style.outline   = '0';\n    });\n\n    // ---- state for virtual gutter ------------------------------------------\n    let totalLines   = countLinesFast(ta.value); // total in the doc\n    let renderStart  = 1;                        // first line number currently in the rail\n    let renderEnd    = 0;                        // last line number currently in the rail\n    let rafId        = 0;                        // rAF scheduler id\n    const BUFFER     = 40;                       // extra lines above/below the viewport\n\n    // Ensure gutter width fits the number of digits (in ch, to keep crisp)\n    function ensureGutterWidth(){\n      gutter.style.minWidth = (digitsOf(totalLines) + 2) + 'ch';\n    }\n    ensureGutterWidth();\n\n    // First visible line (1-based)\n    function firstVisibleLine(){\n      return Math.max(1, Math.floor(ta.scrollTop / lhPx) + 1);\n    }\n    // How many lines can we see right now?\n    function visibleCount(){\n      return Math.max(1, Math.ceil(ta.clientHeight / lhPx) + 1);\n    }\n\n    // Build \"start..end\" as a single string with trailing newline\n    function buildNumbers(start, end){\n      const len = end - start + 1;\n      const buf = new Array(len);\n      for (let i = 0; i < len; i++) buf[i] = (start + i) + '';\n      return buf.join('\\n') + '\\n';\n    }\n\n    // Position the rail so that line \"renderStart\" sits exactly next to the\n    // correct text row (uses translate3d for GPU-friendly subpixel placement)\n    function positionRail(){\n      const offsetPx = ((renderStart - 1) * lhPx) - ta.scrollTop + TOP_DELTA;\n      rail.style.transform = 'translate3d(0,' + offsetPx + 'px,0)';\n    }\n\n    // Main rAF updater: maybe rebuild numbers, always reposition the rail.\n    function update(){\n      rafId = 0;\n\n      // determine the range we need rendered\n      const firstVis = firstVisibleLine();\n      const visCnt   = visibleCount();\n      const start    = Math.max(1, firstVis - BUFFER);\n      const end      = Math.min(totalLines, firstVis + visCnt + BUFFER);\n\n      // only rebuild the rail text if the required range changed\n      if (start !== renderStart || end !== renderEnd) {\n        rail.textContent = buildNumbers(start, end);\n        renderStart = start;\n        renderEnd   = end;\n      }\n\n      // adjust width if digits grew/shrank (e.g., 99 -> 100 lines)\n      ensureGutterWidth();\n\n      // always reposition so numbers stay glued to the text\n      positionRail();\n\n      // keep gutter box the same height as the textarea (for nice borders)\n      gutter.style.height = ta.offsetHeight + 'px';\n    }\n    function schedule(){ if (!rafId) rafId = requestAnimationFrame(update) }\n\n    // ---- events -------------------------------------------------------------\n\n    // Scroll: we only need to reposition (cheap), but schedule() also handles\n    // the occasional range rebuild when we cross buffer thresholds.\n    ta.addEventListener('scroll', schedule, { passive: true });\n\n    // Content changes: recalc totalLines once, then schedule an update\n    ['input','change','cut','paste'].forEach(ev => {\n      ta.addEventListener(ev, function(){\n        totalLines = countLinesFast(ta.value);\n        schedule();\n      });\n    });\n\n    // Tab / Shift+Tab indentation helpers (editing only)\n    if (!readOnly){\n      ta.addEventListener('keydown', function(e){\n        if (e.key !== 'Tab') return;\n        e.preventDefault();\n\n        const start = ta.selectionStart, end = ta.selectionEnd;\n        const v = ta.value, before = v.slice(0,start), sel = v.slice(start,end), after = v.slice(end);\n\n        if (e.shiftKey){\n          const lines = sel.split('\\n');\n          const newSel = lines.map(l=>{\n            if (l.startsWith('    ')) return l.slice(4);\n            if (l.startsWith('\\t'))   return l.slice(1);\n            return l.replace(/^ {1,3}/,'');\n          }).join('\\n');\n\n          // adjust selection to account for the first line's removed indent\n          const firstLineStart = before.lastIndexOf('\\n') + 1;\n          let removed = 0;\n          const head = v.slice(firstLineStart, firstLineStart+4);\n          if (head.startsWith('\\t')) removed = 1;\n          else if (head.startsWith('    ')) removed = 4;\n          else { const m = head.match(/^ {1,3}/); removed = m ? m[0].length : 0 }\n\n          ta.value = before + newSel + after;\n          const newStart = start - Math.min(removed, start - firstLineStart);\n          const diff = sel.length - newSel.length;\n          ta.setSelectionRange(newStart, end - diff);\n        } else {\n          if (sel.indexOf('\\n') !== -1){\n            const ind = sel.replace(/^/gm, '    ');\n            ta.value = before + ind + after;\n            ta.setSelectionRange(start + 4, end + (ind.length - sel.length));\n          } else {\n            ta.value = before + '    ' + sel + after;\n            const caret = start + 4;\n            ta.setSelectionRange(caret, caret);\n          }\n        }\n\n        totalLines = countLinesFast(ta.value);\n        schedule();\n      });\n    } else {\n      ta.setAttribute('readonly','readonly');\n    }\n\n    // Keep things aligned when the box resizes\n    if ('ResizeObserver' in window){\n      new ResizeObserver(schedule).observe(ta);\n    } else {\n      window.addEventListener('resize', schedule);\n    }\n\n    // Initial paint\n    schedule();\n  }\n\n  // ========= notifications ==================================================\n  function showNotification(message, isError = false, fadeOut = true) {\n    const notification = document.getElementById('notification');\n    if (!notification) return;\n    notification.textContent = message;\n    notification.className = 'notification' + (isError ? ' error' : '');\n    notification.style.display = 'block';\n    if (fadeOut) {\n      setTimeout(() => {\n        notification.classList.add('fade-out');\n        setTimeout(() => {\n          notification.style.display = 'none';\n          notification.classList.remove('fade-out');\n          notification.textContent = '';\n        }, 500);\n      }, 3000);\n    } else {\n      if (!notification.querySelector('.close-btn')) {\n        const closeBtn = document.createElement('button');\n        closeBtn.textContent = '×';\n        closeBtn.className = 'close-btn';\n        closeBtn.addEventListener('click', () => {\n          notification.style.display = 'none';\n          notification.textContent = '';\n        });\n        notification.appendChild(closeBtn);\n      }\n    }\n  }\n\n  // ========= tools (existing UI hooks) =====================================\n  window.togglev = function () {\n    // GeSHi wrapper\n    const block = document.querySelector('.code-content');\n    if (block) {\n      block.classList.toggle('no-line-numbers');\n      try { localStorage.setItem('paste_ln_hidden', block.classList.contains('no-line-numbers') ? '1' : '0'); } catch (_) {}\n      return;\n    }\n    // Fallback\n    const olElement = document.querySelector('pre ol, .geshi ol, ol');\n    if (!olElement) { showNotification('Code list element not found.', true); return; }\n    const currentStyle = olElement.style.listStyle || getComputedStyle(olElement).listStyle;\n    olElement.style.listStyle = (currentStyle.startsWith('none')) ? 'decimal' : 'none';\n  };\n\n  window.toggleFullScreen = function(){\n    const modalElement = document.getElementById('fullscreenModal');\n    if (!modalElement) { showNotification('Fullscreen modal not available.', true); return; }\n    const bsModal = bootstrap.Modal.getOrCreateInstance(modalElement);\n    bsModal.show();\n    modalElement.addEventListener('hidden.bs.modal', function handler() {\n      const backdrop = document.querySelector('.modal-backdrop'); if (backdrop) backdrop.remove();\n      document.body.classList.remove('modal-open');\n      modalElement.removeEventListener('hidden.bs.modal', handler);\n    }, { once: true });\n  };\n\n  window.copyToClipboard = function(){\n    const ta = document.getElementById('code');\n    const text = ta ? ta.value : '';\n    if (!text) { showNotification('No code to copy.', true); return; }\n    navigator.clipboard.writeText(text).then(\n      () => showNotification('Copied to clipboard!'),\n      () => showNotification('Failed to copy.', true)\n    );\n  };\n\n  window.showEmbedCode = function(embedCode){\n    if (embedCode) showNotification('Embed code: ' + embedCode, false, false);\n    else showNotification('Could not generate embed code.', true);\n  };\n\n  // Insert \"!highlight!\" at selected lines in the main editor\n  window.highlightLine = function (e) {\n    if (e && e.preventDefault) e.preventDefault();\n    var ta = document.getElementById('edit-code'); if (!ta) return;\n\n    var prefix = '!highlight!';\n    var value  = ta.value;\n    var start  = ta.selectionStart || 0;\n    var end    = ta.selectionEnd   || start;\n    var keepScroll = ta.scrollTop;\n\n    var ls = lineStart(value, start);\n    var le = lineEnd(value, end);\n\n    var before = value.slice(0, ls);\n    var middle = value.slice(ls, le);\n    var after  = value.slice(le);\n\n    var lines = middle.split('\\n');\n    var addedTotal = 0;\n    var addedPerLine = [];\n\n    for (var i = 0; i < lines.length; i++) {\n      if (lines[i].startsWith(prefix)) {\n        addedPerLine[i] = 0;\n      } else {\n        lines[i] = prefix + lines[i];\n        addedPerLine[i] = prefix.length;\n        addedTotal += prefix.length;\n      }\n    }\n\n    var newMiddle = lines.join('\\n');\n    ta.value = before + newMiddle + after;\n\n    if (start === end) {\n      var caretOffset = (addedPerLine[0] || 0);\n      ta.selectionStart = ta.selectionEnd = start + caretOffset;\n    } else {\n      ta.selectionStart = ls;\n      ta.selectionEnd   = le + addedTotal;\n    }\n\n    ta.scrollTop = keepScroll;\n    triggerInput(ta);\n    ta.focus();\n  };\n\n  // ========= boot ===========================================================\n  document.addEventListener('DOMContentLoaded', function(){\n    const edit = document.getElementById('edit-code'); if (edit) initLiteEditor(edit, { readOnly:false });\n    const raw  = document.getElementById('code');      if (raw)  initLiteEditor(raw,  { readOnly:true  });\n\n    document.addEventListener('click', function (ev) {\n      const t = ev.target;\n      if (t.closest && t.closest('.highlight-line'))   { ev.preventDefault(); window.highlightLine(ev); }\n      if (t.closest && t.closest('.toggle-fullscreen')){ ev.preventDefault(); window.toggleFullScreen(); }\n      if (t.closest && t.closest('.copy-clipboard'))   { ev.preventDefault(); window.copyToClipboard(); }\n    }, { capture: true });\n  });\n\n})();\n"
  },
  {
    "path": "theme/default/login.php",
    "content": "<?php\n/*\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n * ---\n * Theme: default — Login / Register / Forgot / Reset\n * Controller includes header.php before and footer.php after.\n * Captcha settings provided via session:\n *   $_SESSION['cap_e'] === 'on' // is captcha on in the first place?\n *   $_SESSION['mode'] ('reCAPTCHA' or 'normal' for internal captcha.php)\n *   $_SESSION['recaptcha_version'] ('v2' or 'v3') // choose either\n *   $_SESSION['recaptcha_sitekey']\n */\n$cap_e             = $_SESSION['cap_e']            ?? 'off';\n$mode              = $_SESSION['mode']             ?? 'normal';\n$recaptcha_version = $_SESSION['recaptcha_version']?? 'v2';\n$recaptcha_sitekey = $_SESSION['recaptcha_sitekey']?? '';\n$captcha_enabled   = ($cap_e === 'on' && $mode === 'reCAPTCHA' && !empty($recaptcha_sitekey));\n?>\n<div class=\"container mt-5\">\n  <div class=\"row justify-content-center\">\n    <div class=\"col-md-6\">\n      <h2 class=\"text-center mb-4\"><?php echo htmlspecialchars($p_title ?? ($lang['login/register'] ?? 'Login / Register'), ENT_QUOTES, 'UTF-8'); ?></h2>\n\n      <div id=\"global-feedback\"></div>\n      <?php\n        $flashError   = isset($error)   && $error   !== '' ? $error   : ($_GET['error']   ?? '');\n        $flashSuccess = isset($success) && $success !== '' ? $success : ($_GET['success'] ?? '');\n      ?>\n      <?php if ($flashError): ?>\n        <div class=\"alert alert-danger\" role=\"alert\"><?php echo htmlspecialchars($flashError, ENT_QUOTES, 'UTF-8'); ?></div>\n      <?php elseif ($flashSuccess): ?>\n        <div class=\"alert alert-success\" role=\"alert\"><?php echo htmlspecialchars($flashSuccess, ENT_QUOTES, 'UTF-8'); ?></div>\n      <?php endif; ?>\n\n      <?php if (isset($_GET['action']) && $_GET['action'] === 'reset' && isset($_GET['username'], $_GET['code'])): ?>\n        <!-- Reset -->\n        <div class=\"card mb-4\">\n          <div class=\"card-body\">\n            <h5 class=\"card-title\"><?php echo htmlspecialchars($lang['reset_password'] ?? 'Reset Password', ENT_QUOTES, 'UTF-8'); ?></h5>\n            <div id=\"reset-feedback\"></div>\n            <form method=\"POST\" action=\"<?php echo htmlspecialchars($baseurl . 'login.php?action=reset&username=' . urlencode($_GET['username']) . '&code=' . urlencode($_GET['code']), ENT_QUOTES, 'UTF-8'); ?>\" id=\"reset-form\">\n              <input type=\"hidden\" name=\"csrf_token\" value=\"<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n              <input type=\"hidden\" name=\"redirect\" value=\"<?php echo htmlspecialchars($_SERVER['REQUEST_URI'] ?? $baseurl, ENT_QUOTES, 'UTF-8'); ?>\">\n              <?php if ($captcha_enabled): ?>\n                <input type=\"hidden\" id=\"g-recaptcha-response-reset\" name=\"g-recaptcha-response\">\n                <?php if ($recaptcha_version === 'v2'): ?>\n                  <div class=\"g-recaptcha mb-3\" data-sitekey=\"<?php echo htmlspecialchars($recaptcha_sitekey, ENT_QUOTES, 'UTF-8'); ?>\" data-callback=\"onRecaptchaSuccessReset\"></div>\n                <?php endif; ?>\n              <?php endif; ?>\n              <div class=\"mb-3\">\n                <label for=\"password\" class=\"form-label\"><?php echo htmlspecialchars($lang['new_password'] ?? 'New Password', ENT_QUOTES, 'UTF-8'); ?></label>\n                <div class=\"input-group\">\n                  <span class=\"input-group-text\"><i class=\"bi bi-lock\"></i></span>\n                  <input type=\"password\" class=\"form-control\" id=\"password\" name=\"password\" autocomplete=\"new-password\" required>\n                </div>\n              </div>\n              <button type=\"submit\" class=\"btn btn-primary btn-perky fw-bold w-100\"><?php echo htmlspecialchars($lang['reset_password'] ?? 'Reset Password', ENT_QUOTES, 'UTF-8'); ?></button>\n            </form>\n          </div>\n        </div>\n\n      <?php elseif (isset($_GET['action']) && $_GET['action'] === 'forgot'): ?>\n        <!-- Forgot -->\n        <div class=\"card mb-4\">\n          <div class=\"card-body\">\n            <h5 class=\"card-title\"><?php echo htmlspecialchars($lang['forgot_password'] ?? 'Forgot Password', ENT_QUOTES, 'UTF-8'); ?></h5>\n            <div id=\"forgot-feedback\"></div>\n            <form method=\"POST\" action=\"<?php echo htmlspecialchars($baseurl . 'login.php?action=forgot', ENT_QUOTES, 'UTF-8'); ?>\" id=\"forgot-form\">\n              <input type=\"hidden\" name=\"csrf_token\" value=\"<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n              <input type=\"hidden\" name=\"redirect\" value=\"<?php echo htmlspecialchars($_SERVER['REQUEST_URI'] ?? $baseurl, ENT_QUOTES, 'UTF-8'); ?>\">\n              <?php if ($captcha_enabled): ?>\n                <input type=\"hidden\" id=\"g-recaptcha-response-forgot\" name=\"g-recaptcha-response\">\n                <?php if ($recaptcha_version === 'v2'): ?>\n                  <div class=\"g-recaptcha mb-3\" data-sitekey=\"<?php echo htmlspecialchars($recaptcha_sitekey, ENT_QUOTES, 'UTF-8'); ?>\" data-callback=\"onRecaptchaSuccessForgot\"></div>\n                <?php endif; ?>\n              <?php endif; ?>\n              <div class=\"mb-3\">\n                <label for=\"email\" class=\"form-label\"><?php echo htmlspecialchars($lang['email'] ?? 'Email', ENT_QUOTES, 'UTF-8'); ?></label>\n                <div class=\"input-group\">\n                  <span class=\"input-group-text\"><i class=\"bi bi-envelope\"></i></span>\n                  <input type=\"email\" class=\"form-control\" id=\"email\" name=\"email\" autocomplete=\"email\" required>\n                </div>\n              </div>\n              <button type=\"submit\" class=\"btn btn-primary btn-perky fw-bold w-100\"><?php echo htmlspecialchars($lang['send_reset_link'] ?? 'Send Reset Link', ENT_QUOTES, 'UTF-8'); ?></button>\n            </form>\n          </div>\n        </div>\n\n      <?php elseif (isset($_GET['action']) && $_GET['action'] === 'resend'): ?>\n        <!-- Resend -->\n        <div class=\"card mb-4\">\n          <div class=\"card-body\">\n            <h5 class=\"card-title\"><?php echo htmlspecialchars($lang['resend_verification'] ?? 'Resend Verification Email', ENT_QUOTES, 'UTF-8'); ?></h5>\n            <div id=\"resend-feedback\"></div>\n            <form method=\"POST\" action=\"<?php echo htmlspecialchars($baseurl . 'login.php?action=resend', ENT_QUOTES, 'UTF-8'); ?>\" id=\"resend-form\">\n              <input type=\"hidden\" name=\"csrf_token\" value=\"<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n              <input type=\"hidden\" name=\"redirect\" value=\"<?php echo htmlspecialchars($_SERVER['REQUEST_URI'] ?? $baseurl, ENT_QUOTES, 'UTF-8'); ?>\">\n              <?php if ($captcha_enabled): ?>\n                <input type=\"hidden\" id=\"g-recaptcha-response-resend\" name=\"g-recaptcha-response\">\n                <?php if ($recaptcha_version === 'v2'): ?>\n                  <div class=\"g-recaptcha mb-3\" data-sitekey=\"<?php echo htmlspecialchars($recaptcha_sitekey, ENT_QUOTES, 'UTF-8'); ?>\" data-callback=\"onRecaptchaSuccessResend\"></div>\n                <?php endif; ?>\n              <?php endif; ?>\n              <div class=\"mb-3\">\n                <label for=\"email\" class=\"form-label\"><?php echo htmlspecialchars($lang['email'] ?? 'Email', ENT_QUOTES, 'UTF-8'); ?></label>\n                <div class=\"input-group\">\n                  <span class=\"input-group-text\"><i class=\"bi bi-envelope\"></i></span>\n                  <input type=\"email\" class=\"form-control\" id=\"email\" name=\"email\" autocomplete=\"email\" required>\n                </div>\n              </div>\n              <button type=\"submit\" class=\"btn btn-primary btn-perky fw-bold w-100\"><?php echo htmlspecialchars($lang['resend_verification'] ?? 'Resend Verification Email', ENT_QUOTES, 'UTF-8'); ?></button>\n            </form>\n          </div>\n        </div>\n\n      <?php elseif (isset($_GET['action']) && $_GET['action'] === 'signup'): ?>\n        <!-- Signup -->\n        <div class=\"card mb-4\">\n          <div class=\"card-body\">\n            <h5 class=\"card-title\"><?php echo htmlspecialchars($lang['signup'] ?? 'Register', ENT_QUOTES, 'UTF-8'); ?></h5>\n            <div id=\"signup-feedback\"></div>\n            <form method=\"POST\" action=\"<?php echo htmlspecialchars($baseurl . 'login.php?action=signup', ENT_QUOTES, 'UTF-8'); ?>\" id=\"signup-form\">\n              <input type=\"hidden\" name=\"csrf_token\" value=\"<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n              <input type=\"hidden\" name=\"signup\" value=\"1\">\n              <input type=\"hidden\" name=\"redirect\" value=\"<?php echo htmlspecialchars($_SERVER['REQUEST_URI'] ?? $baseurl, ENT_QUOTES, 'UTF-8'); ?>\">\n              <?php if ($captcha_enabled): ?>\n                <input type=\"hidden\" id=\"g-recaptcha-response-signup\" name=\"g-recaptcha-response\">\n                <?php if ($recaptcha_version === 'v2'): ?>\n                  <div class=\"g-recaptcha mb-3\" data-sitekey=\"<?php echo htmlspecialchars($recaptcha_sitekey, ENT_QUOTES, 'UTF-8'); ?>\" data-callback=\"onRecaptchaSuccessSignup\"></div>\n                <?php endif; ?>\n              <?php endif; ?>\n              <div class=\"mb-3\">\n                <label for=\"signupUsername\" class=\"form-label\"><?php echo htmlspecialchars($lang['username'] ?? 'Username', ENT_QUOTES, 'UTF-8'); ?></label>\n                <div class=\"input-group\">\n                  <span class=\"input-group-text\"><i class=\"bi bi-person\"></i></span>\n                  <input type=\"text\" class=\"form-control\" id=\"signupUsername\" name=\"username\" value=\"<?php echo htmlspecialchars($_POST['username'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\" autocomplete=\"username\" required>\n                </div>\n              </div>\n              <div class=\"mb-3\">\n                <label for=\"signupEmail\" class=\"form-label\"><?php echo htmlspecialchars($lang['email'] ?? 'Email', ENT_QUOTES, 'UTF-8'); ?></label>\n                <div class=\"input-group\">\n                  <span class=\"input-group-text\"><i class=\"bi bi-envelope\"></i></span>\n                  <input type=\"email\" class=\"form-control\" id=\"signupEmail\" name=\"email\" value=\"<?php echo htmlspecialchars($_POST['email'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\" autocomplete=\"email\" required>\n                </div>\n              </div>\n              <div class=\"mb-3\">\n                <label for=\"signupFullname\" class=\"form-label\"><?php echo htmlspecialchars($lang['full_name'] ?? 'Full Name', ENT_QUOTES, 'UTF-8'); ?></label>\n                <div class=\"input-group\">\n                  <span class=\"input-group-text\"><i class=\"bi bi-person\"></i></span>\n                  <input type=\"text\" class=\"form-control\" id=\"signupFullname\" name=\"full\" value=\"<?php echo htmlspecialchars($_POST['full'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\" autocomplete=\"name\" required>\n                </div>\n              </div>\n              <div class=\"mb-3\">\n                <label for=\"signupPassword\" class=\"form-label\"><?php echo htmlspecialchars($lang['password'] ?? 'Password', ENT_QUOTES, 'UTF-8'); ?></label>\n                <div class=\"input-group\">\n                  <span class=\"input-group-text\"><i class=\"bi bi-lock\"></i></span>\n                  <input type=\"password\" class=\"form-control\" id=\"signupPassword\" name=\"password\" autocomplete=\"new-password\" required>\n                </div>\n              </div>\n              <button type=\"submit\" class=\"btn btn-primary btn-perky fw-bold w-100\"><?php echo htmlspecialchars($lang['signup'] ?? 'Register', ENT_QUOTES, 'UTF-8'); ?></button>\n            </form>\n          </div>\n        </div>\n\n      <?php else: ?>\n        <!-- Login -->\n        <div class=\"card mb-4\">\n          <div class=\"card-body\">\n            <h5 class=\"card-title\"><?php echo htmlspecialchars($lang['login'] ?? 'Login', ENT_QUOTES, 'UTF-8'); ?></h5>\n            <div id=\"direct-signin-feedback\"></div>\n            <form method=\"POST\" action=\"<?php echo htmlspecialchars($baseurl . 'login.php', ENT_QUOTES, 'UTF-8'); ?>\" id=\"direct-signin-form\">\n              <input type=\"hidden\" name=\"csrf_token\" value=\"<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n              <input type=\"hidden\" name=\"ajax\" value=\"1\">\n              <input type=\"hidden\" name=\"signin\" value=\"1\">\n              <input type=\"hidden\" name=\"redirect\" value=\"<?php echo htmlspecialchars($_SERVER['REQUEST_URI'] ?? $baseurl, ENT_QUOTES, 'UTF-8'); ?>\">\n              <?php if ($captcha_enabled): ?>\n                <input type=\"hidden\" id=\"g-recaptcha-response-direct-signin\" name=\"g-recaptcha-response\">\n                <?php if ($recaptcha_version === 'v2'): ?>\n                  <div class=\"g-recaptcha mb-3\" data-sitekey=\"<?php echo htmlspecialchars($recaptcha_sitekey, ENT_QUOTES, 'UTF-8'); ?>\" data-callback=\"onRecaptchaSuccessDirectSignin\"></div>\n                <?php endif; ?>\n              <?php endif; ?>\n              <div class=\"mb-3\">\n                <label for=\"directSigninUsername\" class=\"form-label\"><?php echo htmlspecialchars($lang['username'] ?? 'Username', ENT_QUOTES, 'UTF-8'); ?></label>\n                <div class=\"input-group\">\n                  <span class=\"input-group-text\"><i class=\"bi bi-person\"></i></span>\n                  <input type=\"text\" name=\"username\" class=\"form-control\" id=\"directSigninUsername\" autocomplete=\"username\" required>\n                </div>\n              </div>\n              <div class=\"mb-3\">\n                <label for=\"directSigninPassword\" class=\"form-label\"><?php echo htmlspecialchars($lang['password'] ?? 'Password', ENT_QUOTES, 'UTF-8'); ?></label>\n                <div class=\"input-group\">\n                  <span class=\"input-group-text\"><i class=\"bi bi-key\"></i></span>\n                  <input type=\"password\" name=\"password\" class=\"form-control\" id=\"directSigninPassword\" autocomplete=\"current-password\" required>\n                </div>\n              </div>\n              <div class=\"form-check mb-3\">\n                <input class=\"form-check-input\" type=\"checkbox\" id=\"directSigninRememberme\" name=\"rememberme\" checked>\n                <label class=\"form-check-label\" for=\"directSigninRememberme\"><?php echo htmlspecialchars($lang['rememberme'] ?? 'Keep me signed in.', ENT_QUOTES, 'UTF-8'); ?></label>\n              </div>\n              <button type=\"submit\" class=\"btn btn-primary btn-perky fw-bold w-100\"><?php echo htmlspecialchars($lang['login'] ?? 'Login', ENT_QUOTES, 'UTF-8'); ?></button>\n\n              <?php if (($enablegoog ?? 'no') === 'yes' || ($enablefb ?? 'no') === 'yes'): ?>\n                <div class=\"d-grid gap-2 mt-3\">\n                  <?php if (($enablegoog ?? 'no') === 'yes'): ?>\n                    <a class=\"btn btn-outline-light btn-oauth\" href=\"<?php echo htmlspecialchars($baseurl . 'login.php?login=google', ENT_QUOTES, 'UTF-8'); ?>\">\n                      <i class=\"bi bi-google oauth-icon\"></i> <?php echo htmlspecialchars($lang['login_with_google'] ?? 'Login with Google', ENT_QUOTES, 'UTF-8'); ?>\n                    </a>\n                  <?php endif; ?>\n                  <?php if (($enablefb ?? 'no') === 'yes'): ?>\n                    <a class=\"btn btn-outline-light btn-oauth\" href=\"<?php echo htmlspecialchars($baseurl . 'login.php?login=facebook', ENT_QUOTES, 'UTF-8'); ?>\">\n                      <i class=\"bi bi-facebook oauth-icon\"></i> <?php echo htmlspecialchars($lang['login_with_facebook'] ?? 'Login with Facebook', ENT_QUOTES, 'UTF-8'); ?>\n                    </a>\n                  <?php endif; ?>\n                </div>\n              <?php endif; ?>\n            </form>\n\n            <div class=\"text-center mt-3\">\n              <a href=\"<?php echo htmlspecialchars($baseurl . 'login.php?action=forgot', ENT_QUOTES, 'UTF-8'); ?>\"><?php echo htmlspecialchars($lang['forgot_password'] ?? 'Forgot Password', ENT_QUOTES, 'UTF-8'); ?></a><br>\n              <a href=\"<?php echo htmlspecialchars($baseurl . 'login.php?action=signup', ENT_QUOTES, 'UTF-8'); ?>\"><?php echo htmlspecialchars($lang['signup'] ?? 'Register', ENT_QUOTES, 'UTF-8'); ?></a><br>\n              <a href=\"<?php echo htmlspecialchars($baseurl . 'login.php?action=resend', ENT_QUOTES, 'UTF-8'); ?>\"><?php echo htmlspecialchars($lang['resend_verification'] ?? 'Resend Verification Email', ENT_QUOTES, 'UTF-8'); ?></a>\n            </div>\n          </div>\n        </div>\n      <?php endif; ?>\n    </div>\n  </div>\n</div>\n\n<!-- Safe, idempotent v2 callbacks -->\n<script>\n(function() {\n  function setToken(id, token) { var el = document.getElementById(id); if (el) el.value = token; }\n  window.onRecaptchaSuccessDirectSignin = window.onRecaptchaSuccessDirectSignin || function(t){ setToken('g-recaptcha-response-direct-signin', t); };\n  window.onRecaptchaSuccessSignup      = window.onRecaptchaSuccessSignup      || function(t){ setToken('g-recaptcha-response-signup', t); };\n  window.onRecaptchaSuccessForgot      = window.onRecaptchaSuccessForgot      || function(t){ setToken('g-recaptcha-response-forgot', t); };\n  window.onRecaptchaSuccessResend      = window.onRecaptchaSuccessResend      || function(t){ setToken('g-recaptcha-response-resend', t); };\n  window.onRecaptchaSuccessReset       = window.onRecaptchaSuccessReset       || function(t){ setToken('g-recaptcha-response-reset', t); };\n})();\n</script>\n"
  },
  {
    "path": "theme/default/main.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n$captcha_mode = $_SESSION['captcha_mode'] ?? 'none'; // 'recaptcha' (v2 checkbox), 'recaptcha_v3', 'internal', 'none'\n$main_sitekey = $_SESSION['captcha']       ?? '';     // sitekey for this main form (set in index during GET)\n?>\n\n<div class=\"container-xl my-4\">\n  <div class=\"row\">\n    <?php if (isset($privatesite) && $privatesite === \"on\"): ?>\n      <div class=\"col-lg-12\">\n        <?php if (!isset($_SESSION['username'])): ?>\n          <div class=\"card\">\n            <div class=\"card-body\">\n              <div class=\"alert alert-warning\">\n                <?php echo htmlspecialchars($lang['login_required'] ?? 'You must be logged in to create a paste.', ENT_QUOTES, 'UTF-8'); ?>\n                <a href=\"<?php echo htmlspecialchars($baseurl . 'login.php', ENT_QUOTES, 'UTF-8'); ?>\" class=\"btn btn-primary mt-2\">Login</a>\n              </div>\n            </div>\n          </div>\n        <?php else: ?>\n          <!-- Paste form (private site, logged-in user) -->\n          <div class=\"card\">\n            <div class=\"card-header\">\n              <h1><?php echo htmlspecialchars($lang['newpaste'] ?? 'New Paste'); ?></h1>\n            </div>\n            <div class=\"card-body\">\n              <?php if (!empty($flash_error)): ?>\n                <div class=\"alert alert-danger\"><?php echo htmlspecialchars($flash_error, ENT_QUOTES, 'UTF-8'); ?></div>\n              <?php elseif (isset($_GET['error'])): ?>\n                <div class=\"alert alert-warning\"><?php echo htmlspecialchars($_GET['error'], ENT_QUOTES, 'UTF-8'); ?></div>\n              <?php elseif (isset($_GET['success'])): ?>\n                <div class=\"alert alert-success\"><?php echo htmlspecialchars($_GET['success'], ENT_QUOTES, 'UTF-8'); ?></div>\n              <?php elseif (isset($error)): ?>\n                <div class=\"alert alert-warning\"><?php echo htmlspecialchars($error, ENT_QUOTES, 'UTF-8'); ?></div>\n              <?php endif; ?>\n\n              <form class=\"form-horizontal\" name=\"mainForm\" id=\"mainForm\" action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'); ?>\" method=\"POST\">\n                <div class=\"row mb-3 g-3\">\n                  <div class=\"col-sm-4\">\n                    <div class=\"input-group\">\n                      <span class=\"input-group-text\"><i class=\"bi bi-fonts\"></i></span>\n                      <input type=\"text\" class=\"form-control\" name=\"title\" placeholder=\"<?php echo htmlspecialchars($lang['pastetitle'] ?? 'Paste Title'); ?>\">\n                    </div>\n                  </div>\n                  <div class=\"col-sm-4\">\n                    <select class=\"form-select\" name=\"format\" id=\"format\">\n                      <option value=\"markdown\" <?php echo ($format ?? 'markdown') == 'markdown' ? 'selected' : ''; ?>>Markdown</option>\n                      <?php\n                      $geshiformats    = $geshiformats ?? [];\n                      $popular_formats = $popular_formats ?? [];\n                      foreach ($geshiformats as $code => $name) {\n                        if ($code !== 'markdown' && in_array($code, $popular_formats)) {\n                          $sel = ($format ?? 'markdown') == $code ? 'selected' : '';\n                          echo '<option ' . $sel . ' value=\"' . htmlspecialchars($code) . '\">' . htmlspecialchars($name) . '</option>';\n                        }\n                      }\n                      echo '<option value=\"text\">-------------------------------------</option>';\n                      foreach ($geshiformats as $code => $name) {\n                        if ($code !== 'markdown' && !in_array($code, $popular_formats)) {\n                          $sel = ($format ?? 'markdown') == $code ? 'selected' : '';\n                          echo '<option ' . $sel . ' value=\"' . htmlspecialchars($code) . '\">' . htmlspecialchars($name) . '</option>';\n                        }\n                      }\n                      ?>\n                    </select>\n                  </div>\n                  <div class=\"col-sm-2 ms-auto\">\n                    <a class=\"btn btn-secondary highlight-line\" href=\"#\" title=\"Highlight selected lines\"><i class=\"bi bi-text-indent-left\"></i> Highlight</a>\n                  </div>\n                </div>\n\n                <div class=\"mb-3\">\n                  <textarea class=\"form-control\" rows=\"15\" id=\"edit-code\" name=\"paste_data\" placeholder=\"hello world\"><?php echo htmlspecialchars($paste_data ?? '', ENT_QUOTES, 'UTF-8'); ?></textarea>\n                </div>\n\n                <div class=\"row mb-3\">\n                  <label class=\"col-sm-2 col-form-label\"><?php echo htmlspecialchars($lang['expiration'] ?? 'Expiration'); ?></label>\n                  <div class=\"col-sm-10\">\n                    <select class=\"form-select\" name=\"paste_expire_date\">\n                      <option value=\"N\"   <?php echo ($paste_expire_date ?? 'N') == \"N\"   ? 'selected' : ''; ?>>Never</option>\n                      <option value=\"self\"<?php echo ($paste_expire_date ?? 'N') == \"self\"? 'selected' : ''; ?>>View Once</option>\n                      <option value=\"10M\" <?php echo ($paste_expire_date ?? 'N') == \"10M\" ? 'selected' : ''; ?>>10 Minutes</option>\n                      <option value=\"1H\"  <?php echo ($paste_expire_date ?? 'N') == \"1H\"  ? 'selected' : ''; ?>>1 Hour</option>\n                      <option value=\"1D\"  <?php echo ($paste_expire_date ?? 'N') == \"1D\"  ? 'selected' : ''; ?>>1 Day</option>\n                      <option value=\"1W\"  <?php echo ($paste_expire_date ?? 'N') == \"1W\"  ? 'selected' : ''; ?>>1 Week</option>\n                      <option value=\"2W\"  <?php echo ($paste_expire_date ?? 'N') == \"2W\"  ? 'selected' : ''; ?>>2 Weeks</option>\n                      <option value=\"1M\"  <?php echo ($paste_expire_date ?? 'N') == \"1M\"  ? 'selected' : ''; ?>>1 Month</option>\n                    </select>\n                  </div>\n                </div>\n\n                <div class=\"row mb-3\">\n                  <label class=\"col-sm-2 col-form-label\"><?php echo htmlspecialchars($lang['visibility'] ?? 'Visibility'); ?></label>\n                  <div class=\"col-sm-10\">\n                    <select class=\"form-select\" name=\"visibility\">\n                      <option value=\"0\" <?php echo ($visibility ?? '0') == \"0\" ? 'selected' : ''; ?>>Public</option>\n                      <option value=\"1\" <?php echo ($visibility ?? '0') == \"1\" ? 'selected' : ''; ?>>Unlisted</option>\n                      <option value=\"2\" <?php echo ($visibility ?? '0') == \"2\" ? 'selected' : ''; ?>>Private</option>\n                    </select>\n                  </div>\n                </div>\n\n                <div class=\"mb-3\">\n                  <div class=\"input-group\">\n                    <span class=\"input-group-text\"><i class=\"bi bi-lock\"></i></span>\n                    <input type=\"text\" class=\"form-control\" name=\"pass\" id=\"pass\" placeholder=\"<?php echo htmlspecialchars($lang['pwopt'] ?? 'Optional Password'); ?>\">\n                  </div>\n                </div>\n\n                <div class=\"row mb-3\">\n                  <p class=\"text-muted\"><small><?php echo htmlspecialchars($lang['encrypt'] ?? 'Encryption', ENT_QUOTES, 'UTF-8'); ?></small></p>\n                </div>\n\n                <?php if ($cap_e == \"on\" && !isset($_SESSION['username']) && (!isset($disableguest) || $disableguest !== \"on\")): ?>\n                  <?php if ($captcha_mode === \"recaptcha\"): ?>\n                    <!-- reCAPTCHA v2 checkbox -->\n                    <div class=\"g-recaptcha mb-3\"\n                         data-sitekey=\"<?php echo htmlspecialchars($main_sitekey, ENT_QUOTES, 'UTF-8'); ?>\"\n                         data-callback=\"onRecaptchaSuccess\"></div>\n                    <input type=\"hidden\" name=\"g-recaptcha-response\" id=\"g-recaptcha-response\">\n                  <?php elseif ($captcha_mode === \"recaptcha_v3\"): ?>\n                    <!-- v3: hidden field only; token populated by footer -->\n                    <input type=\"hidden\" name=\"g-recaptcha-response\" id=\"g-recaptcha-response\">\n                  <?php else: ?>\n                    <!-- Internal CAPTCHA -->\n                    <div class=\"row mb-3\">\n                      <?php echo '<img src=\"' . htmlspecialchars($_SESSION['captcha']['image_src'] ?? '', ENT_QUOTES, 'UTF-8') . '\" alt=\"CAPTCHA\" class=\"imagever\">'; ?>\n                      <input style=\"height: 65px;\" type=\"text\" class=\"form-control\" name=\"scode\" value=\"\" placeholder=\"<?php echo htmlspecialchars($lang['entercode'] ?? 'Enter CAPTCHA code', ENT_QUOTES, 'UTF-8'); ?>\">\n                    </div>\n                  <?php endif; ?>\n                <?php endif; ?>\n\n                <div class=\"row mb-3\">\n                  <div class=\"d-grid gap-2\">\n                    <!-- Keep the name=\"submit\" if your PHP expects it; JS should use HTMLFormElement.prototype.submit -->\n                    <input class=\"btn btn-primary paste-button\" type=\"submit\" id=\"submit\" data-recaptcha-action=\"create_paste\" value=\"<?php echo htmlspecialchars($lang['createpaste'] ?? 'Paste'); ?>\">\n                  </div>\n                </div>\n              </form>\n            </div>\n          </div>\n        <?php endif; ?>\n      </div>\n\n      <div class=\"sidebar-below<?php echo (isset($privatesite) && $privatesite === 'on') ? ' sidebar-below' : ''; ?>\">\n        <?php\n        $__sidebar = __DIR__ . '/sidebar.php';\n        if (is_file($__sidebar)) { include $__sidebar; }\n        ?>\n      </div>\n\n    <?php else: ?>\n      <!-- Non-private site: Main content + sidebar -->\n      <div class=\"col-lg-10\">\n        <?php if (!isset($_SESSION['username']) && (!isset($privatesite) || $privatesite != \"on\")): ?>\n          <div class=\"card guest-welcome text-center\">\n            <div class=\"btn-group\" role=\"group\" aria-label=\"Login or Register\">\n              <a href=\"#\" class=\"btn btn-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#signin\">Login</a>\n              <a href=\"#\" class=\"btn btn-outline-primary\" data-bs-toggle=\"modal\" data-bs-target=\"#signup\">Register</a>\n            </div>\n          </div>\n        <?php endif; ?>\n\n        <?php if (!isset($_SESSION['username']) && (isset($disableguest) && $disableguest === \"on\")): ?>\n          <div class=\"card\">\n            <div class=\"card-body\">\n              <div class=\"alert alert-warning\">\n                <?php echo htmlspecialchars($lang['login_required'] ?? 'You must be logged in to create a paste.', ENT_QUOTES, 'UTF-8'); ?>\n                <a href=\"<?php echo htmlspecialchars($baseurl . 'login.php', ENT_QUOTES, 'UTF-8'); ?>\" class=\"btn btn-primary mt-2\">Login</a>\n              </div>\n            </div>\n          </div>\n        <?php else: ?>\n          <!-- Paste form (public site) -->\n          <div class=\"card\">\n            <div class=\"card-header\">\n              <h1><?php echo htmlspecialchars($lang['newpaste'] ?? 'New Paste'); ?></h1>\n            </div>\n            <div class=\"card-body\">\n              <?php if (!empty($flash_error)): ?>\n                <div class=\"alert alert-danger\"><?php echo htmlspecialchars($flash_error, ENT_QUOTES, 'UTF-8'); ?></div>\n              <?php elseif (isset($_GET['error'])): ?>\n                <div class=\"alert alert-warning\"><?php echo htmlspecialchars($_GET['error'], ENT_QUOTES, 'UTF-8'); ?></div>\n              <?php elseif (isset($_GET['success'])): ?>\n                <div class=\"alert alert-success\"><?php echo htmlspecialchars($_GET['success'], ENT_QUOTES, 'UTF-8'); ?></div>\n              <?php elseif (isset($error)): ?>\n                <div class=\"alert alert-warning\"><?php echo htmlspecialchars($error, ENT_QUOTES, 'UTF-8'); ?></div>\n              <?php endif; ?>\n\n              <form class=\"form-horizontal\" name=\"mainForm\" id=\"mainForm\" action=\"<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES, 'UTF-8'); ?>\" method=\"POST\">\n                <div class=\"row mb-3 g-3\">\n                  <div class=\"col-sm-4\">\n                    <div class=\"input-group\">\n                      <span class=\"input-group-text\"><i class=\"bi bi-fonts\"></i></span>\n                      <input type=\"text\" class=\"form-control\" name=\"title\" placeholder=\"<?php echo htmlspecialchars($lang['pastetitle'] ?? 'Paste Title'); ?>\">\n                    </div>\n                  </div>\n                  <div class=\"col-sm-4\">\n                    <select class=\"form-select\" name=\"format\" id=\"format\">\n                      <option value=\"markdown\" <?php echo ($format ?? 'markdown') == 'markdown' ? 'selected' : ''; ?>>Markdown</option>\n                      <?php\n                      $geshiformats    = $geshiformats ?? [];\n                      $popular_formats = $popular_formats ?? [];\n                      foreach ($geshiformats as $code => $name) {\n                        if ($code !== 'markdown' && in_array($code, $popular_formats)) {\n                          $sel = ($format ?? 'markdown') == $code ? 'selected' : '';\n                          echo '<option ' . $sel . ' value=\"' . htmlspecialchars($code) . '\">' . htmlspecialchars($name) . '</option>';\n                        }\n                      }\n                      echo '<option value=\"text\">-------------------------------------</option>';\n                      foreach ($geshiformats as $code => $name) {\n                        if ($code !== 'markdown' && !in_array($code, $popular_formats)) {\n                          $sel = ($format ?? 'markdown') == $code ? 'selected' : '';\n                          echo '<option ' . $sel . ' value=\"' . htmlspecialchars($code) . '\">' . htmlspecialchars($name) . '</option>';\n                        }\n                      }\n                      ?>\n                    </select>\n                  </div>\n                  <div class=\"col-sm-2 ms-auto\">\n                    <a class=\"btn btn-secondary highlight-line\" href=\"#\" title=\"Highlight selected lines\"><i class=\"bi bi-text-indent-left\"></i> Highlight</a>\n                  </div>\n                </div>\n\n                <div class=\"mb-3\">\n                  <textarea class=\"form-control\" rows=\"15\" id=\"edit-code\" name=\"paste_data\" placeholder=\"hello world\"><?php echo htmlspecialchars($paste_data ?? '', ENT_QUOTES, 'UTF-8'); ?></textarea>\n                </div>\n\n                <div class=\"row mb-3\">\n                  <label class=\"col-sm-2 col-form-label\"><?php echo htmlspecialchars($lang['expiration'] ?? 'Expiration'); ?></label>\n                  <div class=\"col-sm-10\">\n                    <select class=\"form-select\" name=\"paste_expire_date\">\n                      <option value=\"N\"   <?php echo ($paste_expire_date ?? 'N') == \"N\"   ? 'selected' : ''; ?>>Never</option>\n                      <option value=\"self\"<?php echo ($paste_expire_date ?? 'N') == \"self\"? 'selected' : ''; ?>>View Once</option>\n                      <option value=\"10M\" <?php echo ($paste_expire_date ?? 'N') == \"10M\" ? 'selected' : ''; ?>>10 Minutes</option>\n                      <option value=\"1H\"  <?php echo ($paste_expire_date ?? 'N') == \"1H\"  ? 'selected' : ''; ?>>1 Hour</option>\n                      <option value=\"1D\"  <?php echo ($paste_expire_date ?? 'N') == \"1D\"  ? 'selected' : ''; ?>>1 Day</option>\n                      <option value=\"1W\"  <?php echo ($paste_expire_date ?? 'N') == \"1W\"  ? 'selected' : ''; ?>>1 Week</option>\n                      <option value=\"2W\"  <?php echo ($paste_expire_date ?? 'N') == \"2W\"  ? 'selected' : ''; ?>>2 Weeks</option>\n                      <option value=\"1M\"  <?php echo ($paste_expire_date ?? 'N') == \"1M\"  ? 'selected' : ''; ?>>1 Month</option>\n                    </select>\n                  </div>\n                </div>\n\n                <div class=\"row mb-3\">\n                  <label class=\"col-sm-2 col-form-label\"><?php echo htmlspecialchars($lang['visibility'] ?? 'Visibility'); ?></label>\n                  <div class=\"col-sm-10\">\n                    <select class=\"form-select\" name=\"visibility\">\n                      <option value=\"0\" <?php echo ($visibility ?? '0') == \"0\" ? 'selected' : ''; ?>>Public</option>\n                      <option value=\"1\" <?php echo ($visibility ?? '0') == \"1\" ? 'selected' : ''; ?>>Unlisted</option>\n                      <option value=\"2\" <?php echo ($visibility ?? '0') == \"2\" ? 'selected' : ''; ?>>Private</option>\n                    </select>\n                  </div>\n                </div>\n\n                <div class=\"mb-3\">\n                  <div class=\"input-group\">\n                    <span class=\"input-group-text\"><i class=\"bi bi-lock\"></i></span>\n                    <input type=\"text\" class=\"form-control\" name=\"pass\" id=\"pass\" placeholder=\"<?php echo htmlspecialchars($lang['pwopt'] ?? 'Optional Password'); ?>\">\n                  </div>\n                </div>\n\n                <div class=\"row mb-3\">\n                  <p class=\"text-muted\"><small><?php echo htmlspecialchars($lang['encrypt'] ?? 'Encryption', ENT_QUOTES, 'UTF-8'); ?></small></p>\n                </div>\n\n                <?php if ($cap_e == \"on\" && !isset($_SESSION['username']) && (!isset($disableguest) || $disableguest !== \"on\")): ?>\n                  <?php if ($captcha_mode === \"recaptcha\"): ?>\n                    <!-- reCAPTCHA v2 checkbox -->\n                    <div class=\"g-recaptcha mb-3\"\n                         data-sitekey=\"<?php echo htmlspecialchars($main_sitekey, ENT_QUOTES, 'UTF-8'); ?>\"\n                         data-callback=\"onRecaptchaSuccess\"></div>\n                    <input type=\"hidden\" name=\"g-recaptcha-response\" id=\"g-recaptcha-response\">\n                  <?php elseif ($captcha_mode === \"recaptcha_v3\"): ?>\n                    <!-- v3: hidden field only -->\n                    <input type=\"hidden\" name=\"g-recaptcha-response\" id=\"g-recaptcha-response\">\n                  <?php else: ?>\n                    <!-- Internal CAPTCHA -->\n                    <div class=\"row mb-3\">\n                      <?php echo '<img src=\"' . htmlspecialchars($_SESSION['captcha']['image_src'] ?? '', ENT_QUOTES, 'UTF-8') . '\" alt=\"CAPTCHA\" class=\"imagever\">'; ?>\n                      <input style=\"height: 65px;\" type=\"text\" class=\"form-control\" name=\"scode\" value=\"\" placeholder=\"<?php echo htmlspecialchars($lang['entercode'] ?? 'Enter CAPTCHA code', ENT_QUOTES, 'UTF-8'); ?>\">\n                    </div>\n                  <?php endif; ?>\n                <?php endif; ?>\n\n                <div class=\"row mb-3\">\n                  <div class=\"d-grid gap-2\">\n                    <input class=\"btn btn-primary paste-button\" type=\"submit\" id=\"submit\" data-recaptcha-action=\"create_paste\" value=\"<?php echo htmlspecialchars($lang['createpaste'] ?? 'Paste'); ?>\">\n                  </div>\n                </div>\n              </form>\n            </div>\n          </div>\n        <?php endif; ?>\n      </div>\n\n      <div class=\"col-lg-2 mt-4 mt-lg-0\">\n        <?php\n        $__sidebar = __DIR__ . '/sidebar.php';\n        if (is_file($__sidebar)) { include $__sidebar; }\n        ?>\n      </div>\n    <?php endif; ?>\n  </div>\n</div>\n\n<!-- Safe, idempotent v2 callback (no grecaptcha usage here) -->\n<script>\n(function() {\n  function setToken(id, token) {\n    var el = document.getElementById(id);\n    if (el) { el.value = token; }\n  }\n  window.onRecaptchaSuccess = window.onRecaptchaSuccess || function(token) {\n    setToken('g-recaptcha-response', token);\n  };\n})();\n</script>\n"
  },
  {
    "path": "theme/default/pages.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n?>\n\n<div class=\"content\">\n  <!-- START CONTAINER -->\n  <div class=\"container-xl my-4\">\n    <!-- Start Row -->\n    <div class=\"row\">\n      <!-- Start Card -->\n      <div class=\"col-lg-12\">\n        <div class=\"card\">\n          <div class=\"card-header text-center\">\n            <h6><?php echo htmlspecialchars($page_title ?? ''); ?></h6>\n          </div>\n          <div class=\"card-body\">\n            <?php\n            if (isset($stats)) {\n              echo htmlspecialchars_decode($page_content ?? '');\n            } else {\n              echo '<div class=\"alert alert-dark text-center\"><p>' . htmlspecialchars($lang['notfound'] ?? '404 Not Found') . '</p></div>';\n            }\n            ?>\n          </div>\n        </div>\n      </div>\n      \n      <?php require_once('theme/' . $default_theme . '/sidebar.php'); ?>\n            <?php echo $ads_1 ?? ''; ?>\n    </div>\n  </div>\n</div>"
  },
  {
    "path": "theme/default/profile.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n?>\n\n<div class=\"content\">\n  <!-- START CONTAINER -->\n  <div class=\"container-xl my-5\">\n    <!-- Start Row -->\n    <div class=\"row\">\n      <!-- Start Card -->\n      <div class=\"col-lg-12\">\n        <div class=\"card\">\n          <div class=\"card-header bg-dark text-light rounded-top d-flex justify-content-between align-items-center\">\n            <h5 class=\"mb-0\"><?php echo htmlspecialchars($lang['myprofile'] ?? 'My Profile', ENT_QUOTES, 'UTF-8'); ?></h5>\n            <a class=\"btn btn-outline-light btn-sm\" href=\"<?php echo htmlspecialchars(\n                $baseurl . ($mod_rewrite ? 'user/' . urlencode($_SESSION['username'] ?? '') : 'user.php?user=' . urlencode($_SESSION['username'] ?? '')),\n                ENT_QUOTES,\n                'UTF-8'\n            ); ?>\" target=\"_self\"><?php echo htmlspecialchars($lang['mypastes'] ?? 'My Pastes', ENT_QUOTES, 'UTF-8'); ?></a>\n          </div>\n          \n          <div class=\"card-body p-4\">\n            <?php \n            if ($_SERVER['REQUEST_METHOD'] === 'POST') {\t\n              if (!empty($success)) {\n                echo '<div class=\"alert alert-success text-center rounded-3\">' . htmlspecialchars($success, ENT_QUOTES, 'UTF-8') . '</div>'; \n              } elseif (!empty($error)) {\n                echo '<div class=\"alert alert-danger text-center rounded-3\">' . htmlspecialchars($error, ENT_QUOTES, 'UTF-8') . '</div>'; \n              }\n            }\n            ?>\n            <form action=\"<?php echo htmlspecialchars($baseurl . 'profile.php', ENT_QUOTES, 'UTF-8'); ?>\" method=\"post\" class=\"mt-4\">\n              <input type=\"hidden\" name=\"csrf_token\" value=\"<?php echo htmlspecialchars($_SESSION['csrf_token'] ?? '', ENT_QUOTES, 'UTF-8'); ?>\">\n              <div class=\"row justify-content-center\">\n                <div class=\"col-md-6\">\n\n                  <!-- Username block -->\n                  <div class=\"mb-4 position-relative\">\n                    <label class=\"form-label text-light\"><?php echo htmlspecialchars($lang['username'] ?? 'Username', ENT_QUOTES, 'UTF-8'); ?></label>\n\n                    <?php if (!empty($can_edit_username)): ?>\n                      <!-- One-time editable username for OAuth accounts -->\n                      <input type=\"hidden\" name=\"set_username_once\" value=\"1\">\n                      <input\n                        type=\"text\"\n                        class=\"form-control bg-dark text-light pe-5\"\n                        name=\"new_username\"\n                        value=\"<?php echo htmlspecialchars($user_username ?? '', ENT_QUOTES, 'UTF-8'); ?>\"\n                        placeholder=\"<?php echo htmlspecialchars($lang['setuser'] ?? 'Set your Username', ENT_QUOTES, 'UTF-8'); ?>\"\n                        required\n                      >\n                      <small class=\"text-muted d-block mt-1\">\n                        <?php echo htmlspecialchars($lang['keepuser'] ?? 'Keep autogenerated name? You can change it once.', ENT_QUOTES, 'UTF-8'); ?>\n                      </small>\n                    <?php else: ?>\n                      <!-- Locked / regular view -->\n                      <input\n                        disabled\n                        type=\"text\"\n                        class=\"form-control bg-dark text-light pe-5\"\n                        name=\"username\"\n                        value=\"<?php echo htmlspecialchars($user_username ?? '', ENT_QUOTES, 'UTF-8'); ?>\"\n                      >\n                    <?php endif; ?>\n\n                    <i class=\"bi bi-person position-absolute\" style=\"right: 12px; top: 50%; color: #6c757d; font-size: 1.1rem;\"></i>\n                  </div>\n\t\t\t\t\t<div class=\"mb-4 position-relative\">\n\t\t\t\t\t  <label class=\"form-label text-light\">\n\t\t\t\t\t\t<?php echo htmlspecialchars($lang['fullname'] ?? 'Full Name', ENT_QUOTES, 'UTF-8'); ?>\n\t\t\t\t\t  </label>\n\t\t\t\t\t  <input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tclass=\"form-control bg-dark text-light pe-5\"\n\t\t\t\t\t\tname=\"full\"\n\t\t\t\t\t\tvalue=\"<?php echo htmlspecialchars($user_full_name ?? '', ENT_QUOTES, 'UTF-8'); ?>\"\n\t\t\t\t\t\tplaceholder=\"<?php echo htmlspecialchars($lang['fullname'] ?? 'Full Name', ENT_QUOTES, 'UTF-8'); ?>\"\n\t\t\t\t\t  >\n\t\t\t\t\t  <i class=\"bi bi-person-badge position-absolute\"\n\t\t\t\t\t\t style=\"right: 12px; top: 50%; color: #6c757d; font-size: 1.1rem;\"></i>\n\t\t\t\t\t</div>\n                  <div class=\"mb-4 position-relative\">\n                    <label class=\"form-label text-light\"><?php echo htmlspecialchars($lang['email'] ?? 'Email', ENT_QUOTES, 'UTF-8'); ?></label>\n                    <input\n                      <?php if (!empty($user_verified) && $user_verified === \"1\") { echo 'disabled'; } ?>\n                      type=\"text\"\n                      class=\"form-control bg-dark text-light pe-5\"\n                      name=\"email\"\n                      value=\"<?php echo htmlspecialchars($user_email_id ?? '', ENT_QUOTES, 'UTF-8'); ?>\"\n                    >\n                    <i class=\"bi bi-person position-absolute\" style=\"right: 12px; top: 50%; color: #6c757d; font-size: 1.1rem;\"></i>\n                  </div>\n\n                  <h5 class=\"text-center mb-4 text-light\"><?php echo htmlspecialchars($lang['chgpwd'] ?? 'Change Password', ENT_QUOTES, 'UTF-8'); ?></h5>\n                  \n                  <div class=\"mb-4 position-relative\">\n                    <label class=\"form-label text-light\"><?php echo htmlspecialchars($lang['curpwd'] ?? 'Current Password', ENT_QUOTES, 'UTF-8'); ?></label>\n                    <input type=\"password\" class=\"form-control bg-dark text-light pe-5\" name=\"old_password\" placeholder=\"<?php echo htmlspecialchars($lang['curpwd'] ?? 'Current Password', ENT_QUOTES, 'UTF-8'); ?>\">\n                    <i class=\"bi bi-key position-absolute password-toggle\" style=\"right: 12px; top: 50%; color: #6c757d; font-size: 1.1rem; cursor: pointer;\"></i>\n                  </div>\n                  \n                  <div class=\"mb-4 position-relative\">\n                    <label class=\"form-label text-light\"><?php echo htmlspecialchars($lang['newpwd'] ?? 'New Password', ENT_QUOTES, 'UTF-8'); ?></label>\n                    <input type=\"password\" class=\"form-control bg-dark text-light pe-5\" name=\"password\" placeholder=\"<?php echo htmlspecialchars($lang['newpwd'] ?? 'New Password', ENT_QUOTES, 'UTF-8'); ?>\">\n                    <i class=\"bi bi-pencil position-absolute password-toggle\" style=\"right: 12px; top: 50%; color: #6c757d; font-size: 1.1rem; cursor: pointer;\"></i>\n                  </div>\n\n                  <div class=\"mb-4 position-relative\">\n                    <label class=\"form-label text-light\"><?php echo htmlspecialchars($lang['confpwd'] ?? 'Confirm Password', ENT_QUOTES, 'UTF-8'); ?></label>\n                    <input type=\"password\" class=\"form-control bg-dark text-light pe-5\" name=\"cpassword\" placeholder=\"<?php echo htmlspecialchars($lang['confpwd'] ?? 'Confirm Password', ENT_QUOTES, 'UTF-8'); ?>\">\n                    <i class=\"bi bi-check position-absolute password-toggle\" style=\"right: 12px; top: 50%; color: #6c757d; font-size: 1.1rem; cursor: pointer;\"></i>\n                  </div>\n\n                  <button type=\"submit\" name=\"submit\" class=\"btn btn-outline-light w-100 rounded-3\">\n                    <?php echo htmlspecialchars($lang['submit'] ?? 'Submit', ENT_QUOTES, 'UTF-8'); ?>\n                  </button>\n\n                  <hr class=\"my-4\">\n\n                  <div class=\"text-center\">\n                    <!-- Trigger: Delete account -->\n                    <button type=\"button\" class=\"btn btn-danger\" data-bs-toggle=\"modal\" data-bs-target=\"#deleteAccountModal\">\n                      <i class=\"bi bi-trash\"></i> <?php echo htmlspecialchars($lang['deleteaccount'] ?? 'Delete My Account', ENT_QUOTES, 'UTF-8'); ?>\n                    </button>\n                  </div>\n\n                  <!-- Confirm Delete Modal -->\n                  <div class=\"modal fade\" id=\"deleteAccountModal\" tabindex=\"-1\" aria-labelledby=\"deleteAccountModalLabel\" aria-hidden=\"true\">\n                    <div class=\"modal-dialog modal-dialog-centered\">\n                      <div class=\"modal-content bg-dark text-light\">\n                        <div class=\"modal-header\">\n                          <h5 class=\"modal-title\" id=\"deleteAccountModalLabel\"><?php echo htmlspecialchars($lang['deleteaccount'] ?? 'Delete My Account', ENT_QUOTES, 'UTF-8'); ?></h5>\n                          <button type=\"button\" class=\"btn-close btn-close-white\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n                        </div>\n\n                        <div class=\"modal-body\">\n                          <p class=\"mb-2\">\n                            <?php echo htmlspecialchars($lang['deletewarn'] ?? 'This will permanently remove your account and all your pastes. This action cannot be undone.', ENT_QUOTES, 'UTF-8'); ?>\n                          </p>\n                          <p class=\"mb-3\">\n                            <?php echo htmlspecialchars($lang['typedelete'] ?? 'Type DELETE to confirm.', ENT_QUOTES, 'UTF-8'); ?>\n                          </p>\n\n                          <div class=\"mb-3\">\n                            <input type=\"text\" class=\"form-control bg-dark text-light\" id=\"deleteConfirmInput\" placeholder=\"DELETE\" autocomplete=\"off\">\n                            <div class=\"form-text text-muted\">\n                              <?php echo htmlspecialchars($lang['confirmdeletehint'] ?? 'You must type DELETE (all caps).', ENT_QUOTES, 'UTF-8'); ?>\n                            </div>\n                          </div>\n\n                          <div id=\"deleteAccountFeedback\" class=\"text-danger small\" style=\"min-height:1rem;\"></div>\n                        </div>\n\n                        <div class=\"modal-footer\">\n                          <button type=\"button\" class=\"btn btn-outline-light\" data-bs-dismiss=\"modal\">\n                            <?php echo htmlspecialchars($lang['cancel'] ?? 'Cancel', ENT_QUOTES, 'UTF-8'); ?>\n                          </button>\n                          <button type=\"button\" class=\"btn btn-danger\" id=\"confirmDeleteBtn\" disabled>\n                            <i class=\"bi bi-exclamation-triangle\"></i> <?php echo htmlspecialchars($lang['confirmdelete'] ?? 'Confirm Delete', ENT_QUOTES, 'UTF-8'); ?>\n                          </button>\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n\n                </div>\n              </div>\n            </form>\n          </div>\n        </div>\n      </div>\n\n      <?php require_once('theme/' . $default_theme . '/sidebar.php'); ?>\n    </div>\n  </div>\n</div>\n\n<script>\ndocument.addEventListener('DOMContentLoaded', function() {\n  // Optional: Toggle password visibility\n  const toggles = document.querySelectorAll('.password-toggle');\n  toggles.forEach(function(toggle){\n    toggle.addEventListener('click', function(){\n      const input = this.parentElement.querySelector('input');\n      if (!input) return;\n      if (input.type === 'password') {\n        input.type = 'text';\n        this.classList.remove('bi-key', 'bi-pencil', 'bi-check');\n        this.classList.add('bi-eye');\n      } else {\n        input.type = 'password';\n        this.classList.remove('bi-eye');\n        // icon choice based on field\n        if (input.name === 'old_password') this.classList.add('bi-key');\n        else if (input.name === 'password') this.classList.add('bi-pencil');\n        else this.classList.add('bi-check');\n      }\n    });\n  });\n});\n</script>\n\n<script>\n(function(){\n  const input = document.getElementById('deleteConfirmInput');\n  const confirmBtn = document.getElementById('confirmDeleteBtn');\n  const feedback = document.getElementById('deleteAccountFeedback');\n\n  function check() {\n    const ok = (input.value.trim() === 'DELETE');\n    confirmBtn.disabled = !ok;\n    feedback.textContent = '';\n  }\n\n  if (input && confirmBtn) {\n    input.addEventListener('input', check);\n    check();\n\n    confirmBtn.addEventListener('click', function(){\n      confirmBtn.disabled = true;\n      feedback.textContent = '';\n\n      const formData = new FormData();\n      formData.append('csrf_token', <?php echo json_encode($_SESSION['csrf_token'] ?? ''); ?>);\n      formData.append('delete_account', '1');\n      formData.append('ajax', '1');\n\n      fetch(<?php echo json_encode($baseurl . \"profile.php\"); ?>, {\n        method: 'POST',\n        headers: { 'X-Requested-With': 'XMLHttpRequest' },\n        body: formData,\n        credentials: 'same-origin'\n      }).then(r => r.json()).then(data => {\n        if (data && data.ok) {\n          window.location.href = data.redirect || <?php echo json_encode(rtrim($baseurl, '/') . '/accountdeleted.php'); ?>;\n        } else {\n          feedback.textContent = (data && data.error) ? data.error : 'Failed to delete account.';\n          confirmBtn.disabled = false;\n        }\n      }).catch(err => {\n        console.error('delete_account error', err);\n        feedback.textContent = 'Network error. Please try again.';\n        confirmBtn.disabled = false;\n      });\n    });\n  }\n})();\n</script>\n"
  },
  {
    "path": "theme/default/sidebar.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n?>\n<div class=\"col-lg-12 sidebar-container\">\n    <?php if (isset($_SESSION['username'])): ?>\n        <!-- My Pastes -->\n        <div class=\"col-12\">\n            <div class=\"card rounded-3 mb-4\">\n                <div class=\"card-header text-light rounded-top\">\n                    <h6 class=\"mb-0\">Hello <?php echo htmlspecialchars((string) ($_SESSION['username'] ?? ''), ENT_QUOTES, 'UTF-8'); ?>\n                        <small class=\"ms-2\">\n                            <a class=\"text-light text-decoration-none\" href=\"<?php echo htmlspecialchars(\n                                $baseurl . ($mod_rewrite ? 'user/' . urlencode((string) ($_SESSION['username'] ?? '')) : 'user.php?user=' . urlencode((string) ($_SESSION['username'] ?? ''))),\n                                ENT_QUOTES,\n                                'UTF-8'\n                            ); ?>\" target=\"_self\"><?php echo htmlspecialchars($lang['mypastes'] ?? 'My Pastes', ENT_QUOTES, 'UTF-8'); ?></a>\n                        </small>\n                    </h6>\n                </div>\n\n                <!-- // ajax message; \"paste deleted\" -->\n                <div id=\"sidebar-msg\" class=\"px-3 py-2\" style=\"display:none;\"></div>\n\n                <div class=\"card-body p-0\">\n                    <div class=\"list-group list-group-flush\" id=\"sidebar-paste-list\">\n                        <?php\n                        $username = (string) ($_SESSION['username'] ?? '');\n                        if ($username === '') {\n                            echo '<p class=\"p-4 text-muted\">Error: User not logged in.</p>';\n                        } else {\n                            try {\n                                $pastes = getUserRecent($pdo, $username, 10);\n                                if (empty($pastes)) {\n                                    echo '<p class=\"p-4 text-muted\">No pastes yet. Create one!</p>';\n                                } else {\n                                    foreach ($pastes as $row) {\n                                        $title = (string) ($row['title'] ?? 'Untitled');\n                                        $p_id  = (string) ($row['id'] ?? '');\n                                        $p_time= (int) ($row['now_time'] ?? 0);\n                                        $p_code= (string) ($row['code'] ?? 'Unknown');\n                                        $p_time_ago = conTime($p_time);\n                                        $title = truncate($title, 6, 15);\n                                        // controller delete link (same for rewrite)\n                                        $p_delete_link = \"user.php?del&user=\" . urlencode($username) . \"&id=\" . urlencode($p_id);\n                                        ?>\n                                        <div class=\"list-group-item d-flex justify-content-between align-items-center bg-dark text-light\"\n                                             id=\"paste-item-<?php echo htmlspecialchars($p_id, ENT_QUOTES, 'UTF-8'); ?>\">\n                                            <a href=\"<?php echo htmlspecialchars(\n                                                $baseurl . ($mod_rewrite ? $p_id : 'paste.php?id=' . $p_id),\n                                                ENT_QUOTES,\n                                                'UTF-8'\n                                            ); ?>\" title=\"<?php echo htmlspecialchars($title, ENT_QUOTES, 'UTF-8'); ?>\" class=\"text-light fw-medium text-decoration-none\">\n                                                <?php echo htmlspecialchars(ucfirst($title), ENT_QUOTES, 'UTF-8'); ?>\n                                            </a>\n                                            <div class=\"ms-2\">\n                                                <a class=\"btn btn-sm btn-outline-danger me-1 py-0 px-1 js-del\"\n                                                   href=\"<?php echo htmlspecialchars($baseurl . $p_delete_link, ENT_QUOTES, 'UTF-8'); ?>\"\n                                                   data-paste-id=\"<?php echo htmlspecialchars($p_id, ENT_QUOTES, 'UTF-8'); ?>\"\n                                                   title=\"Delete <?php echo htmlspecialchars($title, ENT_QUOTES, 'UTF-8'); ?>\">\n                                                    <i class=\"bi bi-trash\" aria-hidden=\"true\"></i>\n                                                </a>\n                                                <button type=\"button\" class=\"btn btn-outline-light btn-sm popover-clock py-0 px-1\"\n                                                        data-bs-container=\"body\" data-bs-toggle=\"popover\" data-bs-placement=\"left\"\n                                                        data-bs-content=\"Posted: <?php echo htmlspecialchars($p_time_ago, ENT_QUOTES, 'UTF-8'); ?> ago.<br>Syntax: <?php echo htmlspecialchars(strtoupper($p_code), ENT_QUOTES, 'UTF-8'); ?>\"\n                                                        title=\"Paste Details\">\n                                                    <i class=\"bi bi-clock\"></i>\n                                                </button>\n                                            </div>\n                                        </div>\n                                        <?php\n                                    }\n                                }\n                            } catch (Exception $e) {\n                                echo '<p class=\"p-4 text-danger\">Error fetching pastes: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</p>';\n                            }\n                        }\n                        ?>\n                    </div>\n                </div>\n            </div>\n        </div>\n    <?php elseif (!isset($privatesite) || $privatesite !== 'on'): ?>\n        <!-- Guest message -->\n        <div class=\"col-12\">\n            <div class=\"card mb-4\">\n                <div class=\"card-body rounded-1 border border-light\">\n                    <h6><?php echo htmlspecialchars($lang['guestmsgtitle'] ?? 'Guest', ENT_QUOTES, 'UTF-8'); ?></h6>\n                    <p class=\"p-1 text-muted\"><?php echo $lang['guestmsgbody'] ?? 'Sign in to manage your pastes.'; ?></p>\n                </div>\n            </div>\n        </div>\n    <?php endif; ?>\n\n    <?php if (!isset($privatesite) || $privatesite !== 'on'): ?>\n        <!-- Recent Public Pastes -->\n        <div class=\"col-12\">\n            <div class=\"card mb-4\">\n                <div class=\"card-header rounded-top\">\n                    <?php echo htmlspecialchars($lang['recentpastes'] ?? 'Recent Pastes', ENT_QUOTES, 'UTF-8'); ?>\n                </div>\n                <div class=\"card-body p-0\">\n                    <div class=\"list-group list-group-flush\">\n                        <?php\n                        try {\n                            $pastes = getRecent($pdo, 10);\n                            if (empty($pastes)) {\n                                echo '<p class=\"p-4 text-muted\">' . htmlspecialchars($lang['emptypastebin'] ?? 'No pastes found', ENT_QUOTES, 'UTF-8') . '</p>';\n                            } else {\n                                foreach ($pastes as $row) {\n                                    $title = (string) ($row['title'] ?? 'Untitled');\n                                    $p_id  = (string) ($row['id'] ?? '');\n                                    $p_time= (int) ($row['now_time'] ?? 0);\n                                    $p_code= (string) ($row['code'] ?? 'Unknown');\n                                    $p_time_ago = conTime($p_time);\n                                    $title = truncate($title, 6, 15);\n                                    ?>\n                                    <div class=\"list-group-item d-flex justify-content-between align-items-center text-light\">\n                                        <a href=\"<?php echo htmlspecialchars(\n                                            $baseurl . ($mod_rewrite ? $p_id : 'paste.php?id=' . $p_id),\n                                            ENT_QUOTES,\n                                            'UTF-8'\n                                        ); ?>\" title=\"<?php echo htmlspecialchars($title, ENT_QUOTES, 'UTF-8'); ?>\" class=\"text-light fw-medium text-decoration-none\">\n                                            <?php echo htmlspecialchars(ucfirst($title), ENT_QUOTES, 'UTF-8'); ?>\n                                        </a>\n                                        <div class=\"ms-2\">\n                                            <button type=\"button\" class=\"btn btn-outline-light btn-sm popover-clock py-0 px-1\"\n                                                    data-bs-container=\"body\" data-bs-toggle=\"popover\" data-bs-placement=\"left\"\n                                                    data-bs-content=\"Posted: <?php echo htmlspecialchars($p_time_ago, ENT_QUOTES, 'UTF-8'); ?> ago.<br>Syntax: <?php echo htmlspecialchars(strtoupper($p_code), ENT_QUOTES, 'UTF-8'); ?>\"\n                                                    title=\"Paste Details\">\n                                                <i class=\"bi bi-clock\"></i>\n                                            </button>\n                                        </div>\n                                    </div>\n                                    <?php\n                                }\n                            }\n                        } catch (Exception $e) {\n                            echo '<p class=\"text-danger\">Error fetching recent pastes: ' . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . '</p>';\n                        }\n                        ?>\n                    </div>\n                </div>\n            </div>\n        </div>\n    <?php endif; ?>\n\n    <?php if (!isset($_SESSION['username']) && (!isset($privatesite) || $privatesite !== 'on')): ?>\n        <div class=\"col-12 text-center mt-3\">\n            <?php echo $ads_1 ?? ''; ?>\n        </div>\n    <?php endif; ?>\n</div>\n\n<script>\n// // popovers\ndocument.addEventListener('DOMContentLoaded', function() {\n    var popoverTriggerList = [].slice.call(document.querySelectorAll('.popover-clock'));\n    var popoverList = popoverTriggerList.map(function (el) {\n        return new bootstrap.Popover(el, {\n            trigger: 'click',\n            container: 'body',\n            placement: 'left',\n            html: true,\n            customClass: 'touch-popover',\n            content: el.getAttribute('data-bs-content'),\n            title: el.getAttribute('title')\n        });\n    });\n    document.addEventListener('click', function (e) {\n        popoverList.forEach(function (p) {\n            if (!p._element.contains(e.target) && p._isShown && p._isShown()) p.hide();\n        });\n    });\n    popoverTriggerList.forEach(function (el) {\n        el.addEventListener('touchstart', function (e) {\n            e.preventDefault();\n            var p = bootstrap.Popover.getInstance(el);\n            if (p && p._isShown && p._isShown()) p.hide(); else if (p) p.show();\n        }, { passive: false });\n    });\n});\n\n// // ajax delete\n(function(){\n    function msg(type, text) {\n        var box = document.getElementById('sidebar-msg');\n        if (!box) return;\n        box.style.display = 'block';\n        box.className = 'px-3 py-2 ' + (type === 'ok' ? 'text-bg-success' : 'text-bg-danger');\n        box.textContent = text;\n        setTimeout(function(){ box.style.display = 'none'; }, 2500);\n    }\n    function findItem(el) {\n        while (el && el !== document) {\n            if (el.classList && el.classList.contains('list-group-item')) return el;\n            el = el.parentNode;\n        }\n        return null;\n    }\n    document.addEventListener('click', function(e){\n        var t = e.target;\n        while (t && t !== document && !(t.tagName === 'A' && t.classList.contains('js-del'))) t = t.parentNode;\n        if (!t || t === document) return;\n        e.preventDefault();\n\n        var href = t.getAttribute('href');\n        var pid  = t.getAttribute('data-paste-id') || '';\n        if (!href || !pid) { window.location.href = href; return; }\n\n        if (!confirm('Delete this paste? This cannot be undone.')) return;\n\n        var row = findItem(t);\n        var old = t.innerHTML;\n        t.classList.add('disabled');\n        t.setAttribute('aria-disabled', 'true');\n        t.innerHTML = '<span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>';\n        if (row) row.style.opacity = '0.5';\n\n        var fd = new FormData();\n        fd.set('ajax', '1');\n\n        fetch(href, { method: 'POST', credentials: 'same-origin', body: fd })\n            .then(function(res){ return res.json().catch(function(){ return null; }); })\n            .then(function(data){\n                if (data && typeof data.success !== 'undefined') {\n                    if (data.success) {\n                        if (row) row.remove();\n                        msg('ok', data.message || 'Paste deleted.');\n                        return;\n                    } else {\n                        if (row) row.style.opacity = '';\n                        t.innerHTML = old;\n                        t.classList.remove('disabled');\n                        t.removeAttribute('aria-disabled');\n                        msg('err', data.message || 'Delete failed.');\n                        return;\n                    }\n                }\n                // // non-json: fall back to navigation\n                window.location.href = href;\n            })\n            .catch(function(){\n                window.location.href = href;\n            });\n    });\n})();\n</script>\n"
  },
  {
    "path": "theme/default/user_profile.php",
    "content": "<?php\n/*\n * Paste $v3.1 2025/08/16 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n?>\n\n<div class=\"text-light min-vh-100 py-4\">\n<!-- START CONTAINER -->\n<div class=\"container-xl\">\n  <div class=\"row g-4\">\n    <!-- Start Main Content (Pastes Table & Recent Pastes) -->\n    <div class=\"col-lg-9 order-lg-1\">\n      <!-- My Pastes Card -->\n      <div class=\"card text-light border-0 rounded-3 shadow-sm mb-4\">\n        <div class=\"card-header bg-secondary border-0 rounded-top-3\">\n          <h5 class=\"mb-0\"><?php echo htmlspecialchars($profile_username) . htmlspecialchars($lang['user_public_pastes'] ?? ' Public Pastes'); ?>\n            <?php if (isset($_SESSION['username']) && $_SESSION['username'] == $profile_username) { echo '<small class=\"ms-2 text-muted\">' . htmlspecialchars($lang['mypastestitle'] ?? 'My Pastes') . '</small>'; } ?>\n          </h5>\n          <small class=\"text-muted\"><?php echo htmlspecialchars($lang['membersince'] ?? 'Member since') . ' ' . htmlspecialchars($profile_join_date); ?></small>\n        </div>\n        <div class=\"card-body p-4\">\n          <?php \n          if (isset($_GET['del'])) {\t\n            if (isset($success)) {\n              echo '<div class=\"alert alert-success text-center rounded-3\">' . htmlspecialchars($success) . '</div>'; \n            } elseif (isset($error)) {\n              echo '<div class=\"alert alert-danger text-center rounded-3\">' . htmlspecialchars($error) . '</div>'; \n            }\n          }\n          ?>\n          <div class=\"table-responsive\">\n            <table id=\"archive\" class=\"table table-striped table-hover align-middle\">\n              <thead>\n                <tr>\n                  <th><?php echo htmlspecialchars($lang['pastetitle'] ?? 'Paste Title'); ?></th>\n                  <th><?php echo htmlspecialchars($lang['pastetime'] ?? 'Time'); ?></th>\n                  <?php if (isset($_SESSION['username']) && $_SESSION['username'] == $profile_username) { echo '<th>' . htmlspecialchars($lang['visibility'] ?? 'Visibility') . '</th>'; } ?>\n                  <th><?php echo htmlspecialchars($lang['pasteviews'] ?? 'Views'); ?></th>\n                  <th><?php echo htmlspecialchars($lang['pastesyntax'] ?? 'Syntax'); ?></th>\n                  <?php if (isset($_SESSION['username']) && $_SESSION['username'] == $profile_username) { echo '<th style=\"min-width: 60px;\">' . htmlspecialchars($lang['delete'] ?? 'Delete') . '</th>'; } ?>\n                </tr>\n              </thead>\n              <tbody>\n                <?php\n                $res = getUserPastes($pdo, $profile_username);\n                if (empty($res)) {\n                  $colspan = isset($_SESSION['username']) && $_SESSION['username'] == $profile_username ? 6 : 4;\n                  echo '<tr><td colspan=\"' . $colspan . '\" class=\"text-center text-muted\">' . htmlspecialchars($lang['emptypastebin'] ?? 'No pastes found') . '</td></tr>';\n                } else {\n                  foreach ($res as $row) {\n                    $title = trim($row['title'] ?? 'Untitled');\n                    $p_id = trim($row['id'] ?? '');\n                    $p_code = trim($row['code'] ?? 'text');\n                    $p_date = trim($row['date'] ?? '');\n                    $p_views = (int) ($row['views'] ?? 0);\n                    $p_visible = trim($row['visible'] ?? '0');\n                    switch ($p_visible) {\n                      case '0':\n                        $p_visible = $lang['public'] ?? 'Public';\n                        break;\n                      case '1':\n                        $p_visible = $lang['unlisted'] ?? 'Unlisted';\n                        break;\n                      case '2':\n                        $p_visible = $lang['private'] ?? 'Private';\n                        break;\n                    }\n                    $p_link = ($mod_rewrite == '1') ? \"$p_id\" : \"paste.php?id=$p_id\";\n                    $p_delete_link = ($mod_rewrite == '1') ? \"user.php?del&user=$profile_username&id=$p_id\" : \"user.php?del&user=$profile_username&id=$p_id\";\n                    $title = truncate($title, 20, 50);\n                    \n                    // Guests only see public pastes\n                    if (!isset($_SESSION['token']) || (isset($_SESSION['username']) && $_SESSION['username'] != $profile_username)) {\n                      if ($row['visible'] == '0') {\n                        echo '<tr> \n                          <td><a href=\"' . htmlspecialchars($baseurl . $p_link) . '\" title=\"' . htmlspecialchars($title) . '\" class=\"text-light fw-medium\">' . ucfirst(htmlspecialchars($title)) . '</a></td>    \n                          <td>' . htmlspecialchars($p_date) . '</td>\n                          <td>' . htmlspecialchars($p_views) . '</td>\n                          <td><span class=\"badge bg-primary\">' . htmlspecialchars(strtoupper($p_code)) . '</span></td>\n                        </tr>'; \n                      }\n                    } else {\n                      echo '<tr> \n                        <td><a href=\"' . htmlspecialchars($baseurl . $p_link) . '\" title=\"' . htmlspecialchars($title) . '\" class=\"text-light fw-medium\">' . ucfirst(htmlspecialchars($title)) . '</a></td>    \n                        <td>' . htmlspecialchars($p_date) . '</td>\n                        <td>' . htmlspecialchars($p_visible) . '</td>\n                        <td>' . htmlspecialchars($p_views) . '</td>\n                        <td><span class=\"badge bg-primary\">' . htmlspecialchars(strtoupper($p_code)) . '</span></td>\n                        <td class=\"text-center\"><a href=\"' . htmlspecialchars($baseurl . $p_delete_link) . '\" class=\"btn btn-sm btn-outline-danger\" title=\"Delete ' . htmlspecialchars($title) . '\"><i class=\"bi bi-trash\" aria-hidden=\"true\"></i></a></td>    \n                      </tr>';                   \n                    }\n                  }\n                }\n                ?>\n              </tbody>\n              <tfoot>\n                <tr>\n                  <th><?php echo htmlspecialchars($lang['pastetitle'] ?? 'Paste Title'); ?></th>\n                  <th><?php echo htmlspecialchars($lang['pastetime'] ?? 'Time'); ?></th>\n                  <?php if (isset($_SESSION['username']) && $_SESSION['username'] == $profile_username) { echo '<th>' . htmlspecialchars($lang['visibility'] ?? 'Visibility') . '</th>'; } ?>\n                  <th><?php echo htmlspecialchars($lang['pasteviews'] ?? 'Views'); ?></th>\n                  <th><?php echo htmlspecialchars($lang['pastesyntax'] ?? 'Syntax'); ?></th>\n                  <?php if (isset($_SESSION['username']) && $_SESSION['username'] == $profile_username) { echo '<th>' . htmlspecialchars($lang['delete'] ?? 'Delete') . '</th>'; } ?>\n                </tr>\n              </tfoot>\n            </table>\n          </div>\n        </div>\n      </div>\n      <!-- Recent Pastes Card -->\n      <div class=\"card text-light border-0 rounded-3 shadow-sm\">\n        <div class=\"card-header bg-secondary border-0 rounded-top-3\">\n          <h5 class=\"mb-0\"><?php echo htmlspecialchars($lang['recentpastes'] ?? 'Recent Pastes'); ?></h5>\n        </div>\n        <div class=\"card-body p-4\">\n          <div class=\"table-responsive\">\n            <table id=\"recent-pastes\" class=\"table table-striped table-hover align-middle\">\n              <thead>\n                <tr>\n                  <th><?php echo htmlspecialchars($lang['pastetitle'] ?? 'Paste Title'); ?></th>\n                  <th><?php echo htmlspecialchars($lang['pastetime'] ?? 'Time'); ?></th>\n                  <th><?php echo htmlspecialchars($lang['pastesyntax'] ?? 'Syntax'); ?></th>\n                </tr>\n              </thead>\n              <tbody>\n                <?php\n                try {\n                  $pastes = getRecent($pdo, 10);\n                  if (empty($pastes)) {\n                    echo '<tr><td colspan=\"3\" class=\"text-center text-muted\">' . htmlspecialchars($lang['emptypastebin'] ?? 'No pastes found') . '</td></tr>';\n                  } else {\n                    foreach ($pastes as $row) {\n                      $title = (string) ($row['title'] ?? 'Untitled');\n                      $p_id = (string) ($row['id'] ?? '');\n                      $p_date = (string) ($row['date'] ?? '');\n                      $p_time = (int) ($row['now_time'] ?? 0);\n                      $p_code = (string) ($row['code'] ?? 'Unknown');\n                      $p_time_ago = conTime($p_time);\n                      $p_link = ($mod_rewrite == '1') ? \"$p_id\" : \"paste.php?id=$p_id\";\n                      $title = truncate($title, 20, 50);\n                      echo '<tr> \n                        <td><a href=\"' . htmlspecialchars($baseurl . $p_link) . '\" title=\"' . htmlspecialchars($title) . '\" class=\"text-light fw-medium\">' . ucfirst(htmlspecialchars($title)) . '</a></td>    \n                        <td>' . htmlspecialchars($p_date) . '</td>\n                        <td><span class=\"badge bg-primary\">' . htmlspecialchars(strtoupper($p_code)) . '</span></td>\n                      </tr>'; \n                    }\n                  }\n                } catch (Exception $e) {\n                  echo '<tr><td colspan=\"3\" class=\"text-center text-danger\">' . htmlspecialchars('Error fetching recent pastes: ' . $e->getMessage()) . '</td></tr>';\n                }\n                ?>\n              </tbody>\n            </table>\n          </div>\n        </div>\n      </div>\n    </div>\n    <!-- Start Sidebar (Welcome & Stats) -->\n    <div class=\"col-lg-3 order-lg-2\">\n      <?php if (isset($_SESSION['username']) && $_SESSION['username'] == $profile_username) { ?>\n      <div class=\"card bg-secondary text-light mb-4 border-0 rounded-3 position-relative welcome-card\">\n        <div class=\"card-body p-3\">\n          <h6 class=\"d-flex align-items-center gap-2 mb-3 text-light\">\n            <i class=\"bi bi-person-circle fs-5\"></i>\n            <?php echo htmlspecialchars($lang['hello'] ?? 'Hello') . ', ' . htmlspecialchars($profile_username); ?>\n          </h6>\n          <p class=\"mb-3 small\"><?php echo htmlspecialchars($lang['profile-message'] ?? 'Manage your pastes here.'); ?></p>\n          <ul class=\"list-group list-group-flush\">\n            <li class=\"list-group-item bg-dark text-light d-flex align-items-center justify-content-between gap-2 py-2\">\n              <div class=\"d-flex align-items-center gap-2\">\n                <i class=\"bi bi-file-code fs-5 text-primary\"></i>\n                <small class=\"text-muted text-uppercase\"><?php echo htmlspecialchars($lang['totalpastes'] ?? 'Total Pastes'); ?></small>\n              </div>\n              <div class=\"fw-bold\"><?php echo htmlspecialchars($profile_total_pastes); ?></div>\n            </li>\n            <li class=\"list-group-item bg-dark text-light d-flex align-items-center justify-content-between gap-2 py-2\">\n              <div class=\"d-flex align-items-center gap-2\">\n                <i class=\"bi bi-globe fs-5 text-primary\"></i>\n                <small class=\"text-muted text-uppercase\"><?php echo htmlspecialchars($lang['profile-total-pub'] ?? 'Public'); ?></small>\n              </div>\n              <div class=\"fw-bold\"><?php echo htmlspecialchars($profile_total_public); ?></div>\n            </li>\n            <li class=\"list-group-item bg-dark text-light d-flex align-items-center justify-content-between gap-2 py-2\">\n              <div class=\"d-flex align-items-center gap-2\">\n                <i class=\"bi bi-eye-slash fs-5 text-primary\"></i>\n                <small class=\"text-muted text-uppercase\"><?php echo htmlspecialchars($lang['profile-total-unl'] ?? 'Unlisted'); ?></small>\n              </div>\n              <div class=\"fw-bold\"><?php echo htmlspecialchars($profile_total_unlisted); ?></div>\n            </li>\n            <li class=\"list-group-item bg-dark text-light d-flex align-items-center justify-content-between gap-2 py-2\">\n              <div class=\"d-flex align-items-center gap-2\">\n                <i class=\"bi bi-lock fs-5 text-primary\"></i>\n                <small class=\"text-muted text-uppercase\"><?php echo htmlspecialchars($lang['profile-total-pri'] ?? 'Private'); ?></small>\n              </div>\n              <div class=\"fw-bold\"><?php echo htmlspecialchars($profile_total_private); ?></div>\n            </li>\n            <li class=\"list-group-item bg-dark text-light d-flex align-items-center justify-content-between gap-2 py-2\">\n              <div class=\"d-flex align-items-center gap-2\">\n                <i class=\"bi bi-bar-chart fs-5 text-primary\"></i>\n                <small class=\"text-muted text-uppercase\"><?php echo htmlspecialchars($lang['profile-total-views'] ?? 'Total Views'); ?></small>\n              </div>\n              <div class=\"fw-bold\"><?php echo htmlspecialchars($profile_total_paste_views); ?></div>\n            </li>\n          </ul>\n        </div>\n      </div>\n      <?php } ?>\n     <?php echo $ads_2 ?? ''; ?>\n    </div>\n    <!-- End Sidebar -->\n  </div>\n</div>\n</div>"
  },
  {
    "path": "theme/default/view.php",
    "content": "<?php\n/*\n * Paste $v3.2 2025/08/21 https://github.com/boxlabss/PASTE\n * demo: https://paste.boxlabs.uk/\n *\n * https://phpaste.sourceforge.io/\n *\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; either version 3\n * of the License, or (at your option) any later version.\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License in LICENCE for more details.\n */\n\n// Calculate paste size based on $op_content\n$paste_size = isset($op_content) ? formatSize(strlen($op_content)) : '0 bytes';\n// highlight.php theme switcher - only if $highlighter = 'highlight' in config.php\n$showThemeSwitcher = (($highlighter ?? 'geshi') === 'highlight') && (($p_code ?? 'text') !== 'markdown');\n$hl_theme_options = [];\n$initialTheme     = null;\n\nif ($showThemeSwitcher) {\n    $candidatesWeb = [\n        'includes/Highlight/styles'\n    ];\n    $stylesRel = null;\n    foreach ($candidatesWeb as $rel) {\n        $abs = __DIR__ . '/../../' . $rel;\n        if (is_dir($abs)) { $stylesRel = $rel; break; }\n    }\n\n    if ($stylesRel) {\n        $stylesAbs = __DIR__ . '/../../' . $stylesRel;\n        // accept both .css and .min.css; prefer unique themes by basename\n        $seen = [];\n        foreach (glob($stylesAbs . '/*.css') ?: [] as $f) {\n            $file = basename($f);\n            $base = preg_replace('~\\.min\\.css$~', '.css', $file);   // normalize\n            $id   = basename($base, '.css');                        // e.g. \"atelier-estuary-dark\"\n            if (isset($seen[$id])) continue;\n            $seen[$id] = true;\n\n            $name = ucwords(str_replace(['-', '_'], ' ', $id));\n            $hl_theme_options[] = [\n                'id'   => $id,\n                'name' => $name,\n                'href' => rtrim($baseurl ?? '/', '/') . '/' . $stylesRel . '/' . $file,\n            ];\n        }\n        usort($hl_theme_options, fn($a,$b) => strnatcasecmp($a['name'], $b['name']));\n    }\n\n\t/*\n\t* if highlighter.php is enabled - \n\t* bring the stylesheets from includes/Highlighter/styles \n\t* https://github.com/scrivo/highlight.php/tree/master/src/Highlight/styles\n\t* we can use \"?id=1&theme=dracula\" OR \"?id=1&theme=atelier estuary dark\" OR \"?id=1&theme=atelier-estuary-dark\"\n\t*/\n    if (isset($_GET['theme'])) {\n        $g = (string) $_GET['theme'];\n        $g = strtolower($g);\n        $g = str_replace(['+', ' '], '-', $g);\n        $g = str_replace('_', '-', $g);\n        $g = preg_replace('~-+~', '-', $g);\n        $g = preg_replace('~\\.css$~', '', $g);\n        $g = preg_replace('~[^a-z0-9.-]~', '', $g);\n        $initialTheme = $g;\n    }\n}\n\n// Main theme below\n?>\n\n<!-- Content -->\n<div class=\"container-xl my-4\">\n    <div class=\"row\">\n        <?php if (isset($privatesite) && $privatesite === \"on\"): ?>\n            <!-- Private site: Main content full width, sidebar below -->\n            <div class=\"col-lg-12\">\n                <?php if (!isset($_SESSION['username'])): ?>\n                    <div class=\"card\">\n                        <div class=\"card-body\">\n                            <div class=\"alert alert-warning\">\n                                <?php echo htmlspecialchars($lang['login_required'] ?? 'You must be logged in to view this paste.', ENT_QUOTES, 'UTF-8'); ?>\n                                <a href=\"<?php echo htmlspecialchars($baseurl . '/login.php', ENT_QUOTES, 'UTF-8'); ?>\" class=\"btn btn-primary mt-2\">Login</a>\n                            </div>\n                        </div>\n                    </div>\n                <?php else: ?>\n                    <div class=\"card\">\n                        <div class=\"card-header d-flex justify-content-between align-items-center flex-wrap\">\n                            <!-- Paste Info: Title, Syntax, Author, Views, Size, and Date -->\n                            <div class=\"paste-info\">\n                                <h1 class=\"h3 mb-2\"><?php echo ucfirst(htmlspecialchars($p_title ?? 'Untitled')); ?></h1>\n                                <div class=\"meta d-flex flex-wrap gap-2 text-muted small align-items-center\">\n                                    <span class=\"badge bg-primary\"><?php echo htmlspecialchars(strtoupper($p_code ?? 'TEXT')); ?></span>\n                                    <span>\n                                        <?php \n                                        $p_member_display = $p_member ?? 'Guest';\n                                        if ($p_member_display === 'Guest') {\n                                            echo 'Guest';\n                                        } else {\n                                            $user_link = $mod_rewrite ?? false \n                                                ? htmlspecialchars($baseurl . 'user/' . $p_member_display) \n                                                : htmlspecialchars($baseurl . 'user.php?user=' . $p_member_display);\n                                            echo '<a href=\"' . $user_link . '\" class=\"text-decoration-none\">' . htmlspecialchars($p_member_display) . '</a>';\n                                        }\n                                        ?>\n                                    </span>\n                                    <span><i class=\"bi bi-eye me-1\"></i><?php echo htmlspecialchars((string) ($p_views ?? 0)); ?> <?php echo htmlspecialchars($lang['views'] ?? 'Views'); ?></span>\n                                    <span>Size: <?php echo htmlspecialchars($paste_size); ?></span>\n\t\t\t\t\t\t\t\t\t<span>Posted on: <?php echo htmlspecialchars($p_date ? date('M j, y @ g:i A', strtotime($p_date)) : date('M j, Y, g:i A')); ?></span>\n                                </div>\n                            </div>\n                            <!-- Paste Actions: Buttons -->\n\t\t\t\t\t\t\t<div class=\"btn-group btn-group-sm ms-auto\" role=\"group\" aria-label=\"Paste actions\">\n\t\t\t\t\t\t\t  <?php if (!empty($showThemeSwitcher) && !empty($hl_theme_options)): ?>\n\t\t\t\t\t\t\t\t<select id=\"hljs-theme-select\"\n\t\t\t\t\t\t\t\t\t\tclass=\"form-select form-select-sm btn-select order-first me-0\"\n\t\t\t\t\t\t\t\t\t\ttitle=\"Code Theme\">\n\t\t\t\t\t\t\t\t  <?php foreach ($hl_theme_options as $opt): ?>\n\t\t\t\t\t\t\t\t\t<option value=\"<?php echo htmlspecialchars($opt['id']); ?>\">\n\t\t\t\t\t\t\t\t\t  <?php echo htmlspecialchars($opt['name']); ?>\n\t\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t\t  <?php endforeach; ?>\n\t\t\t\t\t\t\t\t</select>\n\n\t\t\t\t\t\t\t  <?php endif; ?>  <!-- close the theme-switcher if -->\n                                <?php if (($p_code ?? 'text') !== \"markdown\"): ?>\n                                    <button type=\"button\" class=\"btn btn-outline-secondary toggle-line-numbers\" title=\"Toggle Line Numbers\" onclick=\"togglev()\">\n                                        <i class=\"bi bi-list-ol\"></i>\n                                    </button>\n                                <?php endif; ?>\n                                <button type=\"button\" class=\"btn btn-outline-secondary toggle-fullscreen\" title=\"Full Screen\" onclick=\"toggleFullScreen()\">\n                                    <i class=\"bi bi-arrows-fullscreen\"></i>\n                                </button>\n                                <button type=\"button\" class=\"btn btn-outline-secondary copy-clipboard\" title=\"Copy to Clipboard\" onclick=\"copyToClipboard()\">\n                                    <i class=\"bi bi-clipboard\"></i>\n                                </button>\n                                <?php\n                                $embed_url = getEmbedUrl($paste_id ?? '', $mod_rewrite ?? false, $baseurl ?? '');\n                                $embed_code = $paste_id ? '<iframe src=\"' . htmlspecialchars($embed_url, ENT_QUOTES, 'UTF-8') . '\" width=\"100%\" height=\"400px\" frameborder=\"0\" allowfullscreen></iframe>' : '';\n                                ?>\n                                <button type=\"button\" class=\"btn btn-outline-secondary embed-tool\" title=\"Embed Paste\" onclick=\"showEmbedCode('<?php echo addslashes(htmlspecialchars($embed_code, ENT_QUOTES, 'UTF-8')); ?>')\">\n                                    <i class=\"bi bi-code-square\"></i>\n                                </button>\n                                <a href=\"<?php echo htmlspecialchars($p_raw ?? ($baseurl . '/raw.php?id=' . ($paste_id ?? ''))); ?>\" class=\"btn btn-outline-secondary\" title=\"Raw Paste\">\n                                    <i class=\"bi bi-file-text\"></i>\n                                </a>\n                                <a href=\"<?php echo htmlspecialchars($p_download ?? ($baseurl . '/download.php?id=' . ($paste_id ?? ''))); ?>\" class=\"btn btn-outline-secondary\" title=\"Download\">\n                                    <i class=\"bi bi-file-arrow-down\"></i>\n                                </a>\n                            </div>\n                            <div id=\"notification\" class=\"notification\"></div>\n                        </div>\n                        <div class=\"card-body\">\n                            <?php if (isset($error)): ?>\n                                <div class=\"alert alert-danger\"><?php echo htmlspecialchars($error, ENT_QUOTES, 'UTF-8'); ?></div>\n                            <?php else: ?>\n                                <div class=\"code-content\" id=\"code-content\"><?php echo $p_content ?? ''; ?></div>\n                            <?php endif; ?>\n                            <div class=\"mb-3 position-relative\">\n                                <p><?php echo htmlspecialchars($lang['rawpaste'] ?? 'Raw Paste'); ?></p>\n                                <textarea class=\"form-control\" rows=\"15\" id=\"code\" readonly><?php echo htmlspecialchars($op_content ?? '', ENT_QUOTES, 'UTF-8'); ?></textarea>\n                                <div id=\"line-number-tooltip\" class=\"line-number-tooltip\"></div>\n                            </div>\n                            <div class=\"btn-group\" role=\"group\" aria-label=\"Fork and Edit actions\">\n                                <?php if (!isset($_SESSION['username']) && (!isset($privatesite) || $privatesite != \"on\")): ?>\n                                    <a href=\"#\" class=\"btn btn-outline-secondary\" data-bs-toggle=\"modal\" data-bs-target=\"#signin\" title=\"Login or Register to fork this paste\">\n                                        <i class=\"bi bi-git\"></i> Fork\n                                    </a>\n                                    <a href=\"#\" class=\"btn btn-outline-secondary\" data-bs-toggle=\"modal\" data-bs-target=\"#signin\" title=\"Login or Register to edit this paste\">\n                                        <i class=\"bi bi-pencil\"></i> Edit\n                                    </a>\n                                <?php endif; ?>\n                            </div>\n                            <?php if (isset($_SESSION['username'])): ?>\n                                <!-- Paste Edit/Fork Form -->\n                                <div class=\"mt-3\">\n                                    <div class=\"card\">\n                                        <div class=\"card-header\"><?php echo htmlspecialchars($lang['modpaste'] ?? 'Modify Paste'); ?></div>\n                                        <div class=\"card-body\">\n                                            <form class=\"form-horizontal\" name=\"mainForm\" action=\"index.php\" method=\"POST\">\n                                                <div class=\"row mb-3 g-3\">\n                                                    <div class=\"col-sm-4\">\n                                                        <div class=\"input-group\">\n                                                            <span class=\"input-group-text\"><i class=\"bi bi-fonts\"></i></span>\n                                                            <input type=\"text\" class=\"form-control\" name=\"title\" placeholder=\"<?php echo htmlspecialchars($lang['pastetitle'] ?? 'Paste Title'); ?>\" value=\"<?php echo htmlspecialchars(ucfirst($p_title ?? 'Untitled')); ?>\">\n                                                        </div>\n                                                    </div>\n                                                    <div class=\"col-sm-4\">\n                                                        <select class=\"form-select\" name=\"format\">\n                                                            <?php \n                                                            $geshiformats = $geshiformats ?? [];\n                                                            $popular_formats = $popular_formats ?? [];\n                                                            foreach ($geshiformats as $code => $name) {\n                                                                if (in_array($code, $popular_formats)) {\n                                                                    $sel = ($p_code ?? 'text') == $code ? 'selected' : '';\n                                                                    echo '<option ' . $sel . ' value=\"' . htmlspecialchars($code) . '\">' . htmlspecialchars($name) . '</option>';\n                                                                }\n                                                            }\n                                                            echo '<option value=\"text\">-------------------------------------</option>';\n                                                            foreach ($geshiformats as $code => $name) {\n                                                                if (!in_array($code, $popular_formats)) {\n                                                                    $sel = ($p_code ?? 'text') == $code ? 'selected' : '';\n                                                                    echo '<option ' . $sel . ' value=\"' . htmlspecialchars($code) . '\">' . htmlspecialchars($name) . '</option>';\n                                                                }\n                                                            }\n                                                            ?>\n                                                        </select>\n                                                    </div>\n                                                    <div class=\"col-sm-2 ms-auto\">\n                                                        <a class=\"btn btn-secondary highlight-line\" href=\"#\" title=\"Highlight selected lines\"><i class=\"bi bi-text-indent-left\"></i> Highlight</a>\n                                                    </div>\n                                                </div>\n                                                <div class=\"mb-3\">\n                                                    <textarea class=\"form-control\" rows=\"15\" id=\"edit-code\" name=\"paste_data\" placeholder=\"helloworld\"><?php echo htmlspecialchars($op_content ?? '', ENT_QUOTES, 'UTF-8'); ?></textarea>\n                                                </div>\n                                                <div class=\"row mb-3\">\n                                                    <label class=\"col-sm-2 col-form-label\"><?php echo htmlspecialchars($lang['expiration'] ?? 'Expiration'); ?></label>\n                                                    <div class=\"col-sm-10\">\n                                                        <select class=\"form-select\" name=\"paste_expire_date\">\n                                                            <option value=\"N\" <?php echo ($p_expire_date ?? 'N') == \"N\" ? 'selected' : ''; ?>>Never</option>\n                                                            <option value=\"self\" <?php echo ($p_expire_date ?? 'N') == \"self\" ? 'selected' : ''; ?>>View Once</option>\n                                                            <option value=\"10M\" <?php echo ($p_expire_date ?? 'N') == \"10M\" ? 'selected' : ''; ?>>10 Minutes</option>\n                                                            <option value=\"1H\" <?php echo ($p_expire_date ?? 'N') == \"1H\" ? 'selected' : ''; ?>>1 Hour</option>\n                                                            <option value=\"1D\" <?php echo ($p_expire_date ?? 'N') == \"1D\" ? 'selected' : ''; ?>>1 Day</option>\n                                                            <option value=\"1W\" <?php echo ($p_expire_date ?? 'N') == \"1W\" ? 'selected' : ''; ?>>1 Week</option>\n                                                            <option value=\"2W\" <?php echo ($p_expire_date ?? 'N') == \"2W\" ? 'selected' : ''; ?>>2 Weeks</option>\n                                                            <option value=\"1M\" <?php echo ($p_expire_date ?? 'N') == \"1M\" ? 'selected' : ''; ?>>1 Month</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div class=\"row mb-3\">\n                                                    <label class=\"col-sm-2 col-form-label\"><?php echo htmlspecialchars($lang['visibility'] ?? 'Visibility'); ?></label>\n                                                    <div class=\"col-sm-10\">\n                                                        <select class=\"form-select\" name=\"visibility\">\n                                                            <option value=\"0\" <?php echo ($p_visible ?? '0') == \"0\" ? 'selected' : ''; ?>>Public</option>\n                                                            <option value=\"1\" <?php echo ($p_visible ?? '0') == \"1\" ? 'selected' : ''; ?>>Unlisted</option>\n                                                            <option value=\"2\" <?php echo ($p_visible ?? '0') == \"2\" ? 'selected' : ''; ?>>Private</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div class=\"mb-3\">\n                                                    <div class=\"input-group\">\n                                                        <span class=\"input-group-text\"><i class=\"bi bi-lock\"></i></span>\n                                                        <input type=\"text\" class=\"form-control\" name=\"pass\" id=\"pass\" placeholder=\"<?php echo htmlspecialchars($lang['pwopt'] ?? 'Optional Password'); ?>\">\n                                                    </div>\n                                                </div>\n                                                <div class=\"d-grid gap-2\">\n                                                    <input type=\"hidden\" name=\"paste_id\" value=\"<?php echo htmlspecialchars($paste_id ?? ''); ?>\" />\n                                                    <?php if (isset($_SESSION['username']) && $_SESSION['username'] == ($p_member ?? 'Guest')): ?>\n                                                        <input class=\"btn btn-primary paste-button\" type=\"submit\" name=\"edit\" id=\"edit\" value=\"<?php echo htmlspecialchars($lang['editpaste'] ?? 'Edit Paste'); ?>\" />\n                                                    <?php endif; ?>\n                                                    <input class=\"btn btn-primary paste-button\" type=\"submit\" name=\"submit\" id=\"submit\" value=\"<?php echo htmlspecialchars($lang['forkpaste'] ?? 'Fork Paste'); ?>\" />\n                                                </div>\n                                            </form>\n                                        </div>\n                                    </div>\n                                </div>\n                            <?php endif; ?>\n                        </div>\n                        <!-- Full Screen Modal -->\n                        <div class=\"modal fade\" id=\"fullscreenModal\" tabindex=\"-1\" aria-labelledby=\"fullscreenModalLabel\" aria-hidden=\"true\">\n                            <div class=\"modal-dialog modal-fullscreen\">\n                                <div class=\"modal-content\">\n                                    <div class=\"modal-header\">\n                                        <h5 class=\"modal-title\" id=\"fullscreenModalLabel\"><?php echo htmlspecialchars($p_title ?? 'Untitled'); ?></h5>\n                                        <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n                                    </div>\n                                    <div class=\"modal-body\">\n                                        <div class=\"code-content\" id=\"fullscreen-code-content\"><?php echo $p_content ?? ''; ?></div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                <?php endif; ?>\n            </div>\n            <div class=\"sidebar-below<?php echo (isset($privatesite) && $privatesite === 'on') ? ' sidebar-below' : ''; ?>\">\n                <?php require_once('theme/' . ($default_theme ?? 'default') . '/sidebar.php'); ?>\n            </div>\n        <?php else: ?>\n            <!-- Non-private site: Main content and sidebar side by side -->\n            <div class=\"col-lg-10\">\n                <div class=\"card\">\n                    <div class=\"card-header d-flex justify-content-between align-items-center flex-wrap\">\n                        <!-- Paste Info: Title, Syntax, Author, Views, Size, and Date -->\n                        <div class=\"paste-info\">\n                            <h1 class=\"h3 mb-2\"><?php echo ucfirst(htmlspecialchars($p_title ?? 'Untitled')); ?></h1>\n                            <div class=\"meta d-flex flex-wrap gap-2 text-muted small align-items-center\">\n                                <span class=\"badge bg-primary\"><?php echo htmlspecialchars(strtoupper($p_code ?? 'TEXT')); ?></span>\n                                <span>\n                                    <?php \n                                    $p_member_display = $p_member ?? 'Guest';\n                                    if ($p_member_display === 'Guest') {\n                                        echo 'Guest';\n                                    } else {\n                                        $user_link = $mod_rewrite ?? false \n                                            ? htmlspecialchars($baseurl . 'user/' . $p_member_display) \n                                            : htmlspecialchars($baseurl . 'user.php?user=' . $p_member_display);\n                                        echo '<a href=\"' . $user_link . '\" class=\"text-decoration-none\">' . htmlspecialchars($p_member_display) . '</a>';\n                                    }\n                                    ?>\n                                </span>\n                                <span><i class=\"bi bi-eye me-1\"></i><?php echo htmlspecialchars((string) ($p_views ?? 0)); ?> <?php echo htmlspecialchars($lang['views'] ?? 'Views'); ?></span>\n                                <span>Size: <?php echo htmlspecialchars($paste_size); ?></span>\n                                <span>Posted on: <?php echo htmlspecialchars($p_date ? date('M j, y @ g:i A', strtotime($p_date)) : date('M j, Y, g:i A')); ?></span>\n                            </div>\n                        </div>\n                        <!-- Paste Actions: Buttons -->\n\t\t\t\t\t\t<div class=\"btn-group btn-group-sm ms-auto\" role=\"group\" aria-label=\"Paste actions\">\n\t\t\t\t\t\t  <?php if (!empty($showThemeSwitcher) && !empty($hl_theme_options)): ?>\n\t\t\t\t\t\t\t<select id=\"hljs-theme-select\"\n\t\t\t\t\t\t\t\t\tclass=\"form-select form-select-sm btn-select order-first me-0\"\n\t\t\t\t\t\t\t\t\ttitle=\"Code Theme\">\n\t\t\t\t\t\t\t  <?php foreach ($hl_theme_options as $opt): ?>\n\t\t\t\t\t\t\t\t<option value=\"<?php echo htmlspecialchars($opt['id']); ?>\">\n\t\t\t\t\t\t\t\t  <?php echo htmlspecialchars($opt['name']); ?>\n\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t  <?php endforeach; ?>\n\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t<?php endif; ?>  <!-- close the theme-switcher if -->\n                            <?php if (($p_code ?? 'text') !== \"markdown\"): ?>\n                                <button type=\"button\" class=\"btn btn-outline-secondary toggle-line-numbers\" title=\"Toggle Line Numbers\" onclick=\"togglev()\">\n                                    <i class=\"bi bi-list-ol\"></i>\n                                </button>\n                            <?php endif; ?>\n                            <button type=\"button\" class=\"btn btn-outline-secondary toggle-fullscreen\" title=\"Full Screen\" onclick=\"toggleFullScreen()\">\n                                <i class=\"bi bi-arrows-fullscreen\"></i>\n                            </button>\n                            <button type=\"button\" class=\"btn btn-outline-secondary copy-clipboard\" title=\"Copy to Clipboard\" onclick=\"copyToClipboard()\">\n                                <i class=\"bi bi-clipboard\"></i>\n                            </button>\n                            <?php\n                            $embed_url = getEmbedUrl($paste_id ?? '', $mod_rewrite ?? false, $baseurl ?? '');\n                            $embed_code = $paste_id ? '<iframe src=\"' . htmlspecialchars($embed_url, ENT_QUOTES, 'UTF-8') . '\" width=\"100%\" height=\"400px\" frameborder=\"0\" allowfullscreen></iframe>' : '';\n                            ?>\n                            <button type=\"button\" class=\"btn btn-outline-secondary embed-tool\" title=\"Embed Paste\" onclick=\"showEmbedCode('<?php echo addslashes(htmlspecialchars($embed_code, ENT_QUOTES, 'UTF-8')); ?>')\">\n                                <i class=\"bi bi-code-square\"></i>\n                            </button>\n                            <a href=\"<?php echo htmlspecialchars($p_raw ?? ($baseurl . '/raw.php?id=' . ($paste_id ?? ''))); ?>\" class=\"btn btn-outline-secondary\" title=\"Raw Paste\">\n                                <i class=\"bi bi-file-text\"></i>\n                            </a>\n                            <a href=\"<?php echo htmlspecialchars($p_download ?? ($baseurl . '/download.php?id=' . ($paste_id ?? ''))); ?>\" class=\"btn btn-outline-secondary\" title=\"Download\">\n                                <i class=\"bi bi-file-arrow-down\"></i>\n                            </a>\n                            <?php if (!isset($_SESSION['username']) && (!isset($privatesite) || $privatesite != \"on\") && $disableguest != \"on\"): ?>\n                                <a href=\"#\" class=\"btn btn-outline-secondary\" data-bs-toggle=\"modal\" data-bs-target=\"#signin\" title=\"Login or Register\">\n                                    <i class=\"bi bi-person\"></i>\n                                </a>\n                            <?php endif; ?>\n                        </div>\n                        <div id=\"notification\" class=\"notification\"></div>\n                    </div>\n                    <div class=\"card-body\">\n                        <?php if (isset($error)): ?>\n                            <div class=\"alert alert-danger\"><?php echo htmlspecialchars($error, ENT_QUOTES, 'UTF-8'); ?></div>\n                        <?php else: ?>\n                            <div class=\"code-content\" id=\"code-content\"><?php echo $p_content ?? ''; ?></div>\n                        <?php endif; ?>\n                        <div class=\"mb-3 position-relative\">\n                            <p><?php echo htmlspecialchars($lang['rawpaste'] ?? 'Raw Paste'); ?></p>\n                            <textarea class=\"form-control\" rows=\"15\" id=\"code\" readonly><?php echo htmlspecialchars($op_content ?? '', ENT_QUOTES, 'UTF-8'); ?></textarea>\n                            <div id=\"line-number-tooltip\" class=\"line-number-tooltip\"></div>\n                        </div>\n                        <?php if ($disableguest != \"on\" || isset($_SESSION['username'])): ?>\n                            <div class=\"btn-group\" role=\"group\" aria-label=\"Fork and Edit actions\">\n                                <?php if (!isset($_SESSION['username']) && (!isset($privatesite) || $privatesite != \"on\")): ?>\n                                    <a href=\"#\" class=\"btn btn-outline-secondary\" data-bs-toggle=\"modal\" data-bs-target=\"#signin\" title=\"Login or Register to fork this paste\">\n                                        <i class=\"bi bi-git\"></i> Fork\n                                    </a>\n                                    <a href=\"#\" class=\"btn btn-outline-secondary\" data-bs-toggle=\"modal\" data-bs-target=\"#signin\" title=\"Login or Register to edit this paste\">\n                                        <i class=\"bi bi-pencil\"></i> Edit\n                                    </a>\n                                <?php endif; ?>\n                            </div>\n                        <?php endif; ?>\n                        <?php if (isset($_SESSION['username'])): ?>\n                            <!-- Paste Edit/Fork Form -->\n                            <div class=\"mt-3\">\n                                <div class=\"card\">\n                                    <div class=\"card-header\"><?php echo htmlspecialchars($lang['modpaste'] ?? 'Modify Paste'); ?></div>\n                                    <div class=\"card-body\">\n                                        <form class=\"form-horizontal\" name=\"mainForm\" action=\"index.php\" method=\"POST\">\n                                            <div class=\"row mb-3 g-3\">\n                                                <div class=\"col-sm-4\">\n                                                    <div class=\"input-group\">\n                                                        <span class=\"input-group-text\"><i class=\"bi bi-fonts\"></i></span>\n                                                        <input type=\"text\" class=\"form-control\" name=\"title\" placeholder=\"<?php echo htmlspecialchars($lang['pastetitle'] ?? 'Paste Title'); ?>\" value=\"<?php echo htmlspecialchars(ucfirst($p_title ?? 'Untitled')); ?>\">\n                                                    </div>\n                                                </div>\n                                                <div class=\"col-sm-4\">\n                                                    <select class=\"form-select\" name=\"format\">\n                                                        <?php \n                                                        $geshiformats = $geshiformats ?? [];\n                                                        $popular_formats = $popular_formats ?? [];\n                                                        foreach ($geshiformats as $code => $name) {\n                                                            if (in_array($code, $popular_formats)) {\n                                                                $sel = ($p_code ?? 'text') == $code ? 'selected' : '';\n                                                                echo '<option ' . $sel . ' value=\"' . htmlspecialchars($code) . '\">' . htmlspecialchars($name) . '</option>';\n                                                            }\n                                                        }\n                                                        echo '<option value=\"text\">-------------------------------------</option>';\n                                                        foreach ($geshiformats as $code => $name) {\n                                                            if (!in_array($code, $popular_formats)) {\n                                                                $sel = ($p_code ?? 'text') == $code ? 'selected' : '';\n                                                                echo '<option ' . $sel . ' value=\"' . htmlspecialchars($code) . '\">' . htmlspecialchars($name) . '</option>';\n                                                            }\n                                                        }\n                                                        ?>\n                                                    </select>\n                                                </div>\n                                                <div class=\"col-sm-2 ms-auto\">\n                                                    <a class=\"btn btn-secondary highlight-line\" href=\"#\" title=\"Highlight selected lines\"><i class=\"bi bi-text-indent-left\"></i> Highlight</a>\n                                                </div>\n                                            </div>\n                                            <div class=\"mb-3\">\n                                                <textarea class=\"form-control\" rows=\"15\" id=\"edit-code\" name=\"paste_data\" placeholder=\"helloworld\"><?php echo htmlspecialchars($op_content ?? '', ENT_QUOTES, 'UTF-8'); ?></textarea>\n                                            </div>\n                                            <div class=\"row mb-3\">\n                                                <label class=\"col-sm-2 col-form-label\"><?php echo htmlspecialchars($lang['expiration'] ?? 'Expiration'); ?></label>\n                                                <div class=\"col-sm-10\">\n                                                    <select class=\"form-select\" name=\"paste_expire_date\">\n                                                        <option value=\"N\" <?php echo ($p_expire_date ?? 'N') == \"N\" ? 'selected' : ''; ?>>Never</option>\n                                                        <option value=\"self\" <?php echo ($p_expire_date ?? 'N') == \"self\" ? 'selected' : ''; ?>>View Once</option>\n                                                        <option value=\"10M\" <?php echo ($p_expire_date ?? 'N') == \"10M\" ? 'selected' : ''; ?>>10 Minutes</option>\n                                                        <option value=\"1H\" <?php echo ($p_expire_date ?? 'N') == \"1H\" ? 'selected' : ''; ?>>1 Hour</option>\n                                                        <option value=\"1D\" <?php echo ($p_expire_date ?? 'N') == \"1D\" ? 'selected' : ''; ?>>1 Day</option>\n                                                        <option value=\"1W\" <?php echo ($p_expire_date ?? 'N') == \"1W\" ? 'selected' : ''; ?>>1 Week</option>\n                                                        <option value=\"2W\" <?php echo ($p_expire_date ?? 'N') == \"2W\" ? 'selected' : ''; ?>>2 Weeks</option>\n                                                        <option value=\"1M\" <?php echo ($p_expire_date ?? 'N') == \"1M\" ? 'selected' : ''; ?>>1 Month</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div class=\"row mb-3\">\n                                                    <label class=\"col-sm-2 col-form-label\"><?php echo htmlspecialchars($lang['visibility'] ?? 'Visibility'); ?></label>\n                                                    <div class=\"col-sm-10\">\n                                                        <select class=\"form-select\" name=\"visibility\">\n                                                            <option value=\"0\" <?php echo ($p_visible ?? '0') == \"0\" ? 'selected' : ''; ?>>Public</option>\n                                                            <option value=\"1\" <?php echo ($p_visible ?? '0') == \"1\" ? 'selected' : ''; ?>>Unlisted</option>\n                                                            <option value=\"2\" <?php echo ($p_visible ?? '0') == \"2\" ? 'selected' : ''; ?>>Private</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div class=\"mb-3\">\n                                                    <div class=\"input-group\">\n                                                        <span class=\"input-group-text\"><i class=\"bi bi-lock\"></i></span>\n                                                        <input type=\"text\" class=\"form-control\" name=\"pass\" id=\"pass\" placeholder=\"<?php echo htmlspecialchars($lang['pwopt'] ?? 'Optional Password'); ?>\">\n                                                    </div>\n                                                </div>\n                                                <div class=\"d-grid gap-2\">\n                                                    <input type=\"hidden\" name=\"paste_id\" value=\"<?php echo htmlspecialchars($paste_id ?? ''); ?>\" />\n                                                    <?php if (isset($_SESSION['username']) && $_SESSION['username'] == ($p_member ?? 'Guest')): ?>\n                                                        <input class=\"btn btn-primary paste-button\" type=\"submit\" name=\"edit\" id=\"edit\" value=\"<?php echo htmlspecialchars($lang['editpaste'] ?? 'Edit Paste'); ?>\" />\n                                                    <?php endif; ?>\n                                                    <input class=\"btn btn-primary paste-button\" type=\"submit\" name=\"submit\" id=\"submit\" value=\"<?php echo htmlspecialchars($lang['forkpaste'] ?? 'Fork Paste'); ?>\" />\n                                                </div>\n                                            </form>\n                                        </div>\n                                    </div>\n                                </div>\n                            <?php endif; ?>\n                        </div>\n                        <!-- Full Screen Modal -->\n                        <div class=\"modal fade\" id=\"fullscreenModal\" tabindex=\"-1\" aria-labelledby=\"fullscreenModalLabel\" aria-hidden=\"true\">\n                            <div class=\"modal-dialog modal-fullscreen\">\n                                <div class=\"modal-content\">\n                                    <div class=\"modal-header\">\n                                        <h5 class=\"modal-title\" id=\"fullscreenModalLabel\"><?php echo htmlspecialchars($p_title ?? 'Untitled'); ?></h5>\n\t\t\t\t\t\t\t\t\t\t<?php if (!empty($showThemeSwitcher) && !empty($hl_theme_options)): ?>\n\t\t\t\t\t\t\t\t\t\t  <div class=\"ms-2\" style=\"min-width:180px\">\n\t\t\t\t\t\t\t\t\t\t\t<select id=\"hljs-theme-select\" class=\"form-select form-select-sm\" title=\"Code Theme\">\n\t\t\t\t\t\t\t\t\t\t\t  <?php foreach ($hl_theme_options as $opt): ?>\n\t\t\t\t\t\t\t\t\t\t\t\t<option value=\"<?php echo htmlspecialchars($opt['id']); ?>\"><?php echo htmlspecialchars($opt['name']); ?></option>\n\t\t\t\t\t\t\t\t\t\t\t  <?php endforeach; ?>\n\t\t\t\t\t\t\t\t\t\t\t</select>\n\t\t\t\t\t\t\t\t\t\t  </div>\n\t\t\t\t\t\t\t\t\t\t<?php endif; ?>  <!-- close the theme-switcher if -->\n                                        <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\n                                    </div>\n                                    <div class=\"modal-body\">\n                                        <div class=\"code-content\" id=\"fullscreen-code-content\"><?php echo $p_content ?? ''; ?></div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"col-lg-2 mt-4 mt-lg-0\">\n                    <?php require_once('theme/' . ($default_theme ?? 'default') . '/sidebar.php'); ?>\n                </div>\n            <?php endif; ?>\n        </div>\n    </div>"
  },
  {
    "path": "theme/index.php",
    "content": ""
  },
  {
    "path": "upgrade/1.9-to.2.0.php",
    "content": "<?php\n// Credits: thatarchguy - https://bitbucket.org/j-samuel/paste/issues/5/upgrade-path-for-20\n\nrequire_once('../includes/password.php');\n\n// Required functions\nrequire_once('../config.php');\nrequire_once('../includes/captcha.php');\nrequire_once('../includes/functions.php');\n\n// Database Connection\n$con = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname);\nif (mysqli_connect_errno()) {\n    die(\"Unable to connect to database\");\n}\n\n$query  = \"SELECT * FROM paste\";\n$result = mysqli_query($con, $query);\n\n$post = array();\nwhile ($row = mysqli_fetch_assoc($result)) {\n    $post[] = $row;\n}\n\nforeach ($post as $row) {\n    $pid = $row['pid'];\n    $poster = Trim(htmlspecialchars($row['poster']));\n    $posted = $row['posted'];\n    $code = htmlspecialchars($row['code']);\n    $password = $row['password'];\n\n    if ($password != \"EMPTY\"){\n        $p_password = password_hash($password, PASSWORD_DEFAULT);\n    } else {\n        $p_password = \"NONE\";\n    }\n\n    $code = mysqli_real_escape_string($con, $code);\n\n    $query = \"INSERT INTO pastes (id,title,content,visible,code,expiry,password,encrypt,member,date,ip,now_time,views,s_date) VALUES\n    ($pid, '$poster', '$code', '0', 'text', 'NULL', '$p_password', '0', 'Guest', DATE_FORMAT('$posted', '%D %M %Y %r'), '127.0.0.1',\n    UNIX_TIMESTAMP('$posted'), '0', DATE_FORMAT('$posted', '%D %M %Y'))\";\n\n    $result    = mysqli_query($con, $query);\n    var_dump($result);\n    if (mysqli_error($con)) {\n            echo mysqli_error($con);\n    }\n}\n?>\n"
  },
  {
    "path": "upgrade/2.0-to.2.1.sql",
    "content": "ALTER TABLE site_info ADD additional_scripts TEXT AFTER ga;\nALTER TABLE site_info ADD baseurl TEXT after additional_scripts;\nALTER TABLE captcha ADD recaptcha_sitekey TEXT after color;\nALTER TABLE captcha ADD recaptcha_secretkey TEXT after recaptcha_sitekey;\nALTER TABLE mail ADD verification TEXT NULL after id;\nUPDATE mail set verification = \"enabled\";\n\nCREATE TABLE site_permissions(\n  id INT(11) NOT NULL AUTO_INCREMENT,\n  PRIMARY KEY(id),\n  disableguest VARCHAR(255) DEFAULT NULL,\n  siteprivate VARCHAR(255) DEFAULT NULL\n);\nINSERT\nINTO\n  site_permissions(id, disableguest, siteprivate)\nVALUES(1, 'on', 'on'),(2, 'off', 'off')\n"
  },
  {
    "path": "upgrade/index.php",
    "content": ""
  },
  {
    "path": "user.php",
    "content": "<?php\n/*\n * Paste 3 <old repo: https://github.com/jordansamuel/PASTE> new: https://github.com/boxlabss/PASTE\n * Demo: https://paste.boxlabs.uk/\n * https://phpaste.sourceforge.io/ - https://sourceforge.net/projects/phpaste/\n *\n * Licensed under GNU General Public License, version 3 or later.\n * See LICENCE for details.\n */\nrequire_once 'includes/session.php';\nrequire_once 'config.php';\nrequire_once 'includes/functions.php';\n\n// utf-8\nheader('Content-Type: text/html; charset=utf-8');\n\n// common\n$date = date('Y-m-d H:i:s');\n$ip   = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';\nglobal $pdo;\n\n// JSON response for ajax delete\nfunction send_json($ok, $msg = '', $extra = []) {\n    header_remove('Content-Type');\n    header('Content-Type: application/json; charset=utf-8');\n    echo json_encode(array_merge(['success' => (bool)$ok, 'message' => $msg], $extra));\n    exit;\n}\n\ntry {\n    // site_info\n    $stmt = $pdo->query(\"SELECT * FROM site_info WHERE id = '1'\");\n    $si   = $stmt->fetch() ?: [];\n    $title   = trim($si['title'] ?? '');\n    $des     = trim($si['des'] ?? '');\n    $baseurl = rtrim(trim($si['baseurl'] ?? ''), '/') . '/';\n    $keyword = trim($si['keyword'] ?? '');\n    $site_name = trim($si['site_name'] ?? '');\n    $email     = trim($si['email'] ?? '');\n    $twit      = trim($si['twit'] ?? '');\n    $face      = trim($si['face'] ?? '');\n    $gplus     = trim($si['gplus'] ?? '');\n    $ga        = trim($si['ga'] ?? '');\n    $additional_scripts = trim($si['additional_scripts'] ?? '');\n\n    // interface\n    $stmt = $pdo->query(\"SELECT * FROM interface WHERE id = '1'\");\n    $iface = $stmt->fetch() ?: [];\n    $default_lang  = trim($iface['lang'] ?? 'en.php');\n    $default_theme = trim($iface['theme'] ?? 'default');\n    require_once(\"langs/$default_lang\");\n\n    // ban check\n    if (is_banned($pdo, $ip)) {\n        // ajax delete path?\n        if (isset($_POST['ajax']) && $_POST['ajax'] === '1') {\n            send_json(false, $lang['banned'] ?? 'You are banned from this site.');\n        }\n        die(htmlspecialchars($lang['banned'] ?? 'You are banned from this site.', ENT_QUOTES, 'UTF-8'));\n    }\n\n    // permissions\n    $stmt = $pdo->query(\"SELECT * FROM site_permissions WHERE id = '1'\");\n    $perm = $stmt->fetch() ?: [];\n    $siteprivate = trim($perm['siteprivate'] ?? 'off');\n    if ($_SERVER['REQUEST_METHOD'] !== 'POST' && $siteprivate === \"1\") {\n        $privatesite = \"1\";\n    }\n\n    // profile username\n    if (!isset($_GET['user'])) {\n        header(\"Location: ../\");\n        exit;\n    }\n    $profile_username = trim($_GET['user']);\n    if (!existingUser($pdo, $profile_username)) {\n        header(\"Location: ../\");\n        exit;\n    }\n\n    $p_title = $profile_username . ($lang['user_public_pastes'] ?? 'Public Pastes');\n\n    // stats for profile page\n    $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM pastes WHERE member = ?\");\n    $stmt->execute([$profile_username]);\n    $profile_total_pastes = (int)$stmt->fetchColumn();\n\n    $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM pastes WHERE member = ? AND visible = 0\");\n    $stmt->execute([$profile_username]);\n    $profile_total_public = (int)$stmt->fetchColumn();\n\n    $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM pastes WHERE member = ? AND visible = 1\");\n    $stmt->execute([$profile_username]);\n    $profile_total_unlisted = (int)$stmt->fetchColumn();\n\n    $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM pastes WHERE member = ? AND visible = 2\");\n    $stmt->execute([$profile_username]);\n    $profile_total_private = (int)$stmt->fetchColumn();\n\n    $stmt = $pdo->prepare(\"\n        SELECT COALESCE(COUNT(pv.id), 0) AS total_views\n        FROM pastes p\n        LEFT JOIN paste_views pv ON p.id = pv.paste_id\n        WHERE p.member = ?\n    \");\n    $stmt->execute([$profile_username]);\n    $profile_total_paste_views = (int)$stmt->fetchColumn();\n\n    $stmt = $pdo->prepare(\"SELECT date FROM users WHERE username = ?\");\n    $stmt->execute([$profile_username]);\n    $profile_join_date = $stmt->fetchColumn() ?: '';\n\n    // logout\n    if (isset($_GET['logout'])) {\n        $ref = $_SERVER['HTTP_REFERER'] ?? $baseurl;\n        unset($_SESSION['token'], $_SESSION['oauth_uid'], $_SESSION['username']);\n        session_destroy();\n        header('Location: ' . $ref);\n        exit;\n    }\n\n    // page views\n    $view_date = date('Y-m-d');\n    try {\n        $stmt = $pdo->prepare(\"SELECT id, tpage, tvisit FROM page_view WHERE date = ?\");\n        $stmt->execute([$view_date]);\n        $pv = $stmt->fetch();\n        if ($pv) {\n            $page_view_id = $pv['id'];\n            $tpage = (int)$pv['tpage'] + 1;\n            $tvisit = (int)$pv['tvisit'];\n            $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM visitor_ips WHERE ip = ? AND visit_date = ?\");\n            $stmt->execute([$ip, $view_date]);\n            if ((int)$stmt->fetchColumn() === 0) {\n                $tvisit++;\n                $stmt = $pdo->prepare(\"INSERT INTO visitor_ips (ip, visit_date) VALUES (?, ?)\");\n                $stmt->execute([$ip, $view_date]);\n            }\n            $stmt = $pdo->prepare(\"UPDATE page_view SET tpage = ?, tvisit = ? WHERE id = ?\");\n            $stmt->execute([$tpage, $tvisit, $page_view_id]);\n        } else {\n            $stmt = $pdo->prepare(\"INSERT INTO page_view (date, tpage, tvisit) VALUES (?, ?, ?)\");\n            $stmt->execute([$view_date, 1, 1]);\n            $stmt = $pdo->prepare(\"INSERT INTO visitor_ips (ip, visit_date) VALUES (?, ?)\");\n            $stmt->execute([$ip, $view_date]);\n        }\n    } catch (PDOException $e) {\n        error_log(\"Page view tracking error: \" . $e->getMessage());\n    }\n\n    // DELETE paste (supports AJAX via POST ajax=1 and anchor GET fallback)\n    if (isset($_GET['del'])) {\n        $is_ajax = (isset($_POST['ajax']) && $_POST['ajax'] === '1');\n\n        if (empty($_SESSION['token']) || empty($_SESSION['username'])) {\n            if ($is_ajax) {\n                send_json(false, $lang['not_logged_in'] ?? 'You must be logged in to delete pastes.');\n            }\n            $error = $lang['not_logged_in'] ?? 'You must be logged in to delete pastes.';\n        } else {\n            $paste_id = (int)($_GET['id'] ?? 0);\n            $owner    = (string)($_SESSION['username'] ?? '');\n\n            if ($paste_id <= 0) {\n                if ($is_ajax) send_json(false, $lang['delete_error_invalid'] ?? 'Invalid paste or not authorized to delete.');\n                $error = $lang['delete_error_invalid'] ?? 'Invalid paste or not authorized to delete.';\n            } else {\n                $stmt = $pdo->prepare(\"SELECT COUNT(*) FROM pastes WHERE id = ? AND member = ?\");\n                $stmt->execute([$paste_id, $owner]);\n                if ((int)$stmt->fetchColumn() === 0) {\n                    if ($is_ajax) send_json(false, $lang['delete_error_invalid'] ?? 'Invalid paste or not authorized to delete.');\n                    $error = $lang['delete_error_invalid'] ?? 'Invalid paste or not authorized to delete.';\n                } else {\n                    // perform delete\n                    $stmt = $pdo->prepare(\"DELETE FROM pastes WHERE id = ? AND member = ?\");\n                    $stmt->execute([$paste_id, $owner]);\n                    // also clean up views (optional)\n                    try {\n                        $stmt = $pdo->prepare(\"DELETE FROM paste_views WHERE paste_id = ?\");\n                        $stmt->execute([$paste_id]);\n                    } catch (PDOException $e) {\n                        // ignore\n                    }\n                    if ($is_ajax) {\n                        send_json(true, $lang['pastedeleted'] ?? 'Paste deleted successfully.', ['id' => $paste_id]);\n                    }\n                    $success = $lang['pastedeleted'] ?? 'Paste deleted successfully.';\n                    // redirect for non-ajax\n                    $redirect = $baseurl . ($mod_rewrite ? 'user/' . urlencode($owner) : 'user.php?user=' . urlencode($owner));\n                    header('Location: ' . $redirect);\n                    exit;\n                }\n            }\n        }\n        // if we reach here and not ajax, fall through to render page with $error\n    }\n\n    // ads\n    $stmt = $pdo->query(\"SELECT * FROM ads WHERE id = '1'\");\n    $ads  = $stmt->fetch() ?: [];\n    $text_ads = trim($ads['text_ads'] ?? '');\n    $ads_1    = trim($ads['ads_1'] ?? '');\n    $ads_2    = trim($ads['ads_2'] ?? '');\n\n    // theme\n    require_once('theme/' . htmlspecialchars($default_theme, ENT_QUOTES, 'UTF-8') . '/header.php');\n    require_once('theme/' . htmlspecialchars($default_theme, ENT_QUOTES, 'UTF-8') . '/user_profile.php');\n    require_once('theme/' . htmlspecialchars($default_theme, ENT_QUOTES, 'UTF-8') . '/footer.php');\n} catch (PDOException $e) {\n    die(\"Database error: \" . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8'));\n}\n"
  }
]